如何诊断桥接(以太网)环路?


43

鉴于生成树已失败(或您没有任何生成树)并出现了以太网环路,诊断问题出在哪里的最佳方法是什么?

哪个开关,哪个电缆?等等。


有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。
罗恩·莫平

Answers:


31

好的,所以假设您的拓扑如下:

          SW1
         /   \
        /     \
       /       \
PC A--SW2-----SW3--PC B

由于某些原因,存在桥接环路,禁用了STP或有人在错误的地方等应用了过滤器。

PC A希望与PC B进行通信。它首先是PC B MAC的ARP,目的地是使用MAC ffff.ffff.ffff的广播。因此,帧同时进入SW1和SW3。SRC MAC是PCA。然后SW1将帧泛洪到SW3,SW3将泛洪从SW2到SW1的帧。

当第一帧进入时,SW1和SW3学习了PC A的MAC。当第二帧从相反方向进入时,它必须重新学习。由于这些事件发生得如此迅速且反复,您将看到日志消息抱怨MAC抖动。诸如“ MAC FLAP 0000.0000.0001在Gi0 / 24和Gi0 / 23之间摇摆”之类的东西。这是循环的好兆头。

然后,您可以尝试跟踪此MAC。尝试查找同一子网中设备的ARP缓存,并查看该设备具有的IP。因此,通过MAC,您可以尝试使用sh mac-address-table或IP对其进行跟踪,也许您有一个包含所有IP及其连接位置的列表。

如果主机从DHCP服务器获取IP地址,您也可以尝试在其中查找主机的来源。如果您启用了选项82,那将是一个很大的帮助。

其他迹象表明,CLI将非常缓慢。CPU负载将非常高。交换机几乎可以完成ASIC中的所有操作,因此,如果交换机的CPU负载超过50%,那可能就不好了。您应该实施SNMP监视,并注意CPU高负载。还要查找MAC摆动消息。如果开关具有环路,则LED可能会疯狂地闪烁。

您可以做的防止循环的操作:

  • 启用S​​TP!(du)
  • SNMP监视CPU负载
  • 为某些事件启用SNMP陷阱,例如STP拓扑更改
  • 在端口上启用风暴控制以限制广播
  • 在L2拓扑中不要跨太多VLAN
  • 启用端口安全性并限制每个端口的MAC地址数量
  • 如果运行DHCP,则启用Option82

我不得不说CPU负载项目让我有些惊讶。尽管我在处理循环方面的所有经验都来自ProCurve设备,但我之前从未在桥接循环中看到过。对他们而言,CLI似乎从来都不迟钝。
Paul Gear

有趣。也许惠普在做事上与思科有所不同。可能影响它的一些因素是循环中涉及的接口速度。如果是单播或广播。交换机是否在VLAN中具有SVI。
丹尼尔·迪布

1
是的-很奇怪 我本以为所有这些东西(交换机IP问题除外)都在硅片中……
Paul Gear

实际上,考虑到这一点,我几乎可以肯定的是,在受影响的VLAN中我们从来没有交换机IP。我们在该站点上的所有交换机到交换机链接都未在没有任何管理IP的传输VLAN上进行标记。
Paul Gear

22

我的一位用户最近从某人的办公桌借了一个台式机开关。返回交换机后,他们插入了附近所有松散的以太网端。这些电缆中的一根连接到网络,另一根是同一根电缆的两端。桌面交换机已插入网络,也已插入自身。交换机没有STP,因此从网络传入的广播将在另一条电缆上双向传播。当然,每次在环路端口上收到广播时,它都会被复制回到网络中。由于设计不佳,它使HSRP变得异常疯狂,并且还导致了整个园区的OSPF邻接故障。

问题的第一个迹象是转发给我电子邮件的macflap。这立即导致我们进入正确的布线室。从那里开始,这是一个基于端口LED,接口pps和日志的消除过程。不用说,此后我重新组织了整个校园。最好的预防措施可能是bpduguard。此后,我就已经部署了该功能,而且非常简单。在我的电子邮件中获得可禁用的syslog简直就是幸福。


3
不幸的是,如果您将WIFI接入点连接到各种交换机,则MAC Flaps日志消息将毫无用处,因为用户从一个AP漫游到另一个AP会导致此类消息。BPDU Guard(或类似的机制)必须在访问交换机上使用。如果您很懒,还可以输入“ errdisable recovery cause bpduguard”语句,该语句会导致处于错误禁用状态的端口在5分钟后自动进入转发状态,因此断开连接后无需在配置中重置端口令人反感的电缆
Remi Letourneau 2013年

