STP收敛要等大半分钟?华为RSTP快速生成树链路切换快人一步
生成树防环的基本功之前写过:冗余链路一接就成环,STP 靠阻塞端口把环形结构修剪成树形,风暴防住了、活备份也留着。但 STP 有个老毛病——收敛速度较慢,主用链路断了,备份口从阻塞熬到转发,网络要干等大半分钟。协议一直在演进:从 STP 到 IEEE 802.1w 的快速生成树协议 RSTP(Rapid Spanning Tree Protocol),再到 IEEE 802.1s 的多生成树协议 MSTP。三者兼容:MSTP 兼容 RSTP、STP,RSTP 兼容 STP。如果网络不需要按 VLAN 分流量负载分担,所有 VLAN 共享一棵树就够,RSTP 就是那个"收敛快"又不上多实例复杂度的中间选项。
下例是一个四台交换机 SwitchA、SwitchB、SwitchC、SwitchD 组成的环形网络,四台都运行 RSTP,通过彼此交互信息发现环路,有选择地阻塞某个端口,把环网修剪成无环的树形结构。规划上 SwitchA 做根桥、SwitchD 做备份根桥。有一个注意事项先记下:与终端相连的端口不用参与 RSTP 计算,建议设为边缘端口或去使能 STP。
配置步骤
第一步,四台设备统一工作模式。逐台配置 RSTP 模式:
<HUAWEI> system-view
[HUAWEI] sysname SwitchA
[SwitchA] stp mode rstp
SwitchB、SwitchC、SwitchD 依样配置,把 sysname 换成各自的设备名,命令同为 stp mode rstp。
第二步,指定根桥和备份根桥:
[SwitchA] stp root primary
[SwitchD] stp root secondary
第三步,配端口路径开销,主动决定阻塞谁。端口路径开销的取值范围由计算方法决定,这里以华为计算方法为例,四台设备统一执行 stp pathcost-standard legacy(同一网络内所有交换设备必须使用相同的计算方法),然后把准备阻塞的端口开销调大——SwitchC 的 GigabitEthernet1/0/1 配成 20000:
[SwitchA] stp pathcost-standard legacy
[SwitchC] stp pathcost-standard legacy
[SwitchC] interface gigabitethernet 1/0/1
[SwitchC-GigabitEthernet1/0/1] stp cost 20000
[SwitchC-GigabitEthernet1/0/1] quit
SwitchB、SwitchD 同样执行 stp pathcost-standard legacy。
第四步,接终端的口设边缘端口,并可选配上 BPDU 保护。以 SwitchB 为例(SwitchC 的 GigabitEthernet1/0/2 同样操作):
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] stp edged-port enable
[SwitchB-GigabitEthernet1/0/2] quit
[SwitchB] stp bpdu-protection
边缘端口直接进入转发不参与计算;BPDU 保护则是防呆——如果与边缘端口相连的是使能了 STP 功能的网络设备,配置 BPDU 保护后,边缘端口一旦收到 BPDU 报文将被 shutdown,边缘端口属性不变。
第五步,四台设备全局使能 RSTP:
[SwitchA] stp enable
SwitchB、SwitchC、SwitchD 依样执行。
第六步,在根桥的指定端口上配根保护,防止新接入的设备抢根桥:
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] stp root-protection
[SwitchA-GigabitEthernet1/0/1] quit
GigabitEthernet1/0/2 同样操作。
SwitchA 的最终配置文件如下(其余三台见文末说明):
#
sysname SwitchA
#
stp mode rstp
stp instance 0 root primary
stp pathcost-standard legacy
#
interface GigabitEthernet1/0/1
stp root-protection
#
interface GigabitEthernet1/0/2
stp root-protection
#
return
SwitchB 的配置文件里是 stp bpdu-protection 加边缘端口,SwitchC 是 stp instance 0 cost 20000 加边缘端口加 BPDU 保护,SwitchD 是 stp instance 0 root secondary——各自记住自己在这棵树里的角色就行。
验证
网络计算稳定后,逐台验证。SwitchA 上执行 display stp brief,与 SwitchB、SwitchD 相连的两个端口应选举为指定端口(DESI)、处于 FORWARDING,Protection 列显示 ROOT。SwitchB 上执行 display stp interface gigabitethernet 1/0/1 brief,端口为 DESI、FORWARDING。最关键的是 SwitchC:
[SwitchC] display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet1/0/1 ALTE DISCARDING NONE
0 GigabitEthernet1/0/2 DESI FORWARDING NONE
0 GigabitEthernet1/0/3 ROOT FORWARDING NONE
GigabitEthernet1/0/1 成为 Alternate 端口、处于 DISCARDING——第三步把它开销调大的效果就在这;GigabitEthernet1/0/3 当选根端口、正常转发。环路被修剪掉,备份链路就位,后续主用链路故障时这份开销规划就派上用场。
STP、RSTP、MSTP 怎么选,看两件事:要不要按 VLAN 负载分担、能接受多长的切换等待。贵州诚鑫致达科技在帮客户梳理二层网络时,小规模环形组网默认就按 RSTP 落地。你现网的生成树跑的是哪种模式?评论区报一下,帮你看看有没有选老了的。