JP7090080B2 - ハイパーバイザプログラム - Google Patents
ハイパーバイザプログラム Download PDFInfo
- Publication number
- JP7090080B2 JP7090080B2 JP2019529028A JP2019529028A JP7090080B2 JP 7090080 B2 JP7090080 B2 JP 7090080B2 JP 2019529028 A JP2019529028 A JP 2019529028A JP 2019529028 A JP2019529028 A JP 2019529028A JP 7090080 B2 JP7090080 B2 JP 7090080B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- virtual
- virtual machine
- data
- hypervisor
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、仮想計算機間でデータ通信が可能となるハイパーバイザプログラムに関する。
情報技術分野では、コスト削減、消費電力削減、高い俊敏性などのメリットがある仮想化技術が広く普及しており、IaaS(Infrastructure as a Service)やSaaS(Software as a Service)のようなクラウドの基盤技術として用いられている。また、通信サービス事業においても、仮想化技術は、NFV(Network Function Virtualization)の基盤技術となっており、さらにIoT(Internet of Things)の進展に伴い、自動車や工場、家電などの制御技術分野にも拡大しつつある。
仮想化技術を用いることで、1つの物理計算機上で複数の仮想計算機を稼働させることができる。詳しくは、物理計算機上で稼働するハイパーバイザが、仮想CPU(Central Processing Unit)や仮想メモリ、仮想ストレージ、仮想NIC(Network Interface Card)を備えた仮想計算機を機能させ、この仮想計算機上でゲストOS(Operating System)が稼働する。仮想計算機は、ハイパーバイザが提供する仮想NICと仮想ネットワークの機能を用いて、他の仮想計算機と通信することができる(非特許文献1)。
Jian Wang他,"XenLoop: A Transparent High Performance Inter-VM Network Loopback,"[online],[2017年6月14日検索],インターネット<URL:http://osnet.cs.binghamton.edu/publications/wang08xenloop.pdf>
仮想NICと仮想ネットワークを介した通信では、通信データの送受信を開始する前に、通信路を開設するためのハンドシェイク処理が必要である。また、送信側ゲストOS上のアプリケーションから送信側ゲストOSへ、送信側ゲストOSから送信側仮想NICへ、送信側仮想NICから受信側仮想NICへ、受信側仮想NICから受信側ゲストOSへ、および、受信側ゲストOSから受信側ゲストOS上のアプリケーションへの5回のデータコピーがあるために通信処理に時間を要する。非特許文献1では、データのコピー回数を削減する工夫が記載されているが、さらなる高速化が求められている。
このような背景を鑑みて本発明がなされたのであり、本発明は、仮想計算機間で高速なデータ通信を可能とするハイパーバイザプログラムを提供することを課題とする。
前記した課題を解決するため、本発明は、物理計算機上に複数の仮想計算機を稼働させ、前記仮想計算機の間のデータ通信を仲介するハイパーバイザであって、前記仮想計算機のうちデータの送信側である送信側仮想計算機から送信メモリ領域の通知を受けると、前記仮想計算機のうちデータの受信側である受信側仮想計算機に割込で受信要求を通知し、前記受信側仮想計算機から受信メモリ領域の通知を受けると、前記送信メモリ領域のデータを前記受信メモリ領域にコピーするメモリコピー部を備えるハイパーバイザ、を実現させるためのハイパーバイザプログラムとした。
このようにすることで、物理計算機は、送信メモリ領域から受信メモリ領域に1度のコピーでデータを送信することができる。これにより、送信側仮想計算機から受信側仮想計算機へ高速にデータ送信することが可能となる。
本発明によれば、仮想計算機間で高速なデータ通信を可能とするハイパーバイザプログラムを提供することができる。
以下、図面を参照しながら本発明を実施するための形態(実施形態)を説明する。図1は、第1の実施形態に係るホスト計算機10の全体構成を示す図である。ホスト計算機(物理計算機)10は、CPU31、メモリ32、ストレージ33、入出力部34、ハイパーバイザ20、仮想計算機(60、70)を含めて構成される。
CPU31は、ストレージ33に記憶されるプログラムを実行して、後述するハイパーバイザ20やハイパーバイザ20上の仮想計算機(60、70)を機能させる。メモリ32は、CPU31が実行する処理に必要なデータを記憶する。ストレージ33は、ハイパーバイザ20や仮想計算機(60、70)のプログラムやデータを記憶する。入出力部34は、他の計算機やディスプレイ(不図示)、キーボード(不図示)とのデータのやり取りを行う。
ハイパーバイザ20は、CPU31、メモリ32、ストレージ33、入出力部34を仮想化して、仮想的な計算機を稼働する。ハイパーバイザ20は、仮想計算機60の仮想メモリ上にあるデータを仮想計算機70の仮想メモリにコピーするメモリコピー部21を含み、仮想計算機(60、70)の間のデータ通信を仲介する。
仮想計算機60は、ハイパーバイザ20上の仮想的な計算機であり、仮想CPU61、仮想メモリ62、仮想ストレージ(不図示)、仮想入出力部(不図示)、ゲストOS65、ゲストOS65上で稼働するアプリケーション(不図示)を含んで構成される。仮想CPU61、仮想メモリ62、仮想ストレージ(不図示)および仮想入出力部(不図示)は、ハイパーバイザ20が提供し、仮想計算機60が備える仮想的なCPU、メモリ、ストレージおよび入出力部である。
ゲストOS65は、仮想CPU61、仮想メモリ62、仮想ストレージ(不図示)および仮想入出力部(不図示)の仮想的なハードウェア上で稼働するOSである。ゲストOS65が、ハイパーバイザ20に対してサービスを要求するときには、HVC(Hypervisor Call)を用いてサービスを呼び出す。ハイパーバイザ20がゲストOS65に要求がある場合には、割込みを用いて通知する。ゲストOS65は、仮想メモリ62を仮想計算機60の物理メモリとしてアクセスするが、実際には、CPU31とハイパーバイザ20とにより仮想メモリ62上のアドレスがホスト計算機10のメモリ32上のアドレスに変換されてから、メモリ32にアクセスする。
仮想計算機70も、仮想計算機60と同様の構成であり、仮想CPU71や仮想メモリ72、ゲストOS75を含んで構成される。ハイパーバイザ20上の仮想計算機(60、70)は、3つ以上であってもよい。メモリコピー部21は、仮想メモリ62に対応するメモリ32のデータを、仮想メモリ72に対応するメモリ32にコピーする。
≪第1の実施形態:受信側仮想計算機が開始する、仮想メモリ間のコピーによるデータ送信≫
図2は、第1の実施形態に係る受信側の仮想計算機70が開始する、仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図2を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。
図2は、第1の実施形態に係る受信側の仮想計算機70が開始する、仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図2を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。
ステップS101において、受信側である仮想計算機70がデータを受信する領域である受信メモリ領域を確保する。
ステップS102において、仮想計算機70が、HVCを用いて受信メモリ領域をハイパーバイザ20に通知してデータ受信を要求する。詳しくは、仮想計算機70は、受信メモリ領域のアドレスやサイズを仮想CPU71の特定のレジスタにセットして、受信メモリ領域を通知するHVCを実行する。ハイパーバイザ20は、メモリコピー処理を実行するメモリコピー部21にHVCを転送する。
ステップS102において、仮想計算機70が、HVCを用いて受信メモリ領域をハイパーバイザ20に通知してデータ受信を要求する。詳しくは、仮想計算機70は、受信メモリ領域のアドレスやサイズを仮想CPU71の特定のレジスタにセットして、受信メモリ領域を通知するHVCを実行する。ハイパーバイザ20は、メモリコピー処理を実行するメモリコピー部21にHVCを転送する。
ステップS103において、メモリコピー部21は、送信要求があったことを送信側の仮想計算機60に割込みを用いて通知する。
ステップS104において、送信要求の割込みが発生した仮想計算機60は、送信データを記憶する送信メモリ領域を確保する。
ステップS104において、送信要求の割込みが発生した仮想計算機60は、送信データを記憶する送信メモリ領域を確保する。
ステップS105において、仮想計算機60は、送信メモリ領域に送信データをセットする。
ステップS106において、仮想計算機60は、送信メモリ領域のアドレスとサイズをレジスタにセットし、送信メモリ領域を通知してデータ送信を要求するHVCを実行する。
ステップS106において、仮想計算機60は、送信メモリ領域のアドレスとサイズをレジスタにセットし、送信メモリ領域を通知してデータ送信を要求するHVCを実行する。
ステップS107において、メモリコピー部21が、送信メモリ領域から受信メモリ領域へデータをコピーする。詳しくは、メモリコピー部21は、仮想計算機60の送信メモリ領域に対応するホスト計算機10のメモリ32上のデータを、仮想計算機70の受信メモリ領域に対応するメモリ32の位置(アドレス)へコピーする。
ステップS108において、メモリコピー部21が、コピーが完了したことを仮想計算機60に割込みを用いて通知する。なお、ステップS103の割込みとステップS108の割込みとは、種別(割込みベクタ)が異なる。
ステップS108において、メモリコピー部21が、コピーが完了したことを仮想計算機60に割込みを用いて通知する。なお、ステップS103の割込みとステップS108の割込みとは、種別(割込みベクタ)が異なる。
ステップS109において、メモリコピー部21が、コピーが完了したことを仮想計算機70に割込みを用いて通知する。以降、仮想計算機70は、送信データにアクセスできる。なお、ステップS108の割込みとステップS109の割込みとは、同じ種別(割込みベクタ)である。
第1の実施形態において、メモリコピーは、ステップS107の1回だけであり、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72に高速にデータを送信することができる。
第1の実施形態において、メモリコピーは、ステップS107の1回だけであり、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72に高速にデータを送信することができる。
≪第1の実施形態の変形例1:HVCの返答を用いたコピー完了通知≫
上記した第1の実施形態では、メモリコピー部21が、コピー完了を仮想計算機60に通知するのに、割込みを用いている(ステップS108参照)。割込みの替わりに、メモリコピー部21は、送信メモリ領域を通知するHVC(ステップS106参照)の返答(リターン値)を用いてもよい。詳しくは、メモリコピー部21が、ステップS106においてHVCにより送信メモリ領域の通知を受け、続いて、ステップS107のコピー処理を実行して、ステップS106のHVCの返答としてコピー完了を仮想計算機60に通知する。
上記した第1の実施形態では、メモリコピー部21が、コピー完了を仮想計算機60に通知するのに、割込みを用いている(ステップS108参照)。割込みの替わりに、メモリコピー部21は、送信メモリ領域を通知するHVC(ステップS106参照)の返答(リターン値)を用いてもよい。詳しくは、メモリコピー部21が、ステップS106においてHVCにより送信メモリ領域の通知を受け、続いて、ステップS107のコピー処理を実行して、ステップS106のHVCの返答としてコピー完了を仮想計算機60に通知する。
≪第1の実施形態の変形例2:送信メモリ領域のサイズが小さい場合≫
第1の実施形態においては、送信メモリ領域から受信メモリ領域へのコピーは1回で完了している。送信側の仮想計算機60の送信メモリ領域が小さく、1回のコピーではデータを送信しきれない場合には、ステップS104~S107を繰り返すことで、送信データを受信メモリ領域にコピーすることができる。
第1の実施形態においては、送信メモリ領域から受信メモリ領域へのコピーは1回で完了している。送信側の仮想計算機60の送信メモリ領域が小さく、1回のコピーではデータを送信しきれない場合には、ステップS104~S107を繰り返すことで、送信データを受信メモリ領域にコピーすることができる。
繰り返す処理のステップS107において、ハイパーバイザ20は、受信メモリ領域の中で前回コピーしたデータに続く位置に今回のデータをコピーする。
送信側の仮想計算機60は、ステップS106において、送信メモリ領域のサイズを0とすることで、送信終了をハイパーバイザ20に通知する。送信完了の通知を受けたハイパーバイザ20は、ステップS107の処理をすることなく、繰り返し処理を終えて、ステップS108に進む。ハイパーバイザ20は、ステップS108に進まず、ステップS109に進んでもよい。
送信側の仮想計算機60は、ステップS106において、送信メモリ領域のサイズを0とすることで、送信終了をハイパーバイザ20に通知する。送信完了の通知を受けたハイパーバイザ20は、ステップS107の処理をすることなく、繰り返し処理を終えて、ステップS108に進む。ハイパーバイザ20は、ステップS108に進まず、ステップS109に進んでもよい。
≪第1の実施形態の変形例3:受信メモリ領域のサイズが小さい場合≫
受信側の仮想計算機70が送信データのサイズを知らない場合には、送信メモリ領域より受信メモリ領域が小さく、1回のコピーではコピーが完了しない。このような場合には、メモリコピー部21は複数回に分けてコピーする。
受信側の仮想計算機70が送信データのサイズを知らない場合には、送信メモリ領域より受信メモリ領域が小さく、1回のコピーではコピーが完了しない。このような場合には、メモリコピー部21は複数回に分けてコピーする。
図3は、第1の実施形態の変形例3に係る仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図3を参照しながら、送信メモリ領域より受信メモリ領域が小さい場合に、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、複数回に分けて仮想計算機70の仮想メモリ72にコピーする処理を説明する。
ステップS121~S126は、ステップS101~S106とそれぞれ同様である。
ステップS127において、メモリコピー部21が、送信メモリ領域から受信メモリ領域へデータを送信メモリに受信メモリのサイズ分だけコピーする。
ステップS127において、メモリコピー部21が、送信メモリ領域から受信メモリ領域へデータを送信メモリに受信メモリのサイズ分だけコピーする。
ステップS128において、メモリコピー部21が、受信メモリ領域が不足していることを仮想計算機70に割込みを用いて通知する。
ステップS129とステップS130とは、ステップS101とステップS102とそれぞれ同様である。
ステップS129とステップS130とは、ステップS101とステップS102とそれぞれ同様である。
ステップS131において、メモリコピー部21が、送信メモリ領域の中で、ステップS127においてコピーした次の位置から受信メモリ領域へデータをコピーする。コピーするサイズは、送信メモリ領域の中でコピーが完了していない領域のサイズが、受信メモリ領域のサイズ以下ならば、コピーが完了していない領域のサイズである。そうでないならば、コピーするサイズは、受信メモリ領域のサイズである。以下では、送信メモリ領域の中でコピーが完了していない領域のサイズが、受信メモリ領域のサイズ以下であったとして説明を続ける。
ステップS132とステップS133は、ステップS108とステップS109と、それぞれ同様である。
ステップS131において、送信メモリ領域の中でコピーが完了していない領域のサイズが、受信メモリ領域のサイズより大きい場合には、ステップS128~S131の処理を繰り返す。
ステップS131において、送信メモリ領域の中でコピーが完了していない領域のサイズが、受信メモリ領域のサイズより大きい場合には、ステップS128~S131の処理を繰り返す。
上記したとおり、受信メモリ領域が送信メモリ領域より小さい場合であっても、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72にデータを送信することができる。ネットワーク機能を用いてデータを送信する場合には、1つの通信データ(通信パケット)のサイズには上限がある。このサイズより大きな受信メモリ領域を確保すれば、ネットワーク経由のデータ送信よりさらに高速にデータ送信が可能となる。
上記した第1の実施形態の変形例3では、メモリコピー部21が、コピー完了を仮想計算機70に通知するのに、割込みを用いている(ステップS133参照)。割込みの替わりに、メモリコピー部21は、受信メモリ領域を通知するHVC(ステップS130参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS130においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS131のコピー処理が完了したならば、ステップS130のHVCの返答としてコピー完了を仮想計算機70に通知する。
また、上記した第1の実施形態の変形例3では、メモリコピー部21が、領域不足を仮想計算機70に通知するのに、割込みを用いている(ステップS128参照)。割込みの替わりに、メモリコピー部21は、受信メモリ領域を通知するHVC(ステップS130参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS130においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS131のコピー処理が未完了ならば、ステップS130のHVCの返答として領域不足を仮想計算機70に通知する。以下、仮想計算機70とメモリコピー部21とは、ステップS129~S131を繰り返す。
≪第2の実施形態:送信側仮想計算機が開始する、仮想メモリ間のコピーによるデータ送信≫
図4は、第2の実施形態に係る送信側の仮想計算機60が開始する、仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図4を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。
図4は、第2の実施形態に係る送信側の仮想計算機60が開始する、仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図4を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。
ステップS201~S203は、図2記載のステップS104~S106と同様である。
ステップS204において、メモリコピー部21は、受信要求を受信側の仮想計算機70に割込みを用いて通知する。
ステップS204において、メモリコピー部21は、受信要求を受信側の仮想計算機70に割込みを用いて通知する。
ステップS205とステップS206とは、図2記載のステップS101とステップS102とそれぞれ同様である。
ステップS207~S209は、図1記載のステップS107~S109と同様である。
ステップS207~S209は、図1記載のステップS107~S109と同様である。
第2の実施形態において、メモリコピー処理は、ステップS207の1回だけであり、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72に高速にデータを送信することができる。
≪第2の実施形態の変形例1:HVCの返答を用いたコピー完了通知≫
上記した第2の実施形態では、メモリコピー部21が、コピー完了を仮想計算機70に通知するのに、割込みを用いている(ステップS209参照)。割込みの替わりに、メモリコピー部21は、受信メモリ領域を通知するHVC(ステップS206参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS206においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS207のコピー処理を実行して、ステップS206のHVCの返答としてコピー完了を仮想計算機70に通知する。
上記した第2の実施形態では、メモリコピー部21が、コピー完了を仮想計算機70に通知するのに、割込みを用いている(ステップS209参照)。割込みの替わりに、メモリコピー部21は、受信メモリ領域を通知するHVC(ステップS206参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS206においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS207のコピー処理を実行して、ステップS206のHVCの返答としてコピー完了を仮想計算機70に通知する。
≪第2の実施形態の変形例2:受信メモリ領域のサイズが小さい場合≫
上記した第2の実施形態においては、送信メモリ領域から受信メモリ領域へのコピーは1回で完了している。受信側の仮想計算機70の受信メモリ領域が小さく、ステップS207で実行する1回のコピーではデータを送信しきれない場合には、ステップS207に続いて図3に記載したステップS128~S131と同様の処理を繰り返すことで、送信データを受信メモリ領域にコピーすることができる。また、メモリコピー部21は、ステップS128の割込みの替わりに、ステップS130のHVCの返答を用いて、領域不足を仮想計算機70に通知してもよい。
上記した第2の実施形態においては、送信メモリ領域から受信メモリ領域へのコピーは1回で完了している。受信側の仮想計算機70の受信メモリ領域が小さく、ステップS207で実行する1回のコピーではデータを送信しきれない場合には、ステップS207に続いて図3に記載したステップS128~S131と同様の処理を繰り返すことで、送信データを受信メモリ領域にコピーすることができる。また、メモリコピー部21は、ステップS128の割込みの替わりに、ステップS130のHVCの返答を用いて、領域不足を仮想計算機70に通知してもよい。
また、ステップS209の割込みを用いたコピー完了の通知の替わりに、受信メモリ領域を通知するHVC(ステップS130参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS130においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS131のコピー処理が完了したならば、ステップS130のHVCの返答としてコピー完了を仮想計算機70に通知する。
≪第3の実施形態:メモリマッピング変更によるデータ送信≫
第1と第2の実施形態においては、ハイパーバイザ20が、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72へデータをコピーして、データを送信している。詳しくは、ハイパーバイザ20が、仮想メモリ62に対応するメモリ32の領域から、仮想メモリ72に対応するメモリ32の領域にデータをコピーしている。これに対し、第3の実施形態では、ハイパーバイザ20が、仮想メモリ(62、72)とメモリ32との対応(メモリマッピング)を変更することで、データコピーを不要にしてデータ送信する。
第1と第2の実施形態においては、ハイパーバイザ20が、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72へデータをコピーして、データを送信している。詳しくは、ハイパーバイザ20が、仮想メモリ62に対応するメモリ32の領域から、仮想メモリ72に対応するメモリ32の領域にデータをコピーしている。これに対し、第3の実施形態では、ハイパーバイザ20が、仮想メモリ(62、72)とメモリ32との対応(メモリマッピング)を変更することで、データコピーを不要にしてデータ送信する。
図5は、第3の実施形態に係るホスト計算機10Aの全体構成を示す図である。ハイパーバイザ20Aは、メモリコピー部21に替わりメモリマッピング部22を含んで構成される。他の構成は、ホスト計算機10と同様である。仮想メモリ(62、72)とメモリ32とのマッピング(対応関係)は、後述する拡張ページテーブル(41、42、図6参照)を用いて管理されている。メモリマッピング部22は、拡張ページテーブル(41、42)を変更することにより、仮想計算機60から仮想計算機70へデータ(メモリページ)を送信する。
図6は、第3の実施形態に係る仮想計算機の仮想メモリとホスト計算機の物理メモリとのマッピングの状態を説明するための図である。図6の左上に記載してある仮想計算機60の仮想メモリ62の左側にある100と300は、仮想メモリ62のアドレスである。送信メモリ領域に対応する送信メモリページがアドレス300より始まっていることを示している。
図6の中央上に記載の拡張ページテーブル41は、仮想計算機60の仮想メモリ62のページと、メモリ32のページとの対応を示す表形式のデータであり、メモリ32上に記憶される。拡張ページテーブルのレコード(行)は、仮想メモリ62を構成するページの論理アドレスであるGPA(Guest Physical Address)411と、メモリ32を構成するページの物理アドレスであるPA(Physical Address)412との属性(列)を含む。GPA411は、仮想計算機60から見ると物理アドレスであるが、ハイパーバイザ20Aから見ると論理アドレス(仮想計算機60に見せる仮想の物理アドレス)となる。レコード419は、GPAが300である仮想メモリ62の送信メモリページが、PAが440であるメモリ32にマッピングされており、送信メモリページのデータは、PAが440から始まるメモリ32のページ(図6ではホスト物理メモリページと記載)に格納されていることを示す。レコード418についても、同様である。
図6の中央下に記載の拡張ページテーブル42は、仮想計算機70の仮想メモリ72のページと、メモリ32のページとの対応を示す表形式のデータであり、仮想計算機60の拡張ページテーブル41と同様の構成である。レコード429は、GPAが420である仮想メモリ72のページが、PAが900であるメモリ32のページにマッピングされていることを示す。
図7は、第3の実施形態に係る仮想計算機60から仮想計算機70へのメモリマッピング変更によるデータ送信処理の流れを示すシーケンス図である。図7を参照しながら、ハイパーバイザ20Aのメモリマッピング部22が、仮想計算機60の仮想メモリ62上のページと、仮想計算機70の仮想メモリ72のページとのメモリマッピングを変更することによってデータ送信を実現する処理を説明する。
ステップS301において、送信側である仮想計算機60がデータを送信する領域である送信メモリページを確保する。図6は、この時点でのメモリマッピングの状態を示しており、仮想計算機60のアドレス300から始まる仮想メモリ62のメモリページが、ホスト計算機10Aのアドレス440から始まるメモリ32のメモリページにマッピングされていることを示す。
ステップS302において、仮想計算機60は、送信メモリページに送信データをセットする。セットされたデータは、アドレス440から始まるメモリ32のメモリページに格納される。
ステップS303において、仮想計算機60が、HVCを用いて送信メモリページをハイパーバイザ20に通知してデータ送信を要求する。詳しくは、仮想計算機60は、送信メモリページのアドレスを仮想CPU61の特定のレジスタにセットして、送信メモリページを通知してデータ送信を要求するHVCを実行する。ハイパーバイザ20は、メモリマッピングの変更処理を実行するメモリマッピング部22にHVCを転送する。
ステップS303において、仮想計算機60が、HVCを用いて送信メモリページをハイパーバイザ20に通知してデータ送信を要求する。詳しくは、仮想計算機60は、送信メモリページのアドレスを仮想CPU61の特定のレジスタにセットして、送信メモリページを通知してデータ送信を要求するHVCを実行する。ハイパーバイザ20は、メモリマッピングの変更処理を実行するメモリマッピング部22にHVCを転送する。
ステップS304において、メモリマッピング部22は、受信要求を受信側の仮想計算機70に割込みを用いて通知する。
ステップS305において、受信要求の割込みが発生した仮想計算機70は、受信メモリページを確保する。図8は、第3の実施形態に係る、仮想計算機70が受信メモリページを確保した時点での、仮想計算機の仮想メモリとホスト計算機の物理メモリとのマッピングの状態を示す図である。仮想計算機70の拡張ページテーブル42のレコード428が示すように、仮想メモリ72上のアドレス120から始まる受信メモリページは、メモリ32上のアドレス700から始まるページ(図8ではホスト物理メモリページと記載)にマッピングされている。
ステップS306において、仮想計算機70は、受信メモリページのアドレスを特定のレジスタにセットして、受信メモリページを通知するHVCを実行する。
ステップS307において、メモリマッピング部22が、メモリマッピングを変更する。詳しくは、メモリマッピング部22が、以下の処理を行う。(1)メモリ32上に新たにメモリページを確保する。(2)仮想計算機60の拡張ページテーブル41の送信メモリページに対応するレコード419のPA412を(1)で確保したメモリページの物理アドレスに変更する。(3)仮想計算機70の拡張ページテーブル42の受信メモリページに対応するレコード428のPA422を(2)の変更前の送信メモリページの論理アドレスのマッピング先の物理アドレスに変更する。図9は、第3の実施形態に係る、メモリマッピングを変更した時点での、仮想計算機の仮想メモリとホスト計算機の物理メモリとのマッピングの状態を示す図である。図8と比較すると、レコード419のPA412が440から340に、レコード428のPA422が700から440に変更されている。受信メモリページが、送信メモリページがマッピングされていたアドレス440から始まるページへマッピングされるように変更されている。
ステップS308において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機60に割込みを用いて通知する。
ステップS309において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に割込みを用いて通知する。
ステップS309において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に割込みを用いて通知する。
第3の実施形態において、仮想計算機60がアクセスしていたホスト計算機10Aのメモリ32のページが、仮想計算機70がアクセスするページに切り替わることにより、仮想計算機60から仮想計算機70にデータが送信される。メモリのコピーがなく、高速にデータ送信が可能である。さらに、メモリを共有しているわけではなく、受信側の仮想計算機70のデータが、送信側の仮想計算機60からアクセスされることはない。
≪第3の実施形態の変形例1:HVCの返答を用いたコピー完了通知≫
上記した第3の実施形態では、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に通知するのに、割込みを用いている(ステップS309参照)。割込みの替わりに、メモリマッピング部22は、受信メモリページを通知するHVC(ステップS306参照)の返答を用いてもよい。詳しくは、メモリマッピング部22が、ステップS306においてHVCにより受信メモリページの通知を受け、続いて、ステップS307のメモリマッピングの変更処理を実行して、ステップS306のHVCの返答としてマッピング変更完了を仮想計算機70に通知する。
上記した第3の実施形態では、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に通知するのに、割込みを用いている(ステップS309参照)。割込みの替わりに、メモリマッピング部22は、受信メモリページを通知するHVC(ステップS306参照)の返答を用いてもよい。詳しくは、メモリマッピング部22が、ステップS306においてHVCにより受信メモリページの通知を受け、続いて、ステップS307のメモリマッピングの変更処理を実行して、ステップS306のHVCの返答としてマッピング変更完了を仮想計算機70に通知する。
≪第3の実施形態の変形例2:複数ページを用いたメモリマッピング変更によるデータ送信≫
上記の第3の実施形態では、送信対象となるページは1つであったが、複数ページであってもよい。図10は、第3の実施形態の変形例2に係る仮想計算機60と仮想計算機70との複数のメモリページのマッピング変更によるデータ送信処理の流れを示すシーケンス図である。
上記の第3の実施形態では、送信対象となるページは1つであったが、複数ページであってもよい。図10は、第3の実施形態の変形例2に係る仮想計算機60と仮想計算機70との複数のメモリページのマッピング変更によるデータ送信処理の流れを示すシーケンス図である。
ステップS321において、送信側である仮想計算機60がデータを送信する領域である連続する複数の送信メモリページを確保する。
ステップS322において、仮想計算機60は、送信メモリページに送信データをセットする。
ステップS322において、仮想計算機60は、送信メモリページに送信データをセットする。
ステップS323において、仮想計算機60が、HVCを用いて送信メモリページをハイパーバイザ20に通知してデータ送信を要求する。詳しくは、仮想計算機60は、送信メモリページのアドレスとページ数を仮想CPU61の特定のレジスタにセットして、送信メモリページを通知するHVCを実行する。ハイパーバイザ20は、メモリマッピングの変更処理を実行するメモリマッピング部22にHVCを転送する。
ステップS324において、メモリマッピング部22は、受信要求を受信側の仮想計算機70に割込みを用いて通知する。
ステップS325において、割込みが発生した仮想計算機70は、受信メモリページを確保する。仮想計算機70は、連続する複数の受信メモリページを確保してもよい。
ステップS325において、割込みが発生した仮想計算機70は、受信メモリページを確保する。仮想計算機70は、連続する複数の受信メモリページを確保してもよい。
ステップS326において、仮想計算機70は、受信メモリメモリのアドレスとページ数とを特定のレジスタにセットして、受信メモリページを通知するHVCを実行する。メモリマッピング部22は、送信メモリページのページ数と受信メモリページのページ数を比較する。ここでは、送信メモリページのページ数と受信メモリページのページ数が異なるとして説明を続ける。同じであるならば、ステップS329に進む。
メモリマッピング部22は、HVCの返答として、送信メモリページのページ数を返す。
ステップS327において、仮想計算機70は、HVCの返答にあったページ数の連続する受信メモリページを確保する。
ステップS327において、仮想計算機70は、HVCの返答にあったページ数の連続する受信メモリページを確保する。
ステップS328において、仮想計算機70は、受信メモリメモリのアドレスとページ数とをレジスタにセットして、受信メモリページを通知するHVCを実行する。
ステップS329において、メモリマッピング部22が、メモリマッピングを変更する。詳しくは、メモリマッピング部22は、ステップS307と同様に、送信側の仮想計算機60用の拡張ページテーブル41の送信メモリページのレコードのPA412を、新たなメモリページのアドレスに変更し、受信側の仮想計算機70用の拡張ページテーブル42の受信メモリページのレコードのPA422を、送信メモリページがマッピングされていたメモリ32上のページのアドレスに変更する。メモリマッピング部22は、連続する元の送信メモリページが、連続する受信メモリページにマッピングされるように、拡張ページテーブル42の複数のレコードのPA422を変更する。
ステップS329において、メモリマッピング部22が、メモリマッピングを変更する。詳しくは、メモリマッピング部22は、ステップS307と同様に、送信側の仮想計算機60用の拡張ページテーブル41の送信メモリページのレコードのPA412を、新たなメモリページのアドレスに変更し、受信側の仮想計算機70用の拡張ページテーブル42の受信メモリページのレコードのPA422を、送信メモリページがマッピングされていたメモリ32上のページのアドレスに変更する。メモリマッピング部22は、連続する元の送信メモリページが、連続する受信メモリページにマッピングされるように、拡張ページテーブル42の複数のレコードのPA422を変更する。
ステップS330において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機60に割込みを用いて通知する。
ステップS331において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に割込みを用いて通知する。
ステップS331において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に割込みを用いて通知する。
上記した第3の実施形態の変形例2では、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に通知するのに、割込みを用いている(ステップS331参照)。割込みの替わりに、メモリマッピング部22は、受信メモリページを通知するHVC(ステップS328参照)の返答を用いてもよい。詳しくは、メモリマッピング部22が、ステップS328においてHVCにより受信メモリページの通知を受け、続いて、ステップS329のメモリマッピングの変更処理を実行して、ステップS328のHVCの返答としてマッピング変更完了を仮想計算機70に通知する。
≪第4の実施形態:情報フロー制御を伴った仮想メモリ間のコピーによるデータ送信≫
第1~第3の実施形態では、仮想計算機60から仮想計算機70へデータを送信していた。逆に、仮想計算機70から仮想計算機60へ送信することも可能であり、両方向の通信が可能である。しかしながら、仮想計算機(60、70)が保持する情報の機密度や仮想計算機(60、70)の用途によっては、片方向の通信のみに制限したい場合もある。
第1~第3の実施形態では、仮想計算機60から仮想計算機70へデータを送信していた。逆に、仮想計算機70から仮想計算機60へ送信することも可能であり、両方向の通信が可能である。しかしながら、仮想計算機(60、70)が保持する情報の機密度や仮想計算機(60、70)の用途によっては、片方向の通信のみに制限したい場合もある。
例えば、仮想計算機70が機密度の高い情報を処理し、仮想計算機60が一般レベルの情報を処理する場合には、仮想計算機70から仮想計算機60へのデータ送信を禁止することにより、仮想計算機60へ機密度の高い情報が漏洩することを防止できる。また、機密度の高さに関係なく、マルウェアのような危険なプログラムが動作する計算機は、受信専用にし、データ送信できないようにしておけば、他の計算機にマルウェアが拡散することが無いようにできる。以下に、データ送信の方向を制限した仮想メモリ間のコピーによるデータ送信を説明する。
図11は、第4の実施形態に係るストレージ33上に格納される仮想計算機データベース51のデータ構成を例示する図である。仮想計算機データベース51は表形式のデータであって、1つのレコード(行)は1つの仮想計算機(60、70)を表し、仮想計算機ID511、ハードウェア設定512、認証情報513の属性(列)を含む。
仮想計算機ID511は、仮想計算機(60、70)の識別情報(ID、Identifire)である。
ハードウェア設定512は、仮想計算機(60、70)のハードウェアの設定情報であり、仮想CPU(61、71)のコア数や仮想メモリ(62、72)のサイズ、仮想NIC(不図示)のMAC(Media Access Control)アドレス、ストレージ33の領域(セクタ)の中で仮想計算機(60、70)の仮想ストレージ(不図示)に割り当てられる領域を示す情報などが含まれる。
ハードウェア設定512は、仮想計算機(60、70)のハードウェアの設定情報であり、仮想CPU(61、71)のコア数や仮想メモリ(62、72)のサイズ、仮想NIC(不図示)のMAC(Media Access Control)アドレス、ストレージ33の領域(セクタ)の中で仮想計算機(60、70)の仮想ストレージ(不図示)に割り当てられる領域を示す情報などが含まれる。
認証情報513は、当該レコードとその内容の認証情報であり、仮想計算機ID511とハードウェア設定512とのハッシュ値またはデジタル署名である。認証情報513は、仮想計算機ID511とハードウェア設定512の他に、仮想ストレージ上のブートローダやゲストOS(65、75)のカーネルなどを含んだデータのハッシュ値またはデジタル署名であってもよい。
仮想計算機(60、70)が起動する前に、ハイパーバイザ(20、20A)は、ハードウェア設定やブートローダ、ゲストOSのカーネルを認証情報513のハッシュ値またはデジタル署名と照合し、照合に失敗した場合には、仮想計算機(60、70)の起動を中止する。
レコード519は、仮想計算機ID511が「VM#60」である仮想計算機の仮想CPUのコア数は1であり、仮想NICのMACアドレスは「3F34」で始まることを示している。
図12は、第4の実施形態に係るストレージ33上に格納される情報フロー制御管理データベース52のデータ構成を例示する図である。情報フロー制御管理データベース52は、表形式のデータであって、1つのレコード(行)は許可された仮想計算機間のデータ送信の方向を示し、送信元521と送信先522の属性(列)を含む。送信元521は許可されたデータ送信方向のデータ送信元である仮想計算機の仮想計算機ID511であり、送信先522は許可されたデータ送信方向のデータ送信先である仮想計算機の仮想計算機ID511である。
レコード529は、「VM#60」から「VM#70」へのデータ送信が可能であることを示す。情報フロー制御管理データベース52には、許可されたデータ送信方向のみが含まれ、許されないデータ送信の方向は含まれない。
図13は、第4の実施形態に係る、情報フロー制御を伴った仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図13を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。
ステップS401~S403は、図4記載のステップS201~S203とそれぞれ同様である。
ステップS404において、ハイパーバイザ20からステップS403のHVCを転送されたメモリコピー部21は、仮想計算機70へのデータ送信が可能か、情報フロー制御管理データベース52を参照して判断する。詳しくは、メモリコピー部21は、送信元521が仮想計算機60の仮想計算機IDであり、送信先522が仮想計算機70の仮想計算機IDであるレコードを検索する。続いて、メモリコピー部21は、当該レコードが存在すれば送信可能と判断してステップS406に進み、当該レコードが存在しなければ送信不可と判断してステップS405に進む。
ステップS404において、ハイパーバイザ20からステップS403のHVCを転送されたメモリコピー部21は、仮想計算機70へのデータ送信が可能か、情報フロー制御管理データベース52を参照して判断する。詳しくは、メモリコピー部21は、送信元521が仮想計算機60の仮想計算機IDであり、送信先522が仮想計算機70の仮想計算機IDであるレコードを検索する。続いて、メモリコピー部21は、当該レコードが存在すれば送信可能と判断してステップS406に進み、当該レコードが存在しなければ送信不可と判断してステップS405に進む。
ステップS405において、メモリコピー部21は、送信不可であることを仮想計算機60に割込みを用いて通知する。仮想計算機60で割込みが発生して、本データ送信処理を終える。
ステップS406~S411は、図4記載のステップS204~S209とそれぞれ同様である。
ステップS406~S411は、図4記載のステップS204~S209とそれぞれ同様である。
このようにすることで、情報フロー制御管理データベース52にレコードが存在し、許可された送信元521の仮想計算機から送信先522の仮想計算機のみのデータ送信が可能となる。情報フロー制御管理データベース52にレコードが存在しない、送信元521の仮想計算機から送信先522の仮想計算機へのデータ送信は禁止される。
第4の実施形態において、メモリコピー部21は、ステップS404においてデータ送信の可否を判断していた。これとは異なり、メモリコピー部21は、データをコピーする前に、例えば、ステップS408の受信メモリ領域を通知するHVCの後に、データ送信の可否を判断してもよい。
ステップS404において、メモリコピー部21が送信不可と判断した場合には、ステップS405において、割込みを用いて仮想計算機60に通知している。割込みの替わりに、メモリコピー部21は、送信メモリ領域を通知するHVC(ステップS403参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS403においてHVCにより送信メモリ領域の通知を受け、続いて、ステップS404において送信不可の場合には、ステップS403のHVCの返答として送信不可を仮想計算機60に通知する。
≪第5の実施形態:情報フロー制御を伴ったメモリマッピング変更によるデータ送信≫
メモリマッピング変更によるデータ送信においても、第4の実施形態と同様にデータの送信方向を制限することができる。第4の実施形態と同様に、ストレージ33上に仮想計算機データベース51(図11参照)と情報フロー制御管理データベース52(図12参照)とが格納される。
メモリマッピング変更によるデータ送信においても、第4の実施形態と同様にデータの送信方向を制限することができる。第4の実施形態と同様に、ストレージ33上に仮想計算機データベース51(図11参照)と情報フロー制御管理データベース52(図12参照)とが格納される。
図14は、第5の実施形態に係る、情報フロー制御を伴った仮想計算機60から仮想計算機70へのメモリマッピング変更によるデータ送信処理の流れを示すシーケンス図である。図14を参照しながら、ハイパーバイザ20Aのメモリマッピング部22が、仮想計算機60の仮想メモリ62上のページと、仮想計算機70の仮想メモリ72のページとのメモリマッピングを変更することによってデータ送信を実現する処理を説明する。
ステップS501~S503は、図7記載のステップS301~S303と同様である。
ステップS504において、ハイパーバイザ20AからステップS503のHVCを転送されたメモリマッピング部22は、仮想計算機70へのデータ送信が可能か、情報フロー制御管理データベース52を参照して判断する。詳しくは、メモリマッピング部22は、送信元521が仮想計算機60の仮想計算機IDであり、送信先522が仮想計算機70の仮想計算機IDであるレコードを検索する。続いて、メモリマッピング部22は、当該レコードが存在すれば送信可能と判断してステップS506に進み、当該レコードが存在しなければ送信不可と判断してステップS505に進む。
ステップS504において、ハイパーバイザ20AからステップS503のHVCを転送されたメモリマッピング部22は、仮想計算機70へのデータ送信が可能か、情報フロー制御管理データベース52を参照して判断する。詳しくは、メモリマッピング部22は、送信元521が仮想計算機60の仮想計算機IDであり、送信先522が仮想計算機70の仮想計算機IDであるレコードを検索する。続いて、メモリマッピング部22は、当該レコードが存在すれば送信可能と判断してステップS506に進み、当該レコードが存在しなければ送信不可と判断してステップS505に進む。
ステップS505において、メモリマッピング部22は、送信不可であることを仮想計算機60に割込みを用いて通知する。仮想計算機60で割込みが発生して、本データ送信処理を終える。
ステップS506~S511は、図7に記載のステップS304~S309と同様である。
ステップS506~S511は、図7に記載のステップS304~S309と同様である。
このようにすることで、情報フロー制御管理データベース52にレコードが存在し、許可された送信元521の仮想計算機から送信先522の仮想計算機のみのデータ送信が可能となる。情報フロー制御管理データベース52にレコードが存在しない、送信元521の仮想計算機から送信先522の仮想計算機へのデータ送信は禁止される。
第5の実施形態において、メモリマッピング部22は、ステップS504においてデータ送信の可否を判断している。これとは異なり、メモリマッピング部22は、メモリマッピングを変更する前に、例えば、ステップS508の受信メモリページを通知するHVCの後に、データ送信の可否を判断してもよい。
ステップS504において、メモリマッピング部22が送信不可と判断した場合には、ステップS505において、割込みを用いて仮想計算機60に通知している。割込みの替わりに、メモリマッピング部22は、送信メモリページを通知するHVC(ステップS503参照)の返答を用いてもよい。
ステップS504において、メモリマッピング部22が送信不可と判断した場合には、ステップS505において、割込みを用いて仮想計算機60に通知している。割込みの替わりに、メモリマッピング部22は、送信メモリページを通知するHVC(ステップS503参照)の返答を用いてもよい。
≪変形例≫
上記した実施形態において、仮想計算機(60、70)が送信メモリ領域や受信メモリ領域などをハイパーバイザ(20、20A)に通知するHVCのパラメータは、特定のレジスタにセットしていた。パラメータをメモリ上に格納して、当該メモリのアドレスを特定のレジスタにセットするようにしてもよい。また、ハイパーバイザ(20、20A)は、当該メモリに領域不足、送信メモリページのページ数(図10のステップS326参照)、コピー完了、コピーしたメモリサイズなどのHVC完了時の結果を格納するようにしてもよい。
上記した実施形態において、仮想計算機(60、70)が送信メモリ領域や受信メモリ領域などをハイパーバイザ(20、20A)に通知するHVCのパラメータは、特定のレジスタにセットしていた。パラメータをメモリ上に格納して、当該メモリのアドレスを特定のレジスタにセットするようにしてもよい。また、ハイパーバイザ(20、20A)は、当該メモリに領域不足、送信メモリページのページ数(図10のステップS326参照)、コピー完了、コピーしたメモリサイズなどのHVC完了時の結果を格納するようにしてもよい。
また、ハイパーバイザ(20、20A)が送信要求や受信要求などを仮想計算機(60、70)に通知する場合、それぞれの種別の割込み(割込みベクタ)を用いて通知していた。割込みの種別(割込みベクタ)は1つであり、送信要求や受信要求などの通知の種別は、割込みのパラメータとして特定のレジスタを介して通知してもよい。または、通知の種別をメモリ上に格納して、当該メモリのアドレスを特定のレジスタにセットするようにしてもよい。また、仮想計算機(60、70)がHVCを用いて、直前の割込み種別を取得してもよい。
上記した実施形態において、送信側の仮想計算機60が送信したデータを受信側の仮想計算機70は、そのまま受信していた。データをそのまま送受信するのではなく、ハイパーバイザ20が変換して、仮想計算機70が受信するようにしてもよい。変換の例としては、暗号化、復号、エンディアン(バイトオーダ)変換、データ圧縮、データ伸長、エンコード、デコードおよびこれらの組み合せなどがあるが、これらに限定するものではない。暗号化や復号に必要な鍵は、ハイパーバイザ20のみがアクセスできるようにしておき、専らハイパーバイザ20が暗号化や復号するようにしてもよい。仮想計算機(60、70)が、インターネットなどの外部ネットワークに接続されていて、外部から攻撃されたりマルウェアに感染したりする恐れがある場合には、仮想計算機(60、70)に鍵を置かないことで、データの安全性が確保できるようになる。
図3に示した第1の実施形態の変形例3において、受信メモリ領域の不足やコピー完了をハイパーバイザ20は割込みを用いて受信側の仮想計算機70に通知していた(ステップS128とステップS133参照)。割込みの替わりに、ハイパーバイザ20は、受信メモリ領域の特定の部分を用いて通知するようにしてもよい。例えば、受信メモリ領域の先頭の1バイトが、1であれば受信メモリ領域の不足、2であればコピー完了として、ハイパーバイザ20が仮想計算機70に通知してもよい。この場合、データは2バイト目以降にコピーされる。他の実施例や変形例においても、メモリ領域の特定部分を介して、ハイパーバイザ20から仮想計算機(60、70)に、送信要求、受信要求、コピー完了などを通知してもよい。
上記した実施形態では、送信側は仮想計算機60、受信側は仮想計算機70と固定されていた。仮想計算機(60、70)が通信相手を指定できるようにしてもよい。例えば、図4に示した第2の実施形態において、送信側の仮想計算機60が受信側の仮想計算機を指定できるようにしてもよい。指定の方法としては、送信メモリ領域を通知するHVC(ステップS203)のパラメータとして受信側の仮想計算機を指定するようにしてもよい。この場合、ハイパーバイザ20は、受信側の仮想計算機に、受信要求の割込み(ステップS204)のパラメータや割込みの種別(割込みベクタ)、受信メモリ領域の特定部分を介して送信側の仮想計算機を通知するようにしてもよい。
また、受信側の仮想計算機70が、通信相手を指定できるようにしてもよい。図2に示した第1の実施形態において、仮想計算機70が受信メモリ領域を通知するHVC(ステップS102)のパラメータないしは受信メモリ領域の特定部分に送信側の仮想計算機をセットしてもよい。
上記した実施形態やその変形例では、送信側の仮想計算機と受信側の仮想計算機とは、それぞれ1つだった。これに対して、1つの送信側の仮想計算機が、複数の仮想計算機にデータ送信できるようにしてもよい。第2の実施形態におけるメモリコピーによるデータ送信では、メモリコピー部21が、送信メモリ領域から複数の受信側の仮想計算機のそれぞれの受信メモリ領域にデータをコピーする。また、第3の実施形態におけるメモリマッピング変更によるデータ送信では、メモリマッピング部22が、複数の受信側仮想計算機のそれぞれの受信メモリページを変更前の送信メモリページに対応するホスト物理メモリページにマッピングする。
上記した実施形態やその変形例では、仮想計算機(60、70)上ではゲストOS(65、75)が稼働し、その上でアプリケーションが稼働している。ゲストOSがなく、仮想計算機(60、70)上で直接アプリケーションが稼働する場合でも、アプリケーションがHVCを実行して、割込みを処理することで、仮想メモリ(62、72)にセットしたデータを送信することができる。
≪効果≫
第1および第2の実施形態のハイパーバイザ20が、メモリ32上の送信メモリ領域から受信メモリ領域へデータをコピーすることで、仮想計算機60から仮想計算機70へのデータ送信を実現している。従来のデータ送信よりデータのコピー回数を削減しており、高速に送信できる。第3の実施形態のハイパーバイザ20Aが、メモリマッピングを変更してデータ送信した場合には、コピーしておらず、さらに高速に送信できる。
第1および第2の実施形態のハイパーバイザ20が、メモリ32上の送信メモリ領域から受信メモリ領域へデータをコピーすることで、仮想計算機60から仮想計算機70へのデータ送信を実現している。従来のデータ送信よりデータのコピー回数を削減しており、高速に送信できる。第3の実施形態のハイパーバイザ20Aが、メモリマッピングを変更してデータ送信した場合には、コピーしておらず、さらに高速に送信できる。
第4および第5の実施形態では、データの送信方向は一方向に限定されており、機密度の高い情報やマルウェアのような危険なデータの流出を未然に防ぐことができる。
10,10A ホスト計算機
20 ハイパーバイザ
21 メモリコピー部
22 メモリマッピング部
31 CPU
32 メモリ
41,42 拡張ページテーブル
51 仮想計算機データベース
52 情報フロー制御管理データベース
60 (送信側)仮想計算機
61,71 仮想CPU
62,72 仮想メモリ
70 (受信側)仮想計算機
20 ハイパーバイザ
21 メモリコピー部
22 メモリマッピング部
31 CPU
32 メモリ
41,42 拡張ページテーブル
51 仮想計算機データベース
52 情報フロー制御管理データベース
60 (送信側)仮想計算機
61,71 仮想CPU
62,72 仮想メモリ
70 (受信側)仮想計算機
Claims (5)
- 物理計算機上に複数の仮想計算機を稼働させ、前記仮想計算機の間のデータ通信を仲介するハイパーバイザであって、
前記仮想計算機のうちデータの送信側である送信側仮想計算機から送信メモリ領域の通知を受けると、前記仮想計算機のうちデータの受信側である受信側仮想計算機に割込で受信要求を通知し、
前記受信側仮想計算機から受信メモリ領域の通知を受けると、前記送信メモリ領域のデータを前記受信メモリ領域にコピーするメモリコピー部を備えるハイパーバイザ、
を機能させるためのハイパーバイザプログラム。 - 物理計算機上に複数の仮想計算機を稼働させ、前記仮想計算機の間のデータ通信を仲介するハイパーバイザであって、
前記仮想計算機のうちデータの受信側である受信側仮想計算機から受信メモリ領域の通知を受けると、前記仮想計算機のうちデータの送信側である送信側仮想計算機に割込で送信要求を通知し、
前記送信側仮想計算機から送信メモリ領域の通知を受けると、前記送信メモリ領域のデータを前記受信メモリ領域にコピーするメモリコピー部を備えるハイパーバイザ、
を機能させるためのハイパーバイザプログラム。 - 前記メモリコピー部は、
前記送信メモリ領域のデータに対して、暗号化、復号、エンディアン変換、データ圧縮、データ伸長、エンコードおよびデコードのいずれか1つないしは複数の組み合わせの変換処理を実行し、この変換処理後のデータを前記受信メモリ領域にコピーする、
ことを特徴とする請求項1または2に記載のハイパーバイザプログラム。 - 物理計算機上に複数の仮想計算機を稼働させ、前記仮想計算機の間のデータ通信を仲介するハイパーバイザであって、
前記仮想計算機は、前記ハイパーバイザが管理し、物理アドレスにマッピングされる論理アドレス上で動作しており、
前記ハイパーバイザは、
前記仮想計算機のうちデータの送信側である送信側仮想計算機から送信メモリページの通知を受け、前記仮想計算機のうちデータの受信側である受信側仮想計算機から受信メモリページの通知を受けると、前記受信メモリページの論理アドレスのマッピング先の物理アドレスを、前記送信メモリページの論理アドレスのマッピング先の物理アドレスに変更し、前記送信メモリページの論理アドレスのマッピング先の物理アドレスを別の物理アドレスに変更するメモリマッピング部を備えるハイパーバイザ、
を機能させるためのハイパーバイザプログラム。 - 前記ハイパーバイザは、
前記送信側仮想計算機と前記受信側仮想計算機とに割込で送受信の完了を通知する、
ことを特徴とする請求項1ないし4のうちいずれか1項に記載のハイパーバイザプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017135753 | 2017-07-11 | ||
JP2017135753 | 2017-07-11 | ||
PCT/JP2018/023862 WO2019012958A1 (ja) | 2017-07-11 | 2018-06-22 | ハイパーバイザプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2019012958A1 JPWO2019012958A1 (ja) | 2020-05-07 |
JP7090080B2 true JP7090080B2 (ja) | 2022-06-23 |
Family
ID=65001304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019529028A Active JP7090080B2 (ja) | 2017-07-11 | 2018-06-22 | ハイパーバイザプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7090080B2 (ja) |
WO (1) | WO2019012958A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012063334A1 (ja) | 2010-11-10 | 2012-05-18 | 株式会社日立製作所 | 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ |
JP2016115253A (ja) | 2014-12-17 | 2016-06-23 | 富士通株式会社 | 情報処理装置、メモリ管理方法およびメモリ管理プログラム |
WO2017034008A1 (ja) | 2015-08-25 | 2017-03-02 | 株式会社Seltech | ハイパーバイザーを有するシステム |
-
2018
- 2018-06-22 JP JP2019529028A patent/JP7090080B2/ja active Active
- 2018-06-22 WO PCT/JP2018/023862 patent/WO2019012958A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012063334A1 (ja) | 2010-11-10 | 2012-05-18 | 株式会社日立製作所 | 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ |
JP2016115253A (ja) | 2014-12-17 | 2016-06-23 | 富士通株式会社 | 情報処理装置、メモリ管理方法およびメモリ管理プログラム |
WO2017034008A1 (ja) | 2015-08-25 | 2017-03-02 | 株式会社Seltech | ハイパーバイザーを有するシステム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2019012958A1 (ja) | 2020-05-07 |
WO2019012958A1 (ja) | 2019-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107534579B (zh) | 资源管理的***和方法 | |
CN111221758B (zh) | 处理远程直接内存访问请求的方法和计算机设备 | |
US10726120B2 (en) | System, apparatus and method for providing locality assertion between a security processor and an enclave | |
JP5611598B2 (ja) | Usbトークン上の暗号化キーコンテナ | |
US20160088109A1 (en) | Method and Apparatus for Remotely Running Application Program | |
JP2019091494A (ja) | エミュレートされたエンドポイントコンフィグレーション | |
CN113688072B (zh) | 数据处理方法及设备 | |
TW202226782A (zh) | 包括增強型密碼位址之密碼運算技術 | |
US20130275659A1 (en) | Electronic devices | |
CN110659101A (zh) | 提供具有基于能力的安全性的函数级隔离的技术 | |
CN111090869B (zh) | 一种数据加密方法、处理器及计算机设备 | |
US20150370582A1 (en) | At least one user space resident interface between at least one user space resident virtual appliance and at least one virtual data plane | |
KR101837678B1 (ko) | 신뢰실행환경 기반의 컴퓨팅 장치 | |
EP1709540A2 (en) | Virtual to physical address translation | |
WO2023179508A1 (zh) | 数据处理方法、装置、可读介质及电子设备 | |
US11700277B2 (en) | Providing access to data in a secure communication | |
CN112906075A (zh) | 一种内存共享的方法及装置 | |
WO2019174074A1 (zh) | 一种处理业务数据的方法和网络设备 | |
JP2017091543A (ja) | マルチプロセッサによって共有されるメモリを含むマルチプロセッサシステム、及び該システムの動作方法 | |
KR102442118B1 (ko) | 유니커널을 이용하는 원격 직접 메모리 접근 기반 파일 입출력 오프로드 방법 및 장치 | |
CN112363801B (zh) | 虚拟机迁移方法、处理方法、***、装置、芯片及介质 | |
US20230342087A1 (en) | Data Access Method and Related Device | |
JP7090080B2 (ja) | ハイパーバイザプログラム | |
US10397140B2 (en) | Multi-processor computing systems | |
US20230273995A1 (en) | Hybrid data scan pipeline reducing response latency and increasing attack scanning accuracy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210426 |
|
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: 20220606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220613 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7090080 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |