使用ping命令丢包或不通时的链路测试方法-阿里云服务器ECS使用教程 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
产品推荐: 1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>; 2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>> 3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>> 4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>> 点击这里进入阿里云ECS官方页面,立即免费体验云服务器ECS>>> 当客户端访问目标服务器或负载均衡,使用ping命令测试出现丢包或网络不通时,可以通过链路测试工具进行链路测试来判断问题来源。本文介绍如何使用链路测试工具进行链路测试。 链路测试流程通常情况下,链路测试流程如下图所示。 链路测试流程说明如下:
进行链路测试Linux操作系统MTR是一款网络诊断工具,其将 安装mtrsudo yum install mtr 使用MTRmtr命令格式如下: mtr [-hvrctglspni46] [-help] [-version] [-report] [-report-cycles=COUNT] [-curses] [-gtk] [-raw] [-split] [-no-dns] [-address interface] [-psize=bytes/-s bytes] [-interval=SECONDS] HOSTNAME [PACKETSIZE] 常见的可选参数说明如下表所示,您也可以通过
您也可以在mtr命令运行过程中,输入如下参数来快速切换模式。
MTR返回示例以执行 默认配置下,返回结果列表中各数据项的说明如下。
Windows操作系统WinMTR是mtr工具在Windows环境下的图形化实现,但进行了功能简化,只支持部分mtr的参数。WinMTR默认发送ICMP数据包进行探测,无法切换。相比tracert,WinMTR能避免节点波动对测试结果的影响,所以测试结果更正确。所以在WinMTR可用的情况下,建议优先使用WinMTR进行链路测试。 安装并使用WinMTR下载WinMTR后无需安装,直接解压运行即可,操作方法非常简单,操作步骤如下。
WinMTR返回示例以测试目标服务器域名为例,返回示例如下: 默认配置下,返回结果中各数据项的说明如下:
链路测试结果说明由于mtr命令有更高的准确性,本文以mtr命令测试结果为例,对链路测试结果的分析进行简要说明。后续的说明,均以如下链路测试结果示例图为基础进行阐述。 网络区域通常情况下,从客户端到目标服务器的整个链路,会显著的包含如下区域:
链路负载均衡如前文链路测试结果示例图中的区域D。如果中间链路某些部分启用了链路负载均衡,则mtr命令只会对首尾节点进行编号和探测统计。中间节点只会显示相应的IP地址或域名信息。 Avg(平均值)和 StDev(标准偏差)由于链路抖动或其他因素的影响,节点的Best和Wrst值可能相差很大。而Avg(平均值)统计了自链路测试以来所有探测的平均值,所以能更好的反应出相应节点的网络质量。而StDev(标准偏差值)越高,则说明数据包在相应节点的延时值越不相同(越离散)。所以标准偏差值可用于协助判断Avg是否真实反应了相应节点的网络质量。例如,如果标准偏差很大,说明数据包的延迟是不确定的。可能某些数据包延迟很小(例如25 ms),而另一些延迟却很大(例如350 ms),但最终得到的平均延迟反而可能是正常的。所以此时Avg并不能很好的反应出实际的网络质量情况。 综上,建议分析标准如下:
Loss%(丢包率)任一节点的Loss%(丢包率)如果不为零,则说明这一跳网络可能存在问题。导致相应节点丢包的原因通常有如下两种:
延迟
常见链路异常场景目标主机网络配置不当如下图所示,数据包在目标地址出现了100%的丢包。初步看是数据包没有到达,其实很有可能是目标服务器相关安全策略,例如防火墙、iptables等禁用了ICMP所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置。 ICMP限速如下图所示,数据包在第7跳出现100%丢包,而后续节点显示数据包正常传输的情况。初步看是数据包没有到达,其实很有可能是目标服务器相关安全策略,例如防火墙、iptables 、运营商策略等禁用了ICMP所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置,或结合反向MTR链路测试综合分析。 链路中存在环路如下图所示,数据包在第5跳之后出现了循环跳转,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常,即链路中存在环路所致。所以,该场景需要联系相应节点归属运营商处理。 链路中断如下图所示,数据包在第4跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。 |