0. 课件来源
STP 最大的缺陷是 切换慢(30''~50'')。RSTP(802.1W)通过 预角色、简化状态、主动协商(P/A) 将切换降到 0 秒。本节深入讲解 RSTP 为何能"秒切"。
1. RSTP 为什么能快速切换
| 切换类型 | STP | RSTP |
|---|---|---|
| 物理接口 down-up | 30 秒 | 秒切(EP) |
| 直连链路切换 | 30 秒 | 秒切(AP→RP) |
| 非直连链路切换 | 50 秒 | 秒切(P/A 机制) |
RSTP 快速切换的三根支柱:
- 端口角色提前计算好 —— 阻塞端口已有明确备份角色,故障时直接接管
- 端口状态简化 —— 3 态取代 5 态
- 主动协商 —— P/A 机制取代被动等待计时器
2. RSTP 端口角色(5 种)
| 角色 | 简称 | 数据 | BPDU | 本质 |
|---|---|---|---|---|
| Designated(指定端口) | DP | 收发 | 发 | 我最优 |
| Root(根端口) | RP | 收发 | 收 | 本交换机到根最优 |
| Alternate(替换端口) | AP | 阻塞 | 收 | 收到 对端 更优质 BPDU,用于代替 RP |
| Backup(备份端口) | BP | 阻塞 | 收 | 收到 本端 更优质 BPDU,用于备份 DP |
| Edge(边缘端口) | EP | 转发 | — | 直连终端,不参与环路 |
💡 AP vs BP
- AP:端口收到 对端交换机 发来的更优 BPDU,被阻塞,作为 RP 的备份。
- BP:端口收到 本交换机 自己产生的更优 BPDU(同一交换机两端口自环/HUB 场景),被阻塞,作为 DP 的备份。
3. 边缘端口(Edge Port)
EP 直连终端,不会形成环路,无需等待 30 秒,可直接转发。
EP 的 6 大特点:
- 跳过 Discarding 和 Learning,直接转发
- 一旦收到 BPDU,失去 EP 功能,变成普通 STP 端口
- EP 接口 不受同步(Sync)影响
- EP 接口 不触发 TC
- EP 接口 不转发 TC
- EP 接口 不受 TC 影响
⚠️ 最佳实践
企业网中 连接终端的接口务必配置 EP。否则:
- 终端开机要走 30 秒 Listening+Learning
- 终端插拔会触发 TC,导致全网 MAC 表频繁刷新
interface g0/0/1
stp edged-port enable4. 端口状态(3 态 vs 5 态)
| STP(5 态) | RSTP(3 态) |
|---|---|
| Disable | Discarding |
| Blocking | Discarding |
| Listening(15秒) | Discarding |
| Learning(15秒) | Learning(15秒) |
| Forwarding | Forwarding |
RSTP 将 Disable/Blocking/Listening 合并为 Discarding,状态会写入 BPDU Flag 的 2 bit。
flag 中状态位:
11 -- forwarding
01 -- learning
00 -- discarding5. 链路类型(Link-Type)
RSTP 快速切换 前提:链路必须是 P2P(点对点)。
| 类型 | 判定 | 切换效果 |
|---|---|---|
| P2P | 全双工(Full-duplex,auto 默认) | 秒切(P/A) |
| Non-P2P | 半双工(Half-duplex) | 30 秒正常切换 |
# 手工强制
interface g0/0/1
stp point-to-point force true # 强制 p2p
stp point-to-point force false # 强制 non-p2p💡 为什么要区分 P2P
P/A 协商需要"我提出 proposal,对端明确回复 agreement"那么快速切换。Non-P2P(如接 HUB)下不止一个邻居,无法明确回应 agreement,只能走 30 秒正常切换防止环路。
6. BPDU 发送方式
| 对比项 | STP | RSTP |
|---|---|---|
| 配置 BPDU | 只有根产生,其他人转发 | 不用配置 BPDU |
| BPDU 类型 | 配置(00) / TCN(80) | RSTP/MSTP BPDU(Type=02) |
| 谁能产生 | 只有根 | 每台交换机都能产生 |
| Max-Age | 20 秒 | 无 Max-Age,用 Hold Timer |
| Hold Timer | — | 标准 3*hello;华为 timer-factor(3)*3*hello = 18 秒 |
⚠️ 关键差异
STP 中"配置 BPDU 只有根产生"导致:拓扑局限 7 层、被动等待 Max-Age。RSTP 中每台交换机都能产生 BPDU,无需被动等,从而实现快速收敛。
7. RSTP BPDU Flag(1 字节)
| Bit | STP | RSTP |
|---|---|---|
| bit7 | TCA | TCA(存在但不置位) |
| bit6-1 | — | 端口角色 + P/A 控制 |
| bit0 | TC | TC |
RSTP Flag 新增字段:
角色位(2 bit):
11 -- DP
10 -- RP
00 -- 未知
01 -- AP/BP
状态位(2 bit):
11 -- forwarding
01 -- learning
00 -- discarding
P/A 控制位:
Proposal / Agreement8. P/A 机制(Proposal / Agreement)
P/A 机制是 RSTP 非直连链路快速切换 的核心:通过主动协商,避免 30/50 秒等待。
8.1 切过去(RP 故障)
1. 上游 DP 向下游发 Proposal BPDU(DP 角色置位,状态=discarding)
2. 下游收到后执行"同步 Sync"
→ 除 AP/BP/EP 外,其他所有接口置为 DP discarding(防止瞬时环路)
3. 下游同步完成,向上游回 Agreement BPDU(A=1)
4. 上游收到 A=1 → 立即 Forwarding → 秒切8.2 切回来(故障恢复)
同样通过 P/A 协商反向同步,秒级恢复。
⚠️ 同步(Sync)的本质
P/A 快速切换可能造成瞬时环路,所以引入 同步机制:拓扑变化时,除 AP/BP/EP 外其他接口 全部临时置为 DP discarding,等对端回 Agreement 才放行。
正是为了不误伤终端接口,EP 不受同步影响 —— 这是终端接口务必配置 EP 的另一原因。
8.3 何时不能 P/A
- 链路为 Non-P2P(半双工):不回应 A=1 → 走 30 秒正常切换
DP → AP/BP/终端:下游本就是阻塞,无需 P/A
9. 端口角色确定逻辑
RSTP 中端口角色取决于 BPDU 选路:
1. 我是最优 → DP
2. 我不是最优 → 选 RP(本交换机上我最优)
3. 本交换机我也不是最优 → AP/BP10. RSTP 拓扑变更机制(TCM)
| 对比项 | STP | RSTP |
|---|---|---|
| TCN | 一类 BPDU(Type=80) | 不再用 TCN |
| TCA | 配置 BPDU Flag | Flag 存在但不置位 |
| TC | 配置 BPDU Flag | RSTP/MSTP BPDU |
💡 RSTP TCM 触发更严格
STP 中端口 down/up 都触发 TC。RSTP 中只有 非 EP 接口从非转发进入转发 才触发 TC。EP 不触发、不转发、不受 TC 影响 —— 进一步减少全网 MAC 表抖动。
11. STP vs RSTP 总结
| 维度 | STP | RSTP |
|---|---|---|
| 标准 | 802.1D | 802.1W |
| 状态 | 5 态 | 3 态 |
| 角色 | 3(DP/RP/阻塞) | 5(DP/RP/AP/BP/EP) |
| BPDU | 配置 BPDU,只有根产生 | 每台都能产生 |
| 切换 | 被动等 30''/50'' | 主动协商秒切 |
| 负载 | 不支持 | 不支持(需 MSTP) |
12. 易混淆点与考前速记
| 对比项 | 结论 |
|---|---|
| AP vs BP | AP 收对端更优 BPDU(备份 RP);BP 收本端更优 BPDU(备份 DP) |
| EP 6 大特点 | 跳过计算直转 / 收 BPDU 失效 / 不受 Sync 影响 / 不触发 TC / 不转发 TC / 不受 TC 影响 |
| P2P 判定 | 默认 auto 看双工,全双工 P2P/半双工 Non-P2P |
| P/A 前提 | 必须是 P2P,否则走 30 秒正常切换 |
| Sync 作用 | 防瞬时环路,除 AP/BP/EP 外全部临时 discarding |
| TCM 触发 | RSTP 比 STP 更严格,仅非 EP 从非转发转转发才触发 |
考前速记 8 条:
RSTP 5 角色:DP / RP / AP / BP / EP3 状态:Discarding / Learning / ForwardingEP 跳过 30 秒直接转发,企业网终端接口必配 EP全双工 = P2P;半双工 = Non-P2P每台交换机都能产生 BPDU,无 Max-Age,用 Hold TimerP/A 主动协商实现秒切;STP 被动等Sync 同步防瞬时环路,EP 不受 Sync 影响RSTP TCN 仅非 EP 从非转发转转发才触发,比 STP 更严格
🤖 AI 伴学
想用通俗类比理解 RSTP 为何"秒切"?可以让 AI 用「消防队预备役 vs STP 临时招募」做类比:
"请用'消防员的预备役机制'类比解释 RSTP 为什么比 STP 快:AP 就像是随时待命的预备役消防员,故障发生时立即顶上;而 STP 则是出事后才临时招募训练。再说明 P/A 机制如何像'消防队之间提前约定好支援协议'一样避免临时等待。"
