第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 |
| 现网推荐度 | ❌ 淘汰 | ⚠ 小网络可用 | ✅ 强烈推荐 |
九、思考
- STP 和 RSTP 为什么不能做 VLAN 负载均衡?根本原因是什么?
- MSTP 的"实例"是什么?一个实例对应几棵生成树?
- 两台交换机的 MST 区域配置中,region-name 不同,它们属于同一个 MST Region 吗?
- 激活 MSTP 区域配置用的是什么命令?忘了执行会怎样?
- 为什么实例 0 是必须存在的?什么 VLAN 属于实例 0?
- 如果 VLAN 10 被映射到实例 1,VLAN 20 没有映射(未做配置),VLAN 20 属于哪个实例?
下篇预告:第20篇《生成树故障案例_某企业网络环路导致全网瘫痪》——通过实际网络故障案例,掌握生成树问题的排查方法。