一、实验背景

在传统的 STP/RSTP 网络中,所有 VLAN 共享一棵生成树,被阻塞的端口在任何 VLAN 下都不转发数据,导致链路带宽无法充分利用。

MSTP(Multiple Spanning Tree Protocol,多实例生成树协议) 通过将多个 VLAN 映射到不同的生成树实例(Instance),每个实例独立计算拓扑,从而实现不同 VLAN 走不同链路的负载分担效果。


二、实验拓扑

设备清单:

表格

设备 角色 实例 1(VLAN10) 实例 2(VLAN20)
SW-CORE1 核心交换机 主根(Root Primary) 备根(Root Secondary)
SW-CORE2 核心交换机 备根(Root Secondary) 主根(Root Primary)
SW-AGG1 接入交换机 下联 PC1(VLAN10)
SW-AGG2 接入交换机 下联 PC2(VLAN20)

接口连接表:

表格

本端 接口 对端 接口 链路类型
SW-CORE1 GE0/0/24 SW-CORE2 GE0/0/24 Trunk
SW-CORE1 GE0/0/1 SW-AGG1 GE0/0/1 Trunk
SW-CORE1 GE0/0/2 SW-AGG2 GE0/0/2 Trunk
SW-CORE2 GE0/0/1 SW-AGG2 GE0/0/1 Trunk
SW-CORE2 GE0/0/2 SW-AGG1 GE0/0/2 Trunk
SW-AGG1 GE0/0/3 PC1 Eth0/0/1 Access(VLAN10)
SW-AGG2 GE0/0/3 PC2 Eth0/0/1 Access(VLAN20)

设计思路: VLAN10 的流量优先走 SW-CORE1(实例 1 主根),VLAN20 的流量优先走 SW-CORE2(实例 2 主根),两条上行链路互为备份,带宽利用率翻倍。


三、实验目的

  1. 掌握 MSTP 域(Region)的配置方法
  2. 理解 VLAN 与生成树实例的映射关系
  3. 掌握主根 / 备根的指定方式
  4. 验证多实例下的负载分担效果

四、配置前准备

MSTP 三要素(必须完全一致才能属于同一域):

表格

要素 说明 本实验取值
域名(Region-Name) MSTP 域标识符 MST-TEST
修订级别(Revision-Level) 域配置版本号 1
VLAN - 实例映射表 哪些 VLAN 属于哪个实例 VLAN10→Instance1,VLAN20→Instance2

⚠️ 关键提醒: 同一 MSTP 域内所有交换机,以上三项配置必须字节级一致,否则会被视为不同域,无法实现预期的负载分担。这是初学者最容易踩的坑。


五、详细配置步骤

5.1 核心交换机 SW-CORE1 配置

shell

# 进入系统视图
<Huawei> system-view
# 修改设备名称为 SW-CORE1
[Huawei] sysname SW-CORE1

# 创建实验所需 VLAN
[SW-CORE1] vlan batch 10 20

# 将 STP 模式设置为 MSTP(华为设备默认就是 MSTP,显式配置更规范)
[SW-CORE1] stp mode mstp

# 进入 MSTP 域配置视图
[SW-CORE1] stp region-configuration

# 配置 MSTP 域名,同一域内所有交换机必须一致
[SW-CORE1-mst-region] region-name MST-TEST

# 配置修订级别,同一域内必须一致,范围 0-65535
[SW-CORE1-mst-region] revision-level 1

# 将 VLAN10 映射到生成树实例 1
[SW-CORE1-mst-region] instance 1 vlan 10

# 将 VLAN20 映射到生成树实例 2
[SW-CORE1-mst-region] instance 2 vlan 20

# 激活 MSTP 域配置(必须执行,否则配置不生效!)
[SW-CORE1-mst-region] active region-configuration

# 退出 MSTP 域配置视图
[SW-CORE1-mst-region] quit

# 指定 SW-CORE1 为实例 1 的主根桥
# 该命令会自动将本交换机在实例1中的桥优先级设为 0
[SW-CORE1] stp instance 1 root primary

# 指定 SW-CORE1 为实例 2 的备根桥
# 该命令会自动将本交换机在实例2中的桥优先级设为 4096
[SW-CORE1] stp instance 2 root secondary

