4、RSTP与MSTP:RSTP的快速收敛机制、MSTP的实例划分、多生成树的应用场景

STP 收敛慢,这是很多老网工心里的痛。我记得刚入行那会儿,在机房加一台交换机,整个网络要等 30 到 50 秒才能恢复通信。业务部门电话直接打爆。后来换了 RSTP,世界清净多了。

这一节,我们就聊聊 RSTP 怎么做到秒级收敛,MSTP 又如何解决 VLAN 负载均衡的问题。说白了,就是让生成树不再“一棵树吊死”。

RSTP 的快速收敛机制

RSTP(Rapid Spanning Tree Protocol)本质上是 STP 的升级版。它保留了 STP 的核心选举逻辑——根桥、根端口、指定端口——但把收敛速度从秒级降到了毫秒级。

为什么能这么快?关键在于三个改进:

  • 端口角色更丰富:除了根端口(RP)和指定端口(DP),RSTP 引入了替代端口(Alternate Port)和备份端口(Backup Port)。替代端口是根端口的备胎,一旦根端口挂了,它立刻顶上,不需要重新协商。
  • 边缘端口(Edge Port):连接终端的端口直接进入转发状态,不参与生成树计算。我习惯把所有接 PC 的端口都配成边缘端口,配合 BPDU 防护,既快又安全。
  • 提议-同意(Proposal-Agreement)机制:这是 RSTP 的精髓。STP 需要等待计时器超时,RSTP 通过握手快速完成端口角色协商。一台交换机发出提议,对端同意后,端口直接进入转发状态。

核心差异对比

特性 STP (802.1D) RSTP (802.1w)
收敛时间 30~50 秒 1~3 秒
端口状态 5 种(Blocking/Listening/Learning/Forwarding/Disabled) 3 种(Discarding/Learning/Forwarding)
端口角色 RP、DP、Blocked Port RP、DP、Alternate Port、Backup Port、Edge Port
收敛机制 计时器驱动 握手驱动 + 计时器备份
拓扑变更 TC 通知泛洪 TC 通知 + 快速 MAC 表刷新

避坑指南:我曾经遇到过一个案例,RSTP 收敛还是慢。排查后发现,有人把边缘端口配在了交换机互联链路上。边缘端口不处理 BPDU,导致环路检测失效。记住:边缘端口只连终端,互联端口必须用普通端口。

MSTP 的实例划分

RSTP 虽然快,但它有一个硬伤——所有 VLAN 共享一棵生成树。你想想看,如果链路 A 是根桥的指定端口,那所有 VLAN 的流量都走这条链路。另一条链路闲着,带宽浪费了。

MSTP(Multiple Spanning Tree Protocol)就是来解决这个问题的。它把多个 VLAN 映射到不同的生成树实例(Instance)里,每个实例独立计算拓扑。说白了,就是让不同的 VLAN 走不同的路。

MSTP 的核心概念有三个:

  • MST 域(MST Region):一组配置相同的交换机组成的区域。域内跑 MSTP,域间跑 RSTP。
  • IST(Internal Spanning Tree):域内的默认生成树实例,实例 ID 为 0。所有未映射的 VLAN 都归 IST 管。
  • MSTI(Multiple Spanning Tree Instance):用户自定义的生成树实例。每个实例可以映射一组 VLAN,独立计算根桥和路径。

举个例子:

# 配置 MST 域
stp region-configuration
 region-name MY_CAMPUS
 revision-level 1
 instance 1 vlan 10,20,30
 instance 2 vlan 40,50,60
 active region-configuration

# 配置实例 1 的根桥
stp instance 1 root primary

# 配置实例 2 的根桥
stp instance 2 root secondary

这样,VLAN 10/20/30 走实例 1 的拓扑,VLAN 40/50/60 走实例 2 的拓扑。两条上行链路都能用起来。

注意:MST 域的配置必须一致。Region Name、Revision Level、VLAN 映射表,三样东西只要有一项不同,交换机就认为不在同一个域内,会退化成 RSTP。我曾经在割接时吃过这个亏——两边配置差了一个空格,结果域没建起来,全网震荡了半小时。

多生成树的应用场景

MSTP 最适合的场景就是链路负载分担。我总结了几种典型用法:

  • 双上行链路负载均衡:核心层有两台交换机,接入层双归上联。实例 1 的根桥设在核心 A,实例 2 的根桥设在核心 B。流量自动分流。
  • 业务隔离:办公网 VLAN 和监控网 VLAN 分属不同实例。办公网走主链路,监控网走备链路。即使办公网链路断了,监控网不受影响。
  • 跨机房冗余:两个机房之间有多条互联链路。不同实例走不同链路,既做冗余又做负载。

实例划分建议

场景 实例数量 映射策略
小型园区(< 50 台交换机) 2~3 个 按业务类型划分(办公、监控、访客)
中型园区(50~200 台) 4~8 个 按区域 + 业务划分(东区办公、西区办公、核心业务)
数据中心 8~16 个 按租户或应用划分(每个实例映射少量 VLAN)

个人经验:实例不是越多越好。每个实例都要消耗 CPU 资源跑 BPDU 和拓扑计算。我见过有人配了 32 个实例,结果交换机 CPU 飙到 80%。一般来说,实例数控制在 8 个以内比较稳妥。

核心逻辑流程图

下面这张图展示了 RSTP 和 MSTP 的核心逻辑关系。从 STP 到 RSTP 再到 MSTP,每一步都是对前者的优化。

RSTP 与 MSTP 核心逻辑 RSTP 快速收敛 端口角色丰富 提议-同意机制 边缘端口 快速拓扑变更 升级 MSTP 实例划分 MST 域 IST (实例0) MSTI 1~N VLAN 映射 应用场景:链路负载分担 / 业务隔离 / 跨机房冗余 实例数建议控制在 8 个以内,避免 CPU 过载

从图上可以看得很清楚:RSTP 解决了收敛速度问题,MSTP 解决了链路利用率问题。两者结合,就是现代园区网生成树的标准答案。

嗯,这里要注意一点:MSTP 配置起来比 RSTP 复杂,调试也麻烦。我建议先在实验室搭环境验证,确认 VLAN 映射和根桥设置没问题,再上生产。否则一个域配置错误,全网拓扑震荡,那场面……你懂的。