Spanning Tree Protocol 深度解析

從 802.1d (STP) 到 802.1w (RSTP) 的演進之路

講師:ExtremeXOS 網路架構大師

一、核心概念 (Core Concept)

一句話定義

Spanning Tree 是一種二層 (Layer 2) 網路協定,透過邏輯性地「阻塞」備援路徑,將一個含有環路 (Loop) 的實體網路修剪成一個無環路的樹狀邏輯結構,以防止廣播風暴 (Broadcast Storm)。

生活化比喻:公司指揮鏈

想像這是一間大公司。為了避免命令混亂(封包無限迴圈),我們必須選出一位 **CEO (Root Bridge)**。

所有的決策(資料流)雖然有很多傳遞路徑(冗餘線路),但為了效率,我們規定每位經理只能聽從一位直屬上司的指令。那些「備用」的溝通管道(備援線路)平時必須保持安靜(Blocking),只有當直屬上司請假或離職(線路中斷)時,備用管道才會啟用。

二、運作原理 (Mechanism)

1. 角色口訣:RP 找媽媽,DP 顧小孩

Root Port (RP): 每個非 Root 交換機只有一個。這是「通往 Root Bridge 最短路徑」的 Port。就像孩子要找媽媽(Root),只能選一條最近的路。

Designated Port (DP): 每個網段(網線)只有一個。這是負責將來自 Root 的資料「往下傳送」給該網段的 Port。因為 Root Bridge 是源頭,所以 Root Bridge 上的所有 Port 天生就是 DP(離自己最近)。

Blocking Port (BLK): 選輸的 Port。當一個網段兩端的交換機在爭奪誰當 DP 時,條件較差的那一方就會閉嘴(Block),避免迴圈。

2. 封包與控制層面 (BPDU)

  • BPDU (Bridge Protocol Data Unit): 交換機之間的「心跳聲」。每 2 秒發送一次 Hello BPDU。
  • Root Bridge 選舉: 比小不比大。先比 Priority (預設 32768),若相同則比 MAC Address。數值越小者當選 Root。
  • 路徑成本 (Path Cost): 頻寬越大,過路費(Cost)越低。例如 10Gbps 的 Cost 小於 1Gbps。

3. 802.1d vs 802.1w 關鍵差異

特性 802.1d (Legacy STP) 802.1w (RSTP)
連接埠狀態 Blocking, Listening, Learning, Forwarding, Disabled Discarding, Learning, Forwarding
收斂速度 慢 (30 ~ 50 秒) 快 (小於 1 秒, 視拓撲而定)
收斂機制 依賴計時器 (Max Age, Forward Delay) Proposal / Agreement (主動握手)
ExtremeXOS 備註 在 ExtremeXOS 中,我們使用 STPD (Spanning Tree Domain) 來管理。您可以建立多個 STPD 並將 VLAN 對應進去 (類似 MSTP 概念),以實現負載平衡。

三、架構視覺化 (Visuals)

STP 角色選舉拓撲 (Topology)

graph TD Root[Root Bridge
Priority: 4096
MAC: 00:04:96:AA:AA:AA] SW_A[Switch A
Priority: 32768
MAC: 00:04:96:BB:BB:BB] SW_B[Switch B
Priority: 32768
MAC: 00:04:96:CC:CC:CC] Root -- DP (Root 端永遠是 DP) --- SW_A Root -- DP (Root 端永遠是 DP) --- SW_B SW_A -- DP (贏家) --- LinkAB((互連網段)) LinkAB -. BLK (輸家) .- SW_B linkStyle 0 stroke:#10b981,stroke-width:3px; linkStyle 1 stroke:#10b981,stroke-width:3px; linkStyle 2 stroke:#10b981,stroke-width:3px; linkStyle 3 stroke:#ef4444,stroke-width:3px,stroke-dasharray: 5 5;

為什麼 Switch B 會變成 Blocking?(PK 解析)

