简介
本文档介绍如何使用扩展ping
和扩展traceroute
命令。
先决条件
要求
本文档要求事先了解ping
和traceroute
命令。
使用的组件
本文档中的信息基于以下软件和硬件版本:
- Cisco IOS®软件
- 所有 Cisco 系列路由器
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
ing
命令
ping
(Packet InterNet Groper)命令是排除设备访问故障的一个非常常见的方法。它使用两个互联网控制消息息协议(ICMP)查询消息、ICMP echo请求和ICMP echo应答来确定远端主机是否处于使用状态。ping
命令还计算接收应答所花费的时间。
ping
命令首先发送ECHO请求包到一个地址,然后等待回复。ping
只有在ECHO请求到达目的地时,并且目的地能够在预定义的时间间隔内得到返回ping
源的ECHO应答,才能成功。
扩展ing
命令
当正常ping
命令从路由器发出时,ping的源地址是数据包退出路由器所用接口的IP地址。如果使用扩展ping
命令,源IP地址可以更改为路由器上的任何IP地址。扩展ping
用于对主机可到达性和网络连接执行更高级的检查。扩展ping
命令仅在特权EXEC命令行中有效。正常ping
可在用户执行模式和特权执行模式下运行。要使用此功能,请在命令行中输入ping
,然后按Return键。系统将提示您输入本文 ping 命令字段说明部分中提供的字段。
命ing
令字段说明
下表列出了ping
命令字段的说明。可使用扩展ping
命令修改这些字段。
字段 |
描述 |
Protocol [ip]: |
系统将提示输入受支持的协议。请输入 appletalk、clns、ip、novell、apollo、vines、decnet 或 xns。默认值为 ip。 |
目标 IP 地址 |
系统将提示输入要 ping 的目的节点的 IP 地址或主机名。如果您指定了所支持的协议,而不是 IP,请在此处输入该协议的相应地址。默认值为无。 |
Repeat count [5]: |
发送到目标地址的 ping 数据包的数目。默认值为 5。 |
数据报大小 [100]: |
ping 数据包的大小(单位:字节)。默认值:100 字节。 |
Timeout in seconds [2]: |
超时间隔。默认值:2(秒)。只有在此时间间隔内接收到 ECHO 回复数据包时,ping 才能宣称成功。 |
Extended commands [n]: |
指定是否显示一系列其他命令。默认为否。 |
Ingress ping [n]: |
入口 ping 模拟在指定入口接口上收到的要发往目标目的地的数据包。默认为否。 (此选项的可用性与使用的软件版本不同。) |
源地址或接口 |
路由器的接口或 IP 地址用作为探针的源地址。路由器通常选择要使用的出站接口的 IP 地址。也可以包含接口,但必须使用正确的语法,如下所示: Source address or interface: ethernet 0 这是扩展ping 命令的部分输出。接口不可写作 e0。 |
DSCP Value [0]: |
指定差分服务代码点 (DSCP)。引入的 DSCP 值放置在每个探测器中。默认值为0。(此选项的可用性与使用的软件版本不同。) |
Type of service [0]: |
指定服务类型 (ToS)。每次探测中都会放置请求的 ToS,但无法保证所有的路由器都将处理该 ToS。它是互联网服务质量选项。默认值为 0。 |
在 IP 头中设置 DF 位?[no] : |
指定是否要在ping数据包上设置位 Don't Fragment (DF) 。如果指定为 yes,则 DF 选项不允许在必须通过具有小型最大传输单位 (MTU) 的数据段时对此数据包进行分片,并且您会收到要对此数据包进行分片的设备发送的错误消息。这对于确定到达目的地的路径中的最小 MTU 非常有用。默认为否。 |
Validate reply data?[no] : |
指定是否验证应答数据。默认为否。 |
Data pattern [0xABCD] |
指定数据模式。使用不同数据模式来排查串行线路上的framing 错误和clocking 问题。默认值为 [0xABCD]。 |
Loose, Strict, Record, Timestamp, Verbose[none]: |
IP 报头选项。此处提示将提供多个选项以供选择。 它们是:
- Verbose 将与其他任何选项一起自动选择。
- Record,此选项非常有用,因为它显示数据包经过的跳(最多 9 跳)的地址。
- Loose,通过此选项您可以在指定希望数据包经过的跳的地址时影响路径。
- Strict,此选项用于指定您希望数据包经过的跳,但不允许访问其他跳。
- Timestamp 用于测量到特定主机的往返时间。
此命令的 Record 选项与 traceroute 命令的区别在于,Record 选项不仅会通知您回应请求(ping 操作)到达目的地经过的跳,而且还会通知您它在返回路径上访问的跳。使用 traceroute 命令时,无法获取 Echo 应答所选取的路径信息。traceroute 命令将提示输入必填字段。 traceroute 命令会将请求的选项置于每个探测器中。但无法保证所有的路由器(或终端节点)都将处理这些选项。默认值为无。 |
Sweep range of sizes [n]: |
可以改变发送的 Echo 数据包的大小。这被用来确定沿目的地地址路径节点所配置 MTU 的最小尺寸。这样可减少数据包分段导致的性能问题。默认为否。 |
!!!!! |
每个感叹号 (!) 表示收到一条应答。句点(.)表示网络服务器在等待应答时超时。有关其他字符的说明,请参阅 ping 字符。 |
Success rate is 100 percent |
成功返回路由器的数据包百分比。如果该百分比小于 80%,则通常视为存在问题。 |
round-trip min/avg/max = 1/2/4 ms |
协议回应数据包的往返时间间隔,具有最小值/平均值/最大值(以毫秒为单位)。 |
在此图中,主机 1 和主机 2 彼此无法执行 ping 操作。您可以在路由器上对此问题进行故障排除,以确定是否存在路由问题,或者两台主机中的一台主机的默认网关设置是否正确。
主机 1 和主机 2 无法 ping 通
为了ping
从Host 1成功地连接到Host 2,每台主机需要将其默认网关指向各自LAN网段上的路由器,或者主机需要与使用路由协议的路由器交换网络信息。如果任一台主机的默认网关设置不正确,或者其路由表中没有正确的路由,则它无法将数据包发送到其地址解析协议 (ARP) 缓存中不存在的目的地。主机无法相互 ping 通的原因也可能是,其中一个路由器没有通往主机从中获取 ping 数据包的子网的路由。
示例
下面是一个扩展 ping 命令的示例,该 Ping 从路由器 A 以太网 0 接口发往路由器 B 以太网接口。如果 Ping 成功,则表明路由没有问题。路由器 A 了解如何到达路由器 B 的以太网,且路由器 B 了解如何到达路由器 A 的以太网。此外,两台主机的默认网关均设置正确。
如果来自路由器A的扩展ping
命令发生故障,则意味着存在路由问题。三台路由器中均可能存在路由问题。路由器 A 可能丢失了通往路由器 B 以太网网段的子网或通往路由器 C 和路由器 B 之间的子网的路由;路由器 B 可能丢失了通往路由器 A 的子网或通往路由器 C 和路由器 A 之间的子网的路由;路由器 C 可能丢失了通往路由器 A 或路由器 B 以太网网段的子网的路由。您必须更正所有路由问题,然后主机 1 必须尝试 ping 主机 2。如果主机 1 仍无法 ping 通主机 2,则需要检查两个默认网关。可以用扩展 ping 命令检查路由器 A 和路由器 B 之间的以太网连接。
在从路由器 A 到路由器 B 以太网接口的正常 ping 操作中,ping 数据包的源地址将是传出接口,即 serial 0 接口的地址 (172.31.20.1)。当路由器 B 回复 ping 数据包时,它回复源地址(即 172.31.20.1)。这种方法只测试了路由器 A(172.31.20.1) 的 serial 0 接口和路由器 B (192.168.40.1) 以太网接口之间的连通性。
要测试路由器A以太网0 (172.16.23.2)和路由器B以太网0 (192.168.40.1)之间的连接,请使用extended ping
命令。使用扩展ping
,
,您可以选择指定数ping
据包的源地址,如下所示:
RouterA>enable
RouterA#ping
Protocol [ip]:
Target IP address: 192.168.40.1
!--- The address to ping.
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 172.16.23.2
!---Ping packets are sourced from this address.
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.40.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/97/132 ms
!--- Ping is successful.
RouterA#
This is an example with extended commands and sweep details:
RouterA>enable
RouterA#ping
Protocol [ip]:
!--- The protocol name.
Target IP address: 192.168.40.1
!--- The address to ping.
Repeat count [5]: 10
!--- The number of ping packets that are sent to the destination address.
Datagram size [100]:
!--- The size of the ping packet in size. The default is 100 bytes.
Timeout in seconds [2]:
!--- The timeout interval. The ping is declared successful only if the
!--- ECHO REPLY packet is received before this interval.
Extended commands [n]: y
!--- You choose yes if you want extended command options
!--- (Loose Source Routing, Strict Source Routing, Record route and Timestamp).
Source address or interface: 172.16.23.2
!--- Ping packets are sourced from this address and must be the IP address
!--- or full interface name (for example, Serial0/1 or 172.16.23.2).
Type of service [0]:
!--- Specifies Type of Service (ToS).
Set DF bit in IP header? [no]:
!--- Specifies whether or not the Don’t Fragment (DF) bit is to be
!--- set on the ping packet.
Validate reply data? [no]:
!--- Specifies whether or not to validate reply data.
Data pattern [0xABCD]:
!--- Specifies the data pattern in the ping payload. Some physical links
!--- might exhibit data pattern dependent problems. For example, serial links
!--- with misconfigured line coding. Some useful data patterns to test
!--- include all 1s (0Xffff), all 0s (0x0000) and alternating
!--- ones and zeros (0Xaaaa).
Loose, Strict, Record, Timestamp, Verbose[none]:
!--- IP header options.
Sweep range of sizes [n]: y
!--- Choose yes if you want to vary the sizes on echo packets that are sent.
Sweep min size [36]:
Sweep max size [18024]:
Sweep interval [1]:
Sending 179890, [36..18024]-byte ICMP Echos to 192.168.40.1, timeout is 2 seconds:
!--- The count 179890 depends on the values of min sweep,
!--- max sweep, sweep interval and repeat count. Calculations are based on:
!--- 18024(high end of range) - 36(low end of range) = 17988(bytes in range)
!--- 17988(bytes in range) / 1(sweep interval) = 17988 (steps in range)
!--- 17988(bytes in range) + 1 (first value) = 17989(values to be tested)
!--- 17989(values to be tested) * 10(repeat count) = 179890 (pings to be sent)
!--- In order to decrease the value, increase the sweep interval or decrease
!--- the repeat count, or you can even decrease the difference between
!--- Minimum and Maximum sweep size. Based on the previous example, the
!--- number 17890 is an expected value and tries to ping 17890 times.
Packet sent with a source address of 172.16.23.2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent, round-trip min/avg/max = 1/2/4 ms
!--- Ping is successful.
RouterA#
traceroute 命令
可以采用ping验证设备间连通性的地方,就可以使用traceroute
命令,发现数据包通往远程目的地的路径,以及路由中断的路径。
traceroute
命令的目的是记录每个ICMP“time exceeded”消息的来源,以跟踪数据包为到达目的地所选择的路径。
执行traceroute
命令的设备将一系列用户数据报协议(UDP)数据报发送到远程主机上的无效端口地址(默认33434),每个数据报的生存时间(TTL)值都会增加。
首先,发送三个数据报,每个数据报的 TTL 字段值均设为 1。TTL 值为 1 会导致数据报到达路径中的第一个路由器后就立即超时。然后,该路由器以 ICMP 超时消息进行响应,指示数据报已过期。
其次,还有另外三个 UDP 消息被发送出去,它们的 TTL 值设置为 2。这会导致通往目的地的路径中的第二个路由器返回 ICMP 超时消息。
此过程会一直持续到数据包到达目的地以及发出traceroute
命令的系统从通往目的地的路径中的每台路由器接收ICMP超时消息。由于这些数据报尝试访问目的地主机上的无效端口(默认为 33434),因此该主机会以 ICMP 端口不可达消息进行响应,来指示端口不可达。此事件将通知 traceroute 程序完成操作。
注意:确保您没有在任何 VLAN 下使用 no ip unreachables 禁用 ip unreachable 命令。此命令会返回数据包丢弃消息,而不会返回任何 ICMP 错误消息。在这种情况下,traceroute 不起作用。
扩展 traceroute 命令
扩展traceroute
命令是traceroute
命令的变体。扩展trackers命令可用于查看数据包采用什么路径到达目的地。同时该命令还可用于检查路由。这对于排除路由环路故障或确定数据包丢失位置(如果路由已丢失或数据包被访问控制列表或防火墙阻止)非常有用。您可以使用扩展 ping 命令确定连接类的问题,然后使用扩展 traceroute 命令缩小产生问题的范围。
超时错误消息表示中间通信路由器已发现并丢弃了数据包。目的地不可达错误消息表示目的地节点已收到探测但由于无法传送数据包而将其丢弃。如果计时器在回应进入前关闭,跟踪会打印上星号 (*)。
发生以下任一情况时,该命令将终止:
- 目的地做出响应.
- 超出最大 TTL.
- 用户中断对转义序列的跟踪.
注意:同时按下 Ctrl、Shift 和 6 时,可以调用此转义序列。
traceroute 命令字段说明
下表列出了 traceroute 命令字段的说明:
字段 |
描述 |
Protocol [ip]: |
系统将提示输入受支持的协议。请输入 appletalk、clns、ip、novell、apollo、vines、decnet 或 xns。默认值为 ip。 |
目标 IP 地址 |
必须输入主机名或 IP 地址。没有默认值。 |
源地址: |
路由器的接口或 IP 地址用作为探针的源地址。路由器通常选择要使用的出站接口的 IP 地址。 |
Numeric display [n]: |
默认同时显示符号和数字;但是您可以抑制符号显示。 |
Timeout in seconds [3]: |
等待对探测数据包做出响应的秒数。默认时间为 3 秒钟。 |
Probe count [3]: |
每个 TTL 级别要发送的探测次数。默认计数为 3。 |
Minimum Time to Live [1]: |
第一批探测的 TTL 值。默认值是 1,但可以设置更高的值,以抑制已知跳跃显示。 |
Maximum Time to Live [30]: |
可以使用的最大 TTL 值。默认值为 30。在到达目的地或到达此值时,traceroute 命令终止。 |
Port Number [33434]: |
UDP 探测消息使用的目标端口。默认值为 33434。 |
Loose, Strict, Record, Timestamp, Verbose[none]: |
IP 报头选项。您可以指定任意组合。traceroute 命令将提示输入必填字段。traceroute 命令会在每次探测中放置请求的选项,但不保证所有路由器(或终端节点)都会处理这些选项。 |
示例
RouterA>enable
RouterA#traceroute
Protocol [ip]:
Target IP address: 192.168.40.2
!--- The address to which the path is traced.
Source address: 172.16.23.2
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 192.168.40.2
1 172.31.20.2 16 msec 16 msec 16 msec
2 172.20.10.2 28 msec 28 msec 32 msec
3 192.168.40.2 32 msec 28 msec *
!--- The traceroute is successful.
RouterA#
注意:扩展traceroute
命令只能在特权EXEC模式下执行,而普通traceroute
命令在用户和特权EXEC模式下均适用。
相关信息