以前在检查网络时习惯使用ping命令,因为ping命令非常简单,现在喜欢上了mtr命令,因为它真的很强大,但是对于刚刚接触这个命令的同学来说,理解起来就没有ping命令来的那么直观了,所以今天写一下自己使用mtr命令的理解历程。

安装mtr命令

MAC:

brew install mtr

Ubuntu:

apt-get update

apt-get install mtr

CentOS:

yum -y install mtr

mtr命令输出列解析

Start: 2018-06-01T15:34:08+0800
HOST: Mac Loss% Snt Last Avg Best Wrst StDev
1.|-- 10.131.5.1 0.0% 10 1.5 3.8 1.2 9.9 2.7
2.|-- 172.16.105.25 0.0% 10 14.9 5.2 2.0 14.9 4.3
3.|-- 210.73.209.81 0.0% 10 19.7 8.9 5.0 19.7 4.5
4.|-- 118.186.62.141 0.0% 10 8.3 3.7 2.2 8.3 2.1
5.|-- 114.112.78.66 0.0% 10 2.9 3.6 2.3 7.3 1.6
6.|-- 103.241.231.130 0.0% 10 51.0 45.2 43.1 51.0 2.9
7.|-- 103.241.231.69 0.0% 10 48.1 46.5 43.9 51.1 2.3
8.|-- te3-1.c01.cnhkg.hk02.link 0.0% 10 44.4 46.1 44.0 52.8 2.7
9.|-- google2-lacp-100g.hkix.ne 0.0% 10 44.1 45.5 44.0 49.2 1.6
10.|-- 108.170.241.97 0.0% 10 44.9 46.4 44.9 47.8 1.0
11.|-- 209.85.241.219 0.0% 10 44.7 48.2 44.7 54.4 3.6
12.|-- hkg12s17-in-f14.1e100.net 0.0% 10 44.6 47.2 44.6 58.5 4.4

  我为什么要把解析输出结果放到参数前呢,因为更多情况下,我们都是用mtr命令来测试当前的网络情况的,对于我们来说最重要的是当前的网络情况如何,使用参数是为了更好的或者说更高效的让我们了解当前的情况而已。

第一列:显示的是IP地址或主机名,表示当前路由途径的地址信息。

第二列:显示的是对应IP或主机的丢包率

第三列:显示的是每秒发送数据包的数量

第四列:显示最近一次的时延

第五列:显示平均时延

第六列:显示最小时延

第七列:显示最大时延

第八列:显示数据包在每个主机的标准偏差,如果标准偏差数值很大(例如:网络极其不稳定,Best与W人rst抖动严重)那么即使是平均时延正常那我们也不能得出当前网络是正常的结论。

Start: Fri Jun  1 16:24:23 2018
HOST: Federico Loss% Snt Last Avg Best Wrst StDev
1.|-- ??? 100.0 1 0.0 0.0 0.0 0.0 0.0
2.|-- 11.211.20.53 0.0% 1 7.4 7.4 7.4 7.4 0.0
3.|-- 11.211.20.114 0.0% 1 1.2 1.2 1.2 1.2 0.0
4.|-- 116.251.74.146 0.0% 1 1.7 1.7 1.7 1.7 0.0
5.|-- 202.77.19.33 0.0% 1 1.5 1.5 1.5 1.5 0.0
6.|-- 202.77.18.194 0.0% 1 4.7 4.7 4.7 4.7 0.0
7.|-- 43.252.86.66 0.0% 1 4.3 4.3 4.3 4.3 0.0
8.|-- 202.77.23.29 0.0% 1 5.9 5.9 5.9 5.9 0.0
9.|-- 219.158.97.241 0.0% 1 9.5 9.5 9.5 9.5 0.0
10.|-- 219.158.96.210 0.0% 1 16.7 16.7 16.7 16.7 0.0
11.|-- 219.158.103.217 0.0% 1 13.5 13.5 13.5 13.5 0.0
12.|-- 219.158.108.241 0.0% 1 50.0 50.0 50.0 50.0 0.0
13.|-- 202.96.12.62 0.0% 1 46.0 46.0 46.0 46.0 0.0
14.|-- 123.126.6.118 0.0% 1 49.2 49.2 49.2 49.2 0.0
15.|-- 202.106.43.30 0.0% 1 41.9 41.9 41.9 41.9 0.0
16.|-- ??? 100.0 1 0.0 0.0 0.0 0.0 0.0
17.|-- ??? 100.0 1 0.0 0.0 0.0 0.0 0.0
18.|-- 123.125.115.110 0.0% 1 47.1 47.1 47.1 47.1 0.0

  我们已经解释了当前mtr报告中列参数的意义了,那么看我上面的报告第16和17跳丢包率为100%是否是正常现象呢?接下来我们就来解释下出现此丢包率的原因。这就不得不说跳数的问题了。

  首先我们分析为什么的第16和第17跳会有百分之百的丢包率呢,当我们在任何跳数中发现丢包率存在一定的数值时都有可能是当前路由器的网络存在一定问题,然而有很多服务提供商会限制MTR使用ICMP流量,也就是说我们的16和17跳很可能是没有问题的,只不过是人为的限制因素导致我们的丢包率达到了100%,那么我们如何判断是不是认为限制导致当前网络出现问题了呢,这就需要我们查看最后一跳,我们会发现如果最后一跳没有丢包现象,那么我们就可以基本的肯定在此之前的网络丢包是由于人为限制导致的了,所以即使是100%的丢包率,但是并没有真实的影响到当前的网络情况。

接下来,我们来分析几种情况:

Start: Fri Jun  1 16:55:57 2018
HOST: 192.168.1.109 Loss% Snt Last Avg Best Wrst StDev
1.|-- gateway 0.0% 3 0.9 0.8 0.8 0.9 0.0
2.|-- 117.79.135.53 0.0% 3 0.7 13.4 0.7 38.9 22.0
3.|-- 117.79.134.97 0.0% 3 0.9 0.9 0.9 1.0 0.0
4.|-- ??? 100.0 3 0.0 0.0 0.0 0.0 0.0
5.|-- 220.181.177.61 66.7% 3 1.5 1.5 1.5 1.5 0.0
6.|-- 220.181.0.197 0.0% 3 1.9 3.6 1.9 5.9 2.0
7.|-- ??? 100.0 3 0.0 0.0 0.0 0.0 0.0

  上面这种情况呢,就是完全丢包了,因为我们使用了一台不能访问谷歌的服务器,我们可以看最后一跳丢包率为100%,就说明当前主机到目标主机不可达。

HOST: localhost                   Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.3
2. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.8
3. 209.51.130.213 60.0% 10 0.8 2.7 0.8 19.0 5.7
4. aix.pr1.atl.google.com 60.0% 10 6.7 6.8 6.7 6.9 0.1
5. 72.14.233.56 50.0% 10 7.2 8.3 7.1 16.4 2.9
6. 209.85.254.247 40.0% 10 39.1 39.4 39.1 39.7 0.2
7. 64.233.174.46 40.0% 10 39.6 40.4 39.4 46.9 2.3
8. gw-in-f147.1e100.net 40.0% 10 39.6 40.5 39.5 46.7 2.2

  从这个例子中我们可以看出来,丢包率是可以和延迟同时发生的,证明当前网络确实存在问题。因为丢包率有可能是人为限制导致所以当我们真正遇到丢包是需要从最后几跳来考虑。

  互联网设施的维护或短暂的网络拥挤可能会带来短暂的丢包率,当出现短暂的10%丢包率时候,不必担心,应用层的程序会弥补这点损失。

HOST: localhost                   Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.3
2. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.8
3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4. aix.pr1.atl.google.com 0.0% 10 388.0 360.4 342.1 396.7 0.2
5. 72.14.233.56 0.0% 10 390.6 360.4 342.1 396.7 0.2
6. 209.85.254.247 0.0% 10 391.6 360.4 342.1 396.7 0.4
7. 64.233.174.46 0.0% 10 391.8 360.4 342.1 396.7 2.1
8. gw-in-f147.1e100.net 0.0% 10 392.0 360.4 342.1 396.7 1.2

  我们可以发现从第4条开始,延迟增加,可能是因为当前网络堵塞,或者路由规则设置不合理导致。

  以上案例有部分是从其他途径拷贝过来的,请见谅。

