目錄

簡介

必要條件

需求

採用元件

慣例

背景資訊

Ping 指令

無法Ping

路由器問題

介面停止運作

Access-list 指令

位址解析通訊協定 (ARP) 問題

延遲

正確來源位址

輸入佇列捨棄率高

Traceroute 指令

效能

使用 Debug 指令

相關資訊

簡介

本檔案將說明在Cisco路由器上使用ping和traceroute命令。

必要條件

需求

本文件沒有特定需求。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

背景資訊

附註：在生產路由器上使用的任何debug指令都可能會導致嚴重問題。發出debug 指令之前，請先閱讀使用Debug指令一節。

本檔案中的範例使用以下基本組態：

IP和路由器的基本配置

Ping 指令

ping指令是排解裝置可及性疑難問題的一種極常見方法。此指令使用一系列網際網路控制訊息通訊協定 (ICMP) 回應訊息來判斷：

- 遠端主機處於作用中還是非作用中狀態。

- 用於與主機通訊的來回延遲。

- 封包遺失。

ping 指令首先將回應要求封包傳送到位址，然後等待回覆。只有發生以下情況時 ping 才會成功：

- 回應要求到達目的地，且

- 目的地可以在預定的時間（稱為逾時）內將回應回覆傳回來源。思科路由器上此逾時的預設值是兩秒。

ping 封包的 TTL 值無法更改。

下一個代碼示例顯示啟用debug ip packet detail 命令後的 ping 命令。

警告：在生產路由器上使用debug ip packet detail指令時，可能會造成CPU使用率高。這可能會導致效能嚴重下降或網路中斷。

Router1#debug ip packet detail

IP packet debugging is on (detailed)

Router1#ping 172.16.0.12

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.0.12, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/6/8 ms

Router1#

Jan 20 15:54:47.487: IP: s=172.16.12.1 (local), d=172.16.0.12 (Serial0), len 100,

sending

Jan 20 15:54:47.491: ICMP type=8, code=0

!--- This is the ICMP packet 172.16.12.1 sent to 172.16.0.12.

!--- ICMP type=8 corresponds to the echo message.

Jan 20 15:54:47.523: IP: s=172.16.0.12 (Serial0), d=172.16.12.1 (Serial0), len 100,

rcvd 3

Jan 20 15:54:47.527: ICMP type=0, code=0

!--- This is the answer we get from 172.16.0.12. !--- ICMP type=0 corresponds to the echo reply message.

!--- By default, the repeat count is five times, so there will be five

!--- echo requests, and five echo replies.

可能的ICMP型別值

ICMP 類型

常值

0

echo-reply

3

目的地無法連線代碼0 =網路無法連線1 =主機無法連線2 =通訊協定無法連線3 =連線埠無法連線4 =需要分段，DF設定5 =來源路由失敗

4

source-quench

5

重新導向代碼 0 = 重新導向網路的資料包 1 = 重新導向主機的資料包 2 = 重新導向服務類型和網路的資料包 3 = 重新導向服務類型和主機的資料包

6

alternate-address

8

echo

9

router-advertisement

10

router-solicitation

11

超出時間代碼 0 = 超出傳輸中存留時間 1 = 超出分段重組時間

12

parameter-problem

13

timestamp-request

14

timestamp-reply

15

information-request

16

information-reply

17

mask-request

18

mask-reply

31

conversion-error

32

mobile-redirect

來自Ping工具的可能輸出字元

字元

說明

!

各個驚嘆號表示收到回覆。

.

各個句號表示網路伺服器在等待回覆時逾時。

U

收到目的地無法連線錯誤 PDU。

Q

來源抑制（目的地太忙）。

M

無法分段。

?

未知的封包類型。

&

超出封包存留時間。

無法Ping

如果無法成功對IP位址執行ping，請考慮本節所列的原因。

路由器問題

以下是嘗試執行ping失敗、可判斷問題以及解決問題方式的範例。以下範例以網路拓撲圖顯示：

路由器問題

Router1#

