生成树协议 (STP) 中的拓扑变化
生成树协议 (STP) 用于防止由于网络中交换机之间的冗余连接而导致网络中的环路。它借助桥接协议数据单元 (BPDU) 确定从非根交换机到根交换机的有效路径。 BPDU 携带有关网络内拓扑变化的信息,以通知所有交换机有关变化。
STP 中的拓扑变化机制涉及两种类型的 BPDU:
- 配置BPDU:根交换机发送配置BPDU,在flags字段中设置TC(topology change)和TCA(topology change acknowledgment)位,通知所有交换机拓扑变化。
- 拓扑变化通知(TCN)BPDUs:非根交换机在网络中遇到拓扑变化时,发送TCN BPDU通知根交换机拓扑变化,同时调整网络当前使用的拓扑。
拓扑变化的原因:
生成树协议激活的网络可能会由于以下原因而发生拓扑变化:
- 链接失败
- 开关故障
- 端口转换到转发状态
拓扑变化机制:
每当交换机在其一个接口上检测到由于链路或另一台交换机故障而导致的链路状态更改时,就会遇到拓扑更改。在检测到网络中的拓扑更改后,它会生成一个拓扑更改通知 BPDU,其中包含有关当前正在使用的拓扑的所有信息,并通过其根端口将其发送到根交换机。与通过其根端口发送 TCN BPDU 的交换机相连的上游交换机将接收该 BPDU 并使用拓扑更改确认 (TCA) BPDU 回复发送者。现在,收到 TCN BPDU 的上游交换机生成自己的 TCN BPDU,并通过其根端口将其传输到根交换机。这个过程一直持续到根网桥收到 TCN BPDU。
一旦根网桥收到拓扑变化通知,它就会生成一个配置BPDU,设置拓扑变化位和拓扑变化确认位,并将该BPDU广播到整个网络,从而通知网络内的所有交换机。
root 发送的配置 BPDU 中的 TC 位指示非根交换机删除 MAC 地址表项,以提高网络收敛速度,TCA 位通知它们根交换机已收到拓扑变化的通知,因此指示它们停止发送 TCN BPDU。交换机通过将老化时间降低到与转发延迟时间相同来更新MAC地址条目,确保没有流量发送到不再通过端口可访问的主机,并且在此时间段内通信的设备保留在MAC地址表中,而其他设备被冲掉。
如果网络中发生大量拓扑更改会发生什么?
拓扑更改通知 BPDU 用于通知网络中的拓扑更改。因此,如果网络的拓扑结构频繁变化,则会在网络中产生大量的TCN BPDU,从而导致设备频繁删除ARP表项和MAC表项。这会导致 CPU 使用率过高,并会导致网络流量不稳定。同时,拓扑变化过程中端口状态的频繁变化会导致网络震荡,从而中断用户流量,降低网络收敛性。
示例:下图显示了一个 STP 激活的 LAN 网络,该网络在其交换机 4 的一个接口处遇到拓扑变化。
交换机 4 生成一个包含拓扑变化信息的 TCN BPDU,并通过交换机 2 向上游发送到交换机 1(根交换机)。交换机 2 在接收到交换机 4 发送的 TCN BPDU 时响应 TCA BPDU 并生成自己的 TCN BPDU 并将其发送到交换机 1。交换机 1 在收到 TCN BPDU 后立即被告知拓扑变化。
一旦,交换机 1 收到有关拓扑更改的通知,它会生成一个设置了 TC 和 TCA 位的配置 BPDU,并将其泛洪到所有交换机以通知它们有关拓扑更改的信息。
与拓扑变化相关的问题:
- 如果设备收到过多的TCN BPDU,那么它的CPU使用率就会很高,并且由于MAC地址表项的重复删除而导致网络变得不稳定。
- 频繁的端口状态变化可能导致网络震荡。