SoftwareTechnik

iPerf für Windows kompilieren

Wenn du diesen Beitrag angeklickt hast, weißt du, was iPerf ist und was man damit macht. Falls nicht, es ist ein Tool zur Messung von LAN/WLAN Performance, also Geschwindigkeit der Datenübertragung. Die Homepage mit Sourcecode verlinkt auch vorkompilierte Binaries, jedoch sind die für Windows ziemlich asbach. Ich suchte also nach einer Möglichkeit, aus aktuellem Sourcecode ein aktuelles Binary zu machen.

1.  Cygwin installieren

Cygwin ist eine Linux Umgebung für Windows. Bevor Linux Apps in dieser Umgebung laufen, müssen sie neu kompiliert erden. Zunächst muss Cygwin geladen und installiert werden. Die Standard-Einstellungen sind in Ordnung. Wenn der Installer bei den Paketen angekommen ist, klicke auf „Devel“, damit aus „Default“ ein „Install“ wird. Damit werden alle Entwicklungs-Komponenten installiert, die nötig sind. Das dauert nun eine ganze Weile. Am Ende gibt es ein Icon auf dem Desktop, mit dem die Cygwin Umgebung gestartet wird.

2.  Download iPerf Source Code

Als nächstes folgt der Download des aktuellen iPerf Sourcodes. Zum Zeitpunkt der Erstellung dieses Beitrages war das v3.7. Die Datei iperf-3.7.tar.gz in also c:\cygwin64\iperf-3.7\. Zum Entpacken von tar und gzip Dateien ist z.B. 7-zip wunderbar geeignet.

3. Compiler konfigurieren

Starten der Cygwin Umgebung aus dem Start Menu oder über das Icon auf dem Desktop.

In das Verzeichnis wechseln, in dem die iPerf Sourcen liegen:

cd /iperf-3.7

Den Compiler konfigurieren (das dauert evtl. ein paar Minuten):

./configure

Wenn alles gut läuft und das sollte es, sieht es am Ende etwa so aus:

4.  Kompilieren

Um den Sourcecode zu übersetzen, einfach make tippen und Enter drücken. Leider gibt es an dieser Stelle zwei Fehler. Keine Ahnung warum, aber ich habe eine Lösung. 

In der Datei c:\cygwin64\usr\include\openssl\ossl_typ.h müssen die Zeilen 66 und 73 auskommentiert werden. Schreib einfach // (2x den Schrägstrich auf der 7) an den Anfang:

//# ifdef _WIN32
# undef X509_NAME
# undef X509_EXTENSIONS
# undef PKCS7_ISSUER_AND_SERIAL
# undef PKCS7_SIGNER_INFO
# undef OCSP_REQUEST
# undef OCSP_RESPONSE
//# endif

Das bewirkt, dass die Compiler Anweisungen ohne Wenn und Aber ausgeführt werden. Das „ifdef _WIN32“ funktioniert bei mir nicht.

Dann noch mal make und Enter.

5.  Installieren

Vorausgesetzt das Kompilieren läuft nun durch, werden Programme unter Linux überlicherweise make install installiert. Dadurch wird iperf.exe in dem Verzeichnis c:\cygwin64\usr\local\bin\ installiert.

6. iPerf ausführen

Natürlich kann man iperf nuun direkt aus der Cygwin Umgebug ausführen. Dazu ist jedochz der komplette Pfad anzugeben, also z.B. /usr/local/bin/iperf.  Allerdings denke ich, dass du iPerf einfach aus der Windows Kommandozeile oder auf einem anderen Rechner ausführen möchtest. Dazu müssen alle notwendigen DLLs aus der Cygwin Umgebung kopiert werden.

Wenn Cygwin mit den Standardeinstellungen installiert wurde, befindet sich iperf.exe in c:\cygwin64\usr\local\bin\

Die 3 notwendigen DLLs befinden sich hier c:\cygwin64\bin\.

  • cygcrypto-1.1.dll
  • cygwin1.dll
  • cygz.dll

Kopiere diese 3 DLLs und iperf.exe zusammen in ein beliebiges Verzeichnis, um es überall direkt unter Windows auszuführen. 

7. iPerf anwenden

Ich habe für die Messungen zwei kleine Batchdateien geschrieben, eine für den Server und eine für den Client. Idealerweise läuft der Server auf einem mit maximaler Geschwindigkeit direkt am Router angebunden Rechner, damit hier kein Nadelöhr entsteht. Natürlich kann man iPerf-Server auch auf einem iPad starten und das neben den WLAN AccessPoint legen. Ein Air 3 verbindet sich immerhin mit knapp 900 MBit/s an einen Ubiquiti AP Pro. Doch reduziert ein WLAN angebundenes Gerät ja wieder den maximalen WLAN Durchsatz, den wir ja messen möchten und deshalb sind nur eingeschränkt belastbaren Messergebnisse zu erzielen.

Zur Messung der tatsächlichen Internet-Geschwindigkeit eignet sich ein externer iPerf Server. Diese gibt es reichlich (Google hilft bei der Suche), für meinen Wohnort benutze ich den von WilhelmTel.

client.bat

@echo off
if [%1] equ [] (
  echo IPerf Test starten mit: "client WAN|IP-Adresse [-R]"
  echo Bitte geben Sie WAN oder die IP-Adresse eines IPerf Servers an! Mit -R wird der Downlink getestet.
  goto Ende
)

if /I [%1] EQU [WAN] (
  if /I [%2] EQU [-R] (
    echo Test der WAN Verbindung gegen den Iperf-Server von WilhelmTel im DOWNLOAD
    iperf3 -c speedtest.wtnet.de -p 5200 -f m -4 -R
  ) else (
    echo Test der WAN Verbindung gegen den Iperf-Server von WilhelmTel im UPLOAD
    iperf3 -c speedtest.wtnet.de -p 5200 -f m -4
  )
)

if /I [%1] NEQ [WAN] (
  if /I [%2] EQU [-R] (
    echo Test der LAN Verbindung gegen %1 im DOWNLOAD
    iperf3 -c %1 -p 5201 -f m -4 -R
  ) else (
    echo Test der LAN Verbindung gegen %1 im UPLOAD
    iperf3 -c %1 -p 5201 -f m -4
  )
)

:Ende

server.bat

@echo off
cls
for /f "tokens=2 delims=[]" %%a in ('ping -n 1 -4 %COMPUTERNAME% ^| find /I "%COMPUTERNAME%"') do set ip=%%a
title IP-Adresse: %ip% Port: 5201
echo Die Adresse dieses iperf3 Servers ist %ip% auf Port 5201
echo (Beenden mit Strg+C)

iperf3 -s -p 5201 -f m -V --logfile stats.txt

Tags

Oliver Stephan

Ich bin Oliver, geboren 1968, verheiratet und habe mehrere Kinder. Mein persönliches Interesse für Computertechnik habe ich nach einem Informatikstudium zu meinem Beruf gemacht. Heute arbeite ich als Datenbankspezialist und übernehme die Pflege einiger Wordpress Sites.

Related Articles

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere

Check Also

Close
Back to top button
Close