上一篇把 VLAN 编号、接口、网段都对齐了。接下来只要你还想要冗余——两台汇聚互备、双上行、堆叠之外的交叉接线——二层就一定会成环。

第 3 篇讲的是"环出现了怎么查",这一篇讲的是"让环合法存在":生成树协议。它不产生带宽,它只做一件事——在物理冗余里算出一棵没有环的树,把该阻塞的口阻塞掉。

很多人对生成树的理解停在"开了就行"。但现场真正出问题的,几乎都不是"没开",而是开错了:根桥没人指定、边缘端口没配、MSTP 域没激活、保护功能配在了错误的端口上。

文中的缺省值、优先级步长、定时器与保护功能行为,引自《S12700, S12700E V200R025C00 产品文档》的 STP/RSTP、MSTP、VBST、SEP 配置章节;不同型号/版本可能有差异。


一、四种模式不是"代际关系",是四种适用面

先破一个常见误解:不是"RSTP 比 STP 新、MSTP 比 RSTP 新,所以无脑用 MSTP"。它们是四种不同的适用面。

模式标准核心特征什么时候用
STP802.1D单生成树,端口状态多、收敛慢只在纯 STP 的老环网里用;新网不要选
RSTP802.1w单生成树,靠 P/A 机制快速收敛单一 VLAN 或不在乎按 VLAN 分流的中小园区
MSTP802.1s多实例,一个实例一棵树,可做 VLAN 负载分担园区网默认选择,多 VLAN、要分流
VBST华为每个 VLAN 一棵树,没有"实例"概念想按 VLAN 分流、又不想维护实例映射

三条官方口径,先记住:

  1. 设备缺省运行 MSTP 模式,MSTP 模式兼容 STP 和 RSTP。 所以你什么都不配,设备也是 MSTP——但这不等于"配好了"。
  2. VBST 的定义是"在每个 VLAN 内构建一棵生成树,不同 VLAN 内的流量可通过不同的生成树转发",可以理解为每个 VLAN 上跑一个 STP/RSTP,VLAN 之间完全独立。
  3. 纯环网(不是网状冗余,而是一圈设备)还有更轻的选择: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 Delay15s状态迁移的等待时间
Hello Time2sBPDU 发送间隔
Max Age20sBPDU 老化时间

还有一个容易被忽略的参数:网络直径,缺省 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

六、选型表:五分钟定下来

场景推荐模式关键动作
小型园区,单一业务 VLANRSTP手工定根桥、上联全双工、接入口边缘端口
多 VLAN、要按 VLAN 分流MSTP三要素一致 + active region-configuration + 手工实例映射
想按 VLAN 分流但不想维护实例VBST每 VLAN 一棵树,配置更直观
一圈接入环(无网状冗余)SEP / ERPSSEP 段 + 控制 VLAN + 指定阻塞端口
与友商混连MSTP域名/修订级别/映射一致 + 摘要侦听
双核心已做 CSS/M-LAG仍需生成树集群/堆叠后逻辑上是一台,但接入口以下仍可能成环

最后一行要展开一句:核心做了 CSS2 集群或 M-LAG,不代表可以关生成树。 集群解决的是"两台设备像一台",而环路可能出现在接入层以下、下游小交换机、甚至一根误接的网线。第 3 篇的四类根因里,有三类跟核心无关。


七、10 条上线检查

  1. display stp brief 确认根桥是你指定的设备,不是某台接入;
  2. 两台汇聚的优先级拉开了(0 与 4096,或至少差 4096);
  3. 所有上联口是全双工,display interface 里 Duplex 是 Full;
  4. 每个接入口都配了 stp edged-port enable;
  5. 全局 stp edged-port default 没有被误开;
  6. stp bpdu-protection 已开,且配了 error-down auto-recovery;
  7. 根桥的指定端口配了 stp root-protection;
  8. 根端口与 Alternate 端口都配了 stp loop-protection(且与 root-protection 不冲突);
  9. MSTP 域三要素一致,active region-configuration 已执行;
  10. 网络直径按实际规模配过,没有拿缺省 7 硬撑大网。

八、给你的行动清单

  1. 先跑 display stp brief,把现网的根桥找出来。如果根桥不是你规划的那台,今天就改——这是投入产出比最高的一次变更。
  2. 把 stp edged-port enable 加进接入口模板(第 4 篇那 5 个模板里的第 ① 个),新设备上线自动带。
  3. 检查所有上联口的双工状态,半双工的先把双工定死,再谈收敛。
  4. MSTP 环境逐台确认 display stp region-configuration 的生效值,别只看配置。
  5. 下一篇讲《终端拿不到 IP?DHCP 按"四个设备三段网络"定界,别再重装网卡》——二层通了、冗余也合法了,最后一步是把地址发到终端手上。

💡 我是老李,HCIE-Datacom 认证、5 年华为生态政企/云网项目交付、干过华为原厂 ASP。
这个《园区网从零到精通》系列,是我把真实项目拆成"可跟着做"的教程,关键机制均对照华为官方文档,不堆概念。
👉 关注我,跟完这个系列,你能独立交付一个园区网;也能持续看 HCIE 考点与现场定界套路。
📌 下一篇预告:《终端拿不到 IP?DHCP 按"四个设备三段网络"定界,别再重装网卡》
评论区说说你们现网的根桥是谁——我猜有一半人没主动配过。


本文模式定位、优先级与步长、定时器缺省值、边缘端口行为、四类保护功能、MSTP 域三要素与激活要求引自《S12700, S12700E V200R025C00 产品文档》“STP/RSTP 配置”“MSTP 配置”“VBST 配置”"SEP 配置"章节;不同型号与版本存在差异,落地请以现网设备版本文档为准。


标签:#园区网 #STP #MSTP #网络工程师 #HCIE #华为 #从零到精通

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