# ========== 接口配置 ==========

# GE0/0/24:与 SW-CORE2 互联,配置为 Trunk,允许 VLAN10、20 通过
[SW-CORE1] interface GigabitEthernet 0/0/24
[SW-CORE1-GigabitEthernet0/0/24] port link-type trunk
[SW-CORE1-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20
[SW-CORE1-GigabitEthernet0/0/24] quit

# GE0/0/1:与 SW-AGG1 互联,配置为 Trunk
[SW-CORE1] interface GigabitEthernet 0/0/1
[SW-CORE1-GigabitEthernet0/0/1] port link-type trunk
[SW-CORE1-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20
[SW-CORE1-GigabitEthernet0/0/1] quit

# GE0/0/2:与 SW-AGG2 互联,配置为 Trunk
[SW-CORE1] interface GigabitEthernet 0/0/2
[SW-CORE1-GigabitEthernet0/0/2] port link-type trunk
[SW-CORE1-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 20
[SW-CORE1-GigabitEthernet0/0/2] quit

# 保存配置
[SW-CORE1] save

注释解析:

  • stp instance 1 root primary:等价于将桥优先级手动设为 0,是成为根桥的最直接方式。
  • stp instance 2 root secondary:等价于将桥优先级设为 4096,当主根故障时自动接替成为根桥。
  • active 命令极易被忽略 ——MSTP 域配置修改后必须 active 才能生效,这是华为 VRP 的特性。
  • 本设备三个接口分别连接 CORE2(GE0/0/24)、AGG1(GE0/0/1)、AGG2(GE0/0/2),均需配置为 Trunk 以承载多 VLAN 流量。

5.2 核心交换机 SW-CORE2 配置

shell

# 进入系统视图
<Huawei> system-view
# 修改设备名称为 SW-CORE2
[Huawei] sysname SW-CORE2

# 创建实验所需 VLAN
[SW-CORE2] vlan batch 10 20

# 设置 STP 模式为 MSTP
[SW-CORE2] stp mode mstp

# 进入 MSTP 域配置视图
[SW-CORE2] stp region-configuration

# 域名必须与 SW-CORE1 完全一致
[SW-CORE2-mst-region] region-name MST-TEST

# 修订级别必须与 SW-CORE1 完全一致
[SW-CORE2-mst-region] revision-level 1

# VLAN-实例映射必须与 SW-CORE1 完全一致
[SW-CORE2-mst-region] instance 1 vlan 10
[SW-CORE2-mst-region] instance 2 vlan 20

# 激活域配置
[SW-CORE2-mst-region] active region-configuration
[SW-CORE2-mst-region] quit

# 指定 SW-CORE2 为实例 1 的备根桥(与 SW-CORE1 对调)
[SW-CORE2] stp instance 1 root secondary

# 指定 SW-CORE2 为实例 2 的主根桥(与 SW-CORE1 对调)
[SW-CORE2] stp instance 2 root primary

# ========== 接口配置 ==========

# GE0/0/24:与 SW-CORE1 互联,配置为 Trunk
[SW-CORE2] interface GigabitEthernet 0/0/24
[SW-CORE2-GigabitEthernet0/0/24] port link-type trunk
[SW-CORE2-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20
[SW-CORE2-GigabitEthernet0/0/24] quit

# GE0/0/1:与 SW-AGG2 互联,配置为 Trunk
[SW-CORE2] interface GigabitEthernet 0/0/1
[SW-CORE2-GigabitEthernet0/0/1] port link-type trunk
[SW-CORE2-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20
[SW-CORE2-GigabitEthernet0/0/1] quit

# GE0/0/2:与 SW-AGG1 互联,配置为 Trunk
[SW-CORE2] interface GigabitEthernet 0/0/2
[SW-CORE2-GigabitEthernet0/0/2] port link-type trunk
[SW-CORE2-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 20
[SW-CORE2-GigabitEthernet0/0/2] quit

# 保存配置
[SW-CORE2] save

注释解析:

  • SW-CORE2 的域配置(域名、修订级别、VLAN 映射)与 SW-CORE1 完全相同,这是它们属于同一 MSTP 域的前提。
  • 唯一区别在于根桥角色对调:SW-CORE2 在实例 1 中是备根,在实例 2 中是主根。这样 VLAN10 的流量走 SW-CORE1,VLAN20 的流量走 SW-CORE2,实现负载分担。
  • 注意接口对应关系:GE0/0/1 连 AGG2,GE0/0/2 连 AGG1(与 CORE1 交叉对应)。

5.3 接入交换机 SW-AGG1 配置(下联 PC1,VLAN10)

shell

<Huawei> system-view
[Huawei] sysname SW-AGG1

# 创建 VLAN10、20(Trunk 链路需要允许通过的 VLAN 必须先在本地创建)
[SW-AGG1] vlan batch 10 20

# 接入交换机同样需要配置 MSTP 域,且三要素必须与核心一致
[SW-AGG1] stp mode mstp
[SW-AGG1] stp region-configuration
[SW-AGG1-mst-region] region-name MST-TEST
[SW-AGG1-mst-region] revision-level 1
[SW-AGG1-mst-region] instance 1 vlan 10
[SW-AGG1-mst-region] instance 2 vlan 20
[SW-AGG1-mst-region] active region-configuration
[SW-AGG1-mst-region] quit

# ========== 接口配置 ==========

# GE0/0/1:上联 SW-CORE1,配置为 Trunk
[SW-AGG1] interface GigabitEthernet 0/0/1
[SW-AGG1-GigabitEthernet0/0/1] port link-type trunk
[SW-AGG1-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20
[SW-AGG1-GigabitEthernet0/0/1] quit

# GE0/0/2:上联 SW-CORE2,配置为 Trunk
[SW-AGG1] interface GigabitEthernet 0/0/2
[SW-AGG1-GigabitEthernet0/0/2] port link-type trunk
[SW-AGG1-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 20
[SW-AGG1-GigabitEthernet0/0/2] quit

# GE0/0/3:下联 PC1,配置为 Access,加入 VLAN10
[SW-AGG1] interface GigabitEthernet 0/0/3
[SW-AGG1-GigabitEthernet0/0/3] port link-type access
[SW-AGG1-GigabitEthernet0/0/3] port default vlan 10
[SW-AGG1-GigabitEthernet0/0/3] quit

[SW-AGG1] save

注释解析:

  • 接入交换机必须配置相同的 MSTP 域信息,否则它会被视为不同域的边界交换机,MSTP 行为异常。
  • 接入交换机不需要指定根桥,它会自动通过 BPDU 选举确定根端口和指定端口。
  • GE0/0/1 走 CORE1 方向,GE0/0/2 走 CORE2 方向;MSTP 会在实例 1 中选 GE0/0/1 为根端口(因为 CORE1 是实例 1 主根),在实例 2 中选 GE0/0/2 为根端口(因为 CORE2 是实例 2 主根)。

5.4 接入交换机 SW-AGG2 配置(下联 PC2,VLAN20)

shell

<Huawei> system-view
[Huawei] sysname SW-AGG2

[SW-AGG2] vlan batch 10 20

# MSTP 域配置与其他交换机保持一致
[SW-AGG2] stp mode mstp
[SW-AGG2] stp region-configuration
[SW-AGG2-mst-region] region-name MST-TEST
[SW-AGG2-mst-region] revision-level 1
[SW-AGG2-mst-region] instance 1 vlan 10
[SW-AGG2-mst-region] instance 2 vlan 20
[SW-AGG2-mst-region] active region-configuration
[SW-AGG2-mst-region] quit

# ========== 接口配置 ==========

# GE0/0/1:上联 SW-CORE2,配置为 Trunk
[SW-AGG2] interface GigabitEthernet 0/0/1
[SW-AGG2-GigabitEthernet0/0/1] port link-type trunk
[SW-AGG2-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20
[SW-AGG2-GigabitEthernet0/0/1] quit

# GE0/0/2:上联 SW-CORE1,配置为 Trunk
[SW-AGG2] interface GigabitEthernet 0/0/2
[SW-AGG2-GigabitEthernet0/0/2] port link-type trunk
[SW-AGG2-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 20
[SW-AGG2-GigabitEthernet0/0/2] quit

# GE0/0/3:下联 PC2,配置为 Access,加入 VLAN20
[SW-AGG2] interface GigabitEthernet 0/0/3
[SW-AGG2-GigabitEthernet0/0/3] port link-type access
[SW-AGG2-GigabitEthernet0/0/3] port default vlan 20
[SW-AGG2-GigabitEthernet0/0/3] quit

[SW-AGG2] save

注释解析:

  • 注意 SW-AGG2 的上联接口与 SW-AGG1 是交叉的:GE0/0/1 连 CORE2,GE0/0/2 连 CORE1。
  • 与 SW-AGG1 同理,MSTP 会根据实例根桥位置自动选择根端口,实现负载分担。

六、验证与结果分析

6.1 查看 MSTP 域配置

shell

# 在任意交换机上查看 MSTP 域配置
<SW-CORE1> display stp region-configuration

预期输出:

plaintext

 Oper configuration
   Format selector      :0
   Region name          :MST-TEST
   Revision level       :1
   Instance   VLANs Mapped
      0       1-9, 11-19, 21-4094
      1       10
      2       20
实验输出结果

解析: 未映射的 VLAN(包括默认 VLAN1)自动归入实例 0(CIST 实例)。实例 0 是 MSTP 的内部生成树,始终存在。


6.2 查看生成树简要信息(核心验证命令)

shell

# 查看所有实例的生成树状态
<SW-CORE1> display stp brief

预期输出(SW-CORE1 上):

plaintext

 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/24       DESI  FORWARDING      NONE
   0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
   1    GigabitEthernet0/0/24       DESI  FORWARDING      NONE
   1    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   1    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
   2    GigabitEthernet0/0/24       ROOT  FORWARDING      NONE
   2    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   2    GigabitEthernet0/0/2        DESI  FORWARDING      NONE

解析:

  • 实例 1(MSTID 1): SW-CORE1 所有端口角色都是 DESI(指定端口),说明 SW-CORE1 是实例 1 的根桥—— 根桥上所有端口都是指定端口,不存在根端口。
  • 实例 2(MSTID 2): SW-CORE1 的 GE0/0/24(连接 SW-CORE2)角色为 ROOT(根端口),说明 SW-CORE1 在实例 2 中不是根桥,根桥是 SW-CORE2。这符合我们的设计预期。

预期输出(SW-CORE2 上):

plaintext

 MSTID  Port                        Role  STP State     Protection
   1    GigabitEthernet0/0/24       ROOT  FORWARDING      NONE
   1    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   1    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
   2    GigabitEthernet0/0/24       DESI  FORWARDING      NONE
   2    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   2    GigabitEthernet0/0/2        DESI  FORWARDING      NONE

解析: 与 SW-CORE1 正好相反 —— 实例 1 中 GE0/0/24 是根端口(根桥是 SW-CORE1),实例 2 中所有端口都是指定端口(SW-CORE2 是根桥)。


6.3 接入交换机负载分担验证(重点)

在 SW-AGG1 上查看生成树状态:

shell

<SW-AGG1> display stp brief

预期输出:

plaintext

 MSTID  Port                        Role  STP State     Protection
   1    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
   1    GigabitEthernet0/0/2        ALTE  DISCARDING      NONE
   1    GigabitEthernet0/0/3        DESI  FORWARDING      NONE
   2    GigabitEthernet0/0/1        ALTE  DISCARDING      NONE
   2    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE
   2    GigabitEthernet0/0/3        DESI  FORWARDING      NONE

核心解析(负载分担的本质):

表格

实例 根端口(转发) 替代端口(阻塞) 流量走向
实例 1(VLAN10) GE0/0/1(→CORE1) GE0/0/2(→CORE2) VLAN10 流量走 CORE1
实例 2(VLAN20) GE0/0/2(→CORE2) GE0/0/1(→CORE1) VLAN20 流量走 CORE2

同一台交换机的两个上联口,在不同实例中角色完全对调 —— 一个转发、一个阻塞,且阻塞的端口在不同实例中不同。两条物理链路都有流量在跑,这就是 MSTP 负载分担。


6.4 查看根桥信息

shell

# 查看实例1的根桥信息
<SW-CORE1> <SW-CORE1> display stp instance 1 | include MSTI Bridge|MSTI RegRoot

预期输出:

plaintext

MSTI Bridge ID      :0.4clf-ccdl-596a
MSTI RegRoot/IRPC   :0.4clf-ccdl-596a / 0

解析: MSTI Bridge ID 是本交换机在该实例中的桥 ID(优先级 + MAC),MSTI RegRoot 是该实例的域根桥 ID。两者相同且优先级为 0,说明本交换机就是实例 1 的根桥。IRPC(内部根路径开销)为 0 也印证了这一点 —— 根桥到自身的路径开销为 0。


七、MSTP 关键原理解析

7.1 MSTP 与 STP/RSTP 的对比

表格

特性 STP RSTP MSTP
收敛速度 慢(30-50 秒) 快(秒级) 快(秒级)
生成树数量 1 棵 1 棵 多棵(按实例)
VLAN 感知
负载分担 不支持 不支持 支持
带宽利用率 低(阻塞链路闲置) 高(多实例分流)

7.2 MSTP 端口角色

表格

角色 说明
Root(根端口) 非根桥上到根桥路径开销最小的端口,负责转发流量
Designated(指定端口) 每个网段上到根桥路径开销最小的交换机端口,负责向该网段转发
Alternate(替代端口) 根端口的备份,当根端口故障时接替,处于 Discarding 状态
Backup(备份端口) 指定端口的备份,同一交换机上两个端口互联时出现
Master(主端口) MSTP 域边界端口,连接其他域或 CST,类似域内的根端口

7.3 为什么需要 active 命令?

华为 VRP 中,MSTP 域配置采用两阶段提交机制:

  1. mst-region 视图下修改配置(暂存区)
  2. 执行 active 命令后才真正生效(提交)

这样设计的好处是:可以一次性修改多项域配置,确认无误后统一激活,避免中间状态导致网络震荡。


八、常见排障思路

问题 1:所有交换机显示的根桥都是同一台,没有负载分担

排查方向:

  • 检查所有交换机的 region-namerevision-levelinstance-vlan 映射 是否完全一致
  • 使用 display stp region-configuration 对比各设备配置
  • 确认是否执行了 active 命令

问题 2:端口角色不符合预期

排查方向:

  • 检查 stp instance X root primary/secondary 是否配置在正确的设备上
  • 确认链路两端接口的 link-type 和允许通过的 VLAN 是否一致
  • 使用 display stp interface GigabitEthernet X/X/X 查看端口详细信息

问题 3:MSTP 域配置不生效

排查方向:

  • 确认是否在 stp region-configuration 视图下执行了 active
  • 检查 stp mode 是否为 mstp(某些设备可能被改为 stprstp

问题 4:接入交换机只有一个端口转发,另一个不阻塞

排查方向:

  • 确认接入交换机是否真的双上联到了两台核心(检查物理连线和接口状态)
  • 使用 display interface brief 确认两个上联口都处于 UP 状态
  • 如果只有一条链路 UP,MSTP 无环可破,自然不会阻塞端口

九、实验总结

  1. MSTP 核心价值:通过 VLAN - 实例映射,让不同 VLAN 走不同生成树,实现链路负载分担,提高带宽利用率。
  2. 配置三要素:域名、修订级别、VLAN 映射表,同一域内所有设备必须完全一致。
  3. 根桥指定:通过 stp instance X root primary/secondary 精确控制每个实例的根桥位置,是负载分担设计的关键。
  4. 必做操作:MSTP 域配置修改后必须执行 active 才能生效。
  5. 验证方法display stp brief 查看各实例端口角色,确认接入交换机在不同实例中根端口不同,即说明负载分担生效。

MSTP 是企业网中最常用的二层防环协议,掌握它的配置和验证方法是网络工程师的基本功。建议在 eNSP 中亲手搭建拓扑复现本实验,重点观察 display stp brief 输出中接入交换机各实例端口角色的差异,加深对负载分担原理的理解。


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