ping 丢包或不通时链路测试说明

ping 丢包或不通时链路测试说明

更新时间:2017-06-30 11:31html

当客户端访问目标服务器出现 ping 丢包或 ping 不通时,能够经过 tracert  mtr 等工具进行链路测试来判断问题来源。本文先介绍了进行链路测试的相关工具,而后对测试结果分析及测试步骤进行了说明。linux

链路测试工具介绍


根据操做系统类型的不一样,链路测试所使用的工具也有所不一样。分别简要介绍以下。centos

Linux 环境下链路测试工具介绍

traceroute 命令行工具

traceroute 是几乎全部 Linux 发行版本预装的网络测试工具,用于跟踪 Internet 协议(IP)数据包传送到目标地址时通过的路径。ide

traceroute 先发送具备小的最大存活时间值(Max_TTL)的 UDP 探测数据包,而后侦遵从网关开始的整个链路上的 ICMP TIME_EXCEEDED 响应。探测从 TTL=1 开始,TTL 值逐步增长,直至接收到ICMP PORT_UNREACHABLE 消息。ICMP PORT_UNREACHABLE 消息用于标识目标主机已经被定位,或命令已经达到容许跟踪的最大 TTL 值。工具

traceroute 默认发送 UDP 数据包进行链路探测。能够经过 -I 参数来指定发送 ICMP 数据包用于探测。性能

用法说明:

traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [ -t TypeOfService ] [ -f flow ] [ -v ] [ -w WaitTime ] Host [ PacketSize ]

示例输出

[root@centos ~]# traceroute -I 223.5.5.5traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets 1    2 192.168.17.20 (192.168.17.20) 3.965 ms  4.252 ms  4.531 ms 3 111.1.20.41 (111.1.20.41) 6.109 ms  6.574 ms  6.996 ms 4 111.1.34.197 (111.1.34.197) 2.407 ms  2.451 ms  2.533 ms 5 211.138.114.25 (211.138.114.25) 1.321 ms  1.285 ms  1.304 ms 6 211.138.114.70 (211.138.114.70) 2.417 ms 211.138.114.66 (211.138.114.66) 1.857 ms 211.138.114.70 (211.138.114.70) 2.002 ms 7 42.120.244.194 (42.120.244.194) 2.570 ms  2.536 ms 42.120.244.186 (42.120.244.186) 1.585 ms 8 42.120.244.246 (42.120.244.246) 2.706 ms  2.666 ms  2.437 ms 9   10  public1.alidns.com (223.5.5.5) 2.817 ms  2.676 ms  2.401 ms

常见可选参数说明:

  • -d 使用Socket层级的排错功能。

  • -f 设置第一个检测数据包的存活数值TTL的大小。

  • -F 设置不要分段标识。

  • -g 设置来源路由网关,最多可设置8个。

  • -i 使用指定的网卡送出数据包。用于主机有多个网卡时。

  • -I 使用ICMP数据包替代 UDP 数据包进行探测。

  • -m 设置检测数据包的最大存活数值TTL的大小。

  • -n 直接使用IP地址而非主机名称(禁用 DNS 反查)。

  • -p 设置UDP传输协议的通讯端口。

  • -r 忽略普通的Routing Table,直接将数据包送到远端主机上。

  • -s 设置本地主机送出数据包的IP地址。

  • -t 设置检测数据包的TOS数值。

  • -v 详细显示指令的执行过程。

  • -w 设置等待远端主机回包时间。

  • -x 开启或关闭数据包的正确性检验。

mtr 命令行工具(建议优先使用)

mtr My traceroute)也是几乎全部 Linux 发行版本预装的网络测试工具。他把 ping traceroute 的功能并入了同一个工具中,因此功能更强大。

mtr 默认发送 ICMP 数据包进行链路探测。能够经过 -u 参数来指定使用 UDP 数据包用于探测。

相对于 traceroute 只会作一次链路跟踪测试,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]

示例输出:

