1.STP对次优BPDU的处理
通常情况下,只有根桥交换机才会发送配置BPDU,其他非根网桥只从指定端口转发从根端口接收到的配置BDPU。但是在图1的环境下,S4新加入了环境中,认为自己是根,发送相应的BPDU。非根网桥指定端口只有在接收到次优BPDU时,才会主动发送最优BPDU,然后对方接收到以后,用更优先的BPUD更新自己的BPDU。
拓扑描述:
当S2收到S4的次优BPDU后,这是因为网桥都会保存当前最优的配置BPDU,会向S4发送最优的BPDU。S4收到了回应的BPDU后,将根桥设置为S1,连接入网络的端口设置为根接口。
补充:阻塞端口和根接口收到在次优的BPDU将不会处理。如果阻塞接口和根接口在MAX Age中一直收到次优的BPDU,而没有其他的BPDU,则超时后变为指定接口,再主动向下行发送自己计算出的BPDU。
2.STP临时环路的产生
拓扑描述:
假设开始时拓扑如左侧所示,且路径开销均相同。交换机S1、S2和S3相连,根桥确定为S1,相应互联端口均处于转发状态。当S1和S2之间新增链路后,最开始两个接口都认为自己是指定接口,S2收到S1和S3发送的BPDU,经计算,S2确定与S1互联的端口为新的根端口,与S3互联的端口为指定端口。这样,所有端口要么是根端口,要么是指定端口,即均处于转发状态,于是便产生了环路。只有当配置BDPU传播到每个网桥,交换机S2经过计算阻塞与S3互联的端口,环路才会消除。
所以在一个端口从不转发状态进入转发状态之前(例如S2与S1的互连端口),需要等待一段足够长的时间(2个forward delay),以使需要进入阻塞状态的端口有足够的时间完成生成树计算,并停止转发数据。
3.STP环境中的收敛时长:30s或者48s-50s
根桥失效:
当S1出现故障(例如关闭了stp协议),S2和S3的根端口都不能收到来自根桥的BPDU报文,他们在等待最长max age时间后,才能发现根桥失效,进而进行新的根桥选举、根端口和指定端口的确定。所以到达最终的拓扑稳定需要经历BPDU的老化、2个forwarding delay(listening+learning)时长,即50秒。当然,指定接口没有收到BPDU报文是正常的情况,阻塞接口20s内没有收到对方的更优的BPDU自己会变为指定接口并且进入监听状态。48s指的是根端口已经收到2s以后,链路才发生故障,这样从故障到最终完成重新收敛为48s。
链路失效:
当S3连接S1的链路失效后,S3马上感知到这一情况的发生。S3的阻塞端口立即进入listening状态,并发送以自己为根的配置BPDU。S2收到S3的次优BPDU后,立即回复以S1为根的配置BPDU,因此S2连接S3的端口成为根端口,S3连接S2的端口成为指定端口。S3的面向S2的端口状态要经历listening、learning再到forwarding,即经历30秒。
链路失效或者链路增加均需要经历30秒,才能恢复故障。
4.当拓扑发送改变,STP重新计算的过程
配置BPDU的FLAG字段:
第一位表示是TC的配置报文,第八位表示为TCA的配置报文,注意这是配置报文,并不是TCN BPDU,没有置位表示普通的配置BPDU。
配置BPDU和TCN BPDU:
配置BPDU 34个字节,且类型字段取值为固定的0x00,TCN BPDU只有4字节,也就是配置BPDU的前3个字段,并且类型字段取值为固定的0x80。
流程:
(1)在网络拓扑发生变化后,有端口转为转发状态的下游设备会不间断地向上游设备发送TCN BPDU报文。上游设备收到下游设备发来的TCN BPDU报文后,只有指定端口处理TCN BPDU报文。其它端口也有可能收到TCN BPDU报文,但不会处理。
(2)上游设备会把配置BPDU报文中的Flags的TCA位设置1,然后通过接收到TCN BPDU的接口发送给下游设备,告知下游设备停止发送TCN BPDU报文。
(3)上游设备复制一份TCN BPDU报文,从根接口向根桥方向发送。
(4)重复步骤1、2、3、4,直到根桥收到TCN BPDU报文。
(5)根桥收到TCN BPDU后,会将下一个要发送的配置BPDU中的TCA位置位,从相应接收到的指定接口发送出去,作为对收到的TCN的确认,还会将该配置BPDU报文中的Flags的TC位置1,从自己所有的指定接口发送出去,用于通知所有网桥拓扑发生了变化。
(6)根桥在之后的max age+forwarding delay时间内,将发送BPDU中的TC置位的报文,收到该配置BDPU的网桥,会将自身MAC地址老化时间缩短为forwarding delay。
(7)当非根桥从自己的根端口接收到以后TC位为1的BPDU后将从自己的所有指定接口复制一份发送出去。
拓扑描述:
(1)拓扑中,经由STP计算,S1为根桥,S4的E1端口被阻塞。
(2)当S3的面向PC1的链路断掉之后,网络中的STP将进行重算,S4的E1端口将转变为指定端口(经过20s对方没有发送BPDU报文),然后经过30s进入转发状态,此时S4会向上游发送TCN消息。这里如果拓扑没有PC机,而是两个交换机直接连接,一边断开后,另外一边的链路也down掉。
(3)S2收到S3的TCN消息之后,将下一个配置BPDU中的TCA置位并从端口E3发送给S4,S2也从自己的根端口E1向根发送TCN BPDU。
(4)S1收到S2发送的TCN消息之后,将下一个配置BPDU中的TCA和TC置位并从指定端口E1发送给S2。此后的(20秒+15秒)时间内,S1均将配置BPDU中的TC置位,各个网桥收到TC置位的BPDU后,将MAC地址的老化时间置为15秒。
(5)于是网络拓扑改变后,网络中交换机上的MAC地址表将很快收敛,避免无效流量浪费带宽。
评论(0)