思科路由器:網(wǎng)絡(luò)故障診斷與排除命令
在出現(xiàn)網(wǎng)絡(luò)故障時(shí),作為網(wǎng)絡(luò)工程師能夠及時(shí)定位故障并解決網(wǎng)絡(luò)故障是十分重要的。CiscoISO操作系統(tǒng)軟件提供了一組功能豐富的命令,可以用來(lái)進(jìn)行網(wǎng)絡(luò)故障查找與排除、問(wèn)題診斷以及性能檢測(cè)。命令大致可以分為兩類:show命令和debug命令。同時(shí),還包含一組用于連接這兩類命令的clear命令。下面我們分別講解各命令
網(wǎng)絡(luò)故障診斷與排除——show命令
在這一節(jié)中,我們將講述最常用的show命令,闡述這些命令的輸出以及這些命令適用于解決的故障類型。為了敘述清楚,這些命令被分為全局系統(tǒng)命令、與接口相關(guān)的命令和與協(xié)議相關(guān)的命令。我們僅討論最常使用的命令。
網(wǎng)絡(luò)故障診斷與排除——全局系統(tǒng)命令
本節(jié)將列出與路由器軟件和硬件相關(guān)的輸出命令,其中包括存儲(chǔ)區(qū)和電源。showversion命令是最基本的命令之一,它顯示路由器本身以及其所使用的軟、硬件的基本信息。showhardware命令的功能與showversion命令類似。
命令的輸出信息包括:IOS的版本、路由器持續(xù)運(yùn)行的時(shí)間約23周、最近一次重啟動(dòng)的原因、路由器主存的大小、共享存儲(chǔ)器的大小、閃存的大小、IOS映像的文件名,以及路由器從何處啟動(dòng)等信息。showversion命令顯示了路由器的許多非常有用的信息。在解決問(wèn)題時(shí),通常應(yīng)該從這個(gè)命令開(kāi)始收集數(shù)據(jù)。
如果路由器的多個(gè)接口同時(shí)丟失報(bào)文,則可能由于路由器內(nèi)存不足或者CPU過(guò)載。用戶可以使用showmemory命令檢查內(nèi)存利用率(如下所示)。CPU利用率可以使用showprocess命令檢查。
- YH-Router#showmemoryHeadTotal(b)Used(b)Free(b)Lowest(b)Largest(b)Processor60DB19C0191954566162924130325321161516411250780Fast60DB19C0131072128344272827282684
showmemory的前兩行顯示了存儲(chǔ)器的一般信息,它表明系統(tǒng)有足夠可用的內(nèi)存。同時(shí)它還顯示內(nèi)存中沒(méi)有碎片,因?yàn)樵?3.03兆字節(jié)可用內(nèi)存中最大的可用塊接近11.25兆字節(jié)。內(nèi)存碎片表明內(nèi)存被劃分為了許多不連續(xù)的塊。它將導(dǎo)致內(nèi)存的利用率降低,嚴(yán)重時(shí)可能產(chǎn)生內(nèi)存錯(cuò)誤從而也嚴(yán)重影響路由器的性能。
現(xiàn)在看一看路由器中有許多內(nèi)存碎片的情形(如下所示)。此時(shí)我們有足夠多的可用內(nèi)存(8.4兆字節(jié)),但是其中最大的塊僅為0.5兆字節(jié)。連續(xù)內(nèi)存中沒(méi)有足夠大的可用塊,這有可能導(dǎo)致嚴(yán)重的內(nèi)存分配問(wèn)題。這些問(wèn)題有時(shí)表現(xiàn)為一個(gè)或多個(gè)接口間歇性的丟失報(bào)文。此時(shí)路由器產(chǎn)生內(nèi)存碎片錯(cuò)誤消息。
- HX-Router#shmemHeadTotal(b)Used(b)Free(b)Lowest(b)Largest(b)Processor60DB19C019195456107137128481744192680586748Fast60DB19C013107290936401364013640092
使用命令showmemoryfree,用戶可以看到可用內(nèi)存被劃分為許多很小的碎片。需要注意的是,路由器中存在一定數(shù)量的內(nèi)存碎片是正常的。雖然并沒(méi)有一個(gè)很嚴(yán)格的界限來(lái)劃分內(nèi)存碎片的可接受程度,但是可用塊的大小至少應(yīng)該不小于可用內(nèi)存的一半。用戶可以通過(guò)重新啟動(dòng)路由器來(lái)解決這個(gè)問(wèn)題。在重新啟動(dòng)時(shí),系統(tǒng)重新分配內(nèi)存和緩存空間。此時(shí),用戶應(yīng)該監(jiān)視內(nèi)存分配的過(guò)程。如果再次發(fā)生類似的情況,則應(yīng)該咨詢CiscoTAC。
用戶可以使用showprocesscpu命令檢查路由器的CPU是否過(guò)載。該命令將給出路由器CPU的利用率,同時(shí)顯示路由器中不同進(jìn)程的CPU占用率。在下述示例中,路由器的CPU工作正常。在通常情況下,在5分鐘內(nèi)CPU的平均利用率小于60%是可以接受的。如果懷疑CPU利用率出現(xiàn)了問(wèn)題,則需要不斷地監(jiān)視這一參數(shù),因?yàn)樗赡茉诙虝r(shí)間內(nèi)發(fā)生變化。最好每10秒鐘使用一次該命令。通過(guò)這種方法,可以清楚地了解CPU利用率的波動(dòng)情況。
- YH-Router#shprocesscpuCPUutilizationforfiveseconds:15%/4%;oneminute:175;fiveminutes:19%PIDRuntime(ms)InvokeduSecs5Sec1Min5MinTTYProcess14601845380085850.00%0.00%0.00%0NTP225274953623842051060100.00%2.35%2.65%0CheckHeaps......1326155236913595828620.32%0.25%0.22%0IPBackground1431772015015021160.00%0.00%0.00%0IPCacheager......23515983801350948513810.32%0.24%0.28%0IPXInput24867921242366207136670.98%0.87%0.89%0IPXRIP2543848094812338416135537.94%3.31%3.91%0IPXSAP......
如果CPU的平均利用率超過(guò)了80%,則表明路由器過(guò)載。下一步需要檢測(cè)那一些進(jìn)程導(dǎo)致了CPU利用率過(guò)高。在上面的顯示中,我們可以看到進(jìn)程IPXSAP占用了絕大部分的CPU處理能力,但是它還在可以接受的范圍之內(nèi)。有時(shí)候,如果SRBbackground參數(shù)持續(xù)過(guò)高,則表明發(fā)生了路由網(wǎng)橋風(fēng)暴。
showprocessmemory命令可以用來(lái)給出路由器可用內(nèi)存的一般信息,然后顯示每一個(gè)進(jìn)程所占用的內(nèi)存空間的詳細(xì)信息。
如果路由器由于臨時(shí)重啟動(dòng)而完全崩潰,則相應(yīng)的錯(cuò)誤消息將包含在showversion命令的輸出中。showstack命令用于跟蹤路由器的堆棧,提供路由器臨時(shí)重新啟動(dòng)的原因。如果由于錯(cuò)誤而導(dǎo)致重新啟動(dòng),堆棧記錄將在輸出的末尾顯示。為了抽取與網(wǎng)絡(luò)故障相關(guān)的信息,堆棧記錄需要解碼。這一工作通常由CiscoTAC工程師完成。此外,擁有相應(yīng)CCO登錄ID的用戶可以通過(guò)將showstack命令的輸出發(fā)送到CCO而獲得解碼信息。堆棧記錄解碼的結(jié)果有時(shí)與Cisco路由器的bug有關(guān)。
當(dāng)用戶向CiscoTAC報(bào)告網(wǎng)絡(luò)故障時(shí),支持技術(shù)人員通常要求用戶發(fā)送showtech_support命令的輸出結(jié)果。這個(gè)命令將導(dǎo)致下述命令的按序執(zhí)行:Showversion、Showcontrollers、Showbuffers、Showinterface、Showstack、Showprocesscpu、Showprocessmemory和Showrunning-config。這些命令的組合將給出路由器配置以及大多數(shù)關(guān)鍵性能參數(shù)的詳細(xì)信息。showtech_support命令的輸出對(duì)于CiscoTAC技術(shù)人員解決復(fù)雜網(wǎng)絡(luò)問(wèn)題是十分有用。
網(wǎng)絡(luò)故障診斷與排除——與接口相關(guān)的命令
下面我們將闡述一些直接與路由器活躍接口相關(guān)的命令。showipinterfacebrief將顯示每一個(gè)路由器接口的IP地址信息以及第二層的狀態(tài)信息(如下所示)。其他與IP對(duì)應(yīng)的協(xié)議的相關(guān)性信息可以通過(guò)相應(yīng)命令屬性獲得,比如showipxinterfacebrief。
- YH-Router#shipinbriefInterfaceIP-AddressOK?MethodStatusProtocolTokenRing0/0172.26.12.3YESNVRAMupupTokenRing0/1172.27.12.3YESNVRAMupupTokenRing0/2172.28.12.3YESNVRAMupupTokenRing0/3unassignedYESNVRAMadministrativelydowndownEthernet1/0172.30.12.3YESNVRAMupupEthernet1/0172.31.12.3YESNVRAMupupEthernet1/0172.32.12.3YESNVRAMupupEthernet1/0172.33.12.3YESNVRAMupup
showinterface命令可以獲得更多的信息。我們以以太網(wǎng)為例來(lái)討論這些通用接口參數(shù)。
- YH-Router#shinte1/0Ethernet1/0isup,lineprotcolisupHardwareiscxBusEthernet,addressis00e0.f78a.6d40(bia00e0.f78a.6d40)Description:seg=E2LABSRV1Internetaddressis172.30.12.3/16MTU1500bytes,BW10000Kbit,DLY1000usec,rely255/255,load1/255EncapsulationARPA,loopbacknotset,keepaliveset(10sec)ARPtype:ARPA,ARPTimeout04:00:00Lastinput00:00:00,output00:00:00,outputhangneverQueueingstrategy:fifoOutputqueue0/40,44drops;inputqueue0/75,66114drops5minuteinputrate181000bits/sec,23packets/sec5minuteoutputrate43000bits/sec,26packets/sec525599659packetsinput,2042735431bytes,0nobufferReceived4004547broadcasts,10runts,0giants139inputerrors,0CRC,129frame,0overrun,0ignored,0abort0inputpacketswithdribbleconditiondetected481020335packetsoutput,1069273018bytes,47underruns20outputerrors,95880485collisions,0interfaceresets0babbles,0latecollision,0deferred0lostcarrier,0nocarrier0outputbufferfailures,0outputbuf
- fersswappedout
其中:
Ethernet1/0isup表明OSI模型的第一層成功啟動(dòng)。
Lineprotocolup表明第二層成功啟動(dòng)。
Description用戶自定義的描述。使用這一功能給出接口準(zhǔn)確的描述是十分重要的。在一個(gè)大型組織中,一個(gè)局部網(wǎng)絡(luò)的工程師很難定位發(fā)生故障的路由器。
MTU指定最大傳輸單元,用戶可以配置。
BW、Dly、rely、load(帶寬、延遲、可靠性和負(fù)載):這些參數(shù)與IGRP/EIGRP標(biāo)準(zhǔn)有關(guān)。帶寬和延遲的配置可以影響到路由選擇。在工作正常的接口中,可靠性的值為255。除非在十分繁忙的條件下,否則負(fù)載通常不應(yīng)超過(guò)150/255。
Encapsulation它指在接口的第二層封裝。在以太網(wǎng)中,對(duì)于IP,Cisco的缺省設(shè)置為ARPA,而IPX的缺省設(shè)置為Novell-Ether。
從輸出中還能獲取哪些其他的信息呢?讀者可以看到,ARPcachetimeout的值為4小時(shí)(該值為缺省設(shè)置)。從路由器接口輸入到輸出的時(shí)間不到1秒鐘。輸出從未被掛起。接口計(jì)數(shù)器最后一次被清0是在5個(gè)星期以前。在評(píng)估接口的統(tǒng)計(jì)信息時(shí),這些數(shù)據(jù)是十分有用的。在通常情況下,可以將計(jì)數(shù)器清0以便作進(jìn)一步的監(jiān)視。
接口所采用的是FIFO排隊(duì)規(guī)則。輸出隊(duì)列和輸入隊(duì)列的缺省長(zhǎng)度分別為40和75。隊(duì)列中都不包含報(bào)文。在計(jì)數(shù)器最后一次被清0后,輸入隊(duì)列丟失了許多報(bào)文。但是,正如我們前面所說(shuō)的,計(jì)數(shù)器5個(gè)星期未被清0;因此,該值不能說(shuō)明一定發(fā)生了網(wǎng)絡(luò)故障。在這種情況下,應(yīng)該首先將計(jì)數(shù)器清0,然后再監(jiān)視輸出隊(duì)列的丟失報(bào)文數(shù)。
同時(shí),命令的輸出中還顯示每1秒鐘通過(guò)路由器接口的平均信息量(以字節(jié)為單位)以及報(bào)文數(shù)。這些參數(shù)的總量信息、路由器接口觀測(cè)到的所有廣播報(bào)文的數(shù)量也在命令的輸出中顯示。如果廣播報(bào)文的數(shù)量增長(zhǎng)非常迅速,尤其是如果相對(duì)于輸入報(bào)文的數(shù)量非常高,則表明在局域網(wǎng)段中有廣播風(fēng)暴。由于某些特定的應(yīng)用程序需要頻繁使用廣播報(bào)文,因此確定廣播報(bào)文的數(shù)量閥值是很困難的。但是,如果廣播報(bào)文的數(shù)量超過(guò)了整個(gè)輸入報(bào)文的30%,則需要使用局域網(wǎng)協(xié)議分析儀進(jìn)一步檢測(cè)網(wǎng)絡(luò)。
我們還可以獲取接口的下列錯(cuò)誤檢測(cè)信息:
Runts是指大小小于最小值的報(bào)文。在示例的以太網(wǎng)中,該值為64。以太網(wǎng)中指定最小報(bào)文大小大小是由于在這種傳輸模式下的工作站需要檢測(cè)碰撞。如果以太網(wǎng)段中包含以太網(wǎng)中繼器并且其距離符合規(guī)定的標(biāo)準(zhǔn),最小報(bào)文大小大小可以使處在這種傳輸模式下的工作站檢測(cè)線路中的任何碰撞。
Giants指大小超過(guò)線路可以承受的最大報(bào)文大小的報(bào)文。以太網(wǎng)的MTU通常為1500字節(jié),或者最大的封裝數(shù)據(jù)為1500字節(jié)。
Inputerrors指到達(dá)報(bào)文中檢測(cè)到的錯(cuò)誤,也可能表明網(wǎng)段本身發(fā)生了錯(cuò)誤。
Outputerrors指輸出報(bào)文中的錯(cuò)誤,它可能表明路由器接口本身發(fā)生了網(wǎng)絡(luò)故障。
CRCs由于報(bào)文不正確的以太網(wǎng)校驗(yàn)和而檢測(cè)到的循環(huán)冗余校驗(yàn)錯(cuò)。它可能由于網(wǎng)段的噪聲引起,或者由于網(wǎng)卡故障、報(bào)文沖突引發(fā)。CRC的頻率應(yīng)是每100000個(gè)輸入報(bào)文中發(fā)生一次。
Frameerrors指接收到的幀的類型與路由器以太網(wǎng)幀類型(IP協(xié)議幀類型為ARPA)不匹配。
Aborts在碰撞檢測(cè)中過(guò)度的重傳而導(dǎo)致的問(wèn)題。在以太網(wǎng)中,重傳的最大次數(shù)不超過(guò)15次。
Dribblecondition指接收到的幀比MTU大,但不屬于Giants。
Babble是指持續(xù)接收到可疑的幀。
網(wǎng)絡(luò)故障的排除是很復(fù)雜的問(wèn)題,隨著網(wǎng)絡(luò)的發(fā)展,這些故障還會(huì)相繼出現(xiàn)的,所以希望大家多多學(xué)習(xí)這些網(wǎng)絡(luò)故障的排除方法。