天天看點

精華 | 網絡故障排除指令彙總【網工必須收藏】

精華 | 網絡故障排除指令彙總【網工必須收藏】

1.網絡排錯常用診斷工具介紹

主流網絡裝置産品提供了一套完整的指令集,可以用于監控網絡互聯環境的工作狀況和解決基本的網絡故障。主要包括以下指令:

  • Ping指令
  • Traceroute指令
  • Show指令
  • Clear指令
  • Debug指令

1.1 Ping指令

1.原理:

“ping”這個詞源于聲納定位操作,指來自聲納裝置的脈沖信号。Ping指令的思想與發出一個短促的雷達波,通過收集回波來判斷目标很相似;即源站點向目的站點發出一個ICMP Echo Request封包,目的站點收到該封包後回一個ICMP Echo Reply封包,這樣就驗證了兩個節點間IP層的可達性--表示了網絡層是連通的。

2.功能

Ping指令功能用于檢查IP網絡連接配接及主機是否可達。

3.RGNOS平台的ping指令

在RG系列裝置上,Ping指令的格式如下:

ping  ip-address      

例如,向主機10.15.50.1 Ping封包

RG# ping  10.15.50.1 //ping通的情況
Switch>PING
Target IP address or host: 10.15.50.1   //目的IP

Repeat count [5]: 2    //執行次數

Datagram size [100]: 8100   //資料包大小

Timeout in milliseconds [2000]: 5000  //延遲時間

Extended commands [n]:

Sending 2, 8100-byte ICMP Echos to 10.15.50.1,
timeout is 5000 milliseconds.
!!

Success rate is 100 percent (2/2)
Minimum = 21ms Maximum = 22ms, Average = 21msRG
# ping  10.15.50.1 //ping不通的情況
Sending 5, 100-byte ICMP Echos to 10.15.50.1,
timeout is 2000 milliseconds.
.....

Success rate is 0 percent (0/5)      

4.Windows平台的Ping指令

在PC機上或Windwos為平台的伺服器上,Ping指令的格式如下:

Ping [ -n  number ] [ -t  ] [ -l  number ]  ip-address      
  • -nPing封包的個數,預設值為5;
  • -t持續地ping 直到人為地中斷,Ctr+Breack暫時中止ping指令并檢視目前的統計結果,而Ctr+C則中斷指令的執行。
  • -l設定Ping封包所攜帶的資料部分的位元組數,設定範圍從0至65500。

    例:向主機10.15.50.1 發出2個資料部分大小為 3000 Bytes的ping封包

C:\>ping -l 3000 -n 2 10.15.50.1
Pinging 10.15.50.1 with 3000 bytes of data
Reply from 10.15.50.1: bytes=3000 time=321ms TTL=255
Reply from 10.15.50.1: bytes=3000 time=297ms TTL=255
Ping statistics for 10.15.50.1:
    Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 297ms, Maximum =  321ms, Average =  309ms      

5.巧用Ping指令進行故障排除

案例一:連通性問題還是性能問題?

(1) 案例描述

工程師小C,在配置完一台路由器之後執行Ping指令檢測鍊路是否通暢。發現5個封包都沒有Ping通,于是檢查雙方的配置指令并檢視路由表,卻一直沒有找到錯誤所在。最後又重複執行了一遍相同的Ping指令,發現這一次5個封包中有1個Ping 通了--原來是線路品質不好存在比較嚴重的丢包現象。

工程師小C又配置了一台路由器,然後執行Ping指令通路Internet上某站點的IP位址,但沒有Ping通。有了上次的教訓小L,再一次Ping了20個封包,仍舊沒有響應。于是小L斷定是網絡故障。但是在費勁周折檢查了配置鍊路之後仍沒有發現任何可疑之處,最後小L采取逐段檢測的方法對鍊路中的網關進行逐級測試,發現都可以Ping 通,但是響應的時間越來越長,最後一個網關的響應時間在1800ms左右。會不會是由于逾時而導緻顯示為Ping 不同呢?受此啟發,小L将Ping 指令封包的逾時時間改為4000ms,這次成功Ping通了,顯示所有的封包響應時間都在2200ms 左右。

(2) 建議和總結:

