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