發布時間: 2022-02-17 10:43:14
STP的BPDU報文類型一共有兩種,分別是配置BPDU報文(BPDU報文中的BPDU類型值為0x00)和TCN BPDU報文(BPDU報文中的BPDU類型值為0x80),下面騰科IT教育為大家詳解介紹這兩種類型BPDU報文的區別。
1 配置BPDU報文
在配置BPDU報文中,BPDU類型(BPDU Type)的值被設置為0x00,主要作用如下所述。
① 用于選舉根橋及端口角色。
② 通過定期發送(每兩秒發送一次)配置BPDU報文維護端口狀態。
③ 用于確認接收到的TCN BPDU報文。
④ 用于選舉根橋及端口角色。
配置BPDU報文轉發過程如圖1所示,從該圖中可知,STP收斂后只有根橋才會定期發送配置BPDU報文,其他非根橋收到BPDU報文后會進行轉發,通過這種方式維護端口狀態。

圖1 配置BPDU報文轉發過程
由圖1可知,STP收斂后,SWA為根橋,每隔2秒發送一次配置BPDU報文,配置BPDU報文會從所有的指定端口發送出去,其他非根橋從根端口接收到根橋發送的配置BPDU報文后,將配置BPDU報文緩存到接收端口,并將配置BPDU報文從所有的指定端口轉發出去。但是非根橋在接收到配置BPDU報文后,是否轉發也需要進行判斷。
非根橋收到配置BPDU報文后,會先將配置BPDU報文中的Message Age和MaxAge進行比對,如果Message Age小于等于Max Age,則接收并轉發配置BPDU報文;如果Message Age大于Max Age,則會丟棄配置BPDU報文,不接收也不轉發。對于轉發的配置BPDU報文會修改以下內容:
① 將網橋ID修改為轉發者的網橋ID。
② 將端口ID修改為發送配置BPDU報文的端口ID(包括端口優先級和端口ID)。
③ 將Message Age加1(可以限制配置BPDU報文的傳輸范圍)。
2 TCN BPDU報文
TCN BPDU報文中BPDU類型(BPDU Type)的值被設置為0x80,其作用是通告網絡中拓撲發生了改變。首先需要說明通告TCN BPDU報文和STP的收斂沒有任何的關系,那么通告拓撲改變的目的是什么呢?在如下場景中,網絡拓撲改變帶來的問題(一)如圖2所示。

圖2 網絡拓撲改變帶來的問題(一)
在圖2中,STP收斂完后SWB的G0/0/2端口被選舉為替代端口(AP)并被阻塞,主機A訪問主機B的數據幀經過SWB轉發給SWA,再由SWA轉發給SWC。兩臺主機完成通信后,SWB的MAC地址表如圖2中所示。那么如果現在SWA和SWC之間的鏈路發生故障,會出現什么問題呢?如圖3展示了由于網絡拓撲改變帶來的問題(二)。

圖3 網絡拓撲改變帶來的問題(二)
在圖3中,由于SWA和SWC之間的鏈路發生故障,導致STP重新收斂,收斂后的各端口角色如圖3所示,現在我們來分析主機A訪問主機B的數據幀是如何轉發的。SWB收到數據幀后通過查詢MAC地址表將數據幀從G0/0/1端口轉發出去,SWA收到數據幀后會直接丟棄掉,丟棄的原因是鏈路故障造成端口被關閉,數據幀無法被從G0/0/2端口發送出去,這樣主機A和主機B也就無法通信了。
主機A和主機B就一直無法通信了嗎?其實并不是,300秒以后會發現主機A和主機B可以正常通信了。這是為什么呢?原因是等待300秒以后,SWB上G0/0/1端口綁定的主機B老化的MAC地址已被刪除掉,此時如果SWB再接收到訪問主機B的數據幀,由于現在的MAC地址表中沒有主機B的MAC地址,該數據幀將被從除接收端口以外的其他端口(G0/0/2)轉發出去,這樣SWC就能收到數據幀了,主機A和主機B自然就恢復了通信。
但是這種恢復正常通信的等待時間太長了,每一次拓撲變化都需要等待300秒后才能恢復通信。
也許有人會說,這種情況可以通過將MAC地址表的老化時間改短來解決。真的是這樣嗎?其實不然,這種解決方案根本就是治標不治本,并且會引發大量的未知單播幀泛洪,為什么?因為MAC地址表老化時間短,剛剛學習的MAC地址如果沒有一個持續的訪問流量,MAC地址很快會老化并被刪除,再次收到同一單播幀就會導致新一輪的泛洪,產生網絡不穩定問題。
有什么更好的方法能解決這個問題嗎?答案是肯定的,這就是使用TCN BPDU報文的解決方案,如圖4所示。

圖4 使用TCN BPDU報文的解決方案
① SWC發現拓撲改變后會從根端口發送一個TCN BPDU報文,目的是要將發生拓撲改變的消息通知根橋。
② SWB從自己的指定端口收到了SWC發送的TCN BPDU報文,SWB會向SWC回復一個BPDU Flag被設置為TCA的配置BPDU報文,用于確認接收到了TCN BPDU報文。
③ SWB繼續從自己的根端口轉發TCN BPD報文。
④ SWA收到TCN BPDU報文后同樣向SWB回復一個BPDU Flag被設置為TC的配置BPDU報文,并將自己的MAC地址表老化時間修改為15秒(一個轉發延時),加速MAC地址老化。同時向所有的指定端口發送一個BPDU Flag被設置為TC的配置BPDU報文,目的是告訴其他的非根橋拓撲已經發生了變化。該配置BPDU報文會連續發送35秒(Max Age+Forward Delay的時間)。
⑤ 非根橋在收到TC置位的配置BPDU報文后會從所有的指定端口轉發,同時將自己的MAC地址表老化時間修改為15秒,加速MAC地址老化。
注:STP中TC置位的配置BPDU報文只能由根橋發送,而其他非根橋如果發現拓撲改變就需要以發送TCN BPDU報文的方式來告知根橋,再由根橋向全網發送TC置位的配置BPDU報文,目的是將所有交換機MAC地址表的老化時間修改為15秒,加速MAC地址老化,盡快恢復數據轉發。
STP在以下3種情況下會發送TCN BPDU報文:
●端口從轉發狀態過渡到阻塞狀態(Blocking)或者禁用狀態。
●非根橋從一個指定端口收到 TCN BPDU報文后會從自己的根端口向根交換機轉發。
●端口進入到轉發狀態并且橋設備已經存在一個指定端口。
?上一篇: STP收斂時間
下一篇: STP的作用及其工作原理