ARP广播洪泛网络和高CPU使用率


20

希望有人可以对我们面临的问题有所了解。目前,我们有Cisco TAC在调查此案,但他们正在努力寻找根本原因。

尽管标题中提到了ARP广播和较高的CPU使用率,但是我们不确定在此阶段它们是否相关。

原始问题已发布在INE Online社区上

我们将网络简化为单个链路,没有冗余设置,可以将其视为星形拓扑。

事实:

  • 我们使用3750x交换机,每堆叠4个。15.0(1)SE3版。对于此特定版本,Cisco TAC确认没有有关高cpu或ARP错误的已知问题。
  • 没有连接集线器/不受管理的交换机
  • 重新加载核心堆栈
  • 我们没有默认路由“ Ip route 0.0.0.0 0.0.0.0 f1 / 0”。使用OSPF进行路由。
  • 我们看到来自VLAN 1的大型广播数据包用于台式机设备。我们使用192.168.0.0/20
  • 思科TAC表示,使用/ 20不会出现任何问题,否则我们将拥有一个较大的广播域,但仍然可以正常工作。
  • Wifi,管理,打印机等都位于不同的VLAN
  • 生成树已通过思科TAC和CCNP / CCIE合格人员的验证。我们关闭所有冗余链接。
  • 核心上的配置已通过Cisco TAC验证。
  • 大多数交换机上都有默认的ARP超时。
  • 我们不实施问答。
  • 没有添加新的开关(至少我们不知道)
  • 由于这些是2950,因此无法在边缘交换机上使用动态arp检查
  • 我们使用了show接口| inc广播以找出大量广播来自何处,但是Cisco TAC和2位其他工程师(CCNP和CCIE)都确认这是正常行为,原因是网络上发生了什么(如大量的Mac襟翼导致更大的广播)。我们验证了STP在边缘交换机上是否正常运行。

网络和交换机上的症状:

  • 大量MAC襟翼
  • ARP输入过程的CPU使用率高
  • 大量的ARP数据包,迅速增加并可见
  • Wiresharks显示ARP广播淹没了数百台计算机
  • 为了进行测试,我们将大约80个台式机放置了不同的VLAN,但是我们对此进行了测试,并且对高CPU或ARP输入没有明显的影响
  • 运行了不同的AV /恶意软件/间谍软件,但网络上没有可见的病毒。
  • sh mac地址表计数,向我们显示了VLAN 1上预期的大约750个不同的mac地址。
#sh processes cpu sorted | exc 0.00%
CPU utilization for five seconds: 99%/12%; one minute: 99%; five minutes: 99%

 PID Runtime(ms)     Invoked      uSecs   5Sec   1Min   5Min TTY Process
  12   111438973    18587995       5995 44.47% 43.88% 43.96%   0 ARP Input
 174    59541847     5198737      11453 22.39% 23.47% 23.62%   0 Hulc LED Process
 221     7253246     6147816       1179  4.95%  4.25%  4.10%   0 IP Input
  86     5459437     1100349       4961  1.59%  1.47%  1.54%   0 RedEarth Tx Mana
  85     3448684     1453278       2373  1.27%  1.04%  1.07%   0 RedEarth I2C dri
  • 在不同的交换机和内核本身上显示了mac地址表(例如,在内核上,直接由桌面插入,我的桌面插入了内核),即使该接口具有仅与此连接的一台计算机:
 Vlan    Mac Address       Type        Ports
 ----    -----------       --------    -----
    1    001c.c06c.d620    DYNAMIC     Gi1/1/3
    1    001c.c06c.d694    DYNAMIC     Gi1/1/3
    1    001c.c06c.d6ac    DYNAMIC     Gi1/1/3
    1    001c.c06c.d6e3    DYNAMIC     Gi1/1/3
    1    001c.c06c.d78c    DYNAMIC     Gi1/1/3
    1    001c.c06c.d7fc    DYNAMIC     Gi1/1/3
  • 显示平台tcam利用率
 CAM Utilization for ASIC# 0                      Max            Used
                                              Masks/Values    Masks/values

  Unicast mac addresses:                       6364/6364       1165/1165
  IPv4 IGMP groups + multicast routes:         1120/1120          1/1
  IPv4 unicast directly-connected routes:      6144/6144        524/524
  IPv4 unicast indirectly-connected routes:    2048/2048         77/77
  IPv4 policy based routing aces:               452/452          12/12
  IPv4 qos aces:                                512/512          21/21
  IPv4 security aces:                           964/964          45/45

