ENSP Pro Lab笔记:配置STP/RSTP/MSTP(8)

6、MSTP 与 STP/RSTP 的互通

本文的测试环境中,CIST总根位于MSTP域RZ1内,CIST总根位于MSTP域外的情况也是类似的。

6.1 测试拓扑

在这里插入图片描述

在之前MSTP配置基础上,将DeviceE分别配置为STP和RSTP模式即可。
DeviceE配置:

stp mode stp
或者:
stp mode rstp

6.2 MSTP 与 STP/RSTP 的互通机制

这里重点解释了 CST(公共生成树)如何作为连接 MSTP 域和传统 STP/RSTP 网络的纽带,以及“伪网桥”模型的具体行为特征。

在实际网络部署中,MSTP 往往需要与不支持多实例的传统设备(运行 IEEE 802.1D STP 或 IEEE 802.1w RSTP)进行对接。MSTP 通过 CST(公共生成树)伪网桥(Pseudo-bridge) 模型实现了这种向后兼容性。

6.2.1 CST:互通的“最大公约数”

根据前文所述,CIST(公共和内部生成树)本质上是一个两层级的层次结构:

  1. 宏观层(Inter-region): 将每个 MSTP 域视为一个逻辑节点,通过 外部根路径开销(External Root Path Cost) 进行计算。
  2. 微观层(Intra-region): 域内部的详细拓扑。

连接 MSTP 域与传统 STP/RSTP 网络的正是这个“宏观层”,即 CST(Common Spanning Tree,公共生成树)

  • 统一视图: 传统 STP/RSTP 交换机没有“域”或“IST”的概念。它们将 CST 视为唯一的生成树实例。
  • 加入方式: 传统交换机简单地将其唯一的生成树实例并入 CST 中。它们将整个 MSTP 域视为一个**“透明的”伪网桥(Transparent Pseudo-bridge)**,完全感知不到 MSTP 域内部的复杂拓扑(如 MSTI 或 IST 结构)。

6.2.2 协议自适应与模式切换

MSTP 交换机具备自动识别邻居协议版本的能力。

  • 检测机制: 在边界端口上,MSTP 交换机会监听接收到的 BPDU 报文格式。
  • 模式切换:
    • 如果检测到邻居发送的是传统的 STP(802.1D)或 RSTP(802.1w)报文,该边界端口会自动切换到相应的兼容模式进行操作。
    • 此时,该端口不再发送 MSTP 特有的带有多实例扩展信息的 BPDU,而是发送标准的 STP/RSTP BPDU。

6.2.3 根桥选举场景

当 MSTP 与 STP/RSTP 互通时,CIST 总根(CIST Root)的选举范围扩大到了整个网络。这里存在两种典型场景:

场景一:CIST Root 位于 MSTP 域内
这是最理想的情况。MSTP 域内的某台交换机 ID 最优。传统 STP/RSTP 交换机将整个 MSTP 域视为包含根桥的逻辑节点,计算到达该“伪网桥”的路径。

场景二:CIST Root 位于传统 STP/RSTP 区域
正如材料中所述,可能会出现一台运行 RSTP/STP 的传统交换机拥有全网最低的 Bridge ID(优先级+MAC)。

  • 选举结果: 此时,CIST Root 位于 MSTP 域之外。
  • 域内行为: 所有 MSTP 域会感知到更优的外部根。每个域都会在其边界交换机中选出一个 CIST 域根(Regional Root)
  • 角色转变: 这个 CIST Regional Root 是该域距离外部 STP/RSTP 根桥最近的边界设备。域内所有 IST 和 MSTI 的计算将以这个指向外部的边界网关为锚点。

6.2.4 “伪网桥”模型的严格仿真特性

MSTP 域在与传统 STP/RSTP 互通时,致力于构建一个高度抽象的“虚拟网桥”。这一特性在 BPDU 的关键字段中得到了彻底的贯彻。

  1. 发送者的 Bridge ID (BID)
    MSTP 域对外表现出极强的统一性。无论 CIST 总根位于域内还是域外,MSTP 边界交换机在向 STP/RSTP 发送 BPDU 时,Bridge Identifier(发送者 BID) 字段通常统一使用 CIST 域根(Regional Root)的 ID,而不是边界交换机自身的物理 ID。
    逻辑视图: 这使得传统 STP 设备认为自己通过多条链路连接到了同一台交换机(即 MSTP 域这个“大交换机”)。
    冲突处理: 在双归属场景下(STP 设备连接到 MSTP 域的两个不同边界),STP 设备可能会收到 Sender BID 和 Sender Port ID 完全相同的 BPDU。此时,STP 协议依赖**接收端口 ID(Receiver Port ID)**作为最终的仲裁依据来选举根端口或阻塞端口,从而确保环路被消除。
  2. 计时器与跳数(Timers & Hops)
    虽然逻辑上是“一台”交换机,但物理上信息的传递存在延迟。
    CIST Root 的信息穿过 MSTP 域到达不同边界时,Message Age 可能因内部路径不同而略有差异。传统 STP 设备会处理这些微小的差异,通常不影响收敛。

6.2.5 总结

MSTP 与 STP/RSTP 的互通是基于 CST 实现的。MSTP 域通过将自己伪装成通过 CST 连接的透明传输网络,向后兼容了传统协议。在逻辑拓扑(根路径开销、环路阻塞)层面,它保证了全网单一生成树的无环特性。

6.3 检查MSTP和STP配置结果

6.3.1 CIST逻辑拓扑图

在这里插入图片描述
这张图片展示了 MSTP 域(Region RZ1) 与运行传统 STP/RSTP 协议的设备(DeviceE) 进行混合组网(互通)的典型拓扑场景。

以下是图形的简要解读:

1. 网络分区

  • 下方红色虚线框(Region: RZ1): 这是一个 MSTP 域,包含 DeviceA、DeviceB、DeviceC、DeviceD。它们内部运行 IST (MSTI 0) 来消除环路(DeviceC 的 GE1/0/2 被阻塞)。
  • 上方蓝色虚线框(STP/RSTP): 这是一个运行传统单生成树协议(STP 或 RSTP)的网络,包含 DeviceE。

2. 核心角色与 CST

  • CIST Root(总根): DeviceB (fae8-d2bf-0011) 被选举为全网的总根。这也意味着 MSTP 域内的设备 ID 优于外部的 DeviceE。
  • CST(公共生成树): 连接 MSTP 域和 STP/RSTP 网络的链路(标有蓝色 CST 字样)构成了 CST。
  • 边界行为: DeviceA 和 DeviceB 的上行端口检测到 DeviceE 运行的是传统协议,因此它们会自动切换模式,发送 标准的 STP/RSTP BPDU(如图中蓝色虚线箭头所示),而不是 MSTP 特有的 BPDU。

3. 环路消除(CST 计算结果)

DeviceE 作为非根网桥,有两个物理接口连接到 MSTP 域(实际上是连接到 CIST Root DeviceB):

  1. 连接 DeviceB 的链路: 直接连接到根桥(DeviceB),路径开销最小。因此,DeviceE 的 GE1/0/2 成为 RP(根端口)
  2. 连接 DeviceA 的链路: 需要经过 DeviceA 转发才能到达根桥 DeviceB,路径开销较大。因此,DeviceE 的 GE1/0/1 成为 ALT(替代端口),处于阻塞状态,从而消除了域间环路。

总结:
这张图直观地演示了 MSTP 域如何通过 CST “向下兼容”传统 STP/RSTP 设备。MSTP 域在 DeviceE 眼中就像一台透明的“虚拟网桥”,DeviceE 只需根据标准的 STP/RSTP 规则计算出根端口并阻塞冗余端口即可。

6.3.2 CIST配置信息

DeviceA:

[DeviceA]dis stp
CIST Global Information: 
  Mode                :MSTP
  CIST Bridge         :32768.fae8-d2bf-0041
  Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
  Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 19
  CIST Root/ERPC      :32768.fae8-d2bf-0011 / 0 # DeviceB是CIST总根,对外看,整个MSTP域就是一个虚拟网桥,所有DeviceA也是虚拟网桥一部分,ERPC为0
  CIST RegRoot/IRPC   :32768.fae8-d2bf-0011 / 20 # DeviceB同时也是这个MSTP域的域根,DeviceA距离域根20
  CIST RootPortId     :128.2 (GE1/0/2)
  BPDU-Protection     :Disabled
  TC or TCN received  :13
  TC count per hello  :0
  STP Converge Mode   :Normal
  Share region-configuration :Enabled
  Time since last TC  :0 days 2h:20m:23s
  Number of TC        :9
  Last TC occurred    :GE1/0/3
  Topo Change Flag    :0

CIST Port Information: 
  Port Id             :1
  Port Name           :GE1/0/1
  Port State          :Forwarding
  Port Protocol       :Enabled
  Port Role           :Designated Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Designated Bridge/Port   :32768.fae8-d2bf-0041 / 128.1
  Port Edged          :Config=default / Active=disabled
  Point-to-point      :Config=auto / Active=true
  Transit Limit       :6 packets/s         
  Protection Type     :None
  Port STP Mode       :MSTP
  Port Protocol Type  :Config=auto / Active=dot1s
  BPDU Encapsulation  :Config=stp / Active=stp
  PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 19
  TC or TCN send      :14
  TC or TCN received  :0
  TC Restriction      :False
  BPDU Sent           :4631
           TCN: 0, Config: 0, RST: 0, MST: 4631
  BPDU Received       :5
           TCN: 0, Config: 0, RST: 0, MST: 5
  Last forwarding time:2025-12-01 11:18:01
  Message Age         :0

CIST Port Information: 
  Port Id             :2
  Port Name           :GE1/0/2
  Port State          :Forwarding
  Port Protocol       :Enabled
  Port Role           :Root Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Designated Bridge/Port   :32768.fae8-d2bf-0011 / 128.2
  Port Edged          :Config=default / Active=disabled
  Point-to-point      :Config=auto / Active=true
  Transit Limit       :6 packets/s         
  Protection Type     :None
  Port STP Mode       :MSTP
  Port Protocol Type  :Config=auto / Active=dot1s
  BPDU Encapsulation  :Config=stp / Active=stp
  PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 20
  TC or TCN send      :6
  TC or TCN received  :8
  TC Restriction      :False
  BPDU Sent           :4647
           TCN: 0, Config: 0, RST: 0, MST: 4647
  BPDU Received       :4640
           TCN: 0, Config: 0, RST: 0, MST: 4640
  Last forwarding time:2025-12-01 11:17:23
  Message Age         :0

