ARP广播泛滥networking和高CPU使用率

希望这里的某个人对我们所面临的问题有所了解。 目前我们有思科TAC正在审视案件,但他们正在努力寻找根本原因。

虽然标题提到了ARP广播和高CPU使用率,但我们不确定这一阶段是否相关或不相关。

原始问题已发布在INE在线社区

我们已经将networking剥离到单个链路上,没有冗余设置,将其视为星形拓扑结构。

事实:

  • 我们使用3750x交换机,一个堆叠4个。 版本15.0(1)SE3。 思科TAC确认这个特定版本的高CPU或ARP错误没有已知问题。
  • 没有集线器/非pipe理型交换机连接
  • 重新加载核心堆栈
  • 我们没有默认路由“Ip路由0.0.0.0 0.0.0.0 f1 / 0”。 使用OSPF进行路由。
  • 我们看到来自用于桌面设备的VLAN 1,VLAN 1的大型广播数据包。 我们使用192.168.0.0/20
  • 思科TAC表示,他们没有看到使用/ 20的任何错误,否则我们会有一个大的广播域,但应该仍然运作。
  • Wifi,pipe理,打印机等都在不同的VLAN上
  • 生成树已通过思科TAC&CCNP / CCIE合格人员的validation。 我们closures所有的冗余链接。
  • 核心configuration已通过思科TACvalidation。
  • 我们在大多数交换机上都有默认的ARP超时。
  • 我们不实施Q&Q.
  • 没有添加新的交换机(至less我们不知道)
  • 在边缘交换机上不能使用dynamicARP检查,因为它们是2950
  • 我们使用了show interfaces | 通过广播来确定广播来自哪里,但是思科TAC和其他两名工程师(CCNP&CCIE)确认这是由于networking上发生的事情而导致的正常行为(如在大量的Mac襟翼造成更大的广播)。 我们validation了STP在边缘交换机上运行正常。

networking和交换机上的症状:

  • 大量的MAC皮瓣
  • ARPinput过程的高CPU使用率
  • 大量的ARP数据包,迅速增加和可见
  • Wiresharks显示,100台计算机正在使用ARP广播泛滥networking
  • 为了testing目的,我们放置了大约80台桌面机不同的vlan,但是我们testing了这一点,并没有看到高CPU或ARPinput
  • 运行过不同的AV /恶意软件/间谍软件,但没有在networking上可见的病毒。
  • 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地址表(在核心上,例如,通过桌面直接插入,我的桌面),我们可以看到几个不同的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 
  • 展示平台的摄像头利用率
  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是一个inheritance的混乱。 但是,我们打算在未来分裂这一点,但不幸的是,这个问题发生之前,我们可以做到这一点。 我个人也同意大多数,广播领域太大了。
  • 使用Arpwatch肯定是我们可以尝试的东西,但我怀疑是因为多个访问端口即使不属于这个端口也注册了mac地址,arpwatch的结论可能没有用处。
  • 我完全同意在networking上找不到所有的冗余链路和未知交换机,但根据我们的最佳发现,在我们find更多的证据之前,情况就是如此。
  • 港口安全已经被调查,不幸的是pipe理层已经决定不会因为各种原因使用这个。 常见的原因是我们不断地移动电脑(大学环境)。
  • 在所有访问端口(台式机)上,我们都默认使用了spanning-tree portfast和spanning-tree bpduguard。
  • 我们目前不在访问端口上使用switchport nonnegotiate,但是我们没有得到在多个Vlans上弹跳的任何Vlan跳跃攻击。
  • 将给mac地址表通知去,看看我们是否能find任何模式。

“由于你在交换机端口之间收到大量的MAC襟翼,很难find违规者(假设你find两个或三个发送大量arp的mac地址,但是源mac地址在端口之间不断抖动)。

  • 我们开始就select了任何一个MAC襟翼,并继续通过所有的核心交换机分发到接入交换机,但是我们发现,接入端口接口再次占用多个MAC地址, 所以回到原点。
  • 风暴控制是我们考虑过的事情,但是我们害怕一些合法的数据包将被丢弃,从而导致进一步的问题。
  • 将三重检查VMHostconfiguration。
  • @ytti无法解释的MAC地址在许多访问端口后面,而不是个人。 在这些接口上没有find任何回路。 MAC地址也存在于其他接口上,这将解释大量的MAC襟翼
  • @RickyBeam我同意为什么主机发送这么多的ARP请求; 这是令人困惑的问题之一。 胭脂无线桥是一个有趣的,我没有想到,据我们所知,无线是在不同的VLAN; 但stream氓显然意味着它可能在VLAN1上。
  • @RickyBeam,我真的不想拔掉所有的东西,因为这会导致大量的停机时间。 然而,这是它可能只是前进的地方。 我们有Linux服务器,但不超过3个。
  • @RickyBeam,你能解释一下DHCP服务器“使用中”的探测吗?

