Компанія Яндекс опублікувала вихідні тексти утиліти 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 для звільнення пам'яті при відкиданні пакетів.
Джерело: opennet.ru