这是一个默认计时器导致的问题,如果STP直径大于7,且stp计时器全为默认,在极限情况下会导致生成树频繁重新计算,严重影响网络。
标准直径 7 意味着从根桥到末端交换机中间有着 5 台交换机 根桥 - 1 - 2 - 3 - 4 - 5 -末端交换机
在STP 802.1D中
BPDU_delay:交换机收到BPDU会等待一段时间再发出,IEEE建议这个时间为 1 秒,在直径为7的情况下就是 6 秒
Lost_msg:BPDU在传输过程中可能会丢失,IEEE建议最大丢失数为 3,hello时间是两秒,也就是连丢3个的情况下需要上一个BPDU和下一个之间间隔 8 秒
这样在直径为7,定时器默认,且丢包3个的极限情况下,从根桥发出的BPDU到达最末端的交换机需要6 + 8 = 14 秒
message_age:BPDU从根桥出发后每经过一台交换机message_age就会+1(类似TTL),表示STPS到达根桥的距离,在直径7的情况下为 6 秒
老化时间Max_age:老化时间默认为20秒,老化时间的作用为判断根桥是否存活,如果收到上一条BPDU后超过老化时间还没收到下一条BPDU,就认为根桥已无法正常工作,开始重新计算生成树,收到新的BPDU后会刷新计时器。BPDU实际的老化时间为默认的20秒减去message_age,在直径为7的情况下为20 - 6 = 14 秒。
定时器默认,丢包3个,从根桥发出的BPDU到末端交换机需要14秒,而末端交换机上的老化时间也是14秒,在14秒以后以后还没收到BPDU,就认为与根桥的连接中断,清空MAC地址表,重新以自己为根桥发送BPDU
如果STP直径超过7个且计时器全为默认,极限情况下远端交换机无法在BPDU过期之前收到根桥的BPDU,从而导致远端交换机清空MAC地址表,重新计算生成树,引发拓扑震荡
如果直径大于7,必须手动修改计时器,至少要修改MAX_age老化时间。