我们(思科TAC,CCIE,CCNP)全球认同这不是交换机configuration,而是主机/设备造成这个问题。

解决了。

SCCM 2012 SP1是一个名为ConfigMrg Wake-Up Proxy的服务 。 “function”不存在SCCM 2012 RTM。

在政策内closures4小时内,我们看到CPU使用率稳步下降。 到4小时的时候,ARP的使用率只有1-2%!

总之,这个服务做MAC地址欺骗! 不能相信它造成了多大的破坏。

以下是来自Microsoft Technet的全文,因为我觉得了解这与发布的问题有何联系很重要。

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

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

从configurationpipe理器SP1开始,您可以使用唤醒代理客户端设置来补充传统的唤醒数据包方法。 唤醒代理使用对等协议并select计算机来检查子网上的其他计算机是否清醒,并在必要时将其唤醒。 当站点configuration为LAN唤醒并且客户端configuration为唤醒代理时,该过程如下工作:

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

  2. 如果没有来自其他电脑的回应,则认为是睡着了。 清醒的计算机成为子网的pipe理员计算机。

  3. 由于计算机可能由于睡眠以外的原因(例如closures,从networking中移除,或者不再使用代理唤醒客户端设置)而可能无法响应,因此计算机当地时间每天下午2点发送一个唤醒包。 不响应的电脑将不再被认为是睡着了,不会被唤醒代理唤醒。

要支持唤醒代理,每个子网至less必须有三台计算机保持唤醒状态。 为了达到这个目的,三台计算机被非确定性地select为子网的监护计算机。 这意味着他们保持清醒,尽pipe任何configuration的电源策略hibernate一段时间后hibernate或hibernate。 监护计算机例如由于维护任务而closures关机或重启命令。 如果发生这种情况,其余的监护人计算机会唤醒子网上的另一台计算机,以便该子网继续拥有三台监护计算机。

pipe理员电脑要求networking交换机将睡眠电脑的networkingstream量redirect到自己。

pipe理员计算机广播使用睡眠计算机的MAC地址作为源地址的以太网帧来实现redirect。 这使得networking交换机的行为就好像睡觉的计算机已经移动到pipe理器计算机所在的相同端口一样。 pipe理员计算机还为睡眠的计算机发送ARP数据包,以使条目保持在ARPcaching中。 pipe理员计算机还将代表睡眠的计算机响应ARP请求,并回复睡眠计算机的MAC地址。

在此过程中,睡眠计算机的IP到MAC映射保持不变。 唤醒代理的工作方式是:通知networking交换机一个不同的networking适配器正在使用另一个networking适配器注册的端口。 但是,这种行为被称为MAC襟翼,对于标准的networking操作而言是不寻常的。 有些networking监视工具会查找这种行为,并可能认为出现了问题。 因此,当您使用唤醒代理时,这些监控工具可以生成警报或closures端口。 如果您的networking监视工具和服务不允许MAC襟翼,请不要使用唤醒代理。

  1. 当一台pipe理员计算机看到一个新的睡眠计算机的TCP连接请求,并且请求是在hibernate前,睡眠计算机正在侦听的一个端口,pipe理员计算机发送一个唤醒数据包给睡眠的计算机,然后停止redirect这台电脑的stream量。

  2. 睡觉的电脑收到唤醒包并醒来。 发送计算机自动重试连接,这次计算机是清醒的,可以响应。

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

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

ARP /广播风暴

  • 我们看到来自用于桌面设备的VLAN 1,VLAN 1的大型广播数据包。 我们使用192.168.0.0/20 …
  • Wiresharks显示,100台计算机正在用ARP广播淹没networking…

您的ARPinput过程很高,这意味着交换机花费大量时间处理ARP。 ARP泛滥的一个常见原因是交换机之间的环路。 如果你有一个循环,那么你也可以得到你上面提到的Mac皮瓣。 ARP泛滥的其他可能原因是:

  • IP地址configuration错误
  • 二层攻击,如ARP欺骗

首先消除上述错误configuration或二层攻击的可能性。 最简单的方法是在Linux机器上使用arpwatch (即使你必须在笔记本电脑上使用livecd )。 如果你有configuration错误或者二层攻击,那么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合格人员的validation。 我们closures所有的冗余链接。

作为一个经历过这次比我想回忆的更多时间的人,不要以为你find了所有的冗余链接……只是让你的交换机端口在任何时候都performance出来。

