JP5907179B2 - 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置 - Google Patents

仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置 Download PDF

Info

Publication number
JP5907179B2
JP5907179B2 JP2013556171A JP2013556171A JP5907179B2 JP 5907179 B2 JP5907179 B2 JP 5907179B2 JP 2013556171 A JP2013556171 A JP 2013556171A JP 2013556171 A JP2013556171 A JP 2013556171A JP 5907179 B2 JP5907179 B2 JP 5907179B2
Authority
JP
Japan
Prior art keywords
virtual
virtual machine
guest
bridge
information
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.)
Expired - Fee Related
Application number
JP2013556171A
Other languages
English (en)
Other versions
JPWO2013114620A1 (ja
Inventor
鈴木 和宏
和宏 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013556171A priority Critical patent/JP5907179B2/ja
Publication of JPWO2013114620A1 publication Critical patent/JPWO2013114620A1/ja
Application granted granted Critical
Publication of JP5907179B2 publication Critical patent/JP5907179B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/54Interprogram communication
    • 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/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置に関する。
従来から、情報処理装置などの物理サーバ上でVM(Virtual Machine:仮想マシン)といわれる仮想的なサーバを動作させるサーバ仮想化技術が知られている。物理サーバでは、VMの生成などVMに関する各種制御を実行するVMM(Virtual Machine Monitor)などと呼ばれるソフトウェアを動作させている。一般的に、VM上で動作しているOS(Operating System)をゲストOSと呼ぶ。
VMMの一例としては、ハイパーバイザが知られている。このハイパーバイザは、モノリシック型のハイパーバイザと、マイクロカーネル型のハイパーバイザに分類される。
モノリシック型は、デバイスドライバをハイパーバイザ層に実装する形態である。したがって、モノリシック型では、デバイスドライバを実行したり、レイヤ2スイッチと同等の処理を実行したりするので、ゲストOS間の通信を高速に処理することができる場合がある反面、不安定になる場合もある。
マイクロカーネル型は、ハイパーバイザ層の他に、ゲストOSとは異なる特別な権限を持った管理OSを実装する形態である。この管理OSは、VM上で動作するゲストOSの1つであり、デバイスドライバを管理する。したがって、マイクロカーネル型では、ゲストOSで発生したI/O(Input/Output:入出力)は、管理OSが管理するデバイスドライバを介して処理される。
特開2007−109040号公報 特開2007−193429号公報
しかしながら、従来技術では、ゲストOS間の通信が高速ではないという問題がある。
例えば、マイクロカーネル型では、ゲスト間通信を実行するためには管理OSによるブリッジ処理を実行することになる。このため、管理OSのコンテキストが切り替わるのを待つことになり、オーバヘッドが発生するので、ゲストOS間の通信に時間がかかる。
第1の側面では、ゲストOS間の通信を高速化することができる仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置を提供することを目的とする。
第1の案では、コンピュータに、複数の仮想マシンを稼動させる処理を実行させる。また、コンピュータに、前記複数の仮想マシンのいずれかの仮想マシンからパケットが送信された場合に、前記仮想マシンと他の仮想マシンとの通信を中継する中継処理を実行するプログラムの格納先を記憶する記憶部から、前記プログラムの格納先を特定する処理を実行させる。また、コンピュータに、特定した格納先から読み出したプログラムを実行して、前記パケットを宛先の仮想マシンに中継する処理を実行させる。
ゲストOS間の通信を高速化することができる。
図1は、実施例1に係る情報処理装置の全体構成例を示す図である。 図2は、仮想制御部14が仮想ブリッジを実行する例を示す図である。 図3は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。 図4は、MAC管理テーブル32に記憶される情報の例を示す図である。 図5は、ゲストID管理テーブル33に記憶される情報の例を示す図である。 図6は、ハンドラ管理テーブル34に記憶される情報の例を示す図である。 図7は、実施例2に係る情報処理装置20が実行する初期化処理の流れを示すシーケンス図である。 図8は、実施例2に係る情報処理装置20が実行する中継処理の流れを示すシーケンス図である。 図9は、実施例3に係る情報処理装置20の全体構成例を示す図である。 図10は、実施例3に係るゲストID管理テーブル33に記憶される情報の例を示す図である。 図11は、実施例3に係る情報処理装置20が実行する初期化処理の流れを示すシーケンス図である。 図12は、実施例3に係る情報処理装置20が実行する中継処理の流れを示すシーケンス図である。 図13は、仮想マシン制御プログラムを実行するコンピュータのハードウェア構成の例を示す図である。
以下に、本発明にかかる仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1に係る情報処理装置の全体構成例を示す図である。図1に示すように、情報処理装置10は、仮想制御部14を実行し、仮想マシン(Virtual Machine:VM)として管理OS(Operating System)11とゲストOS(A)12とゲストOS(B)13とを実行する。なお、ここで示したゲストOSの数は一例であり、任意の数のゲストOSを実行することができる。また、本実施例では、マイクロカーネル型のハイパーバイザを用いてVMを動作させる例で説明する。
管理OS11は、仮想制御部14によって各種制御が実行されるゲストOSの1つであり、他のゲストOSとは異なる権限を有するVMである。例えば、管理OS11は、ゲストOS(A)12とゲストOS(B)13との通信を中継する仮想ブリッジデバイスを提供する。具体的には、管理OS11は、ネットバックなどと呼ばれる仮想ネットワークインタフェースである「vif1.0」と「vif2.0」とを有し、「vif1.0」と「vif2.0」とを接続するブリッジインタフェースである「br0」を有する。
ゲストOS(A)12は、仮想制御部14によって各種制御が実行されるゲストOSの1つであり、ネットフロントなどと呼ばれる仮想ネットワークインタフェースである「eth0」を有するVMである。この「eth0」は、管理OS11の「vif1.0」と接続される。
ゲストOS(B)13は、仮想制御部14によって各種制御が実行されるゲストOSの1つであり、ネットフロントなどと呼ばれる仮想ネットワークインタフェースである「eth0」を有するVMである。この「eth0」は、管理OS11の「vif2.0」と接続される。
仮想制御部14は、ハイパーバイザなどのソフトウェアを実行してVMが動作する仮想空間を提供し、VMの生成や削除など各種制御を実行する。この仮想制御部14は、記憶部14aと特定部14bと中継部14cとを有する。
記憶部14aは、ゲストOSと他のゲストOSとの通信を中継する中継処理を実行するプログラムの格納先を記憶する。例えば、記憶部14aは、「vif1.0」と「vif2.0」と「br0」とから構成される仮想ブリッジデバイスを実行するプログラムの格納先を記憶する。なお、格納先の一例としては、アドレス情報などが該当する。
特定部14bは、情報処理装置10上で稼動するゲストOSのいずれかのゲストOSからパケットが送信された場合に、記憶部14aから、中継処理を実行するプログラムの格納先を特定する。中継部14cは、特定部14bによって特定された格納先からプログラムを読み出して実行し、ゲストOSから送信されたパケットを宛先の仮想マシンに中継する。
ここで、図2を用いて、仮想制御部14が実行する処理の例を説明する。図2は、仮想制御部14が仮想ブリッジデバイスを実行する例を示す図である。図2に示す情報処理装置が実行するVM等の構成は、図1と同様である。ここでは、ゲストOS(A)12がゲストOS(B)13にパケットを送信する例について説明する。
まず、一般的なゲストOS間通信について説明する。ゲストOS(A)12は、ゲストOS(B)13のIPアドレスを宛先としたパケットを送信する。すると、ゲストOS(A)12のネットフロント「eth0」は、管理OS11のネットバック「vif1.0」にパケットの到着を通知する。続いて、ネットバック「vif1.0」に届いたパケットは、管理OS11によって読み込まれ、「br0」を介して、ネットバック「vif2.0」に書き込まれる。その後、ネットバック「vif2.0」は、ゲストOS(B)13のネットフロント「eth0」にパケットが到着したことを通知する。このようにして、ゲストOS(B)13は、ゲストOS(A)12から送信されたパケットを、管理OS11の仮想ブリッジを介して受信する。
次に、図2を用いて、実施例1に係る情報処理装置が実行するパケットの送受信の例を説明する。ゲストOS(A)12は、ゲストOS(B)13のIPアドレスを宛先としたパケットを送信する。すると、ゲストOS(A)12のネットフロント「eth0」は、仮想制御部14に対して、管理OS11のネットバック「vif1.0」にパケットが到着したことを通知する。仮想制御部14は、ネットバック「vif1.0」と「vif2.0」とが「br0」でブリッジ接続されて構成されるブリッジハンドラ11aの格納先を記憶部14aから特定する。そして、仮想制御部14は、管理OS11に代って、特定した格納先から読み出したブリッジハンドラ11aを実行する。そして、仮想制御部14は、ネットバックにマッピングされるゲストOS(B)13のネットフロント「eth0」に、パケットが到着したことを通知する。このようにして、ゲストOS(B)13は、ゲストOS(A)12から送信されたパケットを、管理OS11を介することなく受信する。
このように、情報処理装置10の仮想制御部14は、仮想ブリッジデバイスを提供するブリッジハンドラ11aを管理OS11に代って実行する。すなわち、仮想制御部14は、管理OS11のカーネル内で動作していたブリッジハンドラ11aを、仮想制御部14などのハイパーバイザのコンテキストで読み出して実行することができる。この結果、情報処理装置10は、ゲストOSと管理OSとの通信を削減することができ、ゲストOS間の通信を高速化することができる。
次に、実施例2に係る情報処理装置について説明する。実施例2では、実施例2に係る情報処理装置の構成、処理の流れ等について説明する。
[情報処理装置の構成]
図3は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。図3に示すように、情報処理装置20は、仮想領域21と制御部30とを有する。なお、ここで示した機能部はあくまで例示であり、図示した機能部以外として、例えばメモリなどの記憶部や入出力インタフェース、通信インタフェースなどを有していてもよい。
仮想領域21は、制御部30のハイパーバイザ31によって管理される領域であり、任意の数のVMを動作させることができる。図3では、VMとして、管理OS(A)22、管理OS(B)23、ゲストOS(A)24、ゲストOS(B)25、ゲストOS(C)26、ゲストOS(D)27が動作している。
ここでは、管理OS(A)22には、VMを識別するゲストIDとして「0」が割当てられており、管理OS(B)23には、ゲストIDとして「1」が割当てられている。また、ゲストOS(A)24には、MAC(Media Access Control)アドレスとしてMAC(A)が設定されており、ゲストOS(B)25には、MACアドレスとしてMAC(B)が設定されている。同様に、ゲストOS(C)26には、MACアドレスとしてMAC(C)が設定されており、ゲストOS(D)27には、MACアドレスとしてMAC(D)が設定されている。
また、管理OS(A)22は、仮想ネットワークインタフェースであるネットバック「vif1.0」とネットバック「vif2.0」とを有し、「vif1.0」と「vif2.0」とを接続するブリッジインタフェースである「br0」を有する。管理OS(B)23は、仮想ネットワークインタフェースであるネットバック「vif3.0」とネットバック「vif4.0」とを有し、「vif3.0」と「vif4.0」とを接続するブリッジインタフェースである「br1」を有する。
ゲストOS(A)24は、仮想ネットワークインタフェースであるネットフロント「eth0」を有するVMである。このゲストOS(A)24の「eth0」は、管理OS(A)22の「vif1.0」と接続される。ゲストOS(B)25は、仮想ネットワークインタフェースであるネットフロント「eth0」を有するVMである。このゲストOS(B)25の「eth0」は、管理OS(A)22の「vif2.0」と接続される。ゲストOS(C)26は、仮想ネットワークインタフェースであるネットフロント「eth0」を有するVMである。このゲストOS(C)26の「eth0」は、管理OS(B)23の「vif3.0」と接続される。ゲストOS(D)27は、仮想ネットワークインタフェースであるネットフロント「eth0」を有するVMである。このゲストOS(D)27の「eth0」は、管理OS(B)23の「vif4.0」と接続される。
すなわち、管理OS(A)22は、ゲストOS(A)24とゲストOS(B)25との通信を中継する仮想ブリッジデバイスを提供する。管理OS(B)23は、ゲストOS(C)26とゲストOS(D)27との通信を中継する仮想ブリッジデバイスを提供する。
この仮想領域21で動作する各ゲストOSや管理OSには、ハイパーバイザ31によって仮想プロセッサと仮想メモリとが割り当てられ、各ゲストOSや管理OSは、この仮想プロセッサと仮想メモリによりVMとして動作し、各種処理を実行する。なお、仮想メモリは、情報処理装置20のメモリにおける所定領域をゲストOSや管理OSが使用するメモリとして割り当てることで実現された仮想的なメモリである。仮想プロセッサは、情報処理装置20のプロセッサにおける所定処理能力をゲストOSや管理OSが使用するプロセッサとして割り当てることで実現された仮想的なプロセッサである。
制御部30は、処理制御部30aとハイパーバイザ31とを有し、これらによってゲストOS間の通信を制御する処理部であり、例えばCPU(Central Processing Unit)などの電子回路である。なお、制御部30は、内部メモリ等を有していてもよい。
処理制御部30aは、ゲストOSや管理OSに関する処理以外の処理を実行する処理部である。例えば、処理制御部30aは、情報処理装置20に搭載されるOSの起動停止、ハイパーバイザ31の起動停止を実行する。
ハイパーバイザ31は、VMの生成や削除などVMに関する各種処理を実行する処理部であり、ゲストOS間の通信を制御する処理部である。このハイパーバイザ31は、MAC管理テーブル32、ゲストID管理テーブル33、ハンドラ管理テーブル34、情報格納部35、ゲスト特定部36、ハンドラ特定部37、実行制御部38を有する。なお、各テーブルは、メモリ等の記憶装置に設けられ、管理者や後述する情報格納部35によって更新される。
MAC管理テーブル32は、各ゲストOSのMACアドレスに対応付けて、各ゲストOSのネットフロントにマッピングされるネットバックを特定する情報を記憶する。図4は、MAC管理テーブル32に記憶される情報の例を示す図である。図4に示すように、MAC管理テーブル32は、「MACアドレス」と「デバイスID」とを対応付けて記憶する。ここで記憶される「MACアドレス」は、各ゲストOSに設定されたMACアドレスを示す。「デバイスID」は、管理OSのネットバックを特定する情報を示し、例えばネットバックの名称や識別子、ネットバックが使用するデバイスIDなどが記憶される。なお、ここでは、「デバイスID」としてネットバックの識別子が記憶される例を図示している。
図4の場合、MAC(A)を有するゲストOS(A)24は、管理OS(A)22のネットバック「vif1.0」に接続されることを示す。また、MAC(B)を有するゲストOS(B)25は、管理OS(A)22のネットバック「vif2.0」に接続されることを示す。MAC(C)を有するゲストOS(C)26は、管理OS(B)23のネットバック「vif3.0」に接続されることを示す。また、MAC(D)を有するゲストOS(D)27は、管理OS(B)23のネットバック「vif4.0」に接続されることを示す。
ゲストID管理テーブル33は、各管理OSが使用する仮想的なブリッジデバイスに関する情報を記憶する。図5は、ゲストID管理テーブル33に記憶される情報の例を示す図である。図5に示すように、ゲストID管理テーブル33は、「ゲストID、デバイスID、ブリッジデバイスアドレス」を記憶する。
ここで記憶される「ゲストID」は、管理OSを識別する識別子を示す。「デバイスID」は、管理OSが使用する仮想ネットワークインタフェースを識別する識別子を示す。「ブリッジデバイスアドレス」は、管理OSが使用する仮想的なブリッジデバイス自身を指すアドレス情報を示し、例えば構造体の先頭アドレスが格納される。なお、ゲストID管理テーブル33は、ネットフロントのMACアドレスとネットバックの名称との対応表を記憶してもよい。また、デバイスIDにネットフロントの識別等を使用してもよい。
図5の場合、構造体における「net_deviceA」を先頭アドレスとする位置に、ゲストIDが「0」の管理OS(A)22のネットバック「vif1.0」および「vif2.0」を有する仮想的なブリッジデバイスが格納されることを示す。同様に、構造体における「net_deviceB」を先頭アドレスとする位置に、ゲストIDが「1」の管理OS(B)23のネットバック「vif3.0」および「vif4.0」を有する仮想的なブリッジデバイスが格納されることを示す。
ハンドラ管理テーブル34は、各管理OSが実行するブリッジハンドラの格納先を記憶する。すなわち、ハンドラ管理テーブル34は、仮想的なブリッジデバイスのエントリポイントを記憶する。図6は、ハンドラ管理テーブル34に記憶される情報の例を示す図である。図6に示すように、ハンドラ管理テーブル34は、「ゲストID、割込みベクタ、ブリッジハンドラ、構造体識別子、ゲストページテーブル」を対応付けて記憶する。
ここで記憶される「ゲストID」は、管理OSを識別する識別子を示す。「割込みベクタ」は、割込みの要因を識別する識別子である。「ブリッジハンドラ」は、管理OSが使用する物理アドレスの形式、言い換えると、ハイパーバイザ31によって提供される仮想アドレス空間のアドレス形式で格納され、ブリッジハンドラが格納される格納先の先頭アドレスを示す。「構造体識別子」は、構造体の種別を特定する情報である。「ゲストページテーブル」は、管理OSの仮想空間に変換するために使用するページテーブルであり、管理OSが保持している物理アドレス空間の先頭アドレス、つまり、ハイパーバイザ31が提供する仮想アドレス空間の先頭アドレスを示す。
図6の場合、管理OS(A)22が実行するブリッジハンドラは、br_netdev_ops0構造体に格納されていることを示す。そして、ゲストIDが「0」の管理OS(A)22に対する割込みベクタが「0」である割込みが発生した場合、PT0を用いて、管理OS(A)22の物理アドレス「br_netdev_ops0」を仮想アドレスに変換することを示す。さらに、管理OS(B)23が実行するブリッジハンドラは、br_netdev_ops1構造体に格納されていることを示す。そして、ゲストIDが「1」の管理OS(B)23に対する割込みベクタが「0」である割込みが発生した場合、PT1を用いて、管理OS(B)23の物理アドレス「br_netdev_ops1」を仮想アドレスに変換することを示す。
このように、ハンドラ管理テーブル34には、構造体のアドレスを登録したときに、通常の関数へのアドレスと区別するために構造体であることを示す構造体を登録する。この結果、ハイパーバイザ31は、ブリッジハンドラ全体の格納先を特定することができる。なお、構造体識別子は、単純なフラグでもよいし、構造体のメンバへのオフセットを格納してもよい。また、割込みベクタが「0」である割込みの一例としては、ゲストOS間のパケット通信が該当する。
情報格納部35は、MAC管理テーブル32、ゲストID管理テーブル33、ハンドラ管理テーブル34に各種情報を格納する処理部である。なお、情報格納部35は、管理OSの設定情報やアドレス情報を自動でメモリや管理OS等から取得して格納してもよく、管理者等から受け付けた情報を格納してもよい。
例えば、情報格納部35は、ゲストOSが作成された場合またはゲストOSが稼動した場合に、ゲストOSのMACアドレスとゲストOSが接続する管理OSのネットバックとを対応付けて、MAC管理テーブル32に格納する。また、情報格納部35は、管理OSが作成された場合または管理OSが稼動した場合に、ゲストIDとデバイスIDとブリッジデバイスアドレスとを対応付けて、ゲストID管理テーブル33に格納する。また、情報格納部35は、管理OSが作成された場合または管理OSが稼動した場合に、ゲストIDと割込みベクタとブリッジハンドラと構造体識別子とゲストページテーブルとを対応付けて、ハンドラ管理テーブル34に格納する。
ゲスト特定部36は、ゲストOSからパケットが送信された場合に、当該パケットを中継するブリッジデバイスのアドレスや当該ブリッジデバイスを実行する管理OSを特定する処理部である。一例として、ゲストOS(A)24がゲストOS(B)25に対してパケットを送信した例で説明する。
この場合、ゲスト特定部36は、送信元であるゲストOS(A)24のMACアドレス「MAC(A)」と、宛先であるゲストOS(B)25のMACアドレス「MAC(B)」とを、送信されたパケットのヘッダ等から特定する。そして、ゲスト特定部36は、特定した「MAC(A)」に対応するデバイスID「vif1.0」をMAC管理テーブル32から特定する。同様に、ゲスト特定部36は、特定した「MAC(B)」に対応するデバイスID「vif2.0」をMAC管理テーブル32から特定する。
続いて、ゲスト特定部36は、「vif1.0」に対応付けられたゲストID「0」とブリッジアドレス「net_deviceA」とをゲストID管理テーブル33から特定する。同様に、ゲスト特定部36は、「vif2.0」に対応付けられたゲストID「0」とブリッジアドレス「net_deviceA」とをゲストID管理テーブル33から特定する。このとき、ゲスト特定部36は、特定したブリッジアドレス「net_deviceA」が一致するか否かを判定する。つまり、ゲスト特定部36は、送信元のゲストOSが接続されるブリッジデバイスと、宛先のゲストOSが接続されるブリッジデバイスとが一致するか否かを判定する。
そして、ゲスト特定部36は、宛先のMACアドレスから特定したゲストIDとブリッジアドレスとともに、判定結果をハンドラ特定部37に通知する。なお、ゲスト特定部36は、ゲストOS(A)24がゲストOS(B)25に対してパケットを送信したことを示す割込みベクタとして「0」をハンドラ特定部37に通知する。
ハンドラ特定部37は、送信されたパケットを中継する仮想的なブリッジデバイスを呼び出すブリッジハンドラを特定する処理部である。具体的には、ハンドラ特定部37は、送信されたパケットを宛先に届けるために、パケットの中継処理を実行するブリッジハンドラの格納先であるアドレス情報を特定する。
上記例で説明すると、ハンドラ特定部37は、割込みベクタ「0」とゲストID「0」とブリッジアドレス「net_deviceA」と判定結果とをゲスト特定部36から取得する。そして、ハンドラ特定部37は、割込みベクタ「0」とゲストID「0」とブリッジアドレス「net_deviceA」とをキーにして、ハンドラ管理テーブル34を参照し、ブリッジハンドラ「br_netdev_ops0」と構造体識別子「BRIDGE」とゲストページテーブル「PT0」とを特定する。その後、ハンドラ特定部37は、特定した情報およびブリッジアドレスを実行制御部38に通知する。
また、ハンドラ特定部37は、ゲスト特定部36から通知された判定結果が「一致」であった場合に、上記各処理を実行してもよい。また、ハンドラ特定部37は、ゲスト特定部36から通知された判定結果が「不一致」であった場合に、上記各処理を実行することなく、ゲストOSからパケットが送信されたことを管理OSに通知することもできる。
実行制御部38は、ブリッジハンドラを実行する処理部である。具体的には、実行制御部38は、管理OSのカーネル内で動作していたブリッジハンドラを、ハイパーバイザ31のコンテキストで読み出して実行する。
上記例で説明すると、実行制御部38は、ブリッジハンドラ「br_netdev_ops0」と構造体識別子「BRIDGE」とゲストページテーブル「PT0」とブリッジアドレス「net_deviceA」とをハンドラ特定部37から取得する。そして、実行制御部38は、ゲストページテーブル「PT0」を用いて、「br_netdev_ops0」を管理OS(A)22が管理する物理アドレス空間の物理アドレスから、管理OS(A)22が管理する論理アドレス空間の論理アドレスに変換する。その後、実行制御部38は、ブリッジアドレス「net_deviceA」を引数にして、変換した仮想アドレスからブリッジハンドラを読み出して実行する。このようにして、実行制御部38は、実行したブリッジハンドラ内のネットバック「eth0」にパケットが到着したことを、宛先のゲストOS(B)25に通知する。
[処理の流れ]
次に、情報処理装置20が実行する処理の流れを説明する。ここでは、初期化処理とパケット中継処理について説明する。
(初期化処理)
図7は、実施例2に係る情報処理装置20が実行する初期化処理の流れを示すシーケンス図である。図7に示すように、オペレータや管理者等によってゲストOSが仮想領域21に作成される、または、ゲストOSが使用するNIC(ネットワークインタフェースカード)デバイスが追加されると(S101とS102)、管理OSはS103とS104を実行する。すなわち、管理OSは、ゲストOSの作成指示やNICの追加指示をハイパーバイザ31に出力する。
そして、ハイパーバイザ31の情報格納部35は、作成されたゲストOSや追加されたNICデバイスに対応する情報を格納したレコードを、ゲストID管理テーブル33に登録する(S105)。このとき、情報格納部35は、作成されたゲストOSや追加されたNICデバイスに対応する情報を格納したレコードを、MAC管理テーブル32にも登録する。
その後、管理OSは、ブリッジハンドラの登録指示をハイパーバイザ31に出力する(S106とS107)。つまり、管理OSは、生成されたゲストOSのネットフロントと管理OSのネットバックとが接続されたことを検出して、仮想的なブリッジデバイスを確立させる。そして、管理OSは、確立した仮想的なブリッジデバイスを実行するプログラムの格納先をハイパーバイザ31に通知する。
その後、ハイパーバイザ31の情報格納部35は、管理OSから通知されたプログラムの格納先をハンドラ管理テーブル34に登録する(S108)。このとき、情報格納部35は、管理OSのゲストID、割込みベクタ、ゲストページテーブル等を管理OS等から取得して、プログラムの格納先とともにハンドラ管理テーブル34に登録する。
(中継処理)
図8は、実施例2に係る情報処理装置20が実行する中継処理の流れを示すシーケンス図である。図8に示すように、ゲストOS(A)24は、ゲストOS(B)25への通信要求が発生すると(S201)、ハイパーバイザ31に対して、通信要求が発生したことを通知する(S202)。つまり、ゲストOS(A)24の仮想インタフェースである「eth0」が、自身と接続される管理OS(A)22のネットバック「vif1.0」にパケットが到着したことをハイパーバイザ31に通知する。
すると、ハイパーバイザ31のゲスト特定部36は、ネットバック「vif1.0」に到着したパケットに基づいてS203を実行する。すなわち、ゲスト特定部36は、送信元であるゲストOS(A)24のMACアドレスと、宛先であるゲストOS(B)25のMACアドレスとをパケットから抽出する。そして、ゲスト特定部36は、各MACアドレスをキーにしてMAC管理テーブル32を参照して、送信元のゲストOS(A)24に接続されるネットバックのデバイスIDと、宛先のゲストOS(B)25に接続されるネットバックのデバイスIDとを特定する。
その後、ゲスト特定部36は、送信元のデバイスIDをキーにして、ゲストID管理テーブル33から、送信元のデバイスIDに対応するゲストIDとブリッジデバイスアドレスとを取得する(S204)。同様に、ゲスト特定部36は、宛先のデバイスIDをキーにして、ゲストID管理テーブル33から、宛先のデバイスIDに対応するゲストIDとブリッジデバイスアドレスとを取得する(S205)。
続いて、ゲスト特定部36は、S204で特定したブリッジデバイスアドレスと、S205で特定したブリッジデバイスアドレスとが一致するかを判定する(S206)。なお、ここでは、一致したとする。
その後、ハンドラ特定部37は、宛先のゲストOS(B)25に接続されるネットバックのデバイスIDをキーにして、ハンドラ管理テーブル34からブリッジハンドラ、構造体識別子、ゲストページテーブルを取得する(S207)。
そして、実行制御部38は、特定されたブリッジデバイスアドレスを引数にして、特定したブリッジハンドラのアドレスから、ブリッジハンドラを読み出して実行する(S208とS209)。
その後、実行制御部38は、ネットバック「vif1.0」と「br0」でブリッジ接続されるネットバック「vif2.0」にマッピングされるネットフロント「eth0」を有するゲストOS(B)25に、パケットが到着したことを通知する(S210とS211)。
そして、ゲストOS(B)25は、パケットが到着したこと、すなわちパケットを受信したことを確認し(S212)、正常に受信したことをハイパーバイザ31に通知する(S213)。そして、ハイパーバイザ31の実行制御部38は、パケットが宛先に正常に受信されたことを示す応答を送信元のゲストOS(A)24に通知する(S214とS215)。
このように、実施例2に係る情報処理装置20では、ハイパーバイザ31が、管理OSで設定されたネットワーク情報を受け取って、仮想ブリッジデバイスの構成情報や呼び出すべきハンドラを格納し、登録されたハンドラを呼び出すことができる。このため、管理OSの実行を待つことなく、管理OSの処理を直接呼び出すことができるため、高速にゲスト間の通信を実現することができる。
ところで、実施例2では、ハイパーバイザが、ネットバックとブリッジインタフェースとから構成されるブリッジハンドラ全体を管理OSに代って実行する例について説明したが、これに限定されるものではない。例えば、ハイパーバイザは、宛先のゲストOSに接続されるネットバックのキューイングバッファに、パケットを格納することで、パケットの中継処理を実行することもできる。そこで、実施例3では、キューイングバッファにパケットを格納するキューイングハンドラを管理OSに代って実行する例について説明する。
[全体構成]
図9は、実施例3に係る情報処理装置20の全体構成例を示す図である。図9に示すように、実施例3に係る情報処理装置20は、実施例2に係る情報処理装置と同様の構成を有する。なお、ここでは、図3に示した実施例2に係る情報処理装置20の一部を抜粋して図示している。また、実施例3に係る情報処理装置10は、実施例2と同様のテーブルを保持するとする。そして、実施例1や実施例2等と異なる点は、ゲストID管理テーブル33にバッファキューの先頭アドレスが格納されている点である。図10は、実施例3に係るゲストID管理テーブル33に記憶される情報の例を示す図である。
図10に示すように、実施例3に係るゲストID管理テーブル33は、「ゲストID、デバイスID、ブリッジデバイスアドレス、バッファキュー」を対応付けて記憶する。ここで記憶される「ゲストID、デバイスID、ブリッジデバイスアドレス」は、図5と同様なので詳細な説明は省略する。「バッファキュー」は、パケットを格納してキューを形成させるバッファの先頭アドレスを示す。なお、ゲストID管理テーブル33は、「ブリッジデバイスアドレス」を記憶していなくてもよい。
図10を用いて一例を説明すると、構造体における「net_deviceA」を先頭アドレスとする位置に、ゲストIDが「0」の管理OS(A)22のネットバック「vif1.0」および「vif2.0」を有する仮想的なブリッジデバイスが格納されることを示す。また、ネットバック「vif1.0」に到着したパケットを格納するバッファのアドレスが「queue1」であることを示す。同様に、構造体における「net_deviceB」を先頭アドレスとする位置に、ゲストIDが「1」の管理OS(B)23のネットバック「vif3.0」および「vif4.0」を有する仮想的なブリッジデバイスが格納されることを示す。また、ネットバック「vif3.0」に到着したパケットを格納するバッファのアドレスが「queue3」であることを示す。
このような状態において、ゲストOS(A)24がゲストOS(B)25にパケットを送出する例について説明する。ゲストOS(A)24は、ゲストOS(B)25のIPアドレスを宛先としたパケットを送出する。そして、ゲストOS(A)24のネットフロント「eth0」は、ハイパーバイザ31に対して、管理OS22のネットバック「vif1.0」にパケットが到着したことを通知する。
すると、図9に示すように、ハイパーバイザ31は、パケットが到着したネットバック「vif1.0」にブリッジ接続されるネットバック「vif2.0」のキューイングハンドラ31aの格納位置を特定する。すなわち、ハイパーバイザ31は、ゲストID管理テーブル33に記憶されるバッファキューを引数にして、ハンドラ管理テーブル34に記憶されるキューイングハンドラ31aを実行して、キューイングバッファを読み出す。そして、ハイパーバイザ31は、読み出したネットバック「vif2.0」のキューイングバッファに、送信されたパケットを書き込む。そして、ハイパーバイザ31は、ネットバックにマッピングされるゲストOS(B)25のネットフロント「eth0」にパケットが到着したことを通知する。このようにして、ゲストOS(B)25は、ネットバック「vif2.0」に対応するキューイングバッファからパケット読み出すことで、管理OS(A)22を介することなく、ゲストOS(A)24から送信されたパケットを受信する。
[処理の流れ]
次に、実施例3に係る情報処理装置20が実行する処理の流れを説明する。ここでは、初期化処理とパケット中継処理について説明する。
(初期化処理)
図11は、実施例3に係る情報処理装置20が実行する初期化処理の流れを示すシーケンス図である。図11に示すように、S301からS308までの処理は、図7で説明したS101からS108までの処理と同様なので、ここでは詳細な説明を省略する。
S301からS308までを実行後、管理OSは、キューイングハンドラの登録指示をハイパーバイザ31に出力する(S309とS310)。つまり、管理OSは、生成されたゲストOSのネットフロントにネットバックをマッピングし、ネットバックに対応するバッファを呼び出すプログラムのアドレスをハイパーバイザ31に通知する。
その後、ハイパーバイザ31の情報格納部35は、管理OSから通知されたキューイングハンドラを呼び出すプログラムの格納先をハンドラ管理テーブル34に登録する(S311)。なお、ブリッジハンドラを登録する処理と、キューイングハンドラを登録する処理とは、図11に示した順番に実行されなくてよい。例えば、並行して実行してもよく、キューイングハンドラを登録する処理を、ブリッジハンドラを登録する処理より先に実行してもよい。
(中継処理)
図12は、実施例3に係る情報処理装置20が実行する中継処理の流れを示すシーケンス図である。図13に示すように、ゲストOS(A)24は、ゲストOS(B)25への通信要求が発生すると(S401)、ハイパーバイザ31に対して、通信要求が発生したことを通知する(S402)。つまり、ゲストOS(A)24の仮想インタフェースである「eth0」が、自身と接続される管理OS(A)22のネットバック「vif1.0」にパケットが到着したことをハイパーバイザ31に通知する。
すると、ハイパーバイザ31のゲスト特定部36は、ネットバック「vif1.0」に到着したパケットに基づいてS403を実行する。すなわち、ゲスト特定部36は、送信元であるゲストOS(A)24のMACアドレスと宛先であるゲストOS(B)25のMACアドレスをパケットから抽出する。そして、ゲスト特定部36は、各MACアドレスをキーにしてMAC管理テーブル32を参照して、送信元のゲストOS(A)24と接続されるネットバックのデバイスIDと、宛先のゲストOS(B)25と接続されるネットバックのデバイスIDとを特定する。
その後、ゲスト特定部36は、送信元のデバイスIDをキーにして、ゲストID管理テーブル33から、送信元のデバイスIDに対応するゲストIDとブリッジデバイスアドレスとバッファキューとを取得する(S404)。同様に、ゲスト特定部36は、宛先のデバイスIDをキーにして、ゲストID管理テーブル33から、宛先のデバイスIDに対応するゲストIDとブリッジデバイスアドレスとバッファキューとを取得する(S405)。
続いて、ゲスト特定部36は、S304で特定したバッファキューと、S305で特定したバッファキューとが一致するかを判定する(S406)。なお、ここでは、一致したとする。
その後、ハンドラ特定部37は、宛先のゲストOS(B)25と接続されるネットバックのデバイスIDをキーにして、ハンドラ管理テーブル34からキューイングハンドラ、構造体識別子、ゲストページテーブルを取得する(S407)。
そして、実行制御部38は、特定されたバッファキューを引数にして、特定したブリッジハンドラのアドレスから、キューイングハンドラを読み出して実行する(S408とS409)。こうして、実行制御部38は、キューイングハンドラを実行することで特定したバッファに、パケットを追加する。
その後、実行制御部38は、ネットバック「vif1.0」と「br0」でブリッジ接続されるネットバック「vif2.0」にマッピングされるネットフロント「eth0」を有するゲストOS(B)25に、パケットが到着したことを通知する(S410とS411)。
そして、ゲストOS(B)25は、パケットが到着したこと、すなわちパケットを受信したことを確認し(S412)、正常に受信したことをハイパーバイザ31に通知する(S413)。そして、ハイパーバイザ31の実行制御部38は、パケットが宛先に正常に受信されたことを示す応答を送信元のゲストOS(A)24に通知する(S414とS415)。
このようにすることで、ハイパーバイザ31は、ネットバック内でパケットをキューに追加するルーチンを、キューイングハンドラとしてハンドラ管理テーブル34に登録することができる。そして、ハイパーバイザ31は、宛先のゲストOSの受信対象のパケットがキューを形成するバッファへパケットを格納する処理を、管理OSに代って実行することができる。この結果、ハイパーバイザ31は、仮想的なブリッジデバイス全体を管理OSに代って実行する場合に比べて、代行して読み出すアドレス領域等を少なくすることができるので、ゲストOS間の通信をより高速化することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
(管理OSとの併用)
例えば、開示する情報処理装置は、管理OSに代ってブリッジハンドラを実行する場合と、管理OSにブリッジハンドラの実行を依頼する場合とを併用することができる。例えば、開示する情報処理装置のハイパーバイザ31は、図8のS206において、ブリッジデバイスアドレスが一致しない場合には、従来技術と同様、管理OSにパケット中継を依頼するようにしてもよい。つまり、開示する情報処理装置のハイパーバイザ31は、送信元のゲストOSと接続されるネットバックと、宛先のゲストOSと接続されるネットバックとがブリッジ接続されていない場合に、管理OSにパケット中継を依頼する。
すなわち、ハイパーバイザ31は、送信元と宛先とが同一ブリッジに接続されていない場合に、管理OSにパケット中継を依頼する。このように、管理OSや仮想的なブリッジデバイスを跨るために、ハイパーバイザ31が管理する情報が増える場合には、従来技術を用いることができる。この結果、ハイパーバイザ31が使用するメモリ容量等を抑制でき、ゲストOS間の通信も高速化できる。また、管理OSを跨ってブリッジデバイスの設定情報などハイパーバイザ31に組み込むことなく、ゲストOS間の通信の高速化が期待でき、ハイパーバイザ31を開発するコストを抑制することもできる。なお、上記処理は、図12のS406においても適用することができる。その場合、上記ブリッジデバイスアドレスに変えて、バッファキューの一致を判定することもできる。
(プロセッサ間通信)
また、開示する情報処理装置は、異なるプロセッサへの通信の場合には、割込みハンドラから、登録されたハンドラを呼び出すこともできる。例えば、情報処理装置20は、割込みの宛先となるゲストOSを識別するゲストID、ゲストOSのMACアドレス、ゲストOSを実行するプロセッサを識別する識別子を対応付けて記憶する割込みターゲットレジスタを保持する。また、情報処理装置20は、ハンドラ管理テーブル34に、ゲストID等に対応付けて割込みハンドラの先頭アドレスを記憶する。
このような構成において、情報処理装置20のハイパーバイザ31は、ゲストOS間の通信などの割込みが発生した場合に、割込み要求元のゲストOSと割込み要求先のゲストOSが同じプロセッサで動作しているかを、割込みターゲットレジスタを参照して判定する。そして、ハイパーバイザ31は、同一プロセッサであると判定した場合に、従来技術と同様に、割込み処理を発生させる。一方、ハイパーバイザ31は、異なるプロセッサであると判定した場合に、ハンドラ管理テーブル34から該当する割込みハンドラを読み出して、割込みコントローラ等に代って割込みハンドラを実行する。このようにすることで、異なるプロセッサへの通信が発生した場合に、プロセッサ間の通信を削減することができるので、プロセッサを跨った割込み処理を高速に実行することができる。
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(ハードウェア)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
図13は、仮想マシン制御プログラムを実行するコンピュータのハードウェア構成の例を示す図である。図13に示すように、コンピュータ100は、CPU102、入力装置103、出力装置104、通信インタフェース105、媒体読取装置106、HDD(Hard Disk Drive)107、RAM(Random Access Memory)108を有する。また、図13に示した各部は、バス101で相互に接続される。
入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NICなどのインタフェースである。HDD107は、仮想マシン制御プログラム107aととともに、図4から図6に示した各テーブルの情報を記憶する。記録媒体の例としてHDD107を例に挙げたが、ROM(Read Only Memory)、RAM(Random Access Memory)、CD−ROM等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記憶媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
CPU102は、仮想マシン制御プログラム107aを読み出してRAM108に展開することで、図3等で説明した各機能を実行する仮想マシン制御プロセス108aを動作させる。すなわち、仮想マシン制御プロセス108aは、図3に記載した格納制御部35、ゲスト特定部36、ハンドラ特定部37、実行制御部38と同様の機能を実行する。このようにコンピュータ100は、プログラムを読み出して実行することで仮想マシン制御方法を実行する情報処理装置として動作する。
また、コンピュータ100は、媒体読取装置106によって記録媒体から仮想マシン制御プログラム107aを読み出し、読み出された仮想マシン制御プログラム107aを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
10 情報処理装置
11 管理OS
12 ゲストOS(A)
13 ゲストOS(B)
14 仮想制御部
14a 記憶部
14b 特定部
14c 中継部
20 情報処理装置
21 仮想領域
22 管理OS(A)
23 管理OS(B)
24 ゲストOS(A)
25 ゲストOS(B)
26 ゲストOS(C)
27 ゲストOS(D)
30 制御部
30a 処理制御部
31 ハイパーバイザ
32 MAC管理テーブル
33 ゲストID管理テーブル
34 ハンドラ管理テーブル
35 情報格納部
36 ゲスト特定部
37 ハンドラ特定部
38 実行制御部

Claims (7)

  1. 情報処理装置に、
    前記情報処理装置上に複数の仮想マシンを稼動させ、
    前記複数の仮想マシンのうち少なくとも1つの第1仮想マシンは仮想マシンの通信を実現させる機能を有し、
    前記仮想マシンを識別する情報と該仮想マシンの仮想ネットワークインターフェースを識別する情報とを関連付けた第1管理テーブルと、前記第1仮想マシンを識別する情報、前記第1仮想マシンが中継する2台の仮想マシンそれぞれの仮想ネットワークインターフェースを識別する情報、および、前記第1仮想マシンが使用する仮想ブリッジに関する情報とを含む第2管理テーブルを保持し、
    前記仮想マシンからの通信要求を取得したときに、前記通信要求に対応するパケットから送信元および送信先の仮想マシンを識別する情報を抽出し、前記第1管理テーブルおよび前記第2管理テーブルに基づいて、抽出した前記送信元および送信先の仮想マシンが同じ仮想ブリッジを使用するかを判断し、
    同じ仮想ブリッジを使用すると判断した場合に、前記仮想ブリッジに関する情報に基づいて前記仮想ブリッジの処理を実行して前記通信要求に対応するパケットを送信先の仮想マシンに中継し、
    同じ仮想ブリッジを使用しないと判断した場合に、前記送信元の仮想マシンの仮想ネットワークインターフェースを中継する第1仮想マシンにパケットの到着を通知する
    処理を実行させることを特徴とする仮想マシン制御プログラム。
  2. 前記中継する処理は、同じ仮想ブリッジを使用すると判断した場合に、前記仮想ブリッジの処理を実行するプログラムを実行し、実行した仮想ブリッジを介して、前記パケットを送信先の仮想マシンに中継することを特徴とする請求項1に記載の仮想マシン制御プログラム。
  3. 前記通知する処理は、同じ仮想ブリッジを使用しないと判断した場合に、前記送信先の仮想マシンの受信対象となるパケットが格納されるバッファを呼び出すプログラムを実行し、呼び出したバッファに、前記パケットを書き込むことで、前記パケットの到着を通知することを特徴とする請求項1に記載の仮想マシン制御プログラム。
  4. 前記第2管理テーブルは、前記仮想ブリッジを実行するプログラムの格納先をさらに保持し、
    前記判断する処理は、前記パケットから、前記送信元の仮想マシンに対応する仮想ネットワークインターフェースの識別子と、前記送信先の仮想マシンに対応する仮想ネットワークインターフェースの識別子とを抽出し、前記第2管理テーブルを参照して、各仮想マシンが使用する仮想ネットワークインターフェースの識別子に対応付けられる、前記仮想ブリッジを実行するプログラムの格納先が一致するか否かによって、前記送信元および送信先の仮想マシンが同じ仮想ブリッジを使用するかを判断することを特徴とする請求項1に記載の仮想マシン制御プログラム。
  5. 前記複数の仮想マシンのいずれかの仮想マシンから割込み要求が発生した場合に、前記割込み要求発生元の仮想マシンが動作するプロセッサと前記割込み要求の実行先の仮想マシンが動作するプロセッサとが同じであるか否かを判定し、
    同じでないと判定した場合に、割込みハンドラの格納先を記憶する割込み記憶部から、前記割込みハンドラの格納先を読み出し、
    読み出した格納先に記憶される前記割込みハンドラを実行する処理を前記情報処理装置にさらに実行させることを特徴とする請求項1に記載の仮想マシン制御プログラム。
  6. 情報処理装置が、
    前記情報処理装置上に複数の仮想マシンを稼動させ、
    前記複数の仮想マシンのうち少なくとも1つの第1仮想マシンは仮想マシンの通信を実現させる機能を有し、
    前記仮想マシンを識別する情報と該仮想マシンの仮想ネットワークインターフェースを識別する情報とを関連付けた第1管理テーブルと、前記第1仮想マシンを識別する情報、前記第1仮想マシンが中継する2台の仮想マシンそれぞれの仮想ネットワークインターフェースを識別する情報、および、前記第1仮想マシンが使用する仮想ブリッジに関する情報とを含む第2管理テーブルを保持し、
    前記仮想マシンからの通信要求を取得したときに、前記通信要求に対応するパケットから送信元および送信先の仮想マシンを識別する情報を抽出し、前記第1管理テーブルおよび前記第2管理テーブルに基づいて、抽出した前記送信元および送信先の仮想マシンが同じ仮想ブリッジを使用するかを判断し、
    同じ仮想ブリッジを使用すると判断した場合に、前記仮想ブリッジに関する情報に基づいて前記仮想ブリッジの処理を実行して前記通信要求に対応するパケットを送信先の仮想マシンに中継し、
    同じ仮想ブリッジを使用しないと判断した場合に、前記送信元の仮想マシンの仮想ネットワークインターフェースを中継する第1仮想マシンにパケットの到着を通知する
    処理を含んだことを特徴とする仮想マシン制御方法。
  7. 仮想マシンの通信を実現させる機能を有する第1仮想マシンを含む複数の仮想マシンを稼動させる仮想制御部を有し、
    前記仮想制御部は、
    前記仮想マシンを識別する情報と該仮想マシンの仮想ネットワークインターフェースを識別する情報とを関連付けた第1記憶部と、
    前記第1仮想マシンを識別する情報、前記第1仮想マシンが中継する2台の仮想マシンそれぞれの仮想ネットワークインターフェースを識別する情報、および、前記第1仮想マシンが使用する仮想ブリッジに関する情報を含む第2記憶部と、
    前記仮想マシンからの通信要求を取得したときに、前記通信要求に対応するパケットから送信元および送信先の仮想マシンを識別する情報を抽出し、前記第1記憶部および前記第2記憶部に基づいて、抽出した前記送信元および送信先の仮想マシンが同じ仮想ブリッジを使用するかを判断する判断部と、
    前記判断部が同じ仮想ブリッジを使用すると判断した場合に、前記仮想ブリッジに関する情報に基づいて前記仮想ブリッジの処理を実行して前記通信要求に対応するパケットを送信先の仮想マシンに中継する中継部と、
    前記判断部が同じ仮想ブリッジを使用しないと判断した場合に、前記送信元の仮想マシンの仮想ネットワークインターフェースを中継する第1仮想マシンにパケットの到着を通知する通知部と
    を有することを特徴とする情報処理装置。
JP2013556171A 2012-02-03 2012-02-03 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置 Expired - Fee Related JP5907179B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013556171A JP5907179B2 (ja) 2012-02-03 2012-02-03 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/JP2012/052529 WO2013114620A1 (ja) 2012-02-03 2012-02-03 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置
JP2013556171A JP5907179B2 (ja) 2012-02-03 2012-02-03 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2013114620A1 JPWO2013114620A1 (ja) 2015-05-11
JP5907179B2 true JP5907179B2 (ja) 2016-04-26

Family

ID=48904696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013556171A Expired - Fee Related JP5907179B2 (ja) 2012-02-03 2012-02-03 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置

Country Status (4)

Country Link
US (1) US9268593B2 (ja)
EP (1) EP2811403A4 (ja)
JP (1) JP5907179B2 (ja)
WO (1) WO2013114620A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437770B2 (en) * 2015-01-28 2019-10-08 Avago Technologies International Sales Pte. Limited Method and apparatus for providing virtual machine information to a network interface
US10503442B2 (en) 2015-01-28 2019-12-10 Avago Technologies International Sales Pte. Limited Method and apparatus for registering and storing virtual machine unique information capabilities
JP6682897B2 (ja) * 2016-02-16 2020-04-15 富士通株式会社 通信設定方法、通信設定プログラム、情報処理装置および情報処理システム
CN110023908B (zh) 2017-03-31 2020-12-08 三菱电机株式会社 信息处理装置及信息处理方法
US10445009B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Systems and methods of controlling memory footprint
US11194606B2 (en) * 2018-11-28 2021-12-07 Red Hat, Inc. Managing related devices for virtual machines utilizing shared device data
JP7401484B2 (ja) 2021-05-28 2023-12-19 Necプラットフォームズ株式会社 情報処理装置、情報処理装置の制御方法、及び、情報処理装置の制御プログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2944531B2 (ja) 1996-09-12 1999-09-06 日本電気通信システム株式会社 Lan間接続装置
US7200666B1 (en) * 2000-07-07 2007-04-03 International Business Machines Corporation Live connection enhancement for data source interface
US7937701B2 (en) * 2005-06-30 2011-05-03 Intel Corporation ACPI communication between virtual machine monitor and policy virtual machine via mailbox
JP4799118B2 (ja) 2005-10-14 2011-10-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理システム、通信中継装置および通信制御方法
JP5037016B2 (ja) 2006-01-17 2012-09-26 株式会社リコー ネットワークコンピューティングシステム、通信方法、画像投影装置、画像入出力装置
JP4358224B2 (ja) * 2006-12-27 2009-11-04 株式会社東芝 ゲストosスケジューリング方法及び仮想計算機モニタ
US7984449B2 (en) * 2007-08-15 2011-07-19 International Business Machines Corporation In-band communication with virtual machines via a hypervisor message bus
JP2010066931A (ja) 2008-09-09 2010-03-25 Fujitsu Ltd 負荷分散機能を有した情報処理装置
JP5435399B2 (ja) 2009-10-07 2014-03-05 日本電気株式会社 省電力化システム、省電力化方法、及び省電力化用プログラム
EP2509000A4 (en) * 2009-12-04 2017-09-20 Nec Corporation Server and flow control program
US8739177B2 (en) 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines
JP5553221B2 (ja) * 2010-06-29 2014-07-16 学校法人近畿大学 ネットワーク構築演習装置及びその制御方法並びにプログラム及び記録媒体
JP5737050B2 (ja) 2011-08-15 2015-06-17 富士通株式会社 情報処理装置、割込み制御方法および割込み制御プログラム
US9092274B2 (en) * 2011-12-07 2015-07-28 International Business Machines Corporation Acceleration for virtual bridged hosts

Also Published As

Publication number Publication date
US9268593B2 (en) 2016-02-23
EP2811403A1 (en) 2014-12-10
EP2811403A4 (en) 2015-10-07
US20140344811A1 (en) 2014-11-20
JPWO2013114620A1 (ja) 2015-05-11
WO2013114620A1 (ja) 2013-08-08

Similar Documents

Publication Publication Date Title
JP5907179B2 (ja) 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置
JP5737050B2 (ja) 情報処理装置、割込み制御方法および割込み制御プログラム
JP6328134B2 (ja) クラスタ化されたコンピュータ・システムで通信チャネルのフェイルオーバを実行する方法、装置、およびプログラム
JP5989862B2 (ja) セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置、方法及び機械可読記憶媒体
JP6185045B2 (ja) インフィニバンドネットワークにおけるバーチャルマシーンのライブマイグレーションをサポートするためのシステムおよび方法
US9397954B2 (en) System and method for supporting live migration of virtual machines in an infiniband network
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
WO2018041075A9 (zh) 一种应用于计算机的资源访问方法和计算机
US20190146827A1 (en) Virtualized network function resource management method and device
KR20090095634A (ko) 가상화된 환경에서의 최적화된 인터럽트 전달
US11086703B2 (en) Distributed input/output virtualization
Kim et al. Secure device access for automotive software
EP2785018A2 (en) Information processing device, transmission control method, and transmission control program
US9612877B1 (en) High performance computing in a virtualized environment
EP1964019A2 (en) Method, apparatus and system for performing access control and intrusion detection on encrypted data
JP2015170887A (ja) パケット処理方法及びシステム
US11036645B2 (en) Secure userspace networking for guests
CN114172695A (zh) 串行防火墙报文转发方法、装置、设备及存储介质
US11301282B2 (en) Information protection method and apparatus
CN114978589B (zh) 一种轻量级云操作系统及其构建方法
JP5617761B2 (ja) 計算機システム、計算機、及び計算機システムの割込み処理方法
EP3255544B1 (en) Interrupt controller
KR20200125633A (ko) 외부 예외 핸들링
Banga Virtual Interrupt Handling to Reduce CPU Overhead in I/O Virtualization
JP2012118996A (ja) 仮想計算機の制御プログラム、計算機システム、および仮想計算機の制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160129

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: 20160223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160307

R150 Certificate of patent or registration of utility model

Ref document number: 5907179

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees