园区网从零到精通(5):STP/RSTP/MSTP/VBST 怎么选?收敛慢、边缘端口、四类保护一次讲清
上一篇把 VLAN 编号、接口、网段都对齐了。接下来只要你还想要冗余——两台汇聚互备、双上行、堆叠之外的交叉接线——二层就一定会成环。
第 3 篇讲的是"环出现了怎么查",这一篇讲的是"让环合法存在":生成树协议。它不产生带宽,它只做一件事——在物理冗余里算出一棵没有环的树,把该阻塞的口阻塞掉。
很多人对生成树的理解停在"开了就行"。但现场真正出问题的,几乎都不是"没开",而是开错了:根桥没人指定、边缘端口没配、MSTP 域没激活、保护功能配在了错误的端口上。
文中的缺省值、优先级步长、定时器与保护功能行为,引自《S12700, S12700E V200R025C00 产品文档》的 STP/RSTP、MSTP、VBST、SEP 配置章节;不同型号/版本可能有差异。
一、四种模式不是"代际关系",是四种适用面
先破一个常见误解:不是"RSTP 比 STP 新、MSTP 比 RSTP 新,所以无脑用 MSTP"。它们是四种不同的适用面。
| 模式 | 标准 | 核心特征 | 什么时候用 |
|---|---|---|---|
| STP | 802.1D | 单生成树,端口状态多、收敛慢 | 只在纯 STP 的老环网里用;新网不要选 |
| RSTP | 802.1w | 单生成树,靠 P/A 机制快速收敛 | 单一 VLAN 或不在乎按 VLAN 分流的中小园区 |
| MSTP | 802.1s | 多实例,一个实例一棵树,可做 VLAN 负载分担 | 园区网默认选择,多 VLAN、要分流 |
| VBST | 华为 | 每个 VLAN 一棵树,没有"实例"概念 | 想按 VLAN 分流、又不想维护实例映射 |
三条官方口径,先记住:
- 设备缺省运行 MSTP 模式,MSTP 模式兼容 STP 和 RSTP。 所以你什么都不配,设备也是 MSTP——但这不等于"配好了"。
- VBST 的定义是"在每个 VLAN 内构建一棵生成树,不同 VLAN 内的流量可通过不同的生成树转发",可以理解为每个 VLAN 上跑一个 STP/RSTP,VLAN 之间完全独立。
- 纯环网(不是网状冗余,而是一圈设备)还有更轻的选择:SEP 以"SEP 段"为单位,靠控制 VLAN 转发协议报文、指定阻塞端口;ERPS 是 G.8032 的多环方案。这两种不属于生成树体系,但对"一圈接入环"比 MSTP 更合适。
选型口诀:多 VLAN 要分流 → MSTP;只求不死环 → RSTP;一圈环网 → SEP/ERPS;和友商混连 → MSTP + 注意摘要侦听。

