目录

简介

先决条件

要求

使用的组件

规则

欺骗访问

原因

Cisco IOS 软件处理

验证欺骗访问错误

更正欺骗访问错误

校准错误

原因

验证校验错误

更正校验错误

虚假中断

开立TAC服务案例需要搜集的信息

相关信息

简介

本文的目的是描述三种错误类型- 欺骗访问、校验错误和假中断。它们可能在运行Cisco IOS®软件的设备上出现。

如果您有思科设备的show alignment命令输出，可以使用思科CLI分析器揭示潜在问题并进行修复。要使用思科 CLI 分析器，您必须是注册客户、已登录并已启用 JavaScript。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

并非所有平台都支持该命令（仅在精简指令集计算 [RISC] 处理器中受支持）。

show alignment 命令是在 12.3(7)T 中引入的，并且在早期版本中处于隐藏状态。

规则

有关文档规则的详细信息，请参阅 Cisco 技术提示规则。

欺骗访问

欺骗访问是指 Cisco IOS 软件尝试访问受限区域中的内存。欺骗访问的系统日志输出示例如下所示：

%ALIGN-3-SPURIOUS: Spurious memory access made at 0x60968C44 reading 0x0

%ALIGN-3-TRACE: -Traceback= 60968C44 60269808 602389D8 00000000 00000000 00000000

00000000 00000000

原因

当程序尝试从最低的16 KB内存区域读取时，会发生欺骗访问。此部分内存处于保留状态，任何时间都不应访问它。当不再存在的值返回软件的某个功能时，换句话说，当空指针通过该功能时，这时通常会导致此内存区域的读操作。

Cisco IOS 软件处理

根据平台的不同，Cisco IOS 软件会以不同方式处理欺骗访问。Cisco IOS软件编码在可能的平台上，通过返回零值和记录事件处理这些无效访问。如果平台不支持该功能，SEGV错误可能引起路由器崩溃。因为所有欺骗访问都不正确，所以欺骗访问始终指向 Bug。

验证欺骗访问错误

如果可能，Cisco IOS 软件会对欺骗访问进行计数和记录。通过 show alignment 命令可获得此信息。要确定欺骗访问的原因和解决方法，需要使用回溯信息。

注意：show alignment命令处于隐藏状态，并且未记录。同样，并非所有平台都支持该命令（仅在精简指令集计算 [RISC] 处理器中受支持）。下面提供了 show alignment 命令的示例输出：

Router#show alignment

Alignment data for:

GS Software (RSP-PV-M), Version 11.1(26.1)CC, EARLY DEPLOYMENT MAINTENANCE INTER

IM SOFTWARE

Compiled Thu 27-May-99 20:48 by jjgreen

No alignment data has been recorded.

Total Spurious Accesses 167110746, Recorded 2

Address  Count  Traceback

0  10474  0x6012D488  0x6020FFB4 0x601D5CE0

0  49008  0x6012D488  0x6020D25C 0x6020E744 0x602106B4

Router#

更正欺骗访问错误

