Cisco路由器故障診斷技術(轉)

amyz發表於2007-08-13
Cisco路由器故障診斷技術(轉)[@more@]

  1 引言

  作為網路工程師,在網路環境出現故障時,及時定位故障並解決故障是十分重要的。本文以CISCO路由式網路為基礎,介紹使用診斷工具對Cisco路由器進行故障診斷的方法。限於篇幅,我們所介紹的內容和示例主要是基於IP報文的,基於IPX和Appletalk等協議的診斷技術與此類似。

  2 路由器的功能特性和體系結構

  在學習Cisco路由器上可使用的各種故障排除和診斷工具之前,瞭解路由器的基本體系結構是十分重要的。網路工程師應該理解診斷命令執行時所起的作用以及對於路由器效能所產生的影響。

  交換與路由是我們在網路互聯中經常遇到的術語。此處所說的交換與區域網中的幀級交換是完全不同的概念。交換過程是指路由器如何在兩個不同的介面間傳送報文。

  比如,路由器在乙太網介面0接收到一個報文。路由器首先從報文中獲取MAC頭資訊,然後檢查網路層報文頭。路由器檢查路由表是否有與報文的目的地址匹配的表項。假設路由表中包含匹配的項,並且下一跳地址是另外一個路由器,該路由器可以透過乙太網介面1到達。然後路由器需要檢查下一跳的第二層地址。如果它沒有該地址,則需要在乙太網介面1傳送ARP廣播報文。如果沒有接收到ARP響應,路由器則將該報文丟棄。如果有響應資訊,路由器則建立到下一跳路由器的乙太網幀。在這個例子中,路由器從接收到乙太網幀到建立併傳送乙太網幀的整個過程稱為交換過程。需要注意的是,ARP解析過程通常不認為是交換過程的一部分。上面的過程中,執行路由表查詢以尋找下一跳的地址表明採用了交換過程。這是一種最簡單的報文交換方法,因而其開銷和延遲都比較大。所有的路由協議最終都依賴於路由表的建立,路由器透過接收執行相同協議的相鄰路由器傳送的路由更新報文來更新相應的路由表,我們稱之為路由過程(routing process),它主要由路由處理器完成。

  目前在國內應用比較廣泛的Cisco路由器包括2500系列、4000系列、7000系列和7500系列,這些路由器進行路由的過程基本上是相似的,但是交換的過程卻根據其系統結構的不同而不同。

  7000系列支援過程交換、快速交換、自治交換和矽交換。

  7500系列路由器比7000系列在體系結構方面有很多改進。路由處理器和交換處理器的功能被整合到路由器交換處理器(RSP)中。這一新的體系結構減少了快速交換時系統匯流排的負載。整合後的功能對路由處理器和交換處理器都作了效能、穩定性、可擴充性和安全等方面的最佳化。7500系列路由器既不支援自治交換也支援矽交換,它支援更加靈活的最佳化交換。

  4000/2500系列路由器的硬體結構比7000/7500系列路由器的硬體結構簡單。這些裝置只在交換過程中才共享儲存器。所有的報文快取和Cache都位於共享儲存器中,因此只支援快速交換或過程交換。

  需要知道過程交換需要透過查詢路由表來做出路由選擇,而且其他交換技術都是透過快取來提高交換速度的,因為其快取的位置不同而分別稱為不同的技術。

  3 故障診斷與排除命令

  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連通性,而且可以確認高層服務是否可被訪問。

  與trace命令相關的另外一個問題是,如果存在到達目的地的多條路徑,返回報文的源地址可能不相同。在這種情況下,使用者需要仔細比較不同返回報文的延遲時間。如果仍不能得到明確的結果,可以遠端訪問路徑上的一個或多個路由器,使用trace命令訪問源地址和目的地址。