我们现在处于一个阶段,在这个阶段,我们将需要大量的停机时间来一次隔离每个区域,除非其他人有一些想法来确定此怪异而奇怪的问题的根源或根本原因。


更新资料

感谢@MikePennington和@RickyBeam的详细回复。我会尽力回答。

  • 如前所述,192.168.0.0 / 20是一个继承的混乱。但是,我们确实打算在将来对此进行拆分,但是很遗憾,此问题在我们无法解决之前就已发生。我个人也同意多数意见,因为广播领域太大了。
  • 使用Arpwatch绝对是我们可以尝试的方法,但是我怀疑,因为几个访问端口正在注册mac地址,即使它不属于该端口,arpwatch的结论也可能没有用。
  • 我完全同意不能100%确定在网络上找到所有冗余链路和未知交换机,但是根据我们的发现,这是事实,直到我们找到进一步的证据为止。
  • 已经研究了端口安全性,不幸的是,出于各种原因,管理层决定不使用此功能。常见原因是我们不断在(大学环境中)移动计算机。
  • 默认情况下,我们在所有访问端口(台式机)上将生成树portfast与生成树bpduguard结合使用。
  • 目前,我们不在接入端口上使用switchport nonnegotiate,但是我们并没有收到跨多个VLAN反弹的任何VLAN跳跃攻击。
  • 暂时给mac-address-table通知,看看是否可以找到任何模式。

“由于在交换端口之间有大量的MAC摆动,因此很难找到违规者所在的位置(假设您发现有两个或三个发送大量arp的mac地址,但是源mac地址却在端口之间不断摆动)。”

  • 我们从此开始,选择了任意一个MAC挡板,然后继续通过所有核心交换机,直至分发到访问交换机,但是我们发现,访问端口接口再次占用了多个MAC地址,因此就产生了MAC挡板。回到正题。
  • 我们确实考虑过风暴控制,但是我们担心一些合法数据包会被丢弃,从而导致进一步的问题。
  • 将三重检查VMHost配置。
  • @ytti无法解释的MAC地址位于许多访问端口后面,而不是单个端口后面。在这些接口上尚未找到任何循环。MAC地址也存在于其他接口上,这可以解释大量的MAC摆动
  • @RickyBeam我同意为什么主机发送这么多ARP请求;这是令人困惑的问题之一。众所周知,Rouge无线网桥是一个有趣的桥梁,据我所知,无线网络位于不同的VLAN上。但是流氓显然将意味着它很可能在VLAN1上。
  • @RickyBeam,我真的不希望断开所有连接,因为这将导致大量的停机时间。但是,这可能只是前进的方向。我们确实有Linux服务器,但不超过3台。
  • @RickyBeam,您能解释一下DHCP服务器“使用中”探测吗?

我们(思科TAC,CCIE,CCNP)在全球范围内同意这不是交换机配置,而是主机/设备引起了该问题。


1
我会指出:除非网络中存在环路,否则不应发生mac扑灭。唯一的其他逻辑原因是VM使用相同的MAC。(或某些骨头将多个nic设置为使用同一MAC)

@ColdT,我更新了答案,因为我在原始回复中误读了一些内容。
Mike Pennington

您是否在许多端口或仅一个端口后面遇到大量无法解释的MAC地址?端口是否可以循环?MAC地址是留在该端口后面还是也出现在其他端口后面?我们有用于ARP的PCAP吗?大量的MAC振荡肯定根本不正常,这意味着拓扑结构不断变化,或者网络中存在非托管环路。

1
@ColdT,我想您应该与港口安全管理部门重新接触;我专门为您提供了允许PC在交换机端口之间移动的配置。 switchport port-security aging time 5并且switchport port-security aging type inactivity意味着你可以端口之间的闲置5分钟后,移动站,或者如果你手动清除端口的安全项。但是,此配置可防止交换机的访问端口之间出现mac摆动,因为端口无法从其他端口任意获取相同的mac地址。
Mike Pennington

