iperf3: Tutorial per misurare la velocità tra due dispositivi LAN e WiFi

iperf3 è l'ultima versione del popolare programma iperf per misurare la larghezza di banda tra due o più computer su una rete locale o Internet. Questa nuova versione di iperf3 non è compatibile con il vecchio iperf2, quindi dobbiamo aggiornare sia il server che il client se vogliamo utilizzare questo nuovo programma. Questo strumento permette di regolare vari parametri in modo molto avanzato, relativi ai protocolli TCP, UDP e SCTP, ovviamente è compatibile sia con reti IPv4 che IPv6. Iperf3 ha subito un gran numero di migliorie che permettono di spremere ancora di più le reali prestazioni della rete locale, quindi, è l'ideale per eseguire test prestazionali di apparecchiature Multigigabit e anche 10G. Vuoi sapere come scaricarlo e usarlo per misurare le prestazioni?

In questo articolo utilizziamo iperf3 da tempo, per misurare le prestazioni che otteniamo in LAN-LAN, LAN-WAN e WiFi 6 test. Abbiamo riscontrato che si comporta molto meglio di iperf2 non appena superiamo la velocità di 1Gbps, quindi, quando utilizziamo router, switch o access point WiFi 6, utilizziamo questo programma che ci dà una misura più precisa della velocità che raggiungiamo .

iperf3

In questo tutorial ti insegneremo come utilizzare questo interessantissimo programma per misurare la velocità reale tra due computer, indipendentemente dal fatto che siano connessi alla LAN locale o ad Internet, poiché facendo uso dei protocolli TCP e UDP, possiamo aprire una porta sul server per consentire a uno o più client di comunicare direttamente e per verificare la velocità reale.

Caratteristiche principali di Iperf3

iperf3 è un programma completamente rinnovato, che non ha nulla a che fare con iperf2, poiché non sono compatibili tra loro. iperf3 eredita il meglio di iperf2 e incorpora nuove funzionalità per permetterci di eseguire misurazioni a velocità multigigabit senza problemi. Per ogni test che effettuiamo, ci informerà della larghezza di banda di upload e download, perdita di pacchetti e altri parametri.

Per quanto riguarda i protocolli TCP e SCTP, è in grado di misurare la larghezza di banda, riportare la dimensione dell'MTU (Maximum Transfer Unit) e dell'MSS (Maximum Segment Size), inoltre, supporta anche la configurazione della dimensione della finestra TCP tramite il socket buffer. Per quanto riguarda UDP, il client può creare diversi flussi di dati UDP, consente di misurare la perdita di pacchetti, il jitter (jitter di ritardo) e supporta anche il multicast. Il client consente di stabilire più connessioni simultanee con il server, inoltre, il server è in grado di ricevere più connessioni simultanee da diverse fonti diverse. Certo, possiamo eseguirlo per un certo tempo o definire una certa quantità di dati da inviare.

Altre caratteristiche importanti di iperf3 sono la possibilità di mostrare periodicamente lo stato della connessione, la larghezza di banda fino ad ora, il jitter, la perdita di pacchetti, ecc. Possiamo anche far funzionare il server iperf come un demone nel sistema operativo. Altre nuove funzionalità incorporate sono la possibilità di ignorare TCP Slowstart dal protocollo TCP stesso, impostare la larghezza di banda per UDP o TCP, impostare un'etichetta di flusso per IPv6, configurare l'algoritmo di controllo della congestione e la possibilità di ottenere tutte le informazioni in formato JSON, e possiamo anche effettuare test di lettura e scrittura direttamente sull'hard disk.

Questo nuovo programma iperf3 ha la licenza BSD, il che significa che è open source e multipiattaforma, è compatibile con Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD, VxWorks, sistemi operativi Solaris e molti altri.

Download e installazione di Iperf3

Questo programma continua il suo sviluppo, sul sito ufficiale Iperf3 hai le ultime versioni disponibili per i diversi sistemi operativi. Una volta scaricato dovremo decomprimere il file ZIP e potremo eseguirlo, ma in questo caso non abbiamo un'interfaccia utente grafica o uno script eseguibile, dobbiamo eseguirlo tramite riga di comando, sia in Windows che Linux / MacOS.

Esecuzione di iperf3 su Windows, Linux e macOS

Una volta decompresso lo ZIP scaricato, entriamo nel prompt dei comandi (cmd) o nel terminale Linux, ci muoviamo con il comando “cd” attraverso le diverse directory, e quando siamo nella directory iperf3 dobbiamo eseguirlo in modalità server su un PC e in modalità client su un altro PC:

iperf3.exe ./iperf3

Ovviamente, durante l'esecuzione, riceveremo l'aiuto di iperf, poiché non abbiamo inserito argomenti.

Funzionamento e prima prova di velocità

Il funzionamento di iperf3 è molto semplice, la prima cosa di cui dobbiamo essere chiari è che si tratta di un programma che viene eseguito tramite riga di comando, e abbiamo diversi argomenti per configurarne il comportamento. Quando si affronta un programma client-server, è necessario eseguire due iperf3, uno su PC come server e un altro iperf come client per controllare la velocità dal client al server.

Per avviare iperf3 in modalità server:

iperf3.exe -s ./iperf3 -s

Per avviare iperf3 in modalità client con alcune opzioni che spiegheremo in seguito:

iperf3.exe -c IP -P 50 -fg -t 5

Una volta che sapremo come eseguire un test delle prestazioni di base con iperf3, ti mostreremo tutte le opzioni disponibili in questo programma.