真的是Ping不通嗎?這個問題需要定位清楚,因為連通性問題和性能問題排錯的關注點是不一樣的――問題定位錯誤必然會導緻排錯過程的周折。使用一般的Ping指令,預設是發送5個封包的,逾時時長是2000ms。如果Ping不通情況發生,最好能夠再用帶參數-c和-t的Ping指令再執行一遍,如:Ping -c 20 -t 4000 ip-address,即連續發送20個封包,每個封包的逾時時長為4000ms,這樣一般可以判斷出到底是連通性問題還是性能問題。

案例二:使用大包ping對端進行MTU不一緻的故障排除

(1) 現象描述:

某次開局,使用RG路由器與其他廠商的某路由器互連,并運作OSPF協定。資料配置完畢後,一切正常,并在今後相當長的時間内裝置運轉穩定。但兩個月後,使用者回報網絡中斷。

(2) 相關資訊顯示:

  • 登入到兩台路由器上,發現雙方連接配接正常,可以互相Ping通對端位址。但OSPF協定中斷;
  • 登入RG路由器檢視鄰居狀态,發現鄰居狀态機處于Exstart狀态。打開相應的debug開關檢視相應的封包資訊,發現雙方都可以收到Hello封包,但RG路由器發送DD封包後,一直沒有收到對方回應的DD封包;
  • 登入其他廠商的那台路由器,打開相應的debug開關,發現對方收到RG路由器發送的DD封包後,一發送了相應的DD封包予以回應。

(3) 原因分析:

初步斷定,RG路由器沒有收到DD回應封包,但對方确實發出來了。

既然可以接收到HELLO 封包說明鍊路是通暢的,而且多點傳播封包的收發也沒有問題。那麼有可能是對方發送的DD 封包有錯誤導緻RG路由器拒收,但檢視相應的資訊,并沒有報告接收到錯誤的DD 封包。

仔細檢視某廠商路由器的調試資訊發現這個DD封包很大有2000 多位元組。會不會是由于封包太大導緻的問題呢?試着Ping了一個2000位元組的封包,結果不通。那麼故障原因很可能是--由于雙方的MTU不一緻導緻大包不通。

(4) 處理過程:

檢查配置,發現對方路由器的MTU設定為4000多而RG路由器的MTU設定為1500,于是修改對端路由器的MTU為1500。故障排除。

那麼為什麼工程初期沒有問題呢?這是因為前期DD封包長度小于1500位元組,而後來網絡擴容導緻路由資訊過多使DD 封包的長度超過了1500 位元組。

(5) 建議和總結:

由于Ping 預設封包是56 個位元組,是以顯示的Ping 通資訊隻是表示56位元組的封包可以通而并不一定表示其他大小的封包仍舊可以通。是以,應當善于使用Ping的其他參數來進行故障排除。

案例三:A能Ping通B,B就一定能Ping通A嗎?

(1) 現象描述

組網圖如下:

精華 | 網絡故障排除指令彙總【網工必須收藏】

在RouterA上配置一條指向2.0.0.0/8的靜态路由:

RouterA(config)# ip route 2.0.0.0 255.0.0.0 1.1.1.1      

在RouterA 上Ping RouterB 的以太網位址2.2.2.2,顯示可以正常Ping通;但是在RouterB上Ping RouterA的以太網位址3.3.3.3,卻無法Ping通。

(2) 原因分析:

由于在RouterB 上卻沒有相應的配置到3.0.0.0/8 路由,是以從RouterB 上Ping不通RouterA的以太網口3.3.3.3 。

但是為何在A上可以Ping 通2.2.2.2 呢?同樣是沒有回程路由呀?打開路由器上的IP封包調試開關發現,原來從RouterA上發出的ICMP封包的源位址填寫的是1.1.1.1而不是3.3.3.3,由于兩台路由器的s0口處于同一網段,是以響應封包可以順利到達RouterB。

(3) 建議和總結:

A能夠Ping通B則B一定能夠Ping通A(不考慮防火牆的因素),這句話的對錯取決于A和B到底是指主機還是指路由器。

  • 如果是指兩台主機,那麼這句話就是正确的。
  • 如果是指兩台路由器那就是錯誤的,因為路由器通常會有多個IP位址。現在就有如下問題:當從一台路由器上執行Ping指令它發出的ICMP Echo封包的源位址究竟選擇哪一個呢?實際情況是路由器選擇發出封包的接口的IP位址。

1.2 Traceroute 指令

1.原理

