BPDU報文
為了計算生成樹,交換機之間需要交換相關的信息和參數,這些信息和參數被封裝在BPDU(Bridge Protocol Data Unit)中。BPDU有兩種類型:配置BPDU和TCN BPDU。
配置BPDU中包含了足夠的信息來保證設備完成生成樹計算,其中包含的重要信息如下: |
||
![]() |
||
報文字段 | 字節數 | 說明 |
PID | 2字節 | STP協議ID,該字段總是為0 |
PVI | 1字節 | STP協議版本,
|
BPDU Type | 1字節 | 指示當前BPDU消息類型:配置BPDU和TCN BPDU
|
Flags | 1字節 | 標志
|
Root ID | 8字節 | 根橋ID,指示當前根橋的RID(即“根ID”),由2字節的橋優先級和6字節MAC地址構成 |
RPC | 4字節 | 根路徑開銷,指示發送該BPDU報文的端口累計到根橋的開銷 |
Bridge ID | 8字節 | 橋ID,指示發送該BPDU報文的交換設備的BID(即“發送者BID”),也是由2字節的橋優先級和6字節MAC地址構成 |
Port ID | 2字節 | 端口ID,指示發送該BPDU報文的端口ID,即“發送端口ID” |
Message Age | 2字節 | 消息生存時間,指示該BPDU報文的生存時間,即端口保存BPDU的最長時間,過期后將刪除,要在這個時間內轉發才有效,如果配置BPDU是直接來自根橋的,則Message Age為0,如果是其他橋轉發的,則Message Age是從根橋發送到當前橋接收到BPDU的總時間,包括傳輸延時等。實際實現中,配置BPDU報文經過一個橋,Message Age增加1,如果Message Age大於Max Age,非根橋會丟棄該配置BPDU。 |
Max Age | 2字節 | 最大生存時間,指示BPDU消息的最大生存時間,也即老化時間 |
Hello Time | 2字節 | Hello消息定時器,指示發送兩個相鄰BPDU的時間間隔,根橋通過不斷發送STP維持自己的地位,Hello time 是發送的間隔時間 |
Fwd Delay | 2字節 | 轉發延時,指示控制listening和learning狀態的持續時間,表示在拓撲結構改變后,交換機在發送數據包前維持在監聽和學習狀態的時間 |
STP 計時器
![]() |
Hello Time是指運行STP協議的設備發送配置BPDU的時間間隔,用於檢測鏈路是否存在故障。交換機每隔Hello Time時間會向周圍的交換機發送配置BPDU報文,以確認鏈路是否存在故障。當網絡拓撲穩定后,該值只有在根橋上修改才有效。 Message Age是從根橋發送到當前交換機接收到BPDU的總時間,包括傳輸延時等。如果配置BPDU是根橋發出的,則Message Age為0。實際實現中,配置BPDU報文每經過一個交換機,Message Age增加1。 Max Age是指BPDU報文的老化時間,可在根橋上通過命令人為改動這個值。Max Age通過配置BPDU報文的傳遞,可以保證Max Age在整網中一致。非根橋設備收到配置BPDU報文后,會將報文中的Message Age和Max Age進行比較:如果Message Age小於等於Max Age,則該非根橋設備會繼續轉發配置BPDU報文。如果Message Age大於Max Age,則該配置BPDU報文將被老化掉。該非根橋設備將直接丟棄該配置BPDU,並認為是網絡直徑過大,導致了根橋連接失敗。 Forward Delay是指端口狀態遷移時間。STP生成樹需要一定的時間,如果選出來的根端口或者指定端口馬上進入轉發狀態的話,可能就會總成臨時工作環路。forward delay機制:新選出來的根端口和指定端口需要經過兩倍的forward delay時間延時后才可以進入用戶數據幀的轉發狀態,保證此時工作拓撲已無環路。 |