在华为设备中,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 NameRevision LevelConfiguration Digest (VLAN 映射表的 MD5 摘要) 以及多个 MSTI(多生成树实例) 的信息。
  • 特点: 前 36 字节与 RSTP 报文格式完全兼容,但在后面“挂载”了实例信息。

2. 互通时的退化机制

华为设备默认为 MSTP 模式,但为了实现“向后兼容”,它采用了一种基于端口感知的自动切换机制。

退化逻辑:由高向低看齐

  1. MSTP 遇见 RSTP
  • MSTP 交换机在接口收到 RSTP BPDU 后,该接口会自动切换到 RSTP 模式
  • MSTP 的 MSTI 信息会被忽略,只保留 CIST(公共和内部生成树) 参与计算。
  1. 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 映射的一致性。