簡介
本檔案介紹如何使用擴充模組 ping
和擴展的 traceroute
指令。
必要條件
需求
本文檔需要事先瞭解 ping
和 traceroute
指令。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
如需檔案慣例的詳細資訊,請參閱思科技術提示慣例。
其 ping
指令
其 ping
(Packet InterNet Groper)指令是排解裝置可及性疑難問題的一種極常見方法。此指令使用兩個網際網路控制訊息通訊協定(ICMP)查詢訊息、ICMP回應要求和ICMP回應回覆來判斷遠端主機是否處於作用中狀態。其 ping
command還測量接收回應回覆所需的時間。
其 ping
指令首先將回應要求封包傳送到位址,然後等待回覆。其 ping
只有當ECHO REQUEST到達目的地,且目的地能夠將ECHO REPLY ping
在預定義的時間間隔內。
擴展的 ping
指令
當一個正常的 ping
命令從路由器傳送,ping的源地址是資料包用於退出路由器的介面的IP地址。如果擴展 ping
命令時,源IP地址可更改為路由器上的任何IP地址。擴展的 ping
用於執行更高級的主機可達性和網路連線檢查。擴展的 ping
命令僅在特權EXEC命令列中有效。正常 ping
可在使用者EXEC模式和特權EXEC模式下工作。要使用此功能,請輸入 ping
,然後按Return。系統會提示您輸入本檔案ping命令欄位說明一節中提供的欄位。
其 ping
命令欄位說明
下表列出了 ping
命令欄位說明。這些欄位可使用擴展進行修改 ping
指令。
欄位 |
說明 |
協定[ip]: |
提示輸入支援的協定。輸入appletalk、clns、ip、novell、apollo、vines、decnet或xns。預設為ip。 |
目標IP地址: |
提示輸入您計畫ping的目標節點的IP地址或主機名。如果指定了除IP之外的受支援的協定,請在此處輸入該協定的相應地址。預設值為none。 |
重複計數[5]: |
傳送到目標地址的ping資料包數。預設值為5。 |
資料包大小[100]: |
ping資料包的大小(以位元組為單位)。預設值:100位元組。 |
超時(秒[2]): |
超時間隔。預設值: 2(秒)。只有在此時間間隔之前收到回應應答資料包時,ping才會宣告成功。 |
擴展命令[n]: |
指定是否顯示一系列附加命令。預設值為no。 |
輸入ping [n]: |
輸入ping模擬在指定輸入介面上接收的封包到達目標目的地。預設值為no。 (此選項的可用性與使用的軟體版本不同) |
源地址或介面: |
用作探測的源地址的路由器的介面或IP地址。路由器通常會選取要使用的出站介面的IP地址。也可以提到介面,但語法正確,如下所示: Source address or interface: ethernet 0 註:這是擴展的 ping 指令。介面不能寫為e0。 |
DSCP值[0]: |
指定區別服務代碼點(DSCP)。引入的DSCP值將放置在每個探測器中。預設值為0。(此選項的可用性與使用的軟體版本不同) |
服務型別[0]: |
指定服務型別(ToS)。請求的ToS會放置在每個探測中,但不能保證所有路由器都處理ToS。它是Internet服務品質選擇。預設值為0。 |
是否設定IP報頭中的DF位?[否]: |
指定 Don't Fragment (DF) 將在ping資料包上設定位。如果指定為yes,則當此資料包必須經過具有較小最大傳輸單位(MTU)的網段時,DF選項不允許對此資料包進行分段,並且您收到來自要對此資料包進行分段的裝置的錯誤消息。這對於確定到達目的地的路徑中的最小MTU很有用。預設值為no。 |
是否驗證回複資料?[否]: |
指定是否驗證回複資料。預設值為no。 |
資料模式[0xABCD] |
指定資料模式。使用不同的資料模式進行故障排除 framing 錯誤和 clocking 串列線路問題。預設值為[0xABCD]。 |
Loose、Strict、Record、Timestamp、Verbose[無]: |
IP報頭選項。此提示提供多個要選擇的選項。它們是:
- Verbose與任何其他選項一起被自動選中。
- 記錄是一個非常有用的選項,因為它顯示資料包通過的躍點(最多9個)的地址。
- Loose允許您在指定希望資料包通過的躍點的地址時影響路徑。
- 嚴格用於指定您希望資料包通過的躍點,但不允許訪問其他躍點。
- 時間戳用於測量到特定主機的往返時間。
此命令的Record選項和traceroute命令的區別在於Record選項不僅通知您回應請求(ping)到達目的地所經過的躍點,而且還通知您在返迴路徑上訪問的躍點。使用traceroute指令時,您不會取得回應回覆所經過的路徑的相關資訊。traceroute命令會針對所需欄位發出提示。 traceroute命令將請求的選項放在每個探測中。但是,無法保證所有路由器(或終端節點)都處理這些選項。預設值為none。 |
大小掃描範圍[n]: |
允許您改變傳送的回應資料包的大小。這用於確定在通往目的地址的路徑沿途的節點上配置的MTU的最小大小。因此減少了由封包分段造成的效能問題。預設值為no。 |
!!!!! |
各個驚歎號(!)表示收到回覆。句點(.)表示網路伺服器等待回覆時逾時。請參閱ping字元,瞭解其他字元的說明。 |
成功率為100% |
成功回傳到路由器的資料包的百分比。低於80的百分比通常被認為有問題。 |
往返最小/平均/最大= 1/2/4毫秒 |
協定回應資料包的最小/平均/最大往返行程時間間隔(以毫秒為單位)。 |
在此圖中,主機1和主機2無法彼此ping通。您可以在路由器上解決此問題,以確定是否存在路由問題,或兩台主機之一是否未正確設定其預設網關。
主機1和主機2無法Ping
對於 ping
從主機1到主機2,每台主機都需要將其預設網關指向其各自的LAN網段上的路由器,或者主機需要與使用路由協定的路由器交換網路資訊。如果其中一台主機的預設網關設定不正確,或者其路由表中沒有正確的路由,則它無法將資料包傳送到其地址解析協定(ARP)快取中沒有的目的地。也有可能主機無法彼此ping通,因為其中一個路由器沒有通往該主機的其ping資料包來源的子網的路由。
範例
以下是源自路由器A乙太網路0介面,且目的地為路由器B乙太網路介面的延伸型ping指令範例。如果此ping成功,則表示不存在路由問題。路由器A知道如何到達路由器B的乙太網,而路由器B知道如何到達路由器A的乙太網。此外,兩台主機均已正確設定其預設閘道。
如果擴展 ping
路由器A發出的命令失敗,表示存在路由問題。三台路由器中的任意一台可能存在路由問題。路由器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的serial 0介面(172.31.20.1)和路由器B的乙太網介面(192.168.40.1)之間的連通性。
若要測試路由器A乙太網0(172.16.23.2)和路由器B乙太網0(192.168.40.1)之間的連通性,請使用擴展 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
命令可用於發現資料包通往遠端目的地的路徑以及路由中斷的位置。
SWIFT的 traceroute
命令是記錄每個ICMP超出時間訊息的來源,以提供封包到達目的地所行經的路徑追蹤軌跡。
執行 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
指令。可以使用擴展traceroute命令檢視資料包到達目的地所經過的路徑。該命令也可用於同時檢查路由。這有助於您排除路由環路故障,或確定資料包丟失的位置(如果路由已丟失,或資料包被訪問控制清單(ACL)或防火牆阻止)。您可以使用延伸ping指令來判斷連線問題的型別,然後使用延伸traceroute指令來縮小問題發生的範圍。
超出時間錯誤消息表示中間通訊伺服器已看到並丟棄該資料包。目的地無法連線錯誤訊息表示目的地節點已收到探查並將其捨棄,因為它無法傳送封包。如果計時器在響應傳入前關閉,trace將列印星號(*)。發生以下任一情況時,命令將終止:
- 目的地應答
- 已超過最大TTL
- 使用者使用轉義序列中斷跟蹤
註:同時按Ctrl、Shift和6可以呼叫此轉義序列。
traceroute命令欄位說明
下表列出traceroute命令欄位說明:
欄位 |
說明 |
協定[ip]: |
提示輸入支援的協定。輸入appletalk、clns、ip、novell、apollo、vines、decnet或xns。預設為ip。 |
目標IP地址 |
必須輸入主機名或IP地址。沒有預設值。 |
來源位址: |
用作探測的源地址的路由器的介面或IP地址。路由器通常會選取要使用的出站介面的IP地址。 |
數字顯示[n]: |
預設設定是同時顯示符號和數字;但是,可以隱藏符號顯示。 |
超時(秒[3]): |
等待探測資料包響應的秒數。預設值為3秒。 |
探測計數[3]: |
在每個TTL級別傳送的探測數。預設計數為3。 |
最短生存時間[1]: |
第一個探測器的TTL值。預設值為1,但可以將其設定為更高的值,以禁止顯示已知躍點。 |
最長生存時間[30]: |
可以使用的最大TTL值。預設值為30。其 traceroute 當達到目的地或達到此值時,命令將終止。 |
埠號[33434]: |
UDP探測消息使用的目標埠。預設值為33434。 |
Loose、Strict、Record、Timestamp、Verbose[無]: |
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
命令在使用者執行模式和特權執行模式下都工作。
相關資訊