Por que o tcpdump demora tanto para ler arquivos pcap?

1

Estou usando uma ferramenta de terceiros que captura o tráfego de rede como um arquivo pcap durante um teste de rede. Quando tento reproduzir esses arquivos, uso a ferramenta tcpdump com as opções -Aq -r e canalizo a saída para o grep. Algumas das capturas têm tamanho de 600 KB, o que não parece grande, mas ainda demoram um tempo relativamente longo para serem lidas.

tcpdump está lendo o arquivo pcap em tempo real e, em caso afirmativo, como posso acelerá-lo?

Isso é o que minhas opções tcpdump escolhidas fazem:

  • -A imprime pacotes (menos cabeçalho) em ASCII, por isso é grep e humano-friendly.
  • -q imprime menos informações, para uma saída mais rápida.
  • -r <FILE> lê no arquivo pcap fornecido.

Este é um exemplo de um comando real que eu executei, onde levou quarenta e cinco segundos para imprimir dezesseis linhas, quando eu esperaria que o tempo de execução fosse quase instantâneo, ou alguns segundos no máximo:

$ tcpdump -Aq -r z2121ecbc0186d9fa07b.pcap | grep POST

Dado que a duração da captura é inferior a um minuto, começo a pensar que tcpdump -r faz com que a captura seja reproduzida em tempo real, mas não consigo encontrar nada na página man ou online para confirme isso, e certamente nada que me diga se existe uma maneira de desativar a reprodução em tempo real.

    
por Steve HHH 29.03.2014 / 07:07

1 resposta

5

Use -n para suprimir pesquisas de DNS.

Ler o arquivo, analisá-lo e transformá-lo em saída de texto é muito rápido e só pode levar tempo se o arquivo for muito grande. Em todos os outros casos, é a resolução de nomes que atrasa as coisas, normalmente esperando que um servidor DNS responda e algumas vezes esperando pelo tempo limite, se não o fizer.

Não há reprodução em tempo real e não há motivo para isso. Quando usado com um arquivo, o tcpdump apenas transforma o arquivo em uma saída legível.

    
por 29.03.2014 / 10:05