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