High iperf3 retry counts on LAN

Hi,

I'm running OpenWrt 22.03.2 r19803-9a599fee93 on a Linksys WRT3200ACM. In addition to a wireless network, I have a couple of devices connected via ethernet. One (192.168.1.20) is a server, another (192.168.1.25) is a HTPC. These devices become infinite static leases from DHCP.

Recently, I've noticed wildly varying network speeds. I decided to do a test over ethernet from the HTPC to my server, and got the following values:

iperf3 -c 192.168.1.20
Connecting to host 192.168.1.20, port 5201
[  5] local 192.168.1.25 port 49774 connected to 192.168.1.20 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   112 MBytes   942 Mbits/sec  127    208 KBytes
[  5]   1.00-2.00   sec   111 MBytes   934 Mbits/sec  108    173 KBytes
[  5]   2.00-3.00   sec   112 MBytes   935 Mbits/sec  193   83.4 KBytes
[  5]   3.00-4.00   sec   112 MBytes   939 Mbits/sec  141   62.2 KBytes
[  5]   4.00-5.00   sec   111 MBytes   935 Mbits/sec   99    112 KBytes
[  5]   5.00-6.00   sec   111 MBytes   929 Mbits/sec  132   79.2 KBytes
[  5]   6.00-7.00   sec   111 MBytes   930 Mbits/sec  124    144 KBytes
[  5]   7.00-8.00   sec   111 MBytes   934 Mbits/sec  130    242 KBytes
[  5]   8.00-9.00   sec   112 MBytes   942 Mbits/sec  103    206 KBytes
[  5]   9.00-10.00  sec   109 MBytes   912 Mbits/sec  170    233 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   933 Mbits/sec  1327             sender
[  5]   0.00-10.04  sec  1.09 GBytes   928 Mbits/sec                  receiver

Strangely enough, running this the other way around (server -> HTPC), we don't see any network problems:

iperf3 -c 192.168.1.25                                                                                                                                                                          1 ↵  09:41 Dur  12:40:08
Connecting to host 192.168.1.25, port 5201
[  5] local 192.168.1.20 port 57338 connected to 192.168.1.25 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   112 MBytes   940 Mbits/sec    0   1.11 MBytes
[  5]   1.00-2.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   2.00-3.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   3.00-4.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   4.00-5.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   5.00-6.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   6.00-7.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   7.00-8.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   8.00-9.00   sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
[  5]   9.00-10.00  sec   109 MBytes   912 Mbits/sec    0   1.11 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.07 GBytes   915 Mbits/sec    0             sender
[  5]   0.00-10.04  sec  1.06 GBytes   909 Mbits/sec                  receiver

What could be causing this? As far as I'm concerned, I don't have anything too exotic in my setup, so I really don't know what could be causing it, and don't know where to begin looking. Any help would be greatly appreciated.

Thanks!

An easy first step is to try different cables.

No dice, unfortunately :frowning:

Trying with a different cable (and a different ethernet port on the router, although the original port was the same with the different cable):

iperf3 -c 192.168.1.20
Connecting to host 192.168.1.20, port 5201
[  5] local 192.168.1.25 port 54624 connected to 192.168.1.20 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   113 MBytes   947 Mbits/sec   78    204 KBytes
[  5]   1.00-2.00   sec   111 MBytes   934 Mbits/sec   83    204 KBytes
[  5]   2.00-3.00   sec   111 MBytes   932 Mbits/sec   74    230 KBytes
[  5]   3.00-4.00   sec   110 MBytes   922 Mbits/sec   80    228 KBytes
[  5]   4.00-5.00   sec   111 MBytes   930 Mbits/sec   78    204 KBytes
[  5]   5.00-6.00   sec   111 MBytes   932 Mbits/sec  187   53.7 KBytes
[  5]   6.00-7.00   sec   111 MBytes   932 Mbits/sec  136    208 KBytes
[  5]   7.00-8.00   sec   110 MBytes   925 Mbits/sec  115    206 KBytes
[  5]   8.00-9.00   sec   110 MBytes   927 Mbits/sec  128    146 KBytes
[  5]   9.00-10.00  sec   110 MBytes   923 Mbits/sec   75    156 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   930 Mbits/sec  1034             sender
[  5]   0.00-10.04  sec  1.08 GBytes   925 Mbits/sec                  receiver

Agreed. To me it looks like the server to switch connection is full duplex, while the htpc connection isn't. If this is the case then the htcp is likely just stepping on the occasional ACK packet. It's running close to the theoretical maximum throughput though, accounting for ethernet/tcpip overhead, when it sends which makes it unsurprising.

1 Like

Yes, when maximum throughput is reached, packets get dropped at the bottleneck (the Ethernet port in this case). So seeing retries is completely normal. The other test only reached 912 Mb, likely limited by one of the CPUs. There was not bottlenecking in the network.

1 Like

Unfortunately not - running ethtool on the htpc, my ethernet connection enp2s0 is reported as Duplex: Full. The same is the case on the server.

Take a look at ifconfig for the interface, you may get a better sense on the type of error occuring.