Estou tentando medir uma latência entre duas máquinas e gostaria de usar ping
para enviar ICMP
pacotes de uma máquina para outra. O intervalo entre os pacotes deve ser de 1 micro segundo (1us) e eu quero enviar 1 milhão de pacotes (10 ^ 6), então deve levar 1 segundo no total para enviar os pacotes.
Além disso, eu não me importo com a resposta da outra máquina (só vou capturar os pacotes na segunda máquina e analisá-los).
Agora eu tentei:
ping -I eth0 -c 1000000 -l 1000000 -f -i 0.000001 -b 255.255.255.255
Eu também experimentei desativando as opções -l
e -f
. Quando eu uso um valor grande para o -l
, recebo um aviso de que o rcvbuf não é suficiente para manter o pré-carregamento.
Estou usando o tcpdump para capturar os pacotes de saída da minha máquina e também para os pacotes de entrada para a outra máquina.
A questão é que o intervalo entre os pacotes é entre 5us e 15us na maioria dos casos e um pouco maior.
Eu tenho o mesmo problema quando estou enviando diretamente para um site como o google:
ping -I eth0 -c 1000000 -l 1000000 -f -i 0.000001 google.com
O que eu quero é:
- envia pacotes de uma máquina para outra
- sem que a primeira máquina aguarde qualquer resposta
- e o intervalo entre os pacotes é de 1us
Será preferível fazê-lo com o comando ping
e as opções que ele fornece (se forem suficientes). Eu tenho privilégios de administrador.
Atualizar
Meu objetivo é medir a latência que diferentes cabos introduzem nos pacotes. Então eu preciso de geração e captura precisas de pacotes. Em termos de hardware, tenho as ferramentas adequadas, mas não consigo o que espero. Eu acredito que o problema é com o software.
O problema para mim é que o ping parece não funcionar como esperado quando estou usando a opção -i
. Quando estou usando -f -l 1000000
as capturas são enviadas a cada 3us para 5us. Quando eu especificar -f
ou nenhum desses dois, os pacotes são gerados a cada 12 ms.
Geralmente, não consigo controlar a distância do pacote de um ping transmitido.