[root@centos ~]# mtr 223.5.5.5 My traceroute  [v0.75]mycentos6.6 (0.0.0.0) Wed Jun 15 23:16:27 2016Keys: Help Display mode   Restart statistics   Order of fields   quit                                                  Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. ??? 2. 192.168.17.20 0.0% 7 13.1 5.6 2.1 14.7 5.7 3. 111.1.20.41 0.0% 7 3.0 99.2 2.7 632.1 235.4 4. 111.1.34.197 0.0% 7 1.8 2.0 1.2 2.9 0.6 5. 211.138.114.25 0.0% 6 0.9 4.7 0.9 13.9 5.8 6. 211.138.114.70 0.0% 6 1.8 22.8 1.8 50.8 23.6 211.138.128.134 211.138.114.2 211.138.114.66 7. 42.120.244.186 0.0% 6 1.4 1.6 1.3 1.8 0.2 42.120.244.198 8. 42.120.244.246 0.0% 6 2.8 2.9 2.6 3.2 0.2 42.120.244.242 9. ???10. 223.5.5.5 0.0% 6 2.7 2.7 2.5 3.2 0.3

常见可选参数说明:

  • -r  —report:以报告模式显示输出。

  • -p  —split:将每次追踪的结果分别列出来,而非如 —report统计整个结果。

  • -s  —psize:指定ping数据包的大小。

  • -n  —no-dns:不对IP地址作域名反解析。

  • -a  —address:设置发送数据包的IP地址。用于主机有多个IP时。

  • -4:只使用 IPv4 协议。

  • -6:只使用 IPv6 协议。

另外,也能够在 mtr 运行过程当中,输入相应字母来快速切换模式,好比:

  • ?或 h:显示帮助菜单。

  • d:切换显示模式。

  • n:切换启用或禁用 DNS 域名解析。

  • u:切换使用 ICMP UDP 数据包进行探测。

返回结果说明:

默认配置下,返回结果中各数据列的说明:

  • 第一列(Host):节点IP地址和域名。如前面所示,n键能够切换显示。

  • 第二列(Loss%):节点丢包率。

  • 第三列(Snt):每秒发送数据包数。默认值是10,能够经过参数 -c 指定。

  • 第四列(Last):最近一次的探测延迟值。

  • 第5、6、七列(AvgBestWrst):分别是探测延迟的平均值、最小值和最大值。

  • 第八列(StDev):标准误差。越大说明相应节点越不稳定。

Windows 环境下链路测试工具介绍

TRACERT 命令行工具

TRACERT (Trace Route)  Windows 自带的网络诊断命令行实用程序用于跟踪 Internet 协议 (IP) 数据包传送到目标地址时通过的路径。 

TRACERT 经过向目标地址发送 ICMP 数据包来肯定到目标地址的路由。在这些数据包中,TRACERT 使用了不一样的 IP“生存期”(TTL) 值。因为要求沿途的路由器在转发数据包前至少必须将 TTL 减小 1,所以 TTL 实际上至关于一个跃点计数器 (hop counter)。当某个数据包的 TTL 达到零 (0) 时,相应节点就会向源计算机发送一个 ICMP“超时的消息。 

TRACERT 第一次发送 TTL  1 的数据包,并在每次后续传输时将 TTL 增长 1,直到目标地址响应或达到 TTL 的最大值。中间路由器发送回来的 ICMP“超时消息中包含了相应节点的信息。

用法说明:

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

示例输出:

C:\> tracert -d 223.5.5.5经过最多 30 个跃点跟踪到 223.5.5.5 的路由 1    请求超时。 2 9 ms     3 ms    12 ms  192.168.17.20 3 4 ms     9 ms     2 ms  111.1.20.41 4 9 ms     2 ms     1 ms  111.1.34.197 5 11 ms       211.140.0.57 6 3 ms     2 ms     2 ms  211.138.114.62 7 2 ms     2 ms     1 ms  42.120.244.190 8 32 ms     4 ms     3 ms  42.120.244.238 9    请求超时。 10 3 ms     2 ms     2 ms  223.5.5.5跟踪完成。

常见可选参数说明:

  • -d:指定不将地址解析为主机名(禁用 DNS 反解)。

  • -hmaximum_hops,指定搜索目标地址时的最大跃点数。

  • -j host-list,指定沿主机列表的松散源路由。

  • -wtimeout,由每一个回复的 timeout 指定的等待毫秒数。

  • -R:跟踪往返行程路径(仅适用于 IPv6)

  • -Ssrcaddr,要使用的源地址(仅适用于 IPv6)

  • -4:强制使用 IPv4

  • -6:强制使用 IPv6

  • target_host:目标主机域名或 IP 地址。

