此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍如何识别网络中的2层环路并对其进行故障排除,包括Catalyst 9000系列交换机。
建议您了解生成树协议概念。
本文档不限于特定的软件或硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
第2层环路会导致局域网崩溃。由此产生的“广播风暴”干扰了受影响虚拟LAN (VLAN)内的通信,并同时使终端和网络设备停机。由于第2层流量没有生存时间(TTL)等最终导致数据包在网络中被消耗的机制,因此问题会随着时间推移而发展。而环路流量(例如地址解析协议(ARP)或动态主机配置协议(DHCP)流量)会无限循环,直到环路断开。负责调查活动循环的个人发现自己处于压力状态。
幸运的是,有一些行之有效的方法可以检查并排除第2层环路故障。本文档概述了几代TAC工程师使用的方法。
生成树:如何防止环路?
此简单拓扑显示了正在运行的生成树协议。以下几点适用于此拓扑:
生成树已在此拓扑中收敛,因此可以防止出现环路。 绿色箭头表示客户端PC传输的广播数据包在互连的交换机上的转发方式。BBBB上的阻塞端口可防止客户端发送的广播在设备之间无限循环。
第2层广播风暴如何形成?
在许多情况下,生成树提供的环路预防并不能防止广播风暴。
网络中的物理(第1层)问题可能导致单向链路,使生成树扬声器无法可靠交换BPDU。不可靠的BPDU接收或传输会导致不理想的和意外的生成树收敛。
示例 1:
在此场景中,BBBB停止在其根端口上接收来自根网桥的BPDU。BBBB会收敛以响应BPDU的丢失。其根端口不再是通往根的可行路径,因为它不再接收BPDU并成为指定端口。其阻塞端口继续接收来自AAAA的BPDU并成为根端口。两个接口均未阻塞,因此会发生环路。
示例 2:
当生成树按预期收敛时,也会发生网络中断。 连接到网络的某些设备可能是环路矢量。意外连接到网络的集线器或类似设备可能导致广播风暴。
网络工程师采用许多方法来处理第2层环路和广播风暴。本节介绍一种经过实践检验的真实方法,该方法已在无数的TAC案例和灾难性中断中进行了测试。
此方法利用非常基本的命令并避开数据点,例如可能混沌的生成树协议(STP)拓扑更改通知(TCN)。当非边缘端口从BLOCKING转为FORWARDING时,快速STP (RSTP)拓扑中就会发生TCN。环路本身可能会使STP扬声器负担过重,以致无法预测性地参与收敛。如果由于控制平面拥塞而无法正确处理入站BPDU,受害交换机上的接口将转入FORWARDING状态。TCN通常是揭示受害设备的症状,但不一定揭示环路来源。
需要考虑的更有效的线性数据点是接口输入速率,而不是STP TCN。 参与环路的接口显示远远高于预期的输入速率。由于这些下游设备本身也可能是受害者,因此产出率并不是很值得关注的问题。您还可以观察到受影响接口上的广播和组播速率很高,并注意到平均数据包大小偏向于小于预期值。
借助这些命令,网络工程师可以直接隔离大多数(如果不是全部)第2层环路:
show interfaces | include is up|input rate
命令“show interfaces | include is up|input rate”与管道一起使用,参数为我们提供了可快速接受的输出片段。它向我们显示了当前处于“up”状态的所有接口及其输入速率。出于我们的目的,我们只关注输入速率。输入速率异常高的接口很可能是环路的受害者。连接到输入速率异常高的接口的设备可能更接近环路源。 输出率意外的高接口可能使我们远离环路源。
ACCESS-SWITCH1#show interfaces | in is up|input rate <snip>
GigabitEthernet1/0/1 is up, line protocol is up (connected) <----- Typical endpoint with a low input rate. This would not raise suspiscion. 5 minute input rate 33000 bits/sec, 21 packets/sec GigabitEthernet1/0/2 is up, line protocol is up (connected) 5 minute input rate 24000 bits/sec, 11 packets/sec <snip> 5 minute input rate 0 bits/sec, 0 packets/sec <----- This output represents interfaces that are down. 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec TwentyFiveGigE1/1/1 is up, line protocol is up (connected) <----- Twe1/1/1 in this scenario is high-bandwith uplink interface. We would expect uplinks to have a fair amount of traffic on input. 5 minute input rate 2816922000 bits/sec, 2072252 packets/sec. If we were troubleshooting a loop, pay special attention to this interface given the input rate. TwentyFiveGigE1/1/2 is up, line protocol is up (connected) 5 minute input rate 2926942401 bits/sec, 3043467 packets/sec <-- The same logic goes for this port. The input rate is relatively high but that is possibly function of its position in the network. TwentyFiveGigE1/1/3 is up, line protocol is up (connected) 5 minute input rate 0 bits/sec, 0 packets/sec <snip>
ACCESS-SWITCH1#show cdp neighbor twe1/1/1 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID ACCESS-SWITCH2 Twe 1/1/1 142 S I C9300-48P Twe 1/1/4 <--- We confirm that the expected neighbor is attached to this interface. Total cdp entries displayed : 1
show spanning-tree
使用此命令了解本地交换机如何认为生成树已收敛。 请记住不同生成树类型之间的差异。Catalyst交换机默认运行快速PVST,但支持PVST和MST。
ACCESS-SWITCH1#show spanning-tree VLAN0001 <----- Keep in mind that in per-vlan spanning-tree, each VLAN represents a unique instance of spanning-tree Spanning tree enabled protocol rstp Root ID Priority 1 Address 380e.4d77.4800 Cost 2000 Port 3 (TwentyFiveGigE1/0/3) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address b08b.d08d.6b80 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Gig1/0/1 Desg FWD 20000 128.1 P2p Gig1/0/2 Desg FWD 20000 128.2 P2p <snip> Twe1/1/1 Root FWD 800 128.33 P2p Twe1/1/2 Desg FWD 800 128.34 P2p Twe1/1/3 Alt BLK 800 128.35 P2p <---- This output corresponds with expectation. This step helps to populate STP information in your topology as you move from device to device
这种简单直接的方法可避免耗时的数据包捕获,无需再关注生成树TCN,并将实际问题排在调查的前列。它还可以消除“猜测和检查”故障排除。
请看下面的拓扑图:
由于交换机之间存在冗余互连,因此生成树会阻塞此拓扑中的多个端口。在本示例中,黄色X图形表示阻塞端口。转发端口全部为指定端口或根端口,具体取决于本地交换机与根网桥相比所处的位置。 绿色箭头表示示例客户端要在此网络中发送的正常的预期广播流量。
虽然并不十分复杂,但是由于存在大量冗余链路,该网络仍然有许多形成环路的机会。
来自较大拓扑的此代码片断重点介绍服务器所连接的接入交换机的生成树角色/状态。
考虑是否存在一条单向链路,阻止下游接入交换机在其根端口上接收BPDU。生成树会在响应时重新收敛,因此会产生第2层环路。
ACCESS-C上以前的根端口停止从DISTRO-B接收BPDU。交换机不再将其识别为通向根网桥的可行路径,因此优先级最高的阻塞端口成为根/转发端口。之前的根端口转换为指定/转发。这种重新收敛会导致转发环路。
此图显示环路如何影响从客户端发送的广播流量。 除非环路断开,否则环路流量会继续无限循环,并可能从多个接口上的受影响交换机进入/出口。您可以看到多个红色箭头,代表环路流量的方向。
随着无限循环的流量越来越多,问题也越来越严重。默认情况下,Catalyst 9000系列交换机采用强大的控制平面策略(CoPP)机制,但某些产品没有。在循环VLAN中具有本地交换机虚拟接口(SVI)的交换机将该VLAN中的广播流量副本传送到CPU。如果没有CoPP,所有这种传送的流量都可能会中断交换机CPU。这会使情况更糟,因为受害交换机无法按预期参与生成树。
排除此类故障时面临的一个初步挑战就是确定从何处着手。 归根结底,我们开始所处的位置并不是特别重要。 受环路影响的所有设备最终都会跟踪到环路源。
在本例中,我们从受影响客户端连接的交换机开始。
起点- ACCESS-A -直接连接到客户端
这种方法使初始起点不相关。 所有受影响的接口都指向问题的根源。无论您从哪里开始,如果遵循此过程,您都会到达环路/反射的源头。在此场景中,受影响的客户端连接到交换机ACCESS-A。这就是我们的出发点。此过程的第一步是考虑所有活动接口上的输入速率。
ACCESS-A#show interfaces | in is up|input rate GigabitEthernet1/0/1 is up, line protocol is up (connected) 5 minute input rate 33000 bits/sec, 21 packets/sec <--- This access port (downlink) has a small volume of traffic inbound. This does not raise suspiscion. <snip> 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec TwentyFiveGigE1/1/1 is up, line protocol is up (connected) 5 minute input rate 2816922000 bits/sec, 2672252 packets/sec <--- This port is an uplink. There is a fair amount of traffic inbound on this port, but also keep in mind that the uplink is expected to be busier. TwentyFiveGigE1/1/2 is up, line protocol is up (connected) <--- This is our other uplink on this switch. The input rate is zero, suggesting the other end of this link is not transmitting. This implies that the other end of the link successfully blocks. 5 minute input rate 0 bits/sec, 0 packets/sec
平均数据包大小的计算方法是将每秒字节数除以每秒数据包。在本示例中,数据包的平均大小约为132字节。这表示存在大量小数据包,使平均值产生偏差。例如,大量ARP会导致与生产网络中预期的平均数据包大小相同的偏差,并且表明端口受到广播风暴的侵害。
所有下行链路均未显示异常输入速率。唯一可能受影响的端口是根端口-通往分布层的上行链路。在移到下一台设备之前,首先考虑交换机的生成树。
ACCESS-A#show spanning-tree <--- Without an argument, this command gives spanning-tree information for all VLANs with an active STP instance running. For this example, we assume VLAN 1 is consistent with all VLANs on the trunk. VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 380e.4d77.4800 Cost 2000 Port 3 (TwentyFiveGigE1/1/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address b08b.d08d.6b80 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Gig1/0/1 Desg FWD 20000 128.1 P2p Gig1/0/2 Desg FWD 20000 128.2 P2p <snip> Twe1/1/1 Root FWD 800 128.33 P2p Twe1/1/2 Desg FWD 800 128.34 P2p
<snip>
了解您的网络以及生成树如何收敛的好处如下。Te1/1/1是预期的根端口。Twe1/1/2也连接到交换机并转发,但其输入速率是0个数据包/秒,因此我们知道链路的另一端成功阻塞。生成树的所有配置看起来都正常。现在,我们确认受影响端口上的链路对等体。
ACCESS-A#show cdp neighbors twentyFiveGigE 1/1/1 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID DISTRO-A Twe 1/1/1 137 S I C9300-48P Twe 1/0/3
下一跳交换机- DISTRO-A
下一步是重复之前连接到可疑接口的交换机上的活动。 运行“show interfaces | include is up|input rate”以识别输入速率高得可疑的接口。
DISTRO-A#show interfaces | in is up|input rate 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec TwentyFiveGigE1/1/1 is up, line protocol is up (connected) 5 minute input rate 4846092202 bits/sec, 4572251 packets/sec <-- In this scenario, this input rate raises red flags. This is another situation where understanding normal baselines is helpful. TwentyFiveGigE1/1/2 is up, line protocol is up (connected) 5 minute input rate 0 bits/sec, 0 packets/sec <-- The other end of this link is likely blocking. TwentyFiveGigE1/1/3 is up, line protocol is up (connected) 5 minute input rate 146192134 bits/sec, 171252 packets/sec <-- Fair amount of usage, though exponentially smaller that our 'suspect' link. Again, knowing expected baselines is helpful to identify when deviations occur. This is a downlink towards an access switch in this scenario, and does not raise red flags. TwentyFiveGigE1/1/4 is up, line protocol is up (connected) 5 minute input rate 4938392202 bits/sec, 4723294 packets/sec <-- This is along the same magnitude of input as Twe1/1/1. Often, interfaces impacted by the same broadcast storm shows similar activity. In our scenario, this interface raises red flags. TwentyFiveGigE1/1/5 is up, line protocol is up (connected) 5 minute input rate 032182156 bits/sec, 104263 packets/sec <-- Similar to Twe1/1/3, this interface is active but not at a suspicious level.
在DISTRO-A上,我们发现两个接口的输入速率高于预期。循环的性质意味着通常有多条路径指向源。 我们注意两个接口,但首先检查生成树是否出现异常。
DISTRO-A#show spanning-tree
VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 380e.4d77.4800 Cost 2000 Port 3 (TwentyFiveGigE1/1/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address c18b.a18d.5b76 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Twe1/1/1 Root FWD 800 128.33 P2p Twe1/1/2 Desg FWD 800 128.34 P2p Twe1/1/3 Desg FWD 800 128.35 P2p Twe1/1/4 Desg FWD 800 128.36 P2p Twe1/1/5 Desg FWD 800 128.37 P2p
<snip>
如果您查看DISTRO-A在网络中的位置,会看到此交换机上的所有端口都需要转发。它有一个根端口(Twe1/1/1),直接将其连接到根网桥。它的所有下行链路和到其它交换机的互连都是指定和转发的。这通过我们的生成树输出跟踪。
现在,我们检查可疑接口上的对等体,然后决定下一步去哪里。 任一方向都会导致我们到达环路源。
DISTRO-A#show cdp neighbors twentyFiveGigE 1/1/1 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID CORE Twe 1/1/1 137 S I C9500-48Y4C Twe 1/0/1 DISTRO-A#show cdp neighbors twentyFiveGigE 1/1/4 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID ACCESS-B Twe 1/1/4 137 S I C9300-48P Twe 1/1/1
我们首先检查CORE,但在此场景中迁移到ACCESS-B同样有效。
下一跳交换机-核心
CORE#show interfaces | in is up|input rate TwentyFiveGigE1/0/1 is up, line protocol is up (connected) <--- Both active downlinks have comparably high input rates. It is not unexpected for core devices to have high interface activity. 5 minute input rate 4946092202 bits/sec, 4671352 packets/sec TwentyFiveGigE1/0/2 is up, line protocol is up (connected) 5 minute input rate 4936092202 bits/sec, 4474252 packets/sec <--- It appears that both Twe1/0/1 and Twe1/0/2 are victimized. These are the only active downlinks, so this makes sense. <snip> 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec
因为此交换机是根网桥,所以我们希望它的所有接口都能转发。用“show spanning-tree”快速确认。
CORE#show spanning-tree VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 380e.4d77.4800 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 1 (priority 0 sys-id-ext 1) Address 380e.4d77.4800 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Twe1/0/1 Desg FWD 800 128.25 P2p Twe1/0/2 Desg FWD 800 128.26 P2p
广播风暴没有意外的入口路径。根据我们掌握的信息,该环路位于核心的下游。现在我们将检查我们下行链路上的同行。
CORE#show cdp neighbors twentyFiveGigE 1/0/1 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID DISTRO-A Twe 1/0/1 144 S I C9300-48P Twe 1/1/1 CORE#show cdp neighbors twentyFiveGigE 1/0/2 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID DISTRO-B Twe 1/0/2 139 S I C9300-48P Twe 1/1/1
我们刚从DISTRO-A来。我们可以重新访问DISTRO-A并检查该交换机上标记为可疑的其他接口/对等体,或者我们可以前往DISTRO-B。接下来我们检查DISTRO-B。
下一跳交换机- DISTRO-B
DISTRO-B#show interfaces | in is up|input rate <snip> 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec TwentyFiveGigE1/1/1 is up, line protocol is up (connected) 5 minute input rate 4446192309 bits/sec, 4673252 packets/sec <--- Suspicious TwentyFiveGigE1/1/2 is up, line protocol is up (connected) 5 minute input rate 4457101202 bits/sec, 4571365 packets/sec <--- Suspicious TwentyFiveGigE1/1/3 is up, line protocol is up (connected) 5 minute input rate 136192034 bits/sec, 170261 packets/sec TwentyFiveGigE1/1/4 is up, line protocol is up (connected) 5 minute input rate 4936092202 bits/sec, 4474252 packets/sec <--- Suspicious
现在,我们快速浏览一下生成树,以确保内容按预期显示。
DISTRO-B#show spanning-tree VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 380e.4d77.4800 Cost 800 Port 3 (TwentyFiveGigE1/1/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address b08b.d08d.6b80 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- <snip> Twe1/1/1 Root FWD 800 128.33 P2p Twe1/1/2 Desg FWD 800 128.34 P2p Twe1/1/3 Desg FWD 800 128.33 P2p
Twe1/1/3 Desg FWD 800 128.33 P2p Twe1/1/5 Alt BLK 800 128.34 P2p
此交换机上的生成树符合我们对稳定网络的期望。我们可以看到根端口已按预期收敛,而且我们与DISTRO-B (Twe1/1/4)块的互联已实现。我们的面向接入的接口是指定/转发接口。
现在,我们调查可疑接口上的对等体。
DISTRO-B#show cdp neighbors twentyFiveGigE 1/1/1 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID CORE Twe 1/1/1 144 S I C9500-48Y4C Twe 1/0/1 DISTRO-B#show cdp neighbors twentyFiveGigE 1/1/2 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID ACCESS-C Twe 1/1/2 139 S I C9300-48P Twe 1/1/1 DISTRO-B#show cdp neighbors twentyFiveGigE 1/1/5 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID DISTRO-A Twe 1/1/5 132 S I C9300-48P Twe 1/1/2
我们刚从CORE回来,我们已经参观过DISTRO-A。根据我们目前的发现,逻辑将我们发送到ACCESS-C。
ACCESS-C
ACCESS-C#show interfaces | in is up|input rate GigabitEthernet1/0/1 is up, line protocol is up (connected) 5 minute input rate 43012 bits/sec, 34 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute input rate 0 bits/sec, 0 packets/sec
<snip> TwentyFiveGigE1/1/1 is up, line protocol is up (connected) 5 minute input rate 0 bits/sec, 0 packets/sec <-- This interface has zero packets inbound. Normally this means the interface on the other end of the link is blocking. In this scenario we need to take a closer look since the upstream switch is a distribution switch. TwentyFiveGigE1/1/2 is up, line protocol is up (connected) 5 minute input rate 4834056103 bits/sec, 4461235 packets/sec <-- This interface has a suspicious input rate. TwentyFiveGigE1/1/3 is up, line protocol is up (connected) 5 minute input rate 4456091109 bits/sec, 4573242 packets/sec <-- This interface also has a suspicious input rate.
此交换机明显受环路影响。两个界面显示受害证据。此外,还有一条通向分布层的上行链路意外处于静默状态。我们注意到了这些观察结果,并在旁边检查生成树,看是否有任何特别之处。
ACCESS-C#show spanning-tree VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 380e.4d77.4800 Cost 1600 Port 4 (TwentyFiveGigE1/1/2) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address b08b.d08d.6b80 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Gig1/0/1 Desg FWD 20000 128.01 P2P <snip> Twe1/1/1 Desg FWD 800 128.33 P2p Twe1/1/2 Root FWD 800 128.34 P2p Twe1/1/3 Alt BLK 800 128.33 P2p
同样,了解生成树操作以及网络中的预期情况也会很有帮助。根据显示预期生成树融合的早期图表,ACCESS-C预期有两个阻塞端口。show spanning-tree的输出中只列出一个阻塞端口,该端口是一个巨大的红色标志。在排除故障时,这一点可能并不明显,因此让我们看看此交换机上还有什么异常之处。
分层网络中的接入交换机通常有一个根端口和一个或多个备用端口作为根端口。离开根网桥的下行链路通常是“指定”和“转发”。Twe1/1/1显示为指定端口,这意味着它认为它比链路伙伴更靠近根网桥。我们的图中未列出端口号,因此让我们确认哪些设备连接到可疑设备上的哪些端口。
ACCESS-C#show cdp neighbors twentyFiveGigE 1/1/1 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID. <--- There is no neighbor information listed for this interface. Very suspiscious. ACCESS-C#show cdp neighbors twentyFiveGigE 1/1/2 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID ACCESS-B Twe 1/1/2 144 S I C9300-48P Twe 1/1/3
ACCESS-C#show cdp neighbors twentyFiveGigE 1/1/3 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID DISTRO-A Twe 1/1/3 137 S I C9300-48P Twe 1/1/2
接口Twe1/1/1未列出邻居。这表示从对等设备发送的CDP帧没有到达(或到达,无法处理),因此在此情况下建议使用单向链路。此时,有足够的证据来进一步检查DISTRO-B与ACCESS-C之间的联系。
此接口的输入速率为零,而我们期望另一端根据其生成树输出和接口输出速率进行转发。与链路两端都声称自己是指定链路的意外STP收敛和缺少CDP信息相结合,此链路是单向的。
在这种情况下,中断环路的最快方法是在ACCESS-A上关闭Twe1/1/1。 一旦Twe1/1/1关闭,环路就会物理断开。一旦环路被物理中断,广播风暴将立即开始减弱。
这是一个简化的场景,但演示了这个概念。跟踪环路源所连接的受影响接口。
摘要
此场景展示了快速、准确地排除第2层环路故障的基本方法。该方法可以归纳为以下几个步骤:
ACCESS-C#show interfaces | in is up|input rate
2. 确定连接到可疑接口的对等设备。环路位于其中一个接口的下游。 多条路径指向环路,但所有路径最终指向源。
ACCESS-C#show cdp neighbors twentyFiveGigE 1/1/1
3. 某些网络有些设备具有多个转发路径。检查生成树,确保拓扑已按预期收敛。确保阻止接口阻塞。
ACCESS-C#show spanning-tree
合并这些步骤,当您在设备之间移动时构建拓扑。您最终到达了环路的源头。
当某些因素阻止生成树按预期收敛时,就会出现环路。在此场景中,单向链路导致接入交换机在预期会阻塞的链路上转发。
当非法设备或可疑设备循环或使流量返回网络时,也会发生广播风暴。
本文档中概述的方法可帮助网络专业人员快速定位任何第2层环路或流量反射场景的来源。
最后-为什么不能使用TCN?
该领域的常见做法是在排除环路故障时关注并追踪生成树TCN。我们建议不要这么做,而要支持投入率。Catalyst 9000系列交换机包含强大的控制平面策略策略(CoPP),可防止因传送的流量量导致的传送路径中断。Catalyst 9000交换机上的CoPP在卷超过平台监察器值时管制BPDU,但是,即使未发现高CPU利用率,Catalyst 9000上的生成树也会受到侵害。包括传统Catalyst在内的其他交换机平台(例如2960、3560、3750和4k线路)不使用CoPP,并且在环路期间很容易被接通。任何设备都有可能受到环路的影响,这会使生成树与CPU传送路径上数以百万计的错误广播竞争。因此,生成的TCN往往是误报,会导致工程师走上错误的道路。
Catalyst交换机上提供的一些可选功能可增强对第2层环路的抵抗力。这些功能和最佳实践旨在防止出现环路,并在出现环路时减轻环路的影响。
功能
RootGuard -根防护可防止接口成为根端口。如果收到上级BPDU,该功能会将接口置于根不一致状态。如果网络包含与其他组织管理的设备的连接,则该功能特别有用。这通常适用于面向接入层的分布层下行链路。在稳定的网络中,绝对不希望上游的BPDU从下游到达。
LoopGuard -通常在STP中,根端口和备用端口接收BPDU,而指定端口传输这些BPDU。这种关系可能导致生成树无法响应单向链路。环路防护可防止替代端口或根端口成为指定端口。如果接口没有定期接收和处理BPDU,环路防护会将接口置于err-disabled状态。
BPDUGuard -如果在已配置的端口上收到BPDU,则此功能通过将接口置于err-disable状态来运行。在边缘端口上配置此配置,否则其他网络设备无法连接到边缘端口。此功能通常与Portfast一起使用。
PortFast - Portfast用于边缘端口-大多数情况下是接入端口,但在某些情况下也用于中继。它允许边缘端口放弃正常的生成树阶段并直接转换到转发状态。从端点的角度来说,这可以节省时间,还可以防止不稳定的边缘端口传输TCN。Portfast必须始终与BPDUGuard一起使用,以避免在意外连接网络设备时导致环路。
其他最佳实践
VLAN范围 -仅允许在中继上使用所需的VLAN。这样可以限制环路的范围,防止局部问题演变为网络范围的故障。
将非工作VLAN用作本地VLAN -最佳实践是为TRUNK使用非工作VLAN。许多网络使用覆盖整个网络的默认本征VLAN (1)。使用无法正常运行的VLAN作为本征,进一步限制环路的可能范围。
使用统一路径开销计算方法 -自IOS XE 17.6开始,Catalyst 9000系列交换机均默认运行长路径开销方法。默认情况下,以前的版本可能会运行较短。默认情况下,大多数传统Catalyst交换机运行时间较短。使用混合路径成本方法的环境在响应拓扑变化和干扰方面存在问题。确保所有交换机运行相同的方法。有关详细信息,请参阅生成树的相关平台配置指南。
请使用“spanning-tree pathcost method <long/short>”命令控制路径开销方法。Show spanning-tree summary用于确认使用的方法。
ACCESS-A(config)#spanning-tree pathcost method ? long Use 32 bit based values for default port path costs short Use 16 bit based values for default port path costs ACCESS-A(config)#spanning-tree pathcost method long <snip>
ACCESS-A#show spanning-tree summary Switch is in rapid-pvst mode Root bridge for: VLAN0001 Extended system ID is enabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is disabled Loopguard Default is disabled EtherChannel misconfig guard is enabled UplinkFast is disabled BackboneFast is disabled Configured Pathcost method used is long <--- Displays the configured pathcost method.
<snip>
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
14-Nov-2023 |
初始版本 |