Kubernetesクラスター向けのeBPFベースCNI。IDベースのL3〜L7ポリシーやkube-proxyの置き換えに対応し、ネットワーク、セキュリティ、可観測性を提供します。
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
リポジトリをクローンする
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 とは?
- 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 の数値は毎日更新されます。
関連プロジェクト
eBPFプログラムのコンパイルとロード向けにlibbpfをラップするCライブラリ兼プラットフォーム。リモートコンパイルとカーネルバージョン別のバックポートに対応します。
eBPFでカーネルとユーザー空間のイベントを低オーバーヘッドでトレースする、Linux向けの高水準トレーシング言語・ツール。
HTTP、Redis、MySQL、Kafka、DNSの通信をキャプチャし、カーネル内で遅延が発生している箇所を可視化するeBPFベースのネットワーク解析CLI。
KubernetesクラスターやLinuxホストのシステムデータを収集・調査するため、eBPFプログラムをOCIイメージのGadgetとして配布するツールキット。
実行中のeBPFプログラムの実行時間、秒間イベント数、推定CPU使用率を表示する、top風のターミナルモニター。