(57)【要約】【課題】プライベートアドレスを使用するマシンがネットワークアドレス・ポート変換機構間を移動されても、当該マシンと通信相手との間の通信が途切れないようにする。【解決手段】ＮＡＰＴ１４-1は、ＮＡＰＴ１４-2側に移動されたゲストＯＳ１６宛ての通信データ６００を通信相手２４から受信した場合、当該通信データ６００の宛先ネットワークアドレスをＮＡＰＴ１４-2のグローバルアドレスに変換し、当該ゲストＯＳ１６宛ての通信データ６１０としてＮＡＰＴ１４-1へ転送する（ステップ２０９）。ＮＡＰＴ１４-2は、ＮＡＰＴ１４-2によって転送された通信データ６１０を受信した場合、当該通信データ６００に対応する当該ゲストＯＳ１６宛ての通信データ７００を当該ゲストＯＳ１６に送信する（ステップ２１１）。【選択図】      図２
2010114665.tif 000002
【特許請求の範囲】
【請求項１】
プライベートアドレスを使用するマシンが接続可能な第１のプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第１のネットワークアドレス・ポート変換機構と、前記マシンが接続可能な第２のプライベートネットワークと前記グローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第２のネットワークアドレス・ポート変換機構とを備えた計算機システムにおいて、前記マシンと通信を行う前記グローバルネットワークに接続された通信相手及び前記マシンの間で授受される通信データを制御する通信データ制御方法であって、
前記マシンが前記第１のネットワークアドレス・ポート変換機構側から前記第２のネットワークアドレス・ポート変換機構側に移動されたことを、前記第２のネットワークアドレス・ポート変換機構が検出するステップと、
前記マシンの前記第２のネットワークアドレス・ポート変換機構側への移動の検出に応じて、前記第１のネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データであって、前記第１のネットワークアドレス・ポート変換機構が有する第１の記憶手段に格納されている、当該移動が検出された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられるアドレス・ポート変換データを、前記第２のネットワークアドレス・ポート変換機構が取得して自身が有する第２の記憶手段に格納することにより、当該アドレス・ポート変換データを前記第１のネットワークアドレス・ポート変換機構と共有するステップと、
前記通信相手から前記グローバルネットワークを介して前記第１のネットワークアドレス・ポート変換機構に送信された、前記第２のネットワークアドレス・ポート変換機構側に移動された前記マシン宛ての、前記第１のネットワークアドレス・ポート変換機構のグローバルアドレスを宛先ネットワークアドレスとして含む通信データを、前記第１のネットワークアドレス・ポート変換機構が受信した場合、前記第１のネットワークアドレス・ポート変換機構が、当該受信された通信データの前記宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記第２のネットワークアドレス・ポート変換機構のグローバルアドレスに変換して、当該宛先ネットワークアドレスが変換された通信データを前記第２のネットワークアドレス・ポート変換機構に転送するステップと、
前記第２のネットワークアドレス・ポート変換機構に転送された前記通信データを対象に、当該第２のネットワークアドレス・ポート変換機構が、前記第２の記憶手段に格納されている、前記第１のネットワークアドレス・ポート変換機構と共有する前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換して、当該ネットワークアドレス及びポート番号が変換された通信データを前記移動されたマシンに前記第２のプライベートネットワークを介して送信するステップと
を具備することを特徴とする通信データ制御方法。
【請求項２】
前記マシンの前記第１のネットワークアドレス・ポート変換機構側から前記第２のネットワークアドレス・ポート変換機構側への移動に応じて、前記第１の記憶手段に格納されている、当該移動される前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられる前記アドレス・ポート変換データを、前記第１のネットワークアドレス・ポート変換機構が前記第２のネットワークアドレス・ポート変換機構に通知するステップを更に具備し、
前記検出するステップにおいて前記第２のネットワークアドレス・ポート変換機構は、前記第１のネットワークアドレス・ポート変換機構からの前記アドレス・ポート変換データの通知を受け取ることにより、前記第１のネットワークアドレス・ポート変換機構から前記第２のネットワークアドレス・ポート変換機構への前記マシンの移動を検出する
ことを特徴とする請求項１記載の通信データ制御方法。
【請求項３】
前記第２のネットワークアドレス・ポート変換機構側へ移動された前記マシンから前記第２のプライベートネットワークを介して前記第２のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データを前記第２のネットワークアドレス・ポート変換機構が受信した場合、当該受信された通信データを対象に、当該第２のネットワークアドレス・ポート変換機構が、前記第２の記憶手段に格納されている、前記第１のネットワークアドレス・ポート変換機構と共有する前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換して、当該ネットワークアドレス及びポート番号が変換された前記通信相手宛ての通信データを前記グローバルネットワークを介して前記通信相手に直接送信するステップを更に具備することを特徴とする請求項２記載の通信データ制御方法。
【請求項４】
前記マシンが前記第１のネットワークアドレス・ポート変換機構側から前記第２のネットワークアドレス・ポート変換機構側に移動された際に、前記第１のネットワークアドレス・ポート変換機構が、前記第１の記憶手段に格納されている移動先アドレステーブルに、前記移動されたマシンのプライベートアドレスと前記移動されたマシンの移動先である前記第２のネットワークアドレス・ポート変換機構のグローバルアドレスとを対応付けて追加するステップを更に具備し、
前記第１のネットワークアドレス・ポート変換機構から前記第２のネットワークアドレス・ポート変換機構に通知される前記アドレス・ポート変換データは、前記移動されるマシンが使用するプライベートアドレス及びポート番号から構成されるプライベートアドレス情報と、前記移動されるマシンの移動元である前記第１のネットワークアドレス・ポート変換機構のグローバルアドレス及び前記第１のネットワークアドレス・ポート変換機構によって前記移動されるマシンに割り当てられているポート番号から構成されるグローバルアドレス情報とを含み、
前記転送するステップにおいて前記第１のネットワークアドレス・ポート変換機構は、前記通信相手から前記第１のネットワークアドレス・ポート変換機構に送信された、前記移動されたマシン宛ての通信データの前記宛先ネットワークアドレスを、前記第１の記憶手段に格納されている前記移動先テーブルに基づいて、前記第１のネットワークアドレス・ポート変換機構のグローバルアドレスから前記第２のネットワークアドレス・ポート変換機構のグローバルアドレスに変換し、
前記第２のネットワークアドレス・ポート変換機構は、前記第１のネットワークアドレス・ポート変換機構から前記第２のネットワークアドレス・ポート変換機構に前記アドレス・ポート変換データが通知された場合に、前記共有するステップにおいて、当該通知されたアドレス・ポート変換データを、前記第２の記憶手段に格納されている移動元アドレステーブルに追加し、
前記移動されたマシンから前記第２のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データは送信元ネットワークアドレス及び送信元ポート番号として前記移動されたマシンのプライベートアドレス及びポート番号を含み、
前記直接送信するステップにおいて前記第２のネットワークアドレス・ポート変換機構は、前記移動されたマシンから前記前記第２のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データの前記送信元ネットワークアドレス及び送信元ポート番号を、前記第２の記憶手段に格納されている前記移動元アドレステーブルに基づいて、前記移動されたマシンの前記プライベートアドレス及びポート番号から前記第１のネットワークアドレス・ポート変換機構のグローバルアドレス及び前記第１のネットワークアドレス・ポート変換機構によって前記移動されたマシンに割り当てられているポート番号に変換する
ことを特徴とする請求項３記載の通信データ制御方法。
【請求項５】
前記通信相手から前記グローバルネットワークを介して前記第１のネットワークアドレス・ポート変換機構に送信された前記マシン宛ての通信データを前記第１のネットワークアドレス・ポート変換機構が受信した場合、前記第１のネットワークアドレス・ポート変換機構が、当該受信された前記マシン宛ての通信データの送信元ネットワークアドレスに一致するプライベートアドレスが、前記第１の記憶手段に格納されている前記移動先アドレステーブルに存在するかを判定する第１の判定ステップと、
前記一致するプライベートアドレスが存在しないと前記第１の判定ステップで判定された場合、前記第１のネットワークアドレス・ポート変換機構が、前記受信された前記マシン宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記第１の記憶手段に格納されているアドレス・ポート変換データに基づいて当該マシンの使用するプライベートアドレス及びポート番号に変換して、当該宛先ネットワークアドレス及びポート番号が変換された前記マシン宛ての通信データを、当該マシンに前記第１のプライベートネットワークを介して送信するステップと、
前記マシンから前記第２のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データを前記第２のネットワークアドレス・ポート変換機構が受信した場合、前記第２のネットワークアドレス・ポート変換機構が、当該受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが、前記第２の記憶手段に存在するかを判定する第２の判定ステップと、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在すると前記第２の判定ステップで判定された場合、前記第２のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号を、前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データに格納されているグローバルアドレス情報を構成するグローバルアドレス及びポート番号に変換して、当該送信元ネットワークアドレス及びポート番号が変換された通信データを、前記グローバルネットワークを介して前記通信相手に送信するステップと、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在しないと前記第２の判定ステップで判定された場合、前記第２のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが前記第２の記憶手段に格納されている前記移動元アドレステーブルに存在するかを判定する第３の判定ステップと、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが存在しないと前記第３の判定ステップで判定された場合、前記第２のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの宛先元ネットワークアドレス及びポート番号に一致するグローバルアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在するかを判定する第４の判定ステップと、
前記一致するグローバルアドレス情報を含むアドレス・ポート変換データが存在すると前記第４の判定ステップで判定された場合、前記第２のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記一致するグローバルアドレス情報を含む前記アドレス・ポート変換データに格納されているプライベートアドレス情報を構成するプライベートアドレス及びポート番号に変換して、当該宛先ネットワークアドレス及びポート番号が変換された通信データを、前記グローバルネットワークを介して前記通信相手に送信するステップと、
を更に具備し、
前記一致するプライベートアドレスが存在すると前記第１の判定ステップで判定された場合、前記第１のネットワークアドレス・ポート変換機構が前記転送するステップを実行し、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが存在すると前記第３の判定ステップで判定された場合、前記第２のネットワークアドレス・ポート変換機構が前記直接送信するステップを実行する
ことを特徴とする請求項４記載の通信データ制御方法。
【請求項６】
前記移動されたマシンの移動先である前記第２のネットワークアドレス・ポート変換機構が前記移動されたマシンの移動元である前記第１のネットワークアドレス・ポート変換機構の障害発生の有無を定期的に確認するステップと、
前記第１のネットワークアドレス・ポート変換機構の障害発生が確認された場合、前記第２のネットワークアドレス・ポート変換機構が、前記第２の記憶手段に格納されている前記移動元アドレステーブルに存在する、前記第１のネットワークアドレス・ポート変換機構のグローバルアドレスを含むアドレス・ポート変換データを、自身の管理するアドレス・ポート変換データを保持するのに用いられる前記第２の記憶手段に格納されているアドレス・ポート変換テーブルに移動するステップと、
前記第１のネットワークアドレス・ポート変換機構の障害発生が確認された場合、前記第２のネットワークアドレス・ポート変換機構が、前記第１のネットワークアドレス・ポート変換機構のグローバルアドレスを引き継ぐための特別のアドレス応答プロトコル要求をブロードキャストで前記グローバルネットワークに送信するステップと
を更に具備することを特徴とする請求項４又は請求項５記載の通信データ制御方法。
【請求項７】
プライベートアドレスを使用するマシンが接続可能なプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための、前記グローバルネットワークを介して相互に通信可能な複数のネットワークアドレス・ポート変換機構を備えた計算機システムにおいて、
前記複数のネットワークアドレス・ポート変換機構の各々は、
前記プライベートネットワークに接続されているマシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられ、前記ネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データを格納する記憶手段と、
前記マシンが前記ネットワークアドレス・ポート変換機構側に他のネットワークアドレス・ポート変換機構側から移動されたことを検出する検出手段と、
前記検出手段による前記マシンの移動の検出に応じて、当該移動が検出された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられるアドレス・ポート変換データであって、前記移動が検出された前記マシンの移動元である前記他のネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データを前記記憶手段に追加するアドレス・ポート変換データ追加手段と、
前記マシンと通信を行う前記グローバルネットワークに接続された通信相手から前記グローバルネットワークを介して前記ネットワークアドレス・ポート変換機構に送信された、当該ネットワークアドレス・ポート変換機構から他のネットワークアドレス・ポート変換機構側に移動された前記マシン宛ての、前記第１のネットワークアドレス・ポート変換機構のグローバルアドレスを宛先ネットワークアドレスとして含む通信データが、前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された通信データの前記宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記他のネットワークアドレス・ポート変換機構のグローバルアドレスに変換する変換手段と、
前記変換手段によって前記宛先ネットワークアドレスが変換された通信データを、前記グローバルネットワークを介して前記前記第２のネットワークアドレス・ポート変換機構に転送する通信データ送信手段とを具備し、
前記変換手段は、当該変換手段を含む前記ネットワークアドレス・ポート変換機構に対して前記移動元である他のネットワークアドレス・ポート変換機構から前記通信データが転送された場合、当該転送された通信データを対象に、前記記憶手段に追加されている前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換し、
前記通信データ送信手段は、前記変換手段によってネットワークアドレス及びポート番号が変換された前記通信データを、前記移動されたマシンに前記プライベートネットワークを介して送信する
ことを特徴とする計算機システム。
【請求項８】
前記マシンの前記ネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構側への移動に応じて、前記記憶手段に格納されている、当該移動された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられる前記アドレス・ポート変換データを前記マシンの移動先の前記他のネットワークアドレス・ポート変換機構に通知するためのアドレス・ポート変換データパケットを作成するアドレス・ポート変換データパケット作成手段を更に具備し、
前記通信データ送信手段は、前記作成されたアドレス・ポート変換データパケットを前記マシンの移動先の前記他のネットワークアドレス・ポート変換機構に送信し、
前記検出手段は、前記マシンの移動元の前記他のネットワークアドレス・ポート変換機構の前記通信データ送信手段から送信された前記アドレス・ポート変換データパケットが前記ネットワークアドレス・ポート変換機構で受信された場合、当該アドレス・ポート変換データパケットに基づいて前記マシンの移動を検出する
ことを特徴とする請求項７記載の計算機システム。
【請求項９】
前記変換手段は、前記移動元の前記他のネットワークアドレス・ポート変換機構から移動された前記マシンから前記プライベートネットワークを介して送信された前記通信相手宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記通信相手宛ての通信データを対象に、前記記憶手段に追加されている前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換し、
前記通信データ送信手段は、前記ネットワークアドレス及びポート番号が変換された前記通信相手宛ての通信データを、前記グローバルネットワークを介して前記通信相手に直接送信する
ことを特徴とする請求項８記載の計算機システム。
【請求項１０】
前記記憶手段に格納される、移動されたマシンのプライベートアドレスと当該移動されたマシンの移動先のネットワークアドレス・ポート変換機構のグローバルアドレスとを対応付けて保持するための移動先アドレステーブルと、
前記記憶手段に格納される、前記ネットワークアドレス・ポート変換機構側に他のネットワークアドレス・ポート変換機構側から移動されたマシンが使用するプライベートアドレス及びポート番号から構成されるプライベートアドレス情報と、前記移動されたマシンの移動元の前記他のネットワークアドレス・ポート変換機構のグローバルアドレス及び当該移動元の前記他のネットワークアドレス・ポート変換機構によって前記移動されたマシンに割り当てられているポート番号から構成されるグローバルアドレス情報とを対応付けて保持する移動元アドレステーブルと、
前記マシンが前記ネットワークアドレス・ポート変換機構から他のネットワークアドレス・ポート変換機構側に移動された際に、前記移動先アドレステーブルに、前記移動されたマシンのプライベートアドレスと前記移動されたマシンの移動先の前記他のネットワークアドレス・ポート変換機構のグローバルアドレスとを対応付けて追加する移動先アドレステーブルデータ追加手段とを更に具備し、
前記アドレス・ポート変換データパケットによって通知される前記アドレス・ポート変換データは、前記移動されるマシンが使用するプライベートアドレス及びポート番号から構成されるプライベートアドレス情報と、前記移動されるマシンの移動元となるネットワークアドレス・ポート変換機構のグローバルアドレス及び当該移動元のネットワークアドレス・ポート変換機構によって前記移動されるマシンに割り当てられているポート番号から構成されるグローバルアドレス情報とを含み、
前記通信相手から送信される、前記移動されたマシン宛ての通信データは、宛先ネットワークアドレスとして前記移動されたマシンの前記移動元のネットワークアドレス・ポート変換機構のグローバルアドレスを含み、
前記ネットワークアドレス・ポート変換機構側に移動されたマシンから当該ネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データは送信元ネットワークアドレス及び送信元ポート番号として前記移動されたマシンのプライベートアドレス及びポート番号を含み、
前記アドレス・ポート変換データ追加手段は、前記マシンの移動元である前記他のネットワークアドレス・ポート変換機構の前記通信データ送信手段から送信された前記アドレス・ポート変換データパケットが前記ネットワークアドレス・ポート変換機構で受信された場合、当該アドレス・ポート変換データパケットによって通知されたアドレス・ポート変換データを前記移動元アドレステーブルに追加し、
前記変換手段は、
前記通信相手から送信された、前記ネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構に移動された前記マシン宛ての通信データの前記宛先ネットワークアドレスを、前記記憶手段に格納されている前記移動先テーブルに基づいて、前記マシンの移動元である前記ネットワークアドレス・ポート変換機構自身のグローバルアドレスから前記マシンの移動先である前記他のネットワークアドレス・ポート変換機構のグローバルアドレスに変換し、
前記ネットワークアドレス・ポート変換機構側に移動されたマシンから当該ネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記通信相手宛ての通信データの前記送信元ネットワークアドレス及び送信元ポート番号を、前記移動元アドレステーブルに基づいて、前記移動されたマシンの前記プライベートアドレス及びポート番号から移動元の前記他のネットワークアドレス・ポート変換機構のグローバルアドレス及び前記移動元の前記他のネットワークアドレス・ポート変換機構によって前記移動されたマシンに割り当てられているポート番号に変換する
ことを特徴とする請求項９記載の計算機システム。
【請求項１１】
前記通信相手から前記グローバルネットワークを介して前記ネットワークアドレス・ポート変換機構に送信された前記マシン宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記マシン宛ての通信データの送信元ネットワークアドレスに一致するプライベートアドレスが、前記移動先アドレステーブルに存在するかを判定する第１の判定手段と、
前記マシンから前記ネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが、前記記憶手段に存在するかを判定する第２の判定手段と、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在しないと前記第２の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在するかを判定する第３の判定手段と、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが存在しないと前記第３の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの宛先ネットワークアドレス及びポート番号に一致するグローバルアドレス情報を含むアドレス・ポート変換データが当該移動元アドレステーブルに存在するかを判定する第４の判定手段とを更に具備し、
前記変換手段は、
前記一致するプライベートアドレスが存在すると前記第１の判定手段によって判定された場合、前記受信された前記マシン宛ての通信データの宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記他のネットワークアドレス・ポート変換機構のグローバルアドレスに変換し、
前記一致するプライベートアドレスが存在しないと前記第１の判定手段によって判定された場合、前記受信された前記マシン宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記記憶手段に格納されているアドレス・ポート変換データに基づいて当該マシンの使用するプライベートアドレス及びポート番号に変換し、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在すると前記第２の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号を、前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データに格納されているグローバルアドレス情報を構成するグローバルアドレス及びポート番号に変換し、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在すると前記第３の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号を、前記移動元アドレステーブルに存在する前記一致するプライベートアドレス情報を含むアドレス・ポート変換データに格納されているグローバルアドレス情報を構成するグローバルアドレス及びポート番号に変換し、
前記一致するグローバルアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在すると前記第４の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記前記移動元アドレステーブルに存在する前記一致するグローバルアドレス情報を含む前記アドレス・ポート変換データに格納されているプライベートアドレス情報を構成するプライベートアドレス及びポート番号に変換する
ことを特徴とする請求項１０記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライベートアドレスを使用するマシンが接続可能なプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための複数のネットワークアドレス・ポート変換機構を備えた計算機システムに係り、特に、前記マシンが、ネットワークアドレス・ポート変換機構間で移動される場合に好適な通信データ制御方法及び計算機システムに関する。
【背景技術】
【０００２】
ハードウェア（実ハードウェア）上で仮想マシンモニタ（Virtual Machine Monitor: ＶＭＭ）が動作し、当該モニタ上で当該ハードウェア（ＨＷ）をエミュレートする仮想マシンが複数存在できる環境は、仮想マシン環境（又は仮想化環境）と呼ばれている。このような仮想マシン環境では、各仮想マシン上で、オペレーティングシステム（以下、ゲストＯＳと称する）が動作することで、１台のハードウェア上に複数のゲストＯＳ環境を構築することができる。
【０００３】
仮想マシンモニタは、ハードウェア上で動作するオペレーティングシステム（以下、ホストＯＳと称する）のカーネル上のモジュールとして実現されるタイプと、仮想マシンモニタ自身がハイパーバイザと呼ばれるカーネルとして実現されるタイプとに分類される。どちらのタイプの仮想マシンモニタを適用しても、１台のハードウェア上に複数のゲストＯＳ環境を構築することができる。つまり、どちらのタイプの仮想マシンモニタでも、ゲストＯＳのハードウェアに対する要求を仮想マシンモニタがエミュレートし、エミュレートされた要求を仮想マシンモニタが受け取って当該ハードウェアにアクセスするという点では、同じである。
【０００４】
さて、仮想マシン環境を使用して、１台のハードウェア上に複数のゲストＯＳ環境を持たせるサーバ集約化が進んでいくと、物理的なハードウェアの数に対し仮想マシンが数倍のオーダで増加する。このような状況になると、ＩＰ（Internet Protocol）アドレスの枯渇が問題となることが予想される。
【０００５】
このような問題に対し、仮想マシン環境において、仮想マシン間に仮想的なプライベートネットワーク（仮想ネットワーク）を用意し、外部のネットワーク（グローバルネットワーク）と当該仮想的なプライベートネットワークとをネットワークアドレス・ポート変換（Network Address Port Translation: NAPT）機構で接続する方法が知られている。ＮＡＰＴ機構は、仮想マシンモニタ上に存在する。ＮＡＰＴ機構によって接続されるグローバルネットワーク及びプライベートネットワークのそれぞれのアドレス空間を、ＮＡＰＴ機構のグローバルアドレス空間及びＮＡＰＴ機構のプライベートアドレス空間と呼ぶ。ここでＮＡＴ（Network Address Translation: ネットワークアドレス変換）機構ではなくて、ＮＡＰＴ機構が用いられるのは、ＮＡＴ機構の場合同時に通信を行うゲストＯＳの数だけグローバルＩＰアドレスが必要となり、ＩＰ枯渇の問題の解決とならないためである。
【０００６】
仮想マシン環境では、例えば特許文献１に記載されているように、ゲストＯＳイメージを格納した共有ディスク装置に、仮想マシンモニタを持つ複数台のハードウェアを接続することで、ハードウェア上で動作する仮想マシンモニタ間でゲストＯＳ（仮想マシン）を移動（マイグレート）することが可能となる。更に詳細に述べるならば、仮想マシン環境では、仮想マシンモニタ上で動作するＮＡＰＴ機構によってグローバルネットワークと接続されているプライベートネットワーク（仮想的なプライベートネットワーク）から、他の仮想マシンモニタ上で動作する他のＮＡＰＴ機構によって当該グローバルネットワークと接続されている他のプライベートネットワークに、ゲストＯＳ（が動作する仮想マシン）を移動することが可能となる。つまり仮想マシン環境では、ゲストＯＳ（仮想マシン）を、あるＮＡＰＴ機構側から他のＮＡＰＴ機構側へ移動することが可能となる。なお、ゲストＯＳイメージとは、記憶領域にインストールされて設定されたゲストＯＳの記憶イメージである、
【特許文献１】特開２００６−２４４４８１公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記特許文献１に記載されているような、ハードウェア上で動作する仮想マシンモニタ間をまたがった仮想マシン（ゲストＯＳ）の移動は、様々な状況で利用される。例えば、ハードウェアを停止させる際に、当該ハードウェア上で動作する仮想マシンモニタ（つまり当該ハードウェアが持つ仮想マシンモニタ）によって実現される仮想マシン環境で稼働中の仮想マシン（ゲストＯＳ）を他のハードウェア上で動作する仮想マシンモニタ（ＮＡＰＴ機構側）に移動すること、或いはハードウェアの負荷が増大した際に稼働中の仮想マシン（ゲストＯＳ）を負荷の軽い他のハードウェア上で動作する仮想マシンモニタ（ＮＡＰＴ機構側）に移動することが可能である。
【０００８】
しかし前述した仮想マシン間に仮想的なプライベートネットワークを用意し、外部のネットワーク（グローバルネットワーク）と当該仮想的なプライベートネットワークとをＮＡＰＴ機構で接続した場合、仮想マシン（ゲストＯＳ）を他のハードウェア（の仮想マシンモニタ）上に存在するＮＡＰＴ機構側（つまり他のＮＡＰＴ機構のプライベートアドレス空間）に移動すると、通信が途切れてしまうおそれがある。その理由は、ＮＡＰＴ機構間でグローバルアドレスが異なるためであり、プライベートアドレス空間のアドレス（プライベートアドレス）を使用する仮想マシン（ゲストＯＳ）の他のＮＡＰＴ機構のプライベートアドレス空間への移動は、外部の通信相手（グローバルネットワークに接続されている通信相手）にとって通信先のＩＰアドレスの変更となるためである。
【０００９】
そこで、ＮＡＰＴ機構の冗長化のようにアドレス引き継ぎ行う方法が考えられる。しかし、ＮＡＰＴ機構の持つグローバルアドレスは、稼働中の各仮想マシン（ゲストＯＳ）が共有しているため、全仮想マシン（ゲストＯＳ）の同時移動のようなケースでなければ、単純にグローバルアドレスを移動先のＮＡＰＴ機構に引き継がせることはできない。このような問題は、プライベートアドレスを使用するマシンが実マシン（物理計算機）であり、当該実マシンがハードウェア上で動作するネットワークアドレス・ポート変換機構間で移動されて再配置可能な計算機システムにおいても同様に存在する。
【００１０】
本発明は上記事情を考慮してなされたものでその目的は、プライベートアドレスを使用するマシンが、あるネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構側に移動されても、グローバルネットワークに接続されている通信相手と当該マシンとの間の通信が途切れないようにすることができる通信データ制御方法及び計算機システムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の１つの観点によれば、プライベートアドレスを使用するマシンが接続可能な第１のプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第１のネットワークアドレス・ポート変換機構と、前記マシンが接続可能な第２のプライベートネットワークと前記グローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第２のネットワークアドレス・ポート変換機構とを備えた計算機システムにおいて、前記マシンと通信を行う前記グローバルネットワークに接続された通信相手及び前記マシンの間で授受される通信データを制御する通信データ制御方法が提供される。この通信データ制御方法は、前記マシンが前記第１のネットワークアドレス・ポート変換機構側から前記第２のネットワークアドレス・ポート変換機構側に移動されたことを、前記第２のネットワークアドレス・ポート変換機構が検出するステップと、前記マシンの前記第２のネットワークアドレス・ポート変換機構側への移動の検出に応じて、前記第１のネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データであって、前記第１のネットワークアドレス・ポート変換機構が有する第１の記憶手段に格納されている、当該移動が検出された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられるアドレス・ポート変換データを、前記第２のネットワークアドレス・ポート変換機構が取得して自身が有する第２の記憶手段に格納することにより、当該アドレス・ポート変換データを前記第１のネットワークアドレス・ポート変換機構と共有するステップと、前記通信相手から前記グローバルネットワークを介して前記第１のネットワークアドレス・ポート変換機構に送信された、前記第２のネットワークアドレス・ポート変換機構側に移動された前記マシン宛ての、前記第１のネットワークアドレス・ポート変換機構のグローバルアドレスを宛先ネットワークアドレスとして含む通信データを、前記第１のネットワークアドレス・ポート変換機構が受信した場合、前記第１のネットワークアドレス・ポート変換機構が、当該受信された通信データの前記宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記第２のネットワークアドレス・ポート変換機構のグローバルアドレスに変換して、当該宛先ネットワークアドレスが変換された通信データを前記第２のネットワークアドレス・ポート変換機構に転送するステップと、前記第２のネットワークアドレス・ポート変換機構に転送された前記通信データを対象に、当該第２のネットワークアドレス・ポート変換機構が、前記第２の記憶手段に格納されている、前記第１のネットワークアドレス・ポート変換機構と共有する前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換して、当該ネットワークアドレス及びポート番号が変換された通信データを前記移動されたマシンに前記第２のプライベートネットワークを介して送信するステップとを具備する。
【発明の効果】
【００１２】
本発明によれば、プライベートアドレスを使用するマシンが、あるネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構側に移動されても、グローバルネットワーク上の通信相手にとって使用するグローバルアドレスが変わらないため、移動されたマシンと当該通信相手との通信が途切れるのを防止できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を仮想マシンシステムに適用した実施の形態につき図面を参照して説明する。  
＜仮想マシンシステムの構成＞
図１は本発明の一実施形態に係る仮想マシンシステム（計算機システム）の構成を示すブロック図である。図１において、ハードウェア１１-1（＃１）及び１１-2（＃２）上には、それぞれ仮想マシンモニタ１２-1（＃１）及び１２-2（＃２）が配置されている。ハードウェア１１-1及び１１-2は、いずれも、図示せぬＣＰＵ、メモリ及び入出力装置を含む。
【００１４】
仮想マシンモニタ１２-1及び１２-2上には、それぞれ、仮想的なプライベートネットワークである仮想ネットワーク１３-1（＃１）及び１３-2（＃２）と、ＮＡＰＴ機構（以下、ＮＡＰＴと称する）１４-1（＃１）及び１４-2（＃２）とが構築されている。つまり仮想マシンモニタ１２-1及び１２-2は、それぞれ、仮想ネットワーク１３-1及び１３-2と、ＮＡＰＴ１４-1及び１４-2とを含む。
【００１５】
仮想ネットワーク１３-1及び１３-2は、それぞれ、外部のグローバルネットワーク、例えばローカルエリアネットワーク（ＬＡＮ）２１と、ＮＡＰＴ１４-1及び１４-2によって接続されている。このＮＡＰＴ１４-i（ｉ＝１，２）によって接続される仮想ネットワーク（プライベートネットワーク）１３-i及びＬＡＮ（グローバルネットワーク）２１のそれぞれのアドレス空間を、ＮＡＰＴ１４-iのプライベートアドレス空間及びＮＡＰＴ１４-iのグローバルアドレス空間と呼ぶ。
【００１６】
ＮＡＰＴ１４-iは、プライベートアドレス空間のネットワークアドレス（プライベートアドレス）及びポート番号とグローバルアドレス空間のネットワークアドレス（グローバルアドレス）及びポート番号との間の変換（アドレス・ポート変換）を行う機能を有する。ＮＡＰＴ１４-iはまた、グローバルアドレス空間のネットワークアドレス（グローバルアドレス）相互の変換、具体的には、自身が後述する移動元ＮＡＰＴ１４-iである場合に、通信データの中継のために、移動元ＮＡＰＴ１４-iのグローバルアドレス（ＩＰアドレス）から移動先ＮＡＰＴのグローバルアドレス（ＩＰアドレス）への変換を行う機能も有する。
【００１７】
図１のシステムの例では、ハードウェア１１-1（上の仮想マシンモニタ１２-1）側の仮想ネットワーク１３-1に接続されていた仮想マシン１５及び当該仮想マシン１５上で動作するゲストＯＳ１６が、ハードウェア１１-2（上の仮想マシンモニタ１２-2）側の仮想ネットワーク１３-2に移動される場合を想定している。ハードウェア１１-1及び１１-2は、例えばストレージエリアネットワーク（ＳＡＮ）２２-1及び２２-2により共有ディスク装置２３と接続されている。共有ディスク装置２３の記憶領域には、ゲストＯＳ１６を実現するためのゲストＯＳイメージ２３０が格納されている。
【００１８】
ＮＡＰＴ１４-1及び１４-2は、それぞれグローバルアドレスを持つ。そのため、移動前のゲストＯＳ１６が、例えば仮想ネットワーク１３-1を介して仮想マシンシステムの外部の例えばクライアント端末のような通信相手２４と通信する場合、ＮＡＰＴ１４-1は、ゲストＯＳ１６のプライベートアドレス（送信元ＩＰアドレス）を当該ＮＡＰＴ１４-1のグローバルアドレスに書き換える。一方、通信相手２４が、ＬＡＮ２１を介してゲストＯＳ１６と通信する場合、ＮＡＰＴ１４-1は、当該ＮＡＰＴ１４-1のグローバルアドレス（宛先ＩＰアドレス）をゲストＯＳ１６のプライベートアドレスに書き換える。
【００１９】
しかし、ゲストＯＳ１６（仮想マシン１５及びゲストＯＳ１６）が図１において矢印２５で示されるように、ハードウェア１１-1（仮想マシンモニタ１２-1上のＮＡＰＴ１４-1）側からハードウェア１１-2（仮想マシンモニタ１２-2上のＮＡＰＴ１４-2）側に移動されると、ゲストＯＳ１６と通信相手２４との間の通信は途切れてしまう。
【００２０】
そこで本実施形態では、ゲストＯＳ１６（仮想マシン１５）と通信相手２４との間で授受される通信データを、ゲストＯＳ１６（仮想マシン１５）の移動元であるハードウェア１１-1（仮想マシンモニタ１２-1）側のＮＡＰＴ１４-1（移動元ＮＡＰＴ１４-1）とゲストＯＳ１６の移動先であるハードウェア１１-2（仮想マシンモニタ１２-2）側のＮＡＰＴ１４-2（移動先ＮＡＰＴ１４-2）との間で、図１において矢印群２６で示されるように転送する構成を適用している。
【００２１】
具体的には、ＮＡＰＴ１４-1は、通信相手２４から当該ＮＡＰＴ１４-1に、図１において矢印２６ａで示されるように送られたゲストＯＳ１６宛ての通信データを、図１において矢印２６ｂで示されるようにＮＡＰＴ１４-2に転送する。この通信データの転送に際し、ＮＡＰＴ１４-1は、宛先ＩＰアドレス（宛先ネットワークアドレス）を、当該ＮＡＰＴ１４-1のグローバルアドレスからＮＡＰＴ１４-2のグローバルアドレスに変換する。ＮＡＰＴ１４-2は、ＮＡＰＴ１４-1から転送された通信データを、図１において矢印２６ｃで示されるように、上記移動されたゲストＯＳ１６に仮想ネットワーク１３-2を介して送信する。この通信データの送信に際し、ＮＡＰＴ１４-2は、宛先ＩＰアドレスを、当該ＮＡＰＴ１４-2のグローバルアドレスからゲストＯＳ１６のプライベートアドレスに書き換える。このように、ＮＡＰＴ１４-2は、通信相手２４からＮＡＰＴ１４-1に送られたゲストＯＳ１６宛ての通信データを中継して、当該ゲストＯＳ１６に仮想ネットワーク１３-2を介して送信する。
【００２２】
一方、上記移動されたゲストＯＳ１６から通信相手２４宛ての通信データが、図１において矢印２６ｄに示されるように、仮想ネットワーク１３-2上に送出された場合、ＮＡＰＴ１４-2は、この通信相手２４宛ての通信データを、図１において矢印２６ｅに示されるように、ＬＡＮ２１を介して通信相手２４に直接送信する。この通信データの送信に際し、ＮＡＰＴ１４-2は、送信元ＩＰアドレス（送信元ネットワークアドレス）を、ゲストＯＳ１６のプライベートアドレスからＮＡＰＴ１４-1のグローバルアドレスに変換する。これにより通信相手２４は、ゲストＯＳ１６の移動を意識することなく、ＮＡＰＴ１４-1を介して当該ゲストＯＳ１６と通信することができる。
【００２３】
このように本実施形態においては、ハードウェア間で移動されたゲストＯＳ１６の通信データが、移動元ＮＡＰＴ１４-1及び移動先ＮＡＰＴ１４-2間で転送される。つまり本実施形態では、
（１）通信相手２４からのゲストＯＳ１６宛ての通信データは、移動元ＮＡＰＴ１４-1が移動先ＮＡＰＴ１４-2のグローバルアドレスを宛先ＩＰアドレスとして使用することにより、移動元ＮＡＰＴ１４-1から移動先ＮＡＰＴ１４-2に転送され、当該移動先ＮＡＰＴ１４-2によりゲストＯＳ１６に送られる（矢印２６ａ乃至２６ｃ参照）。
【００２４】
（２）ゲストＯＳ１６が送信する通信データは、移動先ＮＡＰＴ１４-2が移動元ＮＡＰＴ１４-1のグローバルアドレスを送信元ＩＰアドレスとして使用して、当該ＮＡＰＴ１４-2から通信相手２４に直接送信される（矢印２６ｄ及び２６ｅ参照）。
【００２５】
＜ゲストＯＳの移動前後の通信シーケンス＞
次に、図１のシステムで適用される、ゲストＯＳ１６の移動前後の通信シーケンスについて、ゲストＯＳ１６と通信相手２４との間で通信データが授受される場合を例に、図２のシーケンスチャートを参照して説明する。
【００２６】
図１に示されるように、仮想ネットワーク（プライベートネットワーク）１３-1及び１３-2のネットワークアドレスは“１９２．１６８．１．１０／２４”であり、ＬＡＮ（グローバルネットワーク）２１のネットワークアドレスは“１７２．２９．１．０／２４”であるものとする。また、ハードウェア１１-1及び１１-2（仮想マシンモニタ１２-1及び１２-2）上の、ＮＡＰＴ１４-1及び１４-2のグローバルアドレスは、それぞれ“１７２．２９．１．１００”及び“１７２．２９．１．１０１”であるものとする。
【００２７】
まず、ゲストＯＳ１６の移動前の状態で行われる、ゲストＯＳ１６と通信相手２４との間の通信について、図３及び図４の通信データ例を参照して説明する。  
通信相手２４（ゲストＯＳ１６の通信相手２４）は、ゲストＯＳ１６との間で通信を行う必要がある場合、図３に示されるフォーマットのゲストＯＳ１６宛ての通信データ３００をＬＡＮ２１を介してＮＡＰＴ１４-1（＃１）に送信する（ステップ２０１）。
【００２８】
通信データ３００は、ＩＰヘッダ３０１、ＴＣＰ（Transmission Control Protocol）（又はＵＤＰ（User Datagram Protocol））ヘッダ３０２及びＴＣＰ（又はＵＤＰ）ペイロード３０３を含む。ＩＰヘッダ３０１は、宛先ＩＰアドレス及び送信元ＩＰアドレスから構成される。ＩＰヘッダ３０１の宛先ＩＰアドレスには、ＮＡＰＴ１４-1のグローバルアドレスが用いられ、当該ＩＰヘッダ３０１の送信元ＩＰアドレスには、通信相手２４のＩＰアドレスが用いられる。ＴＣＰ（又はＵＤＰ）ヘッダ３０２の宛先ポート番号には、ＮＡＰＴ１４-1によってゲストＯＳ１６に割り当てられているポート番号が用いられ、当該ＴＣＰ（又はＵＤＰ）ヘッダ３０２の送信元ポート番号には、通信相手２４のポート番号が用いられる。
【００２９】
ＮＡＰＴ１４-1は、通信相手２４からの通信データ３００を、当該通信データ３００の宛先ＩＰアドレスに基づいて受信すると、自身が有する後述するアドレス・ポート変換テーブル１２８（図９参照）に基づき、宛先ＩＰアドレス及び宛先ポート番号の変換（アドレス・ポート変換）を行う（ステップ２０２）。ここでは、通信データ３００に含まれているＩＰヘッダ３０１の宛先ＩＰアドレスが、図３において矢印３１１で示されるように、ＮＡＰＴ１４-1のグローバルアドレスからゲストＯＳ１６のプライベートアドレスに変換される（置き換えられる）。また、通信データ３００に含まれているＴＣＰ（又はＵＤＰ）ヘッダ３０２の宛先ポート番号が、図３において矢印３１２で示されるように、ＮＡＰＴ１４-1によってゲストＯＳ１６に割り当てられているポート番号からゲストＯＳ１６で使用するポート番号に変換される。
【００３０】
ＮＡＰＴ１４-1は、アドレス・ポート変換が施された通信データ３００を、図３に示される通信データ３１０として、仮想ネットワーク１３-1を介してゲストＯＳ１６に送信する（ステップ２０３）。ゲストＯＳ１６は、この通信データ３１０を、ＴＣＰ（又はＵＤＰ）ヘッダ３０２の宛先ポート番号で指定されるポートを介して受信する。
【００３１】
次に、ゲストＯＳ１６が、例えば通信データ３１０に応答するために、図４に示されるフォーマットの通信データ４００を仮想ネットワーク１３-1を介してＮＡＰＴ１４-1に送信したものとする（ステップ２０４）。通信データ４００は、ＩＰヘッダ４０１、ＴＣＰ（又はＵＤＰ）ヘッダ４０２及びＴＣＰ（又はＵＤＰ）ペイロード４０３を含む。ＩＰヘッダ４０１は、宛先ＩＰアドレス及び送信元ＩＰアドレスから構成される。ＩＰヘッダ４０１の宛先ＩＰアドレスには、通信相手２４のＩＰアドレスが用いられ、当該ＩＰヘッダ４０１の送信元ＩＰアドレスには、ゲストＯＳ１６のプライベートアドレスが用いられる。ＴＣＰ（又はＵＤＰ）ヘッダ４０２の宛先ポート番号には、通信相手２４のポート番号が用いられ、当該ＴＣＰ（又はＵＤＰ）ヘッダ４０２の送信元ポート番号には、ゲストＯＳ１６で使用するポート番号が用いられる。
【００３２】
ＮＡＰＴ１４-1は、ゲストＯＳ１６からの通信データ４００を受信すると、自身が有するアドレス・ポート変換テーブル１２８（図９参照）に基づき、送信元ＩＰアドレス及び送信元ポート番号の変換（アドレス・ポート変換）を行う（ステップ２０５）。ここでは、通信データ４００に含まれているＩＰヘッダ４０１の送信元ＩＰアドレスが、図４において矢印４１１で示されるように、ゲストＯＳ１６のプライベートアドレスからＮＡＰＴ１４-1のグローバルアドレスに変換される。また、通信データ４００に含まれているＴＣＰ（又はＵＤＰ）ヘッダ４０２の送信元ポート番号が、図４において矢印４１２で示されるように、ゲストＯＳ１６で使用するポート番号からＮＡＰＴ１４-1によってゲストＯＳ１６に割り当てられているポート番号に変換される。
【００３３】
ＮＡＰＴ１４-1は、アドレス・ポート変換が施された通信データ４００を、図４に示される通信データ４１０として、ＬＡＮ２１を介して通信相手２４に送信する（ステップ２０６）。通信相手２４は、この通信データ４１０を受信する。
【００３４】
次に、ゲストＯＳ１６（ゲストＯＳ１６及び仮想マシン１５）が移動する際の通信について、図２の通信シーケンスチャートに加えて、図５の通信データ（アドレス・ポート変換データ）の例を参照して説明する。  
ここでは、ゲストＯＳ１６（ゲストＯＳ１６及び仮想マシン１５）、即ちハードウェア１１-1（仮想マシンモニタ１２-1）側で動作するゲストＯＳ１６（ゲストＯＳ１６及び仮想マシン１５）が、ハードウェア１１-2（仮想マシンモニタ１２-2）側に移動するものとする。ゲストＯＳ１６は、ハードウェア１１-1及び１１-2間を移動する場合、図５に示すフォーマットのアドレス・ポート変換データ（アドレス・ポート変換データパケット）５００を、移動元ＮＡＰＴ１４-1（＃１）から移動先ＮＡＰＴ１４-2（＃２）に送信させる（ステップ２０７）。
【００３５】
アドレス・ポート変換データ５００は、ＩＰヘッダ５０１及びＩＰペイロード５０２を含む通信データである。ＩＰヘッダ５０１は、宛先ＩＰアドレス及び送信元ＩＰアドレスから構成される。ＩＰヘッダ５０１の宛先ＩＰアドレスには、移動先ＮＡＰＴ１４-2のグローバルアドレスが用いられ、当該ＩＰヘッダ５０１の送信元ＩＰアドレスには、ＮＡＰＴ１４-1のグローバルアドレスが用いられる。ＩＰペイロード５０２は、ゲストＯＳ１６のプライベートアドレス、ゲストＯＳ１６のポート番号（ゲストＯＳ１６で使用するポート番号）、移動元ＮＡＰＴ１４-1のグローバルアドレス、及び移動元ＮＡＰＴ１４-1によってゲストＯＳ１６に割り当てられているポート番号を含む。なお、これらのＩＰペイロード５０２のデータが、ＴＣＰ（又はＵＤＰ）のペイロードに保持される構成であっても構わない。
【００３６】
ＮＡＰＴ１４-1からＮＡＰＴ１４-2にアドレス・ポート変換データ５００が送信され、当該アドレス・ポート変換データ５００がＮＡＰＴ１４-2で受信されたものとする。つまりＮＡＰＴ１４-1及び１４-2の間でのアドレス・ポート変換データ５００の授受が完了したものとする。以後、ＮＡＰＴ１４-1及び１４-2は、ゲストＯＳ１６に関する通信データを、図２のシーケンスチャートに従い、以下のシーケンスで処理する。
【００３７】
まず、通信相手２４が、ゲストＯＳ１６との間で通信を行うために、図３に示される通信データ３００と同様の、図６に示されるフォーマットの通信データ６００を、ＬＡＮ２１を介してＮＡＰＴ１４-1（＃１）に送信したものとする（ステップ２０８）。
【００３８】
通信データ６００は、ＩＰヘッダ６０１、ＴＣＰ（又はＵＤＰ）ヘッダ６０２及びＴＣＰ（又はＵＤＰ）ペイロード６０３を含む。ＩＰヘッダ６０１は、宛先ＩＰアドレス及び送信元ＩＰアドレスから構成される。ＩＰヘッダ６０１の宛先ＩＰアドレスには、図３に示される通信データ３００と同様に（つまりゲストＯＳ１６の移動前と同様に）、ＮＡＰＴ１４-1のグローバルアドレスが用いられる。このように本実施形態では、ゲストＯＳ１６がＮＡＰＴ１４-1側（の仮想ネットワーク１３-1）からＮＡＰＴ１４-2側（の仮想ネットワーク１３-2）に移動されても、ＬＡＮ２１に接続されている通信相手２４にとって使用するグローバルアドレスが変わらない。
【００３９】
ＩＰヘッダ６０１の送信元ＩＰアドレスには、通信相手２４のＩＰアドレスが用いられる。ＴＣＰ（又はＵＤＰ）ヘッダ６０２の宛先ポート番号には、ＮＡＰＴ１４-1によってゲストＯＳ１６に割り当てられているポート番号が用いられ、当該ＴＣＰ（又はＵＤＰ）ヘッダ６０２の送信元ポート番号には、通信相手２４のポート番号が用いられる。
【００４０】
ＮＡＰＴ１４-1は、通信相手２４からの通信データ６００を受信すると、当該通信データ６００に含まれているＩＰヘッダ６０１の宛先ＩＰアドレスを、図６において矢印６１１で示されるように、ＮＡＰＴ１４-1のグローバルアドレスからＮＡＰＴ１４-2のグローバルアドレスに変更して、この宛先ＩＰアドレスが変更された通信データ６００を通信データ６１０として、ＮＡＰＴ１４-2（＃２）にＬＡＮ２１を介して転送する（ステップ２０９）。
【００４１】
ＮＡＰＴ１４-2は、ＮＡＰＴ１４-1によって転送された通信データ６１０を、当該通信データ６１０の宛先ＩＰアドレスに基づいて受信すると、ＮＡＰＴ１４-1が有する後述する移動元アドレステーブル１２７（図１１参照）に基づき、宛先ＩＰアドレス及び宛先ポート番号の変換（アドレス・ポート変換）を行う（ステップ２１０）。ここでは、通信データ６１０に含まれているＩＰヘッダ６０１の宛先ＩＰアドレスが、図７において矢印７０１で示されるように、ＮＡＰＴ１４-2のグローバルアドレスからゲストＯＳ１６のプライベートアドレスに変換される（置き換えられる）。また、通信データ６１０に含まれているＴＣＰ（又はＵＤＰ）ヘッダ６０２の宛先ポート番号が、図７において矢印７０２で示されるように、ＮＡＰＴ１４-1によってゲストＯＳ１６に割り当てられているポート番号からゲストＯＳ１６で使用するポート番号に変換される。
【００４２】
この変換のためには、通信データ６１０の宛先となるゲストＯＳ（ここではゲストＯＳ１６）を一意に識別するための情報が必要となる。このような情報として、ＮＡＰＴ（ここではＮＡＰＴ１４-1）を含むハードウェア（ハードウェア１１-1）のＭＡＣアドレス、或いはゲストＯＳに割り当てられるポート番号（グローバルアドレス情報中のポート番号）等を用いることができる。但し、ゲストＯＳに割り当てられるポート番号は、ゲストＯＳが移動される可能性のある範囲に含まれる各仮想ネットワーク１３-i上のＮＡＰＴ１４-i（ここではｉ＝１，２）で一意になるように設定される必要がある。本実施形態では、ゲストＯＳを一意に識別するための情報として、当該ゲストＯＳに割り当てられるポート番号であって、ゲストＯＳが移動される可能性のある範囲に含まれる各仮想ネットワーク１３-i上のＮＡＰＴ１４-iで一意になるように設定されるポート番号が用いられるものとする。
【００４３】
ＮＡＰＴ１４-2は、アドレス・ポート変換が施された通信データ６１０を、図７に示される通信データ７００として、仮想ネットワーク１３-2を介してゲストＯＳ１６に送信する（ステップ２１１）。
【００４４】
次に、ゲストＯＳ１６が、例えば通信データ７００に応答するために、図８に示されるフォーマットの通信データ８００を仮想ネットワーク１３-2を介してＮＡＰＴ１４-2に送信したものとする（ステップ２１２）。通信データ８００は、ＩＰヘッダ８０１、ＴＣＰ（又はＵＤＰ）ヘッダ８０２及びＴＣＰ（又はＵＤＰ）ペイロード８０３を含む。ＩＰヘッダ８０１は、宛先ＩＰアドレス及び送信元ＩＰアドレスから構成される。ＩＰヘッダ８０１の宛先ＩＰアドレスには、通信相手２４のＩＰアドレスが用いられ、当該ＩＰヘッダ８０１の送信元ＩＰアドレスには、ゲストＯＳ１６のプライベートアドレスが用いられる。ＴＣＰ（又はＵＤＰ）ヘッダ８０２の宛先ポート番号には、通信相手２４のポート番号が用いられ、当該ＴＣＰ（又はＵＤＰ）ヘッダ８０２の送信元ポート番号には、ゲストＯＳ１６で使用するポート番号が用いられる。
【００４５】
ＮＡＰＴ１４-2は、ゲストＯＳ１６からの通信データ８００を受信すると、自身が有する移動元アドレステーブル１２７（図１１参照）に基づき、送信元ＩＰアドレス及び送信元ポート番号の変換（アドレス・ポート変換）を行う（ステップ２１３）。ここでは、通信データ８００に含まれているＩＰヘッダ８０１の送信元ＩＰアドレスが、図８において矢印８１１で示されるように、ゲストＯＳ１６のプライベートアドレスからＮＡＰＴ１４-1のグローバルアドレスに変換される。また、通信データ８００に含まれているＴＣＰ（又はＵＤＰ）ヘッダ８０２の送信元ポート番号が、図８において矢印８１２で示されるように、ゲストＯＳ１６で使用するポート番号からＮＡＰＴ１４-1によってゲストＯＳ１６に割り当てられているポート番号に変換される。
【００４６】
ＮＡＰＴ１４-2は、アドレス・ポート変換が施された通信データ８００を、図８に示される通信データ８１０として、ＬＡＮ２１を介して通信相手２４に送信する（ステップ２１４）。つまりＮＡＰＴ１４-2は、通信データ８００を、ＮＡＰＴ１４-1に代わって通信相手２４に直接送信する。
【００４７】
以上の通信シーケンスにより、仮想ネットワーク１３-1，１３-2にＮＡＰＴ１４-1，１４-2が設定されている環境において、ゲストＯＳ１６が、異なるハードウェア１１-1，１１-2上の仮想マシンモニタ１２-1，１２-2（ＮＡＰＴ１４-1，１４-2）間を移動しても、ＬＡＮ２１上の通信相手２４にとって使用するグローバルアドレスが変わらないため、移動されたゲストＯＳ１６と通信相手２４との通信が途切れず、移動前と同様に通信することができる。
【００４８】
また、ＮＡＰＴ１４-1側からＮＡＰＴ１４-2側に移動されたゲストＯＳ１６から送信される通信相手２４宛ての通信データは、ＮＡＰＴ１４-2，１４-1間で中継されず、ＮＡＰＴ１４-2（つまり移動先ＮＡＰＴ１４-2）によって直接通信相手２４に送信される。このため、ＬＡＮ２１（グローバルネットワーク）の負荷を軽減できる。
【００４９】
＜仮想マシンモニタの構成＞
次に、図１に示される仮想マシンモニタ１２-i（ｉ＝１，２）の構成について説明する。図９は、仮想マシンモニタ１２-iの構成を示すブロック図である。
【００５０】
仮想マシンモニタ１２-i（＃ｉ）は、仮想ネットワーク１３-i及びＮＡＰＴ１４-iに加えて、入出力制御部（Ｉ／Ｏ制御部）１２１、ゲストＯＳ制御部１２２を有する。Ｉ／Ｏ制御部１２１は、ゲストＯＳ１６のメモリアクセス、ディスクＩ／Ｏ及び通信データのＩ／Ｏ等、ゲストＯＳ１６の種々のＩ／Ｏ（入出力）を制御するモジュールである。Ｉ／Ｏ制御部１２１は、ＨＷ１１-iとゲストＯＳ１６との間の全ての通信データが必ずＮＡＰＴ１４-i内の後述する通信データ判定部１２４を中継するように当該ＮＡＰＴ１４-iを制御する。ゲストＯＳ制御部１２２は、ゲストＯＳ１６の起動／停止、ゲストＯＳ１６の仮想マシンモニタ１２-iから他の仮想マシンモニタへの移動、及び他の仮想マシンモニタから仮想マシンモニタ１２-iへの移動を制御するモジュールである。
【００５１】
ＮＡＰＴ１４-iは、通常のＮＡＰＴとしてのアドレス・ポート変換の動作に加え、ゲストＯＳ１６の移動状態に合わせて当該ゲストＯＳ１６の通信データを、他の仮想マシンモニタ上のＮＡＰＴに転送する機能を有する。
【００５２】
ＮＡＰＴ１４-iは、ゲストＯＳ状態受信部１２３、通信データ判定部１２４及び通信データ送信部１２５の各モジュールと、移動先アドレステーブル１２６、移動元アドレステーブル１２７、アドレス・ポート変換テーブル１２８及びルーティングテーブル１２９の各テーブルとを含む。テーブル１２６〜１２９は、記憶部１３０に格納されている。記憶部１３０は、例えば、ハードウェア１１-iが有するメモリの記憶領域を用いて実現される。本実施形態では特に説明しないが、テーブル１２６〜１２９のエントリデータが、ＮＡＰＴ１４-iにおける定期的な監視により、一定時間超過した後に削除される構成であってもよい。
【００５３】
移動先アドレステーブル１２６は、ゲストＯＳ制御部１２２の制御によるゲストＯＳの移動に関する情報のうちの移動先に関する情報（移動先情報）を、当該ゲストＯＳの情報（ゲストＯＳ情報）に対応付けて管理するのに用いられる。本実施形態において、移動先情報（移動先グローバルアドレス情報）にはゲストＯＳの移動先の仮想マシンモニタ上のＮＡＰＴのグローバルアドレス（ＩＰアドレス）が用いられ、ゲストＯＳ情報（プライベートアドレス情報）には当該ゲストＯＳのプライベートアドレス（ＩＰアドレス）が用いられる。このテーブル１２６への情報登録は、ゲストＯＳが他の仮想マシンモニタに移動した旨の通知をゲストＯＳ状態受信部１２３が受け取った際に、当該受信部１２３によって行われる。
【００５４】
図１０は移動先アドレステーブル１２６のデータ構造例を示す。図１０の例では、移動先アドレステーブル１２６の各エントリには、ゲストＯＳのプライベートアドレス（ＩＰアドレス）と、当該ゲストＯＳの移動先の仮想マシンモニタ上のＮＡＰＴのグローバルアドレス（ＩＰアドレス）とが登録される。
【００５５】
移動元アドレステーブル１２７は、ゲストＯＳ制御部１２２の制御によるゲストＯＳの移動に関する情報のうちの移動元に関する情報（移動元情報）を、当該ゲストＯＳの情報（ゲストＯＳ情報）に対応付けて管理するのに用いられる。移動元情報（移動元のグローバルアドレス情報）にはゲストＯＳの移動元の仮想マシンモニタ上のＮＡＰＴのグローバルアドレス（ＩＰアドレス）と当該移動元の仮想マシンモニタ上のＮＡＰＴにより当該ゲストＯＳに割り当てられているポート番号とが用いられる。ゲストＯＳ情報（プライベートアドレス情報）には、ゲストＯＳのプライベートアドレス（ＩＰアドレス）と当該ゲストＯＳで使用するポート番号とが用いられる。このテーブル１２７への情報（エントリデータ）登録は、ゲストＯＳが他の仮想マシンモニタから移動した旨の通知をゲストＯＳ状態受信部１２３が受け取った際に、当該受信部１２３によって行われる。
【００５６】
図１１は移動元アドレステーブル１２７のデータ構造例を示す。図１１の例では、移動元アドレステーブル１２７の各エントリには、プライベートアドレス情報として、ゲストＯＳのプライベートアドレス（ＩＰアドレス）及び当該ゲストＯＳで使用するポート番号が登録されると共に、グローバルアドレス情報として、当該ゲストＯＳの移動元の仮想マシンモニタ上のＮＡＰＴのグローバルアドレス（ＩＰアドレス）及び当該移動元の仮想マシンモニタ上のＮＡＰＴにより当該ゲストＯＳに割り当てられているポート番号が登録される。
【００５７】
アドレス・ポート変換テーブル１２８は、従来からＮＡＰＴに設けられているアドレス・ポート変換テーブルに相当する。アドレス・ポート変換テーブル１２８は、ゲストＯＳのプライベートアドレス及び当該ゲストＯＳで使用するポート番号（から構成されるプライベートアドレス情報）と当該ゲストＯＳにポート番号を割り当てる（当該ゲストＯＳが動作する）仮想マシンモニタ１２-i上のＮＡＰＴ１４-iのグローバルアドレス及び当該ゲストＯＳに割り当てられているポート番号（から構成されるグローバルアドレス情報）とを変換するのに用いられる。
【００５８】
アドレス・ポート変換テーブル１２８への情報登録は、例えば、プライベートネットワーク（ここでは仮想ネットワーク１３-i）から、外部ネットワーク（ここではＬＡＮ２１）への通信が発生した場合と、ポート割り当てのための、周知のＮＡＰＴ−ＰＭＰプロトコル（http://files.dns-sd.org/draft-cheshire-nat-pmp.txt）のような要求をゲストＯＳ状態受信部１２３が受け取った際に、当該受信部１２３によって行われる。
【００５９】
ここで、ゲストＯＳが移動される可能性のある範囲に含まれる各仮想ネットワーク１３-i上のＮＡＰＴ１４-iでは、前述のように、当該ゲストＯＳに対して割り当てるグローバルアドレス情報中のポート番号が一意になるように設定されるものとする。
【００６０】
図１２はアドレス・ポート変換テーブル１２８のデータ構造例を示す。図１２の例では、アドレス・ポート変換テーブル１２８の各エントリには、プライベートアドレス情報として、ゲストＯＳのプライベートアドレス（ＩＰアドレス）及び当該ゲストＯＳで使用するポート番号が登録されると共に、グローバルアドレス情報として、ＮＡＰＴ１４-iのグローバルアドレス（ＩＰアドレス）と当該ＮＡＰＴ１４-iによって当該ゲストＯＳに割り当てられているポート番号とが登録される。
【００６１】
ルーティングテーブル１２９は、従来からＮＡＰＴ及びルータに設けられているルーティングテーブルに相当する。ルーティングテーブル１２９のデータ構造は周知であるため、説明を省略する。
【００６２】
次に、ＮＡＰＴ１４-i内のゲストＯＳ状態受信部１２３の動作について、図１３のフローチャートを参照して説明する。  
ゲストＯＳ状態受信部１２３は、仮想マシンモニタ１２-iのゲストＯＳ制御部１２２からゲストＯＳに関する状態の通知を受け取り、その通知された内容に応じて次のように処理を行う。
【００６３】
（１）他の仮想マシンモニタへのゲストＯＳの移動完了時の動作
まず、仮想マシンモニタ（ＶＭＭ）１２-i上のゲストＯＳ１６が他の仮想マシンモニタ（ＶＭＭ）に移動された結果、当該仮想マシンモニタ１２-iのゲストＯＳ制御部１２２からＮＡＰＴ１４-iに当該他の仮想マシンモニタへのゲストＯＳ移動完了が通知された場合の、ゲストＯＳ状態受信部１２３の処理について説明する。
【００６４】
ゲストＯＳ状態受信部１２３は、ゲストＯＳ制御部１２２からＮＡＰＴ１４-iにゲストＯＳに関する状態が通知されると、当該通知を受信する。そしてゲストＯＳ状態受信部１２３は、受信した通知の内容を判定する（ステップ１３０１乃至１３０３）。もし、受信した通知が、上述のように仮想マシンモニタ１２-iから他の仮想マシンモニタへのゲストＯＳの移動完了を示すならば（ステップ１３０１がＹＥＳ）、ゲストＯＳ状態受信部１２３は、アドレス・ポート変換テーブル１２８の全エントリのデータを対象に、以下のステップ１３０４乃至１３０６を繰り返し実行する（ステップ１３０７）。
【００６５】
ステップ１３０４において、ゲストＯＳ状態受信部１２３は、アドレス・ポート変換テーブル１２８から取り出されたエントリデータに基づき、移動したゲストＯＳのアドレス（プライベートアドレス）と当該エントリデータ中のプライベートアドレスとが一致するかを判定する。もし、一致するならば（ステップ１３０４がＹＥＳ）、ゲストＯＳ状態受信部１２３は、図５に示すアドレス・ポート変換データ５００と同様のフォーマットのアドレス・ポート変換データを作成する（ステップ１３０５）。このアドレス・ポート変換データには、移動したゲストＯＳのアドレス（プライベートアドレス）と一致するプライベートアドレスを含む、アドレス・ポート変換テーブル１２８のエントリデータが用いられる。ゲストＯＳ状態受信部１２３は、作成されたアドレス・ポート変換データを通信データ送信部１２５に送る（ステップ１３０６）。これに対し、一致しないならば（ステップ１３０４がＮＯ）、ゲストＯＳ状態受信部１２３はステップ１３０５及び１３０６をスキップする。
【００６６】
ゲストＯＳ状態受信部１２３は、以上の処理を、アドレス・ポート変換テーブル１２８の全エントリのデータを対象に繰り返し実行する（ステップ１３０７）。その後、ゲストＯＳ状態受信部１２３は移動先アドレステーブルデータ追加手段として機能し、他の仮想マシンモニタへの移動が完了したゲストＯＳ１６のプライベートアドレスと移動先の仮想マシンモニタ上のＮＡＰＴ（移動先ＮＡＰＴ）のグローバルアドレスとを含むエントリデータ（移動先アドレステーブルデータ）を移動先アドレステーブル１２６の空きエントリに追加（登録）して（ステップ１３０８）、処理を終了する。
【００６７】
（２）他の仮想マシンモニタからのゲストＯＳの移動完了時の動作
次に、ゲストＯＳ１６が他の仮想マシンモニタ（ＶＭＭ）から仮想マシンモニタ（ＶＭＭ）１２-iに移動された結果、当該仮想マシンモニタ１２-iのゲストＯＳ制御部１２２からＮＡＰＴ１４-iに当該他の仮想マシンモニタからのゲストＯＳ移動完了が通知され、当該通知がゲストＯＳ状態受信部１２３によって受信されたものとする。
【００６８】
ゲストＯＳ状態受信部１２３は、受信した通知が、この例のように他の仮想マシンモニタから（当該ゲストＯＳ状態受信部１２３を含む）仮想マシンモニタ１２-iへのゲストＯＳ１６の移動完了を示すならば（ステップ１３０２がＹＥＳ）、当該ゲストＯＳ１６（つまり移動が完了したゲストＯＳ１６）のプライベートアドレス（を含む移動先に関するエントリデータ）が移動先アドレステーブル１２６に登録されているか（存在するか）判定する（ステップ１３０９）。
【００６９】
もし、移動が完了したゲストＯＳ１６のプライベートアドレスが移動先アドレステーブル１２６に登録されているならば（ステップ１３０９がＹＥＳ）、ゲストＯＳ状態受信部１２３は、当該ゲストＯＳ１６は、仮想マシンモニタ１２-iから他の仮想マシンモニタに移動した後、当該仮想マシンモニタ１２-iに戻ってきたと判断する。この場合、ゲストＯＳ状態受信部１２３は、仮想マシンモニタ１２-iに戻ってきたゲストＯＳ１６の移動先に関する情報（エントリデータ）を移動先アドレステーブル１２６から削除して（ステップ１３１０）、処理を終了する。
【００７０】
これに対し、移動が完了したゲストＯＳ１６のプライベートアドレスが移動先アドレステーブル１２６に登録されていないならば（ステップ１３０９がＮＯ）、ゲストＯＳ状態受信部１２３は、ステップ１３１０をスキップして処理を終了する。
【００７１】
（３）ゲストＯＳの停止時の動作
次に、仮想マシンモニタ１２-i上で動作しているゲストＯＳ１６が停止した結果、当該仮想マシンモニタ１２-iのゲストＯＳ制御部１２２からＮＡＰＴ１４-iにゲストＯＳ１６の停止が通知され、当該通知がゲストＯＳ状態受信部１２３によって受信されたものとする。
【００７２】
ゲストＯＳ状態受信部１２３は、受信した通知が、この例のようにゲストＯＳ１６の停止を示すならば（ステップ１３０３がＹＥＳ）、当該停止したゲストＯＳ１６のプライベートアドレス（を含む移動元に関するエントリデータ）が移動元アドレステーブル１２７に登録されているかを判定する（ステップ１３１１）。
【００７３】
もし、移動元アドレステーブル１２７に登録されているならば（ステップ１３１１がＹＥＳ）、ゲストＯＳ状態受信部１２３は、通信データの転送を停止するため移動元の仮想マシンモニタに対して移動終了を通知する必要があると判断する。そこでゲストＯＳ状態受信部１２３は、停止したゲストＯＳ１６のプライベートアドレスに対応付けて移動元アドレステーブル１２７に登録されている移動元の仮想マシンモニタ上のＮＡＰＴ（移動元ＮＡＰＴ）のグローバルアドレスに基づき、当該移動元ＮＡＰＴのグローバルアドレス宛ての移動停止データを作成する（ステップ１３１２）。この移動停止データ（移動停止データパケット）については後述する。
【００７４】
ゲストＯＳ状態受信部１２３は、作成された移動停止データを通信データ送信部１２５に送ることによって、当該移動停止データを通信データ送信部１２５から（Ｉ／Ｏ制御部１２１を介して）移動元の仮想マシンに送信させる（ステップ１３１３）。最後にゲストＯＳ状態受信部１２３は、停止したゲストＯＳ１６に関する情報（エントリデータ）を移動元アドレステーブル１２７から削除して（ステップ１３１４）、処理を終了する。
【００７５】
＜移動停止データ＞
図１４は上記移動停止データのフォーマットを示す。図１４において、移動停止データ１４００は、ＩＰヘッダ１４０１及びＩＰペイロード１４０２を含む。ＩＰヘッダ１４０１の宛先ＩＰアドレスには、移動元ＮＡＰＴのグローバルアドレスが用いられ、当該ＩＰヘッダ１４０１の送信元ＩＰアドレスには移動先ＮＡＰＴのグローバルアドレスが用いられる。ＩＰペイロード１４０２に設定されるデータは、停止されるゲストＯＳのプライベートアドレスを含む。なお、停止されるゲストＯＳのプライベートアドレスが、ＴＣＰ又はＵＤＰのペイロードに設定される構成であっても構わない。つまり、移動停止データは、移動元ＮＡＰＴのグローバルアドレスを宛先ＩＰアドレスとし、移動先ＮＡＰＴのグローバルアドレスを送信元ＩＰアドレスとし、停止したゲストＯＳのプライベートアドレスをデータ部に含み、移動停止データと識別可能な通信データであれば、どのようなものでもよい。
【００７６】
＜通信データ判定部の動作＞
次に、通信データ判定部１２４の動作について、図１５のフローチャートを参照して説明する。  
本実施形態において、仮想マシンモニタ１２-iのＩ／Ｏ制御部１２１は、当該Ｉ／Ｏ制御部１２１を通過する全ての通信データをＮＡＰＴ１４-iの通信データ判定部１２４に入力することにより、当該通信データ判定部１２４をも通過させる。通信データ判定部１２４は、Ｉ／Ｏ制御部１２１によって入力された通信データの種類に応じて処理を行う。そこで通信データ判定部１２４は、まず検出手段として機能して、Ｉ／Ｏ制御部１２１によって入力された通信データがアドレス・ポート変換データ（アドレス・ポート変換データパケット）であるか、移動停止データであるか、或いはそれ以外であるかを判定する（ステップ１５０１，１５０２）。
【００７７】
もし、入力された通信データが図５に示すアドレス・ポート変換データ５００と同様のフォーマットのアドレス・ポート変換データであるならば（ステップ１５０１がＹＥＳ）、検出手段として機能した通信データ判定部１２４は、ゲストＯＳ（仮想マシン）が他のＮＡＰＴ側から当該通信データ判定部１２４を含むＮＡＰＴ１４-2側（ＮＡＰＴ１４-2のプライベートアドレス空間）に移動されたと判断する。即ちＮＡＰＴ１４-iの通信データ判定部１２４は、他のＮＡＰＴからのアドレス・ポート変換データをＩ／Ｏ制御部１２１を介して受け取ることにより、当該他のＮＡＰＴ側からのゲストＯＳの移動を検出する。この場合、通信データ判定部１２４はアドレス・ポート変換データ追加手段として機能し、受け取ったアドレス・ポート変換データの内容（ＩＰペイロードの内容）を移動元アドレステーブル１２７に追加して（ステップ１５０３）、処理を終了する。
【００７８】
図１６は、上記ステップ１５０３の動作を説明するための図である。図１６において、入力された通信データであるアドレス・ポート変換データ１６００は、ＩＰヘッダ１６０１及びＩＰペイロード１６０２を含む。ＩＰヘッダ１６０１の宛先ＩＰアドレスには、移動先ＮＡＰＴのグローバルアドレスが設定され、当該ＩＰヘッダ１６０１の送信元ＩＰアドレスには、移動元ＮＡＰＴのグローバルアドレスが設定されている。ＩＰペイロード１６０２は、ゲストＯＳのプライベートアドレス（ＩＰアドレス）、ゲストＯＳのポート番号（ゲストＯＳで使用するポート番号）、移動元ＮＡＰＴのグローバルアドレス、及び移動元ＮＡＰＴによってゲストＯＳに割り当てられたポート番号を含む。
【００７９】
ステップ１５０３では、アドレス・ポート変換データ（アドレス・ポート変換データパケット）１６００のＩＰペイロード１６０２の内容、即ちゲストＯＳのプライベートアドレス（ＩＰアドレス）、ゲストＯＳのポート番号、移動元ＮＡＰＴのグローバルアドレス、及び移動元ＮＡＰＴによってゲストＯＳに割り当てられたポート番号が、図１６において矢印１６１０で示されるように、移動元アドレステーブル１２７の空きエントリに追加（登録）される。
【００８０】
これにより通信データ判定部１２４を含むＮＡＰＴ１４-i（移動先ＮＡＰＴ１４-i）は、移動元ＮＡＰＴが管理するアドレス・ポート変換データを当該移動元ＮＡＰＴと共有する。更に詳細に述べるならば、移動先ＮＡＰＴ１４-iは、移動元ＮＡＰＴの持つアドレス・ポート変換テーブル１２８を用いて当該移動元ＮＡＰＴが管理するアドレス・ポート変換データを、当該移動元ＮＡＰＴの持つ移動元アドレステーブル１２７により当該移動元ＮＡＰＴと共有する。
【００８１】
一方、入力された通信データが図１４に示す移動停止データ１４００と同様のフォーマットの移動停止データであるならば（ステップ１５０１がＮＯ、ステップ１５０２がＹＥＳ）、通信データ判定部１２４は移動先のゲストＯＳが停止した旨の通知であると判断する。この場合、通信データ判定部１２４は、入力された移動停止データのＩＰペイロードに含まれているゲストＯＳのＩＰアドレス（プライベートアドレス）が移動先アドレステーブル１２７に登録されているかを判定する（ステップ１５０４）。
【００８２】
もし、ステップ１５０４の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された移動停止データのＩＰペイロードに含まれているゲストＯＳが登録されている、ＩＰアドレス移動元アドレステーブル１２７のエントリのデータを削除して（ステップ１５０５）、処理を終了する。これに対し、ステップ１５０４の判定がＮＯであるならば、通信データ判定部１２４はステップ１５０５をスキップして処理を終了する。
【００８３】
図１７は、上記ステップ１５０５の動作を説明するための図である。図１７において、入力された通信データである移動停止データ１７００は、ＩＰヘッダ１７０１及びＩＰペイロード１７０２を含む。ＩＰヘッダ１７０１の宛先ＩＰアドレスには、移動元ＮＡＰＴのグローバルアドレスが設定され、当該ＩＰヘッダ１７０１の送信元ＩＰアドレスには、移動先ＮＡＰＴのグローバルアドレスが設定されている。ＩＰペイロード１７０２は、ゲストＯＳのＩＰアドレス（プライベートアドレス）“192.168.1.102”を含む。
【００８４】
図１７の例では、ゲストＯＳのＩＰアドレス“192.168.1.102”は、移動先アドレステーブル１２６に登録されている（ステップ１５０４がＹＥＳ）。そこで、上記ステップ１５０５では、移動停止データ１７００のＩＰペイロード１７０２に設定されたゲストＯＳのＩＰアドレス“192.168.1.102”が登録されている、移動先アドレステーブル１２６のエントリのデータが、図１７において矢印１７１０で示されるように、当該テーブル１２６から削除される。
【００８５】
次に、入力された通信データが、アドレス・ポート変換データでも、移動停止データでもないものとする（ステップ１５０１及び１５０２がいずれもＮＯ）。この場合、通信データ判定部１２４は、入力された通信データのＩＰヘッダ及びＴＣＰ（又はＵＤＰ）ヘッダの、それぞれ宛先ＩＰアドレス及び宛先ポート番号（宛先ＩＰアドレス・ポート番号）が、アドレス・ポート変換テーブル１２８のグローバルアドレス情報に含まれているか（つまりグローバルアドレス情報のＩＰアドレス及びポート番号に一致するか）を判定する（ステップ１５０６）。
【００８６】
もし、ステップ１５０６の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データはゲストＯＳ宛の通信データであると判断する。この場合、通信データ判定部１２４は第１の判定手段として機能して、該当するゲストＯＳ（入力された通信データの宛先ＩＰアドレスで示されるゲストＯＳ）が移動しているかを判定するために、ステップ１５０７を実行する。
【００８７】
ステップ１５０７において、通信データ判定部１２４は、上記ステップ１５０６で判定されたグローバルアドレス情報（つまり、入力された通信データの宛先ＩＰアドレス及び宛先ポート番号を含むグローバルアドレス情報）が登録されている、アドレス・ポート変換テーブル１２８のエントリのプライベートアドレス情報のＩＰアドレス（ゲストＯＳのプライベートアドレス）が、移動先アドレステーブル１２６に登録されているかを判定する。
【００８８】
もし、ステップ１５０７の判定がＹＥＳであるならば、通信データ判定部１２４は、該当するゲストＯＳは移動していると判断する。そこで通信データ判定部１２４は、入力された通信データの宛先ＩＰアドレスを、ステップ１５０７の判定に用いられたアドレス・ポート変換テーブル１２８のエントリに設定されている移動先グローバルアドレス情報中のＩＰアドレス（移動先ＮＡＰＴのグローバルアドレス）に変更（変換）する（ステップ１５０８）。このステップ１５０８での宛先ＩＰアドレスの変更は、図６の通信データ６００から通信データ６１０への変換に相当する。
【００８９】
通信データ判定部１２４は、宛先ＩＰアドレスが変更された通信データ、つまり移動先ＮＡＰＴ宛てに変換された通信データを通信データ送信部１２５に送って（ステップ１５０９）、処理を終了する。通信データ送信部１２５は、この移動先ＮＡＰＴ宛てに変換された通信データを当該移動先ＮＡＰＴに転送する。
【００９０】
図１８は、上記ステップ１５０８の動作を説明するための図である。図１８において、入力された通信データ１８００は、ＩＰヘッダ１８０１、ＴＣＰ（又はＵＤＰ）ヘッダ１８０２及びＴＣＰ（又はＵＤＰ）ペイロード１８０３を含む。ＩＰヘッダ１８０１の宛先ＩＰアドレスには、移動元ＮＡＰＴのグローバルアドレス“172.29.1.100”が設定され、当該ＩＰヘッダ１８０１の送信元ＩＰアドレスには、通信相手のＩＰアドレスが設定されている。ＴＣＰ（又はＵＤＰ）ヘッダ１８０２の宛先ポート番号には、移動元ＮＡＰＴによってゲストＯＳに割り当てられているポート番号“10002”が設定され、当該ＴＣＰ（又はＵＤＰ）ヘッダ１８０２の送信元ポート番号には、通信相手のポート番号が設定されている。
【００９１】
図１８の例では、通信データ１８００の宛先ＩＰアドレス（移動元ＮＡＰＴのグローバルアドレス“172.29.1.100”）及び当該通信データ１８００の宛先ポート番号（移動元ＮＡＰＴによってゲストＯＳに割り当てられているポート番号“10002”）は、矢印１８１１で示されるように、アドレス・ポート変換テーブル１２８にグローバルアドレス情報として登録されている（ステップ１５０６がＹＥＳ）。また、このグローバルアドレス情報が登録されているアドレス・ポート変換テーブル１２８のエントリのプライベートアドレス情報のＩＰアドレス（ゲストＯＳのプライベートアドレス）“192.168.1.100”は、矢印１８１２で示されるように、移動先アドレステーブル１２６にプライベートアドレス情報（のＩＰアドレス）として登録されている（ステップ１５０７がＹＥＳ）。
【００９２】
この場合、ステップ１５０８が実行され、通信データ１８００が、矢印１８１３で示されるように、当該通信データ１８００の宛先ＩＰアドレスが変更された新たな通信データ１８２０に変換される。即ち通信データ１８００は、当該通信データ１８００の宛先ＩＰアドレスが、移動元ＮＡＰＴのグローバルアドレス“172.29.1.100”から、矢印１８１４で示されるように、プライベートアドレス情報のＩＰアドレス“192.168.1.100”が登録されている移動先アドレステーブル１２６のエントリの移動先グローバルアドレス情報中のＩＰアドレス（移動先ＮＡＰＴのグローバルアドレス）“172.29.1.101”に変更されて、新たな通信データ１８２０に変換される。
【００９３】
一方、ステップ１５０７の判定がＮＯであるならば、通信データ判定部１２４は、該当するゲストＯＳは移動していないと判断する。この場合、通信データ判定部１２４は、従来から知られているＮＡＰＴの動作を行う。即ち通信データ判定部１２４は、入力された通信データの宛先ＩＰアドレス及び宛先ポート番号（宛先ＩＰアドレス・ポート番号）を、当該宛先ＩＰアドレス及び宛先ポート番号を含むグローバルアドレス情報が登録されているアドレス・ポート変換テーブル１２８のエントリのプライベートアドレス情報の値に変更する（ステップ１５１０）。このステップ１５１０での宛先ＩＰアドレス及び宛先ポート番号の変更は、図３の通信データ３００から通信データ３１０への変換（図１のステップ２０２）に相当する。
【００９４】
通信データ判定部１２４は、宛先ＩＰアドレス・ポート番号が変更された通信データ、つまりゲストＯＳ（移動していないゲストＯＳ）宛てに変換された通信データを通信データ送信部１２５に送って（ステップ１５０９）、処理を終了する。通信データ送信部１２５は、ゲストＯＳ宛てに変換された通信データを当該ゲストＯＳに送る。
【００９５】
図１９は、上記ステップ１５１０の動作を説明するための図である。図１９において、入力された通信データ１９００は、ＩＰヘッダ１９０１、ＴＣＰ（又はＵＤＰ）ヘッダ１９０２及びＴＣＰ（又はＵＤＰ）ペイロード１９０３を含む。ＩＰヘッダ１９０１の宛先ＩＰアドレスには、ＮＡＰＴのグローバルアドレス“172.29.1.100”が設定され、当該ＩＰヘッダ１９０１の送信元ＩＰアドレスには、通信相手のＩＰアドレスが設定されている。ＴＣＰ（又はＵＤＰ）ヘッダ１９０２の宛先ポート番号には、当該宛先ＩＰアドレスの示すグローバルアドレスのＮＡＰＴによってゲストＯＳに割り当てられているポート番号“10002”が設定され、当該ＴＣＰ（又はＵＤＰ）ヘッダ１９０２の送信元ポート番号には、通信相手のポート番号が設定されている。
【００９６】
図１９の例では、通信データ１９００の宛先ＩＰアドレス（ＮＡＰＴのグローバルアドレス“172.29.1.100”）及び当該通信データ１９００の宛先ポート番号（ゲストＯＳに割り当てられているポート番号“10002”）は、矢印１９１１で示されるように、アドレス・ポート変換テーブル１２８にグローバルアドレス情報として登録されている（ステップ１５０６がＹＥＳ）。これに対し、このグローバルアドレス情報が登録されているアドレス・ポート変換テーブル１２８のエントリのプライベートアドレス情報のＩＰアドレス（ゲストＯＳのプライベートアドレス）“192.168.1.100”は、移動先アドレステーブル１２６にプライベートアドレス情報（のＩＰアドレス）として登録されていないものとする（ステップ１５０７がＮＯ）。
【００９７】
この場合、ステップ１５１０が実行され、通信データ１９００が、矢印１９１２で示されるように、当該通信データ１９００の宛先ＩＰアドレス及び宛先ポート番号が変更された新たな通信データ１９２０に変換される。即ち通信データ１９００は、当該通信データ１９００の宛先ＩＰアドレス及び宛先ポート番号が、ＮＡＰＴのグローバルアドレス“172.29.1.100”及びゲストＯＳに割り当てられているポート番号“10002”から、矢印１９１３で示されるように、上記グローバルアドレス情報（グローバルアドレス“172.29.1.100”及びポート番号“10002”）が登録されているアドレス・ポート変換テーブル１２８のエントリのプライベートアドレス情報のＩＰアドレス（ゲストＯＳのプライベートアドレス）“192.168.1.100”及びポート番号（ゲストＯＳで使用するポート番号）“2345”に変更されて、新たな通信データ１９２０に変換される。
【００９８】
一方、ステップ１５０６の判定がＮＯであるならば、通信データ判定部１２４は第２の判定手段として機能して、入力された通信データのＩＰヘッダ及びＴＣＰ（又はＵＤＰ）ヘッダの、それぞれ送信元ＩＰアドレス及び送信元ポート番号（送信元ＩＰアドレス・ポート番号）が、アドレス・ポート変換テーブル１２８のプライベートアドレス情報に含まれているか（つまりプライベートアドレス情報のＩＰアドレス及びポート番号に一致するか）を判定する（ステップ１５１１）。
【００９９】
もし、ステップ１５１１の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データはゲストＯＳが送信した通信データであると判断する。そこで通信データ判定部１２４は、入力された通信データの送信元ＩＰアドレス及び送信元ポート番号を、ステップ１５１１の判定に用いられたアドレス・ポート変換テーブル１２８のエントリに設定されているグローバルアドレス情報のＩＰアドレス（ＮＡＰＴのグローバルアドレス）及びポート番号（ゲストＯＳに割り当てられているポート番号）に変更する（ステップ１５１２）。このステップ１５１２での送信元ＩＰアドレス及び送信元ポート番号の変更は、図４の通信データ４００から通信データ４１０への変換（図１のステップ２０５）に相当する。
【０１００】
通信データ判定部１２４は、送信元ＩＰアドレス及び送信元ポート番号が変更された通信データを通信データ送信部１２５に送って（ステップ１５０９）、処理を終了する。通信データ送信部１２５は、この通信データを通信相手に転送する。
【０１０１】
図２０は、上記ステップ１５１２の動作を説明するための図である。図２０において、入力された通信データ２０００は、ＩＰヘッダ２００１、ＴＣＰ（又はＵＤＰ）ヘッダ２００２及びＴＣＰ（又はＵＤＰ）ペイロード２００３を含む。ＩＰヘッダ２００１の宛先ＩＰアドレスには、通信相手のＩＰアドレスが設定され、当該ＩＰヘッダ２００１の送信元ＩＰアドレスには、ゲストＯＳの持つプライベートアドレス（ＩＰアドレス）“192.168.1.100”が設定されている。ＴＣＰ（又はＵＤＰ）ヘッダ２００２の宛先ポート番号には、通信相手のポート番号が設定され、当該ＴＣＰ（又はＵＤＰ）ヘッダ２００２の送信元ポート番号には、ゲストＯＳで使用するポート番号“2345”が設定されている。
【０１０２】
図２０の例では、通信データ２０００の送信元ＩＰアドレス（ゲストＯＳの持つプライベートアドレス“192.168.1.100”）及び当該通信データ２０００の送信元ポート番号（ゲストＯＳで使用するポート番号“2345”）は、矢印２０１１で示されるように、アドレス・ポート変換テーブル１２８にプライベートアドレス情報として登録されている（ステップ１５１１がＹＥＳ）。
【０１０３】
この場合、ステップ１５１２が実行され、通信データ２０００が、矢印２０１２で示されるように、当該通信データ２０００の送信元ＩＰアドレス及び送信元ポート番号が変更された新たな通信データ２０２０に変換される。即ち通信データ２０００は、当該通信データ２０００の送信元ＩＰアドレス及び送信元ポート番号が、ゲストＯＳの持つプライベートアドレス（ＩＰアドレス）“192.168.1.100”及び当該ゲストＯＳで使用するポート番号“2345”から、矢印２０１３で示されるように、上記プライベートアドレス情報（プライベートアドレス“192.168.1.100”及びポート番号“2345”）が登録されているアドレス・ポート変換テーブル１２８のエントリのグローバルアドレス情報のＩＰアドレス（ＮＡＰＴのグローバルアドレス）“172.29.1.100”及びポート番号（ゲストＯＳに割り当てられているポート番号）“10002”に変更されて、新たな通信データ２０２０に変換される。
【０１０４】
一方、ステップ１５１１の判定がＮＯであるならば、通信データ判定部１２４は第３の判定手段として機能して、入力された通信データのＩＰヘッダ及びＴＣＰ（又はＵＤＰ）ヘッダの、それぞれ送信元ＩＰアドレス及び送信元ポート番号（送信元ＩＰアドレス・ポート番号）が、移動元アドレステーブル１２７のプライベートアドレス情報に含まれているか（つまりプライベートアドレス情報のＩＰアドレス及びポート番号に一致するか）を判定する（ステップ１５１３）。
【０１０５】
もし、ステップ１５１３の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データは他の仮想マシンモニタから移動してきたゲストＯＳが送信した通信データであると判断する。そこで通信データ判定部１２４は、入力された通信データの送信元ＩＰアドレス及び送信元ポート番号を、ステップ１５１３の判定に用いられた移動元アドレステーブル１２７のエントリに設定されているグローバルアドレス情報のＩＰアドレス（移動元ＮＡＰＴのグローバルアドレス）及びポート番号（ゲストＯＳに割り当てられているポート番号）、つまり移動元ＮＡＰＴと共有するアドレス・ポート変換データに含まれているグローバルアドレス情報のＩＰアドレス（移動元ＮＡＰＴのグローバルアドレス）及びポート番号（ゲストＯＳに割り当てられているポート番号）に変更する（ステップ１５１４）。このステップ１５１４での送信元ＩＰアドレス及び送信元ポート番号の変更は、図８の通信データ８００から通信データ８１０への変換（図１のステップ２１３）に相当する。
【０１０６】
通信データ判定部１２４は、送信元ＩＰアドレス及び送信元ポート番号が変更された通信データを通信データ送信部１２５に送って（ステップ１５０９）、処理を終了する。通信データ送信部１２５は、この通信データを通信相手に転送する。
【０１０７】
図２１は、上記ステップ１５１４の動作を説明するための図である。図２１において、入力された通信データ２１００は、ＩＰヘッダ２１０１、ＴＣＰ（又はＵＤＰ）ヘッダ２１０２及びＴＣＰ（又はＵＤＰ）ペイロード２１０３を含む。ＩＰヘッダ２１０１の宛先ＩＰアドレスには、通信相手のＩＰアドレスが設定され、当該ＩＰヘッダ２１０１の送信元ＩＰアドレスには、ゲストＯＳの持つプライベートアドレス（ＩＰアドレス）“192.168.1.100”が設定されている。ＴＣＰ（又はＵＤＰ）ヘッダ２１０２の宛先ポート番号には、通信相手のポート番号が設定され、当該ＴＣＰ（又はＵＤＰ）ヘッダ２１０２の送信元ポート番号には、ゲストＯＳで使用するポート番号“2345”が設定されている。
【０１０８】
図２１の例では、通信データ２１００の送信元ＩＰアドレス（ゲストＯＳの持つプライベートアドレス“192.168.1.100”）及び当該通信データ２１００の送信元ポート番号（ゲストＯＳで使用するポート番号“2345”）は、矢印２１１１で示されるように、移動元アドレステーブル１２７にプライベートアドレス情報として登録されている（ステップ１５１３がＹＥＳ）。
【０１０９】
この場合、ステップ１５１４が実行され、通信データ２１００が、矢印２１１２で示されるように、当該通信データ２１００の送信元ＩＰアドレス及び送信元ポート番号が変更された新たな通信データ２１２０に変換される。即ち通信データ２１００は、当該通信データ２１００の送信元ＩＰアドレス及び送信元ポート番号が、ゲストＯＳの持つプライベートアドレス“192.168.1.100”及び当該ゲストＯＳで使用するポート番号“2345”から、矢印２１１３で示されるように、上記プライベートアドレス情報（プライベートアドレス“192.168.1.100”及びポート番号“2345”）が登録されている移動元アドレステーブル１２７のエントリのグローバルアドレス情報のＩＰアドレス（移動元ＮＡＰＴのグローバルアドレス）“172.29.1.102”及びポート番号（移動元ＮＡＰＴによってゲストＯＳに割り当てられているポート番号）“10201”に変更されて、新たな通信データ２１２０に変換される。
【０１１０】
一方、ステップ１５１３の判定がＮＯであるならば、通信データ判定部１２４は第４の判定手段として機能して、入力された通信データのＴＣＰ（又はＵＤＰ）ヘッダの宛先ポート番号が、移動元アドレステーブル１２７のグローバルアドレス情報に含まれているか（つまりグローバルアドレス情報中のポート番号に一致するか）を判定する（ステップ１５１５）。
【０１１１】
もし、ステップ１５１５の判定がＹＥＳであるならば、通信データ判定部１２４は、入力された通信データはゲストＯＳの移動元のＮＡＰＴから転送された通信データであると判断する。そこで通信データ判定部１２４は、入力された通信データの宛先ＩＰアドレス及び宛先ポート番号を、ステップ１５１５の判定に用いられた移動元アドレステーブル１２７のエントリに設定されているプライベートアドレス情報のＩＰアドレス（ゲストＯＳのプライベートアドレス）及びポート番号（ゲストＯＳで使用するポート番号）、つまり移動元ＮＡＰＴと共有するアドレス・ポート変換データに含まれているプライベートアドレス情報のＩＰアドレス（ゲストＯＳのプライベートアドレス）及びポート番号（ゲストＯＳで使用するポート番号）に変更する（ステップ１５１６）。このステップ１５１６での宛先ＩＰアドレス及び宛先ポート番号の変更は、図７の通信データ６１０から通信データ７００への変換に相当する。
【０１１２】
通信データ判定部１２４は、宛先ＩＰアドレス及び宛先ポート番号が変更された通信データを通信データ送信部１２５に送って（ステップ１５０９）、処理を終了する。通信データ送信部１２５は、この通信データを他の仮想マシンモニタから移動してきたゲストＯＳに送信する。
【０１１３】
図２２は、上記ステップ１５１６の動作を説明するための図である。図２２において、入力された通信データ２２００は、ＩＰヘッダ２２０１、ＴＣＰ（又はＵＤＰ）ヘッダ２２０２及びＴＣＰ（又はＵＤＰ）ペイロード２２０３を含む。ＩＰヘッダ２２０１の宛先ＩＰアドレスには、移動先ＮＡＰＴのグローバルアドレスが設定され、当該ＩＰヘッダ２２０１の送信元ＩＰアドレスには、通信相手のＩＰアドレスが設定されている。ＴＣＰ（又はＵＤＰ）ヘッダ２２０２の宛先ポート番号には、ゲストＯＳに割り当てられているポート番号“10002”が設定され、当該ＴＣＰ（又はＵＤＰ）ヘッダ２２０２の送信元ポート番号には、通信相手のポート番号が設定されている。
【０１１４】
図２２の例では、通信データ２２００の宛先ポート番号（ゲストＯＳに割り当てられているポート番号“10002”）は、矢印２２１１で示されるように、移動元アドレステーブル１２７にグローバルアドレス情報中のポート番号として登録されている（ステップ１５１３がＹＥＳ）。
【０１１５】
この場合、ステップ１５１６が実行され、通信データ２２００が、矢印２２１２で示されるように、当該通信データ２２００の宛先ＩＰアドレス及び宛先ポート番号が変更された新たな通信データ２２２０に変換される。即ち通信データ２２００は、当該通信データ２２００の宛先ＩＰアドレス及び宛先ポート番号が、移動先ＮＡＰＴのグローバルアドレス及びゲストＯＳに割り当てられているポート番号“10002”から、矢印２２１３で示されるように、上記グローバルアドレス情報（ポート番号“10002”を含むグローバルアドレス情報）が登録されている移動元アドレステーブル１２７のエントリのプライベートアドレス情報のＩＰアドレス（ゲストＯＳのプライベートアドレス）“192.168.1.100”及びポート番号（ゲストＯＳで使用するポート番号）“2345”に変更されて、新たな通信データ２２２０に変換される。
【０１１６】
次に、通信データ送信部１２５の動作について簡単に説明する。
【０１１７】
通信データ送信部１２５は、当該通信データ送信部１２５に送られた通信データを受け取ると、通常のＮＡＰＴ又はルータと同様の動作を行う。即ち通信データ送信部１２５は、ルーティングテーブル１２９に従い、通信データを当該ルーティングテーブル１２９によって示されるインタフェース（ＩＦ）に送る動作を行う。ここでは、仮想マシンモニタ１２-i上の仮想ネットワーク１３-iとハードウェア１１-iの持つＩＦのいずれかに通信データを送る処理が行われる。
【０１１８】
［変形例］
次に、上記実施形態の変形例について説明する。
【０１１９】
＜変形例における仮想マシンシステムの構成＞
図２３は、上記実施形態の変形例に係る仮想マシンシステムの構成を示すブロック図である。なお、図２３において、図１と等価な部分には同一参照符号を付してある。
【０１２０】
本変形例の特徴は、ＮＡＰＴ１４-1及び１４-2に代えて、相互に障害を検出する機能を有するＮＡＰＴ１４０-1及び１４０-2が用いられ、例えば、ゲストＯＳ１６の移動元の仮想マシンモニタ１２-1上のＮＡＰＴ（移動元ＮＡＰＴ）１４０-1に障害が発生した場合に、当該ゲストＯＳ１６の移動先の仮想マシンモニタ１２-2上のＮＡＰＴ（移動先ＮＡＰＴ）１４０-2が、当該ゲストＯＳ１６（移動しているゲストＯＳ１６）に対するＮＡＰＴ（移動元ＮＡＰＴ）１４０-1の処理を引き継ぐことにある。
【０１２１】
図２３の構成が図１と相違するのは、上述のように、ＮＡＰＴ１４-1及び１４-2に代えてＮＡＰＴ１４０-1及び１４０-2が用いられていることの他に、移動元ＮＡＰＴ１４０-1に障害が発生したことを移動先ＮＡＰＴ１４０-2が検出した後の、当該ＮＡＰＴ１４０-2の通信制御手順である。
【０１２２】
本変形例において、ＮＡＰＴ１４０-2は、ＮＡＰＴ１４０-1の障害発生２３１を検出すると、図２３において矢印２３２で示されるように、当該ＮＡＰＴ１４０-1のグローバルアドレス（172.29.1.100）を引き継ぐ。またＮＡＰＴ１４０-2は、自身が持つ移動元アドレステーブル１２７の内容を自身が持つアドレス・ポート変換テーブル１２８に取り込む（引き継ぐ）。この引き継ぎにより、ＮＡＰＴ１４０-2は、ＮＡＰＴ１４０-1に代わり、移動しているゲストＯＳ１６に関する通信データを対象とするＮＡＰＴの処理を行う。
【０１２３】
つまりＮＡＰＴ１４０-2は、通信相手２４から移動しているゲストＯＳ１６への通信の中継を図２３において×印２３３で示されるように停止する。そしてＮＡＰＴ１４０-2は、通信相手２４からの移動しているゲストＯＳ１６への通信が、上記実施形態における当該ゲストＯＳ１６からの通信相手２４への通信（矢印２６ｄ，２６ｅで示される通信）の場合と同様に、図２３において矢印２６ｆ，２６ｇに示されるように、ＮＡＰＴ１４０-1を介すことなく行われるように制御する。具体的には、ＮＡＰＴ１４０-2は、通信相手２４から送られた、宛先ＩＰアドレスにＮＡＰＴ１４０-1のグローバルアドレス（つまりＮＡＰＴ１４０-2が引き継いだグローバルアドレス）が設定されたゲストＯＳ１６宛ての通信データを、矢印２６ｆで示されるように、ＮＡＰＴ１４０-1に代わって受信する。ＮＡＰＴ１４０-2は、受信したゲストＯＳ１６宛ての通信データの宛先ＩＰアドレス及び宛先ポート番号を、アドレス・ポート変換テーブル１２８に基づき、ゲストＯＳ１６のプライベートアドレス及び当該ゲストＯＳ１６で使用するポート番号に変換し、矢印２６ｇで示されるように、当該ゲストＯＳ１６に仮想ネットワーク１３-2を介して送信する。
【０１２４】
＜移動元ＮＡＰＴの障害発生前後の通信シーケンス＞
次に、図１のシステムで適用される、移動元ＮＡＰＴ１４０-1の障害発生前後の通信シーケンスについて、ゲストＯＳ１６と通信相手２４との間で通信データが授受される場合を例に、図２４乃至図２７を参照して説明する。図２４は移動元ＮＡＰＴ１４０-1の障害発生前後の通信シーケンスを示すシーケンスチャート、図２５はＧｒａｔｕｉｔｏｕｓ  ＡＲＰ（Ｇ−ＡＲＰ）のフォーマット例を、図２６及び図２７は通信データのフォーマット例を示す。なお、図２４において、図２と等価な部分には同一符号を付してある。
【０１２５】
まず、ゲストＯＳ１６がハードウェア１１-1（仮想マシンモニタ１２-1）からハードウェア１１-2（仮想マシンモニタ１２-2）に移動してから、ＮＡＰＴ１４０-1の障害発生２３１までの通信シーケンスは、図２と同様である。
【０１２６】
ＮＡＰＴ１４０-2は、ＮＡＰＴ１４０-1の障害発生２３１を検出すると（ステップ２４１）、当該ＮＡＰＴ１４０-1のＩＰアドレス（グローバルアドレス）を引き継ぐ。そこでＮＡＰＴ１４０-2は、ＩＰアドレス（グローバルアドレス）の引き継ぎ（変更）を、通信相手２４を含むＬＡＮ２１上の全てのノードに通知するための特別のＡＲＰ（Address Resolution Protocol;アドレス解決プロトコル）要求であるＧｒａｔｕｉｔｏｕｓ  ＡＲＰ（以下、Ｇ−ＡＲＰと称する）２５００を、当該ＬＡＮ２１に例えばブロードキャストで送信する（ステップ２４２）。
【０１２７】
Ｇ−ＡＲＰ２５００は、図２５に示されるように、データリンク層ヘッダ２５０１及びＡＲＰパケット２５０２を含む。データリンク層ヘッダ２５０１の宛先ＭＡＣ（Media Access Control）アドレス及び送信元ＭＡＣアドレスには、それぞれ、ブロードキャストアドレス及びＮＡＰＴ１４０-2のＭＡＣアドレスが用いられる。ＡＲＰパケット２５０２は、ターゲットＭＡＣアドレス及びターゲットＩＰアドレス、並びに送信元ＭＡＣアドレス及び送信元ＩＰアドレスを含む。ＡＲＰパケット２５０２の送信元ＭＡＣアドレスには、ＮＡＰＴ１４０-2のＭＡＣアドレスが用いられ、当該ＡＲＰパケット２５０２のターゲットＩＰアドレス及び送信元ＩＰアドレスには、ＮＡＰＴ１４０-2が引き継ぐべきＮＡＰＴ１４０-1のグローバルアドレス（172.29.1.100）が用いられる。
【０１２８】
通信相手２４を含む、ＬＡＮ２１上のノードは、ＮＡＰＴ１４０-2からのＧ−ＡＲＰ２５００を受信すると、以後、ＮＡＰＴ１４０-1のターゲットアドレスを、ＮＡＰＴ１４０-2に対し送信するようになる。例えば通信相手２４は、移動したゲストＯＳ１６宛ての、図２６に示されるフォーマットの通信データ２６００を、ＬＡＮ２１を介してＮＡＰＴ１４０-2に送信する（ステップ２４３）。
【０１２９】
通信データ２６００は、ＩＰヘッダ２６０１、ＴＣＰ（又はＵＤＰ）ヘッダ２６０２及びＴＣＰ（又はＵＤＰ）ペイロード２６０３を含む。ＩＰヘッダ２６０１は、宛先ＩＰアドレス及び送信元ＩＰアドレスから構成される。ＩＰヘッダ２６０１の宛先ＩＰアドレスには、Ｇ−ＡＲＰ２５００を用いて通知されたＮＡＰＴ１４０-1のグローバルアドレス（つまりＮＡＰＴ１４０-2が引き継いだＮＡＰＴ１４０-1のグローバルアドレス）が用いられ、当該ＩＰヘッダ３０１の送信元ＩＰアドレスには、通信相手２４のＩＰアドレスが用いられる。ＴＣＰ（又はＵＤＰ）ヘッダ３０２の宛先ポート番号には、ＮＡＰＴ１４０-1によってゲストＯＳ１６に割り当てられているポート番号が用いられ、当該ＴＣＰ（又はＵＤＰ）ヘッダ３０２の送信元ポート番号には、通信相手２４のポート番号が用いられる。
【０１３０】
ＮＡＰＴ１４０-2は、通信相手２４からのゲストＯＳ１６宛ての通信データ２６００を、当該通信データ２６００の宛先ＩＰアドレスに基づいて受信すると、自身が有するアドレス・ポート変換テーブル１２８に基づき、宛先ＩＰアドレス及び宛先ポート番号の変換（アドレス・ポート変換）を行う（ステップ２４４）。ここでは、通信データ２６００に含まれているＩＰヘッダ２６０１の宛先ＩＰアドレスが、図２６において矢印２６１１で示されるように、ＮＡＰＴ１４０-1のグローバルアドレスからゲストＯＳ１６のプライベートアドレスに変換される。また、通信データ２６００に含まれているＴＣＰ（又はＵＤＰ）ヘッダ２６０２の宛先ポート番号が、図２６において矢印２６１２で示されるように、ゲストＯＳ１６に割り当てられているポート番号からゲストＯＳ１６で使用するポート番号に変換される。
【０１３１】
ＮＡＰＴ１４０-2は、アドレス・ポート変換が施された通信データ２６００を、図２６に示される通信データ２６１０として、仮想ネットワーク１３-2を介してゲストＯＳ１６に送信する（ステップ２４５）。ゲストＯＳ１６は、この通信データ２６１０を、ＴＣＰ（又はＵＤＰ）ヘッダ２６０２の宛先ポート番号で指定されるポートを介して受信する。
【０１３２】
次に、ゲストＯＳ１６が、例えば通信データ２６１０に応答するために、図２７に示されるフォーマットの通信データ２７００を仮想ネットワーク１３-2を介してＮＡＰＴ１４０-2に送信したものとする（ステップ２４６）。通信データ２７００は、ＩＰヘッダ２７０１、ＴＣＰ（又はＵＤＰ）ヘッダ２７０２及びＴＣＰ（又はＵＤＰ）ペイロード２７０３を含む。ＩＰヘッダ２７０１は、宛先ＩＰアドレス及び送信元ＩＰアドレスから構成される。ＩＰヘッダ２７０１の宛先ＩＰアドレスには、通信相手２４のＩＰアドレスが用いられ、当該ＩＰヘッダ２７０１の送信元ＩＰアドレスには、ＮＡＰＴ１４０-2が引き継いだＮＡＰＴ１４０-1のグローバルアドレスが用いられる。ＴＣＰ（又はＵＤＰ）ヘッダ２７０２の宛先ポート番号には、通信相手２４のポート番号が用いられ、当該ＴＣＰ（又はＵＤＰ）ヘッダ２７０２の送信元ポート番号には、ゲストＯＳ１６で使用するポート番号が用いられる。
【０１３３】
ＮＡＰＴ１４０-2は、ゲストＯＳ１６からの通信データ２７００を受信すると、自身が有するアドレス・ポート変換テーブル１２８に基づき、送信元ＩＰアドレス及び送信元ポート番号の変換（アドレス・ポート変換）を行う（ステップ２４７）。ここでは、通信データ２７００に含まれているＩＰヘッダ２７０１の送信元ＩＰアドレスが、図２７において矢印２７１１で示されるように、ゲストＯＳ１６のプライベートアドレスからＮＡＰＴ１４０-1のグローバルアドレスに変換される。また、通信データ２７００に含まれているＴＣＰ（又はＵＤＰ）ヘッダ２７０２の送信元ポート番号が、図４において矢印２７１２で示されるように、ゲストＯＳ１６で使用するポート番号からゲストＯＳ１６に割り当てられているポート番号に変換される。
【０１３４】
ＮＡＰＴ１４０-2は、アドレス・ポート変換が施された通信データ２７００を、図２７に示される通信データ２７１０として、ＬＡＮ２１を介して通信相手２４に送信する（ステップ２４８）。ゲストＯＳ１６は、この通信データ２７１０を、ＴＣＰ（又はＵＤＰ）ヘッダ２７０２の宛先ポート番号で指定されるポートを介して受信する。
【０１３５】
次に、本変形例で適用される仮想マシンモニタ１２-i（ｉ＝１，２）の構成について、図２８のブロック図を参照して説明する。図２８において、図９と等価な部分には同一参照符号を付してある。
【０１３６】
本変形例において、仮想マシンモニタ１２-iは、仮想ネットワーク１３-i、ＮＡＰＴ１４０-i、入出力制御部（Ｉ／Ｏ制御部）１２１及びゲストＯＳ制御部１２２を有する。ＮＡＰＴ１４０-iの特徴は、図９に示されるＮＡＰＴ１４-iと異なり、障害検出処理部２８０が追加されている点にある。
【０１３７】
ＮＡＰＴ１４０-iの障害検出処理部２８０は、以下の２種類の処理
（１）他のＮＡＰＴの障害検出処理部との間で、生存確認のためのハートビートデータパケットを定期的に互いに送信する処理（ハートビートデータ定期送信処理）
（２）他のＮＡＰＴからのハートビートが途切れたことを検出して、当該他のＮＡＰＴのグローバルアドレスの引継ぎのためのＧ−ＡＲＰを送信し、且つ自身が持つ移動元アドレステーブル１２７の内容を自身が持つアドレス・ポート変換テーブル１２８に取り込む（コピーする）処理（障害検出処理）
を行う。
【０１３８】
次に、上記２種類の処理の詳細について説明する。  
まず上記（１）の処理（ハートビートデータ定期送信処理）について説明する。ハートビートデータパケットの定期送信は、ネットワークを経由した通信、シリアルポートによる専用回線を使用した通信等どのような方法でも構わない。本変形例では、ハートビートデータパケットの定期送信は、ＮＡＰＴのグローバルアドレスを使用した通信とする。
【０１３９】
以下、ＮＡＰＴ１４０-iの障害検出処理部２８０によるハートビートデータ定期送信処理の手順について、図２９のフローチャート及び図３０のハートビートデータパケット例を参照して説明する。
【０１４０】
まず障害検出処理部２８０は、ＮＡＰＴ１４０-iの移動先アドレステーブル１２６に登録されている全てのグローバルアドレスを対象に、以下のステップ２９０１及び２９０２を繰り返し実行する（ステップ２９０３）。
【０１４１】
ステップ２９０１において、障害検出処理部２８０は、ＮＡＰＴ１４０-iの移動先アドレステーブル１２６のエントリに登録されている、移動先ＮＡＰＴのグローバルアドレスに基づき、当該グローバルアドレス宛てのハートビートデータパケット３０００（図３０参照）を作成する。作成されるハートビートデータパケット３０００は、宛先（宛先ＩＰアドレス）を移動先ＮＡＰＴのグローバルアドレスとし、データ部に少なくともハートビートデータであると識別できるデータが設定されていれば、どのようなものでもよい。
【０１４２】
本変形例では、ハートビートデータパケット３０００は、図３０に示されるように、ＩＰヘッダ３００１及びＩＰペイロード３００２を含む。ＩＰヘッダ３００１の宛先ＩＰアドレスには、図３０において矢印３０１１で示されるように、移動先アドレステーブル１２６に登録されている移動先ＮＡＰＴのグローバルアドレスが用いられ、当該ＩＰヘッダ３００１の送信元ＩＰアドレスには、障害検出処理部２８０を含むＮＡＰＴ１４０-iのグローバルアドレス（つまり移動元ＮＡＰＴのグローバルアドレス）が用いられる。ＩＰペイロード３００２は、ハートビートデータを含む。なお、ＩＰペイロード３００２のデータが、ＴＣＰ（又はＵＤＰ）のペイロードに保持される構成であっても構わない。また、ＩＰペイロード３００２に設定されるハートビートデータを識別する情報にポート番号を用いることも可能である。
【０１４３】
ステップ２９０２において、障害検出処理部２８０は、ステップ２９０１で作成されたハートビートデータパケット３０００を通信データ送信部１２５に送る。すると通信データ送信部１２５は、障害検出処理部２８０から送られたハートビートデータパケット３０００をネットワーク等を介して移動先ＮＡＰＴに送信する。
【０１４４】
障害検出処理部２８０は、上述の処理（ステップ２９０１及び２９０２）を、移動先アドレステーブル１２６に登録されている全グローバルアドレス（移動先ＮＡＰＴのグローバルアドレス）を対象に繰り返し実行する（ステップ２９０３）。そして障害検出処理部２８０は、移動先アドレステーブル１２６に登録されている全てのグローバルアドレス宛てにハートビートデータパケット３０００を送信し終えると（ステップ２９０３）、一定時間待機する（ステップ２９０４）。
【０１４５】
障害検出処理部２８０は、一定時間待機の後、再び上述の処理（ステップ２９０１及び２９０２）を繰り返す。この待機時間（一定時間）は、どのような値に設定されても構わないが、本変形例では、ハートビートデータパケット３０００の送信先ＮＡＰＴでの後述するハートビート切れ検出時間より短い時間間隔に設定されるものとする。この場合、ハートビートデータパケット３０００の定期送信は、ハートビート切れ検出時間より短い時間間隔で行われる。また、この待機時間を示す値が、ＮＡＰＴ１４０-iに予め設定されていてもよく、システムの起動時にユーザによって設定されてもよい。
【０１４６】
障害検出処理部２８０は、以上の処理（ステップ２９０１乃至２９０４）を、当該障害検出処理部２８０を含むＮＡＰＴ１４０-i自身が停止するまで繰り返す（ステップ２９０５）。
【０１４７】
次に上記（２）の処理（障害検出処理）について説明する。障害検出処理は、移動元アドレステーブル１２７に初めてデータ（移動元ＮＡＰＴのエントリデータ）が登録されると開始され、当該テーブル１２７にデータが登録されている期間、繰り返し実行される。ここでは、移動元アドレステーブル１２７に登録されている全てのグローバルアドレスを対象に、同様の処理が繰り返される。
【０１４８】
以下、ＮＡＰＴ１４０-iの障害検出処理部２８０による障害検出処理（移動元ＮＡＰＴの障害発生を検出する処理）の手順について、図３１のフローチャートを参照して説明する。
【０１４９】
まず障害検出処理部２８０は、移動元アドレステーブル１２７に登録されている移動元グローバルアドレスのＮＡＰＴ（つまり移動元ＮＡＰＴ）からのハートビートデータ（ハートビートデータパケット）を受信するか、ハートビートデータを受信しなくてもハートビート切れ検出時間が経過するまで待機する（ステップ３１０１）。ここで、ハートビート切れ検出時間は、ハートビートデータの受信がないために移動元ＮＡＰＴで障害が発生したと判定するまでに必要な時間に設定される。このハートビート切れ検出時間を示す値が、ＮＡＰＴ１４０-iに予め設定されていてもよく、システムの起動時にユーザによって設定されてもよい。
【０１５０】
障害検出処理部２８０は、上記ステップ３１０１での待機の後、ハートビートデータを受信したかを判定する（ステップ３１０２）。もし、ステップ３１０２の判定がＹＥＳであるならば、即ちハートビート切れ検出時間内にハートビートデータを受信したならば、障害検出処理部２８０は再びステップ３１０１の待機処理を実行する。ステップ３１０１及び３１０２は、移動元アドレステーブル１２７から全てのエントリデータ（移動元ＮＡＰＴのグローバルアドレス情報を含むエントリデータ）が削除されるまで繰り返し実行される（ステップ３１０３）。
【０１５１】
これに対し、ステップ３１０２の判定がＮＯであるならば、即ちハートビート切れ検出時間待機してもハートビートデータを受信しなかったならば、障害検出処理部２８０は、移動元ＮＡＰＴの障害発生によるハートビート切れを検出したものと判断する。すると障害検出処理部２８０は、ハートビート切れが検出された（つまり障害発生が検出された）移動元ＮＡＰＴの処理の引き継ぎを次のように行う。
【０１５２】
まず障害検出処理部２８０はアドレス・ポート変換データ移動手段として機能して、移動元アドレステーブル１２７の全エントリを対象に、ハートビート切れが検出された移動元ＮＡＰＴのグローバルアドレス（ＩＰアドレス）を含むエントリ（目的エントリ）であるかを判定し、目的エントリであるならば、当該目的エントリのデータ（アドレス・ポート変換データ）をアドレス・ポート変換テーブル１２８の空きエントリに移動する処理（ステップ３１０４及び３１０５）を繰り返す（ステップ３１０６）。即ち障害検出処理部２８０は、移動元アドレステーブル１２７の全エントリデータのうち、ハートビート切れが検出された移動元ＮＡＰＴのグローバルアドレス（ＩＰアドレス）を含むエントリデータをアドレス・ポート変換テーブル１２８に追加すると共に、当該追加されたエントリデータを移動元アドレステーブル１２７から削除する。
【０１５３】
図３２は、この移動元アドレステーブル１２７からアドレス・ポート変換テーブル１２８へのエントリデータの移動を説明するための図である。まず、ハートビート切れが検出された移動元ＮＡＰＴのグローバルアドレス（ＩＰアドレス）が“172.29.1.102”であるものとする。図３２の例では、このアドレス“172.29.1.102”をグローバルアドレス情報に含むエントリ３２０１が移動元アドレステーブル１２７に存在する。この場合、移動元アドレステーブル１２７のエントリ３２０１のデータが、図３２において矢印３２０２で示されるように、アドレス・ポート変換テーブル１２８のエントリ（空きエントリ）３２０３に移動される。つまり、移動元アドレステーブル１２７のエントリ３２０１のデータがアドレス・ポート変換テーブル１２８のエントリ３２０３に追加されると共に、当該移動元アドレステーブル１２７のエントリ３２０１のデータが削除される。
【０１５４】
障害検出処理部２８０は、移動元アドレステーブル１２７の全エントリを対象に上述の処理を実行すると（ステップ３１０６）、ハートビート切れが検出された移動元ＮＡＰＴのグローバルアドレス（ＩＰアドレス）がターゲットＩＰアドレス及び送信元ＩＰアドレスに設定されたＧ−ＡＲＰパケット（図２５参照）を作成する（ステップ３１０７）。障害検出処理部２８０は、作成されたＧ−ＡＲＰパケットを通信データ送信部１２５に送る。通信データ送信部１２５は、このＧ−ＡＲＰパケットをＬＡＮ２１を介してブロードキャストする。これにより障害検出処理部２８０を含むＮＡＰＴ１４-2は、ハートビート切れが検出された移動元ＮＡＰＴのグローバルアドレスを引き継ぐことができる。
【０１５５】
なお、本発明は、上記実施形態又はその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態及びその変形例では、プライベートアドレスを使用するゲストＯＳ（仮想マシン）が動作可能なハードウェア（上の仮想マシンモニタ）は２台である。しかし本発明は、ハードウェア（上の仮想マシンモニタ）が３台以上の仮想マシンシステムにも上記実施形態と同様に適用できる。
【０１５６】
また、上記実施形態及びその変形例は、仮想マシンシステム（仮想計算機システム）を前提としている。しかし本発明は、プライベートアドレスを使用するマシンが実マシン（物理計算機）であり、当該実マシンがハードウェア（上で動作するネットワークアドレス・ポート変換機構）間を移動されて再配置可能な計算機システム（実計算機システム）にも同様に適用できる。
【０１５７】
また、上記実施形態又はその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態又はその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０１５８】
【図１】本発明の一実施形態に係る仮想マシンシステムの構成を示すブロック図。
【図２】同実施形態におけるゲストＯＳの移動前後の通信シーケンスを示すシーケンスチャート。
【図３】図２の通信シーケンスにおいてゲストＯＳの移動前に当該ゲストＯＳの通信相手からＮＡＰＴ（ネットワークアドレス・ポート変換機構）に送信される当該ゲストＯＳ宛ての通信データ及び当該ＮＡＰＴから当該ゲストＯＳに送信される通信データを対応付けて示す図。
【図４】図２の通信シーケンスにおいてゲストＯＳの移動前に当該ゲストＯＳから送信される通信相手宛ての通信データ及びＮＡＰＴから通信相手に送信される通信データを対応付けて示す図。
【図５】図２の通信シーケンスにおいてゲストＯＳの移動時に移動元の仮想マシンモニタ上のＮＡＰＴ（移動元ＮＡＰＴ）から移動先の仮想マシンモニタ上のＮＡＰＴ（移動先ＮＡＰＴ）に送信されるアドレス・ポート変換データの一例を示す図。
【図６】図２の通信シーケンスにおいてゲストＯＳの移動後に当該ゲストＯＳの通信相手から移動元ＮＡＰＴに送信される当該ゲストＯＳ宛ての通信データ及び当該移動元ＮＡＰＴから移動先ＮＡＰＴに中継される当該ゲストＯＳ宛ての通信データを対応付けて示す図。
【図７】図２の通信シーケンスにおいてゲストＯＳの移動後に移動元ＮＡＰＴから移動先ＮＡＰＴに中継される当該ゲストＯＳ宛ての通信データ及び当該移動先ＮＡＰＴから当該ゲストＯＳに送信される通信データを対応付けて示す図。
【図８】図２の通信シーケンスにおいてゲストＯＳの移動後に当該ゲストＯＳから送信される通信相手宛ての通信データ及び移動先ＮＡＰＴから通信相手に送信される通信データを対応付けて示す図。
【図９】図１に示される仮想マシンモニタの構成を示すブロック図。
【図１０】図９に示される示される移動先アドレステーブルのデータ構造例を示す図。
【図１１】図９に示される示される移動元アドレステーブルのデータ構造例を示す図。
【図１２】図９に示される示されるアドレス・ポート変換テーブルのデータ構造例を示す図。
【図１３】図９に示されるゲストＯＳ状態受信部の動作手順を示すフローチャート。
【図１４】ゲストＯＳ状態受信部によって作成される移動停止データの一例を示す図。
【図１５】図９に示される通信データ判定部の動作手順を示すフローチャート。
【図１６】アドレス・ポート変換データを移動元アドレステーブルに追加する動作を説明するための図。
【図１７】移動停止データに基づいて移動先アドレステーブルからエントリデータを削除する動作を説明するための図。
【図１８】ゲストＯＳの通信相手から移動元ＮＡＰＴに送信される当該ゲストＯＳ宛ての通信データを、当該移動元ＮＡＰＴから移動先ＮＡＰＴに中継される当該ゲストＯＳ宛ての通信データに変換する動作を説明するための図。
【図１９】ゲストＯＳの通信相手からＮＡＰＴに送信される当該ゲストＯＳ宛ての通信データを、当該ＮＡＰＴから当該ゲストＯＳに送信される通信データに変換する動作を説明するための図。
【図２０】ゲストＯＳから送信される通信相手宛ての通信データを、ＮＡＰＴから通信相手に送信される通信データに変換する動作を説明するための図。
【図２１】ゲストＯＳから送信される通信相手宛ての通信データを、移動先ＮＡＰＴから通信相手に送信される通信データに変換する動作を説明するための図。
【図２２】移動元ＮＡＰＴから移動先ＮＡＰＴに中継されたゲストＯＳ宛ての通信データを、当該移動先ＮＡＰＴから当該ゲストＯＳに送信される通信データに変換する動作を説明するための図。
【図２３】同実施形態の変形例に係る仮想マシンシステムの構成を示すブロック図。
【図２４】同変形例における移動元ＮＡＰＴの障害発生前後の通信シーケンスを示すシーケンスチャート。
【図２５】図２４の通信シーケンスにおいて移動先ＮＡＰＴによる移動元ＮＡＰＴの障害発生の検出時に移動先ＮＡＰＴから送信されるＧｒａｔｕｉｔｏｕｓ  ＡＲＰ（Ｇ−ＡＲＰ）の一例を示す図。
【図２６】図２４の通信シーケンスにおいてＧ−ＡＲＰの送信後にゲストＯＳの通信相手から送信される当該ゲストＯＳ宛の通信データ及び移動先ＮＡＰＴから当該ゲストＯＳに送信される通信データを対応付けて示す図。
【図２７】図２４の通信シーケンスにおいてＧ−ＡＲＰの送信後にゲストＯＳから送信される通信相手宛ての通信データ及び移動先ＮＡＰＴから通信相手に送信される通信データを対応付けて示す図。
【図２８】図２３に示される仮想マシンモニタの構成を示すブロック図。
【図２９】図２８に示される障害検出処理部によるハートビートデータ定期送信処理の手順を示すフローチャート。
【図３０】ハートビートデータを作成する動作を説明するための図。
【図３１】図２８に示される障害検出処理部による障害検出処理の手順を示すフローチャート。
【図３２】ハートビート切れが検出された移動元ＮＡＰＴのグローバルアドレスを含む移動元アドレステーブルのエントリデータをアドレス・ポート変換テーブルに移動する動作を説明するための図。
【符号の説明】
【０１５９】
１１-1，１１-2，１１-i…ハードウェア、１２-1，１２-1，１２-i…仮想マシンモニタ、１３-1，１３-1，１３-i…仮想ネットワーク（プライベートネットワーク）、１４-1，１４-2，１４-i，１４０-1，１４０-2，１４０-i…ＮＡＰＴ（ネットワークアドレス・ポート変換機構）、１５…仮想マシン、１６…ゲストＯＳ、２１…ＬＡＮ（グローバルネットワーク）、２４…通信相手、１２１…Ｉ／Ｏ制御部、１２２…ゲストＯＳ制御部、１２３…ゲストＯＳ状態受信部、１２４…通信データ判定部、１２５…通信データ送信部、１２６…移動先アドレステーブル、１２７…移動元アドレステーブル、１２８…アドレス・ポート変換テーブル、１２９…ルーティングテーブル、２８０…障害検出処理部。
【図１】
2010114665.tif 000003
【図２】
2010114665.tif 000004
【図３】
2010114665.tif 000005
【図４】
2010114665.tif 000006
【図５】
2010114665.tif 000007
【図６】
2010114665.tif 000008
【図７】
2010114665.tif 000009
【図８】
2010114665.tif 000010
【図９】
2010114665.tif 000011
【図１０】
2010114665.tif 000012
【図１１】
2010114665.tif 000013
【図１２】
2010114665.tif 000014
【図１３】
2010114665.tif 000015
【図１４】
2010114665.tif 000016
【図１５】
2010114665.tif 000017
【図１６】
2010114665.tif 000018
【図１７】
2010114665.tif 000019
【図１８】
2010114665.tif 000020
【図１９】
2010114665.tif 000021
【図２０】
2010114665.tif 000022
【図２１】
2010114665.tif 000023
【図２２】
2010114665.tif 000024
【図２３】
2010114665.tif 000025
【図２４】
2010114665.tif 000026
【図２５】
2010114665.tif 000027
【図２６】
2010114665.tif 000028
【図２７】
2010114665.tif 000029
【図２８】
2010114665.tif 000030
【図２９】
2010114665.tif 000031
【図３０】
2010114665.tif 000032
【図３１】
2010114665.tif 000033
【図３２】
2010114665.tif 000034