我正在使用 iperf3 在网络上执行一些本地测试,使用 2 个 Ubuntu 18.04 主机之间的 UDP 连接。但似乎 UDP iperf3 连接不够强大,无法支持 0.1 的随机数据包丢失?执行 iperf3 测试时,服务器挂起(我需要重新启动服务器才能再次连接),并且我看到以下错误:
在服务器上:
iperf3:客户端意外关闭了连接
在客户端:
错误 - 无法写入流套接字:操作不允许
为了模拟/测试网络上的坏跳,我使用 iptables 用以下命令生成随机数据包丢弃(在主机 A 上执行):
sudo iptables -A OUTPUT -p udp -d HOSTB -m statistic --mode random --probability 0.01 -j DROP
在主机A上执行iperf3:
iperf3 --version4 --udp --client 10.0.3.10 --port 4000 --bind 10.0.1.10 --cport 12346 --json --zerocopy --verbose --bandwidth 300M --debug
在主机 B 上我使用:
iperf3 --verbose --server --port 4000 --version4 --debug
就文档而言,iperf3 可以在非常差的网络下工作,这里可能发生什么事情?
答案1
通过@Appleoddity 的有益评论,我找到了我现在认为错误是什么。在输出端丢弃数据包可能会触发应用程序级别的错误,而不仅仅是模拟嘈杂的通道。
通过针对主机 B 的输入运行 iptables drop,问题就消失了:
sudo iptables -A INPUT -p udp -s 10.0.1.10 -m statistic --mode random --probability 0.1 -j DROP