Opzioni di configurazione generali: per client e server

I seguenti argomenti possono essere inseriti dopo l'esecuzione del programma stesso, come segue: “iperf3 -arguments” e l'ordine di immissione degli argomenti non ha importanza.

  • -p port: possiamo scegliere la porta da usare, TCP o UDP, questa porta deve essere esattamente sia sul server che su tutti i client.
  • –Cport port: questa opzione ci permette di specificare la porta lato client, solo per iperf 3.1 o superiore.
  • -f formato: possiamo scegliere l'unità di misura che apparirà quando vedremo la velocità.
    • k: Kbit
    • K: Kbyte / s
    • m: Mbit
    • M: MByte / s
    • g: Gbps
    • G: GByte / s
  • -i intervallo: intervallo di tempo misurato in secondi in cui iperf3 ci mostrerà tutte le informazioni su larghezza di banda, jitter e perdita di pacchetti. Per impostazione predefinita è 0.
  • -F nomefile: sul client è il file letto e scritto sulla rete locale, invece di utilizzare informazioni casuali. Sul server è ciò che viene letto dalla rete e scritto in un file.
  • -B host: consente l'associazione a una scheda di rete specifica, ideale se abbiamo più interfacce.
  • -V: output con tutti i dettagli (dettagliato)
  • -J: output in formato JSON
  • –File di log: invia l'output a un file di log (solo iperf 3.1)
  • –D: eseguire il debug
  • -v: versione del programma
  • -h: avvia la guida del programma

Opzioni di configurazione solo per server

I seguenti argomenti possono essere inseriti dopo l'esecuzione del programma stesso, come segue: “iperf3 -arguments” e l'ordine di immissione degli argomenti non ha importanza. Questi argomenti possono essere utilizzati solo sul server iperf3.

  • -s: avvia iperf in modalità server.
  • -D: avvia il programma in background come demone.
  • -I: scrive un file con l'ID del processo, ideale per l'uso con -D (daemon).

Di seguito puoi vedere alcuni esempi.

Possiamo eseguire il server iperf3 per impostazione predefinita, utilizzerà automaticamente il protocollo TCP sulla porta 5201.

iperf3.exe -s

Possiamo eseguire il server iperf3 con TCP e porta 5000 nel modo seguente:

./iperf3 -s -p 5000

Opzioni di configurazione solo per il cliente

I seguenti argomenti possono essere inseriti dopo l'esecuzione del programma stesso, come segue: “iperf3 -arguments” e l'ordine di immissione degli argomenti non ha importanza. Questi argomenti possono essere usati solo nel client iperf3.

  • -c IP_address: avvia iperf in modalità client per connettersi a un server, dobbiamo definire l'indirizzo IP subito dopo.
  • –Sctp - Utilizza questo protocollo SCTP invece di TCP (predefinito).
  • -u: usa il protocollo UDP invece di TCP (predefinito).
  • -b bandwidth: consente di definire una larghezza di banda in N bit / sec, di default è 1MB / s in UDP e illimitata in TCP. Se usiamo l'argomento -P per inviare più flussi di dati, questa larghezza di banda viene applicata a ciascuno di essi.
  • -t tempo: in secondi per trasmettere le informazioni alla massima velocità. Per impostazione predefinita è di 10 secondi, ma possiamo mettere quello che vogliamo.
  • -n numero: numero di dati da trasmettere, invece di usare il tempo (-t) usiamo i dati.
  • -k packets: numero di pacchetti da trasmettere, invece di usare time (-t) o data (-n).
  • -l (L minuscola): lunghezza del buffer letto o scritto.
  • -P numero: numero di flussi di dati simultanei, si consiglia di mettere 5 o più per spremere la rete al massimo.
  • -R: il traffico iperf va normalmente dal client al server, se mettiamo questo argomento, il traffico andrà dal server al client.
  • -w dimensione: specifica la dimensione della finestra TCP
  • -M mss: permette di configurare il TCP MSS
  • -N: configura l'opzione TCP senza ritardo.
  • -4: usiamo reti IPv4.
  • -6: usiamo reti IPv6.
  • -S: tipo di servizio per i pacchetti in uscita.
  • -L etichetta: consente di configurare l'etichetta del flusso per le reti IPv6.
  • -Z: utilizza il metodo di copia zero, riduce notevolmente l'utilizzo della CPU da parte del programma.
  • -O secondi: salta i primi X secondi del test, per evitare problemi con TCP slowstart e per fornirci una misura senza il burst all'inizio.
  • -T titolo: ti permette di mettere un titolo davanti a ogni stringa
  • -C Algoritmo: permette di configurare l'algoritmo di congestione, solo in Linux con iperf 3.0 e in FreeBSD con iperf 3.1

Di seguito puoi vedere alcuni esempi.

Possiamo eseguire il client iperf3 con alcuni argomenti molto interessanti:

iperf3.exe -c 192.168.1.10 -P 50 -p 5000 -fg -t 5

  • -c 192.168.1.10: funziona in modalità client con l'IP definito.
  • -P 50: inviamo un totale di 50 connessioni TCP
  • -p 5000: usiamo la porta 5000, il valore predefinito è 5201
  • -fg: mostriamo la velocità in Gbps
  • -t 5: lanciamo il test per 5 secondi.

Come hai visto, questo programma iperf3 è molto semplice perché ci permette di eseguire un iperf con un'interfaccia utente grafica, senza la necessità di inserire comandi e argomenti complicati.