CIST Port Information: 
  Port Id             :3
  Port Name           :GE1/0/3
  Port State          :Forwarding
  Port Protocol       :Enabled
  Port Role           :Designated Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Designated Bridge/Port   :32768.fae8-d2bf-0041 / 128.3
  Port Edged          :Config=default / Active=disabled
  Point-to-point      :Config=auto / Active=true
  Transit Limit       :6 packets/s         
  Protection Type     :None
  Port STP Mode       :STP
  Port Protocol Type  :Config=auto / Active=dot1s
  BPDU Encapsulation  :Config=stp / Active=stp
  PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 19
  TC or TCN send      :21
  TC or TCN received  :5
  TC Restriction      :False
  BPDU Sent           :4711
           TCN: 0, Config: 3674, RST: 542, MST: 495
  BPDU Received       :11
           TCN: 0, Config: 2, RST: 5, MST: 4
  Last forwarding time:2025-12-01 11:17:40
  Message Age         :0

MSTI 1 Global Information:
  MSTI Bridge ID      :0.fae8-d2bf-0041
  MSTI RegRoot/IRPC   :0.fae8-d2bf-0041 / 0 (This bridge is the root)
  MSTI RootPortId     :0.0
  MSTI Root Type      :Primary root
  Master Bridge       :32768.fae8-d2bf-0011
  Cost to Master      :20
  TC received         :8
  TC count per hello  :0
  Time since last TC  :0 days 2h:20m:33s
  Number of TC        :10
  Last TC occurred    :GE1/0/3
  Topo Change Flag    :0

MSTI 1 Port Information:
  Port Id             :1
  Port Name           :GE1/0/1
  Port State          :Forwarding
  Port Role           :Designated Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Desg. Bridge/Port   :0.fae8-d2bf-0041 / 128.1
  Port Times          :RemHops 20
  TC or TCN send      :8
  TC or TCN received  :2
  Last forwarding time:2025-12-01 11:18:01

MSTI 1 Port Information:
  Port Id             :2
  Port Name           :GE1/0/2
  Port State          :Forwarding
  Port Role           :Designated Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Desg. Bridge/Port   :0.fae8-d2bf-0041 / 128.2
  Port Times          :RemHops 20
  TC or TCN send      :8
  TC or TCN received  :6
  Last forwarding time:2025-12-01 11:17:23

MSTI 1 Port Information:
  Port Id             :3
  Port Name           :GE1/0/3
  Port State          :Forwarding
  Port Role           :Designated Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Desg. Bridge/Port   :0.fae8-d2bf-0041 / 128.3
  Port Times          :RemHops 20
  TC or TCN send      :11
  TC or TCN received  :0
  Last forwarding time:2025-12-01 11:17:40

MSTI 2 Global Information:
  MSTI Bridge ID      :4096.fae8-d2bf-0041
  MSTI RegRoot/IRPC   :0.fae8-d2bf-0011 / 20
  MSTI RootPortId     :128.2 (GE1/0/2)
  MSTI Root Type      :Secondary root
  Master Bridge       :32768.fae8-d2bf-0011
  Cost to Master      :20
  TC received         :8
  TC count per hello  :0
  Time since last TC  :0 days 2h:20m:33s
  Number of TC        :10
  Last TC occurred    :GE1/0/3
  Topo Change Flag    :0

MSTI 2 Port Information:
  Port Id             :1
  Port Name           :GE1/0/1
  Port State          :Forwarding
  Port Role           :Designated Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Desg. Bridge/Port   :4096.fae8-d2bf-0041 / 128.1
  Port Times          :RemHops 19
  TC or TCN send      :8
  TC or TCN received  :2
  Last forwarding time:2025-12-01 11:18:01

MSTI 2 Port Information:
  Port Id             :2
  Port Name           :GE1/0/2
  Port State          :Forwarding
  Port Role           :Root Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Desg. Bridge/Port   :0.fae8-d2bf-0011 / 128.2
  Port Times          :RemHops 20
  TC or TCN send      :8
  TC or TCN received  :6
  Last forwarding time:2025-12-01 11:17:23

MSTI 2 Port Information:
  Port Id             :3
  Port Name           :GE1/0/3
  Port State          :Forwarding
  Port Role           :Designated Port
  Port Priority       :128
  Port Cost(Legacy)   :Config=auto / Active=20
  Desg. Bridge/Port   :4096.fae8-d2bf-0041 / 128.3
  Port Times          :RemHops 19
  TC or TCN send      :11
  TC or TCN received  :0
  Last forwarding time:2025-12-01 11:17:40

DeviceE:

[DeviceE]dis stp
CIST Global Information: 
Mode                :STP
CIST Bridge         :32768.fae8-d2bf-0071
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.fae8-d2bf-0011 / 20      # DeviceB是CIST总根
CIST RegRoot/IRPC   :32768.fae8-d2bf-0071 / 0 (This bridge is the root) # 可以认为DeviceE是STP域的域根
CIST RootPortId     :128.1 (GE1/0/1)
BPDU-Protection     :Disabled
TC or TCN received  :31
TC count per hello  :0
STP Converge Mode   :Normal
Share region-configuration :Enabled
Time since last TC  :0 days 2h:23m:21s
Number of TC        :10
Last TC occurred    :GE1/0/1
Topo Change Flag    :0

