RSTP笔记
STP的不足
STP虽然能够解决环路问题,但是由于网络拓扑收敛速度慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
STP的不足:
- 没有细致区分端口状态和端口角色,不不利于初学者学习及部署。
(从用户角度来说,侦听状态、学习状态、转发状态并没有区别,都同样不转发用户流量。从使用和配置角度来说,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。)
- STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
- STP算法要求在稳定的拓扑中,根桥主动发送配置BPDU报文,其他设备收到后再进行处理,最终传遍整个STP网络。
STP对计时器的依赖
初始化场景下对计时器的依赖:STP采用计时器防止临时环路,当STP选举出端口角色后,即便角色为指定端口或根端口,仍然需要等待两个Forward Delay时间(30s)才能进入转发状态。
终端接入场景下对计时器的依赖:在STP环境下,终端或者服务器接入交换机后,由于端口需要从禁用状态、依次切换到阻塞、侦听、学习及转发状态,此时主机在接入后,同样需要等待两个Forward Delay时间(30s)才能够访问网络服务。
STP重收敛过程慢
直连链路故障:被阻塞端口会从Blocking状态,依次切换到Listening及Learning状态,最终进入Forwarding状态。直连链路故障,会导致30s左右的恢复时间,等于2倍的Forward Delay时间。
非直连链路故障:由于被阻塞端口上不再收到更优的BPDU,因此等待计时器20s超时后,被阻塞端口会从Blocking状态,依次切换到Listening及Learning状态,最终进入Forwarding状态。非直连链路故障会导致50s左右的恢复时,等于Max Age(20s)加上2倍的Forward Delay时间。
STP拓扑变更机制慢(繁琐)
当交换机检测到拓扑变更时,会通知根桥,然后根桥将该拓扑变更信息泛洪到整个网络。
具体变化过程如下:
- 如果网络中新增一台交换机,导致工作拓扑发生了变化,则位于变化点的交换机可以通过端口状态直接感知到这种变化,但是其他其他交换机是无法直接感知到的。
- 位于变化点的交换机会以Hello Time(2s)为周期通过根端口不断向上游发送TCN BPDU,直到接收到从上游交换机发送来的TCA位置1的BPDU。TCA位置1是为了通知下游设备停止发送TCN BPDU报文的。
- 上游交换机收到TCN BPDU后,一方面会通过其指定端口回复TCA位置1的配置BPDU,另一方面会以Hello Time为周期(2s)通过其根端口不断向自己的上游交换机发送TCN BPDU。
- 重复以上的过程,知道根桥收到了TCN BPDU。
- 根桥收到TCN BPDU后,会通过指定端口发送TC位置1的配置BPDU,通告所有交换机网络拓扑发生了变化,通知下游设备直接删除桥MAC地址表项。
什么是RSTP?
IEEE 802.1W中定义的RSTP可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。
RSTP对STP的改进:
- 通过端口角色的增补,简化了生成树协议的理解及部署;
- 端口状态的重新划分;
- 配置BPDU格式的改变,充分的利用了STP协议报文的Flag字段,明确了端口角色。
- 配置BPDU的处理发生了变化;
- 快速收敛;
- 增加了保护功能。
RSTP兼容STP:
RSTP可以和STP互操作,但是此时会丧失快速收敛等RSTP优势。
- 当一个网段里面既有运行STP的交换设备也有运行RSTP的交换设备,STP交换设备会忽略RSTP的BPDU。运行RSTP的交换机设备在某端口上收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间之后,便把自己的端口转换到STP模式,发生配置BPDU,从而实现了互操作
- 在华为的数据通信设备上,可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可以迁移回到RSTP工作模式。
RSTP对STP的改进点
端口角色
RSTP通过端口角色的增补,简化了生成树协议的理解与部署。
RSTP的端口角色一共有4种:根端口、指定端口、替代端口(Alternate)、备份端口(Backup)。
根端口、指定端口的作用与STP相同,替代端口和备份端口的描述如下:
Alternate端口:
就是由于学习到其他网桥发送的配置BPDU报文而阻塞的端口,它提供过了从指定桥到根的另外一条可切换的路径,作为根端口的备份。

Backup端口:
就是由于学习到自己发送的配置BPDU报文而阻塞的端口,它提供了另外一条从根桥到相应网段的备份通路,作为指定端口的备份。

