STP 状态与收敛机制详解
STP 协议通过端口状态机来控制环路的产生和解除。理解端口状态和计时器是排查生成树故障、优化网络收敛速度的关键。
1. 端口状态机 (Port State Machine)
传统的 IEEE 802.1D STP 定义了 5 种端口状态。端口从初始化到转发数据,必须经历一系列状态转换,以防止临时环路的产生。
Disabled
端口启用 (Up)
Blocking
被选为 RP/DP
Listening
Forward Delay (15s)
Learning
Forward Delay (15s)
Forwarding
状态详解表
| 状态 | 英文 | 描述 | 发送 BPDU | 接收 BPDU | 学习 MAC | 转发数据 | 典型停留时间 |
|---|---|---|---|---|---|---|---|
| 禁用 | Disabled | 端口物理 Down 或被管理员 shutdown | ❌ | ❌ | ❌ | ❌ | - |
| 阻塞 | Blocking | 防止环路的初始状态,只听不说 | ❌ | ✅ | ❌ | ❌ | Max Age (20s) |
| 侦听 | Listening | 正在选举 RP/DP,准备构建生成树 | ✅ | ✅ | ❌ | ❌ | Forward Delay (15s) |
| 学习 | Learning | 准备转发,开始构建 MAC 地址表 | ✅ | ✅ | ✅ | ❌ | Forward Delay (15s) |
| 转发 | Forwarding | 端口正常工作,参与数据转发 | ✅ | ✅ | ✅ | ✅ | - |
RSTP (802.1w) 的改进:将 Disabled, Blocking, Listening 合并为 Discarding 状态,简化了状态机。
2. 关键计时器 (STP Timers)
STP 的稳定性依赖于三个核心计时器。这些参数由根桥 (Root Bridge) 决定,并通过 BPDU 通告给全网非根交换机。
| 计时器 | 默认值 | 描述 | 作用 |
|---|---|---|---|
| Hello Time | 2 秒 | 根桥发送配置 BPDU 的间隔 | 维持生成树的存活检测。 |
| Max Age | 20 秒 | BPDU 的最大生存时间 | 如果端口 20s 内没收到 BPDU,认为上游故障,重新计算 STP。 |
| Forward Delay | 15 秒 | 状态切换延迟 | Listening -> Learning 和 Learning -> Forwarding 的停留时间。 |
为什么需要 Forward Delay (15s * 2 = 30s)?
在网络拓扑发生变化时,BPDU 传播到全网需要时间。如果不等待就直接转发,不同交换机对拓扑的认知可能不一致,从而导致临时环路。 STP 强制端口等待 2 倍的 Forward Delay (30s),确保全网拓扑已经稳定,才允许转发数据。
3. 故障收敛场景 (Convergence)
3.1 直连链路故障 (Direct Link Failure)
当交换机检测到自己的 RP 端口物理 Down(例如网线被拔掉):
- 交换机立即知道根路径失效。
- 如果存在备份端口 (AP/Blocking),它会立即尝试切换为 RP。
- 备份端口进入 Listening -> Learning -> Forwarding。
- 收敛时间:约 30 秒 (2 * Forward Delay)。
3.2 非直连链路故障 (Indirect Link Failure)
当上游交换机故障,但本端交换机物理链路没有 Down(例如中间经过了 Hub 或光电转换器):
- 本端交换机收不到根桥的 BPDU,但端口状态仍为 Up。
- 本端交换机等待旧的 BPDU 老化 (Max Age = 20s)。
- 老化后,重新选举,端口从 Blocking 进入 Listening -> Learning -> Forwarding (30s)。
- 收敛时间:20s + 30s = 50 秒。
4. 拓扑变更机制 (Topology Change)
当网络拓扑发生变化(如端口 Up/Down)时,MAC 地址表中的旧条目可能会导致数据无法送达.STP 设计了 TCN 机制来加速 MAC 地址表的老化。
4.1 TCN 交互流程
变更点 SW
上游 SW
根桥 Root
感知到拓扑变化 (Port Up/Down)
收到 TCN
收到 TCN
全网感知拓扑变更
4.2 MAC 地址表刷新
收到 TC 置位 BPDU 的交换机,会将 MAC 地址表的老化时间(Aging Time)从默认的 300 秒 缩短为 15 秒 (Forward Delay)。
- 效果:长时间未通信的 MAC 条目被快速清除,交换机重新广播学习新的 MAC 地址位置,从而恢复连通性。