Я выполняю локальный тест в своей сети с iperf3, используя UDP-соединения между двумя хостами Ubuntu 18.04. Но кажется, что 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
И iperf3 выполняется на хосте A:
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 может работать с очень плохими сетями, что здесь может происходить?
По полезным комментариям от @Appleoddity я нашел, где Я теперь думаю ошибка была. Отбрасывание пакетов на выходе может вызвать ошибки на уровне приложения, а не только имитировать шумный канал.
Запустив iptables drop против входа на хосте B, проблема исчезла:
sudo iptables -A INPUT -p udp -s 10.0.1.10 -m statistic --mode random --probability 0.1 -j DROP