一串星号,我以为断在这

路由追踪中间连续三跳都是星号,我第一反应是这段断了,赶紧截图找人。

对方看了一眼说:后面不是还有跳吗?能到目标,就说明这三跳只是不回复。那次之后,我先看后面有没有跳。

回应和转发是两件事

路由器转发数据包,是它的本职工作。

回复探测包,是额外动作,需要它处理 ICMP 并回一个消息。控制面处理 ICMP,数据面负责转发,两者优先级不同。

很多设备出于安全或者性能考虑,默认不回复,或者只回复一部分。转发照常。

宝塔拨测控制台:定时拨测任务、节点与告警配置

宝塔拨测控制台:定时拨测任务、节点与告警配置

几种常见原因

运营商骨干设备关闭了 ICMP 回应,尤其是核心层。

设备对 ICMP 做速率限制,连续探测时后面的包被丢掉。

链路用了 MPLS 或者隧道,中间设备不参与 TTL 递减的常规处理。MPLS 网络里,中间常常只看到边缘设备,内部跳点不可见,这不是故障,是设计如此。隧道封装也会让跳数看起来变少,所以跳数不能直接换算成距离。

防火墙策略只允许特定类型,有些设备只对特定源地址回复。

怎么判断真假断点

用宝塔拨测的控制台从多个入口跑一遍,先看后续。星号之后如果又有跳点正常回应,说明流量过得去,那几跳不是断点。

再看端到端。用 ping 或 TCP 测目标,能通、延迟正常,就说明中途那些星号无关紧要。端到端不通时,也要排除目标自己屏蔽了探测。

只有从某一跳开始,后面全是星号直到目标,并且端到端也不通,才是真的断在那里。

换一种追踪方式

ICMP 追踪不回复的设备,换 TCP 追踪可能就回了,因为策略不同。

UDP 追踪也一样,不同实现走不同的过滤规则。有些环境对 ICMP 完全封闭,TCP 追踪才能穿过去。

换协议对比,能看到更多信息。跨境链路尤其常见这种情况。

复测和记录

连跑几次,看星号位置是否固定,位置稳定就不用一直追。固定的多半是策略,飘忽的可能是限速。看到星号先别急,先看端到端能不能用,能用就不追,不能用再找。这个顺序能省很多时间。

记录里写清用的哪种协议、从哪个入口、什么时间,以及当时端到端的结果。不然别人复现不了。

追之前想清楚目的:是为了解释现象,还是为了找人负责。目的不同,追的深度也不同,多数情况下解释清楚就够了。别把每条星号都当成案子。星号是「它不说话」,不是「它不干活」,工具是拿来用的,不是拿来较真的,这一点别忘了。