I've been an Iperf2 user for years, but it's been out of development for quite some time, so figured it was time to move on to Iperf3. Theirs also some handy GUI's available for Iperf3, as detailed below.
Here is a brief step-by-step on how to set up the server (Debian) and clients (Android,iOS,OSX,Windows,Linux).
Server
Get the source for the correct version of iperf (Iperf 3.0-BETA4) from https://github.com/cpaasch/iperf3, and extract. Make sure you download the correct version.$ wget https://github.com/cpaasch/iperf3/archive/3.0-BETA4.zipBuild & install:
$ unzip 3.0-BETA4.zip
$ cd iperf3-3.0-BETA4Note, you may need to install additional packages if not already on the system. Just watch the output of 'configure' for errors...they are usually self explanatory. If installing on Ubuntu, you'll need to install uuid-dev (sudo apt-get install uuid-dev)
$ ./configure
$ make
$ make install
Once installed, verify you've got the correct version with "iperf3 -v". It should output the following:
$ iperf3 -vIf you're familiar with iperf2, many of the command-line switches are the same. For a list of the different options, just run iperf3 without any switches. Run IPerf3 in server mode with:
iperf version 3.0-BETA4 (2 Aug 2010)
$ iperf3 -s
Clients
CLI clients (for OSX or Windows) are at http://accessagility.com/products/wifiperf.htmlGUI versions exist for OSX, Android & iOS...in their respective App Stores; also available at the accessagility link.
For Linux, just compile (as noted above). All CLI clients can be run in "client" or "server" mode. For a quick test from Windows, OSX or Linux CLI run:
$ iperf3 -c <server_ip> -i1
Connecting to host <server_ip>, port 5201
[ 4] local 10.81.76.49 port 50569 connected to <server_ip> port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.02 sec 5.12 MBytes 42.3 Mbits/sec
You can see the results on stdout (ie on your terminal), at 1 second intervals ("-i" option). Again, to see the different options available just run iperf3 wihtout any switches.
Note: If using OSX CLI version, I'd recommend copying the downloaded binary to /usr/local/bin/, so you can simply type "iperf3...."
This was not available in iperf2 (unless you use something like bwctl). I like this because once deployed, with many using the service at once, you would get inconsistent results if uplink from "server" is saturated. Note, you can run multiple streams in parallel (see "-P" option)
Note: If using OSX CLI version, I'd recommend copying the downloaded binary to /usr/local/bin/, so you can simply type "iperf3...."
Features
Some features I like about iperf3:- the server will, by default, only run a test with a single client at a time. If you try to run two tests simultaneously, you'll see a message like the following:
error: The server is busy running a test. try again later.That's from an OSX client.
This was not available in iperf2 (unless you use something like bwctl). I like this because once deployed, with many using the service at once, you would get inconsistent results if uplink from "server" is saturated. Note, you can run multiple streams in parallel (see "-P" option)
- Another example, using a "reverse" test (from server to client):
iperf3 -c <server_ip> -i1 -RThis can be really useful when testing WiFi. This was not possible with IPerf2 (without extra work). Having asymetric throughput issues could tell you a lot.
Final notes
- I like the mobile clients' ability to be run in either server or client mode, at the push of a button. Useful for a "phone-to-phone" test, as an example. I can also appreciate the graphs, and historical data (BSSID, SSID etc.) that is kept in the GUI versions.
- "iperf3 -D" (Daemon mode) not available in this version of iperf3. It will certainly be available in the 3.0.1 version, and once Accessagility updates their software, I'd recommend switching to that version on your server as well (make uninstall before building new version).
iperf3 -s &
- I'd like to see a "stats interval" of 1 second on the Android app. (similar to a "-i1" switch on CLI client). Hopefully that's on the roadmap.
- It's extremely lightweight and can be put on a small-form factor pc (ie Rasberry PI). Here's mine, hooked up to an AP.
Note: Rasberry PI interface limited by USB buss speed (!>100Mb/s)
Watch Zaib Kaleem's presentation on this subject, including more use-cases, from the WLPC conference at http://vimeo.com/88462948