!

interface Serial0

ip address 172.16.12.1 255.255.255.0

no fair-queue

clockrate 64000

!

Router2#

!

interface Serial0

ip address 10.0.2.23 255.255.255.0

no fair-queue

clockrate 64000

!

interface Serial1

ip address 172.16.0.12 255.255.255.0

!

Router3#

!

interface Serial0

ip address 172.16.3.34 255.255.255.0

no fair-queue

!

interface Serial1

ip address 10.0.3.23 255.255.255.0

!

Router4#

!

interface Serial0

ip address 172.16.4.34 255.255.255.0

no fair-queue

clockrate 64000

!

嘗試從Router1對Router4執行ping:

Router1#ping 172.16.4.34

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.4.34, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)

結果:

Router1#debug ip packet

IP packet debugging is on

警告：在生產路由器上使用debug ip packet指令時，可能會造成CPU使用率高。這可能會導致效能嚴重下降或網路中斷。

Router1#ping 172.16.4.34

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.4.34, timeout is 2 seconds:

Jan 20 16:00:25.603: IP: s=172.16.12.1 (local), d=172.16.4.34, len 100, unroutable.

Jan 20 16:00:27.599: IP: s=172.16.12.1 (local), d=172.16.4.34, len 100, unroutable.

Jan 20 16:00:29.599: IP: s=172.16.12.1 (local), d=172.16.4.34, len 100, unroutable.

Jan 20 16:00:31.599: IP: s=172.16.12.1 (local), d=172.16.4.34, len 100, unroutable.

Jan 20 16:00:33.599: IP: s=172.16.12.1 (local), d=172.16.4.34, len 100, unroutable.

Success rate is 0 percent (0/5)

由於Router1上沒有執行中的路由通訊協定，因此它不知道要將封包傳送到哪個位置，這時會導致「無法路由」訊息。

向Router1新增靜態路由：

Router1#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

Router1(config)#ip route 0.0.0.0 0.0.0.0 Serial0

結果:

Router1#debug ip packet detail

IP packet debugging is on (detailed)

Router1#ping 172.16.4.34

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.4.34, timeout is 2 seconds:

U.U.U

Success rate is 0 percent (0/5)

Jan 20 16:05:30.659: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

Jan 20 16:05:30.663:     ICMP type=8, code=0

Jan 20 16:05:30.691: IP: s=172.16.0.12 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:05:30.695:     ICMP type=3, code=1

Jan 20 16:05:30.699: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

Jan 20 16:05:30.703:     ICMP type=8, code=0

Jan 20 16:05:32.699: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

Jan 20 16:05:32.703:     ICMP type=8, code=0

Jan 20 16:05:32.731: IP: s=172.16.0.12 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:05:32.735:     ICMP type=3, code=1

Jan 20 16:05:32.739: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

Jan 20 16:05:32.743:     ICMP type=8, code=0

檢查Router2上發生什麼錯誤：

Router2#debug ip packet detail

IP packet debugging is on (detailed)

Router2#

Jan 20 16:10:41.907: IP: s=172.16.12.1 (Serial1), d=172.16.4.34, len 100, unroutable

Jan 20 16:10:41.911:     ICMP type=8, code=0

Jan 20 16:10:41.915: IP: s=172.16.0.12 (local), d=172.16.12.1 (Serial1), len 56, sending

Jan 20 16:10:41.919:     ICMP type=3, code=1

Jan 20 16:10:41.947: IP: s=172.16.12.1 (Serial1), d=172.16.4.34, len 100, unroutable

Jan 20 16:10:41.951:     ICMP type=8, code=0

Jan 20 16:10:43.943: IP: s=172.16.12.1 (Serial1), d=172.16.4.34, len 100, unroutable

Jan 20 16:10:43.947:     ICMP type=8, code=0

Jan 20 16:10:43.951: IP: s=172.16.0.12 (local), d=172.16.12.1 (Serial1), len 56, sending

Jan 20 16:10:43.955:     ICMP type=3, code=1

