Repolode
eunomia-bpf

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. 1

    克隆仓库

    git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git
  2. 2

    进入项目目录并同步子模块

    cd bpf-developer-tutorial && git submodule update --init --recursive
  3. 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 数据每日更新。

相关项目