全部課程
發(fā)布時間: 2022-02-17 10:43:14
STP的BPDU報文類型一共有兩種,分別是配置BPDU報文(BPDU報文中的BPDU類型值為0x00)和TCN BPDU報文(BPDU報文中的BPDU類型值為0x80),下面騰科IT教育為大家詳解介紹這兩種類型BPDU報文的區(qū)別。
1 配置BPDU報文
在配置BPDU報文中,BPDU類型(BPDU Type)的值被設(shè)置為0x00,主要作用如下所述。
① 用于選舉根橋及端口角色。
② 通過定期發(fā)送(每兩秒發(fā)送一次)配置BPDU報文維護端口狀態(tài)。
③ 用于確認(rèn)接收到的TCN BPDU報文。
④ 用于選舉根橋及端口角色。
配置BPDU報文轉(zhuǎn)發(fā)過程如圖1所示,從該圖中可知,STP收斂后只有根橋才會定期發(fā)送配置BPDU報文,其他非根橋收到BPDU報文后會進行轉(zhuǎn)發(fā),通過這種方式維護端口狀態(tài)。
圖1 配置BPDU報文轉(zhuǎn)發(fā)過程
由圖1可知,STP收斂后,SWA為根橋,每隔2秒發(fā)送一次配置BPDU報文,配置BPDU報文會從所有的指定端口發(fā)送出去,其他非根橋從根端口接收到根橋發(fā)送的配置BPDU報文后,將配置BPDU報文緩存到接收端口,并將配置BPDU報文從所有的指定端口轉(zhuǎn)發(fā)出去。但是非根橋在接收到配置BPDU報文后,是否轉(zhuǎn)發(fā)也需要進行判斷。
非根橋收到配置BPDU報文后,會先將配置BPDU報文中的Message Age和MaxAge進行比對,如果Message Age小于等于Max Age,則接收并轉(zhuǎn)發(fā)配置BPDU報文;如果Message Age大于Max Age,則會丟棄配置BPDU報文,不接收也不轉(zhuǎn)發(fā)。對于轉(zhuǎn)發(fā)的配置BPDU報文會修改以下內(nèi)容:
① 將網(wǎng)橋ID修改為轉(zhuǎn)發(fā)者的網(wǎng)橋ID。
② 將端口ID修改為發(fā)送配置BPDU報文的端口ID(包括端口優(yōu)先級和端口ID)。
③ 將Message Age加1(可以限制配置BPDU報文的傳輸范圍)。
2 TCN BPDU報文
TCN BPDU報文中BPDU類型(BPDU Type)的值被設(shè)置為0x80,其作用是通告網(wǎng)絡(luò)中拓撲發(fā)生了改變。首先需要說明通告TCN BPDU報文和STP的收斂沒有任何的關(guān)系,那么通告拓撲改變的目的是什么呢?在如下場景中,網(wǎng)絡(luò)拓撲改變帶來的問題(一)如圖2所示。
圖2 網(wǎng)絡(luò)拓撲改變帶來的問題(一)
在圖2中,STP收斂完后SWB的G0/0/2端口被選舉為替代端口(AP)并被阻塞,主機A訪問主機B的數(shù)據(jù)幀經(jīng)過SWB轉(zhuǎn)發(fā)給SWA,再由SWA轉(zhuǎn)發(fā)給SWC。兩臺主機完成通信后,SWB的MAC地址表如圖2中所示。那么如果現(xiàn)在SWA和SWC之間的鏈路發(fā)生故障,會出現(xiàn)什么問題呢?如圖3展示了由于網(wǎng)絡(luò)拓撲改變帶來的問題(二)。
圖3 網(wǎng)絡(luò)拓撲改變帶來的問題(二)
在圖3中,由于SWA和SWC之間的鏈路發(fā)生故障,導(dǎo)致STP重新收斂,收斂后的各端口角色如圖3所示,現(xiàn)在我們來分析主機A訪問主機B的數(shù)據(jù)幀是如何轉(zhuǎn)發(fā)的。SWB收到數(shù)據(jù)幀后通過查詢MAC地址表將數(shù)據(jù)幀從G0/0/1端口轉(zhuǎn)發(fā)出去,SWA收到數(shù)據(jù)幀后會直接丟棄掉,丟棄的原因是鏈路故障造成端口被關(guān)閉,數(shù)據(jù)幀無法被從G0/0/2端口發(fā)送出去,這樣主機A和主機B也就無法通信了。
主機A和主機B就一直無法通信了嗎?其實并不是,300秒以后會發(fā)現(xiàn)主機A和主機B可以正常通信了。這是為什么呢?原因是等待300秒以后,SWB上G0/0/1端口綁定的主機B老化的MAC地址已被刪除掉,此時如果SWB再接收到訪問主機B的數(shù)據(jù)幀,由于現(xiàn)在的MAC地址表中沒有主機B的MAC地址,該數(shù)據(jù)幀將被從除接收端口以外的其他端口(G0/0/2)轉(zhuǎn)發(fā)出去,這樣SWC就能收到數(shù)據(jù)幀了,主機A和主機B自然就恢復(fù)了通信。
但是這種恢復(fù)正常通信的等待時間太長了,每一次拓撲變化都需要等待300秒后才能恢復(fù)通信。
也許有人會說,這種情況可以通過將MAC地址表的老化時間改短來解決。真的是這樣嗎?其實不然,這種解決方案根本就是治標(biāo)不治本,并且會引發(fā)大量的未知單播幀泛洪,為什么?因為MAC地址表老化時間短,剛剛學(xué)習(xí)的MAC地址如果沒有一個持續(xù)的訪問流量,MAC地址很快會老化并被刪除,再次收到同一單播幀就會導(dǎo)致新一輪的泛洪,產(chǎn)生網(wǎng)絡(luò)不穩(wěn)定問題。
有什么更好的方法能解決這個問題嗎?答案是肯定的,這就是使用TCN BPDU報文的解決方案,如圖4所示。
圖4 使用TCN BPDU報文的解決方案
① SWC發(fā)現(xiàn)拓撲改變后會從根端口發(fā)送一個TCN BPDU報文,目的是要將發(fā)生拓撲改變的消息通知根橋。
② SWB從自己的指定端口收到了SWC發(fā)送的TCN BPDU報文,SWB會向SWC回復(fù)一個BPDU Flag被設(shè)置為TCA的配置BPDU報文,用于確認(rèn)接收到了TCN BPDU報文。
③ SWB繼續(xù)從自己的根端口轉(zhuǎn)發(fā)TCN BPD報文。
④ SWA收到TCN BPDU報文后同樣向SWB回復(fù)一個BPDU Flag被設(shè)置為TC的配置BPDU報文,并將自己的MAC地址表老化時間修改為15秒(一個轉(zhuǎn)發(fā)延時),加速MAC地址老化。同時向所有的指定端口發(fā)送一個BPDU Flag被設(shè)置為TC的配置BPDU報文,目的是告訴其他的非根橋拓撲已經(jīng)發(fā)生了變化。該配置BPDU報文會連續(xù)發(fā)送35秒(Max Age+Forward Delay的時間)。
⑤ 非根橋在收到TC置位的配置BPDU報文后會從所有的指定端口轉(zhuǎn)發(fā),同時將自己的MAC地址表老化時間修改為15秒,加速MAC地址老化。
注:STP中TC置位的配置BPDU報文只能由根橋發(fā)送,而其他非根橋如果發(fā)現(xiàn)拓撲改變就需要以發(fā)送TCN BPDU報文的方式來告知根橋,再由根橋向全網(wǎng)發(fā)送TC置位的配置BPDU報文,目的是將所有交換機MAC地址表的老化時間修改為15秒,加速MAC地址老化,盡快恢復(fù)數(shù)據(jù)轉(zhuǎn)發(fā)。
STP在以下3種情況下會發(fā)送TCN BPDU報文:
●端口從轉(zhuǎn)發(fā)狀態(tài)過渡到阻塞狀態(tài)(Blocking)或者禁用狀態(tài)。
●非根橋從一個指定端口收到 TCN BPDU報文后會從自己的根端口向根交換機轉(zhuǎn)發(fā)。
●端口進入到轉(zhuǎn)發(fā)狀態(tài)并且橋設(shè)備已經(jīng)存在一個指定端口。
?上一篇: STP收斂時間
下一篇: STP的作用及其工作原理