一、实验背景
在传统的 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 主根),两条上行链路互为备份,带宽利用率翻倍。
三、实验目的
- 掌握 MSTP 域(Region)的配置方法
- 理解 VLAN 与生成树实例的映射关系
- 掌握主根 / 备根的指定方式
- 验证多实例下的负载分担效果
四、配置前准备
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 域配置采用两阶段提交机制:
- 在
mst-region视图下修改配置(暂存区) - 执行
active命令后才真正生效(提交)
这样设计的好处是:可以一次性修改多项域配置,确认无误后统一激活,避免中间状态导致网络震荡。
八、常见排障思路
问题 1:所有交换机显示的根桥都是同一台,没有负载分担
排查方向:
- 检查所有交换机的
region-name、revision-level、instance-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(某些设备可能被改为stp或rstp)
问题 4:接入交换机只有一个端口转发,另一个不阻塞
排查方向:
- 确认接入交换机是否真的双上联到了两台核心(检查物理连线和接口状态)
- 使用
display interface brief确认两个上联口都处于 UP 状态 - 如果只有一条链路 UP,MSTP 无环可破,自然不会阻塞端口
九、实验总结
- MSTP 核心价值:通过 VLAN - 实例映射,让不同 VLAN 走不同生成树,实现链路负载分担,提高带宽利用率。
- 配置三要素:域名、修订级别、VLAN 映射表,同一域内所有设备必须完全一致。
- 根桥指定:通过
stp instance X root primary/secondary精确控制每个实例的根桥位置,是负载分担设计的关键。 - 必做操作:MSTP 域配置修改后必须执行
active才能生效。 - 验证方法:
display stp brief查看各实例端口角色,确认接入交换机在不同实例中根端口不同,即说明负载分担生效。
MSTP 是企业网中最常用的二层防环协议,掌握它的配置和验证方法是网络工程师的基本功。建议在 eNSP 中亲手搭建拓扑复现本实验,重点观察
display stp brief输出中接入交换机各实例端口角色的差异,加深对负载分担原理的理解。