目录

简介

先决条件

要求

使用的组件

规则

控制台不响应

故障排除的步骤

流量不通过

可能的原因

从 ROM Monitor 获取堆栈跟踪

建立 TAC 服务请求时要收集的信息

相关信息

简介

本文档可帮助排查不响应系统的故障。本文还讨论原因以及如何消除问题。

当系统不对来自控制台或来自网络的查询进行响应时(例如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 安全建议和通知页包含有关检测最可能的原因和特定解决方法的信息。

有关其他信息，请参阅：

- 关于 Internet 威胁的 100 个问题和解答

- 思科威胁控制

- 如果路由器在启动流程期间看上去似乎要冻结，则可能是由于某功能配置错误或已配置功能中存在软件缺陷。在路由器冻结前，这在控制台的警告或错误信息立即出现时非常明显。

解决此问题的方法是将路由器引导到 ROMMON 中，绕过存储的配置，然后再对其重新配置。请完成以下步骤：

1. 将终端或带终端仿真功能的 PC 连接到路由器的控制台端口。

使用以下终端设置：

- 9600 波特率

- 无奇偶校验

- 8 个数据位

- 1 个停止位

- 无流控制

2. 在通电的60秒以内，重新启动路由器，并通过终端键盘上的中断按钮将ROMMON中断。如果中断序列不起作用，请参阅密码恢复过程中的标准中断键顺序组合，以获取其他键组合。

3. 将配置寄存器更换为 0x2142，然后重置路由器。为此，请在 rommon 1> 提示符处执行 confreg 0x2142 命令。然后在 rommon 2> 提示符处键入 reset。这会导致路由器从闪存启动，而不加载配置。

4. 在每个设置问题后键入 no 或按 Ctrl-C 跳过初始设置步骤。

5. 在 Router>提示符处键入 enable。

您将处于启用模式，并且会看到 Router# 提示。

6. 现在，您可以保存空配置（已删除所有命令）。 发出 copy running-config startup-config 命令。或者，如果怀疑某些命令引起问题，则可编辑配置。为此，请发出 copy startup-config running-config 命令。然后键入 configure terminal，并进行更改。

7. 完成后，将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

有关详细的指南和示例，请参阅排查缓冲区泄漏故障。

从 ROM Monitor 获取堆栈跟踪

K轨迹指的是使用的程序，它可以从ROM监控器的路由器获得一个堆栈跟踪。在具有较旧的 ROM Monitor 代码的路由器上，通过 k 命令可获取堆栈跟踪。在运行最新 ROM Monitor 代码的路由器上，还可以使用 stack 命令。

完成以下步骤，以从不响应的路由器中获取堆栈跟踪：

1. 启用中断序列。为此，请更改配置寄存器值。必须将 8 位值设置为零，以便不会忽略中断。可以使用值 0x2002。

Router#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

Router(config)#config-register 0x2002

2. 重新加载路由器，以便使用新的配置寄存器值。

3. 当问题发生时，请发送中断序列。必须显示 ROM Monitor 提示“>”或“rommon 1>”。

4. 捕获堆栈跟踪。为此，请收集 k 50 或 stack 50 命令的输出。向命令中添加 50 以打印更长的堆栈跟踪。

5. 发出c 或 cont 命令继续。

6. 多次重复最后三个步骤，保证连续循环中的多个点被捕获。

7. 获得几个堆栈跟踪之后，重新启动路由器，以便从挂起状态恢复。

下面是此过程的示例：

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 服务请求时要收集的信息

如果打开 TAC 服务请求，请向请求中附加以下信息，以排查路由器挂起故障：

- 在建立案例前所执行的故障诊断及处理措施

- show technical-support output（在特权模式下）

- show log命令输出或控制台获取信息（如果有的话）

- ROM Monitor 中的堆栈跟踪

请将您所收集到的上述数据附加在一个非压缩的、纯文本格式（.txt）文件中。 您可以使用 TAC 服务请求工具（仅限注册用户），通过上载信息来将信息附加到案例中。 如果无法访问 TAC 服务请求工具，则可通过将相关信息附加到您的案例中，然后将其发送到 attach@cisco.com，并在邮件的主题行中注明案例编号。
注意：如果控制台响应迅速，请在收集上述信息之前不要手动重新加载或重新启动路由器，除非排除路由器挂起故障需要，否则可能会丢失确定问题根本原因所需的重要信息。

相关信息

- show processes 命令

- 口令恢复过程中的标准中断键顺序组合

- 技术支持和文档 - Cisco Systems