CIST Port Information: 
Port Id             :1
Port Name           :GE1/0/1
Port State          :Forwarding
Port Protocol       :Enabled
Port Role           :Root Port
Port Priority       :128
Port Cost(Legacy)   :Config=auto / Active=20
Designated Bridge/Port   :32768.fae8-d2bf-0011 / 128.3
Port Edged          :Config=default / Active=disabled
Point-to-point      :Config=auto / Active=true
Transit Limit       :6 packets/s         
Protection Type     :None
Port STP Mode       :STP
Port Protocol Type  :Config=auto / Active=dot1s
BPDU Encapsulation  :Config=stp / Active=stp
PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 0
TC or TCN send      :2
TC or TCN received  :4
TC Restriction      :False
BPDU Sent           :7
         TCN: 0, Config: 2, RST: 5, MST: 0
BPDU Received       :4307
         TCN: 0, Config: 3765, RST: 542, MST: 0
Last forwarding time:2025-12-01 11:31:37
Message Age         :0

CIST Port Information: 
Port Id             :2
Port Name           :GE1/0/2
Port State          :Discarding
Port Protocol       :Enabled
Port Role           :Alternate Port
Port Priority       :128
Port Cost(Legacy)   :Config=auto / Active=20
Designated Bridge/Port   :32768.fae8-d2bf-0011 / 128.3
Port Edged          :Config=default / Active=disabled
Point-to-point      :Config=auto / Active=true
Transit Limit       :6 packets/s         
Protection Type     :None
Port STP Mode       :STP
Port Protocol Type  :Config=auto / Active=dot1s
BPDU Encapsulation  :Config=stp / Active=stp
PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 0
TC or TCN send      :1
TC or TCN received  :2
TC Restriction      :False
BPDU Sent           :5
         TCN: 0, Config: 2, RST: 3, MST: 0
BPDU Received       :4305
         TCN: 0, Config: 3764, RST: 541, MST: 0
Last forwarding time:2025-12-01 11:31:37
Message Age         :0

CIST Port Information: 
Port Id             :3
Port Name           :GE1/0/3
Port State          :Down
Port Protocol       :Enabled
Port Role           :Disabled Port
Port Priority       :128
Port Cost(Legacy)   :Config=auto / Active=200000
Designated Bridge/Port   :32768.fae8-d2bf-0071 / 128.3
Port Edged          :Config=default / Active=disabled
Point-to-point      :Config=auto / Active=false
Transit Limit       :6 packets/s         
Protection Type     :None
Port STP Mode       :MSTP
Port Protocol Type  :Config=auto / Active=dot1s
BPDU Encapsulation  :Config=stp / Active=stp
PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 20
TC or TCN send      :0
TC or TCN received  :0
TC Restriction      :False
BPDU Sent           :0
         TCN: 0, Config: 0, RST: 0, MST: 0
BPDU Received       :0
         TCN: 0, Config: 0, RST: 0, MST: 0
Message Age         :0
继续分析CIST状态,注意,DeviceA的mac为fae8-d2bf-0041,DeviceB的mac为fae8-d2bf-0011,DeviceE的mac为fae8-d2bf-0071

基于 display stp 输出信息,我们可以深入分析 MSTP(DeviceA)与传统 STP(DeviceE)在混合组网场景下的 CIST(公共生成树) 状态及互通细节。

1. 设备角色与全局拓扑确认

  • 全网总根 (CIST Root): DeviceB (fae8-d2bf-0011)。
    • DeviceA 和 DeviceE 均认可 DeviceB 为根桥。
    • DeviceE (STP) 通过 CST 计算,认为根就在 MSTP 域内。
  • DeviceA (MSTP 边界): 位于 RG1 域内,MAC ...0041
  • DeviceE (STP 节点): 位于域外,运行传统 STP 模式,MAC ...0071

2. DeviceA (MSTP 侧) 详细分析:协议迁移与向下兼容

DeviceA 作为 MSTP 域的边界设备,展示了标准的 向后兼容性

A. 端口 GE1/0/3 的协议迁移 (Protocol Migration)

这是最关键的观察点:

  • 配置: Port Name : GE1/0/3
  • 模式切换: Port STP Mode : STP (注意:全局是 MSTP,但此端口单独降级为 STP)。
  • BPDU 行为: BPDU Sent : Config: 3674
    • DeviceA 检测到对端 DeviceE 发送的是传统 STP BPDU,因此自动将该端口切换为 STP 兼容模式
    • 它不再发送 MSTP 专用的 BPDU(带 M-Record),而是发送标准的 Configuration BPDU,以确保 DeviceE 能看懂。
B. 端口角色与 MSTI 映射
  • CIST 角色: Designated Port (指定端口),状态 Forwarding
    • DeviceA 认为自己是通往 DeviceE 的上游转发者。
  • MSTI 1 & MSTI 2 的状态:
    • 输出显示 MSTI 1 和 2 的 GE1/0/3 也都是 Forwarding
    • 原理: 在边界端口上,所有 MSTI 的状态严格跟随 CIST。因为 CIST 是 Forwarding,所以 DeviceA 愿意在这个端口上为 VLAN 2-20 转发流量。
    • 隐患: 虽然 DeviceA 愿意发,但链路通不通还得看对端 DeviceE 的脸色。

3. DeviceE (STP 侧) 详细分析:CST 的计算与阻塞

DeviceE 运行在 STP 模式,它将整个 MSTP 域(包括 DeviceA 和 DeviceB)视为一个黑盒(伪网桥/透明桥)。