1
>从那里开始,这是一个基于端口LED的消除过程……啊,达斯·布林肯利希滕(Das Blinkenlichten)。
亚瑟·凯

11

对于大多数设备,CPU的使用率会达到100%,唯一可以做的就是断开冗余物理连接。一旦CPU稳定下来,您就可以将链接一一插入,然后看看哪一个会引起循环。

对于大型机箱(例如6500),我必须拔出所有刀片并将它们一次插回去。一旦确定了哪个刀片,就必须拉出所有单独的链接(16个GBIC),并将它们一次又放回一个。永远不要开心。

一些更现代的设备具有受保护的CPU,这应该使它更易于处理-您仍然可以与盒子互动。到那时,查看交通计数器等来确定故障链接成为可能。


11

我最近刚开始在一家公司使用其每个端口上的广播限制的公司。如果端口在广播时通过的容量大于其容量的5%,则交换机会将其置于ERRDISABLE。

 storm-control broadcast level 5.00  
 storm-control action shutdown

当一组人倾向于插入将无线网络桥接到LAN的设备时,这可以节省生命。

尽管对于您的实际问题,我总是发现它是手动的。


9

对于IOS:

您可能会在端口之间摆动MAC地址。.在以下位置查找MAC_MOVE_NOTIFICATION(或类似的)错误:

sh logg

现在找到端口:

sh int g0/1 controller

查找出的普通MulticastBroadcast数字。任何碰撞都是一个不好的信号。

最后但并非最不重要的是,您无法登录,因为已对CPU进行了伪装:)

sh proc cpu

交换机在这里怎么样?如果仅是L2交换机,那么您不需要高于〜10%的值


9

如果您拥有不受管理的权限,或者具有不受管理的权限(缺少登录详细信息,或者缺乏交换机操作系统的知识等),交换机和桥接循环的情况,我将描述如何手动查找循环。这也解决了原始问题“您没有STP”的根本问题。

故障定位此循环的基本算法与STP相似,不同之处在于您不易访问带有端口ID的BPDU。

  • 首先,将具有数据包转储/嗅探功能的设备连接到其中一个交换机的端口。现在,该设备已成为树的根设备。
    • 如果您必须在多个位置(例如,在“校园”或类似地点)进行故障定位,则可以通过便携式ssh客户端远程登录到数据包转储机器来获益。
      • 我个人将我的Linux笔记本电脑与Internet连接并在屏幕上使用tcpdump进行连接,然后通过ipad或手机将其SSH进入。
    • 如果您无法远程登录自己,请使用一位朋友直观地监视tcpdump,该tcpdump可能以链接速度泛滥,从而使得在断开到循环源设备的路径时,很容易注意到差异。
  • 接下来,您将必须从根交换机开始实质上重新创建一棵树。
    1. 而且,由于您可能会遇到多个循环链接馈入根设备的情况,因此必须首先同时删除所有连接的端口。
    2. 一个接一个地重新连接端口,如果在任何时候包突发再次出现,请将该端口连接到另一端的已连接交换机。
    3. 重复步骤1,直到找到循环的端口,并且无法在您的手动树中进一步向下迭代。
    4. 解决了此交换机中的环路情况后,返回树中上方的交换机,然后继续执行步骤2。此递归一直一直进行到最后一根电缆重新连接到根交换机中为止。

这是对环路端口的完全详尽的手动搜索。

通常,只有一对端口是环形的,这意味着彻底而安全的搜索,无需先删除所有连接的(链接)端口,然后再将它们一个接一个地重新连接。如果“树”上只有一个端口对被循环,您只需一次断开一个端口就可以找到它。

尽管如此,通用的“防污”,方法或算法已成为我上面描述的内容。


7

哎哟。但是好吧,我可以想到两种方法...

注意:如果交换机具有端口指示灯,则您应该能够查看哪些端口最活跃。这些是首先要看的。希望这些电缆都贴上标签,以便您可以在使用同一根电缆的两个交换机上搜索找到两个繁忙端口的低端成果。

SNMP监视:如果您具有SNMP(或类似的)使用情况统计信息,请查找最繁忙的交换机和最繁忙的端口。然后去看电缆。

...如果电缆没有标签,请在检查最繁忙的端口时开始进行跟踪和标记。