Traceroute是為了探測源節點到目的節點之間資料封包所經過的路徑。利用IP封包的TTL域在每經過一個路由器的轉發後減一,當TTL=0時則向源節點報告TTL逾時這個的特性。Traceroute首先發送一個TTL為1的Icmp request封包,是以第一跳發送回一個ICMP錯誤消息以指明此資料報不能被發送(因為TTL逾時),之後Traceroute再發送一個TTL為2的封包,同樣第二跳傳回TTL逾時,這個過程不斷進行,直到到達目的地,此時由于資料報中使用了無效的端口号(預設為33434)此時目的主機會傳回一個ICMP的目的地不可達消息,表明該Traceroute操作結束。Traceroute記錄下每一個ICMP TTL逾時消息的源位址,進而提供給使用者封包到達目的地所經過的網關IP位址。

2.功能

Traceroute 指令用于測試資料封包從發送主機到目的地所經過的網關,主要用于檢查網絡連接配接是否可達,以及分析網絡什麼地方發生了故障。

3.RGNOS平台的Traceroute指令

例如在銳捷RG系列路由器上,Traceroute指令的格式如下:

Traceroute host 『destination』      

例如:檢視到目的主機10.15.50.1 中間所經過的網關。

RG# traceroute 10.15.50.1
 Type esc/CTRL^c/CTRL^z/q to abort.
traceroute 192.168.0.1 ...... 
1 10.110.40.1            1 4 ms  5 ms  5 ms
 2 10.110.0.64            10 ms  5 ms  5 ms
 3 10.110.7.254          10 ms  5 ms  5 ms
 4 10.3.0.177              175 ms  160 ms  145 ms
 5 129.9.181.254        185 ms  210 ms  260 ms
 6 10.15.50.1              230 ms  185 ms  220 ms
Trace complete successfully.      

4.Windows平台的Tracert 指令

在PC機上或Windwos為平台的伺服器上,Tracert指令的格式如下:

tracert [ -d ] [ -h maximum_hops ] [ -j host-list ] [ -w timeout ] host      
  • -d不解析主機名;
  • -h指定最大TTL大小;
  • -j設定松散源位址路由清單;
  • -w用于設定UDP封包的逾時時間,機關毫秒;

    例如: 檢視到目的主機10.15.50.1 中間所經過的前兩個網關。

C:\>tracert -h 2 10.15.50.1
Tracing route to 10.15.50.1 over a maximum of 2 hops:
  1     3 ms     2 ms     2 ms  10.110.40.1
  2     5 ms     3 ms     2 ms  10.110.0.64
Trace complete.      

5.使用Traceroute指令進行故障排除

案例一:使用Traceroute指令定位不當的網絡配置點

(1) 現象描述

組網情況如下圖所示:

精華 | 網絡故障排除指令彙總【網工必須收藏】

某校園網中,RouterB和RouterC同屬于一個運作RIPv2路由協定的網絡,主機4.0.0.2通路資料庫伺服器5.0.0.2,使用者抱怨通路性能差。

(2) 相關資訊顯示

在主機上ping 5.0.0.2顯示如下:

C:\Documents and Settings\c>ping -n 10 -l 1000 5.0.0.2

Pinging 5.0.0.2 with 1000 bytes of data:
Reply from 5.0.0.2: bytes=1000 time=552ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5735ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=551ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5734ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=549ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5634ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=555ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5738ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=455ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5811ms TTL=250      

原因分析

上面的Ping顯示出一個規律:奇數封包的傳回時長短,而偶數封包傳回時長很長(是奇數封包的10倍多)。可以初步判斷奇數封包和偶數封包是通過不同的路徑傳輸的。現在我們需要使用Traceroute指令來追蹤這不同的路徑。在RouterC上,Traceroute遠端RouterA的以太網接口5.0.0.1。

RouterC(config)#traceroute
 Target IP address or host: 5.0.0.1
Maximum number of hops to search for target [30]:10
Repeat count for each echo[3]:8
Wait timeout milliseconds for each reply [2000]:

Type esc/CTRL^c/CTRL^z/q to abort.
traceroute 5.0.0.1 ......
1    6 ms  4 ms  4 ms  4 ms  4 ms  4 ms  4 ms  4 ms   4.0.0.1
  。。。。。。(中間省略)
5  20 ms  16 ms  15 ms  16 ms  16 ms  16 ms  16 ms  16 ms  3.0.0.2
6  30 ms  278 ms  25 ms  279 ms  25 ms  278 ms  25 ms  277 ms  5.0.0.1
RouterC(config)#      

從上面的顯示可看到,直至3.0.0.2,UDP探測封包的傳回時長都基本一緻,而到5.0.0.1時,則發生明顯變化,呈現奇數封包時長短,偶數封包時長長的現象。于是判斷,問題發生在RouterB和RouterA之間。

通過詢問該段網絡的管理者,得知這兩路由器間有一主一備兩串行鍊路,主鍊路為2.048Mbps(s0口之間),備份鍊路為128Kbps(s1口之間)。網絡管理者在此兩路由器間配置了靜态路由。

RouterB上如下配置:

RouterB(config)# ip route 5.0.0.0 255.0.0.0 1.0.0.2
RouterB(config)# ip route 5.0.0.0 255.0.0.0 2.0.0.2
RouterA上如下配置:
RouterA(config)# ip route 0.0.0.0 0.0.0.0 1.0.0.1
RouterA(config)# ip route 0.0.0.0 0.0.0.0 2.0.0.1      

于是問題就清楚了。例如RouterB,由于管理者配置時沒有給出靜态路由的優先級,這兩條路由項的管理距離就同為預設值1,于是就同時出現在路由表中,實作的是負載分擔,而不能達到主備的目的。

(3) 處理過程

可以有兩種處理方法:

  • 繼續使用靜态路由,進行配置更改

    RouterB上進行如下更改:

RouterB(config)# ip route 5.0.0.0 255.0.0.0 1.0.0.2 (主鍊路仍使用預設1)
RouterB(config)# ip route 5.0.0.0 255.0.0.0 2.0.0.2 100(備份鍊路的降低至100)      

RouterA上進行如下更改:

RouterA(config)# ip route 0.0.0.0 0.0.0.0 1.0.0.1
RouterA(config)# ip route 0.0.0.0 0.0.0.0 2.0.0.1 100      

這樣,隻有當主鍊路發生故障,備份鍊路的路由項才會出線在路由表中,進而接替主鍊路完成封包轉發,實作主備目的。

  • 在兩路由器上運作動态路由協定,如OSPF,但不要運作RIP協定(因為RIP協定是僅以hop作為Metric的)

(4) 建議和總結

本案例的目的不是為了解釋網絡配置問題,而是用來展示Ping指令和Traceroute指令的互相配合來找到網絡問題的發生點。尤其在一個大的組網環境中,維護人員可能無法沿着路徑逐機排查,此時,能夠迅速定位出發生問題的線路或路由器就非常重要了。

案例二:使用Traceroute指令發現路由環路

(1) 現象描述

組網情況如下圖所示:

精華 | 網絡故障排除指令彙總【網工必須收藏】

三台路由器均配置靜态路由,完成後,登入到RouterA上Ping主機4.0.0.2,發現不通。

(2) 相關資訊顯示

RouterA# ping  4.0.0.2
Sending 5, 100-byte ICMP Echos to 4.0.0.2,
timeout is 2000 milliseconds.
.....

Success rate is 0 percent (0/5)
RouterA# traceroute 4.0.0.2
 Type esc/CTRL^c/CTRL^z/q to abort.
traceroute 4.0.0.2 ......
1  6 ms  4 ms  4 ms   1.0.0.1(RouterB)
 2  8 ms  8 ms  8 ms   1.0.0.2(RouterA)
 3  12 ms  12 ms  12 ms 1.0.0.1(RouterB)
 4  16 ms  16 ms  16 ms 1.0.0.2(RouterA)
 。。。。。。      

(3) 原因分析

從上面的Traceroute指令的顯示可以立即發現,在RouterA和RouterB間産生了路由環路。由于是配置的是靜态路由,基本可以斷定是RouterA或RouterB的靜态路由配置錯誤。

檢查RouterA的路由表,配置的是預設靜态路由:​

​ip route 0.0.0.0 0.0.0.0 1.0.0.1​

​,沒有問題。

檢查RouterB的路由表,配置到4.0.0.0網絡的靜态路由為:​

​ip route 4.0.0.0 255.0.0.0 1.0.0.2​

​――下一跳配置的是1.0.0.2,而不是3.0.0.1。這正是錯誤所在。

(4) 處理過程

修改RouterB的配置如下:

RouterB(config)# no ip route 4.0.0.0 255.0.0.0 1.0.0.2
RouterB(config)# ip route 4.0.0.0 255.0.0.0 3.0.0.1      

