Cisco設備Show Interface命令詳解
結合Cisco路由器性能測試一書,最近想根據實際操作經驗,對Show Interface命令作一個完整的詳細解讀。Show Interface命令的輸出信息量大,包含了該接口方方面面的統計信息,如下所示:
Router#show interfaces fastethernet 3/0
FastEthernet3/0 is up, line protocol is up
Hardware is TSWITCH, address is 00e0.f7a4.5130 (bia 00e0.f7a4.5130)
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, rely 255/255, load 1/255
Encapsulation ARPA, loopback not set, keepalive set (10 sec)
Half-duplex, 100BaseTX
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:05:30, output 00:00:00, output hang never
Last clearing of "show interface" counters never
Queueing strategy: fifo
Output queue 0/40, 0 drops; input queue 0/75, 0 drops
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
312 packets input, 18370 bytes, 0 no buffer
Received 216 broadcasts, 0 runts, 0 giants, 0 throttles
3 input errors, 0 CRC, 0 frame, 0 overrun, 3 ignored, 0 abort
0 input packets with dribble condition detected
15490 packets output, 1555780 bytes, 0 underruns
2 output errors, 0 collisions, 2 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier
2 output buffer failures, 0 output buffers swapped out
爲了便於敘述,逐條命令註釋如下:
Router# show interfaces fastethernet 3/0
FastEthernet3/0 is up
表示硬件接口是up
如果主動把接口關閉顯示的狀態是administratively down
如果路由器在活動間隔內收到5000個以上的錯誤,單詞Disabled將出現在此字段中
Line protocol is up
這說明軟件判斷下來此接口是可用的,下面談到的Keepalive字段可用於該檢測
Hardware is TSWITCH, address is 00e0.f7a4.5130 (bia 00e0.f7a4.5130)
此接口所用硬件叫做TSWITCH,接口MAC爲00e0.f7a4.5130(bia全稱爲burned-in address)
MTU 1500 bytes
數據鏈路層(二層)規定的最小傳輸單元的長度, 該值可用接口命令mtu xxx調節,關於二三層MTU的配置,在文章《ospf路由器形成鄰接關係的必要條件》有所涉及,請看這裏。
BW 100000 Kbit,DLY 100 usec
這兩個是參考值,默認值是檢測硬件得出的,所以通常情況下是定值(串口可能由DSU/CSU的時鐘速率決定),如下表:
當然這兩個值也可以用命令調節,目的是爲了高層協議的策略考慮。譬如OSPF的cost計算要用到BW;而EIGRP會用到BW和DLY,下圖爲不同接口類型的默認帶寬和延遲:
Rely 255/255
Rely輸出衡量了該接口在最近5分鐘之內的可靠性,如過該接口是以太網介質,則Rely代表以太網封裝的CRC的正確率,255/255表示100%正確。如果這個值過低,可能物理層鏈路干擾太大。
Load 1/255
Load衡量了該接口的流量負載(很有用!)。該實驗接口的輸出只顯示一個load值,而在目前觀察到的大多數設備上都有發送(Txload)和接收(rxload)兩個方向上的參數,各位有興趣可以拿手邊的路由器看一下。
Encapsulation ARPA
表示此接口的數據鏈路層封裝爲目前最常用的Ethernet II(最初在RFC 894中定義,具體封裝格式請參見TCP/IP詳解卷一第16頁)
Loopback not set
表示該接口不是loopback
Keepalive set (10 sec)
Keepalive是一種保活機制,該機制會每隔一段時間在接口上發送類似於“Hello”的信令,以檢測對端接口時候仍然有效。如本例中的"keepalive 10 sec"表示:
1)每10s檢測一次
2)10s之內如果沒有收到對方的信令則認爲對方的line protocol down了
Keepalive時間段可用接口命令更改,命令“no keepalive”可禁用該保活機制。
Half-duplex, 100BaseTX
表示接口工作在半雙工,並遵循100BaseTX物理層規範,基帶速度爲100Mbit/s。關於接口雙工模式更改的配置,會牽涉到speed和duplex的命令組合,我曾在真機上測試過不同組合類型,會在以後文章中詳細說明。
ARP type: ARPA, ARP Timeout 4:00:00
ARP協議類型爲ARPA,ARP緩存壽命爲4小時
Last input 00:05:30, output 00:00:00
表示接口在多少時間以前輸入或輸出最後一個幀,該輸出可用於判斷接口何時出現故障
output hang never
cisco文檔宣稱此參數是接口由於上次的某個傳輸時間太長而重啓後所經過的時間,一般會是“never”
Last clearing of "show interface" counters 0:56:40
表示離上次執行“clear counters”命令之後經歷了多少時間,“clear counters”命令可以把除last input/output的“show interfaces”計數器全部清零,這可以方便排錯
Queueing strategy: fifo
說明該接口採用默認傳統的先入先出隊列機制
Output queue 0/40, 0 drops; input queue 0/75, 0 drops
該輸出顯示了入站隊列和出站隊列的排隊情況,從這兩個參數可看出可能發生的擁塞情況:
如果出站隊列丟失過多,這通常是與設備相連的物理層鏈路負載太大有關
如果入站隊列丟失過多,這通常和路由器的性能有關, 但這種情況不太會發生
還要注意的是:如果這個接口啓用了包交換,則入站隊列的數據包都是CPU直接處理的數據包,關於包交換和包路由的區別,詳見這裏。
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
該接口5分鐘內入出站(在混亂模式下)的比特流和數據包的傳輸速率,請注意以下幾點:
1)要算多個5分鐘內這些數值的平均值,數據纔會準確。
2)該輸出可用於計算數據包的平均長度。
312 packets input, 18370 bytes
自系統加電以來,設備接口收到的無錯誤總數據包數和總字節數;注意這裏的“byte”也包括3層和2層報頭。
0 no buffer
這裏的參數意爲數據包由於路由器內部緩存不夠而不得不丟棄的次數,可以和throttle輸出結合起來看。注意:
1)如果該錯誤發生次數不多,可能和暫時的廣播風暴有關。
2)如果經常發生,則可能因爲路由器需要增加更多的內存。
在本例中,該值爲0表示路由器工作正常。
Received 216 broadcasts
接受到的廣播和多播分組總數,和packets input參數結合起來可算出自加電以來廣播和多播佔所有數據包的比例,此例中爲69%
0 runts
在英文裏意爲“矮子”,此參數說明接口丟棄的數據長度比協議規定最小長度還小的數據包數量,譬如以太網規定在物理鏈路上所接受的最小數據長度爲72字節。(注意:72這一數值爲:46+18+8。46:以太網所允許最小數據包的長度;18:ARPA以太網的報頭長度;8:表示前導符(7字節)+SFD(1字節))
如果此錯誤過多,則問題可能出在物理層鏈路(譬如衝突)或設備物理接口上。
0 giants
在英文裏意爲“巨人”,此參數說明接口丟棄的數據長度比協議規定最大長度還大的數據包數量,譬如以太網規定在物理鏈路上流動的最大數據長度爲1526字節。(同上,1526=1500+18+8)
如果此錯誤過多,則問題可能出在物理層鏈路(譬如滯後衝突)或設備物理接口上。
0 throttles
這個參數過多不是說路由器的通信問題,而和路由器的內存和CPU有關。意爲:路由器由於性能吃緊的原因,向接口數據流“關閉大門”而被丟棄的數據包數。可以和no buffer結合起來看。
3 input errors
這裏顯示了所有入站數據包發生錯誤的總和;由於一個數據包可能會遇到多個錯誤,所以該值不一定等於分類統計值的總和。
0 CRC
該參數表示由於遇到CRC重算後不匹配的情況,而被丟棄的數據包數。這通常由於物理層的干擾所致。
0 frame
該參數表示因爲遇到了CRC錯誤,而被丟棄的數據包數。這通常由於物理層的干擾所致。
0 overrun
該參數表示接受設備由於對端傳得太快,而無法接受數據量的次數。我想這可能是由於物理層接口設備的緩存不足或設備故障所致。
3 ignored
該參數表示由於接口緩存不足而丟棄數據包的個數。可以後overrun結合起來看。廣播風暴和物理層線路干擾可能導致這個計數器增加。
0 abort
該參數表示該接口接受到一半但突然中斷的數據包個數。
0 input packets with dribble condition detected
該參數表示數據包稍微有點長,但還是被設備接受的個數。
15490 packets output, 1555780 bytes
自系統加電以來,設備接口發出的無錯誤總數據包數和總字節數;注意這裏的“byte”也包括3層和2層報頭。
0 underruns
該參數表示路由器的傳輸器運行太快以至於路由器本身無法跟上的次數。
2 output errors
這裏顯示了所有出站數據包發生錯誤的總和;由於一個數據包可能會遇到多個錯誤,所以該值不一定等於分類統計值的總和。
0 collisions
該參數表示由於遭遇以太網衝突而重傳的數據包個數。這通常因爲物理層鏈路太忙了,譬如遇到廣播風暴了。
2 interface resets
該參數表示接口完全重啓的次數。導致的原因可能是:出站的數據包不發出去長達數秒之久,物理層設備問題,重啓等等。
0 babbles
該參數表示傳輸計數器超時的次數。
0 late collision
該參數表示在接口在傳了前導符之後而又發生衝突的次數。這通常由於物理層鏈路過長,檢測衝突的時間也滯後了。
0 deferred
該參數表示路由器由於某種原因延遲傳輸數據楨的次數。
0 lost carrier
一般和物理層鏈路故障有關。
0 no carrier
一般和物理層鏈路故障有關。
2 output buffer failures,0 output buffers swapped out
該參數表示由於“發送緩存”已滿的原因,而丟棄數據包的次數。這可能由於數據包發得太快,或物理層鏈路速度有問題。
結論:通過show interface,我們不僅可以瞭解接口的硬件和配置信息,通常在路由器發生軟件內部錯誤,物理層故障或和緩存相關問題的情況下,show interface可以的一些參數非常有助於排錯。Show interface還可用於監控接口進出的負載情況,幫助我們管理網絡流量等等作用。