本文档说明如何对Cisco 12000系列Internet路由器上show interface命令输出中显示的输入丢包数增加进行故障排除。
本文档的读者应掌握以下这些主题的相关知识:
Cisco 12000 系列互联网路由器体系结构
本文档中的信息基于以下软件和硬件版本:
任何支持Cisco 12000系列互联网路由器的Cisco IOS®软件版本。例如,Cisco IOS软件版本12.0S和12.0ST。
所有思12000平台,包括12008、12012、12016、12404、12410和12416。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
最常见的症状是输入丢包数的增加。在Cisco 12000系列Internet路由器上,您可以在show interfaces命令的输出中看到输入丢弃数。以下是show interfaces命令的输出示例:
Router#show interface Gig2/0 GigabitEthernet2/0 is up, line protocol is up Hardware is GigMac 3 Port GigabitEthernet, address is 0003.fd1a.9040 (bia 0003.fd1a.9040) Internet address is 203.177.3.21/24 MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec, rely 255/255, load 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full-duplex mode, link type is force-up, media type is SX output flow-control is unsupported, input flow-control is off ARP type: ARPA, ARP Timeout 04:00:00 Last input 00:00:00, output 00:00:00, output hang never Last clearing of "show interface" counters 00:55:39 Queueing strategy: fifo Output queue 0/40, 0 drops; input queue 27/75, 954 drops !--- Here are the input drops. 5 minute input rate 3000 bits/sec, 5 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 7167 packets input, 601879 bytes, 0 no buffer Received 2877 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored 0 watchdog, 3638 multicast, 0 pause input 992 packets output, 104698 bytes, 0 underruns 0 output errors, 0 collisions, 1 interface resets 0 babbles, 0 late collision, 0 deferred 1 lost carrier, 21992 no carrier, 0 pause output 0 output buffer failures, 0 output buffers swapped out
每10秒执行show interfaces命令,检查输入队列的丢弃计数器是否增加。
当数据包进入路由器时,路由器会尝试在中断级别转发数据包。如果路由器在适当的缓存表中找不到匹配项,则路由器会将数据包排队到传入接口的输入队列中以稍后处理该数据包。路由器始终处理一些数据包。但是,处理的数据包的速率绝不会使具有适当配置的稳定网络中的输入队列拥塞。如果输入队列已满,路由器会丢弃该数据包。
在示例输出中,您无法准确确定路由器丢弃的数据包。要排除输入队列丢弃故障,您需要找出填充输入队列的数据包。输出示例表明,在接口GigabitEthernet2/0的输入队列中等待27个数据包。队列深度为75个数据包,在您上次清除接口计数器后,丢包数为954个。
在清除大量路由的网络中,输入队列丢弃可能导致:
第2层保持连接故障
热备份路由协议/虚拟路由器冗余协议(HSRP/VRRP)
接口摆动
对于支持大量接口或路由的系统,特别是大型服务提供商网络,默认值不足。一次清除边界网关协议(BGP)通常会导致同一接口上出现数千个输入队列丢弃。较大的输入丢弃会严重阻碍收敛时间。
请完成以下步骤以避免出现这种情况:
使用spd headroom 1000全局命令增加选择性数据包丢弃(SPD)headroom。
SPD headroom的默认值为100。 spd headroom命令指定可以排队的高优先级数据包数量超过正常输入保持队列限制。高优先级数据包包括路由协议更新和其他重要控制流量,例如第2层Keepalive和IS-IS hello。指定此值时,为传入的高优先级数据包预留空间。在Cisco IOS软件版本12.0(22)S及更高版本中,Cisco 12000系列互联网路由器的SPD Headroom的默认值为1000。使用show ip spd命令检查该值。
对每个接口使用hold-queue 1500来增加接口保持队列值。默认值为 75。
如文档前面所述,只有发往路由器的数据包到达输入队列。千兆路由处理器(GRP)必须确定如何处理数据包。所有数据包都是进程交换的。因此,数据包采用慢速路径。通常,Cisco 12000路由器交换机通过线卡使用分布式思科快速转发(dCEF)的所有数据包。此平台仅支持dCEF作为交换方法。
如果路由器有大量对等体,则有时会在边界网关协议(BGP)收敛期间发生丢包。但是,GRP必须查看某些数据包的原因有很多。以下列出了一些原因:
GRP接收路由更新。
GRP处理Internet控制消息协议(ICMP)数据包。
GRP建立并保持BGP对等会话。
使用show interfaces stat命令检查是否存在任何进程交换数据包。
如果Cisco 12000路由器尚未投入生产,您可以启用一些debug命令。Debug命令使您能够捕获有关GRP接收的数据包类型的详细信息。debug ip packet输出非常有用。但是,使用此命令时要非常谨慎,因为此命令可能会通过挂起、崩溃或类似问题影响路由器的行为。禁用控制台日志以避免消息突发到控制台端口。启用日志缓冲区,将debug命令的输出重定向到您稍后可以查阅的缓冲区。使用show logging命令查看缓冲区。您还可以指定访问列表以缩小调试输出范围。要指定访问列表,请使用以下配置:
no logging console logging buffer 128000 debug ip packet <ACL #> !--- Warning: !--- Be aware that this configuration on a production router can damage the box. undebug all (after 5-10 seconds)
此debug命令可让您查看GRP接收的所有进程交换数据包。或者,您可以使用show buffers input-interface [interface type] [interface number] header命令来标识填充输入队列的数据包的类型。
注意:此命令仅在输入队列包含大量数据包时才有用。
Router#show buffers input-interface serial 0/0 Buffer information for Small buffer at 0x612EAF3C data_area 0x7896E84, refcount 1, next 0x0, flags 0x0 linktype 7 (IP), enctype 0 (None), encsize 46, rxtype 0 if_input 0x6159D340 (FastEthernet3/2), if_output 0x0 (None) inputtime 0x0, outputtime 0x0, oqnumber 65535 datagramstart 0x7896ED8, datagramsize 728, maximum size 65436 mac_start 0x7896ED8, addr_start 0x7896ED8, info_start 0x0 network_start 0x7896ED8, transport_start 0x0 source: 212.176.72.138, destination: 212.111.64.174, id: 0xAAB8, ttl: 118, prot: 1 Buffer information for Small buffer at 0x612EB1D8 data_area 0x78A6E64, refcount 1, next 0x0, flags 0x0 linktype 7 (IP), enctype 0 (None), encsize 46, rxtype 0 if_input 0x6159D340 (FastEthernet3/2), if_output 0x0 (None) inputtime 0x0, outputtime 0x0, oqnumber 65535 datagramstart 0x78A6EB8, datagramsize 728, maximum size 65436 mac_start 0x78A6EB8, addr_start 0x78A6EB8, info_start 0x0 network_start 0x78A6EB8, transport_start 0x0 source: 212.176.72.138, destination: 212.111.64.174, id: 0xA5B8, ttl: 118, prot: 1
通常,同一类型的数据包会大量存在。例如,输出示例表示大量ICMP数据包(IP协议1)。
注意:如果无法在debug或show buffers input-interface命令的输出中识别模式,则问题很可能是路由器配置不正确。
注意:有关详细信息,请参阅排除输入队列丢弃和输出队列丢弃故障。
根据debug ip packet detail命令的输出或排除输入队列丢弃和输出队列丢弃故障中的概述,执行相应操作。有关详细示例,请参阅案例研究部分。
有时,当您检查Cisco 12000路由器的接口时,您会注意到该接口会丢弃传入的数据包。因此,输入丢弃计数器值会定期增加。例如,请考虑以下输出示例:
Router#show interface Gig2/0 GigabitEthernet2/0 is up, line protocol is up Hardware is GigMac 3 Port GigabitEthernet, address is 0003.fd1a.9040 (bia 0003.fd1a.9040) Internet address is 203.177.3.21/24 MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec, rely 255/255, load 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full-duplex mode, link type is force-up, media type is SX output flow-control is unsupported, input flow-control is off ARP type: ARPA, ARP Timeout 04:00:00 Last input 00:00:00, output 00:00:00, output hang never Last clearing of "show interface" counters 00:55:39 Queueing strategy: fifo Output queue 0/40, 0 drops; input queue 27/75, 954 drops !--- This is the input drops counter value. 5 minute input rate 3000 bits/sec, 5 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 7167 packets input, 601879 bytes, 0 no buffer Received 2877 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored 0 watchdog, 3638 multicast, 0 pause input 992 packets output, 104698 bytes, 0 underruns 0 output errors, 0 collisions, 1 interface resets 0 babbles, 0 late collision, 0 deferred 1 lost carrier, 21992 no carrier, 0 pause output 0 output buffer failures, 0 output buffers swapped out
某些输入丢包出现在show interfaces命令输出中。如果每10秒发出此命令,则可以检查输入队列的丢弃计数器是否增加。
使用show interface stat命令检查是否存在进程交换数据包:
Router#show interfaces stat ..... GIG2/0 Switching path Pkts In Chars In Pkts Out Chars Out Processor 45354 1088496 0 0 !--- Here are the packets that are process-switched (sent to the GRP) Route cache 0 0 0 0 Distributed cef 0 0 8575 207958 Total 45354 1088496 8575 207958 ....
如果Cisco 12000路由器尚未投入生产,您可以启用一些debug命令来捕获有关GRP接收的数据包类型的详细信息。debug ip packet命令的输出是有意思的。使用此debug命令,您可以看到GRP接收的所有进程交换数据包。在一段时间后发出show logging命令:
Router#show log Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns) Console logging: disabled Monitor logging: level debugging, 1110 messages logged Logging to: vty2(572) vty3(538) Buffer logging: level debugging, 107 messages logged Trap logging: level informational, 162 message lines logged Log Buffer (10000 bytes): *Jan 13 08:03:51.550: %SYS-5-CONFIG_I: Configured from console by vty2 (144.254.2.215) 1w5d: IP: s=203.177.3.21 (local), d=144.254.2.215 (GigabitEthernet2/0), len 79, sending 1w5d: IP: s=203.177.3.62 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=0.0.0.0 (GigabitEthernet2/0), d=255.255.255.255, len 328, rcvd 2 1w5d: IP: s=203.177.3.15 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=144.254.2.215 (GigabitEthernet2/0), d=203.177.3.21 (GigabitEthernet2/0), len 40, rcvd 3 1w5d: IP: s=203.177.3.1 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.2 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.10 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.6 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.8 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.62 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.1 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.15 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.8 (GigabitEthernet2/0), d=224.0.0.10, len 69, unroutable 1w5d: IP: s=203.177.3.2 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.10 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.8 (GigabitEthernet2/0), d=224.0.0.10, len 89, unroutable 1w5d: IP: s=203.177.3.6 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.8 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.62 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.15 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.1 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=144.254.2.215 (GigabitEthernet2/0), d=203.177.3.21 (GigabitEthernet2/0), len 41, rcvd 3 1w5d: IP: s=203.177.3.21 (local), d=144.254.2.215 (GigabitEthernet2/0), len 41, sending 1w5d: IP: s=203.177.3.2 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.10 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=144.254.2.215 (GigabitEthernet2/0), d=203.177.3.21 (GigabitEthernet2/0), len 41, rcvd 3 1w5d: IP: s=203.177.3.21 (local), d=144.254.2.215 (GigabitEthernet2/0), len 41, sending 1w5d: IP: s=203.177.3.8 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=203.177.3.6 (GigabitEthernet2/0), d=224.0.0.10, len 60, unroutable 1w5d: IP: s=144.254.2.215 (GigabitEthernet2/0), d=203.177.3.21 (GigabitEthernet2/0), len 43, rcvd 3 1w5d: IP: s=203.177.3.21 (local), d=144.254.2.215 (GigabitEthernet2/0), len 41, sending 1w5d: IP: s=203.177.3.21 (local), d=144.254.2.215 (GigabitEthernet2/0), len 41, sending
在本例中,GigabitEthernet2/0接口接收大量增强型内部网关路由协议(EIGRP)数据包。EIGRP使用组播地址224.0.0.10,但您尚未将路由器配置为处理此类数据包。因此,路由器将这些数据包发送到GRP。GRP决定丢弃数据包,因为GRP无法足够快地处理这些数据包。
为确保GRP不接收这些EIGRP数据包,您可以执行以下操作之一:
在其它路由器上将接口指定为被动接口。
指定不同的邻居路由器。
有时,由于Cisco IOS软件缺陷,输入丢包的数量会增加。例如,在Cisco IOS软件版本12.0(11)S中,Cisco 12000系列互联网路由器由于记帐问题而错误地增加了输入丢弃计数器。输出未正确反映拥塞期间丢弃的数据包数。所有接口都可以指示此问题,但此问题不会影响接口的服务或功能。没有已知的解决方法。
确保在培训中运行最新的可用Cisco IOS软件版本,以消除已修复的错误。如果之后仍看到丢包,请通过打开服务请求。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
07-Jul-2005 |
初始版本 |