mtr命令参数详解

OPTIONS -4/-6

  使用-4选项,表示只测试IPv4地址,使用-6选项,表示只测试IPv6地址。

OPTIONS -r

sudo mtr -r google.com

Start: 2018-06-01T15:34:08+0800
HOST: Mac Loss% Snt Last Avg Best Wrst StDev
1.|-- 10.131.5.1 0.0% 10 1.5 3.8 1.2 9.9 2.7
2.|-- 172.16.105.25 0.0% 10 14.9 5.2 2.0 14.9 4.3
3.|-- 210.73.209.81 0.0% 10 19.7 8.9 5.0 19.7 4.5
4.|-- 118.186.62.141 0.0% 10 8.3 3.7 2.2 8.3 2.1
5.|-- 114.112.78.66 0.0% 10 2.9 3.6 2.3 7.3 1.6
6.|-- 103.241.231.130 0.0% 10 51.0 45.2 43.1 51.0 2.9
7.|-- 103.241.231.69 0.0% 10 48.1 46.5 43.9 51.1 2.3
8.|-- te3-1.c01.cnhkg.hk02.link 0.0% 10 44.4 46.1 44.0 52.8 2.7
9.|-- google2-lacp-100g.hkix.ne 0.0% 10 44.1 45.5 44.0 49.2 1.6
10.|-- 108.170.241.97 0.0% 10 44.9 46.4 44.9 47.8 1.0
11.|-- 209.85.241.219 0.0% 10 44.7 48.2 44.7 54.4 3.6
12.|-- hkg12s17-in-f14.1e100.net 0.0% 10 44.6 47.2 44.6 58.5 4.4

  使用-r选项,该选项使mtr进入报告模式。在此模式下,mtr将运行由指定的周期数-c选项,然后打印统计信息并退出。此模式对于生成有关网络质量的统计信息很有用。请注意,每个运行的mtr实例会产生大量的网络流量。可能会导致使用mtr来测量您的网络质量网络性能下降。

OPTIONS -F

vim hosts.txt

www.google.com
www.facebook.com
www.youtube.com

sudo mtr -c 3 -r -F hosts.txt

