全局调试
在配置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
Serial network interface debugging is on
YH-Router#
Jun 1 21:54:55 PDT:Serial0: HDLC myseq 171093, mineseen 171093*, yourseen 1256540,line up
Jun 1 21:55:05 PDT:Serial0: HDLC myseq 171094, mineseen 171094*, yourseen 1256541,line up
Jun 1 21:54:15 PDT:Serial0: HDLC myseq 171095, mineseen 171095*, yourseen 1256542,line up
YH-Router#undebug all
All possible debugging has been turned off
协议调试
下面我们举协议调试的两个示例。两个示例都与IP协议有关。当然,调试命令适用于所有的其他协议。
第一个示例(如下所示)显示ARP调试。ARP调试启动,然后清除ARP缓存,同时产生了ARP请求和响应。首先,我们使用命令清除了路由器上所 有的ARP缓存,因此路由器连接的每一个局域网段都将产生ARP报文。因为我们不需要产生过多的ARP报文,所以所选择的路由器仅与一个以太网段相连。
YH-Router#debug arp
ARP packet debugging is on
YH-Router#clear arp
YH-Router#
*Jun 1 21:57:36 PDT: IP ARP: sent req src 171.136.10.1 00e0.1eb9.bbcd
dst 171.136.10.34 00a0.24d1.5823 Ethernet0
*Jun 1 21:57:36 PDT: IP ARP: sent req src 171.136.10.1 00e0.1eb9.bbcd
dst 171.136.10.10 0080.5f06.ca3d Ethernet0
......
*Jun 1 21:57:36 PDT: IP ARP: rcvd req src 171.136.10.10 0080.5f06.ca3d, dst 171.136.10.1 Ethernet0
*Jun 1 21:57:36 PDT: IP ARP: creating entry for IP address:171.136.10.10,hw: 0080.5f06.ca3d
......
第二个示例(如下所示)显示IP RIP调试。在调试开始时,并没有清空路由器表,因为路由器每隔30秒自动进行一次RIP更新,因此不需要强 制更新。与第一个示例中类似,在获得了足够的信息后应该关闭所有的调试。
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
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等属性。
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命令访问源地址和目的地址。