読み方 : イービーピーエフ

eBPF【extended Berkeley Packet Filter】

概要

eBPFとは、Linuxカーネル内で安全に任意のプログラムを実行できる仕組み。カーネルソースコードを変更したり再起動したりすることなく、ネットワーク監視やセキュリティ、パフォーマンス計測などの機能を動的に追加できる。
eBPFのイメージ画像

前身の「BPF」(Berkeley Packet Filter)は1992年に公開され、ネットワークパケットのフィルタリングを目的として組み込まれた。Linuxカーネル3.18(2014年)で「eBPF」として大幅に拡張され、パケットフィルタリング以外の幅広い用途に使えるようになった。

eBPFプログラムはユーザー空間で記述、コンパイルされ、カーネルに読み込まれる前に検証器(verifier)によって安全性が自動的にチェックされる。無限ループや不正なメモリアクセスを含むプログラムはこの段階で拒否されるため、カーネルクラッシュを引き起こすリスクを抑えた設計になっている。検証を通過したプログラムは安全のため仮想マシンVM)上で実行されるが、必要に応じてJITコンパイラによってネイティブコードに変換され、高速に実行できる。

eBPFプログラムカーネルロードされた後、特定のイベント発生時に実行される。例えば、ネットワーク通信の処理、システムコールの呼び出し、ファイルアクセスなどのタイミングでフックとして差し込まれる。これにより、カーネルモジュールを開発して組み込むことなく、カーネル内部の動作を観測・制御できる。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。