Технология eBPF становится всё более популярной, но создание собственных инструментов может быть затруднительным из-за нехватки информации. Я, Дмитрий Самохвалов из К2Тех, делюсь опытом работы с eBPF и описываю, как написать XDP-фильтр на Go. В работе с eBPF мы сталкиваемся с рядом проблем в среде legacy enterprise, где отсутствует автоматизация и подходящие инструменты.
eBPF (расширенный фильтр пакетов) позволяет взаимодействовать с сетевым стеком и высокоэффективно обрабатывать пакеты. Мы используем библиотеки, такие как libbpf.c и Cilium, и создаём фильтры, которые анализируют сетевые пакеты и принимают решения о их дальнейшем маршрутизации.
Программы для ядра пишутся на ограниченном C или Rust и проходят через верификацию перед загрузкой в ядро. Юнит-тестирование для kernel-программ затруднено, но возможно тестирование через встроенные функции. Важно анализировать окружение, минимизировать состояние и использовать больше логики в user space для упрощения разработки.
Следите за обновлениями в GitHub и изучайте существующие проекты, чтобы избежать распространённых ошибок. Присоединяйтесь к GolangConf 2026, чтобы узнать больше о Go и eBPF!
