簡介
 
  本文說明如何使用延伸     和延伸   指令。pingtraceroute 
 
   
  必要條件
 
  需求
 
  本文需要具備    和 指令的預備知識。pingtraceroute 
 
   
  採用元件
 
  本文中的資訊係根據以下軟體和硬體版本:
 
   
   
  本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
 
   
  ing 命令
 
  ping(Packet InterNet Groper)指令是排解裝置可及性疑難問題的一種極常見方法。此指令使用兩個網際網路控制訊息通訊協定 (ICMP) 查詢訊息、ICMP 回應要求和 ICMP 回應答覆,以判斷遠端主機是否作用中。ping命令還計算接收應答所花費的時間。
 
  ping命令首先向一個地址傳送一個回聲請求資料包,然後等待應答。只有在ECHO請求到達目的地,且目的地能夠在預定義的時間間隔內將ECHO應答返回到ping源時,ping才會成功。
 
   
  Extended指ing 令
 
  從路由器傳送正常的    指令時,ping 的來源位址是封包用來退出路由器的介面 IP 位址。ping如果使用延伸    指令,則可以將來源 IP 位址變更為路由器上的任何 IP 位址。ping延伸    是用來執行主機連線能力和網路連線的進階檢查。ping延伸    指令僅適用於特許的 EXEC 指令行。ping一般    適用於使用者 EXEC 模式和特許的 EXEC 模式。ping若要使用此功能,請在指令行中輸入    並按下 Return 鍵。ping系統會提示您輸入本文 Ping 指令欄位說明部分提供的欄位。
 
   
  命令ing 欄位說明
 
  下表列出    指令欄位說明。ping您可以使用延伸    指令修改這些欄位。ping
 
   
    
     
     | 欄位 | 說明 | 
 
     
     | Protocol [ip]: | 提示輸入支援的通訊協定。輸入 appletalk、clns、ip、novell、apollo、vines、decnet 或 xns。預設為 ip。 | 
 
     
     | Target IP address: | 提示輸入您要 ping 之目的地節點的 IP 位址或主機名稱。如果您已指定 IP 以外的受支援通訊協定,請在此處輸入該通訊協定的適當位址。預設為 none。 | 
 
     
     | Repeat count [5]: | 傳送到目的地位址的 ping 封包數量。預設值為 5。 | 
 
     
     | Datagram size [100]: | Ping 封包的大小(位元組)。預設:100 位元組。 | 
 
     
     | Timeout in seconds [2]: | 逾時間隔。預設:2(秒)。只有在此時間間隔之前收到回應答覆封包時,才會聲明 ping 成功。 | 
 
     
     | Extended commands [n]: | 指定是否顯示一系列附加指令。預設為 no。 | 
 
     
     | 輸入 Ping [n]: | 輸入 Ping 可模擬在指定目標目的地輸入介面收到的封包。預設為 no。 (此選項的可用性與使用的軟體版本不同。) | 
 
     
     | Source address or interface: | 路由器的介面或 IP 位址,用來作為探查的來源位址。路由器通常會選擇要使用之輸出介面的 IP 位址。您也可以提及該介面,但是請使用下列的正確語法: Source address or interface: ethernet 0
 這是擴展ping命令的部分輸出。介面不能寫入為 e0。 | 
 
     
     | DSCP 值 [0]: | 差異化服務代碼點 (DSCP)。每個探查中會放置引入的 DSCP 值。預設值為0。(此選項的可用性會與使用的軟體版本不同。) | 
 
     
     | Type of service [0]: | 指定服務類型 (ToS)。要求的 ToS 會放置在每個探查中,但是無法保證所有路由器都會處理該 ToS。這是網際網路服務品質選擇。預設值為 0。 | 
 
     
     | Set DF bit in IP header?[no]: | 指定是否要在 ping 封包上設定   位元。 Don't Fragment (DF)如果指定 yes,DF 選項就不會允許此封包在必須透過具有較小最大傳輸單位 (MTU) 的區段時進行分段,而且您將從想要將封包分段的裝置收到一則錯誤訊息。這對於判斷到目的地之路徑中的最小 MTU 非常實用。預設為 no。 | 
 
     
     | Validate reply data?[no]: | 指定是否要驗證回覆資料。預設為 no。 | 
 
     
     | Data pattern [0xABCD] | 指定資料模式。使用不同的資料模式可疑難排解序列行上 的錯誤和  問題。framing clocking預設為 [0xABCD]。 | 
 
     
     | Loose, Strict, Record, Timestamp, Verbose[none]: | IP 標頭選項。此提示提供多個選項讓您選擇。 這些選項為:  
       Verbose(詳細資訊)會自動與任何其他選項一起選擇。Record(記錄)是一個非常實用的選項,因為它會顯示封包經過之躍點(最多九個)的位址。Loose(鬆散)可讓您透過指定您希望封包經過之躍點的位址來影響路徑。Strict(嚴格)是用來指定您希望封包經過的躍點,但是不允許造訪其他躍點。Timestamp(時間戳記)是用來測量到特定主機的來回時間。 此指令的 Record 選項和 traceroute 指令之間的區別在於,Record 選項不僅會告知您回應請求 (ping) 到達目的地所經過的躍點,也會告知您在傳回路徑上造訪過的躍點。使用 traceroute 指令時,您不會取得有關回應答覆所採用之路徑的資訊。Traceroute 指令會發出需要您輸入必要欄位的提示。 Traceroute 指令會將要求的選項放在每個探查中。但是,無法保證所有路由器(或終端節點)都會處理這些選項。預設為 none。 | 
 
     
     | Sweep range of sizes [n]: | 可讓您變更傳送之回覆封包的大小。這是用來判斷在前往目的地位址之路徑沿途節點上設定的 MTU 最小大小,因此會減少因封包分段造成的效能問題。預設為 no。 | 
 
     
     | !!!!! | 每個驚嘆號 (!) 都表示收到一則回覆。句號(.)表示網路伺服器在等待回覆時逾時。如需其他字元的說明,請參閱 ping 字元。 | 
 
     
     | Success rate is 100 percent | 成功回應路由器的封包百分比。任何低於 80% 的情形通常視為有問題。 | 
 
     
     | round-trip min/avg/max = 1/2/4 ms | 通訊協定回應封包的來回移動時間間隔,包括最小值/平均值/最大值(以毫秒為單位)。 | 
 
    
  
 
  在此圖中,主機 1 和主機 2 無法相互 ping。您可以在路由器上對此問題進行故障排除,以確定是否存在路由問題,或者是否兩台主機中的一台未正確設定其預設網關。
 
   主機 1 和主機 2 無法使用 Ping
