Yandex ha publicado el código fuente de la utilidad skbtrace, que proporciona herramientas para monitorear el funcionamiento de la pila de red y rastrear la ejecución de las operaciones de red en Linux. La utilidad se implementa como un complemento del sistema de depuración dinámica BPFtrace. El código está escrito en Go y distribuido bajo la licencia MIT. Admite el trabajo con kernels de Linux 4.14+ y con el kit de herramientas BPFTrace 0.9.2+.
Mientras se ejecuta, la utilidad skbtrace genera scripts en el lenguaje BPFtrace de alto nivel que rastrea y analiza dinámicamente el tiempo de ejecución de las operaciones relacionadas con la pila de red de Linux y los sockets de red. Luego, los scripts se traducen al formulario de aplicación eBPF y se ejecutan en el nivel del kernel.
Entre las capacidades específicas de skbtrace, se encuentran la medición del tiempo de envío de paquetes entre las interfaces de red entrantes y salientes, la vida útil de una conexión TCP desde la recepción de SYN hasta la llegada de FIN/RST, los retrasos entre diferentes eventos de procesamiento de paquetes y el tiempo. para negociar una conexión TCP. Skbtrace también se puede utilizar para detectar la retransmisión de paquetes TCP, incluso si están encapsulados en otros paquetes, y actuar como un simple análogo de la utilidad tcpdump, capaz de analizar la ejecución de ciertas rutinas del kernel, como llamar a kfree_skb para liberar memoria. al desechar paquetes.
Fuente: opennet.ru