Netzwerkanalyse mit Open Source-Tools

Um die Performance einer Netzwerkstrecke zu messen gibt es viele Möglichkeiten. Eine derer – und aus meiner Sicht die verlässlichste und gleichzeitig einheitlichste Methode – möchte ich heute vorstellen. iperf3 ist ein Open Source-Tool, was auf nahezu jedem Betriebssystem lauffähig und daher sehr universell einsetzbar ist. Zudem bietet es einige Konfigurationsoptionen, die viele Szenarien abdecken.

Öffentliche iperf3-Server

Standorte öffentlicher iperf-Server (Quelle: https://iperf.cc/de/ )

Um einen einfachen Test zu definierten Servern im Web zu starten, kann man sich vorerst ohne einen eigenen Server aufzusetzen bei den frei verfügbaren Servern ausprobieren. Diese finden sich hier.

Mit dem folgenden Befehl kann man bereits mit iperf3 im Clientmodus testen. Es können bei Bedarf weitere Parameter angegeben werden. Beim Windows-Client muss ggf. die Dateiendung “.exe” nach iperf3 ergänzt werden.

iperf3 -c [iPerf-Serveradresse]

Man sollte dabei allerdings bedenken, dass die angegebene Bandbreite viele Hops und längere Strecken durchläuft und jedes Mal einer Momentaufnahme entspricht. Wie man im eigenen Netz per iperf

Private iperf3-Server

Wie bereits erwähnt kann es ggf. nicht zielführend sein, einen öffentlichen Server anzufragen. Warum? Möglicherweise liegt die Ursache für eine schlechte Performance nur auf einem Teilstück der Strecke – zum Beispiel bei einem ausgelasteten Switch, langsam ausgehandelten Ports oder auch an einem ausgelasteten Speichersystem oder Virtualisierungshost. Um solchen Plagegeistern auf den Zahn zu fühlen, kann auch im lokalen Netz ein iperf3-Server installiert werden und die Strecke zum Standort dessen gemessen werden.

Installation von iperf3

Die Installation kann auf nahezu jedem Betriebssystem stattfinden. Wichtig ist, dass nach Installation eingehende und ausgehende Ports (Standard: TCP/UDP 5001-5009) in der lokalen Firewall und ggf. auf dem Weg liegenden Firewall erlaubt worden sind.

Die Binaries für eine Installation finden sich hier.

Testszenario mit iperf3 auf Ubuntu (64-Bit)

In meinem Testszenario habe ich iperf3 auf einem Ubuntu-Server mit 64 Bit laufen lassen. Üblicherweise genügt eine aktuelle Installation und aktuelle Paketquellen:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install iperf3

Starten im Servermodus

iperf3 muss nun noch im Servermodus gestartet werden und wartet dann auf Anfragen der iperf3-Clients:

iperf3 -s

Die Übertragung wird mit genauen Messwerten auf Client und Serverseite gemessen und am Ende der Messung abgeglichen.

Auswertung der Messergebnisse

Nun erhält man am Ende Ergebnisse der Messungen. Doch wie sind diese zu interpretieren? Was muss dabei beachtet werden?

  • Ausstattung der VM oder des Rechners (RAM/CPU-Kerne)
  • Physikalische Netzwerkkarte und maximaler physikalischer Datendurchsatz
  • Virtuelle Netzwerkadapter (bei VMware z.B. e1000 vs. vmxnet3)

Je nach Infrastruktur können die Ergebnisse variieren, als Richtwerte sollten aber ca. 90-97% der physikalisch verfügbaren Durchsätze dienen:

  • Fast-Ethernet: 100 Mbit/s netto > ca. 90-97 Mbit/s brutto
  • Gigabit-Ethernet: 1.000 Mbit/s netto > ca. 900-970 Mbit/s brutto
  • TenGigabit-Ethernet: 10.000 Mbit/s netto > ca. 9.000 – 9.750 Mbit/s brutto

Wie kommt es zur Reduzierung der physikalischen Maximalwerte? Ganz einfach! Der Betriebssystemkernel, die Netzwerkdienste und Treiber der Karten und Schnittstellen, sowie ggf. auch intern langsamere Verbindungen führen zur Absenkung der Brutto- in Nettowerte.