故障排除。

(5) 建議和總結

Traceroute指令能夠很容易發現路由環路等潛在問題。當路由器A認為路由器B知道到達目的地的路徑,而路由器B也認為路由器A知道目的地時,就是路由環路發生了。使用Ping指令隻能知道接收端出現逾時錯誤,而Traceroute能夠立即發現環路所在――如果Traceroute指令兩次或者多次顯示同樣的接口。

當通過Traceroute發現路由環路後,如果配置為:

  • 靜态路由:幾乎可以肯定是手工配置有問題,如本案例所示。
  • OSPF協定:可能是位址聚合産生的問題。
  • 多路由協定:可能是路由引入産生的問題。

1.3 Show指令

Show指令是用于了解路由器的目前狀況、檢測相鄰路由器、從總體上監控網絡、隔離互連網絡中故障的最重要的工具之一。幾乎在任何故障排除和監控場合,Show指令都是必不可少的。

例如:基于RGNOS路由平台的Show指令選項如下所示:

RG#show ?
  access-group           MAC access-group
  access-lists           List access lists
  accounting             Accounting configurations parameters
  address-bind           address binding table
  AggregatePort          AggregatePort IEEE 802.3ad
  arp                    ARP table
  class-map              Show QoS Class Map
  clock                  Display the system clock
  cluster                Cluster information
  configure              Contents of Non-Volatile memory
  cpu                    CPU statistics
  debugging              State of each debugging option
  detect                 detect user ip
  dot1x                  IEEE 802.1X information
  file                   Show filesystem information
  gvrp                   GVRP configure command
  host                   IP dns host table
 interfaces             Interface status and configuration
  ip                     IP information
  ip-auth-mode           Show IP authentication mode
  key                    Key information
  line                   TTY line information
  lldp                   LLDP information
  logging                Show the contents of logging buffers
  mac                    MAC information
 mac-address-table      MAC forwarding table
  member                 Show members information
  memory                 Memory statistics
  mls                    Show MultiLayer Switching information
  monitor                Show a SPAN session
  policy-map             Show QoS Policy Map
  port-security          Show secure port information
  privilege              Show current privilege level
  radius-server          Show RADIUS query parameters
  rate-control           Rate control configuration information
  reload                 Halt and perform a cold restart
  rmon                   rmon statistics
  running-config         Current operating configuration
  security               Security Settings
  service                Show network management services
  smp-server             SMP Server Parameters
  snmp                   snmp statistics
  snmp-server            Show SNMP parameters
  sntp                   show sntp parameter
  spanning-tree          Spanning tree topology
  storm-control          Show packet storm control configuration
  time-range             Show time-range information
  version                System hardware and software status
  vlan                   VLAN status      

在此僅介紹部分最常用的、全局性的show指令。

1. Show Version指令

Show Version指令是最基本的指令之一,它用于顯示路由器硬體和軟體的基本資訊。因為不同的版本有不同的特征,實作的功能也不完全相同,是以,檢視硬體和軟體的資訊是解決問題的重要一步。在進行故障排除時,我們通常從這個指令開始收集資料。該指令将幫助使用者收集下列資訊:

  • RGNOS軟體版本
  • 是哪一系列的産品

    輸出示例如下,請找到上述提及的相應項。

Switch #sh ver
System description      : Red-Giant Gigabit Intelligent Switch(S2126G) By
                          Ruijie Network
System uptime           : 1d:2h:41m:11s
System hardware version : 3.3
System software version : 1.66(3) Build Sep  7 2006 Rel
System BOOT version     : RG-S2126G-BOOT  03-02-02
System CTRL version     : RG-S2126G-CTRL  03-11-02
Running Switching Image : Layer2      

2.Show running-config和Show startup-config指令

  • Show running-config用于檢視目前的配置資訊。
  • Show startup-config用于顯示NVRAM或Flash中的路由器配置檔案,即路由器下次上電啟動時所用的配置檔案。

配置檔案為一文本檔案,其格式如下:

  • 以指令格式儲存;
  • 為節約空間,隻儲存非預設的常數指令;組織以指令模式為基本架構,同一指令模式的指令組織在一起,形式一節,節與節間以注釋行隔開(以“!”開始的語句為注釋行)
  • 節的順序安排:全局配置、實體接口配置、邏輯接口配置、路由協定配置等;
  • 以end為結束。

