RSTP
STP协议虽然能够解决环路问题,但是收敛速度慢
RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛
RSTP端口角色
角色 | 作用 |
---|---|
Backup(BP) | 指定端口的备份 |
Alternate(AP) | 根端口的备份端口 |
边缘端口
1s进入转发状态,一般用于连接终端设备的接口(如服务器)
边缘端口不接收处理配置BPDU,不参与RSTP运算
端口状态
RSTP把原来STP的5种端口状态简化成了3种
STP | RSTP | 端口角色 | 作用 |
---|---|---|---|
Disabled | Discarding | Disable | 既不转发流量也不学习MAC地址 |
Blocking | Discarding | Alternate端口、 Backup端口 | |
Listening | Discarding | 根端口、指定端口 | |
Learning | Learning | 根端口、指定端口 | 不转发流量但学习MAC地址 |
Forwarding | Forwarding | 根端口、指定端口 | 既转发流量又学习MAC地址 |
RST BPDU
P/A同步机制
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
---|---|---|---|---|---|---|---|
TCA | Agreement | Forwarding | Learning | Port Role | Proposal | TC |
STP中,当网络拓扑稳定后,根桥按照Hello Timer规定的时间间隔发送配置BPDU报文,其他非根桥设备在收到上游设备发送过来的配置BPDU报文后,才会触发发出配置BPDU报文,此方式使得STP协议计算复杂且缓慢
RSTP对此进行了改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备都会仍然按照Hello Timer规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行
RSTP收敛过程(P/A进程)
- 每一台交换机启动RSTP后,都认为自己是“根桥”,并且发送RST BPDU
- 每个认为自己是“根桥”的交换机生成一个RST BPDU报文来协商指定网段的端口状态,此RST BPDU报文的Flags字段里面的Proposal位需要置位
- 当一个端口收到RST BPDU报文时,此端口会比较收到的RST BPDU报文和本地的RST BPDU报文
- 如果本地的RST BPDU报文优于接收的RST BPDU报文,则端口会丢弃接收的RST BPDU报文,并发送Proposal置位的本地RST BPDU报文来回复对端设备
- 当收到Proposal置位并且优先级高的BPDU报文时,接收交换机必须设置所有下游指定端口为Discarding状态(如果下游端口是Alternate端口或者边缘端口,则端口状态保持不变)
-
当确认下游指定端口迁移到Discarding状态后,设备发送RST BPDU报文回复上游交换机发送的Proposal消息,在此过程中,端口已经确认为根端口,因此RST BPDU报文Flags字段里面设置了Agreement标记位和根端口角色
-
上游交换机收到Agreement置位的RST BPDU报文后,指定端口立即从Discarding状态迁移为Forwarding状态
-
下游网段开始使用同样的P/A进程协商端口角色
链路故障/根桥失效
在STP中,当出现链路故障或根桥失效导致交换机收不到BPDU时,交换机需要等待Max Age时间后才能确认出现了故障(30-50s)
在RSTP中,3次Hello Timer内收不到邻居的BPDU即认为邻居失效
华为配置 | 用途 |
---|---|
[SW1]stp mode rstp | 设置模式rstp |
[SW1-GigabitEthernet0/0/1]stp edged-port enable | 配置边缘端口 |
[SW1-GigabitEthernet0/0/1]stp root-protection | 启用根保护(不改变端口角色,只在指定端口生效) |
[SW1]stp bpdu-protection | 启用BPDU保护(如果边缘端口收到BPDU将会立即被关闭,防止恶意攻击) |
[SW1-GigabitEthernet0/0/1]stp loop-protection | 启用环路保护(根端口如果长时间收不到来自上游的BPDU,则进入Discarding状态,避免在网络中形成环路) |