當遇到網絡故障時每個網絡管理員都會很頭疼。因為互聯網布局復雜,要進行故障排查的話不是一件輕松的活。筆者這裡跟大家分享一下如何通過Trace命令來幫助管理員進行網絡故障排查。希望這篇文章能夠給網絡管理員提供一個解決問題的思路。Trace命令主要用來跟蹤數據包的傳輸過程,可以向網絡管理員提供路由器到目的地地址的每一跳信息。主要是通過控制IP報文的生存期字段來實現這個目的。
一、Trace命令的原理
Trace命令提供路由器到目的地址的每一跳的信息。他通過控制IP報文的生存期(英文簡稱為TTL)字段來實現。為了獲得往返延遲的時間信息,Trace命令會發送三個報文顯示平均延遲時間。然後命令會將報文的TTL字段加1並在此發送這三個報文。這些報文將達到路徑的第二個路由器上,並返回超時錯誤或者端口不可達的信息。反復使用這個方法,不斷增加報文的TTL字段的值,直到接收到目的地址的響應消息。
上面這麼說可能有點繞口令。筆者這裡舉一個簡單的例子來說明。如果現在有用戶反映他們不能夠訪問公司的網站,但是可以訪問其他網頁。此時網絡管理員該如何處理呢?網絡管理員懷疑是連接那個網站的路由器出現了問題。此時就可以利用 Trace + 被懷疑有故障的路由器IP地址的方式,來跟蹤數據包到這個路由器的整個過程。這個Trace命令會列舉出從管理員路由器到那個被懷疑出現故障路由器之間所有的路由器連接信息。如此的話,網絡管理員就可以發現是中間那個路由器出現了問題。這將幫助管理員迅速定位出問題的路由器。如果最後網絡管理員受到了來自那個被懷疑路由器的反應信息,則表明跟那個路由器之間的連接時沒有問題的。這就表明問題可能不出在路由器身上,而有可能是那個WEB服務器在搞怪。
二、如何讀懂Trace命令返回的消息
要利用Trace命令來排查網絡故障,則讀懂Trace返回報文的含義這是最基礎的。還好Trace命令返回的報文並不復雜,比較容易看懂。
MSEC表示路由器在接收到響應消息之前的往返網絡延遲,這是以毫秒為單位。在網絡中從發送方和接受方之間交換數據,接受方收到數據和發送方發送數據之間的時間差就是網絡延遲。也就是說,從路由器發送消息到下一個路由器接收到消息並做出響應中間會有一個時間的間隔。這個間隔就是網絡延遲。造成網絡延遲的原因有很多,比如在物理線路上電磁波傳播要時間,在網絡中間設備轉發數據包也要時間,受網絡帶寬限制,發送數據也要時間,還有其他的排隊時延等。從理論上來說,這個時間間隔為零為好,但是實際上做不到。在采用Trace命令時,只有第一跳的MSEC時間可能為0,達到自己路由器接口的時間。為此在網絡性能優化時,不能夠消除這個網絡延遲,而只能夠把這個延遲盡量的縮短。若最終能夠出現這個信息,至少說明跟對方的連接是通的。此時網絡管理員要考慮的是,這個延遲的時間是否在可以容忍的范圍之內。如果網絡雖然通了,但是延遲時間比較長則管理員仍然需要進行網絡調整。要把這個網絡延遲的時間控制在可以忍受的范圍之內。