Não há problema. Este é um comportamento normal e esperado.
O motivo da perda de pacotes é que o UDP não possui controle de congestionamento. No tcp, quando os algoritmos de controle de congestionamento entram em ação, ele informará ao final da transmissão para retardar o envio, a fim de maximizar o rendimento e minimizar a perda.
Portanto, este é um comportamento totalmente normal para o UDP. O UDP não garante a entrega se a fila de recebimento estiver sobrecarregada e descartará pacotes. Se você quer taxas de transmissão mais altas para UDP, você precisa aumentar seu buffer de recebimento.
A opção -l ou --len iperf deve fazer o truque. E possivelmente a configuração de largura de banda de destino -b no cliente.
-l, --len n[KM] set length read/write buffer to n (default 8 KB)
8KB ?? isso é um pouco pequeno quando não há controle de congestionamento.
por exemplo. no lado do servidor.
~$ iperf -l 1M -U -s
Isto é o que eu tenho Linux para Linux
Client connecting to ostore, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.107 port 35399 connected with 192.168.0.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.10 GBytes 943 Mbits/sec
Mas para UDP usando as configurações padrão eu recebo somente
~$ iperf -u -c ostore
------------------------------------------------------------
Client connecting to ostore, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.107 port 52898 connected with 192.168.0.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.027 ms 0/ 893 (0%)
WT?
Depois de algumas experiências, descobri que precisava definir o comprimento e a meta de largura de banda.
~$ iperf -u -c ostore -l 8192 -b 1G
------------------------------------------------------------
Client connecting to ostore, UDP port 5001
Sending 8192 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.107 port 60237 connected with 192.168.0.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.12 GBytes 958 Mbits/sec
[ 3] Sent 146243 datagrams
[ 3] WARNING: did not receive ack of last datagram after 10 tries.
Lado do servidor:
~$ iperf -s -u -l 5M
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 5242880 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.10 port 5001 connected with 192.168.0.107 port 36448
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.1 sec 1008 KBytes 819 Kbits/sec 0.018 ms 0/ 126 (0%)
[ 4] local 192.168.0.10 port 5001 connected with 192.168.0.107 port 60237
[ 4] 0.0-10.0 sec 1.12 GBytes 958 Mbits/sec 0.078 ms 0/146242 (0%)
[ 4] 0.0-10.0 sec 1 datagrams received out-of-order
Para demonstrar a perda de pacotes com pequenos buffers. O que para ser honesto não é tão extremo quanto eu esperava. Onde é uma fonte confiável para iperf3 eu posso testar entre o Linux / Windows?
~$ iperf -u -c ostore -l 1K -b 1G
------------------------------------------------------------
Client connecting to ostore, UDP port 5001
Sending 1024 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.107 port 45061 connected with 192.168.0.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 674 MBytes 565 Mbits/sec
[ 3] Sent 689777 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 670 MBytes 562 Mbits/sec 0.013 ms 3936/689776 (0.57%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
Lado do servidor:
~$ iperf -s -u -l 1K
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1024 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.10 port 5001 connected with 192.168.0.107 port 45061
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 670 MBytes 562 Mbits/sec 0.013 ms 3936/689776 (0.57%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
Você também analisou a página do github iperf3 ?
Known Issues
UDP performance: Some problems have been noticed with iperf3 on the ESnet 100G testbed at high UDP rates (above 10Gbps). The symptom is that on any particular run of iperf3 the receiver reports a loss rate of about 20%, regardless of the -b option used on the client side. This problem appears not to be iperf3-specific, and may be due to the placement of the iperf3 process on a CPU and its relation to the inbound NIC. In some cases this problem can be mitigated by an appropriate use of the CPU affinity (-A) option. (Issue #55)
Você está usando um NIC mais lento, mas gostaria de saber se ele está relacionado.