ping 不通或丢包时如何进行链路测试
问题描述
在云服务器上访问其他网络资源时,出现网络卡顿。执行 ping 命令,存在丢包或时延过高的问题。
本节操作以 Tracert 和 MTR 工具为例,介绍如何诊断丢包或时延过高的网络问题根因。
原因分析
丢包或时延较高可能是链路拥塞、链路节点故障、服务器负载高、系统设置问题等原因引起。
在排除云服务器自身原因后,您可以使用 Tracert 或 MTR 工具进行进一步诊断。
使用网络诊断工具 MTR 可以帮助您确认网络问题的根因。
Windows 操作系统 Tracert 介绍和使用
Tracert 是路由跟踪程序, Tracert 命令用来显示数据包到达目标主机所经过的路径,并显示到达每个节点的时间。 Tracert 命令功能与 ping 命令类似,但获得的信息要比 ping 命令详细,它可以显示数据包所走的全部路径、节点的 IP 以及时间。
-
登录 Windows 云服务器。
-
打开 cmd 命令窗,执行以下命令跟踪 IP 地址。
tracert IP地址/网站地址 (例如:tracert www.example.com)
对数据节点分析如下:
Tracert 默认最大跳数30,第1列为起跳顺序号, Tracert 每次会发送三个数据包,第2、3、4列为对应三个数据包的返回时间,第5列为跳转的 IP 节点。假如某一层中出现了"`* * * request tinmed out`",那么则需要定位这层的问题,可能这里导致连接不到目标节点。
Windows 操作系统 WinMTR 介绍和使用
-
登录 Windows 云服务器。
-
通过浏览器访问外网,搜索并下载 WinMTR 安装包。
-
解压缩 WinMTR 安装包, WinMTR 无需安装,可以直接解压运行。
-
双击 WinMTR.exe ,打开 WinMTR 工具。
-
在 WinMTR 窗口的 Host 处,输入目的服务器 IP 地址或者域名,单击 Start。
-
根据实际情况,等待 WinMTR 运行一段时间,单击 Stop,结束测试。如下图所示:
测试结果的主要信息如下:
-
Hostname:到目的服务器要经过的每个主机IP或域名。
-
Nr:经过节点的数量。
-
Loss%:对应节点的丢包率。
-
Sent:已发送的数据包数量。
-
Recv:已接收到响应的数量。
-
Best:最短的响应时间。
-
Avrg:平均响应时间。
-
Worst:最长的响应时间。
-
Last:最近一次的响应时间。
-
Linux 操作系统 MTR 介绍和使用
安装 MTR
目前现有的 Linux 发行版本都预装了 MTR ,如果您的 Linux 云服务器没有安装 MTR ,则可以执行以下命令进行安装:
-
CentOS 操作系统:
yum install mtr
-
Ubuntu 操作系统:
sudo apt-get install mtr
MTR 相关参数说明
-
- -h/--help:显示帮助菜单。
-
- -v/--version:显示 MTR 版本信息。
-
- -r/--report:结果以报告形式输出。
-
- -p/--split:与 --report 相对,分别列出每次追踪的结果。
-
- -c/--report-cycles:设置每秒发送的数据包数量,默认是 10。
-
- -s/--psize:设置数据包的大小。
-
- -n/--no-dns:不对 IP 地址做域名解析。
-
- -a/--address:用户设置发送数据包的 IP 地址,主要用户单一主机多个 IP 地址的场景。
-
- -4:IPv4。
-
- -6:IPv6。
以本机到 IP 为 119.xx.xx.xx 的服务器为例,执行以下命令,以报告形式输出 MTR 的诊断报告。
[root@ecs-0609 ~]# mtr 119.xx.xx.xx --report
Start: Thu Aug 22 15:41:22 2019
HOST: ecs-652 Loss% Snt Last Avg Best Wrst StDev
1.|-- 100.70.0.1 0.0% 10 3.0 3.4 2.8 7.5 1.3
2.|-- 10.242.7.174 0.0% 10 52.4 51.5 34.2 58.9 6.3
3.|-- 10.242.7.237 0.0% 10 3.2 5.0 2.7 20.8 5.5
4.|-- 10.230.2.146 0.0% 10 1.0 1.0 1.0 1.1 0.0
5.|-- 192.168.21.1 0.0% 10 3.5 4.2 2.8 11.6 2.5
6.|-- 10.242.7.238 0.0% 10 35.3 34.5 6.0 56.4 22.6
7.|-- 10.242.7.173 0.0% 10 3.3 4.7 3.1 14.7 3.6
8.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
主要输出的信息如下:
-
HOST:节点的IP地址或域名。
-
Loss%:丢包率。
-
Snt:每秒发送的数量包的数量。
-
Last:最近一次的响应时间。
-
Avg:平均响应时间。
-
Best:最短的响应时间。
-
Wrst:最长的响应时间。
-
StDev:标准偏差,偏差值越高,说明各个数据包在该节点的响应时间相差越大。
WinMTR 和 MTR 的报告分析处理
以下图为例分析 WinMTR 和 MTR 的报告。
-
服务器本地网络:即图中 A 区域,代表本地局域网和本地网络提供商网络。
-
如果客户端本地网络中的节点出现异常,则需要对本地网络进行相应的排查分析。
-
如果本地网络提供商网络出现异常,则需要向当地运营商反馈问题。
-
-
运营商骨干网络:即图中 B 区域,如果该区域出现异常,可以根据异常节点的 IP 查询其所属的运营商,向对应运营商进行反馈。
-
目标端本地网络:即图中 C 区域,即目标服务器所属提供商的网络。
-
如果丢包发生在目的服务器,则可能是目的服务器的网络配置原因,请检查目的服务器的防火墙配置。
-
如果丢包发生在接近目的服务器的几跳,则可能是目标服务器所属提供商的网络问题。
-
常见的链路异常案例
-
目标主机配置不当
如下示例所示,数据包在目标地址出现了100%的丢包。从数据上看是数据包没有到达,其实很有可能是目标服务器网络配置原因,需检查目的服务器的防火墙配置。
Host Loss% Snt Last Avg Best Wrst StDev 1. ??? 2. ??? 3. 1XX.X.X.X 0.0% 10 521.3 90.1 2.7 521.3 211.3 4. 11X.X.X.X 0.0% 10 2.9 4.7 1.6 10.6 3.9 5. 2X.X.X.X 80.0% 10 3.0 3.0 3.0 3.0 0.0 6. 2X.XX.XX.XX 0.0% 10 1.7 7.2 1.6 34.9 13.6 7. 1XX.1XX.XX.X 0.0% 10 5.2 5.2 5.1 5.2 0.0 8. 2XX.XX.XX.XX 0.0% 10 5.3 5.2 5.1 5.3 0.1 9. 1XX.1XX.XX.X 100.0% 10 0.0 0.0 0.0 0.0 0.0
-
ICMP限速
如下示例所示,在第5跳出现丢包,但后续节点均未见异常。所以推断是该节点ICMP限速所致。该场景对最终客户端到目标服务器的数据传输不会有影响,分析时可以忽略此种场景。
Host Loss% Snt Last Avg Best Wrst StDev 1. 1XX.XX.XX.XX 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 1XX.XX.XX.XX 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 1XX.XX.XX.XX 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. 1XX.XX.XX.XX 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 1XX.XX.XX.XX 0.0% 10 27.2 25.3 23.1 26.4 2.9 6. 1XX.XX.XX.XX 0.0% 10 39.1 39.4 39.1 39.7 0.2 7. 1XX.XX.XX.XX 0.0% 10 39.6 40.4 39.4 46.9 2.3 8. 1XX.XX.XX.XX 0.0% 10 39.6 40.5 39.5 46.7 2.2
-
环路
如下示例所示,数据包在第5跳之后出现了循环跳转,导致最终无法到达目标服务器。出现此场景是由于运营商相关节点路由配置异常所致,需联系相应节点归属运营商处理。
Host Loss% Snt Last Avg Best Wrst StDev 1. 1XX.XX.XX.XX 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 1XX.XX.XX.XX 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 1XX.XX.XX.XX 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. 1XX.XX.XX.XX 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 1XX.XX.XX.65 0.0% 10 0.0 0.0 0.0 0.0 0.0 6. 1XX.XX.XX.65 0.0% 10 0.0 0.0 0.0 0.0 0.0 7. 1XX.XX.XX.65 0.0% 10 0.0 0.0 0.0 0.0 0.0 8. 1XX.XX.XX.65 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跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。
Host Loss% Snt Last Avg Best Wrst StDev 1. 1XX.XX.XX.XX 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 1XX.XX.XX.XX 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 1XX.XX.XX.XX 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. 1XX.XX.XX.XX 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 1XX.XX.XX.XX 0.0% 10 0.0 0.0 0.0 0.0 0.0 6. 1XX.XX.XX.XX 0.0% 10 0.0 0.0 0.0 0.0 0.0 7. 1XX.XX.XX.XX 0.0% 10 0.0 0.0 0.0 0.0 0.0 8. 1XX.XX.XX.XX 0.0% 10 0.0 0.0 0.0 0.0 0.0 9 1XX.XX.XX.XX 0.0% 10 0.0 0.0 0.0 0.0 0.0
如上述操作都已检查仍无法排除问题,可以提交工单咨询。