一、STP的不足
- 端口角色不足
如果SWC的RP端口down之后,那么BP端口肯定会成为RP端口,此时需要等待Max age(20秒)超时后,重新选举根端口,再经等两个Forwording delay (30秒)才能进入转发状态。
- 端口状态不足
三种端口状态从用户使用的角度对应的行为都相同,但呈现出不同的状态,这样反而增加了使用难度
二、RSTP对STP的改进
- 端口角色的重新划分
RSTP定义了两种新的端口角色:根端口备份端口(Backup Port)和预备端口(Alternate Port)。
从配置BPDU报文发送角度来看:
-
- Alternate Port就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。
- Backup Port就是由于学习到自己发送的配置BPDU报文而阻塞的端口。
从用户流量角度来看:
-
- Alternate Port提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。
- Backup Port作为指定端口的备份,提供了另外一条从根节点到叶节点的备份通路。
- 端口状态的改进
把原来的5种状态缩减为3种
三、P/A机制
- P/A机制基本原理:
Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。
-
- 交换机SWA由于优先级高所以会向SWB发送P置位的BPDU,SWB收到SWA的BPDU时会向其回应一个A置位的BPDU,SWA收到之后会立马进入转发状态。如果P/A协商不成功,那么则需要等待两个Forwording的时间,也就是返回STP协商过程。
- 具体协商过程:
阶段一:设备刚刚启动,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状态,根本不影响其他业务转发。
RSTP在选举的过程中加入了“发起请求-回复同意”(P/A机制)这种确认机制,由于每个步骤有确认就不需要依赖计时器来保证网络拓扑无环才去转发,只需要考虑BPDU发送报文并计算无环拓扑的时间(一般都是秒级)。
四、收敛处理过程
SWB与SWA的直连链路down掉,SWC的AP端口切换成DP端口,SWB得DP端口经协商之后切换成RP端口,并进入转发状态可在秒级时间内完成。
五、边缘端口
STP中,连接终端的链路也要进行生成树计算且链路进入转发需等待2个Forward Delay时间,配置了边缘端口之后,连接终端的接口会立马进入转发状态,当收到BPDU时,会成为普通的STP端口,并参与计算。
六、拓扑更新
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
一旦检测到拓扑发生变化,首先将进行如下处理:
- 清空状态发生变化的端口上学习到的MAC地址。
- 同时,由这些端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
如图所示,SWB的E1端口出现故障之后,RSTP的处理过程如下:
- SWB重新计算生成树,选举E2为新的根端口。
- SWB删除MAC地址表中E1端口所对应的表项。
生成树重新计算完成之后(需要进入转发状态的端口已经进入了转发状态),SWB的所有非边缘端口向外发送TC置位的RST BPDU,通知所的交换机删除除了接受端口和边缘端口以外的端口的MAC地址映射。
注意:边缘端口down掉不会触发拓扑变更,而且故障恢复后,同样也不会触发拓扑变更。
七、保护功能
- BPDU保护
应用场景:防止有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到该报文时,会自动设置为非边缘端口,并重新进行生成树计算,引起网络震荡。
实现原理:配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被立即关闭。
- 根保护
应用场景:如果黑客用更高优先级的RST BPDU 接入网络,当根桥收到更优的RST BPDU,重新进行生成树计算,并失去根的地位,引起网络拓扑结构的错误变动。
实现原理:启用Root保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入Discarding状态。在经过一段时间,如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
- TC-BPDU防洪保护
应用场景:如果有人伪造TC-BPDU报文恶意攻击交换机时,交换机短时间内会收到很多TC-BPDU报文,频繁执行MAC地址表项的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
实现原理:用防TC-BPDU报文攻击功能后,在单位时间内,RSTP进程处理TC类型BPDU报文的次数可配置(缺省的单位时间是2秒,缺省的处理次数是3次)。如果在单位时间内,RSTP进程在收到TC类型BPDU报文数量大于配置的阈值,那么RSTP进程只会处理阈值指定的次数;对于其他超出阈值的TC类型BPDU报文,定时器到期后,RSTP进程只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护交换机的目的。
八、常用配置命令
stp enable //全局开启STP stp mode rstp //配置STP模式为RSTP stp root primary //配置SWA为根桥 stp bpdu-protection //全局开启BPDU防护,配合边缘端口一起使用 stp edged-port enable //配置端口为边缘端口
参考资料:华为HCIP-R&S培训资料