Raspberry Pi – Netzwerkgeschwindigkeit messen mit iperf
In meinem neuen Zuhause habe ich mir vom Elektriker eine LAN-Verkabelung aller Räume installieren lassen. Der Gedanke dahinter war, im Keller einen Server oder ein NAS zu betreiben der das gesamte Haus mit Daten versorgt. An den Endpunkten werden dann Raspberry Pis die jeweilige Arbeit erledigen. Sei es nun als XBMC Medienserver, Musikserver, Internetradio oder diversen anderen Spielereien wie Temperaturmessungen oder Hausautomatisation. Erste Aufgabe war nun herauszufinden wie schnell die Daten im Netzwerk gesendet werden.
Netzwerkgeschwindigkeit messen mit iperf
Bei einem LAN Netzwerk interessiert uns am meisten die maximale Bandbreite, also die max. Anzahl an Daten die pro Sekunde übertragen werden können. Rein vom Papier sollte das Netzwerk eine Geschwindigkeit erreichen, die dem langsamsten Element in der Sendekette entspricht. Das kann ein altes kaputtes Kabel sein, ein langsamer Switch oder eine Netzwerkkarte die zum Beispiel kein Gigabit unterstützt.
Messung starten
Um die Netzwerkgeschwindigkeit messen zu können benötigen wir ein Programm. Im ersten Schritt messen wir mit iperf den aktuellen Wert. Iperf ist ein Client-Server Programm, für unsere Messungen benötigen wir folgendes:
- ein Netzwerk (LAN oder WLAN)
- einen Sender
- einen Empfänger
Für meine Messung habe ich als Sender und Empfänger je einen Raspberry Pi verwendet. Man kann aber auch jedes andere Gerät einsetzen, ob PC, Laptop oder Server. Auf beiden Geräten wurde iperf mit dem folgenden Befehl installiert:
sudo apt-get install iperf
iperf kann je nach Parameter als Server oder als Client gestartet werden. Für uns bedeutet das nun folgendes: eines der beiden Geräte startet iperf als Server. Das funktioniert mit dem Parameter -s:
sudo iperf -s
Es ist hier besonders wichtig, dass iperf mit root Rechten gestartet wird. Der Server ist nun aktiv und passiv, das heißt er wartet auf Daten die am Port 5001 ankommen. Am anderen Gerät starten wir nun deshalb einen Client (mit dem Parameter -c) der aktiv Daten an den Server senden wird:
sudo iperf -c 10.0.0.4
Der Client benötigt zusätzlich die IP Adresse des iperf Servers. Nachdem der Client gestartet wurde dauert es einige Sekunden und eine Auswertung zeigt uns an, wie aktuell die Bandbreite aussieht.
Messung auswerten
Wie im Bild zu sehen wurde eine Bandbreite von 65,1 MBit/s gemessen. Das ist schon ein recht guter Wert. In meinem Netzwerk laufen die Daten über 2 Steckdosen, 4 LAN Kabeln und einem Switch. Für genauere Tests könnte man nun diese Elemente einzeln testen um zu sehen, ob es eine Schwachstelle gibt. In einer früheren Messung mit iperf meines WLANs wurde ein Wert von ca. 6 MBit/s gemessen. Ein Grund weshalb ich auf ein Kabelnetzwerk setze.
Fazit
Man kann die Bandbreite im Netzwerk schnell und einfach mit dem Raspberry Pi und dem Tool iperf messen. Gerade bei der Suche nach dem Flaschenhals eignet sich der Raspberry Pi sehr gut, da man ihn recht einfach auch an unzugänglichen Orten an die dort verlegten Kabel anstecken kann. Er ist zudem einfach zu transportieren und mit dem richtigen Toolset ein sehr gutes Gerät um Netzwerke zu testen.
Welche Tools verwendet ihr so? Welche Kritik fällt euch zum iperf Programm ein?
Hallo Werner,
hab mein Privates Netzwerk auch mit iperf durchgemessen. Beim RasPi ist halt der Nachteil, dass er nur eine 100Mbit Nic hat. Somit wird das Gigabit Netz nie an seine Grenzen gebracht.
Ich hab dafür mein Notebook an die einzelnen Dosen gehängt. Der iperf Server lief auf meinem OpenWrt Router.
Viele Grüße
Michi
Hallo Werner,
eine Frage zu deiner Anwendung, könnte man mit iperf auch regelmäßig die Geschwindigkeit des DSL Anschlusses messen?
Viele Grüße,
Marcel
ich denke schon. Du müsstest nur irgendwo einen iperf Server laufen haben und in einem Script bei dir zu Hause iperf alle x Stunden laufen lassen. Ich denke aus der Ausgabe würde sich eine nette Statistik ergeben.
Bandbreite in Echtzeit monitoren geht mit nload ganz prima
iperf kann man auch wunderbar mit jperf verwenden
Was is das für ein programm?