简述

MTR 是一款强大的网络诊断工具它集合了 traceroute 和 ping 这两个命令的精华,网络及管理员都可使用 MTR 可以诊断和隔离网络问题,并且为ISP和通信对象 提供有用的网络状态报告。

Linux安装MTR

(一般linux都已内置)

# CentOS
yum install mtr
# Ubuntu
apt-get install mtr

Usage:
 mtr [options] hostname

 -F, --filename FILE        read hostname(s) from a file
 -4                         use IPv4 only
 -6                         use IPv6 only
 -u, --udp                  use UDP instead of ICMP echo
 -T, --tcp                  use TCP instead of ICMP echo
 -a, --address ADDRESS      bind the outgoing socket to ADDRESS
 -f, --first-ttl NUMBER     set what TTL to start
 -m, --max-ttl NUMBER       maximum number of hops
 -U, --max-unknown NUMBER   maximum unknown host
 -P, --port PORT            target port number for TCP, SCTP, or UDP
 -L, --localport LOCALPORT  source port number for UDP
 -s, --psize PACKETSIZE     set the packet size used for probing
 -B, --bitpattern NUMBER    set bit pattern to use in payload
 -i, --interval SECONDS     ICMP echo request interval
 -G, --gracetime SECONDS    number of seconds to wait for responses
 -Q, --tos NUMBER           type of service field in IP header
 -e, --mpls                 display information from ICMP extensions
 -Z, --timeout SECONDS      seconds to keep probe sockets open
 -r, --report               output using report mode
 -w, --report-wide          output wide report
 -c, --report-cycles COUNT  set the number of pings sent
 -j, --json                 output json
 -x, --xml                  output xml
 -C, --csv                  output comma separated values
 -l, --raw                  output raw format
 -p, --split                split output
 -t, --curses               use curses terminal interface
     --displaymode MODE     select initial display mode
 -n, --no-dns               do not resove host names
 -b, --show-ips             show IP numbers and host names
 -o, --order FIELDS         select output fields
 -y, --ipinfo NUMBER        select IP information in output
 -z, --aslookup             display AS number
 -h, --help                 display this help and exit
 -v, --version              output version information and exit

MTR报告解读

返回结果各列数据说明:

Host: 显示的是 IP 地址或本机域名

Loss%: Loss% 表示到达此节点的数据包丢包率,显示的每个对应 IP 的丢包率。

snt: 设置的发送数据包的数量,默认值是 10 通过参数 -c 来自定义数量。

last: Last 显示的最近一次的返回时延

Avg: Avg 平均值这个应该是发送 ping 包的平均时延

Best: Best 表示时延最低的响应时间

Wrst: Wrst 表示时延最大的响应时间

StDev: StDev 为标准偏差,数值越大说明相应节点越不稳定

正向链路测试及反向链路测试队对网络情况进行诊断

从客户端或服务器向对方做PING和MTR链路测试。建议至少测试100个数据包,设置测试目的地址为目标域名或IP,然后进行链路测试,记录测试结果。

链路测试流程

链路测试流程图.png

链路测试网络区域查看

MTR 网络区域.png

对链路测试结果进行分析时,需要关注如下几点:

1.网络区域

2.链路负载均衡

3.结合Avg(平均值)和 StDev(标准偏差)综合判断

4.Loss%(丢包率)的判断

5.延迟

6.标准差

客户端本地网络:本地局域网和本地网络提供商网络。如果该区域出现异常,如果是客户端本地网络相关节点出现异常,则需要对本地网络进行相应排查分析。否则,如果是本地网络提供商网络相关节点出现异常,则需要向当地运营商反馈问题。

运营商骨干网络:如果该区域出现异常,可以根据异常节点IP查询归属运营商,向相应运营商反馈问题。

目标服务器本地网络:目标主机归属网络提供商网络。如果该区域出现异常,则需要向目标主机归属网络提供商反馈问题。

链路负载均衡:如果中间链路某些部分启用了链路负载均衡,则mtr命令只会对首尾节点进行编号和探测统计。中间节点只会显示相应的IP或域名信息。

关于Loss%(丢包率)的判断

任一节点的Loss%(丢包率)如果不为零,则说明这一跳网络可能存在问题。导致相应节点丢包的原因通常有两种。

1.运营商基于安全或性能需求,人为限制了节点的ICMP发送速率,导致丢包。

2.节点确实存在异常,导致丢包。

常见问题

ICMP速率限制

ICMP 速率限制可引起数据包的丢失。如果数据包在这一跳有丢失,但是下面几条都正常,可以判断是 ICMP 速率限制的原因

超时

有些路由器可能会直接丢弃 ICMP 包,这时就会导致超时(变成???)。另外,也有可能在数据返回的路上出现了问题,超时不一定是数据包被丢失,只要后面依然返回了目标主机的信息就说明数据包依然是抵达了

链路中断

数据包在某一跳之后就无法收到任何反馈,通常是由于相应节点中断所致。需要结合反向链路测试做进一步确认

环路

数据包在最后一跳就无法收到任何反馈,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常所致。

Last modification:February 1st, 2021 at 04:29 pm
如果觉得我的文章对你有用,请随意赞赏