CNI на базе eBPF и сетевой, защитный и наблюдательный слой для кластеров Kubernetes с политиками L3–L7, учитывающими идентификаторы, и заменой kube-proxy.
eunomia-bpf/bpf-developer-tutorial
Пошаговое руководство по eBPF с короткими запускаемыми примерами на C, Go и Rust, в основном на базе libbpf и CO-RE.
- Звёзды
- 4,333
- Форки
- 607
- Открытые issues
- 25
- Последний коммит
- 3 дня назад
Что это?
Это практическое руководство по разработке на eBPF: от базовых понятий до продвинутых тем. Каждый каталог — отдельный пример инструмента на eBPF, многие из них занимают всего около двадцати строк кода. Так разработчики могут увидеть, как написана и загружена конкретная программа.
В примерах используются CO-RE (Compile Once, Run Everywhere) и преимущественно libbpf. В некоторых уроках применяются eunomia-bpf, библиотека eBPF от Cilium, libbpf-rs и другие фреймворки на C, Go и Rust. Темы охватывают наблюдаемость (kprobes, uprobes, tracepoints, задержки планирования, утечки памяти), работу с сетью (XDP, tc, TCX, sockops, балансировку нагрузки), безопасность (хуки LSM, изменение аргументов системных вызовов), а также GPU и планировщик.
В репозитории также есть стартовые шаблоны проектов на C/libbpf, Go, Rust и eunomia-bpf, в том числе Makefiles, Dockerfiles и настройки GitHub Actions.
Ключевые возможности
- 01Уроки охватывают путь от простых программ с kprobe и tracepoint до XDP, LSM и трассировки GPU.
- 02Примеры написаны на C с libbpf и CO-RE; для некоторых уроков есть варианты на Go и Rust.
- 03Каждый урок находится в отдельном каталоге и содержит собственные инструкции по сборке.
- 04В стартовых шаблонах есть Makefile, Dockerfile и настройки CI для новых проектов на eBPF.
- 05В репозитории есть таблица совместимости, помогающая проверить поддержку со стороны ядра и набора инструментов.
Сценарии использования
- Последовательно изучать разработку на eBPF, начиная с первой программы hello-world.
- Найти готовый пример конкретного хука, например uprobe, XDP или LSM, и адаптировать его.
- Создать новый проект на eBPF с libbpf, Go или Rust на основе шаблона.
- Разобраться, как с помощью eBPF трассировать программы пользовательского пространства, например Nginx и MySQL, или горутины Go.
Быстрый старт
- 1
Клонируйте репозиторий
git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git - 2
Перейдите в каталог проекта и синхронизируйте подмодули
cd bpf-developer-tutorial && git submodule update --init --recursive - 3
Следуйте инструкциям по сборке в каталоге урока, например src/11-bootstrap или src/1-helloworld
Что важно знать
- Каждый урок — отдельный пример со своими шагами сборки, поэтому единой команды для сборки всего проекта нет.
- Для запуска программ eBPF требуется ядро Linux с поддержкой BPF и, как правило, права root или привилегированный доступ.
В подборках
Темы
Частые вопросы
- Что такое bpf-developer-tutorial?
- Пошаговое руководство по eBPF с короткими запускаемыми примерами на C, Go и Rust, в основном на базе libbpf и CO-RE. Это практическое руководство по разработке на eBPF: от базовых понятий до продвинутых тем. Каждый каталог — отдельный пример инструмента на eBPF, многие из них занимают всего около двадцати строк кода. Так разработчики могут увидеть, как написана и загружена конкретная программа.
- bpf-developer-tutorial можно использовать бесплатно? Какая у него лицензия?
- bpf-developer-tutorial распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- bpf-developer-tutorial всё ещё поддерживается?
- Активно поддерживается. Последний коммит в bpf-developer-tutorial — 4 нояб. 2026 г..
- Для чего можно использовать bpf-developer-tutorial?
- Последовательно изучать разработку на eBPF, начиная с первой программы hello-world. Найти готовый пример конкретного хука, например uprobe, XDP или LSM, и адаптировать его. Создать новый проект на eBPF с libbpf, Go или Rust на основе шаблона. Разобраться, как с помощью eBPF трассировать программы пользовательского пространства, например Nginx и MySQL, или горутины Go.
- Как установить bpf-developer-tutorial?
- Клонируйте репозиторий: git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git Перейдите в каталог проекта и синхронизируйте подмодули: cd bpf-developer-tutorial && git submodule update --init --recursive Следуйте инструкциям по сборке в каталоге урока, например src/11-bootstrap или src/1-helloworld
- Где скачать bpf-developer-tutorial?
- Исходный код и инструкции по установке — на GitHub: https://github.com/eunomia-bpf/bpf-developer-tutorial
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Библиотека и платформа на C, обёртывающая libbpf для компиляции и загрузки eBPF-программ с поддержкой удалённой компиляции и обратного переноса функций на старые версии ядра.
Высокоуровневый язык и инструмент трассировки для Linux, использующий eBPF для отслеживания событий ядра и пользовательского пространства с минимальными накладными расходами.
CLI для анализа сети на базе eBPF: захватывает трафик HTTP, Redis, MySQL, Kafka и DNS и показывает, на каком этапе в ядре возникает задержка.
Набор инструментов для упаковки eBPF-программ в Gadgets в формате OCI-образов, чтобы собирать и анализировать данные в кластерах Kubernetes и на хостах Linux.
Терминальный монитор в стиле top, показывающий запущенные eBPF-программы, время их выполнения, число событий в секунду и примерную загрузку CPU.