Ping rápido sem exigir a resposta [fechado]

5

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.

    
por Grey 02.09.2017 / 21:04

2 respostas

11

ping -f não aguarda que a parte remota responda.

No entanto, um atraso de 1us entre pacotes consecutivos pode ser simplesmente demais para pedir a sua combinação de hardware (CPU) e software (pilha IP).

Para maximizar o desempenho (e minimizar o atraso de envio) tente desabilitar qualquer função de gerenciamento de energia ou, no mínimo, use o regulador de CPU performance .

    
por 02.09.2017 / 21:13
4

Provavelmente você faz uma confusão entre latência e taxa de transferência. Basta enviar 1 pacote e medir seu atraso para determinar a latência. Tudo o que você precisa é de um mecanismo para medir o tempo com alta precisão. Uma maneira é o PTP (Precision Time Protocol) - ou seja, o remetente anexa um registro de data e hora ao pacote enviado. A taxa de transferência do WRT, o tamanho dos pacotes é crucial - por padrão, os pings teriam 64 bytes de comprimento.

    
por 03.09.2017 / 08:09