问题描述

在云服务器上访问其他网络资源时,出现网络卡顿。执行 ping 命令,存在丢包或时延过高的问题。

本节操作以 Tracert 和 MTR 工具为例,介绍如何诊断丢包或时延过高的网络问题根因。

原因分析

丢包或时延较高可能是链路拥塞、链路节点故障、服务器负载高、系统设置问题等原因引起。

在排除云服务器自身原因后,您可以使用 Tracert 或 MTR 工具进行进一步诊断。

使用网络诊断工具 MTR 可以帮助您确认网络问题的根因。

Windows 操作系统 Tracert 介绍和使用

Tracert 是路由跟踪程序, Tracert 命令用来显示数据包到达目标主机所经过的路径,并显示到达每个节点的时间。 Tracert 命令功能与 ping 命令类似,但获得的信息要比 ping 命令详细,它可以显示数据包所走的全部路径、节点的 IP 以及时间。

  1. 登录 Windows 云服务器。

  2. 打开 cmd 命令窗,执行以下命令跟踪 IP 地址。

    tracert IP 地址/网站地址 (例如:tracert www.example.com)
    faq trouble check ping 1

    对数据节点分析如下:

    Tracert 默认最大跳数 30,第 1 列为起跳顺序号, Tracert 每次会发送三个数据包,第 2、3、4 列为对应三个数据包的返回时间,第 5 列为跳转的 IP 节点。假如某一层中出现了"`* * * request tinmed out`",那么则需要定位这层的问题,可能这里导致连接不到目标节点。

Windows 操作系统 WinMTR 介绍和使用

  1. 登录 Windows 云服务器。

  2. 通过浏览器访问外网,搜索并下载 WinMTR 安装包。

  3. 解压缩 WinMTR 安装包, WinMTR 无需安装,可以直接解压运行。

  4. 双击 WinMTR.exe ,打开 WinMTR 工具。

  5. 在 WinMTR 窗口的 Host 处,输入目的服务器 IP 地址或者域名,单击 Start

    faq trouble check ping 2
  6. 根据实际情况,等待 WinMTR 运行一段时间,单击 Stop,结束测试。如下图所示:

    faq trouble check ping 3

    测试结果的主要信息如下:

    • 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 的报告。

faq trouble check ping 4
  • 服务器本地网络:即图中 A 区域,代表本地局域网和本地网络提供商网络。

    • 如果客户端本地网络中的节点出现异常,则需要对本地网络进行相应的排查分析。

    • 如果本地网络提供商网络出现异常,则需要向当地运营商反馈问题。

  • 运营商骨干网络:即图中 B 区域,如果该区域出现异常,可以根据异常节点的 IP 查询其所属的运营商,向对应运营商进行反馈。

  • 目标端本地网络:即图中 C 区域,即目标服务器所属提供商的网络。

    • 如果丢包发生在目的服务器,则可能是目的服务器的网络配置原因,请检查目的服务器的防火墙配置。

    • 如果丢包发生在接近目的服务器的几跳,则可能是目标服务器所属提供商的网络问题。

常见的链路异常案例

  1. 目标主机配置不当

    如下示例所示,数据包在目标地址出现了 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
  2. 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
  3. 环路

    如下示例所示,数据包在第 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. 链路中断

    如下示例所示,数据包在第 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

如上述操作都已检查仍无法排除问题,可以提交工单咨询。