Jan 20 16:10:43.983: IP: s=172.16.12.1 (Serial1), d=172.16.4.34, len 100, unroutable

Jan 20 16:10:43.987:     ICMP type=8, code=0

Jan 20 16:10:45.979: IP: s=172.16.12.1 (Serial1), d=172.16.4.34, len 100, unroutable

Jan 20 16:10:45.983:     ICMP type=8, code=0

Jan 20 16:10:45.987: IP: s=172.16.0.12 (local), d=172.16.12.1 (Serial1), len 56, sending

Jan 20 16:10:45.991:     ICMP type=3, code=1

Router1正確將封包傳送到Router2，但Router2不知道如何存取位址172.16.4.34。Router2將「無法連線的ICMP」訊息傳送回Router1。

在Router2和Router3上啟用路由資訊通訊協定(RIP):

Router2#

router rip

network 172.16.0.7

network 10.0.7.23

Router3#

router rip

network 10.0.7.23

network 172.16.0.34

結果:

Router1#debug ip packet

IP packet debugging is on

Router1#ping 172.16.4.34

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.4.34, timeout is 2 seconds:

Jan 20 16:16:13.367: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending.

Jan 20 16:16:15.363: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending.

Jan 20 16:16:17.363: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending.

Jan 20 16:16:19.363: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending.

Jan 20 16:16:21.363: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending.

Success rate is 0 percent (0/5)

Router1將封包傳送到Router4，但Router4不會傳回回應。

Router4上可能發生問題：

Router4#debug ip packet

IP packet debugging is on

Router4#

Jan 20 16:18:45.903: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:18:45.911: IP: s=172.16.4.34 (local), d=172.16.12.1, len 100, unroutable

Jan 20 16:18:47.903: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:18:47.907: IP: s=172.16.4.34 (local), d=172.16.12.1, len 100, unroutable

Jan 20 16:18:49.903: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:18:49.907: IP: s=172.16.4.34 (local), d=172.16.12.1, len 100, unroutable

Jan 20 16:18:51.903: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:18:51.907: IP: s=172.16.4.34 (local), d=172.16.12.1, len 100, unroutable

Jan 20 16:18:53.903: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:18:53.907: IP: s=172.16.4.34 (local), d=172.16.12.1, len 100, unroutable

路由器4收到ICMP封包並嘗試回應172.16.12.1，但由於它沒有通往此網路的路由，所以失敗。

向Router4新增靜態路由：

Router4(config)#ip route 0.0.0.0 0.0.0.0 Serial0

現在兩端可以彼此連線：

Router1#ping 172.16.4.34

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.4.34, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/35/36 ms

介面停止運作

這種情況下，介面停止不再運作。下一個範例是嘗試從Router1對Router4執行ping:

Router1#ping 172.16.4.34

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.4.34, timeout is 2 seconds:

U.U.U

Success rate is 0 percent (0/5)

由於路由正確，請逐步排除故障。嘗試對Router2執行ping:

Router1#ping 172.16.0.12

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.0.12, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms

在上一個範例中，問題出在Router2和Router3之間。一個可能性是Router3上的序列介面已關閉：

Router3#show ip interface brief

Serial0   172.16.3.34    YES manual up                      up

Serial1   10.0.3.23    YES manual administratively down   down

修復這個問題的方法很簡單：

Router3#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

Router3(config)#interface serial1

Router3(config-if)#no shutdown

Router3(config-if)#

Jan 20 16:20:53.900: %LINK-3-UPDOWN: Interface Serial1, changed state to up

Jan 20 16:20:53.910: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1,

changed state to up

Access-list 指令

在此案例中，只有telnet流量會允許透過介面Serial0進入Router4。

Router4(config)# access-list 100 permit tcp any any eq telnet

Router4(config)#interface serial0

Router4(config-if)#ip access-group 100 in

Router1#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

Router1(config)#access-list 100 permit ip host 172.16.12.1 host 172.16.4.34

Router1(config)#access-list 100 permit ip host 172.16.4.34 host 172.16.12.1

Router1(config)#end

Router1#debug ip packet 100

IP packet debugging is on

Router1#debug ip icmp

ICMP packet debugging is on

嘗試對Router4執行ping:

Router1#ping 172.16.4.34

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.4.34, timeout is 2 seconds:

U.U.U

Success rate is 0 percent (0/5)

Jan 20 16:34:49.207: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

Jan 20 16:34:49.287: IP: s=172.16.4.34 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:34:49.291: ICMP: dst (172.16.12.1) administratively prohibited unreachable

rcv from 172.16.4.34

Jan 20 16:34:49.295: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

Jan 20 16:34:51.295: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

Jan 20 16:34:51.367: IP: s=172.16.4.34 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:34:51.371: ICMP: dst (172.16.12.1) administratively prohibited unreachable

rcv from 172.16.4.34

Jan 20 16:34:51.379: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 100,

sending

access-list 指令的尾端一律會出現隱含的deny all。這表示在Router4上進入Serial 0介面的ICMP封包將遭拒絕，而Router4會向原始封包的來源傳送ICMP「管理性禁止而無法連線」訊息，如debug訊息所示。解決方式為在access-list指令中加入以下這行內容：

Router4(config)#access-list 100 permit icmp any any

位址解析通訊協定 (ARP) 問題

在此案例中，這是乙太網路連線：

地址解析協定問題

Router4#ping 172.16.100.5

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.100.5, timeout is 2 seconds:

Jan 20 17:04:05.167: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

sending

Jan 20 17:04:05.171: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

encapsulation failed.

Jan 20 17:04:07.167: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

sending

Jan 20 17:04:07.171: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

encapsulation failed.

Jan 20 17:04:09.175: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

sending

Jan 20 17:04:09.183: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

encapsulation failed.

Jan 20 17:04:11.175: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

sending

Jan 20 17:04:11.179: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

encapsulation failed.

Jan 20 17:04:13.175: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

sending

Jan 20 17:04:13.179: IP: s=172.16.100.4 (local), d=172.16.100.5 (Ethernet0), len 100,

encapsulation failed.

Success rate is 0 percent (0/5)

Router4#

在本範例中，由於「encapsulation failed」訊息，ping無法運作。這表示路由器知道它必須將封包傳送到哪個介面，但不知道如何執行。在這種情況下，您需要瞭解位址解析通訊協定(ARP)的運作方式。

ARP是用於將第2層位址（MAC位址）對應到第3層位址（IP位址）的通訊協定。 可以使用show arp指令檢查此情況：

Router4#show arp

Protocol  Address          Age (min)  Hardware Addr   Type   Interface

Internet  172.16.100.4               -   0000.0c5d.7a0d  ARPA   Ethernet0

Internet  172.16.100.7              10   0060.5cf4.a955  ARPA   Ethernet0

傳回「封裝失敗」問題，但這次啟用debug arp命令：

Router4#debug arp

ARP packet debugging is on

Router4#ping 172.16.100.5

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.100.5, timeout is 2 seconds:

Jan 20 17:19:43.843: IP ARP: creating incomplete entry for IP address: 172.16.100.5

interface Ethernet0

Jan 20 17:19:43.847: IP ARP: sent req src 172.16.100.4 0000.0c5d.7a0d,

dst 172.16.100.5 0000.0000.0000 Ethernet0.

Jan 20 17:19:45.843: IP ARP: sent req src 172.16.100.4 0000.0c5d.7a0d,

dst 172.16.100.5 0000.0000.0000 Ethernet0.

Jan 20 17:19:47.843: IP ARP: sent req src 172.16.100.4 0000.0c5d.7a0d,

dst 172.16.100.5 0000.0000.0000 Ethernet0.

Jan 20 17:19:49.843: IP ARP: sent req src 172.16.100.4 0000.0c5d.7a0d,

dst 172.16.100.5 0000.0000.0000 Ethernet0.

