任務(wù)描述
局域網(wǎng)中常常為了冗余將網(wǎng)絡(luò)規(guī)劃為環(huán)形拓?fù)洌h(huán)形結(jié)構(gòu)能提升可靠性,隨之帶來的就是廣播風(fēng)暴,如果廣播幀無線轉(zhuǎn)發(fā)下去,勢必導(dǎo)致CPU負(fù)載過重,最終會使得局域網(wǎng)中的交換機(jī)癱瘓,這時候就會需要一種先進(jìn)的方法來解決這個問題,需要一種方法阻塞冗余鏈路,消除路徑環(huán)路,并且在必要時將冗余鏈路自動切換為轉(zhuǎn)發(fā)狀態(tài),恢復(fù)網(wǎng)絡(luò)的連通性,STP就是在這個背景下產(chǎn)生了。
■ 任務(wù)相關(guān)知識
1、STP的工作原理
STP(Spanning Tree Protocol)是生成樹協(xié)議的英文縮寫。將環(huán)路網(wǎng)絡(luò)修剪成無環(huán)路的樹型網(wǎng)絡(luò)。由五個交換機(jī)組成的網(wǎng)絡(luò)如圖1所示,為了提升網(wǎng)絡(luò)之間的可靠性,交換機(jī)之間構(gòu)成了環(huán)形拓?fù)洌魏我欢挝锢礞溌窋嚅_都不會影響網(wǎng)絡(luò)的通信;但是帶來的問題是,那些發(fā)給所有主機(jī)的廣播幀永遠(yuǎn)無法到達(dá)目的地,導(dǎo)致會在環(huán)路中不斷地轉(zhuǎn)發(fā),最終會導(dǎo)致網(wǎng)絡(luò)阻塞。
圖1 交換機(jī)構(gòu)成的環(huán)形拓?fù)?/p>
解決問題的辦法就是破除環(huán)路,網(wǎng)絡(luò)科學(xué)家設(shè)想用一種邏輯的方法將物理的環(huán)路切斷,這就是生成樹的思想,如圖2所示。
圖2 STP修剪后的樹形網(wǎng)絡(luò)
圖2中經(jīng)STP修剪后的樹形網(wǎng)絡(luò),生成樹的樹根是一個稱為根橋(ROOT)的交換機(jī),由根橋開始,逐級發(fā)散形成一棵樹,交換機(jī)根據(jù)端口的配置選出一個端口并把其他的端口阻塞,消除環(huán)路,且當(dāng)前活動的鏈路出現(xiàn)故障時,會激活阻塞的端口。
2、橋和端口
生成樹協(xié)議定義了一個數(shù)據(jù)包,叫做橋協(xié)議數(shù)據(jù)單元BPDU(Bridge Protocol Data Unit),網(wǎng)橋用BPDU來相互通信,并用BPDU的相關(guān)機(jī)能來動態(tài)選擇根橋,生成樹的確定首先要選擇樹根節(jié)點,然后確定最短路徑,最后阻塞冗余鏈路。在生成樹的選舉和計算當(dāng)中,要用到幾個重要的概念如下:
(1)根橋(ROOT):網(wǎng)絡(luò)中會選擇一個交換機(jī)為根橋,也稱之為根交換機(jī),可以理解為生成樹的樹根。根橋依據(jù)橋ID(BID)進(jìn)行選舉,比較后橋ID小的選舉為根橋,如圖3中SWA被選舉為根橋。
橋ID:橋優(yōu)先級+MAC地址
圖3中SWA的橋ID為0.MACA,SWB的橋ID為8192.MACB,SWC的橋ID為32768.MACC,比較后得出SWA的優(yōu)先級最小,因此不用比較MAC地址,會自動選舉SWA為根橋。
(2)指定橋(Designated Bridge):與根交換機(jī)處在同一個局域網(wǎng)中,且位于與根交換機(jī)的最短路徑中,如圖3中SWB和SWC為指定交換機(jī),也稱指定橋。
(3)根端口(Root Port):所有非根交換機(jī)都有一個根端口,根端口提供最短路徑到根交換機(jī),如圖3中SWB、SWC與根交換機(jī)相連的端口即根端口。
(4)指定端口(Designnated Port):指定交換機(jī)與局域網(wǎng)相連的端口,如圖3中SWB與SWC相連的端口,指定端口能轉(zhuǎn)發(fā)數(shù)據(jù)和BPDU;
(5)Alternate端口:冗余端口,處于阻塞狀態(tài),如圖3中SWC與SWB相連的端口,Alternate端口只接收BPDU,不轉(zhuǎn)發(fā)。
圖3 STP拓?fù)渲薪粨Q機(jī)的角色
選舉出根橋后,根端口和指定端口如圖3所示,正常時Y端口會持續(xù)收到X發(fā)出的BPDU數(shù)據(jù);當(dāng)SWB與SWA之間的鏈路斷掉后,此時X端口的重要性就突顯出來了,X端口會持續(xù)向Y發(fā)送BPDU,此時Y端口意識到可能要成為指定端口或者根端口,就會從非指定端口的BLOCKING狀態(tài)轉(zhuǎn)到LISTENING狀態(tài),進(jìn)而可以發(fā)送BPDU(此時還不能發(fā)送數(shù)據(jù)幀);Y端口變?yōu)長ISTENING狀態(tài)后可以參與指定端口、根端口的選舉,繼而從BLOCKING>LISTENING>LEARNING>FORWARDING狀態(tài),依據(jù)選舉過程,A會變?yōu)楦丝冢珺會變成指定端口,從而完成了網(wǎng)絡(luò)鏈路的冗余,又破除了交換機(jī)的環(huán)路。
3、路徑開銷(Path Cost)
路徑開銷用于衡量橋與橋之間路徑的優(yōu)劣,STP中每條鏈路都具有開銷值,路徑開銷等于路徑上全部鏈路開銷之和,不同接口類型的開銷如圖4所示。
圖4 STP中的路徑開銷
由表可知,圖4中1Gb/s的接口路徑開銷為20,100Mb/s的接口路徑開銷為200,開銷越小,意味著最優(yōu)路徑。
■ 任務(wù)完成步驟
1、網(wǎng)絡(luò)拓?fù)湟?guī)劃
根據(jù)任務(wù)需求,簡化拓?fù)浣Y(jié)構(gòu),三臺交換機(jī)組成一個環(huán)形拓?fù)淙鐖D5所示。
圖5 交換機(jī)STP配置拓?fù)鋱D
要求:
(1)開啟生成樹協(xié)議STP,觀察相關(guān)現(xiàn)象;
(2)配置STP,使得SW1為STP主根,SW2為次根,并且SW3的GE0/0/23為Block;
(3)在交換機(jī)上查看STP配置狀態(tài)。
2、開啟SW1、SW2、SW3的STP協(xié)議
開啟交換機(jī)的STP協(xié)議如下:
[SW1 ]stp mode stp
[SW1] stp enable
[SW2] stp mode stp
[SW2] stp enable
[SW3] stp mode stp
[SW3] stp enable
在完成上述配置后,STP開始工作,并開始選舉根橋(ROOT),三臺交換機(jī)中,STP橋ID(橋優(yōu)先級+橋MAC)最小的交換機(jī)將成為本交換網(wǎng)絡(luò)的根橋。三臺交換機(jī)開啟STP后的狀態(tài)如圖6、圖7、圖8所示。
圖6 SW1的STP狀態(tài)
圖7 SW2的STP狀態(tài)
圖8 SW3的STP狀態(tài)
從圖6、圖7、圖8可以看出,三個交換機(jī)中,SW1是根橋,交換機(jī)SW2的G0/0/24為根端口,交換機(jī)SW3的G0/0/22為根端口。
所有的交換機(jī)默認(rèn)的橋優(yōu)先級為32768,最小背板MAC的交換機(jī)SW1成為了網(wǎng)絡(luò)的根橋,顯然帶有不可控性,在實際的網(wǎng)絡(luò)部署中,需手工指定一臺設(shè)備成為ROOT,從而保證生成樹計算的穩(wěn)定性。
為了保證生成樹的穩(wěn)定性,需手工指定SW1成為交換網(wǎng)絡(luò)的主根橋,SW2成為本交換網(wǎng)絡(luò)的次根橋,檢測到SW1出現(xiàn)故障后,SW2替代它成為網(wǎng)絡(luò)的根橋。
SW1上增加的配置如下:
[SW1] stp root primary
SW2上增加的配置如下:
[SW2] stp root secondary
3、測試與驗證
完成上述配置后,查看交換機(jī)SW1的STP配置如圖9所示:
圖9 查看SW1的STP狀態(tài)
從輸出的信息我們得知,本交換機(jī)的橋ID為 0:4c1f-cc3e-522e,其中0為交換機(jī)的橋優(yōu)先級,最小值也是最優(yōu)的值。4c1f-cc3e-522e是本機(jī)的背板MAC地址。而上述輸出的信息中,ROOT的MAC也是4c1f-cc3e-522e,表明本交換機(jī)就是網(wǎng)絡(luò)的根橋,請大家自己查詢SW2和SW3的STP狀態(tài)信息。
接下來查閱SW1、SW2和SW3的端口狀態(tài)(display stp brief),如圖10所示。
圖10 交換機(jī)配置STP后端口狀態(tài)
從圖10可以看出,交換機(jī)SW1的兩個端口都為指定端口,SW2的G0/0/23為指定端口,G0/0/24為根端口,SW3的G0/0/22為根端口,G0/0/23為阻塞端口,這是因為這個接口到達(dá)根橋SW1的開銷最大。
怎么看接口的開銷呢?命令如下。
[SW3]display stp interface GigabitEthernet 0/0/23
圖11 查看交換機(jī)的接口開銷
如果希望被阻塞的不是SW3的GE0/0/23口,而是SW2的GE0/0/23口呢?可將GE0/0/22 的接口COST調(diào)大,使得這個接口距離根橋SW1的開銷更大。因此可在SW3增加配置如下:
[SW3] interface GigabitEthernet 0/0/22
[SW3-GigabitEthernet0/0/22] stp cost 300
查詢SW1、SW2和SW3的端口狀態(tài)(display stp brief),如圖12所示。
現(xiàn)在假如SW1和SW3之間的鏈路斷開,如圖13所示,我們再來看下交換機(jī)的端口狀態(tài)。
[SW3-GigabitEthernet0/0/23]int g0/0/22
[SW3-GigabitEthernet0/0/22]shutdown
圖13 環(huán)路中一條鏈路斷開
查閱SW1、SW2和SW3的端口狀態(tài)(display stp brief),如圖14所示。
圖14 交換機(jī)配置STP后端口狀態(tài)
從圖14可以看出,G0/0/23端口由阻塞端口轉(zhuǎn)為根端口,可以進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),保證網(wǎng)絡(luò)的可靠性。
■ 任務(wù)總結(jié)
在任務(wù)實施當(dāng)中,啟動STP協(xié)議后,需要人為判斷和指定哪個交換機(jī)為根橋,并要驗證STP是否生效,檢驗交換機(jī)的指定端口、阻塞端口是否正常。
■ 任務(wù)拓展
完成如圖15所示的STP配置,4臺交換機(jī)組成的拓?fù)淙鐖D15所示。
要求:
(1)開啟生成樹協(xié)議STP,觀察相關(guān)現(xiàn)象;
(2)配置STP,使得SW4為STP橋根;
(3)在交換機(jī)上查看STP配置狀態(tài)。
圖15 交換機(jī)STP配置拓?fù)鋱D
無論是弱電網(wǎng)絡(luò)工程師還是網(wǎng)絡(luò)工程師,在學(xué)習(xí)網(wǎng)絡(luò)技術(shù)的時候,都感覺STP很難理解,是一道漫不過的坎。今天通過本文,大家按照步驟仔細(xì)閱讀,相信大家就可以理解STP生成樹協(xié)議了。
STP英文全稱是Spanning tree protocol,中文解析為生成樹協(xié)議。生成樹協(xié)議可以簡單理解為生成樹協(xié)議根據(jù)相關(guān)參數(shù)從樹根開始,通過阻塞某些端口,往下生成一棵無環(huán)路的拓樸樹。
如下圖所示:
因為有阻塞端口的鏈路不可用,所以根據(jù)上圖可以畫出一棵無環(huán)路的拓?fù)錁淙缦聢D所示:
大家看完上面拓?fù)浜螅赡軙蓡枺裁词菢涓浚?strong>SW1為什么會成為樹根?、樹根的作用是什么?、哪些端口會被阻塞?、哪些端口不會被阻塞?、端口角色是什么?等等一系列問題。接下來我們就開始詳細(xì)學(xué)習(xí)STP生成樹的各個概念吧。
根橋:root bridge,也就是上圖所說的“樹根”。在一個STP網(wǎng)絡(luò)中,根橋只有一個,它是整個網(wǎng)絡(luò)的邏輯中心。網(wǎng)絡(luò)收斂后,根橋會按照一定的時間間隔產(chǎn)生并向外發(fā)送配置BPDU,其他設(shè)備僅對該報文進(jìn)行轉(zhuǎn)發(fā),傳達(dá)拓?fù)渥兓涗洠瑥亩WC拓?fù)涞姆€(wěn)定。
第一步:選舉根交換機(jī)
根橋的選舉規(guī)則是:交換機(jī)啟動時會相互發(fā)送配置BPDU,BPDU中包含bridge id(橋ID)字段,橋ID最小的將會成為全網(wǎng)的根橋。
BPDU報文格式
IEEE 802.1D標(biāo)準(zhǔn)中規(guī)定橋ID是由2字節(jié)的交換機(jī)優(yōu)先級(Bridge Priority)與6字節(jié)的交換機(jī)MAC地址構(gòu)成,即BID(8字節(jié))=交換機(jī)優(yōu)先級(2字節(jié)) + 交換機(jī)MAC(6字節(jié))。默認(rèn)交換機(jī)優(yōu)先級均為32768;交換機(jī)mac由24位固定廠商代碼(華為的廠家是4c:1f:cc)+24位自定義數(shù)字組成。
抓包顯示,交換機(jī)-2每隔2s會定期發(fā)送從啟動端口GE0/0/1發(fā)送配置BPDU(橋協(xié)議數(shù)據(jù)單元)。BPDU中包含橋ID,交換機(jī)通過對比橋ID的大小來選舉根交換機(jī)。
BPDU中包含的橋ID字段
接著我們把交換機(jī)-3(橋ID是32768+4c1f-cc1a-36d9)也接到hub上,驗證一下根橋的選舉規(guī)則(交換機(jī)-3的橋ID比交換機(jī)-2的橋ID小,比較規(guī)則是:先比較根橋優(yōu)先級,再比較mac地址),驗證命令是:display stp,結(jié)果如下圖所示:
從上圖可以看到,經(jīng)過比較,交換機(jī)-3成了交換機(jī)-2和交換機(jī)-3組成的網(wǎng)絡(luò)的根橋。
第二步:選舉根端口。
1.根橋選出來后,才會選擇根端口。根端口指的是非根交換機(jī)到達(dá)根交換機(jī)的根路徑開銷最小的端口。根路徑開銷指的是,交換機(jī)某端口到根橋累計的路徑開銷就是所經(jīng)過的各個橋上的各端口的路徑開銷累加而成,這個值叫做根路徑開銷(Root Path Cost)。如下圖所示:
SW4的2端口的路徑開銷=SW4的2端口的路徑開銷(10)+SW2的1端口的路徑開銷(10)=20。
SW4的1端口的路徑開銷=SW4的1端口的路徑開銷(100)+SW3的2端口的路徑開銷(100)。
兩者對比,SW4的根路徑開銷為20,根端口為2端口(因為該端口到根交換機(jī)的路徑開銷最小)。
2. 如果SW4的2端口和1端口到達(dá)根橋(SW1)的路徑開銷都一樣,SW4根據(jù)從2端口和1端口接收到的配置BPDU中的發(fā)送者橋ID來選舉根橋。端口接收到的BPDU中,發(fā)送者橋ID小的,該端口將會成為根端口
第三步:選舉指定端口
根交換機(jī)上的每個端口都是指定端口。每個交換機(jī)之間的鏈路都需要選出一個指定端口,指定端口抑制其它(交換機(jī)自身的端口或者其它交換機(jī)上的端口)端口發(fā)送配置BPDU。
如上圖所示,全網(wǎng)根據(jù)第一、二步選舉出了根橋以及跟端口。那么接下來如何選舉指定端口呢?
SW1-SW2之間選擇指定端口,因為SW1為根橋,根橋上的所有端口都是指定端口,該段鏈路上,SW1的1端口為該網(wǎng)段的指定端口;SW2和SW4之間,因為SW4的2端口為RP端口,所以,該鏈路上,SW2的2端口為指定端口(為什么呢?因為指定端口會向下轉(zhuǎn)發(fā)配置BPDU,根端口只接收配置BPDU);SW1和SW3之間,因為SW1為根橋,SW1上的所有端口都是指定端口,該鏈路上指定端口為SW1的2號端口。
最后,SW4和SW3之間的鏈路上需要選出指定端口,選舉的規(guī)則是:1.比較根橋ID,越小越優(yōu)先、2.比較根路徑開銷,越小越優(yōu)先、3.比較發(fā)送者橋ID,越小越優(yōu)先。因為全網(wǎng)根橋ID一致,SW4的1號端口到達(dá)根橋的路徑開銷是(10+10=20),SW3的1號端口到達(dá)根橋的路徑開銷為(100),所以SW4的1號端口成為該鏈路的指定端口,SW3的1號端口為AP阻塞端口(該端口不轉(zhuǎn)發(fā)數(shù)據(jù))。
如下圖所示:
看完本文,如果你對STP還不了解的,請評論區(qū)下方評論。歡迎轉(zhuǎn)發(fā)收藏關(guān)注。