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


Artikel erstellt am: 09 April 2021 , aktualisiert am 13 April 2021