November 10, 2010

This is where iperf comes in:

Iperf was developed by NLANR/DAST as a modern alternative for measuring maximum TCP and UDP bandwidth performance. Iperf allows the tuning of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss.

In other words it can do a hell of a lot more than just generate traffic, but that’s what we’ll use it for this time. iperf consists of two parts - a client and a server. I run our server on our FreeBSD box:

$ cd /usr/ports/net/iperf
$ sudo make install clean
$ iperf -sD

That installed iperf and launched it as a server in the background. Now we need to run the client on the machine we want to test. For this, I created a dead-simple AppleScript wrapper for iperf (which also includes the iperf binary itself), just double-click and enter the address of the iperf server. This launches iperf with some options apropriate for long term testing, in a new Terminal window.

The script (called “aptest”, also part of MTK) tries to bind the iperf instance to the AirPort interface. This will wreak havoc on your wireless network - I would advise to set up a separate base station for this kind of testing. :-)

It would be fun to one day create a proper GUI that would plot the CSV output of iperf, but this will have to do for now…