测量单向延迟/抖动/分组丢失


10

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

在前进和后退mtr未能准确查明罪魁祸首,NOC @联系人没有响应或声称在所讨论的路径上没有遭受损失之后,是否有办法缩小责任?(我正在使用OpenBSD。)

我什至尝试mtr直接对可能遇到拥塞的两个网络的某些客户进行直接处理,但实际上并没有发现任何问题,特别是例如,由于he.net有很多POP,而且有时在给定的入口POP和出口POP之间采用不同的路由,因此当我尝试mtr在出口POP上直接尝试访问其主机(如tserv)时,我可能会在其网络中丢失数据包,因此采用了不同的he.net路径相同的POP,并且没有发生数据包丢失,这没有引起任何兴趣(可能的建议是,它们确实确实会使某些路由过载,同时确保其他路由保持拥塞,而所有这些都忽略了非客户的NOC @请求)。


有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。
罗恩·莫平

Answers:


9

一种方法是ICMP时间戳,它距UTC午夜12毫秒。它还有一个好处,就是您不必控制两端,只要远端没有防火墙,它很有可能会工作。

但是,要进行可靠的单向测量,两端都需要可靠地同时进行。由于ICMP时间戳仅具有1ms的精度(这对于许多应用程序来说还不够,但是足以满足此要求),因此即使在非协作主机上也可以找到ICMP时间戳来提供有用的数据,这也相当容易。

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

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

我不能真正建议用于单向执行ICMP时间戳测量的软件,hping2支持发送ICMP时间戳,但由于某些原因不会输出单向值。我为hping2 编写了补丁,以显示单向延迟。


哇,您的hping --icmp-ts额外算术真是太棒了!懒得获取源代码并重新编译二进制文件,我为自己获得了hping修补程序的shell版本(stackoverflow.com/q/20172028/1122270),它显示了从init7到hetzner的路径上相当稳定的时间,并且来自hetzner的he.net路径在整个地图上都有差异!我终于有了明确的证明,init7在说实话!尽管我为此反对使用相同的ntp服务器:只需确保ntpd处于活动状态(我根本不需要更改任何设置,但值看起来很合理)。
cnst

1
如果您关心准确的挂墙时间,则需要至少3台NTP服务器(为了能够检测到错误的报价,最糟糕的选择是2台NTP服务器)。但是在这里我们不在乎挂钟时间,我们在乎精确地在同一时钟滴答,而不管挂钟是什么。因此,对于单向测量,最佳结果来自准确的时钟,与墙壁时间无关。很高兴听到您获得结果!
ytti 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.