欢迎光临
我们一直在努力

MSTP 多实例生成树配置详解(负载分担实战)

一、实验背景

在传统的 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 的对比

    表格

    特性STPRSTPMSTP
    收敛速度 慢(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 输出中接入交换机各实例端口角色的差异,加深对负载分担原理的理解。


    赞(0)
    未经允许不得转载:171主机测评 » MSTP 多实例生成树配置详解(负载分担实战)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址