JP7090080B2 - Hypervisor program - Google Patents
Hypervisor program 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
本発明は、仮想計算機間でデータ通信が可能となるハイパーバイザプログラムに関する。 The present invention relates to a hypervisor program that enables data communication between virtual machines.
情報技術分野では、コスト削減、消費電力削減、高い俊敏性などのメリットがある仮想化技術が広く普及しており、IaaS(Infrastructure as a Service)やSaaS(Software as a Service)のようなクラウドの基盤技術として用いられている。また、通信サービス事業においても、仮想化技術は、NFV(Network Function Virtualization)の基盤技術となっており、さらにIoT(Internet of Things)の進展に伴い、自動車や工場、家電などの制御技術分野にも拡大しつつある。 In the field of information technology, virtualization technology that has merits such as cost reduction, power consumption reduction, and high agility has become widespread, and cloud computing such as Infrastructure as a Service (IAAS) and Software as a Service (SaaS) It is used as a basic technology. Also, in the communication service business, virtualization technology has become the basic technology of NFV (Network Function Virtualization), and with the progress of IoT (Internet of Things), it has become a control technology field for automobiles, factories, home appliances, etc. Is also expanding.
仮想化技術を用いることで、1つの物理計算機上で複数の仮想計算機を稼働させることができる。詳しくは、物理計算機上で稼働するハイパーバイザが、仮想CPU(Central Processing Unit)や仮想メモリ、仮想ストレージ、仮想NIC(Network Interface Card)を備えた仮想計算機を機能させ、この仮想計算機上でゲストOS(Operating System)が稼働する。仮想計算機は、ハイパーバイザが提供する仮想NICと仮想ネットワークの機能を用いて、他の仮想計算機と通信することができる(非特許文献1)。 By using the virtualization technology, it is possible to operate a plurality of virtual computers on one physical computer. Specifically, the hypervisor running on the physical computer makes the virtual machine equipped with the virtual CPU (Central Processing Unit), virtual memory, virtual storage, and virtual NIC (Network Interface Card) function, and the guest OS is on this virtual computer. (Operating System) is running. The virtual machine can communicate with other virtual machines by using the functions of the virtual NIC and the virtual network provided by the hypervisor (Non-Patent Document 1).
仮想NICと仮想ネットワークを介した通信では、通信データの送受信を開始する前に、通信路を開設するためのハンドシェイク処理が必要である。また、送信側ゲストOS上のアプリケーションから送信側ゲストOSへ、送信側ゲストOSから送信側仮想NICへ、送信側仮想NICから受信側仮想NICへ、受信側仮想NICから受信側ゲストOSへ、および、受信側ゲストOSから受信側ゲストOS上のアプリケーションへの5回のデータコピーがあるために通信処理に時間を要する。非特許文献1では、データのコピー回数を削減する工夫が記載されているが、さらなる高速化が求められている。 In communication via a virtual NIC and a virtual network, a handshake process for opening a communication path is required before starting transmission / reception of communication data. Also, from the application on the sending guest OS to the sending guest OS, from the sending guest OS to the sending virtual NIC, from the sending virtual NIC to the receiving virtual NIC, from the receiving virtual NIC to the receiving guest OS, and , Communication processing takes time because there are five data copies from the receiving side guest OS to the application on the receiving side guest OS. Non-Patent Document 1 describes a device for reducing the number of times data is copied, but further speeding up is required.
このような背景を鑑みて本発明がなされたのであり、本発明は、仮想計算機間で高速なデータ通信を可能とするハイパーバイザプログラムを提供することを課題とする。 The present invention has been made in view of such a background, and it is an object of the present invention to provide a hypervisor program that enables high-speed data communication between virtual machines.
前記した課題を解決するため、本発明は、物理計算機上に複数の仮想計算機を稼働させ、前記仮想計算機の間のデータ通信を仲介するハイパーバイザであって、前記仮想計算機のうちデータの送信側である送信側仮想計算機から送信メモリ領域の通知を受けると、前記仮想計算機のうちデータの受信側である受信側仮想計算機に割込で受信要求を通知し、前記受信側仮想計算機から受信メモリ領域の通知を受けると、前記送信メモリ領域のデータを前記受信メモリ領域にコピーするメモリコピー部を備えるハイパーバイザ、を実現させるためのハイパーバイザプログラムとした。 In order to solve the above-mentioned problems, the present invention is a hypervisor that operates a plurality of virtual machines on a physical computer and mediates data communication between the virtual machines, and is a data transmission side of the virtual machines. When the transmission side virtual machine is notified of the transmission memory area, the reception side virtual machine which is the data receiving side of the virtual machine is interrupted to notify the reception request, and the reception side virtual computer notifies the reception memory area. When the notification is received, the hypervisor program for realizing a hypervisor having a memory copy unit that copies the data in the transmission memory area to the reception memory area is used.
このようにすることで、物理計算機は、送信メモリ領域から受信メモリ領域に1度のコピーでデータを送信することができる。これにより、送信側仮想計算機から受信側仮想計算機へ高速にデータ送信することが可能となる。 By doing so, the physical computer can transmit data from the transmission memory area to the reception memory area with one copy. This makes it possible to transmit data from the transmitting side virtual machine to the receiving side virtual machine at high speed.
本発明によれば、仮想計算機間で高速なデータ通信を可能とするハイパーバイザプログラムを提供することができる。 According to the present invention, it is possible to provide a hypervisor program that enables high-speed data communication between virtual machines.
以下、図面を参照しながら本発明を実施するための形態(実施形態)を説明する。図1は、第1の実施形態に係るホスト計算機10の全体構成を示す図である。ホスト計算機(物理計算機)10は、CPU31、メモリ32、ストレージ33、入出力部34、ハイパーバイザ20、仮想計算機(60、70)を含めて構成される。
Hereinafter, embodiments (embodiments) for carrying out the present invention will be described with reference to the drawings. FIG. 1 is a diagram showing an overall configuration of the
CPU31は、ストレージ33に記憶されるプログラムを実行して、後述するハイパーバイザ20やハイパーバイザ20上の仮想計算機(60、70)を機能させる。メモリ32は、CPU31が実行する処理に必要なデータを記憶する。ストレージ33は、ハイパーバイザ20や仮想計算機(60、70)のプログラムやデータを記憶する。入出力部34は、他の計算機やディスプレイ(不図示)、キーボード(不図示)とのデータのやり取りを行う。
The
ハイパーバイザ20は、CPU31、メモリ32、ストレージ33、入出力部34を仮想化して、仮想的な計算機を稼働する。ハイパーバイザ20は、仮想計算機60の仮想メモリ上にあるデータを仮想計算機70の仮想メモリにコピーするメモリコピー部21を含み、仮想計算機(60、70)の間のデータ通信を仲介する。
The
仮想計算機60は、ハイパーバイザ20上の仮想的な計算機であり、仮想CPU61、仮想メモリ62、仮想ストレージ(不図示)、仮想入出力部(不図示)、ゲストOS65、ゲストOS65上で稼働するアプリケーション(不図示)を含んで構成される。仮想CPU61、仮想メモリ62、仮想ストレージ(不図示)および仮想入出力部(不図示)は、ハイパーバイザ20が提供し、仮想計算機60が備える仮想的なCPU、メモリ、ストレージおよび入出力部である。
The
ゲストOS65は、仮想CPU61、仮想メモリ62、仮想ストレージ(不図示)および仮想入出力部(不図示)の仮想的なハードウェア上で稼働するOSである。ゲストOS65が、ハイパーバイザ20に対してサービスを要求するときには、HVC(Hypervisor Call)を用いてサービスを呼び出す。ハイパーバイザ20がゲストOS65に要求がある場合には、割込みを用いて通知する。ゲストOS65は、仮想メモリ62を仮想計算機60の物理メモリとしてアクセスするが、実際には、CPU31とハイパーバイザ20とにより仮想メモリ62上のアドレスがホスト計算機10のメモリ32上のアドレスに変換されてから、メモリ32にアクセスする。
The guest OS 65 is an OS that operates on virtual hardware of a virtual CPU 61, a
仮想計算機70も、仮想計算機60と同様の構成であり、仮想CPU71や仮想メモリ72、ゲストOS75を含んで構成される。ハイパーバイザ20上の仮想計算機(60、70)は、3つ以上であってもよい。メモリコピー部21は、仮想メモリ62に対応するメモリ32のデータを、仮想メモリ72に対応するメモリ32にコピーする。
The
≪第1の実施形態:受信側仮想計算機が開始する、仮想メモリ間のコピーによるデータ送信≫
図2は、第1の実施形態に係る受信側の仮想計算機70が開始する、仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図2を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。<< First embodiment: Data transmission by copying between virtual memories started by the receiving side virtual computer >>
FIG. 2 is a sequence diagram showing a flow of data transmission processing from the
ステップS101において、受信側である仮想計算機70がデータを受信する領域である受信メモリ領域を確保する。
ステップS102において、仮想計算機70が、HVCを用いて受信メモリ領域をハイパーバイザ20に通知してデータ受信を要求する。詳しくは、仮想計算機70は、受信メモリ領域のアドレスやサイズを仮想CPU71の特定のレジスタにセットして、受信メモリ領域を通知するHVCを実行する。ハイパーバイザ20は、メモリコピー処理を実行するメモリコピー部21にHVCを転送する。In step S101, a reception memory area, which is an area in which the
In step S102, the
ステップS103において、メモリコピー部21は、送信要求があったことを送信側の仮想計算機60に割込みを用いて通知する。
ステップS104において、送信要求の割込みが発生した仮想計算機60は、送信データを記憶する送信メモリ領域を確保する。In step S103, the
In step S104, the
ステップS105において、仮想計算機60は、送信メモリ領域に送信データをセットする。
ステップS106において、仮想計算機60は、送信メモリ領域のアドレスとサイズをレジスタにセットし、送信メモリ領域を通知してデータ送信を要求するHVCを実行する。In step S105, the
In step S106, the
ステップS107において、メモリコピー部21が、送信メモリ領域から受信メモリ領域へデータをコピーする。詳しくは、メモリコピー部21は、仮想計算機60の送信メモリ領域に対応するホスト計算機10のメモリ32上のデータを、仮想計算機70の受信メモリ領域に対応するメモリ32の位置(アドレス)へコピーする。
ステップS108において、メモリコピー部21が、コピーが完了したことを仮想計算機60に割込みを用いて通知する。なお、ステップS103の割込みとステップS108の割込みとは、種別(割込みベクタ)が異なる。In step S107, the
In step S108, the
ステップS109において、メモリコピー部21が、コピーが完了したことを仮想計算機70に割込みを用いて通知する。以降、仮想計算機70は、送信データにアクセスできる。なお、ステップS108の割込みとステップS109の割込みとは、同じ種別(割込みベクタ)である。
第1の実施形態において、メモリコピーは、ステップS107の1回だけであり、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72に高速にデータを送信することができる。In step S109, the
In the first embodiment, the memory copy is performed only once in step S107, and data can be transmitted from the
≪第1の実施形態の変形例1:HVCの返答を用いたコピー完了通知≫
上記した第1の実施形態では、メモリコピー部21が、コピー完了を仮想計算機60に通知するのに、割込みを用いている(ステップS108参照)。割込みの替わりに、メモリコピー部21は、送信メモリ領域を通知するHVC(ステップS106参照)の返答(リターン値)を用いてもよい。詳しくは、メモリコピー部21が、ステップS106においてHVCにより送信メモリ領域の通知を受け、続いて、ステップS107のコピー処理を実行して、ステップS106のHVCの返答としてコピー完了を仮想計算機60に通知する。<< Modification 1: Notification of copy completion using HVC response >>
In the first embodiment described above, the
≪第1の実施形態の変形例2:送信メモリ領域のサイズが小さい場合≫
第1の実施形態においては、送信メモリ領域から受信メモリ領域へのコピーは1回で完了している。送信側の仮想計算機60の送信メモリ領域が小さく、1回のコピーではデータを送信しきれない場合には、ステップS104~S107を繰り返すことで、送信データを受信メモリ領域にコピーすることができる。<< Modification 2: Deformation Example 2: When the size of the transmission memory area is small >>
In the first embodiment, copying from the transmission memory area to the reception memory area is completed only once. When the transmission memory area of the
繰り返す処理のステップS107において、ハイパーバイザ20は、受信メモリ領域の中で前回コピーしたデータに続く位置に今回のデータをコピーする。
送信側の仮想計算機60は、ステップS106において、送信メモリ領域のサイズを0とすることで、送信終了をハイパーバイザ20に通知する。送信完了の通知を受けたハイパーバイザ20は、ステップS107の処理をすることなく、繰り返し処理を終えて、ステップS108に進む。ハイパーバイザ20は、ステップS108に進まず、ステップS109に進んでもよい。In step S107 of the repeating process, the hypervisor 20 copies the current data to a position following the previously copied data in the received memory area.
In step S106, the
≪第1の実施形態の変形例3:受信メモリ領域のサイズが小さい場合≫
受信側の仮想計算機70が送信データのサイズを知らない場合には、送信メモリ領域より受信メモリ領域が小さく、1回のコピーではコピーが完了しない。このような場合には、メモリコピー部21は複数回に分けてコピーする。<< Modification of the first embodiment 3: When the size of the received memory area is small >>
When the
図3は、第1の実施形態の変形例3に係る仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図3を参照しながら、送信メモリ領域より受信メモリ領域が小さい場合に、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、複数回に分けて仮想計算機70の仮想メモリ72にコピーする処理を説明する。
FIG. 3 is a sequence diagram showing a flow of data transmission processing from the
ステップS121~S126は、ステップS101~S106とそれぞれ同様である。
ステップS127において、メモリコピー部21が、送信メモリ領域から受信メモリ領域へデータを送信メモリに受信メモリのサイズ分だけコピーする。Steps S121 to S126 are the same as steps S101 to S106, respectively.
In step S127, the
ステップS128において、メモリコピー部21が、受信メモリ領域が不足していることを仮想計算機70に割込みを用いて通知する。
ステップS129とステップS130とは、ステップS101とステップS102とそれぞれ同様である。In step S128, the
Step S129 and step S130 are the same as step S101 and step S102, respectively.
ステップS131において、メモリコピー部21が、送信メモリ領域の中で、ステップS127においてコピーした次の位置から受信メモリ領域へデータをコピーする。コピーするサイズは、送信メモリ領域の中でコピーが完了していない領域のサイズが、受信メモリ領域のサイズ以下ならば、コピーが完了していない領域のサイズである。そうでないならば、コピーするサイズは、受信メモリ領域のサイズである。以下では、送信メモリ領域の中でコピーが完了していない領域のサイズが、受信メモリ領域のサイズ以下であったとして説明を続ける。
In step S131, the
ステップS132とステップS133は、ステップS108とステップS109と、それぞれ同様である。
ステップS131において、送信メモリ領域の中でコピーが完了していない領域のサイズが、受信メモリ領域のサイズより大きい場合には、ステップS128~S131の処理を繰り返す。Step S132 and step S133 are the same as those of step S108 and step S109, respectively.
In step S131, if the size of the area in the transmission memory area for which copying has not been completed is larger than the size of the reception memory area, the processes of steps S128 to S131 are repeated.
上記したとおり、受信メモリ領域が送信メモリ領域より小さい場合であっても、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72にデータを送信することができる。ネットワーク機能を用いてデータを送信する場合には、1つの通信データ(通信パケット)のサイズには上限がある。このサイズより大きな受信メモリ領域を確保すれば、ネットワーク経由のデータ送信よりさらに高速にデータ送信が可能となる。
As described above, even when the reception memory area is smaller than the transmission memory area, data can be transmitted from the
上記した第1の実施形態の変形例3では、メモリコピー部21が、コピー完了を仮想計算機70に通知するのに、割込みを用いている(ステップS133参照)。割込みの替わりに、メモリコピー部21は、受信メモリ領域を通知するHVC(ステップS130参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS130においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS131のコピー処理が完了したならば、ステップS130のHVCの返答としてコピー完了を仮想計算機70に通知する。
In the third modification of the first embodiment described above, the
また、上記した第1の実施形態の変形例3では、メモリコピー部21が、領域不足を仮想計算機70に通知するのに、割込みを用いている(ステップS128参照)。割込みの替わりに、メモリコピー部21は、受信メモリ領域を通知するHVC(ステップS130参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS130においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS131のコピー処理が未完了ならば、ステップS130のHVCの返答として領域不足を仮想計算機70に通知する。以下、仮想計算機70とメモリコピー部21とは、ステップS129~S131を繰り返す。
Further, in the modification 3 of the first embodiment described above, the
≪第2の実施形態:送信側仮想計算機が開始する、仮想メモリ間のコピーによるデータ送信≫
図4は、第2の実施形態に係る送信側の仮想計算機60が開始する、仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図4を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。<< Second embodiment: Data transmission by copying between virtual memories started by the transmitting virtual machine >>
FIG. 4 is a sequence diagram showing a flow of data transmission processing from the
ステップS201~S203は、図2記載のステップS104~S106と同様である。
ステップS204において、メモリコピー部21は、受信要求を受信側の仮想計算機70に割込みを用いて通知する。Steps S201 to S203 are the same as steps S104 to S106 shown in FIG.
In step S204, the
ステップS205とステップS206とは、図2記載のステップS101とステップS102とそれぞれ同様である。
ステップS207~S209は、図1記載のステップS107~S109と同様である。Step S205 and step S206 are the same as step S101 and step S102 shown in FIG. 2, respectively.
Steps S207 to S209 are the same as steps S107 to S109 shown in FIG.
第2の実施形態において、メモリコピー処理は、ステップS207の1回だけであり、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72に高速にデータを送信することができる。
In the second embodiment, the memory copy process is performed only once in step S207, and data can be transmitted from the
≪第2の実施形態の変形例1:HVCの返答を用いたコピー完了通知≫
上記した第2の実施形態では、メモリコピー部21が、コピー完了を仮想計算機70に通知するのに、割込みを用いている(ステップS209参照)。割込みの替わりに、メモリコピー部21は、受信メモリ領域を通知するHVC(ステップS206参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS206においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS207のコピー処理を実行して、ステップS206のHVCの返答としてコピー完了を仮想計算機70に通知する。<< Modification 1: Notification of copy completion using HVC response >>
In the second embodiment described above, the
≪第2の実施形態の変形例2:受信メモリ領域のサイズが小さい場合≫
上記した第2の実施形態においては、送信メモリ領域から受信メモリ領域へのコピーは1回で完了している。受信側の仮想計算機70の受信メモリ領域が小さく、ステップS207で実行する1回のコピーではデータを送信しきれない場合には、ステップS207に続いて図3に記載したステップS128~S131と同様の処理を繰り返すことで、送信データを受信メモリ領域にコピーすることができる。また、メモリコピー部21は、ステップS128の割込みの替わりに、ステップS130のHVCの返答を用いて、領域不足を仮想計算機70に通知してもよい。<< Modification 2: of the second embodiment: When the size of the received memory area is small >>
In the second embodiment described above, copying from the transmission memory area to the reception memory area is completed only once. When the reception memory area of the
また、ステップS209の割込みを用いたコピー完了の通知の替わりに、受信メモリ領域を通知するHVC(ステップS130参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS130においてHVCにより受信メモリ領域の通知を受け、続いて、ステップS131のコピー処理が完了したならば、ステップS130のHVCの返答としてコピー完了を仮想計算機70に通知する。
Further, instead of the copy completion notification using the interrupt in step S209, the response of the HVC (see step S130) notifying the received memory area may be used. Specifically, when the
≪第3の実施形態:メモリマッピング変更によるデータ送信≫
第1と第2の実施形態においては、ハイパーバイザ20が、仮想計算機60の仮想メモリ62から仮想計算機70の仮想メモリ72へデータをコピーして、データを送信している。詳しくは、ハイパーバイザ20が、仮想メモリ62に対応するメモリ32の領域から、仮想メモリ72に対応するメモリ32の領域にデータをコピーしている。これに対し、第3の実施形態では、ハイパーバイザ20が、仮想メモリ(62、72)とメモリ32との対応(メモリマッピング)を変更することで、データコピーを不要にしてデータ送信する。<< Third embodiment: Data transmission by changing the memory mapping >>
In the first and second embodiments, the hypervisor 20 copies data from the
図5は、第3の実施形態に係るホスト計算機10Aの全体構成を示す図である。ハイパーバイザ20Aは、メモリコピー部21に替わりメモリマッピング部22を含んで構成される。他の構成は、ホスト計算機10と同様である。仮想メモリ(62、72)とメモリ32とのマッピング(対応関係)は、後述する拡張ページテーブル(41、42、図6参照)を用いて管理されている。メモリマッピング部22は、拡張ページテーブル(41、42)を変更することにより、仮想計算機60から仮想計算機70へデータ(メモリページ)を送信する。
FIG. 5 is a diagram showing the overall configuration of the
図6は、第3の実施形態に係る仮想計算機の仮想メモリとホスト計算機の物理メモリとのマッピングの状態を説明するための図である。図6の左上に記載してある仮想計算機60の仮想メモリ62の左側にある100と300は、仮想メモリ62のアドレスである。送信メモリ領域に対応する送信メモリページがアドレス300より始まっていることを示している。
FIG. 6 is a diagram for explaining a state of mapping between the virtual memory of the virtual computer and the physical memory of the host computer according to the third embodiment. 100 and 300 on the left side of the
図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についても、同様である。
The extended page table 41 shown in the center of FIG. 6 is tabular data showing the correspondence between the page of the
図6の中央下に記載の拡張ページテーブル42は、仮想計算機70の仮想メモリ72のページと、メモリ32のページとの対応を示す表形式のデータであり、仮想計算機60の拡張ページテーブル41と同様の構成である。レコード429は、GPAが420である仮想メモリ72のページが、PAが900であるメモリ32のページにマッピングされていることを示す。
The extended page table 42 shown in the lower center of FIG. 6 is tabular data showing the correspondence between the page of the virtual memory 72 of the
図7は、第3の実施形態に係る仮想計算機60から仮想計算機70へのメモリマッピング変更によるデータ送信処理の流れを示すシーケンス図である。図7を参照しながら、ハイパーバイザ20Aのメモリマッピング部22が、仮想計算機60の仮想メモリ62上のページと、仮想計算機70の仮想メモリ72のページとのメモリマッピングを変更することによってデータ送信を実現する処理を説明する。
FIG. 7 is a sequence diagram showing a flow of data transmission processing by changing the memory mapping from the
ステップS301において、送信側である仮想計算機60がデータを送信する領域である送信メモリページを確保する。図6は、この時点でのメモリマッピングの状態を示しており、仮想計算機60のアドレス300から始まる仮想メモリ62のメモリページが、ホスト計算機10Aのアドレス440から始まるメモリ32のメモリページにマッピングされていることを示す。
In step S301, a transmission memory page, which is an area in which the
ステップS302において、仮想計算機60は、送信メモリページに送信データをセットする。セットされたデータは、アドレス440から始まるメモリ32のメモリページに格納される。
ステップS303において、仮想計算機60が、HVCを用いて送信メモリページをハイパーバイザ20に通知してデータ送信を要求する。詳しくは、仮想計算機60は、送信メモリページのアドレスを仮想CPU61の特定のレジスタにセットして、送信メモリページを通知してデータ送信を要求するHVCを実行する。ハイパーバイザ20は、メモリマッピングの変更処理を実行するメモリマッピング部22にHVCを転送する。In step S302, the
In step S303, the
ステップS304において、メモリマッピング部22は、受信要求を受信側の仮想計算機70に割込みを用いて通知する。
In step S304, the
ステップS305において、受信要求の割込みが発生した仮想計算機70は、受信メモリページを確保する。図8は、第3の実施形態に係る、仮想計算機70が受信メモリページを確保した時点での、仮想計算機の仮想メモリとホスト計算機の物理メモリとのマッピングの状態を示す図である。仮想計算機70の拡張ページテーブル42のレコード428が示すように、仮想メモリ72上のアドレス120から始まる受信メモリページは、メモリ32上のアドレス700から始まるページ(図8ではホスト物理メモリページと記載)にマッピングされている。
In step S305, the
ステップS306において、仮想計算機70は、受信メモリページのアドレスを特定のレジスタにセットして、受信メモリページを通知するHVCを実行する。
In step S306, the
ステップ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から始まるページへマッピングされるように変更されている。
In step S307, the
ステップS308において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機60に割込みを用いて通知する。
ステップS309において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に割込みを用いて通知する。In step S308, the
In step S309, the
第3の実施形態において、仮想計算機60がアクセスしていたホスト計算機10Aのメモリ32のページが、仮想計算機70がアクセスするページに切り替わることにより、仮想計算機60から仮想計算機70にデータが送信される。メモリのコピーがなく、高速にデータ送信が可能である。さらに、メモリを共有しているわけではなく、受信側の仮想計算機70のデータが、送信側の仮想計算機60からアクセスされることはない。
In the third embodiment, the page of the
≪第3の実施形態の変形例1:HVCの返答を用いたコピー完了通知≫
上記した第3の実施形態では、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に通知するのに、割込みを用いている(ステップS309参照)。割込みの替わりに、メモリマッピング部22は、受信メモリページを通知するHVC(ステップS306参照)の返答を用いてもよい。詳しくは、メモリマッピング部22が、ステップS306においてHVCにより受信メモリページの通知を受け、続いて、ステップS307のメモリマッピングの変更処理を実行して、ステップS306のHVCの返答としてマッピング変更完了を仮想計算機70に通知する。<< Modification 1: Notification of copy completion using HVC response >>
In the third embodiment described above, the
≪第3の実施形態の変形例2:複数ページを用いたメモリマッピング変更によるデータ送信≫
上記の第3の実施形態では、送信対象となるページは1つであったが、複数ページであってもよい。図10は、第3の実施形態の変形例2に係る仮想計算機60と仮想計算機70との複数のメモリページのマッピング変更によるデータ送信処理の流れを示すシーケンス図である。<< Modification 2: Data transmission by changing memory mapping using a plurality of pages >>
In the third embodiment described above, the number of pages to be transmitted is one, but a plurality of pages may be used. FIG. 10 is a sequence diagram showing a flow of data transmission processing by changing the mapping of a plurality of memory pages between the
ステップS321において、送信側である仮想計算機60がデータを送信する領域である連続する複数の送信メモリページを確保する。
ステップS322において、仮想計算機60は、送信メモリページに送信データをセットする。In step S321, the
In step S322, the
ステップS323において、仮想計算機60が、HVCを用いて送信メモリページをハイパーバイザ20に通知してデータ送信を要求する。詳しくは、仮想計算機60は、送信メモリページのアドレスとページ数を仮想CPU61の特定のレジスタにセットして、送信メモリページを通知するHVCを実行する。ハイパーバイザ20は、メモリマッピングの変更処理を実行するメモリマッピング部22にHVCを転送する。
In step S323, the
ステップS324において、メモリマッピング部22は、受信要求を受信側の仮想計算機70に割込みを用いて通知する。
ステップS325において、割込みが発生した仮想計算機70は、受信メモリページを確保する。仮想計算機70は、連続する複数の受信メモリページを確保してもよい。In step S324, the
In step S325, the
ステップS326において、仮想計算機70は、受信メモリメモリのアドレスとページ数とを特定のレジスタにセットして、受信メモリページを通知するHVCを実行する。メモリマッピング部22は、送信メモリページのページ数と受信メモリページのページ数を比較する。ここでは、送信メモリページのページ数と受信メモリページのページ数が異なるとして説明を続ける。同じであるならば、ステップS329に進む。
In step S326, the
メモリマッピング部22は、HVCの返答として、送信メモリページのページ数を返す。
ステップS327において、仮想計算機70は、HVCの返答にあったページ数の連続する受信メモリページを確保する。The
In step S327, the
ステップS328において、仮想計算機70は、受信メモリメモリのアドレスとページ数とをレジスタにセットして、受信メモリページを通知するHVCを実行する。
ステップS329において、メモリマッピング部22が、メモリマッピングを変更する。詳しくは、メモリマッピング部22は、ステップS307と同様に、送信側の仮想計算機60用の拡張ページテーブル41の送信メモリページのレコードのPA412を、新たなメモリページのアドレスに変更し、受信側の仮想計算機70用の拡張ページテーブル42の受信メモリページのレコードのPA422を、送信メモリページがマッピングされていたメモリ32上のページのアドレスに変更する。メモリマッピング部22は、連続する元の送信メモリページが、連続する受信メモリページにマッピングされるように、拡張ページテーブル42の複数のレコードのPA422を変更する。In step S328, the
In step S329, the
ステップS330において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機60に割込みを用いて通知する。
ステップS331において、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に割込みを用いて通知する。In step S330, the
In step S331, the
上記した第3の実施形態の変形例2では、メモリマッピング部22が、マッピングの変更が完了したことを仮想計算機70に通知するのに、割込みを用いている(ステップS331参照)。割込みの替わりに、メモリマッピング部22は、受信メモリページを通知するHVC(ステップS328参照)の返答を用いてもよい。詳しくは、メモリマッピング部22が、ステップS328においてHVCにより受信メモリページの通知を受け、続いて、ステップS329のメモリマッピングの変更処理を実行して、ステップS328のHVCの返答としてマッピング変更完了を仮想計算機70に通知する。
In the second modification of the third embodiment described above, the
≪第4の実施形態:情報フロー制御を伴った仮想メモリ間のコピーによるデータ送信≫
第1~第3の実施形態では、仮想計算機60から仮想計算機70へデータを送信していた。逆に、仮想計算機70から仮想計算機60へ送信することも可能であり、両方向の通信が可能である。しかしながら、仮想計算機(60、70)が保持する情報の機密度や仮想計算機(60、70)の用途によっては、片方向の通信のみに制限したい場合もある。<< Fourth Embodiment: Data transmission by copying between virtual memories with information flow control >>
In the first to third embodiments, data is transmitted from the
例えば、仮想計算機70が機密度の高い情報を処理し、仮想計算機60が一般レベルの情報を処理する場合には、仮想計算機70から仮想計算機60へのデータ送信を禁止することにより、仮想計算機60へ機密度の高い情報が漏洩することを防止できる。また、機密度の高さに関係なく、マルウェアのような危険なプログラムが動作する計算機は、受信専用にし、データ送信できないようにしておけば、他の計算機にマルウェアが拡散することが無いようにできる。以下に、データ送信の方向を制限した仮想メモリ間のコピーによるデータ送信を説明する。
For example, when the
図11は、第4の実施形態に係るストレージ33上に格納される仮想計算機データベース51のデータ構成を例示する図である。仮想計算機データベース51は表形式のデータであって、1つのレコード(行)は1つの仮想計算機(60、70)を表し、仮想計算機ID511、ハードウェア設定512、認証情報513の属性(列)を含む。
FIG. 11 is a diagram illustrating a data structure of the
仮想計算機ID511は、仮想計算機(60、70)の識別情報(ID、Identifire)である。
ハードウェア設定512は、仮想計算機(60、70)のハードウェアの設定情報であり、仮想CPU(61、71)のコア数や仮想メモリ(62、72)のサイズ、仮想NIC(不図示)のMAC(Media Access Control)アドレス、ストレージ33の領域(セクタ)の中で仮想計算機(60、70)の仮想ストレージ(不図示)に割り当てられる領域を示す情報などが含まれる。The
The hardware setting 512 is the hardware setting information of the virtual computer (60, 70), and is the number of cores of the virtual CPU (61, 71), the size of the virtual memory (62, 72), and the virtual NIC (not shown). The MAC (Media Access Control) address, information indicating an area allocated to the virtual storage (not shown) of the virtual computer (60, 70) in the area (sector) of the
認証情報513は、当該レコードとその内容の認証情報であり、仮想計算機ID511とハードウェア設定512とのハッシュ値またはデジタル署名である。認証情報513は、仮想計算機ID511とハードウェア設定512の他に、仮想ストレージ上のブートローダやゲストOS(65、75)のカーネルなどを含んだデータのハッシュ値またはデジタル署名であってもよい。
The
仮想計算機(60、70)が起動する前に、ハイパーバイザ(20、20A)は、ハードウェア設定やブートローダ、ゲストOSのカーネルを認証情報513のハッシュ値またはデジタル署名と照合し、照合に失敗した場合には、仮想計算機(60、70)の起動を中止する。
Before the virtual machine (60, 70) starts, the hypervisor (20, 20A) matches the hardware settings, boot loader, and guest OS kernel with the hash value or digital signature of
レコード519は、仮想計算機ID511が「VM#60」である仮想計算機の仮想CPUのコア数は1であり、仮想NICのMACアドレスは「3F34」で始まることを示している。
図12は、第4の実施形態に係るストレージ33上に格納される情報フロー制御管理データベース52のデータ構成を例示する図である。情報フロー制御管理データベース52は、表形式のデータであって、1つのレコード(行)は許可された仮想計算機間のデータ送信の方向を示し、送信元521と送信先522の属性(列)を含む。送信元521は許可されたデータ送信方向のデータ送信元である仮想計算機の仮想計算機ID511であり、送信先522は許可されたデータ送信方向のデータ送信先である仮想計算機の仮想計算機ID511である。
FIG. 12 is a diagram illustrating a data structure of the information flow
レコード529は、「VM#60」から「VM#70」へのデータ送信が可能であることを示す。情報フロー制御管理データベース52には、許可されたデータ送信方向のみが含まれ、許されないデータ送信の方向は含まれない。
図13は、第4の実施形態に係る、情報フロー制御を伴った仮想計算機60から仮想計算機70へのデータ送信処理の流れを示すシーケンス図である。図13を参照しながら、ハイパーバイザ20のメモリコピー部21が、仮想計算機60の仮想メモリ62にあるデータを、仮想計算機70の仮想メモリ72にコピーする処理を説明する。
FIG. 13 is a sequence diagram showing a flow of data transmission processing from the
ステップS401~S403は、図4記載のステップS201~S203とそれぞれ同様である。
ステップS404において、ハイパーバイザ20からステップS403のHVCを転送されたメモリコピー部21は、仮想計算機70へのデータ送信が可能か、情報フロー制御管理データベース52を参照して判断する。詳しくは、メモリコピー部21は、送信元521が仮想計算機60の仮想計算機IDであり、送信先522が仮想計算機70の仮想計算機IDであるレコードを検索する。続いて、メモリコピー部21は、当該レコードが存在すれば送信可能と判断してステップS406に進み、当該レコードが存在しなければ送信不可と判断してステップS405に進む。Steps S401 to S403 are the same as steps S201 to S203 shown in FIG. 4, respectively.
In step S404, the
ステップS405において、メモリコピー部21は、送信不可であることを仮想計算機60に割込みを用いて通知する。仮想計算機60で割込みが発生して、本データ送信処理を終える。
ステップS406~S411は、図4記載のステップS204~S209とそれぞれ同様である。In step S405, the
Steps S406 to S411 are the same as steps S204 to S209 shown in FIG. 4, respectively.
このようにすることで、情報フロー制御管理データベース52にレコードが存在し、許可された送信元521の仮想計算機から送信先522の仮想計算機のみのデータ送信が可能となる。情報フロー制御管理データベース52にレコードが存在しない、送信元521の仮想計算機から送信先522の仮想計算機へのデータ送信は禁止される。
By doing so, the record exists in the information flow
第4の実施形態において、メモリコピー部21は、ステップS404においてデータ送信の可否を判断していた。これとは異なり、メモリコピー部21は、データをコピーする前に、例えば、ステップS408の受信メモリ領域を通知するHVCの後に、データ送信の可否を判断してもよい。
In the fourth embodiment, the
ステップS404において、メモリコピー部21が送信不可と判断した場合には、ステップS405において、割込みを用いて仮想計算機60に通知している。割込みの替わりに、メモリコピー部21は、送信メモリ領域を通知するHVC(ステップS403参照)の返答を用いてもよい。詳しくは、メモリコピー部21が、ステップS403においてHVCにより送信メモリ領域の通知を受け、続いて、ステップS404において送信不可の場合には、ステップS403のHVCの返答として送信不可を仮想計算機60に通知する。
If the
≪第5の実施形態:情報フロー制御を伴ったメモリマッピング変更によるデータ送信≫
メモリマッピング変更によるデータ送信においても、第4の実施形態と同様にデータの送信方向を制限することができる。第4の実施形態と同様に、ストレージ33上に仮想計算機データベース51(図11参照)と情報フロー制御管理データベース52(図12参照)とが格納される。<< Fifth Embodiment: Data transmission by changing memory mapping accompanied by information flow control >>
Even in the data transmission by changing the memory mapping, the data transmission direction can be restricted as in the fourth embodiment. Similar to the fourth embodiment, the virtual computer database 51 (see FIG. 11) and the information flow control management database 52 (see FIG. 12) are stored in the
図14は、第5の実施形態に係る、情報フロー制御を伴った仮想計算機60から仮想計算機70へのメモリマッピング変更によるデータ送信処理の流れを示すシーケンス図である。図14を参照しながら、ハイパーバイザ20Aのメモリマッピング部22が、仮想計算機60の仮想メモリ62上のページと、仮想計算機70の仮想メモリ72のページとのメモリマッピングを変更することによってデータ送信を実現する処理を説明する。
FIG. 14 is a sequence diagram showing a flow of data transmission processing by changing the memory mapping from the
ステップS501~S503は、図7記載のステップS301~S303と同様である。
ステップS504において、ハイパーバイザ20AからステップS503のHVCを転送されたメモリマッピング部22は、仮想計算機70へのデータ送信が可能か、情報フロー制御管理データベース52を参照して判断する。詳しくは、メモリマッピング部22は、送信元521が仮想計算機60の仮想計算機IDであり、送信先522が仮想計算機70の仮想計算機IDであるレコードを検索する。続いて、メモリマッピング部22は、当該レコードが存在すれば送信可能と判断してステップS506に進み、当該レコードが存在しなければ送信不可と判断してステップS505に進む。Steps S501 to S503 are the same as steps S301 to S303 shown in FIG. 7.
In step S504, the
ステップS505において、メモリマッピング部22は、送信不可であることを仮想計算機60に割込みを用いて通知する。仮想計算機60で割込みが発生して、本データ送信処理を終える。
ステップS506~S511は、図7に記載のステップS304~S309と同様である。In step S505, the
Steps S506 to S511 are the same as steps S304 to S309 described in FIG. 7.
このようにすることで、情報フロー制御管理データベース52にレコードが存在し、許可された送信元521の仮想計算機から送信先522の仮想計算機のみのデータ送信が可能となる。情報フロー制御管理データベース52にレコードが存在しない、送信元521の仮想計算機から送信先522の仮想計算機へのデータ送信は禁止される。
By doing so, the record exists in the information flow
第5の実施形態において、メモリマッピング部22は、ステップS504においてデータ送信の可否を判断している。これとは異なり、メモリマッピング部22は、メモリマッピングを変更する前に、例えば、ステップS508の受信メモリページを通知するHVCの後に、データ送信の可否を判断してもよい。
ステップS504において、メモリマッピング部22が送信不可と判断した場合には、ステップS505において、割込みを用いて仮想計算機60に通知している。割込みの替わりに、メモリマッピング部22は、送信メモリページを通知するHVC(ステップS503参照)の返答を用いてもよい。In the fifth embodiment, the
If the
≪変形例≫
上記した実施形態において、仮想計算機(60、70)が送信メモリ領域や受信メモリ領域などをハイパーバイザ(20、20A)に通知するHVCのパラメータは、特定のレジスタにセットしていた。パラメータをメモリ上に格納して、当該メモリのアドレスを特定のレジスタにセットするようにしてもよい。また、ハイパーバイザ(20、20A)は、当該メモリに領域不足、送信メモリページのページ数(図10のステップS326参照)、コピー完了、コピーしたメモリサイズなどのHVC完了時の結果を格納するようにしてもよい。≪Variation example≫
In the above-described embodiment, the HVC parameter for notifying the hypervisor (20, 20A) of the transmission memory area, the reception memory area, and the like by the virtual computer (60, 70) is set in a specific register. Parameters may be stored in memory and the address of the memory may be set in a specific register. Further, the hypervisor (20, 20A) stores the result at the time of HVC completion such as insufficient area in the memory, the number of pages of the transmission memory page (see step S326 in FIG. 10), copy completion, and the copied memory size. You may do it.
また、ハイパーバイザ(20、20A)が送信要求や受信要求などを仮想計算機(60、70)に通知する場合、それぞれの種別の割込み(割込みベクタ)を用いて通知していた。割込みの種別(割込みベクタ)は1つであり、送信要求や受信要求などの通知の種別は、割込みのパラメータとして特定のレジスタを介して通知してもよい。または、通知の種別をメモリ上に格納して、当該メモリのアドレスを特定のレジスタにセットするようにしてもよい。また、仮想計算機(60、70)がHVCを用いて、直前の割込み種別を取得してもよい。 Further, when the hypervisor (20, 20A) notifies the virtual machine (60, 70) of a transmission request, a reception request, or the like, the notification is made using each type of interrupt (interrupt vector). There is only one type of interrupt (interrupt vector), and the type of notification such as a transmission request or a reception request may be notified via a specific register as an interrupt parameter. Alternatively, the notification type may be stored in a memory and the address of the memory may be set in a specific register. Further, the virtual machine (60, 70) may acquire the immediately preceding interrupt type by using the HVC.
上記した実施形態において、送信側の仮想計算機60が送信したデータを受信側の仮想計算機70は、そのまま受信していた。データをそのまま送受信するのではなく、ハイパーバイザ20が変換して、仮想計算機70が受信するようにしてもよい。変換の例としては、暗号化、復号、エンディアン(バイトオーダ)変換、データ圧縮、データ伸長、エンコード、デコードおよびこれらの組み合せなどがあるが、これらに限定するものではない。暗号化や復号に必要な鍵は、ハイパーバイザ20のみがアクセスできるようにしておき、専らハイパーバイザ20が暗号化や復号するようにしてもよい。仮想計算機(60、70)が、インターネットなどの外部ネットワークに接続されていて、外部から攻撃されたりマルウェアに感染したりする恐れがある場合には、仮想計算機(60、70)に鍵を置かないことで、データの安全性が確保できるようになる。
In the above-described embodiment, the receiving-side
図3に示した第1の実施形態の変形例3において、受信メモリ領域の不足やコピー完了をハイパーバイザ20は割込みを用いて受信側の仮想計算機70に通知していた(ステップS128とステップS133参照)。割込みの替わりに、ハイパーバイザ20は、受信メモリ領域の特定の部分を用いて通知するようにしてもよい。例えば、受信メモリ領域の先頭の1バイトが、1であれば受信メモリ領域の不足、2であればコピー完了として、ハイパーバイザ20が仮想計算機70に通知してもよい。この場合、データは2バイト目以降にコピーされる。他の実施例や変形例においても、メモリ領域の特定部分を介して、ハイパーバイザ20から仮想計算機(60、70)に、送信要求、受信要求、コピー完了などを通知してもよい。
In the third modification of the first embodiment shown in FIG. 3, the
上記した実施形態では、送信側は仮想計算機60、受信側は仮想計算機70と固定されていた。仮想計算機(60、70)が通信相手を指定できるようにしてもよい。例えば、図4に示した第2の実施形態において、送信側の仮想計算機60が受信側の仮想計算機を指定できるようにしてもよい。指定の方法としては、送信メモリ領域を通知するHVC(ステップS203)のパラメータとして受信側の仮想計算機を指定するようにしてもよい。この場合、ハイパーバイザ20は、受信側の仮想計算機に、受信要求の割込み(ステップS204)のパラメータや割込みの種別(割込みベクタ)、受信メモリ領域の特定部分を介して送信側の仮想計算機を通知するようにしてもよい。
In the above embodiment, the transmitting side is fixed to the
また、受信側の仮想計算機70が、通信相手を指定できるようにしてもよい。図2に示した第1の実施形態において、仮想計算機70が受信メモリ領域を通知するHVC(ステップS102)のパラメータないしは受信メモリ領域の特定部分に送信側の仮想計算機をセットしてもよい。
Further, the
上記した実施形態やその変形例では、送信側の仮想計算機と受信側の仮想計算機とは、それぞれ1つだった。これに対して、1つの送信側の仮想計算機が、複数の仮想計算機にデータ送信できるようにしてもよい。第2の実施形態におけるメモリコピーによるデータ送信では、メモリコピー部21が、送信メモリ領域から複数の受信側の仮想計算機のそれぞれの受信メモリ領域にデータをコピーする。また、第3の実施形態におけるメモリマッピング変更によるデータ送信では、メモリマッピング部22が、複数の受信側仮想計算機のそれぞれの受信メモリページを変更前の送信メモリページに対応するホスト物理メモリページにマッピングする。
In the above-described embodiment and its modification, there is one virtual machine on the transmitting side and one virtual machine on the receiving side. On the other hand, one transmitting virtual machine may be able to transmit data to a plurality of virtual machines. In the data transmission by the memory copy in the second embodiment, the
上記した実施形態やその変形例では、仮想計算機(60、70)上ではゲストOS(65、75)が稼働し、その上でアプリケーションが稼働している。ゲストOSがなく、仮想計算機(60、70)上で直接アプリケーションが稼働する場合でも、アプリケーションがHVCを実行して、割込みを処理することで、仮想メモリ(62、72)にセットしたデータを送信することができる。 In the above-described embodiment and its modification, the guest OS (65, 75) is running on the virtual computer (60, 70), and the application is running on it. Even if there is no guest OS and the application runs directly on the virtual machine (60, 70), the application executes HVC and processes the interrupt to transmit the data set in the virtual memory (62, 72). can do.
≪効果≫
第1および第2の実施形態のハイパーバイザ20が、メモリ32上の送信メモリ領域から受信メモリ領域へデータをコピーすることで、仮想計算機60から仮想計算機70へのデータ送信を実現している。従来のデータ送信よりデータのコピー回数を削減しており、高速に送信できる。第3の実施形態のハイパーバイザ20Aが、メモリマッピングを変更してデータ送信した場合には、コピーしておらず、さらに高速に送信できる。≪Effect≫
The
第4および第5の実施形態では、データの送信方向は一方向に限定されており、機密度の高い情報やマルウェアのような危険なデータの流出を未然に防ぐことができる。 In the fourth and fifth embodiments, the data transmission direction is limited to one direction, and it is possible to prevent the leakage of highly sensitive information and dangerous data such as malware.
10,10A ホスト計算機
20 ハイパーバイザ
21 メモリコピー部
22 メモリマッピング部
31 CPU
32 メモリ
41,42 拡張ページテーブル
51 仮想計算機データベース
52 情報フロー制御管理データベース
60 (送信側)仮想計算機
61,71 仮想CPU
62,72 仮想メモリ
70 (受信側)仮想計算機10,
32
62,72 Virtual memory 70 (Receiving side) Virtual computer
Claims (5)
前記仮想計算機のうちデータの送信側である送信側仮想計算機から送信メモリ領域の通知を受けると、前記仮想計算機のうちデータの受信側である受信側仮想計算機に割込で受信要求を通知し、
前記受信側仮想計算機から受信メモリ領域の通知を受けると、前記送信メモリ領域のデータを前記受信メモリ領域にコピーするメモリコピー部を備えるハイパーバイザ、
を機能させるためのハイパーバイザプログラム。A hypervisor that operates multiple virtual computers on a physical computer and mediates data communication between the virtual computers.
Upon receiving a notification of the transmission memory area from the transmitting side virtual machine which is the data transmitting side of the virtual machine, the receiving side virtual machine which is the data receiving side of the virtual machine is interrupted to notify the reception request.
A hypervisor having a memory copy unit that copies data in the transmission memory area to the reception memory area when the reception side virtual computer notifies the reception memory area.
Hypervisor program to make it work.
前記仮想計算機のうちデータの受信側である受信側仮想計算機から受信メモリ領域の通知を受けると、前記仮想計算機のうちデータの送信側である送信側仮想計算機に割込で送信要求を通知し、
前記送信側仮想計算機から送信メモリ領域の通知を受けると、前記送信メモリ領域のデータを前記受信メモリ領域にコピーするメモリコピー部を備えるハイパーバイザ、
を機能させるためのハイパーバイザプログラム。A hypervisor that operates multiple virtual computers on a physical computer and mediates data communication between the virtual computers.
When the receiving memory area is notified from the receiving side virtual machine which is the data receiving side of the virtual machine, the transmitting request is interrupted and notified to the transmitting side virtual machine which is the data transmitting side of the virtual machine.
A hypervisor having a memory copy unit that copies data in the transmission memory area to the reception memory area when notified of the transmission memory area from the transmission side virtual computer.
Hypervisor program to make it work.
前記送信メモリ領域のデータに対して、暗号化、復号、エンディアン変換、データ圧縮、データ伸長、エンコードおよびデコードのいずれか1つないしは複数の組み合わせの変換処理を実行し、この変換処理後のデータを前記受信メモリ領域にコピーする、
ことを特徴とする請求項1または2に記載のハイパーバイザプログラム。The memory copy unit is
The data in the transmission memory area is subjected to conversion processing of any one or a plurality of combinations of encryption, decryption, endian conversion, data compression, data decompression, encoding and decoding, and the data after this conversion processing. To the received memory area,
The hypervisor program according to claim 1 or 2.
前記仮想計算機は、前記ハイパーバイザが管理し、物理アドレスにマッピングされる論理アドレス上で動作しており、
前記ハイパーバイザは、
前記仮想計算機のうちデータの送信側である送信側仮想計算機から送信メモリページの通知を受け、前記仮想計算機のうちデータの受信側である受信側仮想計算機から受信メモリページの通知を受けると、前記受信メモリページの論理アドレスのマッピング先の物理アドレスを、前記送信メモリページの論理アドレスのマッピング先の物理アドレスに変更し、前記送信メモリページの論理アドレスのマッピング先の物理アドレスを別の物理アドレスに変更するメモリマッピング部を備えるハイパーバイザ、
を機能させるためのハイパーバイザプログラム。A hypervisor that operates multiple virtual computers on a physical computer and mediates data communication between the virtual computers.
The virtual machine operates on a logical address managed by the hypervisor and mapped to a physical address.
The hypervisor is
When the transmission memory page is notified from the transmitting side virtual computer which is the data transmitting side of the virtual computer, and the receiving memory page is notified from the receiving side virtual computer which is the data receiving side of the virtual computer, the above-mentioned The physical address of the logical address mapping destination of the receive memory page is changed to the physical address of the mapping destination of the logical address of the transmission memory page, and the physical address of the mapping destination of the logical address of the transmission memory page is changed to another physical address. Hypervisor with memory mapping to change,
Hypervisor program to make it work.
前記送信側仮想計算機と前記受信側仮想計算機とに割込で送受信の完了を通知する、
ことを特徴とする請求項1ないし4のうちいずれか1項に記載のハイパーバイザプログラム。The hypervisor is
Notifying the completion of transmission / reception by interrupting the transmitting side virtual machine and the receiving side virtual machine.
The hypervisor program according to any one of claims 1 to 4.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017135753 | 2017-07-11 | ||
JP2017135753 | 2017-07-11 | ||
PCT/JP2018/023862 WO2019012958A1 (en) | 2017-07-11 | 2018-06-22 | Hypervisor program |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2019012958A1 JPWO2019012958A1 (en) | 2020-05-07 |
JP7090080B2 true JP7090080B2 (en) | 2022-06-23 |
Family
ID=65001304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019529028A Active JP7090080B2 (en) | 2017-07-11 | 2018-06-22 | Hypervisor program |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7090080B2 (en) |
WO (1) | WO2019012958A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012063334A1 (en) | 2010-11-10 | 2012-05-18 | 株式会社日立製作所 | Memory control device and i/o switch for assisting live migration of virtual machine |
JP2016115253A (en) | 2014-12-17 | 2016-06-23 | 富士通株式会社 | Information processing device, memory management method and memory management program |
WO2017034008A1 (en) | 2015-08-25 | 2017-03-02 | 株式会社Seltech | System with hypervisor |
-
2018
- 2018-06-22 WO PCT/JP2018/023862 patent/WO2019012958A1/en active Application Filing
- 2018-06-22 JP JP2019529028A patent/JP7090080B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012063334A1 (en) | 2010-11-10 | 2012-05-18 | 株式会社日立製作所 | Memory control device and i/o switch for assisting live migration of virtual machine |
JP2016115253A (en) | 2014-12-17 | 2016-06-23 | 富士通株式会社 | Information processing device, memory management method and memory management program |
WO2017034008A1 (en) | 2015-08-25 | 2017-03-02 | 株式会社Seltech | System with hypervisor |
Also Published As
Publication number | Publication date |
---|---|
JPWO2019012958A1 (en) | 2020-05-07 |
WO2019012958A1 (en) | 2019-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107534579B (en) | System and method for resource management | |
CN111221758B (en) | Method and computer device for processing remote direct memory access request | |
US10726120B2 (en) | System, apparatus and method for providing locality assertion between a security processor and an enclave | |
US20160088109A1 (en) | Method and Apparatus for Remotely Running Application Program | |
JP2019091494A (en) | Emulated endpoint configuration | |
JP5611598B2 (en) | Encryption key container on USB token | |
TW202226782A (en) | Cryptographic computing including enhanced cryptographic addresses | |
CN113688072B (en) | Data processing method and device | |
CN110659101A (en) | Techniques to provide function level isolation with capability-based security | |
CN111090869B (en) | Data encryption method, processor and computer equipment | |
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 | |
WO2012025727A1 (en) | Electronic devices | |
KR101837678B1 (en) | Computing apparatus based on trusted execution environment | |
EP1709540A2 (en) | Virtual to physical address translation | |
WO2023179508A1 (en) | Data processing method and apparatus, readable medium and electronic device | |
US11700277B2 (en) | Providing access to data in a secure communication | |
WO2019174074A1 (en) | Method for processing service data, and network device | |
JP2017091543A (en) | Multi-processor system including memory shared by multi-processor, and method of operating that system | |
CN112906075A (en) | Memory sharing method and device | |
KR102442118B1 (en) | Method and apparatus for offloading file i/o based on remote diret memory access using unikernel | |
US20230342087A1 (en) | Data Access Method and Related Device | |
JP7090080B2 (en) | Hypervisor program | |
US10397140B2 (en) | Multi-processor computing systems | |
US10585689B1 (en) | Shared memory interface for application processes | |
EP3913488B1 (en) | Data processing method and device |
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 |