使用MTR命令诊断网络问题

  以前在检查网络时习惯使用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

猜你喜欢

转载自www.cnblogs.com/Cherry-Linux/p/9122697.html
mtr