(57)【要約】【課題】仮想マシン間の通信性能を改善することを課題とする。【解決手段】物理サーバは、稼動する仮想マシンのアドレス情報を記憶する記憶部を有する。物理サーバは、仮想マシンからパケットが送信された場合に、パケットの宛先が記憶部に記憶されているか否かを判定する。物理サーバは、宛先が記憶部に記憶されていると判定された場合に、仮想スイッチと接続される仮想デバイスを利用して、パケットを宛先に送信する。物理サーバは、宛先が記憶部に記憶されていないと判定された場合に、パススルーデバイスを利用して、パケットを宛先に送信する。【選択図】図２
2014195178.tif 000002
【特許請求の範囲】
【請求項１】
稼動する仮想マシンのアドレス情報を記憶する記憶部と、
前記仮想マシンからパケットが送信された場合に、前記パケットの宛先が前記記憶部に記憶されているか否かを判定する判定部と、
前記判定部によって前記宛先が前記記憶部に記憶されていると判定された場合に、仮想スイッチと接続される仮想デバイスを利用して、前記パケットを前記宛先に送信し、前記判定部によって前記宛先が前記記憶部に記憶されていないと判定された場合に、パススルーデバイスを利用して、前記パケットを前記宛先に送信する送信制御部と
を有することを特徴とする情報処理装置。
【請求項２】
前記仮想マシンを稼動させる仮想制御部をさらに有し、
前記仮想制御部が、前記記憶部を有し、
前記仮想マシンが、前記記憶部に記憶される仮想マシンのアドレス情報のコピーを保持する保持部と、前記判定部と、前記送信制御部と、
を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記仮想制御部は、前記仮想マシンの状態が変化した場合に、変化した仮想マシンの状態に応じて前記記憶部に記憶される前記アドレス情報を更新し、更新したアドレス情報を前記仮想マシンに配布することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記仮想マシンを稼動させる仮想制御部をさらに有し、
前記仮想制御部が、他の処理部が参照できる共有メモリに前記アドレス情報を記憶し、
前記仮想マシンが、前記仮想マシンからパケットが送信された場合に、前記パケットの宛先が前記共有メモリに記憶されているか否かを判定する判定部と、前記送信制御部とを有することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記仮想デバイスと前記パススルーデバイスとを接続する仮想スイッチをさらに有し、
前記仮想スイッチは、前記パケットの送受信によって前記仮想デバイスおよび前記パススルーデバイスの接続先を学習し、学習した結果を前記記憶部に格納することを特徴とする請求項１から４のいずれか一つに記載の情報処理装置。
【請求項６】
コンピュータが、
稼動する仮想マシンからパケットが送信された場合に、前記稼動する仮想マシンのアドレス情報を記憶する記憶部を参照し、前記パケットの宛先が前記記憶部に記憶されているか否かを判定し、
前記宛先が前記記憶部に記憶されていると判定した場合に、仮想スイッチと接続される仮想デバイスを利用して、前記パケットを前記宛先に送信し、前記宛先が前記記憶部に記憶されていないと判定した場合に、パススルーデバイスを利用して、前記パケットを前記宛先に送信する
処理を含むことを特徴とする送信制御方法。
【請求項７】
コンピュータに、
稼動する仮想マシンからパケットが送信された場合に、前記稼動する仮想マシンのアドレス情報を記憶する記憶部を参照し、前記パケットの宛先が前記記憶部に記憶されているか否かを判定し、
前記宛先が前記記憶部に記憶されていると判定した場合に、仮想スイッチと接続される仮想デバイスを利用して、前記パケットを前記宛先に送信し、前記宛先が前記記憶部に記憶されていないと判定した場合に、パススルーデバイスを利用して、前記パケットを前記宛先に送信する
処理を実行させることを特徴とする送信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、送信制御方法および送信制御プログラムに関する。
【背景技術】
【０００２】
情報処理装置などの物理サーバ上でＶＭ（Virtual  Machine：仮想マシン）といわれる仮想的なサーバを稼動させるサーバ仮想化技術が利用されている。物理サーバでは、ＶＭの生成などＶＭに関する各種制御を実行するＶＭＭ（Virtual  Machine  Monitor）などと呼ばれるソフトウェアを稼動させている。一般的に、ＶＭ上で稼動しているＯＳ（Operating  System）をゲストＯＳと呼ぶ。また、ＶＭＭの一例としては、ハイパーバイザが知られている。
【０００３】
物理サーバ上で動作するＶＭ間の通信を制御する手法として、仮想スイッチを用いた手法やＰＣＩ（Peripheral  Component  Interconnect）パススルーを用いた手法が知られている。仮想スイッチは、ソフトウェアで動作する仮想的なネットワークスイッチであり、各ゲストＯＳの仮想デバイス間をブリッジ接続して通信を中継する。ＰＣＩパススルーは、各ゲストＯＳが、デバイスドライバを有し、ハイパーバイザを介することなく直接物理デバイスを用いて通信を実行する手法である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２３７７３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記技術では、同一物理サーバ内のＶＭ間通信と、異なる物理サーバのＶＭ間通信との間で、通信性能に差が生じ、通信性能を効果的に発揮できないという問題がある。
【０００６】
例えば、仮想スイッチを用いた手法では、異なる物理サーバ間のＶＭ間通信での性能が劣化し、ＰＣＩパススルーを用いた手法では、同一物理サーバ内のＶＭ間通信で仮想スイッチによる柔軟な制御を実行できない。
【０００７】
１つの側面では、仮想マシン間の通信性能の改善と仮想スイッチによる柔軟な制御を両立することができる情報処理装置、送信制御方法および送信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、情報処理装置は、稼動する仮想マシンのアドレス情報を記憶する記憶部を有する。情報処理装置は、前記仮想マシンからパケットが送信された場合に、前記パケットの宛先が前記記憶部に記憶されているか否かを判定する判定部を有する。情報処理装置は、前記判定部によって前記宛先が前記記憶部に記憶されていると判定された場合に、仮想スイッチと接続される仮想デバイスを利用して、前記パケットを前記宛先に送信する送信制御部を有する。情報処理装置は、前記判定部によって前記宛先が前記記憶部に記憶されていないと判定された場合に、パススルーデバイスを利用して、前記パケットを前記宛先に送信する送信制御部を有する。
【発明の効果】
【０００９】
本発明の１実施態様によれば、仮想マシン間の通信性能の改善と仮想スイッチによる柔軟な制御を両立することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係るシステムの全体構成例を示す図である。
【図２】図２は、実施例１に係る物理サーバの階層構造例を示す図である。
【図３】図３は、アドレステーブルに記憶される情報の例を示す図である。
【図４】図４は、アドレス空間を説明する図である。
【図５】図５は、実施例１に係るパケット送信処理の流れを示すフローチャートである。
【図６】図６は、アドレステーブルを複写する例を説明する図である。
【図７】図７は、アドレステーブルを共有する例を説明する図である。
【図８】図８は、物理サーバのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する情報処理装置、送信制御方法および送信制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１２】
［全体構成］
図１は、実施例１に係るシステムの全体構成例を示す図である。図１に示すように、このシステムは、物理サーバ１０と物理サーバ２０とが物理スイッチ１０を介して接続される。物理スイッチ１０は、例えばルータ、スイッチングハブ、Ｌ２（レイヤ２）スイッチなどのネットワーク機器の一例であり、物理サーバ間のパケットを宛先に中継する。
【００１３】
物理サーバ１０および物理サーバ２０は、仮想マシン（ＶＭ：Virtual  Machine）を稼動させ、仮想マシンを利用してＷｅｂサーバやアプリケーションサーバと同様の処理を実行するサーバ装置の一例である。
【００１４】
図１に示すように、物理サーバ１０は、仮想マシンとして、管理ＯＳ（Operating  System）とゲストＯＳ（Ａ）とゲストＯＳ（Ｂ）とを実行する。同様に、物理サーバ２０は、仮想マシンとして管理ＯＳとゲストＯＳ（Ｃ）とゲストＯＳ（Ｄ）とを実行する。なお、ここで示したゲストＯＳの数は一例であり、任意の数のゲストＯＳを実行することができる。
【００１５】
このような状態において、物理サーバ１０および物理サーバ２０は、稼動する仮想マシンのアドレス情報を記憶する記憶部を有する。そして、物理サーバ１０および物理サーバ２０は、仮想マシンからパケットが送信された場合に、パケットの宛先が記憶部に記憶されているか否かを判定する。その後、物理サーバ１０および物理サーバ２０は、宛先が前記記憶部に記憶されていると判定された場合に、仮想スイッチと接続される仮想デバイスを利用して、パケットを前記宛先に送信する。一方、物理サーバ１０および物理サーバ２０は、宛先が記憶部に記憶されていないと判定された場合に、パススルーデバイスを利用して、パケットを前記宛先に送信する。
【００１６】
このように、物理サーバ１０および物理サーバ２０は、サーバ内で動作する仮想マシンのアドレスを記憶し、送信パケットの宛先が記憶されている場合に仮想スイッチで送信し、宛先が記憶されていない場合にＰＣＩパススルーで送信する。この結果、物理サーバ１０および物理サーバ２０は、仮想マシン間の通信性能の改善と仮想スイッチによる柔軟な制御を両立することができる。
【００１７】
［階層構造］
次に、物理サーバ１０および物理サーバ２０の階層構造について説明する。なお、物理サーバ１０と物理サーバ２０とは同様の構造を有するので、ここでは、物理サーバ１０について説明する。
【００１８】
図２は、実施例１に係る物理サーバの階層構造例を示す図である。図２に示すように、物理サーバ１０は、ハードウェア１１、仮想制御部１３、各ＶＭの階層構造を形成する。なお、各ＶＭは、仮想制御部１３によって生成、管理される仮想マシン・プログラムである。
【００１９】
ハードウェア１１は、物理サーバを構成するハードウェアである。ハードウェア１１は、物理デバイス１１ａを有する。物理デバイス１１ａは、物理サーバ２０との通信を制御するインタフェースであり、例えば、ネットワークインタフェースカードなどである。
【００２０】
仮想制御部１３は、ＶＭを稼動させる処理部である。なお、仮想制御部１３の一例としては、ハイパーバイザのプログラムなどがある。この仮想制御部１３は、アドレステーブル１３ａと判定部１３ｂとを有し、ＶＭの作成、削除、マイグレーションなどを実行する。
【００２１】
アドレステーブル１３ａは、物理サーバ１０上で稼動するＶＭのアドレス情報を記憶するテーブルである。図３は、アドレステーブルに記憶される情報の例を示す図である。図３に示すように、アドレステーブル１３ａは、「ゲストＩＤ、ＩＰアドレス、ＭＡＣ（Media  Access  Control）アドレス」を対応付けて記憶する。
【００２２】
「ゲストＩＤ」は、ＶＭを識別する識別子である。「ＩＰアドレス」は、ＶＭのＩＰアドレスである。「ＭＡＣアドレス」は、ＶＭのＭＡＣアドレスである。図３の場合、ゲストＩＤが「１」のＶＭには、ＩＰアドレスとして「ＸＸ.ＸＸ.ＸＸ.ＸＸ」が設定されており、ＭＡＣアドレスとして「ＹＹ．ＹＹ．ＹＹ．ＹＹ」が設定されていることを示す。
【００２３】
なお、ここで記憶される情報は、仮想制御部１３によって更新される。例えば、仮想制御部１３は、ＶＭの作成、削除、マイグレーションを検出すると、検出した情報にしたがって更新する。また、図３では、ＩＰアドレスとＭＡＣアドレスを両方図示したが、これに限定されるものではなく、どちらか一方でもよい。
【００２４】
また、メモリなどの記憶装置がアドレステーブル１３ａと同様の情報を記憶しておき、仮想制御部１３は、記憶装置からアドレス情報を抽出してアドレステーブル１３ａを生成して保持するようにしてもよい。また、仮想制御部１３は、メモリなどの記憶装置が保持するアドレステーブル１３ａを参照するようにしてもよい。
【００２５】
判定部１３ｂは、物理サーバ１０上で稼動するＶＭからパケットが送信された場合に、パケットの宛先がアドレステーブル１３ａに記憶されているか否かを判定する処理部である。具体的には、判定部１３ｂは、図２に示した送信制御部１６ｃまたは送信制御部１８ｃから送信パケットの宛先を受信して、判定処理を実行する。そして、判定部１３ｂは、送信元の送信制御部１６ｃまたは送信制御部１８ｃに、判定結果を送信する。
【００２６】
例えば、判定部１３ｂは、送信制御部１６ｃから宛先アドレスとして「ＹＹ．ＹＹ．ＹＹ．ＹＹ」を受信する。そして、判定部１３ｂは、アドレステーブル１３ａを参照し、「ＹＹ．ＹＹ．ＹＹ．ＹＹ」が記憶されているか否かを判定する。この例の場合、判定部１３ｂは、宛先が記憶されていると判定したことを、パケット送信元の送信制御部に応答する。
【００２７】
また、仮想制御部１３は、仮想プロセッサと仮想メモリとを割り当ててＶＭを稼動させる処理部である。なお、仮想メモリは、物理サーバ１０のメモリにおける所定領域をゲストＯＳや管理ＯＳが使用するメモリとして割り当てることで実現された仮想的なメモリである。仮想プロセッサは、物理サーバ１０のプロセッサにおける所定処理能力をゲストＯＳや管理ＯＳが使用するプロセッサとして割り当てることで実現された仮想的なプロセッサである。
【００２８】
例えば、仮想制御部１３は、管理ＯＳ１４とゲストＯＳ（Ａ）１５とゲストＯＳ（Ｂ）１６とを稼動させる。なお、ここで例示したＶＭの数等は、あくまで例示であり、これに限定されるものではない。
【００２９】
管理ＯＳ１４は、仮想制御部１３によって各種制御が実行されるゲストＯＳの１つであり、他のゲストＯＳとは異なる権限を有するＶＭである。例えば、管理ＯＳ１４は、ゲストＯＳ（Ａ）１５とゲストＯＳ（Ｂ）１６との通信を中継する仮想ブリッジデバイスを提供する。具体的には、管理ＯＳ１１は、仮想デバイス１４ａと仮想デバイス１４ｂと仮想スイッチ１４ｃとを有する。
【００３０】
仮想デバイス１４ａおよび仮想デバイス１４ｂは、ネットバックなどと呼ばれる仮想ネットワークインタフェースである。このうち、仮想デバイス１４ａは、ゲストＯＳ（Ａ）１５の仮想デバイス１６ａと接続され、ゲストＯＳ（Ａ）１５からパケットを受信し、ゲストＯＳ（Ａ）１５へパケットを送信する。仮想デバイス１４ｂは、ゲストＯＳ（Ｂ）１７の仮想デバイス１８ａと接続され、ゲストＯＳ（Ｂ）１７からパケットを受信し、ゲストＯＳ（Ｂ）１７へパケットを送信する。
【００３１】
仮想スイッチ１４ｃは、仮想デバイス間を接続する仮想ブリッジインタフェースである。この仮想スイッチ１４ｃは、仮想デバイス１４ａと仮想デバイス１４ｂとを接続する。例えば、仮想スイッチ１４ｃは、ゲストＯＳ（Ａ）１５から送信されたパケットを、仮想デバイス１６ａと仮想デバイス１４ｂとを介して受信する。そして、仮想スイッチ１４ｃは、仮想デバイス１４ａと仮想デバイス１８ａとを介して、パケットをゲストＯＳ（Ｂ）１７に送信する。
【００３２】
ゲストＯＳ（Ａ）１５は、仮想制御部１３によって各種制御が実行されるゲストＯＳの１つである。このゲストＯＳ（Ａ）１５は、アプリケーションを実行し、他のＶＭ等とパケットの送受信を実行する。また、ゲストＯＳ（Ａ）１５は、デバイスドライバ１６を有し、デバイスドライバ１６によってパケット送信を制御する。
【００３３】
デバイスドライバ１６は、仮想デバイス１６ａとパススルーデバイス１６ｂと送信制御部１６ｃとを有する。仮想デバイス１６ａは、ネットフロントなどと呼ばれる仮想ネットワークインタフェースである。この仮想デバイス１６ａは、管理ＯＳ１４の仮想デバイス１４ｂと接続される。仮想デバイス１６ａは、仮想デバイス１４ｂを経由して、他のＶＭとパケットの送受信を実行する。
【００３４】
パススルーデバイス１６ｂは、仮想制御部１３を介することなく、物理デバイス１１ａを直接操作することができる仮想ネットワークインタフェースである。このパススルーデバイス１６ｂは、Ｖｔ−ｄ技術を利用し、物理デバイス１１ａを介して他の物理サーバのＶＭとパケットの送受信を実行する。
【００３５】
具体的には、このパススルーデバイス１６ｂは、ＤＭＡ（Direct  Memory  Access）によってパケットやデータの転送を実行する。例えば、パススルーデバイス１６ｂは、ＤＭＡを利用してデータを物理デバイス１１ａのメモリ空間に書き込む。物理デバイス１１ａは、メモリ空間に書き込まれたデータを読み出して宛先に送信する。
【００３６】
ここで、物理サーバ１０のアドレス空間について説明する。図４は、アドレス空間を説明する図である。図４に示すように、物理サーバ１０では、ホスト物理アドレス（ＨＰＡ）とゲスト物理アドレス（ＧＰＡ）とゲスト仮想アドレス（ＧＶＡ）で、アドレス空間を管理する。ホスト物理アドレスは、物理サーバ１０の物理アドレス空間である。ゲスト物理アドレスは、ゲストＯＳや管理ＯＳなどの各ＶＭが物理アドレスとして管理しているアドレス空間であり、仮想制御部１３が提供する仮想アドレス空間である。ゲスト仮想アドレスは、ゲストＯＳや管理ＯＳなどの各ＶＭが仮想アドレスとして管理しているアドレス空間である。
【００３７】
一般的に、ゲストＯＳや管理ＯＳなどの各ＶＭが、ゲスト仮想アドレスからゲスト物理アドレスへの変換を実行する。また、仮想制御部１３が、ゲスト物理アドレスからホスト物理アドレスへの変換を実行する。そして、パススルーデバイス１６ｂによる通信では、ＤＭＡ転送時に、ハードウェア１１の物理デバイス１１ａによってアドレス変換を行うことで、物理デバイス１１ａが、ゲストＯＳのメモリ空間にアクセスすることができる。すなわち、物理デバイス１１ａのメモリ空間と、ゲストＯＳ（Ａ）１５のメモリ空間とを対応付けることができる。
【００３８】
送信制御部１６ｃは、ゲストＯＳ（Ａ）１５からパケットの宛先がアドレステーブル１３ａに記憶されているか否かによって、出力先のデバイスを切り替える処理部である。具体的には、送信制御部１６ｃは、ゲストＯＳ（Ａ）１５から送信されたパケットを受信し、受信したパケットの宛先を抽出する。そして、送信制御部１６ｃは、抽出した宛先を仮想制御部１３の判定部１３ｂに送信して、判定処理を依頼する。そして、送信制御部１６ｃは、判定部１３ｂから受信した判定結果に基づいて、パケットの出力先のデバイスを切り替える。
【００３９】
例えば、送信制御部１６ｃは、ＶＭから受信したパケットのヘッダを参照し、宛先アドレスとして「ＹＹ．ＹＹ．ＹＹ．ＹＹ」を抽出する。そして、送信制御部１６ｃは、抽出した「ＹＹ．ＹＹ．ＹＹ．ＹＹ」を仮想制御部１３の判定部１３ｂに送信する。
【００４０】
そして、送信制御部１６ｃは、判定部１３ｂによって「ＹＹ．ＹＹ．ＹＹ．ＹＹ」がアドレステーブル１３ａに記憶されていると判定された場合に、仮想スイッチ１４ｃと接続される仮想デバイス１６ａに、送信パケットを出力する。一方、送信パケットを判定部１３ｂによって「ＹＹ．ＹＹ．ＹＹ．ＹＹ」がアドレステーブル１３ａに記憶されていないと判定された場合に、パススルーデバイス１６ｂに送信パケットを出力する。
【００４１】
すなわち、送信制御部１６ｃは、パケットの宛先が同一物理サーバ１０内のＶＭである場合には、仮想スイッチ１４ｃを利用して、パケットを送信する。一方、送信制御部１６ｃは、パケットの宛先が異なる物理サーバ２０内のＶＭである場合には、パススルーデバイス１６ｂを利用して、パケットを送信する。
【００４２】
ゲストＯＳ（Ｂ）１７は、仮想制御部１３によって各種制御が実行されるゲストＯＳの１つである。このゲストＯＳ（Ｂ）１７は、アプリケーションを実行し、他のＶＭ等とパケットの送受信を実行する。また、ゲストＯＳ（Ｂ）１７は、デバイスドライバ１８を有し、デバイスドライバ１８によってパケット送信を制御する。
【００４３】
なお、デバイスドライバ１８が有する仮想デバイス１８ａ、パススルーデバイス１８ｂ、送信制御部１８ｃの各々は、ゲストＯＳ（Ａ）１５の仮想デバイス１６ａ、パススルーデバイス１６ｂ、送信制御部１６ｃの各々と同様の処理を実行するので、説明は省略する。
【００４４】
［処理の流れ］
図５は、実施例１に係るパケット送信処理の流れを示すフローチャートである。ここでは、一例として、ゲストＯＳ（Ａ）１５がパケットを送信する例で説明する。
【００４５】
図５に示すように、送信制御部１６ｃは、ゲストＯＳ（Ａ）１５が実行するアプリケーション等が送信したパケットを受信する（Ｓ１０１：Ｙｅｓ）。送信制御部１６ｃは、パケットから宛先を抽出して、判定部１３ｂに出力する（Ｓ１０２）。
【００４６】
そして、判定部１３ｂは、抽出されたパケットの宛先をアドレステーブル１３ａから検索する（Ｓ１０３）。その後、送信制御部１６ｃは、判定部１３ｂによって宛先がアドレステーブル１３ａから検索できたことが通知されると（Ｓ１０４：Ｙｅｓ）、仮想デバイス１６ａを利用してパケットを宛先に送信する（Ｓ１０５）。
【００４７】
一方、送信制御部１６ｃは、判定部１３ｂによって宛先がアドレステーブル１３ａから検索できなかったことが通知されると（Ｓ１０４：Ｎｏ）、パススルーデバイス１６ｂを利用してパケットを宛先に送信する（Ｓ１０６）。
【００４８】
上述したように、実施例１に係る物理サーバ１０は、物理サーバ１０内の通信は仮想スイッチで送信し、物理サーバを跨る通信をＰＣＩパススルーで送信することができる。したがって、物理サーバ１０は、物理サーバ内通信の場合は仮想スイッチで柔軟に制御することができ、物理サーバ間通信の場合には高速に処理することができる。
【実施例２】
【００４９】
ところで、実施例１では、仮想制御部１３がアドレステーブル１３ａを保持する例を説明したが、これに限定されるものではなく、様々な形態を採用することができる。そこで、実施例２では、アドレステーブル１３ａの保持形態について説明する。
【００５０】
（複写）
図６は、アドレステーブルを複写する例を説明する図である。図６に示すように、仮想制御部１３は、アドレステーブル１３ａを複写して、各ゲストＯＳに配布する。各ゲストＯＳは、仮想メモリ空間で、アドレステーブル１３ａの複写を保持する。この場合、各ゲストのデバイスドライバが、送信パケットの宛先がアドレステーブルに保持されているか否かを判定する。
【００５１】
また、仮想制御部１３は、ＶＭの作成や削除があった場合には、アドレステーブル１３ａを更新する。このとき、仮想制御部１３は、更新したアドレステーブル１３ａを各ゲストＯＳに配布する。なお、仮想制御部１３は、更新したアドレステーブル１３ａ全体を配布してもよく、差分だけを配布してもよい。この結果、各ゲストＯＳは、最新のアドレステーブルを保持することができる。
【００５２】
このように、各ゲストＯＳがアドレステーブルを保持することで、各ゲストＯＳは、パケットを送信するたびに仮想制御部１３に問い合わせることなく、送信先のデバイスを判定することができる。したがって、効率がよく送信処理を実行することができ、仮想マシン間の通信性能もより向上する。
【００５３】
（共有メモリ）
図７は、アドレステーブルを共有する例を説明する図である。図７に示すように、仮想制御部１３は、各ゲストＯＳがリードオンリーでアクセスできる共有メモリ上で、アドレステーブル１３ａを保持する。こうすることで、仮想制御部１３が、アドレステーブル１３ａを更新するたびに、アドレステーブルをゲストＯＳに配布することを抑制できる。さらに、各ゲストＯＳは、パケットを送信するたびに仮想制御部１３に問い合わせることなく、送信先のデバイスを判定することができる。
【実施例３】
【００５４】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００５５】
（デバイスドライバ内の仮想スイッチ）
例えば、ゲストＯＳ（Ａ）１５を例にして説明すると、デバイスドライバ１６内の仮想デバイス１６ａとパススルーデバイス１６ｂとを仮想スイッチで接続することもできる。こうすることで、各ゲストＯＳは、アドレステーブルを仮想スイッチのＭＡＣ学習テーブルで代用することができる。また、各ゲストＯＳは、ＶＭの作成や削除時は仮想制御部１３から送信するＧＡＲＰ（Gratuitous  Address  Resolution  Protocol）によって、アドレステーブルを再学習することができる。
【００５６】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００５７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５８】
（ハードウェア）
図８は、物理サーバのハードウェア構成例を示す図である。図８に示すように、物理サーバ１０は、ＣＰＵ１０１、メモリ１０２、ＨＤＤ（Hard  Disk  Drive）１０３、媒体読取装置１０４、通信インタフェース１０５、入力装置１０６、表示装置１０７を有する。また、図８に示した各部は、バス等で相互に接続される。
【００５９】
ＨＤＤ１０３は、図２に示した機能を動作させるプログラムやテーブルを記憶する。記録媒体の例としてＨＤＤ１０３を例に挙げたが、ＲＯＭ（Read  Only  Memory）、ＲＡＭであってもよい。
【００６０】
媒体読取装置１０４は、ＣＤやＤＶＤなどの記憶媒体を読み取る装置である。例えば、媒体読取装置１０４は、ＣＤ−ＲＯＭ等の他のコンピュータが読み取り可能な記録媒体から各種プログラムを読み込んで実行することもできる。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【００６１】
通信インタフェース１０５は、ネットワークインタフェースカードなどである。入力装置１０６は、例えばキーボードなどであり、表示装置１０７は、例えばタッチパネルやディスプレイなど、各種情報を表示する表示装置である。
【００６２】
ＣＰＵ１０１は、図２に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０３等から読み出してメモリ１０２に展開することで、図２等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、物理サーバ１０が有する各処理と同様の機能を実行する。具体的には、ＣＰＵ１０１は、仮想制御部１３等と同様の機能を有するプログラムをＨＤＤ１０３等から読み出す。そして、ＣＰＵ１０１は、各処理部と同様の処理を実行するプロセスを実行する。
【００６３】
このように物理サーバ１０は、プログラムを読み出して実行することで送信制御方法を実行する情報処理装置として動作する。また、物理サーバ１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、物理サーバ１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００６４】
１０  物理サーバ
１１  ハードウェア
１１ａ  物理デバイス
１２  ＯＳ
１３  仮想制御部
１３ａ  アドレステーブル
１３ｂ  判定部
１４  管理ＯＳ
１４ａ、１４ｂ  仮想デバイス
１４ｃ  仮想スイッチ
１５  ゲストＯＳ（Ａ）
１６、１８  デバイスドライバ
１６ａ、１８ａ  仮想デバイス
１６ｂ、１８ｂ  パススルーデバイス
１６ｃ、１８ｃ  送信制御部
１７  ゲストＯＳ（Ｂ）
【図１】
2014195178.tif 000003
【図２】
2014195178.tif 000004
【図３】
2014195178.tif 000005
【図４】
2014195178.tif 000006
【図５】
2014195178.tif 000007
【図６】
2014195178.tif 000008
【図７】
2014195178.tif 000009
【図８】
2014195178.tif 000010
【手続補正書】
【提出日】平成26年3月3日(2014.3.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
同一物理装置で稼動する１以上の仮想マシンのアドレス情報を記憶する記憶部と、
仮想マシンがパケットを送信するときに、前記パケットの宛先が前記記憶部に記憶されているか否かを判定する判定部と、
前記判定部によって前記宛先が前記記憶部に記憶されていると判定された場合に、仮想マシン間を中継する仮想スイッチと接続される仮想デバイスを利用して、前記パケットを前記宛先に送信し、前記判定部によって前記宛先が前記記憶部に記憶されていないと判定された場合に、他の物理装置へ送信する物理デバイスと接続されるパススルーデバイスを利用して、前記パケットを前記宛先に送信する送信制御部と
を有することを特徴とする情報処理装置。
【請求項２】
前記仮想マシンを稼動させる仮想制御部をさらに有し、
前記仮想制御部が、前記記憶部を有し、
前記仮想マシンが、前記記憶部に記憶される仮想マシンのアドレス情報のコピーを保持する保持部と、前記判定部と、前記送信制御部と、
を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記仮想制御部は、前記仮想マシンの状態が変化した場合に、変化した仮想マシンの状態に応じて前記記憶部に記憶される前記アドレス情報を更新し、更新したアドレス情報を前記仮想マシンに配布することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記仮想マシンを稼動させる仮想制御部をさらに有し、
前記仮想制御部が、他の処理部が参照できる共有メモリに前記アドレス情報を記憶し、
前記仮想マシンが、前記パケットを送信するときに前記パケットの宛先が前記共有メモリに記憶されているか否かを判定する判定部と、前記送信制御部とを有することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記仮想デバイスと前記パススルーデバイスとを接続する仮想スイッチをさらに有し、
前記仮想スイッチは、前記パケットの送受信によって前記仮想デバイスおよび前記パススルーデバイスの接続先を学習し、学習した結果を前記記憶部に格納することを特徴とする請求項１から４のいずれか一つに記載の情報処理装置。
【請求項６】
コンピュータが、
仮想マシンがパケットを送信したときに、同一物理装置で稼動する１以上の仮想マシンのアドレス情報を記憶する記憶部を参照し、前記パケットの宛先が前記記憶部に記憶されているか否かを判定し、
前記宛先が前記記憶部に記憶されていると判定した場合に、仮想マシン間を中継する仮想スイッチと接続される仮想デバイスを利用して、前記パケットを前記宛先に送信し、前記宛先が前記記憶部に記憶されていないと判定した場合に、他の物理装置へ送信する物理デバイスと接続されるパススルーデバイスを利用して、前記パケットを前記宛先に送信する
処理を実行することを特徴とする送信制御方法。
【請求項７】
コンピュータに、
仮想マシンがパケットを送信したときに、同一物理装置で稼動する１以上の仮想マシンのアドレス情報を記憶する記憶部を参照し、前記パケットの宛先が前記記憶部に記憶されているか否かを判定し、
前記宛先が前記記憶部に記憶されていると判定した場合に、仮想マシン間を中継する仮想スイッチと接続される仮想デバイスを利用して、前記パケットを前記宛先に送信し、前記宛先が前記記憶部に記憶されていないと判定した場合に、他の物理装置へ送信する物理デバイスと接続されるパススルーデバイスを利用して、前記パケットを前記宛先に送信する
処理を実行させることを特徴とする送信制御プログラム。