示例如下:

Switch#show running-config

System software version : 1.66(3) Build Sep  7 2006 Rel

Building configuration...
Current configuration : 287 bytes

!
version 1.0
!
hostname Switch
vlan 1
!
enable secret level 14 5 $2,1u_;C3&-8U0<D4'.tj9=GQ+/7R:>H
enable secret level 15 5 $2H.Y*T73C,tZ[V/4D+S(\W&QG1X)sv'
!
interface vlan 1
 no shutdown
 ip address 192.168.0.221 255.255.255.0
!
ip default-gateway 192.168.0.1
end

Switch#      

強烈建議維護或管理人員儲存一份啟動配置檔案的拷貝存放到路由器以外的其他裝置上。這有幾點好處:

  • 這将使維護人員能夠迅速配置一個替代的路由器;
  • 這個儲存在外部的文本檔案也可以按上述規定的格式脫機編輯然後使用Download指令加載到路由器上;
  • 可以将該配置檔案通過E-mail形式發給相關廠商技術支援人員以幫助定位配置問題。

3.Show interface指令

​Show interface​

​​指令可以顯示所有接口的目前狀态,如果隻是想檢視特定接口的狀态,請在該指令後輸入接口類型和接口号,例如:​

​show interface FastEthernet 0/13​

​指令将檢視以太口0/3的運作狀态和相關資訊。

Switch#show interface FastEthernet 0/13
Interface   : FastEthernet100BaseTX 0/13
Description :
AdminStatus : up
OperStatus  : up
Hardware    : 10/100BaseTX
Mtu         : 1500
LastChange  : 0d:22h:32m:50s
AdminDuplex : Auto
OperDuplex  : Full
AdminSpeed  : Auto
OperSpeed   : 100
FlowControlAdminStatus : Off
FlowControlOperStatus  : Off
Priority    : 0
Broadcast blocked         :DISABLE
Unknown multicast blocked :DISABLE
Unknown unicast blocked   :DISABLE      

1.4 Clear指令

在介紹完畢Show指令的基本使用後,必須提及一下Clear指令的作用――用于清空目前的統計資訊以排除以前積累的資料的幹擾。

Clear指令中最主要的是Clear counters指令。對于端口收發的各計數器的重新整理必須使用Clear counters,可通過show interface指令來觀察。

Clear指令适用場合如下:

許多情況下,我們需要使用帶參數的Ping指令來測試鍊路的通斷,同時在一段時間内Ping後,通過​

​Show ip interface x/x counters​

​指令來檢視端口封包的收發及CRC校驗等情況的正确與否,進而分析封包的收發在什麼地方出現了問題。但show指令的顯示值是自從路由器運作以來(或上次Clear後)的所有統計值,這個值是無法分析的。是以,實際我們需要進行的步驟為:首先使用​

​Clearcounters​

​指令清空統計值,然後使用一系列Ping指令使路由器端口收發封包,最後使用Show指令來檢視統計值。

例如:通過​

​Show interface FastEthernet 0/13 counters​

​觀察到端口有如下統計資料:

Interface : Fa0/13
5 minute input rate  : 76208 bits/sec, 53 packets/sec
5 minute output rate : 340600 bits/sec, 53 packets/sec
InOctets             : 53193982
InUcastPkts          : 253095
InMulticastPkts      : 32
InBroadcastPkts      : 10655
OutOctets            : 416202081
OutUcastPkts         : 336100
OutMulticastPkts     : 1740
OutBroadcastPkts     : 12981
Undersize packets    : 0
Oversize packets     : 0
collisions           : 0
Fragments            : 0
Jabbers              : 0
CRC alignment errors : 16
AlignmentErrors      : 0
FCSErrors            : 0
dropped packet events (due to lack of resources): 0
packets received of length (in octets):
  64:157041, 65-127: 127987, 128-255: 10115,
  256-511: 7169, 512-1023: 14593, 1024-1518: 297698      

我們發現端口收發有了錯誤,但這些錯誤是否是最近産生的呢?可用​

​Clear counters interface FastEthernet 0/13​

​​來進行重新整理,再通過Ping一組封包測試路由器端口的收發,最後再使用​

​Show interface FastEthernet 0/13 counters​

​看結果統計。如果仍然顯示發生錯誤,那麼我們就需要分析原因進行故障排除了。

1.5 Debug指令

1. Debug指令概述

RG系列産品提供大量的debug指令支援,可以幫助使用者在網絡發生故障時獲得路由器中交換的封包和幀的細節資訊,這些資訊對網絡故障的定位是至關重要的。

打開相應的調試開關

例如:打開IP packet調試開關,指令為:

RG# debug ip packet      

2. Debug指令使用注意事項

由于調試資訊的輸出在CPU進行中賦予了很高的優先級,許多形式的debug指令會占用大量的CPU運作時間,在負荷高的路由器上運作debug指令可能引起嚴重的網絡故障(如網絡性能迅速下降)。但debug指令的輸出資訊對于定位網絡故障又是如此的重要,是維護人員必須使用的工具。是以,我們總結了一些使用debug指令的注意要點,如下:

  1. 應當使用debug指令來查找故障,而不是用來監控正常的網絡運作。
  2. 盡量在網絡使用的低峰期或網絡使用者較少時使用,以降低debug指令對系統的影響性。
  3. 在沒有完全掌握某debug指令的工作過程以及它所提供的資訊前,不要輕易使用該debug指令。
  4. 不要輕易使用類似debug all之類将産生大量輸出的指令。僅當尋找某些類型的流量或故障并且已将故障原因縮小到一個可能的範圍時,才使用某些特定的debug指令。
  5. 在使用debug指令獲得足夠多的資訊後,應立即以“no debug xx”指令終止debug指令的執行。

可以使用​

​show debugging​

​​指令檢視目前已打開哪些調試開關并使用相應指令關閉;或幹脆使用​

​no debug all​

​指令關閉所有調試開關。

案例一:忘記關閉debug開關引起的路由器封包轉發速度變慢的故障排除

(1) 現象描述

某電信局安裝了RG路由器作為接入伺服器的出口網關,一段時間運轉良好。某日使用者反映該裝置明顯速度變慢。執行PING操作,PING對端路由器裝置,所用時間為正常的2倍多。

(2) 相關資訊收集

該路由器的日志中記錄了大量的收發IP封包的資訊。

(3) 原因分析

初步分析可能有以下幾種原因:

  • 線路品質不好。
  • 對端裝置問題,導緻回應較慢。
  • 自身配置錯誤
  • 網絡繁忙
  • 軟硬體故障

(4) 處理過程

  • 檢查線路,沒有發現問題;
  • PING與之相連的其他路由器裝置,故障依舊,說明對端裝置無問題;
  • 對照以前運轉良好時備份的Running-config檔案,檢查路由器上的配置,沒有錯誤;
  • 當時并非上網高峰期,且隻是變慢,而無丢包,應當不是網絡負荷問題;
  • 檢查該路由器的日志資訊,發現其中記錄了大量的收發IP封包的資訊,執行指令​

    ​show debugging​

    ​​指令,發現該路由器的​

    ​debug ip packet​

    ​處于打開狀态。由于裝置需要記錄每一個被轉發的IP封包,大大降低了路由器的處理速度,導緻變慢。

關閉該debug開關後,故障排除。

(5) 建議與總結

山重水複疑無路,柳暗花明又一村。排除此類故障時應該想一下debug開關的問題。

案例二:通過序列槽telnet到路由器,在該序列槽上打開debug指令産生問題

當遠端調試RG路由器時,有時需要通過某個序列槽telnet上該路由器,如果該序列槽上的鍊路層協定封裝的是FR、PPP或HDLC,千萬不能打開該序列槽相應的鍊路層調試開關(可以打開其他序列槽的鍊路層調試開關),否則由于資料流量太大,會使該序列槽的協定down掉。

3.show指令和debug指令的配合使用

Show指令能夠提供某個時間的裝置運作狀況的視圖(靜态),而debug指令能夠展示一段時間内裝置運作的變化情況(動态)。是以,要在故障排除時了解系統運作的總體情況,必須同時使用這兩個指令。例如:當進行OSPF協定的故障排除時,需要使用​

​show ip route​

​​指令來了解路由器目前已經知道了哪些路由表項,需要使用​

​debug ip ospf events​

​指令來了解路由表是如何更新的。如果不知道路由表的目前内容,路由更新的資訊對故障排除是不夠的。Debug指令并不能直接告訴你裝置已知到的資訊,而show指令則不能告訴路由表的變化情況,兩者的配合使用,才能全面了解正在發生的事情。

繼續閱讀