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都位于共享存储器中,因此只支持快速交换或过程交换。
需要知道过程交换需要通过查询路由表来做出路由选择,而且其他交换技术都是通过缓存来提高交换速度的,因为其缓存的位置不同而分别称为不同的技术。
我们还可以获取接口的下列错误检测信息:
Runts 是指大小小于最小值的报文。在示例的以太网中,该值为64。以太网中指定最小报文大小大小是由于在这种传输模式下的工作站需要检测碰撞。如果以太网段中包含以太网中继器并且其距离符合规定的标准,最小报文大小大小可以使处在这种传输模式下的工作站检测线路中的任何碰撞。
Giants 指大小超过线路可以承受的最大报文大小的报文。以太网的MTU通常为1500字节,或者最大的封装数据为1500字节。
Input errors 指到达报文中检测到的错误,也可能表明网段本身发生了错误。
Output errors 指输出报文中的错误,它可能表明路由器接口本身发生了故障。
CRCs 由于报文不正确的以太网校验和而检测到的循环冗余校验错。它可能由于网段的噪声引起,或者由于网卡故障、报文冲突引发。CRC的频率应是每100000个输入报文中发生一次。
Frame errors 指接收到的帧的类型与路由器以太网帧类型(IP协议帧类型为ARPA)不匹配。
Aborts 在碰撞检测中过度的重传而导致的问题。在以太网中,重传的最大次数不超过15次。
Dribble condition 指接收到的帧比MTU大,但不属于Giants。
Babble 是指持续接收到可疑的帧。
Deferred 如果线路繁忙,报文在传输时将被延缓发送。
Interface resets 在检测到过多的错误时,路由器将重置接口。这些错误可能存在于局域网段中,也可能是接口本身的错误。在此不能够判断具体是那儿发生故障,但是,如果伴随着大量的输出错误,则表明路由器接口本身发生故障。
Collisions 在以太网中,冲突被分为两大类:early和late。early collision 由发送方在帧的前64个字节进入线路之前检测到的冲突。early collision是以太网CSMA/CD访问方法中的组成部分。early collision通常导致小的被中断的帧或称为runt。Late collision发生在帧的多个字节(大于64)被发送到线路中时产生的冲突。在理论上,以太网不会产生此类冲突。产生late collision的原因包括:
电缆违反了距离规则。
发生故障的NIC卡不正确地监听线路。
Lost carrier 表明在计数器最后一次清0后,载波和线路协议发生的故障。此类故障通常与路由器无关。例如,载波丢失可能是因为路由器与集线器之间的电缆连接中断。
Buffer parameters show interface命令还提供与缓冲区分配有关的故障信息,它包括no buffer、overruns、ignored、underruns、buffer failures和swapped out buffers等。
上面,我们详细讨论了show interface命令的用法。这些命令的输出提供了与路由器接口相关以及与传输介质相关的参数等有价值的信息。
show controller命令提供连接到路由器接口物理线路以及传输介质的详细信息。并且提供状态的历史信息。其中一些详细信息很少被使用,它们一般仅被TAC技术人员用于解决十分复杂的问题。
与协议相关的命令
本节将讨论如何使用与不同协议相关的显示命令。
show protocol命令给出了路由器运行的协议信息以及路由这些协议的每一个接口的地址信息(如下所示)。
YH-Router#sh protocol
Global values:
Internet Protocol routing is enabled
Novell routing is enabled
Serial0 is up, line protocol is up
Internet address is 171.137.8.130/25
Novell address is AB890880.0000.30e8.b7c8
Serial1 is administratively down, line protocol is down
TokenRing0 is up, line protocol is up
Internet address is 171.137.6.1/25
Novell address is AB890600.0000.30e8.b7c8
......
3.2 Debug命令
Cisco IOS 软件中包含大量的调试命令。这些命令可以在路由器正常工作或者发生网络故障时获得在路由器中交换的报文和帧的细节信息。调试命令在排除网络故障时的特殊功能,可以减少用户对协议分析仪的需求。在使用调试命令时,需要注意以下几点:
在没有完全掌握调试命令的工作过程以及它所提供的信息时,不要使用调试命令。
调试命令仅能捕获通过过程交换的报文。调试命令会明显增加处理器的负载。某一些命令的负载很小,但是另一些处理器敏感的命令会极大地增加处理器的负担。建议读者在使用调试命令之前,使用命令show process cpu检查CPU的负载。即使CPU的负载很小,在使用处理器敏感的命令时仍需要十分慎重。在不能确定的情况下,可以查询Cisco调试命令参考手册。对CPU十分敏感的命令将会产生警告信息。通常情况下,调试命令的大量输出将会增加处理器的负担。
调试命令针对故障排除,监视时最好不要使用这些命令。在获得了足够的信息后,应立刻中止调试命令的执行。
下面我们将阐述在Cisco IOS中可以使用的各种调试命令。为了叙述清楚,我们将所有的调试命令分为三类:
全局(系统)调试命令、接口调试命令以及协议调试命令。与show命令类似,这些命令之间并没有严格的界限。
首先,需要了解的是有哪些调试命令可以使用。使用与调试相关的帮助,输入“debug ?”,我们将获得了一个命令的列表,其中每一个命令都包含若干的属性,它们在排除故障时提供各种不同的作用。
转载地址: http://www.net130.com/CMS/Pub/Tech/tech_zh/164239_3.htm