Testaufbau
Für einen Testaufbau benötigt man zwei Computer mit iperf. Ein Rechner wird dabei als Server und einer als Client betrieben. Dabei wird per Default vom Client zum Server gemessen.
Versionen
iperf existiert in drei Versionen, wobei die Version 1 seit 2003 (Release 1.7.0) nicht mehr weiterentwickelt wird. Version 2 (aktueller Release 2.0.10) wird noch mit Fehlerbehebungen und Anpassungen unterstützt aber die Weiterentwicklung erfolgt in der Version 3 (aktueller Release 3.5).
Die Versionen 2 und 3 sind dabei nicht miteinander kompatibel. Hingegen können die Builds für verschiedene Betriebssysteme miteinander verwendet werden (z.B. Client auf Windows und Server auf Linux). Dieses Tutorial fokussiert sich auf die Version 3.
Alle Versionen sind in C geschrieben und unter der BSD-Lizenz veröffentlicht.
Grundlegende Parameter
Alle Parameter existieren in einer langen Variante, welche mit –[parameter] angegeben werden. Von den meisten existiert auch eine Kurzvariante, welche mit nur einem – und darauffolgend einem einzelnen Buchstaben als Bezeichner angegeben wird. Sofern beide Varianten existieren werden auch beide in den nachfolgenden Beschreibungen angegeben. In den Beispielen kommt, sofern vorhanden, die Kurzvariante zum Zug.
Version
--version
oder -v
Zeigt die Version inklusive Laufzeitumgebung an. Hilfreich, um die Testumgebung zu dokumentieren.
iperf 3.0.11
Linux ubuntu 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Hilfe
--help
oder -h
Zeigt die Hilfe an. Führt alle Parameter und Optionen auf.
Usage: iperf [-s|-c host] [options]
iperf [-h|--help] [-v|--version]
Server or Client:
-p, --port # server port to listen on/connect to
-f, --format [kmgKMG] format to report: Kbits, Mbits, KBytes, MBytes
-i, --interval # seconds between periodic bandwidth reports
-F, --file name xmit/recv the specified file
-A, --affinity n/n,m set CPU affinity
-B, --bind <host> bind to a specific interface
-V, --verbose more detailed output
-J, --json output in JSON format
-d, --debug emit debugging output
-v, --version show version information and quit
-h, --help show this message and quit
Server specific:
-s, --server run in server mode
-D, --daemon run the server as a daemon
-1, --one-off handle one client connection then exit
Client specific:
-c, --client <host> run in client mode, connecting to <host>
-u, --udp use UDP rather than TCP
-b, --bandwidth #[KMG][/#] target bandwidth in bits/sec (0 for unlimited)
(default 1 Mbit/sec for UDP, unlimited for TCP)
(optional slash and packet count for burst mode)
-t, --time # time in seconds to transmit for (default 10 secs)
-n, --bytes #[KMG] number of bytes to transmit (instead of -t)
-k, --blockcount #[KMG] number of blocks (packets) to transmit (instead of -t or -n)
-l, --len #[KMG] length of buffer to read or write
(default 128 KB for TCP, 8 KB for UDP)
-P, --parallel # number of parallel client streams to run
-R, --reverse run in reverse mode (server sends, client receives)
-w, --window #[KMG] set window size / socket buffer size
-C, --linux-congestion <algo> set TCP congestion control algorithm (Linux only)
-M, --set-mss # set TCP maximum segment size (MTU - 40 bytes)
-N, --nodelay set TCP no delay, disabling Nagle's Algorithm
-4, --version4 only use IPv4
-6, --version6 only use IPv6
-S, --tos N set the IP 'type of service'
-L, --flowlabel N set the IPv6 flow label (only supported on Linux)
-Z, --zerocopy use a 'zero copy' method of sending data
-O, --omit N omit the first n seconds
-T, --title str prefix every output line with this string
--get-server-output get results from server
[KMG] indicates options that support a K/M/G suffix for kilo-, mega-, or giga-
iperf3 homepage at: http://software.es.net/iperf/
Report bugs to: https://github.com/esnet/iperf
Zusätzliche Ausgaben
Mit den folgenden Parametern kann iperf angewiesen werden, zusätzliche Ausgaben beim Ausführen der Messungen auszugeben. Dies kann besonders im Fehlerfall (keine Verbindung, unerwartete Resultate etc.) hilfreich sein.
--verbose
oder -V
Gibt detailiertere Ausgaben aus.
--debug
oder -d
Gibt Debugging-Ausgaben aus.
Ausblick
Nachdem wir nun die Grundlagen betrachtet haben wollen wir in den nächsten beiden Teilen die Messungen via UDP und TCP genauer betrachten.
Pingback: Zeitgeist 2020 | of bits and bytes