このプロジェクトについて
Hyperlightは、アプリケーション内にライブラリとして組み込むことを目的とした軽量なVirtual Machine Manager(VMM)であり、ハイパーバイザ分離されたマイクロ仮想マシン内で信頼できないコードを実行できるようにします。Cloud Native Computing Foundationのサンドボックスプロジェクトであり、現在はpre-1.0のため、APIはリリース間で変更される可能性があります。
仕組み: ホストアプリケーションはゲストバイナリからサンドボックスを構築し、ローカル関数とほぼ同様にVM境界を越えて関数を呼び出します。ゲストはno_std RustまたはCで書かれた専用のELFバイナリで、ゲストカーネルやオペレーティングシステムを持たないため、起動時間とメモリフットプリントを低く抑えられます。ホストとゲストは型付き関数呼び出しを通じて通信し、ゲストはデフォルトでサンドボックス化されており、ホストのファイルシステムやネットワークにアクセスできません。ゲストの状態は呼び出しをまたいで保持され、snapshot()/restore()でVMメモリを保存およびリセットできるため、VMを再作成せずにサンドボックスを再利用できます。
サポートされるハイパーバイザにはKVM、MSHV、Windows Hypervisor Platformが含まれます。READMEには、ホスト関数を登録してゲストを呼び出すホストの例と、#[host_function]や#[guest_function]などのマクロを使用するゲストの例が示されています。
想定されるユースケースには、ハイパーバイザレベルの分離で信頼できないコードやサードパーティコードを実行すること、ミリ秒単位でサンドボックスを作成および破棄すること、マイクロ秒単位でゲスト関数呼び出しを行うこと、サンドボックス化された実行をアプリケーションに組み込むこと、ハイパーバイザ分離を備えたFunctions-as-a-Serviceを構築すること、snapshotとrestoreによってサンドボックスを再利用することが含まれます。このプロジェクトは、汎用仮想化や、syscall、ネットワーキング、ファイルシステムアクセスを必要とする完全なLinuxゲストワークロードの実行を目的としていないと明記しています。
リポジトリは、ホストライブラリとゲストライブラリ、C APIラッパー、picolibcから構築されたゲストlibc、ゲストおよびコンポーネントマクロ、トレーシングサポート、共有共通コード、FlatBufferスキーマ定義、トレースダンプツール、RustおよびCのテストゲストプログラムで構成されています。関連プロジェクトには、ゲストのビルドとスキャフォールディングを行うcargo-hyperlight、WebAssemblyモジュール向けのhyperlight-wasm、JavaScript向けのhyperlight-js、Python、.NET、Rust SDKを備えたマルチバックエンドサンドボックス化向けのhyperlight-sandbox、UnikraftをゲストカーネルとしてLinuxアプリケーションを実行するhyperlight-unikraftがあります。ドキュメント、コントリビューションガイドライン、コミュニティミーティングの詳細はリポジトリで提供されています。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.