《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 以太網(wǎng)快速環(huán)網(wǎng)保護算法的設(shè)計和實現(xiàn)
以太網(wǎng)快速環(huán)網(wǎng)保護算法的設(shè)計和實現(xiàn)
來源:微型機與應(yīng)用2012年第13期
李 富,程子敬,李 周
(北京衛(wèi)星信息工程研究所,北京 100086)
摘要: 在STP基礎(chǔ)上提出了一種快速的環(huán)路保護算法。該算法能夠提供毫秒級的環(huán)路消除和故障恢復(fù)能力且開銷小。最后介紹了該算法在硬件上的實現(xiàn)。
Abstract:
Key words :

摘  要:STP基礎(chǔ)上提出了一種快速的環(huán)路保護算法。該算法能夠提供毫秒級的環(huán)路消除和故障恢復(fù)能力且開銷小。最后介紹了該算法在硬件上的實現(xiàn)。
關(guān)鍵詞: 冗余鏈路;環(huán)路保護;STP

 交換式以太網(wǎng)已廣泛應(yīng)用到工廠、煤礦、電力等場所。為了提高網(wǎng)絡(luò)可靠性,網(wǎng)絡(luò)需要具備冗余鏈路。交換網(wǎng)絡(luò)環(huán)路為交換網(wǎng)絡(luò)提供冗余鏈路,消除了由于單點故障而引起的網(wǎng)絡(luò)中斷,但同時形成數(shù)據(jù)環(huán)路,會引發(fā)二層交換網(wǎng)絡(luò)的廣播風暴,導(dǎo)致網(wǎng)絡(luò)癱瘓[1]。
 為了解決冗余鏈路引起的問題,環(huán)路保護技術(shù)應(yīng)運而生。生成樹協(xié)議STP(IEEE 802.1D,Spanning Tree Protocol)通過阻塞冗余端口進行鏈路備份,使得網(wǎng)絡(luò)中斷后可在30 s~60 s內(nèi)恢復(fù)。為了縮短網(wǎng)絡(luò)自愈時間,IEEE又提出了與STP兼容的快速生成樹協(xié)議RSTP (Rapid Spanning Tree Protocol),其收斂時間為秒級[2]。
 本文在分析STP這種主流的環(huán)路保護技術(shù)的基礎(chǔ)上,提出了快速環(huán)路保護技術(shù)(RRP)。針對環(huán)型拓撲,RRP克服了傳統(tǒng)STP自愈時間長的缺點,可達到毫秒級的網(wǎng)絡(luò)自愈時間,而且復(fù)雜度低,便于實現(xiàn)。
1 生成樹工作原理及其缺點
 STP是將一個存在物理環(huán)路的交換網(wǎng)絡(luò)變成一個沒有環(huán)路的邏輯樹型網(wǎng)絡(luò),實現(xiàn)在邏輯上裁剪冗余環(huán)路,同時在物理上實現(xiàn)鏈路備份和路徑最優(yōu)化。STP通過Config-BPDU數(shù)據(jù)包來構(gòu)造樹型網(wǎng)絡(luò),通過Tcn-BPDU來通告網(wǎng)絡(luò)拓撲變化。STP算法步驟如下:
?。?)選舉根節(jié)點。擁有最小標識的節(jié)點將成為根節(jié)點。選舉過程開始時,所有節(jié)點都聲明自己是根。當節(jié)點的一個端口收到高優(yōu)先級的Config-BPDU時,就在該端口保存這些信息,同時向所有端口更新并傳播信息。如果收到比自己低優(yōu)先級的Config-BPDU,節(jié)點就丟棄該信息。根節(jié)點的所有端口置為轉(zhuǎn)發(fā)狀態(tài)。
?。?)確定根端口。對每個非根節(jié)點,選擇一個到根節(jié)點路徑最短的端口作為此節(jié)點的根端口。所有根端口置為轉(zhuǎn)發(fā)狀態(tài)。
 (3)確定指定端口。多個節(jié)點連接到同一網(wǎng)段時,代價最小的節(jié)點被稱為指定節(jié)點,取指定節(jié)點在此網(wǎng)段上的一個端口作為指定端口。指定端口通過逐個考查與端口相連的網(wǎng)段來確定,選擇指定端口的依據(jù)首先是路徑成本,路徑成本低的端口將成為指定端口。所有指定端口置為轉(zhuǎn)發(fā)狀態(tài)。
