L'iperf è uno strumento utilizzato per testare le prestazioni della rete tra due sistemi. L'applicazione iperf fornisce più metriche per le prestazioni di una rete. L'applicazione iperf non è installata di default, ma è fornita dal gestore di pacchetti della maggior parte delle distribuzioni.
Per i sistemi CentOS/RHEL/Fedora usa yum, per installare il pacchetto iperf.
# yum install iperf
iperf ha la nozione di "client" e "server" per testare il throughput della rete tra due sistemi.
L'esempio seguente imposta una grande dimensione del buffer di invio e ricezione per massimizzare la velocità effettiva ed esegue un test per 60 secondi che dovrebbe essere abbastanza lungo per esercitare completamente una rete.
Server
Sul sistema server, a iperf viene detto di restare in attesa di una connessione client:
server # iperf3 -i 10 -s
Ecco,
-i – l'intervallo per fornire aggiornamenti periodici della larghezza di banda
-s – ascolta come un server
Vedi man iperf3 per ulteriori informazioni su specifiche opzioni della riga di comando.
Cliente
Sul sistema client, a iperf viene detto di connettersi al server in ascolto tramite nome host o indirizzo IP:
client # iperf3 -i 10 -w 1M -t 60 -c [server hostname or ip address]
Ecco,
-i – l'intervallo per fornire aggiornamenti periodici della larghezza di banda
-w – la dimensione del buffer del socket (che influisce sulla finestra TCP). La dimensione del buffer è impostata anche sul server da questo comando client
-t – il tempo per eseguire il test in secondi
-c – connettiti a un server in ascolto su...
Vedi man iperf3 per ulteriori informazioni su specifiche opzioni della riga di comando.
Risultati del test
Sia il client che il server riportano i loro risultati una volta completato il test:
Server
server # iperf3 -i 10 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.0.0.2, port 22216 [ 5] local 10.0.0.1 port 5201 connected to 10.0.0.2 port 22218 [ ID] Interval Transfer Bandwidth [ 5] 0.00-10.00 sec 17.5 GBytes 15.0 Gbits/sec [ 5] 10.00-20.00 sec 17.6 GBytes 15.2 Gbits/sec [ 5] 20.00-30.00 sec 18.4 GBytes 15.8 Gbits/sec [ 5] 30.00-40.00 sec 18.0 GBytes 15.5 Gbits/sec [ 5] 40.00-50.00 sec 17.5 GBytes 15.1 Gbits/sec [ 5] 50.00-60.00 sec 18.1 GBytes 15.5 Gbits/sec [ 5] 60.00-60.04 sec 82.2 MBytes 17.3 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth [ 5] 0.00-60.04 sec 0.00 Bytes 0.00 bits/sec sender [ 5] 0.00-60.04 sec 107 GBytes 15.3 Gbits/sec receiver
Cliente
client # iperf3 -i 10 -w 1M -t 60 -c 10.0.0.1 Connecting to host 10.0.0.1, port 5201 [ 4] local 10.0.0.2 port 22218 connected to 10.0.0.1 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-10.00 sec 17.6 GBytes 15.1 Gbits/sec 0 6.01 MBytes [ 4] 10.00-20.00 sec 17.6 GBytes 15.1 Gbits/sec 0 6.01 MBytes [ 4] 20.00-30.00 sec 18.4 GBytes 15.8 Gbits/sec 0 6.01 MBytes [ 4] 30.00-40.00 sec 18.0 GBytes 15.5 Gbits/sec 0 6.01 MBytes [ 4] 40.00-50.00 sec 17.5 GBytes 15.1 Gbits/sec 0 6.01 MBytes [ 4] 50.00-60.00 sec 18.1 GBytes 15.5 Gbits/sec 0 6.01 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-60.00 sec 107 GBytes 15.4 Gbits/sec 0 sender [ 4] 0.00-60.00 sec 107 GBytes 15.4 Gbits/sec receiver
Lettura dei risultati
Tra questi due sistemi, potremmo raggiungere una larghezza di banda di 15,4 gigabit al secondo o circa 1835 MiB (mebibyte) al secondo.
Qui,
Intervallo indica l'intervallo di test, il valore predefinito è 10 secondi e viene visualizzato come "0,0-10,0 sec"
Trasferisci indica la quantità di dati trasferiti tra i due nodi durante il processo di test.
Larghezza di banda è l'indicatore di performance per il quale utilizziamo iperf testing.
Test delle prestazioni della rete con il protocollo UDP
L'iperf predefinito utilizza il protocollo TCP per i test come mostrato sopra. Aggiungi l'opzione "-u ” per utilizzare il protocollo UDP per il test delle prestazioni.
1. Il primo passo è avviare il server.
# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 124 KByte (default) ------------------------------------------------------------ [ 3] local 1.1.1.1 port 5001 connected with 1.1.1.2 port 51598 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.004 ms 0/ 893 (0%)
2. Il comando lato client è come mostrato di seguito.
# iperf -u -c server ------------------------------------------------------------ Client connecting to 1.1.1.1, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 124 KByte (default) ------------------------------------------------------------ [ 3] local 1.1.1.2 port 51598 connected with 1.1.1.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec [ 3] Sent 893 datagrams [ 3] Server Report: [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.004 ms 0/ 893 (0%)
Modifica della larghezza di banda predefinita in modalità UDP
Nella modalità UDP, il client utilizza la larghezza di banda predefinita (1 Mbit/sec) per inviare i pacchetti al server, quindi possiamo vedere che la larghezza di banda del risultato del test UDP è 1,05 Mbit/sec. Per ottenere la migliore larghezza di banda della rete, possiamo aggiungere l'opzione "-b value ” per aumentare la larghezza di banda di invio:
# iperf -u -c server -b 1000M ------------------------------------------------------------ Client connecting to 1.1.1.1, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 124 KByte (default) ------------------------------------------------------------ [ 3] local 1.1.1.2 port 58097 connected with 1.1.1.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 948 Mbits/sec [ 3] Sent 806540 datagrams [ 3] Server Report: [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 1.08 GBytes 929 Mbits/sec 0.010 ms 16203/806540 (2%)
Misurazione della dimensione massima di trasferimento (MTU)
L'opzione -m indica a iperf di trovare anche la dimensione massima di trasferimento (MTU):
# iperf -mc 192.168.10.12 ------------------------------------------------------------ Client connecting to 192.168.10.12, TCP port 5001 TCP window size: 19.3 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.10.13 port 46558 connected with 192.168.10.12 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 113 MBytes 94.7 Mbits/sec [ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)