Como você testa a velocidade da rede entre duas caixas?

134

Eu tenho uma rede gigabit instalada em minha casa e algumas caixas baseadas no Ubuntu. Por curiosidade completa, gostaria de verificar a velocidade entre as duas caixas. Eu não estou tendo nenhum problema com velocidade ou qualquer coisa, é realmente apenas o geek em mim que é curioso. Além disso, talvez os resultados permitam-me saber se há espaço para melhorias, ou se tenho algo configurado incorretamente.

Então, como você testa corretamente a velocidade da rede entre as caixas do Ubuntu?

    
por Jacob Schoen 17.10.2010 / 19:04

7 respostas

205

Eu uso iperf . É um arranjo de servidor cliente em que você o executa no modo de servidor em uma extremidade e se conecta a ele de outro computador no outro lado da rede.

Uma das duas máquinas é executada:

sudo apt-get install iperf

Iniciaremos um servidor iperf em uma das máquinas:

iperf -s

E, no outro computador, informe iperf para se conectar como cliente:

iperf -c <address of other computer>

Na máquina do cliente, você verá algo assim:

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

É claro que, se você estiver executando um firewall na máquina do servidor, precisará permitir conexões na porta 5001 ou alterar a porta com o sinalizador -p .

Você pode fazer praticamente a mesma coisa com o antigo nc (netcat) se você estiver inclinado. Na máquina do servidor:

nc -vvlnp 12345 >/dev/null

E o cliente pode canalizar um gigabyte de zeros em dd sobre o túnel nc .

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

Como 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

O tempo é dado por dd , mas deve ser preciso o suficiente, uma vez que só pode sair tão rápido quanto o tubo levar. Se você não está satisfeito com isso, você pode colocar tudo em uma chamada time .

Lembre-se que o resultado está em mega bytes então multiplique por 8 para obter uma velocidade mega bits -per-segundo. A demonstração acima está em 944mbps.

    
por Oli 17.10.2010 / 19:15
18

O mesmo que a recomendação de Oli para iperf. Só quero adicionar vários pontos:

  1. Há também clientes Windows que permitem testes em plataformas.
  2. -t <seconds> altera o comprimento do teste. -P <n> altera o número de conexões simultâneas. Por exemplo, iperf -c [target IP] -P 10 -t 30 testa 10 conexões juntas por 30 segundos e fornece resultados agregados juntamente com 10 velocidades de conexão separadas.
  3. Você não precisa de sudo. Você pode simplesmente baixar o binário no link . Deve funcionar. Faça o download com wget , torne-o executável com chmod e você poderá executar o binário diretamente. Isso funciona perfeitamente.

Descobri que, usando as configurações padrão, a velocidade de conexão única varia um pouco. No entanto, com 3 ou mais conexões paralelas, os resultados são mais consistentes no meu comutador gigabyte. (consistentemente @ 910-920Mbps)

    
por wujj123456 14.05.2014 / 09:33
6

Usando este script você pode facilmente testar a velocidade de conexão entre sua máquina e algum host remoto. Exemplo de uso:

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host é seu host de destino (você deve ter acesso ssh para este host)
  • 80000 é o tamanho aproximado do arquivo de teste (em kbs), que será recebido para o host remoto. Não é um argumento obrigatório.
por VeLKerr 06.08.2015 / 21:40
3

Bom roteiro. Eu gosto que meus resultados estejam em mbps, então eu editei a última parte do script para fazer uma divisão simples.

# print result
echo ""
#echo "Upload speed:   $up_speed kB/s"
#echo "Download speed: $down_speed kB/s"

up_mbps=$(echo "scale=0; $up_speed/125" |bc)
down_mbps=$(echo "scale=0; $down_speed/125" |bc)

echo ""
echo "Upload speed:    $up_mbps mbps"
echo "Download speed:  $down_mbps mbps"

Então, em vez de o resultado ser assim:

Upload speed:   9124.93 kB/s
Download speed: 13631.51 kB/s

Agora é exibido assim:

Upload speed:    114 mbps
Download speed:  88 mbps
    
por Tom 10.09.2015 / 23:19
2

Se você quiser testar sua LAN Ethernet em um nível mais baixo, você pode usar o Etherate, que é uma ferramenta gratuita de testes Linux CLI Ethernet:

link

Jogá-lo na mistura como ferramentas como o iPerf (que são muito boas!) operam sobre IP e TCP ou UDP. O Etherate testa diretamente a camada 2 / Ethernet do OSI.

    
por jwbensley 26.03.2016 / 21:37
2

Existem também outras ferramentas de linha de comando para comparação comparativa de largura de banda entre dois hosts:

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
    
por Everton 12.02.2018 / 21:15
-3

É fácil conectar seu computador na primeira caixa, conectar a outra caixa à primeira caixa. Então, do seu computador, ping na primeira caixa, salve o resultado, faça ping na outra caixa e faça a subtração.

    
por Nyamiou The Galeanthrope 17.10.2010 / 19:16