使用TCP Acks来测量与服务器的延迟?

5
我正在尝试测量一台我无法控制的服务器的延迟。这是在一个共同放置的环境中,因此延迟大约为500微秒(0.5毫秒)。
我知道Cisco设备经常将ICMP流量降低优先级,使得ping时间不可靠。有没有办法告诉我是否在穿越的设备上发生了这种情况?
我可以使用TCP确认来确定到远程服务器的最小延迟吗?为了做到这一点,我需要以某种方式强制远程服务器在收到我的数据时立即发送TCP确认。

2
无论如何,如果思科路由器正在降低您的ping数据包的优先级,则您的TCP延迟肯定<= 0.5ms。您的应用程序实际上是否依赖于少于0.5ms的延迟?这似乎是有问题的,特别是在以太网上,您不能保证您的数据包将被传递... - apenwarr
这篇文章讨论了使用ACK来测量延迟。 - rbinnun
2个回答

8

尝试使用hping。您可以发送ACK并测量延迟:

hping -A -p 80 host

或者使用 SYN:
hping -S -p 80 host

请注意,第二层链路的降级不太可能发生(但有可能)。此外,看到ARP比ICMP慢并不一定意味着ICMP没有被降级---这可能意味着带宽不足以达到限制阈值。

由于广播和交换机端口排队,ARP几乎总是较慢的。您可以单播ARP,但如果有人正在寻找它,则可能会引起怀疑。


2
您可以尝试使用arping。它会使用ARP进行ping测试。

1
我发现arping报告的时间比ping报告的时间高了约100微秒。你觉得这是否合理?这是否表明ICMP ping没有被降低优先级? - Ted Graham
可能这只是指示本地内核中ARP回复引起的额外处理。无论如何,ICMP ping显然没有被降低优先级。 - caf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接