基于 eBPF 的 Kubernetes 网络、安全与可观测性方案,支持 L3-L7 身份感知策略。
eunomia-bpf/bpf-developer-tutorial
一套循序渐进的 eBPF 教程,提供 C、Go、Rust 的短小可运行示例,主要基于 libbpf 与 CO-RE。
- Star
- 4,333
- Fork
- 607
- 未关闭 Issue
- 25
- 最近提交
- 3天前
这是什么?
这是一套面向开发者的 eBPF 实战教程,从基础概念逐步讲到进阶主题。每个目录都是一个独立的 eBPF 工具示例,很多示例只有二十行左右的代码,便于看清一个程序从编写到加载的完整过程。
示例采用 CO-RE(一次编译,到处运行)方式,主要基于 libbpf 实现,部分课程也使用 eunomia-bpf、Cilium 的 eBPF 库和 libbpf-rs 等框架,语言涵盖 C、Go 和 Rust。内容包括可观测性(kprobe、uprobe、tracepoint、调度延迟、内存泄漏)、网络(XDP、tc、TCX、sockops、负载均衡)、安全(LSM 钩子、系统调用参数修改)以及 GPU 和调度器等方向。
仓库还提供 C/libbpf、Go、Rust 和 eunomia-bpf 四套项目模板,包含 Makefile、Dockerfile 和 GitHub Actions 配置。
核心功能
- 01课程由浅入深,从 kprobe、tracepoint 示例逐步覆盖 XDP、LSM 和 GPU 追踪。
- 02示例以 C 语言加 libbpf 和 CO-RE 为主,部分课程提供 Go 和 Rust 版本。
- 03每个课程都是独立目录,附带各自的编译说明。
- 04提供 C、Go、Rust 等项目模板,包含 Makefile、Dockerfile 和 CI 配置。
- 05附有兼容性矩阵,便于核对内核与工具链版本。
适用场景
- 从第一个 hello-world 程序开始,逐步学习 eBPF 开发。
- 查找 uprobe、XDP、LSM 等特定钩子的可用示例并加以改造。
- 基于模板快速搭建新的 libbpf、Go 或 Rust eBPF 项目。
- 学习如何用 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 程序需要支持 BPF 的 Linux 内核,通常还需要 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 最近一次提交是在 2026年11月4日。
- bpf-developer-tutorial 适合用来做什么?
- 从第一个 hello-world 程序开始,逐步学习 eBPF 开发。 查找 uprobe、XDP、LSM 等特定钩子的可用示例并加以改造。 基于模板快速搭建新的 libbpf、Go 或 Rust eBPF 项目。 学习如何用 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
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
封装 libbpf 的 C 库与平台,用于编译和加载 eBPF 程序,支持远程编译与内核版本回移。
面向 Linux 的高级追踪语言与工具,基于 eBPF 实现低开销的内核与用户态事件追踪。
基于 eBPF 的网络分析命令行工具,可抓取 HTTP、Redis、MySQL、Kafka 等请求并定位内核各阶段的延迟。
将 eBPF 程序打包为 OCI 镜像 Gadget,用于在 Kubernetes 集群和 Linux 主机上采集与检查系统数据的工具集。
一款终端版 top 工具,实时显示正在运行的 eBPF 程序及其运行时间、事件频率和估算 CPU 占用。