Un elemento che spesso non è certo, o che bisogna misurare in seguito a problemi dichiarati o modifiche infrastrutturali è la rete. Ma come fare a misurare esattamente la velocità tra due server ?
Qualcuno usa ftp, scp o altri protocolli di trasferimento file, questi strumenti possono dare qualche indicazione, ma probabilmente misurerete il limite della velocità dei dischi o della CPU.
In questo articolo vi mostrerò 3 metodi per misurare da linea di comando la vostra banda di rete senza utilizzare i dischi.
Iperf
Iperf è stato sviluppato da NLANR/DAST come alternativa moderna per la misura delle prestazioni di banda massima sia TCP che UDP. Iperf permette la messa a punto di diversi parametri e caratteristiche UDP. Iperf rapporti di larghezza di banda, jitter ritardo, perdita datagramma.
La qualità di un link può essere testata come segue:
– Latenza (tempo di risposta o RTT): può essere misurata con il comando Ping.
– Jitter (variazione di latenza): può essere misurato con un test iperf UDP.
– perdita Datagram: può essere misurato con un test iperf UDP.
La larghezza di banda viene misurata attraverso test TCP.
Per essere chiari, la differenza tra TCP (Transmission Control Protocol) e UDP (User Datagram Protocol) è che il protocollo TCP utilizza processi per verificare che i pacchetti siano correttamente inviati al ricevitore mentre con i pacchetti UDP vengono inviati senza alcun controllo, ma con il vantaggio di essere più veloci del TCP.
Iperf utilizza le diverse capacità di TCP e UDP per fornire statistiche sui collegamenti di rete.
Con iperf avete una macchina che sarà il server in cui iperf si porrà in ascolto e l’altra che sarà il client che invia le informazioni.
Esempio:
Uso Base
Sul Server:
#iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 8.00 KByte (default) ------------------------------------------------------------ [852] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 54355 [ ID] Interval Transfer Bandwidth [852] 0.0-10.1 sec 1.15 MBytes 956 Kbits/sec ------------------------------------------------------------ Client connecting to 10.6.2.5, TCP port 5001 TCP window size: 8.00 KByte (default) ------------------------------------------------------------ [824] local 10.1.1.1 port 1646 connected with 10.6.2.5 port 5001 [ ID] Interval Transfer Bandwidth [824] 0.0-10.0 sec 73.3 MBytes 61.4 Mbits/sec |
Sul Client
#iperf -c 10.1.1.1 -d ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ ------------------------------------------------------------ Client connecting to 10.1.1.1, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ [ 5] local 10.6.2.5 port 60270 connected with 10.1.1.1 port 5001 [ 4] local 10.6.2.5 port 5001 connected with 10.1.1.1 port 2643 [ 4] 0.0-10.0 sec 76.3 MBytes 63.9 Mbits/sec [ 5] 0.0-10.1 sec 1.55 MBytes 1.29 Mbits/sec |
Ovvero lanciando iperf (con gli opportuni flag) sulle due nostre macchine possiamo semplicemente misurare la banda tra di loro.
Iperf è disponibile anche per Windows.
Guida completa: http://openmaniak.com/iperf.php
Netcat
Per eliminare i dischi dall’avere una parte nellla misurazione, useremo netcat per spostare l’output del comando yes. Netcat è descritto come un “uno strumento per il debug della rete ricco di funzionalità”. Può essere ottenuto da Source Forge, o può essere già disponibile nella vostra distribuzione.
Anche in questo caso useremo una delle due macchine come server che riceve i dati e l’altra come client che invia le informazioni.
Uso Base:
Sulla macchina server
nc -v -v -l -n 2222 >/dev/null listening on [any] 2222 ... |
Sulla macchina client
time yes|nc -v -v -n 10.1.1.1 2222 >/dev/null |
Sulla macchina client dopo 10 secondi (più o meno) fermate il processo con ctrl-c, avrete un output del tipo:
sent 87478272, rcvd 0 real 0m9.993s user 0m2.075s sys 0m0.939s |
Sulla macchina server, prendete nota dei dati ricevuti (in bytes)
sent 0, rcvd 87478392 |
Ora si moltiplicano i byte rcvd per 8 per ottenere i bit totali, poi dividere per il tempo: Il risultato in questo esempio è 70 Mb/s
Riferimento: http://deice.daug.net/netcat_speed.html
Bandwidth Test Controller (BWCTL)
BWCTL è una applicazione client a linea di comando e un demone di scheduling e gestione delle policy. Questi test possono misurare la massima larghezza di banda TCP, con varie opzioni di ottimizzazione disponibili, o, facendo un test UDP, il ritardo, jitter e la perdita dei datagrammi di una rete.
L’applicazione client bwctl opera contattando un processo bwctld sul sistema di test formato da due endpoint. BWCTL funziona come applicazione a 3 parti. Il client può organizzare un test tra due server su due sistemi diversi. Se il sistema locale è destinato ad essere uno dei punti finali del test, bwctl in grado di rilevare se un bwctld locale è in esecuzione e consente di gestire le funzionalità richieste del server, se necessario.
Il client bwctl viene utilizzato per richiedere il tipo di test di throughput desiderato. Inoltre, si pianifica quando il test dovrebbe essere eseguito. bwctld risponde o con una prenotazione provvisoria o con un messaggio di prova negata. Una volta bwctl è in grado di ottenere una prenotazione di corrispondenza da entrambi i processi bwctld (uno per ogni host che partecipa al test), si conferma la prenotazione. Quindi, il processo bwctld eseguie il test e restituisce i risultati. I risultati vengono restituiti al client da entrambi i lati della prova. Inoltre, il processo bwctld permette di condividere i risultati dai loro rispettivi lati del test con l’altro processo.
per maggiori informazioni sull’utilizzo guardate le manpage del progetto: http://www.internet2.edu/performance/bwctl/manpages.html
Popular Posts:
- None Found
c’è un problema con
nc -v -v -l -n 2222 > /dev/null
forse è più corretto
nc -v -v -l -n -p 2222 > /dev/null
ciao
Ciao ajkain
Su Ubuntu 10.10 io ho:
man nc
….
-p source_port
Specifies the source port nc should use, subject to privilege restrictions and
availability. It is an error to use this option in conjunction with the -l option.
….
Quindi il mio comando è volutamente senza -p, forse nella tua versione ci vuole.
Tu che versione di nc e distribuzione usi ?
Ciao
Don’t forget ‘ntool’.
Never used it.. do you have a link for this tool ?
Thanks !
To use ftp for network speed test but avoiding using disk :-
ftp remotehost
bin
put “|dd if=/dev/zero bs=32k count=10000” /dev/null
This will report the transfer time and avoids using disk at both ends
LOL.
A tiny tool that I’ve found very handy for diagnosing network problems is ttcp:
http://en.wikipedia.org/wiki/Ttcp
It’s trivial to build on just about any architecture with a C compiler,
speed-testing with iperf is a nice method.. As you can modify and alter the default operating system window size to test the speed..
http://www.slashroot.in/iperf-how-test-network-speedperformancebandwidth
“Now multiply the bytes rcvd by 8 to get total bits, then divide by the time: Result in this example is 70Mb/s”
According to http://myrepono.com/faq/4
Bandwidth should be calculated from bytes instead of bits, correct?
HI,
How i can monitor 1000’s of interfaces using iperf, is there any specific way to do that other than running client & server 1000 times for each interface.
Thanks,
Anki