劉東旭 馬亞琦
摘要:生成樹算法的網(wǎng)橋協(xié)議STP(Spanning Tree Protocol) 它通過自動形成生成樹使得在網(wǎng)絡中一個透明的網(wǎng)橋以動態(tài)方式在復雜的網(wǎng)絡拓撲結構中沿環(huán)狀工作。網(wǎng)絡中的環(huán)路由網(wǎng)橋之間通過交換配置橋協(xié)議數(shù)據(jù)單元消息來進行監(jiān)測,通過關閉選擇的網(wǎng)橋接口的方式破除環(huán)路。局域網(wǎng)通常由多種網(wǎng)絡設備相互連接形成,我們只有消除網(wǎng)絡中的環(huán)路才能有效降低廣播風暴的發(fā)生,也就是說網(wǎng)絡中的鏈路應組成樹形的無環(huán)路結構,使用STP(生成樹協(xié)議)就可以解決這樣的問題。
關鍵詞:生成樹協(xié)議;路徑回環(huán);冗余鏈路
中圖分類號: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 透明網(wǎng)橋以及廣播風暴的危害
首先大家所熟知的計算機網(wǎng)絡中的透明網(wǎng)橋具有以下的特點:
1) 將局域網(wǎng)中的一個IP地址段拓展到其他的IP地址段;
2) 在數(shù)據(jù)傳輸過程中,站點的地址信息被網(wǎng)橋記錄下來,網(wǎng)橋依據(jù)站點的地址轉發(fā)數(shù)據(jù)幀;
3) 網(wǎng)絡中IP地址段的沖突可以通過透明網(wǎng)橋加以控制。
封裝有源MAC地址的數(shù)據(jù)幀被網(wǎng)橋上的任意一個端口接收到后,網(wǎng)橋就把該MAC地址和流入該數(shù)據(jù)幀的端口號保存在物理地址列表中。MAC地址表可以顯示出接收到的MAC地址與對應該網(wǎng)橋的哪個端口。當數(shù)據(jù)幀傳到網(wǎng)橋時,通過查看MAC地址表對數(shù)據(jù)幀有三種處理結果:如果數(shù)據(jù)幀的目的端口和接收端口一致,則數(shù)據(jù)幀被完全丟棄;如果目的端口和接收端口不一致,則數(shù)據(jù)幀就從那個端口轉發(fā);如果目的地址的端口在MAC地址表中無法找到,則要以廣播的方式把數(shù)據(jù)幀從其他的出口廣播出去。另外如果廣播幀被網(wǎng)橋接收,那么網(wǎng)橋也會把廣播幀從其他端口廣播出去,由于網(wǎng)橋不具備路由器的功能,數(shù)據(jù)幀經(jīng)過網(wǎng)橋不會被修改,數(shù)據(jù)幀也不會記錄自己走過了多少個網(wǎng)橋,網(wǎng)絡中一旦有環(huán)路,環(huán)路就可能使報文在傳輸中不斷循環(huán)和增生,增加網(wǎng)絡負荷,造成擁堵,網(wǎng)絡中“路徑回環(huán)”問題的就由此而生。
在計算機網(wǎng)絡中,廣播風暴以及環(huán)路是經(jīng)常發(fā)生的問題。發(fā)生后會大量消耗網(wǎng)絡帶寬,導致數(shù)據(jù)包無法正常地在網(wǎng)絡中傳送,從而導致數(shù)據(jù)的傳送的停滯、數(shù)據(jù)包的丟失等一系列問題,甚至導致整個局域網(wǎng)的癱瘓。如今使用最為廣泛的廣播風暴預防措施是進行STP的配置。預先破除網(wǎng)絡中的環(huán)路,從根源上抑制廣播風暴以及環(huán)路的形成。
2 STP的基本原理及其作用
IEEE 802.1D規(guī)定了STP及其算法。一種特殊的配置消息在網(wǎng)絡中的網(wǎng)橋之間相互傳遞,將這種配置消息在802.1D中被定義為“配置BPDU”或者“配置橋協(xié)議數(shù)據(jù)單元”。這種特殊的配置消息中攜帶的信息可以讓網(wǎng)橋完成生成樹的計算,網(wǎng)絡交換設備會根據(jù)配置橋協(xié)議數(shù)據(jù)單元消息來完成以下的工作:
1) 在眾多進行生成樹計算的網(wǎng)橋中,只有一個被推舉為根橋(Root Bridge);
2) 剩余的每個非根橋都會定義一個根端口(Root Port),根端口到達根橋的路徑是該網(wǎng)橋到根橋的最佳路徑;
3) 離根橋最近的那個網(wǎng)橋作為該IP地址段的指定網(wǎng)橋,指定網(wǎng)橋到該IP地址段的端口作為指定(Designated Port)端口,其主要功能是在該IP地址段上進行數(shù)據(jù)轉發(fā);
4) 除指定端口和根端口之外的其他端口被置于阻塞狀態(tài)。
當網(wǎng)絡中無回路時,網(wǎng)橋在網(wǎng)絡中發(fā)揮著重要作用。那么是不是回路不能生存在網(wǎng)絡中呢?這顯然也是不對的,因為當網(wǎng)絡拓撲結構中的某條鏈路因故斷開后,回路可以使網(wǎng)絡仍然處于連通的狀態(tài)。為此,生成樹算法將冗余鏈路斷開后,就可以把有回路的橋接網(wǎng)絡變?yōu)橐粋€無回路的樹型拓撲結構,回路問題自然就被解決了,而且生成樹算法也可以在某條活動(active)的鏈路突然斷開時,通過激活被阻斷的冗余鏈路重新修剪拓撲結構以恢復網(wǎng)絡的連通。
3 BPDU的組成以及生成樹算法的實現(xiàn)過程
BPDU也被稱作配置消息,它主要包含四個方面的內(nèi)容:即橋接網(wǎng)絡中的根橋序列號,從指定網(wǎng)橋到根網(wǎng)橋的最短路徑,指定網(wǎng)橋序列號和指定端口序列號四項內(nèi)容。生成樹的計算就是網(wǎng)橋之間通過傳遞這四個方面的內(nèi)容來實現(xiàn)的。在實際傳輸過程中,我們可以用矢量形式(RootlD,RootPathCost,DesignatedBridgelD,DesignatedPortID)來表達每個網(wǎng)橋所發(fā)送的配置消息。
初始階段每個網(wǎng)橋只知道自身的存在,所以每個網(wǎng)橋自認為自己是根橋并發(fā)送配置信息。當網(wǎng)橋收到來自其他網(wǎng)橋發(fā)送的配置消息時,它就會把收到的配置消息和自身發(fā)送的配置信息進行對比,看看哪個配置消息的優(yōu)先級最高,最后該網(wǎng)橋用對比后優(yōu)先級最高的配置消息替代自己的配置消息,并且完成下列的其他工作:
1) 推舉根網(wǎng)橋RootID:Root ID值為最小將成為最終的Root ID;
2) 到根橋的最短路徑花費RootPathCost:如果網(wǎng)橋是根網(wǎng)橋,則最短路徑開銷為0,否則最短路徑開銷就是最優(yōu)配置消息中的路徑開銷加上接收端口對應鏈路的路徑開銷;
3) 選擇根端口RootPort:網(wǎng)橋各個端口中到根橋路徑開銷最短的那個端口就是根端口,如果對應最短路徑開銷的端口不止一個,則對應收到的BPDU消息中DesignatedBridgelD號最小的端口將成為根端口,如果還不能選出根端口,則對應收到的BPDU消息中DesignatedPortID號最小的端口將成為根端口;
4) 選擇指定端口:網(wǎng)橋端口發(fā)送的BPDU配置消息的優(yōu)先級比較接收的BPDU配置消息優(yōu)先級高,這個端口就是指定端口。
最后,新的配置消息被網(wǎng)橋從指定端口重新發(fā)送。
4 STP對于網(wǎng)絡故障的處理
4.1 鏈路故障處理
生成樹算法定義了一種定時器策略來解決網(wǎng)絡鏈路故障的問題,生存期的值被封裝在配置消息中,生存期為0的配置消息被根網(wǎng)橋通過自身所有端口按一定的周期發(fā)送出去,其他網(wǎng)橋收到配置消息后,把生存期為0的配置消息也從自身的指定端口發(fā)送出去。一旦生成樹的分支發(fā)生鏈路故障,則新鮮的配置消息就不會被故障鏈路下游的端口接收到,反而自身的配置消息的生存期值不斷增長,一直到無法增長,該網(wǎng)橋?qū)G棄這個超過極限的配置消息,新的生成樹計算從頭開始。在這個過程中使用hello time表示定時發(fā)送的周期,使用message age表示配置消息的生存期,使用maxage表示最大生存期。
4.2 臨時回路處理
STP中定義了若干中間狀態(tài)來解決網(wǎng)絡中臨時回路的問題。在802.1D的協(xié)議中,端口有這樣幾種狀態(tài):Disabled、Blocking、Listening、Learning、Forwarding。
當端口的狀態(tài)為根端口或者指定端口,原先的blocking狀態(tài)就會改變?yōu)閘istening的中間狀態(tài);由于網(wǎng)絡延時forward? delay的存在,端口狀態(tài)繼續(xù)變?yōu)閘earning狀態(tài);網(wǎng)絡延時fovwarddely繼續(xù)疊加,端口狀態(tài)繼而變?yōu)閒orwarding狀態(tài)。由于網(wǎng)絡拓撲結構發(fā)生改變導致原先端口不再是根端口或指定端口,端口狀態(tài)就會馬上變?yōu)閎locking狀態(tài),并且不管端口處于何種狀態(tài),當端口變?yōu)榭捎没蛘卟豢捎脮r端口的狀態(tài)都會變?yōu)閐isabled狀態(tài)。端口狀態(tài)listening變?yōu)閘earning,或者端口狀態(tài)learning變?yōu)閒orwarding狀態(tài),都要通過forwarddelay延時來實現(xiàn),forward? delay延時可以促使網(wǎng)絡中需要變?yōu)閎locking狀態(tài)的端口達到目的,從而解決了網(wǎng)絡中環(huán)路產(chǎn)生的問題。
4.3 網(wǎng)絡拓撲結構變化后的處理
生成樹中每個站點所處的位置會隨著網(wǎng)絡拓撲結構的變化而發(fā)生變動,原來保存在網(wǎng)橋中的MAC地址信息就會變得錯誤重重,所以應該給MAC地址信息定義一個生存期,在生存期內(nèi)不能證明MAC地址信息正確,則丟棄掉這些MAC地址信息。在STP中存在兩個生存期:較長的生存期在網(wǎng)絡拓撲相對穩(wěn)定時使用、較短的生存期在拓撲結構經(jīng)常變化時使用。并不是所有的網(wǎng)橋都能夠發(fā)現(xiàn)網(wǎng)絡拓撲結構變化,這就需要以報文的形式把拓撲結構改變的信息告知到每一個網(wǎng)橋。在STP中有三種報文被用來標識拓撲改變:拓撲改變通知消息,拓撲改變應答消息,拓撲改變消息。當有網(wǎng)橋發(fā)現(xiàn)拓撲改變,就會把拓撲改變通知消息以hello time為周期定時從根端口向根網(wǎng)橋的方向發(fā)送,網(wǎng)絡中的其余非根網(wǎng)橋也同樣要向根橋的方向發(fā)送這個通知消息。非根網(wǎng)橋會響應一個拓撲改變應答消息,當網(wǎng)橋收到應答消息后就停止發(fā)送通知消息。應答消息用一個拓撲改變應答標志位來標識,它通常被攜帶在網(wǎng)橋發(fā)送的下一個配置消息中。拓撲改變被根網(wǎng)橋自行發(fā)現(xiàn)或者通過拓撲改變通知消息發(fā)現(xiàn),就會在一定時間內(nèi),把拓撲改變的標志位攜帶在向其他網(wǎng)橋發(fā)送的配置消息中,網(wǎng)橋收到這個消息后較短的生存期將會應用到該網(wǎng)橋的地址表項,直到拓撲改變的標志位不再出現(xiàn)。
參考文獻:
[1] 李玉鵬,王換招,趙青蘋.基于STP的以太網(wǎng)物理拓撲發(fā)現(xiàn)[J].北京電子科技學院學報,2004,12(2):8-13.
[2] 林狀輝.使用交換機時如何避免環(huán)路現(xiàn)象產(chǎn)生[J].科技信息,2009(24):159-160.
[3] 陳榮.淺析生成樹協(xié)議原理及其實驗設計[J].信息與電腦:理論版,2011(5):93-94.
[4] 王炅,張華,謝儲暉.生成樹協(xié)議的算法分析[J].重慶科技學院學報:自然科學版,2011,13(5):140-142.
【通聯(lián)編輯:唐一東】