A. 根端口选择 (Root Port) - GE1/0/1
  • 状态: Root PortForwarding
  • 指定桥: ...0011 (DeviceB)。
  • 分析: DeviceE 通过 GE1/0/1 直连根桥 DeviceB(开销 20)。这是它到达根的最优路径。
B. 环路消除 (Blocking) - GE1/0/2
  • 状态: Alternate PortDiscarding (阻塞)。
  • 指定桥: ...0011 (DeviceB)。
    • 注意:这里 DeviceE 显示指定桥是 DeviceB,这在物理连接上通常意味着 GE1/0/2 也连接到了 DeviceB,或者 DeviceA 在某种透传模式下工作。但在标准 A-B-E 三角拓扑中,如果 GE1/0/2 连接 DeviceA,DeviceE 应看到 DeviceA 的 BID。不过,无论指定桥显示谁,端口被阻塞这一结果是符合逻辑的。
  • 逻辑:
    • 路径 1 (GE1/0/1): 直连根 (Cost 20)。
    • 路径 2 (GE1/0/2): 即使连接 DeviceA,路径开销也是 DeviceA到根(20) + 链路(20) = 40。
    • 结论: 路径 2 劣后。STP 协议为了防止环路,将 GE1/0/2 阻塞。

4. 互通机制总结:CST 的“一刀切”

结合 DeviceA 和 DeviceE 的状态,我们可以看到 CST (Common Spanning Tree) 是如何工作的:

  1. 单生成树视界: DeviceE 不知道 MSTP 域内有 MSTI 1 和 MSTI 2。它只维护一棵树。
  2. 物理阻断: DeviceE 阻塞了 GE1/0/2。
    • 这对 CIST (Instance 0) 有效,防止了管理流量环路。
    • 这也连带切断了 VLAN 2-10 (MSTI 1) 和 VLAN 11-20 (MSTI 2) 的流量。
  3. 单向连通的错觉:
    • DeviceA (MSTP) 的 GE1/0/3 是 Forwarding 的。
    • DeviceE (STP) 的 GE1/0/2 是 Discarding 的。
    • 结果: 这条链路实际上是断开的。DeviceA 发出的数据包到达 DeviceE 后会被丢弃(除非是 BPDU)。

5. 结论

这份状态输出完美验证了 MSTP 与 STP 对接时的 “伪网桥”“协议自动迁移” 机制。

  • DeviceA 成功识别了对端运行STP并降级为 STP 模式发送报文。
  • DeviceE 通过标准 STP 算法计算出根端口,并阻塞了次优路径,从而保证了全网(无论域内还是域外)无环路。
  • 代价: 域间链路无法实现基于 VLAN 的负载分担,所有 VLAN 流量只能走 DeviceE 的根端口 (GE1/0/1)。

6.3.3 端口角色和状态

DeviceA:

[DeviceA]dis stp brief
 MSTID  Port                        Role  STP State     Protection      Cost    Edged
     0  GE1/0/1                     DESI  forwarding    none              20    disable   
     0  GE1/0/2                     ROOT  forwarding    none              20    disable   
     0  GE1/0/3                     DESI  forwarding    none              20    disable   
     1  GE1/0/1                     DESI  forwarding    none              20    disable   
     1  GE1/0/2                     DESI  forwarding    none              20    disable   
     1  GE1/0/3                     DESI  forwarding    none              20    disable   
     2  GE1/0/1                     DESI  forwarding    none              20    disable   
     2  GE1/0/2                     ROOT  forwarding    none              20    disable   
     2  GE1/0/3                     DESI  forwarding    none              20    disable   

DeviceE:

[DeviceE]dis stp brief
 MSTID  Port                        Role  STP State     Protection      Cost    Edged
     0  GE1/0/1                     ROOT  forwarding    none              20    disable   
     0  GE1/0/2                     ALTE  discarding    none              20    disable   

基于 display stp brief 的输出,我们可以对 MSTP(DeviceA)传统 STP(DeviceE) 互通场景下的端口状态进行最终的逻辑复盘。这一步非常直观地展示了 CST(公共生成树)如何在边界“强制统一”所有 VLAN 的转发行为。

1. DeviceE(STP 侧):CST 的裁决者

DeviceE 运行的是单生成树(STP),它只有 Instance 0。它的逻辑非常简单直接:

  • GE1/0/1 (ROOT / Forwarding):

    • 这是根端口。它直接连接到 CIST Root (DeviceB)
    • 路径开销:20(直连)。
    • 结果: 这是 DeviceE 接入网络的“大动脉”,所有流量都走这里。
  • GE1/0/2 (ALTE / Discarding):

    • 这是替代端口(阻塞)。它连接到 DeviceA
    • 路径开销:DeviceA 到根的开销 (20) + 链路开销 (20) = 40。
    • 决策: 因为 40 > 20,所以这条路是次优路径。为了防止 CST 环路,DeviceE 果断将其阻塞。
    • 影响: 物理链路逻辑中断。无论对面 DeviceA 发过来什么 VLAN 的数据,DeviceE 都会丢弃(BPDU 除外)。

2. DeviceA(MSTP 侧):边界的妥协

