在华为设备中,STP、RSTP 与 MSTP 的设计遵循 IEEE 标准,通过 BPDU 报文的版本字段和扩展字段来实现向下兼容。在 HCIE-Datacom 的知识体系中,理解这三者的报文结构差异以及互通时的“退化”逻辑是解决多厂商、跨代设备组网的关键。
1. 报文格式深度差异
三者都封装在 IEEE 802.3 的 LLC 帧中,目的 MAC 地址均为 01-80-C2-00-00-00。差异点主要体现在 BPDU 的内部字段。
STP (802.1D) - 配置 BPDU
- Protocol Version:
0。 - BPDU Type:
0x00(Configuration BPDU) 或0x80(TCN)。 - Flags: 仅使用 2 位(第 0 位 TC,第 7 位 TCA)。
- 特点: 报文仅 35 字节,简单但功能局限,不支持快速收敛握手。
RSTP (802.1w) - RST BPDU
- Protocol Version:
2。 - BPDU Type:
0x02。 - Flags: 8 位全部使能(包括 Proposal, Agreement, Learning, Forwarding 以及端口角色 Role)。
- Version 1 Length: 增加了一个 1 字节的长度字段(通常为 0)。
- 特点: 通过 Flags 位的 P/A 机制实现秒级收敛。
MSTP (802.1s) - MST BPDU
- Protocol Version:
3。 - BPDU Type:
0x02(与 RSTP 相同,表示继承了 RSTP 的快速收敛逻辑)。 - Version 3 Length: 表示 MST 扩展字段的长度。
- MST Extension: 这是核心。包含 Region Name 、 Revision Level 、Configuration Digest (VLAN 映射表的 MD5 摘要) 以及多个 MSTI(多生成树实例) 的信息。
- 特点: 前 36 字节与 RSTP 报文格式完全兼容,但在后面“挂载”了实例信息。
2. 互通时的退化机制
华为设备默认为 MSTP 模式,但为了实现“向后兼容”,它采用了一种基于端口感知的自动切换机制。
退化逻辑:由高向低看齐
- MSTP 遇见 RSTP :
- MSTP 交换机在接口收到 RSTP BPDU 后,该接口会自动切换到 RSTP 模式 。
- MSTP 的 MSTI 信息会被忽略,只保留 CIST(公共和内部生成树) 参与计算。
- RSTP/MSTP 遇见 STP :
- 当运行 RSTP 或 MSTP 的端口收到 STP 配置 BPDU 时,该端口会立即**“退化”为 STP 模式**。
- 后果: 丧失 P/A 快速收敛机制,接口状态迁移需等待标准的
Forward Delay(默认 15s+15s),收敛速度大幅下降。
关键机制:MCheck (Mode Check)
退化是自动的,但恢复通常是手动的。
- 现象: 如果你把一台 STP 交换机从现网移除,换成 RSTP 交换机,之前退化为 STP 模式的端口不会自动恢复到 RSTP 模式。
- 命令:
stp mcheck。在华为设备上,你需要手动在接口执行此命令,强制端口重新探测对端的协议版本,以尝试升级回更高级的模式。
3. 技术原理要点总结
- 版本识别: 交换机是通过 BPDU 中的
Protocol Version Identifier字段来判断对端身份的。 - MSTP 的“两面性”: MSTP 报文前半部分模拟 RSTP,这使得 RSTP 交换机能将其识别为“邻居”,但 RSTP 交换机无法解析 MST 扩展字段,因此只能把整个 MSTP 域看作一个巨大的交换机。
- 华为特性: 华为设备支持
stp config-digest-snoop。在与非华为设备(如 Cisco)对接 MSTP 时,如果双方因 MD5 摘要算法不一致导致无法互通,该特性可以忽略摘要差异,强制达成 Instance 映射的一致性。