網絡是數據中心最重要的組成部分,也是日常維護工作的重中之重,作為一名網絡運維的技術新手,有必要掌握一些基本的故障判斷技能,這樣往往可以在數據中心運行出現故障時,迅速找到故障點,及時排除故障。本文就是將一些常用的經典命令呈現出來,供廣大的網絡運維初學者學習使用。雖然這幾年出現了許多新的網絡技術,讓人看得眼花繚亂,面對這些新技術時,往往一頭霧水,無從下手,是否以往經驗積累下來的東西是否就不好用了,其實經典的東西永遠都不過時,網絡技術再發展也離不開傳遞信息的本質,所有的新技術都是在最普通的二、三層轉發基本之上演化來的,萬變不離其中。那么下面就來說一說這些經典好命令。
PING
PING恐怕是最古老的網絡診斷命令了,只要接觸到網絡的人一定知道它和使用過它。不過PING實際上有很多的妙用,學會真正地使用PING,往往能夠將故障范圍迅速縮小。如下是PING測試時可以帶的參數,我們可以通過攜帶這些參數,知道哪些長度的報文是不通的,回應報文延遲有多大,丟包率有多少等等。如今還有很多的PING測試工具,提供了更多圖形化的功能,可以進行快PING測試(比如1秒鐘之內PING數百個報文),多地址同時PING,支持統計PING記錄,將PING的結果通過圖形來呈現,還可以構造不同的PING測試IP和MAC地址。通過大量的PING測試,可以迅速掌握當前的數據中心故障位置在哪里,是哪臺設備可能出現了問題。再利用PING的各種參數,又可以知道具體的是哪類故障,比如是丟包還是不通,是全部地址都不通還是部分地址不通,將故障進行細化。PING是在數據中心網絡故障診斷時最不可缺少的診斷命令。
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS][-r count] [-s count] [[-j host-list] | [-k host-list]][-w timeout] target_name
Options:
-t Ping the specified host until stopped.
To see statistics and continue - type Control-Break;
To stop - type Control-C.
-a Resolve addresses to hostnames.
-n count Number of echo requests to send.
-l size Send buffer size.
-f Set Don't Fragment flag in packet.
-i TTL Time To Live.
-v TOS Type Of Service.
-r count Record route for count hops.
-s count Timestamp for count hops.
-j host-list Loose source route along host-list.
-k host-list Strict source route along host-list.
-w timeout Timeout in milliseconds to wait for each reply.
TRACERT
TRACERT也是和PING類似的診斷命令,TRACERT命令的特點是通過依次發送ICMP TTL等于網絡跳數報文,看網絡是否可達。TRACERT相比PING,可以迅速掌握達到目的地址所經歷的網絡跳數,是否可能存在路由環路,是否走了等價路由,中間哪一跳地址是不通的,都可以通過TRACERT獲知。不過很多網絡設備默認并沒有開啟TRACERT的回應功能,在使用TRACERT命令時,要確認網絡設備也開啟了此功能,否則可能會造成誤判。
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
Options:
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list.
-w timeout Wait timeout milliseconds for each reply.
流量統計
幾乎所有的網絡設備都支持流量統計,所謂的流量統計就是通過定義特定的流量,通過ACL進行流量計數統計,結合PING測試或者具體業務,然后通過流量統計確認報文丟棄的位置,明確故障設備。由于流量統計一般都是在設備的轉發芯片或者CPU上進行統計,流量統計的結果并不一定完全準確的,一個流量進入設備,在達到轉發芯片之前,還要經過端口光模塊、端口物理連接器、PHY器件、PCB布線等部分,如果是這些地方出現了問題,那么就會影響判斷的準確性,而這些器件處理的都是物理信號,也無法對報文流量進行統計,這時最好的方式就是在兩邊的設備端口上同時做流量統計,根據統計的結果來判斷。如果兩邊統計的結果不一致,那么再通過更換多端口來測試,這樣來明確故障的位置。流量統計的命令,不同的網絡設備配置方法各有不同,不再一一提及。
鏡像
鏡像也是在進行數據中心網絡故障排除時最常用的診斷方法,這時的故障往往是集中于應用層的,通過PING/TRACERT無法明確故障的。通過鏡像可以將特定的應用流量抓出來,然后對報文逐個分析,找出故障的原因。比如是報文有大量重傳還是有大量的錯包,是報文內容有錯還是報文出現亂序等,這些都通過鏡像一目了然。不過鏡像也有不少的限制,比如并不是所有的設備都能支持流鏡像,那么就需要對整個端口的流量進行鏡像,在流量比較大時,鏡像本身的流量太大也會占用設備帶寬,反到可能引發設備轉發擁塞。還有鏡像如果每秒鐘達到數百兆的流量,則沒有哪個筆記本可能長時間的做這種抓包。通過鏡像雖然可以將所有應用流量都抓出來,但是最終還是要通過筆記本來翻譯,所以筆記本性能是很大的瓶頸。當然網絡設備如果都支持流鏡像就不會遇到這類煩惱了。
重定向上CPU
很多時候,發生故障的都是無人職守的數據中心,現場根本沒有人,這樣就無法進行鏡像抓包,所以通過重定向的命令,將自己關注的業務流量重定向上CPU一部分,這樣來分析業務故障的可能性,通過打開上CPU報文的開關,就可以詳細看到流量抱文,這樣就可以進行深入分析。重定向上CPU對CPU是個考驗,很多數據中心交換機轉發芯片能力很強,但是CPU很弱,如果將大量的業務流量重定向上CPU,可能會將CPU沖跨,所以這種診斷使用時要慎重,而且重定向的方式改變原有的業務流量而上CPU。如果原來的業務僅僅是丟報而已,通過重定向上CPU后,將使得業務全部中斷,所以使用時要慎重。還有一些網絡設備提供鏡像上CPU的功能,有這樣的功能可以在不影響業務的情況下,將流量鏡像上CPU,將故障問題再一一查明,重定向的命令也是不同設備也有差異,但是實現原理都差不多,可以很快上手使用。
NET
服務器有一些NET相關的常用命令。比如:通過net view顯示當前工作組服務器列表,通過net user顯示服務器上用戶帳號的列表,通過net use查看網絡連接,通過net session還可以查看連接記錄,net share查看服務器的共享資源,通過這些命令可以對服務器的網絡運行情況有個基本了解,再結合PING/TRACET可以很快找到問題設備,及時將故障排除。
除了以上這些命令和方法,還有很多技巧,針對不同的網絡協議、網絡應用都會有不同的分析方法。但是不管是哪些應用,在分析故障時,依然都離不開PING、TRACERT、流量統計、鏡像、重定向、NET等等。作為一名網絡維護新手,應該將這些診斷方法吃透,將有助于縮減查找到數據中心故障根源的時間。