CNDT 2022、IsovalentのアドボケイトがeBPFを解説
CNDT 2022から、IsovalentのテクニカルコミュニティアドボケイトであるTracy P Holmes氏によるeBPFを解説するセッションを紹介する。
●動画:Cloud Native Superpowers with eBPF
冒頭で日本人として初めてのIsovalentの社員となった早川侑太朗氏が登場し、eBPFが注目されており、日本でもSNSなどで多く言及されていることを紹介。その後、アドボケイトのTracy P Holmes氏に引き継いだ。
Holmes氏のセッションは「Cloud Native Superpowers with eBPF」と題されているが、内容はeBPFの基本的な内容のおさらいとなっている。
eBPFはExtended Berkeley Packet Filterの略で、ユーザースペースのプログラムからシステムコールを通じてカーネル内に置かれた仮想マシンでコードを実行するLinuxのカーネルに実装された機能だ。
「eBPFがどうして必要になったのか?」という部分についてはイラストを用いて説明。ここではオブザーバビリティのための機能をカーネルに追加したいと思ったプログラマーは、カーネルデベロッパーに依頼をしてコミュニティの了解を受け、コードを書くという手間のかかるプロセスを経る必要があり、これでは必要な時に間に合わないという例を挙げている。ここで最初に変更をしたいと思ってから5年という時間が掛かるというように描かれているが、カーネルそのものに機能追加するためにはそれぐらいの時間と準備が必要だということを強調している。
だがeBPFを使えば、数日でその変更を実装できることを解説。
ここでは最後のコメントに、システムのリブートなどを行わなくても可能になると書かれている点がポイントだろう。
ただしカーネルで実行されるコードであるために安全でなければいけないことを説明し、そのためにVerifierと呼ばれる無限ループしないことなどを検証するプロセスを経て、安全であることを確認する点に言及した。
eBPFで実行されるコードはシステムコールを使って起動されるため、元々はネットワークのフィルタリングとして使われていたが、ファイルシステムへのアクセスや他のプロセスを立ち上げることなどにも使われると説明。
eBPFは主にオブザーバビリティとして使われることから、例としてIsovalentが開発をリードするオープンソースソフトウェアのHubbleを紹介。
ネットワークに関するさまざまなメトリクスを観測することができる。またNew Relicが買収したPixieについても簡単に紹介し、フレームグラフとしてネットワークトラフィックの可視化が可能になることを説明した。
ネットワークについての解説として従来のLinuxネットワークとCiliumによるeBPFのネットワークの違いを解説し、iptablesベースのネットワークでは多くのオーバーヘッドが発生していることを説明した。
ここではiptablesベースのネットワークとeBPFベースのネットワークの性能評価について参照されている。ここで用いられているイラストは、Ciliumのブログからの引用だ。
参照元となっているページは以下のリンクを参照されたい。
●参考:Ciliumと従来型のネットワークの違いを解説するブログ:CNI Benchmark: Understanding Cilium Network Performance
左側の従来のLinuxネットワークはiptablesで実装されていることから、多くのオーバーヘッドが発生している。それに比べてCiliumのネットワークは、非常にシンプルになっていることがわかる。
このスライドに使われているグラフのシステムについて、Node-to-NodeはKubernetesも何も実行されていない2つのまったく同じ構成のシステムでのプロセス間通信の数値を、netperfを使って計測しているという。
CiliumとCalicoについてはKubernetesをベースにして計測されている。ここでCalicoが比較対象になっているのは「よく比較されるから」という理由だそうだが、それぞれeBPFをデータプレーンに使ったものとレガシーなKube-proxyを使ったものと比較しているのが興味深い。最新のカーネルを使えない場合にもこのレガシーな構成なら使えるという補助的な意味合いだろう。赤のバーグラフがCiliumのeBPF版、つまり最も性能が出る構成で、ほぼ同じ性能を出しているオレンジのバーグラフはCalicoのeBPF版だ。一方Kube-proxyを使った構成では、CiliumもCalicoも性能が劣化していることがわかる。
最後にeBPFではアプリケーションの書き換えを行わなくても機能追加ができることを紹介して、主な説明を終えた。
その後、eBPFに関する書籍などを紹介してセッションを終えた。
ちなみにCiliumは、CNCFにおいてセキュリティオーディットを受けたプロジェクトであることが2023年2月13日のプログ記事で紹介されている。
●参考:“A well-secured project”: Cilium security audits 2022 published
ソースコードのリポジトリからドキュメンテーションまで幅広く監査を受けており、包括的に安全なプロジェクトであることが第3者機関から確認されていることがわかる。eBPFに関するサイトも存在しており、内容の確をお勧めする。
●参考:eBPF公式サイト:https://ebpf.io/
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon EU開幕、前日に行われたプレカンファレンスからeBPFとTetragonを紹介
- CNSC 2022、eBPFをベースにしたコンテナランタイムセキュリティのツールを紹介
- KubeCon EU、欠点から逆算するKubernetesのネットワークに関するセッションを紹介
- eBPF Summit、Verizon-Mediaが利用するKatranのセッションを紹介
- CloudNative Days Fukuoka 2023、GoogleによるGKE上のGateway APIの解説セッションを紹介
- eBPF Summit開催 IsovalentのCEOなどによるDay 1のキーノートを紹介
- Tigeraのアドボケイトが、x86とARMのマルチアーキテクチャークラスターを解説
- CloudNativeSecurityCon開催。シアトルで2日間行われたセキュリティ特化のカンファレンスを紹介
- eBPF Summit、eBPFとKubernetesでコアネットワーク構築? Bell Canadaのセッションを紹介
- eBPF Foundation&LF ResearchがeBPF技術の進化とオープンソースエコシステムへの影響を調査したレポート「eBPFの現状」日本語版を公開