(57)【特許請求の範囲】
【請求項１】
第１のＩＰアドレスを有し、ゲストＯＳが動作可能な第１の仮想マシンモニタと、
前記第１の仮想マシンモニタが動作する第１のハードウェアと、
前記第１のＩＰアドレスとは異なる第２のＩＰアドレスを有し、ゲストＯＳが動作可能な第２の仮想マシンモニタと、
前記第２の仮想マシンモニタが動作する第２のハードウェアと、
前記第１のハードウェアが接続される第１のネットワークセグメント及び前記第２のハードウェアが接続される、前記第１のネットワークセグメントとは異なる第２のネットワークセグメントから構成され、前記第１のハードウェア及び前記第２のハードウェアを接続するネットワークとを具備する仮想マシンシステムであって、
前記第１の仮想マシンモニタは、
前記第１のハードウェアと前記第１の仮想マシンモニタ上で動作するゲストＯＳとの間の通信データの入出力を制御する入出力制御手段と、
前記第１の仮想マシンモニタから前記第２の仮想マシンモニタへのゲストＯＳの移動及び前記第２の仮想マシンモニタから前記第１の仮想マシンモニタへのゲストＯＳの移動を制御するゲストＯＳ制御手段と、
前記ゲストＯＳ制御手段の制御によるゲストＯＳの移動状態を管理する移動管理手段と、
前記移動管理手段によって管理されているゲストＯＳの移動状態に基づき、通信データが、前記第１の仮想マシンモニタ及び第２の仮想マシンモニタの間を移動したゲストＯＳ宛ての第１のＩＰパケットを含む第１の通信データ、前記第１のＩＰパケットが格納された第２の通信データ、前記移動したゲストＯＳが送信する第２のＩＰパケットを含む第３の通信データ、または前記第２のＩＰパケットが格納された第４の通信データであるかを判定し、当該判定結果に応じて前記通信データの転送を制御する通信転送制御手段とを含み、
前記第１の仮想マシンモニタの前記通信転送制御手段は、
前記通信データが、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタに移動したゲストＯＳ宛ての第１の通信データである場合、当該第１の通信データの第１のＩＰパケットを、前記第２のＩＰアドレスを宛先ＩＰアドレスとし、前記第１のＩＰアドレスを送信元ＩＰアドレスとする前記第２の仮想マシンモニタ宛ての第２の通信データに格納して、当該第１のＩＰパケットが格納された前記第２の通信データを前記入出力制御手段により前記第２の仮想マシンモニタに転送し、
前記通信データが、前記第２の仮想マシンモニタから前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての第１の通信データの第１のＩＰパケットを格納した、前記第１のＩＰアドレスを宛先ＩＰアドレスとし、前記第２のＩＰアドレスを送信元ＩＰアドレスとする前記第１の仮想マシンモニタ宛ての第２の通信データである場合、前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての当該第１の通信データの前記第１のＩＰパケットを当該第２の通信データから取り出して、当該取り出された第１のＩＰパケットを含む第５の通信データを前記第１の仮想マシンモニタに移動したゲストＯＳに前記入出力制御手段により提供し、
前記通信データが、前記第２の仮想マシンモニタから前記第１の仮想マシンモニタに移動したゲストＯＳが送信した第３の通信データである場合、前記第２のＩＰアドレスを宛先ＩＰアドレスとし、前記第１のＩＰアドレスを送信元ＩＰアドレスとする前記第２の仮想マシンモニタ宛ての第４の通信データに当該第３の通信データの第２のＩＰパケットを格納して、当該第２のＩＰパケットが格納された前記第４の通信データを前記入出力制御手段により前記第２の仮想マシンモニタに転送し、
前記通信データが、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタに移動したゲストＯＳが送信した第３の通信データの第２のＩＰパケットを格納した、前記第１のＩＰアドレスを宛先ＩＰアドレスとし、前記第２のＩＰアドレスを送信元ＩＰアドレスとする前記第１の仮想マシンモニタ宛ての第４の通信データである場合、前記第２の仮想マシンモニタに移動したゲストＯＳが送信した当該第３の通信データの前記第２のＩＰパケットを当該第４の通信データから取り出して、当該取り出された第２のＩＰパケットを含む第６の通信データを前記入出力制御手段により前記ネットワークに送信する
ことを特徴とする仮想マシンシステム。
【請求項２】
前記第１の仮想マシンモニタの前記移動管理手段は、
ゲストＯＳのＩＰアドレスと当該ゲストＯＳの移動先の仮想マシンモニタのＩＰアドレスとを登録するための第１のテーブルと、
ゲストＯＳのＩＰアドレスと当該ゲストＯＳの移動元の仮想マシンモニタのＩＰアドレスとを登録するための第２のテーブルとを含み、
前記第１の仮想マシンモニタは、前記ゲストＯＳ制御手段の制御によるゲストＯＳの状態遷移の通知を当該ゲストＯＳ制御手段から受信するゲストＯＳ状態受信手段であって、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタへの前記ゲストＯＳの移動が完了した通知を受信した場合、当該ゲストＯＳの物理アドレス及びＩＰアドレスの対と当該ゲストＯＳの移動先の前記第２の仮想マシンモニタの前記第２のＩＰアドレスを含むデータを前記第１の仮想マシンモニタの前記第１のテーブルに登録し、前記第２の仮想マシンモニタから前記第１の仮想マシンモニタへの前記ゲストＯＳの移動が完了した通知を受信した場合、当該ゲストＯＳの物理アドレス及びＩＰアドレスの対と当該ゲストＯＳの移動元の前記第２の仮想マシンモニタの前記第２のＩＰアドレスを含むデータを前記第１の仮想マシンモニタの前記第２のテーブルに登録するゲストＯＳ状態受信手段を含む
ことを特徴とする請求項１記載の仮想マシンシステム。
【請求項３】
前記第１の仮想マシンモニタの前記通信転送制御手段は、前記通信データの判定を前記第１及び第２のテーブルに基づき実行する通信データ判定手段を含み、
前記通信データ判定手段は、
前記通信データの宛先に一致するゲストＯＳの物理アドレス及びＩＰアドレスの対が前記第１のテーブルに登録されているならば、前記通信データが前記第２の仮想マシンモニタに移動したゲストＯＳ宛ての前記第１の通信データであると判定し、
前記通信データの宛先ＩＰアドレスが前記第１の仮想マシンモニタ自身の前記第１のＩＰアドレスであり、且つ前記通信データの送信元ＩＰアドレスに一致する前記第２の仮想マシンモニタの前記第２のＩＰアドレスが前記第２のテーブルに登録されているならば、前記通信データが前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての前記第１の通信データの前記第１のＩＰパケットを格納した前記第２の通信データであると判定し、
前記通信データの送信元に一致するゲストＯＳの物理アドレス及びＩＰアドレスが前記第２のテーブルに登録されているならば、前記通信データが前記第２の仮想マシンモニタに移動したゲストＯＳが送信した前記第３の通信データであると判定し、
前記通信データの宛先ＩＰアドレスが前記第１の仮想マシンモニタ自身の前記第１のＩＰアドレスであり、且つ前記通信データの送信元ＩＰアドレスに一致する前記第２の仮想マシンモニタの前記第２のＩＰアドレスが前記第１の仮想マシンモニタの前記第１のテーブルに登録されているならば、前記通信データが前記第２の仮想マシンモニタに移動したゲストＯＳが送信した前記第３の通信データの前記第２のＩＰパケットを格納した前記第４の通信データであると判定する
ことを特徴とする請求項２記載の仮想マシンモニタシステム。
【請求項４】
前記第１の仮想マシンモニタの前記通信転送制御手段は、
前記通信データが前記第２の仮想マシンモニタに移動したゲストＯＳ宛ての前記第１の通信データであると判定された場合、当該第１の通信データの第１のＩＰパケットを格納した前記第２の通信データであって、当該第１の通信データの宛先に一致するゲストＯＳの物理アドレス及びＩＰアドレスに対応付けて前記第１のテーブルに登録されている前記第２の仮想マシンモニタの前記第２のＩＰアドレスを宛先アドレスとし、前記第１の仮想マシンモニタ自身の前記第１のＩＰアドレスを送信元ＩＰアドレスとする前記第２の通信データを作成し、
前記通信データが前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての前記第１の通信データの第１のＩＰパケットを格納した前記第２の通信データであると判定された場合、当該第２の通信データに格納されている前記第１のＩＰパケットに、当該第２の通信データの送信元ＩＰアドレスに一致する前記第２の仮想マシンモニタの前記第２のＩＰアドレスと対応付けて前記第２のテーブルに登録されているゲストＯＳの物理アドレスを宛先物理アドレスとし、偽の物理アドレスを送信元物理アドレスとするデータリンク層ヘッダが付加されたデータリンク層フレームを前記第５の通信データとして作成し、
前記通信データが前記第２の仮想マシンモニタに移動したゲストＯＳが送信した前記第３の通信データであると判定された場合、当該第３の通信データの第２のＩＰパケットを格納した前記第４の通信データであって、当該第３の通信データの送信元に一致するゲストＯＳの物理アドレス及びＩＰアドレスに対応付けて前記第２のテーブルに登録されている前記第２の仮想マシンモニタの前記第２のＩＰアドレスを宛先アドレスとし、前記第１の仮想マシンモニタ自身の前記第１のＩＰアドレスを送信元ＩＰアドレスとする前記第４の通信データを作成し、
前記通信データが前記第２の仮想マシンモニタに移動したゲストＯＳが送信した前記第３の通信データの第２のＩＰパケットを格納した前記第４の通信データであると判定された場合、当該第４の通信データに格納されている前記第２のＩＰパケットを取り出し、当該第２のＩＰパケットの宛先ＩＰアドレスに対応する物理アドレスを宛先物理アドレスとし、当該第２のＩＰパケットの送信元ＩＰアドレスに一致する前記第２の仮想マシンモニタの前記第２のＩＰアドレスに対応付けて前記第１の仮想マシンモニタの前記第１のテーブルに登録されているゲストＯＳの物理アドレスを送信元物理アドレスとするデータリンク層ヘッダが付加されたデータリンク層フレームを前記第６の通信データとして作成する
ことを特徴とする請求項３記載の仮想マシンシステム。
【請求項５】
前記第１の仮想マシンモニタの前記通信データ判定手段は、前記通信データがアドレス解決プロトコル要求及びアドレス解決プロトコル応答のいずれであるかを判定し、
前記第１の仮想マシンモニタの前記通信転送制御手段は、前記通信データ判定手段によって前記通信データが前記アドレス解決プロトコル要求または前記アドレス解決プロトコル応答であると判定された場合に動作するアドレス解決プロトコル処理手段を含み、
前記アドレス解決プロトコル処理手段は、前記通信データが前記アドレス解決プロトコル要求であるならば、当該アドレス解決プロトコル要求の宛先のＩＰアドレスが前記第１のテーブルに登録されているゲストＯＳのＩＰアドレスに一致する第１の場合か、或いは前記アドレス解決プロトコル要求の送信元のＩＰアドレスが前記第２のテーブルに登録されているゲストＯＳのＩＰアドレスに一致する第２の場合かを判定し、前記第１の場合、前記一致するＩＰアドレスと対をなして前記第２のテーブルに登録されている物理アドレスを通知するためのアドレス解決プロトコル応答を前記アドレス解決プロトコル要求の送信元に返し、前記第２の場合、偽の物理アドレスを通知するためのアドレス解決プロトコル応答を前記入出力制御手段により前記アドレス解決プロトコル要求の送信元に返す
ことを特徴とする請求項３または４に記載の仮想マシンシステム。
【請求項６】
前記第１の仮想マシンモニタの前記通信データ判定手段は、
前記通信データがゲストＯＳ宛ての受信データの場合、当該通信データの送信先ＩＰアドレスに一致するゲストＯＳのＩＰアドレスが前記第１のテーブルに登録されていないならば、当該通信データが、前記第１の仮想マシンモニタ上で動作する移動していないゲストＯＳ宛ての第７の通信データであると判定し、
前記通信データがゲストＯＳからの送信データの場合、当該通信データの送信元ＩＰアドレスに一致するゲストＯＳのＩＰアドレスが前記第２のテーブルに登録されていないならば、前記通信データが、前記第１の仮想マシンモニタ上で動作する移動していないゲストＯＳが送信した第８の通信データであると判定し、
前記第１の仮想マシンモニタの前記通信転送制御手段は、前記通信データ判定手段によって前記第７の通信データであると判定された通信データを前記移動していないゲストＯＳに渡し、前記通信データ判定手段によって前記第８の通信データであると判定された通信データを前記入出力制御手段により前記ネットワークに送信する
ことを特徴とする請求項３または４に記載の仮想マシンモニタシステム。
【請求項７】
第１のＩＰアドレスを有し、且つゲストＯＳが動作可能な第１の仮想マシンモニタと、前記第１の仮想マシンモニタが動作する第１のハードウェアと、前記第１のＩＰアドレスとは異なる第２のＩＰアドレスを有し、ゲストＯＳが動作可能な第２の仮想マシンモニタと、前記第２の仮想マシンモニタが動作する第２のハードウェアと、前記第１のハードウェアが接続される第１のネットワークセグメント及び前記第２のハードウェアが接続される、前記第１のネットワークセグメントとは異なる第２のネットワークセグメントから構成され、前記第１のハードウェア及び前記第２のハードウェアを接続するネットワークとを具備する仮想マシンシステムに適用される仮想マシンモニタ用プログラムであって、
前記第１のハードウェアと前記第１の仮想マシンモニタ上で動作するゲストＯＳとの間の通信データの入出力を制御する入出力制御手段と、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタへのゲストＯＳの移動及び前記第２の仮想マシンモニタから前記第１の仮想マシンモニタへのゲストＯＳの移動を制御するゲストＯＳ制御手段と、前記ゲストＯＳ制御手段の制御によるゲストＯＳの移動状態を管理する移動管理手段とを有する前記第１の仮想マシンモニタに、
前記移動管理手段によって管理されているゲストＯＳの移動状態に基づき、通信データが、前記第１の仮想マシンモニタ及び第２の仮想マシンモニタの間を移動したゲストＯＳ宛ての第１のＩＰパケットを含む第１の通信データ、前記第１のＩＰパケットが格納された第２の通信データ、前記移動したゲストＯＳが送信する第２のＩＰパケットを含む第３の通信データ、または前記第２のＩＰパケットが格納された第４の通信データであるかを判定するステップと、
前記通信データが、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタに移動したゲストＯＳ宛ての第１の通信データである場合、当該第１の通信データの第１のＩＰパケットを、前記第２のＩＰアドレスを宛先ＩＰアドレスとし、前記第１のＩＰアドレスを送信元ＩＰアドレスとする前記第２の仮想マシンモニタ宛ての第２の通信データに格納して、当該第１のＩＰパケットが格納された前記第２の通信データを前記入出力制御手段によって前記第２の仮想マシンモニタに転送させるステップと、
前記通信データが、前記第２の仮想マシンモニタから前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての第１の通信データの第１のＩＰパケットを格納した、前記第１のＩＰアドレスを宛先ＩＰアドレスとし、前記第２のＩＰアドレスを送信元ＩＰアドレスとする前記第１の仮想マシンモニタ宛ての第２の通信データである場合、前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての当該第１の通信データの前記第１のＩＰパケットを当該第２の通信データから取り出して、当該取り出された第１のＩＰパケットを含む第５の通信データを前記第１の仮想マシンモニタに移動したゲストＯＳに前記入出力制御手段によって提供させるステップと、
前記通信データが、前記第２の仮想マシンモニタから前記第１の仮想マシンモニタに移動したゲストＯＳが送信した第３の通信データである場合、前記第２のＩＰアドレスを宛先ＩＰアドレスとし、前記第１のＩＰアドレスを送信元ＩＰアドレスとする前記第２の仮想マシンモニタ宛ての第４の通信データに当該第３の通信データの第２のＩＰパケットを格納して、当該第２のＩＰパケットが格納された前記第４の通信データを前記入出力制御手段によって前記第２の仮想マシンモニタに転送させるステップと、
前記通信データが、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタに移動したゲストＯＳが送信した第３の通信データの第２のＩＰパケットを格納した、前記第１のＩＰアドレスを宛先ＩＰアドレスとし、前記第２のＩＰアドレスを送信元ＩＰアドレスとする前記第１の仮想マシンモニタ宛ての第４の通信データである場合、前記第２の仮想マシンモニタに移動したゲストＯＳが送信した当該第３の通信データの前記第２のＩＰパケットを当該第４の通信データから取り出して、当該取り出された第２のＩＰパケットを含む第６の通信データを前記入出力制御手段によって前記ネットワークに送信させるステップと
を実行させるための仮想マシンモニタ用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲストＯＳが動作可能な第１の仮想マシンモニタが動作する第１のハードウェアと、ゲストＯＳが動作可能な第２の仮想マシンモニタが動作する第２のハードウェアとがネットワークにより接続された仮想マシンシステムに係り、特に、仮想マシンモニタ間でゲストＯＳが移動する場合に好適な仮想マシンシステム及び仮想マシンモニタ用プログラムプログラムに関する。
【背景技術】
【０００２】
ハードウェア（実ハードウェア）上で仮想マシンモニタ（Virtual Machine Monitor: ＶＭＭ）が動作し、当該モニタ上で当該ハードウェア（ＨＷ）をエミュレートする仮想マシンが複数存在できる環境は、仮想マシン環境（または仮想化環境）と呼ばれている。このような仮想マシン環境では、各仮想マシン上で、オペレーティングシステム（以下、ゲストＯＳと称する）が作動することで、１台のＨＷ上に複数のゲストＯＳ環境を構築することができる
仮想マシンモニタは、ＨＷ上で動作するオペレーティングシステム（以下、ホストＯＳと称する）のカーネル上のモジュールとして実現されるタイプと、仮想マシンモニタ自身がハーイパーバイザと呼ばれるカーネル自身として実現されるタイプとに分類される。どちらのタイプの仮想マシンモニタを適用しても、１台のＨＷ上に複数のゲストＯＳ環境を構築することができる。つまり、どちらのタイプの仮想マシンモニタでも、ゲストＯＳのＨＷに対する要求を仮想マシンモニタがエミュレートし、エミュレートされた要求を仮想マシンモニタが受け取って当該ＨＷにアクセスするという点では、同じである。
【０００３】
仮想マシン環境では、ゲストＯＳイメージを格納した共有ディスク装置に、仮想マシンモニタを持つ複数台のＨＷを接続することで、ＨＷ（上で動作する仮想マシンモニタ）間でゲストＯＳを移動（マイグレート）すること、つまり仮想マシンを移動することが可能となる。ゲストＯＳイメージとは、記憶領域にインストールされて設定されたゲストＯＳの記憶イメージである、
このようなＨＷ（上で動作する仮想マシンモニタ）間をまたがった仮想マシン（ゲストＯＳ）の移動（マイグレーション）は、様々な状況で利用される。例えば特許文献１には、ＨＷを停止させる際に、当該ＨＷ上で動作する仮想マシンモニタ（つまり当該ＨＷが持つ仮想マシンモニタ）によって実現される仮想マシン環境で稼働中の仮想マシンを他のＨＷ（上で動作する仮想マシンモニタ）に移動すること、或いはＨＷの負荷が増大した際に稼働中の仮想マシンを負荷の軽い他のＨＷ（上で動作する仮想マシンモニタ）に移動することが記載されている。
【特許文献１】特開２００６−２４４４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１に記載されているような仮想マシン（ゲストＯＳ）の移動では、以下に述べるように不具合が発生する可能性がある。今、移動元の仮想マシンモニタが動作するＨＷが、第１のネットワークセグメントと接続されているものとする。一方、移動先の仮想マシンモニタが動作するＨＷが、上記第１のネットワークセグメントとは異なる、第２のネットワークセグメントと接続されているものとする。この場合、移動後の仮想マシン（ゲストＯＳ）は、移動前の仮想マシンと通信していた相手（クライアント端末）と通信できなくなる可能性がある。このような不具合は、移動後の仮想マシン（ゲストＯＳ）のＩＰ（Internet Protocol）アドレスに関する通信を、ルータが中継できないために発生する。
【０００５】
本発明は上記事情を考慮してなされたものでその目的は、ゲストＯＳの移動先の仮想マシンモニタが動作するハードウェアと接続されているネットワークセグメントが、移動元の仮想マシンモニタが動作するハードウェアと接続されているネットワークセグメントとは異なる場合でも、ゲストＯＳの移動前と変わらずに通信できるシステム及び方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の１つの観点によれば、ゲストＯＳが動作可能な第１の仮想マシンモニタと、前記第１の仮想マシンモニタが動作する第１のハードウェアと、ゲストＯＳが動作可能な第２の仮想マシンモニタと、前記第２の仮想マシンモニタが動作する第２のハードウェアと、前記第１のハードウェア及び前記第２のハードウェアを接続するネットワークとを具備する仮想マシンシステムが提供される。
【０００７】
前記第１の仮想マシンモニタは、前記第１のハードウェアと前記第１の仮想マシンモニタ上で動作するゲストＯＳとの間の通信データの入出力を制御する入出力制御手段と、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタへのゲストＯＳの移動及び前記第２の仮想マシンモニタから前記第１の仮想マシンモニタへのゲストＯＳの移動を制御するゲストＯＳ制御手段と、前記ゲストＯＳ制御手段の制御によるゲストＯＳの移動状態を管理する移動管理手段と、前記移動管理手段によって管理されているゲストＯＳの移動状態に基づき、通信データが、前記第１の仮想マシンモニタ及び第２の仮想マシンモニタの間を移動したゲストＯＳ宛ての第１のＩＰパケットを含む第１の通信データ、前記第１のＩＰパケットが格納された第２の通信データ、前記移動したゲストＯＳが送信する第２のＩＰパケットを含む第３の通信データ、または前記第２のＩＰパケットが格納された第４の通信データであるかを判定し、当該判定結果に応じて前記通信データの転送を制御する通信転送制御手段とを含む。前記第１の仮想マシンモニタの前記通信転送制御手段は、前記通信データが、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタに移動したゲストＯＳ宛ての第１の通信データである場合、当該第１の通信データの第１のＩＰパケットを前記第２の仮想マシンモニタ宛ての第２の通信データに格納して、当該第１のＩＰパケットが格納された前記第２の通信データを前記入出力制御手段により前記第２の仮想マシンモニタに転送し、前記通信データが、前記第２の仮想マシンモニタから前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての第１の通信データの第１のＩＰパケットを格納した、前記第１の仮想マシンモニタ宛ての第２の通信データである場合、前記第１の仮想マシンモニタに移動したゲストＯＳ宛ての当該第１の通信データの前記第１のＩＰパケットを当該第２の通信データから取り出して、当該取り出された第１のＩＰパケットを含む第５の通信データを前記第１の仮想マシンモニタに移動したゲストＯＳに前記入出力制御手段により提供し、前記通信データが、前記第１の仮想マシンモニタに移動したゲストＯＳが送信した第３の通信データである場合、前記第２の仮想マシンモニタ宛ての第４の通信データに当該第３の通信データの第２のＩＰパケットを格納して、当該第２のＩＰパケットが格納された前記第４の通信データを前記入出力制御手段により前記第２の仮想マシンモニタに転送し、前記通信データが、前記第１の仮想マシンモニタから前記第２の仮想マシンモニタに移動したゲストＯＳが送信した第３の通信データの第２のＩＰパケットを格納した、前記第１の仮想マシンモニタ宛ての第４の通信データである場合、前記第２の仮想マシンモニタに移動したゲストＯＳが送信した当該第３の通信データの前記第２のＩＰパケットを当該第４の通信データから取り出して、当該取り出された第２のＩＰパケットを含む第６の通信データを前記入出力制御手段により前記ネットワークに送信する。
【発明の効果】
【０００８】
本発明によれば、ゲストＯＳの移動先の仮想マシンモニタが動作するハードウェアと接続されているネットワークセグメントが、移動元の仮想マシンモニタが動作するハードウェアと接続されているネットワークセグメントとは異なる場合でも、ゲストＯＳの移動前と変わらずに通信できる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態につき図面を参照して説明する。  
＜仮想マシンシステムの構成＞
図１は本発明の一実施形態に係る仮想マシンシステムの構成を示すブロック図である。図１において、ハードウェア（ＨＷ）１１-1及び１１-2上には、それぞれ仮想マシンモニタ１２-1及び１２-2が配置されている。仮想マシンモニタ１２-1及び１２-2は、それぞれＩＰアドレス（ネットワークアドレス）“１９２．１６８．１．１０”及び“１９２．１６８．２．１０”を持ち、ＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）による通信が可能なように構成されている。
【００１０】
仮想マシンモニタ１２-1上には仮想マシン１３が配置され、当該仮想マシン１３上にはゲストＯＳ１４が稼動可能に配置されている。ゲストＯＳ１４は、ＩＰアドレス“１９２．１６８．１．１００”を持つ。ＨＷ１１-1及び１１-2は、それぞれＣＰＵ、メモリ、入出力装置（いずれも図示せず）を含む。
【００１１】
ＨＷ１１-1及び１１-2は、例えばストレージエリアネットワーク（ＳＡＮ）１９-1及び１９-2により共有ディスク装置１５と接続されている。共有ディスク装置１５には、ゲストＯＳ１４を実現するための、ゲストＯＳイメージ１５０が格納されている。ＨＷ１１-1及び１１-2はまた、それぞれ、ネットワークアドレスが異なるネットワークセグメント１６-1及び１６-2に接続されている。ネットワークセグメント１６-1及び１６-2のネットワークアドレスは、それぞれ、“１９２．１６８．１．０／２４”及び“１９２．１６８．２．０／２４”であるものとする。ネットワークセグメント１６-1及び１６-2は、ネットワーク、例えばローカルエリアネットワーク（ＬＡＮ）１６を構成する。ネットワークセグメント１６-1及び１６-2は、ルータ１７によって接続されている。ルータ１７は、異なるネットワークアドレスのネットワークセグメント１６-1及び１６-2間を接続するためのルーティング機能を有する。
【００１２】
ネットワークセグメント１６-1には、クライアント端末（以下、クライアントと称する）１８が接続されている。クライアント１８は、例えばＩＰアドレス“１９２．１６８．１．５０”を持つ。図１の状態では、クライアント１８は、ネットワークセグメント１６-1を介してゲストＯＳ１４とＴＣＰ／ＩＰによる通信を行うことができる。
【００１３】
ここで、図１において矢印Ａ１に示されるように、仮想マシン１３及びゲストＯＳ１４が仮想マシンモニタ１２-1から仮想マシンモニタ１２-2上に移動されたものとする。この仮想マシンモニタ１２-2（つまり、仮想マシン１３及びゲストＯＳ１４の移動先の仮想マシンモニタ１２-2）が配置されたＨＷ１１-2が接続されているネットワークセグメント１６-2のネットワークアドレスは、上述のように、仮想マシンモニタ１２-1（つまり、当該仮想マシン１３及びゲストＯＳ１４の移動元の仮想マシンモニタ１２-1）が配置されたＨＷ１１-1が接続されているネットワークセグメント１６-1のネットワークアドレスとは異なる。このため従来技術であれば、仮想マシン１３及びゲストＯＳ１４の移動後は、クライアント１８は当該移動後のゲストＯＳ１４と通信することができない。
【００１４】
そこで本実施形態では、ネットワークアドレスが異なるネットワークセグメントにゲストＯＳ１４（仮想マシン１３及びゲストＯＳ１４）が移動した後でも、クライアント１８とゲストＯＳ１４との間で通信可能とするため、次のような通信データが用いられる。即ち、ゲストＯＳ１４へ／からの通信データ（第１／第３の通信データ）が仮想マシンモニタ１２-1及び１２-2間で授受される通信データ（第２／第４の通信データ）の中に格納（カプセル化）され、この第１／第３の通信データ（詳細には、第１／第３の通信データに含まれているＩＰパケット）が格納された第２／第４の通信データが用いられる。この第２／第４の通信データの送信元ＩＰアドレス及び宛先ＩＰアドレス、もしくは宛先ＩＰアドレス及び送信元ＩＰアドレスには、仮想マシンモニタ１２-1及び１２-2のＩＰアドレスが用いられる。この第２／第４の通信データが仮想マシンモニタ１２-1及び１２-2間をルータ１７によって中継されることで、当該第２／第４の通信データに格納されている第１／第２の通信データをクライアント１８とゲストＯＳ１４との間で授受することができる。
【００１５】
＜ゲストＯＳの移動前後の通信シーケンス＞
次に、図１のシステムで適用される、ゲストＯＳ１４の移動前後の通信シーケンスについて、ゲストＯＳ１４とクライアント１８との間で通信データが授受される場合を例に、図２のシーケンスチャートを参照して説明する。
【００１６】
まず、ゲストＯＳ１４の移動前の状態で行われる、ゲストＯＳ１４とクライアント１８との間の通信について説明する。  
クライアント１８は、ゲストＯＳ１４に通信データを送信する必要があり、且つ当該ゲストＯＳ１４のＭＡＣアドレス（物理アドレス）が分からない場合、当該ＭＡＣアドレスを取得するためのＡＲＰ（Address Resolution Protocol：アドレス解決プロトコル）要求（ＡＲＰ要求パケット）を、ネットワークセグメント１６-1上にブロードキャストする（ステップＳ１）。このＡＲＰ要求は、クライアント１８が有するＭＡＣアドレス及びＩＰアドレスを、それぞれ送信元ＭＡＣアドレス及び送信元ＩＰアドレスとして含む。またＡＲＰ要求は、ゲストＯＳ１４のＩＰアドレスを宛て先ＩＰアドレスとして含む。
【００１７】
ゲストＯＳ１４は、クライアント１８からのＡＲＰ要求を受け取ると、当該ゲストＯＳ１４のＭＡＣアドレスをクライアント１８に通知するためのＡＲＰ応答（ＡＲＰ応答パケット）を当該クライアント１８に返す（ステップＳ２）。クライアント１８は、ゲストＯＳ１４からのＡＲＰ応答で通知された当該ゲストＯＳ１４のＭＡＣアドレスを宛先ＭＡＣアドレスとして用いることにより、当該ゲストＯＳ１４に通信データ（第７の通信データ）を送信する（ステップＳ３）。
【００１８】
一方、ゲストＯＳ１４は、クライアント１８に通信データを送信する必要があり、且つ当該クライアント１８のＭＡＣアドレスが分からない場合、当該ＭＡＣアドレスを取得するためのＡＲＰ要求を、ネットワークセグメント１６-1上にブロードキャストする（ステップＳ４）。
【００１９】
クライアント１８は、ゲストＯＳ１４からのＡＲＰ要求を受け取ると、当該クライアント１８のＭＡＣアドレスをゲストＯＳ１４に通知するためのＡＲＰ応答を当該ゲストＯＳ１４に返す（ステップＳ５）。ゲストＯＳ１４は、クライアント１８からのＡＲＰ応答で通知された当該クライアント１８のＭＡＣアドレスを宛先ＭＡＣアドレスとして用いることにより、当該クライアント１８に通信データ（第８の通信データ）を送信する（ステップＳ６）。
【００２０】
なお、ステップＳ１，Ｓ２及びＳ４，Ｓ５でのＡＲＰパケットによるアドレス解決は、それぞれ、クライアント１８及びゲストＯＳ１４上にアドレス解決結果を格納するキャッシュ（ＡＲＰキャッシュ）が存在し、且つ当該キャッシュに、ゲストＯＳ１４及びクライアント１８のＭＡＣアドレスが当該ゲストＯＳ１４及びクライアント１８のＩＰアドレスに対応付けて格納されている場合、省略される。
【００２１】
次に、ゲストＯＳ１４の移動後の状態で行われる、ゲストＯＳ１４とクライアント１８との間の通信について、クライアント１８からゲストＯＳ１４に通信データを送信する場合を例に、図２のシーケンスチャートに加えて、図３乃至図６の通信データ例を参照して説明する。
【００２２】
今、（仮想マシン１３及び）ゲストＯＳ１４が、図１において矢印Ａ１に示されるように、仮想マシンモニタ１２-1から仮想マシンモニタ１２-2上に移動されたものとする。このような状態で、ゲストＯＳ１４の移動を認識していないクライアント１８から、当該ゲストＯＳ１４のＭＡＣアドレスを取得するための、図３に示すフォーマットのＡＲＰ要求３０がネットワークセグメント１６-1上にブロードキャストされたものとする（ステップＳ７）。
【００２３】
クライアント１８からのＡＲＰ要求３０は、データリンク層ヘッダ３１及びＡＲＰ要求パケット３２を含む。データリンク層ヘッダ３１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれ、ブロードキャストアドレス及びクライアント１８のＭＡＣアドレスが用いられる。ＡＲＰ要求パケット３２は、ターゲットＭＡＣアドレス及びターゲットＩＰアドレス、並びに送信元ＭＡＣアドレス及び送信元ＩＰアドレスを含む。ＡＲＰ要求パケット３２のターゲットＩＰアドレスには、ゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”が用いられる。ＡＲＰ要求パケット３２の送信元ＭＡＣアドレスにはクライアント１８のＭＡＣアドレスが用いられ、ＡＲＰ要求パケット３２の送信元ＩＰアドレスにはクライアント１８のＩＰアドレス“１９２．１６８．１．５０”が用いられる。
【００２４】
ゲストＯＳ１４の移動元の仮想マシンモニタ１２-1は、当該ゲストＯＳ１４の移動後において、当該ゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”に関する、クライアント１８からのＡＲＰ要求３０に対し、当該ゲストＯＳ１４に代わって、当該ゲストＯＳ１４が使用していたＭＡＣアドレスをクライアント１８に通知するための、図４に示すフォーマットのＡＲＰ応答４０を当該クライアント１８に返す（ステップＳ８）。
【００２５】
ＡＲＰ応答４０は、データリンク層ヘッダ４１及びＡＲＰ応答パケット４２を含む。データリンク層ヘッダ４１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれクライアント１８及びゲストＯＳ１４のＭＡＣアドレスが用いられる。ＡＲＰ応答パケット４２は、宛先ＭＡＣアドレス及び宛先ＩＰアドレス、並びに送信元ＭＡＣアドレス及び送信元ＩＰアドレスを含む。ＡＲＰ応答パケット４２の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれクライアント１８及びゲストＯＳ１４のＭＡＣアドレスが用いられる。ＡＲＰ応答パケット４２の宛先ＩＰアドレス及び送信元ＩＰアドレスには、それぞれクライアント１８のＩＰアドレス“１９２．１６８．１．５０”及びゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”が用いられる。
【００２６】
クライアント１８は、仮想マシンモニタ１２-1からのＡＲＰ応答４０を受け取ると、当該ＡＲＰ応答４０で通知されたゲストＯＳ１４のＭＡＣアドレスに基づき、図５に示すフォーマットの通信データ（第１の通信データ）５０を当該ゲストＯＳ１４のＭＡＣアドレス宛に送信する（ステップＳ９）。
【００２７】
通信データ５０は、データリンク層ヘッダ５１、ＩＰヘッダ５２及びＩＰペイロード５３を含む。データリンク層ヘッダ５１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれゲストＯＳ１４及びクライアント１８のＭＡＣアドレスが用いられる。ＩＰヘッダ５２の宛先ＩＰアドレス及び送信元ＩＰアドレスには、それぞれゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”及びクライアント１８のＩＰアドレス“１９２．１６８．１．５０”が用いられる。
【００２８】
クライアント１８からの通信データ５０は、当該クライアント１８からのＡＲＰ要求３０に対してＡＲＰ応答４０（つまり、ゲストＯＳ１４のＭＡＣアドレスを通知するためのＡＲＰ応答４０）を送信した仮想マシンモニタ１２-1によって受け取られる。つまり仮想マシンモニタ１２-1は、クライアント１８からの通信データ５０を、当該仮想マシンモニタ１２-1から移動されたゲストＯＳ１４に代わって受け取る。
【００２９】
すると仮想マシンモニタ１２-1は、クライアント１８からの通信データ５０に基づいて、仮想マシンモニタ１２-1及び１２-2間で授受される、図５に示すフォーマットの通信データ（第２の通信データ）５４を作成する。この通信データ５４は、ＩＰヘッダ５５及びＩＰペイロード５６を含む。ＩＰヘッダ５５の宛先ＩＰアドレス及び送信元ＩＰアドレスには、それぞれ仮想マシンモニタ１２-2（ゲストＯＳ１４の移動先の仮想マシンモニタ１２-2）のＩＰアドレス“１９２．１６８．２．１０”及び仮想マシンモニタ１２-1（ゲストＯＳ１４の移動元の仮想マシンモニタ１２-1）のＩＰアドレス“１９２．１６８．１．１０”が用いられる。またＩＰペイロード５６は、クライアント１８からの通信データ５０内のＩＰヘッダ５２及びＩＰペイロード５３、つまり通信データ５０内のＩＰパケット（移動したゲストＯＳ宛てのＩＰパケット）の部分を含む。
【００３０】
このように仮想マシンモニタ１２-1は、クライアント１８からの通信データ５０からデータリンク層ヘッダ５１を外し、残されたＩＰパケットの部分（ＩＰヘッダ５２及びＩＰペイロード５３）を、仮想マシンモニタ１２-1（１９２．１６８．１．１０）と仮想マシンモニタ１２-2（１９２．１６８．２．１０）との間で授受される通信データ（のＩＰペイロード５６）に格納することによって、通信データ５４を作成する。つまり仮想マシンモニタ１２-1は、クライアント１８からの通信データ（第１の通信データ）５０（詳細には、通信データ５０のＩＰパケットであるＩＰヘッダ５２及びＩＰペイロード５３）が（ＩＰペイロード５６に）格納された通信データ（第２の通信データ）５４を作成する（ステップＳ１０）。
【００３１】
仮想マシンモニタ１２-1は通信データ５４を作成すると、当該通信データ５４を、当該通信データ５４に含まれているＩＰヘッダ５５の宛先ＩＰアドレスで指定される仮想マシンモニタ１２-2に送信（中継）する（ステップＳ１１）。なお、この通信データ（第２の通信データ）５４には図示せぬデータリンク層ヘッダが付加される。このデータリンク層ヘッダの付加については、図２４を参照してのステップＳ７６の処理で後述する。
【００３２】
仮想マシンモニタ１２-2は、仮想マシンモニタ１２-1によって中継された通信データ（第２の通信データ）５４を受信すると、当該通信データ５４から、クライアント１８によって送信された通信データ（第１の通信データ）５０の移動したゲストＯＳ宛てのＩＰパケット（ＩＰヘッダ５２及びＩＰペイロード５３）を取り出す（ステップＳ１２）。このステップＳ１２において仮想マシンモニタ１２-2は、取り出されたデータ（ＩＰヘッダ５２及びＩＰペイロード５３）を含む、ゲストＯＳ１４のＭＡＣアドレス宛ての、図６に示すフォーマットの通信データ（第５の通信データ）６０を作成する（ステップＳ１２）。
【００３３】
通信データ６０は、データリンク層ヘッダ６１及び取り出された通信データ（ＩＰヘッダ５２及びＩＰペイロード５３）を含む。データリンク層ヘッダ６１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれゲストＯＳ１４のＭＡＣアドレス及び偽のＭＡＣアドレスが用いられる。つまり仮想マシンモニタ１２-2は、取り出された通信データ（ＩＰヘッダ５２及びＩＰペイロード５３）に、ゲストＯＳ１４のＭＡＣアドレス及び偽のＭＡＣアドレスを、それぞれ宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスとするデータリンク層ヘッダ６１が付加された、通信データ６０を作成する。
【００３４】
偽のＭＡＣアドレスには、データリンク層ヘッダ５１を作成することができればどのようなＭＡＣアドレスを用いても構わない。本実施形態では、偽のＭＡＣアドレスとして、実在しないＭＡＣアドレス、例えばＭＡＣアドレスの上位３バイトに当たるベンダＩＤに存在しない値が用いられる。
【００３５】
仮想マシンモニタ１２-2は、作成された通信データ６０を、当該通信データ６０のデータリンク層ヘッダ６１に設定されている宛先ＩＰアドレスで指定されるゲストＯＳ１４、即ち当該仮想マシンモニタ１２-2上に移動されたゲストＯＳ１４に送信する（ステップＳ１３）。このようにして、クライアント１８からの、仮想マシンモニタ１２-2上に移動されたゲストＯＳ１４（のＭＡＣアドレス）宛ての通信データ５０（に含まれているＩＰヘッダ５２及びＩＰペイロード５３）が、仮想マシンモニタ１２-1及び１２-2で中継されて、当該ゲストＯＳ１４に送信される。
【００３６】
次に、ゲストＯＳ１４の移動後の状態で行われる、ゲストＯＳ１４とクライアント１８との間の通信について、ゲストＯＳ１４からクライアント１８に通信データを送信する場合を例に、図２のシーケンスチャートに加えて、図７乃至図１２の通信データ例を参照して説明する。
【００３７】
今、ゲストＯＳ１４から、クライアント１８のＭＡＣアドレスを取得するための、図７に示すフォーマットのＡＲＰ要求７０がネットワークセグメント１６-2上にブロードキャストされたものとする（ステップＳ１４）。
【００３８】
ゲストＯＳ１４からのＡＲＰ要求７０は、データリンク層ヘッダ７１及びＡＲＰ要求パケット７２を含む。データリンク層ヘッダ７１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれ、ブロードキャストアドレス及びゲストＯＳ１４のＭＡＣアドレスが用いられる。ＡＲＰ要求パケット７２のターゲットＩＰアドレスには、クライアント１８のＩＰアドレス“１９２．１６８．１．５０”が用いられる。ＡＲＰ要求パケット７２の送信元ＭＡＣアドレスにはゲストＯＳ１４のＭＡＣアドレスが用いられ、当該ＡＲＰ要求パケット７２の送信元ＩＰアドレスにはゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”が用いられる。
【００３９】
仮想マシンモニタ１２-2は、当該仮想マシンモニタ１２-2上に移動されたゲストＯＳ１４（１９２．１６８．１．１００）が送信するＡＲＰＭ要求７０を受け取ると、偽のＭＡＣアドレスを当該ゲストＯＳ１４に通知するための、図８に示すフォーマットの偽のＡＲＰ応答８０を当該ゲストＯＳ１４に返す（ステップＳ１５）。
【００４０】
ＡＲＰ応答８０は、データリンク層ヘッダ８１及びＡＲＰ応答パケット８２を含む。データリンク層ヘッダ８１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれゲストＯＳ１４のＭＡＣアドレス及び偽のＭＡＣアドレスが用いられる。この偽のＭＡＣアドレスには、前記仮想マシンモニタ１２-2によって中継される通信データ６０に含まれるデータリンク層ヘッダ８１の送信元ＭＡＣアドレスと同様に、実在しないＭＡＣアドレス、例えばＭＡＣアドレスの上位３バイトに当たるベンダＩＤに存在しない値が用いられる。
【００４１】
ＡＲＰ応答パケット８２の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれゲストＯＳ１４のＭＡＣアドレス及び上記偽のＭＡＣアドレスが用いられる。ＡＲＰ応答パケット８２の宛先ＩＰアドレス及び送信元ＩＰアドレスには、それぞれゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”及びクライアント１８のＩＰアドレス“１９２．１６８．１．５０”が用いられる。
【００４２】
ゲストＯＳ１４は、仮想マシンモニタ１２-2からのＡＲＰ応答８０を受け取ると、当該ＡＲＰ応答８０で通知された偽のＭＡＣアドレスに基づき、図９に示すフォーマットの通信データ（第３の通信データ）９０を当該偽のＭＡＣアドレス宛に送信する（ステップＳ１６）。
【００４３】
通信データ９０は、データリンク層ヘッダ９１、ＩＰヘッダ９２及びＩＰペイロード９３を含む。データリンク層ヘッダ９１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれ偽のＭＡＣアドレス及びゲストＯＳ１４のＭＡＣアドレスが用いられる。ＩＰヘッダ９２の宛先ＩＰアドレス及び送信元ＩＰアドレスには、それぞれクライアント１８のＩＰアドレス“１９２．１６８．１．５０”及びゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”が用いられる。
【００４４】
ゲストＯＳ１４からの通信データ９０は、当該ゲストＯＳ１４からのＡＲＰ要求７０に対してＡＲＰ応答８０（つまり、偽のＭＡＣアドレスを通知するための偽のＡＲＰ応答８０）を送信した仮想マシンモニタ１２-2によって受け取られる。つまり仮想マシンモニタ１２-2は、当該仮想マシンモニタ１２-2上に移動されたゲストＯＳ１４からの通信データ９０を受け取る。
【００４５】
すると仮想マシンモニタ１２-2は、ゲストＯＳ１４からの通信データ（第３の通信データ）９０に基づいて、仮想マシンモニタ１２-1及び１２-2間で授受される、図９に示すフォーマットの通信データ（第４の通信データ）９４を作成する。この通信データ９４は、ＩＰヘッダ９５及びＩＰペイロード９６を含む。ＩＰヘッダ９５の宛先ＩＰアドレス及び送信元ＩＰアドレスには、それぞれ仮想マシンモニタ１２-1（ゲストＯＳ１４の移動元の仮想マシンモニタ１２-1）のＩＰアドレス“１９２．１６８．１．１０”及び仮想マシンモニタ１２-2（ゲストＯＳ１４の移動先の仮想マシンモニタ１２-2）のＩＰアドレス“１９２．１６８．２．１０”が用いられる。またＩＰペイロード９６は、ゲストＯＳ１４からの通信データ９０内のＩＰヘッダ９２及びＩＰペイロード９３（ＩＰパケット）を含む。
【００４６】
つまり仮想マシンモニタ１２-2は、ゲストＯＳ１４からの通信データ９０からデータリンク層ヘッダ９１を外し、残されたＩＰパケット（ＩＰヘッダ９２及びＩＰペイロード９３）を、仮想マシンモニタ１２-1（１９２．１６８．１．１０）と仮想マシンモニタ１２-2（１９２．１６８．２．１０）との間で授受される通信データ（のＩＰペイロード９６）に格納することによって、通信データ９４を作成する。このように仮想マシンモニタ１２-2は、ゲストＯＳ１４からの通信データ（第３の通信データ）９０（詳細には、通信データ９０のＩＰパケットであるＩＰヘッダ９２及びＩＰペイロード９３）が（ＩＰペイロード９６に）格納された通信データ（第４の通信データ）９４を作成する（ステップＳ１７）。
【００４７】
仮想マシンモニタ１２-2は通信データ９４を作成すると、当該通信データ９４を、当該通信データ９４に含まれているＩＰヘッダ９５の宛先ＩＰアドレスで指定される仮想マシンモニタ１２-1に送信（中継）する（ステップＳ１８）。なお、この通信データ（第４の通信データ）９４にはデータリンク層ヘッダが付加される。このデータリンク層ヘッダの付加については、図２４を参照してのステップＳ７６の処理で後述する。
【００４８】
仮想マシンモニタ１２-1は、仮想マシンモニタ１２-2によって中継された通信データ９４を受信すると、当該通信データ９４に含まれているＩＰパケット（ＩＰヘッダ９２及びＩＰペイロード９３）の宛先ＭＡＣアドレス（クライアント１８のＭＡＣアドレス）を取得するための、図１０に示すフォーマットのＡＲＰ要求１００をネットワークセグメント１６-1上にブロードキャストする（ステップＳ１９）。
【００４９】
仮想マシンモニタ１２-1からのＡＲＰ要求１００は、データリンク層ヘッダ１０１及びＡＲＰ要求パケット１０２を含む。データリンク層ヘッダ１０１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれ、ブロードキャストアドレス及びゲストＯＳ１４のＭＡＣアドレスが用いられる。ＡＲＰ要求パケット１０２のターゲットＩＰアドレスには、クライアント１８のＩＰアドレス“１９２．１６８．１．５０”が用いられる。ＡＲＰ要求パケット１０２の送信元ＭＡＣアドレスにはゲストＯＳ１４のＭＡＣアドレスが用いられ、当該ＡＲＰ要求パケット１０２の送信元ＩＰアドレスにはゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”が用いられる。
【００５０】
クライアント１８は、仮想マシンモニタ１２-1からのＡＲＰＭ要求１００を受け取ると、当該クライアント１８のＭＡＣアドレスを当該仮想マシンモニタ１２-1に通知するための、図１１に示すフォーマットのＡＲＰ応答１１０を当該仮想マシンモニタ１２-1に返す（ステップＳ２０）。
【００５１】
ＡＲＰ応答１１０は、データリンク層ヘッダ１１１及びＡＲＰ応答パケット１１２を含む。データリンク層ヘッダ１１１の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれゲストＯＳ１４及びクライアント１８のＭＡＣアドレスが用いられる。ＡＲＰ応答パケット１１２の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれゲストＯＳ１４及びクライアント１８のＭＡＣアドレスが用いられ、当該ＡＲＰ応答パケット１１２の宛先ＩＰアドレス及び送信元ＩＰアドレスには、それぞれゲストＯＳ１４のＩＰアドレス“１９２．１６８．１．１００”及びクライアント１８のＩＰアドレス“１９２．１６８．１．５０”が用いられる。
【００５２】
クライアント１８からのＡＲＰ応答１１０は、当該クライアント１８のＭＡＣアドレスを取得するためのＡＲＰ要求１００を送信した仮想マシンモニタ１２-1で受け取られる。仮想マシンモニタ１２-1は、クライアント１８からのＡＲＰ応答１１０を受け取ると、先に仮想マシンモニタ１２-2から受信した通信データ（第４の通信データ）９４に格納されている、ゲストＯＳ１４からの通信データ（第３の通信データ）のＩＰパケット（ＩＰヘッダ９２及びＩＰペイロード９３）を含む、クライアント１８宛ての図１２に示す通信データ（第６の通信データ）１２０を作成する（ステップＳ２１）。即ち仮想マシンモニタ１２-1は、仮想マシンモニタ１２-2から受信した通信データ９４から、当該通信データ９４に格納されているゲストＯＳ１４からの通信データのＩＰパケット（ＩＰヘッダ９２及びＩＰペイロード９３）を取り出す。仮想マシンモニタ１２-1は、この取り出されたＩＰパケット（ＩＰヘッダ９２及びＩＰペイロード９３）に、先に受信したクライアント１８からのＡＲＰ応答１１０に基づいて、当該クライアント１８のＭＡＣアドレスを宛先ＭＡＣアドレスとするデータリンク層ヘッダ１２１を付加することにより、クライアント１８のＭＡＣアドレス宛ての通信データ１２０を作成する。仮想マシンモニタ１２-1は、作成された通信データ１２０をクライアント１８に送信する（ステップＳ２２）。
【００５３】
以上の通信シーケンスにより、図１のシステムにおいては、ゲストＯＳ１４の移動先の仮想マシンモニタ１２-2が配置されているＨＷ１１-2が、当該ゲストＯＳ１４の移動元の仮想マシンモニタ１２-1が配置されているＨＷ１１-1とは異なるネットワークセグメントに存在しても、当該ゲストＯＳ１４とクライアント１８との間の通信を、当該ゲストＯＳ１４が移動する前の状態と変わらずに行うことができる。
【００５４】
＜仮想マシンモニタの構成＞
次に、図１に示される仮想マシンモニタ１２-i（ｉ＝１，２）の構成について説明する。図１３は、仮想マシンモニタ１２-iの構成を示すブロック図である。
【００５５】
仮想マシンモニタ１２-iは、入出力制御部（Ｉ／Ｏ制御部）１２０、ゲストＯＳ制御部１２１及び通信転送制御部１２２を有する。Ｉ／Ｏ制御部１２０は、ゲストＯＳ１４のメモリアクセス、ディスクＩ／Ｏ及び通信データのＩ／Ｏ等、ゲストＯＳ１４の種々のＩ／Ｏを制御するモジュールである。Ｉ／Ｏ制御部１２０は、ＨＷ１１-iとゲストＯＳ１４との間の全ての通信データが必ず通信転送制御部１２２内の後述する通信データ判定部１２４を中継するように当該通信転送制御部１２２を制御する。ゲストＯＳ制御部１２１は、ゲストＯＳ１４の起動／停止、ゲストＯＳ１４の仮想マシンモニタ１２-iから他の仮想マシンモニタへの移動、他の仮想マシンモニタから仮想マシンモニタ１２-iへの移動を制御するモジュールである。
【００５６】
通信転送制御部１２２は、Ｉ／Ｏ制御部１２０の制御のもとで、ＨＷ１１-iとゲストＯＳ１４との間の全ての通信データを当該通信転送制御部１２２（内の通信データ判定部１２４）を中継させる。通信転送制御部１２２は、ゲストＯＳ制御部１２１からゲストＯＳ１４の移動の通知を受け取り、当該ゲストＯＳ１４の移動に関する情報を記録する。なお、ゲストＯＳ１４（が動作する仮想マシン１３）には、自身のＩＰアドレス、サブネットマスク及びルータアドレス（ルータ１７のＩＰアドレス）が設定されているものとする。通信転送制御部１２２は、これらのデータを参照することができる。
【００５７】
通信転送制御部１２２は、ゲストＯＳ状態受信部１２３、通信データ判定部１２４、通信データ送信部１２５及びＡＲＰ処理部１２６の各モジュールと、移動先アドレステーブル１２７、移動元アドレステーブル１２８及びＡＲＰテーブル１２９の各テーブルとを含む。
【００５８】
移動先アドレステーブル１２７は、ゲストＯＳ制御部１２１の制御によるゲストＯＳの移動に関する情報のうちの移動先に関する情報（移動先情報）を、当該ゲストＯＳの情報（ゲストＯＳ情報）に対応付けて管理するのに用いられる。本実施形態において、移動先情報にはゲストＯＳの移動先の仮想マシンモニタのＩＰアドレスが用いられ、ゲストＯＳ情報には当該ゲストＯＳのＭＡＣアドレス及びＩＰアドレスが用いられる。このテーブル１２７への情報登録は、ゲストＯＳが他の仮想マシンモニタに移動した旨の通知をゲストＯＳ状態受信部１２３が受け取った際に、当該受信部１２３によって行われる。
【００５９】
図１４Ａは移動先アドレステーブル１２７のデータ構造例を示す。図１４Ａの例では、移動先アドレステーブル１２７の各エントリには、ゲストＯＳのＭＡＣアドレス及びＩＰアドレスと、当該ゲストＯＳの移動先の仮想マシンモニタのＩＰアドレスとが登録される。
【００６０】
移動元アドレステーブル１２８は、ゲストＯＳ制御部１２１の制御によるゲストＯＳの移動に関する情報のうちの移動元に関する情報（移動元情報）を、当該ゲストＯＳの情報（ゲストＯＳ情報）に対応付けて管理するのに用いられる。移動元情報にはゲストＯＳの移動元の仮想マシンモニタのＩＰアドレスが用いられる。このテーブル１２８への情報登録は、ゲストＯＳが他の仮想マシンモニタから移動した旨の通知をゲストＯＳ状態受信部１２３が受け取った際に、当該受信部１２３によって行われる。
【００６１】
図１４Ｂは移動元アドレステーブル１２８のデータ構造例を示す。図１４Ｂの例では、移動元アドレステーブル１２８の各エントリには、ゲストＯＳのＭＡＣアドレス及びＩＰアドレスと、当該ゲストＯＳの移動元の仮想マシンモニタのＩＰアドレスとが登録される。
【００６２】
移動先アドレステーブル１２７及び移動元アドレステーブル１２８は、ゲストＯＳ制御部１２１の制御によるゲストＯＳの移動状態を管理するための移動管理部１３０を構成する。
【００６３】
ＡＲＰテーブル１２９は、ゲストＯＳが他の仮想マシンモニタに移動している場合に、当該ＡＲＰテーブル１２９を有する仮想マシンモニタ１２-iが当該ゲストＯＳに代わってＡＲＰ要求・ＡＲＰ応答を処理する際に用いられる。ＡＲＰテーブル１２９は、周知のＡＲＰテーブルと同様に、ＭＡＣアドレス及びＩＰアドレスの対と当該ＭＡＣアドレス及びＩＰアドレスの対の登録の有効期限とを管理するのに用いられる。このテーブル１２９への情報登録は、移動中のゲストＯＳに関するＡＲＰ応答パケットを通信データ判定部１２４が受け取った際に、当該通信データ判定部１２４によって行われる。
【００６４】
図１５はＡＲＰテーブル１２９のデータ構造例を示す。図１５の例では、ＡＲＰテーブル１２９の各エントリには、ＭＡＣアドレス及びＩＰアドレスの対と、当該対の登録に関する有効期限を示す情報とが登録される。ここでは、有効期限を秒単位としているが、他の単位でも構わない。
【００６５】
＜ゲストＯＳ状態受信部の動作＞
次に、ゲストＯＳ状態受信部１２３の動作について、図１６のフローチャートを参照して説明する。  
ゲストＯＳ状態受信部１２３は、仮想マシンモニタ１２-iのゲストＯＳ制御部１２１からゲストＯＳに関する状態の通知を受け取り、その通知された内容に応じて次のように処理を行う。
【００６６】
（１）他の仮想マシンモニタへのゲストＯＳの移動完了時の動作
まず、仮想マシンモニタ１２-i上のゲストＯＳ１４が他の仮想マシンモニタに移動された結果、当該仮想マシンモニタ１２-iのゲストＯＳ制御部１２１から通信転送制御部１２２に当該他の仮想マシンモニタへのゲストＯＳ移動完了が通知された場合の、ゲストＯＳ状態受信部１２３の処理について説明する。
【００６７】
ゲストＯＳ状態受信部１２３は、ゲストＯＳ制御部１２１から通信転送制御部１２２にゲストＯＳに関する状態が通知されると、当該通知を受信する。そしてゲストＯＳ制御部１２１は、受信した通知の内容を判定する（ステップＳ３１乃至３３）。もし、受信した通知が、上述のように仮想マシンモニタ（ＶＭＭ）１２-iから他の仮想マシンモニタ（ＶＭＭ）へのゲストＯＳの移動完了を示すならば（ステップＳ３１がＹＥＳ）、ゲストＯＳ状態受信部１２３は、移動先アドレステーブル１２７のエントリに、他の仮想マシンモニタへの移動が完了したゲストＯＳのＭＡＣアドレス及びＩＰアドレスの対と、当該他の仮想マシンモニタ（つまり移動先の仮想マシンモニタ）のＩＰアドレスとを登録する（ステップＳ３４）。
【００６８】
（２）他の仮想マシンモニタからのゲストＯＳの移動完了時の動作
次に、ゲストＯＳ１４が他の仮想マシンモニタから仮想マシンモニタ１２-iに移動された結果、当該仮想マシンモニタ１２-iのゲストＯＳ制御部１２１から通信転送制御部１２２に当該他の仮想マシンモニタからのゲストＯＳ移動完了が通知され、当該通知がゲストＯＳ状態受信部１２３によって受信されたものとする。
【００６９】
ゲストＯＳ状態受信部１２３は、受信した通知が、この例のように他の仮想マシンモニタから（当該ゲストＯＳ状態受信部１２３を含む）仮想マシンモニタ１２-iへのゲストＯＳの移動完了を示すならば（ステップＳ３２がＹＥＳ）、当該ゲストＯＳ（移動が完了したゲストＯＳ）のＭＡＣアドレス及びＩＰアドレスが移動先アドレステーブル１２７に登録されているか（存在するか）判定する（ステップＳ３５）。
【００７０】
もし、移動が完了したゲストＯＳのＭＡＣアドレス及びＩＰアドレスが移動先アドレステーブル１２７に登録されているならば（ステップＳ３５がＹＥＳ）、ゲストＯＳ状態受信部１２３は、当該ゲストＯＳは、仮想マシンモニタ１２-iから他の仮想マシンモニタに移動した後、当該仮想マシンモニタ１２-iに戻ってきたと判断する。この場合、ゲストＯＳ状態受信部１２３は、仮想マシンモニタ１２-iに戻ってきたゲストＯＳに関する情報を移動先アドレステーブル１２７から削除する。
【００７１】
これに対し、移動が完了したゲストＯＳのＭＡＣアドレス及びＩＰアドレスが移動先アドレステーブル１２７に登録されていないならば（ステップＳ３５がＮＯ）、ゲストＯＳ状態受信部１２３は、移動元アドレステーブル１２８に、当該ゲストＯＳ（移動が完了したゲストＯＳ）のＭＡＣアドレス及びＩＰアドレスの対と、移動元の仮想マシンモニタのＩＰアドレスとを登録する。
【００７２】
（３）ゲストＯＳの停止時の動作
次に、仮想マシンモニタ１２-i上で動作しているゲストＯＳが停止した結果、当該仮想マシンモニタ１２-iのゲストＯＳ制御部１２１から通信転送制御部１２２にゲストＯＳの停止が通知され、当該通知がゲストＯＳ状態受信部１２３によって受信されたものとする。
【００７３】
ゲストＯＳ状態受信部１２３は、受信した通知が、この例のようにゲストＯＳの停止を示すならば（ステップＳ３３がＹＥＳ）、当該停止したゲストＯＳのＭＡＣアドレス及びＩＰアドレスが移動元アドレステーブル１２８に登録されているかを判定する（ステップＳ３８）。
【００７４】
もし、移動元アドレステーブル１２８に登録されているならば（ステップＳ３８がＹＥＳ）、ゲストＯＳ状態受信部１２３は、通信データの転送を停止するため移動元の仮想マシンモニタに対して移動終了を通知する必要があると判断する。そこでゲストＯＳ状態受信部１２３は、停止したゲストＯＳのＭＡＣアドレス及びＩＰアドレスの対に対応付けて移動元アドレステーブル１２８に登録されている移動元の仮想マシンモニタのＩＰアドレスに基づき、当該移動元の仮想マシンモニタのＩＰアドレス宛ての移動停止データを作成する（ステップＳ３９）。この移動停止データについては後述する。
【００７５】
ゲストＯＳ状態受信部１２３は、作成された移動停止データを通信データ送信部１２５に送ることによって、当該移動停止データを通信データ送信部１２５から（Ｉ／Ｏ制御部１２０を介して）移動元の仮想マシンに送信させる（ステップＳ４０）。最後にゲストＯＳ状態受信部１２３は、停止したゲストＯＳに関する情報を移動元アドレステーブル１２８から削除する（ステップＳ４１）。
【００７６】
＜移動停止データ＞
次に上記移動停止データについて説明する。  
移動停止データは、移動元仮想マシンモニタのＩＰアドレスを宛先ＩＰアドレスとし、停止したゲストＯＳのＭＡＣアドレス及びＩＰアドレスをデータ部に含み、移動停止データと識別可能な通信データであれば、どのようなものでもよい。
【００７７】
図１７は、移動停止データの例を、移動元アドレステーブル１２８に対応付けて示す。図１７において、移動停止データ１７０は、ＩＰヘッダ１７１及びＩＰペイロード（データ部）１７２を含む。
【００７８】
ＩＰヘッダ１７１の宛先ＩＰアドレスには、停止したゲストＯＳのＭＡＣアドレス及びＩＰアドレスに対応付けて移動元アドレステーブル１２８に登録されている移動元の仮想マシンモニタのＩＰアドレスが、矢印Ａ１１で示されるように用いられる。ＩＰヘッダ１７１の送信元ＩＰアドレスには、仮想マシンモニタ１２-i自身（停止したゲストＯＳの移動先の仮想マシンモニタ１２-i）のＩＰアドレスが、矢印Ａ１２で示されるように用いられる。
【００７９】
ＩＰペイロード１７２は、ゲストＯＳのＭＡＣアドレス及びＩＰアドレスを含む。ゲストＯＳのＭＡＣアドレス及びＩＰアドレスには、それぞれ、移動元アドレステーブル１２８に登録されている、停止したゲストＯＳのＭＡＣアドレス及びＩＰアドレスが、矢印Ａ１３及びＡ１４で示されるように用いられる。
【００８０】
＜通信データ判定部の動作＞
次に、通信データ判定部１２４の動作について、図１８のフローチャートを参照して説明する。  
本実施形態において、仮想マシンモニタ１２-iのＩ／Ｏ制御部１２０は、当該Ｉ／Ｏ制御部１２０を通過する全ての通信データを通信転送制御部１２２の通信データ判定部１２４に入力することにより、当該通信データ判定部１２４をも通過させる。通信データ判定部１２４は、Ｉ／Ｏ制御部１２０によって入力された通信データの種類に応じて処理を行う。そこで通信データ判定部１２４は、まず、Ｉ／Ｏ制御部１２０によって入力された通信データがＡＲＰ要求またはＡＲＰ応答のいずれかであるかを判定する（ステップＳ５１）。
【００８１】
（１）通信データがＡＲＰ要求・ＡＲＰ応答の場合
もし、入力された通信データがＡＲＰ要求またはＡＲＰ応答のいずれかである（つまりＡＲＰパケットである）ならば（ステップＳ５１がＹＥＳ）、通信データ判定部１２４は、当該入力された通信データをＡＲＰ処理部１２６に送り（ステップＳ５２）、処理を終了する。図２におけるステップＳ７，Ｓ８，Ｓ１４，Ｓ１５，Ｓ１９及びＳ２０の場合、いずれもステップＳ５１の判定がＹＥＳとなる。
【００８２】
一方、入力された通信データＡＲＰ要求でもＡＲＰ応答でもない（つまりＡＲＰパケットでない）ならば（ステップＳ５１がＮＯ）、通信データ判定部１２４は、当該入力された通信データの宛先ＩＰアドレスと一致するゲストＯＳのＩＰアドレスが移動先アドレステーブル１２７に登録されているかを判定する（ステップＳ５３）。
【００８３】
（２）移動したゲストＯＳ宛ての通信データの場合
もし、ステップＳ５３の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データが、仮想マシンモニタ１２-iから他の仮想マシンモニタに移動したゲストＯＳ宛ての通信データ（第１の通信データ）であると判断する。この場合、移動先の仮想マシンモニタに通信データを転送する必要がある。そこで通信データ判定部１２４は、移動先の仮想マシンモニタに転送すべきデータ（ＩＰパケット）を作成する（ステップＳ５４）。即ち通信データ判定部１２４は、入力された通信データの宛先ＩＰアドレスと一致したゲストＯＳのＩＰアドレスと対応付けて移動先アドレステーブル１２７に登録されている、当該ゲストＯＳの移動先の仮想マシンモニタのＩＰアドレスを宛先ＩＰアドレスとするデータ（ＩＰパケット）を作成する。そして、作成されたデータ（のＩＰペイロード）の中に、入力された通信データ（第１の通信データ）のＩＰパケット（ＩＰヘッダ及びＩＰペイロード）を格納する。通信データ判定部１２４は、作成されたデータ（第２の通信データ）を通信データ送信部１２５に送り（ステップＳ５５）、処理を終了する。
【００８４】
入力された通信データが、例えば図２のステップＳ９でクライアント１８から送信された通信データ（図５に示される通信データ５０）の場合、ステップＳ５３の判定がＹＥＳとなって、ステップＳ５４及びＳ５５が行われる。
【００８５】
図１９は、ステップＳ５４で作成されたデータ（通信データ送信部１２５に送られるデータ）の一例を、入力された通信データ及び移動先アドレステーブル１２７に対応付けて示す。
【００８６】
図１９において、入力された通信データ（第１の通信データ）１９０及び作成された（）データ（第２の通信データ）１９４は、それぞれ図５に示される通信データ５０及び５４に相当する。
【００８７】
通信データ１９０は、データリンク層ヘッダ１９１、ＩＰヘッダ１９２及びＩＰペイロード１９３を含む。データリンク層ヘッダ１９１の宛先ＭＡＣアドレス及びＩＰヘッダ１９２の宛先ＩＰアドレスは、それぞれ矢印Ａ２１及びＡ２２で示されるように、移動先仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”と対応付けて移動先アドレステーブル１２７に登録されている、ゲストＯＳのＭＡＣアドレス“ａａ：ａａ：ａａ：ａａ：ａａ：ａａ”及びＩＰアドレス“１９２．１６８．１．１００”に一致している。
【００８８】
この場合、作成されたデータ１９４のＩＰヘッダ１９５の宛先ＩＰアドレスには、矢印Ａ２３で示されるように、上記移動先仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”が用いられる。このデータ１９４のＩＰヘッダ１９５の送信元ＩＰアドレスには、矢印Ａ２４で示されるように、仮想マシンモニタ１２-i自身のＩＰアドレスが用いられる。また、データ１９４のＩＰペイロード１９６には、入力された通信データ１９０のＩＰヘッダ１９２及びＩＰペイロード１９３（ＩＰパケット）が格納される。
【００８９】
一方、ステップＳ５３の判定がＮＯであるならば、通信データ判定部１２４は、入力された通信データの宛先ＩＰアドレスが、当該通信データ判定部１２４を含む仮想マシンモニタ１２-i自身のＩＰアドレスに一致するかを判定する（ステップＳ５６）。ステップＳ５６の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データの送信元ＩＰアドレスと一致する仮想マシンモニタのＩＰアドレスが移動先アドレステーブル１２７に登録されているかを判定する（ステップＳ５７）。
【００９０】
（３）ゲストＯＳの移動先の仮想マシンモニタから送られた通信データの場合
ステップＳ５７の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データが、ゲストＯＳの移動先の仮想マシンモニタから仮想マシンモニタ１２-iに送られた通信データであると判断する。この場合、通信データ判定部１２４は、入力された通信データが移動停止データであるかを判定する（ステップＳ５８）。
【００９１】
もし、入力された通信データが移動停止データであるならば（ステップＳ５８がＹＥＳ）、移動したゲストＯＳが移動先で停止した旨の通知であることから、通信データ判定部１２４は、移動先アドレステーブル１２７から、移動停止データ（のＩＰペイロード）内に格納されているＭＡＣアドレス及びＩＰアドレスのゲストＯＳに関する情報を削除する（ステップＳ５９）。
【００９２】
図２０は、ステップＳ５９の動作を説明するための図である。図２０において、入力された移動停止データ２００のフォーマットは、図１７に示す移動停止データ１７０のそれに一致する。移動停止データ２００は、ＩＰヘッダ２０１及びＩＰペイロード２０２を含む。ＩＰペイロード２０２は、ゲストＯＳのＭＡＣアドレス及びＩＰアドレスを含む。このＩＰペイロード２０２に含まれている、ゲストＯＳのＭＡＣアドレス及びＩＰアドレスは、矢印Ａ３１で示されるように、移動先仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”と対応付けて移動先アドレステーブル１２７に登録されている、ゲストＯＳのＭＡＣアドレス“ａａ：ａａ：ａａ：ｂｂ：ｂｂ：ｂｂ”及びＩＰアドレス“１９２．１６８．１．１５０”と一致する。この場合、移動先アドレステーブル１２７から、一致するＭＡＣアドレス“ａａ：ａａ：ａａ：ｂｂ：ｂｂ：ｂｂ”及びＩＰアドレス“１９２．１６８．１．１５０”を含むゲストＯＳに関するデータ（エントリデータ）が、矢印Ａ３２で示されるように削除される。
【００９３】
一方、入力された通信データが移動停止データ以外であるならば（ステップＳ５８がＮＯ）、通信データ判定部１２４は、当該通信データが、移動したゲストＯＳが送信した通信データ（第１の通信データ）のＩＰパケットを含む、移動先の仮想マシンモニタによって仮想マシンモニタ１２-iに転送された通信データ（第４の通信データ）であると判断する。この場合、通信データ判定部１２４は、入力された通信データから、当該通信データに格納されている、移動したゲストＯＳが送信した元の通信データ（のＩＰパケット）を取り出す（ステップＳ６０）。通信データ判定部１２４は、取り出された元の通信データ（のＩＰパケット）を通信データ送信部１２５によってネットワークセグメント１６-i上に送信させるために、当該取り出された元の通信データ（のＩＰパケット）を通信データ送信部１２５に送り（ステップＳ６１）、処理を終える。
【００９４】
入力された通信データが、例えば図２のステップＳ１８で仮想マシンモニタ１２-2から仮想マシンモニタ１２-1に送信された通信データ（図９及び図１２に示される通信データ９４）の場合、ステップＳ５６及びＳ５７の判定がＹＥＳ、ステップＳ５８の判定がＮＯとなって、ステップＳ６０及びＳ６１が行われる。なお実際には、図９及び図１２に示される通信データ９４には、前記したようにデータリンク層ヘッダが付加される。
【００９５】
図２１は、ステップＳ６１で通信データ判定部１２４から通信データ送信部１２５に送られるデータ（ＩＰパケット）を、入力された通信データ及び移動先アドレステーブル１２７と対応付けて示す。
【００９６】
図２１において、入力された通信データ（第４の通信データ）２１０及び通信データ送信部１２５に送られるデータ（第３の通信データ）２１６は、それぞれ図１２に示す通信データ９４（にデータリンク層が付加されたデータ）及び通信データ１２０（のＩＰパケットの部分であるＩＰヘッダ９２及びＩＰペイロード９３）に相当する。
【００９７】
通信データ２１０は、データリンク層ヘッダ２１１、ＩＰヘッダ２１２及びＩＰペイロード２１３を含む。ＩＰヘッダ２１２の宛先ＩＰアドレスは、矢印Ａ４１で示されるように仮想マシンモニタ１２-i自身のＩＰアドレスと一致し、ＩＰヘッダ２１２の送信元ＩＰアドレスは、矢印Ａ４２で示されるように、移動先アドレステーブル１２７に登録されている移動先仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”と一致する。
【００９８】
通信データ２１０のＩＰペイロード２１３には、移動したゲストＯＳが送信したデータ（第３の通信データ）のＩＰパケット、即ちＩＰヘッダ２１４及びＩＰペイロード２１５が格納されている。ＩＰヘッダ２１４の送信元ＩＰアドレスは、矢印Ａ４３で示されるように、移動先仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”に対応付けて移動先アドレステーブル１２７に登録されている、ゲストＯＳのＩＰアドレス“１９２．１６８．１．１５０”と一致する。
【００９９】
この場合、通信データ２１０（入力された通信データ２１０）のＩＰペイロード２１３に格納されている、移動したゲストＯＳが送信した通信データのＩＰパケットの部分であるＩＰヘッダ２１４及びＩＰペイロード２１５が、通信データ送信部１２５に送られべきデータ（移動したゲストＯＳが送信した元の通信データ）２１６として当該ＩＰペイロード２１３から取り出される。このデータ（ＩＰパケット）２１６は、通信データ判定部１２４から通信データ送信部１２５に送られる。
【０１００】
一方、ステップＳ５７の判定がＮＯであるならば、通信データ判定部１２４は、入力された通信データが、ゲストＯＳの移動先の仮想マシンモニタ以外から送られたものと判断する。この場合、通信データ判定部１２４は、入力された通信データの送信元ＩＰアドレスが、移動元アドレステーブル１２８に登録されている仮想マシンモニタのＩＰアドレスに一致するかを判定する（ステップＳ６２）。
【０１０１】
（４）ゲストＯＳの移動元の仮想マシンモニタから送られた通信データの場合
もし、ステップＳ６２の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データが、移動したゲストＯＳの移動元の仮想マシンモニタによって仮想マシンモニタ１２-iに転送された、当該ゲストＯＳ宛てのデータ（第１の通信データ）のＩＰパケットを格納した通信データ（第２の通信データ）であると判断する。この場合、通信データ判定部１２４は、入力された通信データから、当該通信データに格納されている、移動元の仮想マシンモニタが転送したゲストＯＳ宛ての元の通信データ（のＩＰパケット）を取り出す（ステップＳ６３）。
【０１０２】
次に通信データ判定部１２４は、取り出された元の通信データ（のＩＰパケット）に、データリンク層ヘッダが付加された通信データ（第５の通信データ）を作成する（ステップＳ６４）。このデータリンク層ヘッダの送信元ＭＡＣアドレスには偽のＭＡＣアドレスが設定され、当該データリンク層ヘッダの宛先ＭＡＣアドレスには、ステップＳ６２で一致が判定された仮想マシンモニタのＩＰアドレスと移動元アドレステーブル１２８内で対応付けられているゲストＯＳのＭＡＣアドレスが設定される。通信データ判定部１２４は、作成された通信データを、入力された通信データの代わりとして、（当該通信データ判定部１２４を含む）仮想マシンモニタ１２-i内のＩ／Ｏ制御部１２０に渡すことにより、当該作成された通信データをＩ／Ｏ制御部１２０からゲストＯＳに送信させる（ステップＳ６５）。
【０１０３】
入力された通信データが、例えば図２のステップＳ１１で仮想マシンモニタ１２-1から仮想マシンモニタ１２-2に送信された通信データ（図５及び図６に示される通信データ５４）の場合、ステップＳ５６及びＳ５８の判定がＹＥＳ、ステップＳ５７の判定がＮＯとなって、ステップＳ６３乃至Ｓ６５が行われる。
【０１０４】
図２２は、ステップＳ６４で作成される通信データを、入力された通信データ及び移動元アドレステーブル１２８と対応付けて示す。  
図２２において、入力された通信データ（第２の通信データ）２２０及び作成された（Ｉ／Ｏ制御部１２０に送られる）通信データ（第５の通信データ）２２７は、それぞれ図６に示される通信データ５４（にデータリンク層が付加されたデータ）及び通信データ６０に相当する。
【０１０５】
通信データ２２０は、データリンク層ヘッダ２２１、ＩＰヘッダ２２２及びＩＰペイロード２２３を含む。ＩＰヘッダ２２２の宛先ＩＰアドレスは、矢印Ａ５１で示されるように仮想マシンモニタ１２-i自身のＩＰアドレスと一致し、ＩＰヘッダ２２２の送信元ＩＰアドレスは、矢印Ａ５２で示されるように、移動元アドレステーブル１２８に登録されている移動元仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”と一致する。
【０１０６】
通信データ（第２の通信データ）２２０のＩＰペイロード２２３には、移動元の仮想マシンモニタが転送したゲストＯＳ宛ての元の通信データ（第１の通信データ）のＩＰパケット、即ちＩＰヘッダ２２４及びＩＰペイロード２２５が格納されている。ＩＰヘッダ２２４の宛先ＩＰアドレスは、矢印Ａ５３で示されるように、移動元仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”に対応付けて移動元アドレステーブル１２８に登録されている、ゲストＯＳのＩＰアドレス“１９２．１６８．２．１００”と一致する。
【０１０７】
この場合、通信データ２２０（入力された通信データ２２０）のＩＰペイロード２２３に格納されている、移動元の仮想マシンモニタが転送したゲストＯＳ宛ての元の通信データのＩＰパケット、即ちＩＰヘッダ２２４及びＩＰペイロード２２５が、当該ＩＰペイロード２２３から取り出される。この取り出されたＩＰヘッダ２２４及びＩＰペイロード２２５に、データリンク層ヘッダ２２６が付加された通信データ（第５の通信データ）２２７が作成される。この通信データ２２７のデータリンク層ヘッダ２２６の宛先ＭＡＣアドレスには、矢印Ａ５４で示されるように、移動元仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”に対応付けて移動元アドレステーブル１２８に登録されている、ゲストＯＳのＭＡＣアドレス“ｂｂ：ｂｂ：ｂｂ：ａａ：ａａ：ａａ”が用いられる。通信データ２２７のデータリンク層ヘッダ２２６の送信元ＭＡＣアドレスには、矢印Ａ５４で示されるように、偽のＭＡＣアドレスが用いられる。通信データ２２７は、通信データ２２０の代わりに、通信データ判定部１２４からＩ／Ｏ制御部１２０に送られる。
【０１０８】
一方、ステップＳ５６の判定がＮＯであるならば、通信データ判定部１２４は、入力された通信データの送信元ＩＰアドレスが、移動元アドレステーブル１２８に登録されている仮想マシンモニタのＩＰアドレスに一致するかを判定する（ステップＳ６６）。
【０１０９】
（５）移動しているゲストＯＳが送信した通信データの場合
もし、ステップＳ６６の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データが、移動しているゲストＯＳが送信した通信データ（第３の通信データ）であると判断する。この場合、移動元の仮想マシンモニタに通信データを転送する必要がある。そこで通信データ判定部１２４は、移動元の仮想マシンモニタに転送すべき通信データ（第４の通信データ）を作成する（ステップＳ６７）。即ち通信データ判定部１２４は、入力された通信データの送信元ＩＰアドレスと一致したゲストＯＳのＩＰアドレスと対応付けて移動元アドレステーブル１２８に登録されている、当該ゲストＯＳの移動元の仮想マシンモニタのＩＰアドレスを宛先ＩＰアドレスとする通信データ（ＩＰパケット）を作成する。そして通信データ判定部１２４は、作成された通信データの中に、入力された通信データのＩＰパケット（ＩＰヘッダ及びＩＰペイロードの部分）を格納する。通信データ判定部１２４は、作成された通信データを通信データ送信部１２５に送り（ステップＳ６８）、処理を終了する。
【０１１０】
図２３は、ステップＳ６７で作成される通信データ（ＩＰパケット）を、入力された通信データ及び移動元アドレステーブル１２８と対応付けて示す。  
図２３において、入力された通信データ２３０及び作成された（通信データ送信部１２５に送られる）データ２３４は、それぞれ図９に示される通信データ９０（にデータリンク層が付加されたデータ）及び通信データ９４に相当する。
【０１１１】
通信データ２３０は、データリンク層ヘッダ２３１、ＩＰヘッダ２３２及びＩＰペイロード２３３を含む。データリンク層ヘッダ２３１の宛先ＭＡＣアドレス及びＩＰヘッダ２３２の宛先ＩＰアドレスは、それぞれ矢印Ａ６１及びＡ６２で示されるように、移動元仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”と対応付けて移動元アドレステーブル１２８に登録されている、ゲストＯＳのＭＡＣアドレス“ｂｂ：ｂｂ：ｂｂ：ａａ：ａａ：ａａ”及びＩＰアドレス“１９２．１６８．２．１００”に一致している。
【０１１２】
図２３において、通信データ判定部１２４から通信データ送信部１２５に送られるデータ２３４はＩＰパケットである。データ２３４のＩＰヘッダ２３５の宛先ＩＰアドレスには、矢印Ａ６３で示されるように、上記移動元仮想マシンモニタのＩＰアドレス“１９２．１６８．２．１０”が用いられる。このデータ２３４のＩＰヘッダ２３５の送信元ＩＰアドレスには、矢印Ａ６４で示されるように、仮想マシンモニタ１２-i自身のＩＰアドレスが用いられる。また、データ２３４のＩＰペイロード２３６には、入力された通信データ２３０のＩＰヘッダ２３２及びＩＰペイロード２３３（ＩＰパケット）が格納される。
【０１１３】
（６）上記（１）乃至（５）のいずれにも該当しない通信データの場合
上記ステップＳ６２またはＳ６６の判定がＮＯの場合、即ち入力された通信データが、上記（１）乃至（５）のいずれにも該当しない通信データである場合、通信データ判定部１２４は、移動していないゲストＯＳの通信データのような、自身が処理する必要のない通信データであると判断する。この場合、通信データ判定部１２４は、入力された通信データを（当該通信データ判定部１２４を含む）仮想マシンモニタ１２-i内のＩ／Ｏ制御部１２０にそのまま返し（ステップＳ６９）、処理を終了する。
【０１１４】
＜通信データ送信部の動作＞
次に、通信データ送信部１２５の動作について説明する。  
通信データ送信部１２５は、通信データ判定部１２４から送られた通信データ（ＩＰパケット）にデータリンク層ヘッダを付加することにより、送信されるべき通信データを作成する。通信データ送信部１２５は、作成された通信データを送信するため、当該作成された通信データを仮想マシンモニタ１２-i内のＩ／Ｏ制御部１２０に渡す処理を行う。
【０１１５】
以下、通信データ送信部１２５の動作について、図２４のフローチャートを参照して説明する。  
まず通信データ送信部１２５は、通信データ判定部１２４からＩＰパケットが送られた（入力された）場合、当該ＩＰパケットの宛先ＩＰアドレスが、当該通信データ送信部１２５を含む仮想マシンモニタ１２-iが配置されているＨＷ１１-iが存在するネットワークセグメント１６-iとは、異なるネットワークセグメントに属するかを判定する（ステップＳ７１）。つまり通信データ送信部１２５は、宛先ＩＰアドレスがネットワークセグメント１６-iとは異なるネットワークセグメントに属するかを判定する。
【０１１６】
ステップＳ７１の判定がＹＥＳである場合、通信データ送信部１２５はＡＲＰテーブル１２９を参照することにより、ルータ１７のＩＰアドレスを含むデータ（詳細には、ルータ１７のＭＡＣアドレス及びＩＰアドレスの対を含むデータ）が登録されているか判定する（ステップＳ７２）。
【０１１７】
もし、ルータ１７のＩＰアドレスを含むデータがＡＲＰテーブル１２９に登録されていないならば（ステップＳ７２がＮＯ）、通信データ送信部１２５は、ルータ１７のＩＰアドレスを宛先ＩＰアドレスとするＡＲＰ要求をＩ／Ｏ制御部１２０に送ることにより、当該ＡＲＰ要求をＩ／Ｏ制御部１２０からネットワークセグメント１６-iに送信させる（ステップＳ７３）。このＡＲＰ要求は、Ｉ／Ｏ制御部１２０の制御のもとで通信転送制御部１２２内の通信データ判定部１２４で中継されて、ＡＲＰ処理部１２６に入力される（図１８ステップＳ５２）。
【０１１８】
通信データ送信部１２５はステップＳ７３を実行すると、ルータ１７のＩＰアドレスを含むデータがＡＲＰテーブル１２９に登録されているかを再度判定する（ステップＳ７４）。
【０１１９】
ステップＳ７２またはＳ７４で、ルータ１７のＩＰアドレスを含むデータがＡＲＰテーブル１２９に登録されていると判定された場合、通信データ送信部１２５は当該ＡＲＰテーブル１２９から、上記ルータ１７のＩＰアドレスと対をなすＭＡＣアドレス（つまりルータ１７のＭＡＣアドレス）を取得する（ステップＳ７５）。通信データ送信部１２５は、入力されたＩＰパケット及び取得されたＭＡＣアドレス（ここではルータ１７のＭＡＣアドレス）を用いて、当該取得されたＭＡＣアドレスを宛先とする通信データを作成する（ステップＳ７６）。このステップＳ７６において通信データ送信部１２５は、作成された通信データをＩ／Ｏ制御部１２０に送ることにより、当該通信データをＩ／Ｏ制御部１２０からネットワークセグメント１６-iに送信させる（ステップＳ７６）。ここで通信データ送信部１２５は、取得されたＭＡＣアドレスを宛先とする通信データを、次のように作成する。
【０１２０】
まず通信データ送信部１２５は、取得されたＭＡＣアドレスを宛先ＭＡＣアドレスとし、当該通信データ送信部１２５を含む仮想マシンモニタ１２-iが動作しているＨＷ１１-iのＭＡＣアドレスを送信元ＭＡＣアドレスとするデータリンク層ヘッダを作成する。通信データ送信部１２５は、作成されたデータリンク層ヘッダを、入力されたＩＰパケットに付加することにより、取得されたＭＡＣアドレスを宛先とする通信データを作成する。
【０１２１】
図２５は、ステップＳ７６で作成される通信データの一例を、入力されたＩＰパケット及びＡＲＰテーブル１２９と対応付けて示す。  
図２５において、入力されたＩＰパケット（データ）２５０は、図１９に示すデータ１９４、図２１に示すデータ２１６または図２３に示すデータ２３４に相当する。ＩＰパケット２５０は、ＩＰヘッダ２５１及びＩＰペイロード２５２を含む。通信データ送信部１２５は、このＩＰパケット２５０にデータリンク層ヘッダ２５３を付加することにより、通信データ送信部１２５からＩ／Ｏ制御部１２０に送られるべき通信データ２５４を作成する。
【０１２２】
図２５の例では、矢印Ａ７１に示されるように、ＩＰヘッダ２５１の宛先ＩＰアドレスに一致するＩＰアドレス“１９２．１６８．１．１５０”がＡＲＰテーブル１２９に登録されている。この場合、通信データ２５４のデータリンク層ヘッダ２５３の宛先ＭＡＣアドレスには、上記一致するＩＰアドレス“１９２．１６８．１．１５０”と対をなしてＡＲＰテーブル１２９に登録されているＭＡＣアドレス“ｄｄ：ｄｄ：ｄｄ：ｄｄ：ｄｄ：ｄｄ”が、矢印Ａ７２で示されるように用いられる。データリンク層ヘッダ２５３の送信元ＭＡＣアドレスには、上述のように、仮想マシンモニタ１２-iが動作しているＨＷ１１-iのＭＡＣアドレスが用いられる。ステップＳ７６がステップＳ７５に続いて実行された場合、上記一致するＩＰアドレス“１９２．１６８．１．１５０”はルータ１７のＩＰアドレスであり、当該ＩＰアドレスと対をなしてＡＲＰテーブル１２９に登録されているＭＡＣアドレス“ｄｄ：ｄｄ：ｄｄ：ｄｄ：ｄｄ：ｄｄ”はルータ１７のＭＡＣアドレスである。
【０１２３】
一方、上記再度の判定（ステップＳ７４）でも、ルータ１７のＩＰアドレスに一致するデータがＡＲＰテーブル１２９に登録されていないと判定された場合、通信データ送信部１２５はそのまま処理を終了する。
【０１２４】
また、上記ステップＳ７１の判定がＮＯの場合、つまり宛先ＩＰアドレスがネットワークセグメント１６-iに属している場合、通信データ送信部１２５は、当該宛先ＩＰアドレスに一致するＩＰアドレスを含むデータがＡＲＰテーブル１２９に登録されているか判定する（ステップＳ７７）。
【０１２５】
ステップＳ７７の判定がＮＯの場合、通信データ送信部１２５は、入力されたＩＰパケットの宛先ＩＰアドレスを宛先ＩＰアドレスとするＡＲＰ要求をＩ／Ｏ制御部１２０に送ることにより、当該ＡＲＰ要求をＩ／Ｏ制御部１２０からネットワークセグメント１６-iに送信させる（ステップＳ７８）。このＡＲＰ要求は、Ｉ／Ｏ制御部１２０の制御のもとで通信転送制御部１２２内の通信データ判定部１２４で中継されて、ＡＲＰ処理部１２６に入力される（図１８ステップＳ５２）。
【０１２６】
通信データ送信部１２５はステップＳ７８を実行すると、入力されたＩＰパケットの宛先ＩＰアドレスに一致するＩＰアドレスを含むデータがＡＲＰテーブル１２９に登録されているか再度判定する（ステップＳ７９）。
【０１２７】
ステップＳ７７またはＳ７９で、入力されたＩＰパケットの宛先ＩＰアドレスに一致するＩＰアドレスを含むデータがＡＲＰテーブル１２９に登録されていると判定された場合、通信データ送信部１２５は当該ＡＲＰテーブル１２９から、上記宛先ＩＰアドレスに一致するＩＰアドレスと対をなすＭＡＣアドレスを取得する（ステップＳ８０）。すると通信データ送信部１２５は上記ステップＳ７６に進み、当該入力されたＩＰパケット及び取得されたＭＡＣアドレスを用いて、当該取得されたＭＡＣアドレスを宛先とする通信データを作成して、Ｉ／Ｏ制御部１２０に送る。この処理は、入力されたＩＰパケットの宛先ＩＰアドレスがネットワークセグメント１６-iとは異なるネットワークセグメントに属している場合と同様に行われる。但し、宛先ＭＡＣアドレスは異なる。つまり、宛先ＭＡＣアドレスには、ルータ１７のＭＡＣアドレスではなくて、ステップＳ８０で取得されたＭＡＣアドレス（詳細には、入力されたＩＰパケットの宛先ＩＰアドレスに一致するＩＰアドレスと対をなしてＡＲＰテーブル１２９に登録されているＭＡＣアドレス）が用いられる。
【０１２８】
＜ＡＲＰ処理部の動作＞
次に、ＡＲＰ処理部１２６の動作について説明する。  
ＡＲＰ処理部１２６が実行する処理は、（１）ＡＲＰパケット（つまりＡＲＰ要求またはＡＲＰ応答）が入力された場合の処理、（２）ＡＲＰテーブルの定期チェックに大別される。上記（１）の処理において、ＡＲＰ処理部１２６は、入力されたＡＲＰパケットに基づくＡＲＰテーブル１２９へのデータの追加、及びＡＲＰパケットの送信を行う。上記（２）の処理において、ＡＲＰ処理部１２６は、ＡＲＰテーブル１２９を予め定められた一定の時間間隔でチェックし、有効期限を減らしていく。またＡＲＰ処理部１２６は、有効期限の切れたデータをＡＲＰテーブル１２９から削除する。上記（１）及び（２）の処理の詳細は次の通りである。
【０１２９】
（１）ＡＲＰパケットが入力された場合の処理
まず、ＡＲＰパケットが入力された場合のＡＲＰ処理部１２６の動作について、図２６のフローチャートを参照して説明する。
【０１３０】
ＡＲＰ処理部１２６は、入力されたＡＲＰパケットがＡＲＰ応答かを判定する（ステップＳ９１）。もし、ＡＲＰ応答であるならば（ステップＳ９１がＹＥＳ）、ＡＲＰ処理部１２６は、当該ＡＲＰ応答のＡＲＰ応答パケットに基づいて、ＡＲＰテーブル１２９にデータを追加する（ステップＳ９２）。このＡＲＰテーブル１２９に追加されるデータは、ＭＡＣアドレス及びＩＰアドレスの対と有効期限の情報とを含む。ここで、ＭＡＣアドレス及びＩＰアドレスには、それぞれＡＲＰ応答パケットの送信元ＭＡＣアドレス及び送信元ＩＰアドレスが用いられる。有効期限の情報には、例えばシステムで予め定められている６００秒を示す情報が用いられる。しかし、有効期限に、ユーザによって指定される値を用いても構わない。
【０１３１】
図２７は、ステップＳ９２でＡＲＰテーブル１２９に追加されるデータの一例を、入力されたＡＲＰ応答と対応付けて示す。  
図２７において、入力されたＡＲＰ応答２７０は、例えば図４に示すＡＲＰ応答４０または図８に示すＡＲＰ応答８０に相当する。ＡＲＰ応答２７０は、データリンク層ヘッダ２７１及びＡＲＰ応答パケット２７２を含む。このＡＲＰ応答パケット２７２の送信元ＭＡＣアドレス及び送信元ＩＰアドレスが、それぞれ矢印Ａ８１及びＡ８２で示されるように、ＡＲＰテーブル１２９に登録される。このとき、ＡＲＰテーブル１２９に登録されたＭＡＣアドレス及びＩＰアドレスの対の有効期限を示す情報も、当該ＭＡＣアドレス及びＩＰアドレスの対に対応付けてＡＲＰテーブル１２９に登録される。
【０１３２】
一方、入力されたＡＲＰパケットがＡＲＰ応答でないならば（ステップＳ９１がＮＯ）、つまりＡＲＰ要求であるならば、ＡＲＰ処理部１２６は、当該ＡＲＰ要求の宛先ＩＰアドレス（ターゲットＩＰアドレス）が当該ＡＲＰ処理部１２６を含む仮想マシンモニタ１２-i自身のＩＰアドレスであるかを判定する（ステップＳ９３）。
【０１３３】
ＡＲＰ要求の宛先ＩＰアドレス（ターゲットＩＰアドレス）が仮想マシンモニタ１２-i自身のＩＰアドレスであるならば（ステップＳ９３がＹＥＳ）、ＡＲＰ処理部１２６は、入力されたＡＲＰ要求の送信元アドレス（送信元ＭＡＣアドレス及び送信元ＩＰアドレス）に対する、仮想マシンモニタ１２-iのＡＲＰ応答を作成する（ステップＳ９４）。このステップＳ９４においてＡＲＰ処理部１２６は、作成されたＡＲＰ応答をＩ／Ｏ制御部１２０に送ることにより、当該ＡＲＰ応答をＩ／Ｏ制御部１２０からネットワークセグメント１６-iに送信させる。
【０１３４】
図２８は、ステップＳ９４で作成・送信されるＡＲＰ応答の一例を、入力されたＡＲＰ要求と対応付けて示す。  
図２８において、入力されたＡＲＰ要求２８０は、例えば図３に示すＡＲＰ要求３０、図７に示すＡＲＰ要求７０または図１０に示すＡＲＰ要求１００に相当する。ＡＲＰ要求２８０は、データリンク層ヘッダ２８１及びＡＲＰ要求パケット２８２を含む。一方、作成・送信されるＡＲＰ応答２８３は、データリンク層ヘッダ２８４及びＡＲＰ応答パケット２８５を含む。
【０１３５】
ＡＲＰ応答２８３のデータリンク層ヘッダ２８４の宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスには、それぞれ、矢印Ａ９１及びＡ９２で示されるように、ＡＲＰ要求２８０のデータリンク層ヘッダ２８１の送信元ＭＡＣアドレス及び仮想マシンモニタ１２-iが動作しているＨＷ１１-iのＭＡＣアドレスが用いられる。ＡＲＰ応答２８３のＡＲＰ応答パケット２８５の宛先ＭＡＣアドレス及び宛先ＩＰアドレスには、それぞれ、矢印Ａ９３及びＡ９４で示されるように、ＡＲＰ要求２８０のＡＲＰ要求パケット２８２の送信元ＭＡＣアドレス及び送信元ＩＰアドレスが用いられる。ＡＲＰ応答２８３のＡＲＰ応答パケット２８５の送信元ＭＡＣアドレス及び送信元ＩＰアドレスには、それぞれ、矢印Ａ９５及びＡ９５で示されるように、仮想マシンモニタ１２-iが動作しているＨＷ１１-iのＭＡＣアドレス及び当該仮想マシンモニタ１２-i自身のＩＰアドレスが用いられる。
【０１３６】
一方、ステップＳ９３の判定がＮＯであるならば、つまりＡＲＰ要求の宛先ＩＰアドレス（ターゲットＩＰアドレス）が仮想マシンモニタ１２-i自身のＩＰアドレスと異なるならば、ＡＲＰ処理部１２６は、当該宛先ＩＰアドレスと一致するゲストＯＳのＩＰアドレスが移動先アドレステーブル１２７に登録されているかを判定する（ステップＳ９５）。
【０１３７】
ステップＳ９５の判定がＹＥＳであるならば、ＡＲＰ処理部１２６は、入力されたＡＲＰ要求が、移動したゲストＯＳに対するＡＲＰ要求であると判断する。この場合、ＡＲＰ処理部１２６は、移動先アドレステーブル１２７に登録されている、ＡＲＰ要求の宛先ＩＰアドレス（ターゲットＩＰアドレス）と一致するゲストＯＳのＩＰアドレス及び当該ゲストＯＳのＩＰアドレスと対をなす当該ゲストＯＳのＭＡＣアドレスを使用して、入力されたＡＲＰ要求の送信元アドレスに対するゲストＯＳのＡＲＰ応答を作成する（ステップＳ９６）。このステップＳ９６においてＡＲＰ処理部１２６は、作成されたＡＲＰ応答をＩ／Ｏ制御部１２０に送ることにより、当該ＡＲＰ応答をＩ／Ｏ制御部１２０からネットワークセグメント１６-iに送信させる。
【０１３８】
図２９は、ステップＳ９６で作成・送信されるＡＲＰ応答の一例を、入力されたＡＲＰ要求及び移動先アドレステーブル１２７と対応付けて示す。  
図２９において、入力されたＡＲＰ要求２９０は、データリンク層ヘッダ２９１及びＡＲＰ要求パケット２９２を含む。一方、作成・送信されるＡＲＰ応答２９３は、データリンク層ヘッダ２９４及びＡＲＰ応答パケット２９５を含む。図２９の例において、移動先アドレステーブル１２７には、矢印Ａ１０１で示されるように、ＡＲＰ要求２９０のＡＲＰ要求パケット２９２の宛先ＩＰアドレス（ターゲットＩＰアドレス）と一致するゲストＯＳのＩＰアドレス“１９２．１６８．１．１００”が登録されている。
【０１３９】
この場合、ＡＲＰ応答２９３のデータリンク層ヘッダ２９４の宛先ＭＡＣアドレスには、矢印Ａ１０２で示されるように、ＡＲＰ要求２９０のデータリンク層ヘッダ２９１の送信元ＭＡＣアドレスが用いられる。ＡＲＰ応答２９３のデータリンク層ヘッダ２９４の送信元ＭＡＣアドレスには、矢印Ａ１０３で示されるように、上記ゲストＯＳのＩＰアドレス“１９２．１６８．１．１００”と対をなして移動先アドレステーブル１２７に登録されている当該ゲストＯＳのＭＡＣアドレス“ａａ：ａａ：ａａ：ａａ：ａａ：ａａ”が用いられる。
【０１４０】
また、ＡＲＰ応答２９３のＡＲＰ応答パケット２９５の宛先ＭＡＣアドレス及び宛先ＩＰアドレスには、それぞれ、矢印Ａ１０４及び１０５で示されるように、ＡＲＰ要求２９０のＡＲＰ要求パケット２９２の送信元ＭＡＣアドレス及び送信元ＩＰアドレスが用いられる。ＡＲＰ応答２９３のＡＲＰ応答パケット２９５の送信元ＭＡＣアドレス及び送信元ＩＰアドレスには、それぞれ、矢印Ａ１０６及びＡ１０７で示されるように、上記ゲストＯＳのＭＡＣアドレス“ａａ：ａａ：ａａ：ａａ：ａａ：ａａ”及びＩＰアドレス“１９２．１６８．１．１００”が用いられる。
【０１４１】
一方、ステップＳ９５の判定がＮＯであるならば、つまり入力されたＡＲＰ要求の宛先ＩＰアドレスと一致するゲストＯＳのＩＰアドレスが移動先アドレステーブル１２７に登録されていないならば、ＡＲＰ処理部１２６は、ＡＲＰ要求の送信元ＩＰアドレスと一致するゲストＯＳのＩＰアドレスが移動元アドレステーブル１２８に登録されているかを判定する（ステップＳ９７）。
【０１４２】
もし、ステップＳ９７の判定がＹＥＳであるならば、ＡＲＰ処理部１２６は、入力されたＡＲＰ要求が、移動しているゲストＯＳが送信したＡＲＰ要求であると判断する。この場合、ＡＲＰ処理部１２６は、偽のＭＡＣアドレスを格納したＡＲＰ応答を作成する（ステップＳ９８）。このステップＳ９８においてＡＲＰ処理部１２６は、作成されたＡＲＰ応答をＩ／Ｏ制御部１２０に送ることにより、当該ＡＲＰ応答をＩ／Ｏ制御部１２０からネットワークセグメント１６-iに送信させる。
【０１４３】
図３０は、ステップＳ９８で作成・送信されるＡＲＰ応答の一例を、入力されたＡＲＰ要求及び移動元アドレステーブル１２８と対応付けて示す。  
図３０において、入力されたＡＲＰ要求３００は、データリンク層ヘッダ３０１及びＡＲＰ要求パケット３０２を含む。一方、作成・送信されるＡＲＰ応答３０３は、データリンク層ヘッダ３０４及びＡＲＰ応答パケット３０５を含む。図３０の例において、移動元アドレステーブル１２８には、矢印Ａ１１１で示されるように、ＡＲＰ要求３００のＡＲＰ要求パケット３０２の送信元ＩＰアドレスと一致するゲストＯＳのＩＰアドレス“１９２．１６８．２．１００”が登録されている。
【０１４４】
この場合、ＡＲＰ応答３０３のデータリンク層ヘッダ３０４の宛先ＭＡＣアドレスには、矢印Ａ１１２で示されるように、ＡＲＰ要求３００のデータリンク層ヘッダ３０１の送信元ＭＡＣアドレスが用いられる。ＡＲＰ応答３０３のデータリンク層ヘッダ３０４の送信元ＭＡＣアドレスには、矢印Ａ１１３で示されるように、偽のＭＡＣアドレスが用いられる。
【０１４５】
また、ＡＲＰ応答３０３のＡＲＰ応答パケット３０５の宛先ＭＡＣアドレス及び宛先ＩＰアドレスには、それぞれ、矢印Ａ１１４及び１１５で示されるように、ＡＲＰ要求３００のＡＲＰ要求パケット３０２の送信元ＭＡＣアドレス及び送信元ＩＰアドレスが用いられる。ＡＲＰ応答３０３のＡＲＰ応答パケット３０５の送信元ＭＡＣアドレス及び送信元ＩＰアドレスには、それぞれ、矢印Ａ１１６及びＡ１１７で示されるように、上記偽のＭＡＣアドレス及びＡＲＰ要求パケット３０２の宛先ＩＰアドレス（ターゲットＩＰアドレス）が用いられる。
【０１４６】
一方、ステップＳ９７の判定がＮＯであるならば、つまり入力されたＡＲＰ要求の送信元ＩＰアドレスと一致するゲストＯＳのＩＰアドレスが移動元アドレステーブル１２８に登録されていないならば、ＡＲＰ処理部１２６は、当該ＡＲＰ要求が、自身が処理する必要のない通信データ（移動していないゲストＯＳからのＡＲＰ要求）であると判断する。この場合、ＡＲＰ処理部１２６は、入力されたＡＲＰ要求を、Ｉ／Ｏ制御部１２０にそのまま返す（ステップＳ９９）。
【０１４７】
（２）ＡＲＰテーブルの定期チェック
次に、ＡＲＰ処理部１２６によるＡＲＰテーブル１２９の定期チェックについて、図３１のフローチャートを参照して説明する。
【０１４８】
ＡＲＰ処理部１２６は、ＡＲＰテーブル１２９を定期的にチェックして、有効期限が０以下となるデータを当該テーブル１２９から削除するための処理を、図３１のフローチャートに従って次のように行う。
【０１４９】
ＡＲＰ処理部１２６は、ＡＲＰテーブル１２９のエントリを参照し、有効期限の値を定期チェックの間隔の時間だけ減らす（ステップＳ１０１）。次にＡＲＰ処理部１２６は、定期チェックの間隔の時間だけ減らされた後の有効期限の値が０以下となったかを判定する（ステップＳ１０２）。もし、ステップＳ１０２の判定がＹＥＳであるならば、ＡＲＰ処理部１２６は、当該ステップＳ１０２で判定された有効期限の値を含むＡＲＰテーブル１２９のエントリのデータを、当該テーブル１２９から削除する（ステップＳ１０３）。これに対し、ステップＳ１０２の判定がＮＯであるならば、ＡＲＰ処理部１２６はステップＳ１０３をスキップする。
【０１５０】
ＡＲＰ処理部１２６は、以上の処理を、ＡＲＰテーブル１２９の全エントリについて繰り返す（ステップＳ１０４）。ＡＲＰ処理部１２６は、ＡＲＰテーブル１２９の全エントリについて上記の処理を完了すると（ステップＳ１０４）、定期チェックの間隔の時間待機する（ステップＳ１０５）。本実施形態において、ＡＲＰテーブル１２９を対象とする定期チェックの間隔（時間間隔）は１秒に予め定められている。しかし、定期チェックの間隔がユーザによって設定可能な構成としても構わない。
【０１５１】
ＡＲＰ処理部１２６は、定期チェックの間隔の時間待機し終える毎に、上述のＡＲＰテーブル１２９の全エントリをチェックして、有効期限が０以下となるデータを当該テーブル１２９から削除するための処理を繰り返す（ステップＳ１０６）。
【０１５２】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態では、ゲストＯＳが動作可能な仮想マシンモニタが２台である。しかし本発明は、仮想マシンモニタが３台以上の仮想マシンシステムにも上記実施形態と同様に適用できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０１５３】
【図１】本発明の一実施形態に係る仮想マシンシステムの構成を示すブロック図。
【図２】図１のシステムで適用される、ゲストＯＳの移動前後の通信シーケンスを示すシーケンスチャート。
【図３】図２の通信シーケンスにおいてクライアントから送信されるＡＲＰ要求の一例を示す図。
【図４】図３に示すＡＲＰ要求に対するＡＲＰ応答の一例を示す図。
【図５】図２の通信シーケンスにおいてクライアントから送信される移動されたゲストＯＳ宛ての通信データと、当該通信データを移動されたゲストＯＳに中継するために作成される通信データとを対応付けて示す図。
【図６】図２の通信シーケンスにおいて中継された通信データと、当該通信データに基づいて作成される移動されたゲストＯＳ宛ての通信データとを対応付けて示す図。
【図７】図２の通信シーケンスにおいて移動されたゲストＯＳから送信されるＡＲＰ要求の一例を示す図。
【図８】図７に示すＡＲＰ要求に対するＡＲＰ応答の一例を示す図。
【図９】図２の通信シーケンスにおいて移動されたゲストＯＳから送信される通信データと、当該通信データを中継するために作成される通信データとを対応付けて示す図。
【図１０】図２の通信シーケンスにおいて仮想マシンモニタから送信されるＡＲＰ要求の一例を示す図。
【図１１】図１０に示すＡＲＰ要求に対するＡＲＰ応答の一例を示す図。
【図１２】図２の通信シーケンスにおいて中継された通信データと、当該通信データに基づいて作成されるクライアント宛ての通信データとを対応付けて示す図。
【図１３】図１に示される仮想マシンモニタの構成を示すブロック図。
【図１４Ａ】図１３に示される移動先アドレステーブルのデータ構造例を示す図。
【図１４Ｂ】図１３に示される移動元アドレステーブルのデータ構造例を示す図。
【図１５】図１３に示されるＡＲＰテーブルのデータ構造例を示す図。
【図１６】図１３に示されるゲストＯＳ状態受信部の動作を説明するためのフローチャート。
【図１７】ゲストＯＳ状態受信部によって作成される移動停止データの一例を、移動元アドレステーブルに対応付けて示す図。
【図１８】図１３に示される通信データ判定部の動作を説明するためのフローチャート。
【図１９】図１８中のステップ５４で作成されるデータ（ＩＰパケット）の一例を、入力された通信データ及び移動先アドレステーブルに対応付けて示す図。
【図２０】移動停止データに基づいて移動先アドレステーブル１２７からエントリデータを削除する動作を説明するための図。
【図２１】図１８中のステップ６１で通信データ判定部から通信データ送信部に送られるＩＰパケットを、入力された通信データ及び移動先アドレステーブルと対応付けて示す図。
【図２２】図１８中のステップ６４で作成される通信データの一例を、入力された通信データ及び移動元アドレステーブルに対応付けて示す図。
【図２３】図１８中のステップ６７で作成されるデータ（ＩＰパケット）の一例を、入力された通信データ及び移動元アドレステーブルに対応付けて示す図。
【図２４】図１３に示される通信データ送信部の動作を説明するためのフローチャート。
【図２５】図２４中のステップ７６で作成・送信される通信データの一例を、入力されたＩＰパケット及びＡＲＰテーブルと対応付けて示す図。
【図２６】図１３に示されるＡＲＰ処理部のＡＲＰパケットが入力された場合の動作を説明するためのフローチャート。
【図２７】図２６中のステップＳ９２でＡＲＰテーブルに追加されるデータの一例を、入力されたＡＲＰ応答と対応付けて示す図。
【図２８】図２６中のステップＳ９４で作成・送信されるＡＲＰ応答の一例を、入力されたＡＲＰ要求と対応付けて示す図。
【図２９】図２６中のステップＳ９６で作成・送信されるＡＲＰ応答の一例を、入力されたＡＲＰ要求及び移動先アドレステーブルと対応付けて示す図。
【図３０】図２６中のステップＳ９８で作成・送信されるＡＲＰ応答の一例を、入力されたＡＲＰ要求及び移動元アドレステーブルと対応付けて示す図。
【図３１】図１３に示されるＡＲＰ処理部によるＡＲＰテーブルの定期チェックを説明するためのフローチャート。
【符号の説明】
【０１５４】
１１-1，１１-2…ＨＷ（ハードウェア）、１２-1，１２-2，１２-i…仮想マシンモニタ、１３…仮想マシン、１４…ゲストＯＳ、１５…共有ディスク装置、１６…ＬＡＮ、１６-1，１６-2，１６-i…ネットワークセグメント、１２０…Ｉ／Ｏ制御部、１２１…ゲストＯＳ制御部、１２２…通信転送制御部、１２３…ゲストＯＳ状態受信部、１２４…通信データ判定部、１２５…通信データ送信部、１２６…ＡＲＰ処理部、１２７…移動先アドレステーブル、１２８…移動元アドレステーブル、１２９…ＡＲＰテーブル、１３０…移動管理部。
【図１】
0004762270.tif 000002
【図２】
0004762270.tif 000003
【図３】
0004762270.tif 000004
【図４】
0004762270.tif 000005
【図５】
0004762270.tif 000006
【図６】
0004762270.tif 000007
【図７】
0004762270.tif 000008
【図８】
0004762270.tif 000009
【図９】
0004762270.tif 000010
【図１０】
0004762270.tif 000011
【図１１】
0004762270.tif 000012
【図１２】
0004762270.tif 000013
【図１３】
0004762270.tif 000014
【図１４Ａ】
0004762270.tif 000015
【図１４Ｂ】
0004762270.tif 000016
【図１５】
0004762270.tif 000017
【図１６】
0004762270.tif 000018
【図１７】
0004762270.tif 000019
【図１８】
0004762270.tif 000020
【図１９】
0004762270.tif 000021
【図２０】
0004762270.tif 000022
【図２１】
0004762270.tif 000023
【図２２】
0004762270.tif 000024
【図２３】
0004762270.tif 000025
【図２４】
0004762270.tif 000026
【図２５】
0004762270.tif 000027
【図２６】
0004762270.tif 000028
【図２７】
0004762270.tif 000029
【図２８】
0004762270.tif 000030
【図２９】
0004762270.tif 000031
【図３０】
0004762270.tif 000032
【図３１】
0004762270.tif 000033