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

eBPF FoundationとLF Researchがクラウドネイティブで注目される「eBPF」に関する調査レポートを公開

2024年2月29日(木)
吉田 行男

こんにちは、吉田です。今回は、eBPF FoundationとLinux Foundation Researchが発表した「The State of eBPF」を紹介します。

【参照】The State of eBPF
https://www.linuxfoundation.org/hubfs/eBPF/The_State_of_eBPF.pdf

eBPFとは

「eBPF(Extended Berkeley Packet Filter)」はLinuxカーネル内で動作する軽量なサンドボックス化された仮想マシン(VM)で、特定のカーネルリソースを利用したBPFバイトコードを実行できるカーネル技術です。eBPFプログラムはイベントドリブンで、特定のトリガー(フック)が発生すると実行されます。

例えば、ネットワークイベント、システムコール、関数エントリ、カーネルのトレースポイントなどがフックとして機能します。また、プログラムはBPFのバイトコードにコンパイルされ、実行前に検証されます。これにより、プログラムが誤ってLinuxカーネルを破壊することから防御します。

もともと、この技術は名称にもあるようにパケットフィルタリング手法として1990年代初頭に登場した技術でしたが、その後Linuxに移植され、パケットフィルタリングのみならず、さまざまな箇所でカーネル内の操作をフックしてプログラマブルにする手法として用いられるようになりました。

eBPFは最近までLinuxでしか稼働しませんでしたが、2021年にMicrosoftがeBPF for Windowsプロジェクトを立ち上げ、eBPFプログラムをWindows OS上で実行できるようになっています。

eBPFの主要なユースケースとして、オブザーバビリティ、ネットワーキング、セキュリティという3つの分野が挙げられています。

  • オブザーバビリティ
    数十台、数百台、数千台のサーバーを含むような分散システムで企業はシステムがどこに時間を費やしているのか、どこでボトルネックが発生しているのか、CPUがどれくらいの速度で動作しているのか、どこでサイクルを回しているのか、どのコードが誤動作している可能性があるのかを、より簡単かつ完全に把握できるようになります。
  • ネットワーキング
    プログラマーはネットワーク・スタックを書き換えたり、必要な部分だけを活用したり、あるいは完全にスキップしたりして時間と処理能力を節約できます。不要なものをバイパスしたり、ソフトウェアの新しい構築方法に基づいて機能を書き換えたりすることで、ネットワーキングのパフォーマンスは劇的に向上します。
  • セキュリティ
    eBPFによって強化されたオブザーバビリティは、カーネル内だけでなくKubernetesやクラウドネイティブ環境全体を含むセキュリティ攻撃を発見し、防止する能力を向上させます。また、セキュリティ実施ポリシーを分散環境にプッシュし、リアルタイムで実装できるようにすることもできます。例えばカーネルに脆弱性が発生した場合、カーネルコードを変更することなくeBPFを介して迅速に修正しき、オンザフライでのセキュリティアップデートが可能になります。

eBPFの拡がり

初期にはeBPFは非常に複雑で、Linuxカーネルの専門知識を持つ人が少なかったことから、Linux開発者だけが利用できる技術でした。しかしGoogle、Facebook、Netflixなどの企業がこの分野に参入してきました。これらの企業には、このテクノロジーを開発する技術力と、それを使用し展開し、改良を加えるための専門知識、システムの管理能力がありました。

2017年以降、Meta(旧Facebook)はデータセンタに入るすべてのパケットをeBPFで処理していますし、CPUスケジューラの効率改善に成功したと報告しています。また、GoogleではデータセンターのトラフィックのほとんどをこのeBPFで処理しているだけではなく、セキュリティの監視と実施の両方に活用しています。

2016年に開発が始まった「Cilium」は当初ネットワーキングに焦点を当てていましたが、その後、eBPFを活用した接続、オブザーバビリティ、セキュリティに拡張し、現在ではKubernetes、Envoy、Prometheusと並び、Cloud Native Computing Foundationで最も急速に成長しているプロジェクトの1つになりました。すでに100社以上がCiliumを採用していると発表しており、世界最大級のKubernetesクラスタを動かしています。エンドユーザーは新興企業から大手金融機関、通信事業者をはじめ、ニューヨーク・タイムズ、ブルームバーグ、ベル・カナダなどの企業まで多岐にわたっています。

主要なクラウドプロバイダーはCiliumを自社のKubernetesソリューションに統合しており、Ciliumはクラウドネイティブ・エコシステム全体の「デフォルト」となっています。AWSはオンプレミスのKubernetesサービスEKS Anywhereの舞台裏で、ネットワーキングとセキュリティ機能を提供するためにCiliumを使用しています。Google Cloudでも、Google Kubernetes Engineのネットワーキング・コンポーネントを強化するためにCiliumを使用しています。

Red Hat社もeBPFをいち早く採用した企業の1つで、早い段階から同社のエンタープライズLinuxディストリビューションでeBPF技術を有効化し、サポートしてきました。同社の顧客は、さまざまなプラットフォームでRed Hat Enterprise Linux(RHEL)を実行しています。RHELにおける初期のeBPFの用途の1つはエクスプレス・データ・パス(XDP)サブシステムで、柔軟なプログラマブル・ネットワーク・パケット処理をLinuxカーネルのデータ・パスに直接統合し非常に高いパフォーマンスを発揮しますが、XDPにはサーバーがデータ・パケットを処理するとすぐに実行されるeBPFフックがあり、eBPFがパケットを見てLinuxカーネルが単独で処理するよりも速く、パケットを目的の場所に送ることができます。

これら以外にもeBPFを活用したアプリケーションの開発が進んでおり、今後ますます期待の持てる領域になっています。

イノベーションを起こす

通常のカーネル開発では、仮説を思いつき、新しいカーネルを構築し、コンピュータを再起動して仮説をテストしなければなりませんが、eBPFを活用することでアイデアを思いついてからテスト結果を得るまでの時間を大幅に短縮することで、イノベーションを促進できます。

とは言え、課題がないわけではありません。eBPFを効果的に活用するためには、Linuxカーネルの深い専門知識が必要になるため簡単ではありません。しかし、すべての開発者がこのeBPFのコードを書く必要はありません。NetflixのBrendan Gregg氏によると、Netflixに約3,000人のエンジニアがいても、eBPFのコードを書くのは10人程度いれば良いと発言しています。

eBPFがクラウド・ネイティブ・インフラ・スタックの新しいレイヤーとなり、すべてのアプリケーションの観測可能性、パフォーマンス、信頼性、ネットワーキング、セキュリティに影響を与えることは間違いありません。Linuxに特化した技術として始まった技術ですが、今後は業界全体のプラットフォームになっていくでしょう。

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

連載バックナンバー

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

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

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

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