張璐璐,麻曉敏,吳麗杰,劉 洋
(1.安徽糧食工程職業學院信息技術系,安徽 合肥230011;2.陸軍炮兵防空兵學院 基礎部,安徽 合肥230031)
隨著網絡的迅速發展,越來越多的單位和部門依賴于網絡進行工作或生活,越來越多的終端需要進入網絡。在有線的環境中,為了容納這些終端,則要大量使用交換機,從而使得網絡規模不斷膨脹,也使得網絡拓撲結構更易出現環路。
同時,為了提高網絡的可靠性并保證信息的流暢不間斷,在發生臨時故障時,網絡需要有相應的容錯機制來避免單點故障。因此在實際的二層鏈路中會采用鏈路冗余,即交換設備之間多條鏈路連接,這樣即使一臺交換機故障了,也可以使用其他交換機。但是鏈路的冗余備份也會使網絡存在環路[1]。
環路將造成如下問題:廣播風暴、MAC地址表不穩定、重復幀拷貝。針對上述問題,STP(Spanning Tree Protocol,生成樹協議)被設計出來。生成樹協議通過生成本網絡拓撲的樹結構來產生效用。其具體過程為:通過軟件協議判斷網絡中環路的位置,通過阻塞冗余鏈路消除橋接網絡中可能存在的環路。當活動路徑出現故障時,生成樹協議將激活冗余鏈路以恢復網絡連通[2]。基于ENSP設計的STP實驗可以很好的與現實相結合,可以在配置的過程中逐步演示環路問題,簡單STP,加權STP以及鏈路備份。
STP是由Sun微系統公司的著名工程師Radia Perlman發明的,并在IEEE802.1D文檔中被定義,使用這種方法能夠達到兩層路由的理想境界:冗余和無環路運行。STP是一個二層管理協議。在一個擴展的局域網中參與STP的所有交換機之間通過交換網橋協議數據單元BPDU來消除網絡中的環路。這需要確保在主線路正常工作時,備份線路是阻塞的。當主線路故障時,則切換備份線路來傳輸數據。BPDU(Bridge Protocol Data Unit)是一種獨特的協議報文,它的作用是確定本網絡的拓撲結構。這將通過配置BPDU和拓撲變更BPDU來實現。配置BPDU能夠計算網絡中的生成樹,拓撲變更BPDU則能夠在網絡拓撲變化時減小更新時間。
生成樹協議運行生成樹算法(Spanning Tree Algorithm-STA)來構造生成樹。STA將冗余鏈路上的交換機端口設置為阻塞狀態,從而消除環路。若主鏈路出現故障,則相應端口的可以由阻塞狀態激活為活動狀態,保障網絡的連通狀態[3-4]。
其過程可以歸納為以下步驟:
(1)選擇根交換機:為區域網絡選擇一個根交換機。依據是優先級和交換機MAC地址,即交換機ID,其值小的為根交換機。優先級默認為32768,并可根據需要自行設置。當交換機優先級相同時,其MAC地址小的為根交換機。
(2)選擇根端口:為每個交換機(根交換機除外)選擇一個根端口。選擇依據為:到根交換機最低的根路徑成本,發送BPDU的交換機ID,端口優先級,端口編號。即,首先比較各個端口到根交換機的路徑成本,最低的為根端口;若相同,則比較發送BPDU經由的交換機ID,較小的為根端口;若相同,則比較端口優先級,最小的為根端口;若相同,則比較端口編號,最小的為根端口。
(3)選擇指定端口:為每個網段選擇一個指定端口。其中因根交換機的端口的根路徑成本均為0,所以根交換機上的所有端口均為指定端口,而且根端口不能再用作指定端口。指定端口的選擇依據為:根路徑成本,發送BPDU的交換機的ID值,端口的ID值(端口優先級和端口編號)。即,首先比較網段兩端的端口到根交換機的路徑成本,較低的為指定端口;若相同,則比較發送BPDU的交換機ID,值較小的為指定端口;若相同,則比較端口的ID,值較小的為指定端口。
(4)將冗余鏈路上的交換機設置為Blocking,用以消除網絡中的環路,形成一棵完整的樹。
企業網絡模擬器ENSP(Enterprise NetworkSimulation Platform)是一款華為提供圖形化網絡仿真工具。ENSP能完美呈現真實設備實景(包括華為最新的ARG3路由器和X7系列的交換機),不僅可以模擬單臺路由器和交換機的特性操作;且可橋接到物理網卡,模擬接口抓包,直觀展示協議交互過程;還能夠組成大規模網絡進行實戰演練,是網絡學習和實施前測試的利器。
實驗以某公司為例,實現該公司網絡升級,將原有網絡延展到各個部門。但是在網絡運行過程中發現,一個簡單的故障就會造成網絡的中斷。因此技術改造的目標是:提高網絡的可靠性,確保信息的順暢不斷。即當網絡中設備或鏈路發生臨時故障時,要有相應的容錯機制,以避免單點故障。為此,可通過使用多條鏈路,多臺設備或兩者結合使用來實現冗余拓撲,但與此同時我們需考慮冗余鏈路的不利影響。例如本實驗即為使用STP化解相應的環路問題。實驗簡化模擬系統線路,如圖1所示。網絡拓撲中包含1臺服務器SERVER1,3臺終端CLIENT1-CLIENT3和4臺二層交換機SW1-SW4,各設備的接口及簡要信息如拓撲圖所示[5-6]。
為了滿足所有設備組成局域網并相互連通,具備高可靠性的要求,將4臺交換機組成環形網絡,建立冗余鏈路。此方案能確保當隨機鏈路發生故障時,網絡的連通性不受影響,同時網絡具有較強的容錯性能;該方案的不足之處為:多臺交換機設置復雜并且容易引發環路問題。本文主要分析了這種拓撲結構,引入并介紹了環路引發的不利影響,介紹并演示STP的工作原理,熟悉基于STP的交換機設置,逐步實現環路問題,簡單STP,加權STP以及鏈路備份的過程仿真。本實驗不考慮VLAN的因素,服務器及三臺終端的ip地址信息如表1所示。

