mtr网络监测工具
Posted 礁之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mtr网络监测工具相关的知识,希望对你有一定的参考价值。
文章目录
一、MTR介绍
我们一般常用的网络检测工具有
ping,tracert,nslookup
,这些一般用来判断主机的网络连通性,而其实 Linux 中有一个更好用的网络联通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是mtr
。mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具。
注释:traceroute默认使用UDP数据包探测,而mtr默认使用ICMP报文探测,ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况,但这并不妨碍他是一款优秀的网络监测工具
二、安装方式(Linux)
- Linux可以直接运行命令进行安装。
#Debian/Ubuntu 系统
sudo apt install mtr
#RedHat/CentOS 系统
sudo yum install mtr
三、使用
- MTR使用非常简单,示例:
#测试本机到qq.com的路由以及连接情况
[root@localhost ~]# mtr qq.com
- 具体输出的参数含义为:
Host: IP地址,前面的数据表示第几挑,
例如:1. 10.0.2.1表示第一跳经过了10.0.2.1
Loss%: 丢包率
Snt: 已发送的包数
Last: 最后一个包的延时
Avg: 平均延时
Best: 最低延时
Wrst: 最差延时
StDev: 方差,稳定性
四、 选项参数说明
(1)-r 或–report
- 单独使用
mtr + 域名、ip地址
时,输出的数据是动态的,并且如果不中断的话,会一直运行,也就是会一直刷新数据。 - mtr提供
-r
或--report
选项,使用此选项时,mtr会把得到的数据打印成报告,中间的过程默认是mtr向目标主机发送10个ICMP包,然后直接输出结果,通常情况下需要数秒时间来生成报告 - mtr报告由一系列跳数组成,每一跳意味着数据包达到目的主机过程中经过的节点或者路由器
- 默认使用
-r
来生成报告,即默认只发送10个数据包,当然也可以使用-c
参数自定义数据包的数量 - 示例:
[root@localhost ~]# mtr -r qq.com
Start: Thu Dec 23 16:03:35 2021
HOST: localhost.localdomain Loss% Snt Last Avg Best Wrst StDev
1.|-- gateway 0.0% 10 1.6 2.9 1.4 14.1 3.9
2.|-- 10.0.100.6 0.0% 10 0.6 0.6 0.5 0.7 0.0
3.|-- 111.206.233.193 0.0% 10 7.0 31.8 7.0 69.6 22.1
4.|-- 10.255.255.5 0.0% 10 3.7 22.6 3.7 85.6 31.1
5.|-- 10.255.255.33 0.0% 10 2.2 2.3 1.9 3.1 0.0
6.|-- 10.15.82.33 0.0% 10 2.3 3.4 2.1 4.9 0.8
7.|-- 61.135.194.101 0.0% 10 1.4 1.3 1.1 1.7 0.0
8.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
[root@localhost ~]# mtr -r baidu.com
Start: Thu Dec 23 16:13:19 2021
HOST: localhost.localdomain Loss% Snt Last Avg Best Wrst StDev
1.|-- gateway 0.0% 10 1.5 1.6 1.4 2.2 0.0
2.|-- 10.0.100.6 0.0% 10 0.5 0.6 0.5 0.6 0.0
3.|-- 111.206.233.193 0.0% 10 42.0 20.7 3.8 71.9 22.7
4.|-- 10.255.255.5 0.0% 10 7.8 11.9 3.8 45.8 14.9
5.|-- 10.255.255.33 0.0% 10 30.5 5.2 2.0 30.5 8.9
6.|-- 10.15.82.33 0.0% 10 2.4 3.4 2.4 7.1 1.4
7.|-- 61.135.194.101 0.0% 10 1.2 1.2 1.1 1.3 0.0
8.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
(2)-s 或 --packetsize
- 使用 -s 来指定ping数据包的大小
mtr -s 50 qq.com
转移:100 bytes 数据包会用来发送,测试,如果设置为负数,则每一次发送的数据包的大小都会是一个随机数。
(3)-c
指定发送数量
mtr -c 100 qq.com
(4)-n
- 使用
-n
参数会只让mtr输出ip,而不对主机名(hostname)进行解释
[root@localhost ~]# mtr -n baidu.com
五、MTR结果详解
-
当我们分析 MTR 报告时候,除了可以查看两个服务器之间的路径之外,MTR 在它的七列输出数据中提供了很多有价值的数据统计报告。
-
Loss% :展示了数据包在每一跳的丢失率
-
Snt :记录了多少个数据包被送出 (使用
–report
或-r
参数默认会送出10个数据包,-c发送指定数量的数据包) -
Last、Avg、Best、Wrst:表示数据包往返的时间,使用的是毫秒( ms )单位表示。
Last 表示最后一个数据包所用的时间
Avg 表示评价时间
Best 和 Wrst 表示最小和最大时间。在大多数情况下,平均时间( Avg)列需要我们特别注意。
-
StDev: 提供了数据包在每个主机的标准偏差。如果标准偏差越高,说明数据包在这个节点的延时越不相同。标准偏差会让您了解到平均延时是否是真的延时时间的中心点,或者测量数据受到某些问题的干扰。
例如:
如果标准偏差很大,说明数据包的延迟是不确定的。一些数据包延迟很小(例如:25ms),另一些数据包延迟很大(例如:350ms)。当10个数据包全部发出后,得到的平均延迟可能是正常的,但是平均延迟是不能很好的反应实际情况的。如果标准偏差很高,使用最好和最坏的延迟来确定平均延迟是一个较好的方案。
-
在大多数情况下,可以把 MTR 的输出分成三大块。
(1)第二或第三跳一般都是您的本地 ISP
(2)倒数第二或第三跳一般为您目的主机的ISP
(3)中间的节点是数据包经过的路由器。
-
六、网络丢包
-
如果在任何一跳看到了
Loss%
的百分比不为0.0%
,就说明这一跳可能有问题了。但是发生丢包的现象有很多,例如:(1)很多服务器提供商人为限制ICMP的发送速率
(2)网络不好
(3)互联网设施的维护或者短暂的网络拥挤
-
如何分辨是人为限制还是确定有丢包现象
(常见判断方法)
:-
当出现丢包现象,需要确认
丢包的下一跳是否有丢包现象
,如果没有,说明这次丢包现象是人为的,如果丢包的下一跳,甚至与之后的几跳都有丢包现象
的话,说明这次丢包是有问题的。 -
但是,当我们看到不同的丢包率时,通常还是要以最后几条为准
-
互联网设施的维护或短暂的网络拥挤可能会带来短暂的丢包率,当出现短暂的10%丢包率时候,应用层的程序会弥补这点损失
注意:ICMP包的速率限制和丢失有可能会同时发生
-
七、网络延迟
-
mtr可以看到本地到目的之间的时延,因为是不同的位置,延迟通常会随着条数的增加而增加,所以延迟通常取决与节点之间的物理距离和线路的质量
-
示例:
在第5跳之前的
last
所用时间都是个位数,但是在第6跳时,last
所用时间达到了100+,这个时候可能的情况有:(1)第5跳到第6跳属于不同地域,物理距离的增加导致时延增加
(2)第6跳的路由器配置不当导致
(3)线路拥堵
当然还有其他情况,上面的只是常见情况,当遇到问题时还是需要进行具体的分析才行
-
高延迟并不一定表示当前路由器有问题,延迟增大的原因也有可能时在数据包返回过程中引发的,所以一般需要进行双向的、互相的mtr测试
-
注意:如果对ICMP进行了速率限制也可能会增加延迟,但是一般可以查看最后一条的时延来判断
八、结尾
当然还有其他情况,上面的只是常见情况,当遇到问题时还是需要进行具体的分析才行
-
高延迟并不一定表示当前路由器有问题,延迟增大的原因也有可能时在数据包返回过程中引发的,所以一般需要进行双向的、互相的mtr测试
-
注意:如果对ICMP进行了速率限制也可能会增加延迟,但是一般可以查看最后一条的时延来判断
八、结尾
mtr的检测报告显示的路由问题大多数都是暂时性的,大部分的问题都会在24小时之内被解决,当遇到网络问题后,可以选择对自己的服务供应商说明自己的问题,在联系供应商时,可以发送mtr的检测报告,可以帮助供应商快速的解决问题。但是在实际环境中,路由问题还是比较少见的,常见的一般都是因为物理距离太长、网络拥挤等,可以去选择购买cnd,减少网络延迟等
以上是关于mtr网络监测工具的主要内容,如果未能解决你的问题,请参考以下文章