張璐璐,麻曉敏,吳麗杰,劉 洋
(1.安徽糧食工程職業(yè)學(xué)院信息技術(shù)系,安徽 合肥230011;2.陸軍炮兵防空兵學(xué)院 基礎(chǔ)部,安徽 合肥230031)
隨著網(wǎng)絡(luò)的迅速發(fā)展,越來(lái)越多的單位和部門依賴于網(wǎng)絡(luò)進(jìn)行工作或生活,越來(lái)越多的終端需要進(jìn)入網(wǎng)絡(luò)。在有線的環(huán)境中,為了容納這些終端,則要大量使用交換機(jī),從而使得網(wǎng)絡(luò)規(guī)模不斷膨脹,也使得網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)更易出現(xiàn)環(huán)路。
同時(shí),為了提高網(wǎng)絡(luò)的可靠性并保證信息的流暢不間斷,在發(fā)生臨時(shí)故障時(shí),網(wǎng)絡(luò)需要有相應(yīng)的容錯(cuò)機(jī)制來(lái)避免單點(diǎn)故障。因此在實(shí)際的二層鏈路中會(huì)采用鏈路冗余,即交換設(shè)備之間多條鏈路連接,這樣即使一臺(tái)交換機(jī)故障了,也可以使用其他交換機(jī)。但是鏈路的冗余備份也會(huì)使網(wǎng)絡(luò)存在環(huán)路[1]。
環(huán)路將造成如下問(wèn)題:廣播風(fēng)暴、MAC地址表不穩(wěn)定、重復(fù)幀拷貝。針對(duì)上述問(wèn)題,STP(Spanning Tree Protocol,生成樹協(xié)議)被設(shè)計(jì)出來(lái)。生成樹協(xié)議通過(guò)生成本網(wǎng)絡(luò)拓?fù)涞臉浣Y(jié)構(gòu)來(lái)產(chǎn)生效用。其具體過(guò)程為:通過(guò)軟件協(xié)議判斷網(wǎng)絡(luò)中環(huán)路的位置,通過(guò)阻塞冗余鏈路消除橋接網(wǎng)絡(luò)中可能存在的環(huán)路。當(dāng)活動(dòng)路徑出現(xiàn)故障時(shí),生成樹協(xié)議將激活冗余鏈路以恢復(fù)網(wǎng)絡(luò)連通[2]?;贓NSP設(shè)計(jì)的STP實(shí)驗(yàn)可以很好的與現(xiàn)實(shí)相結(jié)合,可以在配置的過(guò)程中逐步演示環(huán)路問(wèn)題,簡(jiǎn)單STP,加權(quán)STP以及鏈路備份。
STP是由Sun微系統(tǒng)公司的著名工程師Radia Perlman發(fā)明的,并在IEEE802.1D文檔中被定義,使用這種方法能夠達(dá)到兩層路由的理想境界:冗余和無(wú)環(huán)路運(yùn)行。STP是一個(gè)二層管理協(xié)議。在一個(gè)擴(kuò)展的局域網(wǎng)中參與STP的所有交換機(jī)之間通過(guò)交換網(wǎng)橋協(xié)議數(shù)據(jù)單元BPDU來(lái)消除網(wǎng)絡(luò)中的環(huán)路。這需要確保在主線路正常工作時(shí),備份線路是阻塞的。當(dāng)主線路故障時(shí),則切換備份線路來(lái)傳輸數(shù)據(jù)。BPDU(Bridge Protocol Data Unit)是一種獨(dú)特的協(xié)議報(bào)文,它的作用是確定本網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。這將通過(guò)配置BPDU和拓?fù)渥兏麭PDU來(lái)實(shí)現(xiàn)。配置BPDU能夠計(jì)算網(wǎng)絡(luò)中的生成樹,拓?fù)渥兏麭PDU則能夠在網(wǎng)絡(luò)拓?fù)渥兓瘯r(shí)減小更新時(shí)間。
生成樹協(xié)議運(yùn)行生成樹算法(Spanning Tree Algorithm-STA)來(lái)構(gòu)造生成樹。STA將冗余鏈路上的交換機(jī)端口設(shè)置為阻塞狀態(tài),從而消除環(huán)路。若主鏈路出現(xiàn)故障,則相應(yīng)端口的可以由阻塞狀態(tài)激活為活動(dòng)狀態(tài),保障網(wǎng)絡(luò)的連通狀態(tài)[3-4]。
其過(guò)程可以歸納為以下步驟:
(1)選擇根交換機(jī):為區(qū)域網(wǎng)絡(luò)選擇一個(gè)根交換機(jī)。依據(jù)是優(yōu)先級(jí)和交換機(jī)MAC地址,即交換機(jī)ID,其值小的為根交換機(jī)。優(yōu)先級(jí)默認(rèn)為32768,并可根據(jù)需要自行設(shè)置。當(dāng)交換機(jī)優(yōu)先級(jí)相同時(shí),其MAC地址小的為根交換機(jī)。
(2)選擇根端口:為每個(gè)交換機(jī)(根交換機(jī)除外)選擇一個(gè)根端口。選擇依據(jù)為:到根交換機(jī)最低的根路徑成本,發(fā)送BPDU的交換機(jī)ID,端口優(yōu)先級(jí),端口編號(hào)。即,首先比較各個(gè)端口到根交換機(jī)的路徑成本,最低的為根端口;若相同,則比較發(fā)送BPDU經(jīng)由的交換機(jī)ID,較小的為根端口;若相同,則比較端口優(yōu)先級(jí),最小的為根端口;若相同,則比較端口編號(hào),最小的為根端口。
(3)選擇指定端口:為每個(gè)網(wǎng)段選擇一個(gè)指定端口。其中因根交換機(jī)的端口的根路徑成本均為0,所以根交換機(jī)上的所有端口均為指定端口,而且根端口不能再用作指定端口。指定端口的選擇依據(jù)為:根路徑成本,發(fā)送BPDU的交換機(jī)的ID值,端口的ID值(端口優(yōu)先級(jí)和端口編號(hào))。即,首先比較網(wǎng)段兩端的端口到根交換機(jī)的路徑成本,較低的為指定端口;若相同,則比較發(fā)送BPDU的交換機(jī)ID,值較小的為指定端口;若相同,則比較端口的ID,值較小的為指定端口。
(4)將冗余鏈路上的交換機(jī)設(shè)置為Blocking,用以消除網(wǎng)絡(luò)中的環(huán)路,形成一棵完整的樹。
企業(yè)網(wǎng)絡(luò)模擬器ENSP(Enterprise NetworkSimulation Platform)是一款華為提供圖形化網(wǎng)絡(luò)仿真工具。ENSP能完美呈現(xiàn)真實(shí)設(shè)備實(shí)景(包括華為最新的ARG3路由器和X7系列的交換機(jī)),不僅可以模擬單臺(tái)路由器和交換機(jī)的特性操作;且可橋接到物理網(wǎng)卡,模擬接口抓包,直觀展示協(xié)議交互過(guò)程;還能夠組成大規(guī)模網(wǎng)絡(luò)進(jìn)行實(shí)戰(zhàn)演練,是網(wǎng)絡(luò)學(xué)習(xí)和實(shí)施前測(cè)試的利器。
實(shí)驗(yàn)以某公司為例,實(shí)現(xiàn)該公司網(wǎng)絡(luò)升級(jí),將原有網(wǎng)絡(luò)延展到各個(gè)部門。但是在網(wǎng)絡(luò)運(yùn)行過(guò)程中發(fā)現(xiàn),一個(gè)簡(jiǎn)單的故障就會(huì)造成網(wǎng)絡(luò)的中斷。因此技術(shù)改造的目標(biāo)是:提高網(wǎng)絡(luò)的可靠性,確保信息的順暢不斷。即當(dāng)網(wǎng)絡(luò)中設(shè)備或鏈路發(fā)生臨時(shí)故障時(shí),要有相應(yīng)的容錯(cuò)機(jī)制,以避免單點(diǎn)故障。為此,可通過(guò)使用多條鏈路,多臺(tái)設(shè)備或兩者結(jié)合使用來(lái)實(shí)現(xiàn)冗余拓?fù)?,但與此同時(shí)我們需考慮冗余鏈路的不利影響。例如本實(shí)驗(yàn)即為使用STP化解相應(yīng)的環(huán)路問(wèn)題。實(shí)驗(yàn)簡(jiǎn)化模擬系統(tǒng)線路,如圖1所示。網(wǎng)絡(luò)拓?fù)渲邪?臺(tái)服務(wù)器SERVER1,3臺(tái)終端CLIENT1-CLIENT3和4臺(tái)二層交換機(jī)SW1-SW4,各設(shè)備的接口及簡(jiǎn)要信息如拓?fù)鋱D所示[5-6]。
為了滿足所有設(shè)備組成局域網(wǎng)并相互連通,具備高可靠性的要求,將4臺(tái)交換機(jī)組成環(huán)形網(wǎng)絡(luò),建立冗余鏈路。此方案能確保當(dāng)隨機(jī)鏈路發(fā)生故障時(shí),網(wǎng)絡(luò)的連通性不受影響,同時(shí)網(wǎng)絡(luò)具有較強(qiáng)的容錯(cuò)性能;該方案的不足之處為:多臺(tái)交換機(jī)設(shè)置復(fù)雜并且容易引發(fā)環(huán)路問(wèn)題。本文主要分析了這種拓?fù)浣Y(jié)構(gòu),引入并介紹了環(huán)路引發(fā)的不利影響,介紹并演示STP的工作原理,熟悉基于STP的交換機(jī)設(shè)置,逐步實(shí)現(xiàn)環(huán)路問(wèn)題,簡(jiǎn)單STP,加權(quán)STP以及鏈路備份的過(guò)程仿真。本實(shí)驗(yàn)不考慮VLAN的因素,服務(wù)器及三臺(tái)終端的ip地址信息如表1所示。
圖1 網(wǎng)絡(luò)拓?fù)鋱D
表1 設(shè)備地址分配表
交換機(jī)所引起的網(wǎng)絡(luò)環(huán)路屬于第二層環(huán)路。環(huán)路的形成都是由于目的路徑不明確導(dǎo)致混亂而造成的。交換機(jī)用與處理單播幀不同的方式處理廣播幀。由于所有的工作站都可以接收廣播幀,因此交換機(jī)通常將其從入站端口外的所有端口轉(zhuǎn)發(fā)出去。又因?yàn)閺V播地址不能用作源地址,交換機(jī)無(wú)法獲知廣播地址。當(dāng)網(wǎng)絡(luò)中的每臺(tái)交換機(jī)都無(wú)休止地泛洪廣播幀時(shí),便產(chǎn)生了廣播風(fēng)暴,也為環(huán)路的惡性影響之一。當(dāng)廣播幀充斥網(wǎng)絡(luò)無(wú)法處理,并占用大量帶寬,導(dǎo)致正常數(shù)據(jù)不能被處理,直至網(wǎng)絡(luò)被中斷,這就是廣播風(fēng)暴(broadcast storm)[7]的發(fā)生過(guò)程。廣播風(fēng)暴還可能導(dǎo)致計(jì)算機(jī)和服務(wù)器忙于處理所有的廣播幀而無(wú)暇顧及其他。
圖2 交換機(jī)SW2的G0/0/2端口抓包結(jié)果
因?yàn)槿A為設(shè)備的STP協(xié)議是默認(rèn)開啟,首先,我們搭建好拓?fù)洵h(huán)境,分別關(guān)閉交換機(jī)的STP功能,為大家演示交換機(jī)環(huán)路問(wèn)題帶來(lái)的影響。以SW1為例,依次對(duì)SW1-SW4進(jìn)行配置:
[SW1]undo stp enable//關(guān)閉交換機(jī)STP協(xié)議
在四個(gè)交換機(jī)的任何一個(gè)接口上抓包都可以看到,圖2以SW2的g0/0/2為例,可以看到ARP廣播很多,即發(fā)生了廣播風(fēng)暴;同時(shí)可以看到很多重復(fù)的數(shù)據(jù)幀。
為了了解STP協(xié)議根橋的根橋選舉原理,跟端口選舉原理,指定端口選舉原理,將對(duì)STP做基本配置的演示。以SW1為例,依次對(duì)SW1-SW4進(jìn)行配置:
[SW1]stp mode stp//開啟交換機(jī)STP協(xié)議,并將協(xié)議模式修改為STP
[SW1]display stp//待網(wǎng)絡(luò)完全收斂以后,查詢當(dāng)前網(wǎng)絡(luò)的stp狀態(tài)
[SW1]display stp briefe//查詢端口狀態(tài)
從命令執(zhí)行后,顯示的數(shù)據(jù)中可以看到,SW2作根交換機(jī),SW3的E0/0/2端口、SW4的E0/0/1端口被阻塞,和依據(jù)STA算法得到的數(shù)據(jù)完全相符,算法得到了驗(yàn)證。網(wǎng)絡(luò)狀態(tài)如圖3所示:
圖3 簡(jiǎn)單STP網(wǎng)絡(luò)拓?fù)鋱D
數(shù)據(jù)分析如下:
選舉根橋:拓?fù)渲?,交換機(jī)的優(yōu)先級(jí)別未設(shè)置,同為默認(rèn)值32768。設(shè)備的橋ID大小依次為SW4>SW3>SW1>SW2,所以網(wǎng)絡(luò)收斂后,SW2為根橋。
選舉根端口:因?yàn)槲丛O(shè)置端口開銷值,到根網(wǎng)橋最低的根路徑成本,可簡(jiǎn)化為距離的比較。所以每個(gè)非根橋交換機(jī)的根端口分別為SW1的E0/0/1,SW3的E0/0/3,SW4的E0/0/2端口。
選舉指定端口:因?yàn)楦W(wǎng)橋的接口皆為指定端口,所以SW1-SW2網(wǎng)段,SW2的E0/0/1端口為指定端口;SW2-SW3網(wǎng)段,SW2的E0/0/3端口為指定端口;SW2-SW4網(wǎng)段,SW2的E0/0/2口為指定端口;對(duì)于SW1-SW3網(wǎng)段,端口到達(dá)根橋的開銷值相同,但是SW1的橋ID小,所以SW1的E0/0/2網(wǎng)段為指定端口;SW3-SW4網(wǎng)段,端口到達(dá)根橋的開銷值相同,但是SW3的橋ID小,所以SW3的E0/0/1端口為指定端口。
因此SW3的E0/0/2,SW4的E0/0/1端口被阻塞,和圖3完全相符。
根交換機(jī)一般是由交換機(jī)ID的數(shù)值大小來(lái)確定,通常在優(yōu)先級(jí)相同的情況下,ID值最小的為根交換機(jī)。在默認(rèn)情況下,交換機(jī)的優(yōu)先級(jí)都是32768,若需人為指定某臺(tái)特定交換機(jī)為根交換機(jī),則可以通過(guò)修改優(yōu)先級(jí)來(lái)實(shí)現(xiàn)。若需設(shè)置某條特定鏈路的狀態(tài),則可以通過(guò)修改相應(yīng)端口的權(quán)值來(lái)實(shí)現(xiàn)。如進(jìn)入端口使用stp cost命令來(lái)修改cost值。默認(rèn)情況下,STP機(jī)制是根據(jù)鏈路的速率來(lái)定義此端口的權(quán)值,速率越大權(quán)值越小。
為了深入了解STP協(xié)議,指定端口與根端口選舉條件,學(xué)習(xí)交換機(jī)優(yōu)先級(jí),交換機(jī)端口開銷值對(duì)STP的影響,將對(duì)STP做加權(quán)配置的演示。各交換機(jī)的加權(quán)值如表2所示;
表2 設(shè)備權(quán)值分配表
以SW1為例,依次對(duì)SW1-SW4進(jìn)行配置:
[SW1]stp priority 4096//將SW1的優(yōu)先級(jí)修改為4096
[SW1]interface e0/0/0/1//進(jìn)入 SW1的 e0/0/0/1端口
[SW1-Ethernet0/0/0/1]stp cost 10//配置該端口開銷值為10
[SW1]interface e0/0/0/2//進(jìn)入 SW1的 e0/0/0/2端口
[SW1-Ethernet0/0/0/2]stp cost 90//配置該端口開銷值為90
[SW1-Ethernet0/0/0/2]quit//退出端口配置模式
[SW1]display stp//待網(wǎng)絡(luò)完全收斂以后,查詢當(dāng)前網(wǎng)絡(luò)的stp狀態(tài)
[SW1]display stp briefe//查詢端口狀態(tài)
從命令執(zhí)行后,顯示的數(shù)據(jù)中可以看到,SW1作根交換機(jī),SW2的E0/0/1端口、SW4的E0/0/1端口被阻塞,和依據(jù)STA算法得到的數(shù)據(jù)完全相符,算法得到了驗(yàn)證。網(wǎng)絡(luò)狀態(tài)如圖4所示。
數(shù)據(jù)分析如下:
選舉根橋:拓?fù)渲校O(shè)備的橋優(yōu)先級(jí)大小依次為SW4>SW3>SW2>SW1,所以網(wǎng)絡(luò)收斂后,SW1為根橋。
選舉根端口:SW2中,端口E0/0/1,E0/0/2,E0/0/3到達(dá)根橋SW1的開銷值分別為:100,10+10,100+100+10,因此SW2的E0/0/2為根端口;SW3中,端口E0/0/1,E0/0/2,E0/0/3到達(dá)SW1的開銷值分別為:10+10+10+10,10,10+100,因此 SW3的 E0/0/2為根端口;SW4中,端口 E0/0/1,E0/0/2到達(dá)SW1的開銷值分別為:100+10,10+10,因此SW4的E0/0/2為根端口;
選舉指定端口:因?yàn)楦W(wǎng)橋的接口皆為指定端口,所以SW1-SW2網(wǎng)段,SW1的E0/0/1端口為指定端口;SW1-SW3網(wǎng)段,SW1的E0/0/2端口為指定端口;對(duì)于SW2-SW3網(wǎng)段,SW2的E0/0/3,SW3的E0/0/3到根橋的開銷值分別為:10+100,10+100,因此SW3的E0/0/3為指定端口;對(duì)于SW2-SW4網(wǎng)段,SW2的E0/0/2,SW4的E0/0/2到根橋的開銷值分別為:100+10+10,10+100+10,但由于SW4的E0/0/2以作為根端口了,所以SW2的E0/0/2為指定端口。對(duì)于SW3-SW4網(wǎng)段,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 加權(quán)STP網(wǎng)絡(luò)拓?fù)鋱D
圖5 重新生成STP網(wǎng)絡(luò)拓?fù)鋱D
交換機(jī)或鏈路故障導(dǎo)致拓?fù)浒l(fā)生變化時(shí),生成樹將調(diào)整網(wǎng)絡(luò)拓?fù)?,將阻塞的端口切換到轉(zhuǎn)發(fā)狀態(tài)以確保連接性。當(dāng)交換機(jī)某個(gè)端口變成轉(zhuǎn)發(fā)或者阻塞狀態(tài)時(shí),意味關(guān)STP拓?fù)浒l(fā)生了變化,而交換機(jī)通過(guò)根端口發(fā)TCN-BPDU來(lái)告知拓?fù)涞淖兓?,這一BPDU不包括實(shí)際變更的內(nèi)容,只告知拓?fù)涞淖兏<偃缃粨Q機(jī)某個(gè)端口上檢測(cè)鏈路故障,隨后向根端口發(fā)送TCN給根橋,根橋收到TCN后,會(huì)將拓?fù)渥兓ㄖo其它交換機(jī)[8-9]。
如果實(shí)驗(yàn)拓?fù)渲墟溌稴W2的E0/0/3至SW3的E0/0/3發(fā)生故障,比如SW3的E0/0/3端口故障了的話,則SW3就會(huì)通過(guò)根端口就是E0/0/2發(fā)送TCN給根橋SW1告知拓?fù)涞淖兓?,根橋在告知其它交換機(jī)。重新生成的STP如圖5所示。
STP是解決環(huán)路問(wèn)題的有效方式。本文通過(guò)設(shè)計(jì)和演示環(huán)路問(wèn)題的危害,STP的生成過(guò)程,加權(quán)STP的生成過(guò)程以及拓?fù)涓淖兒螅琒TP的變化,詳細(xì)說(shuō)明了STP的原理,生成步驟。但是STP仍有如下需要改進(jìn)的地方:當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)變化時(shí),生成樹協(xié)議需要兩倍的Forword Delay(傳輸時(shí)延:指交換機(jī)的端口狀態(tài)遷移所用的時(shí)間)才能完成整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)重新達(dá)到穩(wěn)定的狀態(tài),一般約為50-52秒,即網(wǎng)絡(luò)拓?fù)涫諗克俣嚷?;不能提供?fù)載均衡,在網(wǎng)絡(luò)出現(xiàn)環(huán)路時(shí),STP直接將環(huán)路進(jìn)行阻塞,則冗余鏈路不能傳輸數(shù)據(jù),從而造成鏈路資源的浪費(fèi);如果網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu)發(fā)生變化頻繁,網(wǎng)絡(luò)會(huì)頻繁地失去連通性,這樣用戶就會(huì)無(wú)法忍受[10]。這些將通過(guò)后續(xù)的實(shí)驗(yàn)研究,如RSTP,MSTP可以應(yīng)用在更為復(fù)雜的跨vlan環(huán)境中,以及MSTP的融合。