欺骗访问错误始终由 Cisco IOS 软件 Bug 导致。为了更正这个问题，请将您的版本系列升级到最新版本(例如，如果您在运行Cisco IOS软件版本11.2(14)，请将它升级到最新的11.2(x)镜像）。如果这不能解决问题，或者不可能升级路由器，则应联系Cisco TAC。当打开案例以报告欺骗访问时，请包括以下内容：

- show alignment 命令的输出

- show tech-support 命令的输出

- 相关系统日志

校准错误

下面是一个报告校准错误的系统日志输出示例：

%ALIGN-3-CORRECT: Alignment correction made at 0x60262478 reading/writing 0x60A9FF5C

原因

校准错误是由读取和写入未校准而导致的。例如一个两字节读取不是偶字节的内存地址是一个校验错误。校准错误是由软件 Bug 引起的。

验证校验错误

校准错误在日志中报告，并由路由器记录。show alignment 命令的输出提供这些错误以及可能有用的回溯的记录。追溯校验错误一般可以进行解码，显示引起校验问题的功能。

注意：show alignment命令处于隐藏状态，并且未记录。同样，并非所有平台都支持该命令（只有高端路由器支持它）。下面提供了 show alignment 命令的示例输出：

Router#show alignment

Alignment data for:

RSP Software (RSP-ISV-M), Version 11.3(3a), RELEASE SOFTWARE (fc1)

Compiled Fri 01-May-98 18:28 by phanguye

Total Corrections 6, Recorded 2, Reads 6, Writes 0

Initial Initial

Address    Count  Access  Type  Traceback

60EF3765   3      32bit   read  0x60262474 0x601AC594 0x601AC580

60EF3761   3      32bit   read  0x60262478 0x601AC594 0x601AC580

No spurious memory references have been recorded.

Router#

更正校验错误

校验错误一般可以通过软件纠正，如果那样，则不会引起崩溃。但是，更正校准错误会占用处理器资源，并导致性能下降。如果不断发生校验错误，路由器就会用很多时间更正此错误并且增加CPU的利用率。在中断时会更正这些错误。

虚假中断

假中断与欺骗内存访问不同。

当一个已处理的信息包生成不必要的中断时，可能发生假中断，原因包括内部竞争状态或中断处理惯例初始化不正确。假中断不会对路由器的行为产生可辨别的影响。只要假中断的数量不高或者没有上升，并且没有数据包丢弃或性能问题，就可以放心地忽略它们。否则，必须调查根本原因。

show align 命令提供了有关欺骗内存访问而不是假中断的信息。可以从系统中获得的唯一有关假中断的信息是在show stacks输出中，该输出中有一个计数器记录发生了多少次。

Router#show stacks

Minimum process stacks:

Free/Size   Name

3692/4000   DHCPD Receive

4796/6000   Router Init

1904/4000   Init

3408/4000   RADIUS INITCONFIG

4228/5000   DHCP Client

2468/4000   Exec

Interrupt level stacks:

Level    Called Unused/Size  Name

3           0   3000/3000  Serial interface state change interrupt

4    54351439   1760/3000  Network interfaces

5       64181   2872/3000  Console Uart

Spurious interrupts: 29

假中断可能由硬件或软件缺陷引起。大多数情况下，这对于路由器或交换机的预期行为没有负面影响。只针对监控目的对其计数。

少数几个假中断不会导致 CPU 利用率提高。如果这是发生在路由器或交换机上的唯一征兆，并且其他一切都仍按预期状况工作(没有信息包丢弃等)，那么假中断可以忽略。

基于68k处理器(即Cisco 1000、1600、2500、4000和7000 (RP))的Cisco路由器可以配置为在达到假中断的特定阈值时生成核心转储。

Router(config)#exception ?

core-file           Set name of core dump file

crashinfo           Crashinfo collection

dump                Set name of host to dump to

flash               Set the device and erase permission

memory              Memory leak debugging

protocol            Set protocol for sending core file

region-size         Size of region for exception-time memory pool

spurious-interrupt  Crash after a given number of spurious interrupts

Router(config)#exception spurious-interrupt ?

<1-4294967295>  Spurious interrupt threshold

有关生成 coredump 的详细信息，请参阅创建核心转储。当性能下降是假中断引起时，我们的技术支持中心可能要求提供此信息。如果是那种情况，假中断的数量会很高，并且会上升，同时伴随部分数据包丢弃或性能下降的情况。

开立TAC服务案例需要搜集的信息

如果在执行上述故障排除步骤后仍需要帮助并且要使用 Cisco TAC 创建服务请求（仅限注册用户），请务必在您的案例中附加以下信息，以便排查欺骗访问、校准错误和假中断故障：

- 在创建服务请求之前进行的故障排除

- show technical-support output（尽可能在启用模式下）

- show alignment 输出（如果尚未包括在 show technical-support output 中）

- show log 输出或控制台捕获信息（如果可用）

请将收集到的数据以未压缩的纯文本格式 (.txt) 附加到服务请求中。您可以使用 TAC 服务请求工具（仅限注册用户）来加载信息，将信息附加到服务请求中。如果无法访问服务请求工具，则可通过将相关信息附加到服务请求中，然后将其发送到 attach@cisco.com ，并在邮件的主题行中注明服务请求编号。

注意：在收集上述信息之前，请勿手动重新加载路由器或重新启动路由器，除非需要排除欺骗性访问、校准错误和欺骗性中断故障，否则可能导致确定问题根本原因所需的重要信息丢失。

相关信息

- 对 Cisco 路由器上的 CPU 使用率过高进行故障排除

- 技术支持 - Cisco Systems