iPerf2 Server With iPerf3 App

If you want to know about iperf2 server with iPerf3 app, you may need to know first about features in the iPerf2 and also in the iPerf3. So, you will be able to know about how the iperf2 server is with the iPerf3 app.

What is iPerf3? It is a tool which is used for active measurements of the maximum achievable bandwidth on IP networks. It has the ability  to support tuning of any kinds of parameters which is related to timing, buffers and protocols including TCP, UDP, SCTP with IPv4 and IPv6. When it tests, it will report the bandwidth, loss and other parameters. It is an implementation which is new. It shares no code with the original iPerf and also it is not backwards compatible. Originally, iPerf was developed by NLANR/ DAST. Principally, iPerf3 is developed by ESnet/ Lawrence Berkeley National Laboratory.

The features in iPerf2 which are currently supported by iPerf3 are listed below.

  • You can do TCP and UDP tests.
  • It sets port (-p).
  • There are setting TCP options including no delay, MSS, etc.
  • There is setting UDP bandwidth (-b).
  • There is setting socket buffer size (-w).
  • There are reporting intervals (-i).
  • There is setting the iPerf buffer (-l).
  • It can bind to specific interfaces (-B).
  • You can do IPv6 tests (-6).
  • There is number of bytes to transmit (-n).
  • It has a length of test (-t).
  • There are parallel streams (-P).
  • It has setting DSCP/TOS bit vectors (-S).
  • There is a change number output format (-f).

What about the new features in iPerf 3.0? You are able to check them below.

  • The server is dynamic because now, most options of server from iPerf2 are able to be set by the client dynamically.
  • There is client/server results exchange.
  • A iPerf3 server receives a single client simultaneously.
  • There is iPerf API (libiperf) which provides an easy way to use, customize and extend iPerf functionality.
  • -R, Reverse test mode. It means that server sends, client receives.
  • -b, –bandwidth n[KM] for TCP (only UDP for IPERF 2): Set target bandwidth to n bits/sec (default 1 Mbit/sec for UDP, unlimited for TCP).
  • -V, –verbose : it is output which is more detailed than before
  • -J, –json : output in JSON format.
  • -T, –title str : you can prefix every output line with this string.
  • -F, –file name : xmit/recv the file which is specified.
  • -A, –affinity n/n,m : it will set CPU affinity.
  • -4, –version4 : only use IPv4
  • -6, –version6 : only use IPv6
  • -L, –flowlabel : it sets IPv6 flow label ( but it is for Linux only)
  • -C, –linux-congestion : it will set congestion control algorithm (Linux and FreeBSD only) (-Z in iPerf2)
  • -d, –debug : emit debugging output. Primarily (perhaps exclusively) of use to developers.
  • -s, –server : iPerf2 is able to handle a lot of client requests. At a time, iPerf3 will only allow one iperf connection.

And here are the features of iPerf2 which are not supported by iPerf3.

  • The testing is bidirectional (-d / -r).
  • The data is transmitted from stdin (-I).
  • TTL : time-to-live, for multicast (-T).
  • It excludes C(connection) D(data) M(multicast) S(settings) V(server) reports (-x).
  • It reports as a Comma-Separated Values (-y).
  • The mode of compatibility permits for use with older versions of iPerf (-C).

It is important for you to know that iperf3 is not backwards compatible with iperf2. The release of the newest version of iperf is always available for Debian and RHEL-based systems from the perfSONAR repository. It is recommended for you to use iperf 3 than the older versions iperf2. You may wonder why. It is because the TCP retransmit and CWND report is very helpful for troubleshooting.

Quoted from Faster Data site, the basic commands for iperf2 and iperf3 are the same. Some of these commands are listed below.


  • Iperf –s / iperf3 –s

This command is for starting a server on the default port.

  • Iperf –s –w 32M –D / iperf3 –s –D

This command is used for starting a UDP server on port 5003 and giving 1 second interval reports. It is important for you to know that for iperf3 the –u option is passed to the server from the client.


  • iperf/iperf3 –c remotehost –I 1 –t 30

This command is for running 30 seconds tests which will give results every 1 second.

  • iperf/iperf3 –c remotehost –I 1 –t 20 –r

This command is for running a test from remotehost to localhost.

  • Iperf/iperf3 –c remotehost –I 1 –t 20 –w 32M –P 4

This command is for running a test with 4 parallel streams and with a 32M TCP buffer.

  • Iperf/iperf3 –c remotehost –u –I 1 –b 200M

This command is for running a 200 Mbps UDP test.

In iperf3, it adds a number of additional features. For instance, the –i mode now reports TCP retransmit info and it is on by default. Also, the verbose mode now gives a lot of useful information on CPU usage and many more.

In iperf2.0.5, it is important for you to note that the results are inconsistent for UDP above 800Mbps. It is fixed in iperf2.0.8. This version involves the new –e option to output TCP retransmit and also CWND info.

In the Iperf site, you are able to get the Iperf3 app for your Android or IOS. So, if you want to download the iperf3 app, you are able to access the Iperf site at iperf.fr.

iPerf3 is a complete re-write and it is not necessarily compatible with iPerf2. Quoted from the Sandilands site, there are several substantial differences between the versions including:

  • For Ethernet, with both TCP and UDP, iperf2 and iperf3 are about similar. It means that you are able to use either.
  • For WiFi, with TCP, iperf2 and iperf3 are about similar. It also means that you can use either.
  • For WiFi, with UDP, iperf2 looks to be ok, however iperf3 returns strange results .

What should we do?

  • In case you are using iperf2 already, it is okay.
  • In case you have not done a lot of experiments yet, It is recommended for you to use only iperf2.
  • In case you have already run a lot of experiments with iperf3, then your results with Ethernet (TCP/UDP) and WiFi (TCP) can be used. However, you should ignore any results that you got for WiFi with UDP. You are able to either run those again with iperf2 or don’t use UDP as a parameter.

That’s the information that we can give for you about iperf2 and iperf3. If you need more information about this including about iperf2 server with iperf3 app, you are able to access some forums to read some threads there or you can make a thread there to discuss with other users. One of the forums that you may visit is a forum about iperf in SourceForge.

Leave a Reply

Your email address will not be published. Required fields are marked *