2021年8月18日、19日の2日間に行われたeBPF Summit 2021から、カナダ最大の通信会社であるBell Canadaの技術責任者によるセッションを紹介する。これは「Why is eBPF Changing The Teleco Networking Space ?」と題されたもので、以下の動画の26分から始まるセッションだ。
動画:eBPF Summit 2021 - Day 2
担当したのはBell CanadaのテクニカルディレクターであるDaniel Bernier氏だ。
セッションを行うBernier氏
Bernier氏は、まずテレコム業界の状況の再確認から解説を始めた。5Gの登場によってクラウドネイティブでハイパースケールなネットワークインフラストラクチャーが求められており、またOver-the-Topなサービスは主にクラウドベースのシステムで運用されていることをベースに、クラウドへの移行が必要となると語った。そしてスケールと分散、エッジの利用の他にインターネットサービス自体がコモディティとなっている反面、ユーザーが求める品質は年々高くなっているということを現時点での認識として紹介した。
テレコム業界を囲む環境の変化
そしてその回答として、IETFが提唱しているAPN(Application-aware Network)のアーキテクチャー図を使って、末端のエッジの部分にeBPFを使った応用が可能ではないか? というのがBernier氏の意見となる。
APNのエッジにeBPFを使うという提案
このスライドに書かれているリンクの先のドキュメントを読めばより詳しい背景が理解できるかもしれない。
APN:Application-aware Networking(apn)
PANRG:Path Aware Networking RG(panrg)
そしてeBPFが最も効果を発揮するオブザーバービリティについても、Inband-TelemetryをeBPFで実装する案を紹介。
Inband-TelemetryをeBPFで実装するアイデアを紹介
Intelが開発しているInband-Telemetryのサイト:Host-INT* for packet-telemetry
このスライドの左側の図はp4という言語のページのリンクが張られているが、リンク先はソースコードなのでそれを抽象化したもの、ということだろう。ちなみにp4はProgramming Protocol-Independent Packet Processorsの略で、ネットワークのためのハードウェアにおいてパケットの処理などのデータプレーンをプログラミングするためのDomain Specific Languageだ。
そして次のスライドでKubernetesをコアにしたネットワークの構成図を見せながら、ネットワークの内部をKubernetesベースにするアイデアを紹介した。
KubernetesとCilium、eBPFをベースにしたネットワーク構成
ここではCiliumがコントロールプレーンとして動作し、個々のPodにeBPFが仮想ルーターとして動作するということを意図しているようだ。
次のスライドでは物理的なハードウェアで実装されていた機能が仮想化、コンテナ化に進むことでどのように変わってきたのかを説明している。
物理から仮想化、そしてコンテナ化へ
そして実際に5GのネットワークにeBPFを使って、カーネル内で高速にパケット処理を実装した例を紹介。
5G UPF using eBPF/XDP
これまでのネットワークファンクションが仮想マシンベースではなくコンテナベースに移行し、データプレーンもユーザースペースからeBPFを使ってカーネル内部で処理できるようになればどうなるのか? を表現したのがこのスライドだ。
もしもデータプレーンをeBPFで実装したら?という仮定の話
最後のスライドでは、より将来的な姿としてeBPFを実装したマイクロプログラムがスマートフォンから自動車、ホームサーバーなどに実装され、テレコム事業者のアクセスポイントを通ってインターネットに出ていくという例を紹介してセッションを終えた。
Bell Canadaが想定するeBPFエブリウェアの図
テレコム事業者といえば、仮想化されたインフラストラクチャーとしてOpenStackに多く投資を行っていることは知られているが、ここではOpenStackからコンテナベースに移行する際にデータプレーンをどうするのか? という問いについて、一つの回答が示されているように見える。しかし移行の方法やネットワークファンクションの開発方法、既存のオブザーバービリティのツールとの統合など、課題は多いように見える。Bell Canada以外のテレコム事業者が追従するのか、それとも別の道を選んでコンテナ化に進むのか、注目したい。
参考ながらeBPFをベースにしたCNI準拠のプラグインであるCiliumは1.10というバージョンがリリースされ、順調に進化しているように見える。
Cilium 1.10: WireGuard, BGP Support, Egress IP Gateway, New Cilium CLI, XDP Load Balancer, Alibaba Cloud Integration and more
CiliumがKube-Proxyをどのように置き換えるのか? については、2019年にサンディエゴで開かれたKubeCon NAの動画を参考にされたい。
参考:Liberating Kubernetes From Kube-proxy and Iptables - Martynas Pumputis, Cilium