?。?)等待拓撲變化。若根節(jié)點故障,其余各節(jié)點的每個端口都收不到Config-BPDU數(shù)據(jù)包,則等待Config-BPDU數(shù)據(jù)包的計時器都超時,都認為自己是根節(jié)點,開始重新構(gòu)建樹型網(wǎng)絡(luò),重復(fù)步驟(1)~(3)。
通過對STP工作原理的分析,找到STP自愈時間長的幾個原因:
 (1)每個節(jié)點端口角色確定復(fù)雜。節(jié)點有根端口、指定端口和阻塞端口3種角色。各節(jié)點的端口不停地發(fā)送和接收Config-BPDU。每個端口根據(jù)收到的BPDU數(shù)據(jù)包不斷更新端口配置信息,計算出根端口、指定端口和阻塞端口。根端口和指定端口還要經(jīng)過2個Forward Delay Time才能進入轉(zhuǎn)發(fā)狀態(tài)。
 (2)根節(jié)點沒有主動的故障偵測能力,這導(dǎo)致STP對拓撲結(jié)構(gòu)的改變響應(yīng)緩慢。拓撲變化時,發(fā)現(xiàn)拓撲變化的節(jié)點向根節(jié)點方向發(fā)送Tcn-BPDU,通告過程中存在多次應(yīng)答,等到根節(jié)點收到Tcn-BPDU后發(fā)送攜帶拓撲改變標志位的Config-BPDU,通知其他節(jié)點刷新MAC地址表,確立新路徑。新選出的根端口和指定端口也要經(jīng)過2個Forward Delay Time才能進入轉(zhuǎn)發(fā)狀態(tài)。
2 RRP算法設(shè)計及實現(xiàn)
 交換機端口對數(shù)據(jù)的處理無非是丟棄或轉(zhuǎn)發(fā),因此可以將交換機端口狀態(tài)分為阻塞和轉(zhuǎn)發(fā)兩種。根交換節(jié)點是網(wǎng)絡(luò)的邏輯中心而非物理中心,為了提高拓撲改變的反應(yīng)速度,根交換節(jié)點需要自發(fā)故障檢測,而不依賴其他交換節(jié)點的故障通告。
2.1 快速環(huán)路保護算法(RRP)
 (1)選擇根節(jié)點。根節(jié)點是環(huán)網(wǎng)狀態(tài)主動檢測機制的發(fā)起者,也是網(wǎng)絡(luò)拓撲發(fā)生改變后執(zhí)行操作的決策者。初始時,各交換節(jié)點在hello-timer的作用下定時從兩個級聯(lián)端口發(fā)送環(huán)路健康檢測報文,即hello報文,交換節(jié)點收到報文后,進行優(yōu)先級判斷,選擇出根交換機,ID越小,優(yōu)先級越高。如果收到報文的ID比自己的ID小,表明自己為傳輸節(jié)點,從另一端口轉(zhuǎn)發(fā)收到的報文,自己不再發(fā)送hello報文;如果收到報文的ID比自己的ID大,就丟棄此報文;如果收到自己的報文,說明自己為根節(jié)點,表明有環(huán),阻塞自己一個端口,定時發(fā)送hello報文。
