Kops: Safely Extending the eBPF Compilation Pipeline with Native Operations
Kopsは、ユーザー空間のコンパイラやカーネルモジュールが新しいネイティブ操作を導入することを可能にし、それらをバニラeBPFの証明シーケンスを通じて検証することで、カーネルの信頼されたコンピューティングベースを拡大することなく大幅なパフォーマンス向上を実現する、eBPFプログラムを加速させる安全な拡張インターフェースである。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
オペレーティングシステム(コンピュータの「脳」)が、非常に厳格なセキュリティガードを持っていると想像してください。このガードマンは「eBPF Verifier」と呼ばれ、カーネル内で実行されるあらゆる小さなプログラム(交通整理の警官やセキュリティスキャナーのようなもの)を、実行前にチェックします。このガードマンは非常に慎重で、非常にシンプルで安全な言語で書かれたプログラムのみを許可します。
ガードマンが「よし、これは安全だ」と言えば、翻訳者(JIT Compiler)がそのシンプルな言語を、コンピュータのネイティブな言語へと変換し、高速に動作できるようにします。
問題点:「一語ずつ」の翻訳者
この論文では、現在の翻訳者が非常にシンプルで信頼できる設計であることを説明しています。翻訳者は、安全なプログラムを一度のパスで、一回につき一つの命令ずつ翻訳します。先読みをしたり、賢い工夫をしたりすることはありません。
これは、慣用句やショートカットの使用を禁じられた翻訳者のようなものです。もしあなたが「数値を回転させる(rotate)」と言いたい場合、安全な言語にはそれに対応する単一の言葉がありません。そのため、翻訳者は同じことを説明するために、10個の異なる言葉を使って、長く、使いにくい文章を書かなければなりません。
- 結果: コンピュータは、単一の強力なコマンドを実行する代わりに、長く、乱雑な文章を読み込み、実行しなければなりません。これにより、eBPFプログラムは本来のネイティブ言語で直接書かれた場合よりも、最大で2倍遅くなってしまいます。
解決策:Kops(「魔法のパスポート」)
著者らは、Kopsと呼ばれるシステムを作り出しました。Kopsは、セキュリティガードのルールを破ることなく、コンピュータが強力なネイティブのショートカットを使用できるようにする、特別な「魔法のパスポート」システムだと考えてください。
仕組みは以下の通りです(簡単な比喩を用いて説明します):
二部構成のパスポート: すべての新しい「ショートカット」(ハードウェアの回転や条件付き選択など)には、2つのパーツが付随しています。
- 証明(安全なバージョン): 安全な言語で書かれた、長く、退屈で、ステップバイステップの解説です。セキュリティガードは、これが安全であることを確認するためにこれをチェックします。
- ネイティブ・エミット(魔法のバージョン): コンピュータのハードウェアが実際に実行する、単一の強力な命令です。
プロセス:
- プログラムが実行される前に、「認識器(Recognizer)」(カーネルの外にあるスマートなツール)がパターンを探します。もし、既知のショートカットに一致する長い、使いにくい文章を見つけた場合、それを「魔法のパスポート」へと置き換えます。
- セキュリティガードは、依然として長い、退屈な「証明」バージョンを見ています。それは、それが安全であることを確認し、ゴーサインを出します。
- 翻訳者は、次に「魔法のパスポート」を見ます。長い文章を翻訳する代わりに、それを単一の強力なネイティブ命令へと単純に置き換えます。
安全性の保証: セキュリティガードは「魔法」のバージョンを一度も見ません。それは「証明」のみを信頼します。システムにおいて新しく信頼する必要があるのは、「証明」を「魔法」の命令へと変換する特定のコードだけです。著者らは、Lean 4と呼ばれるツールを使用して、「魔法」の命令が長い「証明」の文章と全く同じものであることを数学的に証明しました。
何を作ったのか?(EInsn)
Kopsを使用して、彼らはEInsnと呼ばれる7つの特定のショートカットのセットを構築しました。これらは、コンピュータが一度のステップで行うのが得意なこと(ビットの回転や、2つの値の選択など)ですが、安全な言語では通常、多くのステップで行うよう強制されるものです。
結果
- 速度: これらのショートカットを使用することで、一部のコンピュータではeBPFプログラムの実行速度が24%向上し、他のコンピュータでは22%向上しました。実際のアプリケーション(ネットワークトラフィック管理など)では、最大で12%のスピードアップが見られました。
- 安全性: セキュリティガードのルールを変更したり、翻訳者を複雑にしたりする必要はありませんでした。「信頼される」部分は、極めて小さく安全なままでした。
- 柔軟性: もしコンピュータが特定のショートカットをサポートしていない場合は、システムは単に長い、安全なバージョンへとフォールバック(切り替え)します。システムが壊れることはありません。
大きな全体像
あなたが車(コンピュータ)を運転していると想像してください。現在のルールでは、スピードメーターが故障しており、5マイル刻みでしか読み取れないため、時速20マイルで走らなければならないとされています。たとえ道が空いていても、それ以上速く行くことはできません。
Kopsは、「私たちはあなたが安全に運転していることを知っています(証明)」ということを示す特別な免許証のようなものです。「だから、特定の承認された道路の上であれば、車の実際のスピードメーターを使用して、より速く走ることを許可します」。
彼らは、この新しい運転方法が従来の方法と同じくらい安全でありながら、目的地に到達する時間を大幅に短縮できることを証明しました。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。