常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络联通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是 mtr。mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具。traceroute默认使用UDP数据包探测,而mtr默认使用ICMP报文探测,ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况。

安装方法

1.Windows系统可以直接在https://cdn.ipip.net/17mon/besttrace.exe下载BestTrace工具并安装。也可以在https://github.com/oott123/WinMTR/releases GitHub上下载MTR专用工具,该工具为免安装,下载后可以直接使用。2.Linux可以直接运行命令进行安装。

# Debian/Ubuntu 系统apt install mtr# RedHat/CentOS 系统yum install mtr

3.Apple客户端可以在App store搜索Best NetTools下载安装4.Android客户端:可以在Google Play上下载TracePing,但是由于国内Google Play无法访问,笔者自行下载下来,可以直接访问 https://dwz.cn/KCdNPH4c 下载TracePing。

使用

MTR使用非常简单,查看本机到 qq.com 的路由以及连接情况直接运行如下命令:

mtr qq.com

MTR qq.com 测试界面

具体输出的参数含义为:

  • 第一列是IP地址

  • 丢包率:Loss

  • 已发送的包数:Snt

  • 最后一个包的延时:Last

  • 平均延时:Avg

  • 最低延时:Best

  • 最差延时:Wrst

  • 方差(稳定性):StDev

参数说明

  • -r or --report

使用 mtr -r qq.com 来打印报告,如果不使用 -r or --report 参数 mtr 会不断动态运行。使用 report 选项, mtr 会向 qq.com 主机发送 10 个 ICMP 包,然后直接输出结果。通常情况下 mtr 需要几秒钟时间来输出报告。mtr 报告由一系列跳数组成,每一跳意味着数据包通过节点或者路由器来达到目的主机。

一般情况下 mtr 前几跳都是本地 ISP,后几跳属于服务商比如 腾讯数据中心,中间跳数则是中间节点,如果发现前几跳异常,需要联系本地 ISP 服务提供上,相反如果后几跳出现问题,则需要联系服务提供商,中间几跳出现问题,则需要联系运营商进行处理

默认使用 -r 参数来生成报告,只会发送10个数据包,如果想要自定义数据包数量,可以使用 -c 参数

  • -s or --packetsize

使用 -s 来指定ping数据包的大小

mtr -s 100 qq.com

100 bytes 数据包会用来发送,测试,如果设置为负数,则每一次发送的数据包的大小都会是一个随机数。

  • -c

指定发送数量

mtr -c 100 qq.com
  • -n

不进行主机解释

使用 -n 选项来让 mtr 只输出 IP,而不对主机 host name 进行解释

mtr -n qq.com

MTR结果分析

当我们分析 MTR 报告时候,最好找出每一跳的任何问题。除了可以查看两个服务器之间的路径之外,MTR 在它的七列数据中提供了很多有价值的数据统计报告。

Loss% 列展示了数据包在每一跳的丢失率。Snt 列记录的多少个数据包被送出。

使用 –report 参数默认会送出10个数据包。如果使用 –report-cycles=[number-of-packets] 选项,MTR 就会按照 [number-of-packets] 指定的数量发出 ICMP 数据包。

Last, Avg, Best 和 Wrst 列都标识数据包往返的时间,使用的是毫秒( ms )单位表示。Last 表示最后一个数据包所用的时间, Avg 表示平均时间, Best 和 Wrst 表示最小和最大时间。在大多数情况下,平均时间( Avg)列需要我们特别注意。

最后一列 StDev 提供了数据包在每个主机的标准偏差。如果标准偏差越高,说明数据包在这个节点的延时越不相同。标准偏差会让您了解到平均延时是否是真的延时时间的中心点,或者测量数据受到某些问题的干扰。

例如,如果标准偏差很大,说明数据包的延迟是不确定的。一些数据包延迟很小(例如:25ms),另一些数据包延迟很大(例如:350ms)。当10个数据包全部发出后,得到的平均延迟可能是正常的,但是平均延迟是不能很好的反应实际情况的。如果标准偏差很高,使用最好和最坏的延迟来确定平均延迟是一个较好的方案。

在大多数情况下,您可以把 MTR 的输出分成三大块。根据配置,第二或第三跳一般都是您的本地 ISP,倒数第二或第三跳一般为您目的主机的ISP。中间的节点是数据包经过的路由器。

当分析 MTR 的输出时,您需要注意两点:losslatency

网络丢包

如果在任何一跳上看到 loss 的百分比,这就说明这一跳上可能有问题了。当然,很多服务提供商人为限制 ICMP 发送的速率,这也会导致此问题。那么如何才能指定是人为的限制 ICMP 传输 还是确定有丢包的现象?此时需要查看下一跳。如果下一跳没有丢包现象,说明上一条是人为限制的。如下示例:

人为限制MTR丢包

在此例中,第4跳发生了丢包现象,但是接下来几条都没任何丢包现象,说明第二跳的丢包是人为限制的。如果在接下来的几条中都有丢包,那就可能是第二跳有问题了。

请记住,ICMP 包的速率限制和丢失可能会同时发生。

MTR丢包截图

从上面的图中,您可以看从第13跳和第17跳都有 10% 的丢包率,从接下来的几跳都有丢包现象,但是最后15,16跳都是100%的丢包率,我们可以猜测到100%的丢包率除了网络糟糕的原因之前还有人为限制 ICMP。所以,当我们看到不同的丢包率时,通常要以最后几跳为准。

还有很多时候问题是在数据包返回途中发生的。数据包可以成功的到达目的主机,但是返回过程中遇到“困难”了。所以,当问题发生后,我们通常需要收集反方向的 MTR 报告。

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

网络延迟

除了可以通过MTR报告查看丢包率,我们也还可以看到本地到目的之间的时延。

因为是不通的位置,延迟通常会随着条数的增加而增加。所以,延迟通常取决于节点之间的物理距离和线路质量。

MTR查看网络延迟

从上面的MTR报告截图中,我们可以看到从第11跳到12跳的延迟猛增,直接导致了后面的延迟也很大,一般有可能是11跳到12跳属于不通地域,物理距离导致时延猛增,也有可能是第12条的路由器配置不当,或者是线路拥塞。需要具体问题进行具体的分析。

然而,高延迟并不一定意味着当前路由器有问题。延迟很大的原因也有可能是在返回过程中引发的。从这份报告的截图看不到返回的路径,返回的路径可能是完全不同的线路,所以一般需要进行双向MTR测试。

注:ICMP 速率限制也可能会增加延迟,但是一般可以查看最后一条的时间延迟来判断是否是上述情况。

根据MTR结果解决网络问题

MTR 报告显示的路由问题大都是暂时性的。很多问题在24小时内都被解决了。大多数情况下,如果您发现了路由问题,ISP 提供商已经监视到并且正在解决中了。当您经历网络问题后,可以选择提醒您的 ISP 提供商。当联系您的提供商时,需要发送一下 MTR 报告和相关的数据。没有有用的数据,提供商是没有办法去解决问题的。

然而大多数情况下,路由问题是比较少见的。比较常见的是因为物理距离太长,或者上网高峰,导致网络变的很慢。尤其是跨越大西洋和太平洋的时候,网络有时候会变的很慢。这种情况下,建议就近接入客户的节点。

【神兵利器系列↓↓↓】

开源神器:Java诊断利器Arthas压测神器:jmeter压测Dubbo RPC接口高性能工具:JMH 微基准测试一款秒级定位线上问题的神器!线上压测导流神器tcpcopy:导入线上流量进行功能和压力测试抓包神器:Wireshark 实例分析TCP三次握手过程抓包神器:tcpdump!我还真没用过

必备瑞士军刀IDEA插件,你使用了哪些?

作者:苏欣

来源:https://cloud.tencent.com/developer/article/1491610


【版权声明】本着分享学习的目的,本公众号有部分文章来源于网络,版权归原作者所有!若您觉得侵权且要求删除,请您留言或者联系公众号小编,谢谢!回复公众号【资料】获得干货资料集锦:技术ppt、IT大会资料、架构、分布式资料等。推荐好文

1、互联网Code Review最佳实践分享

2、dubbo面试题!会这些,说明你看懂了dubbo源码

3、Kafka面试题!掌握它才说明你真正懂Kafka4、Netty 5.0为啥被舍弃?原因竟然是...5、中台之上——业务架构系列【汇总】

6、必备瑞士军刀IDEA插件,你使用了哪些

7、线上热更新代码只需3步 Arthas实战

8、Eureka源码剖析之七:架构&面试题【总结】

9、互联网工程师应该用这种姿势打印日志

10、加入:互联网基础/架构交流群

-关注搬运工来架构,与优秀的你一同进步-

如果喜欢这篇文章可以点在看哦↘

