本节书摘来自异步社区《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地址。出现该问题的唯一原因就是网络中存在环路,致使在多个接口上都能收到该帧:
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故障,那么将会同时收到多个网络用户提出的相同的故障报告“网络/互联网太慢了”。这是因为广播风暴会消耗大量二层网络资源,因而去往用户希望访问的资源的帧将无法到达目的地,或者经过很长时间才到达目的地(因为网络已经严重拥塞)。