目录
引入:STP的问题
STP 协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
1. 设备的初始化
STP从初始化到完成收敛至少需要经过30s时间
2. 当网络出现故障
(1)交换机有BP端口,RP端口Down掉的情况:
当SWA与SWC之间的链路出现故障,其BP端口切换为RP端口并进入转发状态至少需要30s。
(2)交换机没有BP端口,RP端口Down掉的情况:
当SWB与SWA之间的链路Down掉后,则SWC的BP端口切换成DP端口并进入换发状态需要50s。
3. 连接终端的场景
交换机连接终端的链路需要经过30s才能进入转发状态,事实上完全没有必要。
4. 拓扑变更机制
先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知网络中的其他交换机删除MAC地址表,效率相对较低下。
5. 其他问题
(1)端口角色
SWC的RP端口Down掉后,还需要还需要从其它三个端口中重新选举,但是依照图中的拓扑来看的话,只有与SWB相连的阻塞端口可以成为RP端口,所以再进行一次选举显然不合理。
(2)端口状态
针对STP的缺点,也就出现了RSTP,RSTP对STP做了一些改进,工业标准称为802.1W
1、RSTP对STP的改进
1.1 RSTP的端口角色
共有四个:根端口、指定端口、Alternate端口和 Backup端口。
- 根端口和指定端口与STP中相同
- Alternate端口:提供了从指定桥到根桥的另一条可切换路径,作为根端口的备份端口。
- Backup端口:作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
给一个 RSTP 域内所有端口分配角色的过程就是整个拓扑收敛的过程。
1.2 端口状态重新划分
RSTP的状态规范把原来的5中状态规范为3种;根据端口是否转发用户流量和学习MAC地址来划分:
- 如果不转发用户流量也不学习 MAC 地址,那么端口状态就是 Discarding状态。
- 如果不转发用户流量但是学习 MAC 地址,那么端口状态就是 Learning状态。
- 如果既转发用户流量又学习 MAC 地址,那么端口状态就是 Forwarding状态。
1.3 配置BPDU格式的改变
在保证基本格式同STP一致之外,RSTP做了一些小变化,充分利用了STP协议报文中的Flag字段,明确了端口角色。
- Type 字段,配置 BPDU 类型不再是 0 而是 2,所以运行 STP 的设备收到 RSTP的配置 BPDU 时会丢弃。
- Flag 字段,使用了原来保留的中间 6 位,这样改变的配置BPDU叫做RST BPDU,如图所示:
1.4 配置BPDU的处理
(1)拓扑稳定后,配置BPDU的报文的发送方式。
- 在STP中,需要等拓扑稳定后,根桥会按照hello timer规定的时间间隔发送配置BPDU,其他非根桥设备在收到上游设备发送过来配置BPDU后,才会发出配置BPDU。RSTP对此进行了改进,无论下游设备是否收到了根桥的BPDU,都按规定的hello time来发送配置BPDU,由设备自主控制。
(2)更短的BPDU超时计时
- 如果一个端口连续3个hello time时间没有收到上游设备发送的配置BPDU,那么该设备认为与邻居协商失败。而不是像STP需要等Max Age。
- 当一个端口收到上游的指定桥发来的 RST BPDU 报文时,该端口会将自身存储的 RST BPDU 与收到的 RST BPDU 进行比较。如果该端口存储的 RST BPDU 的优先级高于收到的RST BPDU,那么该端口会直接丢弃收到的 RST BPDU,立即回应自身存储的RST BPDU。当上游设备收到下游设备回应的RST BPDU后,上游设备会根据收到的RST BPDU报文中相应的字段立即更新自己存储的RST BPDU。由此,RSTP 处理次等BPDU 报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
1.5 快速收敛
(1)根端口快速切换机制
- 如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。
(2)边缘端口的引入
- 在RSTP里面,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,直接与终端设备直连,这种端口叫做边缘端口。边缘端口不接收处理配置BPDU,不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。
(3)Proposal/Agreement 机制
当一个端口被选举成为指定端口之后,在STP中,该端口至少要等待一个Forward Delay(Learning)时间才会迁移到Forwarding状态。而在RSTP中,此端口会先进入Discarding状态,再通过Proposal/Agreement机制快速进入Forward状态。这种机制必须在点到点全双工链路上使用。
详解P/A机制:P/A机制其目的是使一个指定端口尽快进入Forwarding状态。
基本原理:由于有来回确认机制和同步变量机制,无需依靠计时器来保障无环。
工作过程:
阶段一:设备刚刚启动,RSTP协议刚刚启用,所有交换机都认为自己是根桥,向其他交换机发送P置位的BPDU,并把发送P消息的端口变成DP口,同时接口处在Discarding状态。
阶段二:交换机SWA收到SWB和SWC的P消息会置之不理,因为他的桥优先级最高。交换机SWB和SWC收到SWA的P消息后,由于认同SWA是最优的根桥,会根据P/A协商流程回复A消息,并把发送端口变成RP端口,同时接口处在Forwarding状态。
阶段三:SWA与SWB,SWA与SWB的P/A协商已经完成,接下来是SWB和SWC的P/A协商。
- SWB和SWC都会发送根桥为SWA的P消息给对方。
- SWC收到SWB的P消息后,发现P消息里虽然根桥和自己认可的一样,但是发送者的桥优先级比自己高(SWB>SWC),所有马上停止发送P消息,但是由于已经有端口是RP口,也不会回A消息。
- SWB收到SWC的P消息后,发现P消息里虽然根桥和自己认可的一样,但是发送者的桥优先级比自己低(SWB>SWC),会不停的发送P消息。
- 以上状态在等待2个Forward Delay时间后,SWB端口为DP端口,处在Forwarding状态,SWC端口为AP端口,处在Discarding状态。
- 实际上SWB与SWC之间的协商等同于退回到STP的模式,但是反正是Discarding状态,根本不影响其他业务转发。
事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须要等待至少一个Forward Delay 所有端口才能进行转发。而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用 P/A 机 制加快了上游端口转到 Forwarding 状态的速度。
2、RSTP拓扑变化的处理
在 RSTP 中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到 Forwarding 状态。
- 为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是 Hello Time 的两倍。在这个时间内,清空状态发生变化的端口上学习到的 MAC 地址。同时由这些端口向外发送RST BPDU,其中TC 置位。一旦 TC While Timer 超时,则停止发送 RST BPDU。
- 其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer, 重复上述过程。 如此,网络中就会产生 RST BPDU 的泛洪(有点类似于EIGRP的更新机制)。
工作过程:
- 清空状态发生变化的端口上学习到的MAC地址。
- 同时,由这些端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时, 则停止发送RST BPDU。
如图所示,SWB的E1端口出现故障之后,RSTP的处理过程如下:
- SWB重新计算生成树,选举E2为新的根端口。
- SWB删除MAC地址表中E1端口所对应的表项。
- 生成树重新计算完成之后(需要进入转发状态的端口已经进入了转发状态),SWB 的所有非边缘端口向外发送TC置位的RST BPDU。
另:边缘端口发生故障不会触发拓扑变更。
3、RSTP的保护特性
3.1 BPDU保护
场景:
在交换设备上,通常将直接与用户终端(如 PC 机)或文件服务器等非交换设备相连的端口配置为边缘端口。正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
原理:
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被shutdown,但是边缘端口属性不变,同时通知网管系统。被shutdown的边缘端口只能由网络管理员手动恢复。如果用户需要被shutdown 的边缘端口可自动恢复,可通过配置使能端口自动恢复功能,并可设置延迟时间。被shutdown的边缘端口经过延迟时间后能够自动恢复。边缘端口状态恢复后 ,如果再次收到RST BPDU,该边缘端口将再次被shutdown。
说明:对于延迟时间,取值越小,则接口的管理状态自动恢复为Up的延迟时间越短,接口Up/Down 状态震荡频率越高。取值越大, 则接口的管理状态自动恢复为 Up 的延迟时间越长,接口流量中断时间越长。
3.2 根保护
场景:
由于维护人员的错误配置或网络中的恶意攻击,网络中合法根桥有可能会收到优先级更高的RST BPDU,使得合法根桥失去根地位,从而引起网络拓扑结构的错误变动。这种不合法的拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥堵。
原理:
对于启用Root保护功能的指定端口,其端口角色只能保持为指定端口。一旦启用Root保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入Discarding状态,不再转发报文。在经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的 Forwarding 状态。
说明:Root保护功能只能在指定端口上配置生效。
3.3 环路保护
场景:
在运行RSTP协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。
原理:
在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游的RST BPDU时,则向网管发出通知信息(如果是根端口则进入Discarding状态)。而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。直到根端口或Alternate端口收到RST BPDU,端口状态才恢复正常到Forwarding状态。
说明: 环路保护功能只能在根端口或Alternate端口上配置生效。
3.4 防TC-BPDU攻击
场景:
交换设备在接收到 TC BPDU 报文后,会执行 MAC 地址表项和 ARP 表项的删除操作。如果有人伪造TC BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多 TC BPDU 报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
原理:
启用防 TC-BPDU 报文攻击功能后,在单位时间内,交换设备处理 TC BPDU 报文的次数可配置。如果在单位时间内,交换设备在收到TC BPDU 报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的 TCN BPDU 报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除 MAC 地址表项和 ARP 表项,从而达到保护设备的目的。
4、配置
拓扑图:
SW1:
[Huawei]stp enable
[Huawei]stp mode rstp
[Huawei]stp root primary //这里我们将SW1设为根桥
SW2:
[Huawei]stp enable
[Huawei]stp mode rstp
[Huawei]stp bpdu-protection //BPDU保护结合边缘端口来使用
[Huawei]interface GigabitEthernet 0/0/3
[Huawei-GigabitEthernet0/0/3]stp edged-port enable
SW3:与SW2的配置一致
[Huawei]stp enable
[Huawei]stp mode rstp
[Huawei]stp bpdu-protection //BPDU保护结合边缘端口来使用
[Huawei]interface GigabitEthernet 0/0/3
[Huawei-GigabitEthernet0/0/3]stp edged-port enable
查看STP信息:
[Huawei]display stp brief //查看RSTP简要信息
[Huawei]display stp //查看RSTP详细信息
关于生成树的其他总结:
STP:https://blog.csdn.net/weixin_43997530/article/details/106625705
MSTP:https://blog.csdn.net/weixin_43997530/article/details/108437497