iperf has been around for many years. The most widely used version was iperf version 2, however in the past year or so iperf3 has been available. iperf3 is a complete re-write and not necessarily compatible with iperf2. In theory, for the tests we are performing in the assignment they should be equivalent. However some students have reported strange results, and after I ran some tests with both iperf2 and iperf3, I note some strange results with iperf3. It seems there are some substantial differences between the versions. In summary, I discovered:

What should you do?

Below are my results from tests with different versions of iperf and link/protocol options. All tests were on Linux, using iperf 2.0.5 or iperf 3.0.11.

Ethernet - both iperf2 and iperf3 are ok

iperf2, TCP: 934 Mb/s

iperf3, TCP: 933 Mb/s

iperf2, UDP: 535 Mb/s

Although the throughput is quite low, it may be due to other parameter values. At least the result is believable.

iperf3, UDP: 255 Mb/s

Although the throughput is quite low, it may be due to other parameter values. At least the result is believable.

WiFi with TCP - both iperf2 and iperf3 are ok

Note that my WiFi data rate varied from about 12Mb/s to 18Mb/s during these tests. Hence I expect throughput to be less than those values, maybe about half (since there may be other interfering clients nearby).

iperf2, TCP: 5Mb/s

iperf3, TCP: 5Mb/s

WiFi with UDP - iperf2 is ok, iperf3 is wrong

I used a sending rate of 50 Mb/s.

Again, data rates are 12Mb/s to 18Mb/s, expecting similar throughput as TCP.

iperf2, UDP: 5Mb/s

Note the server reports the throughput. The client is reporting a sending rate of 50Mb/s, while the server receives 5.24 Mb/s.

iperf3, UDP: 47 Mb/s

The bandwidth reported at the server is 47Mb/s !!! But the data rate is 18 Mb/s. That is not possible. Note there are very low, per second results (131 kb/s, 0 b/s) and strange results of datagrams lost (-nan). I don't know what is happening in this test, but I do know that the summary bandwidth of 47.7Mb/s is not the throughput. Hence I cannot use these results.