4 理解Cisco錯誤訊息

  4.1 錯誤訊息格式

  系統錯誤訊息格式如下:

  %Facility - subfacility - Severity - Mnemonic : Message Text

  Facility 它指出錯誤訊息涉及的裝置名。該值可以是協議、硬體裝置或者系統軟體模組。

  Subfacility 它僅與通道介面處理器(CIP)卡有關。詳細的資訊可以參見Cisco文件的相關章節。

  Severity 它是一個範圍在0到7之間的數字。數字的值越小,嚴重程度越高。

  Mnemonic 唯一標識錯誤訊息的單值程式碼。該程式碼通常可以暗示錯誤的型別。

  Message Text 它是錯誤訊息的簡短描述,其中包括涉及的路由器硬體和軟體資訊。

  下面是一些錯誤訊息的示例。使用者可以查閱CCO ISO文件的系統錯誤訊息一節,以查詢這些錯誤訊息的說明。

  %DUAL-3-SIA:Route 171.155.148.192/26 stuck-in-active state in IP-EIGP 211.

  Cleaning up

  %LANCE-3-OWNERR: Unit 0, buffer ownership error

  需要注意的是,並不是所有的訊息都涉及到故障或者問題的狀況。某些訊息顯示的是狀態方面的資訊。例如,以下訊息僅表明ISDN BRI 0介面與特定的遠端資料連線。

  %ISDN-6-CONNECT: Interface BRI0 is now connected to 95551212

  4.2 Traceback Report

  某些與路由器內部錯誤相關的錯誤訊息包含了traceback資訊。在向Cisco TAC報告錯誤時,應在錯誤描述中加入這些資訊。

  5 錯誤訊息和事件資訊的日誌

  根據錯誤訊息的重要性和有效性,Cisco錯誤訊息可以被記錄到以下位置:

  ;; 控制檯

  ;; 虛擬終端

  ;; Syslog伺服器

  ;; 內部緩衝區

  logging on命令使日誌訊息的輸出到上述位置。對於Syslog伺服器,必須使用下述全域性配置命令指明伺服器的IP地址:

  logging ip-address

  透過反覆使用這一命令,可以建立一個伺服器的列表。在管理大型網路時,通常需要設定冗餘伺服器。

  logging buffered命令用於將日誌資訊傳送到內部緩衝區。緩衝區的大小必須在4096位元組以上。預設值根據系統平臺的不同而不同。使用者需要選擇適合環境的緩衝區大小。如果緩衝區太小,新的訊息將會覆蓋舊的訊息。這有可能會導致問題。但是,如果緩衝區大小過大將會浪費系統快取。no logging buffered命令將禁止訊息被寫入內部快取。

  使用者可以使用show logging命令顯示內部緩衝區的內容。如果使用者需要某一時間段的資訊,首先使用NTP或者手工設定時鐘,具體操作為:

  YH-Router#clock set 11:37:00 December 2000

  YH-Router#sh clock

  11:37:03.596 PST Fri Dec 11 2000

  日誌訊息的時間戳和除錯資訊可以使用以下全域性配置命令:

  YH-Router (config)#service timestamps log datetime

  YH-Router (config)#service timestamps debug datetime

  terminal

  monitor命令將在當前終端上顯示除錯時的日誌資訊。該命令不是一個配置命令。相反,它可以透過telnet到路由器時在命令列方式下使用。

  在大多數情況下,使用者可能需要顯示某一級別的日誌資訊。因此,日誌資訊被分為八個不同的級別,按照重要程度由高到低排列如下:

  ;; Emergencies

  ;; Alerts

  ;; Critical

  ;; Errors

  ;; Warnings

  ;; Notifications

  ;; Informational

  ;; Debugging

  例如,需要在控制檯上顯示嚴重程度等於或者大於警告(Warning)的所有日誌資訊,可以使用下述全域性配置命令:logging console warning

  類似的,將某種型別的日誌資訊傳送到當前的終端時,使用logging monitor level ;或者將資訊傳送到Syslog伺服器時使用 logging trap level .

  與terminal monitor命令不同,logging monitor命令是路由器配置的一部分。前一種命令不允許在不同的安全級別下執行。 需要注意的是,將日誌記錄到不同的位置時,系統開銷變化很大。將日誌記錄到控制檯的開銷比較大,然而將日誌記錄到虛擬終端時開銷較小。使用Syslog伺服器時開銷更小。系統開銷最小的日誌寫入方式是寫入內部緩衝區。

  6 核心轉儲(Core Dump)

  為了查詢路由器崩潰的原因,我們可以使用許多命令來獲取有效的資訊。其中我們已經講解了show stacks命令的用法。核心轉儲是系統記憶體映象的複製,它可以被寫入到TFTP伺服器中。從這個二進位制檔案中,我們可以獲得與路由器崩潰或者嚴重誤操作相關的資訊,透過這些資訊可以排除可能的故障。下面的配置命令將核心轉儲寫入到命令中IP地址對應的TFTP伺服器上:

  exception dump ip-address write core命令通常用於路由器發生嚴重的誤操作但是沒有完全崩潰時,儲存核心映像。

  只有執行IOS v 9.0或更高版本的伺服器才可以使用核心轉儲。但是,需要注意的是,在使用核心轉儲時,最好獲取有經驗的工程師或者Cisco TAC的支援。

  7 結束語

  要順利地診斷並排除網路故障,網路工程技術人員必須掌握兩種基本的技能。首先是對網路技術和協議要有清楚的理解,它是診斷與排除網路故障的基礎。沒有適當的知識和經驗,故障診斷與排除工具比如路由器診斷命令和網路分析儀都不能發揮其作用。

  網路工程技術人員必須掌握的第二種技能是將所掌握的知識以有條理的方式應用於診斷和排除網路故障的過程中。本文雖然只闡述了一些診斷的命令,但需要強調的是:故障診斷與排除是一種結構化的方法。許多工程技術人員認為故障診斷與排除計劃不如研究和應用技術本身重要。事實上,正確的計劃在故障診斷與排除過程中往往起決定性的作用。在故障排除過程中,一個偶然的行為可能使故障得以順利解決,但是它不能替代結構化的故障診斷與排除方法。

  網路故障的排除是一項系統工程,應該經過定義問題、蒐集事實、基於事實考慮可能性、建立行動計劃、實施計劃、觀察結果和迴圈過程等步驟,這一過程就如同軟體開發過程的瀑布模型,其重要性是不言而喻的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-955269/,如需轉載,請註明出處,否則將追究法律責任。

相關文章