8章ネットワーク用eBPF

「1章 eBPFとは何か? なぜ、重要なのか?」で見た通り、eBPFは動的な性質によってカーネルの振る舞いをカスタマイズできます。ネットワークの世界では、望ましいとされる振る舞いはいろいろあり、アプリケーションによって全く変わってきます。例えば、テレコミュニケーション事業者は、SRv6のようなテレコミュニケーション固有のプロトコルと向き合わなければなりません。Kubernetesの環境をレガシーなアプリケーションと統合する必要があるかもしれません。専用ハードウェアのロードバランサーは、汎用品のハードウェア上で実行されるXDPプログラムで置き換えられます。eBPFによってプログラマは、特定の要求に応えるためのネットワークの機能を構築できるようになります。そのときに最新のカーネルを使う必要はありません。

eBPFをベースにしたネットワークツールは現在広く使われており、非常に大規模な環境でも有効であることが示されています。例えば、CNCFのCiliumプロジェクト(http://cilium.io)は、eBPFをKubernetesのネットワーク、単体のロードバランサー、などなどのプラットフォームとして使っており、そしてCiliumは非常に多くの分野におけるクラウドネイティブ技術の採用者が使っています†1。MetaはeBPFを、非常に大規模に使っています。2017年から、Facebookとやり取りをするすべてのパケットはXDPプログラムを経由しています。もう1つ、公開されている超大規模な例としてはCloudflareのDDoS(distributed denial-of-service、分散型サービス拒否攻撃)防衛機能はeBPFを使っています。

[†1] 本書執筆時点で、100程度の組織がCiliumを利用していることを公表しており、Ciliumの ...

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.