Repolode
eunomia-bpf

eunomia-bpf/bpf-developer-tutorial

libbpfとCO-REを中心に、C、Go、Rustの短く実行可能な例で学ぶ、ステップ形式のeBPFチュートリアル。

スター
4,333
フォーク
607
未解決の Issue
25
最終コミット
3 日前

これは何?

基本概念から応用トピックまで段階的に学べる、実践的なeBPF開発チュートリアルです。各ディレクトリには独立したeBPFツールのサンプルがあり、コードが20行程度のものも多いため、特定のプログラムの書き方やロード方法を確認できます。

サンプルではCO-RE(Compile Once, Run Everywhere)を使い、主にlibbpfをベースにしています。一部のレッスンではeunomia-bpf、CiliumのeBPFライブラリ、libbpf-rsなどのフレームワークも使用しており、C、Go、Rustで記述されています。トピックには、オブザーバビリティ(kprobes、uprobes、tracepoints、スケジューリング遅延、メモリリーク)、ネットワーキング(XDP、tc、TCX、sockops、ロードバランシング)、セキュリティ(LSMフック、システムコール引数の変更)、GPUやスケジューラ関連の処理が含まれます。

リポジトリには、C/libbpf、Go、Rust、eunomia-bpfプロジェクト向けのスターターテンプレートも用意されています。Makefile、Dockerfile、GitHub Actionsの設定が含まれます。

主な機能

  • 01シンプルなkprobeやtracepointのプログラムから、XDP、LSM、GPUトレーシングまで段階的に学べます。
  • 02サンプルはlibbpfとCO-REを使ったCで書かれており、一部のレッスンにはGoやRustのバリエーションもあります。
  • 03各レッスンは、独自のビルド手順を備えた自己完結型のディレクトリです。
  • 04スターターテンプレートには、新しいeBPFプロジェクト向けの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 とは?
libbpfとCO-REを中心に、C、Go、Rustの短く実行可能な例で学ぶ、ステップ形式のeBPFチュートリアル。 基本概念から応用トピックまで段階的に学べる、実践的なeBPF開発チュートリアルです。各ディレクトリには独立したeBPFツールのサンプルがあり、コードが20行程度のものも多いため、特定のプログラムの書き方やロード方法を確認できます。
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

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト