(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンモニタが相互に接続されている通信システムにおいて、
前記複数の仮想マシンモニタは、相互に異なる仮想ルータＩＰアドレスをセグメント毎に備え、
前記複数の仮想マシンモニタは、前記複数の仮想マシンモニタ上で動作する仮想マシンの仮想マシンＩＰアドレスと前記仮想ルータＩＰアドレスを対応付けた第１のルーティングテーブルと、ＶＬＡＮの所属を示す第２のルーティングテーブルと、を更に備え、
前記複数の仮想マシンモニタは、パケットを送信する際に、前記第１のルーティングテーブルを参照することにより前記送信するパケットの宛先仮想ルータＩＰアドレスを識別し、当該識別した宛先仮想ルータＩＰアドレスが自仮想マシンモニタと同一であるか否かを判別し、当該判別の結果自仮想マシンモニタと同一の場合は宛先ＭＡＣアドレスを宛先仮想マシンのＭＡＣアドレスに変換し、当該判別の結果自仮想マシンモニタと同一でなかった場合は宛先ＭＡＣアドレスを宛先仮想ルータのＭＡＣアドレスに変換し、当該変換後のパケットを送信することを特徴とする通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記複数の仮想マシンモニタは、外部からパケットを受信した際に、当該受信したパケットヘッダを参照し、参照した結果宛先ＩＰアドレス及び宛先ＭＡＣアドレスが自仮想マシンモニタ上で動作しているものであり、且つ、宛先ＭＡＣアドレスが仮想ルータ宛てのものであった場合に、宛先ＭＡＣアドレスを送信先仮想マシンのＭＡＣアドレスに変換した後にパケット受信処理を行うことを特徴とする通信システム。
【請求項３】
請求項１又は２に記載の通信システムにおいて、
前記複数の仮想マシンモニタは、外部からパケットを受信した際に、当該受信したパケットヘッダを参照し、参照した結果宛先ＩＰアドレスが自仮想マシンモニタ上で動作しているものではない場合と、参照した結果宛先ＭＡＣアドレスが自仮想マシンモニタ上で動作しているものではない場合の、双方の場合に前記受信したパケットを廃棄することを特徴とする通信システム。
【請求項４】
請求項１乃至３の何れか１項に記載の通信システムにおいて、
前記第２のルーティングテーブルを参照することにより物理ルータを介した外部ネットワークとの通信を行うことを特徴とする通信システム。
【請求項５】
請求項１乃至４の何れか１項に記載の通信システムにおいて、
当該通信システムは更に管理サーバを有しており、
前記第１のルーティングテーブルは、前記管理サーバによってのみ更新されることを特徴とする通信システム。
【請求項６】
請求項５に記載の通信システムにおいて、
前記管理サーバが行う前記第１のルーティングテーブルの更新は手動によって実施され、自動的にＩＰアドレスを割り振るルーティングプロトコルは使用しないことを特徴とする通信システム。
【請求項７】
請求項５又は６に記載の通信システムにおいて、
前記仮想マシンが移行元の仮想マシンモニタとは異なる仮想マシンモニタである移行先仮想マシンモニタへと移行する際に、前記第１のルーティングテーブルの変更を含む所定の処理を実行している間は当該仮想マシンの仮想ＮＩＣを停止させることにより、当該所定の処理を実行している間はパケットの送受信を停止させることを特徴とする通信システム。
【請求項８】
複数の仮想マシンモニタが相互に接続されているシステムが行うルーティング方法において、
前記複数の仮想マシンモニタに相互に異なる仮想ルータＩＰアドレスをセグメント毎に用意させるステップと、
前記複数の仮想マシンモニタは、前記複数の仮想マシンモニタ上で動作する仮想マシンの仮想マシンＩＰアドレスと前記仮想ルータＩＰアドレスを対応付けた第１のルーティングテーブルと、ＶＬＡＮの所属を示す第２のルーティングテーブルと、を用意させるステップと、を備え、
前記複数の仮想マシンモニタは、パケットを送信する際に、前記第１のルーティングテーブルを参照することにより前記送信するパケットの宛先仮想ルータＩＰアドレスを識別し、当該識別した宛先仮想ルータＩＰアドレスが自仮想マシンモニタと同一であるか否かを判別し、当該判別の結果自仮想マシンモニタと同一の場合は宛先ＭＡＣアドレスを宛先仮想マシンのＭＡＣアドレスに変換し、当該判別の結果自仮想マシンモニタと同一でなかった場合は宛先ＭＡＣアドレスを宛先仮想ルータのＭＡＣアドレスに変換し、当該変換後のパケットを送信することを特徴とするルーティング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン間のルーティング処理に関する。
【背景技術】
【０００２】
１台のコンピュータ上で複数のＯＳ（Operating System）を制御するプログラムとして、仮想マシンモニタが知られている。特に、英国ケンブリッジ大学で開発が進められたＸｅｎ（商標）やＶＭｗａｒｅ社が製造、販売及び提供するＶＭｗａｒｅ（登録商標）等が仮想マシンモニタとして広く知られている。
【０００３】
これらの仮想マシンモニタを用いると、１台のコンピュータが複数の異なるＯＳを制御し、各ＯＳ上で異なるジョブを並列に処理することができる。すなわち、仮想マシンモニタは、複数の仮想マシンを実行し、各仮想マシンは、互いに異なるＯＳを動作させることができる。
【０００４】
また、仮想マシンモニタ環境において、セグメントの異なる仮想マシン間でＮＷ（Network）通信を行うことも可能である。例えば、特許文献１に記載の技術を用いた場合、ネットワークを構成する伝送装置の各々が複数台の仮想伝送装置に論理的に分割され、仮想伝送装置の各々が、各自別個に用意されたルーティングソフトウェアで動作するようにした通信システムにおいて、ソフトウェア障害に簡易且つ効果的に対処することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２５３７４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、セグメントの異なる仮想マシン間でＮＷ通信を行うことは可能であるが、上述した技術には以下のような問題があった。
【０００７】
具体的には、仮想マシンモニタ環境において、セグメントの異なる仮想マシン間でＮＷ通信を行う場合、通常であれば物理ルータを経由してパケットが転送されるため、余分な経路を経由することになるという問題である。また、余分な経路を経由することにより、トラフィック量の増加や、場合によっては大きな遅延が発生する可能性があるという問題もある。
【０００８】
例えば図１に示す構成においては少なくともレイヤ２ネットワーク９とルータ１０の間において余分なトラフィックが転送されることとなる。
【０００９】
一方、仮想マシンモニタ上にインストールしたゲストＯＳ上のＳＷルータを使用するということも考えられる。しかし、この場合は、仮想マシンのホットマイグレーションによってＮＷ構成が流動的に変化する。そのため、ＮＷ構成によっては余分なトラフィックが発生してしまうという問題がある。
【００１０】
例えば図２に示す構成においてセグメントの異なる仮想マシン３０と４０がＳＷルータの仮想マシンであるＳＷルータ２０を介して通信を行う場合には、物理ネットワーク上に余分なトラフィックが発生する。
【００１１】
このようにＮＷ構成が流動的に変化する環境では常に最適なルーティング処理が行えるような構成を組むことができず、ＮＷ上に余分なトラフィックが発生してしまう。
【００１２】
そこで、本発明は、ＮＷ構成が流動的に変化する環境であっても余分な経路を経由せずにパケット転送を行うことが可能な、仮想環境における仮想ルーティング方法及び仮想ルーティングシステムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の観点によれば、複数の仮想マシンモニタが相互に接続されている通信システムにおいて、前記複数の仮想マシンモニタは、相互に異なる仮想ルータＩＰアドレスをセグメント毎に備え、前記複数の仮想マシンモニタは、前記複数の仮想マシンモニタ上で動作する仮想マシンの仮想マシンＩＰアドレスと前記仮想ルータＩＰアドレスを対応付けた第１のルーティングテーブルと、ＶＬＡＮの所属を示す第２のルーティングテーブルと、を更に備え、前記複数の仮想マシンモニタは、パケットを送信する際に、前記第１のルーティングテーブルを参照することにより前記送信するパケットの宛先仮想ルータＩＰアドレスを識別し、当該識別した宛先仮想ルータＩＰアドレスが自仮想マシンモニタと同一であるか否かを判別し、当該判別の結果自仮想マシンモニタと同一の場合は宛先ＭＡＣアドレスを宛先仮想マシンのＭＡＣアドレスに変換し、当該判別の結果自仮想マシンモニタと同一でなかった場合は宛先ＭＡＣアドレスを宛先仮想ルータのＭＡＣアドレスに変換し、当該変換後のパケットを送信することを特徴とする通信システムが提供される。
【００１４】
本発明の第２の観点によれば、複数の仮想マシンモニタが相互に接続されているシステムが行うルーティング方法において、前記複数の仮想マシンモニタに相互に異なる仮想ルータＩＰアドレスをセグメント毎に用意させるステップと、前記複数の仮想マシンモニタは、前記複数の仮想マシンモニタ上で動作する仮想マシンの仮想マシンＩＰアドレスと前記仮想ルータＩＰアドレスを対応付けた第１のルーティングテーブルと、ＶＬＡＮの所属を示す第２のルーティングテーブルと、を用意させるステップと、を備え、前記複数の仮想マシンモニタは、パケットを送信する際に、前記第１のルーティングテーブルを参照することにより前記送信するパケットの宛先仮想ルータＩＰアドレスを識別し、当該識別した宛先仮想ルータＩＰアドレスが自仮想マシンモニタと同一であるか否かを判別し、当該判別の結果自仮想マシンモニタと同一の場合は宛先ＭＡＣアドレスを宛先仮想マシンのＭＡＣアドレスに変換し、当該判別の結果自仮想マシンモニタと同一でなかった場合は宛先ＭＡＣアドレスを宛先仮想ルータのＭＡＣアドレスに変換し、当該変換後のパケットを送信することを特徴とするルーティング方法が提供される。
【発明の効果】
【００１５】
本発明によれば、仮想ルータ機能を実現できることから、ＮＷ構成が流動的に変化する環境であっても余分な経路を経由せずにパケット転送を行うことが可能となる。
【図面の簡単な説明】
【００１６】
【図１】背景技術の有する問題点について説明するためのブロック図（１／２）である。
【図２】背景技術の有する問題点について説明するためのブロック図（２／２）である。
【図３】本発明の実施形態の基本的構成を表すブロック図である。
【図４】本発明の実施形態の仮想マシンモニタを表すブロック図である。
【図５】本発明の実施形態のＶＬＡＮの所属について表す図である。
【図６】本発明の実施形態のマイグレーションについて表すフローチャートである。
【図７】本発明の実施形態のマイグレーションについて表すシーケンス図である。
【図８】本発明の実施形態のルーティングテーブルについて表す図である。
【図９】本発明の実施形態のパケットの送信について表すフローチャートである。
【図１０】本発明の実施形態のパケットの受信について表すフローチャートである。
【図１１】本発明の実施形態のマイグレーション後の構成について表すブロック図である。
【発明を実施するための形態】
【００１７】
まず、本発明の実施形態の概略を説明する。本発明の実施形態は、概略、ＶＭｗａｒｅなどの仮想マシンモニタ環境で動作するために限定的な機能を持ったルーティング処理部と、仮想マシンのホットマイグレーションと連動したゲストＯＳのデフォルトＧＷ変更の仕組みと、ルーティングプロトコルを使用しない手動かつ一括したルーティングテーブルの更新方法と、特殊なパケット送受信処理の機能をあわせ持つことにより実現する、仮想マシン間のルーティング処理のみをハイパーバイザー内で実行する仮想ルータ機能を実現する、というものである。
【００１８】
次に、本発明の実施形態について図面を用いて詳細に説明する。
【００１９】
今回は仮想マシンモニタが２台の場合を想定して、その処理を説明する。なお、明細書及び図面において、仮想マシン（ＶＭ：Virtual Machine）を「ＶＭ」と表記する。また、ゲートウェイ（ＧＷ：Gateway）を「ＧＷ」と表記する。
【００２０】
図３を参照すると、本実施形態は、仮想マシンモニタ１１０、仮想マシンモニタ１２０、管理サーバ３００、スイッチ４００、ルータ５００及び外部ネットワーク６００を有する。
【００２１】
また、仮想マシンモニタ１１０及び仮想マシンモニタ１２０には、それぞれ仮想マシンモニタ用管理エージェント１１１及び１２１がインストールされている。更に、仮想マシンモニタ１１０及び仮想マシンモニタ１２０上では、ＶＭ２１０〜２３０が動作している。また、各ＶＭ２１０〜２３０にはＶＭ管理用エージェント（図示を省略する）がインストールされている。
【００２２】
なお、図３に示す構成はあくまで一例であり、仮想マシンモニタやＶＭの数は任意に実装可能である。すなわち、本実施形態では仮想マシンモニタの台数を更に増やしても同様技術を適用可能である。
【００２３】
まず、管理サーバ３００が行う管理について説明する。
【００２４】
仮想マシンモニタ１１０及び仮想マシンモニタ１２０は管理サーバ３００によって管理されている。そして、管理サーバ３００の管理下でＶＭ２１０〜２３０は任意の仮想マシンモニタへ仮想マシンのホットマイグレーションによる移行が可能である。
【００２５】
また、管理サーバ３００は、仮想マシンモニタ用管理エージェント１１１及び１２１を介して、各ＶＭ２１０〜２３０の最新のＩＰアドレスを常に把握できる状態にある。
【００２６】
ＶＭ２１０〜２３０にインストールされているＶＭ管理エージェントは、ゲストＯＳのデフォルトＧＷを変更するための一連の処理部をリモートから実行できるインタフェースを提供しており、管理サーバ３００は、仮想マシンモニタ用管理エージェント１１１及び１２１経由で、このインタフェースにアクセスし、ＶＭ２１０〜２３０のデフォルトＧＷを変更できるものとする。
【００２７】
更に、管理サーバ３００は証明書３０１を保有している。そして、証明書３０１を利用することにより、仮想マシンモニタ用管理エージェント１１１、１２１と管理サーバ３００間の通信はなりすましや改竄などの危険性なく、セキュアな通信が実施されるものとする。
【００２８】
続いて、各仮想マシンモニタについて図４を参照して説明する。なお、図４では、仮想マシンモニタ１１０を例にとって説明するが、仮想マシンモニタ１２０も同様な構成であるものとする。
【００２９】
仮想マシンモニタ１１０は、ハイパーバイザー１１２内にルーティング処理部１１３、外部パケット送信キュー１１４及び内部パケット送信キュー１１５を有する。
【００３０】
ルーティング処理部１１３は仮想的なルータとして動作し、各セグメント毎にＩＰアドレスを一つずつ持つ。このＩＰアドレスを「仮想ルータＩＰアドレス」と呼称する。仮想ルータＩＰアドレスは他仮想マシンモニタと重複しないものとする。
【００３１】
また、ルーティング処理後は外部パケット送信キュー１１４及び内部パケット送信キュー１１５の何れかのキューにパケットが格納される。外部パケット送信キュー１１４に格納されたパケットは物理的なＮＩＣ（Network Interface Card）であるＮＩＣ１１６を介して、外部ネットワークへパケットが送信される。一方、内部パケット送信キュー１１５に格納されたパケットは仮想マシンモニタ上で動作する仮想マシンに対してパケットが送信される。
【００３２】
次に、ＶＬＡＮの所属について図５を参照して説明する。今回の説明においてはＶＭ２１０〜２３０、仮想マシンモニタ用管理エージェント１１１、１２１、管理サーバ３００はそれぞれ図５に示すＶＬＡＮに所属しているものとする。スイッチ４００では仮想マシンモニタ１１０、１２０及び管理サーバ３００で使用される可能性のあるＶＬＡＮが全てのポートにおいて適切に設定されているものとする。
【００３３】
続いて図３に示す本実施形態の動作について説明する。
【００３４】
今回は、ＶＭ２１０が外部ネットワーク６００と通信する場合と、ＶＭ２１０がセグメントの異なるＶＭ２２０と通信する場合の２つの場合の処理についてそれぞれ説明する。
【００３５】
ＶＭ２１０が外部ネットワーク６００と通信する場合は、まず、宛先ＭＡＣアドレスをルータ５００に設定する（具体的な設定方法については、図９を参照して後述する。）。次に、送信パケットを外部送信パケットキューに１１３格納する。その後ルータ５００にパケットが送信される。また、ルータ５００からＶＭ２１０に対してパケットを送信する際は、仮想マシンモニタ１１０はパケットの受信処理を行う（具体的な受信動作については、図１０を参照して後述する。）が、ルーティング処理は行われず、そのままＶＭ２１０に対してパケットが送信される。そのためルータ５００は仮想マシンモニタ１１０上で動作するルーティング処理部１１３の存在を意識せずに、通常のルーティング処理を実施することができる。
【００３６】
一方、ＶＭ２１０がセグメントの異なるＶＭ２２０と通信する場合は、宛先ＭＡＣアドレスをＶＭ２２０のＭＡＣアドレスに設定する（具体的な設定方法については、図９を参照して後述する。）。次に、送信パケットを内部送信パケットキュー１１４に格納する。その後ＶＭ２２０にパケットが送信される。この場合仮想マシンの外にパケットは送信されず、余分なトラフィックを発生させずにルーティング処理を実施することができる。
【００３７】
次に図６のフローチャートを参照して、ホットマイグレーション実行時の動作について説明する。なお、今回の説明例では、ＶＭ２１０が仮想マシンモニタ１１０から仮想マシンモニタ１２０へ移行処理を開始するものとする。
【００３８】
まず、仮想マシンのホットマイグレーション実行処理について説明する。ホットマイグレーション実行処理では管理サーバ３００からの実行命令を受け、ＶＭ２１０が他仮想マシンモニタである仮想マシンモニタ１２０への移行処理を開始する（ステップＳ１１）。
【００３９】
ステップＳ１１の仮想マシンのホットマイグレーション実行処理が完了すると、ＶＭ２１０は仮想マシンモニタ１２０上での動作を開始する（ステップＳ１２）。
【００４０】
次に、ＶＭ２１０の仮想ＮＩＣのサスペンド処理を行う（ステップＳ１３）。サスペンド処理後は外部ネットワークとの通信は遮断される。これにより、ＶＭ２１０はパケットの送受信が一切実施できない状態となる。
【００４１】
続いて、ＶＭ２１０のデフォルトＧＷを仮想マシンモニタ１１０の仮想ルータＩＰアドレスから仮想マシンモニタ１２０の仮想ルータＩＰアドレスへと変更する（ステップＳ１４）。デフォルトＧＷの変更は予めＶＭ２１０上に格納されている一連の処理部を管理サーバ３００からキックすることにより実行される。上記一連の処理部のリモートからの実行は図７のシーケンス図の流れに沿って実行される。ここで、図７を参照してステップＳ１４の詳細について説明する。
【００４２】
まず、管理サーバ３００がデータベース３０２を検索し、移行先仮想マシンモニタの仮想ルータのＩＰアドレスの取得を試みる（ステップＳ１４−１）。なお、データベース３０２は管理サーバ３００内に組み込まれていてもよいが、管理サーバ３００とは別個の装置によりデータベース３０２を実現し、この実現したデータベース３０２と管理サーバ３００とを接続するように構成してもよい。
【００４３】
管理サーバ３００はデータベース３０２から移行先仮想マシンモニタの仮想ルータのＩＰアドレスを取得すると（ステップＳ１４−２）、取得したＩＰアドレスを仮想マシンモニタ用管理エージェント１１１に送信すると共にデフォルトＧＷの変更命令を出す（ステップＳ１４−３）。
【００４４】
仮想マシンモニタ用管理エージェント１１１は、ＶＭ２１０が有するＶＭ用管理エージェント２１１にデフォルトＧＷの変更命令を行う（ステップＳ１４−４）。
【００４５】
そして、ＶＭ用管理エージェント２１１は、変更命令に応じてデフォルトＧＷを変更し、仮想マシンモニタ用管理エージェント１１１に変更が完了したことを通知する（ステップＳ１４−５）。
【００４６】
最後に、仮想マシンモニタ用管理エージェント１１１が変更完了通知を管理サーバ３００に対して送信してステップＳ１４は終了する（ステップＳ１４−６）。
【００４７】
次に、各仮想マシンモニタのルーティングテーブル及び管理サーバのデータベース更新処理を行う（ステップＳ１５）。各仮想マシンモニタのルーティングテーブル及び管理サーバのデータベースには図８に示す通り、管理サーバ３００によって管理されている各ＶＭのＩＰアドレス及び各ＶＭが動作する仮想マシンモニタ（仮想ルータＩＰアドレス）がそれぞれ紐付けて格納されている。
【００４８】
今回のステップＳ１５では仮想マシンのホットマイグレーションによって移行したＶＭ２１０が動作する仮想マシンモニタ（仮想ルータＩＰアドレス）の情報を、移行元の仮想マシンモニタ１１０から移行先の仮想マシンモニタ１２０へと書き換える。
【００４９】
本実施形態では、ルーティングテーブル及びデータベースの更新処理が管理サーバ３００から命令実行される。そして、更新処理は手動（static）に行われる。仮想マシンのホットマイグレーションによってＶＭは任意の仮想マシンモニタに移行可能であり、ＩＰアドレスが不連続となる可能性がある。そのため、ＲＩＰ（Routing Information Protocol）やＯＳＰＦ（Open Shortest Path First）などのルーティングプロトコルを使用せずに、手動（static）による更新処理を行う。また、管理サーバ３００によって命令実行されるため、各仮想マシンモニタのルーティングテーブルを一括して更新することが可能となる。また本環境ではメトリック値やアドミニストレーティブディスタンス値などを考慮する必要がなく、図８に示す通り、限定的な情報のみ格納すればよい。
【００５０】
ステップＳ１６ではＶＭ２１０の仮想ＮＩＣのレジューム処理を行う。本実施形態では、ステップＳ１３とステップＳ１６のサスペンド・レジューム処理によってステップＳ１４及びステップＳ１５が完了する前の不正なパケットの送受信を防止している。
【００５１】
レジューム処理が終了すると、ＶＭ２１０はネットワークの通信処理を再開する（ステップＳ１７）。
【００５２】
ＶＭ２１０のホットマイグレーションが完了した後は、図１１に示すような構成となる。この図１１においてＶＭ２１０が外部ネットワークと通信する場合は、先に説明した内容と同様、ルータ５００は仮想マシンモニタ１２０上で動作するルーティング処理部１２４の存在を意識することなく、通常のルーティング処理が実施される。
【００５３】
一方、ＶＭ２１０がセグメントの異なるＶＭ２２０と通信する場合は、図９に示すフローチャートに従って、宛先ＭＡＣアドレスを仮想マシンモニタ１１０のＭＡＣアドレスに設定し、送信パケットを外部送信パケットキュー１１５に格納する。その後仮想マシンモニタ１１０にパケットが送信される。仮想マシンモニタ１１０では図１０に示すフローチャートに従ってパケットの受信処理を行い、宛先ＭＡＣアドレスをＶＭ２２０の宛先ＭＡＣアドレスに変更する。その後ＶＭ２２０に対してパケットが送信される。このためＶＭ２１０がセグメントの異なるＶＭ２２０と通信を行う場合、ルータ５００を経由せず、通信が行われるため、余分なトラフィックを発生させずにルーティング処理を実施することができる。
【００５４】
以下ではパケット送受信時のルーティング処理部１１３の動作について詳細に説明する。
【００５５】
図９はゲストＯＳからのパケット送信（仮想マシンモニタ外部へパケット送信）する際の動作を表すフローチャートである。
【００５６】
まず、ゲストＯＳからのパケット送信がなされる（ステップＳ２１）。
【００５７】
続いて、ゲストＯＳが送信するパケットの宛先ＩＰアドレスが同一セグメントであるか否かを識別する（ステップＳ２２）。
【００５８】
ここで、同一セグメントであれば（ステップＳ２２においてＹｅｓ）、ステップＳ２８へ進み、通常のレイヤ２でのパケット送信処理が実施される。
【００５９】
一方、ステップＳ２２による判断で、同一セグメントでない場合は（ステップＳ２２においてＮｏ）ステップＳ２３へと進む。そして、ステップＳ２３〜７で示されるルーティング処理部１１３によるルーティング処理が実施される。
【００６０】
具体的には、ステップＳ２３ではデフォルトＧＷである仮想ルータにパケットを送信する（ステップＳ２３）。
【００６１】
続いて、ルーティングテーブルを参照し、宛先ＩＰアドレスが登録されている仮想ルータを識別する（ステップＳ２４）。
【００６２】
そして、仮想ルータＩＰアドレスが自仮想マシンモニタと同一であるか判別する（ステップＳ２５）。同一でない場合（ステップＳ２５においてＮｏ）はステップＳ２６へ、同一の場合（ステップＳ２５においてＹｅｓ）はステップＳ２７へと進む。
【００６３】
ステップＳ２６では、パケットヘッダの宛先ＭＡＣアドレスを識別した宛先仮想ルータのＭＡＣアドレスに変換することで、即座にパケット送信処理を行うことが可能となる。つまり、ａｒｐパケットにより、宛先ＭＡＣアドレス取得の時間を待たずに処理が可能となる。
【００６４】
ステップＳ２７では、パケットヘッダの宛先ＭＡＣアドレスを宛先仮想マシンのＭＡＣアドレスに変換することで、即座にパケット送信処理を行うことが可能となる。つまり、ａｒｐパケットにより、宛先ＭＡＣアドレス取得の時間を待たずに処理が可能となる。
【００６５】
その後、パケットを送信キューに格納し（ステップＳ２８）、ハイパーバイザーのパケット送信処理を実施する（ステップＳ２９）。
【００６６】
図１０は、仮想マシンモニタが外部からパケットを受信する際の動作を表すフローチャートである。
【００６７】
まず、仮想マシンモニタが外部からパケットを受信する（ステップＳ３１）。
【００６８】
続いて、パケットヘッダの解析処理を行う（ステップＳ３２）。
【００６９】
ステップＳ３３及びステップＳ３４で宛先ＩＰアドレス及び宛先ＭＡＣアドレスが自仮想マシンモニタ上で動作していないものであれば（ステップＳ３３及びステップＳ３４においてＮｏ）、パケットの廃棄を行う（ステップＳ３５）。
【００７０】
一方、自仮想マシンモニタ上で動作しているものであれば、（ステップＳ３３及びステップＳ３４においてＹｅｓ）、パケットヘッダの宛先ＭＡＣアドレスが自仮想ルータ宛のものであるかを識別する（ステップＳ３６）。
【００７１】
自仮想ルータ宛のものであれば（ステップＳ３６においてＹｅｓ）ルーティング処理部１１３によって宛先ＭＡＣアドレスを送信先ＶＭのＭＡＣアドレスに変換を行い（ステップＳ３７）、自仮想ルータ宛のものでない場合は（ステップＳ３６においてＮｏ）、ルーティング処理部１１３を介さず、そのままステップＳ３８へと進む。
【００７２】
ステップＳ３８ではハイパーバイザーによるパケット受信処理（仮想マシンへのパケット送信）を行う。図１０に示すフローチャートに従って、余分なパケットの廃棄や、必要最低限のルーティング処理を実施することにより処理を軽減することができる。
【００７３】
なお、本発明の実施形態である管理サーバ及び仮想マシンモニタは、ハードウェアにより実現することもできるが、コンピュータをその管理サーバ及び仮想マシンモニタとして機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００７４】
また、本発明の実施形態による仮想ルーティング方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００７５】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【００７６】
更に、上記実施形態では、仮想マシンモニタや管理エージェント等を実現するためのプログラムが、コンピュータに予め記憶されているものとして説明した。しかし、コンピュータを、管理サーバや仮想マシンモニタの全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）、ＤＶＤ（Digital Versatile Disc)、ＭＯ（Magneto Optical Disk(Disc)）ＢＤ（Blu-ray Disc）等のコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【００７７】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波にプログラムを重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
【００７８】
以上説明した本発明の実施形態は、以下に示すような多くの効果を奏する。
【００７９】
第１の効果は余分な経路を経由せずパケット転送が可能となることである。また物理ルータを超えて通信を行う場合に、物理ルータが仮想ルータの存在を意識せず、パケット転送処理を行うことが可能となることである。
【００８０】
その理由は、セグメントの異なる仮想マシン間で通信を行う際に仮想ルータ機能を実現させるからである。
【００８１】
第２の効果は各仮想マシンモニタ上の仮想マシンが不連続なＩＰアドレスを持つ構成でもルーティング処理が可能となることである。更に、仮想マシンのホットマイグレーションによって任意の仮想マシンモニタ上への移行が可能となることである。
【００８２】
その理由は、管理サーバによって一括したルーティングテーブルの更新処理を行い、またその更新方法はルーティングプロトコルを使用せず、ｓｔａｔｉｃ（手動）によって実施されるからである。
【００８３】
第３の効果は仮想マシンのホットマイグレーション実行後、ａｒｐパケットによって宛先ＭＡＣアドレス取得の時間を待たずにパケット送信が可能となることである。
【００８４】
その理由は、仮想マシンのホットマイグレーション実行時にデフォルトＧＷが変更され、またルーティング処理部がパケット内の宛先ＭＡＣアドレス部を宛先仮想ルータＭＡＣアドレスへ変換するため、ａｒｐパケットによって宛先ＭＡＣアドレスを取得する必要がないためである。
【００８５】
第４の効果は、余分なルーティング処理を実施しないことである。
【００８６】
その理由は、パケットの送受信処理をする際に同一セグメント間通信の場合はルーティング処理を実施しない仕組みを実装しているからである。また関係ないパケットについてはドロップさせる処理をするため、セキュリティの観点からも望ましい。
【００８７】
第５の効果はルーティングテーブルには簡略的な情報のみを格納するだけでよいことである。
【００８８】
その理由は、管理サーバ管理下の全ＶＭのＩＰアドレス及びそのＶＭが動作する仮想マシンモニタ（仮想ルータＩＰアドレス）の情報のみを格納すればよいからである。
【００８９】
第６の効果は余分なパケットのフラッディングを防ぐことが可能となることである。
【００９０】
その理由は、仮想ＮＩＣのサスペンド処理及びレジューム処理を実施するからである。
【００９１】
第７の効果はルーティングテーブルの更新処理時になりすまし、改竄を防ぐことができることである。
【００９２】
その理由は、証明書を利用するからである。
【００９３】
第８の効果は移行時に仮想マシンの所属するセグメント自体を変更させる必要がないことである。
【００９４】
その理由は、各仮想マシンモニタにルーティング処理部を持たせることによって別セグメント間のルーティング処理を可能となるからである。そして、そのために別セグメント間通信時に余分なトラフィックが発生しないという効果も奏する。
【００９５】
なお、以上本実施形態の構成、動作及び効果について説明したが、これらを端的にまとめると、仮想マシンモニタ及び仮想マシンモニタの管理サーバに以下の機能を持たせることであるといえる。
１．  各仮想マシンモニタのハイパーバイザーはルーティング処理を行うためのルーティング処理部を持つ。
２．  上記ルーティング機能を実施するため、各仮想マシンモニタのハイパーバイザーは重複しないＩＰアドレス（仮想ルータＩＰアドレス）を複数セグメント分持つ。（つまりセグメントの異なる複数のＩＰアドレスを持っており、また各ＩＰアドレスは各仮想マシンモニタ毎に異なり、重複はないものとする）
３．  上記ルーティング機能を使用するために各仮想マシンモニタはルーティングテーブルを保持する。ルーティングテーブルは２種類存在し、一つは物理ルータ間との通信、残りのひとつは仮想マシンモニタ間での通信に使用する。仮想マシンモニタ間での通信に使用されるルーティングテーブルは以下の４〜７で示される特徴を持つ。
４．  仮想マシンモニタ間の通信で使用される各ルーティングテーブルには管理サーバによって管理される全てのＶＭのＩＰアドレスと、ＶＭが動作する仮想マシンモニタの仮想ルータＩＰアドレスとの対応付けが記載されているものとする。
５．  上記ルーティングテーブルには上記で挙げた項目以外は含まれず、限定された情報のみを格納するルーティングテーブルである。（通常のルーティングで使用されるようなメトリック値、アドミニストレーティブディスタンス値などの情報は格納されない）
６．  ルーティングテーブルの更新は手動（static）によって実施され、ＲＩＰやＯＳＰＦなどのルーティングプロトコルは使用しない。（手動登録のみを許可することにより各仮想マシンモニタ上で動作するＶＭのＩＰアドレスが不連続な場合でも、ルーティングテーブルへの登録が可能となり、ルーティングを継続させることが可能となる）
７．  上記ルーティングテーブルは管理サーバによってのみ更新される。
８．  管理サーバは証明書機能を持ち、管理サーバ以外の外部のサーバから不正に仮想マシンモニタのルーティングテーブルの情報更新はできないものとする。
９．  管理サーバはデータベースを所有しており、全ＶＭのＩＰアドレス及び各ＶＭが動作する仮想マシンモニタの仮想ルータＩＰアドレスの情報を保持しているものとする。
１０．  各ＶＭには管理用エージェントがインストールされており、管理サーバは最新のＩＰアドレスの情報を把握できるものとする。
１１．  上記管理用エージェントはゲストＯＳ上のデフォルトＧＷを指定したＩＰアドレスに変更するための一連の処理部を外部からキックできるインタフェースを提供しており、管理サーバからの実行が可能とする。
１２．  管理サーバから上記のデフォルトＧＷ変更の命令を実施する場合は、上記「８」の証明書の機能を使用して、セキュアな通信を行いながら、仮想マシンモニタ経由で命令の実行を行う。
１３．  仮想マシンのホットマイグレーションなどによってＶＭが他仮想マシンモニタ上に移行した場合は、各仮想マシンモニタはルーティングテーブルの情報を更新する。また管理サーバが所有するデータベースの情報更新も行う。
１４．  仮想マシンのホットマイグレーションなどによって他仮想マシンモニタ上に移行されるＶＭは、管理サーバから上記「１１」の機能を使用して、移行先仮想マシンモニタの仮想ルータＩＰアドレスがデフォルトＧＷとして設定される。
１５．  各仮想マシンモニタのハイパーバイザーは受信パケットのＭＡＣアドレスを判断するためのＭＡＣアドレス判断処理部を持つ。本ＭＡＣアドレス判断処理部は仮想マシンモニタが仮想マシンモニタ外部からのパケットを受信した際に、パケットからＭＡＣアドレスの情報を読み取り、宛先ＭＡＣアドレスが自仮想マシンモニタの仮想ルータのＭＡＣアドレスと一致しているかどうかを判断する。
【００９６】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００９７】
（付記１）  複数の仮想マシンモニタが相互に接続されている通信システムにおいて、
前記複数の仮想マシンモニタは、相互に異なる仮想ルータＩＰアドレスをセグメント毎に備え、
前記複数の仮想マシンモニタは、前記複数の仮想マシンモニタ上で動作する仮想マシンの仮想マシンＩＰアドレスと前記仮想ルータＩＰアドレスを対応付けた第１のルーティングテーブルと、ＶＬＡＮの所属を示す第２のルーティングテーブルと、を更に備え、
前記複数の仮想マシンモニタは、パケットを送信する際に、前記第１のルーティングテーブルを参照することにより前記送信するパケットの宛先仮想ルータＩＰアドレスを識別し、当該識別した宛先仮想ルータＩＰアドレスが自仮想マシンモニタと同一であるか否かを判別し、当該判別の結果自仮想マシンと同一の場合は宛先ＭＡＣアドレスを宛先仮想マシンのＭＡＣアドレスに変換し、当該判別の結果自仮想マシンと同一でなかった場合は宛先ＭＡＣアドレスを宛先仮想ルータのＭＡＣアドレスに変換し、当該変換後のパケットを送信することを特徴とする通信システム。
【００９８】
（付記２）  付記１に記載の通信システムにおいて、
前記複数の仮想マシンモニタは、外部からパケットを受信した際に、当該受信したパケットヘッダを参照し、参照した結果宛先ＩＰアドレス及び宛先ＭＡＣアドレスが自仮想マシンモニタ上で動作しているものであり、且つ、宛先ＭＡＣアドレスが仮想ルータ宛てのものであった場合に、宛先ＭＡＣアドレスを送信先仮想マシンのＭＡＣアドレスに変換した後にパケット受信処理を行うことを特徴とする通信システム。
【００９９】
（付記３）  付記１又は２に記載の通信システムにおいて、
前記複数の仮想マシンモニタは、外部からパケットを受信した際に、当該受信したパケットヘッダを参照し、参照した結果宛先ＩＰアドレス及び宛先ＭＡＣアドレスが自仮想マシンモニタ上で動作しているものであり、且つ、宛先ＭＡＣアドレスが仮想ルータ宛てのものでは無かった場合に前記受信したパケットを廃棄することを特徴とする通信システム。
【０１００】
（付記４）  付記１乃至３の何れか１に記載の通信システムにおいて、
前記第２のルーティングテーブルを参照することにより物理ルータを介した外部ネットワークとの通信を行うことを特徴とする通信システム。
【０１０１】
（付記５）  付記１乃至４の何れか１に記載の通信システムにおいて、
当該通信システムは更に管理サーバを有しており、
前記第１のルーティングテーブルは、前記管理サーバによってのみ更新されることを特徴とする通信システム。
【０１０２】
（付記６）  付記５に記載の通信システムにおいて、
前記管理サーバが行う前記第１のルーティングテーブルの更新は手動によって実施され、自動的にＩＰアドレスを割り振るルーティングプロトコルは使用しないことを特徴とする通信システム。
【０１０３】
（付記７）  付記５又は６に記載の通信システムにおいて、
前記仮想マシンが移行元の仮想マシンモニタとは異なる仮想マシンである移行先仮想マシンモニタへと移行する際に、前記第１のルーティングテーブルの変更を含む所定の処理を実行している間は当該仮想マシンの仮想ＮＩＣを停止させることにより、当該所定の処理を実行している間はパケットの送受信を停止させることを特徴とする通信システム。
【０１０４】
（付記８）  複数の仮想マシンモニタが相互に接続されているシステムが行うルーティング方法において、
前記複数の仮想マシンモニタに相互に異なる仮想ルータＩＰアドレスをセグメント毎に用意させるステップと、
前記複数の仮想マシンモニタは、前記複数の仮想マシンモニタ上で動作する仮想マシンの仮想マシンＩＰアドレスと前記仮想ルータＩＰアドレスを対応付けた第１のルーティングテーブルと、ＶＬＡＮの所属を示す第２のルーティングテーブルと、を用意させるステップと、を備え、
前記複数の仮想マシンモニタは、パケットを送信する際に、前記第１のルーティングテーブルを参照することにより前記送信するパケットの宛先仮想ルータＩＰアドレスを識別し、当該識別した宛先仮想ルータＩＰアドレスが自仮想マシンモニタと同一であるか否かを判別し、当該判別の結果自仮想マシンと同一の場合は宛先ＭＡＣアドレスを宛先仮想マシンのＭＡＣアドレスに変換し、当該判別の結果自仮想マシンと同一でなかった場合は宛先ＭＡＣアドレスを宛先仮想ルータのＭＡＣアドレスに変換し、当該変換後のパケットを送信することを特徴とするルーティング方法。
【産業上の利用可能性】
【０１０５】
本発明は、例えばＶＭｗａｒｅやＸｅｎ、Ｈｙｐｅｒ−Ｖなど仮想化ソフトウェアを利用する環境において好適である。
【符号の説明】
【０１０６】
１１０、１２０  仮想マシンモニタ
１１１、１２１  仮想マシンモニタ用管理エージェント
１１２、１２２  ハイパーバイザー
１１３、１２３  ルーティング処理部
１１４、１２４  外部パケット送信キュー
１１５、１２５  内部パケット送信キュー
１１６、１２６  ＮＩＣ
２１０、２２０、２３０  ＶＭ
３００  管理サーバ
３０１  証明書
３０２  データベース
４００  スイッチ
５００  ルータ
６００  外部ネットワーク
【図１】
0005760647.tif 000002
【図２】
0005760647.tif 000003
【図３】
0005760647.tif 000004
【図４】
0005760647.tif 000005
【図５】
0005760647.tif 000006
【図６】
0005760647.tif 000007
【図７】
0005760647.tif 000008
【図８】
0005760647.tif 000009
【図９】
0005760647.tif 000010
【図１０】
0005760647.tif 000011
【図１１】
0005760647.tif 000012