在 traceroute 输出中,远跳的 RTT 怎么会小于近跳的 RTT?

网络工程 跟踪路由 路线
2022-02-23 19:00:20

根据这里

...您的数据包到达该点并返回您的计算机的往返时间 (RTT)。

在示例中,它显示:

在此处输入图像描述

第 5 跳的 RTT 小于第 4 跳。

RTT_4 = t1 + t2 + t5

RTT_5 = t1 + t2 + t3 + t6

RTT_5 < RTT_4 怎么可能?还是因为 t3 + t6 < t5 有可能?

在此处输入图像描述

2022 年 3 月 21 日上午 10 点 49 分添加

(感谢 Ron Mauphin 的回答。)

我认为我之前对 traceroute 如何工作的说明是错误的。它应该是这样的:

RTT (Round Trip Time) = t1 + t2 + t3
TTL = number of hops

重要的提示

这些线是虚线,因为它们不一定是直接交通。中间可以有路由器。Traceroute 只关心每一行的来源和目的地。

在此处输入图像描述

Traceroute 是一个智能工具,它利用路由器在数据包的 TTL 达到 0 时发送的 TTL 和 ICMP 超时错误消息。有效的结果是粗略地获得源到达目的地的路径和到达每个节点的 RTT中间。这很粗糙,因为无法保证 traceroute 显示的节点真的/严格来说是一个接一个traceroute 发送的每个探测数据包都可能通过完全不同的路径,该路径不包括之前探测的所有先前的中间节点。

严格来说,traceroute 本质上是随着距离的增加(TTL,即最大允许跳数)进行探测。它发出 3 个数据包,但即使这 3 个数据包也不能保证遵循相同的路径。它根本不测量延迟。它只说了两件事:

  • 这次可以达到多少TTL。
  • 如果可以在指定的最大 TTL/跳数内到达某个目的地。

但是,它仍然很有用。

一个相关的线程: traceroute的解释

1个回答

这是因为较慢的路由器忙于路由数据包(它的主要工作),并且创建 ICMP 消息的优先级较低,所以它需要时间来生成 ICMP 回复。

如果您了解 traceroute 的工作原理,它会发送一个 TTL 从 开始的数据包1,然后第一个路由器将 TTL 递减到0,丢弃该数据包并返回一个 ICMP 消息,表明该数据包在传输过程中已过期。然后 traceroute 增加 TTL2并发送另一个数据包,因此它是第二个路由器减少 TTL0并回复 ICMP 消息。

Traceroute 重复此操作,增加数据包 TTL 并获得 ICMP 回复。经常发生路由器忙于路由的情况,可能需要更长的时间来生成后续路由器的回复。

请记住,可以将路由器配置为不发送 ICMP 消息。Tracweroute 实际上只是您自己的网络上的一个有用工具,您知道应该如何路由。