當客戶端訪問目標服務器或負載均衡,使用ping命令測試出現(xiàn)丟包或網(wǎng)絡不通時,可以通過鏈路測試工具進行鏈路測試來判斷問題來源。本文介紹如何使用鏈路測試工具進行鏈路測試。
鏈路測試流程
通常情況下,鏈路測試流程如下圖所示。
鏈路測試流程說明如下:
-
獲取本地網(wǎng)絡對應公網(wǎng)IP地址。
在客戶端本地網(wǎng)絡上,訪問IP地址查詢等網(wǎng)站,獲取本地網(wǎng)絡對應的公網(wǎng)IP地址。
-
正向鏈路測試(ping和mtr)。
從客戶端向目標服務器做ping和mtr鏈路測試。
-
ping:從客戶端向目標服務器域名或IP地址做持續(xù)的ping測試時,建議至少測試100個數(shù)據(jù)包,記錄測試結果。
-
mtr:根據(jù)客戶端操作系統(tǒng)環(huán)境的不同,在Windows操作系統(tǒng)上使用WinMTR或在Linux操作系統(tǒng)上執(zhí)行mtr命令,設置測試目的地址為目標服務器域名或IP地址,然后進行鏈路測試,記錄測試結果。
-
-
反向鏈路測試(ping和mtr)。
進入目標服務器操作系統(tǒng)內部向客戶端做反向ping和mtr鏈路測試。
-
ping:從目標服務器向客戶端IP地址做持續(xù)的ping測試時,建議至少測試100個數(shù)據(jù)包,記錄測試結果。
-
mtr:根據(jù)目標服務器操作系統(tǒng)環(huán)境的不同,在Windows操作系統(tǒng)上使用WinMTR或在Linux操作系統(tǒng)上執(zhí)行mtr命令,設置測試目的地址為客戶端IP地址,然后進行鏈路測試,記錄測試結果。
-
-
測試結果分析。
對測試結果進行分析,相關參數(shù)說明請參見鏈路測試結果說明。確認異常節(jié)點后,訪問IP地址查詢等網(wǎng)站查詢并獲取相應節(jié)點歸屬的運營商及網(wǎng)絡,解決方案如下:
-
如果是客戶端本地網(wǎng)絡相關節(jié)點出現(xiàn)異常,則需要對本地網(wǎng)絡進行相應排查分析。
-
如果是運營商相關節(jié)點出現(xiàn)異常,則需要直接聯(lián)系運營商,或聯(lián)系阿里云售后技術支持向相應運營商反饋問題。
-
進行鏈路測試
Linux操作系統(tǒng)
MTR是一款網(wǎng)絡診斷工具,其將ping
和traceroute
的功能合并,相對于traceroute
只會做一次鏈路跟蹤測試,mtr會對鏈路上的相關節(jié)點做持續(xù)探測并給出相應的統(tǒng)計信息。因此,mtr能避免節(jié)點波動對測試結果的影響,所以其測試結果更正確,建議優(yōu)先使用。
MTR(推薦)
安裝mtr
sudo yum install mtr
使用MTR
mtr命令格式如下:
mtr [-hvrctglspni46] [-help] [-version] [-report] [-report-cycles=COUNT] [-curses] [-gtk] [-raw] [-split] [-no-dns] [-address interface] [-psize=bytes/-s bytes] [-interval=SECONDS] HOSTNAME [PACKETSIZE]
常見的可選參數(shù)說明如下表所示,您也可以通過man mtr
命令查看更多參數(shù)說明。
可選參數(shù) |
參數(shù)說明 |
|
以報告模式顯示輸出。 |
|
將每次鏈路跟蹤的結果分別列出來。 |
|
指定ping數(shù)據(jù)包的大小。 |
|
不對IP地址做域名反解析。 |
|
設置發(fā)送數(shù)據(jù)包的IP地址。 說明
該參數(shù)用于主機存在多個IP地址的場景。 |
-4 |
只使用IPv4協(xié)議。 |
-6 |
只使用IPv6協(xié)議。 |
您也可以在mtr命令運行過程中,輸入如下參數(shù)來快速切換模式。
參數(shù) |
參數(shù)說明 |
|
顯示幫助菜單。 |
|
切換顯示模式。 |
|
啟用或禁用DNS域名解析。 |
|
使用ICMP或UDP數(shù)據(jù)包進行探測。 |
MTR返回示例
以執(zhí)行mtr 目標IP地址
命令為例,返回結果如下:
默認配置下,返回結果列表中各數(shù)據(jù)項的說明如下。
參數(shù) |
參數(shù)說明 |
Host |
節(jié)點IP地址和域名。您可以按 |
Loss% |
節(jié)點丟包率。 |
Snt |
已發(fā)送數(shù)據(jù)包數(shù)。默認值是10,可以通過參數(shù) |
Last |
最近一次的探測延遲值。 |
Avg |
探測延遲的平均值。 |
Best |
探測延遲的最小值。 |
Wrst |
探測延遲的最大值。 |
StDev |
標準偏差。該值越大說明相應節(jié)點越不穩(wěn)定。 |
traceroute
安裝traceroute
sudo yum install traceroute
使用traceroute
traceroute命令格式如下:
traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [ -t TypeOfService ] [ -f flow ] [ -v ] [ -w WaitTime ] Host [ PacketSize ]
常見的可選參數(shù)說明如下表所示,您也可以通過man traceroute
命令查看更多參數(shù)說明。
可選參數(shù) |
參數(shù)說明 |
-d |
使用Socket層級的排錯功能。 |
-f |
設置第一個檢測數(shù)據(jù)包的存活數(shù)值TTL的大小。 |
-F |
設置不要分段標識。 |
-g |
設置來源路由網(wǎng)關,最多可設置8個。 |
-i |
主機有多個網(wǎng)卡時,使用指定的網(wǎng)卡發(fā)送數(shù)據(jù)包。 |
-I |
使用ICMP數(shù)據(jù)包替代UDP數(shù)據(jù)包進行探測。 |
-m |
設置檢測數(shù)據(jù)包的最大存活數(shù)值TTL的大小。 |
-n |
直接使用IP地址而非主機名稱(禁用DNS反查)。 |
-p |
設置UDP傳輸協(xié)議的通信端口。 |
-r |
忽略普通的Routing Table,直接將數(shù)據(jù)包發(fā)送到目標主機上。 |
-s |
設置本地主機發(fā)送數(shù)據(jù)包的IP地址。 |
-t |
設置檢測數(shù)據(jù)包的TOS數(shù)值。 |
-v |
詳細顯示指令的執(zhí)行過程。 |
-w |
設置等待遠端主機回包時間。 |
-x |
開啟或關閉數(shù)據(jù)包的正確性檢驗。 |
traceroute返回示例
以執(zhí)行traceroute -I 目標IP地址
命令為例,返回結果如下:
Windows操作系統(tǒng)
WinMTR是mtr工具在Windows環(huán)境下的圖形化實現(xiàn),但進行了功能簡化,只支持部分mtr的參數(shù)。WinMTR默認發(fā)送ICMP數(shù)據(jù)包進行探測,無法切換。相比tracert,WinMTR能避免節(jié)點波動對測試結果的影響,所以測試結果更正確。所以在WinMTR可用的情況下,建議優(yōu)先使用WinMTR進行鏈路測試。
WinMTR(推薦)
安裝并使用WinMTR
下載WinMTR后無需安裝,直接解壓運行即可,操作方法非常簡單,操作步驟如下。
-
前往WinMTR官網(wǎng)下載WinMTR。
-
解壓WinMTR壓縮包,并雙擊運行WinMTR。
-
在Host中,輸入目標服務器域名或IP地址。
重要輸入的目標服務器域名或IP地址不能包含空格。
您還可以設置其他參數(shù),參數(shù)說明如下:
參數(shù)
參數(shù)說明
Copy Text to clipboard
將測試結果以文本格式復制到粘貼板。
Copy HTML to clipboard
將測試結果以HTML格式復制到粘貼板。
Export TEXT
將測試結果以文本格式導出到指定文件。
Export HTML
將測試結果以HTML格式導出到指定文件。
Options
可選參數(shù),包括如下設置:
-
Interval(sec):每次探測的間隔(過期)時間。默認為1秒。
-
Ping size(bytes):PING探測所使用的數(shù)據(jù)包大小,默認為64字節(jié)。
-
Max. hosts in LRU list:LRU列表支持的最大主機數(shù),默認值為128。
-
Resolve names:通過反查IP地址以域名顯示相關節(jié)點。
-
-
單擊Start,開始測試。
開始測試后,Start會自動變成Stop,WinMTR自動顯示測試結果。
-
運行一段時間后,單擊Stop停止測試。
WinMTR返回示例
以測試目標服務器域名為例,返回示例如下:
默認配置下,返回結果中各數(shù)據(jù)項的說明如下:
參數(shù) |
參數(shù)說明 |
Hostname |
節(jié)點IP地址和域名。 |
Nr |
節(jié)點編號。 |
Loss% |
節(jié)點丟包率。 |
Sent |
已發(fā)送的數(shù)據(jù)包數(shù)量。 |
Recv |
已成功接收的數(shù)據(jù)包數(shù)量。 |
Best |
節(jié)點延遲的最小值。 |
Avg |
節(jié)點延遲的平均值。 |
Worst |
節(jié)點延遲的最大值。 |
Last |
節(jié)點延遲的最后一次值。 |
StDev |
標準偏差。該值越大說明相應節(jié)點越不穩(wěn)定。 |
tracert
tracert(Trace Route)是Windows系統(tǒng)自帶的網(wǎng)絡診斷命令行程序,用于跟蹤Internet協(xié)議(IP)數(shù)據(jù)包傳送到目標地址時經過的路徑。
使用tracert
在Windows PowerShell或cmd命令行中執(zhí)行tracert命令。
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
參數(shù) |
參數(shù)說明 |
-d |
不要將地址解析為主機名(禁用DNS反解)。 |
-h |
maximum_hops,指定搜索目標地址時的最大躍點數(shù)。 |
-j |
host-list,指定沿主機列表的松散源路由。 |
-w |
timeout,等待每個回復的超時時間(以毫秒為單位)。 |
-R |
跟蹤往返行程路徑(僅適用于IPv6)。 |
-S |
srcaddr,要使用的源地址(僅適用于IPv6)。 |
-4 |
強制使用IPv4。 |
-6 |
強制使用IPv6。 |
target_host |
目標主機域名或IP地址。 |
tracert返回示例
以執(zhí)行tracert -d 目標IP地址
命令為例,返回結果如下:
C:\> tracert -d 192.168.0.1
通過最多 30 個躍點跟蹤到 192.168.0.1 的路由
1 請求超時。
2 9 ms 3 ms 12 ms 192.168.XXX.XXX
3 4 ms 9 ms 2 ms 10.20.XXX.XXX
4 9 ms 2 ms 1 ms 10.35.XXX.XXX
5 11 ms 211.24.X.XX
6 3 ms 2 ms 2 ms 200.12.XXX.XXX
7 2 ms 2 ms 1 ms 42.28.XXX.XXX
8 32 ms 4 ms 3 ms 42.25.2XX.2XX
9 請求超時。
10 3 ms 2 ms 2 ms 通過最多 30 個躍點跟蹤到 192.168.0.1 的路由
跟蹤完成。
鏈路測試結果說明
由于mtr命令有更高的準確性,本文以mtr命令測試結果為例,對鏈路測試結果的分析進行簡要說明。后續(xù)的說明,均以如下鏈路測試結果示例圖為基礎進行闡述。
網(wǎng)絡區(qū)域
通常情況下,從客戶端到目標服務器的整個鏈路,會顯著的包含如下區(qū)域:
-
客戶端本地網(wǎng)絡
本地局域網(wǎng)和本地網(wǎng)絡提供商網(wǎng)絡,如前文鏈路測試結果示例圖中的區(qū)域A,一般為前2~3個節(jié)點。如果該區(qū)域出現(xiàn)異常,如果是客戶端本地網(wǎng)絡相關節(jié)點