主機 1 和主機 2 無法使用 Ping
 
  若要使主機 1 到主機 2 的 成功,每部主機都需要將其預設閘道指向各自 LAN 區段上的路由器,或是主機必須與使用路由通訊協定的路由器交換網路資訊。ping如果任一主機未正確設定其預設閘道,或者其路由表中沒有正確的路由,它就無法將封包傳送到其位址解析通訊協定 (ARP) 快取中不存在的目的地。主機之間也可能無法互相 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,您就需要檢查兩個預設閘道。路由器 A 乙太網路和路由器 B 乙太網路之間的連線功能是使用延伸 ping 指令來檢查。
 
  在從路由器 A 對路由器 B 乙太網路介面進行正常 ping 的情況下,ping 封包的來源位址會是傳出介面的位址,也就是序列 0 介面 (172.31.20.1) 的位址。路由器 B 回覆 ping 封包時,會回覆到來源位址(即172.31.20.1)。這樣一來,就只會測試路由器 A 的序列 0 介面 (172.31.20.1) 和路由器 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 
 
     指令背後的目的是記錄每個 ICMP 超出時間訊息的來源,以提供封包到達目的地所行經的路徑追蹤軌跡。traceroute 
 
  執行   指令的裝置會將一系列使用者資料包通訊協定 (UDP) 資料包傳送到遠端主機上的無效連接埠位址 (預設值為 33434),而且每個資料包的存留時間 (TTL) 值都會遞增。traceroute 
 
  首先傳送三個資料包,且每個資料包的 TTL 欄位值都設定為 1。TTL 值 1 會導致資料包在抵達路徑中第一個路由器時立即逾時。接著,此路由器會使用 ICMP 超出時間訊息來回應,表示該資料包已過期。
 
  接下來會再傳送三個 UDP 訊息,且每個 TTL 值都設定為 2。這樣會導致前往目的地路徑中的第二個路由器傳回 ICMP 超出時間訊息。
 
  此程序將繼續進行,直到封包到達目的地為止,以及直到發出 的系統接收到目的地路徑中每個路由器的 ICMP 超出時間訊息為止。traceroute 由於這些資料包會嘗試存取目的地主機上的無效連接埠(預設值為 33434),因此主機會以 ICMP 連接埠無法連線訊息回覆,以指出無法連線的連接埠;此事件會向 traceroute 程式發出訊號以順利完成。
 
  附註:請確保在任何 VLAN 下都沒有使用 no ip unreachables 來停用 ip unreachable 指令。此指令會捨棄封包,而且不會傳送任何 ICMP 錯誤訊息。在這種情況下,traceroute 就會無效。
 
   
  延伸 traceroute 指令
 
  延伸 指令是 指令的變體。traceroute traceroute 擴展trackers 命令可用於檢視資料包透過什麼路徑到達目的地。該指令同時也可以用來檢查路由。這有助於排除路由環路故障,或確定資料包丟失的位置(如果路由丟失,或者資料包被訪問控制清單或防火牆阻止)。您可以使用延伸 ping 指令來判斷連線問題的類型,然後使用延伸 traceroute 指令來縮小發生問題的範圍。
 
  超出時間錯誤訊息表示中繼通訊伺服器已看到並捨棄該封包。目的地無法連線錯誤訊息表示目的地節點已接收探查並將其捨棄,因為它無法傳送該封包。如果計時器在回覆傳入之前關閉,trace 就會顯示一個星號 (*)。
 
  發生以下任一情況時,指令就會終止:
 
   
   - 目的地會回應。
- 已超過最大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模式下均適用。
 
   
  相關資訊