RSTP协议
本文最后更新于 2026-01-09,文章内容可能已经过时。
A、SPT协议不足:

B、RSPT协议介绍:
RSTP又叫快速生成树协议,它是IEEE802.1w,改进了STP,缩短了网络的收敛时间,RSTP的收敛时间最快可以缩短1s之内。RSTP的算法和STP基本一致。
RSTP 的端口状态由5种缩减为3种,端口状态去除了监听和阻塞,保留了转发、学习、禁用三种
端口角色增加到5种。端口角色中根端口和指定端口不变,原有的阻塞备用端口细分为替代端口和备份端口,新增边缘端口。

端口角色核心特性对比

C、BPDU报文:

(1)STP的BPDU报文的Flags字段中只定义了拓扑变化TC(Topology Change)标志和拓扑变化确认TCA(Topology Change Acknowledgment)标志,其他字段保留。
(2)在RST BPDU报文的Flags字段里,还使用了其他字段。包括P/A进程字段和定义端口角色以及端口状态的字段。Forwarding,Learning与Port Role表示发出BPDU的端口的状态和角色。
STP中:根交换机从指定端口发送BPDU报文,非根交换机从根端口接受BPDU。如果非根交换机没有从根端口收到BPDU报文,也不会自己发送BPDU报文,这样网络中某交换机没有收到BPDU报文时,它并不能确定是否与上游交换机之间的链路发生了故障。
RSTP中:根交换机每隔HelloTime时间发送BPDU,而对于非根交换机而言,即使没有收到BPDU报文,自己也会每隔HelloTime指定的时间(默认2s)发送包含自身信息的BPDU报文。那么这样对于下游交换机来说,如果指定端口在3个连续的HelloTime时间内没有收到来自根交换机发送的BPDU时,那么交换机会认为和上游交换机的链路出现故障,并进行老化处理。而STP中则是需要等待BPDU的老化时间20s,所以相比之下,RSTP发现链路故障所需要的时间更短。

D、收敛过程:
RSTP收敛遵循STP基本原理。网络初始化时,网络中所有的RSTP交换机都认为自己是“根桥”,并设置每个端口为指定端口。此时,端口为Discarding状态。

每个认为自己是“根桥”的交换机生成一个RST BPDU报文来协商指定网段的端口状态,此RST BPDU报文的Flags字段里面的Proposal位需要置位。
当一个端口收到RST BPDU报文时,此端口会比较收到的RST BPDU报文和本地的RST BPDU报文。如果本地的RST BPDU报文优于接收的RST BPDU报文,则端口会丢弃接收的RST BPDU报文,并发送Proposal置位的本地RST BPDU报文来回复对端设备。若收到的BPDU报文次于自己的RST BPDU,则选择忽略。

交换机使用同步机制来实现端口角色协商管理。当收到Proposal置位并且优先级高的BPDU报文时,接收交换机必须设置所有下游指定端口为Discarding状态(防止临时环路)。如果下游端口是Alternate端口或者边缘端口,则端口状态保持不变。

当确认下游指定端口迁移到Discarding状态后,设备发送RST BPDU报文回复上游交换机发送的Proposal消息。在此过程中,端口已经确认为根端口,因此RST BPDU报文Flags字段里面设置了Agreement标记位和根端口角色。

上游交换机收到Agreement置位的RST BPDU报文后,指定端口立即从Discarding状态迁移为Forwarding状态。然后,下游网段开始使用同样的P/A进程协商端口角色。
B和C交换机之间的收敛通STP的收敛过程一样,根据选举规则选出指定端口和阻塞端口。

E、变更机制:
1、链路故障/根桥失效:

STP 中——当出现链路故障或根桥失效导致交换机收不到BPDU时,交换机需要等待Max Age(20s)时间后才能确认出现了故障。 然后重新进行收敛(30s),总共耗时50s。
RSTP 中——如果交换机的端口在连续3次 Hello Timer(6s+)规定的时间间隔内没有收到上游交换机发送的RST BPDU,便会确认本端口和对端端口的通信失败,从而需要重新进行RSTP的计算来确定交换机及端口角色。
2、拓扑变化:
故障情况分析:SWC发生链路故障。SWA 和 SWC 立即检测到链路故障并清除连接此链路的端口上的MAC地址表项。接下来SWC选举出新的根端口并立即进入Forwarding状态,然后SWC向外发送TC置位的BPDU报文(以下简称TC报文)。

