Domanda Come testare la velocità della rete tra due scatole?


Ho una rete gigabit installata in casa mia e alcuni box basati su Ubuntu. Per pura curiosità, vorrei controllare la velocità tra le due scatole. Non ho alcun problema con la velocità o qualcosa del genere, è proprio il geek in me che è curioso. Inoltre, forse i risultati mi consentiranno di sapere se c'è spazio per miglioramenti o se ho qualcosa configurato in modo errato.

Quindi, come testare correttamente la velocità della rete tra le finestre di Ubuntu?


141
2017-10-17 17:04


origine




risposte:


Io uso iperf. Si tratta di una disposizione del server client in cui viene eseguito in modalità server da un lato e connettersi da un altro computer sull'altro lato della rete.

Entrambe le macchine funzionano:

sudo apt-get install iperf

Inizieremo un iperf server su una delle macchine:

iperf -s

E poi sull'altro computer, dillo iperf connettersi come cliente:

iperf -c <address of other computer>

Sul computer client, vedrai qualcosa di simile a questo:

oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    893 Mbits/sec

Naturalmente, se si sta eseguendo un firewall sul server, è necessario consentire le connessioni sulla porta 5001 o modificare la porta con il -p bandiera.


Puoi fare praticamente la stessa cosa con plain old nc (netcat) se sei così inclinato. Sulla macchina server:

nc -vvlnp 12345 >/dev/null

E il cliente può inviare un gigabyte di zeri attraverso dd sopra il nc tunnel.

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

Come demod:

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

I tempi ci sono dati da dd ma dovrebbe essere abbastanza preciso in quanto può emettere solo più velocemente il tubo lo prenderà. Se non sei soddisfatto di ciò, potresti avvolgere l'intera cosa in a time chiamata.

Ricorda che il risultato è in megabyte quindi moltiplicalo per 8 per ottenere un megabit-per seconda velocità. La demo sopra è in esecuzione a 944mbps.


218
2017-10-17 17:15



Amico hai tutte le risposte alle mie domande! La mia rete apparentemente non è impostata come pure il tuo solo trasferimento a 714 MByte e banda larga di 598 Mbit / sec. Dunno potrebbe esaminarlo in futuro. Grazie. - Jacob Schoen
In tutta onestà l'altra casella è solo un interruttore (e 20 metri di cat5e) di distanza e non c'è congestione. 600 Mbps è ancora piuttosto veloce. - Oli♦
Questo è ottimo, ma non ho accesso root al server. - Geoff
Prova -P 10. Il mio risultato con una singola connessione è simile a jschoens, ma con 3+ connessioni parallele, spinge costantemente 920Mbps. - wujj123456
@CMCDragonkai Probabilmente non dovresti testare risorse che non sono tue. I pesanti test della larghezza di banda possono avere un impatto sulla stabilità a breve termine. - Oli♦


Come la raccomandazione di Oli per iperf. Voglio solo aggiungere diversi punti:

  1. Ci sono anche client Windows che abilitano il testing across piattaforme.
  2. -t <secondi> cambia la lunghezza del test. -P <N> cambia il numero di connessioni simultanee. Per esempio, iperf -c [IP target] -P 10 -t 30 testa 10 connessioni insieme per 30 secondi e fornisce risultati aggregati insieme a 10 velocità di connessione separate.
  3. Non hai bisogno di sudo. Puoi semplicemente scaricare il binario su http://iperf.fr/. Dovrebbe funzionare. Scaricalo con wget, renderlo eseguibile con chmode puoi eseguire direttamente il binario. Funziona perfettamente.

Ho trovato che, usando le impostazioni di default, la velocità di connessione singola fluttua parecchio. Tuttavia, con 3+ connessioni parallele, i risultati sono più coerenti con il mio switch di gigabyte. (coerentemente @ 910-920 Mbps)


19
2018-05-14 07:33





utilizzando questo script puoi facilmente testare la velocità di connessione tra la tua macchina e qualche host remoto. Esempio di utilizzo:

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host è l'host di destinazione (è necessario avere accesso ssh a questo host)
  • 80000 è la dimensione approssimativa del file di test (in kbs), che sarà ricevuto all'host remoto. Non è un argomento obbligatorio.

