我正在使用 iPerf 和 UDP 协议测试 802.11 无线链接。在客户端使用 -b 命令,我可以将带宽设置为一个任意数字(例如 1 Gbps),该数字远高于链接所能支持的(例如,50 Mbps)。然后 iPerf 测试将报告 95% 的丢包率。
我的问题是这些 UDP 数据包在哪里丢失?我假设客户端的 WiFi 设备将只接受以与无线连接质量相称的速率传输的数据。那么设备是否丢弃了 iPerf 生成的数据包?
我正在使用 iPerf 和 UDP 协议测试 802.11 无线链接。在客户端使用 -b 命令,我可以将带宽设置为一个任意数字(例如 1 Gbps),该数字远高于链接所能支持的(例如,50 Mbps)。然后 iPerf 测试将报告 95% 的丢包率。
我的问题是这些 UDP 数据包在哪里丢失?我假设客户端的 WiFi 设备将只接受以与无线连接质量相称的速率传输的数据。那么设备是否丢弃了 iPerf 生成的数据包?
当发送到链路的流量超过链路可以处理的流量时,该链路的接口最终将丢弃发往该链路的数据包。这就是拥塞,对于拥塞有一些小的缓解措施,例如排队,但是,当涉及到网络时,最好尽快丢弃数据包而不是延迟它们。
在您的情况下,丢弃的流量永远不会离开生成流量的设备上的接口。
iperf 客户端的输出是什么样的?将其设置为 -i 1 并查看。另外,你用的是哪个版本?iperf -v 会给的。
UDP 是一种无连接协议。iperf 套接字处于阻塞模式 - 尽管在 2.0.8+ 中有 write() 超时。当线路 100% 拥塞时,数据包可以在应用程序和内核之间(根据写入超时)、内核和网络接口驱动程序之间以及驱动程序本身丢弃。虽然隔离确切的下落位置可能是可行的,但这样做需要进行一些检查。