设为首页收藏本站language 语言切换
查看: 3220|回复: 1
收起左侧

技术贴 | 生成树协议之RSTP原理

[复制链接]
发表于 2021-9-24 10:25:28 | 显示全部楼层 |阅读模式

RSTP产生的背





由于STP的诸多不足,在2001年,IEEE发布了802.1w标准,并且定义了快速生成树协议RSTP(Rapid Spanning Tree Protocol),该协议基于原有的STP协议进行了更加细致的修改和补充。
STP的不足

1、STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
2、STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
3、STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传遍整个STP网络。
4、拓扑发生变更时,收敛速度慢。
5、STP没有安全方面的防护措施。

注释:STP最大的缺点就是收敛速度慢,如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,从用户层面考虑,这是用户无法忍受的。

RSTP对STP的改进

1、端口角色细致的划分
RSTP在STP的基础上把端口做了更细致的划分,端口角色分为4种,分别为DP、RP、AP、BP,RSTP保留了STP原有的DP和RP端口角色,将阻塞端口细分为AP和BP。

根端口和指定端口的作用同STP协议中定义,AP(Alternate Port,替代端口)和BP(Backup Port,备份端口)端口的描述如下:
①从配置BPDU报文发送角度来看:AP就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。BP就是由于学习到自己发送的配置BPDU报文而阻塞的端口。

②从用户流量角度来看:AP提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。BP作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
2、端口状态的合并
RSTP的状态规范把原来STP的5种状态缩减为3种,将STP的disable状态、blocking状态、listening状态合并为一种状态为discarding,保留了STP的learning状态以及forwarding状态。

RSTP端口角色状态对应表如下
STP端口状态
RSTP端口状态
目的
对应的端口角色
Forwarding
Forwarding
端口既转发用户流量也处理BPDU报文。
RP、DP
Learning
Learning
设备会根据收到的用户流量构建MAC地址表,但不转发用户流量。
RP、DP
Listening
Discarding
确定端口角色,将选举出根桥、根端口和指定端口。
RP、DP
Blocking
Discarding
端口仅仅接收并处理BPDU,不转发用户流量。
AP、BP
Disabled
Discarding
端口不仅不处理BPDU报文,也不转发用户流量。
STP的disable端口

3、配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色
在配置BPDU报文的格式上,除了保证和STP格式基本一致之外,RSTP作了一些小变化:Type字段,配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。Flags字段,使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU,如下图所示:


1.jpg
2.png


4、配置BPDU的处理发生变化
拓扑稳定后,配置BPDU报文的发送方式
拓扑收敛完成后,STP网络中的根桥按照Hello Timer规定的时间间隔发送配置BPDU,其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP协议计算复杂且缓慢。

RSTP对此进行了改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥发送过来的配置BPDU报文,非根桥设备仍然按照Hello Timer规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。
更短的BPDU超时计时
如果一个端口在超时时间(超时时间=Hello Time × 3 × Timer Factor)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而STP需要先等待一个Max Age(默认20秒)。
处理次等BPDU
当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身存储的RST BPDU与收到的RST BPDU进行比较。如果该端口存储的RST BPDU的优先级高于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身存储的RST BPDU。当上游设备收到下游设备回应的RST BPDU后,上游设备会根据收到的RST BPDU报文中相应的字段立即更新自己存储的RST BPDU。由此,RSTP处理次等BPDU报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
5、快速收敛机制
Proposal/Agreement机制
当一个端口被选举成为指定端口之后,在STP中,该端口至少要等待一个Forward Delay(Learning)时间才会迁移到Forwarding状态。而在RSTP中,此端口会先进入Discarding状态,再通过Proposal/Agreement机制快速进入Forward状态。这种机制必须在点到点全双工链路上使用,Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。

Proposal/Agreement机制简称P/A机制,具体过程如下:

微信图片_20210924101514.jpg

