路由跟踪traceroute

traceroute 默认发送 UDP 数据包进行链路探测。可以通过 -I 参数来指定发送 ICMP 数据包用于探测。

用法说明

traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ]
[ -s SRC_Addr ] [  -t TypeOfService ] [ -f flow ] [ -v ] [  -w WaitTime ] Host [ PacketSize ]

示例输出

[root@centos ~]# traceroute -I 223.5.5.5
traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets
 1  * * *
 2  192.168.17.20 (192.168.17.20)  3.965 ms  4.252 ms  4.531 ms
 3  111.1.20.41 (111.1.20.41)  6.109 ms  6.574 ms  6.996 ms
 4  111.1.34.197 (111.1.34.197)  2.407 ms  2.451 ms  2.533 ms
 5  211.138.114.25 (211.138.114.25)  1.321 ms  1.285 ms  1.304 ms
 6  211.138.114.70 (211.138.114.70)  2.417 ms 211.138.114.66 (211.138.114.66) 
 1.857 ms 211.138.114.70 (211.138.114.70)  2.002 ms
 7  42.120.244.194 (42.120.244.194)  2.570 ms  2.536 ms 42.120.244.186 (42.120.244.186)  1.585 ms
 8  42.120.244.246 (42.120.244.246)  2.706 ms  2.666 ms  2.437 ms
 9  * * *
10  public1.alidns.com (223.5.5.5)  2.817 ms  2.676 ms  2.401 ms

常见可选参数说明
-d 使用 Socket 层级的排错功能。
-f 设置第一个检测数据包的存活数值 TTL 的大小。
-F 设置不要分段标识。
-g 设置来源路由网关,最多可设置 8 个。
-i 使用指定的网卡送出数据包。用于主机有多个网卡时。
-I 使用 ICMP 数据包替代 UDP 数据包进行探测。
-m 设置检测数据包的最大存活数值 TTL 的大小。
-n 直接使用 IP 地址而非主机名称(禁用 DNS 反查)。
-p 设置 UDP 传输协议的通信端口。
-r 忽略普通的 Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的 IP 地址。
-t 设置检测数据包的 TOS 数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回包时间。
-x 开启或关闭数据包的正确性检验。

分析链路测试结果
以如下链路测试结果示例图为基础进行阐述:

1538116839883510.png

分析步骤
判断各区域是否存在异常,并根据各区域的情况分别处理。
区域 A:客户端本地网络,即本地局域网和本地网络提供商网络。针对该区域异常,客户端本地网络相关节点问题,请对本地网络进行排查分析;本地网络提供商网络相关节点问题,请向当地运营商反馈。
区域 B:运营商骨干网络。针对该区域异常,可根据异常节点 IP 查询归属运营商,然后直接或通过阿里云售后技术支持,向相应运营商反馈问题。
区域 C:目标服务器本地网络,即目标主机归属网络提供商网络。针对该区域异常,需要向目标主机归属网络提供商反馈问题。
结合 Avg(平均值)和 StDev(标准偏差),判断各节点是否存在异常。
若 StDev 很高,则同步观察相应节点的 Best 和 Wrst,来判断相应节点是否存在异常。
若 StDev 不高,则通过 Avg 来判断相应节点是否存在异常。
注意:上述 StDev 高 或者 不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果 Avg 为 30 ms,那么,当 StDev 为 25 ms,则认为是很高的偏差。而如果 Avg 为 325 ms,则同样的 StDev(25 ms),反而认为是不高的偏差。

查看节点丢包率,若 Loss% 不为零,则说明这一跳网络可能存在问题。
导致节点丢包的原因通常有两种:
人为限制了节点的 ICMP 发送速率,导致丢包。
节点确实存在异常,导致丢包。
确定当前异常节点的丢包原因。
若随后节点均没有丢包,说明当前节点丢包是由于运营商策略限制所致,可以忽略。如前文链路测试结果示例图中的第 2 跳所示。
若随后节点也出现丢包,说明当前节点存在网络异常,导致丢包。如前文链路测试结果示例图中的第 5 跳所示。
说明:前述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,若当前节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳的丢包率为准。如前文链路测试结果示例图所示,在第 5、6、7跳均出现了丢包。所以,最终丢包情况,以第 7 跳的 40% 作为参考。
通过查看是否有明显的延迟,来确认节点是否存在异常。通过如下两个方面进行分析:
若某一跳之后延迟明显陡增,则通常判断该节点存在网络异常。如前文链路测试结果示例图所示,从第 5 跳之后的后续节点延迟明显陡增,则推断是第 5 跳节点出现了网络异常。
注意:高延迟并不一定完全意味着相应节点存在异常,延迟大也有可能是在数据回包链路中引发的,建议结合 反向链路测试 一并分析。
ICMP 策略限速 也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如前文链路测试结果示例图所示,第 3 跳有 100% 的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。

版权声明:
作者:WaterBear
链接:https://l-t.top/1560.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>