DeviceA 是 MSTP 域的边界设备,它维护着复杂的 MSTI 状态,但在连接 DeviceE 的 GE1/0/3 端口上,我们可以看到明显的“无奈”。

  • Instance 0 (CIST) - GE1/0/3 (DESI / Forwarding):

    • DeviceA 计算出自己是这条链路上的指定网桥(Designated Bridge),因为它离根更近(Cost 20 vs DeviceE 的 Cost 40)。
    • 所以 DeviceA 将端口置为 Forwarding,并持续向 DeviceE 发送 STP 兼容格式的 BPDU。
  • Instance 1 & 2 (MSTI) - GE1/0/3 (DESI / Forwarding):

    • 关键观察: 即使在 MSTI 1 中 DeviceA 自己是根桥(Root),在 MSTI 2 中它是中间节点,这两个实例在 GE1/0/3 上的状态都完全复制了 Instance 0 的状态(Forwarding)。
    • 原理: 这验证了我们之前的理论——在 MSTP 域边界,所有 MSTI 必须映射到 CST。 既然 CST (Instance 0) 说是 Forwarding,那么 MSTI 1 和 2 也必须显示为 Forwarding。

3. 深度分析:状态的“非对称性”与流量黑洞

将两台设备的简要信息拼在一起,我们看到了一个典型的非对称状态

  • DeviceA (GE1/0/3): “我是通的 (Forwarding),VLAN 1, 10, 20 的数据我都能发出去。”
  • DeviceE (GE1/0/2): “我不通 (Discarding),这头堵死了。”

这对业务流量意味着什么?

  1. VLAN 负载分担失效:

    • 在 MSTP 域内(DeviceA 侧),管理员可能希望 VLAN 2-10(MSTI 1)通过 DeviceA 转发。
    • DeviceA 确实试图通过 GE1/0/3 把 VLAN 2-10 的流量发给 DeviceE。
    • 但是,数据包到达 DeviceE 的 GE1/0/2 后,直接撞墙(被丢弃)
  2. CST 决定一切:

    • DeviceE 是“单细胞生物”,它只认 CST。既然 CST 判定 GE1/0/2 有环路风险,它就“宁可错杀一千(所有 VLAN),不可放过一个(环路)”。
    • 因此,DeviceA 与 DeviceE 之间的这条链路,在逻辑上是彻底断开的(仅作为备份链路存在)。

4. 最终结论

这份 dis stp brief 的对比分析,为 MSTP 与 STP 对接提供了教科书般的总结:

  1. 兼容性成功: DeviceA 没有因为对端是老设备就报错,它成功识别并降级兼容,建立了 CIST 树。
  2. 边界归一化: DeviceA 上的 MSTI 1/2 虽然显示 Forwarding,但这只是“内部意愿”。在物理线路上,它们受制于 CST 的状态。
  3. 单链路限制: 在 MSTP 与 STP 互联的边界上,永远只有一条逻辑链路是通的(本例中是 DeviceB-DeviceE)。无法利用多条链路进行 VLAN 间的负载分担。

6.3.4 抓包分析

这里主要观察DeviceA发出的BPDU报文格式,说明DeviceA虽然运行MSTP,但与STP互通时,GE1/0/3端口发送STP报文:
在这里插入图片描述

DeviceA GE1/0/3端口抓包:

Frame 5: Packet, 60 bytes on wire (480 bits), 60 bytes captured (480 bits)
IEEE 802.3 Ethernet 
Logical-Link Control
Spanning Tree Protocol
    Protocol Identifier: Spanning Tree Protocol (0x0000)
    Protocol Version Identifier: Spanning Tree (0)
    BPDU Type: Configuration (0x00)
    BPDU flags: 0x00
        0... .... = Topology Change Acknowledgment: No
        .... ...0 = Topology Change: No
    Root Identifier: 32768 / 0 / fa:e8:d2:bf:00:11
        Root Bridge Priority: 32768
        Root Bridge System ID Extension: 0
        Root Bridge System ID: fa:e8:d2:bf:00:11
    Root Path Cost: 0
    Bridge Identifier: 32768 / 0 / fa:e8:d2:bf:00:11
        Bridge Priority: 32768
        Bridge System ID Extension: 0
        Bridge System ID: fa:e8:d2:bf:00:11
    Port identifier: 0x8003
    Message Age: 0
    Max Age: 20
    Hello Time: 2
    Forward Delay: 15

这份抓包分析提供了确凿的证据,证明了 MSTP 协议的**向后兼容性(Backward Compatibility)协议迁移(Protocol Migration)**机制。

尽管 DeviceA 全局配置为 MSTP 模式,但在 GE1/0/3 接口上,它通过侦听对端(DeviceE)的报文,自动将发送模式降级为传统的 IEEE 802.1D STP。

以下是对 Frame 5 报文格式的详细分析:

1. 协议版本的“降级” (Protocol Version)

  • 字段: Protocol Version Identifier: Spanning Tree (0)
  • 分析:
    • MSTP 的版本号本应是 3
    • RSTP 的版本号本应是 2
    • 这里显示为 0,这是最古老的 IEEE 802.1D STP 的标志。
  • 结论: DeviceA 明确知道对端只能听懂“老语言”,因此它不再讲“MSTP 这种新语言”,而是切换到了“STP 老语言”。

2. BPDU 类型的变化 (BPDU Type)

  • 字段: BPDU Type: Configuration (0x00)
  • 分析:
    • 在 MSTP 和 RSTP 中,BPDU 类型通常是 0x02 (Rapid/Multiple Spanning Tree)
    • 这里使用的是 0x00 (Configuration BPDU),这是传统 STP 用于周期性维护拓扑的报文类型(也就是俗称的“配置 BPDU”)。
  • 结论: 报文结构的改变意味着不再包含 RSTP/MSTP 特有的快速收敛机制(如 Proposal/Agreement 握手字段),而是回退到了基于计时器(Timer-based)的收敛机制。

