eBPF Foundation&LF ResearchがeBPF技術の進化とオープンソースエコシステムへの影響を調査したレポート「eBPFの現状」日本語版を公開
こんにちは、吉田です。今回は、eBPF FoundationがLinux Foundation Researchと協力して作成・公開された「The State of eBPF」の日本語版「eBPFの現状」について紹介します。
【参照】eBPF Foundation & LF Research 調査レポート「eBPFの現状」を公開
https://www.linuxfoundation.jp/blog/2024/08/japanese-version-of-the-state-of-ebpf/
eBPF(extended Berkeley Packet Filter)とは、Linuxカーネルのソースコードを修正したりカーネルモジュールを導入したりすることなく、サンドボックス化された小さなプログラムやスクリプトをLinuxシステムのカーネル空間で実行できる技術のことです。
eBPFの進化
元々、1992年にUNIX(BSD)上でパケットキャプチャ・フィルタリングを効率的にするためにBPFというソフトウェアが開発されました。BPFは1997年にLinuxカーネル2.1.75に移植され、2014年にはより汎用的なカーネル内仮想マシンにするための拡張が登場(Linuxカーネル3.14)しました。これにより、パケット以外にもカーネル内のあらゆる操作をフックしてトレースできるようになり、ユーザはLinuxカーネル内でカスタムプログラムを実行できるようになっています。
このBPFが登場して10年間の主要なユースケースは可観測性、ネットワーキング、セキュリティでしたが、昨年Metaは新しいeBPF ベースの中央処理装置スケジューラーにより大きな成果を上げ、Metaのいくつかの最大のアプリケーションで5%のCPU帯域幅の向上を実現しました。
「これは非常に大きな数字です。なぜなら、当社のCPUが5%増えるのと基本的に同じことだからです」とMetaのソフトウェアエンジニアリング担当ディレクター Dan Kelleyは言っています。また、最近までBPFはLinuxだけのテクノロジーでしたが、2021年にWindows OS上で実行できるようにするためにMicrosoftが「BPF for Windows プロジェクト」を開始しました。
eBPFの主要なユースケース
- 可観測性
システムのどこで時間を費やしているか、どこでボトルネックが発生しているか、CPUの動作速度など、さまざまな情報を収集する必要があります。これらの情報を収集するためにeBPFのトレースツールを作成し、可視化することで日々の安定稼働につなげることができます。
Netflixでは、1時間当たり数十億のeBPF「フローログ」を取り込み、可視化することでネットワークの可用性、パフィーマンスやセキュリティを分析し、アプリケーションがグローバルに分散したクラウドベースのエコシステム全体にデータを配信できることを確認しています。 - ネットワーキング
ネットワーキングの分野では、eBPFが速度とパフォーマンスを向上させる方法の良い例となっています。Linuxネットワークスタックの多くの部分はIPとポート範囲がコンテナごとに変更されるのではなく、スプレッドシートで追跡できた数十年前に書かれたものです。eBPFを使用するとプログラマーはネットワークスタックを書き直したり、必要な部分のみを利用したり、完全にスキップして時間と処理能力を節約したりできます。不要なものをバイパスしたり、ソフトウェアを構築する新しい方法に基づいて機能を書き直したりすることで、ネットワークのパフォーマンスが劇的に向上します。
WalmartはeBPFを使用してKernel Function as a Serviceを提供するL3AFプロジェクトをオープンソース化し、eBPFプログラムのマーケットプレースを作成しました。ユーザと開発者は自分の署名したeBPFプログラムを共有し、他の人からeBPFプログラムをダウンロードできます。iptablesはカーネルコミュニティとeBPFによって置き換えられ、ネットワークをほぼラインレートにしています。 - セキュリティ
eBPFで強化された可観測性により、カーネル内だけでなくKubernetesやクラウドネイティブ環境全体を含むセキュリティ攻撃を検出し防止する能力が向上します。セキュアなアーキテクチャの最初のステップは完全でセキュアな可視性を得ることで、 eBPFはその可視性を生み出すのに役立ちます。eBPFはまた、セキュリティポリシーを分散環境に適用し、リアルタイムで実装できるようになります。例えば、カーネルに脆弱性が発生した場合、カーネルコードを変更することなくeBPFを介して迅速に修正することで、セキュリティアップデートをその場で行うことができます。
eBPFの普及
eBPFが大きく普及した要因はCilliumです。DockerやKubernetesなどのLinuxコンテナ管理プラットフォームを使用して展開されたアプリケーションサービス間のネットワーク接続を透過的に保護するためのOSSのプロジェクトです。このプロジェクトは2016年に設立され、当初はネットワークに焦点を当てていましたが、その後、接続性、可観測性、セキュリティへと守備範囲を広げ、Kubernetes、Envoy、Prometheusと並んで、CNCF(Cloud Native Computing Foundation)の中で最も急成長しているプロジェクトへと成長しました。
また、RedHatもまたeBPFを早期に採用した企業で、エンタープライズLinuxで早い時期からサポートしています。初期の用途の1つは高速データパス(XDP)サブシステムで、柔軟でプログラマブルなネットワークパケット処理をLinuxカーネルデータパスに直接統合し、非常に高いパフォーマンスを実現できます。
これ以外にも、下記のようなeBPFアプリケーションが稼働・開発中です。
- Bcc: 効率的なeBPFカーネルトレースのためのツールキットとライブラリ
- Bpftrace: Linux eBPFの高レベルトレース言語
- Falco: アプリケーションの異常なアクティビティを検出するように設計された動作アクティビティモニター。eBPFの助けを借りてFalcoは「Linux カーネル層でシステムを監査する」
- Katran: ハイパフォーマンスのレイヤ4ロードバランサー
- Pixie: eBPFを使用してテレメトリデータを自動的にキャプチャするKubernetesアプリケーション用のオープンソースの可観測性ツール
- Calico: コンテナとKubernetesのためのプラグ可能なeBPFベースのネットワークとセキュリティ
- Tetragon: eBPFベースの透過的なセキュリティ可観測性とリアルタイムのランタイムエンフォースメントを組み合わせて提供
eBPFの行く先
このように既に広く展開されているeBPFですが、専門家によるとまだまだ序の口のようです。eBPFがクラウドネイティブインフラストラクチャスタックの新しいレイヤになることは間違いなく、すべてのアプリケーションの可観測性、パフォーマンス、信頼性、ネットワーキング、セキュリティに影響を与えると支持者は言っています。
今後も、このeBPFの動向には注視していく必要がありそうです。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- eBPF FoundationとLF Researchがクラウドネイティブで注目される「eBPF」に関する調査レポートを公開
- 9/27開催「Open Source Summit」をはじめ、リアルイベントでのプロトコルを発表。11月までのKubeCon + CloudNativeConなどにも適用、ほか
- CNSC 2022、eBPFをベースにしたコンテナランタイムセキュリティのツールを紹介
- KubeCon EU開幕、前日に行われたプレカンファレンスからeBPFとTetragonを紹介
- eBPF Summit開催 IsovalentのCEOなどによるDay 1のキーノートを紹介
- CNDT 2022、IsovalentのアドボケイトがeBPFを解説
- CNCFのCTO、Chris氏の「Cloud Native Predictions for 2021 and Beyond」に見る、クラウドネイティブに関する予測【後編】
- 「Cloud Native Trail Map」の10ステップを紐解く(ステップ6~7)
- 「Inspektor Gadget」でKubernetesクラスタをデバッグする
- eBPF Summit、Verizon-Mediaが利用するKatranのセッションを紹介