Skip to content

0. 课件来源

STP 最大的缺陷是 切换慢(30''~50'')。RSTP(802.1W)通过 预角色、简化状态、主动协商(P/A) 将切换降到 0 秒。本节深入讲解 RSTP 为何能"秒切"。


1. RSTP 为什么能快速切换

切换类型STPRSTP
物理接口 down-up30 秒秒切(EP)
直连链路切换30 秒秒切(AP→RP)
非直连链路切换50 秒秒切(P/A 机制)

RSTP 快速切换的三根支柱:

  1. 端口角色提前计算好 —— 阻塞端口已有明确备份角色,故障时直接接管
  2. 端口状态简化 —— 3 态取代 5 态
  3. 主动协商 —— 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 大特点

  1. 跳过 Discarding 和 Learning,直接转发
  2. 一旦收到 BPDU,失去 EP 功能,变成普通 STP 端口
  3. EP 接口 不受同步(Sync)影响
  4. EP 接口 不触发 TC
  5. EP 接口 不转发 TC
  6. EP 接口 不受 TC 影响

⚠️ 最佳实践

企业网中 连接终端的接口务必配置 EP。否则:

  • 终端开机要走 30 秒 Listening+Learning
  • 终端插拔会触发 TC,导致全网 MAC 表频繁刷新
text
interface g0/0/1
 stp edged-port enable

4. 端口状态(3 态 vs 5 态)

STP(5 态)RSTP(3 态)
DisableDiscarding
BlockingDiscarding
Listening(15秒)Discarding
Learning(15秒)Learning(15秒)
ForwardingForwarding

RSTP 将 Disable/Blocking/Listening 合并为 Discarding,状态会写入 BPDU Flag 的 2 bit。

text
flag 中状态位:
  11 -- forwarding
  01 -- learning
  00 -- discarding

RSTP 快速切换 前提:链路必须是 P2P(点对点)

类型判定切换效果
P2P全双工(Full-duplex,auto 默认)秒切(P/A)
Non-P2P半双工(Half-duplex)30 秒正常切换
text
# 手工强制
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 发送方式

对比项STPRSTP
配置 BPDU只有根产生,其他人转发不用配置 BPDU
BPDU 类型配置(00) / TCN(80)RSTP/MSTP BPDU(Type=02)
谁能产生只有根每台交换机都能产生
Max-Age20 秒无 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 字节)

BitSTPRSTP
bit7TCATCA(存在但不置位)
bit6-1端口角色 + P/A 控制
bit0TCTC

RSTP Flag 新增字段:

text
角色位(2 bit):
  11 -- DP
  10 -- RP
  00 -- 未知
  01 -- AP/BP
状态位(2 bit):
  11 -- forwarding
  01 -- learning
  00 -- discarding
P/A 控制位:
  Proposal / Agreement

8. P/A 机制(Proposal / Agreement)

P/A 机制是 RSTP 非直连链路快速切换 的核心:通过主动协商,避免 30/50 秒等待。

8.1 切过去(RP 故障)

text
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 选路:

text
1. 我是最优 → DP
2. 我不是最优 → 选 RP(本交换机上我最优)
3. 本交换机我也不是最优 → AP/BP

10. RSTP 拓扑变更机制(TCM)

对比项STPRSTP
TCN一类 BPDU(Type=80)不再用 TCN
TCA配置 BPDU FlagFlag 存在但不置位
TC配置 BPDU FlagRSTP/MSTP BPDU

💡 RSTP TCM 触发更严格

STP 中端口 down/up 都触发 TC。RSTP 中只有 非 EP 接口从非转发进入转发 才触发 TC。EP 不触发、不转发、不受 TC 影响 —— 进一步减少全网 MAC 表抖动。


11. STP vs RSTP 总结

维度STPRSTP
标准802.1D802.1W
状态5 态3 态
角色3(DP/RP/阻塞)5(DP/RP/AP/BP/EP)
BPDU配置 BPDU,只有根产生每台都能产生
切换被动等 30''/50''主动协商秒切
负载不支持不支持(需 MSTP)

12. 易混淆点与考前速记

对比项结论
AP vs BPAP 收对端更优 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 条

  1. RSTP 5 角色:DP / RP / AP / BP / EP
  2. 3 状态:Discarding / Learning / Forwarding
  3. EP 跳过 30 秒直接转发,企业网终端接口必配 EP
  4. 全双工 = P2P;半双工 = Non-P2P
  5. 每台交换机都能产生 BPDU,无 Max-Age,用 Hold Timer
  6. P/A 主动协商实现秒切;STP 被动等
  7. Sync 同步防瞬时环路,EP 不受 Sync 影响
  8. RSTP TCN 仅非 EP 从非转发转转发才触发,比 STP 更严格

🤖 AI 伴学

想用通俗类比理解 RSTP 为何"秒切"?可以让 AI 用「消防队预备役 vs STP 临时招募」做类比:

"请用'消防员的预备役机制'类比解释 RSTP 为什么比 STP 快:AP 就像是随时待命的预备役消防员,故障发生时立即顶上;而 STP 则是出事后才临时招募训练。再说明 P/A 机制如何像'消防队之间提前约定好支援协议'一样避免临时等待。"

真人撰写written by human