前言
二层网络为了可靠性,通常会把接入交换机双归到两台汇聚交换机上,这就形成了环路。STP/RSTP 会把环路算成一棵生成树:一条链路转发,另一条被阻塞。问题在于,被阻塞的链路对所有 VLAN 都不转发——VLAN2 的流量走了左边,VLAN3 也只能跟着走左边,右边那条链路的带宽就白白闲置了。
MSTP(Multiple Spanning Tree Protocol,多生成树协议)用“实例(Instance)”解决了这个矛盾:把多个 VLAN 映射到同一个实例,每个实例独立计算一棵生成树,不同实例可以把阻塞点放在不同链路上,从而在冗余备份的同时实现 VLAN 间的负载均衡。收敛速度上,MSTP 完整继承了 RSTP 的快速收敛机制,仍然是秒级。
本文按“为什么需要 MSTP → 基本概念 → 工作原理 → 华为配置 → 双归实验 → 排错”的顺序展开。命令基于华为 VRP 平台(S5700 / S3700,eNSP 可复现),其他厂商的实例、域概念相通,命令不同。
MSTP 概述
RSTP/STP 的不足
先看一个典型场景。
背景:
- SW3 为接入交换机,连接终端网段;SW1 和 SW2 为汇聚交换机。将 SW1 设为 VLAN2 内终端的网关,SW2 设为 VLAN3 内终端的网关,并且所有链路均允许 VLAN2 和 VLAN3 通过。
- 运行单个生成树之后,环路被打破,VLAN2 和 VLAN3 的数据都直接到 SW1。
问题:
- 由于 SW3 与 SW2 间的链路被阻塞,VLAN3 的数据到达网关的路径是次优的,最优的路径应当是由 SW3 直达 SW2。


根本原因不是生成树算得慢,而是“一棵树只能有一种阻塞结果”。STP/RSTP 的 BPDU 里没有实例的概念,所有 VLAN 共用同一套端口状态,因此阻塞是“全局”的:一条链路被阻塞,上面承载的所有 VLAN 一起失去转发能力。
另一种思路是每个 VLAN 单独跑一棵树(PVST/PVST+ 的思路),让各 VLAN 独立选路。但 VLAN 一多,BPDU 数量和生成树状态机就线性增长,接入层交换机的 CPU 和带宽开销随之上升。MSTP 走的是折中路线:多个 VLAN 共享一个实例,实例数量可控,既拿到了负载均衡,又没有把开销放大。
多生成树协议概述
MSTP 是 IEEE 802.1s 标准定义的生成树协议(2002 年发布,后来并入 802.1Q)。它兼容 STP 和 RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现 VLAN 数据的负载均衡。
MSTP 可以将一个或多个 VLAN 映射到一个 Instance(实例),再基于 Instance 计算生成树,映射到同一个 Instance 的 VLAN 共享同一棵生成树。换句话说,MSTP 不是“每个 VLAN 一棵树”,而是“一组 VLAN 一棵树”。

| 协议 | 标准 | 收敛速度 | 负载均衡 | BPDU 类型 |
| STP | IEEE 802.1D | 30–50 秒 | 不支持 | 配置 BPDU(版本 0) |
| RSTP | IEEE 802.1w(并入 802.1D-2004) | 秒级 | 不支持 | RST BPDU(版本 2) |
| MSTP | IEEE 802.1s(并入 802.1Q) | 秒级 | 支持,按实例 | MST BPDU(版本 3) |
三种协议可以在同一张网络里共存:MSTP 设备之间跑 MSTP,遇到只支持 STP/RSTP 的设备时自动按对应版本交互,这也是现网升级时常见的混合组网方式。
MSTP 的基本概念
MST Region
MSTP 网络层次:
- MSTP 把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
MST Region(Multiple Spanning Tree Region,多生成树域),也可简称 MST 域:
- 由交换网络中的多台交换设备以及它们之间的网段所构成。
- 一个局域网可以存在多个 MST 域,各 MST 域之间在物理上直接或间接相连。用户可以通过 MSTP 配置命令把多台交换设备划分在同一个 MST 域内。
- MSTP 网络中包含 1 个或多个 MST 域,每个 MST 域中包含一个或多个多生成树实例。