Jan 20 17:19:51.843: IP ARP: sent req src 172.16.100.4 0000.0c5d.7a0d,

dst 172.16.100.5 0000.0000.0000 Ethernet0.

Success rate is 0 percent (0/5)

上一個輸出顯示，Router4會廣播封包並將其傳送到乙太網路廣播位址FFFF.FFFF.FFFF。這裡，0000.0000.0000表示Router4會尋找目的地172.16.100.5的MAC位址。由於在本範例中要求ARP時它不知道該MAC位址，因此它使用000.000.000作為從介面Ethernet 0發出的廣播訊框中的佔位符，並詢問哪個MAC位址對應於172.16.100.5。如果沒有回應，MAC與show arp輸出中的IP位址對應的交換器會標示為不完整：

Router4#show arp

Protocol  Address          Age (min)  Hardware Addr   Type   Interface

Internet  172.16.100.4               -   0000.0c5d.7a0d  ARPA   Ethernet0

Internet  172.16.100.5               0   Incomplete      ARPA

Internet  172.16.100.7               2   0060.5cf4.a955  ARPA   Ethernet0

在預定的時段過後，這個不完整的項目將會從 ARP 表中清除。只要MAC地址不在ARP表中，ping就會由於「封裝失敗」而失敗。

延遲

預設情況下，如果兩秒內未收到來自遠端的回應，ping 就會失敗：

Router1#ping 172.16.0.12

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.0.12, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)

在連結速度慢或長時間延遲的網路上，兩秒並不足夠。您可以使用延伸ping變更這個預設值：

Router1#ping

Protocol [ip]:

Target IP address:  172.16.0.12

Repeat count [5]:

Datagram size [100]:

Timeout in seconds [2]: 30

Extended commands [n]:

Sweep range of sizes [n]:

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.0.12, timeout is 30 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1458/2390/6066 ms

有關延伸ping指令的詳細資訊，請參閱瞭解延伸Ping和延伸Traceroute指令。

在上一個範例中，當逾時增加時，ping成功執行。

附註：平均來回時間超過兩秒。

正確來源位址

以下範例為常見情況：

正確來源位址

在Router1上增加一個LAN介面：

Router1(config)#interface ethernet0

Router1(config-if)#ip address 10.0.0.1 255.255.255.0

您可以從LAN上的站台對Router1執行ping。您可以從Router1對Router2執行ping。但是無法從LAN上的站台對Router2執行ping。

您可以從 Router1 對 Router2 執行 ping，因為預設情況下，會使用傳出介面的 IP 位址作為 ICMP 封包中的來源位址。Router2沒有與此這個LAN相關的資訊。如果必須回覆來自此網路的封包，它便不知道如何處理該封包。

Router1#debug ip packet

IP packet debugging is on

警告：在生產路由器上使用debug ip packet指令時，可能會造成CPU使用率高。這可能會導致效能嚴重下降或網路中斷。

Router1#ping 172.16.0.12

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.0.12, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/9 ms

Router1#

Jan 20 16:35:54.227: IP: s=172.16.12.1 (local), d=172.16.0.12 (Serial0), len 100, sending

Jan 20 16:35:54.259: IP: s=172.16.0.12 (Serial0), d=172.16.12.1 (Serial0), len 100, rcvd 3

上一個輸出範例可順利運作，因為所傳送封包的來源位址為172.16.12.1。若要模擬來自LAN的封包，需要使用延伸ping:

Router1#ping

Protocol [ip]:

Target IP address: 172.16.0.12

Repeat count [5]:

Datagram size [100]:

Timeout in seconds [2]:

Extended commands [n]: y

Source address or interface: 10.0.0.1

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 172.16.0.12, timeout is 2 seconds:

Jan 20 16:40:18.303: IP: s=10.0.0.1 (local), d=172.16.0.12 (Serial0), len 100,

sending.

Jan 20 16:40:20.303: IP: s=10.0.0.1 (local), d=172.16.0.12 (Serial0), len 100,

sending.

