JPerf - eine grafische Oberfläche für iperf
iperf ist ein Kommandozeilenprogramm zum Messen der Performance von Netzwerken.
JPerf ist eine in Java entwickelte grafische Oberfläche für iperf.
Diese Anleitung beschreibt die Messung der Bandbreite von Netzwerken mittels JPerf 2.0.2.
Die Java-Applikation JPerf läuft unter den Betriebssystemen Windows, Linux und Apple Mac OS X.
Für eine Messung sind immer zwei vernetzte Stationen erforderlich. Solange sich zwischen beiden Stationen
eine IP-Verbindung aufbauen lässt, ist die Art des Netzwerkes unerheblich.
Es können sowohl Messungen im lokalen Netz (LAN, WLAN) als auch über das Internet (ADSL, VDSL, Kabelinternet und UMTS)
durchgeführt werden.
JPerf greift für die Messungen nicht auf die Festplatte zu. Die Performance der Festplatte
geht somit nicht in die Messungen ein.
In der Praxis wird das Kopieren von Dateien über das Netzwerk also immer langsamer sein als die mit JPerf ermittelten
Werte.
Das freie Programm kann bei Google Code heruntergeladen werden.
Installation
Da JPerf eine Java-Oberfläche für iperf ist, werden immer iperf und eine JRE benötigt.
Windows
Unter Windows ist keine Installation von JPerf notwendig.
Nach dem Entpacken des ZIP-Files kann die jperf.bat direkt gestartet werden.
Die benötigte iperf.exe ist im ZIP-File enthalten.
Linux
Unter Linux ist ebenfalls keine Installation von JPerf notwendig.
iperf muss aus dem Quellcode mittels "configure; make; make install" installiert werden.
Apple Mac OS
Auf dem Apple reicht ebenfalls das Entpacken des ZIP-Files aus. Lediglich
die Datei jperf.sh muss mit dem Kommando "chmod u+x jperf.sh" ausführbar gemacht werden.
Zusätzlich zu JPerf muss noch iperf installiert werden.
Um iperf auf dem Mac kompilieren zu können, müssen die Apple-Entwicklertools installiert sein.
Auf der DVD von Leopard und Snow Leopard befindet sich dazu der Installer für Xcode.
Aus dem Terminal kann iperf mit den Kommandos "./configure; make; make install" übersetzt und
installiert werden.
Messung mit JPerf
Für alle Messungen werden jeweils ein Server und mindestens ein Client benötigt.
Um den Server zu starten wählen Sie die bei "Choose iperf Mode" die Option Server und
betätigen die Schaltfläche "Run IPerf!". Damit starten Sie iperf im Servermode mit Standardparametern.
Der Server nimmt jetzt Verbindungen auf dem TCP-Port 5001 entgegen. Sollte dieser Port beispielsweise
durch eine Firewall geblockt werden, können Sie die Portnummer entsprechend anpassen.
JPerf-Server unter Windows 7
Auf einer zweiten Maschine starten wir einen JPerf-Client. Im Feld "Server address" muss die IP-Adresse des
JPerf-Server eingegeben werden. Alle anderen Parameter können für einen ersten Test unverändert bleiben.
Starten Sie die Messung mit "Run IPerf!".
JPerf im Client Mode unter Windows 7
Für die Dauer der Messung (10 Sekunden) werden jetzt Daten vom Client zum Server übertragen.
Es findet bei den Messungen also immer eine Art Upload statt. Die Testdaten werden vom Server verworfen.
Die erreichte Bandbreite wird im Diagramm grafisch dargestellt. Unter dem Diagramm erfolgt die Textausgabe der Messwerte.
JPerf Optionen
Die Messungen können mit einer Vielzahl von Optionen gesteuert werden.
Mit den Default-Werten wird oft nicht die maximale Bandbreite einer Verbindung erreicht.
Application Layer Options
Im LAN reicht normalerweise eine Messung über 10 Sekunden aus.
Für längere Messungen kann hier die Dauer der Übertragung eingestellt werden.
Das kann beispielsweise bei Messungen im WLAN mit einem mobilen Client nützlich sein.
Application Layer Options von JPerf
Für aktuelle Netze sollte die Anzeige der Messwerte (Output Format) auf MBits gestellt werden.
Das Intervall für die Anzeige von Zwischenwerten (Report Interval) kann bei langen Messungen entsprechend
erhöht werden.
Transport Layer Options
In den Transport Layer Options können die Einstellungen für die Protokolle TCP und UDP verändert werden.
JPerf setzt die Einstellungen in die entsprechenden iperf-Parameter um.
Mit Buffer Length kann der von iperf genutzte Pufferspeicher eingestellt werden. Mitunter führen hier
größere Werte zu besseren Messwerten.
Die TCP Window Size gibt an wie viele Daten ein Sender senden darf, ohne eine Bestätigung (ACK) vom Empfänger zu erhalten.
Es handelt sich also um die Daten die "in flight" (unterwegs) sein können. Um eine TCP-Verbindung voll auszureizen
muss die TCP Window Size größer sein als das Produkt aus Bandbreite und Laufzeit (Bandwidth Delay Product) der Leitung.
Bei schnellen WAN-Verbindungen können durchaus einige Megabyte in der Leitung unterwegs sein. Entsprechend groß
muss das TCP Window in JPerf eingestellt werden.
Eine Veränderung der Maximum Segment Size MSS ist in der Regel nicht erforderlich.
Ebenso bringt eine Deaktivierung des Nagle-Algorithmus mit TCP No Delay keine nennenswerte Veränderung der Messwerte.
Einstellungen für TCP und UDP
Für die Messung der Übertragungsrate mit dem verbindungslosen UDP muss am Client die gewünschte Bandbreite
gewählt werden. Der Client erzeugt dann einen UDP-Stream mit der eingestellten Geschwindigkeit.
Die in JPerf angezeigten MByte/sec sind allerdings MBit/s. In der Ausgabe von iperf unter dem Diagramm ist die Anzeige
korrekt.
Bei der Messung mit UDP wird zusätzlich zur Bandbreite noch der Jitter (Varianz der Laufzeit) und der Packet Loss angezeigt.
Die UDP-Leistung einer Verbindung ist für die Übertragung von VoIP entscheidend.
JPerf Beispiele
Messung mit TCP
Hier ein paar Messwerte aus einem WLAN bei einer Messung mit TCP.
bin/iperf.exe -c 192.168.178.62 -P 1 -i 1 -p 5001 -w 2.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.178.62, TCP port 5001
TCP window size: 2.00 MByte
------------------------------------------------------------
[140] local 192.168.178.54 port 51788 connected with 192.168.178.62 port 5001
[ ID] Interval Transfer Bandwidth
[140] 0.0- 1.0 sec 2.77 MBytes 23.2 Mbits/sec
[140] 1.0- 2.0 sec 0.56 MBytes 4.72 Mbits/sec
[140] 2.0- 3.0 sec 0.25 MBytes 2.10 Mbits/sec
[140] 3.0- 4.0 sec 0.88 MBytes 7.41 Mbits/sec
[140] 4.0- 5.0 sec 1.17 MBytes 9.83 Mbits/sec
[140] 5.0- 6.0 sec 0.18 MBytes 1.51 Mbits/sec
[140] 6.0- 7.0 sec 0.60 MBytes 5.05 Mbits/sec
[140] 7.0- 8.0 sec 0.90 MBytes 7.54 Mbits/sec
[140] 8.0- 9.0 sec 0.18 MBytes 1.51 Mbits/sec
[140] 9.0-10.0 sec 1.08 MBytes 9.04 Mbits/sec
[140] 0.0-12.6 sec 8.58 MBytes 5.70 Mbits/sec
Done.
Messung mit UDP
Das folgende Beispiel zeigt die Textausgabe einer UDP-Messung mit 10 MBit/s.
Der Jitter betrug 2,8 ms uns es traten keine Paketverluste auf.
Gemessen wurde über ein 11g Wireless LAN.
bin/iperf.exe -c 192.168.178.62 -u -P 1 -i 1 -p 5001 -w 1.0M -f m -b 10.0M -t 10 -T 1
------------------------------------------------------------
Client connecting to 192.168.178.62, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 1.00 MByte
------------------------------------------------------------
[140] local 192.168.178.54 port 53551 connected with 192.168.178.62 port 5001
[ ID] Interval Transfer Bandwidth
[140] 0.0- 1.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 1.0- 2.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 2.0- 3.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 3.0- 4.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 4.0- 5.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 5.0- 6.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 6.0- 7.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 7.0- 8.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 8.0- 9.0 sec 1.19 MBytes 9.98 Mbits/sec
[140] 9.0-10.0 sec 1.21 MBytes 10.1 Mbits/sec
[140] 0.0-10.0 sec 11.9 MBytes 9.99 Mbits/sec
[140] Server Report:
[140] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec 2.825 ms 0/ 8505 (0%)
[140] Sent 8505 datagrams
Done.
Ursachenforschung
Welche Geschwindigkeiten sind normal?
Mit Fast Ethernet sollte JPerf zwischen 90 und 100 MBit/s erreichen können.
Bei Gigabit Ethernet sollte aktuelle Hardware problemlos 900 MBit/s und mehr übertragen können.
WLAN nach IEEE 802.11g überträgt netto etwa 25 MBit/s. Bei 802.11n sind durchaus 130 MBit/s möglich.
Liegen Ihre Messwerte deutlich unter diesen Zahlen? Dann lohnt sich eine Analyse der Ursachen.
Netzwerkkabel
Fehlerhafte Netzwerkkabel, LAN-Dosen und Patchfelder können zu Paketverlusten führen.
TCP erkennt diese Verluste und überträgt die Daten bei Bedarf erneut (TCP Retransmission). Dadurch
funktioniert die Datenübertragung zwar problemlos, wird aber deutlich langsamer.
Einige Netzwerkkarten bieten die Möglichkeit Kabeltests durchzuführen und zeigen Übertragungsfehler an. Auch viele Switches
erlauben einen Blick auf die Error Counter der Switchports.
Für Gigabit Ethernet werden LAN-Kabel nach Kategorie 5e oder besser benötigt. Es müssen alle 8 Adern des Kabels
beschaltet sein. Mit vier Adern kommt nur ein Link mit 100 MBit/s zustande.
CPU-Last
Sehen Sie sich die CPU-Auslastung von Server und Client während der Messung mit JPerf an.
Gerade ältere Hardware ist nicht in der Lage Gigabit-Links mit der vollen Bandbreite zu fahren.
Kontrollieren Sie die Einstellungen der Netzwerkkarte. Optionen wie Interrupt Moderation,
IP Checksum Offload, TCP Checksum Offload und Large Send Offload entlasten die CPU
und helfen beim Auslasten großer Bandbreiten.
Leider fallen diese Treibereinstellungen oft Übersetzungen zum Opfer. In deutschen Treiber
tauchen dann Optionen wie Interruptüberprüfung, Prüfsummenabladung, Prüfsumme abladen oder
Abladung grosser Sendungen auf.
Bei Problemen installieren Sie den aktuellen Treiber für LAN- und WLAN-Adapter.
WLAN N
Der WLAN-Standard 802.11n arbeitet bei aktuellen Geräten mit 300 MBit/s brutto. Netto sind dabei über 100 MBit/s möglich.
Um die optimale Performance zu bekommen sollten Sie nur 11n-Geräte im selben Netz benutzen.
Testen Sie Channel Bonding und stellen Sie die Kanalbreite mal auf 40 MHz.
Als Verschlüsselung sollten Sie WPA2/AES auswählen. Bei WPA2/TKIP schalten viele Wireless Router auf langsame Übertragung
zurück.
Links zum Thema JPerf
|