STP生成樹協議工作原理
在一個復雜的網絡中,難免會出現環路。并且,由于冗余備份需要,網絡設計者都傾向于在設備之間部署多條物理鏈路,其中一條作主鏈路,其他鏈路作為備份。這樣,偶然或必然中都會導致環路的產生。環路會產生廣播風暴,最終導致整個網絡資源被耗盡,網絡癱瘓不可用。環路還會引起MAC地址表震蕩導致MAC地址表項被破壞。為了破除環路,采用數據鏈路層協議STP。下面一起來看看STP是如何破壞的。
STP的工作原理
STP實質就是從邏輯上把其中一個端阻塞掉,從而把環路破除。那么它是通過什么機制選取那個端口是阻塞狀態呢?生成樹算法可以歸納以下三個步驟:
1. 選擇根網橋
每個交換機都有唯一的網橋ID(BID),最小BID值的交換機為根交換機。因為BID(8字節)= 橋優先級(2字節)+ 橋MAC(6字節),所以,通過調整優先級讓某臺交換機為根交換機。
2. 選擇根端口
選擇根網橋后,其他的非根網橋選擇一個距離根網橋最近的端口為根端口。
選擇根端口依據如下:
- 交換機中到根網橋總路徑成本最低的端口
- 如果到達根網橋的開銷相同,在比較上級發送者的橋ID,選擇發送者網橋ID最小對應的端口。
- 如果發送者網橋ID也相同,再比較發送者端口ID。端口ID由端口優先級(8位)和端口編號(8位)組成。若端口優先級相同,選擇端口號最小的。
鏈路速度與路徑成本
3. 選擇指定端口
每個網段選擇一個指定端口,根網橋的所有端口均為指定端口。
選擇非根網橋指定端口的依據如下:
- 到根網橋的路徑成本最低
- 端口所在的網橋的ID最小
- 端口值較小
經過以上三個步驟的選擇,把根橋、根端口和指定端口都選擇出來了,剩下的就是非指定端口,也是將被STP協議在邏輯上阻塞的端口。
以下通過一個簡單的案例來深入了解一下STP的工作過程。
從上圖拓撲是由三臺華為的S5700組成,優先級保持默認的32768,帶寬也是一樣的1000Mbps。由于華為的交換機默認開啟STP。
根據上文的知識點,很快確定SW1是根交換機,由于優先級一樣,比較MAC地址,SW1是最小的,所以稱為根端口。在交換機上通過執行如下命令驗證一下
- [SW3]display stp
根端口是哪些呢?
交換機SW2到交換機SW1的最近端口被選為根端口。從上圖拓撲可看出,在帶寬相同情況下,SW2的GE0/0/1端口到SW1最近,所以,為根端口,同樣的SW3的GE0/0/2端口為根端口。可以通過以下命令,在交換機上驗證
- display stp brief
指定端口是哪些呢?
SW2和SW3的GE0/0/3兩個端口到根端口的開銷一樣,選擇BID較小的SW3交換機端口為指定端口,所以SW3的GE0/0/3為指定端口,而SW2的GE0/0/3為阻塞端口。
有了以上的知識點,可以通過控制一些可變的值,來達到我們先要的效果,例如,先讓SW3成為根交換機,可以通過降低SW3的優先級(一定是4096的倍數)。執行如下命令
- [SW3]stp priority 4096
還可以通過修改端口的優先級、或者鏈路開銷值等參數,達到我們想要的效果。具體命令如下:
- #修改端口的開銷值
- [SW2-GigabitEthernet0/0/1]stp cost 1000
- #通過修改端口優先級
- [SW2-GigabitEthernet0/0/1]stp port priority 32