Jan 20 16:40:22.303: IP: s=10.0.0.1 (local), d=172.16.0.12 (Serial0), len 100,

sending.

Jan 20 16:40:24.303: IP: s=10.0.0.1 (local), d=172.16.0.12 (Serial0), len 100,

sending

Jan 20 16:40:26.303: IP: s=10.0.0.1 (local), d=172.16.0.12 (Serial0), len 100,

sending.

Success rate is 0 percent (0/5)

這次來源位址是10.0.0.1，但是無法運作。傳送資料包，但是未收到響應。要解決此問題，請在Router2中新增指向10.0.0.0的路由。基本規則是，ping裝置還必須知道如何向ping的源裝置傳送應答。

輸入佇列捨棄率高

封包進入路由器時，路由器會嘗試將其轉送到中斷層級。如果在適當的快取表中找不到相符項目，則封包將排入傳入介面的輸入佇列中以進行處理。系統總是會處理某些封包，但若有適當的組態和在穩定的網路中，處理封包的速率決不會導致輸入佇列壅塞。如果輸入佇列已滿，封包會遭捨棄。

雖然介面已啟動，但因為輸入佇列捨棄率高而無法對裝置執行ping。您可以使用show interface指令檢查輸入捨棄專案。

Router1#show interface Serial0/0/0

Serial0/0/0 is up, line protocol is up

MTU 1500 bytes, BW 1984 Kbit, DLY 20000 usec,

reliability 255/255, txload 69/255, rxload 43/255

Encapsulation HDLC, loopback not set

Keepalive set (10 sec)

Last input 00:00:02, output 00:00:00, output hang never

Last clearing of "show interface" counters 01:28:49

Input queue: 76/75/5553/0 (size/max/drops/flushes);

Total output drops: 1760

Queueing strategy: Class-based queueing

Output queue: 29/1000/64/1760 (size/max total/threshold/drops)

Conversations  7/129/256 (active/max active/max total)

Reserved Conversations 4/4 (allocated/max allocated)

Available Bandwidth 1289 kilobits/sec

!--- Output supressed

從輸出中可看出，輸入佇列捨棄率相當高。請參閱輸入佇列捨棄和輸出佇列捨棄疑難排解，以排解輸入/輸出佇列捨棄的疑難問題。

Traceroute 指令

traceroute 指令用於探索封包到達目的地時實際行經的路由。裝置（例如路由器或 PC）將使用者資料包通訊協定 (UDP) 資料包序列傳送到遠端主機上的無效連接埠位址。

傳送了三個資料包，每個資料包的存留時間 (TTL) 欄位值都設為 1。TTL 值 1 會導致資料包在抵達路徑中的第一個路由器時立即「逾時」；然後此路由器會使用ICMP超出時間訊息(TEM)加以回應，指出資料包已過期。

現在傳送了另外三則 UDP 訊息，每則訊息的 TTL 值都設為 2，這會導致第二個路由器傳回 ICMP TEM。此程序會一直持續，直到封包確實到達另一個目的地為止。由於這些資料包嘗試存取目的地主機上的無效連線埠，因此傳回了ICMP連線埠無法連線訊息，指出無法連線的連線埠；此事件向 Traceroute 程式發出訊號，表示已順利完成。

此程序的目的是記錄每個 ICMP 超出時間訊息的來源，以提供封包到達目的地所行經的路徑追蹤軌跡。

Router1#traceroute 172.16.4.34

Type escape sequence to abort.

Tracing the route to 172.16.4.34

1 172.16.0.12 4 msec 4 msec 4 msec

2 10.0.3.23 20 msec 16 msec 16 msec

3 172.16.4.34 16 msec *  16 msec

Jan 20 16:42:48.611: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.615:     UDP src=39911, dst=33434

Jan 20 16:42:48.635: IP: s=172.16.0.12 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:48.639:     ICMP type=11, code=0

!--- ICMP Time Exceeded Message from Router2.

Jan 20 16:42:48.643: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.647:     UDP src=34237, dst=33435

