Яндекс опубликовал skbtrace, утилиту для трассировки сетевых операций в Linux

Компания Яндекс опубликовала исходные тексты утилиты skbtrace, предоставляющей средства для отслеживания работы сетевого стека и трассировки выполнения сетевых операций в Linux. Утилита реализована в форме надстройки над системой динамической отладки BPFtrace. Код написан на языке Go и распространяется под лицензией MIT. Поддерживается работа с ядрами Linux 4.14+ и с инструментарием BPFTrace 0.9.2+.

В процессе работы утилита skbtrace генерирует скрипты на высокоуровневом языке BPFtrace, осуществляющие динамическую трассировку и анализ времени выполнения операций, связанных с сетевым стеком Linux и сетевыми сокетами. Скрипты затем транслируются в форме eBPF-приложений и выполняются на уровне ядра.

Из специфичных возможностей skbtrace отмечается измерение времени пересылки пакетов между входящим и исходящим сетевым интерфейсом, времени жизни TCP-соединения от получения SYN до прихода FIN/RST, задержек между разными событиями обработки пакетов, времени на согласование TCP-соединения. Skbtrace также может применяться выявления повторной передачи TCP-пакетов, даже если они инкапсулированы в другие пакеты, и в качестве простого аналога утилиты tcpdump, способного анализировать выполнение некоторых процедур ядра, таких как вызов kfree_skb для освобождения памяти при отбрасывании пакетов.

Release. Ссылка here.