判断两台设备是否属于同一个域,看三项配置:域名(region-name)、修订级别(revision-level)、VLAN 与实例的映射关系。三项完全一致才属于同一个域;任何一项不同,MSTP 就会把它们算成两个域,域内那套多实例路径也就失效了,流量会绕到 CST 上走。
连接其他 MST 域,或者连接运行 STP/RSTP 设备的端口,称为域边界端口。域边界端口上跑的是 CST 的计算结果,而不是域内某个实例的路径。
MSTI
MSTI(Multiple Spanning Tree Instance,多生成树实例):
- 一个 MST 域内可以生成多棵生成树,每棵生成树都称为一个 MSTI。
- MSTI 使用 Instance ID 标识,华为设备取值为 0~4094。
VLAN 映射表:
- 是 MST 域的属性,描述了 VLAN 和 MSTI 之间的映射关系。
- 如图所示的 MST Region 4 的 VLAN 映射有:VLAN1 映射到 MSTI 1;VLAN2 映射到 MSTI 2;其余 VLAN 映射到 MSTI 3。

- 实例 0 是特殊的实例,固定用于 IST/CIST 计算,不能手工把 VLAN 映射到实例 0;未映射的 VLAN 默认都留在实例 0。
- 实例 1~4094 可以由用户自定义,但一台设备实际能创建的实例数量取决于产品型号和规格,规划时不要按 4094 顶格算。
- 一个 VLAN 只能映射到一个实例;一个实例可以包含多个 VLAN。
- 修改映射关系后必须在域视图执行
active region-configuration才生效,否则配置只是“待激活”状态。
CST
CST(Common Spanning Tree,公共生成树):
- 是连接交换网络内所有 MST 域的一棵生成树。
- 如果把每个 MST 域看作是一个节点,CST 就是这些节点通过生成树协议计算生成的一棵生成树。
- 如图深蓝色粗线条连接各个域构成 CST。

在 CST 的视角里,整个 MST 域被抽象成一台“虚拟交换机”,域内有多少台设备、怎么连,对域外都是透明的。域间链路上运行的是与 RSTP 兼容的 CST,所以跨域仍然能快速收敛。
IST
IST(Internal Spanning Tree,内部生成树):
- 是各 MST 域内的一棵生成树。
- IST 是一个特殊的 MSTI,MSTI 的 Instance ID 为 0。
- 如图所示的 MST Region 4,黑色细线条在域中连接该域的所有交换设备构成 IST。

IST 的根称为 IST 域根。域内所有 VLAN 的 BPDU 都靠 IST 承载,它相当于域内的“骨架树”,各个 MSTI 都在这套骨架之上计算自己的路径。
CIST
CIST(Common and Internal Spanning Tree,公共和内部生成树):
- 通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
- 如图所示,所有 MST 域的 IST 加上 CST 就构成一棵完整的生成树,即 CIST。

可以简单记成:CIST = IST + CST。当整个网络只有一个 MST 域时,CST 退化成域内的连接关系,CIST 与 IST 重合。
SST
SST(Single Spanning Tree,单生成树):
- 运行生成树协议的交换设备只能属于一个生成树。
- MST 域中只有一个交换设备,这个交换设备构成单生成树。
- 如图所示的 MST Region 3,该域中的唯一的交换设备构成 SST。

总根、域根和主桥
总根(CIST Root):
- 是 CIST 的根桥,如图中 SW1。
域根(Regional Root):
- 分为 IST 域根和 MSTI 域根。
- IST 域根,在 MST 域中 IST 生成树中距离总根最近的交换设备是 IST 域根,如图中 SW2、SW3、SW4。
- MSTI 域根是每个多生成树实例的树根。
主桥(Master Bridge):
- 是 IST Master,它是域内距离总根最近的交换设备,如图中 SW1、SW2、SW3、SW4。
- 如果总根在 MST 域中,则总根为该域的主桥。