Jan 20 16:42:48.667: IP: s=172.16.0.12 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:48.671:     ICMP type=11, code=0

Jan 20 16:42:48.675: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.679:     UDP src=33420, dst=33436

Jan 20 16:42:48.699: IP: s=172.16.0.12 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:48.703:     ICMP type=11, code=0

這是使用TTL = 1傳送的第一個封包序列。第一個路由器(本例中為Router2(172.16.0.12))捨棄封包，並將傳回type=11 ICMP訊息給來源(172.16.12.1)。此訊息對應超出時間訊息。

Jan 20 16:42:48.707: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.711:     UDP src=35734, dst=33437

Jan 20 16:42:48.743: IP: s=10.0.3.23 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:48.747:     ICMP type=11, code=0

!--- ICMP Time Exceeded Message from Router3.

Jan 20 16:42:48.751: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.755:     UDP src=36753, dst=33438

Jan 20 16:42:48.787: IP: s=10.0.3.23 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:48.791:     ICMP type=11, code=0

Jan 20 16:42:48.795: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.799:     UDP src=36561, dst=33439

Jan 20 16:42:48.827: IP: s=10.0.3.23 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:48.831:     ICMP type=11, code=0

使用TTL = 2的Router3(10.0.3.23)會發生相同的程式：

Jan 20 16:42:48.839: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.843:     UDP src=34327, dst=33440

Jan 20 16:42:48.887: IP: s=172.16.4.34 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:48.891:     ICMP type=3, code=3

!--- Port Unreachable message from Router4.

Jan 20 16:42:48.895: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:48.899:     UDP src=37534, dst=33441

Jan 20 16:42:51.895: IP: s=172.16.12.1 (local), d=172.16.4.34 (Serial0), len 28,

sending

Jan 20 16:42:51.899:     UDP src=37181, dst=33442

Jan 20 16:42:51.943: IP: s=172.16.4.34 (Serial0), d=172.16.12.1 (Serial0), len 56,

rcvd 3

Jan 20 16:42:51.947:     ICMP type=3, code=3

在TTL = 3的情況下，最終會到達Router4。這一次，由於連接埠無效，Router4 會傳回訊息給 Router1，包含一則 type=3 的 ICMP 訊息、一則目的地無法連線訊息，以及表示連接埠無法連線的 code=3。

下表列出traceroute指令輸出中可能出現的字元。

IP Traceroute 文字字元

字元

說明

nn msec

每個節點的指定探查數來回時間（以毫秒為單位）

*

探查已逾時

A

管理性禁止（範例存取清單）

Q

來源抑制（目的地太繁忙）

I

使用者中斷測試

U

連接埠無法連線

H

主機無法連線

否

網路無法連線

P

通訊協定無法連線

T

逾時

?

未知封包類型

效能

您可以使用ping和traceroute指令取得來回時間(RTT)。這是傳送回應封包並獲得回覆所需的時間。這樣可以大致瞭解連結上的延遲。但是這些數字的精確度不足以用於評估效能。

封包目的地是路由器本身時，此封包必須採用程序交換方式。處理器必須處理來自此封包的資訊並傳回回應。這不是路由器的主要目標。根據定義，路由器是為路由封包而建。回應ping的功能以盡力服務形式提供。

為了說明此情況，以下提供從Router1對Router2執行ping的範例：

Router1#ping 172.16.0.12

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.0.12, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms

RTT 大約為四毫秒。在 Router2 上啟用一些程序密集型功能後，嘗試從 Router1 對 Router2 執行 ping。

Router1#ping 172.16.0.12

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.0.12, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 24/25/28 ms

這裡的 RTT 明顯增加了。Router2相當繁忙，而優先順序是不回應ping。測試路由器效能的更好方法是運用通過路由器的流量。

通過路由器的流量

接著流量進行快速交換，並由優先順序最高的路由器處理。基本網路說明了這一點：

基本網路3路由器

從Router1對Router3執行ping:

Router1#ping 10.0.3.23

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.0.3.23, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/32/32 ms

