(57)【特許請求の範囲】
【請求項１】
物理的に実在するネットワークデバイスである物理ネットワークデバイスを有する情報処理装置上で、仮想マシンの動作を制御する仮想制御プログラムであって、
前記物理ネットワークデバイスを制御する物理デバイスドライバと、前記仮想制御プログラムにより提供される仮想化されたネットワークデバイスである仮想ネットワークデバイスを制御する仮想デバイスドライバとを含むゲストＯＳを前記仮想マシン上で動作させ、
前記ゲストＯＳに対して、前記物理ネットワークデバイスと接続される第一の仮想ネットワークデバイスを提供するとともに、該第一の仮想ネットワークデバイスと異なる仮想化されたネットワークデバイスである第二の仮想ネットワークデバイスを提供し、
前記第一の仮想ネットワークデバイスと前記物理ネットワークデバイスとの間におけるデータ流通が、前記ゲストＯＳにおける、該第一の仮想ネットワークデバイスに対応する仮想デバイスドライバと前記物理デバイスドライバとを介して行われるように、前記ゲストＯＳに前記第一の仮想ネットワークデバイスと前記物理ネットワークデバイスとを接続させ、
前記仮想マシンが外部にパケットを送信する場合に、前記第二の仮想ネットワークデバイスにおいて外部に送信する送信対象パケットを前記仮想マシンから受け付けた後、該パケットに対する不正パケットの検知を行った上で、該パケットをカプセル化して前記第一の仮想ネットワークデバイスに出力することで、該第一の仮想ネットワークデバイスと接続されている前記物理ネットワークデバイスを介して外部に送信対象パケットを送信し、
前記物理ネットワークデバイスによって外部からパケットが受信された場合に、該物理ネットワークデバイスと接続されている前記第一の仮想ネットワークデバイスに転送される受信パケットが所定の外部装置によってカプセル化されたパケットであるか否かを判定し、受信パケットが前記外部装置によってカプセル化されたパケットである場合には、前記第一の仮想ネットワークデバイスから出力される受信パケットをデカプセル化して前記第二の仮想ネットワークデバイスを介して前記仮想マシンに送信し、受信パケットが前記外部装置によってカプセル化されたパケットでない場合には、該受信パケットを廃棄する
処理を前記情報処理装置に実行させることを特徴とする仮想制御プログラム。
【請求項２】
仮想マシンが動作する情報処理装置であって、
物理的に実在するネットワークデバイスである物理ネットワークデバイスと、
前記物理ネットワークデバイスを制御する物理デバイスドライバと、仮想制御プログラムにより提供される仮想化されたネットワークデバイスである仮想ネットワークデバイスを制御する仮想デバイスドライバとを含むゲストＯＳを前記仮想マシン上で動作させる仮想制御部と
を有し、
前記仮想制御部は、
前記ゲストＯＳに対して、前記物理ネットワークデバイスと接続される第一の仮想ネットワークデバイスを提供するとともに、該第一の仮想ネットワークデバイスと異なる仮想化されたネットワークデバイスである第二の仮想ネットワークデバイスを提供し、
前記第一の仮想ネットワークデバイスと前記物理ネットワークデバイスとの間におけるデータ流通が、前記ゲストＯＳにおける、該第一の仮想ネットワークデバイスに対応する仮想デバイスドライバと前記物理デバイスドライバとを介して行われるように、前記ゲストＯＳに前記第一の仮想ネットワークデバイスと前記物理ネットワークデバイスとを接続させ、
前記仮想マシンが外部にパケットを送信する場合に、前記第二の仮想ネットワークデバイスにおいて外部に送信する送信対象パケットを前記仮想マシンから受け付けた後、該パケットに対する不正パケットの検知を行った上で、該パケットをカプセル化して前記第一の仮想ネットワークデバイスに出力することで、該第一の仮想ネットワークデバイスと接続されている前記物理ネットワークデバイスを介して外部に送信対象パケットを送信し、
前記物理ネットワークデバイスによって外部からパケットが受信された場合に、該物理ネットワークデバイスと接続されている前記第一の仮想ネットワークデバイスに転送される受信パケットが所定の外部装置によってカプセル化されたパケットであるか否かを判定し、受信パケットが前記外部装置によってカプセル化されたパケットである場合には、前記第一の仮想ネットワークデバイスから出力される受信パケットをデカプセル化して前記第二の仮想ネットワークデバイスを介して前記仮想マシンに送信し、受信パケットが前記外部装置によってカプセル化されたパケットでない場合には、該受信パケットを廃棄する
ことを特徴とする情報処理装置。
【請求項３】
物理的に実在するネットワークデバイスである物理ネットワークデバイスを有する情報処理装置上で、仮想マシンの動作を制御する仮想制御方法であって、
前記情報処理装置が、
前記物理ネットワークデバイスを制御する物理デバイスドライバと、仮想制御プログラムにより提供される仮想化されたネットワークデバイスである仮想ネットワークデバイスを制御する仮想デバイスドライバとを含むゲストＯＳを前記仮想マシン上で動作させる動作工程と、
前記ゲストＯＳに対して、前記物理ネットワークデバイスと接続される第一の仮想ネットワークデバイスを提供するとともに、該第一の仮想ネットワークデバイスと異なる仮想化されたネットワークデバイスである第二の仮想ネットワークデバイスを提供する提供工程と、
前記第一の仮想ネットワークデバイスと前記物理ネットワークデバイスとの間におけるデータ流通が、前記ゲストＯＳにおける、該第一の仮想ネットワークデバイスに対応する仮想デバイスドライバと前記物理デバイスドライバとを介して行われるように、前記ゲストＯＳに前記第一の仮想ネットワークデバイスと前記物理ネットワークデバイスとを接続させる接続工程と、
前記仮想マシンが外部にパケットを送信する場合に、前記第二の仮想ネットワークデバイスにおいて外部に送信する送信対象パケットを前記仮想マシンから受け付けた後、該パケットに対する不正パケットの検知を行った上で、該パケットをカプセル化して前記第一の仮想ネットワークデバイスに出力することで、該第一の仮想ネットワークデバイスと接続されている前記物理ネットワークデバイスを介して外部に送信対象パケットを送信し、
前記物理ネットワークデバイスによって外部からパケットが受信された場合に、該物理ネットワークデバイスと接続されている前記第一の仮想ネットワークデバイスに転送される受信パケットが所定の外部装置によってカプセル化されたパケットであるか否かを判定し、受信パケットが前記外部装置によってカプセル化されたパケットである場合には、前記第一の仮想ネットワークデバイスから出力される受信パケットをデカプセル化して前記第二の仮想ネットワークデバイスを介して前記仮想マシンに送信し、受信パケットが前記外部装置によってカプセル化されたパケットでない場合には、該受信パケットを廃棄する工程と
を実行することを特徴とする仮想制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想制御プログラム、情報処理装置及び仮想制御方法に関する。
【背景技術】
【０００２】
従来、物理マシン（Physical  Machine）上に仮想マシン（Virtual  Machine：以下、「ＶＭ」と表記する場合がある）を動作させる仮想化技術が知られている。具体的には、仮想化技術では、仮想マシンモニタ（Virtual  Machine  Monitor：以下、「ＶＭＭ」と表記する場合がある）と呼ばれる仮想制御プログラムによって、物理マシン上に１以上のＶＭが生成及び制御され、かかるＶＭ上でゲストＯＳ（Operating  System）と呼ばれるＯＳが動作される。なお、ＶＭＭは、「ハイパーバイザ」や「仮想化ＯＳ」等と呼ばれる場合もある。
【０００３】
このような仮想化技術において、ＶＭ上で動作するゲストＯＳは、物理マシンに備えられているデバイスを制御するデバイスドライバを有する場合がある。例えば、物理マシンにＮＩＣ（Network  Interface  Card）等のネットワークデバイスが備えられている場合には、ゲストＯＳは、かかるネットワークデバイスを制御するデバイスドライバを有する。これにより、ゲストＯＳは、物理マシンに備えられているネットワークデバイスを認識することができ、かかるネットワークデバイスを利用することが可能になる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Takahiro  Shinagawa  et  al.,  "BitVisor:  A  Thin  Hypervisor  for  Enforcing  I/O  Device  Security",  Proceedings  of  the  2009  ACM  SIGPLAN/SIGOPS  international  conference  on  Virtual  execution  environments,  March  11-13,  2009,  Washington,  DC,  USA
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、近年では、ゲストＯＳだけでなくＶＭＭについても物理マシンに備えられているネットワークデバイスを認識することを要する技術が知られている。例えば、ＶＭＭがネットワークデバイスを認識することで、ゲストＯＳとネットワークデバイスとの間におけるデータの入出力をＶＭＭが監視する技術が提案されている。かかる技術では、ＶＭＭによって、ＶＰＮ（Virtual  Private  Network）機能やディスクの暗号化機能等が実現されると考えられる。
【０００６】
しかしながら、上記の従来技術において、ＶＭＭが物理マシンに備えられている全てのネットワークデバイスを認識できるとは限らない。これは、ＶＭＭが、物理マシンに備えられている全てのネットワークデバイスに対応するデバイスドライバを有するとは限らないからである。ＶＭＭは、ネットワークデバイスを認識できない場合には、上記例のようなＶＰＮ機能やディスクの暗号化機能等の各種機能を実現することができない。このように、上記の従来技術には、物理マシンに備えられているネットワークデバイスの種類によっては、ＶＭＭがネットワークデバイスを利用することができないという問題がある。
【０００７】
なお、物理マシンに備えられているネットワークデバイスに対応するデバイスドライバをＶＭＭに実装することも考えられる。しかし、ネットワークデバイスには多数の種類が存在するので、各ネットワークデバイスに対応するＶＭＭ用のデバイスドライバを用意することは、作業工数が増大するという問題を招く。
【０００８】
本発明は、上記に鑑みてなされたものであって、ネットワークデバイスの種類に依存せずにＶＭＭがネットワークデバイスを利用することができる仮想制御プログラム、情報処理装置及び仮想制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明に係る仮想制御プログラムは、物理的に実在するネットワークデバイスである物理ネットワークデバイスを有する情報処理装置上で、仮想マシンの動作を制御する仮想制御プログラムであって、前記物理ネットワークデバイスを制御する物理デバイスドライバを含むゲストＯＳを前記仮想マシン上で動作させ、前記ゲストＯＳに対して、該ゲストＯＳが有するデバイスドライバによって制御されるネットワークデバイスが仮想化された仮想ネットワークデバイスを提供し、前記仮想ネットワークデバイスと前記物理ネットワークデバイスとの間におけるデータ流通が、該仮想ネットワークデバイスに対応する仮想デバイスドライバと前記物理デバイスドライバとを介して行われるように、前記ゲストＯＳに前記仮想ネットワークデバイスと前記物理ネットワークデバイスとを接続させる処理を前記情報処理装置に実行させる。
【発明の効果】
【００１０】
本発明に係る仮想制御プログラム、情報処理装置及び仮想制御方法は、ネットワークデバイスの種類に依存せずにＶＭＭがネットワークデバイスを利用することができるできるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係る情報処理装置により実現される機能を模式的に示す図である。
【図２】図２は、実施例２に係る情報処理装置により実現される機能を模式的に示す図である。
【図３】図３は、実施例２に係る情報処理装置によるパケット送信処理手順を示すフローチャートである。
【図４】図４は、実施例２に係る情報処理装置によるパケット受信処理手順を示すフローチャートである。
【図５】図５は、実施例３に係る情報処理装置により実現される機能を模式的に示す図である。
【図６】図６は、実施例３に係る情報処理装置によるアクセス要求送信処理手順を示すフローチャートである。
【図７】図７は、実施例３に係る情報処理装置によるアクセス結果パケット受信処理手順を示すフローチャートである。
【図８】図８は、仮想制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本発明に係る仮想制御プログラム、情報処理装置及び仮想制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本発明が限定されるものではない。
【実施例１】
【００１３】
まず、図１を用いて、実施例１に係る情報処理装置について説明する。図１は、実施例１に係る情報処理装置により実現される機能を模式的に示す図である。図１に示した情報処理装置１００は、例えば、ＰＣ（Personal  Computer）やサーバであり、ネットワーク１０を介して、外部とパケットの送受を行う。なお、実施例１に係る情報処理装置１００は、仮想化技術が適用されている。
【００１４】
図１に示すように、情報処理装置１００は、ハードウェア１１０と、ＶＭを実現するＶＭＭ１２０と、ＶＭ上で動作するゲストＯＳ１３０とを含む。ハードウェア１１０は、物理的に実在するデバイスである。
【００１５】
図１に示した例では、ハードウェア１１０は、物理デバイスの一例として、物理ＮＩＣ１１１を有する。かかる物理ＮＩＣ１１１は、ネットワーク１０との間でパケットを送受する。なお、以下では、物理ＮＩＣ１１１のように、物理的に実在するネットワークデバイスを「物理ネットワークデバイス」と表記する場合がある。
【００１６】
ＶＭＭ１２０は、ＶＭ上でゲストＯＳ１３０を動作させる。また、ＶＭＭ１２０は、ゲストＯＳ１３０に対して、ゲストＯＳ１３０が有するデバイスドライバによって制御されるネットワークデバイスが仮想化された仮想ネットワークデバイスを提供する。具体的には、ＶＭＭ１２０は、多くのＯＳが標準的に有するデバイスドライバによって制御される物理ネットワークデバイスが仮想化された仮想ネットワークデバイスを提供する。言い換えれば、ＶＭＭ１２０は、ゲストＯＳ１３０に対して、ゲストＯＳ１３０が認識することができる仮想ネットワークデバイスを提供する。
【００１７】
図１に示した例では、ＶＭＭ１２０は、ゲストＯＳ１３０に対して、仮想的ネットワークデバイスとして、仮想ＮＩＣ１２１を提供する。かかる仮想ＮＩＣ１２１は、ゲストＯＳ１３０が標準的にサポートするＮＩＣが仮想化されたネットワークデバイスである。すなわち、ゲストＯＳ１３０は、例えば、新たなデバイスドライバが搭載されることなく、ＶＭＭ１２０によって提供される仮想ＮＩＣ１２１を認識することができる。
【００１８】
ここで、ＶＭＭ１２０によって仮想ネットワークデバイスが提供される契機の一例について説明する。ゲストＯＳ１３０は、例えば、起動時において、ＰＣＩ（Peripheral  Component  Interconnect）コンフィギュレーションレジスタを参照することで、ハードウェアを検索する処理を行う。このとき、実施例１におけるＶＭＭ１２０は、ゲストＯＳ１３０によるＰＣＩコンフィギュレーションレジスタへのアクセスを横取りし、ネットワークデバイスが存在するかのように振舞うことで、ゲストＯＳ１３０に対して仮想ネットワークデバイスを提供する。すなわち、ＶＭＭ１２０は、例えば、ゲストＯＳ１３０によってハードウェアを検索する処理が行われた場合に、仮想ネットワークデバイスを提供する。
【００１９】
ゲストＯＳ１３０は、ＶＭＭ１２０によってＶＭ上で動作されるＯＳであり、仮想ＮＩＣ用デバイスドライバ１３１と、物理ＮＩＣ用デバイスドライバ１３２とを含む。仮想ＮＩＣ用デバイスドライバ１３１は、仮想ＮＩＣ１２１を制御するデバイスドライバである。物理ＮＩＣ用デバイスドライバ１３２は、物理ＮＩＣ１１１を制御するデバイスドライバである。なお、上記のように、ＶＭＭ１２０は、ゲストＯＳ１３０が標準的に有するデバイスドライバによって制御される仮想ＮＩＣ１２１を提供する。したがって、仮想ＮＩＣ用デバイスドライバ１３１は、ゲストＯＳ１３０が標準的に有するデバイスドライバである。
【００２０】
ここで、実施例１におけるＶＭＭ１２０は、仮想ＮＩＣ１２１と物理ＮＩＣ１１１との間におけるデータ流通が、仮想ＮＩＣ用デバイスドライバ１３１及び物理ＮＩＣ用デバイスドライバ１３２を介して行われるように、ゲストＯＳ１３０に仮想ＮＩＣ１２１と物理ＮＩＣ１１１とを接続させる。具体的には、ＶＭＭ１２０は、ゲストＯＳ１３０に対して、仮想ＮＩＣ１２１と物理ＮＩＣ１１１とをブリッジ接続させる。
【００２１】
これにより、仮想ＮＩＣ１２１に入力されるパケットは、仮想ＮＩＣ用デバイスドライバ１３１及び物理ＮＩＣ用デバイスドライバ１３２によって、物理ＮＩＣ１１１に転送される。また、物理ＮＩＣ１１１に入力されるパケットは、仮想ＮＩＣ用デバイスドライバ１３１及び物理ＮＩＣ用デバイスドライバ１３２によって、仮想ＮＩＣ１２１に転送される。なお、ブリッジ接続機能は、一般的に、ネットワーク機能を有する多くのＯＳに搭載されている。
【００２２】
このように、実施例１に係る情報処理装置１００は、ＶＭＭ１２０が、ゲストＯＳ１３０に仮想ＮＩＣ１２１を提供するとともに、物理ＮＩＣ１１１と仮想ＮＩＣ１２１とをブリッジ接続させる。これにより、実施例１におけるＶＭＭ１２０は、物理ＮＩＣ１１１に対応するデバイスドライバを要することなく、物理ＮＩＣ１１１を利用することができる。言い換えれば、実施例１におけるＶＭＭ１２０は、物理ＮＩＣ１１１の種類に依存せずに、かかる物理ＮＩＣ１１１を利用することができる。この結果、ＶＭＭ１２０は、物理ＮＩＣ１１１に入出力されるパケットを監視できるので、例えば、ＶＰＮ機能やディスクの暗号化機能等の各種機能を実現することができる。
【００２３】
ここで、図１に示した例において、情報処理装置１００が仮想ＮＩＣ１２１及び仮想ＮＩＣ用デバイスドライバ１３１を有しないものとする。また、ＶＭＭ１２０が物理ＮＩＣ１１１を認識できないものとする。かかる場合に、ＶＭＭ１２０が物理ＮＩＣ１１１を認識するためには、物理ＮＩＣ１１１に対応するデバイスドライバをＶＭＭ１２０に搭載することを要する。しかし、実施例１に係る情報処理装置１００では、ＶＭＭ１２０によってゲストＯＳ１３０が認識できる仮想ＮＩＣ１２１が提供されるとともに、かかる仮想ＮＩＣ１２１と物理ＮＩＣ１１１とをブリッジ接続するので、物理ＮＩＣ１１１に対応するデバイスドライバをＶＭＭ１２０に搭載することなく、ＶＭＭ１２０が物理ＮＩＣ１１１を利用することが可能になる。
【００２４】
実施例１に係る情報処理装置１００の適用例を挙げて説明する。例えば、情報処理装置１００にＶＭＭ１２０が導入されておらず、情報処理装置１００において所定のＯＳが動作しているものとする。このとき、情報処理装置１００において動作しているＯＳは、物理ＮＩＣ１１１に対応する物理ＮＩＣ用デバイスドライバ１３２を含み、物理ＮＩＣ１１１を認識しているものとする。このような状態において、情報処理装置１００にＶＭＭ１２０が導入される場合がある。
【００２５】
かかる場合に、実施例１に係る情報処理装置１００では、ＶＭＭ１２０がゲストＯＳ１３０に対して仮想ＮＩＣ１２１を提供し、この仮想ＮＩＣ１２１と物理ＮＩＣ１１１とをブリッジ接続する。このため、ＶＭＭ１２０は、仮に物理ＮＩＣ１１１を認識できない場合であっても、物理ＮＩＣ１１１用のデバイスドライバを要することなく、物理ＮＩＣ１１１を利用することができる。すなわち、既存の情報処理装置にＶＭＭ１２０を新たに導入する際に、ＶＭＭ１２０が物理ＮＩＣ１１１に対応していない場合であっても、実施例１におけるＶＭＭ１２０は、物理ＮＩＣ１１１用のデバイスドライバを要することなく、物理ＮＩＣ１１１を利用することができる。
【実施例２】
【００２６】
上記実施例１では、ＶＭＭが仮想ＮＩＣを提供し、ゲストＯＳに対して仮想ＮＩＣと物理ＮＩＣとブリッジ接続させることにより、物理ネットワークデバイスの種類に依存せずに、ＶＭＭが物理ネットワークデバイスを利用することができる例を示した。実施例２では、実施例１における技術に加えて、ＶＭＭによってセキュリティ機能が提供される例について説明する。
【００２７】
［実施例２に係る情報処理装置の構成例］
まず、図２を用いて、実施例２に係る情報処理装置について説明する。図２は、実施例２に係る情報処理装置により実現される機能を模式的に示す図である。なお、以下では、既に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
【００２８】
図２に示した情報処理装置２００は、図１に示した情報処理装置１００と同様に、ＶＭを動作させる仮想化技術が適用されている。かかる情報処理装置２００は、図２に示すように、トンネル構築部１１と接続される。トンネル構築部１１は、例えば、ルータ等のネットワーク機器によって実現され、パケットに対して転送用のパケットヘッダを付与するカプセル化や、転送用のパケットヘッダを削除するデカプセル化を行う。なお、トンネル構築部１１による処理については、情報処理装置２００のトンネル構築部２２４とともに後述する。
【００２９】
このような情報処理装置２００は、図２に示すように、ハードウェア１１０と、ＶＭＭ２２０と、ゲストＯＳ２３０とを含む。ＶＭＭ２２０は、ＶＭ上でゲストＯＳ２３０を動作させる。また、ＶＭＭ２２０は、ゲストＯＳ２３０に対して、第１仮想ＮＩＣ２２１と、第２仮想ＮＩＣ２２２とを提供する。
【００３０】
第１仮想ＮＩＣ２２１及び第２仮想ＮＩＣ２２２は、ゲストＯＳ２３０が有するデバイスドライバによって制御されるネットワークデバイスが仮想化された仮想ネットワークデバイスである。すなわち、ＶＭＭ２２０は、ゲストＯＳ２３０に対して、ゲストＯＳ２３０が標準的にサポートするネットワークデバイスが仮想化された第１仮想ＮＩＣ２２１及び第２仮想ＮＩＣ２２２を提供する。言い換えれば、ゲストＯＳ２３０は、例えば、新たなデバイスドライバが搭載されることなく、第１仮想ＮＩＣ２２１及び第２仮想ＮＩＣ２２２を認識することができる。
【００３１】
また、ＶＭＭ２２０は、ゲストＯＳ２３０に対して、第１仮想ＮＩＣ２２１と物理ＮＩＣ１１１とをブリッジ接続させる。これにより、第１仮想ＮＩＣ２２１に入力されるパケットは、物理ＮＩＣ１１１に転送され、物理ＮＩＣ１１１に入力されるパケットは、第１仮想ＮＩＣ２２１に転送される。このように、第１仮想ＮＩＣ２２１は、図１に示した仮想ＮＩＣ１２１と同様に、物理ＮＩＣ１１１とブリッジ接続される。また、第２仮想ＮＩＣ２２２は、ゲストＯＳ２３０に対して、パケットの入力ポートとして提供される。
【００３２】
また、ＶＭＭ２２０は、侵入検知部２２３と、トンネル構築部２２４とを有する。侵入検知部２２３は、ネットワーク１０を介して情報処理装置２００と外部との間で送受されるパケットを監視することで、不正パケットが侵入したか否かを検知する。トンネル構築部２２４は、パケットに対して転送用のパケットヘッダを付与するカプセル化や、転送用のパケットヘッダを削除するデカプセル化を行う。なお、侵入検知部２２３及びトンネル構築部２２４については、ゲストＯＳ２３０の説明の後に詳述する。
【００３３】
ゲストＯＳ２３０は、ＶＭＭ２２０によってＶＭ上で動作されるＯＳであり、仮想ＮＩＣ用デバイスドライバ２３１と、物理ＮＩＣ用デバイスドライバ２３２と、仮想ＮＩＣ用デバイスドライバ２３３と、アプリケーション部２３４とを含む。
【００３４】
仮想ＮＩＣ用デバイスドライバ２３１は、第１仮想ＮＩＣ２２１を制御するデバイスドライバである。物理ＮＩＣ用デバイスドライバ２３２は、物理ＮＩＣ１１１を制御するデバイスドライバである。仮想ＮＩＣ用デバイスドライバ２３３は、第２仮想ＮＩＣ２２２を制御するデバイスドライバである。
【００３５】
なお、仮想ＮＩＣ用デバイスドライバ２３１は、図１に示した仮想ＮＩＣ用デバイスドライバ１３１に対応し、物理ＮＩＣ用デバイスドライバ２３２は、図１に示した物理ＮＩＣ用デバイスドライバ１３２に対応する。また、ＶＭＭ２２０は、ゲストＯＳ２３０が標準的に有するデバイスドライバによって制御される第１仮想ＮＩＣ２２１及び第２仮想ＮＩＣ２２２を提供するので、仮想ＮＩＣ用デバイスドライバ２３１及び仮想ＮＩＣ用デバイスドライバ２３３は、ゲストＯＳ１３０が標準的に有するデバイスドライバである。
【００３６】
アプリケーション部２３４は、ゲストＯＳ２３０上で動作する各種アプリケーションである。図２に示したアプリケーション部２３４は、ネットワーク１０との間でパケットの送受を行う場合がある。ここで、実施例２におけるアプリケーション部２３４は、ネットワーク１０に対してパケットを送信する場合には、仮想ＮＩＣ用デバイスドライバ２３３に対して送信対象パケットを出力する。
【００３７】
ここで、上記のように、第１仮想ＮＩＣ２２１と物理ＮＩＣ１１１とはブリッジ接続されているので、アプリケーション部２３４によって第２仮想ＮＩＣ２２２に出力されるパケットは、侵入検知部２２３と、トンネル構築部２２４と、第１仮想ＮＩＣ２２１とを介して、物理ＮＩＣ１１１に出力される。そして、第１仮想ＮＩＣ２２１から物理ＮＩＣ１１１に入力されたパケットは、トンネル構築部１１を介してネットワーク１０に送信される。
【００３８】
また、ネットワーク１０から、情報処理装置２００に送信されるデータは、トンネル構築部１１を介して物理ＮＩＣ１１１に入力される。そして、トンネル構築部１１から物理ＮＩＣ１１１に入力されたデータは、第１仮想ＮＩＣ２２１と、トンネル構築部２２４と、侵入検知部２２３と、第２仮想ＮＩＣ２２２とを介して、アプリケーション部２３４に入力される。
【００３９】
ここで、ＶＭＭ２２０が有する侵入検知部２２３による処理について詳細に説明する。まず、アプリケーション部２３４は、上記のように、仮想ＮＩＣ用デバイスドライバ２３３に送信対象パケットを入力する。かかる仮想ＮＩＣ用デバイスドライバ２３３は、アプリケーション部２３４から送信対象パケットを入力された場合に、Ｉ／Ｏ（Input／Output）ポート等を介して、送信対象パケットを第２仮想ＮＩＣ２２２に入力する。ＶＭＭ２２０は、Ｉ／Ｏポートへのアクセスを監視しており、第２仮想ＮＩＣ２２２に送信対象パケットが入力された場合には、送信対象パケットに関するパケット情報を侵入検知部２２３に入力する。
【００４０】
かかる場合に、侵入検知部２２３は、第２仮想ＮＩＣ２２２に入力された送信対象パケットを解析し、不正データであるか否かを判定する。例えば、侵入検知部２２３は、悪意のある攻撃者が情報処理装置２００に対して送信し得る送信メッセージパターンを記憶部に保持しておく。そして、侵入検知部２２３は、第２仮想ＮＩＣ２２２に入力された送信対象パケットが、かかる記憶部に記憶されている送信メッセージパターンとマッチするか否かを判定する。そして、侵入検知部２２３は、送信対象パケットと送信メッセージパターンとがマッチした場合には、送信対象パケットを廃棄する。一方、侵入検知部２２３は、送信対象パケットと送信メッセージパターンとがマッチしない場合には、送信対象パケットをトンネル構築部２２４に出力する。
【００４１】
なお、侵入検知部２２３は、例えば、情報処理装置２００によって送受信することが許可されているメッセージパターンを記憶部に保持してもよい。かかる場合に、侵入検知部２２３は、第２仮想ＮＩＣ２２２に入力された送信対象パケットが、かかる記憶部に記憶されているメッセージパターンとマッチするか否かを判定する。そして、侵入検知部２２３は、送信対象パケットとメッセージパターンとがマッチしない場合には、送信対象パケットを廃棄する。一方、侵入検知部２２３は、送信対象パケットとメッセージパターンとがマッチする場合には、送信対象パケットをトンネル構築部２２４に出力する。
【００４２】
また、侵入検知部２２３は、ネットワーク１０から情報処理装置２００にパケットが送信された場合に、物理ＮＩＣ１１１によって受信された受信パケットをトンネル構築部２２４から入力される。かかる場合に、侵入検知部２２３は、受信パケットを解析し、不正データであるか否かを判定する。例えば、侵入検知部２２３は、上記例と同様に、受信パケットと、悪意のある送信メッセージパターンとをマッチングさせることにより、不正データであるか否かを判定する。また、例えば、侵入検知部２２３は、受信パケットと、情報処理装置２００によって送受信することが許可されているメッセージパターンとをマッチングさせることにより、不正データであるか否かを判定する。
【００４３】
続いて、トンネル構築部２２４及びトンネル構築部１１による処理について詳細に説明する。トンネル構築部２２４は、トンネル構築部１１との間で送受されるパケットが不正パケットであるか否かを判定するために、送信対象パケットに対して、トンネル構築部２２４によってカプセル化されたことを示す識別情報を付与することで、パケットのカプセル化処理を行う。同様に、トンネル構築部１１は、外部から受信したパケットに対して、トンネル構築部１１によってカプセル化されたことを示す識別情報を付与することで、パケットのカプセル化処理を行う。そして、トンネル構築部１１は、カプセル化後のパケットを情報処理装置２００に送信する。例えば、トンネル構築部２２４及びトンネル構築部１１は、カプセル化処理を実行した年月日時分秒を表すタイムスタンプや電子署名等をパケットに付与することでカプセル化処理を行う。
【００４４】
そして、トンネル構築部２２４は、パケットを受信した場合に、パケットに付与されているタイムスタンプ及び電子署名等に基づいて、タイムスタンプのチェックし、署名検証を行う。これにより、トンネル構築部２２４は、トンネル構築部１１によってカプセル化処理が行われたパケットであるか否かを判定する。同様に、トンネル構築部１１は、パケットを受信した場合に、タイムスタンプのチェックと署名検証を行うことにより、トンネル構築部２２４によってカプセル化処理が行われたパケットであるか否かを判定する。そして、実施例２におけるトンネル構築部２２４は、トンネル構築部１１を通過していないパケットを不正パケットとして廃棄し、トンネル構築部１１を通過しているパケットを正当なパケットとして受信する。また、トンネル構築部１１は、トンネル構築部２２４を通過していないパケットを不正パケットとして廃棄し、トンネル構築部２２４を通過しているパケットを正当なパケットとして受信し、外部に送信する。これにより、トンネル構築部２２４及びトンネル構築部１１は、双方を通過していないパケットが外部に流通することを防止することができる。
【００４５】
なお、実施例２では、トンネル構築部２２４及びトンネル構築部１１を通過していないパケットを外部に流通させないことを実現するために、トンネル構築部２２４及びトンネル構築部が、トンネリング処理を行うことで、トンネル構築部２２４とトンネル構築部１１との間にトンネルと呼ばれるセキュアな回線を構築する例について説明する。
【００４６】
具体的には、実施例２におけるトンネル構築部２２４は、情報処理装置２００のシステム起動時やネットワーク接続時等に、トンネル構築部１１との間で暗号鍵の交換等を行うことにより、第１仮想ＮＩＣ２２１とトンネル構築部１１との間にトンネルを構築する。そして、トンネル構築部２２４は、侵入検知部２２３から送信対象パケットを入力された場合に、かかる送信対象パケットをカプセル化する。例えば、トンネル構築部２２４は、ＩＰｓｅｃ（Security  Architecture  for  Internet  Protocol）や、ＳＳＬ（Secure  Sockets  Layer）等に基づいて、送信対象パケットをカプセル化する。そして、トンネル構築部２２４は、カプセル化後の送信対象パケットを第１仮想ＮＩＣ２２１に出力する。
【００４７】
仮想ＮＩＣ用デバイスドライバ２３１は、ゲストＯＳ２３０のネットワークブリッジ機能により、トンネル構築部２２４によって第１仮想ＮＩＣ２２１に入力された送信対象パケットを物理ＮＩＣ用デバイスドライバ２３２に転送する。この結果、かかる送信対象パケットは、物理ＮＩＣ１１１に入力される。そして、物理ＮＩＣ１１１に入力された送信対象パケットは、情報処理装置２００の外部に所在するトンネル構築部１１に送信される。
【００４８】
トンネル構築部１１は、物理ＮＩＣ１１１から受信した送信対象パケットがＶＭＭ２２０においてカプセル化されたパケットであるか否かを判定する。そして、トンネル構築部１１は、送信対象パケットがＶＭＭ２２０においてカプセル化されたパケットであると判定した場合には、送信対象パケットをデカプセル化する。すなわち、トンネル構築部１１は、送信対象パケットを、トンネル構築部２２４によってカプセル化される前の送信対象パケットに戻す。そして、トンネル構築部１１は、デカプセル化後の送信対象パケットをネットワーク１０に送信する。一方、トンネル構築部１１は、送信対象パケットがＶＭＭ２２０においてカプセル化されたパケットでないと判定した場合には、送信対象パケットを廃棄する。
【００４９】
また、トンネル構築部１１は、ネットワーク１０から情報処理装置２００宛のパケットが送信された場合に、かかるパケットをカプセル化した後に物理ＮＩＣ１１１に送信する。トンネル構築部１１から物理ＮＩＣ１１１にパケットが送信されると、物理ＮＩＣ用デバイスドライバ２３２に割り込み処理が発生し、物理ＮＩＣ１１１において受信された受信パケットが物理ＮＩＣ用デバイスドライバ２３２に送信される。そして、物理ＮＩＣ用デバイスドライバ２３２は、ゲストＯＳ２３０のネットワークブリッジ機能により、物理ＮＩＣ１１１から受信した受信パケットを仮想ＮＩＣ用デバイスドライバ２３１に転送する。この結果、かかる受信パケットは、第１仮想ＮＩＣ２２１に入力される。
【００５０】
トンネル構築部２２４は、第１仮想ＮＩＣ２２１に入力された受信パケットがトンネル構築部１１においてカプセル化されたパケットであるか否かを判定する。そして、トンネル構築部２２４は、受信パケットがトンネル構築部１１においてカプセル化されたパケットであると判定した場合には、受信パケットをデカプセル化する。すなわち、トンネル構築部２２４は、受信パケットを、トンネル構築部１１によってカプセル化される前のパケットに戻す。そして、トンネル構築部２２４は、デカプセル化後の受信パケットを侵入検知部２２３に入力する。一方、トンネル構築部２２４は、受信パケットがトンネル構築部１１においてカプセル化されたパケットでないと判定した場合には、かかる受信パケットを廃棄する。
【００５１】
なお、上述したトンネル構築部２２４及びトンネル構築部１１によるトンネリング処理は、トンネル構築部２２４及びトンネル構築部１１を通過していないパケットを外部に流通させないことを実現する処理の一例であって、トンネル構築部２２４及びトンネル構築部１１は、トンネリング処理を行うことを必ずしも要しない。すなわち、トンネル構築部２２４及びトンネル構築部１１は、トンネリング処理を行うことなく、双方でカプセル化されたか否かを示す識別情報をパケットに付与し、パケットを受信した場合に、かかる識別情報に基づいて、受信パケットが不正パケットであるか否かを判定すればよい。
【００５２】
［実施例２に係る情報処理装置によるパケット送信処理］
次に、図３を用いて、実施例２に係る情報処理装置２００によるパケット送信処理の手順について説明する。図３は、実施例２に係る情報処理装置２００によるパケット送信処理手順を示すフローチャートである。
【００５３】
図３に示すように、情報処理装置２００のＶＭＭ２２０は、Ｉ／Ｏポートへのアクセスを監視することで、第２仮想ＮＩＣ２２２への通信が発生したか否かを判定する（ステップＳ１０１）。そして、ＶＭＭ２２０の侵入検知部２２３は、例えば、アプリケーション部２３４から第２仮想ＮＩＣ２２２に送信対象パケットが入力された場合に（ステップＳ１０１肯定）、侵入検知処理を行う（ステップＳ１０２）。例えば、侵入検知部２２３は、送信対象パケットと、悪意のある送信メッセージパターンとをマッチングさせることにより、かかる送信対象パケットが不正パケットであるか否かを判定する（ステップＳ１０３）。そして、侵入検知部２２３は、送信対象パケットが不正パケットである場合には（ステップＳ１０３肯定）、送信対象パケットを廃棄する（ステップＳ１０４）。
【００５４】
一方、侵入検知部２２３は、送信対象パケットが不正パケットでない場合には（ステップＳ１０３否定）、送信対象パケットをトンネル構築部２２４に出力する。トンネル構築部２２４は、侵入検知部２２３から入力された送信対象パケットをカプセル化する（ステップＳ１０５）。そして、トンネル構築部２２４は、カプセル化後の送信対象パケットを第１仮想ＮＩＣ２２１に出力する（ステップＳ１０６）。
【００５５】
そして、仮想ＮＩＣ用デバイスドライバ２３１は、トンネル構築部２２４によって第１仮想ＮＩＣ２２１に入力された送信対象パケットを物理ＮＩＣ用デバイスドライバ２３２に転送することで、送信対象パケットを物理ＮＩＣ１１１に転送する（ステップＳ１０７）。なお、情報処理装置２００からネットワーク１０に送信された送信対象パケットは、トンネル構築部１１によってデカプセル化された後に、ネットワーク１０に送信される。これにより、情報処理装置２００は、物理ＮＩＣ１１１からネットワーク１０に対して送信対象パケットを送信する（ステップＳ１０８）。
【００５６】
［実施例２に係る情報処理装置によるパケット受信処理］
次に、図４を用いて、実施例２に係る情報処理装置２００によるパケット受信処理の手順について説明する。図４は、実施例２に係る情報処理装置２００によるパケット受信処理手順を示すフローチャートである。
【００５７】
図４に示すように、情報処理装置２００において、物理ＮＩＣ１１１がネットワーク１０からパケットを受信した場合には（ステップＳ２０１肯定）、物理ＮＩＣ用デバイスドライバ２３２は、受信パケットを仮想ＮＩＣ用デバイスドライバ２３１に転送することで、受信パケットを第１仮想ＮＩＣ２２１に転送する（ステップＳ２０２）。
【００５８】
続いて、トンネル構築部２２４は、第１仮想ＮＩＣ２２１に入力された受信パケットがトンネル構築部１１においてカプセル化されたパケットであるか否かを判定する（ステップＳ２０３）。そして、トンネル構築部２２４は、受信パケットがトンネル構築部１１においてカプセル化されたパケットでない場合には、かかる受信パケットが不正パケットであると判定する（ステップＳ２０３肯定）。そして、トンネル構築部２２４は、不正パケットである受信パケットを廃棄する（ステップＳ２０４）。
【００５９】
一方、トンネル構築部２２４は、受信パケットがトンネル構築部１１においてカプセル化されたパケットである場合には、かかる受信パケットが不正パケットでないと判定し（ステップＳ２０３否定）、受信パケットをデカプセル化する（ステップＳ２０５）。そして、トンネル構築部２２４は、デカプセル化後の受信パケットを侵入検知部２２３に出力する。
【００６０】
そして、侵入検知部２２３は、トンネル構築部２２４から入力された受信パケットに対して、侵入検知処理を行う（ステップＳ２０６）。そして、侵入検知部２２３は、受信パケットが不正パケットである場合には（ステップＳ２０７肯定）、かかる受信パケットを廃棄する（ステップＳ２０８）。
【００６１】
一方、侵入検知部２２３は、受信パケットが不正パケットでない場合には（ステップＳ２０７否定）、かかる受信パケットを第２仮想ＮＩＣ２２２に出力する（ステップＳ２０９）。これにより、受信パケットは、仮想ＮＩＣ用デバイスドライバ２３３を介して、例えば、アプリケーション部２３４に入力される。
【００６２】
［実施例２の効果］
上述してきたように、実施例２に係る情報処理装置２００において、ＶＭＭ２２０は、第１仮想ＮＩＣ２２１を提供し、ゲストＯＳ２３０に第１仮想ＮＩＣ２２１と物理ＮＩＣ１１１とをブリッジ接続させる。また、ＶＭＭ２２０は、アプリケーション部２３４等からパケットを受け付けるポートとして第２仮想ＮＩＣ２２２を提供する。そして、ＶＭＭ２２０は、ゲストＯＳ２３０がネットワーク１０にパケットを送信する場合に、かかるパケットを第２仮想ＮＩＣ２２２によって受け付ける。そして、ＶＭＭ２２０は、第２仮想ＮＩＣ２２２において受け付けたパケットを第１仮想ＮＩＣ２２１に入力することで、かかるパケットを物理ＮＩＣ１１１に転送する。
【００６３】
これにより、実施例２に係る情報処理装置２００のＶＭＭ２２０は、物理ＮＩＣ１１１を制御するデバイスドライバを要することなく、物理ＮＩＣ１１１にパケットを入力することができ、物理ＮＩＣ１１１に送信されたパケットを受信することができる。言い換えれば、ＶＭＭ２２０は、物理ＮＩＣ１１１の種類に依存せずに、物理ＮＩＣ１１１を利用することができる。
【００６４】
また、実施例２に係る情報処理装置２００のトンネル構築部２２４は、ルータ等の外部装置に備えられているトンネル構築部１１とトンネリング処理を行う。これにより、実施例２に係る情報処理装置２００は、物理ＮＩＣ１１１の種類によらず、かつ、物理ＮＩＣ１１１を制御するデバイスドライバを要することなく、第１仮想ＮＩＣ２２１と外部装置との間におけるパケットの流通経路に対してトンネルを構築することができる。すなわち、実施例２におけるＶＭＭ２２０は、物理ＮＩＣ１１１を制御するデバイスドライバを要することなく、ＶＰＮ機能やデータの暗号化機能を実現することができる。
【００６５】
例えば、実施例２に係る情報処理装置２００に対して、トンネル構築部２２４及びトンネル構築部１１によって構築されたトンネルを通過したパケットのみを送受することがシステムの条件として決められているものとする。かかる場合に、情報処理装置２００は、例えば、ゲストＯＳ２３０によって物理ＮＩＣ用デバイスドライバ２３２にパケットが直接入力されたとしても、かかるパケットを廃棄する。すなわち、情報処理装置２００は、例えば、ゲストＯＳ２３０がコンピュータウィルスやワームのようなマルウェアに感染した場合に、マルウェアに感染したゲストＯＳ２３０によって物理ＮＩＣ用デバイスドライバ２３２にパケットが直接入力されたとしても、かかるパケットを廃棄することができる。
【００６６】
また、実施例２に係る情報処理装置２００の侵入検知部２２３は、ネットワーク１０との間で送受されるパケットに不正パケットが存在するか否かを検知する。これにより、実施例２に係る情報処理装置２００は、外部からマルウェアが侵入することを防止することができるとともに、情報処理装置２００から外部にマルウェアが流通することを防止することができる。
【００６７】
なお、一般に、ＰＣ等の情報処理装置において、外部から不正パケットが侵入した否かを検知する侵入検知システムやアンチウィルスソフトウェアの多くは、ＯＳのカーネルドライバやアプリケーションとして実行される。このため、このような情報処理装置では、マルウェアによってカーネルモードと同様の実行権限を獲得された場合に、侵入検知システムやアンチウィルスソフトウェアが停止されるおそれがある。この結果、このような情報処理装置では、外部から不正パケットが侵入した否かを検知することができなくなる場合がある。
【００６８】
一方、実施例２に係る情報処理装置２００においては、ＶＭＭ２２０がＶＰＮ機能や暗号化機能を実現しているので、仮にマルウェアによってゲストＯＳ２３０のカーネルモード権限が獲得された場合であっても、外部から不正パケットが侵入した否かを検知することができる。すなわち、実施例２に係る情報処理装置２００は、物理ＮＩＣ１１１の種類によらず、ＶＭＭ２２０によってＶＰＮ機能や暗号化機能等のセキュリティ機能を実現することができる。
【実施例３】
【００６９】
上記実施例２では、ＶＭＭによってＶＰＮ機能や暗号化機能等のセキュリティ機能が実現される例を示した。実施例３では、ＶＭＭが仮想化されたストレージデバイスを提供することにより、ゲストＯＳがネットワーク接続されるストレージ装置をローカル接続のストレージ装置として利用することができる例について説明する。
【００７０】
［実施例３に係る情報処理装置の構成例］
まず、図５を用いて、実施例３に係る情報処理装置について説明する。図５は、実施例３に係る情報処理装置により実現される機能を模式的に示す図である。なお、以下では、既に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
【００７１】
図５に示した情報処理装置３００は、図１に示した情報処理装置１００と同様に、ＶＭを動作させる仮想化技術が適用されている。かかる情報処理装置３００は、図５に示すように、オンラインストレージ２０と接続される。オンラインストレージ２０は、情報処理装置３００とネットワーク接続されるストレージ装置である。
【００７２】
このような情報処理装置３００は、図５に示すように、ハードウェア１１０と、ＶＭＭ３２０と、ゲストＯＳ３３０とを含む。ＶＭＭ３２０は、ＶＭ上でゲストＯＳ３３０を動作させる。また、ＶＭＭ３２０は、ゲストＯＳ３３０に対して、仮想ＮＩＣ３２１を提供する。仮想ＮＩＣ３２１は、図１に示した仮想ＮＩＣ１２１と同様に、ゲストＯＳ３３０が有するデバイスドライバによって制御されるネットワークデバイスが仮想化された仮想ネットワークデバイスである。すなわち、ゲストＯＳ３３０は、例えば、新たなデバイスドライバが搭載されることなく、仮想ＮＩＣ３２１を認識することができる。
【００７３】
また、ＶＭＭ３２０は、ゲストＯＳ３３０に対して、仮想ＮＩＣ３２１と物理ＮＩＣ１１１とをブリッジ接続させる。これにより、仮想ＮＩＣ３２１に入力されるパケットは、物理ＮＩＣ１１１に転送され、物理ＮＩＣ１１１に入力されるパケットは、仮想ＮＩＣ３２１に転送される。
【００７４】
また、ＶＭＭ３２０は、ゲストＯＳ３３０に対して物理的に実在する物理ハードウェアが仮想化された仮想ハードウェアを提供する。図５に示した例では、ＶＭＭ３２０は、仮想ハードウェアの一例として、仮想ＨＤＤ（Hard  Disk  Drive）３２２を提供する。仮想ＨＤＤ３２２は、ＨＤＤが仮想化されたデバイスである。すなわち、ＶＭＭ３２０は、仮想ＨＤＤ３２２を提供することで、ゲストＯＳ３３０に対して、ＨＤＤが情報処理装置３００内に搭載されていると認識させる。
【００７５】
なお、仮想ＨＤＤ３２２は、ゲストＯＳ３３０が標準的に有するデバイスドライバによって制御させることが好ましい。これにより、ゲストＯＳ３３０は、新たなデバイスドライバが搭載されることなく、仮想ＨＤＤ３２２を認識することができる。
【００７６】
オンラインストレージ提供部３２３は、情報処理装置３００とネットワーク接続されるオンラインストレージ２０を利用可能にする機能を提供する。具体的には、オンラインストレージ提供部３２３は、ゲストＯＳ３３０からオンラインストレージ２０へのアクセス要求を受け付けた場合に、オンラインストレージ２０との間で通信を行うことで、オンラインストレージ２０にアクセスする。なお、オンラインストレージ提供部３２３については、ゲストＯＳ３３０の説明の後に詳述する。
【００７７】
ゲストＯＳ３３０は、ＶＭＭ３２０によってＶＭ上で動作されるＯＳであり、仮想ＮＩＣ用デバイスドライバ３３１と、物理ＮＩＣ用デバイスドライバ３３２と、仮想ＨＤＤ用デバイスドライバ３３３と、アプリケーション部３３４とを含む。
【００７８】
仮想ＮＩＣ用デバイスドライバ３３１は、図１に示した仮想ＮＩＣ用デバイスドライバ１３１に対応し、仮想ＮＩＣ３２１を制御するデバイスドライバである。物理ＮＩＣ用デバイスドライバ３３２は、図１に示した物理ＮＩＣ用デバイスドライバ１３２に対応し、物理ＮＩＣ１１１を制御するデバイスドライバである。仮想ＨＤＤ用デバイスドライバ３３３は、仮想ＨＤＤ３２２を制御するデバイスドライバである。
【００７９】
アプリケーション部３３４は、ゲストＯＳ３３０上で動作する各種アプリケーションである。図５に示したアプリケーション部３３４は、オンラインストレージ２０に対してデータの読出し（read）や書込み（write）を行う場合がある。ここで、実施例３におけるアプリケーション部３３４は、オンラインストレージ２０にアクセスする場合には、仮想ＨＤＤ用デバイスドライバ３３３に対してアクセス要求を出力する。
【００８０】
ここで、ＶＭＭ３２０が有するオンラインストレージ提供部３２３による処理について詳細に説明する。まず、アプリケーション部３３４は、上記のように、オンラインストレージ２０にアクセスする場合には、仮想ＨＤＤ用デバイスドライバ３３３にアクセス要求を入力する。仮想ＨＤＤ用デバイスドライバ３３３は、アプリケーション部３３４から入力されたアクセス要求を仮想ＨＤＤ３２２に入力する。ＶＭＭ３２０は、Ｉ／Ｏポートへのアクセスを監視しており、仮想ＨＤＤ３２２にアクセス要求が入力された場合には、かかるアクセス要求をオンラインストレージ提供部３２３に転送する。
【００８１】
オンラインストレージ提供部３２３は、仮想ＨＤＤ３２２からアクセス要求を入力された場合に、オンラインストレージ２０と通信を行い、かかるアクセス要求を含むパケットを仮想ＮＩＣ３２１に出力する。なお、以下では、アクセス要求を含むパケットを「アクセス要求パケット」と表記する場合がある。
【００８２】
そして、仮想ＮＩＣ用デバイスドライバ３３１は、ゲストＯＳ３３０のネットワークブリッジ機能により、オンラインストレージ提供部３２３によって仮想ＮＩＣ３２１に入力されたアクセス要求パケットを物理ＮＩＣ用デバイスドライバ３３２に転送する。この結果、かかるアクセス要求パケットは、物理ＮＩＣ１１１に入力される。そして、物理ＮＩＣ１１１に入力されたアクセス要求パケットは、オンラインストレージ２０に送信される。これにより、オンラインストレージ２０は、アクセス要求パケットに応じて、データの読出し処理や書込み処理を行う。
【００８３】
また、オンラインストレージ２０は、データ読出し処理やデータ書込み処理を行った場合に、かかる処理の結果を物理ＮＩＣ１１１に送信する。なお、以下では、オンラインストレージ２０によるデータ読出し処理やデータ書込み処理の結果を「アクセス結果パケット」と表記する場合がある。
【００８４】
オンラインストレージ２０から物理ＮＩＣ１１１にアクセス結果パケットが送信されると、物理ＮＩＣ用デバイスドライバ３３２は、ゲストＯＳ３３０のネットワークブリッジ機能により、アクセス結果パケットを仮想ＮＩＣ用デバイスドライバ３３１に転送する。この結果、アクセス結果パケットは、仮想ＮＩＣ３２１に入力される。そして、オンラインストレージ提供部３２３は、仮想ＮＩＣ３２１に入力されたアクセス結果パケットを仮想ＨＤＤ３２２を介してアプリケーション部３３４に送信する。
【００８５】
［実施例３に係る情報処理装置によるアクセス要求送信処理］
次に、図６を用いて、実施例３に係る情報処理装置３００によるアクセス要求送信処理の手順について説明する。図６は、実施例３に係る情報処理装置３００によるアクセス要求送信処理手順を示すフローチャートである。
【００８６】
図６に示すように、情報処理装置３００のＶＭＭ３２０は、Ｉ／Ｏポートへのアクセスを監視することで、仮想ＨＤＤ３２２への通信が発生したか否かを判定する（ステップＳ３０１）。そして、ＶＭＭ３２０のオンラインストレージ提供部３２３は、例えば、アプリケーション部３３４から仮想ＨＤＤ３２２にアクセス要求パケットが入力された場合に（ステップＳ３０１肯定）、かかるアクセス要求パケットを仮想ＮＩＣ３２１に出力する（ステップＳ３０２）。
【００８７】
そして、仮想ＮＩＣ用デバイスドライバ３３１は、ゲストＯＳ３３０のネットワークブリッジ機能により、仮想ＮＩＣ３２１に入力されたアクセス要求パケットを物理ＮＩＣ用デバイスドライバ３３２に転送することで、物理ＮＩＣ１１１に転送する（ステップＳ３０３）。これにより、情報処理装置３００は、物理ＮＩＣ１１１からオンラインストレージ２０にアクセス要求パケットを送信する（ステップＳ３０４）。なお、オンラインストレージ２０は、情報処理装置３００から受信したアクセス要求パケットに応じて、データ読出し処理やデータ書込み処理を行う。
【００８８】
［実施例３に係る情報処理装置によるアクセス結果パケット受信処理］
次に、図７を用いて、実施例３に係る情報処理装置３００によるアクセス結果パケット受信処理の手順について説明する。図７は、実施例３に係る情報処理装置３００によるアクセス結果パケット受信処理手順を示すフローチャートである。
【００８９】
図７に示すように、情報処理装置３００において、物理ＮＩＣ１１１がオンラインストレージ２０からアクセス結果パケットを受信した場合には（ステップＳ４０１肯定）、物理ＮＩＣ用デバイスドライバ３３２は、ゲストＯＳ３３０のネットワークブリッジ機能により、アクセス結果パケットを仮想ＮＩＣ用デバイスドライバ３３１に転送することで、かかるアクセス結果パケットを仮想ＮＩＣ３２１に転送する（ステップＳ４０２）。
【００９０】
そして、オンラインストレージ提供部３２３は、仮想ＮＩＣ３２１に入力されたアクセス結果パケットを仮想ＨＤＤ３２２に出力する（ステップＳ４０３）。これにより、オンラインストレージ２０から情報処理装置３００に送信されたアクセス結果パケットは、アプリケーション部３３４に送信される。
【００９１】
［実施例３の効果］
上述してきたように、実施例３に係る情報処理装置３００において、ＶＭＭ３２０は、仮想ＮＩＣ３２１を提供し、ゲストＯＳ３３０に仮想ＮＩＣ３２１と物理ＮＩＣ１１１とをブリッジ接続させる。また、ＶＭＭ３２０は、アプリケーション部３３４からオンラインストレージ２０へのアクセス要求パケットを受け付けるポートとして仮想ＨＤＤ３２２を提供する。そして、ＶＭＭ３２０は、アプリケーション部３３４から受け付けるアクセス要求パケットを仮想ＮＩＣ３２１に入力することで、かかるアクセス要求パケットを物理ＮＩＣ１１１に転送する。さらに、ＶＭＭ３２０は、オンラインストレージ２０から物理ＮＩＣ１１１に受け付けたアクセス結果パケットを仮想ＮＩＣ３２１により受け付ける。
【００９２】
これにより、実施例３に係る情報処理装置３００のＶＭＭ３２０は、物理ＮＩＣ１１１を制御するデバイスドライバを要することなく、物理ＮＩＣ１１１にアクセス要求パケットを入力することができる。言い換えれば、ＶＭＭ３２０は、物理ＮＩＣ１１１の種類に依存せずに、物理ＮＩＣ１１１を利用することができる。図５に示した例では、情報処理装置３００のＶＭＭ３２０は、ゲストＯＳ３３０に対して、オンラインストレージ２０をローカル接続されたストレージ装置として利用させることができる。
【００９３】
また、実施例３に係る情報処理装置３００は、ゲストＯＳ３３０の種類が変わった場合であっても、同一のＶＭＭ３２０によって、オンラインストレージ２０をローカル接続されたストレージ装置として利用させることができる。
【実施例４】
【００９４】
ところで、本発明に係る仮想制御プログラム、情報処理装置及び仮想制御方法は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例４では、本発明に係る仮想制御プログラム、情報処理装置及び仮想制御方法の他の実施例について説明する。
【００９５】
［仮想ハードウェア］
上記実施例３では、仮想ハードウェアの一例として、ＶＭＭ３２０が仮想ＨＤＤ３２２を提供する例を示したが、ＶＭＭ３２０は、ＨＤＤ以外のハードウェアが仮想化された仮想ハードウェアを提供してもよい。例えば、ＶＭＭ３２０は、情報処理装置３００にプリンタがネットワーク接続されている場合には、仮想ハードウェアとして、プリンタが仮想化された仮想プリンタを提供してもよい。かかる場合に、ＶＭＭ３２０は、ゲストＯＳ３３０に対して、ネットワークプリンタをローカル接続されているプリンタとして利用させることができる。
【００９６】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図２に示した侵入検知部２２３とトンネル構築部２２４とを一つの処理部として統合してもよい。
【００９７】
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９８】
［仮想制御プログラム］
また、上記実施例１〜３に係る情報処理装置１００、２００及び３００が実行する処理は、コンピュータが実行可能な言語で記述した仮想制御プログラムによって実現される。かかる場合に、コンピュータが仮想制御プログラムを実行することにより、上記実施例１〜３において説明した効果を得ることができる。なお、かかる仮想制御プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された仮想制御プログラムをコンピュータに読み込ませて実行することにより上記実施例１〜３と同様の処理を実現してもよい。以下に、上記の情報処理装置１００、２００及び３００と同様の機能を実現する仮想制御プログラムを実行するコンピュータの一例を説明する。
【００９９】
図８は、仮想制御プログラムを実行するコンピュータ１０００を示す図である。図８に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【０１００】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。ディスクドライブ１０４１には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１０５１およびキーボード１０５２が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１０６１が接続される。
【０１０１】
ここで、図８に示すように、ハードディスクドライブ１０３１は、例えば、ＯＳ（Operating  System）１０９１を実現するためのプログラム、アプリケーションプログラム１０９２、プログラムモジュール１０９３及びプログラムデータ１０９４を記憶する。上記実施例１〜３で説明したＶＭＭ１２０、２２０及び３２０や、ゲストＯＳ１３０、２３０及び３３０は、例えば、ハードディスクドライブ１０３１に記憶される仮想制御プログラムによって実現される。具体的には、ＣＰＵ１０２０が、ハードディスクドライブ１０３１に記憶された仮想制御プログラムやプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、各種手順を実行する。
【０１０２】
なお、仮想制御プログラムは、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、仮想制御プログラムは、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【０１０３】
１０  ネットワーク
１１  トンネル構築部
２０  オンラインストレージ
１００  情報処理装置
１１０  ハードウェア
１１１  物理ＮＩＣ
１２０  ＶＭＭ
１２１  仮想ＮＩＣ
１３０  ゲストＯＳ
１３１  仮想ＮＩＣ用デバイスドライバ
１３２  物理ＮＩＣ用デバイスドライバ
２００  情報処理装置
２２０  ＶＭＭ
２２１  第１仮想ＮＩＣ
２２２  第２仮想ＮＩＣ
２２３  侵入検知部
２２４  トンネル構築部
２３０  ゲストＯＳ
２３１  仮想ＮＩＣ用デバイスドライバ
２３２  物理ＮＩＣ用デバイスドライバ
２３３  仮想ＮＩＣ用デバイスドライバ
２３４  アプリケーション部
３００  情報処理装置
３２０  ＶＭＭ
３２１  仮想ＮＩＣ
３２２  仮想ＨＤＤ
３２３  オンラインストレージ提供部
３３０  ゲストＯＳ
３３１  仮想ＮＩＣ用デバイスドライバ
３３２  物理ＮＩＣ用デバイスドライバ
３３３  仮想ＨＤＤ用デバイスドライバ
３３４  アプリケーション部
１０００  コンピュータ
１０１０  メモリ
１０１１  ＲＯＭ
１０１２  ＲＡＭ
１０２０  ＣＰＵ
１０３０  ハードディスクドライブインタフェース
１０３１  ハードディスクドライブ
１０４０  ディスクドライブインタフェース
１０４１  ディスクドライブ
１０５０  シリアルポートインタフェース
１０５１  マウス
１０５２  キーボード
１０６０  ビデオアダプタ
１０６１  ディスプレイ
１０７０  ネットワークインタフェース
１０８０  バス
１０９２  アプリケーションプログラム
１０９３  プログラムモジュール
１０９４  プログラムデータ
【図１】
0005548095.tif 000002
【図２】
0005548095.tif 000003
【図３】
0005548095.tif 000004
【図４】
0005548095.tif 000005
【図５】
0005548095.tif 000006
【図６】
0005548095.tif 000007
【図７】
0005548095.tif 000008
【図８】
0005548095.tif 000009