STP:故障点向外泛洪TCN BPDU,B交换机收到后向C回复一个TCA BPDU,确认已经收到拓扑改变通知的报文,接着B交换机会向根桥发送TCN BPDU,根桥在向下游设备泛洪发送TC BPDU,通知清空MAC地址表。
RSTP:某交换机检测到拓扑变化(端口上升/下降);在所有转发端口上发送 BPDU(带 TC 位 = 1);邻居交换机接收到后:刷新自身 MAC 地址表、转发 BPDU(带 TC 位)、确保拓扑变化信息在网络中快速扩散;整个过程比 STP 更快,无需等待 20 秒的老化时间。
RSTP检测拓扑变化的标准是收到TCN(Topology Change Notification)消息。当交换机检测到拓扑发生变化时,它会向网络中的其他交换机发送TCN消息,以通知它们重新计算生成树。一个非边缘端口是否迁移到Fowarding状态并不是RSTP检测拓扑发生变化的唯一标准。
F、保护机制:
1、根保护机制:
会出现的问题:由于错误配置根交换机或网络中的恶意攻击,根交换机有可能会收到优先级更高的BPDU报文,使得根交换机变成非根交换机,从而引起网络拓扑结构的变动。这种不合法的拓扑变化,可能会导致原来应该通过高速链路的流量被牵引到低
根保护功能——通过维持指定端口角色从而保护根交换机。一旦启用了根保护功能的指定端口收到了优先级更高的BPDU报文时,端口会停止转发报文并且进入Discarding状态(阻塞状态)。经过一段时间后,如果端口一直没有再收到优先级较高的BPDU报文,端口就会自动恢复到原来的状态。根保护功能仅在指定端口生效,不能配置在边缘端口或者使能了环路保护功能的端口上。
DeviceA和DeviceB处于网络核心层,两者间的链路带宽为1000M,DeviceA为网络中的根桥。DeviceC处于接入层,DeviceC和DeviceA、DeviceC和DeviceB之间的链路带宽为100M。正常情况下,DeviceB和DeviceC之间的链路被阻塞。
当DeviceD新接入DeviceC时,如果DeviceD的桥优先级高于DeviceA,此时DeviceD会被选举为新的根桥,如果两个核心交换机DeviceA和DeviceB之间的千兆链路被阻塞,会导致VLAN中的流量都通过两条100M链路传输,可能会引起网络拥塞及流量丢失。
此时可以在DeviceC连接DeviceD的端口上,配置根保护。对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。一旦启用Root保护功能的指定端口收到优先级更高的RST BPDU,端口状态将进入Discarding状态,不再转发报文。如果在一段时间(通常为两倍的Forward Delay)内,如果端口没有再收到优先级更高的RST BPDU,端口会自动恢复到正常的Forwarding状态
说明:
根保护功能仅在指定端口上生效。
环路保护功能和根保护功能不能同时配置在同一端口。
MSTP、VBST协议中的环路保护功能与RSTP协议类似。三种协议的区别在于RSTP中所有VLAN共享一棵生成树,所有VLAN的流量按照同样的路径转发,而MSTP和VBST可以实现不同VLAN的流量按照不同路径转发。

2、BPDU保护机制:
问题现象:正常情况下,边缘端口是不会收到BPDU的。但是,如果有人发送BPDU来进行恶意攻击时,边缘端口就会收到这些BPDU,并自动变为非边缘端口,且开始参与网络拓扑计算,从而会增加整个网络的计算工作量,并可能引起网络震荡。
使能BPDU保护功能后的交换机的边缘端口在收到BPDU报文时,会立即关闭该端口,并通知网络管理系统。被关闭的边缘端口可配置成自动恢复或管理员手动恢复。
使能BPDU保护功能,可在系统视图下执行 stp bpdu-protection 命令。

3、环路保护配置:
问题现象:交换机通过从上游交换机持续收到BPDU报文来维护根端口和阻塞端口的状态。当由于链路拥塞或者单向链路故障时,交换机不能收到上游交换机发送的BPDU报文,交换机重新选择根端口。最初的根端口会变成指定端口,阻塞端口进入Forwarding状态,这就有可能导致网络环路。
环路保护功能使能后,如果根端口不能收到上游交换机发送的BPDU报文,则向网管发出通知信息。根端口会被阻塞,阻塞端口仍然将保持阻塞状态,这样就避免了可能发生的网络环路。
使能环路保护功能,可在接口视图下执行 stp loop-protection命令。

二、STP vs RSTP:

RSTP快速生成树协议之(三):RSTP对STP的改进以及数据包分析 - 若水一瓢 - 博客园
生成树【03】MSTP详解及MSTP配置实例_我一直都在-赵玉强的技术博客_51CTO博客
第一代:STP和RSTP:没有考虑VLAN的情况,所有的VLAN都共享相同的生成树。
第二代:PVST、PVST+:每一个VLAN一个生成树。
第三代:MSTP:将多个VLAN分到组里面。每个组共享一个生成树。
为了解决PVST带来的困难,思科又提出了第三代生成树----MST(MSTP)多生成树协议。MSTP可以对网络中众多的VLAN进行分组,把VLAN分到组里。这里的组就是后面讲的MST实例(Instance)。每个实例一个生成树,BPDU只对实例进行发送。这样就达到了负载均衡。
为了解决这一个问题,思科提出了第二代生成树---PVST、PVST+。按照PVST协议规定,每一个VLAN都有一个生成树,而且是每隔2秒就会发送一个BPDU,这对于一个有着上千万个VLAN网络来说,一方面这么多生成树维护起来比较困难,另一方面,为每个VLAN每隔2秒就发送一个BPDU,交换机也是难以承受的。
在前面讲解了STP和RSTP的工作原理以及他们之间的关系与区别。但是不管是STP还是RSTP,在网络中进行生成树计算的时候都没有考虑到VLAN的情况。它们都是对单一生成树实例进行应用的。也就是说,在STP和RSTP中所有的VLAN都共享相同的生成树。