二、根桥必须手工定,否则路径由 MAC 地址决定
生成树的根桥是整棵树的逻辑中心,所有流量路径都是相对根桥算出来的。根桥选错,全网流量就会绕路。
官方规则很干脆:
- 缺省优先级 32768,数值越小越优先,步长 4096;
- 手工指定根桥:
stp root primary,优先级自动变为 0,且不能再改; - 手工指定备份根桥:
stp root secondary,优先级自动为 4096; - 端口优先级缺省 128,路径开销计算缺省用 IEEE 802.1t(dot1t)。
不手工指定的后果是什么?比优先级(都是 32768),再比 MAC,MAC 小的当根。 而 MAC 大小跟设备性能、网络层级毫无关系——我见过一台挂在接入层的百兆老交换机,因为 MAC 最小,安安静静当了三年的根桥,全网跨楼流量全从它身上过。
正确做法:
# 核心/汇聚主设备
stp instance 0 root primary
stp instance 1 root primary
# 另一台汇聚做备份根桥
stp instance 0 root secondary
stp instance 1 root secondary
验证:
display stp brief
display stp instance 0
# 重点看 CIST Root / Regional Root 是不是你指定的那台
一条现场规矩:根桥必须是双活的两台汇聚(或核心)之一,且主备优先级要拉开。 如果两台都配了 root primary,系统会选 MAC 小的那台——又回到"路径由 MAC 决定"的老路。
三、收敛慢,到底慢在哪
"生成树收敛慢"是个笼统的抱怨。拆开看,慢的地方其实只有四处。
3.1 STP 的两个 Forward Delay
STP 的端口要从阻塞走到转发,得经过 Listening 和 Learning 两个阶段,每个阶段默认 15 秒(stp timer forward-delay 缺省 1500 厘秒)。这就是"断网半分钟"的来源。
RSTP 用 P/A(Proposal/Agreement)机制把这个过程压掉:上游发 Proposal 请求快速迁移,下游把非边缘端口同步阻塞后回 Agreement,根端口和指定端口直接进转发。但P/A 有前提——链路必须是点对点。
官方写明:点对点链路支持快速收敛;端口工作在全双工模式时,相连链路才是点到点链路;半双工可以用 stp point-to-point force-true 强制,但这属于补救,不是常态。
现场推论:上联口必须是全双工。 半双工会导致 RSTP 退化成"慢收敛",而且平时看不出来,只有切换时才暴露。
3.2 边缘端口没配,终端每次上线都触发重算
官方对边缘端口的定义是:位于网络边缘、不再与其他交换设备连接、直接与终端直连的指定端口。
配成边缘端口后,官方原话是:“不接收处理配置 BPDU 报文,不参与 MSTP 运算,可以由 Disable 直接转到 Forwarding 状态,且不经历时延,就像在端口上将 MSTP 禁用。”
这一句解释了第 3 篇那个官方案例:终端网卡设成 DHCP 后会闪断端口,接入口没配边缘端口,一闪断就触发 STP 重算,收敛期间端口不通,终端只发 4 个 DHCP 请求,全丢,判定"获取 IP 失败"。
interface GigabitEthernet1/0/1
stp edged-port enable
但千万别图省事用全局命令。 官方对 stp edged-port default 的警示很重:全局配了之后,所有端口都不主动发 BPDU、不主动与对端协商,全部处于转发状态,可能导致网络成环、引起广播风暴,请用户慎用。这句话值得抄在工位上。
3.3 网络直径与三个定时器
官方给的三个定时器缺省值:
| 参数 | 缺省值 | 作用 |
|---|---|---|
| Forward Delay | 15s | 状态迁移的等待时间 |
| Hello Time | 2s | BPDU 发送间隔 |
| Max Age | 20s | BPDU 老化时间 |
还有一个容易被忽略的参数:网络直径,缺省 7。官方建议不要直接调这三个定时器,而是用 stp bridge-diameter 配网络直径,让设备自动算出三个定时器的最优值;同一环网内所有设备要配相同的直径。
官方还特别提示:快速生成树是整个交换网络应用单生成树实例,网络直径不要超过 7。 超过 7 还硬上 RSTP,收敛表现会明显变差——这种规模的网络,本来就该用 MSTP 分域。
3.4 收敛方式选 fast,可能把 CPU 打满
官方在"启用 STP/RSTP"的后续处理里写了一段很少人注意的话:拓扑变化时,交换机会更新 ARP 表,收敛方式分两种——fast 直接删除需要更新的表项,normal 快速老化。
缺省是 normal,官方明确建议选 normal,因为"若选择 fast 方式,频繁的 ARP 表项删除可能会导致设备 CPU 占用率高达 100%,报文处理超时导致网络震荡"。
也就是说,为了"收敛快一点"去改 fast,很可能换来一次 CPU 冲顶。这是我见过性价比最低的优化之一。
| 现象 | 更可能的原因 | 处置 |
|---|---|---|
| 切换要等 30 秒 | 跑的是 STP,不是 RSTP/MSTP | 改模式,或确认对端也支持 RSTP |
| 切换要等 3–5 秒 | 上联是半双工/共享链路,P/A 不生效 | 查双工,stp point-to-point force-true |
| 终端一插就断几秒 | 接入口没配边缘端口 | stp edged-port enable |
| 拓扑变化频繁、CPU 高 | TC 报文刷屏 | 开 TC 保护,查链路错包 |
四、MSTP 域"配了不生效",就两个原因
MSTP 比 RSTP 多了一个"域"的概念。官方定义:具有相同域名、相同 VLAN 到生成树映射配置、相同 MSTP 修订级别配置,并且物理上直接相连的设备,属于同一个 MST 域。
三要素必须完全一致:
stp region-configuration
region-name RG1
instance 1 vlan 10 20
instance 2 vlan 30 40
revision-level 0
active region-configuration # 这一行不敲,前面全白配
原因一:没执行 active region-configuration
官方的原话是:“如果不执行本操作,以上配置的域名、VLAN 映射表和 MSTP 修订级别无法生效。”
这是 MSTP 最经典的"配了没生效"。配置看着全对,display current-configuration 里也都有,但 display stp region-configuration 里的生效值还是旧的。
配置完先检查,再激活:
stp region-configuration
check region-configuration # 检查未生效的域参数
active region-configuration # 确认无误后激活
原因二:域名缺省值,两台设备天然不同
官方写明:缺省情况下,MST 域的域名等于交换设备主控板上管理网口的 MAC 地址。
这句话的杀伤力在于:如果你只配了实例映射、没配 region-name,那每台设备的域名都是自己的 MAC——它们永远不可能在同一个域里。表现出来是"每台设备各自算一棵树",跨设备的实例阻塞关系完全对不上。
另外两条官方提醒也值得记住:
- 修订级别缺省 0,各厂商一般都默认为 0;如果友商不为 0,要改成一致;
- 用
vlan-mapping modulo自动分配实例,很难刚好满足实际映射关系,建议用instance x vlan ...手工配。
还有一个跨厂商的坑:官方提到,当与其他厂商设备互连时,即使域名、修订级别、VLAN 实例映射表全都一致,双方 BPDU 报文密钥不一致也会导致不能正常互通,此时需要使能摘要侦听功能。混连项目里,这条比任何参数都关键。
五、四类保护,配错端口等于没配
生成树的保护功能不是"开了就安全",每一类都有明确的适用端口。官方把它们分成四种:
| 保护 | 配在哪 | 触发后行为 | 典型用途 |
|---|---|---|---|
| BPDU 保护 | 边缘端口(全局使能) | 端口收到 BPDU → error-down | 防止接入口私接交换机 |
| Root 保护 | 指定端口,一般只配在根桥端口 | 收到更优 BPDU → 端口进入 Discarding | 防止下游设备抢根 |
| 环路保护 | 根端口 / Alternate 端口 | 长时间收不到 BPDU → 根端口进 Discarding | 防单向链路造成的临时环 |
| TC 保护 | 全局 | 单位时间内只处理阈值个 TC 报文 | 防 TC 刷屏打 CPU |
几条必须记牢的细节:
① BPDU 保护缺省是禁用的。 配了边缘端口不等于配了 BPDU 保护,两件事要分开做:
stp bpdu-protection
# 端口被 error-down 后不会自己起来,需要配自动恢复:
error-down auto-recovery cause bpdu-protection interval 300
注意官方提示:自动恢复只对配置命令之后发生的 error-down 有效;已经 down 的端口,要 shutdown 再 undo shutdown 手动恢复。
② Root 保护只在端口角色是指定端口时生效,一般只配在根桥的端口上。 配在接入层接入口上没有意义——那里根本不是指定端口参与根桥竞争的位置。
③ Root 保护和环路保护不能配在同一个端口上。 官方明确写了这条互斥。而且如果设备上有 Alternate 端口,根端口和 Alternate 端口要同时配环路保护,只配一个等于只保护了一半。
④ TC 保护的缺省阈值是"每个 Hello Time 处理 1 个 TC 报文"。 阈值调小会延迟处理、影响收敛;调大则防护变弱。这个参数要按现场的 TC 频率来定,不是越大越好。
现场组合我一般这么配:
# 接入交换机:边缘端口 + BPDU 保护
stp bpdu-protection
interface GigabitEthernet1/0/1
stp edged-port enable
# 汇聚(根桥):Root 保护 + 上行环路保护
interface GigabitEthernet1/0/23
stp root-protection
interface GigabitEthernet1/0/24
stp loop-protection
六、选型表:五分钟定下来
| 场景 | 推荐模式 | 关键动作 |
|---|---|---|
| 小型园区,单一业务 VLAN | RSTP | 手工定根桥、上联全双工、接入口边缘端口 |
| 多 VLAN、要按 VLAN 分流 | MSTP | 三要素一致 + active region-configuration + 手工实例映射 |
| 想按 VLAN 分流但不想维护实例 | VBST | 每 VLAN 一棵树,配置更直观 |
| 一圈接入环(无网状冗余) | SEP / ERPS | SEP 段 + 控制 VLAN + 指定阻塞端口 |
| 与友商混连 | MSTP | 域名/修订级别/映射一致 + 摘要侦听 |
| 双核心已做 CSS/M-LAG | 仍需生成树 | 集群/堆叠后逻辑上是一台,但接入口以下仍可能成环 |
最后一行要展开一句:核心做了 CSS2 集群或 M-LAG,不代表可以关生成树。 集群解决的是"两台设备像一台",而环路可能出现在接入层以下、下游小交换机、甚至一根误接的网线。第 3 篇的四类根因里,有三类跟核心无关。
七、10 条上线检查
display stp brief确认根桥是你指定的设备,不是某台接入;- 两台汇聚的优先级拉开了(0 与 4096,或至少差 4096);
- 所有上联口是全双工,
display interface里 Duplex 是 Full; - 每个接入口都配了
stp edged-port enable; - 全局
stp edged-port default没有被误开; stp bpdu-protection已开,且配了error-down auto-recovery;- 根桥的指定端口配了
stp root-protection; - 根端口与 Alternate 端口都配了
stp loop-protection(且与 root-protection 不冲突); - MSTP 域三要素一致,
active region-configuration已执行; - 网络直径按实际规模配过,没有拿缺省 7 硬撑大网。
八、给你的行动清单
- 先跑
display stp brief,把现网的根桥找出来。如果根桥不是你规划的那台,今天就改——这是投入产出比最高的一次变更。 - 把
stp edged-port enable加进接入口模板(第 4 篇那 5 个模板里的第 ① 个),新设备上线自动带。 - 检查所有上联口的双工状态,半双工的先把双工定死,再谈收敛。
- MSTP 环境逐台确认
display stp region-configuration的生效值,别只看配置。 - 下一篇讲《终端拿不到 IP?DHCP 按"四个设备三段网络"定界,别再重装网卡》——二层通了、冗余也合法了,最后一步是把地址发到终端手上。
💡 我是老李,HCIE-Datacom 认证、5 年华为生态政企/云网项目交付、干过华为原厂 ASP。
这个《园区网从零到精通》系列,是我把真实项目拆成"可跟着做"的教程,关键机制均对照华为官方文档,不堆概念。
👉 关注我,跟完这个系列,你能独立交付一个园区网;也能持续看 HCIE 考点与现场定界套路。
📌 下一篇预告:《终端拿不到 IP?DHCP 按"四个设备三段网络"定界,别再重装网卡》
评论区说说你们现网的根桥是谁——我猜有一半人没主动配过。
本文模式定位、优先级与步长、定时器缺省值、边缘端口行为、四类保护功能、MSTP 域三要素与激活要求引自《S12700, S12700E V200R025C00 产品文档》“STP/RSTP 配置”“MSTP 配置”“VBST 配置”"SEP 配置"章节;不同型号与版本存在差异,落地请以现网设备版本文档为准。
标签:#园区网 #STP #MSTP #网络工程师 #HCIE #华为 #从零到精通
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)