JP5989862B2 - セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置、方法及び機械可読記憶媒体 - Google Patents

セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置、方法及び機械可読記憶媒体 Download PDF

Info

Publication number
JP5989862B2
JP5989862B2 JP2015134859A JP2015134859A JP5989862B2 JP 5989862 B2 JP5989862 B2 JP 5989862B2 JP 2015134859 A JP2015134859 A JP 2015134859A JP 2015134859 A JP2015134859 A JP 2015134859A JP 5989862 B2 JP5989862 B2 JP 5989862B2
Authority
JP
Japan
Prior art keywords
virtual machine
view
computing device
shared memory
secure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015134859A
Other languages
English (en)
Other versions
JP2016042354A (ja
Inventor
ナカジマ ジュン
ナカジマ ジュン
ツァイ ジェイアール−シアン
ツァイ ジェイアール−シアン
エル. サヒタ ラヴィ
エル. サヒタ ラヴィ
エー. エルギン メスート
エー. エルギン メスート
ヴェルプランケ エドウィン
ヴェルプランケ エドウィン
エヌ. パテル ラシュミン
エヌ. パテル ラシュミン
ダブリュー. ミン アレグザンダー
ダブリュー. ミン アレグザンダー
レン,ワーン
シー. タイ ツーン−ユエン
シー. タイ ツーン−ユエン
Original Assignee
インテル コーポレイション
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2016042354A publication Critical patent/JP2016042354A/ja
Application granted granted Critical
Publication of JP5989862B2 publication Critical patent/JP5989862B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

電気通信及び他のデータネットワーク機能は、ますますネットワークデータセンタに整理統合されつつある。例えば、多くのセルタワーの間でこれまで分配されてきたセルラー基地局機能は、現在、仮想ネットワークデータセンタに整理統合されてよい。例えばパケットスイッチング及びパケットフィルタリングなどのネットワーク機能は、通常は、大量のスモールデータパケットを処理することを必要とする。しかし、そのようなネットワーク機能を1以上のバーチャルマシンにおいて実行することは、バーチャルマシンの分離境界(例えば、メモリ又はI/O分離)に関連するオーバヘッドを導入することがある。オーバヘッドは、特に、スモールデータパケットのバーチャルマシン間通信について、ネットワーク機能仮想化のスループット及びスケーラビリティを制限することがある。
典型的なコンピュータプロセッサは、仮想化動作のためのハードウェアサポートを含む。ソフトウェア仮想化は、ホストオペレーティングシステム又はバーチャルマシンモニタ(VMM;virtual machine monitor)内から1以上のゲストオペレーティングシステムをトランスペアレントに実行することを含む。ハードウェア仮想化機能は、拡張特権モデル、バーチャルメモリアドレッシングのためのハードウェア支援サポート、拡張メモリ許可のためのサポート、及び他の仮想化機能を含んでよい。
ここで記載される概念は、添付の図面において、限定ではなく一例として、表されている。説明の簡単さ及び明りょうさのために、図に表されている要素は必ずしも実寸通りではない。必要に応じて、参照符号は、対応する又は同じ要素を示すために、複数の図において繰り返されている。
セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置の少なくとも一実施形態の略ブロック図である。 図1のコンピューティング装置の環境の少なくとも一実施形態の略ブロック図である。 図1及び2のコンピューティング装置によって実行され得るセキュアなバーチャルマシン間の共有メモリ通信管理のための方法の少なくとも一実施形態の略フロー図である。 図1及び2のコンピューティング装置によって確立され得るバーチャルメモリページテーブル構造を表す概略図である。 図1及び2のコンピューティング装置によって実行され得る共有メモリのアクセス方法の少なくとも一実施形態の略フロー図である。 図1及び2のコンピューティング装置によって実行され得る共有メモリのアクセス許可方法の少なくとも一実施形態の略フロー図である。 図1及び2のコンピューティング装置によって確立され得るセキュアビュー制御構造を表す概略図である。 図1及び2のコンピューティング装置によって実行され得る共有メモリバッファの所有権獲得方法の少なくとも一実施形態の略フロー図である。 図1及び2のコンピューティング装置によって実行され得る共有メモリバッファの所有権の移譲及び再要求の方法の少なくとも一実施形態の略フロー図である。
本開示の概念は、様々な変更及び代替の形態の余地があり、一方、それらの具体的な実施形態は、図面において一例として示されており、ここで詳細に記載される。なお、本開示の概念を、開示されている特定の形態に制限する意図はなく、それどころか、その意図は、本開示及び添付の特許請求の範囲と整合する全ての変更、同等物、及び代替を対象とすることである点が理解されるべきである。
「一実施形態」、「実施形態」、「実例となる実施形態」等との明細書中の言及は、記載されている実施形態が特定の機能、構造、又は特徴を含んでよいが、あらゆる実施形態が必ずしもその特定の機能、構造、又は特徴を含んでも含まなくてもよいことを示す。加えて、そのような言い回しは、必ずしも同じ実施形態に言及しているわけではない。更に、特定の機能、構造、又は特徴がある実施形態に関連して記載される場合に、そのような機能、構造、又は特徴を他の実施形態に関連して達成することは、明示的に記載されていようがなかろうが、当業者の通常の知識範囲内にあると考えられる。加えて、当然ながら、「A、B、及びCのうちの少なくとも1つ」の形で列挙されている項目は、(A);(B);(C);(A及びB);(A及びC);(B及びC);又は(A、B及びC)を意味することができる。同様に、「A、B、又はCのうちの少なくとも1つ」の形で列挙されている項目は、(A);(B);(C);(A及びB);(A及びC);(B及びC);又は(A、B及びC)を意味することができる。
開示されている実施形態は、幾つかの場合に、ハードウェア、ファームウェア、ソフトウェア、又はそれらのいずれかの組み合わせにおいて実装されてよい。開示されている実施形態は、1以上のプロセッサによって読み出されて実行され得る一時的又は非一時的な機械可読(例えば、コンピュータ可読)記憶媒体によって搬送されるか又はそれに記憶される命令としても実装されてよい。機械可読記憶媒体は、機械によって読み出し可能な形で情報を記憶又は送信するための何らかの記憶デバイス、メカニズム、又は他の物理構造として具現されてよい(例えば、揮発性若しくは不揮発性メモリ、メディアディスク、又は他のメディアデバイス)。
図面において、幾つかの構造又は方法機能は、具体的な配置及び/又は順序において示されてよい。しかし、当然ながら、そのような具体的な配置及び/順序は必要とされなくてよい。むしろ、幾つかの実施形態では、そのような機能は、説明図において示されているのとは異なった様態及び/又は順番において配置されてよい。加えて、特定の図における構造又は方法機能の包含は、そのような機能が全ての実施形態において必要とされることを暗示するよう意図されず、幾つかの実施形態では、含まれなくてよく、あるいは、他の機能と組み合わされてよい。
これより図1を参照すると、セキュアなバーチャルマシン間の共有メモリ通信のための実例となるコンピューティング装置100は、プロセッサ120、I/Oサブシステム128、メモリ130、及びデータ記憶装置138を含む。使用において、後述されるように、コンピューティング装置100は、2以上のバーチャルマシン間のセキュアな共有メモリ通信をサポートするよう構成される。特に、対象バーチャルマシン、すなわち、他のソースバーチャルマシンの共有メモリデータにアクセスするバーチャルマシンは、バーチャルマシンモニタ(VMM)によりビュースイッチコンポーネントを認証する。認証は、VMMが共有メモリデータへのアクセスを制御及び制限することを可能にする。対象バーチャルマシンは、共有メモリセグメントへのアクセスを要求する。共有メモリセグメントは、VMM自身によって確立された共有メモリ又はソースバーチャルマシンのメモリページを含んでよい。VMMは、要求された共有メモリセグメントを、コンピューティング装置100のセキュアビュー拡張ページテーブル(EPT;extended page table)に加える。対象バーチャルマシンは、プロセッサ120の仮想化サポートを用いてセキュアビューEPTへ切り替え、次いで、共有メモリセグメントへの通常のメモリアクセスを実行することによって、共有メモリにアクセスしてよい。対象バーチャルマシンは、ソースバーチャルマシンの全てのメモリへのアクセスを有してよく、あるいは、幾つかの実施形態では、ソースバーチャルマシンは、特定の共有メモリセグメントをVMMに登録してよい。
セキュアビューを介して通信することによって、コンピューティング装置100は、夫々のアクセスについてバーチャルマシン終了、ハイパーコール、又はVMMの他の起動を必要とせずに共有メモリへのセキュアアクセスを可能にすることができる。よって、コンピューティング装置100は、例えば、VMMへの不必要なコンテキストスイッチを取り除くことによって、又は引き起こされるEPT無効の回数を減らすことによって、共有メモリ性能を改善することができる。改善された共有メモリ性能は、スモールデータパケット(例えば、63バイトのパケット)のために、又は多数のプロセッサコアのために、バーチャルマシン間の共有メモリ通信を実現可能にすることができる。このことは、つまり、ネットワーク機能仮想化の性能を改善することができる。加えて、対象バーチャルマシン及びソースバーチャルマシンは、共有メモリセグメントを用いて共有メモリバッファの所有権を協調させてよい。メモリバッファ所有権の協調は、不必要なEPT無効を回避することによって、性能を改善することができる。
コンピューティング装置100は、バーチャルマシン間の共有メモリ通信を実行すること及びここで記載される機能を別なふうに実行することが可能な如何なるタイプのデバイスとしても具現されてよい。例えば、コンピューティング装置100は、制限なしに、ワークステーション、サーバコンピュータ、分散型コンピューティングシステム、マルチプロセッサシステム、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、スマートフォン、モバイル型コンピューティング装置、ウェラブル型コンピューティング装置、コンピュータ、デスクトップコンピュータ、消費者電子装置、スマート電気製品、及び/又はバーチャルマシン間の共有メモリ通信が可能な如何なる他のコンピューティング装置としても具現されてよい。図1に示されるように、実例となるコンピューティング装置100は、プロセッサ120、I/Oサブシステム128、メモリ130、及びデータ記憶装置138を含む。当然に、コンピューティング装置100は、他の実施形態では、例えば、タブレットコンピュータにおいて一般的に見られるようなもの(例えば、様々な入出力装置)などの、他の又は更なるコンポーネントを含んでよい。加えて、幾つかの実施形態では、実例となるコンポーネントのうちの1以上は、他のコンポーネントにおいて組み込まれるか、あるいは、その部分を別なふうに形成してよい。例えば、メモリ130、又はその部分は、幾つかの実施形態では、プロセッサ120に組み込まれてよい。
プロセッサ120は、ここで記載される機能を実行することが可能な如何なるタイプのプロセッサとしても具現されてよい。例えば、プロセッサ120は、シングル若しくはマルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、又は他のプロセッサ若しくはプロセッシング/制御回路として具現されてよい。加えて、単一のプロセッサ120を含むものとして表されているが、幾つかの実施形態では、コンピューティング装置100は複数のプロセッサ120を含んでよいことが理解されるべきである。プロセッサ120は、仮想化のためのハードウェアベースの、ハードウェア支援の、又はハードウェアにより促進されたサポートを含む。特に、プロセッサ120は、バーチャルマシン拡張(VMX;virtual machine extensions)サポート122、拡張ページテーブル(EPT)サポート124、及びファストビュースイッチ(FVS;fast view switch)サポート126を含む。VMXサポート122は、2つの実行モード、すなわち、VMXルートモード及びVMX非ルートモードを提供することによって、オペレーティングシステムの仮想実行をサポートする。VMXルートモードは、ソフトウェアがコンピューティング装置100及びそのハードウェアリソースの幅広い制御を持つことを可能にする。然るに、バーチャルマシンモニタ(VMM)又はハイパーバイザはVMXルートモードにおいて実行してよい。VMX非ルートモードは、プロセッサ120の通常のリング/特権システムを依然として実装しながら、特定のハードウェア命令へのアクセスを制限する。よって、1以上のゲストバーチャルマシン(VM;virtual machine)及び/又はオペレーティングシステム(OS;operating system)は、VMX非ルートモードを実行してよい。そのようなゲストOSは、仮想化によらない実行と同様に、リング0において実行してよい。特定のハードウェア命令の実行及び特定の他のシステムイベントは、VMXルートモードへのハードウェア支援の移行をトリガしてよい。そのようなハードウェア支援の移行は、バーチャルマシン終了(VMExit)又はハイパーコールとして一般に知られている。VMExitに直面すると、プロセッサ120は、VMExitを扱うために、ゲストVMからVMMへコンテキストを切り替えてよい。よって、VMExitは、性能に不利な条件を仮想コードに課すことがある。VMXサポート122は、例えば、Intel(登録商標)のVT−xテクノロジとして具現されてよい。
EPTサポート124は、ハードウェア支援のセカンドレベル・ページアドレス変換をサポートする。仮想化されていないワークロードについて(すなわち、VMXルートモードにおいて動作する場合に)、プロセッサ120は、バーチャルメモリアドレス(線形アドレスとしても知られる。)と物理メモリアドレスの間のハードウェア支援の変換を提供してよい。プロセッサ120は、メモリ130に格納されており、ホストオペレーティングシステム、ハイパーバイザ、又はVMMによって管理される1以上のページテーブル構造を用いて、メモリアドレスを変換してよい。仮想化されたワークロードについて(すなわち、VMX非ルートモードにおいて動作する場合に)、プロセッサ120は、バーチャルメモリアドレス(例えば、ゲストVM内で実行するアプリケーションによって使用される。)とゲスト物理メモリアドレスとの間のハードウェア支援の変換をサポートする。ゲストOSは、ゲスト物理メモリアドレスへの変換を管理するために、メモリ130において1以上のページテーブル構造を保持してよい。しかし、ゲスト物理メモリアドレスは、メモリ130内の実際の物理メモリアドレスに対応しないことがある。EPTサポート124は、ゲスト物理メモリアドレスと物理メモリアドレス(ホスト物理メモリアドレスとしても知られる。)との間のハードウェア支援の変換を提供する。EPTサポート124は、メモリ130に格納されており、VMM又はハイパーバイザによって管理される1以上の拡張ページテーブル構造を用いて、メモリアドレスを変換してよい。EPTサポート124によらないと、ゲスト物理メモリアドレスと物理メモリアドレスとの間の変換は1以上のVMExitを必要とすることがある。EPTサポート124はまた、アクセス許可を夫々のゲスト物理ページ及び/又は物理ページと関連付けることをサポートしてよい(例えば、読み出し、書き込み、及び/又は実行の許可)。許可違反は、EPT違反として知られてよく、VMM又はハイパーバイザがEPT違反を扱うことを可能にするVMExitを生成してよい。加えて、又は代替的に、幾つかの実施形態では、許可違反は、ゲストOSによって扱われ得る仮想化例外を生成してよい。EPTサポート124は、例えば、Intel(登録商標)のVT−xテクノロジとして具現されてよい。
FVSサポート126は、プロセッサ120が、VMXルートモードへのVMExitを必要とせずに、2以上のメモリビューの間で高速に且つ原子的に切り替わることを可能にする。メモリビューは、EPTによって定義されたゲスト物理ページマッピング及び関連する許可を含み、よって、EPTと一対一で対応してよい。FVSサポート126は、異なるEPT構造を指し示すようメモリ内のバーチャルマシン制御構造(VMCS;virtual machine control structure)内でポインタを変更することによって、メモリビューを切り替えることをサポートしてよい。幾つかの実施形態では、FVSサポート126は、VMX非ルートモードにあるソフトウェアが、VMXルートモード内で実行するソフトウェアによって予め定義されている幾つかのメモリビューの中から1つを選択することを可能にしてよい。然るに、FVSサポート126は、ゲストVM(例えば、ゲストVMにおいて実行されるゲストOS又はアプリケーションソフトウェア)が、VMM又はハイパーバイザへの潜在的に高価なコンテキストスイッチを必要とせずに、メモリビュー間を切り替えることを可能にしてよい。FVSサポート126は、例えば、特定のIntel(登録商標)プロセッサによってサポートされるVMFUNC命令などの、特殊化したプロセッサ命令として具現されてよい。
メモリ130は、ここで記載される機能を実行することが可能な如何なるタイプの揮発性又は不揮発性のメモリ又はデータストレージとしても具現されてよい。動作において、メモリ130は、例えばオペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバなどの、コンピューティング装置100の動作中に使用される様々なデータ及びソフトウェアを記憶してよい。メモリ130は、ページとして知られる固定サイズのセグメントに細分されてよい。夫々のページは、例えば、4096バイトのデータを含んでよい。メモリ130は、ゲストページテーブル132、1以上の拡張ページテーブル(EPT)134、及び1以上の拡張ページテーブルポインタ(EPTP)136を更に含む。ゲストページテーブル132は、バーチャルメモリページとゲスト物理メモリページとの間のマッピングを記憶する。上述されたように、ゲストページテーブル132は、バーチャルメモリアドレスとゲスト物理メモリアドレスとの間を変換するためにプロセッサ120によって使用されてよい。夫々のEPT134は、ゲスト物理メモリページと物理メモリページとの間のマッピングを記憶する。上述されたように、夫々のEPT134は、ゲスト物理メモリアドレスと物理メモリアドレスとの間を変換するためにプロセッサ120のEPTサポート124によって使用されてよい。夫々のEPT134は、夫々のゲスト物理ページのためのアクセス許可(例えば、読み出し、書き込み、及び/又は実行)を更に含んでよい。ゲストページテーブル132及びEPT134はいずれも、例えばアレイ、リスト、連想アレイ、ネスト化した若しくは階層的なアレイ、又は他のデータ構造などの、1以上のメモリ内データ構造として具現されてよい。EPTP136は、現在アクティブなEPT134を特定するためにプロセッサ120によって使用されてよい。よって、ゲストVMと関連付けられるEPTP136を変更することは、コンピューティング装置100が、ゲストVMのための物理メモリマッピングを即座に変更することを可能にしてよい。上述されたように、EPTP136は、FVSサポート126によって管理されてよい。
メモリ130は、I/Oサブシステム128を介してプロセッサ120へ通信上結合されている。I/Oサブシステム128は、プロセッサ120、メモリ130、及びコンピューティング装置100の他のコンポーネントによる入出力動作を助ける回路及び/又はコンポーネントとして具現されてよい。例えば、I/Oサブシステム128は、メモリコントローラハブ、入出力制御ハブ、ファームウェア装置、通信リンク(すなわち、ポイント・ツー・ポイントリンク、バスリンク、ワイヤ、ケーブル、光導波路、印刷回路基板トレース、等)、並びに/又は入出力動作を助ける他のコンポーネント及びサブシステムとして具現されるか、あるいは、別なふうにそれらを含んでよい。幾つかの実施形態では、I/Oサブシステム128は、システム・オン・チップ(SoC)の部分を形成し、プロセッサ120、メモリ130、及びコンピューティング装置100の他のコンポーネントとともに、単一の集積回路チップにおいて組み込まれてよい。
データ記憶装置138は、例えば、メモリ装置及び回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、又は他のデータ記憶装置などの、データの短期又は長期記憶のために構成される如何なるタイプの装置又は複数の装置としても具現されてよい。コンピューティング装置100は、通信サブシステム140を更に含んでよい。通信サブシステム140は、ネットワーク上でのコンピューティング装置100と他の遠隔装置との間の通信を可能にすることができる如何なる通信回路、装置、ネットワークインタフェースコントローラ、又はそれらの集合としても具現されてよい。通信サブシステム140は、そのような通信を達成するために、如何なる1以上の通信技術(例えば、優先又は無線通信)及び関連するプロトコル(例えば、Ethernet(登録商標)、Bluetooth(登録商標)、Wi−Fi(登録商標)、WiMAX、等)も使用するよう構成されてよい。
幾つかの実施形態において、コンピューティング装置100は、1以上の周辺装置142を更に含んでよい。周辺装置142は、如何なる数の付加的な入出力装置、インタフェース装置、及び/又は他の周辺装置も含んでよい。例えば、幾つかの実施形態において、周辺装置142は、ディスプレイ、タッチスクリーン、グラフィクス回路、キーボード、マウス、スピーカシステム、及び/又は他の入出力装置、インタフェース装置、及び/又は周辺装置を含んでよい。
これより図2を参照すると、実例となる実施形態において、コンピューティング装置100は、動作中に環境200を確立する。実例となる実施形態200は、バーチャルマシンモニタ(VMM)202、対象バーチャルマシン204、及びソースバーチャルマシン206を含む。2つのバーチャルマシン(VM)を含むものとして表されているが、他の実施形態は、更なるVMを含んでよい点が理解されるべきである。VMM202は、認証モジュール208、セキュアビューモジュール210、及び共有メモリモジュール212を含む。対象バーチャルマシン204は、データアクセスモジュール218、バッファ所有権モジュール222、ビュースイッチモジュール224、及びセキュアビュー228を含む。ソースバーチャルマシン206は、データアクセスモジュール218、アクセス制御モジュール230、バッファ所有権モジュール222、ビュースイッチモジュール224、及びセキュアビュー228を含む。環境200の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせとして具現されてよい。例えば、環境200のモジュール、ロジック、及び他のコンポーネントの夫々は、プロセッサ120又はコンピューティング装置100の他のハードウェアコンポーネントの部分を形成するか、あるいは、それらによって別なふうに確立されてよい。
VMM202の認証モジュール208は、対象バーチャルマシン204及び/又はソースバーチャルマシン206のビュースイッチコンポーネント226を認証するよう構成される。認証モジュール208は、例えば、ビュースイッチコンポーネント226に関連する1以上のデジタルシグニチャ又はクレデンシャルを照合することなどの、ビュースイッチコンポーネント226が信頼できるかどうかを判断することが可能な如何なる適切な認証プロセスも実行してよい。ビュースイッチコンポーネント226は、メモリビューを切り替えてセキュアビュー228にアクセスするために使用され得る如何なるゲストオペレーティングシステムカーネル、カーネルモジュール、ドライバ、インタフェース、ユーザ空間アプリケーション、又は他のコンポーネントとしても具現されてよい。認証後、ビュースイッチコンポーネント226は、VMMとの更なるインタラクションなしでセキュアビュー228へ切り替えることが可能であってよい。よって、ビュースイッチコンポーネント226の認証は、セキュアビュー228のセキュリティ、プライバシ、及び/又はインテグリティを保護することができる。
VMM202のセキュアビューモジュール210は、ビュースイッチコンポーネント226の認証が成功した場合に共有メモリセグメントへのアクセスを可能にするようにセキュアビュー228を設定するよう構成される。セキュアビュー228は、対象バーチャルマシン204及び/又はソースバーチャルマシン206によって使用されるコンピューティング装置100の物理メモリマップを定義する。例えば、セキュアビュー228は、コンピューティング装置100の1以上のEPT134を変更することによって設定されてよい。よって、セキュアビュー228は、対象バーチャルマシン204が、通常のメモリアクセス命令により、ソースバーチャルマシン206及び/又はVMM202に関連する物理メモリページに直接アクセスすることを可能にしてよい。
VMM202の共有メモリモジュール212は、対象バーチャルマシン204及び/又はソースバーチャルマシン206によってソースビュー228を介してアクセスされ得る共有メモリセグメント214を確立するよう構成される。共有メモリセグメント214は、例えば、VMM202のヒープにおいて、確立されてよい。共有メモリセグメント214は、バーチャルマシン204,206及び/又はVMM202の間のセキュアなバーチャルメモリ間通信のために使用されてよい。幾つかの実施形態において、共有メモリモジュール212は、1以上のセキュアビュー制御構造(SVCS;secure view control structure)216を確立してよい。特に、共有メモリモジュール212は、夫々のセキュアビュー228についてSVCS216を確立してよい。夫々のSVCS216は、共有メモリセグメント214内に含まれるか、あるいは、別個に確立されてよい。更に後述されるように、SVCS216は、メモリバッファの所有権の移譲を協調させるためにバーチャルマシン204,206によって使用されてよい。
対象バーチャルマシン204及び/又はソースバーチャルマシン206のビュースイッチモジュール224は、バーチャルマシン終了(VMExit)イベントを発生させずにデフォルトのメモリビューからセキュアビュー228へ切り替えるよう構成される。ビュースイッチモジュール224は、VMExitイベントを発生させずにビューを切り替えるために、プロセッサ120のファストビュースイッチサポート126を使用してよい。上述されたように、ビュースイッチモジュール224は、ビュースイッチを実行するビュースイッチコンポーネント226を含んでよい。ビュースイッチコンポーネント226は、セキュアビュー228への切り替えより前に、VMM202によって認証されてよい。
対象バーチャルマシン204及び/又はソースバーチャルマシン206のバッファ所有権モジュール222は、VMM202によって確立されたSVCS216を用いて、ソースバーチャルマシン206から対象バーチャルマシン204へのメモリバッファの所有権の移譲を協調させるよう構成される。特に、セキュアビュー228内のメモリバッファの所有権は、ソースバーチャルマシン206から対象バーチャルマシン204へ移されてよく、バッファは、対象バーチャルマシン204がそれらのバッファの所有権を受けた後に、対象バーチャルマシン204によって処理されてよい。ソースビュー228が予め定義された容量を超えて満たされている場合に、ソースバーチャルマシン206は、対象バーチャルマシン204によって既に処理されているバッファを再要求してよく、VMM202は、セキュアビュー228をクリアし、EPT134を無効にしてよい。
対象バーチャルマシン204及び/又はソースバーチャルマシン206のデータアクセスモジュール218は、共有メモリセグメントにおけるデータにアクセスするよう構成される。データアクセスモジュール218は、1以上の共有メモリバッファに含まれているデータを読み出し、データを1以上の共有メモリバッファに書き込み、あるいは、VMM202によって確立された共有メモリセグメント214におけるデータにアクセスしてよい。データアクセスモジュール218は、データアクセスを実行する1以上のアプリケーション220を含んでよい。アプリケーション220は、例えばルータ、ファイアウォール、バーチャルスイッチ、ミドルボックス、又は他のバーチャルネットワークアプライアンスなどのネットワーク機能アプリケーションを含んでよい。よって、アクセスされる共有メモリバッファは、受信キュー、送信キュー、ネットワークパケットバッファ、又は他のネットワークI/Oデータを含んでよい。
ソースバーチャルマシン206のアクセス制御モジュール230は、共有メモリセグメントをVMM202に登録するよう構成される。共有メモリセグメントを登録することは、ソースバーチャルマシン206がそれ自身のメモリ空間の特定のセグメントへのアクセスを制御することを可能にする。アクセス制御モジュール230は許可テーブル232を保持してよい。許可テーブル232は、対象バーチャルマシン204と共有されるべきソースバーチャルマシン206のゲスト物理ページへの参照を含む。
これより図3を参照すると、使用において、コンピューティング装置100は、セキュアなバーチャルマシン間の共有メモリ通信を管理する方法300を実行してよい。方法300は、VMM202によって実行されてよく、よって、EPT134を管理する能力を含め、コンピューティング装置100へのフルアクセスを持つVMXルートモードにおいて実行してよい。方法300は、ブロック302から開始する。ブロック302で、コンピューティング装置100は、バーチャルマシン204,206のビュースイッチコンポーネント226を認証するためのリクエストを受け取る。バーチャルマシン204,206は、セキュアビュー228へのアクセスを許可されるより前に、ビュースイッチコンポーネント226の認証を要求する。バーチャルマシン204,206は、VMExitを生成すること、ハイパーコール、又は別なふうにVMM202を呼び出すことによって、認証を要求してよい。
ブロック304で、コンピューティング装置100は、要求されたビュースイッチコンポーネント226を認証する。ビュースイッチコンポーネント226は、メモリビューを切り替えてセキュアビュー228にアクセスするために使用され得る如何なるゲストオペレーティングシステムカーネル、カーネルモジュール、ドライバ、インタフェース、ユーザ空間アプリケーション、又は他のコンポーネントとしても具現されてよい。コンピューティング装置100は、ビュースイッチコンポーネント226が認証されること及び/又は改ざんされていないことを確認し、照合し、証明し、又は別なふうに判断するための如何なる技術も用いて、ビュースイッチコンポーネント226を認証してよい。例えば、コンピューティング装置100は、ビュースイッチコンポーネント226に関連する1以上のデジタルシグニチャ又はクレデンシャルを照合してよい。ビュースイッチコンポーネント226が証明されない場合は、コンピューティング装置100は、エラーメッセージを生成するか、あるいは、未証明のビュースイッチコンポーネント226がセキュアビュー228へのアクセスを有効にすることを可能にするのを別なふうに拒んでよい。
ブロック306で、コンピューティング装置100は、更なるバーチャルマシン204,206が、認証されたビュースイッチコンポーネント226を有するべきかどうかを判断する。例えば、複数の対象バーチャルマシン204が、共有メモリにアクセスするために認証を求めることがある。他の例として、対象バーチャルマシン204及びソースバーチャルマシン206の両方が、VMM202によって確立された共有メモリセグメント214を用いてセキュアチャネルにわたって通信するために認証を求めることがある。更なるVMが認証されるべき場合は、方法300はブロック302に折り返す。更なるVMが認証されるべきでない場合は、方法300はブロック308へ進む。
ブロック308で、コンピューティング装置100は、ソースバーチャルマシン206が共有メモリページへのアクセスを選択的に許可することを可能にすべきかどうかを判断する。そうでない場合は、方法300は、後述されるブロック316の前へと分岐する。選択的なアクセスが許可されるべき場合は、方法300はブロック310へ進む。
ブロック310で、コンピューティング装置100は、ソースバーチャルマシン206から共有メモリセグメントの登録を受け取る。登録は、ソースバーチャルマシン206から対象バーチャルマシン204へ共有されるべきゲスト物理メモリページ、セグメント、又は他の範囲を記述する。ソースバーチャルマシン206は、VMExit若しくはハイパーコールを実行すること、ソースバーチャルマシン206のゲスト物理メモリへ書き込むこと、又は別なふうにVMM202を呼び出すことを含む如何なる適切な技術も用いて、共有メモリセグメントをVMM202に登録してよい。幾つかの実施形態において、ブロック312で、コンピューティング装置100は、ソースバーチャルマシン206から許可テーブル232を受け取ってよい。許可テーブル232は、対象バーチャルマシン204と共有されるべきゲスト物理ページを特定する。許可テーブル232はソースバーチャルマシン206に位置し、そのゲスト物理ページを参照するので、ソースバーチャルマシン206は、VMM202を呼び出すことなしに許可テーブル232を生成してよい。加えて、VMM202は、メモリ130内の適当な位置で、すなわち、許可テーブル232の更なるコピーを生成せずに、許可テーブル232を処理してよい。
幾つかの実施形態において、ブロック314で、コンピューティング装置100は、VMM202によって確立された共有メモリセグメント214を共有するためのソースバーチャルマシン206からのリクエストを受け取ってよい。ソースバーチャルマシン206は、如何なる適切なフォーマットも用いてリクエストを生成してよい。例えば、ソースバーチャルマシン206は、セキュアビュー228内に格納されているページを特定するよう許可テーブル232を更新することによって、共有メモリセグメント214へのアクセスを要求してよい。よって、そのような実施形態では、コンピューティング装置100は、ソースバーチャルマシン206のビュースイッチコンポーネント226を前もって認証していてよい。
ブロック316で、コンピューティング装置100は、共有メモリセグメントにアクセスするための対象バーチャルマシン204からのリクエストを受け取る。対象バーチャルマシン204は、ソースバーチャルマシン206の共有メモリページへの及び/又はVMM202によって確立された共有メモリセグメント214へのアクセスを要求してよい。対象バーチャルマシン204は、VMExitを生成すること、ハイパーコール、又は別なふうにVMM202を呼び出すことによって、アクセスを要求してよい。
ブロック318で、コンピューティング装置100は、適切なEPT134を変更することによって、要求された共有メモリセグメントを対象バーチャルマシン204のセキュアビュー228に加える。EPT134を変更した後、対象バーチャルマシン204のゲスト物理ページは、要求された共有メモリセグメントに対応する物理メモリページにマッピングされる。よって、対象バーチャルマシン204によって実行されるカーネル及び/又はユーザモードのソフトウェアは、対象バーチャルマシン204のバーチャルメモリ空間を通じてそれらのページにアクセスしてよい。幾つかの実施形態において、ブロック320で、コンピューティング装置100は、ソースバーチャルマシン206の全てのゲスト物理ページをセキュアビューEPT134に加えてよい。よって、そのような実施形態では、対象バーチャルマシン204は、例えば送信キュー、受信キュー、及びパケットデータなどのアプリケーションデータ、カーネルデータ、及びI/Oデータを含むソースバーチャルマシン206の全てのデータへのフルアクセスを許可され得る。加えて、又は代替的に、幾つかの実施形態において、ソースバーチャルマシン206の共有データの一部又は全ては、コンピューティング装置100のハードウェアへ、例えば通信サブシステム140へ直接マッピングされてよい。例えば、ソースバーチャルマシン206の1以上のバッファは、例えば、Intel(登録商標)のVT−dテクノロジ又はシングルルートI/O仮想化(SR−IOV;single root I/O virtualization)などの仮想化技術を用いて、NIC、ポート、バーチャル機能、又は通信サブシステム140の他のコンポーネントへ直接マッピングされてよい。
幾つかの実施形態において、ブロック322で、コンピューティング装置100は、ソースバーチャルマシン206によって前もって登録されているソースバーチャルマシン206のゲスト物理ページを加えてよい。例えば、コンピューティング装置100は、ソースバーチャルマシン206の許可テーブル232を調べ、許可テーブル232において特定されるゲスト物理ページの全てを加えてよい。よって、ソースバーチャルマシン206は、自身のゲスト物理メモリページへのアクセスを制限してよい。幾つかの実施形態において、ブロック324で、コンピューティング装置100は、VMM202によって確立された共有メモリセグメント214をセキュアビューEPT134に加えてよい。
セキュアビューEPT134を変更した後、方法300は、更なるバーチャルマシンを認証するようブロック302に折り返す。図5及び6に関連して更に後述されるように、セキュアビューEPT134を変更した後、対象バーチャルマシン204及び/又はソースバーチャルマシン206は、更なるVMExitを生成すること、ハイパーコール、又は別なふうにVMM202を呼び出すことなしで、共有メモリページにアクセスしてよい。
これより図4を参照すると、概略図400は、バーチャルマシン間の共有メモリ通信を提供するよう確立され得るページテーブル構造の起こり得る実施形態を表す。ブロック402は、ソースバーチャルマシン206のバーチャルメモリレイアウトを表す。例示のために、ソースバーチャルマシン206は単一バッファ404を含む。バッファ404は、如何なる共有メモリデータ構造としても具現されてよい。例えば、バッファ404は、送信キュー、受信キュー、又は他のネットワークI/Oデータ構造を含むか、あるいは、それらとして別なふうに具現されてよい。図示されるように、バッファ404はバーチャルページ406に位置する。ブロック408は、ソースバーチャルマシン206のゲスト物理レイアウトを表す。図示されるように、バッファ404はゲスト物理ページ410に位置する。ゲストページテーブル132aは、ソースバーチャルマシン206のゲストOSによって保持されてよく、バーチャルメモリ402のバーチャルページとゲスト物理メモリ408のゲスト物理ページとの間をマッピングする。図示されるように、ゲストページテーブル132aは、バーチャルページ406をゲスト物理ページ410にマッピングする。
図400は、物理メモリ130のレイアウトを更に表す。図示されるように、バッファ404は、物理メモリ130内の物理ページ412に位置する。拡張ページテーブル(EPT)134は、VMM202によって保持され、ゲスト物理メモリ408のゲスト物理ページと物理メモリ130の物理ページとの間をマッピングする。図示されるように、EPT134は、ゲスト物理ページ410を物理ページ412にマッピングする。
ブロック414は、対象バーチャルマシン204のバーチャルメモリレイアウトを表す。図示されるように、対象バーチャルマシン204は、バーチャルメモリの連続ブロックとして表されているセキュアビュー228を含む。他の実施形態では、セキュアビュー228は、不連続、まばら、あるいは、バーチャルメモリ414内で別なふうに分散されてよい。後述されるように、対象バーチャルマシン204は、そのビュースイッチコンポーネント226をVMM202により認証した後にのみ、セキュアビュー228内のデータにアクセスしてよい。図示されるように、ソースバーチャルマシン206からのバッファ404は、セキュアビュー228内のバーチャルページ416にマッピングされる。ブロック418は、対象バーチャルマシン204のゲスト物理レイアウトを表す。図示されるように、バッファ404は、セキュアビュー228内のゲスト物理ページ420に位置する。ゲストページテーブル132bは、対象バーチャルマシン204のゲストOSによって保持されてよく、バーチャルメモリ414のバーチャルページとゲスト物理メモリ418のゲスト物理ページとの間をマッピングする。図示されるように、ゲストページテーブル132bは、バーチャルページ416をゲスト物理ページ410にマッピングする。
VMM202は、デフォルトビューEPT134a及びセキュアビューEPT134bを管理する。図示されるように、デフォルトビューEPT134aは、ゲスト物理ページ420を物理ページ422にマッピングする。物理ページ422は如何なる使用可能なデータも含まない。例えば、物理ページ422は、ゼロにされるか、あるいは、別なふうにデータをクリアされてよい。幾つかの実施形態において、デフォルトビューEPT134aは、物理ページ422へのアクセスを制限するための許可セットを含んでよい。よって、デフォルトビューからのバッファ404に関連したゲスト物理ページ420(又はバーチャルページ416)への如何なるアクセスも、バッファ404を含む物理ページ412へ分離しない。対照的に、セキュアビューEPT134bは、ゲスト物理ページ420を物理ページ412にマッピングする。よって、セキュアビュー228からのバッファ404に関連したゲスト物理ページ420(又はバーチャルページ416)へのアクセスは、バッファ404を含む物理ページ412にアクセスする。
図示されるように、EPTポインタ136は、デフォルトビューEPT134a又はセキュアビューEPT134bのいずれか一方を指し示してよい。プロセッサ120は、ゲスト物理ページを物理ページへ分離するときにEPTポインタ136を参照する。上述されたように、EPTポインタ136は、FVSサポート126を用いて、例えば、VMFUNCプロセッサ命令を実行することによって、例えばビュースイッチコンポーネント126などのゲストソフトウェアによって切り替えられるか、あるいは、別なふうに変更されてよい。よって、対象バーチャルマシン204は、VMM202を呼び出すことなしにEPTポインタ136を変更することによってバッファ404へのアクセスを制御してよい。
上述されたように、幾つかの実施形態において、ソースバーチャルマシン206は、共有されるべきページを許可テーブル232において特定することによって、ゲスト物理メモリページへのアクセスを制御してよい。実例となる実施形態において、許可テーブル232は、バーチャルメモリ402のバーチャルページ424に、及びゲスト物理メモリ408のゲスト物理ページ426に位置する。図示されるように、許可テーブル232は、例えば、バッファ404のゲスト物理ページ番号(例えば、ゲスト物理ページ410)を記憶することによって、バッファ404を参照する。許可テーブル232は更に、物理メモリ130内の物理ページ428に位置する。上述されたように、VMM202は、バッファ404が許可テーブル232によって参照される場合に、バッファ404への参照をセキュアビューEPT134bに加えてよい。表されるように、許可テーブル232自体は、対象バーチャルマシン204へアクセス可能でなくてよい。
これより図5を参照すると、使用において、コンピューティング装置100は、バーチャルマシン間で共有されるメモリセグメントにアクセスする方法500を実行してよい。方法500は、対象バーチャルマシン204によって実行されてよく、よって、コンピューティング装置100へのアクセスを制限されたVMX非ルートモードにおいて実行してよい。方法500はブロック502から開始する。ブロック502で、コンピューティング装置100は、VMM202によるビュースイッチコンポーネント226の認証を要求する。図3のブロック302乃至304に関連して上述されたように、対象バーチャルマシン204は、セキュアビュー228へのアクセスを許可されるより前に、ビュースイッチコンポーネント226の認証を要求する。対象バーチャルマシン204は、VMExitを生成すること、ハイパーコール、又は別なふうにVMM202を呼び出すことによって、認証を要求してよい。上述されたように、ビュースイッチコンポーネント226が証明されない場合は、コンピューティング装置100は、エラーメッセージを生成するか、未証明のビュースイッチコンポーネント226がセキュアビュー228へのアクセスを有効にすることを可能にするのを別なふうに拒んでよい。
ブロック504で、コンピューティング装置100は、共有メモリセグメントへのアクセスをVMM202に要求する。図3のブロック316に関連して上述されたように、対象バーチャルマシン204は、VMExitを生成すること、ハイパーコール、又は別なふうにVMM202を呼び出すことによって、アクセスを要求してよい。幾つかの実施形態において、ブロック506で、対象バーチャルマシン204は、ソースバーチャルマシン206のバッファ又は他の共有メモリページへのアクセスを要求してよい。幾つかの実施形態において、ブロック508で、対象バーチャルマシン204は、VMM202によって確立された共有メモリセグメント214へのアクセスを要求してよい。
ブロック510で、コンピューティング装置100は、セキュアビュー228へ切り替える。セキュアビュー228への切り替え後、共有メモリセグメントは、対象バーチャルマシン204において実行する1以上のゲストアプリケーション220又はオペレーティングシステムのバーチャルアドレス空間においてアクセス可能であってよい。幾つかの実施形態において、ブロック512で、コンピューティング装置100は、セキュアビュー228に関連するEPT134を指し示すようEPTポインタ136をセットしてよい。例えば、図4で示されるように、EPTポインタ136は、デフォルトビューEPT134aを指し示すことから、セキュアビューEPT134bを指し示すことへ切り替えられてよい。コンピューティング装置100は、例えばVMFUNC命令などの特殊化したプロセッサ命令を用いてEPTポインタ136を切り替えてよい。幾つかの実施形態において、EPTポインタ136を切り替えることは、リング0、カーネルモード、あるいは、対象バーチャルマシン204及び/又はプロセッサ120の何らかの他の監督モードに制限されてよい。従って、EPTポインタ136は、例えばオペレーティングシステムドライバなどのカーネルモードコードによって切り替えられてよい。幾つかの実施形態において、例えばアプリケーション220などのユーザモードコードは、カーネルモードドライバを呼び出すことによってEPTポインタ136を切り替えさせてよい。幾つかの実施形態において、例えばアプリケーション220などのユーザモードコードは、例えばVMFUNC命令などの特殊化したプロセッサ命令を直接実行することを可能にされてよい。
ブロック514で、コンピューティング装置100は、共有メモリセグメントにアクセスする。例えば、対象バーチャルマシン204のアプリケーション220及び/又はオペレーティングシステムは、共有メモリセグメントからデータを読み出すか、あるいは、共有メモリセグメントにデータを書き込んでよい。幾つかの実施形態において、対象バーチャルマシン204は、データ又は他のI/Oデータをソースバーチャルマシン206のメモリページから読み出すか又はそれに書き込んでよい。特に、対象バーチャルマシン204は、ソースバーチャルマシン206のメモリページに対して1以上の直接メモリアクセス(DMA;direct memory access)動作を実行してよく、これは、I/O装置及び/又はデータへの直接的なアクセスを可能にすることができる。加えて、又は代替的に、対象バーチャルマシン204は、データを、VMM202によって確立された共有メモリセグメント214から読み出すか又はそれに書き込んでよい。共有メモリセグメント214は、ソースバーチャルマシン206のメモリページにアクセスすることを引き起こさないバーチャルマシン間のメッセージの受け渡し、シグナリング、又は他の通信のために使用されてよい。共有メモリセグメントにアクセスした後、方法500はブロック514に折り返し、共有メモリセグメントにアクセスし続けてよい。
これより図6を参照すると、使用において、コンピューティング装置100は、バーチャルマシン間で共有されるメモリセグメントへのアクセスを許可する方法600を実行してよい。方法600は、ソースバーチャルマシン206によって実行されてよく、よって、コンピューティング装置100へのアクセスが制限されたVMX非ルートモードにおいて実行してよい。方法600はブロック602から開始する。ブロック602で、コンピューティング装置100は、ソースバーチャルマシン206のメモリページへのアクセスを選択的に許可すべきかどうかを判断する。そうでない場合は、方法600は、後述されるブロック606の前へと分岐する。アクセスを選択的に許可する場合は、方法600はブロック604へ進む。
ブロック604で、コンピューティング装置100は、共有メモリセグメントをソースバーチャルマシン206に登録する。図3のブロック308に関連して上述されたように、登録は、ソースバーチャルマシン206から対象バーチャルマシン204へ共有されるべきゲスト物理メモリページ、セグメント、又は他の範囲を記述する。上述されたように、コンピューティング装置100は、共有されるべきゲスト物理ページを許可テーブル232において特定してよい。ソースバーチャルマシン206は、VMExit若しくはハイパーコールを実行すること、又は別なふうにVMM202を呼び出すことを含む如何なる適切な技術も用いて、共有メモリセグメントをVMM202に登録してよい。
ブロック606で、コンピューティング装置100は、VMM202によって確立された共有メモリセグメント214にアクセスすべきかどうかを判断する。そうでない場合は、方法600はブロック602に折り返す。よって、選択的なアクセスを提供せず且つ共有メモリセグメント214にアクセスしない場合に、対象バーチャルマシン204は、ソースバーチャルマシン206によるVMM202への如何なるリクエスト又は他の積極的な動作もなしで、ソースバーチャルマシン206のメモリにアクセスしてよい。コンピューティング装置100が、共有メモリセグメント214にアクセスすると判断する場合は、方法600はブロック608へ進む。
ブロック608で、コンピューティング装置100は、VMM202によるソースバーチャルマシン206のビュースイッチコンポーネント226の認証を要求する。図3のブロック302乃至304に関連して上述されたように、ソースバーチャルマシン206は、セキュアビュー228へのアクセスを許可されるより前に、ビュースイッチコンポーネント226の認証を要求する。ソースバーチャルマシン206は、VMExitを生成すること、ハイパーコール、又は別なふうにVMM202を呼び出すことによって、認証を要求してよい。上述されたように、ビュースイッチコンポーネント226が証明されない場合は、コンピューティング装置100は、エラーメッセージを生成するか、あるいは、未証明のスイッチコンポーネント226がソースビュー228へのアクセスを有効にすることを可能にするのを別なふうに拒んでよい。
ブロック610で、コンピューティング装置100は、セキュアビュー228へ切り替える。セキュアビュー228への切り替え後、共有メモリセグメントは、ソースバーチャルマシン206において実行する1以上のゲストアプリケーション220又はオペレーティングシステムのバーチャルアドレス空間においてアクセス可能であってよい。幾つかの実施形態において、コンピューティング装置100は、セキュアビュー228に関連するEPT134を指し示すようEPTポインタ136をセットしてよい。例えば、図4で示されるように、EPTポインタ136は、デフォルトビューEPT134aを指し示すことから、セキュアビューEPT134bを指し示すことへ切り替えられてよい。コンピューティング装置100は、例えばVMFUNC命令などの特殊化したプロセッサ命令を用いてEPTポインタ136を切り替えてよい。幾つかの実施形態において、EPTポインタ136を切り替えることは、リング0、カーネルモード、あるいは、ソースバーチャルマシン206及び/又はプロセッサ120の何らかの他の監督モードに制限されてよい。従って、EPTポインタ136は、例えばオペレーティングシステムドライバなどのカーネルモードコードによって切り替えられてよい。幾つかの実施形態において、例えばアプリケーション220などのユーザモードコードは、カーネルモードドライバを呼び出すことによってEPTポインタ136を切り替えさせてよい。幾つかの実施形態において、例えばアプリケーション220などのユーザモードコードは、例えばVMFUNC命令などの特殊化したプロセッサ命令を直接実行することを可能にされてよい。
ブロック612で、コンピューティング装置100は、共有メモリセグメント214へのアクセスをVMMに要求する。図3のブロック316に関連して上述されたように、ソースバーチャルマシン206は、VMExitを生成すること、ハイパーコール、又は別なふうにVMM202を呼び出すことによって、アクセスを要求してよい。コンピューティング装置100は、セキュアビュー228内のページを許可テーブル232において特定することによって、共有メモリセグメントへのアクセスを要求してよい。
ブロック614で、コンピューティング装置100は、VMM202によって確立された共有メモリセグメント214にアクセスする。ソースバーチャルマシン206は、共有メモリセグメント内に記憶されるデータを読み出し又は書き込んでよい。例えば、ソースバーチャルマシン206は、図7乃至9に関して以下で更に記載されるように、対象バーチャルマシン204によりメモリページの所有権を移すか又は別なふうに管理するために、共有メモリセグメント214を使用してよい。方法600は、共有メモリセグメント214にアクセスし続けるようブロック614に折り返す。
これより図7を参照すると、図700は、ソースバーチャルマシン206と対象バーチャルマシン204との間でメモリバッファの所有権を移すために使用されるセキュアビュー制御構造(SVCS)216の1つの起こり得る実施形態を表す。図示されるように、SVCS216は、幾つかのバッファ404a乃至404eを含む実例となるセキュアビュー228に関連付けられる。それらのバッファ404は、ソースバーチャルマシン206によって生成された共有メモリセグメントであってよい。例えば、夫々のバッファ404は、受信キュー、送信キュー、又はソースバーチャルマシン206の如何なる他のI/Oバッファも含んでよい。
図示されるように、SVCS216は、対象バーチャルマシン204のゲスト物理メモリ418におけるセキュアビュー228内の位置に対する多数のポインタを含む。実例となる実施形態において、ポインタは、ゲストページフレーム番号として記憶される。当然に、他の実施形態では、それらのポインタは、他のフォーマットにおいて、又は異なったアドレス空間に基づき、記憶されてよい。例えば、SVCS216は、対象バーチャルマシン204のバーチャルメモリ414内のポインタ、及び/又はセキュアビュー228に対するオフセットを含んでよい。
特に、実例となるSVCS216は、セキュアビュー228の開始及び終了を夫々参照するセキュアビュー開始ポインタ702及びセキュアビュー終了ポインタ712を含む。SVCS216は、被処理ポインタ704、現在ポインタ706、次ポインタ708、及び最高水位線ポインタ710を更に含む。それらのポインタは、図8及び9に関連して以下で更に記載されるように、ソースバーチャルマシン206と対象バーチャルマシン204との間でメモリバッファの所有権を協調させるために使用される。実例となる実施形態において、SVCS216は、ミューテックス714及びステータスフラグの組716を更に含む。ミューテックス714及びステータスフラグ716は、ソースバーチャルマシン206と対象バーチャルマシン204との間でSVCS216への同時のアクセスを協調させるために使用されてよい。
図示されるように、SVCS216は、セキュアビュー228を多数の領域718,720,722に分割する。使用済み領域718は、セキュアビュー開始ポインタ702から被処理ポインタ704まで包括的に定義され、実例となる実施形態ではバッファ404aを含む。使用済み領域718は、対象バーチャルマシン204によって既に処理されているバッファ404に相当し、よって、ソースバーチャルマシン206によって再要求されてよい。使用中領域720は、被処理ポインタ704から次ポインタ708まで非包括的に定義され、よって、バッファ404b乃至404eを含む。使用中領域720は、ソースバーチャルマシン206によって新たに共有されたバッファ404に相当する。非包括的に被処理ポインタ704から現在ポインタ704の間にあるバッファ(例えば、バッファ404b)は、対象バーチャルマシン204によって積極的に処理中であるバッファ404に相当する。包括的に次ポインタ708から非包括的にセキュアビュー終了ポインタ712までの未使用領域722は、ソースバーチャルマシン206から共有される更なるバッファ404によって投入され得るセキュアビュー228における空き領域に相当する。最高水位線ポインタ710は、セキュアビュー228における閾アドレスを指す。セキュアビュー228が最高水位線ポインタ710以上に満たされる場合に、使用済み領域718におけるバッファは再要求されてよい。
これより図8を参照すると、使用において、コンピューティング装置100は、共有メモリバッファの所有権を得る方法800を実行してよい。方法800は、対象バーチャルマシン204によって実行されてよく、よって、コンピューティング装置100へのアクセスが制限されたVMX非ルートモードにおいて実行してよい。方法800はブロック802から開始する。ブロック802で、コンピューティング装置100は、セキュアビュー228へ切り替える。コンピューティング装置100は、セキュアビュースイッチコンポーネント226を認証し、次いで、図5に関連して上述されたように、EPTポインタ136を更新することによってセキュアビュー228へ切り替えてよい。特に、コンピューティング装置100は、VMM202によって確立された共有メモリセグメント214へのアクセスを要求してよい。共有メモリセグメント214は、セキュアビュー制御構造(SVCS)216を含む。
再び図4を参照すると、図400は、SVCS216への対象バーチャルマシン204によるアクセスを表す。図示されるように、SVCS216は、セキュアビュー228内のバーチャルページ430に位置する。ゲストページテーブル132bは、バーチャルページ430をゲスト物理ページ432にマッピングする。デフォルトビューEPT134aは、ゲスト物理ページ432を物理ページ434にマッピングする。物理ページ434は、SVCS216へのアクセスを提供しない。例えば、物理ページ434はゼロにされてよく、あるいは、許可は、物理ページ434へのアクセスを制限するようセットされてよい。対照的に、セキュアビューEPT134bは、ゲスト物理ページ432を、SVCS216を含む物理ページ436にマッピングする。物理ページ436は、VMM202によって割り当てられ、確立され、あるいは、別なふうに保持されてよい。例えば、物理ページ436は、VMM202のヒープにおいて割り当てられてよい。よって、対象バーチャルマシン204において実行するアプリケーション220及び/又はオペレーティングシステムは、セキュアビュー228を介してSVCS216にアクセスしてよい。
再び図8を参照すると、ブロック804で、コンピューティング装置100は、いずれかの使用中の共有バッファが処理される準備ができているかどうかを判断するために、SVCS216を読み出す。コンピューティング装置100は、SVCS216の被処理ポインタ704、現在ポインタ706、及び/又は次ポインタ708を調べることによって、いずれかの使用中の共有バッファが処理される準備ができているかどうかを判断してよい。例えば、コンピューティング装置100は、更なるバッファ404がソースバーチャルマシン206によって共有されていることを示す、被処理ポインタ704が次ポインタ708よりも小さいかどうかを判断してよい。ブロック806で、コンピューティング装置100は、共有バッファが準備ができているかどうかを判断する。そうでない場合は、方法800は、SVCS216をモニタし続けるようブロック804に折り返す。共有バッファが準備ができている場合は、方法800はブロック808へ進む。
ブロック808で、コンピューティング装置100は、SVCS216の現在ポインタ706に基づき、使用中領域720における1以上の共有バッファを処理する。対象バーチャルマシン204は、共有バッファを処理するよう如何なる動作も実行してよい。例えば、対象バーチャルマシン204は、例えば、パケットルーチング、パケットフィルタリング、又は別なふうにネットワークパケットデータを処理することなどの1以上のバーチャルネットワーク機能を実行してよい。ブロック810で、共有バッファを処理した後、コンピューティング装置100は、SVCS216の被処理ポインタ704をインクリメントする。上述されたように、被処理ポインタ704をインクリメントすることは、それらの共有バッファが対象バーチャルマシン204によって処理されており、ソースバーチャルマシン206によって再要求され得ることを示す。
ブロック812で、コンピューティング装置100は、セキュアビュー228が予め定義された容量レベルを超えているかどうかを判断する。コンピューティング装置100は、例えば、SVCS216の次ポインタ708がSVCS216の最高水位線ポインタ710以上であるかどうかを判断することによって、そのような判断をしてよい。幾つかの実施形態において、コンピューティング装置100は、被処理ポインタ704を最高水位線ポインタ710と比較して、全ての共有バッファが処理されたかどうかを判断してよい。ブロック814で、コンピューティング装置100は、セキュアビュー228があふれているかどうかに基づき分岐する。あふれていない場合(すなわち、次ポインタ708及び/又は被処理ポインタ704が最高水位線ポインタ710を超えていない場合)は、方法800は、共有バッファを処理し続けるようブロック804に折り返す。セキュアビュー228があふれている場合は、方法800はブロック816へ進む。
ブロック816で、コンピューティング装置100は、VMM202によって生成されたEPT134の無効を扱ってよい。以下で更に記載されるように、ソースバーチャルマシン206は、セキュアビュー228があふれている場合に、使用済みの共有バッファを再要求してよい。そのメモリが再要求された後、VMM202は、例えば、セキュアビュー228に関連する現在のEPT134を無効にし、如何なる関連するSVCS216も再初期化することによって、セキュアビュー228をリセットしてよい。EPT134を無効にすることは、使用中のバッファに関してプロセッサ120によってキャッシュされた変換エントリを除去してよい。セキュアビュー228がクリアされた後、対象バーチャルマシン204は、例えば、新しいEPT134へ切り替えることによって、セキュアビュー228を再初期化するよう求められてよい。如何なるEPT無効も扱った後、方法800は、共有バッファを処理し続けるようブロック804に折り返す。
これより図9を参照すると、使用において、コンピューティング装置100は、共有メモリバッファの所有権を移す方法900を実行してよい。方法900は、ソースバーチャルマシン206によって実行されてよく、よって、コンピューティング装置100へのアクセスが制限されたVMX非ルートモードにおいて実行してよい。方法900はブロック902から開始する。ブロック902で、コンピューティング装置100は、セキュアビュー228へ切り替える。コンピューティング装置100は、セキュアビュースイッチコンポーネント226を認証し、次いで、図6に関連して上述されたように、EPTポインタ136を更新することによってセキュアビュー228へ切り替えてよい。特に、コンピューティング装置100は、VMM202によって確立された共有メモリセグメント214へのアクセスを要求してよい。上述されたように、共有メモリセグメント214はSVCS216を含む。
ブロック904で、コンピューティング装置100は、対象バーチャルマシン204により共有されるべき新しい共有バッファを生成する。共有バッファは、例えば、ソースバーチャルマシン206の1以上のゲスト物理ページとして具現されてよい。幾つかの実施形態において、共有バッファは、対象バーチャルマシン204によって処理されるべき、ソースバーチャルマシン206によって生成された受信キュー、送信キュー、又は如何なる他のネットワークI/Oデータも含んでよい。
ブロック906で、コンピューティング装置100は、新たに生成された共有バッファを許可テーブル232に加える。上述されたように、バッファを許可テーブル232に加えることは、バッファが対象バーチャルマシン204により共有されるべきことを示す。ブロック908で、コンピューティング装置100は、新しいバッファを対象バーチャルマシン204により共有するためのVMM202へのリクエストを送る。図6において上述されたように、ソースバーチャルマシン206は、VMExit若しくはハイパーコールを実行すること、又は別なふうにVMM202を呼び出すことを含む如何なる適切な技術も用いて、新たに生成された共有バッファをVMM202に登録してよい。VMM202は、新たに生成された共有バッファをセキュアビュー228内でSVCS216の次ポインタ708の位置でマッピングしてよい。そのバッファを共有するのに成功した後、次ポインタ708はインクリメントされてよい。
ブロック910で、コンピューティング装置100は、SVCS216を読み出して、セキュアビュー228があふれているかどうかを判断する。例えば、コンピューティング装置100は、次ポインタ708が最高水位線ポインタ710以上であるかどうかを判断してよい。ブロック912で、コンピューティング装置100は、セキュアビュー228があふれているかどうかに基づき分岐する。セキュアビュー228があふれていない場合は、方法900は、共有メモリバッファを生成し続けるよう分岐してブロック904に折り返す。セキュアビュー228があふれている場合は、方法900はブロック914へ進む。
ブロック914で、コンピューティング装置100は、対象バーチャルマシン204が全ての使用中の共有メモリバッファ404を処理するのを待つ。ソースバーチャルマシン206は、ソースバーチャルマシン206が完了を待っていることを示すよう、SVCS216のステータスフラグ716における1以上のフラグをセットしてよい。上述されたように、対象バーチャルマシン204は、バッファ404が使用中領域720からなくなるまで、使用中バッファ404を処理し続けてよい。ソースバーチャルマシン206は、SVCS216をモニタして、対象バーチャルマシン204が使用中バッファ404を処理し終えた場合を判断してよい。加えて、又は代替的に、対象バーチャルマシン204を待つことよりむしろ、幾つかの実施形態では、ソースバーチャルマシン206は、対象バーチャルマシン204の異なるスレッドによって保持されている他のセキュアビュー228へ新たに生成されたバッファを提示してよい。
全ての使用中バッファ404が処理された後、ブロック916で、コンピューティング装置100は、夫々の使用済みバッファ404を許可テーブル232から除去する。上述されたように、それらのバッファ404を許可テーブル232から除去することによって、ソースバーチャルマシン206は、それらのバッファがもはや対象バーチャルマシン204と共有されるべきでないことを示す。ブロック918で、コンピューティング装置100は、夫々の使用済みバッファ404を再要求する。例えば、ソースバーチャルマシン206は、使用済み領域718内の夫々のバッファ404に関連するメモリを解放し、削除し、又は別なふうに割り当てを解除してよい。再要求後、使用済みバッファ404に関連するメモリは、ソースバーチャルマシン206によって再利用されてよい。ブロック920で、コンピューティング装置100は、VMM202によって生成されたEPT無効を扱ってよい。使用済みバッファ404に関連するメモリが再要求された後、VMM202は、例えば、セキュアビュー228に関連する現在のEPT134を無効にし、如何なる関連するSVCS216も再初期化することによって、セキュアビュー228をリセットしてよい。EPT134を無効にすることは、使用済みバッファを参照するプロセッサ120によってキャッシュされた変換エントリを除去してよく、よって、メモリの再利用を可能にすることができる。セキュアビュー228がクリアされた後、ソースバーチャルマシン206は、例えば、新しいEPT134へ切り替えることによって、セキュアビュー228を再初期化するよう求められてよい。セキュアビュー228があふれている場合にのみメモリを再要求することによって、コンピューティング装置100は、例えば、提案されているように夫々のバッファを再要求することに比べて、EPT無効の数を減らすことができる。如何なるEPT無効も実行した後、方法900は、共有バッファを生成し続けるようブロック904へ折り返す。
[例]
ここで開示されている技術の説明に役立つ実例が以下で与えられる。技術の実施形態は、以下で記載される例の1以上及び如何なる組み合わせも含んでよい。
例1は、セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置であって、
当該コンピューティング装置のバーチャルマシンモニタによって、当該コンピューティング装置の対象バーチャルマシンのビュースイッチコンポーネントを、該対象バーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証する認証モジュールと、
前記バーチャルマシンモニタによって、前記ビュースイッチコンポーネントの認証に応答して、当該コンピューティング装置の物理メモリマップを定義するセキュアメモリビューを、前記対象バーチャルマシンから受け取った当該コンピューティング装置の共有メモリセグメントにアクセスするためのリクエストに応答して、前記共有メモリセグメントにアクセスするよう設定するセキュアビューモジュールと、
前記対象バーチャルマシンによって、前記ビュースイッチコンポーネントを用いて、前記共有メモリセグメントにアクセスするための前記リクエストに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替えるビュースイッチモジュールと、
前記対象バーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスするデータアクセスモジュールと
を有するコンピューティング装置を含む。
例2は、例1の対象を含み、前記ビュースイッチコンポーネントは、オペレーティングシステムカーネル、カーネルモードドライバ、又はユーザレベルアプリケーションを有する。
例3は、例1及び2のいずれかの対象を含み、前記共有メモリセグメントは、当該コンピューティング装置の1以上の物理メモリページを有する。
例4は、例1乃至3のいずれかの対象を含み、前記セキュアメモリビューを設定することは、当該コンピューティング装置の拡張ページテーブルを設定することを有する。
例5は、例1乃至4のいずれかの対象を含み、前記セキュアメモリビューへ切り替えることは、前記拡張ページテーブルを参照するよう当該コンピューティング装置の拡張ページテーブルポインタをセットすることを有する。
例6は、例1乃至5のいずれかの対象を含み、前記拡張ページテーブルポインタをセットすることは、該拡張ページテーブルポインタを変更するプロセッサ命令を実行することを有する。
例7は、例1乃至6のいずれかの対象を含み、前記共有メモリセグメントは、当該コンピューティング装置のソースバーチャルマシンのゲスト物理メモリページを有する。
例8は、例1乃至7のいずれかの対象を含み、前記共有メモリセグメントは、入出力バッファを有する。
例9は、例1乃至8のいずれかの対象を含み、前記共有メモリセグメントは、送信キュー又は受信キューを有する。
例10は、例1乃至9のいずれかの対象を含み、前記ソースバーチャルマシンによって、前記共有メモリセグメントを前記バーチャルマシンモニタに登録するアクセス制御モジュールを更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する。
例11は、例1乃至10のいずれかの対象を含み、前記共有メモリセグメントを登録することは、前記ソースバーチャルマシンの許可テーブルにおいて前記共有メモリセグメントのゲスト物理ページを特定し、前記許可テーブルを前記バーチャルマシンモニタに提示することを有する。
例12は、例1乃至11のいずれかの対象を含み、前記バーチャルマシンモニタによって、前記共有メモリセグメントを確立する共有メモリモジュールを更に有し、前記認証モジュールは更に、前記バーチャルマシンモニタによって、当該コンピューティング装置のソースバーチャルマシンのビュースイッチコンポーネントを、該ソースバーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証し、前記ビュースイッチモジュールは更に、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのビュースイッチコンポーネントを用いて、該ビュースイッチコンポーネントの認証に応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替え、前記データアクセスモジュールは更に、前記ソースバーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスし、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記バーチャルマシンモニタによって確立された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する。
例13は、例1乃至12のいずれかの対象を含み、前記ソースバーチャルマシンによって、第2の共有メモリセグメントを前記バーチャルマシンモニタに登録するアクセス制御モジュールを更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記第2の共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを更に有し、前記対象バーチャルマシンによって前記共有メモリセグメントにアクセスすることは、前記対象バーチャルマシンによって前記第2の共有メモリセグメントにアクセスすることを更に有する。
例14は、例1乃至13のいずれかの対象を含み、前記ソースバーチャルマシンによって、前記第2の共有メモリセグメントに含まれる、前記対象バーチャルマシンによって処理されるべき共有バッファを生成し、前記対象バーチャルマシンによって、前記共有メモリセグメントのアクセスに応答して前記共有バッファを処理し、前記対象バーチャルマシン及び前記ソースバーチャルマシンによって、前記バーチャルマシンモニタに確立された前記共有メモリセグメントに格納されているセキュアビュー制御構造を用いて前記共有バッファの所有権を協調させるバッファ所有権モジュールを更に有する。
例15は、例1乃至14のいずれかの対象を含み、前記第2の共有メモリセグメントを登録することは、前記セキュアビュー制御構造の次のポインタにおいて前記共有バッファを登録することを有し、前記共有バッファを処理することは、該共有バッファの距離に応答して前記セキュアビュー制御構造の被処理ポインタをインクリメントすることを有し、前記共有バッファを生成することは、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのセキュアビューの容量が超過したかどうかを判断し、該セキュアビューの容量が超過したとの判定に応答して、前記ソースバーチャルマシンによって、前記対象バーチャルマシンが前記共有バッファを処理するのを終えるのを待ち、前記ソースバーチャルマシンによって、前記対象バーチャルマシンによる前記共有バッファの処理の完了に応答して許可テーブルから前記共有バッファを除去し、前記ソースバーチャルマシンによって、前記許可テーブルからの前記共有バッファの除去に応答して前記共有バッファを再要求し、前記バーチャルマシンモニタによって、前記共有バッファの再要求に応答して当該コンピューティング装置の拡張ページテーブルを無効にすることを有する。
例16は、例1乃至15のいずれかの対象を含み、前記セキュアビューの容量が超過したかどうかを判断することは、該セキュアビューの次のポインタが前記セキュアビュー制御構造の参照ポインタを超えるかどうかを判断することを有する。
例17は、セキュアなバーチャルマシン間の共有メモリ通信のための方法であって、
コンピューティング装置のバーチャルマシンモニタによって、前記コンピューティング装置の対象バーチャルマシンのビュースイッチコンポーネントを、該対象バーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証し、
前記バーチャルマシンモニタによって、前記ビュースイッチコンポーネントを認証することに応答して、前記コンピューティング装置の物理メモリマップを定義するセキュアメモリビューを、前記対象バーチャルマシンから受け取った前記コンピューティング装置の共有メモリセグメントにアクセスするためのリクエストに応答して、前記共有メモリセグメントにアクセスするよう設定し、
前記対象バーチャルマシンによって、前記ビュースイッチコンポーネントを用いて、前記共有メモリセグメントにアクセスするための前記リクエストに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替え、
前記対象バーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスする
ことを有する方法を含む。
例18は、例17の対象を含み、前記ビュースイッチコンポーネントは、オペレーティングシステムカーネル、カーネルモードドライバ、又はユーザレベルアプリケーションを有する。
例19は、例17及び18のいずれかの対象を含み、前記共有メモリセグメントは、前記コンピューティング装置の1以上の物理メモリページを有する。
例20は、例17乃至19のいずれかの対象を含み、前記セキュアメモリビューを設定することは、前記コンピューティング装置の拡張ページテーブルを設定することを有する。
例21は、例17乃至20のいずれかの対象を含み、前記セキュアメモリビューへ切り替えることは、前記拡張ページテーブルを参照するよう前記コンピューティング装置の拡張ページテーブルポインタをセットすることを有する。
例22は、例17乃至21のいずれかの対象を含み、前記拡張ページテーブルポインタをセットすることは、該拡張ページテーブルポインタを変更するプロセッサ命令を実行することを有する。
例23は、例17乃至22のいずれかの対象を含み、前記共有メモリセグメントは、前記コンピューティング装置のソースバーチャルマシンのゲスト物理メモリページを有する。
例24は、例17乃至23のいずれかの対象を含み、前記共有メモリセグメントは、入出力バッファを有する。
例25は、例17乃至24のいずれかの対象を含み、前記共有メモリセグメントは、送信キュー又は受信キューを有する。
例26は、例17乃至25のいずれかの対象を含み、前記ソースバーチャルマシンによって、前記共有メモリセグメントを前記バーチャルマシンモニタに登録することを更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する。
例27は、例17乃至26のいずれかの対象を含み、前記共有メモリセグメントを登録することは、前記ソースバーチャルマシンの許可テーブルにおいて前記共有メモリセグメントのゲスト物理ページを特定し、前記許可テーブルを前記バーチャルマシンモニタに提示することを有する。
例28は、例17乃至27のいずれかの対象を含み、前記バーチャルマシンモニタによって、前記共有メモリセグメントを確立し、前記バーチャルマシンモニタによって、前記コンピューティング装置のソースバーチャルマシンのビュースイッチコンポーネントを、該ソースバーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証し、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのビュースイッチコンポーネントを用いて、該ビュースイッチコンポーネントを認証することに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替え、前記ソースバーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスすることを更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記バーチャルマシンモニタによって確立された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する。
例29は、例17乃至28のいずれかの対象を含み、前記ソースバーチャルマシンによって、第2の共有メモリセグメントを前記バーチャルマシンモニタに登録することを更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記第2の共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを更に有し、前記対象バーチャルマシンによって前記共有メモリセグメントにアクセスすることは、前記対象バーチャルマシンによって前記第2の共有メモリセグメントにアクセスすることを更に有する。
例30は、例17乃至29のいずれかの対象を含み、前記ソースバーチャルマシンによって、前記第2の共有メモリセグメントに含まれる、前記対象バーチャルマシンによって処理されるべき共有バッファを生成し、前記対象バーチャルマシンによって、前記共有メモリセグメントにアクセスすることに応答して前記共有バッファを処理し、前記対象バーチャルマシン及び前記ソースバーチャルマシンによって、前記バーチャルマシンモニタに確立された前記共有メモリセグメントに格納されているセキュアビュー制御構造を用いて前記共有バッファの所有権を協調させることを更に有する。
例31は、例17乃至30のいずれかの対象を含み、前記第2の共有メモリセグメントを登録することは、前記セキュアビュー制御構造の次のポインタにおいて前記共有バッファを登録することを有し、前記共有バッファを処理することは、該共有バッファの距離に応答して前記セキュアビュー制御構造の被処理ポインタをインクリメントすることを有し、前記共有バッファを生成することは、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのセキュアビューの容量が超過したかどうかを判断し、該セキュアビューの容量が超過したとの判定に応答して、前記ソースバーチャルマシンによって、前記対象バーチャルマシンが前記共有バッファを処理するのを終えるのを待ち、前記ソースバーチャルマシンによって、前記対象バーチャルマシンによる前記共有バッファの処理の完了に応答して許可テーブルから前記共有バッファを除去し、前記ソースバーチャルマシンによって、前記許可テーブルからの前記共有バッファの除去に応答して前記共有バッファを再要求し、前記バーチャルマシンモニタによって、前記共有バッファの再要求に応答して当該コンピューティング装置の拡張ページテーブルを無効にすることを有する。
例32は、例17乃至31のいずれかの対象を含み、前記セキュアビューの容量が超過したかどうかを判断することは、該セキュアビューの次のポインタが前記セキュアビュー制御構造の参照ポインタを超えるかどうかを判断することを有する。
例33は、コンピューティング装置であって、プロセッサと、前記プロセッサによって実行される場合に、当該コンピューティング装置に例17乃至32のいずれかの方法を実行させる複数の命令を記憶しているメモリとを有するコンピューティング装置を含む。
例34は、実行されることに応答して、コンピューティング装置が例17乃至32のいずれかの方法を実行することを生じさせる複数の命令を記憶している1以上の機械可読記憶媒体を含む。
例35は、例17乃至32のいずれかの方法を実行する手段を有するコンピューティング装置を含む。
例36は、セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置であって、
当該コンピューティング装置のバーチャルマシンモニタによって、当該コンピューティング装置の対象バーチャルマシンのビュースイッチコンポーネントを、該対象バーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証する手段と、
前記バーチャルマシンモニタによって、前記ビュースイッチコンポーネントの認証に応答して、当該コンピューティング装置の物理メモリマップを定義するセキュアメモリビューを、前記対象バーチャルマシンから受け取った当該コンピューティング装置の共有メモリセグメントにアクセスするためのリクエストに応答して、前記共有メモリセグメントにアクセスするよう設定する手段と、
前記対象バーチャルマシンによって、前記ビュースイッチコンポーネントを用いて、前記共有メモリセグメントにアクセスするための前記リクエストに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替える手段と、
前記対象バーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスする手段と
を有するコンピューティング装置を含む。
例37は、例36の対象を含み、前記ビュースイッチコンポーネントは、オペレーティングシステムカーネル、カーネルモードドライバ、又はユーザレベルアプリケーションを有する。
例38は、例36及び37のいずれかの対象を含み、前記共有メモリセグメントは、当該コンピューティング装置の1以上の物理メモリページを有する。
例39は、例36乃至38のいずれかの対象を含み、前記セキュアメモリビューを設定する手段は、当該コンピューティング装置の拡張ページテーブルを設定する手段を有する。
例40は、例36乃至39のいずれかの対象を含み、前記セキュアメモリビューへ切り替える手段は、前記拡張ページテーブルを参照するよう前記コンピューティング装置の拡張ページテーブルポインタをセットする手段を有する。
例41は、例36乃至40のいずれかの対象を含み、前記拡張ページテーブルポインタをセットする手段は、該拡張ページテーブルポインタを変更するプロセッサ命令を実行する手段を有する。
例42は、例36乃至41のいずれかの対象を含み、前記共有メモリセグメントは、当該コンピューティング装置のソースバーチャルマシンのゲスト物理メモリページを有する。
例43は、例36乃至42のいずれかの対象を含み、前記共有メモリセグメントは、入出力バッファを有する。
例44は、例36乃至43のいずれかの対象を含み、前記共有メモリセグメントは、送信キュー又は受信キューを有する。
例45は、例36乃至44のいずれかの対象を含み、前記ソースバーチャルマシンによって、前記共有メモリセグメントを前記バーチャルマシンモニタに登録する手段を更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定する手段は、前記ソースバーチャルマシンによって登録された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定する手段を有する。
例46は、例36乃至45のいずれかの対象を含み、前記共有メモリセグメントを登録する手段は、前記ソースバーチャルマシンの許可テーブルにおいて前記共有メモリセグメントのゲスト物理ページを特定する手段と、前記許可テーブルを前記バーチャルマシンモニタに提示する手段とを有する。
例47は、例36乃至46のいずれかの対象を含み、前記バーチャルマシンモニタによって、前記共有メモリセグメントを確立する手段と、前記バーチャルマシンモニタによって、前記コンピューティング装置のソースバーチャルマシンのビュースイッチコンポーネントを、該ソースバーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証する手段と、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのビュースイッチコンポーネントを用いて、該ビュースイッチコンポーネントを認証することに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替える手段と、前記ソースバーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスする手段とを更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定する手段は、前記バーチャルマシンモニタによって確立された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定する手段を有する。
例48は、例36乃至47のいずれかの対象を含み、前記ソースバーチャルマシンによって、第2の共有メモリセグメントを前記バーチャルマシンモニタに登録する手段を更に有し、前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定する手段は、前記ソースバーチャルマシンによって登録された前記第2の共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定する手段を更に有し、前記対象バーチャルマシンによって前記共有メモリセグメントにアクセスする手段は、前記対象バーチャルマシンによって前記第2の共有メモリセグメントにアクセスする手段を更に有する。
例49は、例36乃至48のいずれかの対象を含み、前記ソースバーチャルマシンによって、前記第2の共有メモリセグメントに含まれる、前記対象バーチャルマシンによって処理されるべき共有バッファを生成する手段と、前記対象バーチャルマシンによって、前記共有メモリセグメントにアクセスすることに応答して前記共有バッファを処理する手段と、前記対象バーチャルマシン及び前記ソースバーチャルマシンによって、前記バーチャルマシンモニタに確立された前記共有メモリセグメントに格納されているセキュアビュー制御構造を用いて前記共有バッファの所有権を協調させる手段とを更に有する。
例50は、例36乃至49のいずれかの対象を含み、前記第2の共有メモリセグメントを登録する手段は、前記セキュアビュー制御構造の次のポインタにおいて前記共有バッファを登録する手段を有し、前記共有バッファを処理する手段は、該共有バッファの距離に応答して前記セキュアビュー制御構造の被処理ポインタをインクリメントする手段を有し、前記共有バッファを生成する手段は、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのセキュアビューの容量が超過したかどうかを判断する手段と、該セキュアビューの容量が超過したとの判定に応答して、前記ソースバーチャルマシンによって、前記対象バーチャルマシンが前記共有バッファを処理するのを終えるのを待つ手段と、前記ソースバーチャルマシンによって、前記対象バーチャルマシンによる前記共有バッファの処理の完了に応答して許可テーブルから前記共有バッファを除去する手段と、前記ソースバーチャルマシンによって、前記許可テーブルからの前記共有バッファの除去に応答して前記共有バッファを再要求する手段と、前記バーチャルマシンモニタによって、前記共有バッファの再要求に応答して当該コンピューティング装置の拡張ページテーブルを無効にする手段とを有する。
例51は、例36乃至50のいずれかの対象を含み、前記セキュアビューの容量が超過したかどうかを判断する手段は、該セキュアビューの次のポインタが前記セキュアビュー制御構造の参照ポインタを超えるかどうかを判断する手段を有する。
100 コンピューティング装置
120 プロセッサ
128 I/Oサブシステム
130 メモリ
134 拡張ページテーブル(EPT)
136 拡張ページテーブルポインタ(EPTP)
138 データ記憶装置
140 通信サブシステム
202 バーチャルマシンモニタ(VMM)
204 対象バーチャルマシン
206 ソースバーチャルマシン
208 認証モジュール
210 セキュアビューモジュール
212 共有メモリモジュール
214 共有メモリセグメント
216 セキュアビュー制御構造(SVCS)
218 データアクセスモジュール
222 バッファ所有権モジュール
224 ビュースイッチモジュール
226 ビュースイッチコンポーネント
228 セキュアビュー
230 アクセス制御モジュール
232 許可テーブル

Claims (25)

  1. セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置であって、
    当該コンピューティング装置のバーチャルマシンモニタによって、当該コンピューティング装置の対象バーチャルマシンのビュースイッチコンポーネントを、該対象バーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証する認証モジュールと、
    前記バーチャルマシンモニタによって、前記ビュースイッチコンポーネントの認証に応答して、当該コンピューティング装置の物理メモリマップを定義するセキュアメモリビューを、前記対象バーチャルマシンから受け取った当該コンピューティング装置の共有メモリセグメントにアクセスするためのリクエストに応答して、前記共有メモリセグメントにアクセスするよう設定するセキュアビューモジュールと、
    前記対象バーチャルマシンによって、前記ビュースイッチコンポーネントを用いて、前記共有メモリセグメントにアクセスするための前記リクエストに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替えるビュースイッチモジュールと、
    前記対象バーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスするデータアクセスモジュールと
    を有するコンピューティング装置。
  2. 前記ビュースイッチコンポーネントは、オペレーティングシステムカーネル、カーネルモードドライバ、又はユーザレベルアプリケーションを有する、
    請求項1に記載のコンピューティング装置。
  3. 前記共有メモリセグメントは、当該コンピューティング装置の1以上の物理メモリページを有し、
    前記セキュアメモリビューを設定することは、当該コンピューティング装置の拡張ページテーブルを設定することを有する、
    請求項1に記載のコンピューティング装置。
  4. 前記セキュアメモリビューへ切り替えることは、前記拡張ページテーブルを参照するよう当該コンピューティング装置の拡張ページテーブルポインタをセットすることを有する、
    請求項3に記載のコンピューティング装置。
  5. 前記拡張ページテーブルポインタをセットすることは、該拡張ページテーブルポインタを変更するプロセッサ命令を実行することを有する、
    請求項4に記載のコンピューティング装置。
  6. 前記共有メモリセグメントは、当該コンピューティング装置のソースバーチャルマシンのゲスト物理メモリページを有する、
    請求項1乃至5のうちいずれか一項に記載のコンピューティング装置。
  7. 前記共有メモリセグメントは、入出力バッファを有する、
    請求項6に記載のコンピューティング装置。
  8. 前記共有メモリセグメントは、送信キュー又は受信キューを有する、
    請求項7に記載のコンピューティング装置。
  9. 前記ソースバーチャルマシンによって、前記共有メモリセグメントを前記バーチャルマシンモニタに登録するアクセス制御モジュールを更に有し、
    前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する、
    請求項6に記載のコンピューティング装置。
  10. 前記共有メモリセグメントを登録することは、
    前記ソースバーチャルマシンの許可テーブルにおいて前記共有メモリセグメントのゲスト物理ページを特定し、
    前記許可テーブルを前記バーチャルマシンモニタに提示する
    ことを有する、
    請求項9に記載のコンピューティング装置。
  11. 前記バーチャルマシンモニタによって、前記共有メモリセグメントを確立する共有メモリモジュールを更に有し、
    前記認証モジュールは更に、前記バーチャルマシンモニタによって、当該コンピューティング装置のソースバーチャルマシンのビュースイッチコンポーネントを、該ソースバーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証し、
    前記ビュースイッチモジュールは更に、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのビュースイッチコンポーネントを用いて、該ビュースイッチコンポーネントの認証に応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替え、
    前記データアクセスモジュールは更に、前記ソースバーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスし、
    前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記バーチャルマシンモニタによって確立された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する、
    請求項1乃至5のうちいずれか一項に記載のコンピューティング装置。
  12. 前記ソースバーチャルマシンによって、第2の共有メモリセグメントを前記バーチャルマシンモニタに登録するアクセス制御モジュールを更に有し、
    前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記第2の共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを更に有し、
    前記対象バーチャルマシンによって前記共有メモリセグメントにアクセスすることは、前記対象バーチャルマシンによって前記第2の共有メモリセグメントにアクセスすることを更に有する、
    請求項11に記載のコンピューティング装置。
  13. 前記ソースバーチャルマシンによって、前記第2の共有メモリセグメントに含まれる、前記対象バーチャルマシンによって処理されるべき共有バッファを生成し、
    前記対象バーチャルマシンによって、前記共有メモリセグメントのアクセスに応答して前記共有バッファを処理し、
    前記対象バーチャルマシン及び前記ソースバーチャルマシンによって、前記バーチャルマシンモニタに確立された前記共有メモリセグメントに格納されているセキュアビュー制御構造を用いて前記共有バッファの所有権を協調させる
    バッファ所有権モジュールを更に有する
    請求項12に記載のコンピューティング装置。
  14. 前記第2の共有メモリセグメントを登録することは、前記セキュアビュー制御構造の次のポインタにおいて前記共有バッファを登録することを有し、
    前記共有バッファを処理することは、該共有バッファの距離に応答して前記セキュアビュー制御構造の被処理ポインタをインクリメントすることを有し、
    前記共有バッファを生成することは、前記ソースバーチャルマシンによって、該ソースバーチャルマシンのセキュアビューの容量が超過したかどうかを判断し、該セキュアビューの容量が超過したとの判定に応答して、
    前記ソースバーチャルマシンによって、前記対象バーチャルマシンが前記共有バッファを処理するのを終えるのを待ち、
    前記ソースバーチャルマシンによって、前記対象バーチャルマシンによる前記共有バッファの処理の完了に応答して許可テーブルから前記共有バッファを除去し、
    前記ソースバーチャルマシンによって、前記許可テーブルからの前記共有バッファの除去に応答して前記共有バッファを再要求し、
    前記バーチャルマシンモニタによって、前記共有バッファの再要求に応答して当該コンピューティング装置の拡張ページテーブルを無効にする
    ことを有する、
    請求項13に記載のコンピューティング装置。
  15. 前記セキュアビューの容量が超過したかどうかを判断することは、該セキュアビューの次のポインタが前記セキュアビュー制御構造の参照ポインタを超えるかどうかを判断することを有する、
    請求項14に記載のコンピューティング装置。
  16. セキュアなバーチャルマシン間の共有メモリ通信のための方法であって、
    コンピューティング装置のバーチャルマシンモニタによって、前記コンピューティング装置の対象バーチャルマシンのビュースイッチコンポーネントを、該対象バーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証し、
    前記バーチャルマシンモニタによって、前記ビュースイッチコンポーネントを認証することに応答して、前記コンピューティング装置の物理メモリマップを定義するセキュアメモリビューを、前記対象バーチャルマシンから受け取った前記コンピューティング装置の共有メモリセグメントにアクセスするためのリクエストに応答して、前記共有メモリセグメントにアクセスするよう設定し、
    前記対象バーチャルマシンによって、前記ビュースイッチコンポーネントを用いて、前記共有メモリセグメントにアクセスするための前記リクエストに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替え、
    前記対象バーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスする
    ことを有する方法。
  17. 前記共有メモリセグメントは、前記コンピューティング装置の1以上の物理メモリページを有し、
    前記セキュアメモリビューを設定することは、前記コンピューティング装置の拡張ページテーブルを設定することを有する、
    請求項16に記載の方法。
  18. 前記セキュアメモリビューへ切り替えることは、前記拡張ページテーブルを参照するよう前記コンピューティング装置の拡張ページテーブルポインタをセットすることを有する、
    請求項17に記載の方法。
  19. 前記共有メモリセグメントは、前記コンピューティング装置のソースバーチャルマシンのゲスト物理メモリページを有し、当該方法は、
    前記ソースバーチャルマシンによって、前記共有メモリセグメントを前記バーチャルマシンモニタに登録することを更に有し、
    前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する、
    請求項16に記載の方法。
  20. 前記バーチャルマシンモニタによって、前記共有メモリセグメントを確立し、
    前記バーチャルマシンモニタによって、前記コンピューティング装置のソースバーチャルマシンのビュースイッチコンポーネントを、該ソースバーチャルマシンから受け取った前記ビュースイッチコンポーネントを認証するためのリクエストに応答して認証し、
    前記ソースバーチャルマシンによって、該ソースバーチャルマシンのビュースイッチコンポーネントを用いて、該ビュースイッチコンポーネントを認証することに応答してバーチャルマシン終了イベントを伴わずに前記セキュアメモリビューへ切り替え、
    前記ソースバーチャルマシンによって、前記セキュアメモリビューへの切り替えに応答して前記共有メモリセグメントにアクセスする
    ことを更に有し、
    前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記バーチャルマシンモニタによって確立された前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを有する、
    請求項16に記載の方法。
  21. 前記ソースバーチャルマシンによって、第2の共有メモリセグメントを前記バーチャルマシンモニタに登録することを更に有し、
    前記共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することは、前記ソースバーチャルマシンによって登録された前記第2の共有メモリセグメントにアクセスするよう前記セキュアメモリビューを設定することを更に有し、
    前記対象バーチャルマシンによって前記共有メモリセグメントにアクセスすることは、前記対象バーチャルマシンによって前記第2の共有メモリセグメントにアクセスすることを更に有する、
    請求項20に記載の方法。
  22. 前記ソースバーチャルマシンによって、前記第2の共有メモリセグメントに含まれる、前記対象バーチャルマシンによって処理されるべき共有バッファを生成し、
    前記対象バーチャルマシンによって、前記共有メモリセグメントにアクセスすることに応答して前記共有バッファを処理し、
    前記対象バーチャルマシン及び前記ソースバーチャルマシンによって、前記バーチャルマシンモニタに確立された前記共有メモリセグメントに格納されているセキュアビュー制御構造を用いて前記共有バッファの所有権を協調させる
    ことを更に有する
    請求項21に記載の方法。
  23. コンピューティング装置であって、
    プロセッサと、
    前記プロセッサによって実行される場合に、当該コンピューティング装置に請求項16乃至22のうちいずれか一項に記載の方法を実行させる複数の命令を記憶しているメモリと
    を有するコンピューティング装置。
  24. 実行されることに応答して、コンピューティング装置が請求項16乃至22のうちいずれか一項に記載の方法を実行することを生じさせる複数の命令を記憶している1以上の機械可読記憶媒体。
  25. 請求項16乃至22のうちいずれか一項に記載の方法を実行する手段を有するコンピューティング装置。
JP2015134859A 2014-08-15 2015-07-06 セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置、方法及び機械可読記憶媒体 Active JP5989862B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/460,530 2014-08-15
US14/460,530 US9454497B2 (en) 2014-08-15 2014-08-15 Technologies for secure inter-virtual-machine shared memory communication

Publications (2)

Publication Number Publication Date
JP2016042354A JP2016042354A (ja) 2016-03-31
JP5989862B2 true JP5989862B2 (ja) 2016-09-07

Family

ID=53716331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015134859A Active JP5989862B2 (ja) 2014-08-15 2015-07-06 セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置、方法及び機械可読記憶媒体

Country Status (6)

Country Link
US (1) US9454497B2 (ja)
EP (1) EP2985718B1 (ja)
JP (1) JP5989862B2 (ja)
KR (1) KR101782398B1 (ja)
CN (1) CN106201646B (ja)
TW (1) TWI556107B (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10103872B2 (en) * 2014-09-26 2018-10-16 Intel Corporation Securing audio communications
US20160117246A1 (en) * 2014-10-27 2016-04-28 Thomson Licensing Method and apparatus for cross-core covert channel
US9891954B2 (en) * 2014-11-04 2018-02-13 Vmware, Inc. Cluster resource management in a virtualized computing environment
US9760353B2 (en) 2014-12-19 2017-09-12 Signalfx, Inc. Dynamically changing input data streams processed by data stream language programs
US9703720B2 (en) 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
US9753863B2 (en) * 2014-12-27 2017-09-05 Intel Corporation Memory protection with non-readable pages
US10394692B2 (en) * 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
EP3253005A4 (en) * 2015-01-29 2018-01-17 Nec Corporation Data file registration management system, method, management device, and program
US9778945B2 (en) * 2015-02-10 2017-10-03 Red Hat Israel, Ltd. Providing mode-dependent virtual machine function code
US9684605B2 (en) * 2015-02-23 2017-06-20 Intel Corporation Translation lookaside buffer for guest physical addresses in a virtual machine
US9569247B2 (en) * 2015-03-31 2017-02-14 Red Hat Israel, Ltd. Range based virtual machine functions
US9870324B2 (en) * 2015-04-09 2018-01-16 Vmware, Inc. Isolating guest code and data using multiple nested page tables
US9727359B2 (en) * 2015-04-27 2017-08-08 Red Hat Israel, Ltd. Virtual machine function based sub-page base address register access for peripheral component interconnect device assignment
US9971624B2 (en) 2015-05-17 2018-05-15 Nicira, Inc. Logical processing for containers
CN106295385B (zh) * 2015-05-29 2019-10-22 华为技术有限公司 一种数据保护方法和装置
US10521155B2 (en) * 2015-09-29 2019-12-31 Hewlett Packard Enterprise Development Lp Application management data
US10078526B2 (en) 2015-11-01 2018-09-18 Nicira, Inc. Securing a managed forwarding element that operates within a data compute node
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) * 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10063469B2 (en) 2015-12-16 2018-08-28 Nicira, Inc. Forwarding element implementation for containers
KR101953546B1 (ko) * 2015-12-30 2019-06-03 한국전자통신연구원 가상 스위칭 장치 및 방법
US10055577B2 (en) * 2016-03-29 2018-08-21 Intel Corporation Technologies for mutual application isolation with processor-enforced secure enclaves
US10754772B2 (en) * 2016-06-14 2020-08-25 Sap Se Reclamation of in-memory database memory resources
US11442760B2 (en) 2016-07-01 2022-09-13 Intel Corporation Aperture access processors, methods, systems, and instructions
US11989332B2 (en) 2016-08-11 2024-05-21 Intel Corporation Secure public cloud with protected guest-verified host control
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
US10176007B2 (en) * 2016-08-30 2019-01-08 Red Hat Israel, Ltd. Guest code emulation by virtual machine function
US10270715B2 (en) * 2016-11-01 2019-04-23 Oracle International Corporation High performance network I/O in a virtualized environment
US10922114B2 (en) 2016-12-12 2021-02-16 Intel Corporation System and method to improve nested virtual machine monitor performance
CN106681937A (zh) * 2016-12-12 2017-05-17 中国航空工业集团公司西安航空计算技术研究所 一种流命令格式的显示列表管理方法
US10645123B1 (en) 2016-12-28 2020-05-05 Juniper Networks, Inc. Network traffic switching for virtual machines
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
CN109460373B (zh) * 2017-09-06 2022-08-26 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
CN110892388B (zh) * 2018-07-11 2022-07-22 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
CN109828827B (zh) * 2018-11-22 2023-10-27 海光信息技术股份有限公司 一种检测方法、装置及相关设备
US10776021B2 (en) * 2018-11-27 2020-09-15 Red Hat, Inc. Exit-less host page table switching and virtual machine function detection with memory pages storing an identification value that are mapped at the same guest physical addresses
US11237859B2 (en) * 2018-11-28 2022-02-01 Red Hat Israel, Ltd. Securing virtual machines in computer systems
US11099874B2 (en) 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
US11126553B2 (en) * 2019-01-31 2021-09-21 EMC IP Holding Company LLC Dynamic allocation of memory between containers
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
CN111796901A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN111796944A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
US20200401434A1 (en) * 2019-06-19 2020-12-24 Vmware, Inc. Precision time protocol in a virtualized environment
JP7309579B2 (ja) 2019-11-14 2023-07-18 株式会社東芝 通信装置、通信方法及びプログラム
GB2594534B (en) * 2020-04-30 2022-09-21 Metaswitch Networks Ltd Processing user traffic in a virtualised network
US11606346B2 (en) 2020-06-29 2023-03-14 Rockwell Automation Technologies, Inc. Method and apparatus for managing reception of secure data packets
US11599649B2 (en) * 2020-06-29 2023-03-07 Rockwell Automation Technologies, Inc. Method and apparatus for managing transmission of secure data packets
CN111988230B (zh) * 2020-08-19 2023-04-07 海光信息技术股份有限公司 虚拟机通信方法、装置、系统及电子设备
CN112131011B (zh) * 2020-11-26 2021-02-26 北京壁仞科技开发有限公司 用于管理资源的方法、计算设备和计算机可读存储介质
US20210117244A1 (en) * 2020-12-26 2021-04-22 Intel Corporation Resource manager access control
US11816498B2 (en) * 2021-01-21 2023-11-14 Nutanix, Inc. Early event-based notification for VM swapping
CN113064697B (zh) * 2021-04-01 2022-09-23 上海交通大学 利用多硬件特性加速微内核进程间通信的方法
US11971818B1 (en) 2022-07-13 2024-04-30 Cadence Design Systems, Inc. Memory view for non-volatile memory module

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143389A1 (en) * 2004-12-28 2006-06-29 Frank Kilian Main concept for common cache management
US8166474B1 (en) * 2005-09-19 2012-04-24 Vmware, Inc. System and methods for implementing network traffic management for virtual and physical machines
JP5146174B2 (ja) * 2008-07-28 2013-02-20 富士通株式会社 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法
CN101819564B (zh) * 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
FR2948789B1 (fr) * 2009-07-28 2016-12-09 Airbus Composant logiciel et dispositif pour le traitement automatise de donnees multi-usages, mettant en oeuvre des fonctions ayant besoin de differents niveaux de surete ou limites de responsabilite
US11132237B2 (en) * 2009-09-24 2021-09-28 Oracle International Corporation System and method for usage-based application licensing in a hypervisor virtual execution environment
CN101667144B (zh) * 2009-09-29 2013-02-13 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN102971706B (zh) * 2010-05-10 2016-08-10 思杰系统有限公司 将信息从安全虚拟机重定向到不安全虚拟机
US8893274B2 (en) * 2011-08-03 2014-11-18 Trend Micro, Inc. Cross-VM network filtering
US9372812B2 (en) * 2011-12-22 2016-06-21 Intel Corporation Determining policy actions for the handling of data read/write extended page table violations
JP2013242644A (ja) * 2012-05-18 2013-12-05 Panasonic Corp 仮想計算機システム、制御方法、およびプログラム
US9037823B2 (en) * 2012-09-14 2015-05-19 Intel Corporation Protecting IAT/EAT hooks from rootkit attacks using new CPU assists
CN103870312B (zh) * 2012-12-12 2018-01-23 华为技术有限公司 建立虚拟机共享存储缓存的方法及装置
US8904388B2 (en) * 2013-01-10 2014-12-02 Vce Company, Llc Scripting language executor service for applications

Also Published As

Publication number Publication date
CN106201646B (zh) 2020-03-31
TW201629779A (zh) 2016-08-16
JP2016042354A (ja) 2016-03-31
EP2985718B1 (en) 2017-03-22
CN106201646A (zh) 2016-12-07
TWI556107B (zh) 2016-11-01
US20160048464A1 (en) 2016-02-18
US9454497B2 (en) 2016-09-27
KR101782398B1 (ko) 2017-09-28
KR20160021028A (ko) 2016-02-24
EP2985718A1 (en) 2016-02-17

Similar Documents

Publication Publication Date Title
JP5989862B2 (ja) セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置、方法及び機械可読記憶媒体
US10503405B2 (en) Zero copy memory reclaim using copy-on-write
US8893267B1 (en) System and method for partitioning resources in a system-on-chip (SoC)
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US7552298B2 (en) Method and system for deferred pinning of host memory for stateful network interfaces
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
US11943340B2 (en) Process-to-process secure data movement in network functions virtualization infrastructures
US10019276B2 (en) Dynamic non-uniform memory architecture (NUMA) locality for remote direct memory access (RDMA) applications
CN107924325B (zh) 用于多级虚拟化的设备和方法
US11836091B2 (en) Secure memory access in a virtualized computing environment
US10331591B2 (en) Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention
US9875131B2 (en) Virtual PCI device based hypervisor bypass using a bridge virtual machine
US10430327B2 (en) Virtual machine based huge page balloon support
US10255203B2 (en) Technologies for zero-copy inter-virtual-machine data movement
US9921875B2 (en) Zero copy memory reclaim for applications using memory offlining
US9459907B2 (en) Guest controlled malicious payload protection
CN112330229A (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
US10140148B1 (en) Copy based IOMMU emulation for out-of-process emulated devices
US20220318040A1 (en) System and method for providing page migration
EP3255544B1 (en) Interrupt controller

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160810

R150 Certificate of patent or registration of utility model

Ref document number: 5989862

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250