我正在尝试通过在我的设备上运行 iperf 来进行一些带宽测试,
我的网络最大带宽为 100 Mbps(通过速度测试 CLI 进行测试 -https://github.com/sivel/speedtest-cli)
我运行了 iperf UDP 带宽测试(像这样 $(iperf3 -c $server_ip -u -b 500M ))
然后我得到了结果(客户端消息几乎为 500Mbps)
结果对吗?
现在我认为所有的可能性是客户端 iperf 只是计算发送方带宽(因为 UDP)
答案1
使用 UDP 时,您确实应该检查服务器端。UDP 没有拥塞控制,所以是的,客户端只会创建一个恒定的比特率流。但是,服务器端的 iperf 将显示接收到的比特率,以及抖动和数据包丢失。
使用 UDP 的原因是什么?它主要用于特殊情况,例如检查具有各种数据包大小的抖动。对于 iperf,TCP 在这些情况下更有用(如果客户端和服务器之间的延迟较大,则可能需要调整窗口大小)。
以下是服务器端 UDP 模式下的示例输出:
[ 3] local 10.50.15.19 port 5001 connected with 10.50.200.226 port 53516
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 1.326 ms 0/ 893 (0%)
[ 4] local 10.50.15.19 port 5001 connected with 10.50.200.226 port 57697
[ 4] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 2.775 ms 1/ 892 (0.11%)
[ 4] 0.0-10.0 sec 2 datagrams received out-of-order
答案2
udp 是一种尽力而为的协议,因此 iperf 可能不会检查数据包是否真的到达。此外,-b 设置“发送带宽(以比特/秒或数据包/秒为单位)”,您将其设置为 500M。因此我认为您只是在测试您的网卡驱动程序是否可以以 500Mbps 的速度发送。
如果您想测试节点之间的网络路径,我不会使用 udp 或限制带宽。即只需 iperf -c server_ip