mtr 双向测试
使用ping命令丢包或不通时的链路测试方法
链路测试流程
通常情况下,链路测试流程如下图所示。
进行链路测试
Linux操作系统
MTR是一款网络诊断工具,其将 ping 和 traceroute 的功能合并,相对于 traceroute 只会做一次链路跟踪测试,mtr 会对链路上的相关节点做持续探测并给出相应的统计信息。因此,mtr 能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。
安装
sudo yum install 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]
常见的可选参数说明如下:
|可选参数|参数说明|
|-|-|-|
|-r或-report|以报告模式显示输出|
|-p或-split|将每次链路跟踪的结果分别列出来|
|-s或-psize|指定ping数据包的大小|
|-n或-no-dns|不对IP地址做域名反解析|
|-a或-address|设置发送数据包的IP地址(该参数用于主机存在多个IP地址的场景)|
|-4|只使用IPv4协议|
|-6|只使用IPv6协议|
MTR返回示例
以执行mtr 目标IP地址命令为例,返回结果如下:
默认配置下,返回结果列表中各数据项的说明如下:
|参数|参数说明|
|-|-|-|
|Host|节点IP地址和域名(可按n切换显示)|
|Loss%|节点丢包率|
|Snt|已发送数据包数。默认10,可以通过参数-c指定|
|Last|最近一次的探测延迟值|
|Avg|探测延迟的平均值|
|Best|探测延迟的最小值|
|Wrst|探测延迟的最大值|
|StDev|标准偏差(值越大说明相应节点越不稳定)|
Windows操作系统
WinMTR 是 mtr 工具在 Windows 环境下的图形化实现,但进行了功能简化,只支持部分 mtr 的参数。WinMTR 默认发送 ICMP 数据包进行探测,无法切换。相比 tracert,WinMTR 能避免节点波动对测试结果的影响,所以测试结果更正确。所以在 WinMTR 可用的情况下,建议优先使用 WinMTR 进行链路测试。
安装
下载WinMTR后无需安装,直接解压运行即可,操作方法非常简单,操作步骤如下。
- 前往WinMTR官网下载 WinMTR。
- 解压WinMTR压缩包,并双击运行 WinMTR。
- 在Host中,输入目标服务器域名或IP地址。
-
注意:输入的目标服务器域名或IP地址不能包含空格!
其他参数说明如下:
|参数|参数说明|
|-|-|-|
|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返回示例
以测试目标服务器域名为例,返回示例如下:
默认配置下,返回结果中各数据项的说明如下:
|参数|参数说明|
|-|-|-|
|Hostname|节点IP地址和域名|
|Nr|节点编号|
|Loss%|节点丢包率|
|Sent|已发送的数据包数量|
|Recv|已成功接收的数据包数量|
|Best|节点延迟的最小值|
|Avg|节点延迟的平均值|
|Worst|节点延迟的最大值|
|Last|节点延迟的最后一次值|
|StDev|标准偏差(值越大说明相应节点越不稳定)|
链路测试结果说明
常见链路异常场景
目标主机网络配置不当
如下图所示,数据包在目标地址出现了100%的丢包。初步看是数据包没有到达,其实很有可能是目标服务器相关安全策略,例如防火墙、iptables 等禁用了ICMP所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置。
ICMP限速
如下图所示,数据包在目标地址出现了 100% 的丢包。初步看是数据包没有到达,其实很有可能是目标服务器相关安全策略,例如防火墙、iptables 、运营商策略等禁用了 ICMP 所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置,或结合反向 MTR 链路测试综合分析。
链路中存在环路
如下图所示,数据包在第 5 跳之后出现了循环跳转,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常,即链路中存在环路所致。所以,该场景需要联系相应节点归属运营商处理。
链路中断
如下图所示,数据包在第 4 跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。