无需响应即可快速 ping

Gre*_*rey 5 networking ping high-load

我正在尝试测量两台机器之间的一种方式延迟,我想ping用来将ICMP数据包从一台机器发送到另一台机器。数据包之间的间隔应为 1 微秒 (1us),我想发送 100 万个数据包 (10^6),因此发送数据包总共需要 1 秒。

另外,我不关心另一台机器的响应(我只会在第二台机器上捕获数据包并对其进行分析)。

现在我已经尝试过:

ping -I eth0 -c 1000000 -l 1000000 -f -i 0.000001 -b 255.255.255.255
Run Code Online (Sandbox Code Playgroud)

我还通过停用-l-f选项进行了试验。当我使用较大的值时,-l我收到一条警告,指出 rcvbuf 不足以保持预加载。

我正在使用 tcpdump 捕获来自我的机器的传出数据包以及传入另一台机器的数据包。

问题是数据包之间的间隔在大多数情况下在5us和15us之间,并且稍大一些。

当我直接发送到像谷歌这样的网站时,我遇到了同样的问题:

ping -I eth0 -c 1000000 -l 1000000 -f -i 0.000001 google.com
Run Code Online (Sandbox Code Playgroud)

我想要的是:

  • 将数据包从一台机器发送到另一台机器
  • 无需第一台机器等待任何响应
  • 并且数据包之间的间隔为1us

最好使用ping命令及其提供的选项(如果它们足够)来执行此操作。我有管理员权限。


更新

我的目标是测量不同电缆在数据包上引入的延迟。所以我需要准确的数据包生成和捕获。在硬件方面,我有合适的工具,但我没有得到我所期望的。我认为问题出在软件上。

我的问题是,当我使用该-i选项时,ping 似乎没有按预期工作。当我使用-f -l 1000000捕获时,每 3us 到 5us 发送一次。当我指定-f或不指定这两个时,数据包每 12 毫秒生成一次。

一般来说,我认为我无法控制广播 ping 的数据包距离。

sho*_*hok 11

ping -f不会等待对方回复。

但是,连续数据包之间的 1us 延迟对于您的硬件 (CPU) 和软件 (IP 堆栈) 组合来说可能太过分了。

为了最大限度地提高性能(并最大限度地减少发送延迟),请尝试禁用任何电源管理功能,或者至少使用performanceCPU 调节器。