ソフトウェア
上級

eBPF (extended Berkeley Packet Filter)(イービーピーエフ)

Alexei Starovoitov 2014年Linux 3.18 で導入したカーネル内仮想マシン。ネットワーク / トレーシング / セキュリティ / 監視のプログラマブル化を実現するLinux 現代観の中核技術。

0 回閲覧
0 いいね
2026/5/15 更新
関連タグ
Linux
Kernel
eBPF
ネットワーク

概要

eBPF (extended Berkeley Packet Filter) はAlexei Starovoitov (元Plumgrid → Cumulus → Facebook → Isovalent) が主導開発したLinux カーネル内仮想マシン。2014年12月Linux 3.18 で初期統合、元のBPF (1992 Steven McCann / Van Jacobson・パケットフィルタリング言語) を汎用化拡張。eBPF プログラムはユーザ空間 (clang / Rust 等) でコンパイル → eBPF Verifier 検証 → カーネル JIT 実行で、ネットワーク / トレーシング / セキュリティ / 監視のプログラマブル化を実現する。

eBPF の主要利用領域

領域代表ツール
ネットワーク (XDP)Cilium / Katran (Facebook)
ロードバランサKatran / Maglev
トレーシングbpftrace / bcc / SystemTap
パフォーマンス監視Pixie / Inspektor Gadget
セキュリティFalco / Tetragon
サンドボックスseccomp-bpf
KubernetesCilium CNI / Service Mesh

eBPF アーキテクチャ

  1. 書込み: C / Rust / Go プログラム
  2. コンパイル: clang → eBPF byte code
  3. 読込: bpf() システムコール (BPF_PROG_LOAD)
  4. 検証: eBPF Verifier (静的解析・無限ループ / 不正メモリアクセス検出)
  5. JIT: アーキネイティブ機械語へ変換 (x86 / ARM)
  6. アタッチ: kprobe / uprobe / tracepoint / XDP / cgroup 等にフック
  7. 実行: イベント時にカーネル内安全実行

eBPF プログラム種別

種別フックポイント
kprobe / kretprobeカーネル関数前後
uprobe / uretprobeユーザ空間関数
tracepoint静的トレースポイント
perf_eventパフォーマンスカウンタ
XDPNIC ドライバ最早期
TC (Traffic Control)qdisc レベル
cgroupプロセスグループ
socketsocket イベント
LSM (Linux Security Module)セキュリティフック
SK_SKB / SK_REUSEPORTソケットレイヤ

XDP (Express Data Path)

eBPF を使った高性能パケット処理フレームワーク。NIC ドライバの最早期 (skb 作成前) でパケット処理を行うため、Linux カーネル経由の約1/10 オーバーヘッドでDDoS 対策 / ロードバランサ / ファイアウォール / モニタリングを実現。Facebook の Katran (L4 ロードバランサ) は数億req/sec を処理。

主要プロジェクト

  • Cilium (Isovalent): Kubernetes CNI + Service Mesh
  • Tetragon (Isovalent): セキュリティ可観測性
  • Hubble: Cilium 可視化
  • Falco: ランタイムセキュリティ
  • bpftrace: 高水準トレーシングDSL
  • bcc (BPF Compiler Collection): Python / Lua ツール群
  • Pixie (New Relic): K8s 観測
  • Inspektor Gadget: K8s 用 eBPF ツール
  • Katran: Facebook L4 LB
  • pwru (Cilium): packet where are you (パケット追跡)

eBPF アライアンス

2021年Linux Foundation eBPF Foundation 発足。Google / Meta / Microsoft / Netflix / Isovalent / Red Hat 等が参加、eBPF をLinux 標準観測 / ネットワーク技術として推進。

関連用語との違い

  • vs カーネルモジュール: eBPF はSandbox 安全 / モジュールはフルアクセス
  • vs DPDK: 完全ユーザ空間 / カーネル内
  • vs kprobe: トレース機構 / 汎用VM

FAQ

Q1: 一般用途で意義? A: 直接書く機会は少ないが、Kubernetes / Docker 環境でCilium / Falco 等が裏で動作。観測・パフォーマンス調査の主要技術。

Q2: 学習リソース? A: ebpf.io 公式 / Brendan Gregg "BPF Performance Tools" / Liz Rice "Learning eBPF" (2023)。 Tutorials の充実。

Q3: なぜ仮想マシン? A: カーネル内コード実行のセキュリティ確保。Verifier が無限ループ / 不正メモリアクセス / 任意分岐を完全検証、安全性保証。

この記事について
カテゴリーソフトウェア
難易度上級
作成日2026/5/15