當使用ping命令測試時出現丟包或網路不通,可以通過鏈路測試載入器定位問題原因。本文介紹如何使用MTR工具進行鏈路測試,並提供分析結果的思路。
測試流程
通常情況下,鏈路測試流程如下圖所示。
您可以訪問IP地址查詢 - IPLark等網站,擷取本網對應的公網IP地址。
目標伺服器指代目標服務的網域名稱或者公網IP地址。
工具介紹
MTR是一款網路診斷工具,其將ping和traceroute的功能合并,相對於traceroute只會做一次鏈路跟蹤測試,mtr會對鏈路上的相關節點做持續探測並給出相應的統計資訊。因此,mtr能避免節點波動對測試結果的影響,所以其測試結果更準確。
如果您使用Linux系統,您可以通過安裝mtr軟體包來使用mtr。對於Windows系統,您可以選擇使用WinMTR。有關以上兩種工具的安裝及使用說明,請參考如下介紹。
mtr(Linux)
安裝說明
CentOS 6/7/8
Ubuntu/Debian
使用介紹
命令格式
mtr命令的格式如下所示,其中hostname指代服務網域名稱,ip指代服務的公網ip地址。
mtr [options] hostname/ip參數說明
常見的選擇性參數說明如下表所示,您也可以通過man mtr命令查看更多參數說明。
選擇性參數 | 參數說明 |
| 以報告模式顯示輸出。 |
| 將每次鏈路跟蹤的結果分別列出來。 |
| 指定ping資料包的大小。 |
| 不對IP地址做網域名稱反解析。 |
| 設定發送資料包的IP地址。 說明 該參數用於主機存在多個IP地址的情境。 |
-4 | 只使用IPv4協議。 |
-6 | 只使用IPv6協議。 |
運行mtr命令後,系統預設進入互動模式。在此模式下,您可以按?鍵或者h鍵以顯示協助菜單,並根據協助文檔的提示來控制mtr工具的行為或切換顯示視圖。
使用樣本
使用IPv4協議進行網路診斷。
sudo mtr -4 www.aliyun.com回顯結果樣本說明
以執行mtr 目標IP地址命令為例,返回結果如下:
My traceroute [v0.92]
i Z (1 l) 2024-11-25T13:25:18+0800
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.xxx 0.0% 20 2.0 2.1 1.8 2.4 0.2
2. 10.xxx 45.0% 20 2.6 3.0 2.3 7.7 1.6
3. 10.xxx 0.0% 20 2.3 2.2 2.0 2.4 0.1
4. 11.xxx 0.0% 20 4.1 5.8 3.6 16.1 3.8
5. 10.xxx 0.0% 20 4.8 4.4 4.2 4.8 0.1
6. 115.xxx 26.3% 20 4.3 4.4 4.3 4.6 0.1
7. 220.xxx 20.0% 20 5.6 5.1 4.9 5.6 0.1
8. ???
9. 58.xxx 0.0% 20 13.5 13.7 13.5 14.2 0.2
10. 58.xxx 31.6% 19 10.2 10.4 10.2 11.5 0.3
11. 58.xxx 0.0% 19 18.4 15.3 12.4 31.7 5.3
12. ???
13. ???
14. ???
15. 180.xxx 0.0% 19 9.0 9.0 8.8 9.1 0.1預設配置下,返回結果清單中各資料項目的說明如下。
參數 | 參數說明 |
Host | 節點IP地址和網域名稱。您可以按 |
Loss% | 節點丟包率。 |
Snt | 已發送資料包數。預設值是10,可以通過參數 |
Last | 最近一次的探測延遲值。 |
Avg | 探測延遲的平均值。 |
Best | 探測延遲的最小值。 |
Wrst | 探測延遲的最大值。 |
StDev | 標準差。該值越大說明相應節點越不穩定。 |
WinMTR(Windows)
安裝說明
下載WinMTR後無需安裝,直接解壓運行即可,操作方法非常簡單,操作步驟如下。
前往WinMTR官網,下載WinMTR。
下載完成後,解壓檔案並進入
WinMTR-v092 > WinMTR-v092 > WinMTR_x64目錄,雙擊 WinMTR 應用程式啟動工具。啟動後介面頂部包含 Host 輸入框,可輸入目標主機地址,然後單擊 Start 開始鏈路檢測。
使用介紹
在Host中,輸入目標伺服器網域名稱或IP地址。
重要輸入的目標伺服器網域名稱或IP地址不能包含空格。
單擊 Start 開始測試後,路由跟蹤結果將以表格形式展示,包含 Hostname、Nr、Loss%、Sent、Recv、Best、Avrg、Worst、Last 等列。
您還可以使用其他功能或設定其他參數,功能及參數說明如下:
功能或參數
參數說明
Copy Text to clipboard
將測試結果以文字格式設定複製到剪貼簿。
Copy HTML to clipboard
將測試結果以HTML格式複製到剪貼簿。
Export TEXT
將測試結果以文字格式設定匯出到指定檔案。
Export HTML
將測試結果以HTML格式匯出到指定檔案。
Options
選擇性參數,包括如下設定:
Interval(sec):每次探測的間隔時間。預設為1秒。
Ping size(bytes):PING探測所使用的資料包大小,預設為64位元組。
Max. hosts in LRU list:LRU列表支援的最大主機數,預設值為128。
Resolve names:通過反查IP地址以網域名稱顯示相關節點。
單擊Start,開始測試。
開始測試後,Start會自動變成Stop,WinMTR自動顯示測試結果。
運行一段時間後,單擊Stop停止測試。
回顯結果樣本說明
以測試目標伺服器網域名稱為例,返回樣本如下:
WinMTR 返回的路由跟蹤結果以表格形式展示各跳數節點的網路狀況。樣本中共約 13 個節點,部分節點存在較高丟包率(如 40%、71%、90%),末尾節點顯示 No response from host,表示目標主機未響應。
預設配置下,返回結果中各資料項目的說明如下:
參數 | 參數說明 |
Hostname | 節點IP地址和網域名稱。 |
Nr | 節點編號。 |
Loss% | 節點丟包率。 |
Sent | 已發送的資料包數量。 |
Recv | 已成功接收的資料包數量。 |
Best | 節點延遲的最小值。 |
Avg | 節點延遲的平均值。 |
Worst | 節點延遲的最大值。 |
Last | 節點延遲的最後一次值。 |
StDev | 標準差。該值越大說明相應節點越不穩定。 |
結果分析指南
由於mtr命令有更高的準確性,本文以mtr命令測試結果為例,對鏈路測試結果的分析進行簡要說明。後續的說明,均以如下鏈路測試結果樣本圖為基礎進行闡述。
My traceroute [v0.92]
i sZ (1 1) 2024-11-25T10:52:08+0800
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.xxx 5.0% 199 1.9 2.0 1.8 12.0 0.7
2. 11.xxx 41.2% 199 2.2 2.5 2.1 15.1 1.5
3. 11.xxx 0.0% 199 2.3 2.4 2.2 8.7 0.6
4. 11.xxx 0.0% 199 3.8 6.7 3.4 244.1 25.2
5. xxx 0.5% 199 4.2 4.3 4.1 11.8 0.6
6. 115.xxx 21.1% 199 4.8 4.6 4.5 6.8 0.3
7. 115.xxx 63.8% 199 7.4 9.6 7.4 26.8 4.7
8. 202.xxx 52.3% 199 11.6 11.7 11.5 12.9 0.2
9. 58.xxx 30.3% 199 16.5 16.7 16.4 33.5 1.5
10. 58.xxx 4.0% 199 14.5 14.5 14.5 15.6 0.1
11. 58.xxx 0.0% 199 17.8 18.6 17.6 38.0 3.1
12. ???
13. ???
14. ???
15. 186.xxx 0.0% 199 14.4 14.3 14.3 15.3 0.1網路地區說明
通常情況下,從用戶端到目標伺服器的整個鏈路顯著包含以下幾個網路地區。關於網路地區的說明及對應地區的異常處理建議,請參閱以下內容。
用戶端本網
本地區域網路和本網供應商網路,如前文鏈路測試結果樣本圖中的地區A,該地區的異常可以分為兩種。
如果是用戶端本網相關節點出現異常,則需要對本網進行相應排查分析。
如果是本網供應商網路相關節點出現異常,則需要向當地電訊廠商反饋問題。
電訊廠商網路
電訊廠商網路,如前文鏈路測試結果樣本圖中的地區B,可能會經過多個骨幹網路。如果該地區出現異常,可以根據異常節點IP地址查詢該IP地址歸屬的電訊廠商,然後直接或通過阿里雲售後支援人員,向相應電訊廠商反饋問題。
目標伺服器本網
目標主機歸屬網路供應商網路,如前文鏈路測試結果樣本圖中的地區C,如果該地區出現異常,則需要向目標主機歸屬網路供應商反饋問題。
如果中間鏈路某些部分啟用了鏈路負載平衡,則mtr命令只會對首尾節點進行編號和探測統計。中間節點只會顯示相應的IP地址或網域名稱資訊。
指標分析思路
要對網路鏈路連通性或網路效能進行分析,可以基於Loss%(丟包率)、Avg(平均值)、StDev(標準差)以及延遲指標來進行綜合分析判斷,以下介紹基於以上指標分析鏈路連通性的基本思路。
Loss%(丟包率)
任一節點的Loss%(丟包率)如果不為零,則說明這一跳網路可能存在問題。導致相應節點丟包的原因通常有如下兩種:
電訊廠商基於安全或效能需求,人為限制了節點的ICMP發送速率,導致丟包。
節點確實存在異常,導致丟包。此時您可以結合異常節點及其後續節點的丟包情況,來判定丟包原因:
如果隨後節點均沒有丟包,則通常說明異常節點丟包是由於電訊廠商策略限制所致。可以忽略相關丟包。如前文鏈路測試結果樣本圖中的第2跳所示。
如果隨後節點也出現丟包,則通常說明異常節點確實存在網路異常,導致丟包。如前文鏈路測試結果樣本圖中的第6跳所示。
如果隨後節點出現沒有丟包的節點和丟包的節點,即相應節點既存在策略限速,又存在網路異常。對於這種情況,如果異常節點及其後續節點連續出現丟包,而且各節點的丟包率不同,則通常以最後幾跳的丟包率為準。如前文鏈路測試結果樣本圖所示,在第 6、7、8、9跳均出現了丟包。所以,最終丟包情況,以第9跳的30.3%作為參考。
Avg(平均值)和 StDev(標準差)
由於鏈路抖動或其他因素的影響,節點的Best和Wrst值可能相差很大。而Avg(平均值)統計了自鏈路測試以來所有探測的平均值,所以能更好地反映出相應節點的網路品質。而StDev(標準差值)越高,則說明資料包在相應節點的延時值越不相同(越離散)。所以標準差值可用於協助判斷Avg是否真實反映了相應節點的網路品質。例如,如果標準差很大,說明資料包的延遲是不確定的。可能某些資料包延遲很小(例如25 ms),而另一些延遲卻很大(例如350 ms),但最終得到的平均延遲反而可能是正常的。因此,此時Avg並不能很好地反映出實際的網路品質情況。
綜上,建議分析標準如下:
如果StDev值很高,則同步觀察相應節點的
Best和Wrst,來判斷相應節點是否存在異常。如果StDev值不高,則通過Avg來判斷相應節點是否存在異常。
說明StDev值高或者不高,並沒有具體的數值判斷標準,而需要根據同一節點其他列的延遲值大小來進行評估。例如,如果Avg為30ms,當StDev為25ms時,則認為是很高的偏差。而如果Avg為325ms,當StDev同樣為25ms時,反而認為是不高的偏差。
延遲
延遲跳變
如果在某一跳之後延遲陡增,則通常判斷該節點存在網路異常。如前文鏈路測試結果樣本圖所示,從第6跳之後的後續節點延遲陡增,則推斷是第6跳節點出現了網路異常。不過,高延遲並不一定完全意味著相應節點存在異常。如前文鏈路測試結果樣本圖所示,第6跳之後,雖然後續節點延遲陡增,但測試資料最終仍然正常到達了目的主機。所以,延遲大也有可能是在資料回包鏈路中引發的。建議結合反向鏈路測試一併分析。
ICMP限速導致延遲增加
ICMP策略限速也可能會導致相應節點的延遲陡增,但後續節點通常會恢複正常。如前文鏈路測試結果樣本圖所示,第9跳有30%的丟包率,同時延遲也明顯陡增。但隨後節點的延遲馬上恢複了正常。因此,可以判斷該節點的延遲陡增及丟包是由於策略限速所致。
樣本分析及結論
My traceroute [v0.92]
i sZ (1 1) 2024-11-25T10:52:08+0800
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.xxx 5.0% 199 1.9 2.0 1.8 12.0 0.7
2. 11.xxx 41.2% 199 2.2 2.5 2.1 15.1 1.5
3. 11.xxx 0.0% 199 2.3 2.4 2.2 8.7 0.6
4. 11.xxx 0.0% 199 3.8 6.7 3.4 244.1 25.2
5. xxx 0.5% 199 4.2 4.3 4.1 11.8 0.6
6. 115.xxx 21.1% 199 4.8 4.6 4.5 6.8 0.3
7. 115.xxx 63.8% 199 7.4 9.6 7.4 26.8 4.7
8. 202.xxx 52.3% 199 11.6 11.7 11.5 12.9 0.2
9. 58.xxx 30.3% 199 16.5 16.7 16.4 33.5 1.5
10. 58.xxx 4.0% 199 14.5 14.5 14.5 15.6 0.1
11. 58.xxx 0.0% 199 17.8 18.6 17.6 38.0 3.1
12. ???
13. ???
14. ???
15. 186.xxx 0.0% 199 14.4 14.3 14.3 15.3 0.1結合上述鏈路測試結果樣本圖及分析思路,可以得出如下結論。
在鏈路中,第2、6、7、8、9跳出現了丟包現象,但後續的3、4、5、10、11、15跳並未出現大量丟包,如果對應的業務網路請求並無異常,則可以判斷2、6、7、8、9跳的丟包可能是觸發了ICMP限速導致。
第4跳
Wrst值較高,但是Avg值不高,有可能是某一次探測時網路有波動或者裝置效能波動引發的瞬時網路鏈路波動。整條鏈路節點延遲平均值介於1.8 - 17.6之間,顯示整條鏈路網路延遲較低。
基於以上幾條分析結論,可以判斷執行個體中的網路鏈路正常。如果實際業務網路中確實存在網路波動,可以結合反向鏈路測試結果進行分析。
對網路結果分析的思路較為靈活,以上僅為指標分析的一些常見方法。在實際的網路結果分析中,您需要結合自身的實際情況進行綜合評估,以便得出準確的結論。如果單向網路鏈路測試無法提供明確的結論,您可以結合反向鏈路測試進行更深入的問題分析與定位。
常見鏈路異常情境
常見的鏈路異常情境將以在Linux作業系統上執行mtr命令為例進行說明。具體結果應以您實際作業系統和工具的返回結果為準。
目標主機網路設定不當
資料包在目標地址出現了100%的丟包。初步看是資料包沒有到達,其實很有可能是目標伺服器相關安全性原則,例如防火牆、iptables等禁用了ICMP所致,導致目的主機無法發送任何應答。所以,該情境需要排查目標伺服器的安全性原則配置。
[root@mycentos ~]# mtr --no-dns www.xxx.com
My traceroute [v0.75]mycentos (0.0.0.0)
Wed Jun 15 19:06:29 2016
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Packets Pings Host Loss% Snt Last Avg Best Wrst StDev
1. ???
2. ???
3. 111.xxx.xxx.xxx 0.0% 10 521.3 90.1 2.7 521.3 211.3
4. 111.xxx.xxx.9 0.0% 10 2.9 4.7 1.6 10.6 3.9
5. 211.xxx.xxx.29 80.0% 10 3.0 3.0 3.0 3.0 0.0
6. 221.xxx.xxx.85 0.0% 10 1.7 7.2 1.6 34.9 13.6
7. 221.xxx.xxx.5 0.0% 10 5.2 5.2 5.1 5.2 0.0
8. 221.xxx.xxx.26 0.0% 10 5.3 5.2 5.1 5.3 0.1
9. 173.xxx.xxx.105 100.0% 10 0.0 0.0 0.0 0.0 0.0ICMP限速
中間鏈路節點出現較高丟包率,但後續節點恢複正常。這通常是電訊廠商或中間網路裝置對ICMP報文進行了策略限速所致,並非真實的網路丟包。如樣本中第4跳丟包率83%,但第5跳恢複正常;第9跳丟包率90.4%,可結合反向MTR鏈路測試綜合分析,確認是否為限速策略所致。
My traceroute [v0.92]
i xxx Z (172.xxx 7) 2025-06-16T11:01:14+0800
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.xxx.26 12.6% 95 1.9 1.8 1.6 2.5 0.1
2. 10.xxx.89 0.0% 95 3.0 3.5 2.8 14.0 1.3
3. 11.xxx.41 0.0% 95 1.8 1.9 1.7 4.0 0.4
4. 11.xxx.17 83.0% 95 3.1 4.3 2.9 7.3 1.5
5. 11.xxx.54 0.0% 95 9.5 9.6 9.2 13.4 0.6
6. 12x.xxx.246 0.0% 95 11.4 84.8 10.9 524.7 136.7
7. 11.xxx.170 0.0% 95 9.2 10.2 9.0 39.4 4.2
8. ???
9. 11.xxx 162 90.4% 95 7.8 7.9 7.8 8.0 0.1
10. ???鏈路中存在環路
資料包在第5跳之後出現了迴圈跳轉,導致最終無法到達目標伺服器。這通常是由於電訊廠商相關節點路由配置異常,即鏈路中存在環路所致。所以,該情境需要聯絡相應節點歸屬電訊廠商處理。
[ xxx@mycentos ~]# mtr --no-dns www.google.com
My traceroute [v0.75]mycentos (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 63.xxx.43 0.0% 10 0.3 0.6 0.3 1.2 0.3
2. 63.xxx.157 0.0% 10 0.4 1.0 0.4 6.1 1.8
3. 209.xxx.0.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4. aix xxx tl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5. 72.xxx.56 0.0% 10 0.0 0.0 0.0 0.0 0.0
6. 72.xxx.57 0.0% 10 0.0 0.0 0.0 0.0 0.0
7. 72.xxx.56 0.0% 10 0.0 0.0 0.0 0.0 0.0
8. 72.xxx.57 0.0% 10 0.0 0.0 0.0 0.0 0.0
9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0鏈路中斷
資料包在第4跳之後未能收到任何反饋,Loss%、Last、Avg、Best 等指標均未顯示任何統計資料。這通常是由於相應節點的中斷所致。建議結合反向鏈路測試進行進一步確認。該情境需聯絡相應節點所屬的電訊廠商進行處理。
@mycentos ~]# mtr -no-dns www.google.com
My traceroute [v0.75]mycentos (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 63.xxx.xxx.3 0.0% 10 0.3 0.6 0.3 1.2 0.3
2. 63.xxx.xxx.57 0.0% 10 0.4 1.0 0.4 6.1 1.8
3. 209.xxx.xxx.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4. aix-xxx.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
6. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
7. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
8. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0