Buffer parameters show interface命令还提供与缓冲区分配有关的故障信息,它包括no buffer、overruns、ignored、underruns、buffer failures和swapped out buffers等。?? 上面,我们详细讨论了show interface命令的用法。这些命令的输出提供了与路由器接口相关以及与传输介质相关的参数等有价值的信息。 show controller命令提供连接到路由器接口物理线路以及传输介质的详细信息。并且提供状态的历史信息。其中一些详细信息很少被使用,它们一般仅被TAC技术人员用于解决十分复杂的问题。
YH-Router#debug ip rip events
RIP event debugging is on YH-Router# NOV 27 13:55:45 PST: RIP: sending v1 update to 255.255.255.255 via TokenRing1/0 (165.48.65.136) NOV 27 13:55:45 PST: RIP: Update contains 25 routes NOV 27 13:55:45 PST: RIP: Update queued NOV 27 13:55:45 PST: RIP: Update contains 6 routes NOV 27 13:55:45 PST: RIP: Update queued NOV 27 13:55:45 PST: RIP: Update sent via TokenRing1/0 ...... YH-Router#undeb all All possible debugging has been turned off
3.2 Ping命令
Ping是最常使用的故障诊断与排除命令。它由一组ICMP回应请求报文组成,如果网络正常运行将返回一组回应应答报文。ICMP消息以IP数据包传输,因此接收到ICMP回应应答消息能够表明第三层以下的连接都工作正常。 Cisco的ping命令不但支持IP协议,而且支持大多数其他的桌面协议,如IPX和AppleTalk协议的ping命令。我们首先看一下支持IP协议的ping命令以用户EXEC方式执行的情况,然后再讨论在特权模式下,扩展的ping命令包含的许多强大功能。 用户执行模式 IP PING 简单的IP ping既可以在用户模式下执行,也可以在特权模式下执行。正常情况下,命令会发送回5个回应请求,5个惊叹号表明所有的请求都成功地接收到了响应。输出中还包括最大、最小和平均往返时间等信息。 每一个“!”表明一个echo响应被成功的接受,如果不是“!”号,则表明echo响应未被接收到的原因: ! 响应成功接收 ・ 请求超时 U 目的不可达 P 协议不可达 N 网络不可达 Q 源抑制 M 不能分段 ? 不可知报文类型 IPX PING IPX ping命令只能在运行IOS v 8.2及其以上版本的路由器上执行。用户模式下的IPX ping通常仅用于测试Cisco路由器接口。在特权模式下,用户可以ping特定的NOVELL工作站,命令的格式为“ping ipx IPX地址”。 APPLETALE PING 该命令使用Apple Echo Protocol(AEP)以确认AppleTalk节点之间的连通性。需要注意的是,目前的Cisco路由器仅对以太 网接口支持Apple Echo Protocol。命令的格式为“ping apple Appletalk地址”。 特权执行模式 在特权执行模式下,扩展的ping命令适用于任何一种桌面协议。它包含更多的功能属性,因此可以获得更为详细的信息。通过这些信息我们可以分析网络性能下降的原因而不单单是服务丢失的原因。扩展的ping命令的执行方式也是敲入ping。然后路由器提示各种不同的属性。 EXTENDED IP PING 其使用方法如下所示: YH-Router#ping Protocol [ip]: Target IP address: 165.48.183.12 Repeat count [5]: 10 Datagram size [100]: 1600 Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 165.48.48.3 Type of service [0]: Set DF bit in IP header? [no]: Data pattern [0xABCD]: Loose, Srict, Record, Timestamp, Verbose[none]: Sweep range of sizes [n]: Type escape sequence to abort. Sending 10, 1600-byte ICMP Echoes to 165.58.183.12, timeout is 2 seconds: !!!!!!!!!! Success rate is 100 percent (10/10), round-trip min/avg/max = 36/39/48 ms 首先我们讨论特权模式下的ping的各种可用属性。每种属性的缺省值在括号中显示。 Protocol 需要测试的协议。 Target address 测试的目标地址。 Repeat count 如果出现间歇性的失败或者响应时间过慢,ping重复的次数。 Datagram size 如果怀疑报文由于延迟过长或者分段失败而丢失,则可以提高报文的大小。例如,我们可以使用1600字节的报文来强制分段。 Timeout 如果怀疑超时是由于响应过慢而不是报文丢失,则可以提高该值。 Extended commands 回答确定以获得扩展属性。 Source address 必须是路由器接口的地址。 Type of service 根据RFC 791 TOS规定的属性,通常缺省值为0。 Set DF bit in IP header? 通过设置DF位禁止分段,即使是报文超过了路由器定义的MTU也禁止分段。 Data pattern [0xABCD] 通过改变数据模式可以测试线路的噪声。 Loose,Strict,Record,Timestamp,Verbose[none] 这些都是IP报文头的属性。一般只使用Record属性和Verbose,其他属性很少被使用。Record可以用来记录报文每一跳的地址,Verbose属性给出每一个回应应答的响应时间。。 Sweep range of sizes [n] 该属性主要用于测试大报文被丢失、处理速度过慢或者分段失败等故障。 EXTEND IPX PING 扩展的IPX ping也允许用户修改参数,比如报文大小和重复次数。对用户模式下ping的另一个增强属性是使用了Novell? ? Standard echo属性。使用这一属性,用户可以ping装载IPX的工作站。如果禁用该属性,Novell IPX设备将不响应ping,因为它们不支持Cisco? ?proprietary IPX ping协议。用户可以修改设备的属性使它们支持这一特性。 EXTENDED APPLETALK PING 扩展的AppleTalk ping命令是对用户模式下ping的增强,这一点与扩展的IPX ping类似。与IP和IPX扩展ping一样,用户也可以选择Verbose等属性。
3.3 trace命令
trace命令提供路由器到目的地址的每一跳的信息。它通过控制IP报文的生存期(TTL)字段来实现。TTL等于1的ICMP回应请求报文将被首先发 送。路径上的第一个路由器将会丢弃该报文并且发送回标识错误消息的报文。错误消息通常是ICMP超时消息,表明报文顺利到达路径的下一跳,或者端口不可达消息,表明报文已经被目的地址接收但是不能向上传送到IP协议栈。 为了获得往返延迟时间的信息,trace发送三个报文并显示平均延迟时间。然后将报文的TTL字段加1并发送3个报文。这些报文将到达路径的第二个路由器上,并返回超时错误或者端口不可达消息。反复使用这一方法,不断增加报文的TTL字段的值,直到接收到目的地址的响应消息。 在有些情况下,使用trace命令可能会导致故障。因为IOS中存在与trace命令相关的bug。这些bug的相关信息可以从CCO得到。另外一个问题是,某些目标站点不响应ICMP端口不可达消息。当命令的输出显示一系列星号(*)时,就可能碰到了此类站点。用户可以使用Ctrl-Shift-6中断命令的执行。 用户执行模式 下面展示了一个简单的在用户执行模式下执行的trace命令的输出。到达目的地的距离是3跳。TTL值为1的3个报文的响应消息是ICMP超时错误,并且返回报文的IP地址有两个。因为路由器1和路由器2在同一个网段中,并且它们到路由器3的距离都是一跳,因此这些路由器都响应该报文。 Router3#trace 171.144.1.39 Type escape sequence to abort. Tracing the route to Router9 (171.144.1.39) 1 Router2 (165.48.48.2) 0 msec Router2 (165.48.48.2) 0 msec Router1 (165.48.48.1) 0 msec 2 165.48.48.129 12 msec Router6 (165.48.49.129) 12 msec 12 msec 3 Router4 (171.133.1.2) 12 msec 12 msec Router9 (171.144.1.39) 12 msec 12 msec Router3 下面列出了IP trace命令的输出中出现的不同字符及其含义: XY msec 在接收到响应消息之前的往返延迟(以毫秒为单位) * 报文超时 ? 报文类型不能识别 U 端口不可达 P 协议不可达 N 网络不可达 H 主机不可达 Q ICMP 源抑制 特权模式扩展Trace 用于扩展ping命令的许多属性都可以用来扩展trace命令的功能。扩展trace命令的特殊属性有: Numeric display 在缺省情况下,trace命令的输出中既包括IP地址也包括其对应的DNS域名。如果用户不需要显示DNS域名,则可以使用该属性。 Probe count 其缺省值为3,用户可以根据需要进行调整。 TTL 该值可以在最大和最小TTL值之间变化。 Port number 这是一个非常有用的属性,它可以使工程技术人员跟踪特定的传输层端口。因此,不但可以确认源端与目的端之间的IP连通性, 而且可以确认高层服务是否可被访问。?? 与trace命令相关的另外一个问题是,如果存在到达目的地的多条路径,返回报文的源地址可能不相同。在这种情况下,用户需要仔细比较不同返回报文的延迟时间。如果仍不能得到明确的结果,可以远程访问路径上的一个或多个路由器,使用trace命令访问源地址和目的地址。
4 理解Cisco错误消息
4.1 错误消息格式
系统错误消息格式如下: %Facility - subfacility - Severity - Mnemonic : Message Text Facility 它指出错误消息涉及的设备名。该值可以是协议、硬件设备或者系统软件模块。 Subfacility 它仅与通道接口处理器(CIP)卡有关。详细的信息可以参见Cisco文档的相关章节。 Severity 它是一个范围在0到7之间的数字。数字的值越小,严重程度越高。 Mnemonic 唯一标识错误消息的单值代码。该代码通常可以暗示错误的类型。 Message Text 它是错误消息的简短描述,其中包括涉及的路由器硬件和软件信息。 下面是一些错误消息的示例。用户可以查阅CCO ISO文档的系统错误消息一节,以查找这些错误消息的说明。 %DUAL-3-SIA:Route 171.155.148.192/26 stuck-in-active state in IP-EIGP 211. Cleaning up %LANCE-3-OWNERR: Unit 0, buffer ownership error 需要注意的是,并不是所有的消息都涉及到故障或者问题的状况。某些消息显示的是状态方面的信息。例如,以下消息仅表明ISDN BRI 0接口与特定的远端数据连接。 %ISDN-6-CONNECT: Interface BRI0 is now connected to 95551212
4.2 Traceback Report
某些与路由器内部错误相关的错误消息包含了traceback信息。在向Cisco TAC报告错误时,应在错误描述中加入这些信息。 5 错误消息和事件信息的日志
根据错误消息的重要性和有效性,Cisco错误消息可以被记录到以下位置:
?;; 控制台 ?;; 虚拟终端 ?;; Syslog服务器 ?;; 内部缓冲区 logging on命令使日志消息的输出到上述位置。对于Syslog服务器,必须使用下述全局配置命令指明服务器的IP地址: logging ip-address 通过反复使用这一命令,可以建立一个服务器的列表。在管理大型网络时,通常需要设置冗余服务器。 logging buffered命令用于将日志信息发送到内部缓冲区。缓冲区的大小必须在4096字节以上。缺省值根据系统平台的不同而不同。用户需要选择适合环境的缓冲区大小。如果缓冲区太小,新的消息将会覆盖旧的消息。这有可能会导致问题。但是,如果缓冲区大小过大将会浪费系统缓存。no logging buffered命令将禁止消息被写入内部缓存。 用户可以使用show logging命令显示内部缓冲区的内容。如果用户需要某一时间段的信息,首先使用NTP或者手工设置时钟,具体操作为: YH-Router#clock set 11:37:00 December 2000 YH-Router#sh clock 11:37:03.596 PST Fri Dec 11 2000 日志消息的时间戳和调试信息可以使用以下全局配置命令: YH-Router (config)#service timestamps log datetime YH-Router (config)#service timestamps debug datetime terminal monitor命令将在当前终端上显示调试时的日志信息。该命令不是一个配置命令。相反,它可以通过telnet到路由器时在命令行方式下使用。 在大多数情况下,用户可能需要显示某一级别的日志信息。因此,日志信息被分为八个不同的级别,按照重要程度由高到低排列如下: ?;; Emergencies ?;; Alerts ?;; Critical ?;; Errors ?;; Warnings ?;; Notifications ?;; Informational ?;; Debugging? ?
例如,需要在控制台上显示严重程度等于或者大于警告(Warning)的所有日志信息,可以使用下述全局配置命令:
logging console warning 类似的,将某种类型的日志信息发送到当前的终端时,使用 logging monitor level 或者将信息发送到Syslog服务器时使用 logging trap level 与terminal monitor命令不同,logging monitor命令是路由器配置的一部分。前一种命令不允许在不同的安全级别下执行。 需要注意的是,将日志记录到不同的位置时,系统开销变化很大。将日志记录到控制台的开销比较大,然而将日志记录到虚拟终端时开销较小。使用Syslog服务器时开销更小。系统开销最小的日志写入方式是写入内部缓冲区。 6 核心转储(Core Dump)
为了查找路由器崩溃的原因,我们可以使用许多命令来获取有效的信息。其中我们已经讲解了show stacks命令的用法。核心转储是系统内存映象的拷贝,它可以被写入到TFTP服务器中。从这个二进制文件中,我们可以获得与路由器崩溃或者严重误操作相关的信息,通过这些信息可以排除可能的故障。
下面的配置命令将核心转储写入到命令中IP地址对应的TFTP服务器上: exception dump ip-address write core命令通常用于路由器发生严重的误操作但是没有完全崩溃时,保存核心映像。 只有运行IOS v 9.0或更高版本的服务器才可以使用核心转储。但是,需要注意的是,在使用核心转储时,最好获取有经验的工程师或者Cisco TAC的支持。 7 结束语
要顺利地诊断并排除网络故障,网络工程技术人员必须掌握两种基本的技能。首先是对网络技术和协议要有清楚的理解,它是诊断与排除网络故障的基础。没有适当的知识和经验,故障诊断与排除工具比如路由器诊断命令和网络分析仪都不能发挥其作用。
网络工程技术人员必须掌握的第二种技能是将所掌握的知识以有条理的方式应用于诊断和排除网络故障的过程中。本文虽然只阐述了一些诊断的命令,但需要强调的是:故障诊断与排除是一种结构化的方法。许多工程技术人员认为故障诊断与排除计划不如研究和应用技术本身重要。事实上,正确的计划在故障诊断与排除过程中往往起决定性的作用。
在故障排除过程中,一个偶然的行为可能使故障得以顺利解决,但是它不能替代结构化的故障诊断与排除方法。
网络故障的排除是一项系统工程,应该经过定义问题、搜集事实、基于事实考虑可能性、建立行动计划、实施计划、观察结果和循环过程等步骤,这一过程就如同软件开发过程的瀑布模型,其重要性是不言而喻的。
|