Start: 2018-06-01T15:57:18+0800
HOST: Mac Loss% Snt Last Avg Best Wrst StDev
1.|-- 10.131.5.1 0.0% 3 4.0 6.0 4.0 8.4 2.3
2.|-- 172.16.105.25 0.0% 3 12.0 11.8 4.6 18.9 7.1
3.|-- 210.73.209.81 0.0% 3 9.1 21.1 8.3 45.8 21.4
4.|-- 118.186.62.137 0.0% 3 2.9 4.2 2.9 5.2 1.1
5.|-- 114.112.78.70 0.0% 3 18.6 13.2 2.6 18.6 9.2
6.|-- 103.241.231.130 0.0% 3 47.1 49.7 47.1 52.2 2.6
7.|-- 103.241.231.69 0.0% 3 56.8 52.2 44.3 56.8 6.8
8.|-- te3-3.c01.cnhkg.hk02.link 0.0% 3 48.3 51.2 48.3 53.9 2.8
9.|-- 15169.hkg.equinix.com 0.0% 3 48.1 49.4 48.1 51.4 1.8
10.|-- 108.170.241.65 0.0% 3 47.8 55.4 47.8 64.7 8.6
11.|-- 209.85.241.209 0.0% 3 69.4 59.2 45.3 69.4 12.4
12.|-- hkg12s17-in-f4.1e100.net 0.0% 3 63.9 60.2 50.6 66.1 8.4
Start: 2018-06-01T15:58:17+0800
HOST: Mac Loss% Snt Last Avg Best Wrst StDev
1.|-- 10.131.5.1 0.0% 3 1.4 1.7 1.4 2.5 0.7
2.|-- 172.16.105.25 0.0% 3 2.6 4.1 2.4 7.2 2.7
3.|-- 210.73.209.81 0.0% 3 7.2 19.5 6.7 44.6 21.7
4.|-- 118.186.62.141 0.0% 3 59.5 21.6 2.5 59.5 32.8
5.|-- 114.112.78.66 0.0% 3 2.5 2.5 2.5 2.5 0.0
6.|-- xe-0-0-2.c02.cnhkg.hk02.l 0.0% 3 47.3 47.2 44.0 50.3 3.2
7.|-- 32934.hkg.equinix.com 0.0% 3 45.6 66.0 45.6 76.5 17.6
8.|-- po112.asw03.hkg3.tfbnw.ne 0.0% 3 46.2 45.4 44.7 46.2 0.7
9.|-- po231.psw02.hkg3.tfbnw.ne 0.0% 3 45.3 45.7 45.0 46.8 1.0
10.|-- 173.252.67.177 0.0% 3 44.9 45.5 44.7 46.8 1.2
11.|-- edge-star-z-mini-shv-01-h 0.0% 3 52.9 47.2 44.1 52.9 4.9
Start: 2018-06-01T15:58:44+0800
HOST: Mac Loss% Snt Last Avg Best Wrst StDev
1.|-- 10.131.5.1 0.0% 3 1.3 1.5 1.3 1.7 0.2
2.|-- 172.16.105.25 0.0% 3 2.3 2.3 2.1 2.6 0.2
3.|-- 210.73.209.81 0.0% 3 5.3 5.4 5.2 5.8 0.3
4.|-- 118.186.62.137 0.0% 3 2.5 2.9 2.5 3.3 0.4
5.|-- 114.112.78.70 0.0% 3 3.6 2.8 2.2 3.6 0.7
6.|-- 103.241.231.130 0.0% 3 46.1 44.3 43.3 46.1 1.6
7.|-- 103.241.231.69 0.0% 3 44.2 50.0 44.2 61.6 10.0
8.|-- te3-1.c01.cnhkg.hk02.link 0.0% 3 44.1 46.1 44.1 50.0 3.4
9.|-- google2-lacp-100g.hkix.ne 0.0% 3 44.4 45.2 44.3 47.0 1.5
10.|-- 108.170.241.1 0.0% 3 47.5 49.8 45.6 56.3 5.8
11.|-- 72.14.233.169 0.0% 3 45.7 47.1 45.3 50.3 2.8
12.|-- hkg07s22-in-f110.1e100.ne 0.0% 3 45.1 45.5 45.1 46.4 0.7

  由此可见,使用-F选项是从指定文件中读取主机选项进行网络测试。-c选项是设置每秒发送数据包的次数,在这里我们指定了3次,可以从Snt列表现出来。

OPTIONS -w

sudo mtr -w google.com

Start: 2018-06-01T16:03:13+0800
HOST: Mac Loss% Snt Last Avg Best Wrst StDev
1.|-- 10.131.5.1 0.0% 10 2.2 17.2 1.2 95.9 29.3
2.|-- 172.16.105.25 0.0% 10 3.5 4.1 2.3 10.1 2.8
3.|-- 210.73.209.81 0.0% 10 6.7 11.6 5.8 26.1 6.4
4.|-- 118.186.62.141 0.0% 10 26.3 7.5 2.6 26.3 7.5
5.|-- 114.112.78.66 0.0% 10 2.6 4.7 2.4 18.5 5.0
6.|-- 103.241.231.130 0.0% 10 43.4 47.1 43.3 61.4 5.9
7.|-- 103.241.231.69 0.0% 10 44.1 46.7 44.0 54.7 4.1
8.|-- te3-1.c01.cnhkg.hk02.link.capitalonline.net 0.0% 10 44.3 47.4 43.9 65.3 6.6
9.|-- google2-lacp-100g.hkix.net 0.0% 10 48.1 49.2 44.3 68.8 8.4
10.|-- 108.170.241.97 0.0% 10 46.4 50.6 45.3 69.1 7.4
11.|-- 209.85.241.219 0.0% 10 45.5 52.2 44.9 64.3 7.2
12.|-- hkg12s17-in-f14.1e100.net 0.0% 10 44.8 48.1 44.8 53.6 2.9

  使用-w选项表示使用mtr的广泛模式,在报告中显示更详细的主机名。