圖1 網絡拓撲圖

表1 設備地址分配表
交換機所引起的網絡環路屬于第二層環路。環路的形成都是由于目的路徑不明確導致混亂而造成的。交換機用與處理單播幀不同的方式處理廣播幀。由于所有的工作站都可以接收廣播幀,因此交換機通常將其從入站端口外的所有端口轉發出去。又因為廣播地址不能用作源地址,交換機無法獲知廣播地址。當網絡中的每臺交換機都無休止地泛洪廣播幀時,便產生了廣播風暴,也為環路的惡性影響之一。當廣播幀充斥網絡無法處理,并占用大量帶寬,導致正常數據不能被處理,直至網絡被中斷,這就是廣播風暴(broadcast storm)[7]的發生過程。廣播風暴還可能導致計算機和服務器忙于處理所有的廣播幀而無暇顧及其他。

圖2 交換機SW2的G0/0/2端口抓包結果
因為華為設備的STP協議是默認開啟,首先,我們搭建好拓撲環境,分別關閉交換機的STP功能,為大家演示交換機環路問題帶來的影響。以SW1為例,依次對SW1-SW4進行配置:
[SW1]undo stp enable//關閉交換機STP協議
在四個交換機的任何一個接口上抓包都可以看到,圖2以SW2的g0/0/2為例,可以看到ARP廣播很多,即發生了廣播風暴;同時可以看到很多重復的數據幀。
為了了解STP協議根橋的根橋選舉原理,跟端口選舉原理,指定端口選舉原理,將對STP做基本配置的演示。以SW1為例,依次對SW1-SW4進行配置:
[SW1]stp mode stp//開啟交換機STP協議,并將協議模式修改為STP
[SW1]display stp//待網絡完全收斂以后,查詢當前網絡的stp狀態
[SW1]display stp briefe//查詢端口狀態
從命令執行后,顯示的數據中可以看到,SW2作根交換機,SW3的E0/0/2端口、SW4的E0/0/1端口被阻塞,和依據STA算法得到的數據完全相符,算法得到了驗證。網絡狀態如圖3所示:

圖3 簡單STP網絡拓撲圖
數據分析如下:
選舉根橋:拓撲中,交換機的優先級別未設置,同為默認值32768。設備的橋ID大小依次為SW4>SW3>SW1>SW2,所以網絡收斂后,SW2為根橋。
選舉根端口:因為未設置端口開銷值,到根網橋最低的根路徑成本,可簡化為距離的比較。所以每個非根橋交換機的根端口分別為SW1的E0/0/1,SW3的E0/0/3,SW4的E0/0/2端口。
選舉指定端口:因為根網橋的接口皆為指定端口,所以SW1-SW2網段,SW2的E0/0/1端口為指定端口;SW2-SW3網段,SW2的E0/0/3端口為指定端口;SW2-SW4網段,SW2的E0/0/2口為指定端口;對于SW1-SW3網段,端口到達根橋的開銷值相同,但是SW1的橋ID小,所以SW1的E0/0/2網段為指定端口;SW3-SW4網段,端口到達根橋的開銷值相同,但是SW3的橋ID小,所以SW3的E0/0/1端口為指定端口。
因此SW3的E0/0/2,SW4的E0/0/1端口被阻塞,和圖3完全相符。
根交換機一般是由交換機ID的數值大小來確定,通常在優先級相同的情況下,ID值最小的為根交換機。在默認情況下,交換機的優先級都是32768,若需人為指定某臺特定交換機為根交換機,則可以通過修改優先級來實現。若需設置某條特定鏈路的狀態,則可以通過修改相應端口的權值來實現。如進入端口使用stp cost命令來修改cost值。默認情況下,STP機制是根據鏈路的速率來定義此端口的權值,速率越大權值越小。
為了深入了解STP協議,指定端口與根端口選舉條件,學習交換機優先級,交換機端口開銷值對STP的影響,將對STP做加權配置的演示。各交換機的加權值如表2所示;

表2 設備權值分配表
以SW1為例,依次對SW1-SW4進行配置:
[SW1]stp priority 4096//將SW1的優先級修改為4096
[SW1]interface e0/0/0/1//進入 SW1的 e0/0/0/1端口
[SW1-Ethernet0/0/0/1]stp cost 10//配置該端口開銷值為10
[SW1]interface e0/0/0/2//進入 SW1的 e0/0/0/2端口
[SW1-Ethernet0/0/0/2]stp cost 90//配置該端口開銷值為90
[SW1-Ethernet0/0/0/2]quit//退出端口配置模式
[SW1]display stp//待網絡完全收斂以后,查詢當前網絡的stp狀態
[SW1]display stp briefe//查詢端口狀態
從命令執行后,顯示的數據中可以看到,SW1作根交換機,SW2的E0/0/1端口、SW4的E0/0/1端口被阻塞,和依據STA算法得到的數據完全相符,算法得到了驗證。網絡狀態如圖4所示。
數據分析如下:
選舉根橋:拓撲中,設備的橋優先級大小依次為SW4>SW3>SW2>SW1,所以網絡收斂后,SW1為根橋。
選舉根端口:SW2中,端口E0/0/1,E0/0/2,E0/0/3到達根橋SW1的開銷值分別為:100,10+10,100+100+10,因此SW2的E0/0/2為根端口;SW3中,端口E0/0/1,E0/0/2,E0/0/3到達SW1的開銷值分別為:10+10+10+10,10,10+100,因此 SW3的 E0/0/2為根端口;SW4中,端口 E0/0/1,E0/0/2到達SW1的開銷值分別為:100+10,10+10,因此SW4的E0/0/2為根端口;
選舉指定端口:因為根網橋的接口皆為指定端口,所以SW1-SW2網段,SW1的E0/0/1端口為指定端口;SW1-SW3網段,SW1的E0/0/2端口為指定端口;對于SW2-SW3網段,SW2的E0/0/3,SW3的E0/0/3到根橋的開銷值分別為:10+100,10+100,因此SW3的E0/0/3為指定端口;對于SW2-SW4網段,SW2的E0/0/2,SW4的E0/0/2到根橋的開銷值分別為:100+10+10,10+100+10,但由于SW4的E0/0/2以作為根端口了,所以SW2的E0/0/2為指定端口。對于SW3-SW4網段,SW3的E0/0/1,SW4的E0/0/1到根橋的開銷值分別為:10+10+10,100+10,因此SW3的E0/0/1為指定端口;
因此SW2的E0/0/1,SW4的E0/0/1端口被阻塞,和圖4完全相符。

圖4 加權STP網絡拓撲圖

圖5 重新生成STP網絡拓撲圖
交換機或鏈路故障導致拓撲發生變化時,生成樹將調整網絡拓撲,將阻塞的端口切換到轉發狀態以確保連接性。當交換機某個端口變成轉發或者阻塞狀態時,意味關STP拓撲發生了變化,而交換機通過根端口發TCN-BPDU來告知拓撲的變化,這一BPDU不包括實際變更的內容,只告知拓撲的變更。假如交換機某個端口上檢測鏈路故障,隨后向根端口發送TCN給根橋,根橋收到TCN后,會將拓撲變化通知給其它交換機[8-9]。
如果實驗拓撲中鏈路SW2的E0/0/3至SW3的E0/0/3發生故障,比如SW3的E0/0/3端口故障了的話,則SW3就會通過根端口就是E0/0/2發送TCN給根橋SW1告知拓撲的變化,根橋在告知其它交換機。重新生成的STP如圖5所示。
STP是解決環路問題的有效方式。本文通過設計和演示環路問題的危害,STP的生成過程,加權STP的生成過程以及拓撲改變后,STP的變化,詳細說明了STP的原理,生成步驟。但是STP仍有如下需要改進的地方:當網絡拓撲結構變化時,生成樹協議需要兩倍的Forword Delay(傳輸時延:指交換機的端口狀態遷移所用的時間)才能完成整個網絡結構重新達到穩定的狀態,一般約為50-52秒,即網絡拓撲收斂速度慢;不能提供負載均衡,在網絡出現環路時,STP直接將環路進行阻塞,則冗余鏈路不能傳輸數據,從而造成鏈路資源的浪費;如果網絡中的拓撲結構發生變化頻繁,網絡會頻繁地失去連通性,這樣用戶就會無法忍受[10]。這些將通過后續的實驗研究,如RSTP,MSTP可以應用在更為復雜的跨vlan環境中,以及MSTP的融合。