1 引言 作為網絡工程師,在網絡環境出現故障時,及時定位故障并解決故障是十分重要的。本文以CISCO路由式網絡為基礎,介紹使用診斷工具對Cisco路由器進行故障診斷的方法。限于篇幅,我們所介紹的內容和示例主要是基于ip報文的,基于IPX和Appletalk等協議的診斷技術與此類似。 2 路由器的功能特性和體系結構 在學習Cisco路由器上可使用的各種故障排除和診斷工具之前,了解路由器的基本體系結構是十分重要的。網絡工程師應該理解診斷命令執行時所起的作用以及對于路由器性能所產生的影響。 交換與路由是我們在網絡互聯中經常碰到的術語。此處所說的交換與局域網中的幀級交換是完全不同的概念。交換過程是指路由器如何在兩個不同的接口間傳送報文。 比如,路由器在以太網接口0接收到一個報文。路由器首先從報文中獲取MAC頭信息,然后檢查網絡層報文頭。路由器檢查路由表是否有與報文的目的地址匹配的表項。假設路由表中包含匹配的項,并且下一跳地址是另外一個路由器,該路由器可以通過以太網接口1到達。然后路由器需要檢查下一跳的第二層地址。假如它沒有該地址,則需要在以太網接口1發送ARP廣播報文。假如沒有接收到ARP響應,路由器則將該報文丟棄。假如有響應信息,路由器則建立到下一跳路由器的以太網幀。在這個例子中,路由器從接收到以太網幀到建立并發送以太網幀的整個過程稱為交換過程。需要注重的是,ARP解析過程通常不認為是交換過程的一部分。上面的過程中,執行路由表查詢以尋找下一跳的地址表明采用了交換過程。這是一種最簡單的報文交換方法,因而其開銷和延遲都比較大。所有的路由協議最終都依靠于路由表的建立,路由器通過接收運行相同協議的相鄰路由器發送的路由更新報文來更新相應的路由表,我們稱之為路由過程(routing PRocess),它主要由路由處理器完成。 目前在國內應用比較廣泛的Cisco路由器包括2500系列、4000系列、7000系列和7500系列,這些路由器進行路由的過程基本上是相似的,但是交換的過程卻根據其系統結構的不同而不同。 7000系列支持過程交換、快速交換、自治交換和硅交換。Cisco 7500系列路由器比7000系列在體系結構方面有很多改進。路由處理器和交換處理器的功能被集成到路由器交換處理器(RSP)中。這一新的體系結構減少了快速交換時系統總線的負載。集成后的功能對路由處理器和交換處理器都作了性能、穩定性、可擴充性和安全等方面的優化。7500系列路由器既不支持自治交換也支持硅交換,它支持更加靈活的優化交換。 Cisco 4000/2500系列路由器的硬件結構比7000/7500系列路由器的硬件結構簡單。這些設備只在交換過程中才共享存儲器。所有的報文緩存和Cache都位于共享存儲器中,因此只支持快速交換或過程交換。 需要知道過程交換需要通過查詢路由表來做出路由選擇,而且其他交換技術都是通過緩存來提高交換速度的,因為其緩存的位置不同而分別稱為不同的技術。 3 故障診斷與排除命令 Cisco ISO操作系統軟件提供了一組功能豐富的命令,可以用來進行故障查找與排除、問題診斷以及性能檢測。命令大致可以分為兩類:show命令和debug命令。同時,還包含一組用于連接這兩類命令的clear命令。下面我們分別講解各命令 3.1 show命令 在這一節中,我們將講述最常用的show命令,闡述這些命令的輸出以及這些命令適用于解決的故障類型。為了敘述清楚,這些命令被分為全局系統命令、與接口相關的命令和與協議相關的命令。我們僅討論最常使用的命令。 全局系統命令 本節將列出與路由器軟件和硬件相關的輸出命令,其中包括存儲區和電源。show version命令是最基本的命令之一,它顯示路由器本身以及其所使用的軟、硬件的基本信息。show hardware命令的功能與show version命令類似。 命令的輸出信息包括:IOS的版本、路由器持續運行的時間約23周、最近一次重啟動的原因、路由器主存的大小、共享存儲器的大小、閃存的大小、IOS映像的文件名,以及路由器從何處啟動等信息。show version命令顯示了路由器的許多非常有用的信息。在解決問題時,通常應該從這個命令開始收集數據。 假如路由器的多個接口同時丟失報文,則可能由于路由器內存不足或者CPU過載。用戶可以使用show memory命令檢查內存利用率(如下所示)。CPU利用率可以使用show process命令檢查。 YH-Router#show memory Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 60DB19C0 19195456 6162924 13032532 11615164 11250780 Fast 60DB19C0 131072 128344 2728 2728 2684 show memory的前兩行顯示了存儲器的一般信息,它表明系統有足夠可用的內存。同時它還顯示內存中沒有碎片,因為在13.03兆字節可用內存中最大的可用塊接近11.25兆字節。內存碎片表明內存被劃分為了許多不連續的塊。它將導致內存的利用率降低,嚴重時可能產生內存錯誤從而也嚴重影響路由器的性能。 現在看一看路由器中有許多內存碎片的情形(如下所示)。此時我們有足夠多的可用內存(8.4兆字節),但是其中最大的塊僅為0.5兆字節。連續內存中沒有足夠大的可用塊,這有可能導致嚴重的內存分配問題。這些問題有時表現為一個或多個接口間歇性的丟失報文。此時路由器產生內存碎片錯誤消息。 HX-Router#sh mem Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 60DB19C0 19195456 10713712 8481744 192680 586748 Fast 60DB19C0 131072 90936 40136 40136 40092 使用命令show memory free,用戶可以看到可用內存被劃分為許多很小的碎片。需要注重的是,路由器中存在一定數量的內存碎片是正常的。雖然并沒有一個很嚴格的界限來劃分內存碎片的可接受程度,但是可用塊的大小至少應該不小于可用內存的一半。用戶可以通過重新啟動路由器來解決這個問題。在重新啟動時,系統重新分配內存和緩存空間。此時,用戶應該監視內存分配的過程。假如再次發生類似的情況,則應該咨詢Cisco TAC。 用戶可以使用show process cpu命令檢查路由器的CPU是否過載。該命令將給出路由器CPU的利用率,同時顯示路由器中不同進程的CPU占用率。在下述示例中,路由器的CPU工作正常。在通常情況下,在5分鐘內CPU的平均利用率小于60%是可以接受的。假如懷疑CPU利用率出現了問題,則需要不斷地監視這一參數,因為它可能在短時間內發生變化。最好每10秒鐘使用一次該命令。通過這種方法,可以清楚地了解CPU利用率的波動情況。 YH-Router#sh process cpu CPU utilization for five seconds:15%/4%;one minute:175;five minutes:19% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 460184 5380085 85 0.00% 0.00% 0.00% 0 NTP 2 252749536 2384205 106010 0.00% 2.35% 2.65% 0 Check Heaps ...... 13 26155236 9135958 2862 0.32% 0.25% 0.22% 0 IP Background 14 317720 150150 2116 0.00% 0.00% 0.00% 0 IP Cache ager ...... 23 51598380 135094851 381 0.32% 0.24% 0.28% 0 IPX Input 24 86792124 23662071 3667 0.98% 0.87% 0.89% 0 IPX RIP 25 438480948 123384161 3553 7.94% 3.31% 3.91% 0 IPX SAP ...... 假如CPU的平均利用率超過了80%,則表明路由器過載。下一步需要檢測那一些進程導致了CPU利用率過高。在上面的顯示中,我們可以看到進程IPX SAP占用了絕大部分的CPU處理能力,但是它還在可以接受的范圍之內。有時候,假如SRB background參數持續過高,則表明發生了路由網橋風暴。 show process memory命令可以用來給出路由器可用內存的一般信息,然后顯示每一個進程所占用的內存空間的具體信息。 假如路由器由于臨時重啟動而完全崩潰,則相應的錯誤消息將包含在show version命令的輸出中。show stack命令用于跟蹤路由器的堆棧,提供路由器臨時重新啟動的原因。假如由于錯誤而導致重新啟動,堆棧記錄將在輸出的末尾顯示。為了抽取與故障相關的信息,堆棧記錄需要解碼。這一工作通常由Cisco TAC工程師完成。此外,擁有相應CCO登錄ID的用戶可以通過將show stack命令的輸出發送到CCO而獲得解碼信息。堆棧記錄解碼的結果有時與Cisco路由器的bug有關。 當用戶向Cisco TAC報告故障時,支持技術人員通常要求用戶發送show tech_support命令的輸出結果。這個命令將導致下述命令的按序執行:Show version、Show controllers、Show buffers、Show interface、Show stack、Show process cpu、Show process memory和Show running-config。這些命令的組合將給出路由器配置以及大多數要害性能參數的具體信息。show tech_support命令的輸出對于Cisco TAC技術人員解決復雜網絡問題是十分有用。 與接口相關的命令 下面我們將闡述一些直接與路由器活躍接口相關的命令。show ip interface brief將顯示每一個路由器接口的IP地址信息以及第二層的狀態信息(如下所示)。其他與IP對應的協議的相關性信息可以通過相應命令屬性獲得,比如show ipx interface brief。 YH-Router#sh ip in brief Interface IP-Address OK? Method Status Protocol TokenRing0/0 172.26.12.3 YES NVRAM up up TokenRing0/1 172.27.12.3 YES NVRAM up up TokenRing0/2 172.28.12.3 YES NVRAM up up TokenRing0/3 unassigned YES NVRAM administratively down down Ethernet1/0 172.30.12.3 YES NVRAM up up Ethernet1/0 172.31.12.3 YES NVRAM up up Ethernet1/0 172.32.12.3 YES NVRAM up up Ethernet1/0 172.33.12.3 YES NVRAM up up show interface命令可以獲得更多的信息。我們以以太網為例來討論這些通用接口參數。 YH-Router#sh int e1/0 Ethernet1/0 is up,line protcol is up Hardware is cxBus Ethernet,address is 00e0.f78a.6d40(bia 00e0.f78a.6d40) Description:seg=E2 LAB SRV1 Internet address is 172.30.12.3/16 MTU 1500bytes,BW 10000Kbit,DLY 1000usec,rely 255/255,load 1/255 Encapsulation ARPA, loopback not set, keepalive set(10sec) ARP type:ARPA,ARP Timeout 04:00:00 Last input 00:00:00,output 00:00:00,output hang never Queueing strategy:fifo Output queue 0/40,44 drops;input queue 0/75,66114 drops 5 minute input rate 181000 bits/sec,23 packets/sec 5 minute output rate 43000 bits/sec,26 packets/sec 525599659 packets input,2042735431 bytes, 0 no buffer Received 4004547 broadcasts,10 runts,0 giants 139 input errors, 0 CRC, 129 frame, 0 overrun, 0 ignored, 0 abort 0 input packets with dribble condition detected 481020335 packets output, 1069273018 bytes, 47 underruns 20 output errors, 95880485 collisions, 0 interface resets 0 babbles, 0 late collision, 0 deferred 0 lost carrier, 0 no carrier 0 output buffer failures, 0 output buffers swapped out 其中: Ethernet 1/0 is up 表明OSI模型的第一層成功啟動。 Line protocol up 表明第二層成功啟動 。 Description 用戶自定義的描述。使用這一功能給出接口準確的描述是十分重要的。在一個大型組織中,一個局部網絡的工程師很難定位發生故障的路由器。 MTU 指定最大傳輸單元,用戶可以配置。 BW、Dly、rely、load(帶寬、延遲、可靠性和負載):這些參數與IGRP/EIGRP標準有關。帶寬和延遲的配置可以影響到路由選擇。在工作正常的接口中,可靠性的值為255。除非在十分繁忙的條件下,否則負載通常不應超過150/255。 Encapsulation 它指在接口的第二層封裝。在以太網中,對于IP,Cisco的缺省設置為ARPA,而IPX的缺省設置為Novell-Ether。 從輸出中還能獲取哪些其他的信息呢?讀者可以看到,ARP cache timeout的值為4小時(該值為缺省設置)。從路由器接口輸入到輸出的時間不到1秒鐘。輸出從未被掛起。接口計數器最后一次被清0是在5個星期以前。在評估接口的統計信息時,這些數據是十分有用的。在通常情況下,可以將計數器清0以便作進一步的監視。 接口所采用的是FIFO排隊規則。輸出隊列和輸入隊列的缺省長度分別為40和75。隊列中都不包含報文。在計數器最后一次被清0后,輸入隊列丟失了許多報文。但是,正如我們前面所說的,計數器5個星期未被清0;因此,該值不能說明一定發生了網絡故障。在這種情況下,應該首先將計數器清0,然后再監視輸出隊列的丟失報文數。 同時,命令的輸出中還顯示每1秒鐘通過路由器接口的平均信息量(以字節為單位)以及報文數。這些參數的總量信息、路由器接口觀測到的所有廣播報文的數量也在命令的輸出中顯示。假如廣播報文的數量增長非常迅速,尤其是假如相對于輸入報文的數量非常高,則表明在局域網段中有廣播風暴。由于某些特定的應用程序需要頻繁使用廣播報文,因此確定廣播報文的數量閥值是很困難的。但是,假如廣播報文的數量超過了整個輸入報文的30%,則需要使用局域網協議分析儀進一步檢測網絡。 我們還可以獲取接口的下列錯誤檢測信息: Runts 是指大小小于最小值的報文。在示例的以太網中,該值為64。以太網中指定最小報文大小大小是由于在這種傳輸模式下的工作站需要檢測碰撞。假如以太網段中包含以太網中繼器并且其距離符合規定的標準,最小報文大小大小可以使處在這種傳輸模式下的工作站檢測線路中的任何碰撞。 Giants 指大小超過線路可以承受的最大報文大小的報文。以太網的MTU通常為1500字節,或者最大的封裝數據為1500字節。 Input errors 指到達報文中檢測到的錯誤,也可能表明網段本身發生了錯誤。 Output errors 指輸出報文中的錯誤,它可能表明路由器接口本身發生了故障。 CRCs 由于報文不正確的以太網校驗和而檢測到的循環冗余校驗錯。它可能由于網段的噪聲引起,或者由于網卡故障、報文沖突引發。CRC的頻率應是每100000個輸入報文中發生一次。 Frame errors 指接收到的幀的類型與路由器以太網幀類型(IP協議幀類型為ARPA)不匹配。 Aborts 在碰撞檢測中過度的重傳而導致的問題。在以太網中,重傳的最大次數不超過15次。 Dribble condition 指接收到的幀比MTU大,但不屬于Giants。 Babble 是指持續接收到可疑的幀。 Deferred 假如線路繁忙,報文在傳輸時將被延緩發送。 Interface resets 在檢測到過多的錯誤時,路由器將重置接口。這些錯誤可能存在于局域網段中,也可能是接口本身的錯誤。在此不能夠判定具體是那兒發生故障,但是,假如伴隨著大量的輸出錯誤,則表明路由器接口本身發生故障。 Collisions 在以太網中,沖突被分為兩大類:early和late。early collision 由發送方在幀的前64個字節進入線路之前檢測到的沖突。early collision是以太網CSMA/CD訪問方法中的組成部分。early collision通常導致小的被中斷的幀或稱為runt。Late collision發生在幀的多個字節(大于64)被發送到線路中時產生的沖突。在理論上,以太網不會產生此類沖突。產生late collision的原因包括: ; 電纜違反了距離規則。 ; 發生故障的NIC卡不正確地監聽線路。 Lost carrier 表明在計數器最后一次清0后,載波和線路協議發生的故障。此類故障通常與路由器無關。例如,載波丟失可能是因為路由器與集線器之間的電纜連接中斷。 Buffer parameters show interface命令還提供與緩沖區分配有關的故障信息,它包括no buffer、overruns、ignored、underruns、buffer failures和swapped out buffers等。
上面,我們具體討論了show interface命令的用法。這些命令的輸出提供了與路由器接口相關以及與傳輸介質相關的參數等有價值的信息。 show controller命令提供連接到路由器接口物理線路以及傳輸介質的具體信息。并且提供狀態的歷史信息。其中一些具體信息很少被使用,它們一般僅被TAC技術人員用于解決十分復雜的問題。 與協議相關的命令 本節將討論如何使用與不同協議相關的顯示命令。 show protocol命令給出了路由器運行的協議信息以及路由這些協議的每一個接口的地址信息(如下所示)。 YH-Router#sh protocol Global values: Internet Protocol routing is enabled Novell routing is enabled Serial0 is up, line protocol is up Internet address is 171.137.8.130/25 Novell address is AB890880.0000.30e8.b7c8 Serial1 is administratively down, line protocol is down TokenRing0 is up, line protocol is up Internet address is 171.137.6.1/25 Novell address is AB890600.0000.30e8.b7c8 ...... 3.2 Debug命令 Cisco IOS 軟件中包含大量的調試命令。這些命令可以在路由器正常工作或者發生網絡故障時獲得在路由器中交換的報文和幀的細節信息。調試命令在排除網絡故障時的非凡功能,可以減少用戶對協議分析儀的需求。在使用調試命令時,需要注重以下幾點: ; 在沒有完全把握調試命令的工作過程以及它所提供的信息時,不要使用調試命令。 ; 調試命令僅能捕捉通過過程交換的報文。調試命令會明顯增加處理器的負載。某一些命令的負載很小,但是另一些處理器敏感的命令會極大地增加處理器的負擔。建議讀者在使用調試命令之前,使用命令show process cpu檢查CPU的負載。即使CPU的負載很小,在使用處理器敏感的命令時仍需要十分慎重。在不能確定的情況下,可以查詢Cisco調試命令參考手冊。對CPU十分敏感的命令將會產生警告信息。通常情況下,調試命令的大量輸出將會增加處理器的負擔。 ; 調試命令針對故障排除,監視時最好不要使用這些命令。在獲得了足夠的信息后,應馬上中止調試命令的執行。 下面我們將闡述在Cisco IOS中可以使用的各種調試命令。為了敘述清楚,我們將所有的調試命令分為三類:全局(系統)調試命令、接口調試命令以及協議調試命令。與show命令類似,這些命令之間并沒有嚴格的界限。 首先,需要了解的是有哪些調試命令可以使用。使用與調試相關的幫助,輸入“debug ?”,我們將獲得了一個命令的列表,其中每一個命令都包含若干的屬性,它們在排除故障時提供各種不同的作用。 全局調試 在配置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 3.3 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等屬性。 3.4 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連通性,而且可以確認高層服務是否可被訪問。