WinMTR 工具(建议优先使用)

WinMTR  mtr 工具在 Windows 环境下的图形化实现,但进行了功能简化,只支持 mtr部分参数的调整设置。WinMTR 默认发送ICMP 数据包进行探测,没法切换。

WinMTR 能够从其官方网站下载获取。

 mtr 同样,相比 tracertWinMTR 能避免节点波动对测试结果的影响,因此测试结果更正确。因此,在 WinMTR 可用的状况下,建议优先使用 WinMTR 进行链路测试。

用法说明:

WinMTR 无需安装,直接解压运行便可。操做方法很是简单,说明以下:

  1. 以下图所示,运行程序后,在 Host 字段输入目标服务器域名或 IP(注意前面不要包含空格)。

     

  2. 点击 Start 开始测试(开始测试后,相应按钮变成了 Stop)。

  3. 运行一段时间后,点击 Stop 中止测试。

  4. 其它选项说明:

    • Copy Text to clipboard:将测试结果以文本格式复制到粘贴板。

    • Copy HTML to clipboard:将测试结果以 HTML 格式复制到粘贴板。

    • Export TEXT:将测试结果以文本格式导出到指定文件。

    • Export HTML:将测试结果以 HTML 格式导出到指定文件。

    • Options:可选参数,包括:

    • Intervalsec):每次探测的间隔(过时)时间。默认为 1 秒。

    • Ping size(bytes) ping 探测所使用的数据包大小,默认为 64 字节。、

    • Max hosts in LRU list LRU 列表支持的最大主机数,默认值为 128

    • Resolve names:经过反查 IP 以域名显示相关节点。

返回结果说明:

默认配置下,返回结果中各数据列的说明:

  • 第一列(Hostname):节点 IP 或域名。

  • 第二列(Nr):节点编号。

  • 第三列(Loss%):节点丢包率。

  • 第四列(Sent):已发送的数据包数量

  • 第五列(Recv):已成功接收的数据包数量

  • 第6、7、8、九列(Best AvgWorstLast):分别是到相应节点延迟的最小值、平均值、最大值和最后一次值。

  • 第八列(StDev):标准误差。越大说明相应节点越不稳定。

链路测试结果分析简要说明


因为 mtrWinMTR)有更高的准确性。本文以其测试结果为例,对链路测试结果的分析进行简要说明。

后续说明,以以下链路测试结果示例图为基础进行阐述:

对链路测试结果进行分析时,须要关注以下要点:

网络区域

正常状况下,从客户端到目标服务器的整个链路,会显著的包含以下区域:

  • 客户端本地网络(本地局域网和本地网络提供商网络):如前文链路测试结果示例图中的区域 A。若是该区域出现异常,若是是客户端本地网络相关节点出现异常,则须要对本地网络进行相应排查分析。不然,若是是本地网络提供商网络相关节点出现异常,则须要向当地运营商反馈问题。

  • 运营商骨干网络:如前文链路测试结果示例图中的区域 B。若是该区域出现异常,能够根据异常节点 IP 查询归属运营商,而后直接或经过阿里云售后技术支向相应运营商反馈问题。

  • 目标服务器本地网络(目标主机归属网络提供商网络)如前文链路测试结果示例图中的区域 C。若是该区域出现异常,则须要向目标主机归属网络提供商反馈问题。

链路负载均衡

如前文链路测试结果示例图中的区域 所示。若是中间链路某些部分启用了链路负载均衡,则 mtr 只会对首尾节点进行编号和探测统计。中间节点只会显示相应的 IP 或域名信息。

结合Avg(平均值)和 StDev(标准误差)综合判断

因为链路抖动或其它因素的影响,节点的 Best  Worst 值可能相差很大。而 Avg(平均值) 统计了自链路测试以来全部探测的平均值,因此能更好的反应出相应节点的网络质量。

 StDev(标准误差值)越高,则说明数据包在相应节点的延时值越不相同(越离散)。因此,标准误差值可用于协助判断Avg 是否真实反应了相应节点的网络质量。例如,若是标准误差很大,说明数据包的延迟是不肯定的。可能某些数据包延迟很小(例如:25ms),而另外一些延迟却很大(例如:350ms),但最终获得的平均延迟反而多是正常的。因此,此时 Avg 并不能很好的反应出实际的网络质量状况。

