Iperf bestaat uit een client en een server, die je elk op een andere computer draait om de netwerkverbinding tussen beide computers te testen. Met een UDP-test meet je hoeveel datagrampakketten verloren geraken, evenals de variatie in de latency. Met een TCP-test meet je de doorvoersnelheid. Al deze gegevens geven je samen een goed beeld van de kwaliteit van je netwerkverbinding.

Bandbreedte

Standaard voert iperf een TCP-test uit, die je dus achteraf de resulterende doorvoersnelheid toont. Op de server draai je iperf hiervoor als volgt:

$ iperf -s

De server wacht nu op een verbinding. Voer hierna op de client het volgende commando uit, waarbij je het ip-adres of de servernaam van de server invult:

$ iperf -c server

Standaard stuurt iperf 10 seconden lang gegevens door (aan te passen met de optie -t op de client), en daarna krijg je zowel op de client als server te zien hoeveel gegevens er doorgestuurd zijn en wat de doorvoersnelheid was. Let op: enkel de bandbreedte van de client naar de server wordt gemeten; wil je ook in de andere richting meten, dan kan dat met de optie -r op de client. Met de optie -d gebeurt deze bidirectionele meting van bandbreedte gelijktijdig. Verder kun je zowel aan de server- als client-kant met de optie -w de TCP window size instellen (een waarde van 2 tot 65535 bytes) en met -p kun je de standaard poort 5001 wijzigen.

Variatie en pakketverlies

Met de optie -u instrueer je zowel de client als de server om een UDP-test uit te voeren. Als resultaat krijg je te zien hoeveel UDP-pakketten er verzonden zijn en hoeveel er daarvan aangekomen zijn, wat de bandbreedte was en de jitter (de variatie in latency). Met de optie -b op de client ken je de gewenste bandbreedte toe, bijvoorbeeld om op voorhand te controleren of je netwerk goed genoeg is voor de bandbreedte die een toepassing zoals VoIP gebruikt. Lees de man-pagina voor nog een aantal gespecialiseerde opties.

Iperf draait zowel op Linux als op Windows. Verder bestaat er ook nog een grafische front-end voor: Jperf, dat in Java geschreven is. Je kunt hiermee de opties voor iperf op een grafische manier instellen, zowel aan de client- als aan de serverkant, en het programma toont zelfs welk commando je moet ingeven als je iperf met dezelfde opties op de command-line wil uitvoeren.

Naast de console-uitvoer krijg je ook een grafiek te zien waarop de bandbreedte en jitter in real-time geplot wordt. Er is ook een nieuwe implementatie van iperf, iperf3, die volledig opnieuw geschreven is en een bibliotheek aanbiedt die door andere programma's gebruikt kan worden. Iperf3 is echter niet achterwaarts compatibel met iperf2 en is voorlopig nog in beta.