?。?)根節(jié)點環(huán)路檢測。根節(jié)點定時從兩個級聯(lián)端口發(fā)送hello報文來檢測環(huán)路健康狀況。若根節(jié)點能收到自己的hello報文,則表明環(huán)路是完整的;如果在wait-timer內(nèi)收不到hello報文,就認為環(huán)網(wǎng)發(fā)生鏈路故障。
?。?)故障發(fā)現(xiàn)。若設(shè)備或鏈路發(fā)生故障,與故障鏈路相連的端口置為阻塞狀態(tài)。根節(jié)點收不到自己發(fā)出的hello報文,wait-timer超時,表明環(huán)路不完整,出現(xiàn)故障,根節(jié)點把之前阻塞的端口打開,同時發(fā)送flush報文,通知其他傳輸節(jié)點更新地址轉(zhuǎn)發(fā)表。傳輸節(jié)點收到根節(jié)點的flush報文后,刷新地址轉(zhuǎn)發(fā)表,重新進行地址學習。
?。?)故障恢復(fù)。故障消除后,根節(jié)點重新收到自己發(fā)出的hello報文,表明環(huán)路存在,根節(jié)點阻塞自己一個級聯(lián)端口。由于拓撲發(fā)生變化,根節(jié)點發(fā)出flush報文,通知其他交換節(jié)點刷新地址表,與恢復(fù)鏈路相連的兩端口置為轉(zhuǎn)發(fā)狀態(tài)。
?。?)根節(jié)點失效檢測。若根節(jié)點發(fā)生故障,傳輸節(jié)點收不到hello報文,wait-timer超時,各傳輸節(jié)點均阻塞端口,開始發(fā)送hello報文,重新選出一個根節(jié)點。
 圖1描述了RRP算法的實現(xiàn)過程。圖1(a)中各節(jié)點向兩個方向發(fā)送hello報文。圖1(b)中由于B1的ID最小,被選為根節(jié)點,(B1,P1)阻塞,環(huán)路消除。圖1(c)中節(jié)點B3和B4間發(fā)生故障,(B3,P1)和(B4,P0)阻塞,根節(jié)點收不到hello報文,wait-timer超時,(B1,P1)置為轉(zhuǎn)發(fā),并向兩方向發(fā)送flush報文。圖1(d)中各節(jié)點收到flush報文后,刷新地址表,B1定時發(fā)送hello報文。圖1(e)中節(jié)點B3和B4間故障修復(fù),(B3,P1)和(B4,P0)仍保持阻塞,B1收到自己的hello報文,意識到環(huán)路的存在,重新阻塞端口(B1,P1),并向兩方向發(fā)送flush報文。圖1(f)中節(jié)點B3和B4收到根節(jié)點的flush報文后,把(B3,P1)和(B4,P0)置為轉(zhuǎn)發(fā)態(tài),根節(jié)點定時發(fā)送hello報文。網(wǎng)絡(luò)拓撲重新收斂。

2.2 RRP算法的硬件實現(xiàn)
 本文基于穩(wěn)定拓撲的以太環(huán)網(wǎng)保護切換方案定義了2種端口狀態(tài)、9種節(jié)點狀態(tài)和8類事件,使用狀態(tài)機可以靈活實現(xiàn)狀態(tài)的轉(zhuǎn)移和事件的處理。
