Netzwerk-Diagnose mit Iperf 2
Netzwerk-Geschwindigkeit kann man einfach mit iperf2 messen.
Iperf2 hier herunterladen. Es wird in diesem Beispiel iperf2-2.1.1 verwendet.
https://sourceforge.net/projects/iperf2/files/
Typische Netzwerk-Geschwindigkeiten
- 100-MB-Ethernet erreicht typisch 88 - 100 MBit/Sekunde
- 1-GB-Ethernet erreicht typisch 600 - 900 MBit/Sekunde
Test-Szenario unter Windows
- 100-MegaBit-Beispiel
Auf einem PC iperf2 im Server-Modus starten. Dieser Rechner hat hier die IP-Adresse 10.1.1.100
C:\Users\chrissie\Downloads> iperf-2.1.1-April_07_2021-win.exe -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 64 KByte (default)
------------------------------------------------------------
[ 1] local 10.1.1.100 port 5001 connected with 10.1.1.127 port 53387
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-10.18 sec 115 MBytes 94.9 Mbits/sec
Auf dem anderen PC iperf2 im Client-Modus starten, und die Server-IP angeben. Es wird eine Messung durchgeführt.
C:\Users\chrissie\Downloads> iperf-2.1.1-April_07_2021-win.exe -c 10.1.1.100
------------------------------------------------------------
Client connecting to 10.1.1.100, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[ 1] local 10.1.1.127 port 39658 connected with 10.1.1.100 port 5001
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-10.07 sec 114 MBytes 94.7 Mbits/sec
- 1-Gigabit-Beispiel
Bei Gigabit schafft es Iperf2 mit der relativ kleinen TCP window size von 64 KByte nicht, den Gigabit-Link voll auszulasen. Hier ist ein TCP-Window von 512k zu verwenden:
C:\Users\chrissie\Downloads> iperf-2.1.1-April_07_2021-win.exe -c 10.1.1.100 -w 512k -l 512k
------------------------------------------------------------
Client connecting to 10.1.1.100, TCP port 5001
TCP window size: 500 KByte
------------------------------------------------------------
[ 1] local 10.11.1.118 port 51453 connected with 10.11.1.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-10.04 sec 717 MBytes 599 Mbits/sec
------------------------------------------------------------
- Wenn man mehrere Tests hintereinander durchführen will, kann man diese Batchdatei verwenden:
@echo off
set loop=0
:loop
iperf-2.1.1-April_07_2021-win.exe -c 10.1.1.100 -w 512k -l 512k
set /a loop=%loop%+1
if "%loop%"=="10" goto next
goto loop
:next
echo Finish.
Test-Szenario unter Linux
-
Iperf2 aus den Sourcen kompilieren - ein Klacks!
-
Build-System incl. g++ installieren (Wenn noch nicht vorhanden)
chrissie@ucs-1:~ $ sudo apt update
[...]
chrissie@ucs-1:~ $ sudo apt install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
dpkg-dev fakeroot g++ g++-6 libalgorithm-diff-perl libalgorithm-diff-xs-perl
libalgorithm-merge-perl libdpkg-perl libfakeroot libfile-fcntllock-perl
libstdc++-6-dev
[...]
Need to get 11.6 MB of archives.
After this operation, 44.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
[...]
- Tar-Archiv entpacken, und mit dem klassischen Dreisatz configure / make / make install kompilieren und installieren
chrissie@ucs-1:~$ tar -xvzf iperf-2.1.1-dev.tar.gz
iperf-2.1.1-dev/
iperf-2.1.1-dev/m4/
iperf-2.1.1-dev/m4/ax_create_stdint_h.m4
iperf-2.1.1-dev/m4/dast.m4
[...]
chrissie@ucs-1:~$ cd iperf-2.1.1-dev/
chrissie@ucs-1:~/iperf-2.1.1-dev$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
[...]
config.status: creating config.h
config.status: executing depfiles commands
chrissie@ucs-1:~/iperf-2.1.1-dev$ make
make all-recursive
make[1]: Entering directory '/home/chrissie/iperf-2.1.1-dev'
Making all in compat
make[2]: Entering directory '/home/chrissie/iperf-2.1.1-dev/compat'
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../include -Wall -O2 -MT
Thread.o -MD -MP -MF .deps/Thread.Tpo -c -o Thread.o Thread.c
mv -f .deps/Thread.Tpo .deps/Thread.Po
[...]
make[1]: Leaving directory '/home/chrissie/iperf-2.1.1-dev'
chrissie@ucs-1:~/iperf-2.1.1-dev$ sudo make install
Making install in compat
[...]
chrissie@ucs-1:~/iperf-2.1.1-dev$ cd
chrissie@ucs-1:~
- Installation testen
chrissie@ucs-1:~$ which iperf
/usr/local/bin/iperf
chrissie@ucs-1:~$ iperf --version
iperf version 2.1.1-dev (7 April 2021) pthreads
- Anwendungsbeispiele wie oben