本节书摘来自异步社区《CCNP TSHOOT 300-135认证考试指南》一书中的第5章,第5.4节STP故障检测与排除,作者 【加】Raymond Lacoste , 【美】Kevin Wallace,更多章节内容可以访问云栖社区“异步社区”公众号查看
5.4 STP故障检测与排除
CCNP TSHOOT 300-135认证考试指南
如果STP运行异常,那么网络中将会产生环路,使得二层数据帧在网络中无限循环,该操作行为将会导致MAC地址表错误以及广播风暴等故障问题。本节将详细讨论由STP故障引起的相关问题及后果。
5.4.1 交换机的MAC地址表错误
第4章曾经说过,MAC地址表决定了交换机对帧的处理方式,因而MAC地址表必须做到准确无误。虽然交换机可以动态学习通过其端口可达的MAC地址情况,但是如果STP出现了故障,那么交换机的MAC地址表将会出现错误。下面以图5-4为例加以说明。PC1正在向PC2发送流量,等到PC1发送的帧到达网段A时,由于交换机SW1和SW2的Gig 0/1端口都能看到该帧,因而这两台交换机都向自己的MAC地址表添加一条表项(AAAA.AAAA.AAAA与端口Gig0/1关联)。由于STP工作异常,因而这两台交换机都将该帧转发给网段B,导致PC2收到该帧的两份副本。此外,交换机SW1看到该帧从交换机SW2的Gig0/2端口转发出来,由于该帧的源MAC地址是AAAA.AAAA.AAAA,因而交换机SW1错误地更新了其MAC地址表,将MAC地址AAAA.AAAA.AAAA与Gig0/2端口关联在一起。与此相似,交换机SW2看到该帧从交换机SW1的Gig0/2端口转发到网段B,因而交换机SW2也错误地更新了其MAC地址表,致使所有去往MAC地址AAAA.AAAA.AAAA的帧都将通过Gig0/2端口向外转发,从而无法到达PC1。
上面只是一个简单的MAC地址表错误案例,在实际应用中,由于帧不断地通过网络进行传播,因而不但会导致MAC地址表错误,而且还会导致MAC地址表不稳定,也就是说,一会儿在Gig0/1端口上学到MAC地址AAAA.AAAA.AAAA,一会儿又在Gig0/2端口上学到MAC地址AAAA.AAAA.AAAA,然后又在Gig0/1端口上学到MAC地址AAAA.AAAA.AAAA,再然后又在Gig0/2端口上学到MAC地址AAAA.AAAA.AAAA。
由于系统会生成Syslog消息,反映MAC地址在同一台交换机的不同端口之间来回翻动,因而可以很容易地识别该故障问题。下面的Syslog消息表明不断地在端口Gig0/1和Gig0/2上学到该MAC地址。出现该问题的唯一原因就是网络中存在环路,致使在多个接口上都能收到该帧:
%SW_MATM-4-MACFLAP_NOTIF: Host 0000.5e00.0114 in vlan 20 is flapping between port Gi0/1 and port Gi0/2
%SW_MATM-4-MACFLAP_NOTIF: Host 8049.7111.7e05 in vlan 502 is flapping between port Gi0/1 and port Gi0/2
%SW_MATM-4-MACFLAP_NOTIF: Host 0050.b60c.f21b in vlan 20 is flapping between port Gi0/1 and port Gi0/2
5.4.2 广播风暴
如前所述,交换机收到广播帧(即目的MAC地址为FFFF.FFFF.FFFF的帧)后,会将广播帧从所有端口向外泛洪(收到该广播帧的端口除外),对于未知的单播帧和组播帧来说也是如此。由于二层帧没有TTL字段,因而广播帧会在二层拓扑结构中无限循环下去,从而不断地消耗交换机及其所连接设备(如用户PC)的资源。
图5-5解释了STP工作异常时在二层拓扑结构中形成广播风暴的原因。
1.PC1向网段A发送一个广播帧,该广播帧进入端口Gig 0/1上的每台交换机。
2.两台交换机都会从其端口Gig 0/2向外泛洪(即泛洪到网段B)该广播帧,导致PC2收到该广播帧的两份副本。
3.两台交换机又都在各自的端口Gig 0/2上收到该广播帧(来自网段B),并从各自的端口Gig 0/1向外泛洪(即泛洪到网段A)该广播帧,导致PC1也接收到该广播帧的两份副本。
以此往复,广播帧的副本将不断地在网络中循环。由于PC1和PC2不断地收到广播帧副本,因而设备性能将受到严重影响。
如果网络出现STP故障,那么将会同时收到多个网络用户提出的相同的故障报告“网络/互联网太慢了”。这是因为广播风暴会消耗大量二层网络资源,因而去往用户希望访问的资源的帧将无法到达目的地,或者经过很长时间才到达目的地(因为网络已经严重拥塞)。