3. 报文长度与扩展信息的消失

  • 字段: 60 bytes on wire (以太网最小帧长)
  • 分析:
    • 我们在之前的 Frame 1/3/4(MSTP 报文)中看到,报文末尾包含了大量的 MST Extension(M-Record 信息),用于携带 MSTI 1 和 MSTI 2 的拓扑数据。
    • 在这个 Frame 5 中,所有关于 MST Extension 的字段全部消失了。报文只携带了最基本的 Root ID、Cost、Bridge ID 等 CST 信息。
  • 结论: 这再次印证了**“在边界上所有 MSTI 映射到 CST”**的理论。DeviceA 在向 DeviceE 发送信息时,剥离了所有私有的多实例信息,只保留了公共生成树(Instance 0)的信息,把自己伪装成一台标准的 STP 交换机。

4. 标志位的简化 (Flags)

  • 字段: BPDU flags: 0x00
  • 分析:
    • MSTP/RSTP 报文通常会置位 Forwarding, Learning, Agreement, Proposal 等标志位。
    • 传统 STP 的 Flags 字段非常简单,只用于拓扑变更通知(TC)。此处为 0x00,表示这是一个普通的周期性保活报文。

5. 小结

Frame 5 是一个标准的 IEEE 802.1D STP Configuration BPDU

这一抓包结果完美验证了 MSTP 的自动感知与自适应能力
DeviceA 的 GE1/0/3 端口虽然“身在 MSTP 曹营”(全局 MSTP),但“心在 STP 汉”(接口运行 STP)。它通过发送这种格式的报文,欺骗 DeviceE 相信它也是一台普通的 STP 交换机,从而实现了新老协议的无缝互通。

6.3.5 一个问题

问题:
之前说过DeviceA的mac为fae8-d2bf-0041,DeviceB的mac为fae8-d2bf-0011,DeviceE的mac为fae8-d2bf-0071,为什么这里的bridge id Bridge Identifier: 32768 / 0 / fa:e8:d2:bf:00:11,不应该是发出bpdu报文的设备本身的bridge id吗?
回答:
您的观察非常敏锐,这是一个非常核心且经常被忽视的 MSTP 机制细节。

答案是:这是为了维护 MSTP 域作为“单一虚拟网桥(Virtual Bridge)”的逻辑抽象,特别是在 CIST 总根位于本域内的情况下。

让我们结合报文中的两个关键字段来破解这个谜题:

1. 关键证据:Root Path Cost 为 0

请注意看 Frame 5 中的这个字段:

Root Path Cost: 0
  • 在 STP 协议中: 只有 根桥(Root Bridge) 发出的 BPDU,其根路径开销(Root Path Cost)才为 0。
  • 推论: 既然 DeviceA 发出的报文宣称 Cost 为 0,这意味着 DeviceA 正在告诉 DeviceE:“我就是根桥”。

2. STP 规则:根桥的发送者 ID 必须等于 Root ID

  • 规则: 如果一个网桥宣称自己是根(Cost=0),那么它报文中的 Bridge Identifier(发送者 ID)必须等于 Root Identifier(根 ID)。
  • 现状:
    • Root Identifier: ...0011 (DeviceB,全网总根)。
    • Bridge Identifier: 必须也是 ...0011对外部来说,域根就代表虚拟网桥的bridge id。
  • 冲突: 如果 DeviceA 诚实地填入自己的 ID ...0041,那么它就必须把 Cost 填为 20(它到 DeviceB 的内部开销)。但这会破坏“MSTP 域是一个整体”的抽象。

3. 根本原因:MSTP 域的“虚拟化”

在 MSTP 与传统 STP 对接的 CST(公共生成树) 视角中,整个 RG1 域被视为一台逻辑上的大交换机

  • 场景: CIST Root (DeviceB) 就在 RG1 域内。
  • CST 视角: 这意味着 RG1 这个“虚拟大交换机”就是全网的根桥。
  • 边界行为: 作为这个“虚拟根桥”的对外接口,DeviceA(以及该域的其他边界设备)必须统一口径,对外宣称:“本域(RG1)就是根”。
  • 实现方式: DeviceA 在向 STP 域发送 BPDU 时,必须“伪装”成 CIST Root (DeviceB)。它将 Source Bridge ID 替换为 Region Root ID (...0011),并将 Cost 设为 0。

4. 如果 DeviceA 使用自己的 ID 会发生什么?

假设 DeviceA 使用自己的 ID ...0041 发送 BPDU,且 Cost 为 20:

  1. DeviceE 会认为:DeviceE -> DeviceA -> DeviceB(Root)
  2. DeviceE 会认为它距离根跳了一跳。
  3. 但这违背了 MSTP 的 CST 模型: CST 模型希望 DeviceE 认为它连接的是那个“包含 DeviceB 的大黑盒子”。在这个模型下,RG1 域本身就是根,DeviceE 直连域边界,等于直连根。

5. 小结

您看到的现象是 MSTP CIST Root 位于域内 时的特殊处理机制:

