本文档可帮助排查不响应系统的故障。本文还讨论原因以及如何消除问题。
当系统不对来自控制台或来自网络的查询进行响应时(例如Telnet、简单网络管理协议(SNMP)等),路由器看起来要停止工作了。这些问题可以分为两大类:
当控制台不响应时。
当流量不通过时。
本文档没有任何特定的要求。
本文档中的信息基于以下软件和硬件版本:
所有的 Cisco IOS® 软件版本
所有 Cisco 路由器
本文不适用于Cisco Catalyst交换机或MGX平台。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
当路由器不响应控制台端口的输入时,会出现控制台问题。如果控制台不具有响应能力,它意味着优先级高的进程能防止控制台驱动器从响应状态进入输入状态。
验证电缆连通性。
验证电源是否打开。
验证路由器 LED 状态。如果所有LED发生故障,则很可能是路由器电源出现故障。
如果流量仍然流经路由器:
断开网络接口并检查路由器是否响应。很多次,路由器假定它在执行一些对服务 exec 会话非常重要的操作。
在发出这些命令后,您还可以尝试重现该问题:
在 Cisco 7200 和 7500 系列中:
configure terminal scheduler allocate 3000 1000 ^Z
scheduler allocate 命令确保为低优先级进程分配相应的 CPU 时间。它设置分配到每个网络中断上下文的快速交换(3000 微秒 - usec)和流程交换 (1000 usec) 的最大时间。
在所有其他平台上,请使用:
configure terminal scheduler interval 500 ^Z
scheduler interval 命令允许每隔 500 usec 计划一些低优先级进程,从而即使在 CPU 使用率为 100% 时,仍允许键入一些命令。
有关这些命令的详细信息,请查看“Cisco IOS 软件命令参考”中的基本系统管理命令。
如果由于路由器 CPU 利用率高而导致控制台不响应,则应查找并更正高 CPU 利用率的原因,这一点非常重要。例如,如果进程交换的 IP 流量引起问题,然后此问题又反映在 show processes cpu 命令输出的“IP 输入”进程中。在这种情况下,收集show interfaces 和show interfaces stat输出都很重要,并且可能用show processes显示需进一步诊断的故障。要解决该问题,将需要减少进程交换的 IP 流量。有关详细信息,请参阅对 Cisco 路由器上的高 CPU 利用率进行故障排除。
明显的挂起另一个可能的原因是内存分配故障;即路由器已使用所有可用内存,或者内存已分割为很小的片段,以致路由器无法找到可用的可用块。有关详细信息,请参阅排查内存问题。
路由器可能由于与安全相关的问题(如蠕虫或病毒)而停止响应。如果最近没有对网络做过任何更改,如路由器IOS升级,则这很可能是问题的起因。通常,一个配置更改(例如添加另外的线路到您的访问控制列表)能减轻此问题的影响。Cisco 安全建议和通知页包含有关检测最可能的原因和特定解决方法的信息。
有关其他信息,请参阅:
如果路由器在启动流程期间看上去似乎要冻结,则可能是由于某功能配置错误或已配置功能中存在软件缺陷。在路由器冻结前,这在控制台的警告或错误信息立即出现时非常明显。
解决此问题的方法是将路由器引导到 ROMMON 中,绕过存储的配置,然后再对其重新配置。请完成以下步骤:
将终端或带终端仿真功能的 PC 连接到路由器的控制台端口。
使用以下终端设置:
9600 波特率
无奇偶校验
8 个数据位
1 个停止位
无流控制
在通电的60秒以内,重新启动路由器,并通过终端键盘上的中断按钮将ROMMON中断。如果中断序列不起作用,请参阅密码恢复过程中的标准中断键顺序组合,以获取其他键组合。
将配置寄存器更换为 0x2142,然后重置路由器。为此,请在 rommon 1> 提示符处执行 confreg 0x2142 命令。然后在 rommon 2> 提示符处键入 reset。这会导致路由器从闪存启动,而不加载配置。
在每个设置问题后键入 no 或按 Ctrl-C 跳过初始设置步骤。
在 Router>提示符处键入 enable。
您将处于启用模式,并且会看到 Router# 提示。
现在,您可以保存空配置(已删除所有命令)。发出 copy running-config startup-config 命令。或者,如果怀疑某些命令引起问题,则可编辑配置。为此,请发出 copy startup-config running-config 命令。然后键入 configure terminal,并进行更改。
完成后,请将 configuration-register 更改回 0x2102。为此,请键入 config-register 0x2102。发出 copy running-config startup-config 命令以提交更改。
如果流量不流经路由器:
如果流量不再流经路由器,并且控制台无法响应,则可能是系统存在问题。通常,这意味着路由器在连续循环被截住或者某个功能被滞留。这几乎总是由软件中的 Bug 引起。安装您当前运行的 Cisco IOS 软件系列最新维护版本。
在使用 Cisco TAC 创建服务请求之前,请从 ROM Monitor 获取堆栈跟踪。在发生故障期间获得堆栈跟踪,这使它可以确定路由器在循环或停留的代码位置。
控制台保持响应但流量不通过路由器时,会发生流量问题。在这种情况下,一部分流量或一部分接口不响应。此行为可能由多种不同的原因引起。当此问题发生时,可通过控制台端口从路由器收集信息。这些话务问题的原因包括从接口错误到软件和硬件问题。
路由问题 - 网络拓扑或某些路由器配置的更改可能已影响路由表。
高 CPU 利用率 - 发出 show process cpu 命令。如果 CPU 利用率高于 95%,则会影响路由器的性能,并且会延迟或丢弃数据包。有关详细信息,请参阅对路由器上的高 CPU 利用率进行故障排除。
接口关闭 - 路由器接口之一可能关闭。导致该问题的原因可能有多个,包括配置命令错误以及接口或电缆出现硬件故障。发出 show interfaces 命令后,如果一些接口显示为关闭,请设法找出其原因。
楔入接口 - 这是一种特殊的缓冲区泄漏,它会导致接口的输入队列充满,使队列无法再接收数据包。重新加载路由器。此操作会释放该输入队列并恢复流量,直到队列再次充满。根据泄漏的严重性,这可能需要几秒钟到几个星期的时间。
识别楔形接口的最简单方法是发出show interfaces命令,寻找类似于此:
Output queue 0/40, 0 drops; input queue 76/75, 27 drops
有关详细的指南和示例,请参阅排查缓冲区泄漏故障。
K轨迹指的是使用的程序,它可以从ROM监控器的路由器获得一个堆栈跟踪。在具有较旧的 ROM Monitor 代码的路由器上,通过 k 命令可获取堆栈跟踪。在运行最新 ROM Monitor 代码的路由器上,还可以使用 stack 命令。
完成以下步骤,以从不响应的路由器中获取堆栈跟踪:
启用中断序列。为此,请更改配置寄存器值。必须将 8 位值设置为零,以便不会忽略中断。可以使用值 0x2002。
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#config-register 0x2002
重新加载路由器,以便使用新的配置寄存器值。
当问题发生时,请发送中断序列。必须显示 ROM Monitor 提示“>”或“rommon 1>”。
捕获堆栈跟踪。为此,请收集 k 50 或 stack 50 命令的输出。向命令中添加 50 以打印更长的堆栈跟踪。
发出c 或 cont 命令继续。
多次重复最后三个步骤,保证连续循环中的多个点被捕获。
获得几个堆栈跟踪之后,重新启动路由器,以便从挂起状态恢复。
下面是此过程的示例:
User break detected at location 0x80af570 rommon 1 > k 50 Stack trace: PC = 0x080af570 Frame 00: FP = 0x02004750 RA = 0x0813d1b4 Frame 01: FP = 0x02004810 RA = 0x0813a8b8 Frame 02: FP = 0x0200482c RA = 0x08032000 Frame 03: FP = 0x0200483c RA = 0x040005b0 Frame 04: FP = 0x02004b34 RA = 0x0401517a Frame 05: FP = 0x02004bf0 RA = 0x04014d9c Frame 06: FP = 0x02004c00 RA = 0x040023d0 Frame 07: FP = 0x02004c68 RA = 0x04002e9e Frame 08: FP = 0x02004c78 RA = 0x040154fe Frame 09: FP = 0x02004e68 RA = 0x04001fc0 Frame 10: FP = 0x02004f90 RA = 0x0400c41e Frame 11: FP = 0x02004fa4 RA = 0x04000458 Suspect bogus FP = 0x00000000, aborting rommon 2 > cont
在出现系统问题时,多次重复此过程以收集堆栈跟踪的多个实例。
当路由器不响应时,几乎总是软件问题。在这种情况下,请尽可能收集信息(包括堆栈跟踪),然后再打开 TAC 服务请求。包括 show version、show run 和 show interfaces 命令的输出也非常重要。
如果打开 TAC 服务请求,请向请求中附加以下信息,以排查路由器挂起故障: |
注意:如果控制台有响应,请不要在收集上述信息之前手动重新加载或重新启动路由器,除非需要排除路由器挂起故障,因为这样可能会导致重要信息丢失,而确定问题的根本原因需要这些信息才能确定。 |
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
02-Aug-2006 |
初始版本 |