Share
Embed
eBPFの未来に向けた課題
Kenta Tada
October 22, 2025
Transcript
39 slides
-
eBPF の未来に向けた課題 Kenta Tada, CNCF End User Technical Advisory Board
LF Japan Community Days Osaka | Oct 22, 2025 -
© 2025 Cloud Native Computing Foundation 2 Agenda •eBPF に関する活動紹介
•eBPF の未来 •実運用に向けた課題 •eBPF に関する人材育成 •組み込み機器や長期稼働システムへの eBPF の展開に向けた課題 -
© 2025 Cloud Native Computing Foundation 3 自己紹介 (Japanese Edition)
Recent Activities • KubeCon + CloudNativeCon Japan 2025 Speaker • Open Source Summit Japan 2025 Speaker • Linux Plumbers Conference 2025 Speaker • CNCF End User Technical Advisory Board • KubeDay Japan 2024 Co-chair • CNCJ / eBPF Japan Community Organizer • The reviewer of the Japanese translation of the book "Learning eBPF" published by O'Reilly Japan 写真を見てお分かりの通り、趣味はアウトドアです。 -
© 2025 Cloud Native Computing Foundation 5 eBPF Japan Community
•CNCJ の SIG (Special Interest Group) として活動 •エンドユーザーの立場から、 eBPF コア部分を支える技術の内部実装からユ ースケースの紹介まで幅広く活動 •https://ebpf.connpass.com/ -
© 2025 Cloud Native Computing Foundation 6 •KubeCon + CloudNativeCon
Japan 2025 ◦ From Moon Prism Power To eBPF Super Saiyan: A Guide To Cloud Native Security & O bservability ◦ eBPF を安全にデプロイするためのベストプラクティスの紹介 •Open Source Summit Japan 2025 ◦ eBPF for Observability: Hard Truths and Practical Wins ◦ eBPF の実運用に向けた課題 ( 人材育成を含む ) に関する BoF ( 予定 ) •Linux Plumbers Conference 2025 ◦ “Is Upstream Really Enough?” — Practical Realities of Using eBPF in Long-Term Supp orted Systems ◦ eBPF の組み込み機器や長期稼働システム適用時の課題と、その解決策を提案 ( 予定 ) 今年の eBPF に関する登壇 本日はこれらの活動内容のサマリーをお届け -
© 2025 Cloud Native Computing Foundation 9 •Open Source Summit
North America 2025 基調講演にて、 Daniel Borkmann 氏から eBPF の未来が語られた。 •"eBPF は今後 10 年間、インフラストラクチャ開発者にとって戦略的なプラッ トフォームの選択肢となるでしょう。 " •今後の開発分野 ◦ AI ワークロードの最適化 ◦ Windows 向けの eBPF ランタイム ◦ 低オーバーヘッドのランタイムセキュリティ ◦ eBPF プログラムによって動作を定義できるプロセススケジューラ ◦ netkit : VM workload 高速化 ◦ カーネルライブパッチングの支援 Unlocking Innovation in the Linux Kernel Keynote: eBPF: Unlocking Innovation in the Linux Kernel - Daniel Borkmann, Distinguished Software Engineer, Isovalent at Cisco and co-creator of eBPF and Cilium -
© 2025 Cloud Native Computing Foundation 10 sched_ext User program
of your scheduler Core kernel CPU scheduler (kernel/sched/core.c) User Kernel sched_ext FW (kernel/sched/ext.c) CFS (kernel/sched/fair.c) BPF program of your scheduler … •struct_ops を用いてプロセススケジューラの動作を定義 -
© 2025 Cloud Native Computing Foundation 11 •struct_ops とは? ◦
Linux カーネルの特定機能を eBPF プログラム で実装するための仕組み •struct_ops の役割 ◦ カーネルの再コンパイルなしに、新しいアルゴリズムや機能を動的にロード・ アンロード可能にする。 •主な用途 ◦ プロセススケジューラ拡張 ◦ TCP 輻輳制御アルゴリズムの実装 ◦ Qdisc 操作の実装 struct_ops -
© 2025 Cloud Native Computing Foundation 12 •scx_flatcg : A
flattened cgroup hierarchy scheduler •cgroup sub-scheduler sched_ext で何が出来るの? -
© 2025 Cloud Native Computing Foundation 13 •cgroup の階層が深くなると性能が劣化する話は昔から課題だった。 scx_flatcg(flattened
cgroup hierarchy scheduler) -
© 2025 Cloud Native Computing Foundation 15 •そこで cgroup 階層を単一に平坦化し、階層を辿るオーバーヘッドを削減する。
•ただし、この方法は多くのプロセスが同時に起床するような環境では Thundering Herd 問題を引き起こすという欠点もある。 •つまり、自分の環境に合わせて sched_ext でスケジューラを用意すればよい。 scx_flatcg(flattened cgroup hierarchy scheduler) root A B Z ・・・ -
© 2025 Cloud Native Computing Foundation 16 •cgroup ツリー内で複数のプロセススケジューラを稼働させる。 •マルチテナントサーバー環境や異なるワークロードを単一のホストで両立
cgroup sub-scheduler root レイテンシ センシティブ 通常の ワークロード -
© 2025 Cloud Native Computing Foundation 18 •KubeCon Japan 2025
のブースにて、 mincore(2) と bpf_probe_write_user を用いたユーザ空間のデータをスワップアウトさせ て、 bpf_probe_write_user が失敗させるデモを実施 ◦ https://speakerdeck.com/kentatada/beyond-the-limits-of-ebpf-a-journey- through-os-technologies •すでに Sleepable eBPF programs の機能自体は Linux カーネルが提供し ているが、アプリケーション側が対応しなければならない。 •また、 eBPF プログラム開発者やシステム運用者も Linux カーネルの挙動 を把握していなければならない。 eBPF 本番運用に必須な Linux カーネルの知見 -
© 2025 Cloud Native Computing Foundation 19 •eBPF は sched_ext
のように Linux カーネルの挙動に影響を与える機能だ けでなく、 Linux カーネルの様々な機能と連携し、新たな機能を提供 •例 : 遅延実行機能 ◦ eBPF Timer ▪ コールバックに登録した関数を後から実行可能 ソフト割り込みコンテキストで実行 ▪ 特定の eBPF プログラムの実行を 1 回だけ遅延させるだけでなく、単一 のトリガーイベント後に周期的な関数を無限に実行させることも可能 ◦ eBPF Workqueue ▪ 次ページで解説 Linux カーネル内部に入り込んでいく eBPF -
© 2025 Cloud Native Computing Foundation 20 •Sleepable なプロセスコンテキストで実行される非同期作業をスケジュール させることが出来る。
•元々 Human Interface Devices (HID) が扱う eBPF プログラムのために開 発された機能 ◦ 例 : ハードウェアの応答待ち •eBPF Timer との主な違いは Sleepable であること ◦ eBPF Timer はソフト割り込みコンテキストで動作するため Sleepable では ない。 •一方、 eBPF Workqueue と比較して eBPF Timer はレイテンシーセンシ ティブな処理に優れているため、使い分けが必要 eBPF Workqueue -
© 2025 Cloud Native Computing Foundation 21 •その他にも、 BPF Token
や Signed eBPF など、これまで課題となってい た eBPF 自体のセキュリティの課題にも対処できるような機能が続々と登場 している。 •着々と今後 10 年間、インフラストラクチャ開発者にとって戦略的なプラッ トフォームの選択肢になっていくための準備が進んでいる。 •一方、 eBPF を完全に使いこなすには Linux カーネルの知見も必要 eBPF の進化とキャッチアップの課題 -
© 2025 Cloud Native Computing Foundation 23 •eBPF Foundation と
LF Research が発行した The State of eBPF ( 日本語訳 ) においても、 eBPF を効果的にプログラミングするには、カーネルの深い 専門知識が必要であると説明している。 •企業が eBPF を最大限に活用するためには、 eBPF プログラミングを扱う ことができるシニアエンジニアが少なくとも 1 人必要であり、彼らは彼ら のニーズに最適なオープンソース、商用、または社内ソリューションを見つ けるために彼らの会社を導くことができます by Brendan Gregg eBPF を最大限活用するために必要なこと -
© 2025 Cloud Native Computing Foundation 24 •eBPF を真に活用するためには、「カーネル側の深い理解」に加えて、「ア プリケーションレイヤの動作や文脈を理解する力」が不可欠である。
•組込み・制御系エンジニアと Web /クラウドエンジニアのスキルセットは 大きく異なるため、双方向のリスキリングを通じて「 eBPF ネイティブ」な 人材を育てていく必要がある。 •日本には「 eBPF を理解できる人が少ない」のではなく、「 eBPF ネイティ ブ人材になれる素地を持つ人が多い」と捉えたい。 日本での人材育成 -
© 2025 Cloud Native Computing Foundation 25 •negative dentry cache
増大原因の把握 •HPACK によるヘッダフィールド圧縮への対応 •Go のスタックが可変なことによる uretprobes が使えない問題 ・・・ 「アプリケーションを理解する必要がある」事例 -
© 2025 Cloud Native Computing Foundation 26 •negative dentry は、ファイルシステムが「この名前のファイルやディレクトリは存
在しない」という情報。これがなぜか増えていくことがある。 negative dentry cache 増大原因の把握 https://qiita.com/kentaost/items/a2e882d2978fba9e17d3 -
© 2025 Cloud Native Computing Foundation 27 •たとえば、 存在しないファイル名に access(2)
を繰り返すことで大量に増えていく。 negative dentry cache 増大原因の把握 2014 年の事例では、 SSL 通信 に用いる nss に起因して access(2) が繰り返されていた。 -
© 2025 Cloud Native Computing Foundation 28 •アプリケーションがどのようなシステムコールを発行するか?なぜ、そのような挙動 をするか理解する必要がある。 •一方、
2014 年の事例の時と比較して、モダンな Linux カーネルの挙動はどんどん複 雑になっている。 •cgroupv2 配下のメモリ直接回収処理と、 kswapd によるシステムグローバルな回収 処理は挙動が異なるため、たとえばメモリ回収処理によるシステム負荷やレイテンシ への影響を理解するためには、カーネルの知識も必要 アプリケーションもカーネルも大事 !! -
© 2025 Cloud Native Computing Foundation 30 •eBPF は オブザーバビリティ・ネットワーク・セキュリティ分野で強力な基盤
となったが、長期運用されるシステムでは次のような課題で実用が難しい。 ◦ カーネルバージョンの分岐と互換性問題 ◦ Verifier の後方非互換・回帰 ◦ BTF / CO-RE の不完全対応 ◦ ユーザー空間ツールと古いカーネルの乖離 •特に sched_ext など、 eBPF がカーネル拡張機構そのものとして利用され 始めており、 長期的な安定利用に向けた対応が急務 問題意識 -
© 2025 Cloud Native Computing Foundation 31 •kprobes ◦ カーネル関数の実装が変われば、
eBPF プログラムの動作に影響が出る。 •uprobes ◦ ユーザ空間の関数の実装が変われば、 eBPF プログラムの動作に影響が出る。 •Tracepoint ◦ 実は安定した ABI として定義されているものではなく、まれに変更されること がある。 ◦ 実際に Tracepoint の変更で、 libbpf-tools にリグレッションが発生した事例が ある。 不安定なプログラミングインターフェイス -
© 2025 Cloud Native Computing Foundation 33 •eBPF プログラムの署名 ◦
ついに bpf-next にマージされたが、まだ課題も多い。 ◦ サプライチェーン全体のセキュリティも考えていかなければならない。 ▪ [参考] CNCF のサプライチェーンセキュリティ •System Hardening と eBPF ◦ (AGL のドキュメントによると ) カーネルのデバッグ情報を残した り、 kprobes を有効化した状態で出荷することは望ましくない。 •eBPF 自体のセキュリティに関するレポートは eBPF Foundation が提供 ◦ eBPF Security Threat Model produced by ControlPlane ◦ eBPF Verifier Code Audit produced by NCC Group セキュリティ -
© 2025 Cloud Native Computing Foundation 34 •プロダクション環境のカーネルではデバッグシンボル等の情報を除去すべき (AGL のドキュメントにも記載
) だが、 eBPF プログラムを稼働させるため には、ほぼ BTF については必須 ◦ サードパーティアプリケーション等に読み取られたりしたら危ない? •現在アップストリームでは、インライン化された関数に対しても BTF を扱 えるようにする動きがあり、情報量が増えていく見込み。 •実システムで動作させる eBPF プログラムに必要な BTF のみを残すこと で、セキュリティリスクは軽減できる? セキュリティ : BTF の扱い -
© 2025 Cloud Native Computing Foundation 35 •長期運用・組込み向けに安定した eBPF 機能セットを定義する構想
•内容例 ◦ 安定した helper / kfunc 等の定義 ◦ 長期間変わらない Verifier 制約 ▪ これは特に難しそう ◦ 推奨ツールチェーン( libbpf, clang など) の指定 ◦ 任意の適合テストや認証プロセス •期待効果 ◦ バックポート作業の軽減 ◦ LTS 間での予測可能な挙動 ◦ ベンダー間連携の促進 ◦ 長期利用に対する開発者の信頼向上 [ 仮 ] eBPF Embedded Profile -
© 2025 Cloud Native Computing Foundation 36 [ 原案 ]
アップストリームだけじゃだめですか? -
© 2025 Cloud Native Computing Foundation 37 適合テスト・認証プロセス 検討案 観点
検討内容の例 検討結果の例 実行時安定性 長時間稼働・低リソース下での挙動 bpf_ringbuf_reserve() が失敗する可能性あり リアルタイム性 IRQ 対応や sleep 要否 bpf_copy_from_user() は sleepable 必須 電力効率 高頻度ポーリングの有無 perf_event_output が busy loop 化 維持管理性 BTF/Verifier 更新による再ビルド要否 bpf_map_lookup_elem() の挙動差あり セキュリティ履歴 過去の悪用事例の有無 bpf_probe_write_user() の悪用事例あり デプロイ容易性 クロスビルド・静的リンク対応 libclang ABI 不一致の事例あり -
© 2025 Cloud Native Computing Foundation 38 •本日紹介した機能以外にも、 BPF Token
など、これまで課題となっていた eBPF 自体のセキュリティの課題にも対処できるような機能が続々と登場し ている。 •着々と今後 10 年間、インフラストラクチャ開発者にとって戦略的なプラッ トフォームの選択肢になっていくための準備が進んでいる。 •一方、 eBPF に精通した技術者の育成や組み込み領域への展開にはまだ課 題があるため、多くのコミュニティと連携し解決方法を模索していきたい。 Key Takeaways -
© 2025 Cloud Native Computing Foundation 39 •https://ebpf.io/ •Keynote: eBPF:
Unlocking Innovation in the Linux Kernel - Daniel Borkma nn, Distinguished Software Engineer, Isovalent at Cisco and co-creator of eBPF and Cilium •https://docs.automotivelinux.org/ •sched_ext: Implement cgroup sub-scheduler support •https://www.linuxfoundation.org/research/state-of-ebpf •CPU controller on a single runqueue •https://speakerdeck.com/kentatada/embedded-container-runtime-updat es-the-container-performance-issues-caused-by-the-cgroup •https://qiita.com/kentaost/items/a2e882d2978fba9e17d3 References