关于traceroute偶发超时的问题

刚配好的网络,traceroute测试一下:

-n 是不需要ip反解析,执行会比较快;于是就遇到了今天的问题:快速执行几次该命令就会出现失败(*)的情况,如果执行的慢点儿倒是没有问题

分析:

  1. 可能是网络不稳定
    1. ping 测试,大量请求,无一丢包 (显然不是网络问题)
  2. 限速?
    1. traceroute 涉及的是udp和icmp,不放sysctl -a|grep rate 试试

原因如下:

该问题和内核的两个参数有关:icmp_ratelimit、icmp_ratemask

虽然 ping 也是icmp,但是这种类型的icmp默认没有速率限制,而端口不可达的icmp是有限制的,所以,ping没有问题,traceroute有问题

参考:

icmp_ratelimit : INTEGER
默认值是100 Jiffie
限制发向特定目标的匹配icmp_ratemask的ICMP数据报的最大速率。0表示没有任何限制,否则表示jiffies数据单位中允许发送的个数。(如果在icmp_ratemask进行相应的设置Echo Request的标志位掩码设置为1,那么就可以很容易地做到ping回应的速度限制了)

icmp_ratemask : INTEGER
在这里匹配的ICMP被icmp_ratelimit参数限制速率.
匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100000011000 (6168 十进制)
关于标志位的设置,可参考 源程序目录/include/linux/icmp.h

0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply

* 号的被默认限速(见上表mask)

匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100 0 0 0 0 1 1001  (6169 十进制)

0 Echo Reply  掩码匹配

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据