本文档说明 Cisco Catalyst 3750 系列交换机上的 CPU 使用率过高的原因。与 Cisco 路由器类似,交换机使用 show processes cpu 命令来显示 CPU 使用率以识别 CPU 使用率过高的原因。但是,由于 Cisco 路由器和交换机之间在体系结构和转发机制上存在差异,show processes cpu 命令的标准输出有很大的不同。本文档还列出了导致 Catalyst 3750 系列交换机上的 CPU 使用率过高的一些常见症状。
本文档没有任何特定的要求。
本文档中的信息基于 Catalyst 3750 交换机。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
在查看 CPU 数据包处理体系结构和对 CPU 使用率较高进行排除故障之前,您必须了解基于硬件的转发交换机和基于 Cisco IOS® 软件的路由器使用 CPU 的不同方式。一种常见的误解是,CPU 使用率较高意味着设备上的资源耗尽且可能会发生崩溃。容量问题是 Cisco IOS 路由器上的 CPU 使用率较高的症状之一。但是,容量问题几乎从未是基于硬件的转发交换机 CPU 使用率过高的症状。
排除 CPU 使用率过高的故障的第一步是检查 Catalyst 3750 交换机的 Cisco IOS 版本发行版本注释以了解可能的已知 IOS Bug。这样您可以通过故障排除步骤排除 IOS Bug。有关 Catalyst 3750 交换机的发行版本注释的列表,请参阅 Cisco Catalyst 3750 系列交换机发行版本注释。
本部分介绍了 Catalyst 3750 交换机上的一些常见 CPU 使用率过高问题。
其中一高CPU利用率的常见原因是Catalyst 3750 CPU是忙碌与互联网组管理协议(IGMP) Leave消息处理的风暴。如果运行 Cisco IOS 软件版本 12.1(14)EA1a 的 Catalyst 3750 交换机堆叠已连接到其他交换机(例如,运行 CatOS 的 Cat6500),该交换机会生成带有 IP 选项的基于 MAC 的 IGMP 查询,则 3750 会在 IGMPSN(监听)进程中遇到 CPU 使用率过高问题。这是堆叠内基于 MAC 的查询数据包循环的结果。您也会看到 HRPC hl2mm request 进程的 CPU 使用率过高。如果在安装有 Cisco IOS 软件版本 12.1(14)EA1a 的 Catalyst 3750 堆叠上配置了 EtherChannel,则可能会造成 IGMP 留言风暴。
Catalyst 3750 会收到许多 IGMP 查询。这会使 IGMP 查询计数器开始以每秒数百的速率进行递增。这导致 Catalyst 3750 交换机的 CPU 使用率过高。请参阅 Cisco bug ID CSCeg55298(仅限注册用户)。该 Bug 已在 Cisco IOS 软件版本 12.1(14)EA1a 中被识别,并已在 Cisco IOS 软件版本 12.2(25)SEA 和更高版本中被修复。永久解决方案是升级到最新的 Cisco IOS 版本。临时解决方法是在 Catalyst 3750 堆叠上禁用 IGMP 监听,或者在连接到 3750 堆叠的交换机上禁用基于 MAC 的查询。
以下为 show ip traffic 命令的一个输出示例,其中显示了包含不良选项的 IP 数据包和快速递增的警报:
Switch#show ip traffic Rcvd: 48195018 total, 25628739 local destination 0 format errors, 0 checksum errors, 10231692 bad hop count 0 unknown protocol, 9310320 not a gateway 0 security failures, 10231 bad options, 2640539 with options Opts: 2640493 end, 206 nop, 0 basic security, 2640523 loose source route 0 timestamp, 0 extended security, 16 record route 0 stream ID, 0 strict source route, 10231 alert, 0 cipso, 0 ump 0 other Frags: 16 reassembled, 0 timeouts, 0 couldn't reassemble 32 fragmented, 0 couldn't fragment Bcast: 308 received, 0 sent Mcast: 4221007 received, 4048770 sent Sent: 25342014 generated, 20710669 forwarded Drop: 617267 encapsulation failed, 0 unresolved, 0 no adjacency 0 no route, 0 unicast RPF, 0 forced drop 0 options denied, 0 source IP address zero !--- Output suppressed.
show processes cpu 命令显示有关交换机中的活动进程的信息以及这些进程的相应 CPU 使用率统计信息。下面是 CPU 使用率正常时 show processes cpu 命令的输出示例:
switch#show processes cpu CPU utilization for five seconds: 8%/4%; one minute: 6%; five minutes: 5% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 384 32789 11 0.00% 0.00% 0.00% 0 Load Meter 2 2752 1179 2334 0.73% 1.06% 0.29% 0 Exec 3 318592 5273 60419 0.00% 0.15% 0.17% 0 Check heaps 4 4 1 4000 0.00% 0.00% 0.00% 0 Pool Manager 5 6472 6568 985 0.00% 0.00% 0.00% 0 ARP Input 6 10892 9461 1151 0.00% 0.00% 0.00% 0 IGMPSN !--- CPU utilization at normal condition. 7 67388 53244 1265 0.16% 0.04% 0.02% 0 CDP Protocol 8 145520 166455 874 0.40% 0.29% 0.29% 0 IP Background 9 3356 1568 2140 0.08% 0.00% 0.00% 0 BOOTP Server 10 32 5469 5 0.00% 0.00% 0.00% 0 Net Background 11 42256 163623 258 0.16% 0.02% 0.00% 0 Per-Second Jobs 12 189936 163623 1160 0.00% 0.04% 0.05% 0 Net Periodic 13 3248 6351 511 0.00% 0.00% 0.00% 0 Net Input 14 168 32790 5 0.00% 0.00% 0.00% 0 Compute load avgs 15 152408 2731 55806 0.98% 0.12% 0.07% 0 Per-minute Jobs 16 0 1 0 0.00% 0.00% 0.00% 0 HRPC hI2mm reque !--- Output suppressed.
下面是 CPU 使用率因 IGMP 监听进程而过高时 show processes cpu 命令的输出示例:
switch#show processes cpu CPU utilization for five seconds: 8%/4%; one minute: 6%; five minutes: 5% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 384 32789 11 0.00% 0.00% 0.00% 0 Load Meter 2 2752 1179 2334 0.73% 1.06% 0.29% 0 Exec 3 318592 5273 60419 0.00% 0.15% 0.17% 0 Check heaps 4 4 1 4000 0.00% 0.00% 0.00% 0 Pool Manager 5 6472 6568 985 0.00% 0.00% 0.00% 0 ARP Input 6 10892 9461 1151 100 100 100 0 IGMPSN !--- Due to high CPU utilization. 7 67388 53244 1265 0.16% 0.04% 0.02% 0 CDP Protocol 8 145520 166455 874 0.40% 0.29% 0.29% 0 IP Background 9 3356 1568 2140 0.08% 0.00% 0.00% 0 BOOTP Server 10 32 5469 5 0.00% 0.00% 0.00% 0 Net Background 11 42256 163623 258 0.16% 0.02% 0.00% 0 Per-Second Jobs 12 189936 163623 1160 0.00% 0.04% 0.05% 0 Net Periodic 13 3248 6351 511 0.00% 0.00% 0.00% 0 Net Input 14 168 32790 5 0.00% 0.00% 0.00% 0 Compute load avgs 15 152408 2731 55806 0.98% 0.12% 0.07% 0 Per-minute Jobs 16 0 2874 0 100 100 100 0 HRPC hI2mm reque !--- Output suppressed.
Cisco Catalyst 3750系列交换机不支持一般路由封装(GRE)通道。即使可以使用 CLI 配置此功能,也不能通过硬件或软件来交换数据包,这会增加 CPU 使用率。
注意: 仅距离矢量组播路由协议(DVMRP)隧道接口为在Catalyst 3750的组播路由支持。即使对于这种接口,也不能使用硬件交换数据包。通过此隧道路由的数据包必须通过软件进行交换。通过此隧道转发的大量数据包会增加 CPU 使用率。
此问题没有解决方法。这是 Catalyst 3750 系列交换机中的硬件限制。
如果 Catalyst 3750 交换机连接到堆叠中,并且如果对交换机进行了任何配置更改,则会唤醒 hulc running config 进程,然后该进程将生成运行配置的新副本。然后,将它发送到堆叠中的所有交换机。新的运行配置会占用很多 CPU 资源。因此,当构建新的运行配置进程和将新配置转发到其他交换机时,CPU 使用率会很高。但是,存在此高 CPU 使用率的时间量应该与执行 show running-configuration 命令的构建配置步骤所花费的时间量相同。
此问题无需解决。在这些情况下,CPU 使用率通常会很高。
下面是 CPU 使用率因 hulc running 进程而过高时 show processes cpu 命令的输出示例:
switch#show processes cpu CPU utilization for five seconds: 63%/0%; one minute: 27%; five minutes: 23% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 384 32789 11 0.00% 0.00% 0.00% 0 Load Meter 2 2752 1179 2334 0.73% 1.06% 0.29% 0 Exec 3 318592 5273 60419 0.00% 0.15% 0.17% 0 Check heaps 4 4 1 4000 0.00% 0.00% 0.00% 0 Pool Manager 5 6472 6568 985 0.00% 0.00% 0.00% 0 ARP Input 6 10892 9461 1151 0.00% 0.00% 0.00% 0 IGMPSN 7 67388 53244 1265 0.16% 0.04% 0.02% 0 CDP Protocol 8 145520 166455 874 0.40% 0.29% 0.29% 0 IP Background 9 3356 1568 2140 0.08% 0.00% 0.00% 0 BOOTP Server 10 32 5469 5 0.00% 0.00% 0.00% 0 Net Background 11 42256 163623 258 0.16% 0.02% 0.00% 0 Per-Second Jobs 12 189936 163623 1160 0.00% 0.04% 0.05% 0 Net Periodic 13 3248 6351 511 0.00% 0.00% 0.00% 0 Net Input 14 168 32790 5 0.00% 0.00% 0.00% 0 Compute load avgs 15 152408 2731 55806 0.98% 0.12% 0.07% 0 Per-minute Jobs 16 0 1 0 0.00% 0.00% 0.00% 0 HRPC h12mm reque 17 85964 426 201793 55.72% 12.05% 5.36% 0 hulc running !--- Output suppressed.
如果路由器必须产生过量的ARP请求,地址解析服务(ARP)输入进程的高CPU利用率发生。同一 IP 地址的 ARP 请求速率限制为每二秒一个请求。因此,对于不同的 IP 地址,就必须发出过量的 ARP 请求。如果配置了 IP 路由并指向广播接口,则可能会发生这种情况。一个显而易见的示例是默认路由,例如:
ip route 0.0.0.0 0.0.0.0 Fastethernet0/0
在这种情况下,路由器将为不能通过更具体的路由到达的每个 IP 地址生成 ARP 请求,这意味着路由器为 Internet 上的几乎每一个地址生成 ARP 请求。有关如何配置静态路由的下一跳 IP 地址的详细信息,请参阅指定静态路由的下一跳 IP 地址。
或者通过本地连接的子网扫描的恶意的数据流可以导致过量的 ARP 请求。ARP 表中有大量不完整的 ARP 条目表示存在这样一个数据流。由于必须处理触发 ARP 请求的传入 IP 数据包,因此解决此问题本质上与排除在执行 IP 输入进程时 CPU 使用率过高的故障相同。
在Catalyst的3750最新的Cisco IOS版本中,简单网络管理协议(SNMP)请求乘SNMP引擎处理。由于此 SNMP ENGINE 进程而导致 CPU 使用率过高是正常的。SNMP 进程优先级较低,不应影响交换机上的任何功能。
参考的IP简单网络管理协议(SNMP)导致高CPU利用率关于SNMP引擎进程造成的高CPU利用率的更多信息。
交换机数据库管理(SDM)在Catalyst 3750系列交换机管理在维护三重内容可编址存储器的Layer2和第3层交换信息。SDM 模板用于配置交换机中的系统资源,以优化对特定功能的支持(取决于如何在网络中使用交换机)。可以选择 SDM 模板来为某些功能提供最大系统使用率,或者使用默认模板来平衡资源。模板会确定系统资源的优先级,以优化对以下类型的功能的支持:
路由 - 路由模板会最大限度地增加用于单播路由的系统资源,这通常是网络中心的路由器或汇聚路由器所必需的。
VLAN - VLAN 模板会禁用路由并支持最大数目的单播 MAC 地址。通常会为第 2 层交换机选择此项。
访问—访问模板最大化访问控制列表(ACL)的系统资源能适应很大数量的ACL。
默认 - 默认模板会平衡所有功能。
每个模板有两个版本:一个桌面模板和一个汇聚路由器模板。
注意: 桌面交换机的默认模板是默认桌面模板。Catalyst 3750-12S 的默认模板是默认汇聚路由器模板。
选择为使用的功能提供最大系统使用率的适当 SDM 模板。不适当的 SDM 模板可能会使 CPU 超载并严重降低交换机性能。
发出 show platform tcam utilization 命令,以查看当前已使用多少 TCAM 以及有多少是可用的。
Switch#show platform tcam utilization CAM Utilization for ASIC# 0 Max Used Masks/Values Masks/values Unicast mac addresses: 784/6272 12/26 IPv4 IGMP groups + multicast routes: 144/1152 6/26 IPv4 unicast directly-connected routes: 784/6272 12/26 IPv4 unicast indirectly-connected routes: 272/2176 8/44 IPv4 policy based routing aces: 0/0 0/0 IPv4 qos aces: 528/528 18/18 IPv4 security aces: 1024/1024 27/27 Note: Allocation of TCAM entries per feature uses a complex algorithm. The above information is meant to provide an abstract view of the current TCAM utilization
如果 TCAM 使用率接近任意参数的最大值,请检查是否有任何其他模板功能可以优化该参数。
show sdm prefer access | default | dual-ipv4-and-ipv6 | routing | vlan
Switch# show sdm prefer routing "desktop routing" template: The selected template optimizes the resources in the switch to support this level of features for 8 routed interfaces and 1024 VLANs. number of unicast mac addresses: 3K number of igmp groups + multicast routes: 1K number of unicast routes: 11K number of directly connected hosts: 3K number of indirect routes: 8K number of policy based routing aces: 512 number of qos aces: 512 number of security aces: 1K
要指定在交换机上使用的 SDM 模板,请发出 sdm prefer 全局配置命令。
注意: 要使用新的 SDM 模板,需要重新加载交换机。
在Cisco Catalyst 3750交换机的基于策略的路由(PBR)实施有一些限制。如果不遵循这些限制,则可能导致 CPU 使用率过高。
您可以在路由端口上启用 PBR 或 SVI。
交换机不支持 PBR 的 route-map deny 语句。
多播数据流不是通过使用策略来路由的。PBR 只适用于单播数据流。
不要匹配允许发往本地地址的数据包的 ACL。PBR 会转发这些数据包,这可能导致 ping 或 Telnet 故障,或者导致路由协议抖动。
不要匹配包含拒绝 ACE 的 ACL。匹配拒绝 ACE 的数据包会被发送到 CPU,这可能导致 CPU 使用率过高。
要使用 PBR,您必须首先使用 sdm prefer routing 全局配置命令启用路由模板。VLAN 或默认模板不支持 PBR。
有关完整列表,请参阅 PBR 配置指南。
当一个 VLAN(或任何第 3 层端口)收到其中源 IP 在一个子网,目标 IP 在另一个子网,而下一跳在相同的 VLAN 或第 3 层跳数的数据包时,您可以获取 ICMP 丢弃的重定向。
示例如下:
您可以在 show log 中看到以下消息:
51w2d: ICMP-Q:Dropped redirect disabled on L3 IF: Local Port Fwding L3If:Vlan7 L2If:GigabitEthernet2/0/13 DI:0xB4, LT:7, Vlan:7 SrcGPN:65, SrcGID:65, ACLLogIdx:0x0, MacDA:001a.a279.61c1, MacSA: 0002.5547.3bf0 IP_SA:64.253.128.3 IP_DA:208.118.132.9 IP_Proto:47 TPFFD:EDC10041_02C602C6_00B0056A-000000B4_EBF6001B_0D8A3746
当在源 IP 为 64.253.128.3 的 VLAN 7 上收到数据包,并尝试到达目标 IP 208.118.132.9 时,会发生这种情况。您可以看到在交换机中配置的下一跳(在本例中为 64.253.128.41)也在同一 VLAN 7 上。