流量通過Router2，現在正在進行快速交換。在Router2上啟用程式密集型功能：

Router1#ping 10.0.3.23

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.0.3.23, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/32/36 ms

幾乎沒有任何差異。這是因為在 Router2 上，現在是在中斷層級處理封包。

使用 Debug 指令

使用debug 指令之前，請先參閱有關Debug指令的重要資訊。

本文中使用的debug命令顯示了使用ping或traceroute命令時發生的情況。這些命令可幫助您解決問題。然而，在生產環境中必須謹慎使用debug指令。如果您的 CPU 效能不高，或者有大量的程序交換封包，很容易導致您的裝置速度變慢。以下幾種方法可以將 debug 指令對路由器的影響降至最低。其中一種方法是使用存取清單，縮小要監控的特定流量範圍。

以下是範例：

Router4#debug ip packet ?

<1-199>      Access list

<1300-2699>  Access list (expanded range)

detail       Print more debugging detail

Router4#configure terminal

Router4(config)#access-list 150 permit ip host 172.16.12.1 host 172.16.4.34

Router4(config)#^Z

Router4#debug ip packet 150

IP packet debugging is on for access list 150

Router4#show debug

Generic IP:

IP packet debugging is on for access list 150

Router4#show access-list

Extended IP access list 150

permit ip host 172.16.12.1 host 172.16.4.34 (5 matches)

透過此組態，Router4隻會輸出與存取清單150相符的偵錯訊息。從Router1執行ping會導致出現以下訊息：

Router4#

Jan 20 16:51:16.911: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:51:17.003: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:51:17.095: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:51:17.187: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:51:17.279: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

問題的答案並非來自Router4，因為這些封包與存取清單不相符。若要看到其回應，請新增：

Router4(config)#access-list 150 permit ip host 172.16.12.1 host 172.16.4.34

Router4(config)#access-list 150 permit ip host 172.16.4.34 host 172.16.12.1

結果:

Jan 20 16:53:16.527: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:53:16.531: IP: s=172.16.4.34 (local), d=172.16.12.1 (Serial0), len 100,

sending

Jan 20 16:53:16.627: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:53:16.635: IP: s=172.16.4.34 (local), d=172.16.12.1 (Serial0), len 100,

sending

Jan 20 16:53:16.727: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:53:16.731: IP: s=172.16.4.34 (local), d=172.16.12.1 (Serial0), len 100,

sending

Jan 20 16:53:16.823: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:53:16.827: IP: s=172.16.4.34 (local), d=172.16.12.1 (Serial0), len 100,

sending

Jan 20 16:53:16.919: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

Jan 20 16:53:16.923: IP: s=172.16.4.34 (local), d=172.16.12.1 (Serial0), len 100,

sending

降低debug 指令影響的另一種方法是，在關閉debug指令後，使用show log 指令緩衝偵錯訊息並顯示：

Router4#configure terminal

Router4(config)#no logging console

Router4(config)#logging buffered 5000

Router4(config)#^Z

Router4#debug ip packet

IP packet debugging is on

Router4#ping 172.16.12.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.12.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 36/36/37 ms

Router4#undebug all

All possible debugging has been turned off

Router4#show log

Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns)

Console logging: disabled

Monitor logging: level debugging, 0 messages logged

Buffer logging: level debugging, 61 messages logged

Trap logging: level informational, 59 message lines logged

Log Buffer (5000 bytes):

Jan 20 16:55:46.587: IP: s=172.16.4.34 (local), d=172.16.12.1 (Serial0), len 100,

sending

Jan 20 16:55:46.679: IP: s=172.16.12.1 (Serial0), d=172.16.4.34 (Serial0), len 100,

rcvd 3

ping和traceroute指令是非常實用的公用程式，可用於排除網路存取問題。這些指令也非常容易使用。這兩個指令是網路工程師廣泛使用的指令。

相關資訊

- 瞭解延伸ping和延伸Traceroute指令

- 技術支援 - Cisco Systems