![]() |
||||||||||||||||||||||
|
Cisco路由器故障诊断技术(上)
来源:chinabyte 发表时间:2005-3-19
1
引言
作为网络工程师,在网络环境出现故障时,及时定位故障并解决故障是十分重要的。本文以CISCO路由式网络为基础,介绍使用诊断工具对Cisco路由器进行故障诊断的方法。限于篇幅,我们所介绍的内容和示例主要是基于IP报文的,基于IPX和Appletalk等协议的诊断技术与此类似。 2
路由器的功能特性和体系结构 在学习Cisco路由器上可使用的各种故障排除和诊断工具之前,了解路由器的基本体系结构是十分重要的。网络工程师应该理解诊断命令执行时所起的作用以及对于路由器性能所产生的影响。 交换与路由是我们在网络互联中经常遇到的术语。此处所说的交换与局域网中的帧级交换是完全不同的概念。交换过程是指路由器如何在两个不同的接口间传送报文。 比如,路由器在以太网接口0接收到一个报文。路由器首先从报文中获取MAC头信息,然后检查网络层报文头。路由器检查路由表是否有与报文的目的地址匹配的表项。假设路由表中包含匹配的项,并且下一跳地址是另外一个路由器,该路由器可以通过以太网接口1到达。然后路由器需要检查下一跳的第二层地址。如果它没有该地址,则需要在以太网接口1发送ARP广播报文。如果没有接收到ARP响应,路由器则将该报文丢弃。如果有响应信息,路由器则建立到下一跳路由器的以太网帧。 在这个例子中,路由器从接收到以太网帧到建立并发送以太网帧的整个过程称为交换过程。需要注意的是,ARP解析过程通常不认为是交换过程的一部分。上面的过程中,执行路由表查询以寻找下一跳的地址表明采用了交换过程。这是一种最简单的报文交换方法,因而其开销和延迟都比较大。所有的路由协议最终都依赖于路由表的建立,路由器通过接收运行相同协议的相邻路由器发送的路由更新报文来更新相应的路由表,我们称之为路由过程(routing
process),它主要由路由处理器完成。 目前在国内应用比较广泛的Cisco路由器包括2500系列、4000系列、7000系列和7500系列,这些路由器进行路由的过程基本上是相似的,但是交换的过程却根据其系统结构的不同而不同。 7000系列支持过程交换、快速交换、自治交换和硅交换。Cisco
7500系列路由器比7000系列在体系结构方面有很多改进。路由处理器和交换处理器的功能被集成到路由器交换处理器(RSP)中。这一新的体系结构减少了快速交换时系统总线的负载。集成后的功能对路由处理器和交换处理器都作了性能、稳定性、可扩充性和安全等方面的优化。7500系列路由器既不支持自治交换也支持硅交换,它支持更加灵活的优化交换。 Cisco 4000/2500系列路由器的硬件结构比7000/7500系列路由器的硬件结构简单。这些设备只在交换过程中才共享存储器。所有的报文缓存和
Cache都位于共享存储器中,因此只支持快速交换或过程交换。 需要知道过程交换需要通过查询路由表来做出路由选择,而且其他交换技术都是通过缓存来提高交换速度的,因为其缓存的位置不同而分别称为不同的技术。 3 故障诊断与排除命令 Cisco ISO操作系统软件提供了一组功能丰富的命令,可以用来进行故障查找与排除、问题诊断以及性能检测。命令大致可以分为两类:show命令和debug命令。同时,还包含一组用于连接这两类命令的clear命令。下面我们分别讲解各命令 在这一节中,我们将讲述最常用的show命令,阐述这些命令的输出以及这些命令适用于解决的故障类型。为了叙述清楚,这些命令被分为全局系统命令、与接口相关的命令和与协议相关的命令。我们仅讨论最常使用的命令。 全局系统命令 本节将列出与路由器软件和硬件相关的输出命令,其中包括存储区和电源。show
version命令是最基本的命令之一,它显示路由器本身以及其所使用的软、硬件的基本信息。show
hardware命令的功能与show version命令类似。 命令的输出信息包括:IOS的版本、路由器持续运行的时间约23周、最近一次重启动的原因、路由器主存的大小、共享存储器的大小、闪存的大小、IOS映像的文件名,以及路由器从何处启动等信息。show
version命令显示了路由器的许多非常有用的信息。在解决问题时,通常应该从这个命令开始收集数据。 如果路由器的多个接口同时丢失报文,则可能由于路由器内存不足或者CPU过载。用户可以使用show
memory命令检查内存利用率(如下所示)。CPU利用率可以使用show
process命令检查。 YH-Router#show memory show memory的前两行显示了存储器的一般信息,它表明系统有足够可用的内存。同时它还显示内存中没有碎片,因为在13.03兆字节可用内存中最大的可用块接近11.25兆字节。内存碎片表明内存被划分为了许多不连续的块。它将导致内存的利用率降低,严重时可能产生内存错误从而也严重影响路由器的性能。 现在看一看路由器中有许多内存碎片的情形(如下所示)。此时我们有足够多的可用内存(8.4兆字节),但是其中最大的块仅为0.5兆字节。连续内存中没有足够大的可用块,这有可能导致严重的内存分配问题。这些问题有时表现为一个或多个接口间歇性的丢失报文。此时路由器产生内存碎片错误消息。 HX-Router#sh mem 使用命令show memory free,用户可以看到可用内存被划分为许多很小的碎片。需要注意的是,路由器中存在一定数量的内存碎片是正常的。虽然并没有一个很严格的界限来划分内存碎片的可接受程度,但是可用块的大小至少应该不小于可用内存的一半。用户可以通过重新启动路由器来解决这个问题。在重新启动时,系统重新分配内存和缓存空间。此时,用户应该监视内存分配的过程。如果再次发生类似的情况,则应该咨询Cisco
TAC。 用户可以使用show process cpu命令检查路由器的CPU是否过载。该命令将给出路由器CPU的利用率,同时显示路由器中不同进程的CPU占用率。在下述示例中,路由器的CPU工作正常。在通常情况下,在5分钟内CPU的平均利用率小于60%是可以接受的。如果怀疑CPU利用率出现了问题,则需要不断地监视这一参数,因为它可能在短时间内发生变化。最好每10秒钟使用一次该命令。通过这种方法,可以清楚地了解CPU利用率的波动情况。 YH-Router#sh process cpu 如果CPU的平均利用率超过了80%,则表明路由器过载。下一步需要检测那一些进程导致了CPU利用率过高。在上面的显示中,我们可以看到进程IPX
SAP占用了绝大部分的CPU处理能力,但是它还在可以接受的范围之内。有时候,如果SRB
background参数持续过高,则表明发生了路由网桥风暴。 show process memory命令可以用来给出路由器可用内存的一般信息,然后显示每一个进程所占用的内存空间的详细信息。 如果路由器由于临时重启动而完全崩溃,则相应的错误消息将包含在show
version命令的输出中。show stack命令用于跟踪路由器的堆栈,提供路由器临时重新启动的原因。如果由于错误而导致重新启动,堆栈记录将在输出的末尾显示。为了抽取与故障相关的信息,堆栈记录需要解码。这一工作通常由Cisco
TAC工程师完成。此外,拥有相应CCO登录ID的用户可以通过将show
stack命令的输出发送到CCO而获得解码信息。堆栈记录解码的结果有时与Cisco路由器的bug有关。 与接口相关的命令 下面我们将阐述一些直接与路由器活跃接口相关的命令。show
ip interface brief将显示每一个路由器接口的IP地址信息以及第二层的状态信息(如下所示)。其他与IP对应的协议的相关性信息可以通过相应命令属性获得,比如show
ipx interface brief。 YH-Router#sh ip in brief 从输出中还能获取哪些其他的信息呢?读者可以看到,ARP
cache timeout的值为4小时(该值为缺省设置)。从路由器接口输入到输出的时间
不到1秒钟。输出从未被挂起。接口计数器最后一次被清0是在5个星期以前。在评估接口的统计信息时,这些数据是十分有用的。在通常情况下,可以将计数器清0以便作进一步的监视。 接口所采用的是FIFO排队规则。输出队列和输入队列的缺省长度分别为40和75。队列中都不包含报文。在计数器最后一次被清0后,输入队列丢失了许多报文。但是,正如我们前面所说的,计数器5个星期未被清0;因此,该值不能说明一定发生了网络故障。在这种情况下,应该首先将计数器清0,然后再监视输出队列的丢失报文数。 同时,命令的输出中还显示每1秒钟通过路由器接口的平均信息量(以字节为单位)以及报文数。这些参数的总量信息、路由器接口观测到的所有广播报文的数量也在命令的输出中显示。如果广播报文的数量增长非常迅速,尤其是如果相对于输入报文的数量非常高,则表明在局域网段中有广播风暴。由于某些特定的应用程序需要频繁使用广播报文,因此确定广播报文的数量阀值是很困难的。但是,如果广播报文的数量超过了整个输入报文的30%,则需要使用局域网协议分析仪进一步检测网络。 Runts
是指大小小于最小值的报文。在示例的以太网中,该值为64。以太网中指定最小报文大小大小是由于在这种传输模式下的工作站需要检测碰撞。如果以太网段中包含以太网中继器并且其距离符合规定的标准,最小报文大小大小可以使处在这种传输模式下的工作站检测线路中的任何碰撞。 Giants
指大小超过线路可以承受的最大报文大小的报文。以太网的MTU通常为1500字节,或者最大的封装数据为1500字节。 Input errors
指到达报文中检测到的错误,也可能表明网段本身发生了错误。 Output errors
指输出报文中的错误,它可能表明路由器接口本身发生了故障。 CRCs
由于报文不正确的以太网校验和而检测到的循环冗余校验错。它可能由于网段的噪声引起,或者由于网卡故障、报文冲突引发。CRC的频
率应是每100000个输入报文中发生一次。 Frame errors
指接收到的帧的类型与路由器以太网帧类型(IP协议帧类型为ARPA)不匹配。 上面,我们详细讨论了show
interface命令的用法。这些命令的输出提供了与路由器接口相关以及与传输介质相关的参数等有价值的信息。 show controller命令提供连接到路由器接口物理线路以及传输介质的详细信息。并且提供状态的历史信息。其中一些详细信息很少被使用,它们一般仅被TAC技术人员用于解决十分复杂的问题。 与协议相关的命令 本节将讨论如何使用与不同协议相关的显示命令。 show protocol命令给出了路由器运行的协议信息以及路由这些协议的每一个接口的地址信息(如下所示)。 YH-Router#sh protocol Cisco IOS
软件中包含大量的调试命令。这些命令可以在路由器正常工作或者发生网络故障时获得在路由器中交换的报文和帧的细节信息。调试命令在排除网络故障时的特殊功能,可以减少用户对协议分析仪的需求。在使用调试命令时,需要注意以下几点:  ;;
在没有完全掌握调试命令的工作过程以及它所提供的信息时,不要使用调试命令。  ;;
调试命令仅能捕获通过过程交换的报文。调试命令会明显增加处理器的负载。某一些命令的负载很小,但是另一些处理器敏感的命令会极大地增加处理器的负担。建议读者在使用调试命令之前,使用命令show
process cpu检查CPU的负载。即使CPU的负载很小,在使用处理器敏感的命令时仍需要十分慎重。在不能确定的情况下,可以查询Cisco调试命令参考手册。对CPU十分敏感的命令将会产生警告信息。通常情况下,调试命令的大量输出将会增加处理器的负担。 ;;
调试命令针对故障排除,监视时最好不要使用这些命令。在获得了足够的信息后,应立刻中止调试命令的执行。 下面我们将阐述在Cisco IOS中可以使用的各种调试命令。为了叙述清楚,我们将所有的调试命令分为三类:全局(系统)调试命令、接口调试命令以及协议调试命令。与show命令类似,这些命令之间并没有严格的界限。 首先,需要了解的是有哪些调试命令可以使用。使用与调试相关的帮助,输入“debug
?”,我们将获得了一个命令的列表,其中每一个命令都包含若干的属性,它们在排除故障时提供各种不同的作用。 全局调试 在配置Cisco路由器时,全局和接口命令的界限是十分明显的。在这种情况下,我们使用“全局”来标识那些不能用于接口调试或者特定的传输介质类型和协议调试的命令。例如,在2500系列路由器中,就可以使用调试命令分析Cisco发现协议(Cisco
Discovery Protocol,CDP)。我们通过telnet远程登录到路由器。在缺省方式下,调试命令的输出被发送到控制台,如果处于telnet会话中,我们可以使用terminal
monitor命令查看输出。 接口调试 debug serial interface命令是直接与路由器接口和传输介质类型相关的调试命令。在下面的示例中,串行接口采用HDLC封装。端到端的HDLC保持活跃的报文每10秒钟交换一次。这表明链路操作正常并且第二层工作正常。show
interface serial0命令表明线路协议正常启动。使用
undebug all命令关闭所有的调试。 YH-Router#debug serial interface 协议调试 下面我们举协议调试的两个示例。两个示例都与IP协议有关。当然,调试命令适用于所有的其他协议。 第一个示例(如下所示)显示ARP调试。ARP调试启动,然后清除ARP缓存,同时产生了ARP请求和响应。首先,我们使用命令清除了路由器上所
有的ARP缓存,因此路由器连接的每一个局域网段都将产生ARP报文。因为我们不需要产生过多的ARP报文,所以所选择的路由器仅与一个以太网段相连。 YH-Router#debug arp 第二个示例(如下所示)显示IP RIP调试。在调试开始时,并没有清空路由器表,因为路由器每隔30秒自动进行一次RIP更新,因此不需要强
制更新。与第一个示例中类似,在获得了足够的信息后应该关闭所有的调试。 上一节:利用路由器实现VPN的基本配置方法 下一节:Cisco路由器配置基本知识 |
| 首页 | 公司简介 | 公司架构 | 客户案例 | 合作伙伴 | 有关认证 | 招贤纳士 | 服务支持 | 销售网络 | 网站地图 |
| ?2003北方天晨 版权所有.ALL RIGHTS RESERVED. 电 话:010-51665999 82666682 传真:010-82666499 |