?。?)端口狀態(tài)
 PS0:阻塞,端口只處理協(xié)議控制報文,不接收或轉(zhuǎn)發(fā)數(shù)據(jù),不進行地址學習;
 PS1:轉(zhuǎn)發(fā),端口接收并轉(zhuǎn)發(fā)數(shù)據(jù),處理協(xié)議控制報文,開始地址學習。
 (2)節(jié)點狀態(tài)
 S0:IDLE,環(huán)上端口阻塞;    
 S1:根節(jié)點,環(huán)上端口一個轉(zhuǎn)發(fā),一個阻塞,未成環(huán)狀態(tài),發(fā)送flush報文;
 S2:根節(jié)點,環(huán)上端口一個轉(zhuǎn)發(fā),一個阻塞,成環(huán)狀態(tài),發(fā)送flush報文;
 S3:非根節(jié)點,環(huán)上端口轉(zhuǎn)發(fā);
 S4:根節(jié)點,環(huán)上端口一個轉(zhuǎn)發(fā),一個阻塞,未成環(huán)狀態(tài);
 S5:根節(jié)點,環(huán)上端口一個轉(zhuǎn)發(fā),一個阻塞,成環(huán)狀態(tài);
 S6:根節(jié)點,環(huán)上端口一個轉(zhuǎn)發(fā),一個阻塞,未成環(huán)狀態(tài),發(fā)送hello報文;
 S7:根節(jié)點,環(huán)上端口一個轉(zhuǎn)發(fā),一個阻塞,成環(huán)狀態(tài),發(fā)送hello報文;
 S8:根節(jié)點,環(huán)上端口阻塞,發(fā)送hello報文。
?。?)事件
 E1:收到低優(yōu)先級的hello報文;    
 E2:收到同優(yōu)先級的hello報文;
 E3:收到高優(yōu)先級的hello報文;    
 E4:收到flush報文;
 E5:hello-timer超時;        
 E6:wait-timer超時;
 E7:flush報文發(fā)送完畢;            
 E8:hello報文發(fā)送完畢。
?。?)RRP算法的實現(xiàn)框圖如圖2所示。

 

 

 交換機將收到的RRP報文存放在緩沖隊列中,有高優(yōu)先級、低優(yōu)先級和同優(yōu)先級3種類型。接收報文的同時,計時器超時事件也可能同時發(fā)生,對于發(fā)生的組合事件,需要判斷事件優(yōu)先級再進行相應(yīng)處理。報文處理模塊將要發(fā)送的RRP報文寫入端口的FIFO中,同時控制地址轉(zhuǎn)發(fā)表的刷新、端口的阻塞和轉(zhuǎn)發(fā)控制。
兩個計時器的值可調(diào),其中hello-timer設(shè)為10 ms,wait-timer設(shè)為20 ms。Modelsim仿真結(jié)果表明,消除數(shù)據(jù)環(huán)路的時間和單點故障后的保護切換時間均在40 ms內(nèi)。Synplify綜合結(jié)果表明,在150萬門的芯片上實現(xiàn)該算法需要占用2%的資源。這說明RRP能夠提供快速的保護切換能力且開銷小。
 報文處理模塊的狀態(tài)機如圖3所示。

 局域網(wǎng)中的冗余鏈路提高了網(wǎng)絡(luò)可靠性,但引起了數(shù)據(jù)環(huán)路。本文在分析傳統(tǒng)STP算法缺點及其原因的基礎(chǔ)上,提出了一種快速環(huán)路保護方法,其實現(xiàn)復(fù)雜度低,可提供毫秒級的保護切換。該算法已用硬件實現(xiàn),實驗表明,該算法能夠提供快速的保護倒換能力且開銷小,具有良好的應(yīng)用前景。
參考文獻
[1] IEEE 802.1D 2004. Media Access Control (MAC)Bridges[S]. 2003.
[2] IEEE Std 802.1W 2001. Media Access Control(MAC)Bridges Amendment 2:Rapid Reconfiguration[S]. 2001.
[3] 宋燁,朱杰.STP協(xié)議實驗測試與仿真測試的比較和研究[J].電子測量技術(shù),2007,30(5):129-132.
[4] 沈一波,石旭剛,張勝,等.基于穩(wěn)定拓撲的以太環(huán)網(wǎng)保護[J].微型機與應(yīng)用,2009,28(21):53-56.
[5] 吉萌,詹翊春,余少華.以太環(huán)網(wǎng)的路徑保護和恢復(fù)算法的研究和實現(xiàn)[J].小型微型計算機系統(tǒng),2006,27(4):596-599.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。