OPTIONS -x/C/j

sudo mtr -r -c 1 -j baidu.com >> baidu.json

cat baidu.json

{
"report": {
"mtr": {
"src": "Mac",
"dst": "baidu.com",
"tos": "0x0",
"psize": "64",
"bitpattern": "0x00",
"tests": "1"
},
"hubs": [{
"count": "1",
"host": "10.131.5.1",
"Loss%": 0.00,
"Snt": 1,
"Last": 1.94,
"Avg": 1.94,
"Best": 1.94,
"Wrst": 1.94,
"StDev": 0.00
},
{
"count": "2",
"host": "114.112.84.193",
"Loss%": 0.00,
"Snt": 1,
"Last": 2.62,
"Avg": 2.62,
"Best": 2.62,
"Wrst": 2.62,
"StDev": 0.00
},
{
"count": "3",
"host": "114.112.76.98",
"Loss%": 0.00,
"Snt": 1,
"Last": 2.09,
"Avg": 2.09,
"Best": 2.09,
"Wrst": 2.09,
"StDev": 0.00
},
{
"count": "4",
"host": "117.79.134.97",
"Loss%": 0.00,
"Snt": 1,
"Last": 2.41,
"Avg": 2.41,
"Best": 2.41,
"Wrst": 2.41,
"StDev": 0.00
},
{
"count": "5",
"host": "139.159.7.122",
"Loss%": 0.00,
"Snt": 1,
"Last": 6.17,
"Avg": 6.17,
"Best": 6.17,
"Wrst": 6.17,
"StDev": 0.00
},
{
"count": "6",
"host": "61.49.37.9",
"Loss%": 0.00,
"Snt": 1,
"Last": 2.95,
"Avg": 2.95,
"Best": 2.95,
"Wrst": 2.95,
"StDev": 0.00
},
{
"count": "7",
"host": "61.148.7.141",
"Loss%": 0.00,
"Snt": 1,
"Last": 2.26,
"Avg": 2.26,
"Best": 2.26,
"Wrst": 2.26,
"StDev": 0.00
},
{
"count": "8",
"host": "bt-230-101.bta.net.cn",
"Loss%": 0.00,
"Snt": 1,
"Last": 14.30,
"Avg": 14.30,
"Best": 14.30,
"Wrst": 14.30,
"StDev": 0.00
},
{
"count": "9",
"host": "bt-230-122.bta.net.cn",
"Loss%": 0.00,
"Snt": 1,
"Last": 4.87,
"Avg": 4.87,
"Best": 4.87,
"Wrst": 4.87,
"StDev": 0.00
},
{
"count": "10",
"host": "61.49.168.86",
"Loss%": 0.00,
"Snt": 1,
"Last": 3.36,
"Avg": 3.36,
"Best": 3.36,
"Wrst": 3.36,
"StDev": 0.00
},
{
"count": "11",
"host": "???",
"Loss%": 100.00,
"Snt": 1,
"Last": 0.00,
"Avg": 0.00,
"Best": 0.00,
"Wrst": 0.00,
"StDev": 0.00
},
{
"count": "12",
"host": "123.125.115.110",
"Loss%": 0.00,
"Snt": 1,
"Last": 2.96,
"Avg": 2.96,
"Best": 2.96,
"Wrst": 2.96,
"StDev": 0.00
}]
}
}

  使用-x可以将输出存储为xml格式文件,使用-C可以将输出存储为CSV格式文件,使用-j选项可以将输出存储为json格式文件。

  更多参数可以直接执行man mtr