四个概念容易混,按范围记:总根全网络只有一个;IST 域根每个域一个;MSTI 域根每个实例每个域一个;主桥就是 IST 域根的一种叫法(IST Master),它同时也是域内去往总根的出口。
MSTP 的端口角色
MSTP 中定义的所有端口角色包括:
根端口、指定端口、Alternate 端口、Backup 端口、Master 端口、域边缘端口和边缘端口。
| 端口角色 | 说明 | 用户流量 |
| 根端口 | 非根桥上到树根路径开销最小的端口,负责向总根(CIST)或域根(MSTI)方向转发数据。 | 转发 |
| 指定端口 | 所在网段到树根方向的上游端口,负责向该网段转发用户流量并下发 BPDU。 | 转发 |
| Alternate 端口 | 由于学习到其他网桥发送的配置 BPDU 而被阻塞的端口,作为根端口的备份,提供从指定桥到根的另一条可切换路径。 | 阻塞 |
| Backup 端口 | 由于学习到自己发送的配置 BPDU 而被阻塞的端口,作为指定端口的备份,提供另一条从根到叶的备份通路。 | 阻塞 |
| Master 端口 | MST 域到总根的所有路径中最短路径上的域边缘端口,是域内报文去往总根的必经出口;在 CIST 上是 Root Port,在各 MSTI 上是 Master 端口。 | 转发 |
| 域边缘端口 | 位于 MST 域边缘,连接其他 MST 域或 SST/STP/RSTP 设备的端口。 | 转发或阻塞 |
| 边缘端口 | 位于整个域边缘、不再连接任何交换设备的指定端口,一般直连终端,不参与生成树计算。 | 转发 |
记忆方法:根端口和指定端口负责“正常转发”,Alternate 是根端口的备胎,Backup 是指定端口的备胎,Master 是出域的门,域边缘端口连接别的域,边缘端口连接终端。
MSTP 的端口状态
MSTP 定义的端口状态与 RSTP 协议中定义相同:
- Forwarding 状态:端口既转发用户流量,学习 MAC 地址,又接收/发送 BPDU 报文。
- Learning 状态:过渡状态,端口接收/发送 BPDU 报文,不转发用户流量但是学习 MAC 地址。
- Discarding 状态:端口只接收 BPDU 报文,不转发用户流量也不学习 MAC 地址。
| MSTP 端口状态 | 端口在拓扑中的角色 |
| Forwarding | 根端口、指定端口、Master 端口、域边缘端口 |
| Learning | 根端口、指定端口、Master 端口、域边缘端口 |
| Discarding | 根端口、指定端口、Master 端口、域边缘端口、Alternate 端口、Backup 端口 |
相比 STP 的五种状态(Disabled/Blocking/Listening/Learning/Forwarding),RSTP/MSTP 只保留三种:Disabled、Blocking、Listening 统一合并进 Discarding,靠端口角色来区分“这个端口为什么不转发”。
MSTP 报文
MSTP 使用 MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。
MST BPDU 报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。

MST BPDU 的协议版本号为 3。相比 RST BPDU,它在保留 CIST 相关字段的同时,还为每个 MSTI 附带一组配置信息(域根 ID、内部路径开销、指定桥 ID、指定端口 ID、标志位等)。一台设备发出的 MST BPDU 里可以同时携带多个实例的计算结果,这也是 MSTP 用一份报文维护多棵树的关键。
| 定时器 | 默认值 | 作用 |
| Hello Time | 2 秒 | BPDU 发送周期 |
| Forward Delay | 15 秒 | 状态迁移的过渡时间;MSTP 有 P/A 快速握手,多数场景用不到 |
| Max Age | 20 秒 | BPDU 的老化时间,超时则认为链路/邻居失效 |
拓扑发生变化时,设备会沿树向总根方向发送 TC(Topology Change)报文,总根再向下泛洪,各设备收到后把 MAC 地址表的老化时间临时缩短为 Forward Delay,让流量尽快切换到新路径。
MSTP 的工作原理
MSTP 拓扑计算
MSTP 拓扑计算:
- MSTP 可以将整个二层网络划分为多个 MST 域,各个域之间通过计算生成 CST,域内生成 IST,CST 和 IST 构成了整个交换设备网络的 CIST。
- 域内还可以基于实例计算生成多棵生成树,每棵生成树都被称为是一个 MSTI。
CIST 和 MSTI 都是根据优先级向量来计算的,这些优先级向量信息都包含在 MST BPDU 中。各交换设备互相交换 MST BPDU 来生成 CIST 和 MSTI。
- 参与 CIST 计算的优先级向量为:{ 根交换设备 ID,外部路径开销,域根 ID,内部路径开销,指定交换设备 ID,指定端口 ID,接收端口 ID }。
- 参与 MSTI 计算的优先级向量为:{ 域根 ID,内部路径开销,指定交换设备 ID,指定端口 ID,接收端口 ID }。
向量从左到右逐项比较,先比出结果的一项就决定胜负,后面不再看。CIST 比 MSTI 多了“根交换设备 ID”和“外部路径开销”两项,对应的正是域间那一段路径:外部路径开销是域边界到总根的开销,内部路径开销是域内到域根的开销。
CIST 计算
经过比较 MST BPDU 消息后,在整个网络中选择一个优先级最高的交换设备作为 CIST 的树根,即总根。在每个 MST 域内,MSTP 通过计算生成 IST;同时 MSTP 将每个 MST 域作为单台交换设备对待,通过计算在 MST 域间生成 CST。CST 和 IST 构成了整个交换设备网络的 CIST。

- 第一步:全网比较优先级向量,选出唯一的 CIST 总根。
- 第二步:每个 MST 域独立计算 IST,选出距总根最近的设备作为 IST 域根(主桥)。
- 第三步:把每个域抽象成一台虚拟交换机,域间按外部路径开销计算 CST。
- 第四步:IST 与 CST 拼接,得到覆盖全网的 CIST,各端口在 CIST 上的角色随之确定。
MSTI 计算
在 MST 域内,MSTP 根据 VLAN 和生成树实例的映射关系,针对不同的 VLAN 生成不同的生成树实例。每棵生成树独立进行计算,计算过程与 STP 计算生成树的过程类似。

每个实例有自己的域根、自己的阻塞端口。同一台设备在实例 1 里可能是根桥,在实例 2 里可能只是普通节点,这正是 MSTP 能做负载均衡的原因:只要让不同实例的根桥落在不同设备上,阻塞点就会落在不同链路上。
MSTP 网络数据转发
在运行 MSTP 协议的网络中,一个 VLAN 报文将沿着如下路径进行转发:
- 在 MST 域内,沿着其对应的 MSTI 转发。
- 在 MST 域间,沿着 CST 转发。