6
2017-08-06 19:40



Questo sembra testare la velocità dell'applicazione SCP, che sarà inferiore a un test a un livello inferiore. Ad esempio, nc usa L4. Naturalmente, questo è grandioso se ti preoccupi di più della velocità di SCP. - sudo
Ha problemi: questo script scrive e legge un file su disco - è più lento di RAM, quindi può essere un rallentamento artificiale. Inoltre, invia solo zeri, nel caso in cui siano compressi si tratta di una grande accelerazione artificiale. Se vuoi dati pseudocasuali, non usare /dev/random (può bloccare) o urandom (i commenti dei link hanno suggerito che) possono essere anche molto lenti, invece di usare una dm-crypt (vedi le FAQ di cryptsetup 2.19 Come posso cancellare un dispositivo con casualità crittografica?) forse con un file in ram. - Xen2050


Se si desidera testare la propria LAN Ethernet a un livello inferiore, è possibile utilizzare Etherate, che è uno strumento di test Ethernet Linux CLI gratuito:

https://github.com/jwbensley/Etherate

Gettandolo nel mix come strumenti come iPerf (che sono molto buoni!) Funzionano su IP e TCP o UDP. Test Etherate direttamente su Ethernet / OSI layer 2.


2
2018-03-26 20:37





Esistono anche altri strumenti per la riga di comando per il benchmarking della larghezza di banda tra due host:

nuttcp

server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address

nepim

 server$ nepim
 client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address

Goben

 server$ goben
 client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address

2
2018-02-12 20:15



Come sono diversi l'uno dall'altro e da iperf? Funzionano allo stesso modo, cosa fanno? nuttcp è in Debian e apparentemente "nuttcp è basato su nttcp, che a sua volta era un miglioramento di qualcuno di Silicon Graphics (SGI) sul ttcp originale, che fu scritto da Mike Muuss a BRL prima del dicembre 1984, per confrontare le prestazioni degli stack TCP di UC Berkeley e BBN per aiutare DARPA a decidere quale versione inserire nella prima versione Unix di BSD. " - Xen2050


come ho sottolineato nel mio commento alla migliore risposta, quella soluzione non è abbastanza buona perché il client / server non lo è ottimizzato a ... spremere ogni bit di velocità

la mia soluzione:

crea un ramdisk su entrambi i lati (quindi non sei limitato dalla velocità di archiviazione e ti suggerisco di crearli con ramfs non tmpfs, quindi non andranno in swap ... fai attenzione a non lasciare almeno 512 M di memoria libera per il sistema, questo è OBBLIGATORIO se hai giga ethernet, a quella velocità anche gli SSD possono rallentare le cose) installa apache sul server, quindi crea un collegamento a ramdisk, crea alcuni file di grandi dimensioni su ramdisk (100M-1G, puoi crearli con dd da / dev / random o copiare se ne hai a portata di mano) poi vai sul lato client e scaricalo (anche su quel lato del ramdisk) con un programma di download avanzato, che ho usato lftp

vabbè, la differenza era maggiore, da 75mbps segnalati da iperf e 9,5M / s netcat

a 11.18M / s con la mia soluzione:

1591129421 bytes transferred in 136 seconds (11.18M/s)

0
2017-07-27 07:24





È facile collegare il computer alla prima casella, collegare l'altra casella alla prima casella. Poi dal tuo computer fai un ping della prima casella salva il risultato, fai un ping all'altro e fai la sottostringa.


-3
2017-10-17 17:16



Questo mostra la latenza di rete che è solo una parte della velocità. Ad esempio la connessione 3G del mio telefono ha un'enorme latenza (100-300 ms) ma può ancora gestire un throughput di 5 Mbps. - Oli♦
Non è colpa mia se ha chiesto velocità ma voleva un rendimento. - Nyamiou The Galeanthrope
La latenza è tempo di reazione, non velocità. - wullxz