STP生成樹:
STP將環形網絡修剪成爲一個無環的樹形網絡,避免報文在環形網絡中的增生和無線循環,主要爲二層環形網絡。採用生成樹(spanning-tree)協議,能夠在網絡中存在二層環路時,通過阻塞(block)特定端口從而打破環路,並且在網絡出現拓撲更新時及時收斂,以保證網絡的冗餘性。
環路帶來的問題
- 廣播風暴
網絡中如若存在二層環路,一旦出現廣播數據幀,這些數據幀將被交換機不斷進行洪泛,從而造成廣播風暴。
- MAC表的紊亂
頻繁更新MAC地址表
若出現故障時:
採用生成樹協議,能夠在網絡中存在二層環路時,通過阻塞特定端口從而打破環路,並且在網絡出現拓撲更新時及時收斂,以保證網絡的冗餘性。
基本概念和術語:
根橋:每個廣播域選擇一個根橋,橋ID最小的,整個網絡的邏輯中心。
根端口(RP):去往根橋路徑最近的端口。負責向根橋方向轉發數據,同時負責接收上游設備的BPDU報文和用戶流量轉發。
指定端口(DP):指定端口是向下遊交換設備轉發BPDU報文的端口
非指定端口(AP):阻塞端口,當STP啓用後非指定端口爲阻塞狀態。當鏈路發生變化時,該非指定端口轉化爲指定端口
橋ID:八個字節:兩個字節的優先級和六個字節的MAC地址構成,默認32768(修改時以4096爲倍數修改),橋ID最小的爲根橋。
Path cost:路徑開銷,根設備的端口的路徑開銷都爲0,在一個STP/RSTP網絡中,某端口到根橋累計的路徑開銷就是所經過的各端口的開銷。
帶寬 | 802.1t | 802.1d |
10Mbps | 2000000 | 100 |
100Mbps | 200000 | 19 |
1000Mbps | 20000 | 4 |
10000Mbps | 2000 | 2 |
Port ID:端口ID=端口優先級(1字節)+端口編號(1字節),缺省優先級128,範圍0-255,越小越優。
STP端口狀態:
端口狀態 |
端口能力 |
Disabled |
不收發任何報文 |
Blocking(阻塞) |
不接收或者轉發數據,接受但不發送BPDU,不進行地址學習 |
Listening |
不接收或者轉發數據,接受併發送BPDU,不進行地址學習 |
Learning |
不接收或者轉發數據,接受併發送BPDU,開始進行地址學習 |
Forwarding |
接收或者轉發數據,接受併發送BPDU,進行地址學習 |
端口狀態的轉化:
BPDU:網橋協議數據單元
從根橋發出,非根橋爲從根端口收到從指定端口發出(中繼)
BPDU報文:
佔用字節 | 內容 | 意義 |
2 | Protocol ID | 協議ID |
1 | version | 協議版本標識符 STP爲0,RSTP爲2,MSTP爲3 |
1 | message type | BPDU消息類型 |
1 | flags | 標籤 |
8 | root ID | 根ID,網橋優先級+MAC地址 |
4 | cost of path | 路徑開銷,標識本交換機距離根的距離 |
8 | bridge ID | 發送者的BID |
2 | port ID | 發送端口PID |
2 | message age | 消息時間,最大300s,在啓用portfast後變爲15s |
2 | max age | 20s,最大生存時間 |
2 | hellotime | hello時間,默認爲2s |
2 | forward delay | 轉發延時,最大15s |
端口選舉:
比較次序:root identifier>root path cost>bridge identifier>port identifier 值越小越優
根橋選舉
- 比較BID即可,BID由兩部分組成:兩個字節的優先級和六個字節的MAC地址。
- 比較時,先比較優先級,優先級越小越優。若優先級一樣,比較MAC地址,MAC地址越小越優。
指定端口選舉
- 比較root ID,越小越優。
- 若相同比較cost of path,越小越優。
- 以上相同,比較BID。
- 以上相同,比較PID。
發生故障(拓撲變更):
發生故障處的交換機向上遊交換機發送TCN BPDU報文,報告鏈路發生故障,上游路由器回覆TCN ACK報文表示收到。
根橋收到TCN BPDU報文後,向下泛洪。
其他交換機收到TC標誌位置爲後,將CAM表老化時間降爲15s。