还值得一提的是,除非同一IP地址使用不同的ARP,否则arpwatch不会注册触发器。无论原因为何,您都需要知道何时发生。仅仅Mac洪水不足以使arpwatch感到困惑
Mike Pennington

Answers:


12

解决了。

问题出在SCCM 2012 SP1上,该服务称为:ConfigMrg唤醒代理。“功能”不存在SCCM 2012 RTM。

在政策中关闭此功能的4个小时内,我们看到CPU使用率稳步下降。到4个小时用完时,ARP使用率仅为1-2%!

总而言之,此服务会进行MAC地址欺骗!无法相信它造成了多大破坏。

以下是Microsoft Technet的全文,因为我认为了解与发布的问题之间的关系非常重要。

对于任何有兴趣的人,下面是技术细节。

当您要安装所需的软件(例如软件更新和应用程序)时,Configuration Manager支持两种唤醒局域网(LAN)技术以睡眠模式唤醒计算机:传统的唤醒数据包和AMT开机命令。

从Configuration Manager SP1开始,您可以使用唤醒代理客户端设置来补充传统的唤醒数据包方法。唤醒代理使用对等协议和选举的计算机来检查子网上的其他计算机是否处于唤醒状态,并在必要时将其唤醒。当站点配置为Wake On LAN且客户端配置为唤醒代理时,该过程如下所示:

  1. 安装了Configuration Manager SP1客户端并且未在子网上处于睡眠状态的计算机将检查子网上的其他计算机是否处于唤醒状态。他们通过每5秒发送一次TCP / IP ping命令来做到这一点。

  2. 如果没有其他计算机的响应,则认为它们处于睡眠状态。醒着的计算机将成为该子网的管理器计算机。

  3. 因为计算机可能由于睡眠以外的原因而没有响应(例如,计算机已关闭,已从网络中删除或不再应用代理唤醒客户端设置),所以计算机每天当地时间下午2点发送唤醒数据包。没有响应的计算机将不再被视为处于睡眠状态,也不会被唤醒代理唤醒。

为了支持唤醒代理,每个子网至少必须唤醒三台计算机。为实现此目的,不确定地选择了三台计算机作为子网的监护计算机。这意味着,即使在一段时间不活动之后配置了任何电源策略以使其休眠或休眠,它们仍保持清醒状态。监护计算机接受关机或重新启动命令,例如由于维护任务。如果发生这种情况,其余的监护计算机将唤醒子网上的另一台计算机,以便该子网继续具有三台监护计算机。

管理器计算机要求网络交换机将睡眠计算机的网络流量重定向到它们自己。

通过管理器计算机广播以太网帧来实现重定向,该以太网帧使用睡眠计算机的MAC地址作为源地址。这使网络交换机的行为就像休眠计算机已移至管理器计算机所在的端口一样。管理器计算机还向睡眠计算机发送ARP数据包,以使该条目在ARP缓存中保持最新状态。管理器计算机还将代表睡眠计算机响应ARP请求,并使用睡眠计算机的MAC地址进行回复。

在此过程中,睡眠计算机的IP到MAC映射保持不变。唤醒代理通过通知网络交换机另一个网络适配器正在使用由另一个网络适配器注册的端口来工作。但是,此行为被称为MAC摆动,对于标准网络操作是不常见的。一些网络监视工具会寻找这种行为,并可以假定出了问题。因此,当您使用唤醒代理时,这些监视工具可以生成警报或关闭端口。如果您的网络监视工具和服务不允许MAC震荡,请不要使用唤醒代理。

  1. 当管理器计算机看到针对睡眠计算机的新TCP连接请求,并且该请求是在睡眠计算机进入睡眠状态之前正在侦听的端口时,管理器计算机将唤醒数据包发送到睡眠计算机,然后停止为此计算机重定向流量。

  2. 睡眠计算机接收唤醒数据包并唤醒。发送方计算机会自动重试连接,这一次,计算机处于唤醒状态并且可以响应。