DeviceA 虽然物理 MAC 是 ...0041,但为了在 STP 协议层面维持 “RG1 域 = 根桥” 的逻辑视图,它在边界端口 GE1/0/3 发出的配置 BPDU 中,借用了 域内总根 DeviceB 的 ID (...0011) 作为发送者 ID。

这就像是一个公司的不同部门经理(DeviceA, DeviceC)对外发公函时,盖的都是公司总部(DeviceB)的公章,以代表“公司”这个整体。

6.3.6 MSTP报文设计逻辑

在这里插入图片描述
从上图可以看出,在和STP/MSTP互通场景中,不携带MSTI的信息,只携带本MSTP域计算得到的CIST总根(也就是CST的根)、域根(也就是虚拟网桥的bridge id),端口ID,这样就可以和传统的STP/MSTP进行一致的STP计算了。

基于您提供的图片和之前的抓包分析,这张图非常清晰地揭示了 MSTP 报文(BPDU)的设计哲学,特别是它如何通过巧妙的字段分割,同时兼顾了“域内复杂计算”和“域间(或与 STP/RSTP 互通)的黑盒模型”。

以下是基于该图对 MSTP 报文设计逻辑的技术解读,重点说明其在与 STP/RSTP 互通时的表现:

1. 报文结构的两层逻辑:宏观与微观

MSTP BPDU 的设计完美对应了 CIST 的两层架构:CST(宏观/域间)IST(微观/域内)

A. 红色区块:宏观视角(CST 信息 / 虚拟网桥属性)

这部分信息定义了 “虚拟网桥(Virtual Bridge)” 在整个 CST 树中的位置。

  • 特征: 如图片注释所示,这些信息在同一个 MSTP 域内传输时,或者在向域外通告时,是**相对固定(Invariant)**的。它们代表了整个域的属性,而不是某个具体设备的属性。
  • 关键字段:
    1. CIST Root Identifier(CIST 总根): 全网老大。无论你在域内还是域外,大家认的总根都是同一个。
    2. CIST Regional Root ID(CIST 域根): 这是最关键的字段。它充当了“虚拟网桥”的 Bridge ID。 当 MSTP 域与外部(如 STP)对话时,整个域就用这个 ID 来代表自己。
    3. CIST External Root Path Cost(外部路径开销): 代表这个“虚拟网桥”到达总根的距离。
B. 绿色区块:微观视角(IST 信息 / 物理设备属性)

这部分信息定义了 物理设备 在域内 IST 树中的位置。

  • 特征: 如图片注释所示,这些信息是**逐跳变化(Variant)**的。随着 BPDU 在域内不同交换机之间转发,这些字段会根据发送者的情况进行刷新。
  • 关键字段:
    1. CIST Internal Root Path Cost(内部路径开销): 我(具体物理设备)距离域根(虚拟网桥的核心)有多远。
    2. CIST Bridge ID(物理设备 ID): 我(具体物理设备)真实的身份证。

2. 与 STP/RSTP 互通时的“降维打击”

图片和注释很好地解释了为什么 DeviceA 在连接 DeviceE(STP)时,报文会发生那样的变化。

当 MSTP 交换机(如 DeviceA)检测到端口连接的是 STP/RSTP 设备时,它会进行协议降级。这个过程本质上就是剥离“微观”和“多实例”信息,仅保留“宏观”信息的过程。

具体的字段映射逻辑:
  1. 丢弃部分 (Stripping):

    • MSTI Configuration Messages (M-Records): 丢弃。传统设备不懂多实例。
    • MST Extension (绿色区块): 丢弃。传统设备不需要知道 MSTP 域内的内部拓扑(谁是 DeviceA,内部开销是多少)。
  2. 保留与映射部分 (Mapping):
    MSTP 将红色区块的信息直接填入标准 STP BPDU 的对应字段中,从而实现了“虚拟网桥”的伪装。

    标准 STP BPDU 字段来源:MSTP 红色区块字段逻辑含义
    Root IdentifierCIST Root Identifier告诉 STP:全网总根是谁(例如 DeviceB)。
    Root Path CostCIST External Root Path Cost告诉 STP:我这个“虚拟网桥”离总根有多远。
    Bridge IdentifierCIST Regional Root ID这是关键! 告诉 STP:发送这个 BPDU 的“设备”是谁。注意:这里填的是域根 ID,而不是 DeviceA 的物理 ID。
    Port IDPort ID端口号保持不变。

3. 回应之前的疑问

回到您之前关于 Frame 5 的疑问:“为什么 DeviceA 发出的 STP 报文,Bridge ID 是 DeviceB (…0011) 而不是它自己 (…0041)?”

结合这张图,答案就非常清晰了:

  • DeviceA 正在扮演“虚拟网桥”的代理人。
  • 根据设计逻辑,与域外沟通时,必须使用红色区块中的信息。
  • CIST Regional Root ID 正是红色区块中用于代表本域身份的字段。
  • 在本例中,因为总根 DeviceB 就在域内,所以 CIST Regional Root = CIST Root = DeviceB
  • 因此,DeviceA 向 DeviceE 发送报文时,Bridge Identifier 字段填入了 DeviceB 的 ID。

4. 小结

这张图概括了 MSTP 处理复杂性的核心策略:对外呈现统一的红色面孔(虚拟网桥/域根),对内维护详细的绿色面孔(物理拓扑/IST)。 在与 STP 互通时,它只需摘下面具(去掉扩展字段),把红色的面孔展示给对方,就能完美融入传统网络。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值