4、RSTP快速生成树:RSTP对STP的改进、端口角色与状态、边缘端口与P/A机制
聊到生成树,很多老网工第一反应就是STP那50秒的收敛时间。说实话,早些年网络规模小,50秒等也就等了。但现在业务对中断的容忍度越来越低,你想想看,一个核心交换机故障,等它重新收敛完,业务早就炸锅了。
RSTP(Rapid Spanning Tree Protocol)就是来解决这个痛点的。它把STP的收敛时间从几十秒压缩到了秒级甚至毫秒级。我在一次数据中心割接中,就亲眼见过RSTP在链路故障后不到1秒就完成了切换——嗯,那感觉确实很爽。
4.1 RSTP对STP的核心改进
RSTP并不是推翻STP重来,而是在STP基础上做了几个关键优化。说白了,STP是“慢工出细活”,RSTP是“又快又稳”。
改进一:端口角色更丰富
STP只有三种端口角色:根端口、指定端口、阻塞端口。RSTP引入了两种新角色:
- Alternate端口:根端口的备份。如果根端口挂了,Alternate端口可以立刻顶上。
- Backup端口:指定端口的备份。一般出现在共享链路上,现在很少见了。
我个人习惯把Alternate端口理解为“备胎端口”——平时不干活,但随时准备转正。
改进二:端口状态精简
STP有5种状态:Disabled、Blocking、Listening、Learning、Forwarding。RSTP精简为3种:
| RSTP状态 | 对应STP状态 | 说明 |
|---|---|---|
| Discarding | Disabled / Blocking / Listening | 不转发数据,不学习MAC |
| Learning | Learning | 不转发数据,但学习MAC |
| Forwarding | Forwarding | 正常转发数据 |
你可能会问:把三个状态合并成一个,会不会丢失信息?其实不会。RSTP通过新的BPDU交互机制,让端口角色直接决定了行为,不再需要像STP那样慢慢过渡。
改进三:BPDU交互方式变了
STP的BPDU是“被动等待”——根桥发BPDU,其他设备收到后转发。RSTP改成了“主动握手”——每个交换机都会主动发送BPDU,而且邻居之间可以直接协商。这就快多了。
核心变化一句话总结:STP靠“等”,RSTP靠“聊”。
4.2 端口角色与状态详解
咱们来细说一下RSTP的端口角色。我在培训新人时,经常用“角色分工”来类比:
- 根端口(Root Port):每个非根桥上,到达根桥最近的端口。它负责接收来自根桥的BPDU。
- 指定端口(Designated Port):每条链路上,离根桥更近的那一端。它负责向对端发送BPDU。
- Alternate端口:根端口的备份。如果根端口挂了,它立刻转正。
- Backup端口:指定端口的备份。现实中很少用到,了解即可。
这里有个容易混淆的点:Alternate端口和Backup端口都处于Discarding状态,但它们的“备份对象”不同。我曾经在项目里见过有人把Alternate端口误配成Backup,结果根端口故障时切换失败——嗯,这个坑我踩过。
小技巧:查看端口角色可以用命令 show spanning-tree。输出里会明确标注每个端口的角色(Root、Desg、Altn、Backup)。
4.3 边缘端口(Edge Port)
边缘端口是RSTP里一个非常实用的特性。说白了,就是连接终端设备的端口——比如接PC、打印机、服务器的口子。
为什么需要边缘端口?你想想看,一个PC开机时,如果端口要经历STP的30秒收敛,用户就得等半分钟才能上网。这体验太差了。
边缘端口的特点:
- 一旦配置为边缘端口,它直接进入Forwarding状态,不需要等待。
- 如果边缘端口收到BPDU,它会自动失去边缘属性,变成普通STP端口。
- 配置命令:
spanning-tree portfast(Cisco设备)或stp edged-port(华为设备)。
注意:边缘端口不能连接交换机!如果误把交换机端口配成边缘端口,可能会造成环路。我曾经见过一个案例:某运维把两台交换机的互联端口都配了Portfast,结果BPDU风暴直接打垮了整个网络。
4.4 P/A机制(Proposal/Agreement)
P/A机制是RSTP实现快速收敛的核心。我把它理解为“先问后答”的握手过程。
P/A的工作流程:
- 交换机A的端口想成为指定端口,它先发送一个Proposal(提议)BPDU。
- 交换机B收到后,如果同意,就把自己的端口设为根端口,并回复一个Agreement(同意)BPDU。
- 交换机A收到Agreement后,端口直接进入Forwarding状态。
整个过程只需要一次握手,耗时不到1秒。相比之下,STP需要等待Max Age(20秒)+ Forward Delay(15秒+15秒),总共50秒。
P/A机制的关键条件:
- 链路必须是点对点全双工模式。
- 对端交换机必须支持RSTP。
- 如果链路是半双工或共享链路,P/A会退化成STP的慢速收敛。
实战经验:我在一次网络改造中,发现两台交换机之间的链路收敛很慢。排查后发现,其中一台交换机的端口被误配成了半双工。改成全双工后,P/A机制生效,收敛时间从30秒降到了0.5秒。
4.5 RSTP与STP的兼容性
RSTP是向下兼容STP的。如果一台RSTP交换机检测到对端是STP设备,它会自动切换到STP模式。但代价就是——收敛速度会降回STP的50秒。
我个人建议:如果网络里还有老设备不支持RSTP,尽量把它们升级或替换掉。否则你配了RSTP也白搭,整个网络都会被拖慢。
4.6 避坑指南
最后分享几个我踩过的坑:
- 边缘端口误配:我曾经把核心交换机的上联口配成了边缘端口,结果导致BPDU被丢弃,网络出现环路。教训:边缘端口只配给终端设备。
- P/A机制不生效:检查端口双工模式。半双工下P/A不工作。
- Alternate端口切换失败:确保Alternate端口到根桥的路径是可达的。如果Alternate端口的上游链路也断了,切换就无效。
好了,RSTP的核心内容就这些。下一章咱们聊聊MSTP——多生成树协议,它能让不同VLAN走不同路径,实现负载均衡。到时候见。