Iperf - Wie schnell ist mein Netzwerk
"Das Netzwerk ist heute wieder sehr langsam."
Jeder Administrator kennt solche Aussagen aus der täglichen Praxis. Aber ist es wirklich das Netzwerk? Und wie langsam
ist es wirklich? Mit dem Utility Iperf lässt sich einfach die mögliche Übertragungsrate zwischen zwei Geräten
im Netzwerk messen.
Mirko Kulpa, 09.04.2008
Installation von Iperf
Die frei Software Iperf gibt es für die Plattformen Windows, Linux, Mac OS X, FreeBSD und Solaris.
Für Windows kann das ausführbare Programm als selbstentpackendes Archiv von der Iperf-Homepage
heruntergeladen werden. Nach dem Entpacken ist Iperf sofort einsatzbereit.
Update März 2010: Die iperf-Homepage ist down.
Neue Links zum Download finden Sie im JPerf-Artikel (Link unten). JPerf
enthält auch die iperf.exe für Windows.
Iperf - ein Beispiel
Für eine Messung wird immer ein Iperf-Server und ein Iperf-Client benötigt.
Der Server wird mit dem Kommando:
C:\Programme\iperf>iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
gestartet. Der Server läuft nun auf TCP-Port 5001. Dieser Port darf nicht
durch eine Firewall geblockt werden.
Nun können wir vom Client eine Messung starten. Dabei wird die IP-Adresse des Servers
als Parameter benötigt.
C:\Programme\iperf>iperf -c 192.168.0.20
------------------------------------------------------------
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.5 port 3500 connected with 192.168.0.20 port 5001
[ 3] 0.0-10.0 sec 10.3 MBytes 8.62 Mbits/sec
Iperf hat für die Messung etwa 10 Megabyte mittels TCP übertragen und eine
Übertragungsrate von 8,62 Mbits/s ermittelt.
Optionen und Parameter von Iperf
Die Arbeitsweise von Iperf kann über eine Reihe von Otionen gesteuert werden.
Die folgenden Optionen gelten für den Server und für den Client:
-f, --format [kmKM] format to report: Kbits, Mbits, KBytes, MBytes
-i, --interval # seconds between periodic bandwidth reports
-l, --len #[KM] length of buffer to read or write (default 8 KB)
-m, --print_mss print TCP maximum segment size (MTU - TCP/IP header)
-o, --output <filename> output the report or error message to this specified file
-p, --port # server port to listen on/connect to
-u, --udp use UDP rather than TCP
-w, --window #[KM] TCP window size (socket buffer size)
-B, --bind <host> bind to <host>, an interface or multicast address
-C, --compatibility for use with older versions does not sent extra msgs
-M, --mss # set TCP maximum segment size (MTU - 40 bytes)
-N, --nodelay set TCP no delay, disabling Nagle's Algorithm
-V, --IPv6Version Set the domain to IPv6
Einige Optionen sind nur beim Starten des Clients zulässig:
-b, --bandwidth #[KM] for UDP, bandwidth to send at in bits/sec
(default 1 Mbit/sec, implies -u)
-c, --client <host> run in client mode, connecting to <host>
-d, --dualtest Do a bidirectional test simultaneously
-n, --num #[KM] number of bytes to transmit (instead of -t)
-r, --tradeoff Do a bidirectional test individually
-t, --time # time in seconds to transmit for (default 10 secs)
-F, --fileinput <name> input the data to be transmitted from a file
-I, --stdin input the data to be transmitted from stdin
-L, --listenport# port to recieve bidirectional tests back on
-P, --parallel # number of parallel client threads to run
-T, --ttl # time-to-live, for multicast (default 1)
Das Setzen von Optionen ist auch über Umgebungsvariablen möglich.
Die Variablen haben den Aufbau IPERF_<option name>, beispielsweise IPERF_BANDWIDTH.
Die TCP Window Size wird über die Variable TCP_WINDOW_SIZE bestimmt.
Per Default arbeitet Iperf mit einem recht kleinen TCP Window. Um näher an das
theoretische Maximum eines Netzwerkes zu kommen, kann ein größeres TCP Window
eingestellt werden.
Ebenfalls interessant ist die Möglichkeit, mehrere Client Threads über die Option -P
parallel zu starten.
Werte aus der Praxis
Die folgende Tabelle zeigt einige Iperf-Messwerte aus der Praxis. Gemessen wurde an einem
klassischen Ethernet Hub, einem Fast Ethernet Switch und einem Gigabit Ethernet.
Iperf wurde zuerst ohne weitere Optionen gestartet und dann mit dem Kommando
iperf -c 192.168.0.20 -w 512k -l 512k .
Netzwerk |
Iperf default [MBit/s] |
Iperf mit Optionen [MBit/s] |
theoretisches Maximum [MBit/s] |
Ethernet Hub |
7,5 |
7,5 |
10 |
Fast Ethernet |
95 |
95 |
100 |
Gigabit Ethernet |
346 |
948 |
1.000 |
Über einen Hub ergab sich eine Übertragungsrate von 7,5 MBit/s. Mehr ist auf einem Shared Media durch
die entstehenden Kollisionen kaum möglich.
Bei Fast Ethernet wurde problemlos eine Auslastung von 95 Prozent erreicht.
Bei Gigabit Ethernet macht sich die kleine TCP Window Size in den Defaulteinstellungen stark
bemerkbar. Erst mit einem entsprechend großen Fenster ist auch hier eine Auslastung von 95 Prozent
erreichbar.
Die Messungen liefen zwischen zwei Systemen mit Intel Core 2 Duo CPU mit etwa 2 GHz. Als Netzwerkkarten
kamen Broadcom NetXtreme Gigabit NICs zum Einsatz. Die Kombi Thinkpad R60 (Windows XP) und Apple Mac Mini C2D 1,83 MHz
(Mac OS X Leopard) kam im Test auf etwa 940 MBit/s.
Iperf kann auch zur Messung der Performance von Root Servern im Internet genutzt werden.
Dabei sind sowohl Messungen zwischen zwei Servern als auch zu einem Client an ADSL oder VDSL
vorstellbar.
Weiterführende Informationen und Links
Weiterführende Informationen finden Sie unter folgenden Links:
|