How to interpret these iperf3 results?

  • ATTENTION! As of November 1, 2020, you are not able to reply to threads 6 months after the thread is opened if there are more than 500 posts in the thread.
    Threads will not be locked, so posts may still be edited by their authors.
    Just start a new thread on the topic to post if you get an error message when trying to reply to a thread.

GnatGoSplat

Occasional Visitor
On 5GHz Wifi, when I run iperf3 using these switches (-u -b 1G -l 32K -R) which I just saw in someone else's example, I get this result:
Code:
C:\iperf-3.1.3-win64\iperf3 -c 192.168.10.99 -u -b 1G -l 32K -R
Connecting to host 192.168.10.99, port 5201
Reverse mode, remote host 192.168.10.99 is sending
[  4] local 192.168.10.100 port 50912 connected to 192.168.10.99 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  25.5 MBytes   214 Mbits/sec  0.905 ms  2163/2980 (73%)
[  4]   1.00-2.00   sec  29.6 MBytes   248 Mbits/sec  0.567 ms  2659/3606 (74%)
[  4]   2.00-3.00   sec  30.3 MBytes   254 Mbits/sec  1.814 ms  2603/3572 (73%)
[  4]   3.00-4.00   sec  30.3 MBytes   254 Mbits/sec  1.108 ms  2608/3578 (73%)
[  4]   4.00-5.00   sec  7.03 MBytes  59.0 Mbits/sec  2.589 ms  3254/3479 (94%)
[  4]   5.00-6.00   sec   352 KBytes  2.88 Mbits/sec  7.444 ms  2221/2232 (1e+02%)
[  4]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec  7.444 ms  0/0 (0%)
[  4]   7.00-8.00   sec  64.0 KBytes   525 Kbits/sec  11.675 ms  7192/7194 (1e+02%)
[  4]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec  11.675 ms  0/0 (0%)
[  4]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec  11.675 ms  0/0 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.09 GBytes   934 Mbits/sec  11.675 ms  22700/26641 (85%)
[  4] Sent 26641 datagrams

iperf Done.

Is that showing host-to-receiver, the connection is choking after about 6-seconds? Also why is the summary showing 934 Mbit/sec when each of the individual bandwidth in the 0-10 second test is much less?

If I remove -R for reverse mode, I get numbers and a summary that is more in line with what I would expect:
Code:
C:\iperf-3.1.3-win64\iperf3 -c 192.168.10.99 -u -b 1G -l 32K
Connecting to host 192.168.10.99, port 5201
[  4] local 192.168.10.100 port 59200 connected to 192.168.10.99 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  30.2 MBytes   253 Mbits/sec  966
[  4]   1.00-2.00   sec  33.1 MBytes   277 Mbits/sec  1058
[  4]   2.00-3.00   sec  31.8 MBytes   267 Mbits/sec  1019
[  4]   3.00-4.00   sec  30.9 MBytes   258 Mbits/sec  988
[  4]   4.00-5.00   sec  27.7 MBytes   232 Mbits/sec  886
[  4]   5.00-6.04   sec  26.2 MBytes   212 Mbits/sec  837
[  4]   6.04-7.00   sec  27.5 MBytes   239 Mbits/sec  880
[  4]   7.00-8.01   sec  29.2 MBytes   242 Mbits/sec  933
[  4]   8.01-9.00   sec  26.6 MBytes   225 Mbits/sec  852
[  4]   9.00-10.00  sec  27.2 MBytes   229 Mbits/sec  872
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   290 MBytes   244 Mbits/sec  1.474 ms  22/9290 (0.24%)
[  4] Sent 9290 datagrams

iperf Done.

I don't really understand the -R summary results after what I saw in the individual intervals above it.
 

ColinTaylor

Part of the Furniture
What is the server running on?

Test again without the -u option.
 

GnatGoSplat

Occasional Visitor
The server is running on a Windows 10 21H1 machine connected directly via ethernet cable to Asus RT-AC3100. Clients are Intel AX200.
Without -u option, I get results more like I would expect:
Code:
C:\>iperf-3.1.3-win64\iperf3 -c 192.168.10.99 -b 1G -l 32K -R
Connecting to host 192.168.10.99, port 5201
Reverse mode, remote host 192.168.10.99 is sending
[  4] local 192.168.10.100 port 50668 connected to 192.168.10.99 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  23.7 MBytes   199 Mbits/sec
[  4]   1.00-2.00   sec  29.6 MBytes   248 Mbits/sec
[  4]   2.00-3.00   sec  32.3 MBytes   271 Mbits/sec
[  4]   3.00-4.00   sec  30.3 MBytes   254 Mbits/sec
[  4]   4.00-5.00   sec  33.9 MBytes   284 Mbits/sec
[  4]   5.00-6.00   sec  33.2 MBytes   278 Mbits/sec
[  4]   6.00-7.00   sec  29.2 MBytes   245 Mbits/sec
[  4]   7.00-8.00   sec  31.2 MBytes   262 Mbits/sec
[  4]   8.00-9.00   sec  33.9 MBytes   285 Mbits/sec
[  4]   9.00-10.00  sec  32.1 MBytes   270 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   310 MBytes   260 Mbits/sec                  sender
[  4]   0.00-10.00  sec   310 MBytes   260 Mbits/sec                  receiver

iperf Done.

