歴史
eBPFは、古典的なBerkeley Packet Filter(cBPF、後付けで付けられた名称)から発展したものです。最も基本的なレベルでは、10個の64ビットレジスタ(cBPFの2つの32ビット長レジスタの代わりに)、異なるジャンプセマンティクス、呼び出し命令とそれに対応するレジスタ渡し規約、新しい命令、およびこれらの命令の異なるエンコーディングが導入されました。[ 13 ]
建築と概念
eBPFマップ
eBPF マップは、カーネル空間に存在する効率的なキー/バリュー ストアであり、複数の eBPF プログラム間でデータを共有したり、ユーザー空間アプリケーションとカーネルで実行されている eBPF コード間で通信したりするために使用できます。eBPF プログラムは、eBPF マップを利用して、さまざまなデータ構造でデータを格納および取得できます。マップの実装はコア カーネルによって提供されます。ハッシュ マップ、配列、リング バッファなど、さまざまなタイプがあります[ 44 ] 。
実際には、eBPF マップは通常、ユーザー空間プログラムが eBPF プログラムによって取得される構成情報を書き込み、eBPF プログラムが別の eBPF プログラム (または同じプログラムの将来の実行) によって後で取得するために状態を保存し、eBPF プログラムが結果やメトリックをマップに書き込み、結果を表示するユーザー空間プログラムによって取得するなどのシナリオで使用されます。[ 45 ]
テールコール
末尾呼び出しは、通常のプロセスに対するexecve()システムコールと同様に、別の eBPF プログラムを呼び出して実行し、実行コンテキストを置き換えることができます。これにより、基本的に eBPF プログラムが別の eBPF プログラムを呼び出すことができます。末尾呼び出しはロングジャンプとして実装され、同じスタック フレームを再利用します。末尾呼び出しは、スタックが 512 バイトに制限されている eBPF で特に役立ちます。実行時に、機能をアトミックに追加または置き換えることで、BPF プログラムの実行動作を変更できます。[ 46 ]末尾呼び出しの一般的な使用例は、eBPF プログラムの複雑さを複数のプログラムに分散することです。もう 1 つの使用例は、プログラム配列の使用中にその内容を置き換えることでロジックを置き換えたり拡張したりすることです。たとえば、ダウンタイムなしでプログラム バージョンを更新したり、ロジックを有効/無効にしたりする場合などです。[ 47 ]
BPFからBPFへの呼び出し
ソフトウェア開発では、共通のコードを関数にグループ化し、ロジックをカプセル化して再利用性を高めるのが一般的に良い方法と考えられています。Linux カーネル 4.16 および LLVM 6.0 より前は、一般的な eBPF C プログラムでは、コンパイラに関数をインライン化するように明示的に指示する必要があり、結果として重複した関数を含む BPF オブジェクト ファイルが生成されていました。この制限は解除され、現在では主流の eBPF コンパイラが eBPF プログラムで関数を自然に記述することをサポートしています。これにより、生成される eBPF コード サイズが削減され、CPU 命令キャッシュにとってより扱いやすくなります。[ 45 ] [ 46 ]
eBPF検証ツール
検証器は eBPF の中核コンポーネントであり、その主な役割は eBPF プログラムが安全に実行できることを保証することです。検証器は eBPF バイトコードの静的解析を実行して安全性を保証します。検証器はプログラムを解析して、考えられるすべての実行パスを評価します。命令を順番に実行して評価します。検証プロセスは、プログラムのすべての可能なパスを深さ優先探索することから始まります。検証器は、抽象解釈を使用して各命令の実行をシミュレートし、[ 48 ]レジスタとスタックの状態を追跡します。いずれかの命令が安全でない状態につながる可能性がある場合、検証は失敗します。このプロセスは、すべてのパスが解析されるか、違反が見つかるまで続きます。プログラムの種類に応じて、検証器は特定のルールの違反をチェックします。これらのルールには、eBPF プログラムが常に妥当な時間内に終了すること (無限ループや無限再帰がないこと) の確認、任意のメモリを読み取ることができるとプログラムが機密情報を漏洩する可能性があるため、eBPF プログラムが任意のメモリを読み取ることが許可されていないことの確認、隣接するメモリに機密情報が含まれている可能性があるため、ネットワーク プログラムがパケット境界外のメモリにアクセスすることが許可されていないことの確認、プログラムがデッドロックしないことの確認 (複数のプログラム間でデッドロックを回避するために、保持されているスピンロックはすべて解放され、一度に 1 つのロックのみが保持される)、プログラムが初期化されていないメモリを読み取ることが許可されていないことの確認などが含まれます。これは検証者が行うチェックの網羅的なリストではなく、これらのルールには例外があります。たとえば、トレース プログラムには、制御された方法でメモリを読み取ることができるヘルパーにアクセスできますが、これらのプログラム タイプにはルート権限が必要なため、セキュリティ リスクはありません。[ 47 ] [ 45 ]
eBPF検証ツールは、時間の経過とともに進化し、境界付きループのサポート、デッドコード除去、関数ごとの検証、コールバックなどの新しい機能や最適化が含まれるようになりました。
eBPF CO-RE(一度コンパイルすれば、どこでも実行可能)
eBPF プログラムはカーネルのメモリとデータ構造を使用します。一部の構造はカーネルのバージョンによって変更される可能性があり、メモリレイアウトが変わります。Linux カーネルは継続的に開発されているため、内部データ構造が異なるバージョン間で同じままであるという保証はありません。CO-RE は、eBPF プログラムを異なるカーネルバージョンや構成間で移植可能にする、最新の eBPF 開発における基本的な概念です。これは、異なるLinux ディストリビューションやバージョン間のカーネル構造の変動という課題に対処します。CO-RE は、カーネルと eBPF プログラムで使用される型を記述し、構造体レイアウト、フィールドオフセット、データ型に関する詳細情報を提供するメタデータ形式である BTF (BPF Type Format) で構成されています。これにより、カーネル型へのランタイムアクセスが可能になり、これは BPF プログラムの開発と検証にとって非常に重要です。BTF は、BTF 対応カーネルのカーネルイメージに含まれています。特別な再配置がコンパイラ(LLVM など) によって出力されます。これらの再配置は、eBPF プログラムがアクセスしようとしている情報に関する高レベルの記述をキャプチャします。 libbpfライブラリは、eBPFプログラムが実行されるターゲットカーネルのデータ構造レイアウトに合わせて調整します。このレイアウトが、コードがコンパイルされたカーネルのレイアウトと異なっていても調整可能です。そのためには、libbpfはコンパイルプロセスの一部としてClangによって生成されたBPF CO-RE再配置情報が必要です。[ 45 ]コンパイルされたeBPFプログラムは、実行可能リンク可能フォーマット(ELF)オブジェクトファイルに格納されます。このファイルには、BTFタイプの情報とClangによって生成された再配置情報が含まれています。ELFフォーマットにより、eBPFローダー(libbpfなど)は、ターゲットカーネルに合わせてBPFプログラムを動的に処理および調整できます。[ 49 ]
ブランディング
eBPF という別名は、Linux カーネル コミュニティなどで BPF とよく同義語として使われています。[ 2 ] [ 50 ] eBPF と BPF は、 LLVMのような技術名として言及されています。[ 2 ] eBPF は、 Berkeley Packet Filterのフィルタリング仮想マシンのマシン 言語から拡張バージョンとして発展しましたが、その使用例がネットワークの範囲を超えたため、今日では「eBPF」は擬似頭字語として解釈されることが多くなっています。[ 2 ]
ミツバチはeBPFの公式ロゴです。最初のeBPFサミットで投票が行われ、ミツバチのマスコットは「eBee」と名付けられました。[ 51 ] [ 52 ]このロゴは元々Vadim Shchekoldinによって作成されました。[ 52 ]過去には非公式のeBPFマスコットが存在しましたが、[ 53 ]広く採用されることはありませんでした。
ガバナンス
eBPF Foundation は、eBPF の強力な機能を拡張し、Linux を超えて成長するための貢献を拡大することを目標として、2021 年 8 月に設立されました。[ 1 ]創設メンバーには、 Meta、Google、Isovalent、Microsoft、Netflixが含まれます。その目的は、eBPF テクノロジーに関連するさまざまなオープンソース、オープンデータ、および/またはオープンスタンダードプロジェクトを支援するために資金を調達、予算化、支出することであり[ 54 ]、eBPF エコシステムの成長と採用をさらに促進することです。設立以来、Red Hat、Huawei、Crowdstrike、Tigera、DaoCloud、Datoms、FutureWei も参加しています。[ 55 ]
採択
eBPFは、例えば以下のような多くの大規模生産ユーザーに採用されています。
安全
プログラマビリティの容易さから、eBPF は脆弱なマイクロプロセッサに対するSpectreなどのマイクロアーキテクチャのタイミングサイドチャネル攻撃を実装するためのツールとして使用されてきました。[ 100 ]非特権 eBPF はx86-64の Spectre v1、v2、v4 に対する緩和策を実装していますが、[ 101 ] [ 102 ]最終的に、サポートされていないアーキテクチャのユーザーを保護し、将来のハードウェア脆弱性の影響を制限するために、カーネル コミュニティによって非特権の使用はデフォルトで無効になっています。[ 103 ] x86-64 では、Spectre v1 は分岐なし境界強制 (命令のマスキングなど) と投機的実行パスの検証の組み合わせによって緩和されます。Spectre v4 は投機的バリア (lfence など) によってのみ緩和され、Spectre v2 は利用可能な場合は retpoline [ 104 ]または投機的バリアによって緩和されます。これらの対策は、カーネルが所有する機密情報(カーネルアドレスなど)が悪意のあるeBPFプログラムによって漏洩するのを防ぐものですが、無害なeBPFプログラムが所有/処理する機密情報(数値として保存されている暗号鍵など)を誤って漏洩するのを防ぐようには設計されていません。[ 102 ]
参考文献
- 1 2 3 「Meta、Google、Isovalent、Microsoft、NetflixがLinux Foundationの一部としてeBPF Foundationを設立」。Linux Foundation。2021年8月12日。 2022年7月1日取得。
- 1 2 3 4 5 「BPF の内部構造」 USENIX LISA 2021 カンファレンス 2021年 6 月 1 日2022 年7月 1 日取得
- ↑ 「eBPFとKubernetes:マイクロサービスのスケーリングのための小さなヘルパーミニオン」。CNCF KubeCon + CloudNativeCon Europe 2020。 2020年8月19日。 2022年7月1日取得。
- 1 2 3 「Windows で eBPF を動作させる」。Microsoft Open Source Blog。2021年5 月 10 日。2022年7 月 1 日取得。
- 1 2 "eBPF ドキュメント: eBPF とは?" . eBPF.io . 2022 年7 月 1 日取得.
- ↑ 「eBPF - Linuxカーネルの再考」。QCon 2020。2022年7月1日取得。
- ↑ 「安全なプログラム BPF の基盤」。eBPFサミット 2021。2020年 11 月 8 日。2022年7 月 1 日取得。
- ↑ 「BPFとSpectre:一時的な実行攻撃の軽減」。POPL 2022カンファレンス。2022年1月22日。 2022年7月1日取得。
- ↑ 「eBPF - クラウドネイティブによる静かなプラットフォーム革命」(PDF)。SIGCOMM 2023、eBPFとカーネル拡張に関する第1回ワークショップ。2023年9月10日。 2023年10月5日取得。
- ↑ Hedam, Niclas (2023年5月26日). "eBPF - プログラマの視点から" (PDF) . doi : 10.13140/RG.2.2.33688.11529/4 .
- ↑ 「Linux BPF の超能力」。ブレンダン・グレッグのブログ。2016 年 3 月 5 日。2022年7 月 1 日取得。
- ↑ 「Linus TorvaldsがLinux開発への復帰について語る」。zdnetによるLinus Torvaldsへのインタビュー。2018年10月23日。 2022年7月1日閲覧。
- ↑ 「Classic BPF vs eBPF」 . LWN . 2014年3月. 2023年1月6日取得.
- ↑ "net: filter: Just In Time compiler" . 2011年4月. 2022年7月1日取得.
- ↑ 「seccompへのまた新たなアプローチ」 . LWN . 2012年1月1日. 2022年7月1日取得.
- ↑ " [ PATCH net-next v4 0/9 ] BPF アップデート" . 2014 年 3 月. 2022 年7 月 1 日取得.
- ↑ "Linux カーネル 3.18、セクション 1.3. eBFP [ sic ]仮想マシン プログラム用の bpf() システムコール" . kernelnewbies.org . 2014 年 12 月 7 日. 2019 年9 月 6 日取得.
- 「BPF、誕生日おめでとう!」 2021年9月2022年7月1日取得
- ↑ " [ PATCH v5 tip 3/7 ]トレース: BPF プログラムが bpf_ktime_get_ns() を呼び出すことを許可する" . 2015 年 3 月. 2022 年7 月 1 日取得.
- ↑ " [ RFC PATCH net-next 0/7 ] cls_bpf の eBPF サポート" . 2015 年 3 月. 2022 年7 月 1 日取得.
- ↑ " [ PATCH net-next v2 ] net, sched: add clsact qdisc" . 2016年1月. 2022年7月1日取得.
- 1 2 「eBPF ベースのネットワーク、可観測性、セキュリティ」 . cilium.io . 2016 年 1 月. 2022 年7 月 1 日に取得.
- ↑ "LLVM 3.7 リリースノート" . releases.llvm.org . 2015 年 8 月. 2022 年7 月 1 日取得.
- ↑ "bcc: Linux 4.3+ トレースの超能力を使いこなす" . brendangregg.com . 2015 年 9 月. 2022 年7 月 1 日取得.
- ↑ " [ PATCH v10 00/12 ]早期パケットドロップと転送のためのドライバbpfフックを追加" . 2016年7月. 2022年7月1日取得.
- ↑ "eCHO エピソード 9: XDP とロードバランシング" . youtube.com . 2021 年 6 月. 2022 年7 月 1 日取得.
- ↑ Høiland-Jørgensen, Toke; Brouer, Jesper Dangaard; Borkmann, Daniel; Fastabend, John; Herbert, Tom; Ahern, David; Miller, David (2018年12月)「eXpressデータパス:オペレーティングシステムカーネルにおける高速プログラマブルパケット処理」第14回新興ネットワーク実験技術に関する国際会議議事録、pp . 54–66。doi : 10.1145 /3281411.3281443。ISBN 9781450360807. S2CID 53779310 .
- ↑ 「Cilium - BPFとXDPを使用した高速IPv6コンテナネットワーク」。slideshare.net 。2016年8月。 2022年7月1日取得。
- 1 2 「新しい GKE Dataplane V2 により、コンテナのセキュリティと可視性が向上します」 cloud.google.com . 2021 年 5 月. 2022 年8 月 16 日に取得.
- ↑ " [ PATCH net-next resend 00/13 ]リング再構成と XDP サポート" . 2016 年 11 月. 2022 年7 月 1 日取得.
- 1 2 「XDP 1.5 年間の運用。進化と教訓」 lpc.events 2018年 11 月2022年8 月 16 日取得
- ↑ "pull-request: bpf 2017-11-23" . 2017年11月. 2022年7月1日取得.
- ↑ " [ PATCH net-next 0/2 ] tools: add bpftool" . 2017年9月. 2022年7月1日取得.
- ↑ " [ RFC PATCH 00/24 ] AF_XDP サポートの導入" . 2018 年 1 月. 2022 年7 月 1 日に取得.
- ↑ 「AF_XDP ポーリング モード ドライバー」。doc.dpdk.org。 2022 年 8 月。2022 年8 月 16 日に取得。
- ↑ 「BPFがファイアウォールに登場」 . lwn.net . 2018年2月. 2022年7月1日取得.
- ↑ 「カーネルコミュニティはなぜiptablesをBPFに置き換えているのか?」。cilium.io。2018年4月。 2022年7月1日取得。
- ↑ "bpftrace (DTrace 2.0) for Linux 2018" . brendangregg.com . 2018年10月. 2022年8月16日取得.
- ↑ Borkmann, Daniel; Fastabend, John (2018年11月14日). "イントロスペクションとポリシー強制のためのkTLSとBPFの組み合わせ" (PDF) . vger.kernel.org . バンクーバー: Linux Plumbers Conference . 2025年8月31日取得.
- ↑ 「BTF重複排除とLinuxカーネルBTF」 . nakryiko.com . 2018年11月. 2022年7月1日取得.
- ↑ 「BPF Performance Tools (book)」 . brendangregg.com . 2019年12月. 2022年8月16日取得.
- ↑ " [ PATCH bpf-next v9 0/8 ] eBPF を使用した MAC および監査ポリシー (KRSI)"。2020 年 3 月。2022年8 月 16 日に取得。
- ↑ 「GCCにおけるBPF」 . lwn.net . 2020年9月. 2022年8月16日取得.
- ↑ "bpf.h - include/uapi/linux/bpf.h - Linux ソースコード v5.15.86 - Bootlin" . elixir.bootlin.com . 2024-08-01に取得.
- 1 2 3 4 5 Rice, Liz (2023). Learning eBPF: programming the Linux Kernel for enhanced observability, networking, and security (First ed.). Sebastopol, CA: O'Reilly Media. ISBN 978-1-0981-3512-6OCLC 1353981026。
- 1 2 3 "BPFアーキテクチャ - Cilium 1.16.0ドキュメント" . docs.cilium.io . 2024-08-01に取得.
- 1 2 "末尾呼び出し - eBPF ドキュメント" . ebpf-docs.dylanreimerink.nl . 2024-08-04に取得.
- ↑ Shachnai, Matan; Vishwanathan, Harishankar; Narayana, Srinivas; Nagarakatte, Santosh. "LinuxカーネルのeBPF検証器における潜在的な不健全な抽象演算子の修正" (PDF) .静的解析. Springer Nature Switzerland. pp. 386–406 . doi : 10.1007/978-3-031-74776-2_15 . ISBN 978-3-031-74776-22025年2月2日に取得。
- ↑ "BPF CO-RE - eBPF Docs" . ebpf-docs.dylanreimerink.nl . 2024年8月7日取得.
- ↑ブレンダン・グレッグ(2019年12月)。BPFパフォーマンスツール。アディソン・ウェスリー。ISBN 978-0136554820。
- ↑ 「eBPFサミット2日目」 . cilium.io . 2020年10月. 2022年7月1日取得.
- 1 2 「その蜂の名前は何ですか?」 . ebpf.io . 2022年7月1日取得.
- ↑ 「eBPF: 小さな一歩」。ブレンダン・グレッグのブログ。2015年5月。 2022年7月1日取得。
- ↑ 「eBPF財団憲章」。ebpf.foundation 。2021年6月。 2022年8月16日取得。
- ↑ 「eBPF Foundation ガバナンス」。ebpf.foundation。2022年 8 月。2022年8月 16 日に取得。
- ↑ 「スケーラブルなネットワークロードバランサーであるKatranをオープンソース化」。fb.com。2018年5月。 2022年8月16日取得。
- ↑ 「Facebook の BPF」 . youtube.com . 2019 年 12 月. 2022 年8 月 16 日に取得.
- ↑ 「XDPからソケットへ」。lpc.events。2021年9月。 2022年8月16日取得。
- ↑ "eCHO エピソード 29: BPF LSM with KP Singh" . youtube.com . 2021 年 11 月. 2022 年8 月 16 日取得.
- ↑ 「GoogleにおけるBPFセキュリティ監査 - Brendan Jackman/KP Singh」 . youtube.com . 2021年11月. 2022年8月16日取得.
- ↑ 「HTB を EDT と BPF に置き換える」 . netdevconf.info . 2020 年 7 月. 2022 年8 月 16 日に取得.
- ↑ 「CloudflareのアーキテクチャとBPFが世界を席巻する方法」 . blog.cloudflare.com . 2019年5月. 2022年8月16日取得.
- ↑ 「ここは混んでるよ!」。blog.cloudflare.com。2019年10月。 2022年8月16日取得。
- ↑ 「本番環境対応のeBPF、またはBSDソケットAPIの修正方法」。blog.cloudflare.com。2022年2月。 2022年8月16日取得。
- ↑ 「eBPF Linux Security Module を使用した Linux カーネル内のセキュリティ脆弱性のライブパッチ適用」。blog.cloudflare.com。2022年6 月。2022年8 月 16 日に取得。
- ↑ 「Unimog - Cloudflareのエッジロードバランサー」。blog.cloudflare.com。2020年9月。 2022年8月16日取得。
- ↑ 「Netflixがネットワーク分析のためにeBPFフローログを大規模に活用する方法」 . netflixtechblog.com . 2021年6月. 2022年8月16日取得.
- ↑ 「eBPFを使用してVectorを拡張し、ホストとコンテナのパフォーマンスを検査する」 . netflixtechblog.com . 2019年2月. 2022年8月16日取得.
- ↑ 「Dropboxトラフィックインフラストラクチャ:エッジネットワーク」 . dropbox.tech . 2018年10月. 2022年8月16日取得.
- ↑ 「eBPFトラフィック監視」。source.android.com。2022年8月。 2022年8月16日取得。
- ↑ 「eBPFによるカーネルの拡張」。source.android.com。2022年 8 月。2022年8 月 16 日に取得。
- ↑ " [ PATCH v5 1/3 ] selftests: bpf: add test for bpf_skb_change_proto" . 2022年4月. 2022年8月16日取得.
- ↑ 「Android 用 BPF: ネットワーク ソリューションに BPF をどのように活用しているか - Madhan Raj Kanagarathinam」。www.youtube.com。2024年 2 月。2022年2月 19 日に取得。
- ↑ Yahoo!におけるKubernetesサービスのソフトウェアL4ロードバランシング – Karthikeyan Thangaraj、Verizon Media、2021年8月19日、 2024年2月3日取得
- ↑ 「Skyfall: インフラストラクチャの可観測性のためのeBPFエージェント」。www.linkedin.com。2024年2月3日取得。
- ↑ 「Alibaba Cloudはどのようにして本番環境で高性能なクラウドネイティブPodネットワークを構築しているのか?」 . alibabacloud.com . 2020年9月. 2022年8月16日取得.
- ↑ 「eBPF 上の Datadog」。datadogon.datadoghq.com。2021年2 月。2022年8 月 16 日に取得。
- ↑ 「eBPF を使用したランタイム セキュリティ監視」(PDF) . sstic.org . 2021 年 2 月. 2022 年8 月 16 日取得.
- ↑ 「Datadog での eBPF の旅 - Laurent Bernaille と Tabitha Sable、Datadog」。youtube.com。 2020年11月。2022 年8 月 16 日に取得。
- ↑ 「ユーザーストーリー - Trip.com が Cilium をどのように利用しているか」 . cilium.io . 2020 年 2 月. 2022 年8 月 16 日取得.
- ↑ "Trip.com: Cilium+BGPでクラウドネイティブネットワーキング時代へ踏み出す" . arthurchiao.art . 2020年11月. 2022年8月16日取得.
- ↑基調講演:Shopifyにおけるコンテナ向けオープンソース侵入検知システム - Shane Lawrence & Kris Nóva、2020年9月4日、 2024年2月9日取得
- ↑ Rogers, Patrick (2023-08-15). "BPFAgent: DoorDash での監視のための eBPF - DoorDash エンジニアリング ブログ" . DoorDash エンジニアリング ブログ. 2024-02-09に取得.
- ↑ 「Windows で eBPF を動作させる方法」 cloudblogs.microsoft.com 2021年 5 月2022年8 月 16 日取得
- ↑ 「Linux ベースの eBPF プログラムをeBPF for Windows で実行する方法」 cloudblogs.microsoft.com 2022年 2 月2022 年8 月 16 日取得
- ↑ 「Windows 上で eBPF を動作させるための進捗状況」 cloudblogs.microsoft.com 2019年 11 月2022年8 月 16 日取得
- ↑ 「Cilium Standalone Layer 4 Load Balancer XDP」 . cilium.io . 2022年7月. 2022年8月16日取得.
- ↑仮想ネットワークにおける内部サービスへのアクセス制限 – Nick Bouliane、DigitalOcean、2021年8月19日、 2024年2月4日取得
- ↑ 「安全で保守しやすいPaaSの構築 - ブラッドリー・ホワイトフィールド、キャピタル・ワン」。youtube.com。2020年11月。 2022年8月16日取得。
- ↑ eBPFが通信事業者のネットワーク分野を変革する理由 – ダニエル・ベルニエ、ベル・カナダ、2021年8月31日、 2024年2月9日取得
- ↑ Elastic Universal Profiling 、 2024年2月26日取得
- ↑ 「カーネルセキュリティ監視のためのeBPFについて考えよう - AppleのFalco - Eric Sage & Melissa Kilby、Apple」。youtube.com。2021年10月。 2022年8月16日取得。
- ↑ "eBPF & Cilium at Sky – Sebastian Duff、Anthony Comtois、Jospeh [ sic ] Samuel、Sky" . youtube.com . 2021年8月. 2022年8月16日取得.
- ↑ 「複数のXDPおよびTCプログラムの実行と調整 – ブライアン・メレル、ウォルマート」。youtube.com。2021年8月。 2022年8月16日取得。
- ↑ 「ウォルマートにおける高性能ロードバランシング – カンティ・パブルリ&カラン・ダラル、ウォルマート」。youtube.com。2021年8月。 2022年8月16日取得。
- ↑ "DIGLIM eBPF: ディストリビューションへの変更を最小限に抑えたアプリケーションレベルでのセキュアブート - Roberto Sassu" . youtube.com . 2022年8月. 2022年8月16日取得.
- ↑ "IKEAプライベートクラウド、eBPFベースのネットワーク、ロードバランシング、およびオブザーバビリティ...Karsten Nielsen" . youtube.com . 2022年5月. 2022年8月16日取得.
- ↑パネルディスカッション:話題の裏には実はバイトがあるのか? eBPFが実運用開始!、2022年10月28日、 2024年2月9日取得
- ↑ユーザー空間トレースを使用して DNS の問題を解決する – Andrius Grabauskas、Palantir、2021 年 8 月 19 日、2024 年 2月 9 日取得
- ↑ 「サイドチャネルによる特権メモリの読み取り」。googleprojectzero.blogspot.com 。2018年1月3日。2022年8月16日取得。
- ↑ 「BPFとSpectre:一時的な実行攻撃の軽減」 . popl22.sigplan.org . 2022年8月16日取得。
- 1 2 Gerhorst, Luis; Herzog, Henriette; Wägemann, Peter; Ott, Maximilian; Kapitza, Rüdiger; Hönig, Timo. "VeriFence: 信頼できない Linux カーネル拡張機能に対する軽量かつ高精度な Spectre 防御" .第 27 回攻撃、侵入、防御に関する国際シンポジウム (RAID '24) の議事録. Association for Computing Machinery. pp. 644–659 . arXiv : 2405.00078 . doi : 10.1145 /3678890.3678907 . 2025 年2 月 2 日取得.
- ↑ "bpf: デフォルトで非特権bpfを禁止" . kernel.org . 2022年8月16日取得.
- ↑ "Linux v6.13 の arch/x86/net/bpf_jit_comp.c の emit_indirect_jump()" . kernel.org . 2025 年2 月 2 日取得.
さらに読む
- グレッグ、ブレンダン(2019年12月)。BPFパフォーマンスツール。アディソン・ウェスリー。ISBN 978-0136554820。
- David Calavera、Lorenzo Fontana (2019年12月)。Linux Observability With BPF。O'Reilly Media, Incorporated。ISBN 978-1492050209。
- グレッグ、ブレンダン( 2020年12月)。システムパフォーマンス、第2版。アディソン・ウェスリー。ISBN 978-0136820154。
- ライス、リズ(2022年4月)。eBPFとは何か? ISBN 978-1492097259。
- ライス、リズ(2023年4月)。eBPFを学ぶ:拡張された可観測性、ネットワーク、およびセキュリティのためのLinuxカーネルのプログラミング。O'Reilly Media。ISBN 978-1098135126。
- Thaler, Dave 編 (2024 年 10 月). BPF 命令セットアーキテクチャ (ISA) . IETF . doi : 10.17487/RFC9669 . RFC 9669. 2024 年 1 月 5 日取得.
外部リンク
- eBPF.io - 概要、チュートリアル、eBPFコミュニティリソース
- eBPF.foundation - Linux FoundationのeBPF Foundationサイト
- eBPF開発者向けチュートリアル:例題を通してeBPFを段階的に学ぶ
- eBPFドキュメンタリー - eBPFの始まりに関するドキュメンタリー