给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程。
端口状态
RSTP的状态规范缩减成为了3种,根据端口是否转发用户流量和学习MAC地址来划分:
Discarding状态:不转发用户流量也不学习MAC地址。
Learning状态:不转发用户流量但是学习MAC地址。
Forwarding状态:既转发用户流量又学习MAC地址。

配置BPDU - RSTP BPDU
RSTP的配置BPDU充分的利用了STP报文种的Flag字段,明确了端口角色。
处理保证和STP格式基本一致外,RSTP作了如下变化:
- BPDU Type字段:配置BPDU类型不再是0而是2(0x02),所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
- Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
RST BPDU报文的格式:

- bit 7:TCA,表示拓扑变化确认;
- bit 6:Agreement,表示同意,用于P/A机制;
- bit 5:Forwarding,表示转发状态;
- bit 4:Learning,表示学习状态;
- bit 3和bit 2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端口,11表示指定端口;
- bit 1:Proposal,表示提议,用于P/A机制;
- bit 0:TC,表示拓扑变化。
配置BPDU的处理
1、配置BPDU报文的发送方式
RSTP对配置BPDU的发送方式进行了改进。
在拓扑稳定后,无论非根桥设备是否接受到根桥传来的配置BPDU报文,非根桥设备仍然按照Hello Time规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。
而STP在拓扑稳定后,根桥按照Hello Time规定的时间间隔发送配置BPDU。其他非根桥设备在收到上游设备发送过来的配置BPDU后,才触发发出配置BPDU,此计算方式使得STP计算复杂且缓慢。
2、更短的BPDU超时时间
如果一个端口在超时时间(即三个周期,超时时间=Hello Time x 3)内没有收到上游设备发送过来的配置BPDU(例如单向故障,接口并没有Down掉),那么该设备认为与此邻居之间的协商失败。

而STP需要先等待一个,Max Age。
3、处理次优BPDU
当一个端口收到上游的指定桥发送来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较。
如果该端口缓存的RST BPDU优于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身缓存的RST BPDU,从而加快收敛速度。
而STP协议只有指定端口会立即处理次优BPDU。

STP:
- STP只有指定端口会立即处理次优BPDU,其他端口会忽略次优BPDU,等到Max Age计时器超时后,缓存的次优BPDU才会老化,然后发送自身更优的BPDU,进行新一轮的拓扑收敛。
RSTP:
- RSTP处理次优BPDU报文不再依赖于任何定时器(即不再依赖于BPDU老化)解决拓扑收敛,同时RSTP的任何端口角色都会处理次优BPDU,从而加快了拓扑收敛。
快速收敛机制
1、根端口、指定端口快速切换
根端口快速切换:

指定端口快速切换:

2、边缘端口(Edge Prot)

3、P/A机制

P/A机制详解:



- 事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。
- 而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口进入Forwarding状态的速度。
- RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。
- 在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。
- 而STP中,当一台新的终端接入交换机时,接口的UP会导致拓扑的改变,从禁用状态自动进入阻塞状态,从侦听状态进入学习状态,再从学习状态进入到转发状态,此过程花费时间等于2倍的转发延迟时间,也就是30s,所以在STP中,新终端用户接入网络的时候,接入端口需要经过30s左右的时间才能够正常转发用户流量。
- 边缘端口的UP/Down不会引起网络拓扑的变动。
- 在RSTP里面,如果某个端口位于整个网络的边缘,不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。
- 边缘端口不参与RSTP计算,可以由Discarding状态直接进入Forwarding状态。
- 但一旦边缘端口收到了配置BPDU,边缘端口属性就会丧失,成为普通的STP端口,并重新进行生成树计算,从而引起网络震荡。
- 如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。
- 因为Backup端口作为指定端口的备份,提供了另外一条从根桥到相应网段的备份通路。
- 如果网络种一个根端口失效,那么网络种最优的Alternate端口将成为根端口,进入Forwarding状态。
- 因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。
拓扑变更机制

如上图所示:
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态(也就是非边缘端口的UP才算拓扑变化)。
- SW3的根端口收不到从根桥发来的RST BPDU后,Alternate端口会快速切换为新的根端口,启动TC While Timer,并清空所有端口学习到的MAC地址。然后向外发出TC置位的RST BPDU。
- SW2接收到RST BPDU后,会清空接收口、边缘端口以外所有端口学习到的MAC地址,同时开启计时器,并向外发送TC置位的RST BPDU。
- 最终,RST BPDU会在全网泛洪。
- 在STP中,如果拓扑发生了变化,需要先向根桥传递TCN BPDU,再由根桥来通知拓扑变更,泛洪TC置位的配置BPDU。
- 在RSTP中,通过新的拓扑变更机制,TC置位的RST BPDU会快速的在网络中泛洪。
保护功能
1、BPDU保护

