我正在使用iperf
. 在我的应用程序中,我需要能够以大约 5KHz 的频率发送 2 字节的 UDP 帧。
进行正常的 UDP 速度测试,我可以轻松获得 10Mb/s:
$iperf -uVc some_ip -b 10M
Interval Transfer Bandwidth Dropped/Sent
0.0-10.0 sec 11.9 MBytes 10.0Mbit/sec 0 / 8504 (0%)
然后,当我尝试通过以 5Hz 发送 2B(与 80Kb/s 相关)数据报来镜像我的应用程序时:
$iperf -l 2 -uVc some_ip -b 80K
服务器端说没有数据包通过,我猜是因为计数器或任何iperf
用于跟踪数据包的东西无法容纳在 2B 有效负载中。这有意义吗?
作为一般经验法则,发送许多小数据包与发送少量大数据包相比有多糟糕?谁能指出文献说明了等待“打包”一个大数据报和一收到数据就立即发送 2B 数据之间的权衡?
为了进一步澄清,我对发送许多小数据包(包括开销,数据包只有大约 60B)与发送更少但大数据包的代价感兴趣。到目前为止,在我的测试中,丢包显然与带宽使用无关,而是与数据包数量相关,我觉得这违反直觉!
编辑:
我在最简单的客户端 - 服务器设置上执行此操作,在连接在本地网络上的两台 Linux PC 之间,它们是网络上唯一的接口,它们之间有以太网交换机。