go-conntracer-bpf
go-conntracer-bpf — это библиотека для Go для отслеживания событий сетевых подключений (TCP/UDP) (подключение, принятие, отправка, получение) в BPF kprobe, вдохновленная weaveworks/tcptracer-bpf. go-conntracer-bpf реализован поверх libbpf, которая является типичной библиотекой C для ядра Linux, включенного в BPF.
Функции
- Трассировка с низкими издержками за счет агрегирования событий подключения в ядре.
- BPF CO-RE (компиляция один раз – запуск повсюду) включена
Предварительные условия
Фаза компиляции
- исходный код libbpf
- Кланг/LLVM >= 9
Фаза выполнения
- Версия ядра Linux >= 5.6 (из-за пакетной обработки карт bpf)
- Ядро Linux будет собрано с информацией о типе BTF. См. https://github.com/libbpf/libbpf#bpf-co-re-compile-once--run-everywhere.
Общее для обеих фаз
Возможности ядра Linux, включенные в go-conntracer-bpf
go-conntracer-bpf использует некоторые новейшие функции ядра Linux.
- Формат типа BPF (BTF) в ядре версии 4.18.
- Пакетный API для сопоставления BPF (BPF_MAP_UPDATE_BATCH, BPF_MAP_LOOKUP_AND_DELETE_BATCH) в ядре версии 5.6.
- Кольцевой буфер в ядре версии 5.8 (только версия без агрегации в ядре).
Использование
Коннтоп
conntop — это инструмент CLI для отображения событий подключения.
Создать коннтоп
Проекты с использованием go-conntracer-bpf