报文出域时,必然经过主桥上的 Master 端口。所以跨域流量的路径可以概括为:源端所在实例的树 → 本域主桥 → CST → 对端域主桥 → 对端实例的树。
多实例如何实现负载均衡
关键动作只有一个:让不同实例的根桥落在不同设备上。以两台汇聚 + 两台接入的双归组网为例:
| 生成树实例 | 承载 VLAN | 根桥(primary) | 备份根桥(secondary) |
| 实例 1 | VLAN2 | LSW1 | LSW2 |
| 实例 2 | VLAN3 | LSW2 | LSW1 |
实例 1 的树以 LSW1 为根,VLAN2 的流量走 LSW1 一侧的上行;实例 2 的树以 LSW2 为根,VLAN3 的流量走 LSW2 一侧的上行。两条上行链路同时承载流量,不再有一条整段闲置。任意一台汇聚故障时,另一个实例的备份根桥接管,业务仍能收敛到剩余路径。
要注意两点:一是根桥位置由优先级决定,不要依赖默认的 32768 让设备“碰运气”选出来,规划里写清楚谁是 primary、谁是 secondary;二是负载均衡的粒度是实例,不是 VLAN,VLAN 数量多时要按业务或网关归并,别一对一做映射。
收敛与拓扑变化
MSTP 的快速收敛完全来自 RSTP:点到点链路上用 P/A(Proposal/Agreement)握手,上游提出建议、下游立即同意,端口不必再等 Forward Delay 就能进入 Forwarding;边缘端口链路 UP 后直接转发,不参与计算。
链路故障时,设备先把自己上的端口置为 Discarding,再从 Alternate/Backup 端口里选新的根端口,同时向总根方向发 TC 报文,让全网刷新 MAC 表。整个过程通常在秒级完成,具体时间和拓扑规模、链路数量有关。
如果现网频繁出现 TC,说明有端口在反复 UP/DOWN,或者有接入口误接了交换机导致边缘端口收到 BPDU。可以用 display stp tc-bpdu statistics 观察 TC 计数,配合 stp tc-protection 限制单位时间内的 TC 处理次数,避免 MAC 表被反复冲刷。
MSTP 的基本配置
MSTP 的基础配置命令
1. 配置生成树工作模式。交换机支持 STP、RSTP 和 MSTP 三种模式,缺省工作在 MSTP 模式。
[Huawei] stp mode mstp
2. 启用 MSTP,使能交换设备或端口上的 STP/RSTP/MSTP 功能。缺省情况下,全局和端口的 STP/RSTP/MSTP 均使能。注意:为了保证生成树计算过程快速而且稳定,必须在启用 STP/RSTP/MSTP 之前,完成对交换设备及其端口必要的基本配置。
[Huawei] stp enable
端口下也可以单独关闭生成树,例如确认不会成环的服务器接入端口:在接口视图执行 stp disable;需要恢复时执行 stp enable。但这个口一旦接上交换机就可能形成环路,生产环境更推荐用边缘端口 + BPDU 保护,而不是直接关协议。
配置 MST 域并激活
完整的域配置顺序是:切换模式 → 全局使能 → 进入域视图 → 配域名 → 配 VLAN 与实例映射 →(可选)改修订级别 → 检查 → 激活。
<Huawei> system-view
[Huawei] stp mode mstp
[Huawei] stp enable
[Huawei] stp region-configuration
[Huawei-mst-region] region-name MSTP-LAB
[Huawei-mst-region] instance 1 vlan 2
[Huawei-mst-region] instance 2 vlan 3
[Huawei-mst-region] revision-level 0
[Huawei-mst-region] check region-configuration
[Huawei-mst-region] active region-configuration
[Huawei-mst-region] quit
revision-level 缺省为 0,一般不改;只有同一网络里需要跑两套互不干扰的域配置时,才会用修订级别区分。check region-configuration 只做检查、不生效,用来在激活前确认域名、修订级别和映射表是否正确。
配置完必须执行 active region-configuration,否则域名、VLAN 映射表和修订级别都不会生效。激活操作可能引起生成树重新计算,现网要在窗口期做。同一个域内所有设备的这三项配置必须保持一致,否则会被判成不同域,多实例路径失效,流量绕行 CST。
MSTP 的可选配置命令
1. 配置根桥和备份根桥。
[Huawei] stp [ instance instance-id ] root { primary | secondary }
不指定实例时作用于实例 0(CIST)。root primary 会把优先级降到 0,root secondary 降到 4096,是“让这台设备当根”的最简写法。
2. 配置交换设备在指定生成树实例中的优先级。
[Huawei] stp [ instance instance-id ] priority priority
优先级取值范围 0~61440,步长 4096,缺省 32768。数值越小越优先,需要精确控制根桥顺序时用这条命令。
3. 配置路径开销值的计算方法。缺省情况下,路径开销值的计算方法为 IEEE 802.1T 标准(dot1t)。
[Huawei] stp pathcost-standard { dot1d-1998 | dot1t | legacy }
同一网络内所有设备应使用同一种计算方法,否则各设备对“哪条路径更短”的判断不一致,容易出现预期外的阻塞端口。
配置当前端口在指定生成树上的端口路径开销。缺省情况下,端口在各个生成树上的路径开销为端口速率对应的路径开销。
[Huawei-GigabitEthernet0/0/1] stp [ instance instance-id ] cost cost
4. 配置端口在指定生成树实例中的优先级。缺省情况下,交换设备端口的优先级取值是 128。
[Huawei-GigabitEthernet0/0/1] stp [ instance instance-id ] port priority priority
端口优先级取值范围 0~240,步长 16。当两条路径的根路径开销相同、需要靠上游端口 ID 破局时,改端口优先级比改设备优先级更精细。
5. 常用的端口级保护,按需开启:
[Huawei] stp bpdu-protection
[Huawei-GigabitEthernet0/0/1] stp edged-port enable
[Huawei-GigabitEthernet0/0/1] stp root-protection
[Huawei-GigabitEthernet0/0/1] stp loop-protection
stp edged-port enable:把直连终端的端口设为边缘端口,链路 UP 后立即转发,不参与生成树计算。stp bpdu-protection(全局):边缘端口一旦收到 BPDU 就进入 error-down,防止误接交换机把环路引进网络。stp root-protection:在根桥的指定端口上开启,防止下游设备抢占根桥导致流量绕行。stp loop-protection:在自环风险高的端口上开启,避免根端口/Alternate 端口长期收不到 BPDU 时误转发。
配置核查与验证
| 命令 | 用途 |
| display stp region-configuration | 查看本机域名、修订级别、VLAN 与实例映射,确认是否已激活 |
| display stp [ instance instance-id ] brief | 按实例查看端口角色和状态,快速定位阻塞点 |
| display stp [ instance instance-id ] | 查看某实例的根桥、域根、路径开销、优先级向量等详细信息 |
| display stp tc-bpdu statistics | 查看 TC/TCN 收发计数,判断是否存在频繁拓扑变化 |
| display stp interface GigabitEthernet0/0/1 | 查看单个端口的生成树状态与保护配置 |
display stp brief 的输出里,MSTID 是实例号,Role 是端口角色(ROOT/DESIGNATED/ALTE/BACKUP/MASTER),STP State 是端口状态(FORWARDING/DISCARDING),Protection 显示该端口启用了哪种保护。
实操案例
下面用四台交换机搭一个双归拓扑:LSW1、LSW2 作汇聚并上联 AR1220-ISP 路由器,LSW3、LSW4 作接入,PC1 接 LSW3(VLAN2),PC2 接 LSW4(VLAN3)。四台交换机划入同一个 MST 域,实例 1 承载 VLAN2、根桥为 LSW1,实例 2 承载 VLAN3、根桥为 LSW2。

| 设备 | 角色 | 关键接口 | 说明 |
| AR1220-ISP | 出口路由器 | GE0/0/0、GE0/0/1 | 与两台汇聚三层互联,本文从略 |
| LSW1 | 汇聚 / 实例 1 根桥 | GE0/0/1 接 LSW2,GE0/0/2 接 LSW3 | VLAN2 网关 192.168.1.254 |
| LSW2 | 汇聚 / 实例 2 根桥 | GE0/0/1 接 LSW1,GE0/0/2 接 LSW4 | VLAN3 网关 192.168.2.254 |
| LSW3 | 接入 | GE0/0/1 接 LSW4,GE0/0/2 接 LSW1 | Ethernet0/0/1 接 PC1 |
| LSW4 | 接入 | GE0/0/1 接 LSW3,GE0/0/2 接 LSW2 | Ethernet0/0/1 接 PC2 |
规划如下:域名为 MSTP-LAB,修订级别保持 0;实例 1 映射 VLAN2、实例 2 映射 VLAN3,其余 VLAN 留在实例 0;PC1 网关为 LSW1 的 Vlanif2(192.168.1.254),PC2 网关为 LSW2 的 Vlanif3(192.168.2.254)。两台汇聚上同时配置两个 VLANIF,通过 OSPF 打通三层,VLAN2 与 VLAN3 之间可以互访。
LSW1 配置
vlan batch 2 to 3
#
dhcp enable
#
stp instance 1 root primary
stp instance 2 root secondary
#
stp region-configuration
region-name MSTP-LAB
instance 1 vlan 2
instance 2 vlan 3
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface Vlanif2
ip address 192.168.1.254 255.255.255.0
dhcp select global
#
interface Vlanif3
ip address 192.168.2.253 255.255.255.0
#
ip pool vlan2
gateway-list 192.168.1.254
network 192.168.1.0 mask 255.255.255.0
excluded-ip-address 192.168.1.200 192.168.1.253
lease day 3 hour 0 minute 0
dns-list 114.114.114.114 223.5.5.5
#
ospf 1
area 0.0.0.0
network 192.168.1.0 0.0.0.255
network 192.168.2.0 0.0.0.255
LSW2 配置:与 LSW1 镜像,根桥角色对调。
vlan batch 2 to 3
#
dhcp enable
#
stp instance 1 root secondary
stp instance 2 root primary
#
stp region-configuration
region-name MSTP-LAB
instance 1 vlan 2
instance 2 vlan 3
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface Vlanif2
ip address 192.168.1.253 255.255.255.0
#
interface Vlanif3
ip address 192.168.2.254 255.255.255.0
dhcp select global
#
ip pool vlan3
gateway-list 192.168.2.254
network 192.168.2.0 mask 255.255.255.0
excluded-ip-address 192.168.2.200 192.168.2.253
lease day 3 hour 0 minute 0
dns-list 114.114.114.114 223.5.5.5
#
ospf 1
area 0.0.0.0
network 192.168.1.0 0.0.0.255
network 192.168.2.0 0.0.0.255
LSW3 配置:接入交换机,必须配同一套域参数;接终端口设为边缘端口。
vlan batch 2 to 3
#
stp region-configuration
region-name MSTP-LAB
instance 1 vlan 2
instance 2 vlan 3
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface Ethernet0/0/1
port link-type access
port default vlan 2
stp edged-port enable
LSW4 配置:与 LSW3 对称,终端侧接口划入 VLAN3。
vlan batch 2 to 3
#
stp region-configuration
region-name MSTP-LAB
instance 1 vlan 2
instance 2 vlan 3
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
interface Ethernet0/0/1
port link-type access
port default vlan 3
stp edged-port enable
这里有两个容易漏掉的细节:一是 dhcp enable 必须在全局开启,只配 ip pool 和 dhcp select global 是不会分配地址的;二是四台交换机的 region-name、revision-level、VLAN 映射必须完全一致,接入层漏配域参数就会退化成跨域转发。
配置完成后,先在任意一台设备上确认域参数已生效:
[LSW3] display stp region-configuration
Oper configuration
Format selector :0
Region name :MSTP-LAB
Revision level :0
Instance VLANs
0 1, 4 to 4094
1 2
2 3
再查看端口角色,确认两个实例的阻塞点落在不同链路上:
[LSW3] display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ALTE DISCARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1 GigabitEthernet0/0/1 ALTE DISCARDING NONE
1 GigabitEthernet0/0/2 ROOT FORWARDING NONE
2 GigabitEthernet0/0/1 ROOT FORWARDING NONE
2 GigabitEthernet0/0/2 ALTE DISCARDING NONE
上表为示意输出:同一实例内阻塞哪条链路,由根路径开销、桥 ID 和端口 ID 共同决定,实际以设备输出为准。关键看两点:实例 1 和实例 2 的 ROOT 端口不在同一条链路上,说明两个实例走了不同的上行;实例 0 的阻塞点则跟随 IST 的计算结果。
最后在 PC 上验证连通性:PC1 能 ping 通 192.168.1.254 和 192.168.2.254,PC2 同理,且 tracert 显示 VLAN2 走 LSW1 方向、VLAN3 走 LSW2 方向,就说明负载均衡生效了。
故障切换演练:在 LSW1 上关闭接 LSW3 的接口,观察 VLAN2 是否收敛到备份路径。
[LSW1] interface GigabitEthernet0/0/2
[LSW1-GigabitEthernet0/0/2] shutdown
[LSW1-GigabitEthernet0/0/2] quit
[LSW1] display stp brief
此时 LSW3 在实例 1 中的根端口应当切换到另一个方向,PC1 的 ping 只会短暂丢几个包就恢复。测试完记得 undo shutdown 恢复接口,并确认阻塞点回到规划的位置。
常见问题与排错
| 现象 | 可能原因 | 处理 |
| 两台交换机没进同一个域 | region-name、revision-level、VLAN 映射有一项不一致 | 用 display stp region-configuration 逐项比对,统一后重新激活 |
| 改了 VLAN 映射不生效 | 忘记执行 active region-configuration | 域视图执行 active,再用 display 确认 |
| 接入口插上终端要等几十秒才通 | 端口未配置边缘端口,仍按普通端口参与计算 | 接入口执行 stp edged-port enable |
| 根桥不是规划的设备 | 优先级仍是默认 32768,或域不匹配 | 在汇聚层配 stp instance N root primary / secondary |
| 生成树反复震荡 | 存在双域、接线成环,或边缘端口误接交换机 | 核对域参数与接线,必要时启用 bpdu-protection |
| 某个 VLAN 完全不通 | 该 VLAN 未映射到实例,或 Trunk 未放行 | 检查 instance vlan 映射和 port trunk allow-pass vlan |
| 端口被 error-down | 开启 bpdu-protection 后边缘端口收到 BPDU | 排查是否误接交换机,用 error-down 恢复或 shutdown/undo shutdown |
部署建议
- 先定域,再定实例:域按管理边界划分,域名、修订级别、映射表在域内一次性规划好,避免后期改域引起全网震荡。
- 实例按业务或网关归并,控制在个位数到十几个;不要一个 VLAN 一个实例,否则又回到 PVST 的老路。
- 汇聚层成对配置 root primary / root secondary,让不同实例的根桥分散到两台设备上。
- 接入口统一开边缘端口和 BPDU 保护,上联口不要开 bpdu-filter,否则会屏蔽 BPDU、破坏生成树计算。
- 改域配置、调优先级、切根桥都放在维护窗口内做,改完用 display stp brief 回读确认。
- 关注 TC 计数,频繁的拓扑变化通常不是生成树本身的问题,而是链路抖动或接入口误接设备。
小结
- MSTP 用“实例”把多个 VLAN 映射到同一棵树,既保留了 RSTP 的秒级收敛,又解决了单生成树无法负载均衡的问题。
- MST 域由域名、修订级别、VLAN 映射三项共同定义,三项一致才是同一个域;域内跑 IST 和各 MSTI,域间跑 CST,合起来是 CIST。
- 总根全网络唯一,IST 域根每域一个,主桥就是 IST 域根;端口角色里 Master 负责出域,边缘端口负责接终端。
- 配置的核心是“域参数一致 + active 激活 + 根桥规划”,验证的核心是 display stp region-configuration 和 display stp brief。
- 负载均衡不是打开某个开关,而是把不同实例的根桥放到不同设备上,让阻塞点分散到不同链路。
如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。


Comments NOTHING