RSTP对STP做了如下改进:
1.RSTP增加2种端口角色
AP:收到其他交换机更好的BPDU而被阻塞,RP的备份端口
BP:收到自己更好的BPDU而被阻塞,DP的备份端口
2.简化端口状态
3.充分利用配置BPDU的Flag字段
Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
4.配置BPDU的发送方式(拓扑稳定的情况下)
STP:根桥按Hello Time(缺省2s)间隔发送配置BPDU,非根桥设备从RP收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU。可理解为:收不到根桥传来的配置BPDU,非根桥就等,一直等到收到或者老化时间超时(Max Age缺省20s)
RSTP:无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照Hello Time规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行
5.缩短配置BPDU的超时时间
STP:Max Age时间内没有收到上游设备发送过来的配置BPDU,认为邻居失效
RSTP:如果一个端口在超时时间(Hello Time×3×Timer Factor,缺省:2s×3×3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。
6.更快处理次优BPDU
STP:STP只有指定端口会立即处理次优BPDU。其他端口会忽略次优BPDU,等到Max Age计时器超时后,缓存的次优BPDU才会老化,然后发送自身更优的BPDU,进行新一轮的拓扑收敛。
RSTP:RSTP处理次优BPDU报文不再依赖于任何定时器(即不再依赖于BPDU老化)解决拓扑收敛,同时RSTP的任何端口角色都会处理次优BPDU,从而加快了拓扑收敛:
当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较。
如果该端口缓存的RST BPDU优于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身缓存的RST BPDU,从而加快收敛速度。
7.端口角色快速切换
RP失效,AP立即成为RP
DP失效,BP立即成为DP
8.边缘端口
- 是DP且连接的是三层网络设备(终端网卡也是),可设置为边缘端口EP
- EP收到配置BPDU后转变为普通STP端口,重新进行生成树计算
- EP会发送BPDU,防止潜在环路风险,场景:两个EP直接相连可出现瞬间环路风险
- EP不参与RSTP计算可由Discarding直接进入Forwarding状态
- EP失效/进入Forwarding状态,不被认为STP拓扑发生变化,不会导致发送TC RSTP BPDU/TCN BPDU,保证MAC地址表的稳定性
- 强烈建议启用边缘端口特性
9.P/A机制
STP的RP、DP由Discarding状态到Forwarding状态,至少需要30s
RSTP的RP、DP由Discarding状态到Forwarding状态,大约1~2s甚至更快
10.拓扑变更机制
STP中,如果拓扑发生了变化,需要先向根桥传递TCN BPDU,再由根桥来通知拓扑变更,泛洪TC置位的配置BPDU。
RSTP中,检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。一旦检测到拓扑变化,TC置位的RST BPDU会快速的在网络中泛洪。
- SW3的根端口收不到从根桥发来的RST BPDU后,Alternate端口会快速切换为新的根端口,启动TC While Timer,并清空状态发生变化的端口学习到的MAC地址。然后向外发出TC置位的RST BPDU。
- SW2接收到RST BPDU后,会清空接收口以外所有端口学习到的MAC地址,同时开启计时器,并向外发送TC置位的RST BPDU。
- 最终,RST BPDU会在全网泛洪。
11.保护功能
- BPDU保护
- 原因:当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
- 解决:交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
- 根保护
- 原因:根桥具有可抢占性,有可能会收到优先级更高的RST BPDU,使得根桥失去根地位,从而引起网络拓扑结构的错误变动。
- 解决:
- 启用根保护功能的指定端口,其端口角色只能保持为指定端口。
- 一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。
- 经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
- 环路保护
- 原因:
- 运行RSTP的网络中,根端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。
- 当由于链路拥塞或者单向链路故障导致根端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。
- 解决:
- 启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),
- Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
- 原因:
- 防TC-BPDU攻击
- 原因:交换设备在接收到TC置位的RST BPDU报文后,会执行MAC地址表项的删除操作。
- 解决:
- 启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。
- 如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。
- 对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。