説明

通信データ制御方法及び計算機システム

【課題】プライベートアドレスを使用するマシンがネットワークアドレス・ポート変換機構間を移動されても、当該マシンと通信相手との間の通信が途切れないようにする。
【解決手段】NAPT14-1は、NAPT14-2側に移動されたゲストOS16宛ての通信データ600を通信相手24から受信した場合、当該通信データ600の宛先ネットワークアドレスをNAPT14-2のグローバルアドレスに変換し、当該ゲストOS16宛ての通信データ610としてNAPT14-1へ転送する(ステップ209)。NAPT14-2は、NAPT14-2によって転送された通信データ610を受信した場合、当該通信データ600に対応する当該ゲストOS16宛ての通信データ700を当該ゲストOS16に送信する(ステップ211)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プライベートアドレスを使用するマシンが接続可能なプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための複数のネットワークアドレス・ポート変換機構を備えた計算機システムに係り、特に、前記マシンが、ネットワークアドレス・ポート変換機構間で移動される場合に好適な通信データ制御方法及び計算機システムに関する。
【背景技術】
【0002】
ハードウェア(実ハードウェア)上で仮想マシンモニタ(Virtual Machine Monitor: VMM)が動作し、当該モニタ上で当該ハードウェア(HW)をエミュレートする仮想マシンが複数存在できる環境は、仮想マシン環境(又は仮想化環境)と呼ばれている。このような仮想マシン環境では、各仮想マシン上で、オペレーティングシステム(以下、ゲストOSと称する)が動作することで、1台のハードウェア上に複数のゲストOS環境を構築することができる。
【0003】
仮想マシンモニタは、ハードウェア上で動作するオペレーティングシステム(以下、ホストOSと称する)のカーネル上のモジュールとして実現されるタイプと、仮想マシンモニタ自身がハイパーバイザと呼ばれるカーネルとして実現されるタイプとに分類される。どちらのタイプの仮想マシンモニタを適用しても、1台のハードウェア上に複数のゲストOS環境を構築することができる。つまり、どちらのタイプの仮想マシンモニタでも、ゲストOSのハードウェアに対する要求を仮想マシンモニタがエミュレートし、エミュレートされた要求を仮想マシンモニタが受け取って当該ハードウェアにアクセスするという点では、同じである。
【0004】
さて、仮想マシン環境を使用して、1台のハードウェア上に複数のゲストOS環境を持たせるサーバ集約化が進んでいくと、物理的なハードウェアの数に対し仮想マシンが数倍のオーダで増加する。このような状況になると、IP(Internet Protocol)アドレスの枯渇が問題となることが予想される。
【0005】
このような問題に対し、仮想マシン環境において、仮想マシン間に仮想的なプライベートネットワーク(仮想ネットワーク)を用意し、外部のネットワーク(グローバルネットワーク)と当該仮想的なプライベートネットワークとをネットワークアドレス・ポート変換(Network Address Port Translation: NAPT)機構で接続する方法が知られている。NAPT機構は、仮想マシンモニタ上に存在する。NAPT機構によって接続されるグローバルネットワーク及びプライベートネットワークのそれぞれのアドレス空間を、NAPT機構のグローバルアドレス空間及びNAPT機構のプライベートアドレス空間と呼ぶ。ここでNAT(Network Address Translation: ネットワークアドレス変換)機構ではなくて、NAPT機構が用いられるのは、NAT機構の場合同時に通信を行うゲストOSの数だけグローバルIPアドレスが必要となり、IP枯渇の問題の解決とならないためである。
【0006】
仮想マシン環境では、例えば特許文献1に記載されているように、ゲストOSイメージを格納した共有ディスク装置に、仮想マシンモニタを持つ複数台のハードウェアを接続することで、ハードウェア上で動作する仮想マシンモニタ間でゲストOS(仮想マシン)を移動(マイグレート)することが可能となる。更に詳細に述べるならば、仮想マシン環境では、仮想マシンモニタ上で動作するNAPT機構によってグローバルネットワークと接続されているプライベートネットワーク(仮想的なプライベートネットワーク)から、他の仮想マシンモニタ上で動作する他のNAPT機構によって当該グローバルネットワークと接続されている他のプライベートネットワークに、ゲストOS(が動作する仮想マシン)を移動することが可能となる。つまり仮想マシン環境では、ゲストOS(仮想マシン)を、あるNAPT機構側から他のNAPT機構側へ移動することが可能となる。なお、ゲストOSイメージとは、記憶領域にインストールされて設定されたゲストOSの記憶イメージである、
【特許文献1】特開2006−244481公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
上記特許文献1に記載されているような、ハードウェア上で動作する仮想マシンモニタ間をまたがった仮想マシン(ゲストOS)の移動は、様々な状況で利用される。例えば、ハードウェアを停止させる際に、当該ハードウェア上で動作する仮想マシンモニタ(つまり当該ハードウェアが持つ仮想マシンモニタ)によって実現される仮想マシン環境で稼働中の仮想マシン(ゲストOS)を他のハードウェア上で動作する仮想マシンモニタ(NAPT機構側)に移動すること、或いはハードウェアの負荷が増大した際に稼働中の仮想マシン(ゲストOS)を負荷の軽い他のハードウェア上で動作する仮想マシンモニタ(NAPT機構側)に移動することが可能である。
【0008】
しかし前述した仮想マシン間に仮想的なプライベートネットワークを用意し、外部のネットワーク(グローバルネットワーク)と当該仮想的なプライベートネットワークとをNAPT機構で接続した場合、仮想マシン(ゲストOS)を他のハードウェア(の仮想マシンモニタ)上に存在するNAPT機構側(つまり他のNAPT機構のプライベートアドレス空間)に移動すると、通信が途切れてしまうおそれがある。その理由は、NAPT機構間でグローバルアドレスが異なるためであり、プライベートアドレス空間のアドレス(プライベートアドレス)を使用する仮想マシン(ゲストOS)の他のNAPT機構のプライベートアドレス空間への移動は、外部の通信相手(グローバルネットワークに接続されている通信相手)にとって通信先のIPアドレスの変更となるためである。
【0009】
そこで、NAPT機構の冗長化のようにアドレス引き継ぎ行う方法が考えられる。しかし、NAPT機構の持つグローバルアドレスは、稼働中の各仮想マシン(ゲストOS)が共有しているため、全仮想マシン(ゲストOS)の同時移動のようなケースでなければ、単純にグローバルアドレスを移動先のNAPT機構に引き継がせることはできない。このような問題は、プライベートアドレスを使用するマシンが実マシン(物理計算機)であり、当該実マシンがハードウェア上で動作するネットワークアドレス・ポート変換機構間で移動されて再配置可能な計算機システムにおいても同様に存在する。
【0010】
本発明は上記事情を考慮してなされたものでその目的は、プライベートアドレスを使用するマシンが、あるネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構側に移動されても、グローバルネットワークに接続されている通信相手と当該マシンとの間の通信が途切れないようにすることができる通信データ制御方法及び計算機システムを提供することにある。
【課題を解決するための手段】
【0011】
本発明の1つの観点によれば、プライベートアドレスを使用するマシンが接続可能な第1のプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第1のネットワークアドレス・ポート変換機構と、前記マシンが接続可能な第2のプライベートネットワークと前記グローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第2のネットワークアドレス・ポート変換機構とを備えた計算機システムにおいて、前記マシンと通信を行う前記グローバルネットワークに接続された通信相手及び前記マシンの間で授受される通信データを制御する通信データ制御方法が提供される。この通信データ制御方法は、前記マシンが前記第1のネットワークアドレス・ポート変換機構側から前記第2のネットワークアドレス・ポート変換機構側に移動されたことを、前記第2のネットワークアドレス・ポート変換機構が検出するステップと、前記マシンの前記第2のネットワークアドレス・ポート変換機構側への移動の検出に応じて、前記第1のネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データであって、前記第1のネットワークアドレス・ポート変換機構が有する第1の記憶手段に格納されている、当該移動が検出された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられるアドレス・ポート変換データを、前記第2のネットワークアドレス・ポート変換機構が取得して自身が有する第2の記憶手段に格納することにより、当該アドレス・ポート変換データを前記第1のネットワークアドレス・ポート変換機構と共有するステップと、前記通信相手から前記グローバルネットワークを介して前記第1のネットワークアドレス・ポート変換機構に送信された、前記第2のネットワークアドレス・ポート変換機構側に移動された前記マシン宛ての、前記第1のネットワークアドレス・ポート変換機構のグローバルアドレスを宛先ネットワークアドレスとして含む通信データを、前記第1のネットワークアドレス・ポート変換機構が受信した場合、前記第1のネットワークアドレス・ポート変換機構が、当該受信された通信データの前記宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記第2のネットワークアドレス・ポート変換機構のグローバルアドレスに変換して、当該宛先ネットワークアドレスが変換された通信データを前記第2のネットワークアドレス・ポート変換機構に転送するステップと、前記第2のネットワークアドレス・ポート変換機構に転送された前記通信データを対象に、当該第2のネットワークアドレス・ポート変換機構が、前記第2の記憶手段に格納されている、前記第1のネットワークアドレス・ポート変換機構と共有する前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換して、当該ネットワークアドレス及びポート番号が変換された通信データを前記移動されたマシンに前記第2のプライベートネットワークを介して送信するステップとを具備する。
【発明の効果】
【0012】
本発明によれば、プライベートアドレスを使用するマシンが、あるネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構側に移動されても、グローバルネットワーク上の通信相手にとって使用するグローバルアドレスが変わらないため、移動されたマシンと当該通信相手との通信が途切れるのを防止できる。
【発明を実施するための最良の形態】
【0013】
以下、本発明を仮想マシンシステムに適用した実施の形態につき図面を参照して説明する。
<仮想マシンシステムの構成>
図1は本発明の一実施形態に係る仮想マシンシステム(計算機システム)の構成を示すブロック図である。図1において、ハードウェア11-1(#1)及び11-2(#2)上には、それぞれ仮想マシンモニタ12-1(#1)及び12-2(#2)が配置されている。ハードウェア11-1及び11-2は、いずれも、図示せぬCPU、メモリ及び入出力装置を含む。
【0014】
仮想マシンモニタ12-1及び12-2上には、それぞれ、仮想的なプライベートネットワークである仮想ネットワーク13-1(#1)及び13-2(#2)と、NAPT機構(以下、NAPTと称する)14-1(#1)及び14-2(#2)とが構築されている。つまり仮想マシンモニタ12-1及び12-2は、それぞれ、仮想ネットワーク13-1及び13-2と、NAPT14-1及び14-2とを含む。
【0015】
仮想ネットワーク13-1及び13-2は、それぞれ、外部のグローバルネットワーク、例えばローカルエリアネットワーク(LAN)21と、NAPT14-1及び14-2によって接続されている。このNAPT14-i(i=1,2)によって接続される仮想ネットワーク(プライベートネットワーク)13-i及びLAN(グローバルネットワーク)21のそれぞれのアドレス空間を、NAPT14-iのプライベートアドレス空間及びNAPT14-iのグローバルアドレス空間と呼ぶ。
【0016】
NAPT14-iは、プライベートアドレス空間のネットワークアドレス(プライベートアドレス)及びポート番号とグローバルアドレス空間のネットワークアドレス(グローバルアドレス)及びポート番号との間の変換(アドレス・ポート変換)を行う機能を有する。NAPT14-iはまた、グローバルアドレス空間のネットワークアドレス(グローバルアドレス)相互の変換、具体的には、自身が後述する移動元NAPT14-iである場合に、通信データの中継のために、移動元NAPT14-iのグローバルアドレス(IPアドレス)から移動先NAPTのグローバルアドレス(IPアドレス)への変換を行う機能も有する。
【0017】
図1のシステムの例では、ハードウェア11-1(上の仮想マシンモニタ12-1)側の仮想ネットワーク13-1に接続されていた仮想マシン15及び当該仮想マシン15上で動作するゲストOS16が、ハードウェア11-2(上の仮想マシンモニタ12-2)側の仮想ネットワーク13-2に移動される場合を想定している。ハードウェア11-1及び11-2は、例えばストレージエリアネットワーク(SAN)22-1及び22-2により共有ディスク装置23と接続されている。共有ディスク装置23の記憶領域には、ゲストOS16を実現するためのゲストOSイメージ230が格納されている。
【0018】
NAPT14-1及び14-2は、それぞれグローバルアドレスを持つ。そのため、移動前のゲストOS16が、例えば仮想ネットワーク13-1を介して仮想マシンシステムの外部の例えばクライアント端末のような通信相手24と通信する場合、NAPT14-1は、ゲストOS16のプライベートアドレス(送信元IPアドレス)を当該NAPT14-1のグローバルアドレスに書き換える。一方、通信相手24が、LAN21を介してゲストOS16と通信する場合、NAPT14-1は、当該NAPT14-1のグローバルアドレス(宛先IPアドレス)をゲストOS16のプライベートアドレスに書き換える。
【0019】
しかし、ゲストOS16(仮想マシン15及びゲストOS16)が図1において矢印25で示されるように、ハードウェア11-1(仮想マシンモニタ12-1上のNAPT14-1)側からハードウェア11-2(仮想マシンモニタ12-2上のNAPT14-2)側に移動されると、ゲストOS16と通信相手24との間の通信は途切れてしまう。
【0020】
そこで本実施形態では、ゲストOS16(仮想マシン15)と通信相手24との間で授受される通信データを、ゲストOS16(仮想マシン15)の移動元であるハードウェア11-1(仮想マシンモニタ12-1)側のNAPT14-1(移動元NAPT14-1)とゲストOS16の移動先であるハードウェア11-2(仮想マシンモニタ12-2)側のNAPT14-2(移動先NAPT14-2)との間で、図1において矢印群26で示されるように転送する構成を適用している。
【0021】
具体的には、NAPT14-1は、通信相手24から当該NAPT14-1に、図1において矢印26aで示されるように送られたゲストOS16宛ての通信データを、図1において矢印26bで示されるようにNAPT14-2に転送する。この通信データの転送に際し、NAPT14-1は、宛先IPアドレス(宛先ネットワークアドレス)を、当該NAPT14-1のグローバルアドレスからNAPT14-2のグローバルアドレスに変換する。NAPT14-2は、NAPT14-1から転送された通信データを、図1において矢印26cで示されるように、上記移動されたゲストOS16に仮想ネットワーク13-2を介して送信する。この通信データの送信に際し、NAPT14-2は、宛先IPアドレスを、当該NAPT14-2のグローバルアドレスからゲストOS16のプライベートアドレスに書き換える。このように、NAPT14-2は、通信相手24からNAPT14-1に送られたゲストOS16宛ての通信データを中継して、当該ゲストOS16に仮想ネットワーク13-2を介して送信する。
【0022】
一方、上記移動されたゲストOS16から通信相手24宛ての通信データが、図1において矢印26dに示されるように、仮想ネットワーク13-2上に送出された場合、NAPT14-2は、この通信相手24宛ての通信データを、図1において矢印26eに示されるように、LAN21を介して通信相手24に直接送信する。この通信データの送信に際し、NAPT14-2は、送信元IPアドレス(送信元ネットワークアドレス)を、ゲストOS16のプライベートアドレスからNAPT14-1のグローバルアドレスに変換する。これにより通信相手24は、ゲストOS16の移動を意識することなく、NAPT14-1を介して当該ゲストOS16と通信することができる。
【0023】
このように本実施形態においては、ハードウェア間で移動されたゲストOS16の通信データが、移動元NAPT14-1及び移動先NAPT14-2間で転送される。つまり本実施形態では、
(1)通信相手24からのゲストOS16宛ての通信データは、移動元NAPT14-1が移動先NAPT14-2のグローバルアドレスを宛先IPアドレスとして使用することにより、移動元NAPT14-1から移動先NAPT14-2に転送され、当該移動先NAPT14-2によりゲストOS16に送られる(矢印26a乃至26c参照)。
【0024】
(2)ゲストOS16が送信する通信データは、移動先NAPT14-2が移動元NAPT14-1のグローバルアドレスを送信元IPアドレスとして使用して、当該NAPT14-2から通信相手24に直接送信される(矢印26d及び26e参照)。
【0025】
<ゲストOSの移動前後の通信シーケンス>
次に、図1のシステムで適用される、ゲストOS16の移動前後の通信シーケンスについて、ゲストOS16と通信相手24との間で通信データが授受される場合を例に、図2のシーケンスチャートを参照して説明する。
【0026】
図1に示されるように、仮想ネットワーク(プライベートネットワーク)13-1及び13-2のネットワークアドレスは“192.168.1.10/24”であり、LAN(グローバルネットワーク)21のネットワークアドレスは“172.29.1.0/24”であるものとする。また、ハードウェア11-1及び11-2(仮想マシンモニタ12-1及び12-2)上の、NAPT14-1及び14-2のグローバルアドレスは、それぞれ“172.29.1.100”及び“172.29.1.101”であるものとする。
【0027】
まず、ゲストOS16の移動前の状態で行われる、ゲストOS16と通信相手24との間の通信について、図3及び図4の通信データ例を参照して説明する。
通信相手24(ゲストOS16の通信相手24)は、ゲストOS16との間で通信を行う必要がある場合、図3に示されるフォーマットのゲストOS16宛ての通信データ300をLAN21を介してNAPT14-1(#1)に送信する(ステップ201)。
【0028】
通信データ300は、IPヘッダ301、TCP(Transmission Control Protocol)(又はUDP(User Datagram Protocol))ヘッダ302及びTCP(又はUDP)ペイロード303を含む。IPヘッダ301は、宛先IPアドレス及び送信元IPアドレスから構成される。IPヘッダ301の宛先IPアドレスには、NAPT14-1のグローバルアドレスが用いられ、当該IPヘッダ301の送信元IPアドレスには、通信相手24のIPアドレスが用いられる。TCP(又はUDP)ヘッダ302の宛先ポート番号には、NAPT14-1によってゲストOS16に割り当てられているポート番号が用いられ、当該TCP(又はUDP)ヘッダ302の送信元ポート番号には、通信相手24のポート番号が用いられる。
【0029】
NAPT14-1は、通信相手24からの通信データ300を、当該通信データ300の宛先IPアドレスに基づいて受信すると、自身が有する後述するアドレス・ポート変換テーブル128(図9参照)に基づき、宛先IPアドレス及び宛先ポート番号の変換(アドレス・ポート変換)を行う(ステップ202)。ここでは、通信データ300に含まれているIPヘッダ301の宛先IPアドレスが、図3において矢印311で示されるように、NAPT14-1のグローバルアドレスからゲストOS16のプライベートアドレスに変換される(置き換えられる)。また、通信データ300に含まれているTCP(又はUDP)ヘッダ302の宛先ポート番号が、図3において矢印312で示されるように、NAPT14-1によってゲストOS16に割り当てられているポート番号からゲストOS16で使用するポート番号に変換される。
【0030】
NAPT14-1は、アドレス・ポート変換が施された通信データ300を、図3に示される通信データ310として、仮想ネットワーク13-1を介してゲストOS16に送信する(ステップ203)。ゲストOS16は、この通信データ310を、TCP(又はUDP)ヘッダ302の宛先ポート番号で指定されるポートを介して受信する。
【0031】
次に、ゲストOS16が、例えば通信データ310に応答するために、図4に示されるフォーマットの通信データ400を仮想ネットワーク13-1を介してNAPT14-1に送信したものとする(ステップ204)。通信データ400は、IPヘッダ401、TCP(又はUDP)ヘッダ402及びTCP(又はUDP)ペイロード403を含む。IPヘッダ401は、宛先IPアドレス及び送信元IPアドレスから構成される。IPヘッダ401の宛先IPアドレスには、通信相手24のIPアドレスが用いられ、当該IPヘッダ401の送信元IPアドレスには、ゲストOS16のプライベートアドレスが用いられる。TCP(又はUDP)ヘッダ402の宛先ポート番号には、通信相手24のポート番号が用いられ、当該TCP(又はUDP)ヘッダ402の送信元ポート番号には、ゲストOS16で使用するポート番号が用いられる。
【0032】
NAPT14-1は、ゲストOS16からの通信データ400を受信すると、自身が有するアドレス・ポート変換テーブル128(図9参照)に基づき、送信元IPアドレス及び送信元ポート番号の変換(アドレス・ポート変換)を行う(ステップ205)。ここでは、通信データ400に含まれているIPヘッダ401の送信元IPアドレスが、図4において矢印411で示されるように、ゲストOS16のプライベートアドレスからNAPT14-1のグローバルアドレスに変換される。また、通信データ400に含まれているTCP(又はUDP)ヘッダ402の送信元ポート番号が、図4において矢印412で示されるように、ゲストOS16で使用するポート番号からNAPT14-1によってゲストOS16に割り当てられているポート番号に変換される。
【0033】
NAPT14-1は、アドレス・ポート変換が施された通信データ400を、図4に示される通信データ410として、LAN21を介して通信相手24に送信する(ステップ206)。通信相手24は、この通信データ410を受信する。
【0034】
次に、ゲストOS16(ゲストOS16及び仮想マシン15)が移動する際の通信について、図2の通信シーケンスチャートに加えて、図5の通信データ(アドレス・ポート変換データ)の例を参照して説明する。
ここでは、ゲストOS16(ゲストOS16及び仮想マシン15)、即ちハードウェア11-1(仮想マシンモニタ12-1)側で動作するゲストOS16(ゲストOS16及び仮想マシン15)が、ハードウェア11-2(仮想マシンモニタ12-2)側に移動するものとする。ゲストOS16は、ハードウェア11-1及び11-2間を移動する場合、図5に示すフォーマットのアドレス・ポート変換データ(アドレス・ポート変換データパケット)500を、移動元NAPT14-1(#1)から移動先NAPT14-2(#2)に送信させる(ステップ207)。
【0035】
アドレス・ポート変換データ500は、IPヘッダ501及びIPペイロード502を含む通信データである。IPヘッダ501は、宛先IPアドレス及び送信元IPアドレスから構成される。IPヘッダ501の宛先IPアドレスには、移動先NAPT14-2のグローバルアドレスが用いられ、当該IPヘッダ501の送信元IPアドレスには、NAPT14-1のグローバルアドレスが用いられる。IPペイロード502は、ゲストOS16のプライベートアドレス、ゲストOS16のポート番号(ゲストOS16で使用するポート番号)、移動元NAPT14-1のグローバルアドレス、及び移動元NAPT14-1によってゲストOS16に割り当てられているポート番号を含む。なお、これらのIPペイロード502のデータが、TCP(又はUDP)のペイロードに保持される構成であっても構わない。
【0036】
NAPT14-1からNAPT14-2にアドレス・ポート変換データ500が送信され、当該アドレス・ポート変換データ500がNAPT14-2で受信されたものとする。つまりNAPT14-1及び14-2の間でのアドレス・ポート変換データ500の授受が完了したものとする。以後、NAPT14-1及び14-2は、ゲストOS16に関する通信データを、図2のシーケンスチャートに従い、以下のシーケンスで処理する。
【0037】
まず、通信相手24が、ゲストOS16との間で通信を行うために、図3に示される通信データ300と同様の、図6に示されるフォーマットの通信データ600を、LAN21を介してNAPT14-1(#1)に送信したものとする(ステップ208)。
【0038】
通信データ600は、IPヘッダ601、TCP(又はUDP)ヘッダ602及びTCP(又はUDP)ペイロード603を含む。IPヘッダ601は、宛先IPアドレス及び送信元IPアドレスから構成される。IPヘッダ601の宛先IPアドレスには、図3に示される通信データ300と同様に(つまりゲストOS16の移動前と同様に)、NAPT14-1のグローバルアドレスが用いられる。このように本実施形態では、ゲストOS16がNAPT14-1側(の仮想ネットワーク13-1)からNAPT14-2側(の仮想ネットワーク13-2)に移動されても、LAN21に接続されている通信相手24にとって使用するグローバルアドレスが変わらない。
【0039】
IPヘッダ601の送信元IPアドレスには、通信相手24のIPアドレスが用いられる。TCP(又はUDP)ヘッダ602の宛先ポート番号には、NAPT14-1によってゲストOS16に割り当てられているポート番号が用いられ、当該TCP(又はUDP)ヘッダ602の送信元ポート番号には、通信相手24のポート番号が用いられる。
【0040】
NAPT14-1は、通信相手24からの通信データ600を受信すると、当該通信データ600に含まれているIPヘッダ601の宛先IPアドレスを、図6において矢印611で示されるように、NAPT14-1のグローバルアドレスからNAPT14-2のグローバルアドレスに変更して、この宛先IPアドレスが変更された通信データ600を通信データ610として、NAPT14-2(#2)にLAN21を介して転送する(ステップ209)。
【0041】
NAPT14-2は、NAPT14-1によって転送された通信データ610を、当該通信データ610の宛先IPアドレスに基づいて受信すると、NAPT14-1が有する後述する移動元アドレステーブル127(図11参照)に基づき、宛先IPアドレス及び宛先ポート番号の変換(アドレス・ポート変換)を行う(ステップ210)。ここでは、通信データ610に含まれているIPヘッダ601の宛先IPアドレスが、図7において矢印701で示されるように、NAPT14-2のグローバルアドレスからゲストOS16のプライベートアドレスに変換される(置き換えられる)。また、通信データ610に含まれているTCP(又はUDP)ヘッダ602の宛先ポート番号が、図7において矢印702で示されるように、NAPT14-1によってゲストOS16に割り当てられているポート番号からゲストOS16で使用するポート番号に変換される。
【0042】
この変換のためには、通信データ610の宛先となるゲストOS(ここではゲストOS16)を一意に識別するための情報が必要となる。このような情報として、NAPT(ここではNAPT14-1)を含むハードウェア(ハードウェア11-1)のMACアドレス、或いはゲストOSに割り当てられるポート番号(グローバルアドレス情報中のポート番号)等を用いることができる。但し、ゲストOSに割り当てられるポート番号は、ゲストOSが移動される可能性のある範囲に含まれる各仮想ネットワーク13-i上のNAPT14-i(ここではi=1,2)で一意になるように設定される必要がある。本実施形態では、ゲストOSを一意に識別するための情報として、当該ゲストOSに割り当てられるポート番号であって、ゲストOSが移動される可能性のある範囲に含まれる各仮想ネットワーク13-i上のNAPT14-iで一意になるように設定されるポート番号が用いられるものとする。
【0043】
NAPT14-2は、アドレス・ポート変換が施された通信データ610を、図7に示される通信データ700として、仮想ネットワーク13-2を介してゲストOS16に送信する(ステップ211)。
【0044】
次に、ゲストOS16が、例えば通信データ700に応答するために、図8に示されるフォーマットの通信データ800を仮想ネットワーク13-2を介してNAPT14-2に送信したものとする(ステップ212)。通信データ800は、IPヘッダ801、TCP(又はUDP)ヘッダ802及びTCP(又はUDP)ペイロード803を含む。IPヘッダ801は、宛先IPアドレス及び送信元IPアドレスから構成される。IPヘッダ801の宛先IPアドレスには、通信相手24のIPアドレスが用いられ、当該IPヘッダ801の送信元IPアドレスには、ゲストOS16のプライベートアドレスが用いられる。TCP(又はUDP)ヘッダ802の宛先ポート番号には、通信相手24のポート番号が用いられ、当該TCP(又はUDP)ヘッダ802の送信元ポート番号には、ゲストOS16で使用するポート番号が用いられる。
【0045】
NAPT14-2は、ゲストOS16からの通信データ800を受信すると、自身が有する移動元アドレステーブル127(図11参照)に基づき、送信元IPアドレス及び送信元ポート番号の変換(アドレス・ポート変換)を行う(ステップ213)。ここでは、通信データ800に含まれているIPヘッダ801の送信元IPアドレスが、図8において矢印811で示されるように、ゲストOS16のプライベートアドレスからNAPT14-1のグローバルアドレスに変換される。また、通信データ800に含まれているTCP(又はUDP)ヘッダ802の送信元ポート番号が、図8において矢印812で示されるように、ゲストOS16で使用するポート番号からNAPT14-1によってゲストOS16に割り当てられているポート番号に変換される。
【0046】
NAPT14-2は、アドレス・ポート変換が施された通信データ800を、図8に示される通信データ810として、LAN21を介して通信相手24に送信する(ステップ214)。つまりNAPT14-2は、通信データ800を、NAPT14-1に代わって通信相手24に直接送信する。
【0047】
以上の通信シーケンスにより、仮想ネットワーク13-1,13-2にNAPT14-1,14-2が設定されている環境において、ゲストOS16が、異なるハードウェア11-1,11-2上の仮想マシンモニタ12-1,12-2(NAPT14-1,14-2)間を移動しても、LAN21上の通信相手24にとって使用するグローバルアドレスが変わらないため、移動されたゲストOS16と通信相手24との通信が途切れず、移動前と同様に通信することができる。
【0048】
また、NAPT14-1側からNAPT14-2側に移動されたゲストOS16から送信される通信相手24宛ての通信データは、NAPT14-2,14-1間で中継されず、NAPT14-2(つまり移動先NAPT14-2)によって直接通信相手24に送信される。このため、LAN21(グローバルネットワーク)の負荷を軽減できる。
【0049】
<仮想マシンモニタの構成>
次に、図1に示される仮想マシンモニタ12-i(i=1,2)の構成について説明する。図9は、仮想マシンモニタ12-iの構成を示すブロック図である。
【0050】
仮想マシンモニタ12-i(#i)は、仮想ネットワーク13-i及びNAPT14-iに加えて、入出力制御部(I/O制御部)121、ゲストOS制御部122を有する。I/O制御部121は、ゲストOS16のメモリアクセス、ディスクI/O及び通信データのI/O等、ゲストOS16の種々のI/O(入出力)を制御するモジュールである。I/O制御部121は、HW11-iとゲストOS16との間の全ての通信データが必ずNAPT14-i内の後述する通信データ判定部124を中継するように当該NAPT14-iを制御する。ゲストOS制御部122は、ゲストOS16の起動/停止、ゲストOS16の仮想マシンモニタ12-iから他の仮想マシンモニタへの移動、及び他の仮想マシンモニタから仮想マシンモニタ12-iへの移動を制御するモジュールである。
【0051】
NAPT14-iは、通常のNAPTとしてのアドレス・ポート変換の動作に加え、ゲストOS16の移動状態に合わせて当該ゲストOS16の通信データを、他の仮想マシンモニタ上のNAPTに転送する機能を有する。
【0052】
NAPT14-iは、ゲストOS状態受信部123、通信データ判定部124及び通信データ送信部125の各モジュールと、移動先アドレステーブル126、移動元アドレステーブル127、アドレス・ポート変換テーブル128及びルーティングテーブル129の各テーブルとを含む。テーブル126〜129は、記憶部130に格納されている。記憶部130は、例えば、ハードウェア11-iが有するメモリの記憶領域を用いて実現される。本実施形態では特に説明しないが、テーブル126〜129のエントリデータが、NAPT14-iにおける定期的な監視により、一定時間超過した後に削除される構成であってもよい。
【0053】
移動先アドレステーブル126は、ゲストOS制御部122の制御によるゲストOSの移動に関する情報のうちの移動先に関する情報(移動先情報)を、当該ゲストOSの情報(ゲストOS情報)に対応付けて管理するのに用いられる。本実施形態において、移動先情報(移動先グローバルアドレス情報)にはゲストOSの移動先の仮想マシンモニタ上のNAPTのグローバルアドレス(IPアドレス)が用いられ、ゲストOS情報(プライベートアドレス情報)には当該ゲストOSのプライベートアドレス(IPアドレス)が用いられる。このテーブル126への情報登録は、ゲストOSが他の仮想マシンモニタに移動した旨の通知をゲストOS状態受信部123が受け取った際に、当該受信部123によって行われる。
【0054】
図10は移動先アドレステーブル126のデータ構造例を示す。図10の例では、移動先アドレステーブル126の各エントリには、ゲストOSのプライベートアドレス(IPアドレス)と、当該ゲストOSの移動先の仮想マシンモニタ上のNAPTのグローバルアドレス(IPアドレス)とが登録される。
【0055】
移動元アドレステーブル127は、ゲストOS制御部122の制御によるゲストOSの移動に関する情報のうちの移動元に関する情報(移動元情報)を、当該ゲストOSの情報(ゲストOS情報)に対応付けて管理するのに用いられる。移動元情報(移動元のグローバルアドレス情報)にはゲストOSの移動元の仮想マシンモニタ上のNAPTのグローバルアドレス(IPアドレス)と当該移動元の仮想マシンモニタ上のNAPTにより当該ゲストOSに割り当てられているポート番号とが用いられる。ゲストOS情報(プライベートアドレス情報)には、ゲストOSのプライベートアドレス(IPアドレス)と当該ゲストOSで使用するポート番号とが用いられる。このテーブル127への情報(エントリデータ)登録は、ゲストOSが他の仮想マシンモニタから移動した旨の通知をゲストOS状態受信部123が受け取った際に、当該受信部123によって行われる。
【0056】
図11は移動元アドレステーブル127のデータ構造例を示す。図11の例では、移動元アドレステーブル127の各エントリには、プライベートアドレス情報として、ゲストOSのプライベートアドレス(IPアドレス)及び当該ゲストOSで使用するポート番号が登録されると共に、グローバルアドレス情報として、当該ゲストOSの移動元の仮想マシンモニタ上のNAPTのグローバルアドレス(IPアドレス)及び当該移動元の仮想マシンモニタ上のNAPTにより当該ゲストOSに割り当てられているポート番号が登録される。
【0057】
アドレス・ポート変換テーブル128は、従来からNAPTに設けられているアドレス・ポート変換テーブルに相当する。アドレス・ポート変換テーブル128は、ゲストOSのプライベートアドレス及び当該ゲストOSで使用するポート番号(から構成されるプライベートアドレス情報)と当該ゲストOSにポート番号を割り当てる(当該ゲストOSが動作する)仮想マシンモニタ12-i上のNAPT14-iのグローバルアドレス及び当該ゲストOSに割り当てられているポート番号(から構成されるグローバルアドレス情報)とを変換するのに用いられる。
【0058】
アドレス・ポート変換テーブル128への情報登録は、例えば、プライベートネットワーク(ここでは仮想ネットワーク13-i)から、外部ネットワーク(ここではLAN21)への通信が発生した場合と、ポート割り当てのための、周知のNAPT−PMPプロトコル(http://files.dns-sd.org/draft-cheshire-nat-pmp.txt)のような要求をゲストOS状態受信部123が受け取った際に、当該受信部123によって行われる。
【0059】
ここで、ゲストOSが移動される可能性のある範囲に含まれる各仮想ネットワーク13-i上のNAPT14-iでは、前述のように、当該ゲストOSに対して割り当てるグローバルアドレス情報中のポート番号が一意になるように設定されるものとする。
【0060】
図12はアドレス・ポート変換テーブル128のデータ構造例を示す。図12の例では、アドレス・ポート変換テーブル128の各エントリには、プライベートアドレス情報として、ゲストOSのプライベートアドレス(IPアドレス)及び当該ゲストOSで使用するポート番号が登録されると共に、グローバルアドレス情報として、NAPT14-iのグローバルアドレス(IPアドレス)と当該NAPT14-iによって当該ゲストOSに割り当てられているポート番号とが登録される。
【0061】
ルーティングテーブル129は、従来からNAPT及びルータに設けられているルーティングテーブルに相当する。ルーティングテーブル129のデータ構造は周知であるため、説明を省略する。
【0062】
次に、NAPT14-i内のゲストOS状態受信部123の動作について、図13のフローチャートを参照して説明する。
ゲストOS状態受信部123は、仮想マシンモニタ12-iのゲストOS制御部122からゲストOSに関する状態の通知を受け取り、その通知された内容に応じて次のように処理を行う。
【0063】
(1)他の仮想マシンモニタへのゲストOSの移動完了時の動作
まず、仮想マシンモニタ(VMM)12-i上のゲストOS16が他の仮想マシンモニタ(VMM)に移動された結果、当該仮想マシンモニタ12-iのゲストOS制御部122からNAPT14-iに当該他の仮想マシンモニタへのゲストOS移動完了が通知された場合の、ゲストOS状態受信部123の処理について説明する。
【0064】
ゲストOS状態受信部123は、ゲストOS制御部122からNAPT14-iにゲストOSに関する状態が通知されると、当該通知を受信する。そしてゲストOS状態受信部123は、受信した通知の内容を判定する(ステップ1301乃至1303)。もし、受信した通知が、上述のように仮想マシンモニタ12-iから他の仮想マシンモニタへのゲストOSの移動完了を示すならば(ステップ1301がYES)、ゲストOS状態受信部123は、アドレス・ポート変換テーブル128の全エントリのデータを対象に、以下のステップ1304乃至1306を繰り返し実行する(ステップ1307)。
【0065】
ステップ1304において、ゲストOS状態受信部123は、アドレス・ポート変換テーブル128から取り出されたエントリデータに基づき、移動したゲストOSのアドレス(プライベートアドレス)と当該エントリデータ中のプライベートアドレスとが一致するかを判定する。もし、一致するならば(ステップ1304がYES)、ゲストOS状態受信部123は、図5に示すアドレス・ポート変換データ500と同様のフォーマットのアドレス・ポート変換データを作成する(ステップ1305)。このアドレス・ポート変換データには、移動したゲストOSのアドレス(プライベートアドレス)と一致するプライベートアドレスを含む、アドレス・ポート変換テーブル128のエントリデータが用いられる。ゲストOS状態受信部123は、作成されたアドレス・ポート変換データを通信データ送信部125に送る(ステップ1306)。これに対し、一致しないならば(ステップ1304がNO)、ゲストOS状態受信部123はステップ1305及び1306をスキップする。
【0066】
ゲストOS状態受信部123は、以上の処理を、アドレス・ポート変換テーブル128の全エントリのデータを対象に繰り返し実行する(ステップ1307)。その後、ゲストOS状態受信部123は移動先アドレステーブルデータ追加手段として機能し、他の仮想マシンモニタへの移動が完了したゲストOS16のプライベートアドレスと移動先の仮想マシンモニタ上のNAPT(移動先NAPT)のグローバルアドレスとを含むエントリデータ(移動先アドレステーブルデータ)を移動先アドレステーブル126の空きエントリに追加(登録)して(ステップ1308)、処理を終了する。
【0067】
(2)他の仮想マシンモニタからのゲストOSの移動完了時の動作
次に、ゲストOS16が他の仮想マシンモニタ(VMM)から仮想マシンモニタ(VMM)12-iに移動された結果、当該仮想マシンモニタ12-iのゲストOS制御部122からNAPT14-iに当該他の仮想マシンモニタからのゲストOS移動完了が通知され、当該通知がゲストOS状態受信部123によって受信されたものとする。
【0068】
ゲストOS状態受信部123は、受信した通知が、この例のように他の仮想マシンモニタから(当該ゲストOS状態受信部123を含む)仮想マシンモニタ12-iへのゲストOS16の移動完了を示すならば(ステップ1302がYES)、当該ゲストOS16(つまり移動が完了したゲストOS16)のプライベートアドレス(を含む移動先に関するエントリデータ)が移動先アドレステーブル126に登録されているか(存在するか)判定する(ステップ1309)。
【0069】
もし、移動が完了したゲストOS16のプライベートアドレスが移動先アドレステーブル126に登録されているならば(ステップ1309がYES)、ゲストOS状態受信部123は、当該ゲストOS16は、仮想マシンモニタ12-iから他の仮想マシンモニタに移動した後、当該仮想マシンモニタ12-iに戻ってきたと判断する。この場合、ゲストOS状態受信部123は、仮想マシンモニタ12-iに戻ってきたゲストOS16の移動先に関する情報(エントリデータ)を移動先アドレステーブル126から削除して(ステップ1310)、処理を終了する。
【0070】
これに対し、移動が完了したゲストOS16のプライベートアドレスが移動先アドレステーブル126に登録されていないならば(ステップ1309がNO)、ゲストOS状態受信部123は、ステップ1310をスキップして処理を終了する。
【0071】
(3)ゲストOSの停止時の動作
次に、仮想マシンモニタ12-i上で動作しているゲストOS16が停止した結果、当該仮想マシンモニタ12-iのゲストOS制御部122からNAPT14-iにゲストOS16の停止が通知され、当該通知がゲストOS状態受信部123によって受信されたものとする。
【0072】
ゲストOS状態受信部123は、受信した通知が、この例のようにゲストOS16の停止を示すならば(ステップ1303がYES)、当該停止したゲストOS16のプライベートアドレス(を含む移動元に関するエントリデータ)が移動元アドレステーブル127に登録されているかを判定する(ステップ1311)。
【0073】
もし、移動元アドレステーブル127に登録されているならば(ステップ1311がYES)、ゲストOS状態受信部123は、通信データの転送を停止するため移動元の仮想マシンモニタに対して移動終了を通知する必要があると判断する。そこでゲストOS状態受信部123は、停止したゲストOS16のプライベートアドレスに対応付けて移動元アドレステーブル127に登録されている移動元の仮想マシンモニタ上のNAPT(移動元NAPT)のグローバルアドレスに基づき、当該移動元NAPTのグローバルアドレス宛ての移動停止データを作成する(ステップ1312)。この移動停止データ(移動停止データパケット)については後述する。
【0074】
ゲストOS状態受信部123は、作成された移動停止データを通信データ送信部125に送ることによって、当該移動停止データを通信データ送信部125から(I/O制御部121を介して)移動元の仮想マシンに送信させる(ステップ1313)。最後にゲストOS状態受信部123は、停止したゲストOS16に関する情報(エントリデータ)を移動元アドレステーブル127から削除して(ステップ1314)、処理を終了する。
【0075】
<移動停止データ>
図14は上記移動停止データのフォーマットを示す。図14において、移動停止データ1400は、IPヘッダ1401及びIPペイロード1402を含む。IPヘッダ1401の宛先IPアドレスには、移動元NAPTのグローバルアドレスが用いられ、当該IPヘッダ1401の送信元IPアドレスには移動先NAPTのグローバルアドレスが用いられる。IPペイロード1402に設定されるデータは、停止されるゲストOSのプライベートアドレスを含む。なお、停止されるゲストOSのプライベートアドレスが、TCP又はUDPのペイロードに設定される構成であっても構わない。つまり、移動停止データは、移動元NAPTのグローバルアドレスを宛先IPアドレスとし、移動先NAPTのグローバルアドレスを送信元IPアドレスとし、停止したゲストOSのプライベートアドレスをデータ部に含み、移動停止データと識別可能な通信データであれば、どのようなものでもよい。
【0076】
<通信データ判定部の動作>
次に、通信データ判定部124の動作について、図15のフローチャートを参照して説明する。
本実施形態において、仮想マシンモニタ12-iのI/O制御部121は、当該I/O制御部121を通過する全ての通信データをNAPT14-iの通信データ判定部124に入力することにより、当該通信データ判定部124をも通過させる。通信データ判定部124は、I/O制御部121によって入力された通信データの種類に応じて処理を行う。そこで通信データ判定部124は、まず検出手段として機能して、I/O制御部121によって入力された通信データがアドレス・ポート変換データ(アドレス・ポート変換データパケット)であるか、移動停止データであるか、或いはそれ以外であるかを判定する(ステップ1501,1502)。
【0077】
もし、入力された通信データが図5に示すアドレス・ポート変換データ500と同様のフォーマットのアドレス・ポート変換データであるならば(ステップ1501がYES)、検出手段として機能した通信データ判定部124は、ゲストOS(仮想マシン)が他のNAPT側から当該通信データ判定部124を含むNAPT14-2側(NAPT14-2のプライベートアドレス空間)に移動されたと判断する。即ちNAPT14-iの通信データ判定部124は、他のNAPTからのアドレス・ポート変換データをI/O制御部121を介して受け取ることにより、当該他のNAPT側からのゲストOSの移動を検出する。この場合、通信データ判定部124はアドレス・ポート変換データ追加手段として機能し、受け取ったアドレス・ポート変換データの内容(IPペイロードの内容)を移動元アドレステーブル127に追加して(ステップ1503)、処理を終了する。
【0078】
図16は、上記ステップ1503の動作を説明するための図である。図16において、入力された通信データであるアドレス・ポート変換データ1600は、IPヘッダ1601及びIPペイロード1602を含む。IPヘッダ1601の宛先IPアドレスには、移動先NAPTのグローバルアドレスが設定され、当該IPヘッダ1601の送信元IPアドレスには、移動元NAPTのグローバルアドレスが設定されている。IPペイロード1602は、ゲストOSのプライベートアドレス(IPアドレス)、ゲストOSのポート番号(ゲストOSで使用するポート番号)、移動元NAPTのグローバルアドレス、及び移動元NAPTによってゲストOSに割り当てられたポート番号を含む。
【0079】
ステップ1503では、アドレス・ポート変換データ(アドレス・ポート変換データパケット)1600のIPペイロード1602の内容、即ちゲストOSのプライベートアドレス(IPアドレス)、ゲストOSのポート番号、移動元NAPTのグローバルアドレス、及び移動元NAPTによってゲストOSに割り当てられたポート番号が、図16において矢印1610で示されるように、移動元アドレステーブル127の空きエントリに追加(登録)される。
【0080】
これにより通信データ判定部124を含むNAPT14-i(移動先NAPT14-i)は、移動元NAPTが管理するアドレス・ポート変換データを当該移動元NAPTと共有する。更に詳細に述べるならば、移動先NAPT14-iは、移動元NAPTの持つアドレス・ポート変換テーブル128を用いて当該移動元NAPTが管理するアドレス・ポート変換データを、当該移動元NAPTの持つ移動元アドレステーブル127により当該移動元NAPTと共有する。
【0081】
一方、入力された通信データが図14に示す移動停止データ1400と同様のフォーマットの移動停止データであるならば(ステップ1501がNO、ステップ1502がYES)、通信データ判定部124は移動先のゲストOSが停止した旨の通知であると判断する。この場合、通信データ判定部124は、入力された移動停止データのIPペイロードに含まれているゲストOSのIPアドレス(プライベートアドレス)が移動先アドレステーブル127に登録されているかを判定する(ステップ1504)。
【0082】
もし、ステップ1504の判定がYESであるならば、通信データ判定部124は、入力された移動停止データのIPペイロードに含まれているゲストOSが登録されている、IPアドレス移動元アドレステーブル127のエントリのデータを削除して(ステップ1505)、処理を終了する。これに対し、ステップ1504の判定がNOであるならば、通信データ判定部124はステップ1505をスキップして処理を終了する。
【0083】
図17は、上記ステップ1505の動作を説明するための図である。図17において、入力された通信データである移動停止データ1700は、IPヘッダ1701及びIPペイロード1702を含む。IPヘッダ1701の宛先IPアドレスには、移動元NAPTのグローバルアドレスが設定され、当該IPヘッダ1701の送信元IPアドレスには、移動先NAPTのグローバルアドレスが設定されている。IPペイロード1702は、ゲストOSのIPアドレス(プライベートアドレス)“192.168.1.102”を含む。
【0084】
図17の例では、ゲストOSのIPアドレス“192.168.1.102”は、移動先アドレステーブル126に登録されている(ステップ1504がYES)。そこで、上記ステップ1505では、移動停止データ1700のIPペイロード1702に設定されたゲストOSのIPアドレス“192.168.1.102”が登録されている、移動先アドレステーブル126のエントリのデータが、図17において矢印1710で示されるように、当該テーブル126から削除される。
【0085】
次に、入力された通信データが、アドレス・ポート変換データでも、移動停止データでもないものとする(ステップ1501及び1502がいずれもNO)。この場合、通信データ判定部124は、入力された通信データのIPヘッダ及びTCP(又はUDP)ヘッダの、それぞれ宛先IPアドレス及び宛先ポート番号(宛先IPアドレス・ポート番号)が、アドレス・ポート変換テーブル128のグローバルアドレス情報に含まれているか(つまりグローバルアドレス情報のIPアドレス及びポート番号に一致するか)を判定する(ステップ1506)。
【0086】
もし、ステップ1506の判定がYESであるならば、通信データ判定部124は、入力された通信データはゲストOS宛の通信データであると判断する。この場合、通信データ判定部124は第1の判定手段として機能して、該当するゲストOS(入力された通信データの宛先IPアドレスで示されるゲストOS)が移動しているかを判定するために、ステップ1507を実行する。
【0087】
ステップ1507において、通信データ判定部124は、上記ステップ1506で判定されたグローバルアドレス情報(つまり、入力された通信データの宛先IPアドレス及び宛先ポート番号を含むグローバルアドレス情報)が登録されている、アドレス・ポート変換テーブル128のエントリのプライベートアドレス情報のIPアドレス(ゲストOSのプライベートアドレス)が、移動先アドレステーブル126に登録されているかを判定する。
【0088】
もし、ステップ1507の判定がYESであるならば、通信データ判定部124は、該当するゲストOSは移動していると判断する。そこで通信データ判定部124は、入力された通信データの宛先IPアドレスを、ステップ1507の判定に用いられたアドレス・ポート変換テーブル128のエントリに設定されている移動先グローバルアドレス情報中のIPアドレス(移動先NAPTのグローバルアドレス)に変更(変換)する(ステップ1508)。このステップ1508での宛先IPアドレスの変更は、図6の通信データ600から通信データ610への変換に相当する。
【0089】
通信データ判定部124は、宛先IPアドレスが変更された通信データ、つまり移動先NAPT宛てに変換された通信データを通信データ送信部125に送って(ステップ1509)、処理を終了する。通信データ送信部125は、この移動先NAPT宛てに変換された通信データを当該移動先NAPTに転送する。
【0090】
図18は、上記ステップ1508の動作を説明するための図である。図18において、入力された通信データ1800は、IPヘッダ1801、TCP(又はUDP)ヘッダ1802及びTCP(又はUDP)ペイロード1803を含む。IPヘッダ1801の宛先IPアドレスには、移動元NAPTのグローバルアドレス“172.29.1.100”が設定され、当該IPヘッダ1801の送信元IPアドレスには、通信相手のIPアドレスが設定されている。TCP(又はUDP)ヘッダ1802の宛先ポート番号には、移動元NAPTによってゲストOSに割り当てられているポート番号“10002”が設定され、当該TCP(又はUDP)ヘッダ1802の送信元ポート番号には、通信相手のポート番号が設定されている。
【0091】
図18の例では、通信データ1800の宛先IPアドレス(移動元NAPTのグローバルアドレス“172.29.1.100”)及び当該通信データ1800の宛先ポート番号(移動元NAPTによってゲストOSに割り当てられているポート番号“10002”)は、矢印1811で示されるように、アドレス・ポート変換テーブル128にグローバルアドレス情報として登録されている(ステップ1506がYES)。また、このグローバルアドレス情報が登録されているアドレス・ポート変換テーブル128のエントリのプライベートアドレス情報のIPアドレス(ゲストOSのプライベートアドレス)“192.168.1.100”は、矢印1812で示されるように、移動先アドレステーブル126にプライベートアドレス情報(のIPアドレス)として登録されている(ステップ1507がYES)。
【0092】
この場合、ステップ1508が実行され、通信データ1800が、矢印1813で示されるように、当該通信データ1800の宛先IPアドレスが変更された新たな通信データ1820に変換される。即ち通信データ1800は、当該通信データ1800の宛先IPアドレスが、移動元NAPTのグローバルアドレス“172.29.1.100”から、矢印1814で示されるように、プライベートアドレス情報のIPアドレス“192.168.1.100”が登録されている移動先アドレステーブル126のエントリの移動先グローバルアドレス情報中のIPアドレス(移動先NAPTのグローバルアドレス)“172.29.1.101”に変更されて、新たな通信データ1820に変換される。
【0093】
一方、ステップ1507の判定がNOであるならば、通信データ判定部124は、該当するゲストOSは移動していないと判断する。この場合、通信データ判定部124は、従来から知られているNAPTの動作を行う。即ち通信データ判定部124は、入力された通信データの宛先IPアドレス及び宛先ポート番号(宛先IPアドレス・ポート番号)を、当該宛先IPアドレス及び宛先ポート番号を含むグローバルアドレス情報が登録されているアドレス・ポート変換テーブル128のエントリのプライベートアドレス情報の値に変更する(ステップ1510)。このステップ1510での宛先IPアドレス及び宛先ポート番号の変更は、図3の通信データ300から通信データ310への変換(図1のステップ202)に相当する。
【0094】
通信データ判定部124は、宛先IPアドレス・ポート番号が変更された通信データ、つまりゲストOS(移動していないゲストOS)宛てに変換された通信データを通信データ送信部125に送って(ステップ1509)、処理を終了する。通信データ送信部125は、ゲストOS宛てに変換された通信データを当該ゲストOSに送る。
【0095】
図19は、上記ステップ1510の動作を説明するための図である。図19において、入力された通信データ1900は、IPヘッダ1901、TCP(又はUDP)ヘッダ1902及びTCP(又はUDP)ペイロード1903を含む。IPヘッダ1901の宛先IPアドレスには、NAPTのグローバルアドレス“172.29.1.100”が設定され、当該IPヘッダ1901の送信元IPアドレスには、通信相手のIPアドレスが設定されている。TCP(又はUDP)ヘッダ1902の宛先ポート番号には、当該宛先IPアドレスの示すグローバルアドレスのNAPTによってゲストOSに割り当てられているポート番号“10002”が設定され、当該TCP(又はUDP)ヘッダ1902の送信元ポート番号には、通信相手のポート番号が設定されている。
【0096】
図19の例では、通信データ1900の宛先IPアドレス(NAPTのグローバルアドレス“172.29.1.100”)及び当該通信データ1900の宛先ポート番号(ゲストOSに割り当てられているポート番号“10002”)は、矢印1911で示されるように、アドレス・ポート変換テーブル128にグローバルアドレス情報として登録されている(ステップ1506がYES)。これに対し、このグローバルアドレス情報が登録されているアドレス・ポート変換テーブル128のエントリのプライベートアドレス情報のIPアドレス(ゲストOSのプライベートアドレス)“192.168.1.100”は、移動先アドレステーブル126にプライベートアドレス情報(のIPアドレス)として登録されていないものとする(ステップ1507がNO)。
【0097】
この場合、ステップ1510が実行され、通信データ1900が、矢印1912で示されるように、当該通信データ1900の宛先IPアドレス及び宛先ポート番号が変更された新たな通信データ1920に変換される。即ち通信データ1900は、当該通信データ1900の宛先IPアドレス及び宛先ポート番号が、NAPTのグローバルアドレス“172.29.1.100”及びゲストOSに割り当てられているポート番号“10002”から、矢印1913で示されるように、上記グローバルアドレス情報(グローバルアドレス“172.29.1.100”及びポート番号“10002”)が登録されているアドレス・ポート変換テーブル128のエントリのプライベートアドレス情報のIPアドレス(ゲストOSのプライベートアドレス)“192.168.1.100”及びポート番号(ゲストOSで使用するポート番号)“2345”に変更されて、新たな通信データ1920に変換される。
【0098】
一方、ステップ1506の判定がNOであるならば、通信データ判定部124は第2の判定手段として機能して、入力された通信データのIPヘッダ及びTCP(又はUDP)ヘッダの、それぞれ送信元IPアドレス及び送信元ポート番号(送信元IPアドレス・ポート番号)が、アドレス・ポート変換テーブル128のプライベートアドレス情報に含まれているか(つまりプライベートアドレス情報のIPアドレス及びポート番号に一致するか)を判定する(ステップ1511)。
【0099】
もし、ステップ1511の判定がYESであるならば、通信データ判定部124は、入力された通信データはゲストOSが送信した通信データであると判断する。そこで通信データ判定部124は、入力された通信データの送信元IPアドレス及び送信元ポート番号を、ステップ1511の判定に用いられたアドレス・ポート変換テーブル128のエントリに設定されているグローバルアドレス情報のIPアドレス(NAPTのグローバルアドレス)及びポート番号(ゲストOSに割り当てられているポート番号)に変更する(ステップ1512)。このステップ1512での送信元IPアドレス及び送信元ポート番号の変更は、図4の通信データ400から通信データ410への変換(図1のステップ205)に相当する。
【0100】
通信データ判定部124は、送信元IPアドレス及び送信元ポート番号が変更された通信データを通信データ送信部125に送って(ステップ1509)、処理を終了する。通信データ送信部125は、この通信データを通信相手に転送する。
【0101】
図20は、上記ステップ1512の動作を説明するための図である。図20において、入力された通信データ2000は、IPヘッダ2001、TCP(又はUDP)ヘッダ2002及びTCP(又はUDP)ペイロード2003を含む。IPヘッダ2001の宛先IPアドレスには、通信相手のIPアドレスが設定され、当該IPヘッダ2001の送信元IPアドレスには、ゲストOSの持つプライベートアドレス(IPアドレス)“192.168.1.100”が設定されている。TCP(又はUDP)ヘッダ2002の宛先ポート番号には、通信相手のポート番号が設定され、当該TCP(又はUDP)ヘッダ2002の送信元ポート番号には、ゲストOSで使用するポート番号“2345”が設定されている。
【0102】
図20の例では、通信データ2000の送信元IPアドレス(ゲストOSの持つプライベートアドレス“192.168.1.100”)及び当該通信データ2000の送信元ポート番号(ゲストOSで使用するポート番号“2345”)は、矢印2011で示されるように、アドレス・ポート変換テーブル128にプライベートアドレス情報として登録されている(ステップ1511がYES)。
【0103】
この場合、ステップ1512が実行され、通信データ2000が、矢印2012で示されるように、当該通信データ2000の送信元IPアドレス及び送信元ポート番号が変更された新たな通信データ2020に変換される。即ち通信データ2000は、当該通信データ2000の送信元IPアドレス及び送信元ポート番号が、ゲストOSの持つプライベートアドレス(IPアドレス)“192.168.1.100”及び当該ゲストOSで使用するポート番号“2345”から、矢印2013で示されるように、上記プライベートアドレス情報(プライベートアドレス“192.168.1.100”及びポート番号“2345”)が登録されているアドレス・ポート変換テーブル128のエントリのグローバルアドレス情報のIPアドレス(NAPTのグローバルアドレス)“172.29.1.100”及びポート番号(ゲストOSに割り当てられているポート番号)“10002”に変更されて、新たな通信データ2020に変換される。
【0104】
一方、ステップ1511の判定がNOであるならば、通信データ判定部124は第3の判定手段として機能して、入力された通信データのIPヘッダ及びTCP(又はUDP)ヘッダの、それぞれ送信元IPアドレス及び送信元ポート番号(送信元IPアドレス・ポート番号)が、移動元アドレステーブル127のプライベートアドレス情報に含まれているか(つまりプライベートアドレス情報のIPアドレス及びポート番号に一致するか)を判定する(ステップ1513)。
【0105】
もし、ステップ1513の判定がYESであるならば、通信データ判定部124は、入力された通信データは他の仮想マシンモニタから移動してきたゲストOSが送信した通信データであると判断する。そこで通信データ判定部124は、入力された通信データの送信元IPアドレス及び送信元ポート番号を、ステップ1513の判定に用いられた移動元アドレステーブル127のエントリに設定されているグローバルアドレス情報のIPアドレス(移動元NAPTのグローバルアドレス)及びポート番号(ゲストOSに割り当てられているポート番号)、つまり移動元NAPTと共有するアドレス・ポート変換データに含まれているグローバルアドレス情報のIPアドレス(移動元NAPTのグローバルアドレス)及びポート番号(ゲストOSに割り当てられているポート番号)に変更する(ステップ1514)。このステップ1514での送信元IPアドレス及び送信元ポート番号の変更は、図8の通信データ800から通信データ810への変換(図1のステップ213)に相当する。
【0106】
通信データ判定部124は、送信元IPアドレス及び送信元ポート番号が変更された通信データを通信データ送信部125に送って(ステップ1509)、処理を終了する。通信データ送信部125は、この通信データを通信相手に転送する。
【0107】
図21は、上記ステップ1514の動作を説明するための図である。図21において、入力された通信データ2100は、IPヘッダ2101、TCP(又はUDP)ヘッダ2102及びTCP(又はUDP)ペイロード2103を含む。IPヘッダ2101の宛先IPアドレスには、通信相手のIPアドレスが設定され、当該IPヘッダ2101の送信元IPアドレスには、ゲストOSの持つプライベートアドレス(IPアドレス)“192.168.1.100”が設定されている。TCP(又はUDP)ヘッダ2102の宛先ポート番号には、通信相手のポート番号が設定され、当該TCP(又はUDP)ヘッダ2102の送信元ポート番号には、ゲストOSで使用するポート番号“2345”が設定されている。
【0108】
図21の例では、通信データ2100の送信元IPアドレス(ゲストOSの持つプライベートアドレス“192.168.1.100”)及び当該通信データ2100の送信元ポート番号(ゲストOSで使用するポート番号“2345”)は、矢印2111で示されるように、移動元アドレステーブル127にプライベートアドレス情報として登録されている(ステップ1513がYES)。
【0109】
この場合、ステップ1514が実行され、通信データ2100が、矢印2112で示されるように、当該通信データ2100の送信元IPアドレス及び送信元ポート番号が変更された新たな通信データ2120に変換される。即ち通信データ2100は、当該通信データ2100の送信元IPアドレス及び送信元ポート番号が、ゲストOSの持つプライベートアドレス“192.168.1.100”及び当該ゲストOSで使用するポート番号“2345”から、矢印2113で示されるように、上記プライベートアドレス情報(プライベートアドレス“192.168.1.100”及びポート番号“2345”)が登録されている移動元アドレステーブル127のエントリのグローバルアドレス情報のIPアドレス(移動元NAPTのグローバルアドレス)“172.29.1.102”及びポート番号(移動元NAPTによってゲストOSに割り当てられているポート番号)“10201”に変更されて、新たな通信データ2120に変換される。
【0110】
一方、ステップ1513の判定がNOであるならば、通信データ判定部124は第4の判定手段として機能して、入力された通信データのTCP(又はUDP)ヘッダの宛先ポート番号が、移動元アドレステーブル127のグローバルアドレス情報に含まれているか(つまりグローバルアドレス情報中のポート番号に一致するか)を判定する(ステップ1515)。
【0111】
もし、ステップ1515の判定がYESであるならば、通信データ判定部124は、入力された通信データはゲストOSの移動元のNAPTから転送された通信データであると判断する。そこで通信データ判定部124は、入力された通信データの宛先IPアドレス及び宛先ポート番号を、ステップ1515の判定に用いられた移動元アドレステーブル127のエントリに設定されているプライベートアドレス情報のIPアドレス(ゲストOSのプライベートアドレス)及びポート番号(ゲストOSで使用するポート番号)、つまり移動元NAPTと共有するアドレス・ポート変換データに含まれているプライベートアドレス情報のIPアドレス(ゲストOSのプライベートアドレス)及びポート番号(ゲストOSで使用するポート番号)に変更する(ステップ1516)。このステップ1516での宛先IPアドレス及び宛先ポート番号の変更は、図7の通信データ610から通信データ700への変換に相当する。
【0112】
通信データ判定部124は、宛先IPアドレス及び宛先ポート番号が変更された通信データを通信データ送信部125に送って(ステップ1509)、処理を終了する。通信データ送信部125は、この通信データを他の仮想マシンモニタから移動してきたゲストOSに送信する。
【0113】
図22は、上記ステップ1516の動作を説明するための図である。図22において、入力された通信データ2200は、IPヘッダ2201、TCP(又はUDP)ヘッダ2202及びTCP(又はUDP)ペイロード2203を含む。IPヘッダ2201の宛先IPアドレスには、移動先NAPTのグローバルアドレスが設定され、当該IPヘッダ2201の送信元IPアドレスには、通信相手のIPアドレスが設定されている。TCP(又はUDP)ヘッダ2202の宛先ポート番号には、ゲストOSに割り当てられているポート番号“10002”が設定され、当該TCP(又はUDP)ヘッダ2202の送信元ポート番号には、通信相手のポート番号が設定されている。
【0114】
図22の例では、通信データ2200の宛先ポート番号(ゲストOSに割り当てられているポート番号“10002”)は、矢印2211で示されるように、移動元アドレステーブル127にグローバルアドレス情報中のポート番号として登録されている(ステップ1513がYES)。
【0115】
この場合、ステップ1516が実行され、通信データ2200が、矢印2212で示されるように、当該通信データ2200の宛先IPアドレス及び宛先ポート番号が変更された新たな通信データ2220に変換される。即ち通信データ2200は、当該通信データ2200の宛先IPアドレス及び宛先ポート番号が、移動先NAPTのグローバルアドレス及びゲストOSに割り当てられているポート番号“10002”から、矢印2213で示されるように、上記グローバルアドレス情報(ポート番号“10002”を含むグローバルアドレス情報)が登録されている移動元アドレステーブル127のエントリのプライベートアドレス情報のIPアドレス(ゲストOSのプライベートアドレス)“192.168.1.100”及びポート番号(ゲストOSで使用するポート番号)“2345”に変更されて、新たな通信データ2220に変換される。
【0116】
次に、通信データ送信部125の動作について簡単に説明する。
【0117】
通信データ送信部125は、当該通信データ送信部125に送られた通信データを受け取ると、通常のNAPT又はルータと同様の動作を行う。即ち通信データ送信部125は、ルーティングテーブル129に従い、通信データを当該ルーティングテーブル129によって示されるインタフェース(IF)に送る動作を行う。ここでは、仮想マシンモニタ12-i上の仮想ネットワーク13-iとハードウェア11-iの持つIFのいずれかに通信データを送る処理が行われる。
【0118】
[変形例]
次に、上記実施形態の変形例について説明する。
【0119】
<変形例における仮想マシンシステムの構成>
図23は、上記実施形態の変形例に係る仮想マシンシステムの構成を示すブロック図である。なお、図23において、図1と等価な部分には同一参照符号を付してある。
【0120】
本変形例の特徴は、NAPT14-1及び14-2に代えて、相互に障害を検出する機能を有するNAPT140-1及び140-2が用いられ、例えば、ゲストOS16の移動元の仮想マシンモニタ12-1上のNAPT(移動元NAPT)140-1に障害が発生した場合に、当該ゲストOS16の移動先の仮想マシンモニタ12-2上のNAPT(移動先NAPT)140-2が、当該ゲストOS16(移動しているゲストOS16)に対するNAPT(移動元NAPT)140-1の処理を引き継ぐことにある。
【0121】
図23の構成が図1と相違するのは、上述のように、NAPT14-1及び14-2に代えてNAPT140-1及び140-2が用いられていることの他に、移動元NAPT140-1に障害が発生したことを移動先NAPT140-2が検出した後の、当該NAPT140-2の通信制御手順である。
【0122】
本変形例において、NAPT140-2は、NAPT140-1の障害発生231を検出すると、図23において矢印232で示されるように、当該NAPT140-1のグローバルアドレス(172.29.1.100)を引き継ぐ。またNAPT140-2は、自身が持つ移動元アドレステーブル127の内容を自身が持つアドレス・ポート変換テーブル128に取り込む(引き継ぐ)。この引き継ぎにより、NAPT140-2は、NAPT140-1に代わり、移動しているゲストOS16に関する通信データを対象とするNAPTの処理を行う。
【0123】
つまりNAPT140-2は、通信相手24から移動しているゲストOS16への通信の中継を図23において×印233で示されるように停止する。そしてNAPT140-2は、通信相手24からの移動しているゲストOS16への通信が、上記実施形態における当該ゲストOS16からの通信相手24への通信(矢印26d,26eで示される通信)の場合と同様に、図23において矢印26f,26gに示されるように、NAPT140-1を介すことなく行われるように制御する。具体的には、NAPT140-2は、通信相手24から送られた、宛先IPアドレスにNAPT140-1のグローバルアドレス(つまりNAPT140-2が引き継いだグローバルアドレス)が設定されたゲストOS16宛ての通信データを、矢印26fで示されるように、NAPT140-1に代わって受信する。NAPT140-2は、受信したゲストOS16宛ての通信データの宛先IPアドレス及び宛先ポート番号を、アドレス・ポート変換テーブル128に基づき、ゲストOS16のプライベートアドレス及び当該ゲストOS16で使用するポート番号に変換し、矢印26gで示されるように、当該ゲストOS16に仮想ネットワーク13-2を介して送信する。
【0124】
<移動元NAPTの障害発生前後の通信シーケンス>
次に、図1のシステムで適用される、移動元NAPT140-1の障害発生前後の通信シーケンスについて、ゲストOS16と通信相手24との間で通信データが授受される場合を例に、図24乃至図27を参照して説明する。図24は移動元NAPT140-1の障害発生前後の通信シーケンスを示すシーケンスチャート、図25はGratuitous ARP(G−ARP)のフォーマット例を、図26及び図27は通信データのフォーマット例を示す。なお、図24において、図2と等価な部分には同一符号を付してある。
【0125】
まず、ゲストOS16がハードウェア11-1(仮想マシンモニタ12-1)からハードウェア11-2(仮想マシンモニタ12-2)に移動してから、NAPT140-1の障害発生231までの通信シーケンスは、図2と同様である。
【0126】
NAPT140-2は、NAPT140-1の障害発生231を検出すると(ステップ241)、当該NAPT140-1のIPアドレス(グローバルアドレス)を引き継ぐ。そこでNAPT140-2は、IPアドレス(グローバルアドレス)の引き継ぎ(変更)を、通信相手24を含むLAN21上の全てのノードに通知するための特別のARP(Address Resolution Protocol;アドレス解決プロトコル)要求であるGratuitous ARP(以下、G−ARPと称する)2500を、当該LAN21に例えばブロードキャストで送信する(ステップ242)。
【0127】
G−ARP2500は、図25に示されるように、データリンク層ヘッダ2501及びARPパケット2502を含む。データリンク層ヘッダ2501の宛先MAC(Media Access Control)アドレス及び送信元MACアドレスには、それぞれ、ブロードキャストアドレス及びNAPT140-2のMACアドレスが用いられる。ARPパケット2502は、ターゲットMACアドレス及びターゲットIPアドレス、並びに送信元MACアドレス及び送信元IPアドレスを含む。ARPパケット2502の送信元MACアドレスには、NAPT140-2のMACアドレスが用いられ、当該ARPパケット2502のターゲットIPアドレス及び送信元IPアドレスには、NAPT140-2が引き継ぐべきNAPT140-1のグローバルアドレス(172.29.1.100)が用いられる。
【0128】
通信相手24を含む、LAN21上のノードは、NAPT140-2からのG−ARP2500を受信すると、以後、NAPT140-1のターゲットアドレスを、NAPT140-2に対し送信するようになる。例えば通信相手24は、移動したゲストOS16宛ての、図26に示されるフォーマットの通信データ2600を、LAN21を介してNAPT140-2に送信する(ステップ243)。
【0129】
通信データ2600は、IPヘッダ2601、TCP(又はUDP)ヘッダ2602及びTCP(又はUDP)ペイロード2603を含む。IPヘッダ2601は、宛先IPアドレス及び送信元IPアドレスから構成される。IPヘッダ2601の宛先IPアドレスには、G−ARP2500を用いて通知されたNAPT140-1のグローバルアドレス(つまりNAPT140-2が引き継いだNAPT140-1のグローバルアドレス)が用いられ、当該IPヘッダ301の送信元IPアドレスには、通信相手24のIPアドレスが用いられる。TCP(又はUDP)ヘッダ302の宛先ポート番号には、NAPT140-1によってゲストOS16に割り当てられているポート番号が用いられ、当該TCP(又はUDP)ヘッダ302の送信元ポート番号には、通信相手24のポート番号が用いられる。
【0130】
NAPT140-2は、通信相手24からのゲストOS16宛ての通信データ2600を、当該通信データ2600の宛先IPアドレスに基づいて受信すると、自身が有するアドレス・ポート変換テーブル128に基づき、宛先IPアドレス及び宛先ポート番号の変換(アドレス・ポート変換)を行う(ステップ244)。ここでは、通信データ2600に含まれているIPヘッダ2601の宛先IPアドレスが、図26において矢印2611で示されるように、NAPT140-1のグローバルアドレスからゲストOS16のプライベートアドレスに変換される。また、通信データ2600に含まれているTCP(又はUDP)ヘッダ2602の宛先ポート番号が、図26において矢印2612で示されるように、ゲストOS16に割り当てられているポート番号からゲストOS16で使用するポート番号に変換される。
【0131】
NAPT140-2は、アドレス・ポート変換が施された通信データ2600を、図26に示される通信データ2610として、仮想ネットワーク13-2を介してゲストOS16に送信する(ステップ245)。ゲストOS16は、この通信データ2610を、TCP(又はUDP)ヘッダ2602の宛先ポート番号で指定されるポートを介して受信する。
【0132】
次に、ゲストOS16が、例えば通信データ2610に応答するために、図27に示されるフォーマットの通信データ2700を仮想ネットワーク13-2を介してNAPT140-2に送信したものとする(ステップ246)。通信データ2700は、IPヘッダ2701、TCP(又はUDP)ヘッダ2702及びTCP(又はUDP)ペイロード2703を含む。IPヘッダ2701は、宛先IPアドレス及び送信元IPアドレスから構成される。IPヘッダ2701の宛先IPアドレスには、通信相手24のIPアドレスが用いられ、当該IPヘッダ2701の送信元IPアドレスには、NAPT140-2が引き継いだNAPT140-1のグローバルアドレスが用いられる。TCP(又はUDP)ヘッダ2702の宛先ポート番号には、通信相手24のポート番号が用いられ、当該TCP(又はUDP)ヘッダ2702の送信元ポート番号には、ゲストOS16で使用するポート番号が用いられる。
【0133】
NAPT140-2は、ゲストOS16からの通信データ2700を受信すると、自身が有するアドレス・ポート変換テーブル128に基づき、送信元IPアドレス及び送信元ポート番号の変換(アドレス・ポート変換)を行う(ステップ247)。ここでは、通信データ2700に含まれているIPヘッダ2701の送信元IPアドレスが、図27において矢印2711で示されるように、ゲストOS16のプライベートアドレスからNAPT140-1のグローバルアドレスに変換される。また、通信データ2700に含まれているTCP(又はUDP)ヘッダ2702の送信元ポート番号が、図4において矢印2712で示されるように、ゲストOS16で使用するポート番号からゲストOS16に割り当てられているポート番号に変換される。
【0134】
NAPT140-2は、アドレス・ポート変換が施された通信データ2700を、図27に示される通信データ2710として、LAN21を介して通信相手24に送信する(ステップ248)。ゲストOS16は、この通信データ2710を、TCP(又はUDP)ヘッダ2702の宛先ポート番号で指定されるポートを介して受信する。
【0135】
次に、本変形例で適用される仮想マシンモニタ12-i(i=1,2)の構成について、図28のブロック図を参照して説明する。図28において、図9と等価な部分には同一参照符号を付してある。
【0136】
本変形例において、仮想マシンモニタ12-iは、仮想ネットワーク13-i、NAPT140-i、入出力制御部(I/O制御部)121及びゲストOS制御部122を有する。NAPT140-iの特徴は、図9に示されるNAPT14-iと異なり、障害検出処理部280が追加されている点にある。
【0137】
NAPT140-iの障害検出処理部280は、以下の2種類の処理
(1)他のNAPTの障害検出処理部との間で、生存確認のためのハートビートデータパケットを定期的に互いに送信する処理(ハートビートデータ定期送信処理)
(2)他のNAPTからのハートビートが途切れたことを検出して、当該他のNAPTのグローバルアドレスの引継ぎのためのG−ARPを送信し、且つ自身が持つ移動元アドレステーブル127の内容を自身が持つアドレス・ポート変換テーブル128に取り込む(コピーする)処理(障害検出処理)
を行う。
【0138】
次に、上記2種類の処理の詳細について説明する。
まず上記(1)の処理(ハートビートデータ定期送信処理)について説明する。ハートビートデータパケットの定期送信は、ネットワークを経由した通信、シリアルポートによる専用回線を使用した通信等どのような方法でも構わない。本変形例では、ハートビートデータパケットの定期送信は、NAPTのグローバルアドレスを使用した通信とする。
【0139】
以下、NAPT140-iの障害検出処理部280によるハートビートデータ定期送信処理の手順について、図29のフローチャート及び図30のハートビートデータパケット例を参照して説明する。
【0140】
まず障害検出処理部280は、NAPT140-iの移動先アドレステーブル126に登録されている全てのグローバルアドレスを対象に、以下のステップ2901及び2902を繰り返し実行する(ステップ2903)。
【0141】
ステップ2901において、障害検出処理部280は、NAPT140-iの移動先アドレステーブル126のエントリに登録されている、移動先NAPTのグローバルアドレスに基づき、当該グローバルアドレス宛てのハートビートデータパケット3000(図30参照)を作成する。作成されるハートビートデータパケット3000は、宛先(宛先IPアドレス)を移動先NAPTのグローバルアドレスとし、データ部に少なくともハートビートデータであると識別できるデータが設定されていれば、どのようなものでもよい。
【0142】
本変形例では、ハートビートデータパケット3000は、図30に示されるように、IPヘッダ3001及びIPペイロード3002を含む。IPヘッダ3001の宛先IPアドレスには、図30において矢印3011で示されるように、移動先アドレステーブル126に登録されている移動先NAPTのグローバルアドレスが用いられ、当該IPヘッダ3001の送信元IPアドレスには、障害検出処理部280を含むNAPT140-iのグローバルアドレス(つまり移動元NAPTのグローバルアドレス)が用いられる。IPペイロード3002は、ハートビートデータを含む。なお、IPペイロード3002のデータが、TCP(又はUDP)のペイロードに保持される構成であっても構わない。また、IPペイロード3002に設定されるハートビートデータを識別する情報にポート番号を用いることも可能である。
【0143】
ステップ2902において、障害検出処理部280は、ステップ2901で作成されたハートビートデータパケット3000を通信データ送信部125に送る。すると通信データ送信部125は、障害検出処理部280から送られたハートビートデータパケット3000をネットワーク等を介して移動先NAPTに送信する。
【0144】
障害検出処理部280は、上述の処理(ステップ2901及び2902)を、移動先アドレステーブル126に登録されている全グローバルアドレス(移動先NAPTのグローバルアドレス)を対象に繰り返し実行する(ステップ2903)。そして障害検出処理部280は、移動先アドレステーブル126に登録されている全てのグローバルアドレス宛てにハートビートデータパケット3000を送信し終えると(ステップ2903)、一定時間待機する(ステップ2904)。
【0145】
障害検出処理部280は、一定時間待機の後、再び上述の処理(ステップ2901及び2902)を繰り返す。この待機時間(一定時間)は、どのような値に設定されても構わないが、本変形例では、ハートビートデータパケット3000の送信先NAPTでの後述するハートビート切れ検出時間より短い時間間隔に設定されるものとする。この場合、ハートビートデータパケット3000の定期送信は、ハートビート切れ検出時間より短い時間間隔で行われる。また、この待機時間を示す値が、NAPT140-iに予め設定されていてもよく、システムの起動時にユーザによって設定されてもよい。
【0146】
障害検出処理部280は、以上の処理(ステップ2901乃至2904)を、当該障害検出処理部280を含むNAPT140-i自身が停止するまで繰り返す(ステップ2905)。
【0147】
次に上記(2)の処理(障害検出処理)について説明する。障害検出処理は、移動元アドレステーブル127に初めてデータ(移動元NAPTのエントリデータ)が登録されると開始され、当該テーブル127にデータが登録されている期間、繰り返し実行される。ここでは、移動元アドレステーブル127に登録されている全てのグローバルアドレスを対象に、同様の処理が繰り返される。
【0148】
以下、NAPT140-iの障害検出処理部280による障害検出処理(移動元NAPTの障害発生を検出する処理)の手順について、図31のフローチャートを参照して説明する。
【0149】
まず障害検出処理部280は、移動元アドレステーブル127に登録されている移動元グローバルアドレスのNAPT(つまり移動元NAPT)からのハートビートデータ(ハートビートデータパケット)を受信するか、ハートビートデータを受信しなくてもハートビート切れ検出時間が経過するまで待機する(ステップ3101)。ここで、ハートビート切れ検出時間は、ハートビートデータの受信がないために移動元NAPTで障害が発生したと判定するまでに必要な時間に設定される。このハートビート切れ検出時間を示す値が、NAPT140-iに予め設定されていてもよく、システムの起動時にユーザによって設定されてもよい。
【0150】
障害検出処理部280は、上記ステップ3101での待機の後、ハートビートデータを受信したかを判定する(ステップ3102)。もし、ステップ3102の判定がYESであるならば、即ちハートビート切れ検出時間内にハートビートデータを受信したならば、障害検出処理部280は再びステップ3101の待機処理を実行する。ステップ3101及び3102は、移動元アドレステーブル127から全てのエントリデータ(移動元NAPTのグローバルアドレス情報を含むエントリデータ)が削除されるまで繰り返し実行される(ステップ3103)。
【0151】
これに対し、ステップ3102の判定がNOであるならば、即ちハートビート切れ検出時間待機してもハートビートデータを受信しなかったならば、障害検出処理部280は、移動元NAPTの障害発生によるハートビート切れを検出したものと判断する。すると障害検出処理部280は、ハートビート切れが検出された(つまり障害発生が検出された)移動元NAPTの処理の引き継ぎを次のように行う。
【0152】
まず障害検出処理部280はアドレス・ポート変換データ移動手段として機能して、移動元アドレステーブル127の全エントリを対象に、ハートビート切れが検出された移動元NAPTのグローバルアドレス(IPアドレス)を含むエントリ(目的エントリ)であるかを判定し、目的エントリであるならば、当該目的エントリのデータ(アドレス・ポート変換データ)をアドレス・ポート変換テーブル128の空きエントリに移動する処理(ステップ3104及び3105)を繰り返す(ステップ3106)。即ち障害検出処理部280は、移動元アドレステーブル127の全エントリデータのうち、ハートビート切れが検出された移動元NAPTのグローバルアドレス(IPアドレス)を含むエントリデータをアドレス・ポート変換テーブル128に追加すると共に、当該追加されたエントリデータを移動元アドレステーブル127から削除する。
【0153】
図32は、この移動元アドレステーブル127からアドレス・ポート変換テーブル128へのエントリデータの移動を説明するための図である。まず、ハートビート切れが検出された移動元NAPTのグローバルアドレス(IPアドレス)が“172.29.1.102”であるものとする。図32の例では、このアドレス“172.29.1.102”をグローバルアドレス情報に含むエントリ3201が移動元アドレステーブル127に存在する。この場合、移動元アドレステーブル127のエントリ3201のデータが、図32において矢印3202で示されるように、アドレス・ポート変換テーブル128のエントリ(空きエントリ)3203に移動される。つまり、移動元アドレステーブル127のエントリ3201のデータがアドレス・ポート変換テーブル128のエントリ3203に追加されると共に、当該移動元アドレステーブル127のエントリ3201のデータが削除される。
【0154】
障害検出処理部280は、移動元アドレステーブル127の全エントリを対象に上述の処理を実行すると(ステップ3106)、ハートビート切れが検出された移動元NAPTのグローバルアドレス(IPアドレス)がターゲットIPアドレス及び送信元IPアドレスに設定されたG−ARPパケット(図25参照)を作成する(ステップ3107)。障害検出処理部280は、作成されたG−ARPパケットを通信データ送信部125に送る。通信データ送信部125は、このG−ARPパケットをLAN21を介してブロードキャストする。これにより障害検出処理部280を含むNAPT14-2は、ハートビート切れが検出された移動元NAPTのグローバルアドレスを引き継ぐことができる。
【0155】
なお、本発明は、上記実施形態又はその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態及びその変形例では、プライベートアドレスを使用するゲストOS(仮想マシン)が動作可能なハードウェア(上の仮想マシンモニタ)は2台である。しかし本発明は、ハードウェア(上の仮想マシンモニタ)が3台以上の仮想マシンシステムにも上記実施形態と同様に適用できる。
【0156】
また、上記実施形態及びその変形例は、仮想マシンシステム(仮想計算機システム)を前提としている。しかし本発明は、プライベートアドレスを使用するマシンが実マシン(物理計算機)であり、当該実マシンがハードウェア(上で動作するネットワークアドレス・ポート変換機構)間を移動されて再配置可能な計算機システム(実計算機システム)にも同様に適用できる。
【0157】
また、上記実施形態又はその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態又はその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【0158】
【図1】本発明の一実施形態に係る仮想マシンシステムの構成を示すブロック図。
【図2】同実施形態におけるゲストOSの移動前後の通信シーケンスを示すシーケンスチャート。
【図3】図2の通信シーケンスにおいてゲストOSの移動前に当該ゲストOSの通信相手からNAPT(ネットワークアドレス・ポート変換機構)に送信される当該ゲストOS宛ての通信データ及び当該NAPTから当該ゲストOSに送信される通信データを対応付けて示す図。
【図4】図2の通信シーケンスにおいてゲストOSの移動前に当該ゲストOSから送信される通信相手宛ての通信データ及びNAPTから通信相手に送信される通信データを対応付けて示す図。
【図5】図2の通信シーケンスにおいてゲストOSの移動時に移動元の仮想マシンモニタ上のNAPT(移動元NAPT)から移動先の仮想マシンモニタ上のNAPT(移動先NAPT)に送信されるアドレス・ポート変換データの一例を示す図。
【図6】図2の通信シーケンスにおいてゲストOSの移動後に当該ゲストOSの通信相手から移動元NAPTに送信される当該ゲストOS宛ての通信データ及び当該移動元NAPTから移動先NAPTに中継される当該ゲストOS宛ての通信データを対応付けて示す図。
【図7】図2の通信シーケンスにおいてゲストOSの移動後に移動元NAPTから移動先NAPTに中継される当該ゲストOS宛ての通信データ及び当該移動先NAPTから当該ゲストOSに送信される通信データを対応付けて示す図。
【図8】図2の通信シーケンスにおいてゲストOSの移動後に当該ゲストOSから送信される通信相手宛ての通信データ及び移動先NAPTから通信相手に送信される通信データを対応付けて示す図。
【図9】図1に示される仮想マシンモニタの構成を示すブロック図。
【図10】図9に示される示される移動先アドレステーブルのデータ構造例を示す図。
【図11】図9に示される示される移動元アドレステーブルのデータ構造例を示す図。
【図12】図9に示される示されるアドレス・ポート変換テーブルのデータ構造例を示す図。
【図13】図9に示されるゲストOS状態受信部の動作手順を示すフローチャート。
【図14】ゲストOS状態受信部によって作成される移動停止データの一例を示す図。
【図15】図9に示される通信データ判定部の動作手順を示すフローチャート。
【図16】アドレス・ポート変換データを移動元アドレステーブルに追加する動作を説明するための図。
【図17】移動停止データに基づいて移動先アドレステーブルからエントリデータを削除する動作を説明するための図。
【図18】ゲストOSの通信相手から移動元NAPTに送信される当該ゲストOS宛ての通信データを、当該移動元NAPTから移動先NAPTに中継される当該ゲストOS宛ての通信データに変換する動作を説明するための図。
【図19】ゲストOSの通信相手からNAPTに送信される当該ゲストOS宛ての通信データを、当該NAPTから当該ゲストOSに送信される通信データに変換する動作を説明するための図。
【図20】ゲストOSから送信される通信相手宛ての通信データを、NAPTから通信相手に送信される通信データに変換する動作を説明するための図。
【図21】ゲストOSから送信される通信相手宛ての通信データを、移動先NAPTから通信相手に送信される通信データに変換する動作を説明するための図。
【図22】移動元NAPTから移動先NAPTに中継されたゲストOS宛ての通信データを、当該移動先NAPTから当該ゲストOSに送信される通信データに変換する動作を説明するための図。
【図23】同実施形態の変形例に係る仮想マシンシステムの構成を示すブロック図。
【図24】同変形例における移動元NAPTの障害発生前後の通信シーケンスを示すシーケンスチャート。
【図25】図24の通信シーケンスにおいて移動先NAPTによる移動元NAPTの障害発生の検出時に移動先NAPTから送信されるGratuitous ARP(G−ARP)の一例を示す図。
【図26】図24の通信シーケンスにおいてG−ARPの送信後にゲストOSの通信相手から送信される当該ゲストOS宛の通信データ及び移動先NAPTから当該ゲストOSに送信される通信データを対応付けて示す図。
【図27】図24の通信シーケンスにおいてG−ARPの送信後にゲストOSから送信される通信相手宛ての通信データ及び移動先NAPTから通信相手に送信される通信データを対応付けて示す図。
【図28】図23に示される仮想マシンモニタの構成を示すブロック図。
【図29】図28に示される障害検出処理部によるハートビートデータ定期送信処理の手順を示すフローチャート。
【図30】ハートビートデータを作成する動作を説明するための図。
【図31】図28に示される障害検出処理部による障害検出処理の手順を示すフローチャート。
【図32】ハートビート切れが検出された移動元NAPTのグローバルアドレスを含む移動元アドレステーブルのエントリデータをアドレス・ポート変換テーブルに移動する動作を説明するための図。
【符号の説明】
【0159】
11-1,11-2,11-i…ハードウェア、12-1,12-1,12-i…仮想マシンモニタ、13-1,13-1,13-i…仮想ネットワーク(プライベートネットワーク)、14-1,14-2,14-i,140-1,140-2,140-i…NAPT(ネットワークアドレス・ポート変換機構)、15…仮想マシン、16…ゲストOS、21…LAN(グローバルネットワーク)、24…通信相手、121…I/O制御部、122…ゲストOS制御部、123…ゲストOS状態受信部、124…通信データ判定部、125…通信データ送信部、126…移動先アドレステーブル、127…移動元アドレステーブル、128…アドレス・ポート変換テーブル、129…ルーティングテーブル、280…障害検出処理部。

【特許請求の範囲】
【請求項1】
プライベートアドレスを使用するマシンが接続可能な第1のプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第1のネットワークアドレス・ポート変換機構と、前記マシンが接続可能な第2のプライベートネットワークと前記グローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための第2のネットワークアドレス・ポート変換機構とを備えた計算機システムにおいて、前記マシンと通信を行う前記グローバルネットワークに接続された通信相手及び前記マシンの間で授受される通信データを制御する通信データ制御方法であって、
前記マシンが前記第1のネットワークアドレス・ポート変換機構側から前記第2のネットワークアドレス・ポート変換機構側に移動されたことを、前記第2のネットワークアドレス・ポート変換機構が検出するステップと、
前記マシンの前記第2のネットワークアドレス・ポート変換機構側への移動の検出に応じて、前記第1のネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データであって、前記第1のネットワークアドレス・ポート変換機構が有する第1の記憶手段に格納されている、当該移動が検出された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられるアドレス・ポート変換データを、前記第2のネットワークアドレス・ポート変換機構が取得して自身が有する第2の記憶手段に格納することにより、当該アドレス・ポート変換データを前記第1のネットワークアドレス・ポート変換機構と共有するステップと、
前記通信相手から前記グローバルネットワークを介して前記第1のネットワークアドレス・ポート変換機構に送信された、前記第2のネットワークアドレス・ポート変換機構側に移動された前記マシン宛ての、前記第1のネットワークアドレス・ポート変換機構のグローバルアドレスを宛先ネットワークアドレスとして含む通信データを、前記第1のネットワークアドレス・ポート変換機構が受信した場合、前記第1のネットワークアドレス・ポート変換機構が、当該受信された通信データの前記宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記第2のネットワークアドレス・ポート変換機構のグローバルアドレスに変換して、当該宛先ネットワークアドレスが変換された通信データを前記第2のネットワークアドレス・ポート変換機構に転送するステップと、
前記第2のネットワークアドレス・ポート変換機構に転送された前記通信データを対象に、当該第2のネットワークアドレス・ポート変換機構が、前記第2の記憶手段に格納されている、前記第1のネットワークアドレス・ポート変換機構と共有する前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換して、当該ネットワークアドレス及びポート番号が変換された通信データを前記移動されたマシンに前記第2のプライベートネットワークを介して送信するステップと
を具備することを特徴とする通信データ制御方法。
【請求項2】
前記マシンの前記第1のネットワークアドレス・ポート変換機構側から前記第2のネットワークアドレス・ポート変換機構側への移動に応じて、前記第1の記憶手段に格納されている、当該移動される前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられる前記アドレス・ポート変換データを、前記第1のネットワークアドレス・ポート変換機構が前記第2のネットワークアドレス・ポート変換機構に通知するステップを更に具備し、
前記検出するステップにおいて前記第2のネットワークアドレス・ポート変換機構は、前記第1のネットワークアドレス・ポート変換機構からの前記アドレス・ポート変換データの通知を受け取ることにより、前記第1のネットワークアドレス・ポート変換機構から前記第2のネットワークアドレス・ポート変換機構への前記マシンの移動を検出する
ことを特徴とする請求項1記載の通信データ制御方法。
【請求項3】
前記第2のネットワークアドレス・ポート変換機構側へ移動された前記マシンから前記第2のプライベートネットワークを介して前記第2のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データを前記第2のネットワークアドレス・ポート変換機構が受信した場合、当該受信された通信データを対象に、当該第2のネットワークアドレス・ポート変換機構が、前記第2の記憶手段に格納されている、前記第1のネットワークアドレス・ポート変換機構と共有する前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換して、当該ネットワークアドレス及びポート番号が変換された前記通信相手宛ての通信データを前記グローバルネットワークを介して前記通信相手に直接送信するステップを更に具備することを特徴とする請求項2記載の通信データ制御方法。
【請求項4】
前記マシンが前記第1のネットワークアドレス・ポート変換機構側から前記第2のネットワークアドレス・ポート変換機構側に移動された際に、前記第1のネットワークアドレス・ポート変換機構が、前記第1の記憶手段に格納されている移動先アドレステーブルに、前記移動されたマシンのプライベートアドレスと前記移動されたマシンの移動先である前記第2のネットワークアドレス・ポート変換機構のグローバルアドレスとを対応付けて追加するステップを更に具備し、
前記第1のネットワークアドレス・ポート変換機構から前記第2のネットワークアドレス・ポート変換機構に通知される前記アドレス・ポート変換データは、前記移動されるマシンが使用するプライベートアドレス及びポート番号から構成されるプライベートアドレス情報と、前記移動されるマシンの移動元である前記第1のネットワークアドレス・ポート変換機構のグローバルアドレス及び前記第1のネットワークアドレス・ポート変換機構によって前記移動されるマシンに割り当てられているポート番号から構成されるグローバルアドレス情報とを含み、
前記転送するステップにおいて前記第1のネットワークアドレス・ポート変換機構は、前記通信相手から前記第1のネットワークアドレス・ポート変換機構に送信された、前記移動されたマシン宛ての通信データの前記宛先ネットワークアドレスを、前記第1の記憶手段に格納されている前記移動先テーブルに基づいて、前記第1のネットワークアドレス・ポート変換機構のグローバルアドレスから前記第2のネットワークアドレス・ポート変換機構のグローバルアドレスに変換し、
前記第2のネットワークアドレス・ポート変換機構は、前記第1のネットワークアドレス・ポート変換機構から前記第2のネットワークアドレス・ポート変換機構に前記アドレス・ポート変換データが通知された場合に、前記共有するステップにおいて、当該通知されたアドレス・ポート変換データを、前記第2の記憶手段に格納されている移動元アドレステーブルに追加し、
前記移動されたマシンから前記第2のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データは送信元ネットワークアドレス及び送信元ポート番号として前記移動されたマシンのプライベートアドレス及びポート番号を含み、
前記直接送信するステップにおいて前記第2のネットワークアドレス・ポート変換機構は、前記移動されたマシンから前記前記第2のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データの前記送信元ネットワークアドレス及び送信元ポート番号を、前記第2の記憶手段に格納されている前記移動元アドレステーブルに基づいて、前記移動されたマシンの前記プライベートアドレス及びポート番号から前記第1のネットワークアドレス・ポート変換機構のグローバルアドレス及び前記第1のネットワークアドレス・ポート変換機構によって前記移動されたマシンに割り当てられているポート番号に変換する
ことを特徴とする請求項3記載の通信データ制御方法。
【請求項5】
前記通信相手から前記グローバルネットワークを介して前記第1のネットワークアドレス・ポート変換機構に送信された前記マシン宛ての通信データを前記第1のネットワークアドレス・ポート変換機構が受信した場合、前記第1のネットワークアドレス・ポート変換機構が、当該受信された前記マシン宛ての通信データの送信元ネットワークアドレスに一致するプライベートアドレスが、前記第1の記憶手段に格納されている前記移動先アドレステーブルに存在するかを判定する第1の判定ステップと、
前記一致するプライベートアドレスが存在しないと前記第1の判定ステップで判定された場合、前記第1のネットワークアドレス・ポート変換機構が、前記受信された前記マシン宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記第1の記憶手段に格納されているアドレス・ポート変換データに基づいて当該マシンの使用するプライベートアドレス及びポート番号に変換して、当該宛先ネットワークアドレス及びポート番号が変換された前記マシン宛ての通信データを、当該マシンに前記第1のプライベートネットワークを介して送信するステップと、
前記マシンから前記第2のネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データを前記第2のネットワークアドレス・ポート変換機構が受信した場合、前記第2のネットワークアドレス・ポート変換機構が、当該受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが、前記第2の記憶手段に存在するかを判定する第2の判定ステップと、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在すると前記第2の判定ステップで判定された場合、前記第2のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号を、前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データに格納されているグローバルアドレス情報を構成するグローバルアドレス及びポート番号に変換して、当該送信元ネットワークアドレス及びポート番号が変換された通信データを、前記グローバルネットワークを介して前記通信相手に送信するステップと、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在しないと前記第2の判定ステップで判定された場合、前記第2のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが前記第2の記憶手段に格納されている前記移動元アドレステーブルに存在するかを判定する第3の判定ステップと、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが存在しないと前記第3の判定ステップで判定された場合、前記第2のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの宛先元ネットワークアドレス及びポート番号に一致するグローバルアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在するかを判定する第4の判定ステップと、
前記一致するグローバルアドレス情報を含むアドレス・ポート変換データが存在すると前記第4の判定ステップで判定された場合、前記第2のネットワークアドレス・ポート変換機構が、前記受信された前記通信相手宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記一致するグローバルアドレス情報を含む前記アドレス・ポート変換データに格納されているプライベートアドレス情報を構成するプライベートアドレス及びポート番号に変換して、当該宛先ネットワークアドレス及びポート番号が変換された通信データを、前記グローバルネットワークを介して前記通信相手に送信するステップと、
を更に具備し、
前記一致するプライベートアドレスが存在すると前記第1の判定ステップで判定された場合、前記第1のネットワークアドレス・ポート変換機構が前記転送するステップを実行し、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが存在すると前記第3の判定ステップで判定された場合、前記第2のネットワークアドレス・ポート変換機構が前記直接送信するステップを実行する
ことを特徴とする請求項4記載の通信データ制御方法。
【請求項6】
前記移動されたマシンの移動先である前記第2のネットワークアドレス・ポート変換機構が前記移動されたマシンの移動元である前記第1のネットワークアドレス・ポート変換機構の障害発生の有無を定期的に確認するステップと、
前記第1のネットワークアドレス・ポート変換機構の障害発生が確認された場合、前記第2のネットワークアドレス・ポート変換機構が、前記第2の記憶手段に格納されている前記移動元アドレステーブルに存在する、前記第1のネットワークアドレス・ポート変換機構のグローバルアドレスを含むアドレス・ポート変換データを、自身の管理するアドレス・ポート変換データを保持するのに用いられる前記第2の記憶手段に格納されているアドレス・ポート変換テーブルに移動するステップと、
前記第1のネットワークアドレス・ポート変換機構の障害発生が確認された場合、前記第2のネットワークアドレス・ポート変換機構が、前記第1のネットワークアドレス・ポート変換機構のグローバルアドレスを引き継ぐための特別のアドレス応答プロトコル要求をブロードキャストで前記グローバルネットワークに送信するステップと
を更に具備することを特徴とする請求項4又は請求項5記載の通信データ制御方法。
【請求項7】
プライベートアドレスを使用するマシンが接続可能なプライベートネットワークとグローバルネットワークとを接続し、ネットワークアドレス及びポート番号を変換するための、前記グローバルネットワークを介して相互に通信可能な複数のネットワークアドレス・ポート変換機構を備えた計算機システムにおいて、
前記複数のネットワークアドレス・ポート変換機構の各々は、
前記プライベートネットワークに接続されているマシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられ、前記ネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データを格納する記憶手段と、
前記マシンが前記ネットワークアドレス・ポート変換機構側に他のネットワークアドレス・ポート変換機構側から移動されたことを検出する検出手段と、
前記検出手段による前記マシンの移動の検出に応じて、当該移動が検出された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられるアドレス・ポート変換データであって、前記移動が検出された前記マシンの移動元である前記他のネットワークアドレス・ポート変換機構によって管理されるアドレス・ポート変換データを前記記憶手段に追加するアドレス・ポート変換データ追加手段と、
前記マシンと通信を行う前記グローバルネットワークに接続された通信相手から前記グローバルネットワークを介して前記ネットワークアドレス・ポート変換機構に送信された、当該ネットワークアドレス・ポート変換機構から他のネットワークアドレス・ポート変換機構側に移動された前記マシン宛ての、前記第1のネットワークアドレス・ポート変換機構のグローバルアドレスを宛先ネットワークアドレスとして含む通信データが、前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された通信データの前記宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記他のネットワークアドレス・ポート変換機構のグローバルアドレスに変換する変換手段と、
前記変換手段によって前記宛先ネットワークアドレスが変換された通信データを、前記グローバルネットワークを介して前記前記第2のネットワークアドレス・ポート変換機構に転送する通信データ送信手段とを具備し、
前記変換手段は、当該変換手段を含む前記ネットワークアドレス・ポート変換機構に対して前記移動元である他のネットワークアドレス・ポート変換機構から前記通信データが転送された場合、当該転送された通信データを対象に、前記記憶手段に追加されている前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換し、
前記通信データ送信手段は、前記変換手段によってネットワークアドレス及びポート番号が変換された前記通信データを、前記移動されたマシンに前記プライベートネットワークを介して送信する
ことを特徴とする計算機システム。
【請求項8】
前記マシンの前記ネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構側への移動に応じて、前記記憶手段に格納されている、当該移動された前記マシンに関する通信データを対象とするネットワークアドレス及びポート番号の変換に用いられる前記アドレス・ポート変換データを前記マシンの移動先の前記他のネットワークアドレス・ポート変換機構に通知するためのアドレス・ポート変換データパケットを作成するアドレス・ポート変換データパケット作成手段を更に具備し、
前記通信データ送信手段は、前記作成されたアドレス・ポート変換データパケットを前記マシンの移動先の前記他のネットワークアドレス・ポート変換機構に送信し、
前記検出手段は、前記マシンの移動元の前記他のネットワークアドレス・ポート変換機構の前記通信データ送信手段から送信された前記アドレス・ポート変換データパケットが前記ネットワークアドレス・ポート変換機構で受信された場合、当該アドレス・ポート変換データパケットに基づいて前記マシンの移動を検出する
ことを特徴とする請求項7記載の計算機システム。
【請求項9】
前記変換手段は、前記移動元の前記他のネットワークアドレス・ポート変換機構から移動された前記マシンから前記プライベートネットワークを介して送信された前記通信相手宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記通信相手宛ての通信データを対象に、前記記憶手段に追加されている前記アドレス・ポート変換データに基づいて、ネットワークアドレス及びポート番号を変換し、
前記通信データ送信手段は、前記ネットワークアドレス及びポート番号が変換された前記通信相手宛ての通信データを、前記グローバルネットワークを介して前記通信相手に直接送信する
ことを特徴とする請求項8記載の計算機システム。
【請求項10】
前記記憶手段に格納される、移動されたマシンのプライベートアドレスと当該移動されたマシンの移動先のネットワークアドレス・ポート変換機構のグローバルアドレスとを対応付けて保持するための移動先アドレステーブルと、
前記記憶手段に格納される、前記ネットワークアドレス・ポート変換機構側に他のネットワークアドレス・ポート変換機構側から移動されたマシンが使用するプライベートアドレス及びポート番号から構成されるプライベートアドレス情報と、前記移動されたマシンの移動元の前記他のネットワークアドレス・ポート変換機構のグローバルアドレス及び当該移動元の前記他のネットワークアドレス・ポート変換機構によって前記移動されたマシンに割り当てられているポート番号から構成されるグローバルアドレス情報とを対応付けて保持する移動元アドレステーブルと、
前記マシンが前記ネットワークアドレス・ポート変換機構から他のネットワークアドレス・ポート変換機構側に移動された際に、前記移動先アドレステーブルに、前記移動されたマシンのプライベートアドレスと前記移動されたマシンの移動先の前記他のネットワークアドレス・ポート変換機構のグローバルアドレスとを対応付けて追加する移動先アドレステーブルデータ追加手段とを更に具備し、
前記アドレス・ポート変換データパケットによって通知される前記アドレス・ポート変換データは、前記移動されるマシンが使用するプライベートアドレス及びポート番号から構成されるプライベートアドレス情報と、前記移動されるマシンの移動元となるネットワークアドレス・ポート変換機構のグローバルアドレス及び当該移動元のネットワークアドレス・ポート変換機構によって前記移動されるマシンに割り当てられているポート番号から構成されるグローバルアドレス情報とを含み、
前記通信相手から送信される、前記移動されたマシン宛ての通信データは、宛先ネットワークアドレスとして前記移動されたマシンの前記移動元のネットワークアドレス・ポート変換機構のグローバルアドレスを含み、
前記ネットワークアドレス・ポート変換機構側に移動されたマシンから当該ネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データは送信元ネットワークアドレス及び送信元ポート番号として前記移動されたマシンのプライベートアドレス及びポート番号を含み、
前記アドレス・ポート変換データ追加手段は、前記マシンの移動元である前記他のネットワークアドレス・ポート変換機構の前記通信データ送信手段から送信された前記アドレス・ポート変換データパケットが前記ネットワークアドレス・ポート変換機構で受信された場合、当該アドレス・ポート変換データパケットによって通知されたアドレス・ポート変換データを前記移動元アドレステーブルに追加し、
前記変換手段は、
前記通信相手から送信された、前記ネットワークアドレス・ポート変換機構側から他のネットワークアドレス・ポート変換機構に移動された前記マシン宛ての通信データの前記宛先ネットワークアドレスを、前記記憶手段に格納されている前記移動先テーブルに基づいて、前記マシンの移動元である前記ネットワークアドレス・ポート変換機構自身のグローバルアドレスから前記マシンの移動先である前記他のネットワークアドレス・ポート変換機構のグローバルアドレスに変換し、
前記ネットワークアドレス・ポート変換機構側に移動されたマシンから当該ネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記通信相手宛ての通信データの前記送信元ネットワークアドレス及び送信元ポート番号を、前記移動元アドレステーブルに基づいて、前記移動されたマシンの前記プライベートアドレス及びポート番号から移動元の前記他のネットワークアドレス・ポート変換機構のグローバルアドレス及び前記移動元の前記他のネットワークアドレス・ポート変換機構によって前記移動されたマシンに割り当てられているポート番号に変換する
ことを特徴とする請求項9記載の計算機システム。
【請求項11】
前記通信相手から前記グローバルネットワークを介して前記ネットワークアドレス・ポート変換機構に送信された前記マシン宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記マシン宛ての通信データの送信元ネットワークアドレスに一致するプライベートアドレスが、前記移動先アドレステーブルに存在するかを判定する第1の判定手段と、
前記マシンから前記ネットワークアドレス・ポート変換機構に送信された前記通信相手宛ての通信データが前記ネットワークアドレス・ポート変換機構で受信された場合、当該受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが、前記記憶手段に存在するかを判定する第2の判定手段と、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在しないと前記第2の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号に一致するプライベートアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在するかを判定する第3の判定手段と、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが存在しないと前記第3の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの宛先ネットワークアドレス及びポート番号に一致するグローバルアドレス情報を含むアドレス・ポート変換データが当該移動元アドレステーブルに存在するかを判定する第4の判定手段とを更に具備し、
前記変換手段は、
前記一致するプライベートアドレスが存在すると前記第1の判定手段によって判定された場合、前記受信された前記マシン宛ての通信データの宛先ネットワークアドレスを、前記移動されたマシンの移動先である前記他のネットワークアドレス・ポート変換機構のグローバルアドレスに変換し、
前記一致するプライベートアドレスが存在しないと前記第1の判定手段によって判定された場合、前記受信された前記マシン宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記記憶手段に格納されているアドレス・ポート変換データに基づいて当該マシンの使用するプライベートアドレス及びポート番号に変換し、
前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データが存在すると前記第2の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号を、前記一致するプライベートアドレス情報を含む前記アドレス・ポート変換データに格納されているグローバルアドレス情報を構成するグローバルアドレス及びポート番号に変換し、
前記一致するプライベートアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在すると前記第3の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの送信元ネットワークアドレス及びポート番号を、前記移動元アドレステーブルに存在する前記一致するプライベートアドレス情報を含むアドレス・ポート変換データに格納されているグローバルアドレス情報を構成するグローバルアドレス及びポート番号に変換し、
前記一致するグローバルアドレス情報を含むアドレス・ポート変換データが前記移動元アドレステーブルに存在すると前記第4の判定手段によって判定された場合、前記受信された前記通信相手宛ての通信データの宛先ネットワークアドレス及びポート番号を、前記前記移動元アドレステーブルに存在する前記一致するグローバルアドレス情報を含む前記アドレス・ポート変換データに格納されているプライベートアドレス情報を構成するプライベートアドレス及びポート番号に変換する
ことを特徴とする請求項10記載の計算機システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate


【公開番号】特開2010−114665(P2010−114665A)
【公開日】平成22年5月20日(2010.5.20)
【国際特許分類】
【出願番号】特願2008−285580(P2008−285580)
【出願日】平成20年11月6日(2008.11.6)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】