综上,建议的分析标准是:

  • 若是 StDev 很高,则同步观察相应节点的 Best  Wrst,来判断相应节点是否存在异常。

  • 若是 StDev 不高,则经过 Avg来判断相应节点是否存在异常。
    注:上述 StDev  “或者不高,并无具体的时间范围标准。而须要根据同一节点其它列的延迟值大小来进行相对评估。好比,若是 Avg  30ms,那么,当 StDev  25ms,则认为是很高的误差。而若是 Avg  325ms,则一样的StDev25ms),反而认为是不高的误差。

Loss%(丢包率)的判断

任一节点的 Loss%(丢包率)若是不为零,则说明这一跳网络可能存在问题。致使相应节点丢包的缘由一般有两种:

  • 运营商基于安全或性能需求,人为限制了节点的 ICMP 发送速率,致使丢包。

  • 节点确实存在异常,致使丢包。

能够结合异常节点及其后续节点的丢包状况,来断定丢包缘由:

  • 若是随后节点均没有丢包,则一般说明异常节点丢包是因为运营商策略限制所致。能够忽略相关丢包。如前文链路测试结果示例图中的第 2 跳所示。

  • 若是随后节点也出现丢包,则一般说明异常节点确实存在网络异常,致使丢包。如前文链路测试结果示例图中的第 跳所示。

 另外,须要说明的是,前述两种状况可能同时发生。即相应节点既存在策略限速,又存在网络异常。对于这种状况,若是异常节点及其后续节点连续出现丢包,并且各节点的丢包率不一样,则一般以最后几跳的丢包率为准。如前文链路测试结果示例图所示,在第 五、67跳均出现了丢包。因此,最终丢包状况,以第 7 跳的 40% 做为参考。

关于延迟

延迟跳变

若是在某一跳以后延迟明显陡增,则一般判断该节点存在网络异常。如前文链路测试结果示例图所示,从第 跳以后的后续节点延迟明显陡增,则推断是第 5 跳节点出现了网络异常。

不过,高延迟并不必定彻底意味着相应节点存在异常。如前文链路测试结果示例图所示,第 跳以后,虽而后续节点延迟明显陡增,但测试数据最终仍然正常到达了目的主机。因此,延迟大也有多是在数据回包链路中引起的。因此,最好结合反向链路测试一并分析。

ICMP 限速致使延迟增长

ICMP 策略限速也可能会致使相应节点的延迟陡增,但后续节点一般会恢复正常。如前文链路测试结果示例图所示,第 跳有 100% 的丢包率,同时延迟也明显陡增。但随后节点的延迟立刻恢复了正常。因此判断该节点的延迟陡增及丢包是因为策略限速所致。

常见链路异常场景和测试报告


常见的链路异常场景及测试报告实例以下所示:

目标主机网络配置不当

示例数据:

t@mycentos6 ~]# mtr —no-dns www.google.comMy traceroute  [v0.75]mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016Keys: Help Display mode   Restart statistics   Order of fields   quit                                                  Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. ??? 2. ??? 3. 111.1.20.41 0.0% 10 521.3 90.1 2.7 521.3 211.3 4. 111.1.34.209 0.0% 10 2.9 4.7 1.6 10.6 3.9 5. 211.138.126.29 80.0% 10 3.0 3.0 3.0 3.0 0.0 6. 221.183.14.85 0.0% 10 1.7 7.2 1.6 34.9 13.6 7. 221.183.10.5 0.0% 10 5.2 5.2 5.1 5.2 0.0 221.183.11.5 8. 221.183.23.26 0.0% 10 5.3 5.2 5.1 5.3 0.1 9. 173.194.200.105 100.0% 10 0.0 0.0 0.0 0.0 0.0

在该示例中,数据包在目标地址出现了 100% 的丢包。乍一看是数据包没有到达,其实颇有多是目标服务器相关安全策略(好比防火墙、iptables 等)禁用了 ICMP 所致,致使目的主机没法发送任何应答。

