劉東旭 馬亞琦
摘要:生成樹算法的網橋協議STP(Spanning Tree Protocol) 它通過自動形成生成樹使得在網絡中一個透明的網橋以動態方式在復雜的網絡拓撲結構中沿環狀工作。網絡中的環路由網橋之間通過交換配置橋協議數據單元消息來進行監測,通過關閉選擇的網橋接口的方式破除環路。局域網通常由多種網絡設備相互連接形成,我們只有消除網絡中的環路才能有效降低廣播風暴的發生,也就是說網絡中的鏈路應組成樹形的無環路結構,使用STP(生成樹協議)就可以解決這樣的問題。
關鍵詞:生成樹協議;路徑回環;冗余鏈路
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)02-0028-02
Abstract: Spinning Tree Protocol STP(Spinning Tree Protocol) of the spanning tree algorithm guarantees that a known bridge works dynamically along a ring in the network topology by generating a generating tree. Bridges exchange BPDU messages with other bridges to monitor the loop, and then close the selected bridge interface to cancel the loop. A local network is usually made up of multiple switches. In order to avoid broadcast storms, we need to ensure that there is no path loop in the network, that is, all links should form a tree without loop. The STP(Spanning Tree Protocol) on the switch implements this function.
Key words: spanning tree protocol; path loop; redundant link
1 透明網橋以及廣播風暴的危害
首先大家所熟知的計算機網絡中的透明網橋具有以下的特點:
1) 將局域網中的一個IP地址段拓展到其他的IP地址段;
2) 在數據傳輸過程中,站點的地址信息被網橋記錄下來,網橋依據站點的地址轉發數據幀;
3) 網絡中IP地址段的沖突可以通過透明網橋加以控制。
封裝有源MAC地址的數據幀被網橋上的任意一個端口接收到后,網橋就把該MAC地址和流入該數據幀的端口號保存在物理地址列表中。MAC地址表可以顯示出接收到的MAC地址與對應該網橋的哪個端口。當數據幀傳到網橋時,通過查看MAC地址表對數據幀有三種處理結果:如果數據幀的目的端口和接收端口一致,則數據幀被完全丟棄;如果目的端口和接收端口不一致,則數據幀就從那個端口轉發;如果目的地址的端口在MAC地址表中無法找到,則要以廣播的方式把數據幀從其他的出口廣播出去。另外如果廣播幀被網橋接收,那么網橋也會把廣播幀從其他端口廣播出去,由于網橋不具備路由器的功能,數據幀經過網橋不會被修改,數據幀也不會記錄自己走過了多少個網橋,網絡中一旦有環路,環路就可能使報文在傳輸中不斷循環和增生,增加網絡負荷,造成擁堵,網絡中“路徑回環”問題的就由此而生。
在計算機網絡中,廣播風暴以及環路是經常發生的問題。發生后會大量消耗網絡帶寬,導致數據包無法正常地在網絡中傳送,從而導致數據的傳送的停滯、數據包的丟失等一系列問題,甚至導致整個局域網的癱瘓。如今使用最為廣泛的廣播風暴預防措施是進行STP的配置。預先破除網絡中的環路,從根源上抑制廣播風暴以及環路的形成。
2 STP的基本原理及其作用
IEEE 802.1D規定了STP及其算法。一種特殊的配置消息在網絡中的網橋之間相互傳遞,將這種配置消息在802.1D中被定義為“配置BPDU”或者“配置橋協議數據單元”。這種特殊的配置消息中攜帶的信息可以讓網橋完成生成樹的計算,網絡交換設備會根據配置橋協議數據單元消息來完成以下的工作:
1) 在眾多進行生成樹計算的網橋中,只有一個被推舉為根橋(Root Bridge);
2) 剩余的每個非根橋都會定義一個根端口(Root Port),根端口到達根橋的路徑是該網橋到根橋的最佳路徑;
3) 離根橋最近的那個網橋作為該IP地址段的指定網橋,指定網橋到該IP地址段的端口作為指定(Designated Port)端口,其主要功能是在該IP地址段上進行數據轉發;
4) 除指定端口和根端口之外的其他端口被置于阻塞狀態。
當網絡中無回路時,網橋在網絡中發揮著重要作用。那么是不是回路不能生存在網絡中呢?這顯然也是不對的,因為當網絡拓撲結構中的某條鏈路因故斷開后,回路可以使網絡仍然處于連通的狀態。為此,生成樹算法將冗余鏈路斷開后,就可以把有回路的橋接網絡變為一個無回路的樹型拓撲結構,回路問題自然就被解決了,而且生成樹算法也可以在某條活動(active)的鏈路突然斷開時,通過激活被阻斷的冗余鏈路重新修剪拓撲結構以恢復網絡的連通。
3 BPDU的組成以及生成樹算法的實現過程
BPDU也被稱作配置消息,它主要包含四個方面的內容:即橋接網絡中的根橋序列號,從指定網橋到根網橋的最短路徑,指定網橋序列號和指定端口序列號四項內容。生成樹的計算就是網橋之間通過傳遞這四個方面的內容來實現的。在實際傳輸過程中,我們可以用矢量形式(RootlD,RootPathCost,DesignatedBridgelD,DesignatedPortID)來表達每個網橋所發送的配置消息。
初始階段每個網橋只知道自身的存在,所以每個網橋自認為自己是根橋并發送配置信息。當網橋收到來自其他網橋發送的配置消息時,它就會把收到的配置消息和自身發送的配置信息進行對比,看看哪個配置消息的優先級最高,最后該網橋用對比后優先級最高的配置消息替代自己的配置消息,并且完成下列的其他工作:
1) 推舉根網橋RootID:Root ID值為最小將成為最終的Root ID;
2) 到根橋的最短路徑花費RootPathCost:如果網橋是根網橋,則最短路徑開銷為0,否則最短路徑開銷就是最優配置消息中的路徑開銷加上接收端口對應鏈路的路徑開銷;
3) 選擇根端口RootPort:網橋各個端口中到根橋路徑開銷最短的那個端口就是根端口,如果對應最短路徑開銷的端口不止一個,則對應收到的BPDU消息中DesignatedBridgelD號最小的端口將成為根端口,如果還不能選出根端口,則對應收到的BPDU消息中DesignatedPortID號最小的端口將成為根端口;
4) 選擇指定端口:網橋端口發送的BPDU配置消息的優先級比較接收的BPDU配置消息優先級高,這個端口就是指定端口。
最后,新的配置消息被網橋從指定端口重新發送。
4 STP對于網絡故障的處理
4.1 鏈路故障處理
生成樹算法定義了一種定時器策略來解決網絡鏈路故障的問題,生存期的值被封裝在配置消息中,生存期為0的配置消息被根網橋通過自身所有端口按一定的周期發送出去,其他網橋收到配置消息后,把生存期為0的配置消息也從自身的指定端口發送出去。一旦生成樹的分支發生鏈路故障,則新鮮的配置消息就不會被故障鏈路下游的端口接收到,反而自身的配置消息的生存期值不斷增長,一直到無法增長,該網橋將丟棄這個超過極限的配置消息,新的生成樹計算從頭開始。在這個過程中使用hello time表示定時發送的周期,使用message age表示配置消息的生存期,使用maxage表示最大生存期。
4.2 臨時回路處理
STP中定義了若干中間狀態來解決網絡中臨時回路的問題。在802.1D的協議中,端口有這樣幾種狀態:Disabled、Blocking、Listening、Learning、Forwarding。
當端口的狀態為根端口或者指定端口,原先的blocking狀態就會改變為listening的中間狀態;由于網絡延時forward? delay的存在,端口狀態繼續變為learning狀態;網絡延時fovwarddely繼續疊加,端口狀態繼而變為forwarding狀態。由于網絡拓撲結構發生改變導致原先端口不再是根端口或指定端口,端口狀態就會馬上變為blocking狀態,并且不管端口處于何種狀態,當端口變為可用或者不可用時端口的狀態都會變為disabled狀態。端口狀態listening變為learning,或者端口狀態learning變為forwarding狀態,都要通過forwarddelay延時來實現,forward? delay延時可以促使網絡中需要變為blocking狀態的端口達到目的,從而解決了網絡中環路產生的問題。
4.3 網絡拓撲結構變化后的處理
生成樹中每個站點所處的位置會隨著網絡拓撲結構的變化而發生變動,原來保存在網橋中的MAC地址信息就會變得錯誤重重,所以應該給MAC地址信息定義一個生存期,在生存期內不能證明MAC地址信息正確,則丟棄掉這些MAC地址信息。在STP中存在兩個生存期:較長的生存期在網絡拓撲相對穩定時使用、較短的生存期在拓撲結構經常變化時使用。并不是所有的網橋都能夠發現網絡拓撲結構變化,這就需要以報文的形式把拓撲結構改變的信息告知到每一個網橋。在STP中有三種報文被用來標識拓撲改變:拓撲改變通知消息,拓撲改變應答消息,拓撲改變消息。當有網橋發現拓撲改變,就會把拓撲改變通知消息以hello time為周期定時從根端口向根網橋的方向發送,網絡中的其余非根網橋也同樣要向根橋的方向發送這個通知消息。非根網橋會響應一個拓撲改變應答消息,當網橋收到應答消息后就停止發送通知消息。應答消息用一個拓撲改變應答標志位來標識,它通常被攜帶在網橋發送的下一個配置消息中。拓撲改變被根網橋自行發現或者通過拓撲改變通知消息發現,就會在一定時間內,把拓撲改變的標志位攜帶在向其他網橋發送的配置消息中,網橋收到這個消息后較短的生存期將會應用到該網橋的地址表項,直到拓撲改變的標志位不再出現。
參考文獻:
[1] 李玉鵬,王換招,趙青蘋.基于STP的以太網物理拓撲發現[J].北京電子科技學院學報,2004,12(2):8-13.
[2] 林狀輝.使用交換機時如何避免環路現象產生[J].科技信息,2009(24):159-160.
[3] 陳榮.淺析生成樹協議原理及其實驗設計[J].信息與電腦:理論版,2011(5):93-94.
[4] 王炅,張華,謝儲暉.生成樹協議的算法分析[J].重慶科技學院學報:自然科學版,2011,13(5):140-142.
【通聯編輯:唐一東】