1. Rapid Spanning Tree Protocol(快速生成树协议 802.1w)特征
- 解决 STP 的不足之处
- Blocking、Listening、Learning 都不转发数据,对于用户来说没有区别
- STP 是被动算法,只能依赖计时器的方式判断拓扑变化,导致收敛慢
- 接口从 Down 变为 Up,需要等待两个转发时延才能转发业务数据
- STP 需要一个 Max Age 时间收不到 BPDU 报文,才会发生拓扑变更
- AP 接口收到次优 BPDU,需要等待一个 Max Age 时间,端口角色才能进行切换,然后等待两个转发时延,才能转发数据
- RP 接口故障,AP 接口变为 RP,需要等待两个转发时延,才能转发数据
- RSTP 对 STP 的改进
- 端口状态从五种变为三种
- Discarding、Learning、Forwarding
- 端口角色从三种变为五种
- RP(根端口)、DP(指定端口)
- AP(预备端口):是 RP 的备份,表示收到其他设备发送的 BPDU 报文而阻塞的端口
- BP(备份端口):是 DP 的备份,表示收到自己发送的 BPDU 报文而阻塞的端口
- EP(边缘端口):不参与生成树计算,可以从 Disable 直接到 Forwarding
- 端口状态从五种变为三种
- RSTP 中只有配置 BPDU 报文,相比 STP 使用首位和末位的 Flag 位,RSTP 全部使用
- RSTP 中 RP 接口故障,AR 接口变为 RP 后,立马进入转发状态
2. BPDU 处理
- 拓扑稳定后,无论是否收到根桥传来的 BPDU 报文,都会每「2s」发送 BPDU
- 拓扑稳定后,如果在「3 个 Hello Time(6s)」内没有从上游设备收到 BPDU 报文,则认为与邻居之间协商失败
- 拓扑稳定后,如果收到其他设备发送的 BPDU
Flags 字段解释
- TCA(Bit7):与 Bit0 对应,在 STP 中用于拓扑变更的确认
- Agreement(Bit6):与 Bit1 对应,用于 P/A 机制,表示 P/A 机制协商完成
- Forwarding(Bit5):表示端口处于转发状态
- Learning(Bit4):表示端口出口学习状态
- Port role(Bit2/3):表示端口的角色
- 00:Unknown,未知
- 01:Alternate/Backup port,AP 或 BP
- 10:Root port,根端口
- 11:Designated port,指定端口
- Proposal(Bit1):与 Bit6 对应,用于 P/A 机制,表示提议进行 P/A 机制
- TC(Bit0):与 Bit7 对应,在 STP 中用于向上游设备通知拓扑变更
4. Proposal/Agreement 机制
P/A 机制就是为了让 DP 尽快进入 Forwarding 状态
1)P/A 机制概述
- P/A 机制的前提条件是两端的链路必须为点到点链路
- 全双工模式
- P/A 机制如果在 Share 链路上有可能存在环路风险。一旦检测是 Share 链路,P/A 泛洪过程会自动停止(P/A 协商不成功),DR 接口就需要等待两个转发时延才会进入 Forwarding 状态(与 STP 协商过程一致)
- DeviceA 的和 DeviceB 的都认为自己为根,端口都为指定端口,相互发送 BPDU
- DeviceB 的 p1 口收到更优的 BPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送 BPDU
- DeviceA 的 p0 进入 Discarding 状态,于是发送的 BPDU 中把 Proposal 和 Agreement 置 1
- DeviceB 收到根桥发送来的携带 Proposal 的 BPDU,将自己的非转发端口和边缘端口以外的其他端口进入 sync 状态(同步状态)
- DeviceB p1 进入 Forwarding 状态并向 DeviceA 返回 Agreement =1 的回应 BPDU
- 当 DeviceA 判断出这是对刚刚发出的 Proposal 的回应,于是端口 p0 马上进入 Forwarding 状态
5. RSTP 拓扑变更
只要一个非边缘端口迁移到 Forwarding 状态就会触发拓扑变更[AP、DP、BP、RP]
- 为所有的 DP/RP 端口(除 EP)向外发送 TC =1 的 BPDU 报文,并启动一个 2倍 Hello Time 的 TC While Time「4s」,在 TC While Time 时间内清空自身除 EP 以外的所有 MAC 地址,一旦 TC While Time 超时就停止发送 BPDU
- 其他设备接收到 TC = 1 的 BPDU 报文,清空自己除 EP 和收到该 BPDU 的所有端口学习到的 MAC 地址,然后为所有的 DP/RP 端口(除 EP)向外发送 TC =1 的 BPDU 报文,并启动一个 2倍 Hello Time 的 TC While Time,一旦 TC While Time 超时就停止发送 BPDU
6. 其他特性
1)边缘端口(Edged-Port)
需要注意:不能在连接交换机的接口开启,只能在连接终端的接口开启。防止边缘端口配合使用 BPDU 保护,导致交换机相连的链路故障
- 配置了边缘端口的接口 UP 后,不需要等待两个转发时延,直接 Forwarding 状态,并且不会参与生成树计算[不运行拓扑变更]
- 当网络发生变化后[拓扑变更,P/A 机制],边缘端口不会受到影响
- 边缘端口会向外发送 BPDU 报文,目的是防止环路
- 边缘端口如果收到 BPDU 报文,会失去边缘端口特性,变为普通接口,有可能造成根桥被抢占
边缘端口一般使用在连接非交换设备的接口上(终端、路由器等),常常配合
Bpdu-Protection
和Bpdu-Filter
使用2)BPDU 保护(Bpdu-Protection)
Cisco 对 Trunk 类型不生效,而华为设备 BPDU 对所有端口类型的边缘端口都生效
防止边缘端口收到 BPDU 造成根桥被抢占
配置 BPDU 保护后,如果从边缘端口收到 BPDU 报文,接口会进入 Errordown 状态。Errordown 状态的接口需要手工开启或配置自动恢复
3)BPDU 过滤(Bpdu-Filter)
避免边缘端口向外发送 BPDU 报文导致对其他网络的影响
-
4)根保护(Root-Protection)
为了防止收到更优的 BPDU 报文,导致根桥设备被抢占,DP接口配置
当网络拓扑稳定后,如果收到更优的 BPDU 报文,会将收到该 BPDU 报文的接口置为 Discarding 状态,端口角色不切换
5)环路保护(Loop-Protection)
防止链路拥塞或单向通行故障导致 RP 收不到 BPDU 报文,导致设备端口变为 Forwarding 状态,造成环路
如果 RP 或 AP 端口长时间收不到来自上游设备的 BPDU 报文,就会触发环路保护
- RP 切换到 DP 并进入 Discarding 状态
- AP 切换到 DP 并保持阻塞状态
-
6)TC 保护(TC-Protection)
避免短时间内收到过多 TC BPDU 报文,导致频繁删除 CAM表 和 ARP表
通过阈值和定时器控制对收到的 TC BPDU 报文进行处理
- 收到的 TC BPDU 没有超过阈值,则直接处理
- 收到的 TC BPDU 如果超过阈值,则启动定时器,在定时器到期后统一处理