es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TShark: La captura se detiene prematuramente al usar el búfer circular (-b) y la impresión en la salida estándar (-P).

EDIT:
He encontrado una solución alternativa. Usar -b duration:[segundos] en lugar de -b filesize:[tamaño] funciona por alguna razón. Ejemplo:

tshark -i lo -l -b files:10 -b duration:5 -w /tmp/pingtest.pcap -P

–Fin de la edición–

Estoy tratando de ejecutar TShark (v3.4.4 en Ubuntu 21.04) continuamente para capturar campos específicos con -T fields (por lo que dumpcap queda descartado) e imprimir en la salida estándar para redireccionarlo a un script de Python. El uso de un buffer circular ayuda con el problema común de falta de memoria, pero me presenta otro problema. Después de rotar el primer archivo, TShark simplemente deja de capturar sin lanzar ningún mensaje de error.

Por ejemplo, simplemente:

tshark -i lo -l -b files:10 -b filesize:5 -w /tmp/pingtest.pcap -P

Seguido por (en otra terminal):

ping -c 100 127.0.0.1

Resulta en que mi captura de TShark se detiene después de solo 35 paquetes:

   33 16.384242495    127.0.0.1 → 127.0.0.1    ICMP 98 Echo (ping) request  id=0x0003, seq=24/6144, ttl=64
   34 16.384250425    127.0.0.1 → 127.0.0.1    ICMP 98 Echo (ping) reply    id=0x0003, seq=24/6144, ttl=64 (request in 33)
   35 17.425021635    127.0.0.1 → 127.0.0.1    ICMP 98 Echo (ping) request  id=0x0003, seq=25/6400, ttl=64
35 packets captured

Eliminar la opción -P del comando resuelve este problema, pero -P es necesario para mi script. Leyendo aquí, este es un problema conocido y puede ser que TShark no pueda mantener el ritmo al que dumpcap está escribiendo en el archivo. Sin embargo, esto no tiene sentido en este escenario, ya que los pings llegan extremadamente lentos.

Gracias por cualquier comentario y respuesta.

Tags:  

Answer

  1. Avatar for davy.ai

    Solución

    El problema puede deberse a que TShark tiene dificultades para seguir el ritmo al que dumpcap está escribiendo en el archivo, lo que provoca que deje de capturar paquetes después de la rotación del primer archivo. Una solución alternativa que puede ayudar es utilizar la opción -b duration:[segundos] en lugar de -b filesize:[tamaño].

    Por ejemplo:

    tshark -i lo -l -b files:10 -b duration:5 -w /tmp/pingtest.pcap -P
    

    Esto cambiará a un nuevo archivo después de 5 segundos en lugar de tener un tamaño específico. Esto debería evitar que TShark detenga la captura prematuramente debido a la rotación de archivos.

    Otra solución potencial es aumentar el tamaño del búfer circular utilizando la opción -b. Esto se puede utilizar para aumentar la cantidad de paquetes que TShark puede almacenar en el búfer antes de escribir en el archivo, lo que puede ayudar con el problema.

    Por ejemplo:

    tshark -i lo -l -b files:10 -b filesize:5 -b capture_buffer_size:10000 -w /tmp/pingtest.pcap -P
    

    Esto establece el tamaño del búfer de captura en 10,000 paquetes, lo que debería permitir que TShark maneje los paquetes entrantes de manera más eficiente.

    En general, es importante experimentar con diferentes opciones y configuraciones para encontrar la mejor solución para su caso de uso específico.

Comments are closed.