centos 7 局域网丢包排查_网络排查神器:mtr相关推荐

  1. centos 7 局域网丢包排查_宽带发生故障怎么办?教你几招轻松排查

    1 FTTH故障处理步骤 第一步:查看ONT(光猫) "Power"电源灯的状态. (1)不亮,表示供电异常,需要检查电源连接和电源适配器是否工作正常 (2)长亮,表示供电正常转第 ...

  2. centos 7 局域网丢包排查_ethtool原理介绍和解决网卡丢包排查思路

    前言 之前记录过处理因为LVS网卡流量负载过高导致软中断发生丢包的问题,RPS和RFS网卡多队列性能调优实践,对一般人来说压力不大的情况下其实碰见的概率并不高.这次想分享的话题是比较常见服务器网卡丢包 ...

  3. tcp丢包率_网络编程 | TCP/IP基础知识

    在2017年10月深圳 Cocos 沙龙上,有幸结识了社区中大名顶顶的Colin,Shawn在论坛上第一次看到Colin的团队用CocosCreator制作的<热血暗黑>时就被深深地震撼到 ...

  4. centos 7 局域网丢包排查_一文掌握docker centos 安装python3.7「精品」

    今天我将通过下文,详细向大家介绍如何在docker下安装python3.7,当然是在centos中: 一.获取centos镜像 docker pull centos:centos7 二.查看容器 do ...

  5. centos 7 局域网丢包排查_Nginx搭建局域网yum源问题补充及解决思路与方法转发收藏...

    上一篇文章描述了利用Nginx搭建局域网yum源,安装完成后可以使用,但是有的老铁反馈说出现如下错误,可以查询到包,但是安装的时候,提示找不到路径,我这里做了测试,总结到这篇文章中. 这里是用安装te ...

  6. 华为交换机带宽不足会丢包吗_华为岳伟:品质家宽,释放F5G网络体验红利

    在北京举办的2020中国光网络研讨会(OPTiNET2020)之光接入技术与下一代PON分论坛上,华为技术有限公司传送接入产品组合与生命周期管理部总裁岳伟做了<品质家宽,释放F5G网络体验红利& ...

  7. csgo降低延迟指令_【显示FPS、延迟丢包率等网络参数】net_graph及相关控制台命令...

    本文将介绍CSGO控制台指令net_graph,用于显示画面帧数(fps)和延迟(ping).丢包率(loss和choke)等服务器/网络状态参数,除此之外,还有net_graph相关的控制台命令,用 ...

  8. linux tcp 丢包命令_在Linux下实现测试TCP和UDP的丢包检测!

    在Linux下实现测试TCP和UDP的丢包检测! 疯狂の猿猴 • 2020 年 12 月 11 日 前言 本人平时基本上都是win,一下子转战到linux,有点不习惯! 因此做个记录,便于以后自己查阅 ...

  9. ns3统计时延和丢包率_端到端高丢包率小区优化思路

    1.       端到端高丢包小区整体分析思路 (1)VOLTE端到端高丢包率统计方式说明 VOLTE端到端高丢包率小区数据取自GM接口丢包率统计,涉及终端.空口.基站.PTN传输网络.S/PGW.S ...

最新文章

  1. 有三个输入的自监督网络设计
  2. docker 中部署一个springBoot项目
  3. oi程序提交注意:bool
  4. 几个让我印象深刻的面试题(二)
  5. 16-爬虫之scrapy框架手动请求发送实现全站数据爬取03
  6. 虚拟机连接网络_Parallels Desktop 16教程PD16虚拟机共享网络和桥接网络设置方法
  7. 矩阵形状| 使用Python的线性代数
  8. sicily 1156 ——虽然Wrong error(原因尚未查明),但温习了一下基础知识
  9. oracle 导出写入文件失败怎么办,编辑dmp文件解决导入导出问题(oracle 922错误 ,缺少或无效选项)...
  10. 代替嵌套循环java_蓝石榴_个人博客_Java中for循环嵌套的替换优化
  11. linux下编译yacc命令,Lex/Yacc的学习——《编译原理及实践》附录B tiny编译器源码在linux下编译实现...
  12. PHP Smarty 学习手册
  13. 翻译狗文档免费下载手册(补充版)
  14. ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解
  15. 解决耳机插在主机上没有声音的问题
  16. 购房攻略—买楼返折扣、返佣金、返京东购物卡、物业费套路
  17. PMOS管用作电源开关注意事项
  18. mysql数据库主机名是什么_mysql数据库主机名是什么
  19. 近百个Android优秀开源项目
  20. 杭电 hdu 1720

热门文章

  1. 机器学习(part1)--机器学习第一课
  2. 30个数据可视化小技巧(文末赠书)
  3. orbeon form 的架构简介 - 如何访问用户通过 form 存储的数据
  4. 如何解决 Angular custom library module 在 ng build 时无法被识别的错误
  5. 如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
  6. Angular InjectionToken的一个具体使用例子
  7. SAP Spartacus如何判断用户是否已经成功登录
  8. SAP Spartacus auto focus Directive响应模型变化的一些触发时机例子
  9. SAP Spartacus central configuration - B2cStorefrontModule
  10. how is our class instance registered - thanks to AnnotationConfigWebApplicationC