STP中BPDU报文字段:
PID:协议标识
PVI:协议版本标识(STP默认为0)2为RSTP
BPDU Type:BPDU类型:配置BPDU、TCN BPDU(拓扑变更通告)
配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机指间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU 。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU
TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知
Flags:标识:TCA(拓扑变更确认)、TC(拓扑变更)
Root ID:根桥ID
RPC:根路径开销
BID:桥ID 由桥优先级和MAC地址组成
PID:端口ID 由端口优先级+端口标识
message age:信息生存时间,如果配置BPDU是根桥发出的,则Message Age为0 。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1
max age:最大超时时间,默认20s,是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的 Message Age和Max Age进行比较:如果Message Age小于等于 Max Age,则该非根桥设备会继续转发配置BPDU报文。如果 Message Age大于Max Age,则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络直径过大,导致了根桥连接失败
hello time:默认2s发送一次BPDU,是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效。
fwd delay:转发延时,默认为15s
STP拓扑变化过程
STP路径开销(推荐值):
IEEE802.1d-1998大部分都是这个但是无法适配高速接口>40G 出现了IEEE802.1t 华为默认802.1t
根桥故障:非根桥会在BPDU老化后开始根桥的重新选举
在稳定的STP拓扑里,非根桥会定期收到来自根桥的BPDU报文。如果根桥发生了故障,停止发送BPDU报文,下游交换机就无法收到来自根桥的BPDU报文。如果下游交换机一直收不到BPDU报文,Max Age定时器就会超时(Max Age的默认值为20秒),从而导致已经收到的BPDU报文失效,此时,非根交换机会互相发送配置BPDU报文,重新选举新的根桥。根桥故障会导致50秒左右的恢复时间,恢复时间约等于 Max Age加上两倍的Forward Delay收敛时间
直连链路(直连根桥)故障:将预备端口转换为根端口,新的根端口在30s后恢复到转发状态
此例中,SWA和SWB使用了两条链路互连,其中一条是主用链路,另外一条是备份链路。生成树正常收敛之后,如果SWB检测到根端口的链路发生物理故障,则其Alternate端口会迁移到Listening、 Learning、 Forwarding状态,经过2倍的Forward Delay后恢复到转发状态
非直连链路故障:恢复到转发状态要50s(max age+两倍forward delay时间)
本例中,SWB不SWA之间的链路发生了某种故障(非物理层故障), SWB因此一直收不到来自SWA的BPDU报文。此时,SWB会认为根桥SWA不再有效,于是开始发送BPDU报文给SWC,通知SWC自己作为新的根桥。SWC也会继续从原根桥接收BPDU报文,因此会忽略SWB 发送的BPDU报文。由于SWC的Alternate端口再也不能收到包含原根桥 ID的BPDU报文。其Max Age定时器超时后,SWC会切换Alternate端口为指定端口并且转发来自其根端口的BPDU报文给SWB。SWB放弃宣称自己是根桥并开始收敛端口为根端口。非直连链路故障后,由于需要等待Max Age加上两倍的Forward Delay时间,端口需要大约50秒才能恢复到转发状态
拓扑变更导致mac地址表错误:要经过mac地址表项的默认老化时间300s,这期间无法正确转发
在交换网络中,交换机依赖MAC地址表转发数据帧。缺省情况下, MAC地址表项的老化时间是300秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时MAC地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新MAC地址表项。
本例中,SWB中的MAC地址表项定义了通过端口GigabitEthernet 0/0/3 可以到达主机A,通过端口GigabitEthernet 0/0/1可以到达主机B。由于SWC的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为MAC地址表项老化时间是300秒,主机A发往主机B的帧到达SWB后,SWB会继续通过端口GigabitEthernet 0/0/1转发该数据帧
拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。
拓扑变更以及MAC地址表项更新的具体过程如下:
1. SWC感知到网络拓扑发生变化后,会不间断地向SWB发送TCN
BPDU报文。
2. SWB收到SWC发来的TCN BPDU报文后,会把配置BPDU报文中的 Flags的TCA位设置1,然后发送给SWC,告知SWC停止发送TCN BPDU报文。
3. SWB向根桥转发TCN BPDU报文。
4. SWA把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300秒修改为 Forwarding Delay的时间(默认为15秒)。
5. 最多等待15秒之后,SWB中的错误映射关系会被自动清除。此后, SWB就能通过G0/0/2端口把从主机A到主机B的帧正确地进行转发
参考:https://blog.csdn.net/weixin_43955429/article/details/89855826