一、前言
阅读本篇文章建议首先了解基本STP协议的有关原理,可以先看一下之前的文章“网络数通HCIP|STP生成树协议”。
二、RSTP协议
(一)STP的不足
(1)不同情形下的STP的不足
① STP初始化(耗时30秒)
STP初始化阶段至完全收敛至少需要30秒,其中包括侦听状态时会进行15秒的等待以确保全网段端口状态确定,以及学习阶段会进行15秒的MAC地址表构建。
② 接口有拥塞端口,且根端口down掉时(耗时30秒)
交换机的根端口down掉时,为确保拓扑变化信息能够扩散至全网再进行转发,拥塞接口转化为根接口并进行正常转发至少需要30秒。
③ 交换机没有拥塞端口,但根端口down掉时(耗时50秒)
当交换机A没有拥塞端口,但其根端口down掉时,会自己为根向外发送BPDU,但B交换机的拥塞端口收到次优BPDU时,需等待端口上缓存的原更优BPDU超时老化(老化过程20秒),在原更优BPDU老化后,会进行重新收敛的动作(与②相同),该动作耗时30秒。
④ 运行STP的交换机连接用户终端时(耗时30秒)
交换机连接终端的链路进入转发需要进行生成树计算并进行转发,耗时30秒。
⑤ STP的拓扑变更时
先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知设备删除桥MAC地址表项,机制复杂,效率低下。
(2)STP的其他不足
① 端口角色的不足
根端口down掉后,其他的端口需要进行重新选举,且等待计时器需超时后才能进行正常转发。
② 端口状态的不足
STP的三种端口状态对应的行为相同,但呈现的状态不同,增加了使用难度。
STP端口状态 | 对应的行为 |
Disabled | 不转发用户流量也不学习MAC地址 |
Blocking | |
Listening | |
Learning | 不转发用户流量但是学习MAC地址 |
Forwarding | 既转发用户流量又学习MAC地址 |
(二)RSTP对STP的改进
(1)端口角色的重新划分
① RSTP将原拥塞端口划分为了AP端口(预备端口)和BP端口(备份端口)。
② AP端口提供了从指定桥到根桥的另一条无环路可达路径,作为根端口的替代端口;
③ BP端口提供了另外一条从根节点到叶子节点的无环备份路径,作为指定端口的备份端口。
④ RSTP增加了EP端口(边缘端口),该端口不参与生成树的运算,用于解决运行STP的设备连接新的终端的问题。
(2)端口状态的重新划分
RSTP将原STP中的Disabled、Blocking、Listening状态合并为了Discarding状态,在该状态下,接口不转发用户流量也不学习MAC地址,合并后的三种状态及其行为入下表:
RSTP端口状态 | 对应的行为 |
Dicarding | 不转发用户流量也不学习MAC地址 |
Learing | 不转发用户流量但是学习MAC地址 |
Forwarding | 既转发用户流量又学习MAC地址 |
(3)快速收敛机制
① P/A机制
P/A机制的实质是引入了有来回的确认机制和同步变量机制,从而脱离了对计时器的依赖。其实现了加快DP端口和RP端口互联链路上两端口快速进入转发状态的目的。
在RSTP中,各设备通过BPDU中的桥ID确定根桥,根桥发送P置位报文,与其相邻的非根桥设备首先断掉其不与根桥相邻的端口,然后回复A置位报文。如此循环,实现快速收敛。
在该确认机制中,每个步骤不需要依赖计时器来保证网络拓扑无环采取转发,只需考虑BPDU发送报文并计算无环拓扑的时间(一般是秒级)。
② 根端口快速切换机制
为加快收敛时间,设备上旧的根端口失效后,新的端口立即在保证无环的前提下立刻迁移到转发状态,而AP端口在选举时就考虑到了该需求,可以满足立即进入转发状态的需求。
③ 次等BPDU处理机制
RSTP处理次等BPDU报文不再依赖于任何定时器超时解决拓扑收敛,而是会立即发送本地最优的BPDU给对端,从而加快了拓扑的收敛。
④ 边缘端口的引入
RSTP增加了EP端口(边缘端口),该端口不参与生成树的运算,用于解决运行STP的设备连接新的终端的问题。
(4)拓扑变化处理机制
首先了解,判断拓扑变化的唯一标准是一个非边缘端口迁移到转发状态。
① 拓扑变更机制的优化
网络拓扑发生变化时,变更点交换机直接向全网发送TC置位的BPDU报文,而不是先通知到根桥,然后由根桥向全网发送TC报文,这样在一定程度上节省了收敛时间。
② 拓扑变化引发的过程
拓扑变化最终会造成交换机原MAC表中记录的是错误的端口。
③ 拓扑变化的处理
交换机接收到TC置位的BPDU报文后,会清空除了收到报文外的其他所有非边缘端口学习到的MAC地址,需要注意的是,边缘端口的任何行为都不会触发拓扑变更。
(5)保护功能
① BPDU保护
在边缘端口配置BPDU保护功能后,当边缘端口收到BPDU报文时会被立即关闭,可有效防止在边缘接口接入的交换机发送BPDU引起其他交换机进行生成树计算所造成的网络震荡。
② 根保护
配置根保护功能后,当接口收到更优的RST BPDU后,端口进入Discarding状态,不再转发报文。可有效解决因收到更优的BPDU造成的根地位失去造成网络拓扑结构的错误变动问题。
③ TC-BPDU泛洪保护
配置TC-BPDU泛洪保护功能后,在单位时间内,交换设备处理TC-BPDU报文的次数可配置,设备只会处理阈值指定的次数,可解决黑客进行伪造TC-BPDU所造成的泛洪攻击。
(三)RSTP配置
① 根桥上的配置
[Huawei]stp enable
[Huawei]stp mode rstp
[Huawei]stp root primary
② 非根桥设备的配置
[Huawei]stp enable
[Huawei]stp mode rstp
[Huawei]stp bpdu-protection //开启Bpdu保护
[Huawei]interface GigabitEthernet 0/0/0
[Huawei]stp edged-port enable //设置为边缘端口