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的工作流程:

  1. 交换机A的端口想成为指定端口,它先发送一个Proposal(提议)BPDU。
  2. 交换机B收到后,如果同意,就把自己的端口设为根端口,并回复一个Agreement(同意)BPDU。
  3. 交换机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走不同路径,实现负载均衡。到时候见。