連載 [第47回] :
  月刊Linux Foundationウォッチ

eBPF Foundation&LF ResearchがeBPF技術の進化とオープンソースエコシステムへの影響を調査したレポート「eBPFの現状」日本語版を公開

2024年8月30日(金)
吉田 行男

こんにちは、吉田です。今回は、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の動向には注視していく必要がありそうです。

2000年頃からメーカー系SIerにて、Linux/OSSのビジネス推進、技術検証を実施、OSS全般の活用を目指したビジネスの立ち上げに従事。また、社内のみならず、講演執筆活動を社外でも積極的にOSSの普及活動を実施してきた。2019年より独立し、オープンソースの活用支援やコンプライアンス管理の社内フローの構築支援を実施している。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています