我的任务是测量两台机器之间的网络延迟(单向和双向都可以)。两台电脑位于同一个房间,在同一个网络上,并连接到同一个路由器。
当我使用ping
命令时,我得到了14-18us
往返时间。当我运行onload ping
(Solarflare 内核旁路)时,我得到了5-7us
。但5-7us
似乎仍然太长了。
我可以使用哪些其他命令来测量两台机器之间可能的最低延迟?我只关心最低延迟,而不是吞吐量;理想的命令应该发送一个包含 1 个字节有效负载的数据包以最小化成本。
答案1
我觉得你的延迟很短。不过你可以尝试使用更短的 ping 和 arping。
更短的 ping
ping -s 16 <destination_IP>
ping -s 0 <destination_IP>
通常,ping 数据包的默认大小在第 3 层为 84 B(帧长度为 98 字节)。该-s 16
标志要求仅发送 44 B(帧长度为 58 B),即数据包大小小于默认值。
如果-s 0
使用,则 ICMP 回应请求 L3 数据包大小为 28 B(42 B 帧)。这是最短的有效负载。但响应数据包为 60 B。
阿尔平
arping 是另一种可能性:
sudo apt-get install arping
sudo arping <destination_IP>
最终
sudo arping -S <source_IP> -i <interface> <destination_IP>
在我的测试中请求帧长度为58 B,应答为60 B。
您可以使用Wireshark检查情况、数据包大小和响应时间。