参考:http : //technet.microsoft.com/zh-cn/library/dd8eb74e-3490-446e-b328-e67f3e85c779#BKMK_PlanToWakeClients

非常感谢所有在此发布并协助解决问题的人员。


您没有在答案中添加基本要素:如何关闭该功能?
主宰

10

ARP /广播风暴

  • 我们看到来自VLAN 1的大型广播数据包用于台式机设备。我们使用192.168.0.0/20 ...
  • Wiresharks显示,有数百台计算机正通过ARP广播充斥整个网络...

您的ARP输入过程很高,这意味着交换机要花费大量时间来处理ARP。ARP泛洪的一个非常常见的原因是交换机之间存在环路。如果有循环,那么您还可以获得上面提到的mac襟翼。ARP泛洪的其他可能原因是:

  • IP地址配置错误
  • 第2层攻击,例如Arp欺骗

首先,消除上述错误配置或第2层攻击的可能性。最简单的方法是在Linux机器上使用arpwatch(即使您必须在笔记本电脑上使用livecd)。如果您配置错误或受到Layer2攻击,那么arpwatch会在syslog中为您提供此类消息,其中列出了在同一IP地址上进行争夺的mac地址...
Oct 20 10:31:13 tsunami arpwatch: flip flop 192.0.2.53 00:de:ad:85:85:ca (00:de:ad:3:d8:8e)

当您看到“触发器”时,您必须跟踪mac地址的来源,并弄清它们为什么要争夺相同的IP。

  • 大量MAC襟翼
  • 生成树已通过思科TAC和CCNP / CCIE合格人员的验证。我们关闭所有冗余链接。

作为经历过多次此事的人来说,不要以为我发现了所有多余的链接……只是让您的切换端口始终处于行为状态。

由于在切换端口之间会出现大量的mac振荡,因此很难找到违规者所在的位置(假设您找到了两个或三个发送大量arp的mac地址,但源mac地址却在端口之间不断波动)。如果您不对每个边缘端口的mac地址执行硬性限制,那么在不手动拔下电缆的情况下很难追踪这些问题(这是您要避免的)。交换机环路会导致网络中出现意外路径,最终可能会从通常应该是台式机交换机端口中间歇性地学习到的数百台Mac。

降低mac-moves速度的最简单方法是使用port-security。在连接到一台PC的Vlan 1中的每个访问交换端口上(无下游交换机),在cisco交换机上配置以下接口级命令...

switchport mode access
switchport access vlan 1
!! switchport nonegotiate disables some Vlan-hopping attacks via Vlan1 -> another Vlan
switchport nonnegotiate
!! If no IP Phones are connected to your switches, then you could lower this
!!   Beware of people with VMWare / hubs under their desk, because 
!!   "maximum 3" could shutdown their ports if they have more than 3 macs
switchport port-security maximum 3
switchport port-security violation shutdown
switchport port-security aging time 5
switchport port-security aging type inactivity
switchport port-security
spanning-tree portfast
!! Ensure you don't have hidden STP loops because someone secretly cross-connected a 
!!   couple of desktop ports
spanning-tree bpduguard enable

在大多数mac / ARP泛洪情况下,将此配置应用于所有边缘交换机端口(尤其是带有portfast的端口)将使您回到正常状态,因为该配置将关闭任何超过三个mac-address的端口,并秘密禁用循环的portfast端口。每个端口3个macs在我的桌面环境中可以很好地工作,但是您可以将其提高到10个,也许还可以。完成此操作后,所有第2层循环都会中断,快速的mac皮瓣将停止,这使诊断变得更加容易。

另外两个全局命令对于跟踪与广播风暴(mac-move)和泛洪(阈值)相关的端口很有用...

mac-address-table notification mac-move
mac address-table notification threshold limit 90 interval 900

完成后,可以选择执行clear mac address-table来从可能已满的CAM表加速恢复。

  • 在不同的交换机和内核本身上显示了mac地址表(例如,在内核上,直接由桌面插入,我的桌面插入了内核),即使该接口具有仅一台与此计算机相连的计算机...

整个答案假设您的3750没有导致问题的Bug(但是您确实说过Wireshark表示PC泛滥)。当只有一台计算机连接到Gi1 / 1/3上时,您所显示的内容显然是错误的,除非该PC上装有类似VMWare之类的东西。

杂项思想

基于我们的聊天对话,我可能不必提及显而易见的内容,但是为了将来的访问者,我会...

  • 将任何用户放入Vlan1通常不是一个好主意(我知道您可能继承了一个烂摊子)
  • 无论TAC告诉您什么,192.168.0.0 / 20太大了,无法在单个交换域中进行管理,而没有第二层攻击的风险。子网掩码越大,由于ARP是未经身份验证的协议,并且路由器必须至少从该子网中读取有效的ARP,因此您受到诸如此类的第2层攻击的风险就越大。
  • 通常,在第2层端口上进行风暴控制也是一个好主意。但是,在这种情况下启用暴风雨控制,会导致流量减少而流量减少。网络修复后,在边缘端口和上行链路上应用一些风暴控制策略。

1
实际上,他的tcam并没有达到极限。第一列是最大值,第二列是当前使用量。您可以忽略蒙版与值部分。从这里开始,这听起来像是“简单的” arp风暴,但是在不了解他的拓扑和实际流量的情况下,我无法猜测原因。

2

真正的问题是为什么主机首先要发送这么多ARP。在回答此问题之前,交换机将继续难以应对arp风暴。网络掩码不匹配?低主机arp计时器?一个(或多个)具有“接口”路由的主机?某个地方的胭脂无线网桥?“免费的arp”疯了吗?DHCP服务器“使用中”探测?听起来这与交换机或第2层无关。您有主持人在做坏事。

我的调试过程是拔下所有电源,并在重新连接时密切监视,一次只能连接一个端口。(我知道这与理想情况相去甚远,但是在某些时候,您必须减少损失并尝试从物理上隔离所有可能的信号源。)然后,我将努力理解为什么某些选择的端口会产生许多arp。

(这些主机中有很多会是Linux系统吗?Linux的ARP缓存管理系统非常笨拙。它会在短短几分钟内“重新验证”条目的事实在我的书中已被打破。 。在小型网络中,问题往往较少,但/ 20并非小型网络。)


1

这可能与您手头的问题有关,也可能无关,但是我认为这至少值得一提:

当前,在一些远程站点中,我们有很多堆叠的3750x,大多数运行15.0.2(SE0到4,有些SEO的FRU错误正在慢慢地移走)。

在例行的IOS更新中,从15.0.2升级到15.2-1(最近的SE),我们注意到CPU有了显着增长,在非高峰时间从平均约30%增加到60%甚至更高。我已经查看了配置和IOS更改日志,并一直在使用Cisco TAC。根据TAC的说法,他们似乎是在相信这是IOS 15.2-1错误的地步。

随着我们继续研究CPU的增加,我们开始看到大量的ARP流量到ARP表完全填满并导致网络不稳定的地步。临时的选择是将语音和数据VLAN上的ARP超时从默认值(14400)手动回退到300。

减少ARP超时后,我们稳定了大约一周的时间,这时我们回到了IOS 15.0.2-SE4,并删除了非默认ARP超时。我们的CPU使用率回落到〜30%,并且我们的ARP表问题不存在。


有趣的故事...感谢您的分享,尽管它可能有助于添加Bugid,因此更容易辨别OP是否公开。仅供参考,将ARP超时保持在低于CAM计时器的时间通常是个好主意。
Mike Pennington

感谢您的评论,但是鉴于原始问题,我们目前在整个堆栈中使用较低的IOS版本,并且一段时间以来一直相当稳定。@MikePennington默认情况下将ARP超时设置为4小时,而CAM超时设置为5分钟?是不是这样?
冷T

@ColdT,这就是为什么我提到这一点。对于某些HSRP情况,默认情况下,Cisco的CAM / ARP计时器会中断操作。除非有其他令人信服的理由,否则我将arp timeout 240在所有面向交换机的SVI / L3接口上进行设置。
Mike Pennington

0

一个简单的失败,但也许被忽略了;您的客户端是否具有有效的默认网关,您的核心不是做很多代理arp吗?您可以考虑取消3750上的ip proxy arp功能吗?

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.