STP生成樹協議筆記之(二) : 端口角色選舉
STP端口角色
STP中定義了三種端口角色:指定端口,根端口和預備端口。
指定端口(Design):是交換機向所連網段轉發配置BPDU的端口,每個網段有且只能有一個指定端口。一般情況下,根橋的每個端口總是指定端口。
根端口(Root):是非根交換機去往根橋路徑最優的端口。在一個運行STP協議的交換機上最多只有一個根端口,但根橋上沒有根端口。
預備端口(Alternate):如果一個端口既不是指定端口也不是根端口,則此端口為預備端口。預備端口將被阻塞。
Tips:一台交換機有且僅有一個根端口(根橋除外),一條鏈路有且僅有一個指定端口。
STP端口角色選舉過程
1、選舉一個根橋。
2、每個非根交換機選舉一個根端口。
3、每個網段選舉一個指定端口。
4、阻塞非根、非指定端口。
這些不同的端口角色是怎樣選舉出來的,會在下面詳細描述
根橋選舉
STP中根橋的選舉依據的是橋ID(Bridge ID),STP中的每個交換機都會有一個橋ID(Bridge ID) 。
橋ID由16位的橋優先級(Bridge Priority)和48位的MAC地址構成。在STP網絡中,橋優先級是可以配置的,取值范圍是0~65535,默認值為32768。
查看橋ID的命令:display stp
如下圖所示:此時交換機的橋ID為32768(橋優先級).4c1f-cc93-1da6(MAC地址)

根橋選舉過程:
1、首先對比橋優先級,橋優先級最高(數值最小的)的設備會被選舉為根橋。
2、如果橋優先級相同,則會比較MAC地址,MAC地址越小則越優先。
交換機啟動后就自動開始進行生成樹收斂計算。默認情況下,所有交換機啟動時都認為自己是根橋,自己的所有端口都為指定端口,這樣BPDU報文就可以通過所有端口轉發。對端交換機收到BPDU報文后,會比較BPDU中的根橋ID和自己的橋ID。
如果收到的BPDU報文中的橋ID優先級低,接收交換機會繼續通告自己的配置BPDU報文給鄰居交換機。如果收到的BPDU報文中的橋ID優先級高,則交換機會修改自己的BPDU報文的根橋ID字段,宣告新的根橋。
根端口選舉
非根交換機在選舉根端口時依據的先后順序為該端口的根路徑開銷、對端BID(Bridge ID)、對端PID(Port ID)和本端PID。
根路徑開銷:交換機的每個端口都有一個端口開銷(Port Cost)參數,此參數表示該端口發送數據時的開銷值,即出端口的開銷。STP認為從一個端口接收數據是沒有開銷的。端口的開銷和端口的帶寬有關,帶寬越高,開銷越小。從一個非根橋到達根橋的路徑可能有多條,每一條路徑都有一個總的開銷值,此開銷值是該路徑上所有出端口的端口開銷總和,即根路徑開銷RPC(Root Path Cost)。非根橋根據根路徑開銷來確定到達根橋的最短路徑,並生成無環樹狀網絡。根橋的根路徑開銷是0。
缺省情況下,端口開銷的默認值為20000。
端口ID:運行STP交換機的每個端口都有一個端口ID,端口ID由端口優先級和端口號構成。端口優先級取值范圍是0到240,步長為16,即取值必須為16的整數倍。缺省情況下,端口優先級是128。端口ID(port ID)可以用來確定端口角色。
下圖紅圈中就是端口ID的一個例子,其指出了該交換機設備的根端口ID為128(端口優先級).15(端口號)

根端口選舉過程:
1、首先比較根路徑開銷,確定非根交換機中哪個端口到根橋的路徑開銷最少。
2、如果每個端口的根路徑開銷均相同,則比較對端交換機的橋ID(Bridge ID),橋ID越小越優先。
3、如果對端交換機的橋ID相同的情況(如兩台設備之間連接了兩條或以上的鏈路),則比較對端交換機上的端口ID(Port ID),端口ID越小越優先。
4、如果對端的端口ID(Port ID)相同(極少見情況),則比較本端交換機上的端口ID(Port ID),端口ID越小越優先。
每個非根橋都要選舉一個根端口。根端口是距離根橋最近的端口,這個衡量標准是靠累計根路徑開銷來判定的,即累計根路徑開銷最小的端口就是根端口。端口收到一個BPDU報文后,抽取該BPDU報文中累計根路徑開銷字段的值,加上該端口本身的路徑開銷即為累計根路徑開銷。
指定端口選舉
在網段上抑制其他端口(無論是本設備的還是其他設備的)發送BPDU報文的,只有自己才能發送BPDU的端口,就是該網段的指定端口。每個網段都應該有一個指定端口,根橋的所有端口都是指定端口(除非根橋在物理上存在環路)。
指定端口選舉過程
1、首先比較累計根路徑開銷,累計根路徑開銷最小的端口就是指定端口。
2、如果累計根路徑開銷相同,則比較端口所在交換機的橋ID,所在橋ID最小的端口被選舉為指定端口。
3、如果通過累計根路徑開銷和所在橋ID選舉不出來,則比較端口ID,端口ID最小的被選舉為指定端口。
網絡收斂后,只有指定端口和根端口可以轉發數據。其他端口為預備端口,預備端口將被阻塞,不能轉發數據,只能夠從所連網段的指定交換機接收到BPDU報文,並以此來監視鏈路的狀態。
通過實驗來檢驗STP端口角色選舉