在 Switch A 與 Switch B 相連的這個網段上,必須選出一個負責傳送資料的 指定埠 (Designated Port, DP)。誰「離 Root 比較近」或「條件比較好」,誰就當 DP,輸的人就 Block。

  1. 第一關 - 比 Root Path Cost (到 Root 的距離):
    假設 A 和 B 直接連到 Root 的線路速度一樣 (Cost 相同)。 -> 平手
  2. 第二關 - 比 Bridge ID (Priority + MAC):
    因為 Priority 都是預設 32768,所以比 MAC Address
    • Switch A MAC: 00:04:96:BB:BB:BB (Extreme OUI)
    • Switch B MAC: 00:04:96:CC:CC:CC (Extreme OUI)
  3. 結果揭曉:
    MAC 位址後段的 BB:BB:BB 小於 CC:CC:CC,所以 Switch A 條件比較好 (視為邏輯上離 Root 較近)。
  4. 最終判決:
    Switch A 的 Port 成為 DP (負責轉發)。
    Switch B 的 Port 選輸了,變成 Blocking (閉嘴待命)。

RSTP 快速收斂機制 (P/A Handshake)

sequenceDiagram participant Root as Root Bridge participant SW_A as Switch A Note over Root, SW_A: 鏈路剛建立 (皆為 Discarding) Root->>SW_A: 發送 Proposal BPDU (我是老大!) Note over SW_A: 收到 Proposal
立即阻塞其他 Port (Sync) SW_A->>Root: 回覆 Agreement BPDU (好的,同意!) Note over Root, SW_A: 鏈路立即轉為 Forwarding (無需等待 30秒)

圖說:RSTP 透過主動的 Proposal/Agreement 握手機制,確認雙方對 Link 的認知一致後,即可立即進入 Forwarding,跳過了傳統 STP 漫長的 Listening 與 Learning 計時器。

四、實務應用場景 (Use Case)

場景:企業園區核心網路備援

某製造業廠區,為了確保產線不中斷,將 **存取層交換機 (Access Switch)** 透過兩條光纖分別上連至 **兩台核心交換機 (Core A & Core B)**。

  • 部署方式: 啟用 RSTP (802.1w)。Core A 設定 Priority 4096 (Root),Core B 設定 Priority 8192 (Secondary Root)。Access Switch 維持預設 32768。
  • 正常運作: Access Switch 到 Core A 的線路 Forwarding,到 Core B 的線路 Blocking。
  • 故障發生: 當 Core A 當機或光纖被挖斷,Access Switch 偵測到 BPDU 遺失,立即將通往 Core B 的線路轉為 Forwarding。
優點 (Pros):
  • 防止單點故障 (Single Point of Failure, SPOF),提高網路可用性。
  • 配置簡單,是所有企業級交換機 (包含 ExtremeXOS) 的標準功能。
  • RSTP 提供了秒級 (Sub-second) 的復原能力,遠優於傳統 STP。
缺點 (Cons):
  • 頻寬利用率低:為了防止環路,備援路徑必須處於 Blocking 狀態,無法同時傳輸流量 (Active-Standby)。
  • 技術演進:現代架構趨勢已轉向使用 MC-LAG (MLAG)Extreme EAPS 環網技術,以實現雙活 (Active-Active) 轉發並消除 STP 的阻塞。

五、隨堂測驗 (Quiz)

Q1. 在 STP Root Bridge 的選舉過程中,判斷順序為何?

A. 先比 MAC Address,再比 Priority
B. 先比 Priority,再比 MAC Address
C. 先比 IP Address,再比 MAC Address

Q2. 下列哪一個狀態「不屬於」RSTP (802.1w),但存在於傳統 STP (802.1d) 中?

A. Forwarding
B. Listening
C. Discarding

Q3. 在 ExtremeXOS 或一般交換機上配置 RSTP Edge Port (或稱 Portfast) 的主要目的是什麼?

A. 讓連接終端設備的 Port 立即進入 Forwarding 狀態
B. 增加 Port 的頻寬
C. 強制該 Port 成為 Root Port

Q4. 當一個 Port 處於 RSTP 的 "Discarding" 狀態時,它會做什麼事?

A. 轉發使用者資料封包,但不學習 MAC
B. 不轉發資料,但會接收並處理 BPDU
C. 完全關閉,不收送任何封包

Q5. 在 ExtremeXOS 中,若要啟用 RSTP,通常會配置在哪個物件上?

A. 直接在 Physical Port 上配置
B. Virtual Router (VR)
C. STPD (Spanning Tree Domain)