2、根保护

3、环路保护

4、防TC-BPDU攻击

- 交换设备在接收到TC置位的RST BPDU报文后,会执行MAC地址表项的删除操作。如果有人伪造TC置位的RST BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多RST BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
- 如上图所示:
- 如果SW3被恶意用户侵占,伪造大量TC置位的RST BPDU并向外发送。SW2收到这些RST BPDU后,会频繁执行MAC地址表项的删除操作,形成巨大负担。
- 在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
- 直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。
- 对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。
- 一旦启用跟保护的功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
- 根保护功能确保了根桥的角色不会因为一些网络问题而改变。
- 由于维护人员的错误配置或网络中的恶意攻击,根桥有可能会收到优先级更高的RST BPDU,使得根桥失去根地位,从而引起网络拓扑结构的错误变动。这种拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。
- 正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
- 交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网关系统。
RSTP拓扑收敛过程
1、每台交换机启动RSTP后,都认为自己是根桥,并且发送RST BPDU。所有端口都为指定端口,处于Discarding状态。

2、上游链路的设备互联端口通过P/A机制,快速进入转发状态。
- SW2收到更优的RST BPDU后,经过比较认为SW1才是当前根桥,此时SW2的端口将成为根端口,而不是指定端口,停止发送RST BPDU。
- SW1的端口进入Discarding状态,发送P位置位的RST BPDU。SW2收到后阻塞除了边缘端口以外的其他端口(同步过程)。
- SW2的各端口同步后,根端口立即进入Forwarding状态,并向SW1返回A位置位的RST BPDU。SW1收到该报文后,会让指定端口立即从Discarding状态进入Forwarding状态。
其他设备之间的同步

3、下游链路的设备互联端口会进行新一轮的P/A协商。
- SW2的下游端口设置位指定端口,持续发送P位置位的RST BPDU。
- SW3的下游端口收到该RST BPDU后,发现不是设备收到最优的BPDU,则会忽略,不会发送A位置位的RST BPDU。
- SW2的下游端口一直等不到A位置位的回应RST BPDU报文,等待2倍的Forward Delay时间后,进入转发状态。

如图:RSTP下游链路的设备互联端口会进入慢收敛过程,以SW2与SW3为例。
RSTP基本配置(华为)
RSTP基础配置命令



配置接口路径开销:
- dot1d-1998:指定路径开销值的计算方法是IEEE 802.1d-1998标准方法。使用IEEE 802.1d-1998标准方法时取值范围是1~65535。
- dot1t:指定路径开销值的计算方法是IEEE 802.1t标准方法。使用IEEE 802.1t标准方法时取值范围是1~200,000,000。
- legacy:指定路径开销值的计算方法是华为计算方法。使用华为计算方法时取值范围是1~200,000。
RSTP保护功能配置命令


- 配置后,在stp tc-protection interval指定的时间内,设备只会处理stp tc-protection threshold指定数量的拓扑变化报文,对于其他的报文会延迟处理,所以可能会影响生成树的收敛速度。例如,时间设定为10秒,阈值设定为5,则设备收到拓扑变化报文后,在10秒内只会处理最开始收到的5个拓扑变化报文,对于后面收到的报文则会等10秒超时后再统一处理。
RSTP配置案例

在上述三台交换机上部署RSTP,以便消除网络中的二层环路。
通过配置实现:
- 将SW1指定为根桥,SW2为备份根桥。
- 与PC相连的端口不参与RSTP计算,将其设置为边缘端口。
- 配置根保护和BPDU保护功能,实现对设备或链路的保护。
SW1开启RSTP功能并指定为根桥:
[SW1] stp mode rstp
[SW1] stp enable
[SW1] stp root primary
SW2开启RSTP功能并指定备份根桥:
[SW2] stp mode rstp
[SW2] stp enable
[SW2] stp root secondary
SW3开启RSTP功能:
[SW3] stp mode rstp
[SW3] stp enable
SW3开启边缘端口:
[SW3-Ethernet0/0/1] stp edged-port enable
SW1开启跟保护功能:
[SW1-GigabitEthernet0/0/1] stp root-protection
[SW1-GigabitEthernet0/0/2] stp root-protection
SW3开启BPDU保护功能:
[SW3] stp bpdu-protection
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
