STP的缺点
- STP对计时器的依赖(需要等固定30s)
- STP重收敛速度过程慢(30s或50s)
- 拓扑变化机制太慢(高度中央集权,需要上报到根桥再下发TCN)
RSTP
- 802.1W,收敛速度更快,能够兼容STP
- RSTP对STP的改进:
- 端口角色的增补,简化了生成树的理解和部署
- 端口状态的重新划分
- 配置BPDU的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色
- 配置BPDU的处理发生了变化
- 快速收敛
- 增加保护功能
RSTP的改进点
改进点1:端口角色的改进(阻塞口)
- RSTP中有四种端口角色:RP DP AP BP
改进点2:端口状态的改进
- RSTP中,端口状态只有三个,分别是,Discarding Learning Forwarding。
- Discarding 不转发流量,也不学习MAC地址,也可以收发BPDU
- Learning 不转发流量,但是学习MAC地址,也可以收发BPDU
- Forwarding 既转发流量,并且学习MAC地址,也可以收发BPDU
改进点3:配置BPDU的改进-RST BPDU发
- TYPE字段:配置BPDU的类型不在是0而是2,所以运行STP的设备收到RSTP的BPDU会将其丢弃。
- Flag字段:使用了原来保留的中间6位,这样的配置BPDU叫做RST BPDU
- Proposal与Agreeement成为P/A协商,提议与同意。
- Forwarding与Learning为端口状态,是哪个状态就置1,都不是则置0
- Port Role代表端口角色
改进点4:配置BPDU的处理
配置BPDU的发送方式(非根桥可以自主发送BPDU)
- 在拓扑稳定后,无论非根桥是否收到根桥的配置BPDU报文,非根桥设备仍按照hello time规定的时间间隔发送配置BPDU。拓扑变化也会变的更快因为无论非根桥是否收到根桥的BPDU,都可以自主发送,所以拓扑变化也会变的更快,非根桥接口发生故障后,会直接向自己相邻设备发送,无需先向根桥汇报。
BPDU的超时时间变的更短(可根据链路质量调控)6s
- 更短的BPDU超时时间,即最大老化时间(Max Age)。超时时间等于3倍的hello time(hello time可以根据链路质量手动调整,所以超时时间可以贴合网络实际需求。)标准是6S。华为有个默认的公式是:超时时间*3*3,最后一个3是华为定义的系数。
次等BPDU的处理
- 任何接口都可以处理次等BPDU。例AP口发现其他交换机发来的次等BPDU,都可以把最优的BPDU回复,从而加快收敛速度。
- 对于STP的AP端口来讲,收到次等BPDU之后,丢弃不回复,等待在此接口收到的最大BPDU20s老化后,才会回复更强的bpdu,同时因为自己的强所以变为指定端口,对端因此变为根端口,进入状态迁移,总共需要50s时间。
- 对于RSTP的AP端口来讲,收到次等BPDU之后,立即回复,同时因为自己的强所以变为指定端口,对端因此变为根端口,触发P/A协商,总共需要毫秒。
改进点5:快速收敛机制
根端口和指定端口的切换
如果AP口要转换为RP口,无需等待30s时间,直接进入转发状态
如果BP口要转换为DP口,无需等待30s时间,直接进入转发状态
边缘端口(EP端口)
- 不会出现环路的接口可以定义成为边缘端口,一般在二层网络的边缘
- 直接进入到转发状态
- 边缘端口会发送BPDU,任何一个边缘端口收到了BPDU,会马上丧失BPDU的特性,变成普通端口,接受RSTP的计算。
- EP进入到转发状态,不会认为拓扑变化
- 如果网络中发生了拓扑变化,EP口的MAC不会被删除
- P/A协商时,不会被阻塞
P/A协商
- P/A协商要求在点对点全双工链路,只出现在上游DP,下游RP的情况。
- 两台交换机启动后,一个端口是DP,一个端口是RP,并且DP是discading状态,就可以触发P/A协商。
- 当RP收到P/A协商后,会把对下端口全部阻塞掉(EP口除外),然后RP马上进入转发状态,并且回A置位的BPDU,DP口收到之后会马上进入转发状态。然后被阻塞的其他DP口再去给它下面的RP口进行P/A协商。如果DP口下面接的不是交换机,无法进行P/A协商,就会进入30s转发等待。两两之间逐层协商。
改进点6:拓扑变化机制
- 在STP中,接口的up/down代表发生拓扑变化,在RSTP中,一个非边缘接口进入forwarding的状态算拓扑变化。
- 先开启2s的计时器,向外扩散TC置位的RST BPDU,交换机收到后除接受端口和EP端口之外,加快MAC地址老化时间。
- 交换机也会启用4s计时器,向外继续扩散TC置位的RST BPDU。
改进点7:保护功能
BPDU保护
- 正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
- 交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
- EP口收到BPDU触发
根保护(Root保护)
- 对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。
- 根保护功能确保了根桥的角色不会因为一些网络问题而改变。
- 一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
- DP收到更强大BPDU变成阻塞
环路保护
- 在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
- 直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。
- 上联接口非直连故障,启用环路保护
防TC-BPDU攻击
- 启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。
RSTP的改进都是为了提升20s+30s
- 如何提升的20s?
- 将时间改为3*hello time *3=18s
- 如何提升30s?
- 有多种情况无需等待
- AP要转为RP时,BP要转为DP时
- 边缘端口
- P/A协商时,协商完成
- 回复次等bpdu之后(利用PA协商,因为两边分别是DP和RP)
- 什么情况需要等待
- DP对AP的时候
- 另外提升了TC的扩散方式,以及端口状态,细分了端口角色,增加了四种保护功能,且非根桥可以自主发送bpdu