第19篇:MSTP 多实例生成树——VLAN 与实例的映射

一、写在前面

STP 和 RSTP 能消除环路,但它们有一个共同的副作用:

同一个网络中,所有 VLAN 共享一棵生成树。

这意味着即使有冗余链路,STP/RSTP 也会阻塞多余的那条——所有 VLAN 的流量都挤在同一条链路上,造成资源浪费。

MSTP(Multiple Spanning Tree Protocol,802.1s) 就是来解决这个问题的:

MSTP 把多个 VLAN 分组到不同的"实例"中,每个实例独立运行一棵生成树,从而实现不同 VLAN 走不同的冗余链路


二、STP/RSTP 的负载均衡缺陷

链路阻塞浪费问题

         [SW-A] 根桥
       G0/0/1   G0/0/2
        ╱        ╲
    [SW-B]     [SW-C]
       │          │
    VLAN10      VLAN20

在 STP/RSTP 下:

所有 VLAN(包括 10 和 20)共享同一棵生成树
→ SW-B↔SW-C 的链路被阻塞(冗余链路)
→ VLAN 10 的流量:SW-A→SW-B
→ VLAN 20 的流量:SW-A→SW-C  (即使从 SW-B↔SW-C 走更近,也不行)
→ SW-B↔SW-C 链路空闲,浪费了

理想状态

VLAN 10 走:SW-A → SW-B
VLAN 20 走:SW-A → SW-C → SW-B
VLAN 30 走:SW-A → SW-B
VLAN 40 走:SW-A → SW-C → SW-B

让不同的 VLAN 走不同的路径,实现负载均衡。这就是 MSTP 的目标。


三、MSTP 的核心概念

3.1 实例(Instance)

实例 = 一棵独立的生成树。

实例 说明
IST(Internal Spanning Tree) 实例 0,必须存在,默认所有 VLAN 在没有指定映射时属于实例 0
MSTI(MST Instance) 实例 1~63,用户自定义

3.2 关键术语

术语 简称 含义
Multiple Spanning Tree Instance MSTI 独立运行的生成树实例
Internal Spanning Tree IST 实例 0(CIST 的一部分)
Common and Internal Spanning Tree CIST 整个 MSTP 网络的公共生成树
MST Region 区域 具有相同 MSTP 配置的一组交换机
Regional Root 区域根桥 每个 MSTI 在区域内的根桥

四、MST 区域(MST Region)

4.1 什么是 MST 区域

MST 区域是配置完全一致的一组交换机。以下三项必须完全相同

配置项 说明
Region Name 区域名称(字符串)
Revision Level 修订级别(整数)
VLAN-to-Instance Mapping VLAN 到实例的映射关系

4.2 为什么要有区域?

区域的作用是把一个大型网络分成多个"自治域",不同区域之间通过 CIST 互通。

┌─── MST Region 1 ───┐ ┌─── MST Region 2 ───┐
Name: REGION-A Revision: 1 vlan 10→inst 1 vlan 20→inst 2 ───CIST── Name: REGION-B Revision: 1 vlan 10→inst 1 vlan 20→inst 2

关键:不同区域之间"看不见"对方的 MSTI,只能通过 CIST 互通。


五、配置实战

5.1 拓扑

         [SW-A]  (主根桥实例 1)
       G0/0/1   G0/0/2
        ╱        ╲
    [SW-B]     [SW-C]
      G0/0/3───G0/0/3
              ↑ 1Gbps 带宽

目标: - VLAN 10, 20 → 实例 1 → 走 SW-A↔SW-B↔SW-C 路径 - VLAN 30, 40 → 实例 2 → 走 SW-A↔SW-C 路径,SW-B↔SW-C 链路阻塞

5.2 配置步骤(三台交换机配置相同)

步骤 1:创建 VLAN

[SW-A] vlan batch 10 20 30 40

步骤 2:配置 MST 区域

[SW-A] stp region-configuration
[SW-A-mst-region] region-name GTS-BEIJING        ← 区域名称(三台必须一致)
[SW-A-mst-region] revision-level 1                ← 修订级别(三台必须一致)

# 将 VLAN 映射到实例
[SW-A-mst-region] instance 1 vlan 10 20            ← VLAN 10,20 属于实例 1
[SW-A-mst-region] instance 2 vlan 30 40            ← VLAN 30,40 属于实例 2

[SW-A-mst-region] active region-configuration      ← 激活配置(必须执行!)
[SW-A-mst-region] quit

步骤 3:设置实例根桥

# 让 SW-A 成为实例 1 的根桥
[SW-A] stp instance 1 root primary

# 让 SW-A 成为实例 2 的根桥
[SW-A] stp instance 2 root primary

步骤 4:手动调优——让不同实例走不同路径

在 SW-B 和 SW-C 上配置实例 2 的端口开销,使 SW-B↔SW-C 链路在实例 2 中被阻塞:

# 在 SW-C 上,增大 G0/0/3 在实例 2 中的开销(使其被阻塞)
[SW-C] interface gigabitethernet 0/0/3
[SW-C-GigabitEthernet0/0/3] stp instance 2 cost 20000

# 在 SW-B 上,保持 G0/0/3 开销小(使其被转发)
[SW-B] interface gigabitethernet 0/0/3
[SW-B-GigabitEthernet0/0/3] stp instance 1 cost 20000

步骤 5:启用 MSTP

[SW-A] stp enable             # 启用生成树(全局)
[SW-A] stp mode mstp          # 指定模式为 MSTP

5.3 验证

# 查看 MSTP 配置
[SW-A] display stp region-configuration
Oper configuration
  Region Name       : GTS-BEIJING
  Revision Level    : 1
  Instance 1 VLANS  : 10 20
  Instance 2 VLANS  : 30 40

# 查看实例 1 的生成树状态
[SW-A] display stp instance 1 brief
Bridge ID    : 0.00e0-fc00-0001
Root Bridge  : 0.00e0-fc00-0001    ← 自己是根桥

Port                Role         State        Cost
GigabitEthernet0/0/1   DESI         FORWARDING     20000
GigabitEthernet0/0/2   DESI         FORWARDING     20000

# 查看实例 2 的生成树状态
[SW-A] display stp instance 2 brief
Bridge ID    : 0.00e0-fc00-0001
Root Bridge  : 0.00e0-fc00-0001    ← 也是根桥

Port                Role         State        Cost
GigabitEthernet0/0/1   DESI         FORWARDING     20000
GigabitEthernet0/0/2   DESI         FORWARDING     20000

# 在 SW-C 上查看实例 1
[SW-C] display stp instance 1 brief
Port                Role         State        Cost
GigabitEthernet0/0/1   ROOT         FORWARDING     20000   ← 通过 SW-A
GigabitEthernet0/0/3   DESI         FORWARDING     20000   ← 到 SW-B 链路转发

# 在 SW-C 上查看实例 2
[SW-C] display stp instance 2 brief
Port                Role         State        Cost
GigabitEthernet0/0/1   ROOT         FORWARDING     20000   ← 通过 SW-A
GigabitEthernet0/0/3   ALTE         DISCARDING     20000   ← 到 SW-B 链路阻塞!

六、MSTP 的负载均衡效果

实例 1(VLAN 10,20)的转发路径:
  SW-A ──→ SW-B ──→ SW-C    ← SW-B↔SW-C 链路转发

实例 2(VLAN 30,40)的转发路径:
  SW-A ──→ SW-C              ← SW-B↔SW-C 链路阻塞
  VLAN 30,40 不走 SW-B

结果:
  SW-B↔SW-C 链路被两者"共享"——
  实例 1 用它转发,实例 2 阻塞它
  链路利用率翻倍!

七、MSTP 常用命令

# 查看 MST 区域配置
display stp region-configuration

# 查看指定实例的生成树
display stp instance 1

# 查看指定实例的简要信息
display stp instance 1 brief

# 查看 MSTP 全局信息
display stp

# 配置实例根桥
stp instance 1 root primary        # 主根桥(优先级 0)
stp instance 1 root secondary      # 备根桥(优先级 4096)

# 手工指定实例优先级
stp instance 1 priority 4096

# 配置实例端口开销
interface GigabitEthernet0/0/1
 stp instance 1 cost 10000

八、STP 家族对比

特性 STP (802.1D) RSTP (802.1w) MSTP (802.1s)
收敛时间 30~50 秒 1~3 秒 1~3 秒
VLAN 负载均衡 ❌ 不能 ❌ 不能 可以
端口状态数 5 3 3
端口角色数 3 4 4
标准制定年份 1990 2001 2002
现网推荐度 ❌ 淘汰 ⚠ 小网络可用 强烈推荐

九、思考

  1. STP 和 RSTP 为什么不能做 VLAN 负载均衡?根本原因是什么?
  2. MSTP 的"实例"是什么?一个实例对应几棵生成树?
  3. 两台交换机的 MST 区域配置中,region-name 不同,它们属于同一个 MST Region 吗?
  4. 激活 MSTP 区域配置用的是什么命令?忘了执行会怎样?
  5. 为什么实例 0 是必须存在的?什么 VLAN 属于实例 0?
  6. 如果 VLAN 10 被映射到实例 1,VLAN 20 没有映射(未做配置),VLAN 20 属于哪个实例?

下篇预告:第20篇《生成树故障案例_某企业网络环路导致全网瘫痪》——通过实际网络故障案例,掌握生成树问题的排查方法。