测量单向延迟/抖动/丢包

网络工程 潜伏 数据包丢失 地铁
2021-07-22 19:18:59

由于路由拥塞和数据包丢失我的延迟和 StDev 增加,但是正向和反向路径通过不同的网络(例如,一个是 init7.net,另一个是 he.net),因此,很难理解哪个网络或主机负责拥塞、数据包丢失、抖动和增加的延迟。

在前进和后退mtr未能查明确切罪魁祸首,NOC@联系人要么不回应,要么声称在所讨论的路径上没有损失后,是否有办法缩小责任范围(我正在使用 OpenBSD。)

我什至尝试mtr直接向可能遇到拥塞的两个网络的一些客户做一个,但并没有真正发现任何问题,尤其是因为,例如,he.net 有很多 POP,而且经常在给定的入口和出口 POP 之间采用不同的路由,因此当我尝试mtr直接在出口 POP 上访问他们的主机(如 tserv)时,我可能会在他们的网络中丢失数据包,因此会采用不同的 he.net 路径到达完全相同的 POP,并且没有发生数据包丢失,这证明没有任何意义(除了可能的建议,即它们可能确实使某些路由过载,同时确保其他路由保持畅通,同时忽略来自非客户的 NOC@ 请求)。

1个回答

一种方法是 ICMP 时间戳,它是从 UTC 午夜开始的毫秒数。它有一个额外的好处,你不一定需要控制两端,只要远端没有防火墙,它很有可能会工作。

然而,要获得可靠的单向测量,您需要在两端可靠地保持相同的时间。由于 ICMP 时间戳只有 1 毫秒的精度(这对于许多应用程序来说还不够,但对于这个已经足够了),甚至可以很容易地找到 ICMP 时间戳将提供有用数据的非合作主机。

如果您控制两端,请确保您仅将 NTP 同步到 1 个服务器和同一台服务器。绝对时钟不是很重要,重要的是您体验到的时间尽可能接近。

如果ICMP时间戳不够用,很容易写10行ruby/perl/python甚至C来做测量,控制两端。

我真的不能推荐用于单向进行 ICMP 时间戳测量的软件,hping2 支持发送 ICMP 时间戳但由于某种原因不输出单向值。为 hping2编写了补丁来显示一种方式的延迟。