使用 MTR 和WinMTR工具分析Linux和Windows网络延迟及丢包问题

0    285    2

Tags:

👉 本文共约7619个字,系统预计阅读时间或需29分钟。

概述

本地访问云服务器,或者在云服务器上访问其他网络资源时,发现网络卡顿。使用 ping 命令,发现网络存在丢包或时延较高的情况。

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

在排除云服务器自身原因后,您可以使用 MTR 进行进一步诊断。
MTR 是一款网络诊断工具,其工具诊断出的报告可以帮助您确认网络问题的症结所在。

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

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

解决方案

本文档以 Linux 和 Windows 云服务器为例,介绍如何使用 MTR 以及如何对 MTR 的报告结果进行分析。

说明

如果本地或云服务器禁用 Ping,则 MTR 将无结果。

请根据运行 MTR 的主机操作系统的不同,查看 MTR 的介绍和使用方法。

  • WinMTR 的介绍和使用(Windows 操作系统)
  • MTR 的介绍和使用(Linux 操作系统)

Linux系统

MTR:Linux 平台上诊断网络状态的工具,继承了 Ping、traceroute、nslookup 的功能,默认使用 ICMP 包测试两个节点之间的网络连接情况。

安装 MTR

目前现有的 Linux 发行版本都预装了 MTR,如果您的 Linux 云服务器没有安装 MTR,则可以执行以下命令进行安装:

  • CentOS 操作系统:

  • Ubuntu 操作系统:

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.28.98.39的服务器为例。
执行以下命令,以报告形式输出 MTR 的诊断报告。

返回类似如下信息:

主要输出的信息如下:

  • HOST:节点的 IP 地址或域名。
  • Loss%:丢包率。
  • Snt:每秒发送的数量包的数量。
  • Last:最近一次的响应时间。
  • Avg:平均响应时间。
  • Best:最短的响应时间。
  • Wrst:最长的响应时间。
  • StDev:标准偏差,偏差值越高,说明各个数据包在该节点的响应时间相差越大。

mtr分析链路测试结果

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

img

  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%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。

Windows系统

当您在Windows平台上遇到网络丢包问题时,可以采取以下步骤进行排查:

  1. 使用Ping命令测试:使用Windows内置的Ping命令测试连接性和延迟。打开命令提示符,键入“ping -t <目标IP地址>”,然后观察响应时间和是否有任何数据包丢失。如果有丢包现象,继续进行以下步骤。
  2. 使用Tracert命令跟踪路由:使用Windows内置的Tracert命令跟踪到目标IP地址的路由路径。打开命令提示符,键入“tracert <目标IP地址>”,然后观察输出结果。在输出结果中,可以看到从您的计算机到目标IP地址的所有路由器的IP地址和响应时间。如果有任何路由器出现高延迟或丢包,说明网络故障可能出现在该路由器或该路由器之后的网络。
  3. 使用WinMTR工具:WinMTR是一种跟踪路由的工具,它可以在Windows平台上使用。下载和安装WinMTR之后,打开该工具,键入目标IP地址,然后点击“Start”按钮开始跟踪。WinMTR将显示从您的计算机到目标IP地址的所有路由器的IP地址、响应时间和丢包情况。如果在某个路由器上出现高延迟或丢包,说明网络故障可能出现在该路由器或该路由器之后的网络。

WinMTR:适用于 Windows 系统的免费网络诊断工具,集成了 Ping 和 tracert 的功能,具有图形界面,可以直观地看到各个节点的响应时间和丢包情况。

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

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

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

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

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复