①协商开始时,相互发送以自己为根的RST BPDU,端口角色和状态分别为:DP discarding。②相互收到对方的RST BPDU后,计算出各自的的端口角色,非根交换机一端的RP端口停止发送RST BPDU,等待根桥交换机的DP端口发送RST BPDU(为什么RP要停止发送RSTBPDU?因为PA机制的目的是:使一个指定端口快速进入forwarding状态,所以是由DP端口发起快速迁移的请求。)

③根交换机的DP口开始向下游非根交换机发送P=1,的RST BPDU,非根交换机的RP端口收到上游根交换机发送的RST BPDU后,开启同步变量置位,RP端口会监测其他端口设置同步变量位,直到其他端口都设置完成后将其临时阻塞,EP端口不参与生成树计算,所以不用设置,AP端口本来就是阻塞状态也无需设置,只有非边缘端口的DP被设置为临时阻塞,临时阻塞完成后,RP端口由discarding进入forwarding状态,并且向上游根交换机回复一份P=0,A=1的RST BPDU。④根交换机的DP端口收到这份RST BPDU后,根据A=1判断出这份BPDU是对自己之前提议的确认,于是将自己的DP端口由discarding状态迁移到forwarding状态。
根端口快速切换机制
如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。这种产生新的根端口的过程会引发拓扑变化,过程如下:
微信图片_20210924101521.jpg

在RSTP中,AP定义为RP的替代端口,如果RP消失,那么AP立刻替代RP,如上图,假设S1-S3链路中断,S3重新选举RP,G1口由AP discarding立刻计算为RP forwarding,属于秒级切换。
边缘端口的引入
在RSTP里面,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口叫做边缘端口(EP,edge port)。

边缘端口不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。边缘端口具有以下特性:

①无需等待30秒转发延迟,直接进入forwarding状态 ②EP端口上线,交换机不认为拓扑发生变更,所以不会产生TC置位的RST BPDU。③拓扑发生变更后,交换机不会向EP端口转发TC置位的BPDU, ④P/A机制时,EP端口不会被同步阻塞 ⑤EP端口收到BPDU后,会参与生成树计算变为普通端口。
6、新增了保护功能

BPDU保护
在交换设备上,通常将直接与用户终端(如PC机)或文件服务器等非交换设备相连的端口配置为边缘端口。正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
根保护
由于维护人员的错误配置或网络中的恶意攻击,网络中合法根桥有可能会收到优先级更高的RST BPDU,使得合法根桥失去根地位,从而引起网络拓扑结构的错误变动。这种不合法的拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。

对于启用Root保护功能的指定端口,其端口角色只能保持为指定端口。一旦启用Root保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入Discarding状态,不再转发报文。在经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
注释:Root保护功能只能在指定端口上配置生效。
环路保护
在运行RSTP协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。

如下图所示,当BP2-CP1之间的链路发生拥塞时,DeviceC由于根端口CP1在超时时间内收不到来自上游设备的BPDU报文,Alternate端口CP2放开转变成了根端口,根端口CP1转变成指定端口,从而形成了环路。

微信图片_20210924101526.jpg

在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在阻塞状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。

注释:环路保护功能只能在根端口或Alternate端口上配置生效。
防TC-BPDU攻击
交换设备在接收到TC BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多TC BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。

启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护设备的目的。
7、RSTP拓扑变化处理

在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。一旦检测到拓扑发生变化,将进行如下处理:

①为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。

②在计时器开启的这个时间内,清空所有端口上学习到的MAC地址。

③同时由非边缘指定端口和根端口向外发送TC置位的RST BPDU,一旦TC While Timer超时,则停止发送RST BPDU。

④其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述①②③过程。如此,网络中就会产生RST BPDU的泛洪,将拓扑发变更的消息传遍网络的每一个角落。 以上内容就是RSTP针对STP不足的地方进行了重新修改以及增强,下期我们继续MSTP讲解。


您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-2 16:53 , Processed in 0.061192 second(s), 13 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表