2
SNMP陷阱要比SNMP轮询更好,后者通常每300秒仅进行一次。洪水和随后的崩溃可能发生得如此之快,以至于SNMP无法监控任何内容。但是,仍然有用的是,SNMP监视器没有从无法跟上的交换机取回数据,这可能是一个起点。
generalnetworkerror

3

我将基于这样的理解来回答这个问题,即有关的第2层域已完全中断,并且您没有管理访问权限,因为CPU都固定了。

解决桥接环路的最佳方法是开始拔掉上行链路,直到上行链路消失为止。假设您有一个标准的交换访问层,所有访问交换机都连接到一对分布交换机中。转到第一个接入交换机,并拔掉上行链路,如果交换机端口的LED指示灯停止闪烁,那不是那个交换机,请重新插入并转到下一个交换机。重复直到您断开上行链路的连接并且LED持续快速闪烁的开关为止,这就是您的带有环路的开关。

现在,在最终用户端口上开始拔出过程,直到LED平静下来为止(如果这样做),您最后拔下的端口就是问题端口,走线并适当地惩罚用户。


2

老实说,如果您将设备远程连接(或通过控制台电缆),则会发现它非常缓慢,从键入到出现在CLI上的字母之间会有一定的延迟。

如果是Cisco交换机,那么2个简单的交换机就可以查看接口统计信息,它将始终处于100%(或255/255)的使用率。在处理交换机的多年中,我还没有看到端口合法地达到100%的使用率。除此之外,请检查CPU使用情况(通常是“显示进程的CPU历史记录”),除非您正在运行高端交换机,否则循环接口通常会严重影响您的CPU。

确实应该启用STP!


2

我曾在美国另一端的网络上发生此问题,并不得不通过电话和我的wan链接到他们的站点来远程帮助一些一级分析师。由于他们拥有多个品牌的交换机,并且多年来逐渐将它们添加到网络中,因此问题变得更加复杂。当他们将办公室搬到办公室时,他们标记了每个端口的去向,然后以完全相同的方式在新办公室重新连接了所有设备,并启动了所有设备。不用说,少数具有有效的生成树功能的交换机不会以相同的方式收敛,并且它们具有各种循环和问题。到我完成修复工作时,发现至少有三台不受管理的交换机已与其余基础架构环路连接。

我能够追踪每个非托管交换机的方法是使用一个名为nedi的工具(在能够管理的交换机上,我启用了lldp / cdp)。我首先使用nedi生成地图。然后在地图显示从一个交换机到另一交换机的连接然后又回到同一交换机的区域,我让网络技术人员在现场手动跟踪线路。我要么手动关闭与环路相关的接口,要么让现场人员拔下电缆。最终,尽管所有疯狂的品牌转换,我都能使网络正常运行。


1

此处可以做的一件事是使用命令show cdp neighbor或查看连接到交换机的机器show lldp neighbor

如果未使用BPDU保护命令,并且有人连接了优先级较低(或较旧的mac地址)的恶意交换机,则新设备将协商为生成树根,这肯定会引起问题。



0

确定回路实际上取决于您拥有的开关品牌。例如,在Extreme交换机上,我可以在VLAN上运行elrp-client,而该交换机将基本上在该VLAN的所有端口上发送广播帧,并查看它是否由其中任何一个返回,如果是,它将告诉我重新接收到帧的端口,从而显示循环候选者。

在Cisco上,您可以启用风暴控制,这更是一种钝器,因为它基本上会阻塞端口一段时间,直到状态清除(或清除可错误状态)为止-一般来说,这种情况仅当您在既不生成树也不转发BPDU的设备的混合拓扑中使用Cisco交换机时,事情才有意义。


0

毫无疑问,我发现最快的方法是监视接口的数据包/秒速率。具有适当的CLI过滤器的快速显示界面将列出每个界面以及数据包/秒速率。要找到循环的来源,请寻找唯一一个疯狂的高数据包/秒输入速率的接口。在具有典型利用率配置文件的典型企业环境中,它每次都能正常运行。在具有许多接口的6500上,不需要很长时间就能找到源...


0

在循环期间,对于终端站上的大量广播流量(例如ARP请求),也可能会增加CPU的负载(例如,如果您使用便宜的100Mbit / s realtek卡来计算CPU的校验和)。如果电缆断开,从物理上可能会发现一个环路,链路立即在2个端口上丢失。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.