(57)【要約】【課題】複数のＬＰＡＲが単一の通信回線を共有し、外部と効率良く通信することは難しい。【解決手段】情報処理装置１００内の各ＬＰＡＲはＩＰアドレスを共有するが、ＭＡＣアドレスはそれぞれ異なる。代表ＬＰＡＲが他のＬＰＡＲ１〜ＬＰＡＲｎに代わって外部との通信を行う。ドライバ６０は、仮想インタフェース６２と物理インタフェース６４をもち、複数のＬＰＡＲ間の内部通信は、仮想インタフェース６２により行い、外部との通信は物理インタフェース６４により行う。代表ＬＰＡＲのプロトコルスタック４０は、外部から受信したパケットが他のＬＰＡＲ１〜ＬＰＡＲｎ宛のものである場合に、宛先ＭＡＣアドレスを宛先ＬＰＡＲのＭＡＣアドレスに置き換え、宛先ＭＡＣアドレスが置換されたパケットを仮想インタフェース６２に与える。仮想インタフェース６２は、プロトコルスタック４０から与えられたパケットを宛先ＬＰＡＲに転送する。【選択図】図１
2007110240.tif 000002
【特許請求の範囲】
【請求項１】
計算資源が論理的に分割されて割り当てられた複数の論理区画を有し、各論理区画においてオペレーティングシステムが独立に動作可能に構成された情報処理装置であって、
外部のネットワークから一意に識別されるネットワークアドレスを共有する前記複数の論理区画の内、少なくとも１つの論理区画が他の論理区画に代わって外部との通信を行い、
前記少なくとも１つの論理区画は、
外部との通信に利用可能な通信ポートを前記他の論理区画用に割り当てるポート割り当て部と、
前記他の論理区画用に割り当てられた通信ポートで受信されたパケットを前記他の論理区画に中継する中継部とを含むことを特徴とする情報処理装置。
【請求項２】
各論理区画には個別の物理アドレスが割り当てられており、
前記少なくとも１つの論理区画は、
前記他の論理区画用に割り当てられた通信ポートで受信されたパケットの宛先物理アドレスを前記他の論理区画の個別の物理アドレスに置き換えるアドレス置換部をさらに含み、
前記中継部は、宛先物理アドレスが置換された前記パケットを前記他の論理区画に送信することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記少なくとも１つの論理区画は、前記他の論理区画から外部に送信すべきパケットを受け取り、前記アドレス置換部は、前記他の論理区画から中継されたパケットの送信元物理アドレスを前記少なくとも１つの論理区画の物理アドレスに置き換え、前記中継部は、送信元物理アドレスが置換された前記パケットを外部に送信することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
それぞれ個別の物理アドレスを割り当てられた前記複数の論理区画を相互接続し、各論理区画が行う通信を制御するネットワークドライバをさらに含み、
前記ネットワークドライバは、前記他の論理区画から受け取ったパケットの宛先物理アドレスがいずれの論理区画の物理アドレスとも一致しない場合に、そのパケットを外部に送信すべきパケットとして、前記少なくとも１つの論理区画に送信することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記ネットワークドライバは、前記他の論理区画から受け取ったパケットの宛先物理アドレスがいずれかの論理区画の物理アドレスである場合には、そのパケットを宛先物理アドレスに対応する論理区画に送信することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記ネットワークドライバは、前記他の論理区画から受け取った外部に送信すべきパケットがブロードキャストまたはマルチキャストされるべきパケットである場合には、そのパケットを送信元の論理区画以外のすべての論理区画に送信するとともに、前記少なくとも１つの論理区画に送信することを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
前記ネットワークドライバは、前記複数の論理区画を相互接続する仮想的なネットワークインタフェースと、前記少なくとも１つの論理区画を外部ネットワークに接続する物理的なネットワークインタフェースとを有することを特徴とする請求項４から６のいずれかに記載の情報処理装置。
【請求項８】
複数の計算機が相互接続してクラスタをなす情報処理装置であって、
外部のネットワークから一意に識別されるネットワークアドレスを共有する前記複数の計算機の内、少なくとも１つの計算機が他の計算機に代わって外部との通信を行い、
前記少なくとも１つの計算機は、
外部との通信に利用可能な通信ポートを前記他の計算機用に割り当てるポート割り当て部と、
前記他の計算機用に割り当てられた通信ポートで受信されたパケットを前記他の計算機に中継する中継部とを含むことを特徴とする情報処理装置。
【請求項９】
計算資源が論理的に分割されて割り当てられた複数の論理区画を有し、各論理区画においてオペレーティングシステムが独立に動作可能に構成された情報処理装置における通信制御用のプログラムであって、
外部のネットワークから一意に識別されるネットワークアドレスを共有する前記複数の論理区画の内、少なくとも１つの論理区画が他の論理区画に代わって外部との通信を行う場合に、
前記少なくとも１つの論理区画に、
外部との通信に利用可能な通信ポートを前記他の論理区画用に割り当てる機能と、
前記他の論理区画用に割り当てられた通信ポートで受信されたパケットを前記他の論理区画に中継する機能とを実現させることを特徴とするプログラム。
【請求項１０】
計算資源が論理的に分割されて割り当てられた複数の論理区画を有し、各論理区画においてオペレーティングシステムが独立に動作可能に構成された情報処理装置における通信制御方法であって、
外部のネットワークから一意に識別されるネットワークアドレスを共有する前記複数の論理区画の内、少なくとも１つの論理区画が他の論理区画に代わって外部との通信を行う場合に、前記少なくとも１つの論理区画が外部との通信に利用可能な通信ポートを前記他の論理区画用に割り当て、前記他の論理区画用に割り当てられた通信ポートで外部から受信されるパケットを前記他の論理区画に中継することを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の論理区画の各々が外部と通信するための情報処理装置および通信制御方法に関する。
【背景技術】
【０００２】
一つの計算機システムのＣＰＵ、メモリ、Ｉ／Ｏデバイスなどの計算資源を複数の論理区画（ロジカルパーティション）に分割し、各論理区画上にオペレーティングシステムを独立に動作させる技術が知られている。このように論理区画化された計算機システムでは、通常、論理区画の制御を行うハイパーバイザと呼ばれる基本プログラムが動作する。ハイパーバイザは、各論理区画に計算資源の割り当て制御を行い、各論理区画を一つの仮想的な計算機として動作させる。
【０００３】
この論理区画化（ロジカルパーティショニング）技術は、一台の計算機で複数の異なるオペレーティングシステムを動作させるマルチオペレーティングシステムを実現する目的や、一台の計算機を仮想的な並列計算機に見立て、並列処理のアプリケーションを実行する目的などに利用される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このような複数の論理区画を有するシステムにおいて、各論理区画が同時に外部と通信する場合、家庭などでは単一回線契約であることが多く、外部ネットワークと接続するためのグローバルなＩＰアドレスは１つしか取得できない。このような場合、１つのＩＰアドレスを複数の論理区画間で共有する仕組みが必要となる。通常、ローカルネットワーク内の複数の計算機が外部と通信するためには、外部ネットワークとの接続箇所にルータが設置され、ルータにおいてＮＡＴ（Network Address Translation）などにより、グローバルＩＰアドレスとプライベートＩＰアドレスの変換が行われる。
【０００５】
ＴＣＰやＵＤＰのパケットのヘッダには、送信元と宛先のＩＰアドレスおよびポート番号を組み込んだチェックサムが格納される。ＮＡＴは、パケットのＩＰアドレスやポート番号を変更するとき、このチェックサムを更新する必要があり、処理のオーバーヘッドが大きい。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その目的は、複数の論理区画の各々が効率良く外部と通信することのできる通信技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様の情報処理装置は、計算資源が論理的に分割されて割り当てられた複数の論理区画を有し、各論理区画においてオペレーティングシステムが独立に動作可能に構成された情報処理装置であって、外部のネットワークから一意に識別されるネットワークアドレスを共有する前記複数の論理区画の内、少なくとも１つの論理区画が他の論理区画に代わって外部との通信を行い、前記少なくとも１つの論理区画は、外部との通信に利用可能な通信ポートを前記他の論理区画用に割り当てるポート割り当て部と、前記他の論理区画用に割り当てられた通信ポートで受信されたパケットを前記他の論理区画に中継する中継部とを含む。
【０００８】
「外部のネットワークから一意に識別されるネットワークアドレス」とは、たとえば、ＩＰネットワークの場合、外部ネットワークから当該情報処理装置と通信するために必要となるＩＰアドレスである。「受信されたパケットを他の論理区画に中継する」とは、仮想的なネットワークドライバによる送信、スイッチングハブなどの通信機器を使った送信、ドライバによるメモリ間コピー、論理区画間の特別な通信機構を用いた通信などがあり、何らかの方法でパケットが中継される限り、特に中継手段を限定しない。
【０００９】
本発明の別の態様もまた、情報処理装置である。この装置は、複数の計算機が相互接続してクラスタをなす情報処理装置であって、外部のネットワークから一意に識別されるネットワークアドレスを共有する前記複数の計算機の内、少なくとも１つの計算機が他の計算機に代わって外部との通信を行い、前記少なくとも１つの計算機は、外部との通信に利用可能な通信ポートを前記他の計算機用に割り当てるポート割り当て部と、前記他の計算機用に割り当てられた通信ポートで受信されたパケットを前記他の計算機に中継する中継部とを含む。
【００１０】
本発明のさらに別の態様は、通信制御方法である。この方法は、計算資源が論理的に分割されて割り当てられた複数の論理区画を有し、各論理区画においてオペレーティングシステムが独立に動作可能に構成された情報処理装置における通信制御方法であって、外部のネットワークから一意に識別されるネットワークアドレスを共有する前記複数の論理区画の内、少なくとも１つの論理区画が他の論理区画に代わって外部との通信を行う場合に、前記少なくとも１つの論理区画が外部との通信に利用可能な通信ポートを前記他の論理区画用に割り当て、前記他の論理区画用に割り当てられた通信ポートで外部から受信されるパケットを前記他の論理区画に中継する。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、複数の論理区画の各々が外部との通信を効率良く行うことができる。
【発明を実施するための最良の形態】
【００１３】
図１は、実施の形態に係る情報処理装置１００の構成図である。
【００１４】
情報処理装置１００は、プロセッサ、メモリ、Ｉ／Ｏデバイスなどの計算資源を有する一台の計算機である。情報処理装置１００は、複数の論理区画（以下、「ＬＰＡＲ（logical partition）」という）１０ａ、１０ｂ、…、１０ｎ、３０に分割され、各ＬＰＡＲ１０ａ〜１０ｎ、３０に計算資源が割り当てられる。各ＬＰＡＲ上では割り当てられた計算資源を利用してオペレーティングシステムが互いに独立に動作する。
【００１５】
各ＬＰＡＲ１０ａ〜１０ｎ、３０には、各ＬＰＡＲ１０ａ〜１０ｎ、３０を一意に識別するためのＭＡＣ（Media Access Control）アドレスが個別に割り当てられているが、ＩＰ（Internet Protocol）アドレスはすべてのＬＰＡＲ１０ａ〜１０ｎ、３０の間で共有される。これら複数のＬＰＡＲ１０ａ〜１０ｎ、３０の内、１つのＬＰＡＲ３０（以下、「代表ＬＰＡＲ」という）が、他のＬＰＡＲ１０ａ〜１０ｎ（以下、「ＬＰＡＲ１」〜「ＬＰＡＲｎ」という）に代わって外部との通信を行う。
【００１６】
ＬＰＡＲ１、ＬＰＡＲ２、…、ＬＰＡＲｎに割り当てられたＭＡＣアドレスは、それぞれＭＡＣ１、ＭＡＣ２、…、ＭＡＣｎであり、代表ＬＰＡＲに割り当てられたＭＡＣアドレスは、ＭＡＣ０である。
【００１７】
ＬＰＡＲ１、ＬＰＡＲ２、…、ＬＰＡＲｎおよび代表ＬＰＡＲは、仮想ネットワークインタフェース（以下、単に「仮想インタフェース」という）６２を介して互いに接続しており、個別に割り当てられたＭＡＣアドレスを送信元アドレスおよび宛先アドレスに指定することで仮想的に通信が可能である。このＬＰＡＲ間の通信のために、一例として、仮想イーサネット（イーサネットは商標または登録商標）が用いられる。
【００１８】
ＬＰＡＲ１、ＬＰＡＲ２、…、ＬＰＡＲｎは、共有ＩＰアドレスとしてグローバルなＩＰアドレスをもつことはあっても、外部との通信を直接行うことはできない。代表ＬＰＡＲは、グローバルＩＰアドレスまたはプライベートＩＰアドレスをもち、物理ネットワークインタフェース（以下、単に「物理インタフェース」という）６４を介して、外部ネットワークと直接通信することができる。
【００１９】
ＬＰＡＲ１、ＬＰＡＲ２、…、ＬＰＡＲｎが外部ネットワークと通信する場合、まず、代表ＬＰＡＲが、ＰＰＰｏＥ（PPP over Ethernet）などのプロトコルによりＩＰアドレスを取得し、このＩＰアドレスを他のＬＰＡＲ１０ａ〜１０ｎと共有する。すべてのＬＰＡＲ１０ａ〜１０ｎ、３０の間で共有されるＩＰアドレスをＩＰ０とする。
【００２０】
ＬＰＡＲ１、ＬＰＡＲ２、…、ＬＰＡＲｎ、および代表ＬＰＡＲは、それぞれネットワークプロトコルスタック（以下、単に「プロトコルスタック」という）２０ａ、２０ｂ、２０ｎ、４０をもち、ネットワークプロトコルにしたがってＭＡＣアドレスやＩＰアドレスを宛先アドレスに指定したパケットを生成し、ネットワークドライバ（以下、単に「ドライバ」と呼ぶ）６０に渡す。
【００２１】
ＬＰＡＲ１〜ＬＰＡＲｎのプロトコルスタック２０ａ〜２０ｎは、イーサネット（ＭＡＣ）、ＩＰ、ＴＣＰ／ＵＤＰなどのプロトコル処理を行う。
【００２２】
代表ＬＰＡＲ３０のプロトコルスタック４０は、イーサネット（ＭＡＣ）、ＰＰＰ(Point to Point Protocol)またはＰＰＰｏＥ、ＩＰもしくはＩＰｖ６あるいはＩＰｓｅｃ（Security Architecture for Internet Protocol）、ＴＣＰ／ＵＤＰなどのプロトコル処理、および他のＬＰＡＲ１〜ＬＰＡＲｎにパケットを振り分ける処理などを行う。
【００２３】
ドライバ６０は、仮想インタフェース６２と物理インタフェース６４をもち、ＬＰＡＲ１、ＬＰＡＲ２、…、ＬＰＡＲｎ、および代表ＬＰＡＲ間の内部通信は、仮想インタフェース６２により行い、外部との通信は物理インタフェース６４により行う。
【００２４】
仮想インタフェース６２は、複数のＬＰＡＲ１〜ＬＰＡＲｎからの通信要求を調停する。各ＬＰＡＲ１〜ＬＰＡＲｎのプロトコルスタック２０ａ〜２０ｎが他のいずれかのＬＰＡＲのＭＡＣアドレス（ＭＡＣ０〜ＭＡＣｎ）を宛先とするパケットを仮想インタフェース６２に与えた場合、仮想インタフェース６２は、そのパケットを宛先ＬＰＡＲに転送する。
【００２５】
各ＬＰＡＲ１〜ＬＰＡＲｎのプロトコルスタック２０ａ〜２０ｎが他のいずれかのＬＰＡＲのＭＡＣアドレス（ＭＡＣ０〜ＭＡＣｎ）以外のＭＡＣアドレスを宛先とするパケットを仮想インタフェース６２に与えた場合、そのパケットは外部ネットワークに送信するべきものであるから、仮想インタフェース６２は、そのパケットを代表ＬＰＡＲに転送する。
【００２６】
物理インタフェース６４は、代表ＬＰＡＲのプロトコルスタック４０から外部に送信するパケットを受け取り、ネットワークデバイス、またはスイッチングハブなどの機能をもったネットワークデバイスにＤＭＡ（Direct Memory Access）転送により送信する。また、物理インタフェース６４は、ネットワークデバイスから割り込みを受けて、代表ＬＰＡＲ宛のパケットをネットワークデバイスからＤＭＡ転送により受信し、受信パケットを代表ＬＰＡＲのプロトコルスタック４０に渡す。
【００２７】
代表ＬＰＡＲのプロトコルスタック４０のパケット振り分け部は、外部から受信したパケットが他のＬＰＡＲ１〜ＬＰＡＲｎ宛のものである場合に、宛先ＭＡＣアドレスを宛先ＬＰＡＲのＭＡＣアドレスに置き換える。プロトコルスタック４０は、宛先ＭＡＣアドレスが置換されたパケットを宛先ＬＰＡＲに送信するために仮想インタフェース６２に与え、仮想インタフェース６２は、プロトコルスタック４０から与えられたパケットを宛先ＬＰＡＲに転送する。
【００２８】
ドライバ６０は、ＬＰＡＲ１〜ＬＰＡＲｎおよび代表ＬＰＡＲに計算資源を割り当てる制御を行うハイパーバイザと呼ばれる基本システム内に設けられ、常時動作するものであってもよく、あるいは、ドライバ６０は、１つのＬＰＡＲとして計算資源を割り当てられてもよい。後者の場合、ドライバ６０は、他のＬＰＡＲ１〜ＬＰＡＲｎおよび代表ＬＰＡＲにおけるオペレーティングシステムと同様に、時分割で動作する１つのプロセスとなる。また、ドライバ６０は、代表ＬＰＡＲ内に設けられてもよい。
【００２９】
図２は、代表ＬＰＡＲのプロトコルスタック４０の構成を説明する図である。ここでは、通常のネットワークプロトコル処理の機能構成は省略し、本実施の形態に特有の機能構成を示す。
【００３０】
代表ＬＰＡＲのプロトコルスタック４０は、ＬＰＡＲ１〜ＬＰＡＲｎに代わって外部との通信を行うために、利用可能な通信ポートをＬＰＡＲ１〜ＬＰＡＲｎ用に割り当てる。ポート割り当て部４２は、ＬＰＡＲ１〜ＬＰＡＲｎのプロトコルスタック２０ａ〜２０ｎからポートの割り当て要求を受け取り、ポート割り当てテーブル４４を調べて、ポート割り当ての許否をＬＰＡＲ１〜ＬＰＡＲｎのプロトコルスタック２０ａ〜２０ｎに返答する。
【００３１】
ポート割り当てテーブル４４は、ＬＰＡＲ１〜ＬＰＡＲｎ用に割り当てたポート番号をＬＰＡＲ１〜ＬＰＡＲｎのＭＡＣアドレスに対応づけて格納する。
【００３２】
パケット中継部４８は、仮想インタフェース６２経由でＬＰＡＲ１〜ＬＰＡＲｎから受信した外部に送信すべきパケットを物理インタフェース６４経由で外部に送信し、また、物理インタフェース６４経由で外部から受信したＬＰＡＲ１〜ＬＰＡＲｎ宛のパケットを仮想インタフェース６２経由でＬＰＡＲ１〜ＬＰＡＲｎに送信することにより、ＬＰＡＲ１〜ＬＰＡＲｎが外部とやりとりするパケットを中継する。
【００３３】
ＬＰＡＲ１〜ＬＰＡＲｎが外部とやりとりするパケットを中継するためには、パケットの送信元ＭＡＣアドレスや宛先ＭＡＣアドレスを置換する処理が必要となる。アドレス置換部４６は、パケット中継部４８から中継すべきパケットを受け取り、パケットの送信元ＭＡＣアドレスまたは宛先ＭＡＣアドレスを置換する。
【００３４】
アドレス置換部４６は、ＬＰＡＲ１〜ＬＰＡＲｎが外部に送信するパケットをパケット中継部４８から受け取ると、パケットの送信元ＭＡＣアドレスをＬＰＡＲ１〜ＬＰＡＲｎのＭＡＣアドレスから代表ＬＰＡＲのＭＡＣアドレスに置換し、パケット中継部４８に渡す。パケット中継部４８は、送信元ＭＡＣアドレスが代表ＬＰＡＲのＭＡＣアドレスに置換されたパケットを物理インタフェース６４に渡し、外部に送信する。
【００３５】
アドレス置換部４６は、ある通信ポートにおいて外部から受信されたパケットをパケット中継部４８から受け取ると、ポート割り当てテーブル４４を参照して、そのポートを割り当てられたＬＰＡＲ（「割り当て先ＬＰＡＲ」という）のＭＡＣアドレスを取得する。アドレス置換部４６は、パケット中継部４８から受け取った受信パケットの宛先ＭＡＣアドレスを、ポート割り当てテーブル４４から取得した割り当て先ＬＰＡＲのＭＡＣアドレスに置換し、パケット中継部４８に渡す。パケット中継部４８は、宛先ＭＡＣアドレスが割り当て先ＬＰＡＲのＭＡＣアドレスに置換されたパケットを仮想インタフェース６２に渡し、割り当て先ＬＰＡＲに転送する。
【００３６】
図３は、ＬＰＡＲ１〜ｎと代表ＬＰＡＲの間で行われるポート予約手順を説明する図である。ここでは、２つのＬＰＡＲ１、ＬＰＡＲ２と代表ＬＰＡＲの間でポート割り当てが行われる例を示す。
【００３７】
ＬＰＡＲ１、ＬＰＡＲ２のプロトコルスタック２０ａ、２０ｂは、それぞれポート問い合わせ部２２ａ、２２ｂをもち、代表ＬＰＡＲのプロトコルスタック４０のポート割り当て部４２に対して、ポートの割り当て要求を行い、ポート割り当て部４２は、ＬＰＡＲ１、ＬＰＡＲ２からのポート割り当て要求に対してポート割り当ての許否に関する応答をポート問い合わせ部２２ａ、２２ｂに返す。
【００３８】
ＬＰＡＲ１、ＬＰＡＲ２と代表ＬＰＡＲは、ポートの割り当て要求とその応答を仮想インタフェース６２を介して行う。ＬＰＡＲはそれぞれ個別のＭＡＣアドレスをもつため、イーサネットフレームを用いて要求メッセージと応答メッセージのやりとりをすることができる。
【００３９】
ポートの割り当てには、既存のポート予約プロトコルであるＮＡＴ−ＰＭＰ（NAT Port Mapping Protocol）（http://files.dns-sd.org/draft-cheshire-nat-pmp.txt）を利用することができる。ＮＡＴを利用する際、ＮＡＴ側で動的に生成されるＩＰアドレスとポートのマッピング情報以外は、通常、ユーザが手動でプライベートマシンのＩＰアドレスとポートを設定する必要がある。たとえば、パッシブオープンの場合は、ＮＡＴを実行するルータは、どのポートでプライベートＩＰアドレスのパケットを待機してよいかを知ることができないことから、待機すべきポートとプライベートＩＰアドレスのマッピング情報をユーザが手動でルータに設定する必要がある。ＮＡＴ−ＰＭＰはこの設定を自動化するためのプロトコルであり、プライベートＩＰアドレスと待機すべきポート番号のマッピング情報を端末からルータにあらかじめ通知し、ポートを予約することが可能となる。
【００４０】
本実施の形態では、パッシブオープンの場合に限らず、アクティブオープンの場合も含めて、ＬＰＡＲ１〜ＬＰＡＲｎが代表ＬＰＡＲにポートの割り当て要求を行い、代表ＬＰＡＲからその応答を受け取るためにＮＡＴ−ＰＭＰを利用する。
【００４１】
図４（ａ）は、本実施の形態のポート予約で使用されるパケットのデータフォーマットを示す。「タイプ」、「プロトコル」、「ポート番号」、「結果」、「イベントＩＤ」、「ＭＡＣアドレス」の各フィールドをもつ。
【００４２】
パケットのタイプは、ＲＥＱＵＥＳＴ（要求）、ＲＥＰＬＹ（応答）、ＲＥＮＥＷ（更新）、ＤＥＬＥＴＥ（消去）のいずれかである。以下、各タイプのパケットの使い方を説明する。
【００４３】
（１）ＲＥＱＵＥＳＴパケット
ＬＰＡＲ１〜ＬＰＡＲｎのポート問い合わせ部２２は、ＲＥＱＵＥＳＴパケットにより、ポートの割り当てを代表ＬＰＡＲに要求する。ＲＥＱＵＥＳＴパケットの「プロトコル」フィールドには、使用するプロトコル、「ポート番号」フィールドには、そのプロトコルで使用するポート番号を格納する。このポート番号は、上位アプリケーションまたは上位プロトコルによってあらかじめ使用可能なポート番号が決まっている場合に指定し、任意のポート番号が割り当てられてもよい場合は、指定しない。「ＭＡＣアドレス」フィールドには、要求元のＬＰＡＲのＭＡＣアドレスを格納する。
【００４４】
代表ＬＰＡＲのポート割り当て部４２は、ＲＥＱＵＥＳＴパケットを受け取ると、「プロトコル」フィールドに書かれたプロトコルで「ポート番号」フィールドに書かれたポート番号を使用できるかどうかを判定し、使用できる場合には、ポート番号を「ＭＡＣアドレス」フィールドに書かれた要求元のＬＰＡＲのＭＡＣアドレスと対応づけてポート割り当てテーブル４４に記録する。ＲＥＱＵＥＳＴパケットにポート番号が指定されていない場合は、ポート割り当て部４２は、利用可能なポート番号を選択して割り当てる。
【００４５】
図４（ｂ）は、ポート割り当てテーブル４４の一例を示す。ポート番号にＭＡＣアドレスが対応づけられており、この例では、５０００番ポートにはＭＡＣ１が対応づけられ、５００２番ポートにはＭＡＣ２が対応づけられている。
【００４６】
ポート割り当てテーブル４４を参照することにより、代表ＬＰＡＲは、プロトコルとポート番号の組がどのＬＰＡＲによって予約されているかを知ることができ、予約されているＬＰＡＲのＭＡＣアドレスにパケットを中継することが可能となる。
【００４７】
「イベントＩＤ」フィールドには、ポート予約の要求元のＬＰＡＲに関連付けられたイベントフラグで、ＲＥＱＵＥＳＴパケットを代表ＬＰＡＲに送った場合に、ＲＥＰＬＹパケットを代表ＬＰＡＲから受信する際のスレッドの起床用に利用される。
【００４８】
（２）ＲＥＰＬＹパケット
代表ＬＰＡＲは、ＲＥＰＬＹパケットにより、ポートの割り当て要求に対する応答をＬＰＡＲ１〜ＬＰＡＲｎに返す。ＲＥＰＬＹパケットの「結果」フィールドには、ポート割り当ての許否が格納される。ポート割り当ての結果がＯＫであれば、ＲＥＰＬＹパケットの「ポート番号」フィールドには、「プロトコル」フィールドに指定したプロトコルで使用可能なポート番号が格納されている。
【００４９】
ポート割り当ての結果がＮＧであれば、ＲＥＱＵＥＳＴパケットで指定したポート番号を現在使用中のＬＰＡＲのＭＡＣアドレスが、ＲＥＰＬＹパケットの「ＭＡＣアドレス」フィールドに格納されている。
【００５０】
ＲＥＰＬＹパケットの「ＭＡＣアドレス」フィールドは次の目的で使用することができる。あるＬＰＡＲがあるポートにおいてループバックの通信を行っている場合、通常はその通信は、ＬＰＡＲ内で閉じたものとなるが、ＲＥＰＬＹパケットの「ＭＡＣアドレス」フィールドを利用すると、他のＬＰＡＲからそのポートにループバックで接続することが可能となる。
【００５１】
たとえば、ＬＰＡＲ１においてＴＣＰの３０００番ポートで待機していたとする。ＬＰＡＲ１からであれば、そのＴＣＰの３０００番ポートにループバックで接続することができるが、ＬＰＡＲ２からＴＣＰの３０００番ポートにループバックさせようとしてもＬＰＡＲ２上ではそのポートは開いていないので、通常は接続することができない。しかし、本実施の形態では、このような場合に、ＬＰＡＲ２は、上記のＲＥＰＬＹパケットの「ＭＡＣアドレス」フィールドから、ループバックのポートを使用中のＬＰＡＲのＭＡＣアドレスを取得し、ループバックの通信をしているＬＰＡＲにパケットを送信することができる。
【００５２】
（３）ＲＥＮＥＷパケット
ポートの予約はたとえば３０秒などの時間だけ有効であり、代表ＬＰＡＲは、有効時間を経過した後、予約されたプロトコルとポート番号の組を取り消す。要求元のＬＰＡＲは、ポートの予約状態を維持するために、ＲＥＮＥＷパケットを代表ＬＰＡＲに送る。
【００５３】
（４）ＤＥＬＥＴＥパケット
ポート予約したＬＰＡＲにおいてソケットのクローズなどのイベントが起こり、予約したポートが不要となった場合、ＬＰＡＲは、ＤＥＬＥＴＥパケットを代表ＬＰＡＲに送ることで、そのプロトコルとポート番号の組の予約をタイムアウトを待たずに明示的に解放することができる。
【００５４】
なお、予約できるポートの決定権は代表ＬＰＡＲにあり、代表ＬＰＡＲは、自分が使用可能なプロトコルとポート番号の組を使用可能状態にして要求元ＬＰＡＲにそのプロトコルとポート番号の組が使用可能であることを通知する。したがって、代表ＬＰＡＲ自身がプロトコルスタックを使用してアプリケーションのパケットを送信する場合は通常通り、使用可能なローカルポートを取得するだけでよく、ポートの割り当て要求などの処理は不要である。
【００５５】
図５は、代表ＬＰＡＲが、ＬＰＡＲ１〜ＬＰＡＲｎから外部へ送信するパケットを中継する手順を説明する図である。ここでは、２つのＬＰＡＲ１、２のみを図示している。
【００５６】
ＬＰＡＲ１のプロトコルスタック２０ａは、仮想インタフェース６２内でＬＰＡＲ１から参照可能なメモリ空間に送信パケットを生成する。ここでは、２つの送信パケット５２ａ、５４ａを例示している。
【００５７】
第１の送信パケット５２ａの送信元ＭＡＣアドレスはＭＡＣ１、宛先ＭＡＣアドレスはＭＡＣ２であり、ＬＰＡＲ１からＬＰＡＲ２に送信すべきパケットである。一方、第２の送信パケット５４ａの送信元ＭＡＣアドレスはＭＡＣ１、宛先ＭＡＣアドレスはＭＡＣ０〜ＭＡＣｎのいずれでもないＭＡＣｍであり、ＬＰＡＲ１から外部に送信すべきパケットである。
【００５８】
仮想インタフェース６２は、仮想イーサネットなどを利用し、ＭＡＣアドレスを参照して、ＬＰＡＲ１からの送信パケットをＬＰＡＲ間で転送する。第１の送信パケット５２ａの宛先ＭＡＣアドレスはＭＡＣ２であるから、このパケット５２ａは、仮想インタフェース６２内でＬＰＡＲ２から参照可能なメモリ空間に転送され（符号５２ｂ）、ＬＰＡＲ２のプロトコルスタック２０ｂで受信される。
【００５９】
一方、第２の送信パケット５４ａの宛先ＭＡＣアドレスは、当該情報処理装置１００内のいずれのＬＰＡＲのＭＡＣアドレスとも一致しないから、仮想インタフェース６２は、このパケット５４ａを外部に送信すべきパケットであると判定し、代表ＬＰＡＲから参照可能なメモリ空間に転送し（符号７２）、代表ＬＰＡＲのプロトコルスタック４０において受信される。
【００６０】
代表ＬＰＡＲのプロトコルスタック４０において、アドレス置換部４６の機能により、受信されたパケット７２の送信元ＭＡＣアドレスはＭＡＣ１からＭＡＣ０に付け替えられ、パケット中継部４８の機能により、送信パケット７４として物理インタフェース６４のメモリ空間に渡される。物理インタフェース６４は、この送信パケット７４を外部ネットワークに送信する。
【００６１】
なお、ＬＰＡＲ１〜ＬＰＡＲｎからの送信パケットがブロードキャストまたはマルチキャストの場合は、そのパケットを仮想インタフェース６２を介して、送信元のＬＰＡＲ以外の各ＬＰＡＲに送信するとともに、代表ＬＰＡＲがそのパケットを中継して物理インタフェース６４を介して外部に送信する。ブロードキャストまたはマルチキャストの定義からすれば、そのパケットは、外部に送信されるのは当然のこと、当該情報処理装置１００内の他のＬＰＡＲにも送信されるべきだからである。ブロードキャストまたはマルチキャストの通信を行う場合、ＭＡＣアドレスとして特定のアドレスを指定するため、ブロードキャストまたはマルチキャストであるかどうかは、パケットのヘッダに格納された宛先アドレスから判定することができる。
【００６２】
図６は、代表ＬＰＡＲが、外部から受信されるパケットをＬＰＡＲ１〜ＬＰＡＲｎに中継する手順を説明する図である。
【００６３】
物理インタフェース６４において外部からパケット７６が受信されたとする。このパケット７６の送信元ＭＡＣアドレスはＭＡＣｍであり、宛先ＭＡＣアドレスは代表ＬＰＡＲのＭＡＣアドレスのＭＡＣ０である。物理インタフェース６４は、代表ＬＰＡＲのプロトコルスタック４０にこの受信パケット７６を渡す。
【００６４】
代表ＬＰＡＲのプロトコルスタック４０において、受信パケットがプロトコル処理され、ポート番号が取得される。プロトコルスタック４０は、ポート割り当てテーブル４４を参照して、パケットが受信されたポートがＬＰＡＲ１〜ＬＰＡＲｎのいずれか割り当てられたものであるかどうかを調べる。プロトコルスタック４０は、受信ポートがいずれのＬＰＡＲ１〜ＬＰＡＲｎにも割り当てられたものでない場合は、自分自身へのパケットとして処理するが、受信ポートがいずれかのＬＰＡＲ１〜ＬＰＡＲｎに割り当てられたものである場合は、アドレス置換部４６の機能により、宛先ＭＡＣアドレスの付け替えが行われる。
【００６５】
今、ポート割り当てテーブル４４において、受信ポートがＬＰＡＲ１のＭＡＣ１に対応づけられていたとする。アドレス置換部４６は、受信パケット７６の宛先ＭＡＣアドレスをＭＡＣ０からＭＡＣ１に付け替える。パケット中継部４８は、宛先ＭＡＣアドレスがＭＡＣ１に付け替えられたパケット７８をＬＰＡＲ１に送信すべく仮想インタフェース６２のメモリ空間に渡す。
【００６６】
仮想インタフェース６２は、送信パケット７８をＬＰＡＲ１から参照可能なメモリ空間に転送し（符号５６ａ）、ＬＰＡＲ１のプロトコルスタック２０ａにおいて受信される。
【００６７】
なお、外部ネットワークから未知の通信要求があった場合、たとえば、ＴＣＰで相手側から接続される場合などは、代表ＬＰＡＲが処理すればよく、他のＬＰＡＲへの中継は不要である。また、ポートの概念がないプロトコルによる通信要求があった場合、たとえばＩＣＭＰ（Internet Control Message Protocol）で外部ネットワークからｐｉｎｇコマンドを受け、応答する場合なども、代表ＬＰＡＲが処理して応答すればよい。また、ポート概念はあるが、ＩＰｓｅｃによってそのポートが暗号化されている場合も、代表ＬＰＡＲが処理すればよい。代表ＬＰＡＲがネットワークプロトコルの最小限の実装しかもたない場合は、全実装が行われている他のＬＰＡＲが代表して処理してもよい。
【００６８】
また、ＡＲＰ（Address Resolution Protocol）の場合も、ポートの概念がないが、代表ＬＰＡＲがＡＲＰリクエストに応答し、ＡＲＰリプライは、代表ＬＰＡＲからＬＰＡＲ１〜ＬＰＡＲｎに転送することで、すべてのＬＰＡＲ１〜ＬＰＡＲｎが受信するように構成すればよい。同様に、代表ＬＰＡＲがＩＣＭＰのエコー（ECHO）に応答し、エコーリプライはすべてのＬＰＡＲ１〜ＬＰＡＲｎが受信するように構成する。
【００６９】
以上述べたように、本実施の形態の情報処理装置１００によれば、複数のＬＰＡＲがＩＰアドレスを共有し、代表ＬＰＡＲが中継する形で外部との通信を行うことができる。ルータを前提とせず、ＮＡＴ機能を用いないため、簡便に効率の良い通信が可能となる。各ＬＰＡＲが代表ＬＰＡＲの通信ポートを使い分ける、いわば「ポートのプラグ＆プレイ」の機能により、複数のＬＰＡＲ間で単一の通信回線を共有することが可能となり、ネットワーク資源を有効に活用することができる。
【００７０】
ＮＡＴはＩＰアドレスを付け替えたときに、チェックサムを再計算し、ＩＰヘッダに格納されたチェックサムの値を変更しなければならないため、処理が重いが、本実施の形態の情報処理装置１００では、ＭＡＣアドレスの付け替えだけでよく、ＮＡＴのような複雑な処理が不要である。また、ＩＰｓｅｃを用いたセキュアな通信の場合、ＩＰパケットは暗号化されているため、ＮＡＴ側ではチェックサムの値を変更することができない。それに対して、本実施の形態では、ＮＡＴ機能を前提としないため、ＩＰｓｅｃを用いたセキュアな通信にも問題なく対応することができる。
【００７１】
また、仮想イーサネットなどの既存のネットワーク機能を利用して、情報処理装置１００内のＬＰＡＲ間通信を行うため、ＬＰＡＲ間通信のために独自の通信機能を設計する必要がなく、実装面で有利である。また、仮想的なネットワークで複数のＬＰＡＲを相互接続するため、スイッチングハブなどの通信機器を使用する場合に比べて、システムを安価に構成することができる。
【００７２】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【００７３】
上記の実施の形態では、一つの計算機システムを複数の論理区画に分割して、各論理区画においてオペレーティングシステムを独立に動作させたが、この論理区画化技術は、マルチプロセッサシステムにおいても適用可能である。いずれかのプロセッサにおいて動作するハイパーバイザがマルチプロセッサシステムのプロセッサ、メモリ、Ｉ／Ｏデバイスなどの計算資源を各論理区画に割り当て制御することで、同様に複数の論理区画を仮想的な計算機に見立てることができる。この場合、マルチプロセッサシステムにおける各プロセッサを各論理区画に１対１に割り当ててもよく、一つのプロセッサの資源を時分割で切り替えながら複数の論理区画に割り当ててもよい。後者の場合、マルチプロセッサシステムの物理的なプロセッサ数よりも多い論理区画を生成して実行することができる。また、複数のプロセッサユニットを一つのチップ内に集積してパッケージ化したマルチコアプロセッサを搭載した情報処理装置において、この論理区画化技術を適用してもよい。
【００７４】
上記の実施の形態では、情報処理装置１００内の１つのＬＰＡＲが外部と通信することができる場合を説明したが、２つ以上のグローバルＩＰアドレスが取得できる環境では、グローバルＩＰアドレスをもつ２つ以上のＬＰＡＲが代表して外部と通信を行い、他のＬＰＡＲはいずれかのグローバルＩＰアドレスを共有する構成であってもよい。
【００７５】
また、上記の説明では、仮想イーサネットを前提としてＬＰＡＲ間で仮想ネットワークドライバによってイーサネットフレームによる通信を可能としたが、ＬＰＡＲ間通信の手段はこれ以外の手段を用いてもよい。たとえば、ＬＰＡＲ間の通信機能を独自に設け、独自プロトコルによってＬＰＡＲ間でデータを転送するようにしてもよい。ＬＰＡＲ間通信を独自に設計する場合は、ＭＡＣアドレスに依存しない通信が可能であるから、複数のＬＰＡＲに異なるＭＡＣアドレスを割り当てる必要はなくなり、同一のＭＡＣアドレスでもかまわない。また、ＬＰＡＲ間の通信を行うために、ネットワークドライバが送信元のＬＰＡＲのメモリ空間から送信先のＬＰＡＲのメモリ空間に送信すべきデータをコピーしてもよい。あるいは、仮想イーサネットではなく、スイッチやハブなどの通信機器を用いて、物理層においてパケットの転送を行ってもよい。
【００７６】
また、上記の説明では、ＬＰＡＲ１〜ＬＰＡＲｎが外部と通信する際、いったん代表ＬＰＡＲにパケットを転送し、代表ＬＰＡＲが送信元ＭＡＣアドレスをつけかえて外部に送信したが、ＬＰＡＲ１〜ＬＰＡＲｎが送信元ＭＡＣアドレスを代表ＬＰＡＲのＭＡＣアドレスにつけかえ、自分自身で外部に送信するように構成してもよい。ただし、この場合でも、外部からパケットを受信するときは、代表ＬＰＡＲが代表して受信することになる。
【００７７】
また、複数の独立した計算機を相互接続した計算機クラスタに本発明を適用することもできる。この場合、複数の計算機はスイッチングハブなどの物理的な通信機器に接続されており、ＩＰアドレスは共有するが、ＭＡＣアドレスは異なる。複数の計算機の内、一台の計算機が他の計算機に代わって外部との通信を行うように構成することで、本実施の形態の複数のＬＰＡＲからなる情報処理装置１００と同様にＩＰアドレスを共有した状態で外部との通信が可能になる。このような計算機クラスタはサーバ技術として用いることができる。
【図面の簡単な説明】
【００７８】
【図１】実施の形態に係る情報処理装置の構成図である。
【図２】図１の代表ＬＰＡＲのプロトコルスタックの構成を説明する図である。
【図３】図１のＬＰＡＲ１〜ＬＰＡＲｎと代表ＬＰＡＲの間で行われるポート予約手順を説明する図である。
【図４】図４（ａ）は、本実施の形態のポート予約で使用されるパケットのデータフォーマットを示す図であり、図４（ｂ）は、ポート割り当てテーブルの一例を示す図である。
【図５】代表ＬＰＡＲが、ＬＰＡＲ１〜ＬＰＡＲｎから外部へ送信するパケットを中継する手順を説明する図である。
【図６】代表ＬＰＡＲが、外部から受信されるパケットをＬＰＡＲ１〜ＬＰＡＲｎに中継する手順を説明する図である。
【符号の説明】
【００７９】
１０  ＬＰＡＲ、  ２０  プロトコルスタック、  ２２  ポート問い合わせ部、  ３０  代表ＬＰＡＲ、  ４０  プロトコルスタック、  ４２  ポート割り当て部、  ４４  ポート割り当てテーブル、  ４６  アドレス置換部、  ４８  パケット中継部、  ６０  ドライバ、  ６２  仮想インタフェース、  ６４  物理インタフェース、  １００  情報処理装置。
【図１】
2007110240.tif 000003
【図２】
2007110240.tif 000004
【図３】
2007110240.tif 000005
【図４】
2007110240.tif 000006
【図５】
2007110240.tif 000007
【図６】
2007110240.tif 000008