如图,三个时间里有1个或者2个显示星号,这是为什么呢?
如果是配置了ACL丢弃了响应报文的话按理应该3个都显示星号呀
直接ping这个ip的话不会出现丢包,时延也很稳定
这个问题很诡异,演绎一下,仅供参考。首先traceroute 是利用“TTL Expired”功能,让沿途的路由器每次遭遇TTL = 0,会通过ICMP Type 11 发送出错消息“TTL Expired”。而Ping的工作原理,是利用去向的Type 8(Echo Request),以及返程的Type 0 ( Echo Reply)。通常为了保护路由器CPU不受太大冲击,会对Ping进行限速,一般一秒一个(可配置),超过了就丢,由于Windows Ping 通常2秒发一个,所以不会被丢,这点没有问题。但对类似ICMP type 11就不一样的处理了,这种是出错报文,通常会禁掉,你会看到问题路由器出现三个连续的*号,但这里没有,所以没有禁止。那是什么情况呢?如果有一台主机发1000000个出错报文,那路由器是否就需要回复1000000个ICMP报文,如果真这么做,对路由器就是一个DOS攻击。路由器会有自己的实现方式,可以按照自己的喜好(这点RFC提到过),选择合适的比例来回复,这不是强制标准,只是一个option。有的路由器可能会选择接收到10个出错报文,在第一时间回复ICMP出错报文,剩下9个就不回复了,反正出错类型一样,省点力气,保护自己。在这个问题里,这台出问题路由器选择接收2个traceroute报文,回复1个ICMP 出错消息的原则。
一般和多路径有关系,看上去是同一个IP的,实际上并不一定从同一个设备上返回,在同一个设备返回的情况下也不一定走相同的路径。这样逻辑上同一条,实际上可能有多种不一样的路径。有些不同路径上的设备,或者同一个设备的不同端口配置不一样,那就可能出现这种现象。也有的可能只是随机的,在流量大的时候某些包会优先被丢掉之类。
一般和多路径有关系,看上去是同一个IP的,实际上并不一定从同一个设备上返回,在同一个设备返回的情况下也不一定走相同的路径。这样逻辑上同一条,实际上可能有多种不一样的路径。有些不同路径上的设备,或者同一个设备的不同端口配置不一样,那就可能出现这种现象。也有的可能只是随机的,在流量大的时候某些包会优先被丢掉之类。
以前看某本网络相关的书籍的时候提到过,这一般是运营商路由器不响应 Tracertroute 导致的。有可能是相关网关不想回应你,也有可能是超时直接丢弃回应了。不过应该是前者居多吧。因为 Tracertroute 默认是 UDP 协议通信的,而 ping 是 IMCP 所以后者能正常接收到回应计算出延迟。
版权归原作者 格格巫 MMQ!! 所有, 如有侵权,请联系我们删除。