Something I hadn't noticed before is if I do use the -u option, server-side reports something like this:
Code:
Accepted connection from 192.168.10.199, port 49819
[  5] local 192.168.10.99 port 5201 connected to 192.168.10.199 port 59046
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  5]   0.00-1.00   sec   101 MBytes   850 Mbits/sec  3245
[  5]   1.00-2.00   sec   113 MBytes   949 Mbits/sec  3619
[  5]   2.00-3.00   sec   114 MBytes   952 Mbits/sec  3633
[  5]   3.00-4.00   sec   112 MBytes   940 Mbits/sec  3586
[  5]   4.00-5.00   sec   112 MBytes   936 Mbits/sec  3572
[  5]   5.00-6.00   sec   112 MBytes   942 Mbits/sec  3591
[  5]   6.00-7.00   sec   114 MBytes   953 Mbits/sec  3637
[  5]   7.00-8.00   sec   114 MBytes   953 Mbits/sec  3636
[  5]   8.00-9.00   sec   110 MBytes   920 Mbits/sec  3511
[  5]   9.00-10.00  sec   111 MBytes   932 Mbits/sec  3555
[  5]  10.00-10.05  sec  5.66 MBytes   929 Mbits/sec  181
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  5]   0.00-10.05  sec  1.09 GBytes   933 Mbits/sec  0.000 ms  0/35766 (0%)

When the client reports this:
Code:
C:\WINDOWS\system32>\iperf-3.1.3-win64\iperf3 -c 192.168.10.99 -u -b 1G -l 32K -R
Connecting to host 192.168.10.99, port 5201
Reverse mode, remote host 192.168.10.99 is sending
[  4] local 192.168.10.199 port 59046 connected to 192.168.10.99 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  21.8 MBytes   183 Mbits/sec  1.634 ms  2228/2927 (76%)
[  4]   1.00-2.00   sec  22.2 MBytes   187 Mbits/sec  1.767 ms  2914/3625 (80%)
[  4]   2.00-3.01   sec  20.0 MBytes   167 Mbits/sec  2.068 ms  2993/3633 (82%)
[  4]   3.01-4.00   sec  20.8 MBytes   175 Mbits/sec  1.723 ms  2874/3539 (81%)
[  4]   4.00-5.00   sec  18.8 MBytes   157 Mbits/sec  0.389 ms  3041/3641 (84%)
[  4]   5.00-6.00   sec  14.3 MBytes   120 Mbits/sec  2.280 ms  3072/3530 (87%)
[  4]   6.00-7.00   sec  1.12 MBytes  9.41 Mbits/sec  4.498 ms  3515/3551 (99%)
[  4]   7.00-8.00   sec   224 KBytes  1.83 Mbits/sec  5.025 ms  3451/3458 (1e+02%)
[  4]   8.00-9.01   sec  0.00 Bytes  0.00 bits/sec  5.025 ms  0/0 (0%)
[  4]   9.01-10.00  sec  32.0 KBytes   264 Kbits/sec  5.013 ms  5902/5903 (1e+02%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.09 GBytes   938 Mbits/sec  5.013 ms  29990/33807 (89%)
[  4] Sent 33807 datagrams

iperf Done.

I'm not really sure what to make of it other than UDP over Wifi is different?
I tried it ethernet-to-ethernet with -u (didn't screen cap it though), but it was 900+Mbps for all intervals.
 
Last edited:

thiggins

Mr. Easy
Staff member
Here's the iperf3 documentation

The -u switch uses udp. It's trickier to use than TCP for quick results because if you set the bandwidth too high, you will lose packets, which reduces throughput. That's what's happening in your first case. Note the Lost/Total Datagrams was 85%.

Here's what I suggest you use for a basic iperf3 test. It will use an "unlimited", i.e. no set bandwidth, connection. So it will run as fast as the connection will go. (Don't use [] around the IP address. That just indicates a variable.)

Code:
-c [IP address of iperf3 server] -P 5

That just runs a simple TCP/IP test with 5 parallel connections. The parallel connections ensure you don't bump into problems with high bandwidth connections by spreading the throughput among multiple connections.

iperf3 traffic flows from the machine running the iperf3 client to the machine running iperf3 server. Adding the -R switch reverses the flow.

So if you want to test downlink throughput (AP to STA), you could run iperf3 server on a machine connected to your router, the client on your wireless device and run the command WITHOUT the -R switch. To get uplink, add the -R switch.
 

GnatGoSplat

Occasional Visitor
Thanks, that does also get results that make sense (~250Mbps).

What is the oddly-high nearly 1Gbit bandwidth in the summary when I do UDP? Is that just a calculated bandwidth if we ignore packet loss?
 

thiggins

Mr. Easy
Staff member
Thanks, that does also get results that make sense (~250Mbps).

What is the oddly-high nearly 1Gbit bandwidth in the summary when I do UDP? Is that just a calculated bandwidth if we ignore packet loss?
Basically, yes. The key is that you are losing most of your packets. So the connection can't support the bandwidth you are trying to use.

If you wanted to use UDP, you'd have to keep lowering the bandwidth until packet loss was acceptable. That's why I use TCP/IP.

People trying to get the "biggest number" will often say to use UDP since it has less overhead than TCP/IP. But it's trickier to use, as you can see.
 
Similar threads

Similar threads

Latest threads

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top