第18篇:RSTP 快速生成树——边缘端口与 P/A 机制
一、写在前面
前两篇我们学了 STP(802.1D),它有一个致命缺陷——收敛太慢。
- 端口从 Up 到 Forwarding:50 秒
- 链路故障切换:30~50 秒
- 对于现代网络,断网 50 秒就足够让业务投诉爆炸了
RSTP(Rapid Spanning Tree Protocol,802.1w) 就是来解决这个问题的。它把收敛时间从 50 秒缩短到 1 秒以内(某些场景甚至 <1 秒)。
二、RSTP 的核心改进
| 对比项 | STP(802.1D) | RSTP(802.1w) |
|---|---|---|
| 端口状态 | 5 种 | 3 种 |
| 端口角色 | 3 种 | 4 种 |
| 收敛速度 | 30~50 秒 | 1~3 秒(典型) |
| 拓扑变更机制 | 靠计时器等待 | 主动协商(P/A 机制) |
| 边缘端口 | 无专门概念 | 有(edged-port) |
三、RSTP 的 3 种端口状态
RSTP 把 STP 的 5 种状态简化为 3 种:
| RSTP 状态 | 对应 STP 状态 | 是否转发数据 | 是否学习 MAC |
|---|---|---|---|
| Discarding | Disabled / Blocking / Listening | ❌ | ❌ |
| Learning | Learning | ❌ | ✅ |
| Forwarding | Forwarding | ✅ | ✅ |
丢弃态(Discarding) 合并了 STP 的 3 种非转发状态,不再区分 Disabled、Blocking、Listening。
四、RSTP 的 4 种端口角色
| 角色 | 说明 | STP 有吗? |
|---|---|---|
| Root Port(根端口) | 到根桥最近的端口 | ✅ 有 |
| Designated Port(指定端口) | 每条链路上离根桥最近的端口 | ✅ 有 |
| Alternate Port(替代端口) | 根端口的备份 | ✅ 有(原 Blocking) |
| Backup Port(备份端口) | 指定端口的备份 | ❌ 新增 |
Alternate Port vs Backup Port:
Alternate(替代):
SW1 ── RootPort ── SW2
└── Alternate ← 另一条到 SW2 的线,根端口出问题后顶上
Backup(备份):
SW1 ── Designated ── SW2
└── Backup ← 同一个交换机上到同一个网段另一条线
五、RSTP 提速的核心——P/A 机制
5.1 P/A = Proposal / Agreement(提议/同意)
这是 RSTP 比 STP 快几十倍的核心原因。
5.2 P/A 流程
【场景】新链路建立,两端快速协商
交换机 A 交换机 B
│ │
│ --- Proposal (提议) ---> │
│ 提议让自己成为指定端口 │
│ │
│ A 将自己的非边缘端口置为 │
│ Discarding(临时阻塞) │
│ │
│ <--- Agreement (同意) --- │
│ 同意 A 为指定端口 │
│ │
│ A 立即进入 Forwarding │
│ B 知道自己只能做根端口 │
│ 进入 Forwarding │
│ │
│ 总计:约 1~3 秒 │
│ 对比 STP:50 秒 │
5.3 P/A 成功的前提
P/A 机制能加速的条件是:
- 链路是点对点(P2P) — 交换机之间直接连接
- 两端端口都是全双工模式 — 半双工不行
- 两端都运行 RSTP
如果不满足这些条件,RSTP 会回退到 STP 的等待计时器方式(30~50 秒)。
六、边缘端口(Edge Port)
6.1 什么是边缘端口
边缘端口是连接终端设备(PC、服务器、打印机)的端口。
RSTP 对边缘端口的特殊处理:
| 特性 | STP | RSTP |
|---|---|---|
| 边缘端口接 PC | 也要 30 秒才能转发 | 立即进入 Forwarding |
| 收到 BPDU 后 | 无特殊处理 | 失去边缘属性,变为普通端口 |
# 配置边缘端口
[SW1-GigabitEthernet0/0/1] stp edged-port enable
# 查看
[SW1] display stp interface gigabitethernet 0/0/1
Port Edged : Enable ← 边缘端口
6.2 边缘端口的意义
PC 开机 → 网卡 UP → 交换机端口 UP
│
如果是 STP:等待 50 秒才能上网
如果是 RSTP + 边缘端口:立即可以通信
│
用户感知:
STP:"我插了网线等了一分钟才通"
RSTP:"插上就能用"
七、RSTP 链路故障切换
7.1 根端口故障
正常状态:
SW1 的根端口在 Port A(Forwarding)
SW1 的 Alternate 端口在 Port B(Discarding)
Port A 故障:
1. SW1 检测到 Port A 链路 Down(硬件检测,毫秒级)
2. 立即将 Port B 从 Discarding → Forwarding
3. 切换时间:~0.5 秒
对比 STP:STP 需要等 Max Age(20 秒)→ Listening(15 秒)→ Learning(15 秒)= 50 秒。RSTP 不用等!
7.2 指定端口故障
SW1 的 Designated Port 故障
→ 对端连接该端口的交换机检测到
→ 其 Backup 或 Alternate 端口立即接管
→ 秒级切换
八、RSTP 拓扑变更机制
STP 的拓扑变更(TC)靠计时器慢慢传,RSTP 做了优化:
| 对比 | STP | RSTP |
|---|---|---|
| TC 通知方式 | 逐跳转发,延迟大 | 从根桥直接泛洪 |
| MAC 表刷新 | 等待 Forward Delay | 收到 TC 立即清除 |
RSTP 的 TC 处理:
1. 检测到拓扑变化的交换机
2. 向所有端口泛洪 TC 置位的 BPDU
3. 收到 TC BPDU 的交换机立即清除 MAC 表中非边缘端口条目
4. 快速适应新拓扑
九、配置命令
# 全局启用 RSTP
[SW1] stp mode rstp
# 配置边缘端口
[SW1-GigabitEthernet0/0/1] stp edged-port enable
# 配置端口为点对点链路(一般自动检测,全双工自动为 P2P)
[SW1-GigabitEthernet0/0/1] stp point-to-point force-true
# 配置优先级
[SW1] stp priority 4096 ← 想让这台成为根桥
# 查看 RSTP 状态
[SW1] display stp brief
Bridge ID : 32768.00e0-fc12-3456
Root Bridge : 4096.00e0-fc00-0001
STP Mode : RSTP ← 确认是 RSTP
Port Role State Cost
GigabitEthernet0/0/1 DESI FORWARDING 4
GigabitEthernet0/0/2 ROOT FORWARDING 4
GigabitEthernet0/0/3 ALTE DISCARDING 4 ← RSTP 用 Discarding
十、STP vs RSTP 总结
| 特性 | STP | RSTP |
|---|---|---|
| 标准 | 802.1D | 802.1w |
| 收敛时间 | 30~50 秒 | 1~3 秒(多数场景) |
| 端口状态 | 5 种(Disable/Blocking/Listening/Learning/Forwarding) | 3 种(Discarding/Learning/Forwarding) |
| 端口角色 | 3 种(Root/Designated/Blocking) | 4 种(Root/Designated/Alternate/Backup) |
| 协商方式 | 被动等待计时器 | 主动 P/A 提议/同意 |
| 边缘端口 | 无 | 有,可立即转发 |
| 链路故障检测 | 等待 BPDU 超时(20s) | 硬件检测 + BPDU 超时 |
| 拓扑变更 | 逐跳,慢 | 根桥泛洪,快 |
| 向后兼容 | — | 兼容 STP(有 STP 设备时回退) |
十一、思考
- RSTP 把 STP 的 5 种端口状态合并成了几种?是哪几种?
- P/A 机制的核心思想是什么?为什么能让收敛快几十倍?
- 边缘端口有什么作用?为什么 PC 接 RSTP 交换机能"插上就用"?
- RSTP 的收敛时间一般是多久?在什么情况下会回退到 STP 的收敛速度?
- Alternate Port 和 Backup Port 有什么区别?各在什么场景下出现?
- 企业网络中有几台老旧交换机只支持 STP,接了一台新交换机支持 RSTP,RSTP 会怎么处理?
下篇预告:第19篇《MSTP多实例生成树_VLAN与实例的映射》——学习MSTP多实例生成树的原理和VLAN与实例的映射配置。