1章eBPFとは何か? なぜ、重要なのか?

eBPFは革新的な技術です。eBPFによって開発者は、カーネルの振る舞いを変更できるカスタムコードを、カーネルの内部に動的にロードし、実行することができます(もしカーネルとは何かについて自信がなくとも心配しないでください。この章でこの後すぐにご説明します)。

これにより、新世代の高性能なネットワーク、可観測性、そしてセキュリティツールが実現できます。そしてこれから見るように、もしこれらeBPFベースのツールを利用してアプリケーションを計測しようとする場合でも、eBPFがカーネルの中にちょうどいい見晴し台を持っているおかげで、アプリケーションそのものを変更したり再設定する必要は全くないのです。

以下は、eBPFによって可能になる事柄のうちいくつかの例です。

  • システムの非常に多くの面についての性能トレース
  • 可観測性を持った高性能なネットワーク機能
  • 悪意のある活動の検知と、(必要に応じての)防止

それでは、eBPFの歴史から見ていきましょう。まずは、「Berkeley Packet Filter」と呼ばれていた時代の話から始めます。

1.1 eBPFのルーツ:Berkeley Packet Filter

私たちが今日「eBPF」と呼んでいる技術のルーツは「BSD Packet Filter」で、BPFとはこの頭文字に由来しています。BPFはローレンス・バークレー国立研究所のSteven McCanneとVan Jacobsonにより1993年に書かれた論文で初めて登場しました†1。この論文ではフィルタを動かすことができる擬似的な機械について論じており、そのフィルタの中身は、ネットワークパケットを通過させるか拒絶するかを決定するために書かれたプログラムでした。これらのプログラムはBPFの命令セット、具体的にはアセンブリ言語によく似た32ビットの汎用的な命令セットにより書かれていました。次に示すのが、その論文から直接引用したプログラム例です。 ...

Get 入門 eBPF ―Linuxカーネルの可視化と機能拡張 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.