幫助中心
MTR 是一个强大的网络诊断工具,管理员能够用它诊断和隔离网络错误,并向上游提供商提供有关网络状态的有用报告。MTR 通过更大的采样来跟踪路由,就像 traceroute + ping 命令的组合。本文详细介绍了 MTR,其产生的数据,以及如何根据其提供的数据正确解释和得出结论。
背景
网络诊断工具包括 ping,traceroute 和 mtr,使用“ICMP”数据包来测试互联网上两点之间的节点和流量。当用户在互联网上 ping 主机时,会向主机发送一系列 ICMP 报文,主机通过发送报文进行响应。用户的客户端能够计算互联网上两点之间的往返时间。
相比之下,诸如 traceroute 和 MTR 之类的工具会以递增增加的 TTL 发送 ICMP 数据包,以便查看数据包在源和目的地之间进行的路由或一系列跳数。 TTL 或生存时间控制数据包在“死亡”并返回主机之前将产生多少“跳”。通过发送一系列数据包,使它们在一跳之后死亡并返回,然后两个,然后三个,客户端机器能够组合在因特网上的主机之间的流量所占用的路由。
MTR 收集关于中间主机的状态,连接和响应性的其他信息,而不是简单地概述流量跨越 Internet 的路由。由于这些附加信息,建议您尽可能使用 MTR 提供 Internet 上两台主机之间的连接的最完整的概述。以下部分概述如何安装 MTR 软件以及如何解释此工具提供的结果。
安装 MTR
在 CentOS 和 Fedora 系统中,使用如下命令更新系统,并安装 MTR:
生成 MTR 报告
因为 MTR 提供了从一个主机到另一个主机的路由流量的映像,您可以将其视为定向工具。此外,在因特网上两点之间采取的路由可能会根据位置和位于您上游的路由器而有很大变化。因此,通常建议您在遇到连接问题的所有主机或尽可能多的主机时双向收集 MTR 报告。
为了清楚起见,当引用 MTR 报告时,本文件将运行 mtr 作为源主机的主机和查询所针对的主机作为目标主机。
基于类Unix的系统上使用MTR
例如,要测试到目标主机 example.com 的流量的路由和连接质量,请从所需的源主机运行以下命令:
如果没有丢包丢失,可以使用更快的间隔时间运行:
我们上面使用的标志(rwc [x] -i [y])在很有用。
-
r 选项标志生成报告(缩写为–report)
-
w 选项标志使用长版本的主机名,您可以看到每个跳的完整主机名(–report-wide的缩写)
-
c 选项标志设置报告中发送和记录的数据包数量。当不使用时,默认值通常为 10,但是对于更快的间隔,您可能希望将其设置为 50 或 100.报告可能需要较长时间才能完成
-
i 选项标志以更快的速率运行报告,以显示只能在网络拥塞期间发生的数据包丢失。该标志指示 MTR 每n秒发送一个数据包。默认值为1秒,因此将其设置为十分之一秒(0.1,0.2等)通常是有帮助的
刚才我们了解了什么是 MTR,以及如何生成一份报告等知识。这里,我们深入分析一下 MTR 报告的含义,以及常见的 MTR 结果分析。
分析 MTR 报告
验证数据包丢失
在分析 MTR 输出时,您正在寻找两件事情:丢包和延迟。首先让我们来谈谈丢包。如果您在任何特定跳点看到一定百分比的丢失,这可能表明该特定路由器存在问题。然而,一些服务提供商通常的做法是限制 MTR 使用的ICMP流量。这实际上没有损失可以给出丢包的错觉。要确定您看到的损失是真实的还是由于速率限制,请查看随后的一跳,如果该跳丢包率是0.0%,那么您可以确定您看到 ICMP 速率限制,而不是实际丢包。参见下面的例子:
在这种情况下,第10跳和第11跳之间报告的丢包可能是由于第11跳速率限制。虽然剩下的跳数的流量都触及第11跳,但是没有丢包。如果丢失持续多于一个跳,则可能存在一些丢包或路由问题。请记住,速率限制和丢失可能同时发生。在这种情况下,将序列中的最低损失百分比作为实际损失。例如,考虑以下输出: