本文最后更新于 2026-01-09,文章内容可能已经过时。

A、SPT协议不足:

Untitled

B、RSPT协议介绍:

RSTP又叫快速生成树协议,它是IEEE802.1w,改进了STP,缩短了网络的收敛时间,RSTP的收敛时间最快可以缩短1s之内。RSTP的算法和STP基本一致。

  • RSTP 的端口状态由5种缩减为3种,端口状态去除了监听和阻塞,保留了转发、学习、禁用三种

  • 端口角色增加到5种。端口角色中根端口和指定端口不变,原有的阻塞备用端口细分为替代端口和备份端口,新增边缘端口。

Untitled

端口角色核心特性对比

Untitled

端口角色

所属设备

核心功能

是否发送 BPDU

是否转发业务流量

激活触发条件

根端口(RP)

非根桥

接收根桥 BPDU,转发流量

设备启动时选举,永久激活

指定端口(DP)

根桥 / 非根桥

发送 BPDU,转发流量

网段内无其他指定端口时激活

替代端口(AP)

非根桥

备份根端口,接收 BPDU

根端口故障时激活

备份端口(BP)

任意交换机

备份指定端口,接收 BPDU

指定端口故障时激活

禁用端口(Disabled)

任意交换机

无功能,端口失效

人工关闭或物理故障

C、BPDU报文:

Untitled

(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发现链路故障所需要的时间更短。

Untitled

D、收敛过程:

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

Untitled

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

Untitled

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

Untitled

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

Untitled

上游交换机收到Agreement置位的RST BPDU报文后,指定端口立即从Discarding状态迁移为Forwarding状态。然后,下游网段开始使用同样的P/A进程协商端口角色。

B和C交换机之间的收敛通STP的收敛过程一样,根据选举规则选出指定端口和阻塞端口。

Untitled

E、变更机制:

1、链路故障/根桥失效:

Untitled

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报文)。

协议

拓扑变化(TC)处理机制

通知方式

说明

STP(802.1D)

当端口进入或离开转发状态时,交换机在根端口上向上发送 TCN BPDU(Topology Change Notification)

由下往上传递(链式上报)直到 Root Bridge

使用独立 TCN BPDU

RSTP(802.1w)

没有独立的 TCN BPDU,而是在 普通 BPDU 的标志位中携带 TC 标志 来通知拓扑变化

由检测变化的设备直接在其转发端口上发送带 TC 位的 BPDU 给邻居交换机

TC 位嵌入普通 BPDU

Untitled

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的流量按照不同路径转发。

Untitled

2、BPDU保护机制:

问题现象:正常情况下,边缘端口是不会收到BPDU的。但是,如果有人发送BPDU来进行恶意攻击时,边缘端口就会收到这些BPDU,并自动变为非边缘端口,且开始参与网络拓扑计算,从而会增加整个网络的计算工作量,并可能引起网络震荡。

使能BPDU保护功能后的交换机的边缘端口在收到BPDU报文时,会立即关闭该端口,并通知网络管理系统。被关闭的边缘端口可配置成自动恢复或管理员手动恢复。
使能BPDU保护功能,可在系统视图下执行 stp bpdu-protection 命令。

Untitled

3、环路保护配置:

问题现象:交换机通过从上游交换机持续收到BPDU报文来维护根端口和阻塞端口的状态。当由于链路拥塞或者单向链路故障时,交换机不能收到上游交换机发送的BPDU报文,交换机重新选择根端口。最初的根端口会变成指定端口,阻塞端口进入Forwarding状态,这就有可能导致网络环路。

环路保护功能使能后,如果根端口不能收到上游交换机发送的BPDU报文,则向网管发出通知信息。根端口会被阻塞,阻塞端口仍然将保持阻塞状态,这样就避免了可能发生的网络环路。
使能环路保护功能,可在接口视图下执行 stp loop-protection命令。

Untitled

二、STP vs RSTP:

Untitled

RSTP快速生成树协议之(三):RSTP对STP的改进以及数据包分析 - 若水一瓢 - 博客园

MSTP基础概念-CSDN博客

生成树【03】MSTP详解及MSTP配置实例_我一直都在-赵玉强的技术博客_51CTO博客

MSTP基础概念-CSDN博客

第一代: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都共享相同的生成树。