現於華為網絡學習軟件eNSP中建立拓撲圖如上,由於交換機默認使用MSTP(多實例生成樹協議),所以這里需要改為使用STP協議(生成樹協議)。具體配置方式在以后在詳述。
在圖中,已經給出了LSW1~LSW4交換機的橋ID(Bridge ID),可以知道四台交換機的橋優先級均相同,都為默認的32768。所有鏈路的端口開銷均相同,為默認的20000。
Step 1 :選舉根橋
四台交換機的橋優先級相同,MAC地址最小的是LSW4,則根橋為LSW4
Step 2 : 每台交換機選舉根端口
對於LSW4:根橋沒有根端口,且根橋上所有端口都為指定端口。
對於LSW2:首先對比根路徑開銷,由圖可知路徑LSW2-LSW4的開銷為20000,路徑LSW2-LSW3-LSW4為40000,路徑LSW2-LSW1-LSW3-LSW4為60000。則GE0/0/2的端口開銷最小,根端口為G0/0/2。
對於LSW3:與LSW2相同,根端口為G0/0/3。
對於LSW1:由圖可知,路徑LSW1-LSW2-LSW4和路徑LSW1-LSW3-LSW4根路徑開銷都是相同的,那么就要比較對端交換機的橋ID。
因為LSW3的橋ID比LSW2的橋ID小,則優先級大,可以確定根端口會在端口G0/0/18或G0/0/15中產生。那么接着就要比較對端交換機的端口ID。
因為LSW3上G0/0/18的端口ID為128.18,G0/0/15的端口ID為128.15,那么G0/0/15的端口ID要小,那么其對應在LSW1的對應端口G0/0/15稱為了根端口。
Step 3:每條鏈路選舉一個指定端口
對於LSW2和LSW1之間的鏈路:由於LSW2距離根橋的根路徑開銷更小,所以LSW2上的G0/0/10和G0/0/12都是指定端口。
對於LSW3和LSW1之間的鏈路:同理可知LSW3上的G0/0/18和G0/0/15都是指定端口
對於LSW2和LSW3之間的鏈路:首先LSW2和LSW3到根橋LSW4的根路徑開銷是相同的,那么就要比較本端交換機上的橋ID,可知LSW3的橋ID更小,所以LSW3上的端口G0/0/10是指定端口。
Step4:將剩余的端口設為預備端口,預備端口被阻塞
剩余的非根端口且非指定端口,即LSW2上的G0/0/6,LSW1的G0/0/6,G0/0/10和G0/0/8這些端口設為預備端口,所有預備端口均被阻塞,不轉發BPDU報文和用戶流量。
驗證:端口角色之間選舉完成,如拓撲圖中給出。結果可以登錄進交換機進行查證
ROOT:根端口 DESI:指定端口 ALTE:預備端口
LSW1:

LSW2:

LSW3:

LSW4:
Tips:生成樹協議在交換機上一般是默認開啟的,不經人工干預即可正常工作。但這種自動生成的方案可能導致數據傳輸的路徑並非最優化。因此,可以通過人工設置的方法影響生成樹的生成結果。具體的設置方法將會在之后給出。
端口狀態切換

1、端口初始化或使能;
2、端口被選為根端口或指定端口。
3、端口不再是根端口或指定端口。
4、forward delay計時器超時。
5、端口禁用或鏈路失效。
完全收斂時間為30秒
圖中所示為STP的端口狀態遷移機制,運行STP協議的設備上端口狀態有5種:
Forwarding:轉發狀態。端口既可轉發用戶流量也可轉發BPDU報文,只有根端口或指定端口才能進入Forwarding狀態。
Learning:學習狀態。端口可根據收到的用戶流量構建MAC地址表,但不轉發用戶流量。增加Learning狀態是為了防止臨時環路。
Listening:偵聽狀態。端口可以轉發BPDU報文,但不能轉發用戶流量。
Blocking:阻塞狀態。端口僅僅能接收並處理BPDU,不能轉發BPDU,也不能轉發用戶流量。此狀態是預備端口的最終狀態。
Disabled:禁用狀態。端口既不處理和轉發BPDU報文,也不轉發用戶流量。
參考鏈接:
https://blog.csdn.net/weixin_42859280/article/details/83114161
https://blog.csdn.net/zainwei1766/article/details/41707447
STP協議筆記匯總:
STP生成樹協議筆記之(一) : 背景和原理
https://www.cnblogs.com/zylSec/p/14615481.html
STP生成樹協議筆記之(二) : 端口角色選舉STP
https://www.cnblogs.com/zylSec/p/14618328.html
STP生成樹協議筆記之(三) : 協議報文的抓包解析
https://www.cnblogs.com/zylSec/p/14627690.html
STP生成樹協議筆記之(四) : 協議基礎配置
https://www.cnblogs.com/zylSec/p/14628274.html
