简介
本文的目的是描述三种错误类型- 欺骗访问、校验错误和假中断。它们可能在运行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服务案例需要搜集的信息
相关信息