使用MTR命令诊断网络问题的更多相关文章

  1. mtr命令

    mtr 命令详解 一般在windows 来判断网络连通性用ping 和tracert,ping的话可以来判断丢包率,tracert可以用来跟踪路由,在Linux中有一个更好的网络连通性判断工具,它可以 ...

  2. android命令行网络时间同步

    一.简介 Android基于Linux平台的开源手机操作系统. 二.原理 既然是Linux,那就应该支持linux的各种命令行,高度的可配置,但实验发现Android是Google的一个高度阉割版的l ...

  3. Linux系列教程(九)——Linux常用命令之网络和关机重启命令

    前一篇博客我们讲解了Linux压缩和解压缩命令,使用的最多的是tar命令,因为现在很多源码包都是.tar.gz的格式,通过 tar -zcvf 能完成解压.然后对于.zip格式的文件,使用gunzip ...

  4. Linux常用命令之网络和关机重启命令

    目录 1.网络命令 一.给指定用户发送信息:write 二.给所有用户发送广播信息:wall 三.测试网络连通性:ping 四.查看和设置网卡信息:ifconfig 五.查看发送电子邮件:mail 六 ...

  5. linux下使用screen和ping命令对网络质量进行监控

    linux下使用screen和ping命令对网络质量进行监控 场景:应用连接云服务器经常偶尔会出现连接不上的情况,android和IOS端连接的时候也会出现tcp延时5秒以上,现在想验证是否是云服务商 ...

  6. mtr 命令

    mtr命令的使用: -r  --report  以报告的方式发布监测的结果 -s 30   指定发送包的大小  这个随意   按照自己的需求 -i 10  设置icmp协议返回包的时间 -n  no- ...

  7. iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令

    iostat 命令 查看硬盘的使用情况: iostat iostat -x iotop 命令: 若没安装先安装: yum install iotop -y free 命令,用于查看内存的使用量: fr ...

  8. 每天一个linux命令(网络):【转载】ifconfig命令

    许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...

  9. RedHat/CentOS 7通过nmcli命令管理网络教程

    Red Hat Enterprise Linux 7 和CentOS 7 的网络管理实际上是对NetworkManager的管理,可通过nmcli命令进行控制,下面小编就给大家介绍下RedHat/Ce ...

随机推荐

  1. SpringCloud组件和概念介绍1

    一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及 ...

  2. EasyUI多选的获取

    function deletePRE() { var rows = $('#dg').datagrid('getSelections'); var ids = []; var other_ids = ...

  3. Mybatis中传入时间值

    <if test="search_content2 != null and search_content2 != ''"> AND add_time <![CDA ...

  4. C++重载、重写(覆盖)、隐藏

    类成员函数中重载/重写(覆盖)/重定义(隐藏)的区别? 答:分别简单讲述一下函数重载,函数覆盖,函数隐藏的概念与特征: 函数重载:重载函数通常用来命名一组功能相似的函数 1.函数要在相同的类域 2.函 ...

  5. Spring框架之什么是IOC的功能?

    1. 什么是IOC的功能? * IoC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * 使用IOC可以解决的程序耦合性高的问题!!  

  6. iOS.ObjC.Basic-Knowledge

    1. ObjC的基础 2. ObjC2.0中的编译指令 3. ObjC Runtime 4. ObjC Object Model 5. ObjC的新语法 6. FQA 1. ObjC的基础 2. Ob ...

  7. Codeforces 691C. Exponential notation 模拟题

    C. Exponential notation time limit per test: 2 seconds memory limit per test:256 megabytes input: st ...

  8. php代码执行顺序

    从上往下,调用类里面的方法,类放上面,调用在下面

  9. Vue.js (Frontend & Backend)尝试前后端分离

    前言 前端用什么框架都可以,这里选择小巧的vuejs. 要实现的功能很简单:1.登录功能,成功将服务器返回的token存在本地2.使用带token的header访问服务器的一个资源 本次实验环境: & ...

  10. Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程

    Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程 缓冲区(Buffer) 用于存储数据 通道(Channel) 用于传输数据 多路复用器(Selector) 用于轮询 Channel 状 ...