由于您在交换机端口之间收到大量的mac襟翼,因此很难find违规者(假设您find两个或三个发送大量arps的mac地址,但源mac地址在端口之间不断抖动)。 如果您没有对每个边缘端口的MAC地址实施硬性限制,则无需手动拔下电缆(这是您想要避免的),就很难追踪这些问题。 交换机回路会导致networking中出现意想不到的path,并且可能会断断续续地从通常应该是桌面交换机端口的数百个Mac中学习。

减慢mac-moves最简单的方法是使用port-security 。 在连接到单个PC(无下游交换机)的Vlan 1中的每个接入交换机端口上,在您的cisco交换机上configuration以下接口级命令…

 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泛滥情况下,将此configuration应用于所有边缘交换机端口(特别是使用portfast的任何端口)将使您恢复到正常状态,因为configuration将closures任何超过三个mac地址的端口,并且禁用秘密环形portfast端口。 每个端口的三个mac是一个在我的桌面环境中运行良好的数字,但是你可以把它提高到10,可能没问题。 完成此操作后,任何第2层环都会断开,快速的皮瓣将停止,并且使诊断变得更容易。

另外还有一些全局命令可用于跟踪与广播风暴(mac-move)和洪泛(阈值)相关的端口…

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

完成之后,可以selectclear mac address-table以便从可能已满的CAM表中加速修复。

  • 在不同的交换机和核心上显示MAC地址表(在核心上,例如,通过桌面直接插入,我的桌面),我们可以看到几个不同的MAC硬件地址被注册到接口,即使该接口有只有一台电脑连接到这…

这整个答案假定你的3750没有导致问题的错误(但你确实说wireshark表示PC正在泛滥)。 当Gi1 / 1/3只有一台计算机连接到计算机时,显示的显然是错误的,除非该计算机上有类似VMWare的东西。

其他的想法

基于我们之间的聊天对话,我可能不必提及那些明显的,但我会为了未来的访问者…

  • 把任何用户放在Vlan1通常是一个坏主意(我知道你可能inheritance了一个混乱)
  • 不pipeTAC告诉你什么,192.168.0.0/20太大而无法在单个交换域中进行pipe理,而没有二层攻击的风险。 你的子网掩码越大,你对第二层攻击的暴露就越大,因为ARP是未经validation的协议,路由器至less必须从该子网读取有效的ARP。
  • 层2端口的风暴控制通常也是一个好主意, 但是,在这样的情况下,要搞好风暴控制,交通不好,交通畅通。 networking愈合后,在边缘端口和上行链路上应用一些风暴控制策略。

真正的问题是主机为什么发送这么多的ARP首先。 在这个问题得到解答之前,交换机将继续处理arp风暴。 networking掩码不匹配? 低主机ARP计时器? 一个(或多个)有“接口”路线的主机 ? 一个胭脂无线桥梁的地方? “无偿ARP”疯了? DHCP服务器“使用中”探测? 这听起来不像开关或第2层的问题; 你有东道主做坏事。

我的debugging过程将拔掉所有东西,并密切关注事物重新连接,一次一个端口。 (我知道这与理想距离很远,但是在某些时候你必须减less你的损失,并且尝试物理隔离任何可能的来源)。然后,我会努力理解为什么select端口会产生许多ARP。

(很多这些主机是不是Linux系统?Linux有一个非常愚蠢的ARPcachingpipe理系统,它将在几分钟之内“重新validation”一个条目的事实在我的书中被打破了在小型networking中,这个问题往往不是问题,但是一个/ 20不是一个小networking。)

这可能与您的问题有关,也可能不是,但我认为这可能是至less值得一提的东西:

我们目前在我们的一些远程站点有不less堆叠的3750x,大多数运行15.0.2(SE0到4,有一些SE0的FRU错误,我正在慢慢迁移)。

在例行的IOS更新中,从15.0.2到15.2-1(最近的SE),我们注意到一个非常显着的CPU增加,从非平均时间的平均约30%到60%和更高。 我已经查看过configuration和IOS更改日志,并一直在思科的TAC。 据TAC说,他们似乎是在他们认为这是一些IOS 15.2-1错误的地步。

随着我们继续调查CPU的增加,我们开始看到大量的ARPstream量,直到我们的ARP表完全填满,导致networking不稳定。 这个临时拐杖是在我们的语音和数据VLAN上手动将我们的ARP超时从默认值(14400)恢复到300。

减lessARP超时后,我们稳定了一个星期左右的时间,在这一点上,我们返回到IOS 15.0.2-SE4,并删除了我们的非默认ARP超时。 我们的CPU使用率回落到30%左右,我们的ARP表问题也不存在。

一个简单的,但可能被忽视; 你的客户有一个有效的默认网关,是不是你的核心做了很多代理arps。 你可以考虑取消你的3750的IP代理ARPfunction?