因此,该场景须要排查目标服务器的安全策略配置。

ICMP 限速

示例数据:

[root@mycentos6 ~]# mtr —no-dns www.google.comMy traceroute  [v0.75]mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016Keys: Help Display mode   Restart statistics   Order of fields   quit                                                  Packets Pings Host Loss% Snt Last Avg Best Wrst StDev1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.32. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.83. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.74. aix.pr1.atl.google.com        0.0% 10 6.7 6.8 6.7 6.9 0.15. 72.14.233.56 60.0% 10 27.2 25.3 23.1 26.4 2.96. 209.85.254.247 0.0% 10 39.1 39.4 39.1 39.7 0.27. 64.233.174.46 0.0% 10 39.6 40.4 39.4 46.9 2.38. gw-in-f147.1e100.net          0.0% 10 39.6 40.5 39.5 46.7 2.2

在该示例中,在第 5 跳出现了明显的丢包,但后续节点均未见异常。因此推断是该节点 ICMP 限速所致。

该场景对最终客户端到目标服务器的数据传输不会有影响,因此,分析的时候能够忽略。

环路

示例数据:

[root@mycentos6 ~]# mtr —no-dns www.google.comMy traceroute  [v0.75]mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016Keys: Help Display mode   Restart statistics   Order of fields   quit                                                  Packets Pings Host Loss% Snt Last Avg Best Wrst StDev1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.32. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.83. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.74. aix.pr1.atl.google.com        0.0% 10 6.7 6.8 6.7 6.9 0.15. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.06. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.07. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.08. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.09 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0

在该示例中,数据包在第 5 跳以后出现了循环跳转,致使最终没法到达目标服务器。这一般是因为运营商相关节点路由配置异常所致。

因此,该场景须要联系相应节点归属运营商处理。

链路中断

示例数据:

t@mycentos6 ~]# mtr —no-dns www.google.comMy traceroute  [v0.75]mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016Keys: Help Display mode   Restart statistics   Order of fields   quit                                                  Packets Pings Host Loss% Snt Last Avg Best Wrst StDev1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.32. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.83. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.74. aix.pr1.atl.google.com        0.0% 10 6.7 6.8 6.7 6.9 0.15. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.06. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.07. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.08. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.09 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0

在该示例中,数据包在第 跳以后就没法收到任何反馈。这一般是因为相应节点中断所致。建议结合反向链路测试作进一步确认。

该场景须要联系相应节点归属运营商处理。

链路测试步骤


一般状况下,链路测试流程以下链路测试流程图所示:

相关步骤详细说明以下:

获取本地网络对应公网 IP

在客户端本地网络访问 ip.taobao.com 等网站,以下图,获取本地网络对应的公网 IP

 

正向链路测试(ping  mtr

从客户端向目标服务器作 ping  mtr 链路测试:

  • 从客户端向目标服务器域名或 IP 作持续的 ping 测试(建议至少 ping 100 个数据包),记录测试结果。

  • 根据客户端操做系统环境的不一样,使用 WinMTR  mtr,设置测试目的地址为目标服务器域名或IP,而后进行链路测试,记录测试结果。

反向链路测试(ping  mtr

进入目标服务器系统内部,作反向 ping  mtr 链路测试

  • 从目标服务器向前述步骤 1 获取的客户端 IP作持续的 ping 测试(建议至少 ping 100 个数据包),记录测试结果。

  • 根据目标服务器操做系统环境的不一样,使用 WinMTR  mtr,设置测试目的地址为前述步骤 1 获取的客户端 IP,而后进行链路测试,记录测试结果。

测试结果分析

参阅前述说明,对测试结果进行分析。确认异常节点后,访问 ip.taobao.com 等网站查询、获取相应节点归属运营商及网络。

若是是客户端本地网络相关节点出现异常,则须要对本地网络进行相应排查分析。若是是运营商相关节点出现异常,则须要直接或联系阿里云售后技术支持向相应运营商反馈问题。

 

更多资源


      原文连接地址:https://help.aliyun.com/knowledge_detail/40573.html#mtr

相关文章
相关标签/搜索