読み方 : イービーピーエフ
eBPF【extended Berkeley Packet Filter】
概要

前身の「BPF」(Berkeley Packet Filter)は1992年に公開され、ネットワークパケットのフィルタリングを目的として組み込まれた。Linuxカーネル3.18(2014年)で「eBPF」として大幅に拡張され、パケットフィルタリング以外の幅広い用途に使えるようになった。
eBPFプログラムはユーザー空間で記述、コンパイルされ、カーネルに読み込まれる前に検証器(verifier)によって安全性が自動的にチェックされる。無限ループや不正なメモリアクセスを含むプログラムはこの段階で拒否されるため、カーネルのクラッシュを引き起こすリスクを抑えた設計になっている。検証を通過したプログラムは安全のため仮想マシン(VM)上で実行されるが、必要に応じてJITコンパイラによってネイティブコードに変換され、高速に実行できる。
eBPFプログラムはカーネルにロードされた後、特定のイベント発生時に実行される。例えば、ネットワーク通信の処理、システムコールの呼び出し、ファイルアクセスなどのタイミングでフックとして差し込まれる。これにより、カーネルモジュールを開発して組み込むことなく、カーネル内部の動作を観測・制御できる。