tcpdump latência de captura de dados do udp

3

Estou usando o tcpdump para capturar pacotes UDP e analisar a latência de rede entre um transmissor UDP e meu servidor. Para calcular a latência, comparo os registros de data e hora do host de origem relatados nos dados do aplicativo UDP com os carimbos de data / hora "kernel" locais do tcpdump.

Os dois relógios do servidor são sincronizados com precisão de milissegundos e uma latência de até 2 ou 3 milissegundos é aceitável. Minha máquina é um dual 6 núcleos Intel X5670 @ 2.93Ghz com 10Gb Mellanox NICs e coalescentes desativados.

O problema é que estou observando um atraso superior a 10 milissegundos entre os dois hosts quando a frequência de dados é captada, embora sempre bem abaixo da largura de banda de 10Gb. Eu tenho 5 trabalhos tcpdump rodando ao mesmo tempo que:

tcpdump -c 0 chrt -f 80 -q -i eth1 net 232.xxx.xxx.xxx and udp port 22456 -s 0 -w myfile

Tive melhor sucesso no passado escrevendo meu próprio programa de dump com 2 threads: um thread de leitor de rede de alta prioridade e um thread assíncrono de gravador de disco de baixa prioridade, mas eu realmente gostaria de usar uma solução linux padrão desta vez. / p>

O que posso fazer para minimizar o atraso de leitura UDP do tcpdump?

    
por Robert Kubrick 28.01.2012 / 18:20

1 resposta

4

Eu sugiro que você tente renunciar o processo tcpdump, e despeje o rastreamento para um arquivo em um sistema de arquivos tmpfs Além disso, você pode adicionar a opção -p ao tcpdump para não colocar a interface no modo promíscuo, o que pode reduzir o tráfego parasitário.

  mkdir /tmpfs
  mount -t tmpfs -o size=128m none /tmpfs
  nice -n -10 tcpdump ... -w /tmpfs/yourfile
    
por 28.01.2012 / 20:34