MSTP 延续了 RSTP(Rapid Spanning Tree Protocol)中的 Proposal/Agreement(P/A)机制 。在传统的 STP (802.1D) 中,收敛高度依赖定时器(如 30 秒的 Forwarding Delay),而 P/A 机制通过一种“握手”协商,实现了毫秒级的自主收敛。
以下是基于 IEEE 802.1Q 标准及华为相关技术文档深度解析的收敛过程:
1. Proposal/Agreement 机制的具体收敛步骤
假设两台交换机 S1 和 S2 刚连接,且 S1 的优先级高于 S2(S1 将成为指定桥)。
- 阶段一:初始化与提议(Proposal) 连接建立后,两端接口均处于 Blocking 状态。此时,S1 认为自己是根桥,向 S2 发送一个 BPDU ,其中 Proposal 标志位置 1,端口角色设为 Designated Port (DP) 。
- 阶段二:同步确认(Sync)
S2 收到该 BPDU 后,发现 S1 的优先级更高,确认 S1 为上游邻居。
- 关键动作: S2 立即进入 Sync(同步)状态 。为了防止临时环路,S2 会 阻塞其所有的非边缘指定端口(Non-edge DP) 。
- 此时,S2 的下游链路被切断,确保了在 S1-S2 链路转变为 Forwarding 时,全网拓扑依然是无环的树状结构。
- 阶段三:应答(Agreement) 一旦 S2 完成了本地端口的同步(阻塞),它会向 S1 回复一个 Agreement 标志位置 1 的 BPDU。同时,S2 将连接 S1 的端口(RP)直接切换至 Forwarding 状态。
- 阶段四:完成握手 S1 收到该 Agreement 包后,得知下游已经准备好且无环,于是立即将自己的指定端口(DP)切换至 Forwarding 状态。
2. 技术细节:为什么 MSTP 比 STP 效率高?
MSTP/RSTP 效率的飞跃主要源于**从“被动等待”到“主动协商”**的思想转变:
A. 消除 Forwarding Delay
- STP: 端口必须经历
Listening -> Learning -> Forwarding,每个阶段耗时 15 秒,合计 30 秒。这是为了等待 BPDU 传遍全网以确保无环。 - MSTP: 只要下游交换机确认完成了“同步”(即阻塞了可能产生环路的其他端口),上游就可以立即进入转发状态。这种握手通常在几十毫秒内完成。
B. 拓扑变化的反馈机制
- STP: 发现拓扑变化后,需先向根桥发送 TCN BPDU,由根桥下发 TC 标志位来刷新 MAC 地址表。
- MSTP: 任何非边缘端口进入 Forwarding 状态都会直接触发拓扑变化处理(TC While Timer),立即通知邻居泛洪 BPDU 刷新地址表,收敛速度呈指数级提升。
C. 基于多实例的负载分担
- STP: 所有 VLAN 共用一棵生成树,导致链路利用率低。
- MSTP: 真正的优势在于将 VLAN 映射到不同的 MSTI(Multiple Spanning Tree Instance) 。每个实例拥有独立的 P/A 状态机,这意味着你可以让 VLAN 10 在链路 A 转发,VLAN 20 在链路 B 转发,在保证快速收敛的同时实现了流量均衡。
3. 专家深度提示:P/A 的触发条件
请注意,P/A 机制能够触发的前提是: 链路必须是点对点(Point-to-Point)全双工模式 。如果在共享式介质(半双工)上,MSTP 将退化为 STP 的定时器模式,因为无法保证握手只在两个唯一的设备间进行。