Gerar tráfego com uma taxa de transferência especificada

5

Para testar minha rede, quero enviar x MB / s entre dois hosts. Eu sei que ping pode ser usado para enviar uma boa quantidade de dados, mas eu preciso de uma solução onde eu possa definir a largura de banda (não precisa ser muito precisa).

$ sendTrafic --throughput 10M 10.0.0.1

Alguma ideia de como posso fazer isso? Pensei em um script executando scappy x vezes por segundo, mas deveria haver algo melhor.

EDIT: usei a seguinte solução:

# On receiving node:
iperf -s -u

# On sending node:
iperf -c <ip> -u -b 10m -t 30

Que configura o primeiro host como um servidor UDP, e o segundo como um cliente UDP que envia 10Mb / s por 30 segundos.

Agradeça a todos pela sua ajuda.

    
por Nakrule 18.06.2018 / 13:28

1 resposta

8

Se você não quiser instalar iperf (que não é a ferramenta mais confiável que usei no passado IMHO), você pode usar pv e netcat
Você deve primeiro instalar pv e netcat (está disponível na maioria das distros).
No site de recebimento, você precisará de um soquete de escuta em uma porta acessível:

#if you want the output you can remove the redirection or redirect it to a different file.
#if you want to listen to a TCP port below 1024 you will need to use root
nc -l 4444 > /dev/null

Na máquina de envio, você usará este comando:

dd if=/dev/urandom bs=1000 count=1000 | pv -L 10M | nc <ip> 4444

dd if=/dev/urandom bs=1000 count=1000 enviará blocos de 1000 caracteres aleatórios (1000 Bytes) 1000 tempo: 1000B * 1000 = 1MB. Você pode ajustar a contagem para aumentar a quantidade de dados enviados.
pv -L 10M : limitará a taxa de gravação a 10 mebibytes / s (* 1024).
netcat <ip> 4444 enviará os dados para o IP na porta TCP 4444.

Você se adapta para enviar mais dados ou até arquivos reais usando:

cat /some/files| pv -L 1M | nc <ip> 4444

e do outro lado:

 nc -l 4444 > /some/destinationfiles
    
por 18.06.2018 / 14:21

Tags