【いーびーぴーえふ】

eBPF(extended Berkeley Packet Filter) とは?

💡 カーネルに「プラグイン」を差し込める革命的テクノロジー
📌 このページのポイント
eBPF:カーネル内でプログラムを安全に実行 ユーザー空間 eBPFプログラム ロード バリファイア 安全性を検証 OK JITコンパイル ユースケース ネットワーク セキュリティ 観測 カーネル空間 ネットワーク XDP / TC セキュリティ LSM フック トレーシング kprobe / uprobe スケジューラ sched フック eBPF Maps(データ共有・集計用ストレージ)
eBPFの仕組み:プログラムのロードからカーネル内実行まで
ひよこ ひよこ

eBPFってなに?カーネルとかいきなり難しそう…

ペンギン先生 ペンギン先生

例えるなら「OSの心臓部にプラグインを差し込める技術」だよ。普通はOSの中核部分(カーネル)をいじるには再ビルドが必要で大変なんだけど、eBPFを使うとカーネルの中で安全に自分のプログラムを動かせるんだ

ひよこ ひよこ

カーネルの中で動くって、危なくないの?変なコードが入ったら大変じゃない?

ペンギン先生 ペンギン先生

いい心配だね。eBPFにはバリファイア(検証器)という仕組みがあって、プログラムをロードする前に「無限ループしないか」「不正なメモリにアクセスしないか」を厳密にチェックするんだ。検証に通らないプログラムカーネルに入れないから安全だよ

ひよこ ひよこ

で、具体的に何に使うの?

ペンギン先生 ペンギン先生

大きく3つの分野があるよ。ネットワークパケットの高速処理やロードバランシング)、セキュリティ(不正な動作のリアルタイム検知)、オブザーバビリティCPUやメモリの詳細なパフォーマンス分析)。特にKubernetes環境ではCiliumというツールがeBPFを使って革命的なネットワーキングを実現しているんだ

ひよこ ひよこ

そんなにすごいなら、もっと前からあってもよさそうだけど?

ペンギン先生 ペンギン先生

元になったBPFは1992年からあったんだけど、パケットフィルタリング専用だったんだ。2014年頃にLinuxカーネルに大幅拡張版が入って、そこから爆発的に発展したよ。今ではMeta・Google・Netflixなど大規模システムで本番利用されていて、「カーネルにとってのJavaScript」と呼ばれることもあるんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「eBPF」って出てきたら「Linuxカーネルプログラムを安全に差し込める技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「extended Berkeley Packet Filter」 = 拡張バークレーパケットフィルタ
💬 もともとはUCバークレーで開発されたパケットフィルタリング技術(BPF)を大幅に拡張したもの。今ではパケット以外にも使えるので「eBPF」という名前自体がブランドになっているよ
← 用語集にもどる