前言

二层网络为了可靠性,通常会把接入交换机双归到两台汇聚交换机上,这就形成了环路。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。
RSTP/STP 单生成树场景:SW3 上联 SW2 的链路被阻塞,VLAN3 流量绕行 SW1 到达网关
图 1:单生成树下,SW3 上联 SW2 的链路被阻塞(以三台交换机示意)
单生成树下的次优路径:VLAN3 数据需经 SW1 转发才能到达 SW2 网关
图 2:VLAN3 的流量被迫绕行 SW1,路径次优

根本原因不是生成树算得慢,而是“一棵树只能有一种阻塞结果”。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 一棵树”。

MSTP 多实例示意图:VLAN 按映射关系分配到不同生成树实例
图 3:VLAN 映射到实例,实例再各自生成树
协议标准收敛速度负载均衡BPDU 类型
STPIEEE 802.1D30–50 秒不支持配置 BPDU(版本 0)
RSTPIEEE 802.1w(并入 802.1D-2004)秒级不支持RST BPDU(版本 2)
MSTPIEEE 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 域中包含一个或多个多生成树实例。
MST 域示意图:多个 MST 域通过域间链路相连,域内独立计算生成树
图 4:MSTP 网络中的 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。
MSTI 与 VLAN 映射表示例:VLAN1 映射实例1、VLAN2 映射实例2,其余 VLAN 映射实例3
图 5:MST 域内的 VLAN 与 MSTI 映射表
  • 实例 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 域看作一个节点,域间计算出一棵无环生成树
图 6:CST 把每个 MST 域当作一个节点

在 CST 的视角里,整个 MST 域被抽象成一台“虚拟交换机”,域内有多少台设备、怎么连,对域外都是透明的。域间链路上运行的是与 RSTP 兼容的 CST,所以跨域仍然能快速收敛。

IST

IST(Internal Spanning Tree,内部生成树):

  • 是各 MST 域内的一棵生成树。
  • IST 是一个特殊的 MSTI,MSTI 的 Instance ID 为 0。
  • 如图所示的 MST Region 4,黑色细线条在域中连接该域的所有交换设备构成 IST。
IST 内部生成树:MST 域内所有交换设备构成的实例 0 生成树
图 7:IST 是域内的实例 0 生成树

IST 的根称为 IST 域根。域内所有 VLAN 的 BPDU 都靠 IST 承载,它相当于域内的“骨架树”,各个 MSTI 都在这套骨架之上计算自己的路径。

CIST

CIST(Common and Internal Spanning Tree,公共和内部生成树):

  • 通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
  • 如图所示,所有 MST 域的 IST 加上 CST 就构成一棵完整的生成树,即 CIST。
CIST 公共和内部生成树:各域 IST 与域间 CST 拼接成覆盖全网的单一生成树
图 8:IST 与 CST 拼接成 CIST

可以简单记成:CIST = IST + CST。当整个网络只有一个 MST 域时,CST 退化成域内的连接关系,CIST 与 IST 重合。

SST

SST(Single Spanning Tree,单生成树):

  • 运行生成树协议的交换设备只能属于一个生成树。
  • MST 域中只有一个交换设备,这个交换设备构成单生成树。
  • 如图所示的 MST Region 3,该域中的唯一的交换设备构成 SST。
SST 单生成树:域内只有一台交换设备时构成的生成树
图 9:域内只有一台交换机时构成 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 域中,则总根为该域的主桥。
总根、域根与主桥示意:SW1 为总根,各域内距总根最近的设备为 IST 域根即主桥
图 10:总根、IST 域根与主桥的关系

四个概念容易混,按范围记:总根全网络只有一个;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,携带 CIST 与各 MSTI 的桥 ID、路径开销和端口信息
图 11:MST BPDU 的字段构成

MST BPDU 的协议版本号为 3。相比 RST BPDU,它在保留 CIST 相关字段的同时,还为每个 MSTI 附带一组配置信息(域根 ID、内部路径开销、指定桥 ID、指定端口 ID、标志位等)。一台设备发出的 MST BPDU 里可以同时携带多个实例的计算结果,这也是 MSTP 用一份报文维护多棵树的关键。

定时器默认值作用
Hello Time2 秒BPDU 发送周期
Forward Delay15 秒状态迁移的过渡时间;MSTP 有 P/A 快速握手,多数场景用不到
Max Age20 秒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 计算过程:先选总根,再逐域计算 IST 并抽象为虚拟桥,最后在域间计算 CST
图 12:CIST 的计算层次
  • 第一步:全网比较优先级向量,选出唯一的 CIST 总根。
  • 第二步:每个 MST 域独立计算 IST,选出距总根最近的设备作为 IST 域根(主桥)。
  • 第三步:把每个域抽象成一台虚拟交换机,域间按外部路径开销计算 CST。
  • 第四步:IST 与 CST 拼接,得到覆盖全网的 CIST,各端口在 CIST 上的角色随之确定。

MSTI 计算

在 MST 域内,MSTP 根据 VLAN 和生成树实例的映射关系,针对不同的 VLAN 生成不同的生成树实例。每棵生成树独立进行计算,计算过程与 STP 计算生成树的过程类似。

MSTI 计算示意:各实例独立选举域根并计算无环路径
图 13:各 MSTI 独立计算

每个实例有自己的域根、自己的阻塞端口。同一台设备在实例 1 里可能是根桥,在实例 2 里可能只是普通节点,这正是 MSTP 能做负载均衡的原因:只要让不同实例的根桥落在不同设备上,阻塞点就会落在不同链路上。

MSTP 网络数据转发

在运行 MSTP 协议的网络中,一个 VLAN 报文将沿着如下路径进行转发:

  • 在 MST 域内,沿着其对应的 MSTI 转发。
  • 在 MST 域间,沿着 CST 转发。
MSTP 数据转发路径:域内沿对应 MSTI 转发,跨域沿 CST 经 Master 端口转发
图 14:域内走 MSTI,域间走 CST

报文出域时,必然经过主桥上的 Master 端口。所以跨域流量的路径可以概括为:源端所在实例的树 → 本域主桥 → CST → 对端域主桥 → 对端实例的树。

多实例如何实现负载均衡

关键动作只有一个:让不同实例的根桥落在不同设备上。以两台汇聚 + 两台接入的双归组网为例:

生成树实例承载 VLAN根桥(primary)备份根桥(secondary)
实例 1VLAN2LSW1LSW2
实例 2VLAN3LSW2LSW1

实例 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。

MSTP 实验拓扑:LSW1/LSW2 双汇聚上联 AR1220,LSW3/LSW4 接入,PC1 属 VLAN2、PC2 属 VLAN3
图 15:本文实验拓扑(eNSP)
设备角色关键接口说明
AR1220-ISP出口路由器GE0/0/0、GE0/0/1与两台汇聚三层互联,本文从略
LSW1汇聚 / 实例 1 根桥GE0/0/1 接 LSW2,GE0/0/2 接 LSW3VLAN2 网关 192.168.1.254
LSW2汇聚 / 实例 2 根桥GE0/0/1 接 LSW1,GE0/0/2 接 LSW4VLAN3 网关 192.168.2.254
LSW3接入GE0/0/1 接 LSW4,GE0/0/2 接 LSW1Ethernet0/0/1 接 PC1
LSW4接入GE0/0/1 接 LSW3,GE0/0/2 接 LSW2Ethernet0/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。
  • 负载均衡不是打开某个开关,而是把不同实例的根桥放到不同设备上,让阻塞点分散到不同链路。

如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。

  • reward_image1
  • reward_image2
欢迎来到XiaoZou123,这里是一个电脑极客、数码爱好者网站。我平时喜欢关注数码新闻,研究计算机技术。如果你看我头像觉得我是二次元,那我其实还算不上!
最后更新于 2026-10-23