Windows实例网络访问丢包延时高的排查方法

Windows实例网络访问丢包延时高的排查方法

更新时间:2019-08-15 10:06:16

概述

当网站访问很慢或无法访问时,若已经排除显著的问题,而使用ping命令检测到有明显丢包时,建议您做链路测试。在Windows环境中,推荐优先使用WinMTR工具,或者tracert命令行进行链路测试以判断问题来源。通常情况下,链路测试步骤如下。

  1. 利用链路测试工具探测网络状况和服务器状态。
  2. 根据链路测试结果分析处理。

 

详细信息

WinMTR工具

mtr(My traceroute)作为一款网络测试工具,集成了tracert与ping这两个命令的图形界面。ping与tracert通常被用于检测网络状况和服务器状态,具体说明如下。

命令名称 具体说明
ping 送出封包到指定的服务器。如果服务器有回应就会传送回封包,并附带返回封包来回的时间
tracert 返回从用户的电脑到指定的服务器中间经过的所有节点(路由)以及每个节点的回应速度。

 

WinMTR是mtr工具在Windows环境下的图形化实现,适合Windows下做路由追踪及ping测试。WinMTR默认发送ICMP数据包进行探测,无法切换。

 

相比tracert命令行工具,WinMTR能避免节点波动对测试结果的影响,测试结果更正确。Windows环境下,建议优先使用WinMTR进行链路测试。下载WinMTR工具

  1. 下载WinMTR工具后,直接解压运行。运行程序后,在 Host 字段输入目标服务器域名或IP。
    1
  2. 单击 Start 开始测试。开始测试后,相应按钮变成了 Stop
  3. 运行一段时间后,单击 Stop 停止测试。

    说明:您可以多测试几分钟,测试结束后,将结果导出。

 

常见可选参数说明

  • 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以域名显示相关节点。

 

WinMTR运行后的返回结果说明

默认配置下,WinMTR测试结果说明如下。

  • 第一列(Hostname):到目标服务器要经过的每个节点主机IP或域名。
  • 第二列(Nr):节点编号。
  • 第三列(Loss%):节点丢包率。ping数据包回复失败的百分比,由此可判断哪个节点(线路)出现故障,是服务器所在机房还是国际路由干路。
  • 第四列(Sent):已发送的数据包数量。
  • 第五列(Recv):已成功接收的数据包数量。
  • 第六、七、八、九列(Best 、Avg、Worst、Last):分别是回应时间的最小值、平均值、最大值和最后一个数据包的回应时间。

 

tracert命令行工具

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

 

tracert通过向目标地址发送ICMP数据包来确定到目标地址的路由。在这些数据包中,tracert使用了不同的IP生存期 (TTL) 值。由于要求沿途的路由器在转发数据包前至少必须将TTL减少1,因此TTL实际上相当于一个跃点计数器 (hop counter)。当某个数据包的TTL达到零时,相应节点就会向源计算机发送一个ICMP超时的消息。tracert第一次发送TTL为1的数据包,并在每次后续传输时将TTL增加1,直到目标地址响应或达到TTL的最大值。中间路由器发送回来的ICMP超时消息中包含了相应节点的信息。

  1. 在桌面底部单击 开始 菜单,选择 运行
  2. 打开运行框后,在框中输入 cmd,并单击 确定
  3. 在命令运行界面中,输入 tracert ,按回车键后,界面将显示tracert的用法说明。

    2

  4. 根据具体用法,输入待跟踪的目标地址,示例如下。

    C:\> tracert -d 223.5.5.5
    通过最多 30 个跃点跟踪到 223.5.5.5 的路由
    1 * * * 请求超时。
    2 9 ms 3 ms 12 ms 192.X.X.20
    3 4 ms 9 ms 2 ms 111.X.X.41
    4 9 ms 2 ms 1 ms 111.X.X.197
    5 11 ms * * 211.X.X.57
    6 3 ms 2 ms 2 ms 211.X.X.62
    7 2 ms 2 ms 1 ms 42.X.X.190
    8 32 ms 4 ms 3 ms 42.X.X.238
    9 * * * 请求超时。
    10 3 ms 2 ms 2 ms 223.5.5.5

 

分析链路测试结果

以如下链路测试结果示例图为基础进行阐述。

  1. 判断各区域是否存在异常,并根据各区域的情况分别处理。
    • 区域A:客户端本地网络,即本地局域网和本地网络提供商网络。针对该区域异常,客户端本地网络相关节点问题,请对本地网络进行排查分析;本地网络提供商网络相关节点问题,请向当地运营商反馈。

    • 区域B:运营商骨干网络。针对该区域异常,可根据异常节点IP查询归属运营商,然后直接或通过阿里云售后技术支持,向相应运营商反馈问题。

    • 区域C:目标服务器本地网络,即目标主机归属网络提供商网络。针对该区域异常,需要向目标主机归属网络提供商反馈问题。

  2. 结合Avg(平均值)和StDev(标准偏差),判断各节点是否存在异常。

    • 若StDev很高,则同步观察相应节点的Best和Worst,来判断相应节点是否存在异常。
    • 若StDev不高,则通过Avg来判断相应节点是否存在异常。

      注意:上述StDev高或者不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果Avg为30ms,那么,当StDev为25ms,则认为是很高的偏差。而如果Avg为325ms,则同样的StDev为25ms,反而认为是不高的偏差。

  3. 查看节点丢包率,若“Loss%”不为零,则说明这一跳路由的网络可能存在问题。导致节点丢包的原因通常有两种。

    • 人为限制了节点的ICMP发送速率,导致丢包。
    • 节点确实存在异常,导致丢包。
  4. 确定当前异常节点的丢包原因。

    • 若随后节点均没有丢包,说明当前节点丢包是由于运营商策略限制所致,可以忽略。如前文链路测试结果示例图中的第2跳路由的网络所示。

    • 若随后节点也出现丢包,说明当前节点存在网络异常,导致丢包。如前文链路测试结果示例图中的第5跳路由的网络所示。

      说明:前述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,若当前节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳路由的网络的丢包率为准。如前文链路测试结果示例图所示,在第5、6、7跳路由的网络均出现了丢包。所以,最终丢包情况,以第7跳的40%作为参考。

  5. 通过查看是否有明显的延迟,来确认节点是否存在异常。通过如下两个方面进行分析。

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

      注:高延迟并不一定完全意味着相应节点存在异常,延迟大也有可能是在数据回包链路中引发的,建议结合反向链路测试一并分析。

    • ICMP策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如前文链路测试结果示例图所示,第3跳路由的网络有100%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。

 

操作建议

  • 若数据包在目标地址出现了100%的丢包,建议对目标服务器的安全策略配置进行排查。
  • 若数据包出现循环跳转,导致无法到达目标服务器,建议联系相应节点归属运营商处理。
  • 若数据包在跳转后无法收到任何反馈,建议结合反向链路测试作进一步确认,并联系相应节点归属运营商进行处理。
  • 阿里云中国大陆地域机房和其他国家或地区有网络通信的专线,为降低通信时候的丢包率,推荐使用高速通道
  • 若主机掉包和延迟非常高,建议做WinMTR双向测试,即本地到服务器的和服务器到本地的测试。无法远程登录时,请通过管理终端进行登录。

 

适用于

  • 云服务器 ECS

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。