(57)【特許請求の範囲】
【請求項１】
外部ネットワークに接続可能な情報処理装置であって、
オペレーティングシステム（ＯＳ）を有し、当該ＯＳ内のプロセス間通信を行なうループバックデバイスを制御するループバックデバイスドライバを有する複数のユニットと、
前記複数のユニットのうちの少なくとも一のユニットに設けられ、前記外部ネットワークに接続される外部ネットワークインタフェースと、
前記複数のユニットのそれぞれに設けられ、前記情報処理装置の内部ネットワークに接続される内部ネットワークインタフェースと、を有し、
前記内部ネットワークは、前記外部ネットワークの第１アドレス体系とは独立した、前記プロセス間通信の第２アドレス体系で構築され、
前記複数のユニットそれぞれの前記内部ネットワークインタフェースは、前記第２アドレス体系を用いて前記複数のユニット間の通信を行なうとともに、
前記ループバックデバイスドライバは、
前記ＯＳの処理対象パケットが自ユニット宛であるか他ユニット宛であるかを判定する判定部と、
前記判定部による判定結果に応じた処理に、前記処理対象パケットを振り分ける振分部と、を有する、情報処理装置。
【請求項２】
前記処理対象パケットが、自ユニットの前記ＯＳ内のプロセスからの第１パケットである場合、前記判定部は、前記第１パケットが自ユニット宛であるか他ユニット宛であるかを判定し、前記振分部は、前記判定部による判定結果に応じた処理に、前記第１パケットを振り分ける、請求項１に記載の情報処理装置。
【請求項３】
前記判定部によって前記第１パケットが自ユニット宛であると判定された場合、前記振分部は、前記第１パケットを自ユニット内の前記ＯＳでの受信処理に振り分ける、請求項２に記載の情報処理装置。
【請求項４】
前記判定部によって前記第１パケットが他ユニット宛であると判定された場合、前記振分部は、前記第１パケットを、送信デバイスによって他ユニットに送信すべく、前記送信デバイスを制御する送信デバイスドライバによる転送処理に振り分ける、請求項２または請求項３に記載の情報処理装置。
【請求項５】
前記処理対象パケットが、自ユニットの受信デバイスドライバによって他ユニットから受信された自ユニット宛の第２パケットである場合、前記判定部は、前記第２パケットについての判定を行なうことなく、前記振分部は、前記第２パケットを自ユニット内の前記ＯＳでの受信処理に振り分ける、請求項１〜請求項４のいずれか一項に記載の情報処理装置。
【請求項６】
外部ネットワークと、
前記外部ネットワークに接続可能で、前記外部ネットワークを介して端末と通信可能に接続される情報処理装置と、を備え、
前記情報処理装置は、
オペレーティングシステム（ＯＳ）を有し、当該ＯＳ内のプロセス間通信を行なうループバックデバイスを制御するループバックデバイスドライバを有する複数のユニットと、
前記複数のユニットのうちの少なくとも一のユニットに設けられ、前記外部ネットワークに接続される外部ネットワークインタフェースと、
前記複数のユニットのそれぞれに設けられ、前記情報処理装置の内部ネットワークに接続される内部ネットワークインタフェースと、を有し、
前記内部ネットワークは、前記外部ネットワークの第１アドレス体系とは独立した、前記プロセス間通信の第２アドレス体系で構築され、
前記複数のユニットそれぞれの前記内部ネットワークインタフェースは、前記第２アドレス体系を用いて前記複数のユニット間の通信を行なうとともに、
前記ループバックデバイスドライバは、
前記ＯＳの処理対象パケットが自ユニット宛であるか他ユニット宛であるかを判定する判定部と、
前記判定部による判定結果に応じた処理に、前記処理対象パケットを振り分ける振分部と、を有する、情報処理システム。
【請求項７】
外部ネットワークに接続可能な情報処理装置であって、
オペレーティングシステム（ＯＳ）を有し、当該ＯＳ内のプロセス間通信を行なうループバックデバイスを制御するループバックデバイスドライバを有する複数のユニットと、
前記複数のユニットのうちの少なくとも一のユニットに設けられ、前記外部ネットワークに接続される外部ネットワークインタフェースと、
前記複数のユニットのそれぞれに設けられ、前記情報処理装置の内部において前記外部ネットワークの第１アドレス体系とは独立した前記プロセス間通信の第２アドレス体系で構築された内部ネットワークに接続される内部ネットワークインタフェースと、を有する前記情報処理装置における前記ＯＳに、
前記内部ネットワークインタフェースによって、前記第２アドレス体系を用いて前記複数のユニット間の通信を行なうとともに、
前記ループバックデバイスドライバによって、前記ＯＳの処理対象パケットが自ユニット宛であるか他ユニット宛であるかの判定を行ない、
前記ループバックデバイスドライバによって、前記判定の結果に応じた処理に、前記処理対象パケットを振り分ける、
処理を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、及びプログラムに関する。
【背景技術】
【０００２】
一般に、サーバ装置やストレージ装置を含む情報処理装置では、内部の各種機能を複数のユニットに分割することで、保守性や可用性（冗長性）の向上が図られている。
上述のごとく分割された複数のユニットを連携させるべく複数のユニット間にイーサネット（Ethernet；登録商標）を導入すると、情報処理装置は、イーサネットを利用した様々なアプリケーションソフトウェアを利用することが可能になる。これにより、情報処理装置の生産性の向上を図ることもできる。
【０００３】
しかし、内部ネットワークとしてイーサネットを導入する場合、イーサネットのアドレス体系は、情報処理装置に繋がる外部ネットワークのアドレス体系と矛盾（衝突）しないようにする必要がある。そのために、外部ネットワークでのアドレス設定やアドレス変更に連携して内部ネットワークのアドレス体系を変更させる処理が発生する。このように内部ネットワークのアドレス体系を変更させる処理を行なっている期間中は、ユニット間の連携を行なうことが難しい。
【０００４】
ここで、図１７を参照しながら、内部ネットワークのアドレス体系と外部ネットワークのアドレス体系とが衝突する例について説明する。
図１７に示す例では、情報処理装置１００に、外部ネットワーク２００およびゲートウェイ３００を介して端末４００が通信可能に接続されている。また、情報処理装置１００には、例えば５つのユニット１０１〜１０５が備えられ、これらのユニット１０１〜１０５は、内部ネットワーク１０６を介して通信可能に接続されている。
【０００５】
ここで、外部ネットワーク２００は、情報処理装置１００を使用するユーザが管理するイーサネットである。情報処理装置１００は、イーサネットサービスを提供するインタフェースである。
また、情報処理装置１００の内部ネットワーク１０６は、情報処理装置１００内部のユニット１０１〜１０５間を結ぶイーサネットである。ユニット１０１〜１０５同士は、内部ネットワーク１０６を通して連携する。
【０００６】
各ユニット１０１〜１０５は、情報処理装置１００を構成する部品であり、情報処理装置１００の保守性や可用性（冗長性）を向上させるために、ある程度の機能ごとに分割されたものである。各ユニット１０１〜１０５には、イーサネットアプリケーションを使用するために汎用ＯＳが載せられている。そして、ユニット１０１には、外部ネットワーク２００に接続され外部の端末４００との通信を行なう外部ネットワークインタフェース１１０が備えられる。また、ユニット１０１には、内部ネットワーク１０６に接続され他のユニット１０２〜１０５との通信を行なう内部ネットワークインタフェース１１１が備えられる。同様に、ユニット１０２〜１０５には、それぞれ、内部ネットワーク１０６に接続されユニット１０１との通信を行なう内部ネットワークインタフェース１２１〜１５１が備えられる。なお、ユニット１０１〜１０５は、それぞれ、ユニット＃１〜＃５と表記される場合がある。
【０００７】
このとき、情報処理装置１００（外部ネットワークインタフェース１１０）には、外部ネットワーク２００用のＩＰ（Internet Protocol）アドレス192.168.1.1が割り振られている。また、端末４００には、ＩＰアドレス172.16.0.10が割り振られている。そして、情報処理装置１００内部の各ユニット１０１〜１０５（内部ネットワークインタフェース１１１〜１５１）には、それぞれ、内部ネットワーク１０６用のＩＰアドレス172.16.0.1〜172.16.0.5が割り振られているものとする。
【０００８】
このようにＩＰアドレスが割り振られている場合、ユニット１０１と外部の端末４００との間で通信を行なうことができなくなる。なぜならば、端末４００のＩＰアドレスが172.16.0.10であり、情報処理装置１００の内部ネットワーク１０６のアドレス体系に含まれているため、ユニット１０１から端末４００への送信を行なおうとしても、端末４００宛てのパケットが内部ネットワーク１０６に流れてしまうからである。
【０００９】
したがって、図１７に示すように、情報処理装置１００外部のアドレスと情報処理装置１００内部のアドレス体系との衝突が発生する場合、上述した通り、外部ネットワークのアドレスに連携して内部ネットワークのアドレス体系を変更させる処理が発生する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−４９６７６号公報
【特許文献２】特開２００９−１５１７４４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述したように、外部ネットワークのアドレスに連携して内部ネットワークのアドレス体系を変更させる処理が発生すると、その処理を行なっている期間中は、ユニット間の連携を行なうことが難しくなるという課題がある。
【００１２】
一つの側面で、本発明は、外部ネットワークに影響されない内部ネットワークを構築可能にすることを目的とする。
【課題を解決するための手段】
【００１３】
本件の情報処理装置は、外部ネットワークに接続可能であって、複数のユニットと、外部ネットワークインタフェースと、内部ネットワークインタフェースと、を有する。前記複数のユニットのそれぞれは、オペレーティングシステム（ＯＳ）を有するとともに、当該ＯＳ内のプロセス間通信を行なうループバックデバイスを制御するループバックデバイスドライバを有する。前記外部ネットワークインタフェースは、前記複数のユニットのうちの少なくとも一のユニットに設けられ、前記外部ネットワークに接続される。前記内部ネットワークインタフェースは、前記複数のユニットのそれぞれに設けられ、前記情報処理装置の内部ネットワークに接続される。前記内部ネットワークは、前記外部ネットワークの第１アドレス体系とは独立した、前記プロセス間通信の第２アドレス体系で構築される。前記複数のユニットそれぞれの前記内部ネットワークインタフェースは、前記第２アドレス体系を用いて前記複数のユニット間の通信を行なう。さらに、前記ループバックデバイスドライバは、判定部および振分部を有する。前記判定部は、前記ＯＳの処理対象パケットが自ユニット宛であるか他ユニット宛であるかを判定する。前記振分部は、前記判定部による判定結果に応じた処理に、前記処理対象パケットを振り分ける。
【発明の効果】
【００１４】
一実施形態によれば、外部ネットワークに影響されない内部ネットワークを構築することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態の情報処理装置を含む情報処理システムのハードウェア構成および機能構成を示すブロック図である。
【図２】図１に示す情報処理装置を構成する各ユニットのハードウェア構成および機能構成を示すブロック図である。
【図３】ループバックデバイスによるプロセス間通信を説明する図である。
【図４】ループバックデバイスによるプロセス間通信を説明する図である。
【図５】本実施形態の対比例におけるユニット間通信動作を説明する図である。
【図６】本実施形態の対比例におけるユニット間通信動作を説明する図である。
【図７】本実施形態の対比例におけるユニット間通信動作を説明する図である。
【図８】本実施形態の対比例におけるユニット間通信動作を説明する図である。
【図９】本実施形態の対比例におけるユニット間通信動作を説明する図である。
【図１０】本実施形態の対比例におけるユニット間通信動作を説明する図である。
【図１１】本実施形態の対比例におけるユニット間通信動作を説明する図である。
【図１２】本実施形態による処理の概要を説明する図である。
【図１３】本実施形態におけるユニット間通信手順（ループバックデバイスドライバの動作）を説明するフローチャートである。
【図１４】本実施形態におけるユニット間通信動作を説明する図である。
【図１５】本実施形態におけるユニット間通信動作を説明する図である。
【図１６】本実施形態におけるユニット間通信動作を説明する図である。
【図１７】内部ネットワークのアドレス体系と外部ネットワークのアドレス体系とが衝突する例を示す図である。
【発明を実施するための形態】
【００１６】
以下に、図面を参照し、本願の開示する情報処理装置、情報処理システム、及びプログラムの実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１７】
〔１〕本実施形態の情報処理装置を含む情報処理システムの構成
まず、図１を参照しながら、本実施形態の情報処理装置１０を含む情報処理システム１のハードウェア構成および機能構成について説明する。なお、図１は、そのハードウェア構成および機能構成を示すブロック図である。
【００１８】
図１に示す情報処理システム１では、情報処理装置１０に、外部ネットワーク２０およびゲートウェイ３０を介して端末（外部ユニット）４０が通信可能に接続されている。また、情報処理装置１０には、例えば５つのユニット１１−１〜１１−５が備えられ、これらのユニット１１−１〜１１−５は、内部ネットワーク１２を介して通信可能に接続されている。なお、ユニットを示す符号としては、複数のユニットのうちの一つを特定する必要があるときには符号１１−１〜１１−５を用い、任意のユニットを指すときには符号１１を用いる。また、情報処理装置１０は、例えば、サーバ装置や、統合ストレージ装置（unified storage）などを含むものとする。
【００１９】
本実施形態の情報処理装置１０は、外部ネットワーク２０に接続可能であり、後述するように、少なくとも、複数のユニット１１と外部ネットワークインタフェース２０ａと内部ネットワークインタフェース１２ａとを含んでいる。外部ネットワークインタフェース２０ａは、複数のユニット１１のうちの少なくとも一のユニット１１−１に設けられ、外部ネットワーク２０に接続される。また、内部ネットワークインタフェース１２ａは、各ユニット１１に設けられ、外部ネットワークインタフェース２０ａに接続された外部ネットワーク２０の第１アドレス体系とは独立した第２アドレス体系で構築された内部ネットワーク１２に接続される。そして、各ユニット１１の内部ネットワークインタフェース１２ａは、第２アドレス体系を用いて複数のユニット１１間の通信を行なう。なお、内部ネットワークインタフェース１２ａは、後述する汎用ＯＳ１１Ａ（図２参照）における通信アプリケーションプログラムによって実現されてもよい。
【００２０】
ここで、外部ネットワーク２０は、情報処理装置１０を使用するユーザが管理するイーサネットである。情報処理装置１０は、イーサネットサービスを提供するインタフェースである。
また、情報処理装置１０の内部ネットワーク１２は、情報処理装置１０内部のユニット１１間を結ぶイーサネットである。ユニット１１同士は、内部ネットワーク１２を通して連携する。
【００２１】
各ユニット１１は、情報処理装置１０を構成する部品であり、情報処理装置１０内部の各種機能を分割したもので、このように機能を複数のユニット１１に分割することで、保守性や可用性（冗長性）の向上が図られている。各ユニット１１には、イーサネットアプリケーションを使用するために汎用ＯＳ１１Ａが載せられている。また、各ユニット１１には、ＯＳ１１Ａ内のプロセス（アプリケーション）間通信を行なうループバックデバイス１４（図２参照）が仮想的に備えられている。また、ループバックデバイス１４には、当該ループバックデバイス１４を制御するループバックデバイスドライバ１４Ａ（図２参照）が含まれている。
【００２２】
複数のユニット１１のうちの一つであるユニット１１−１には、外部ネットワーク２０に接続され端末（外部ステップ）４０との通信を行なう外部ネットワークインタフェース２０ａが備えられる。また、ユニット１１−１には、内部ネットワーク１２に接続され他のユニット１１−２〜１１−５との通信を行なう内部ネットワークインタフェース１２ａが備えられる。同様に、ユニット１１−２〜１１−５には、それぞれ、内部ネットワーク１２に接続されユニット１１との通信を行なう内部ネットワークインタフェース１２ａが備えられる。なお、ユニット１１−１〜１１−５は、それぞれ、ユニット＃１〜＃５と表記される場合がある。
【００２３】
このとき、本実施形態の情報処理システム１においては、内部ネットワーク１２に、外部ネットワーク２０の第１アドレス体系（192.168.1.0/24）とは独立した第２アドレス体系が構築される。このため、本実施形態では、ループバックデバイス１４によるプロセス間通信のアドレス体系が、前記第２アドレス体系として用いられる。
【００２４】
ループバックデバイス１４を流れるパケットは、ループバックデバイス１４の特性上、当該パケットを使用するＯＳ１１Ａの外へ出ない。当該パケットは、例えば図３に示すように、１つのＯＳ１１Ａ内において２つのプロセス＃１，＃２間で連携するために用いられる（図３の矢印Ａ１，Ａ２参照）。図３では、ユニット１１−１上でプロセス間通信を行なう例が示され、プロセス＃１，＃２にそれぞれアドレス127.1.0.1, 127.1.0.2が割り振られている。また、ループバックデバイス１４宛のパケットは、図４に示すように、送信先がいなくても送信することが可能である（図４の矢印Ａ３，Ａ４参照）。つまり、送信先がいなくてもエラーを発生させることなくパケットを送信することが可能である。ただし、送信先のいないパケットは、ループバックデバイス１４に送信された後、破棄される。なお、図３および図４は、ループバックデバイス１４によるプロセス間通信を説明する図である。
【００２５】
このようなループバックデバイス１４によるプロセス間通信のアドレス体系は、127.0.0.0/8であり、ホストアドレスに、約1677万個、確保することができる。そこで、本実施形態では、情報処理装置１０を構成するユニット１１−１〜１１−５の内部で、ループバックデバイス１４上のＩＰアドレスが衝突しないように割り振られる。例えば図１では、ユニット１１−１〜１１−５に、ＩＰアドレスとして、ループバック用のアドレス体系のアドレス127.1.0.1〜127.1.0.5がそれぞれ割り振られている。
【００２６】
これにより、内部ネットワークインタフェース１２ａは、外部ネットワーク２０の第１アドレス体系とは独立した第２アドレス体系である、ループバックデバイス１４によるプロセス間通信のアドレス体系を用いてユニット１１間の通信を行なう。ただし、上述したように、ループバックデバイス１４を流れるパケットは、ループバックデバイス１４の特性上、当該パケットを使用するＯＳ１１Ａの外へ出ない。そこで、本実施形態では、図２を参照しながら後述する、各ユニット１１における機能構成を用いることで、図１２〜図１６を参照しながら後述するように、ループバックデバイス１４を利用したＩＰネットワークが構築される。
【００２７】
なお、第２アドレス体系（各ユニット１１のＩＰアドレス）は、各ユニット１１に対して、システム管理者が手作業によって設定してもよいし、ＯＳ等のソフトウェアによって自動的に割り振って設定するように構成してもよい。例えば、各ユニット１１のファームウェアが、ハードウェアの位置情報（スロット番号）等を基に、自動的に自身のアドレスを生成して設定する。また、他の例としては、ユニット＃１のＯＳ１１ＡもしくはＣＰＵ１１ａなどの制御部にＤＨＣＰ（Dynamic Host Configuration Protocol）機能をもたせ、他のユニット１１に設定情報を自動配信して、各ユニット１１がその設定情報を受けて設定するようにしてもよい。ＤＨＣＰ機能によれば、ネットワーク設定を手動で行なわなくても直ちに適切な設定で接続を行なうことができ、ネットワークの設定に詳しくないユーザでも簡単に接続することができる。
【００２８】
ユニット１１間を通信可能に接続する内部ネットワーク１２としては、例えば、ＩＰ通信でない汎用通信回線が用いられる。また、汎用通信回線としては、例えば、フレームリレー通信回線（シリアル回線，ＩＰを使用しないイーサネットなど）を用いることができる。図１に示す例では、内部ネットワーク１２としてフレームリレー通信回線が用いられている。これに伴い、各ユニット１１における内部ネットワークインタフェース１２ａには、フレームリレー送信部およびフレームリレー受信部としての機能が備えられる。ユニット１１内部でのリレーなどを利用することで、任意のユニット１１間でフレームリレー可能なネットワーク環境が構築される。
【００２９】
なお、汎用通信回線に代え複数のユニット１１間の共有メモリ（図示略）を内部ネットワーク１２として備え、共有メモリを介してユニット１１間で通信を行なってもよい。
また、図１に示す情報処理システム１では、情報処理装置１０（外部ネットワークインタフェース２０ａ）に、外部ネットワーク２０用のＩＰアドレス192.168.1.1が割り振られ、端末４０に、ＩＰアドレス172.16.0.10が割り振られている。
【００３０】
さらに、情報処理装置１０の各種機能を分割した複数のユニット１１は、それぞれ、物理的に独立し、内部ネットワーク１２を介して相互に通信可能に構成されていてもよい。また、情報処理装置１０の各種機能を分割した複数のユニット１１の一部は、各ユニット１１のＣＰＵ１１ａ（図２参照）によって実行されるハイパバイザ（仮想化ＯＳ；図示略）上に構築される複数の仮想マシン（図示略）であってもよい。複数の仮想マシン（ユニット１１）上では異なる種類のＯＳ１１Ａが並列的に稼働される。
【００３１】
このように一つのＣＰＵ１１ａにおけるハイパバイザ上で複数のＯＳ１１Ａを稼働させる例として、統合ストレージ装置が挙げられる。統合ストレージ装置では、ハイパバイザ上において、例えば、ＳＡＮ（Storage Area Network）用ＯＳとＮＡＳ（Network Attached Storage）用ＯＳとが稼働される。ＳＡＮ用ＯＳとしては例えばWind River社のVxWorks（登録商標）が用いられ、ＮＡＳ用ＯＳとしては例えばLinux（登録商標）が用いられる。
【００３２】
このような統合ストレージ装置において、ＳＡＮ用ＯＳを稼働するユニット（仮想マシン）１１は、内部ネットワークインタフェース１２ａにより内部ネットワーク１２経由でＣＰＵ１１ａ外部の他ユニット１１と通信可能である。しかし、ＮＡＳ用ＯＳを稼働するユニット（仮想マシン）１１は、ＮＡＳ用ＯＳと同じハイパバイザ上に載るＳＡＮ用ＯＳを稼働するユニット１１との通信は可能であるが、通常、ＮＡＳ用ＯＳに直接接続されていないＣＰＵ１１ａ外部の他ユニット１１との通信はできない。
【００３３】
〔２〕本実施形態の対比例、および、本実施形態の概要について
〔２−１〕本実施形態の対比例
ここで、まず、図５〜図１１を参照しながら、上述した情報処理システム１においてユニット間通信を実現するための一具体例を、本実施形態の対比例として説明する。図５〜図１１は、本実施形態の対比例におけるユニット間通信動作を説明する図である。図５〜図１１では、ユニット＃１とユニット＃２との間での通信動作が、各ユニット１１における要部構成のみを図示しながら説明される。前述した通り、ユニット＃１および＃２には、それぞれ、ループバックデバイス１４によるプロセス間通信のアドレス体系のＩＰアドレス127.1.0.1および127.1.0.2が割り振られている。なお、図中、既述の符号と同一の符号は、同一もしくはほぼ同一の部分を示しているので、その説明は省略する。
【００３４】
まず、図５〜図７を参照しながら、対比例の基本的なユニット間通信手順について説明する。
ユニット＃１とユニット＃２との間で通信を行なう場合、送信元ユニット１１−１のプロセス（送信元プロセス）＃１は、送信先ユニット＃２のプロセス（送信先プロセス）＃２へのパケットを生成してループバックデバイス１４へ出力する（図５の矢印Ａ３，Ａ４参照）。
【００３５】
このとき、ＯＳ１１Ａに元々備えられるキャプチャ（capture）機能を用いることで、ループバックデバイス１４にパケットキャプチャが仕掛けられ、送信先プロセス＃２宛のパケットＰ１が取り出される（図５の矢印Ａ５，Ａ６参照）。取り出されたパケットＰ１は、内部ネットワークインタフェース１２ａのフレームリレー送信部としての機能によって、送信先プロセス＃２のＩＰアドレスに応じた適切なフレームリレー１２へ出力される（図６および図７の矢印Ａ７参照）。これにより、パケットＰ１は、送信先ユニット＃２へ送信される。キャプチャ機能は、ネットワークの状態を監視すべくパケットをキャプチャするものである。内部ネットワークインタフェース１２ａは、上記キャプチャ機能によって取得されたパケットＰ１を、内部ネットワーク１２に出力し、ループバックデバイス１４によるプロセス間通信のアドレス体系に従って送信先ユニット１１へ送信する。
【００３６】
フレームリレー１２によって送信されたパケットＰ１は、送信先ユニット＃２の内部ネットワークインタフェース１２ａのフレームリレー受信部としての機能によって受信される（図７の矢印Ａ８参照）。パケットＰ１を受信した内部ネットワークインタフェース１２ａは、パケットＰ１が自ユニット＃２宛であるか否かを判断する。
【００３７】
受信したパケットＰ１が自ユニット＃２宛である場合、内部ネットワークインタフェース１２ａは、パケットＰ１をセンド（send）機能に受け渡す（図７の矢印Ａ９参照）。そして、センド機能によって、パケットＰ１は、ループバックデバイス１４経由で送信先プロセス＃２へ送り込まれる（図７の矢印Ａ１０，Ａ１１参照）。なお、センド（send）機能は、ＯＳ１１Ａに元々備えられるもので、起動されると、内部ネットワークインタフェース１２ａによって受信された自ユニット宛のパケット（Ｐ１またはＰ２）を、ループバックデバイス１４経由で送信先プロセス（プロセス＃２または＃１）へ送り込む。
【００３８】
なお、パケットＰ１が自ユニット＃２宛でない場合、内部ネットワークインタフェース１２ａは、当該パケットＰ１を、自ユニット＃２のＯＳ１１Ａを構築されたハイパバイザ上の、他ＯＳ１１Ａ（他ユニット１１）に転送する。また、ユニット＃２（プロセス＃２）からユニット＃１（プロセス＃１）へのパケットの送信も、上述と同様の手順で実行され、これにより、ユニット＃１とユニット＃２との間の通信が実現される。
【００３９】
ここまで、本実施形態の対比例の基本的なユニット間通信手順について説明したが、ＴＣＰ（Transmission Control Protocol）通信を行なう場合、ＯＳの種類によっては、図８や図１０に示すようにユニット間通信を行なえなくなることがある。例えば図４では、プロセス＃１から送出されたパケットは、ループバックデバイス１４を通過した後に消えているように示されている。しかし、ＯＳの種類（例えばLinux）によっては、ループバックデバイス１４を通過したパケットをカーネル１３が受信することがある（図８の矢印Ａ４参照）。カーネル１３は、このようなパケットを受信すると、当該パケットによる通信は存在しないサービス（プロセス＃２）に対するＴＣＰ通信であると認識し、送信元プロセス＃１へ通信終了信号つまりＴＣＰのリセット信号（ＲＳＴ）を返信してしまう（図８の矢印Ａ１２，Ａ１３参照）。このリセット信号により、ＴＣＰ通信のコネクションが切断され、送信元プロセス＃１からのパケットＰ１に係る通信が停止する。このため、図５〜図７に示すようにキャプチャされたパケットＰ１に対し送信先ユニット＃２から返信があっても、当該返信に対応することができず、ユニット間通信は確立されないまま終了する。なお、カーネル１３は、アプリケーションソフトウェアや周辺機器の監視、ディスクやメモリなどの資源の管理、割りこみ処理、プロセス間通信など、ＯＳとしての基本機能を提供するソフトウェアである。
【００４０】
上述のような状況が送信元ユニット＃１で発生するのを抑止すべく、図９に示す対比例では、ループバックデバイス１４を通過した送信先ユニット＃２宛のパケットＰ１を、カーネル１３に渡る前に、ファイアウォール（firewall）機能によって遮断し破棄する技術（図９の矢印Ａ４参照）が採用されている。これにより、カーネル１３はパケットＰ１を受信しないので、リセット信号がカーネル１３から送信元プロセス＃１へ返信されることがなく、ユニット間通信が確立されないまま終了するのを抑止することができる。
【００４１】
また、送信元ユニット＃１内に既存のサービス（プロセス＃２）がある場合、自ＯＳ１１Ａ内のサービス（プロセス＃２）が、他ユニット＃２のサービス（プロセス＃２）の代わりに応答してしまう。つまり、特別な対応をしなければループバックアドレス範囲内のアドレス宛パケットは、全て送信元ユニット＃１内で受信されてしまう。例えば、図７では、パケットＰ１は、アドレス127.1.0.2宛に送信されているが、このアドレスはループバックアドレス範囲内であるので、当該パケットＰ１をユニット＃１のＯＳ１１Ａ内のサービスが受信し、応答してしまう。このような状況も、ファイアウォール機能を、アドレス127.1.0.2宛のパケットを捨てるように設定することで解消される。
【００４２】
なお、図８および図９では、送信元ユニット＃１について説明しているが、図１０および図１１に示すように、送信先ユニット＃２においても、カーネル１３のリセット信号によって生じる不都合も、ファイアウォール機能を用いて解消される。つまり、図１０に示すように、パケットＰ１を受信した送信先プロセス＃２は、送信元プロセス＃１への応答パケット（返信パケット）Ｐ２を生成してループバックデバイス１４へ出力する（図１０の矢印Ａ１４参照）。ループバックデバイス１４を通過する応答パケットＰ２は、キャプチャ機能によって取り出される（図１０の矢印Ａ１６，Ａ１７参照）。取り出された応答パケットＰ２は、内部ネットワークインタフェース１２ａのフレームリレー送信部としての機能によって適切なフレームリレー１２へ出力される（図１０の矢印Ａ１８参照）。これにより、応答パケットＰ２は、送信元ユニット＃１へ送信される。
【００４３】
このとき、ループバックデバイス１４を通過した応答パケットＰ２が、カーネル１３によって受信されることがある（図１０の矢印Ａ１５参照）。カーネル１３は、応答パケットＰ２を受信すると、当該パケットＰ２による通信は存在しないサービス（プロセス＃１）に対するＴＣＰ通信であると認識し、プロセス＃２に対しＴＣＰのリセット信号を返信してしまう（図１０の矢印Ａ１９，Ａ２０参照）。このリセット信号により、ＴＣＰ通信のコネクションが切断され、プロセス＃２からの応答パケットＰ２に係る通信が停止する。このため、応答パケットＰ２に対し送信元ユニット＃１から返信があっても、当該返信に対応することができず、ユニット間通信は確立されないまま終了する。
【００４４】
上述のような状況が送信先ユニット＃２で発生するのを抑止すべく、図１１に示す対比例では、ループバックデバイス１４を通過した送信元ユニット＃１宛の応答パケットＰ２を、カーネル１３に渡る前に、ファイアウォール機能によって遮断し破棄する技術（図１１の矢印Ａ１５参照）が採用されている。これにより、カーネル１３は応答パケットＰ２を受信しないので、リセット信号がカーネル１３からプロセス＃２へ返信されることがなく、ユニット間通信が確立されないまま終了するのを抑止することができる。
【００４５】
さて、図５〜図１１を参照ながら上述した対比例のキャプチャ機能を実現するには、当該キャプチャ機能を、ＯＳ階層でいうユーザ空間のソフトウェアとして実装することが考えられる。しかし、一般的なＯＳがサポートするキャプチャ機能は、単にパケット（Ｐ１，Ｐ２）をコピーする処理を行なうものである。このため、元のパケットは、キャプチャ機能によるキャプチャの実行の有無に関係なく、同じ処理を施される。そのため、対比例では、上述したようにファイアウォール機能が用いられている。また、対比例で用いられるキャプチャ機能は、ユーザ空間のソフトウェアであるため、キャプチャ実行時には、パケットをカーネル空間からユーザ空間へコピーする処理が発生する。
【００４６】
また、キャプチャされたパケットを他ユニットに送る場合、一般にはハードウェア操作が伴う。このため、パケットは、カーネル空間で動作する他ユニット送信デバイスドライバ（図２の符号１２１参照）を経由する。このとき、キャプチャ時とは逆に、パケットをユーザ空間からカーネル空間へコピーする処理が発生する。
【００４７】
つまり、図５〜図１１を参照ながら上述した対比例では、以下のような課題(1)〜(3)が生じることが考えられる。
【００４８】
(1) キャプチャ対象のパケットは、他ユニットで処理されるものであり、自ユニットで処理する必要が無いにもかかわらず、当該パケットに対する処理が実行される。そこで、対比例ではファイアウォール機能を用いて当該パケットを遮断破棄することが行なわれる。しかし、この場合、パケットを破棄するという無駄な処理が生じる（図９，図１１の符号(1)で示す領域参照）。
【００４９】
(2) キャプチャ実行時に、パケットをカーネル空間からユーザ空間へコピーする処理が発生する（図９，図１１の符号(2)で示す領域参照）。
【００５０】
(3) キャプチャされたパケットを他ユニットに転送する際、パケットをユーザ空間からカーネル空間へコピーする処理が発生する（図９，図１１の符号(3)で示す領域参照）。
【００５１】
対比例は、ユーザ空間のアプリケーションプログラム（以下、単にアプリケーションという場合がある）とファイアウォールとの設定を行なうだけで実現可能であり、汎用ＯＳのＡＰＩ（Application Programming Interface）だけで実現可能である。したがって、対比例の実装は簡単であるという利点がある。しかしながら、対比例には、上記課題(1)〜(3)がある。つまり、パケットの破棄といった無駄な処理が生じるほか、ユーザ空間とカーネル空間との間で複数回のデータコピーが発生し処理の流れが複雑になる。このため、パケットのスループットが低下する。
【００５２】
〔２−２〕本実施形態の概要
そこで、本実施形態では、以下のような機能を備えることで、上述した対比例で生じうる課題(1)〜(3)が解消される。以下では、図１２を参照しながら、本実施形態による処理の概要を説明する。
【００５３】
図１２に示すように、ループバックデバイスドライバ１４Ａは、カーネル空間でＯＳ１１Ａによる処理対象パケットを受信すると、処理対象パケットが自ユニット宛であるか他ユニット宛であるかの判定を行なう機能（判定部１４１）を有する。また、ループバックデバイスドライバ１４Ａは、判定部１４１による判定結果に応じた処理に、処理対象パケットを振り分ける機能（振分部１４２）を有する。
【００５４】
このとき、自ユニット（例えばユニット＃１）のＯＳ１１Ａ内のプロセス＃１から処理対象パケット（第１パケット）を受信した場合（矢印Ａ２１参照）、判定部１４１は、第１パケットが自ユニット宛であるか他ユニット宛であるかを判定する。
【００５５】
そして、判定部１４１によって第１パケットが自ユニット宛であると判定された場合、振分部１４２は、第１パケットを自ユニット内のＯＳ１１Ａでの受信処理、つまりカーネル１３に振り分ける（矢印Ａ２２，Ａ２３参照）。
【００５６】
一方、判定部１４１によって第１パケットが他ユニット宛であると判定された場合、振分部１４２は、第１パケットを、送信デバイスによって他ユニットに送信すべく、カーネル空間でそのまま、送信デバイスを制御する送信デバイスドライバ１２１（図２参照）に受け渡す。つまり、振分部１４２は、第１パケットを送信デバイスドライバ１２１による転送処理に振り分ける（矢印Ａ２２，Ａ２４参照）。
【００５７】
また、処理対象パケットが、他ユニット受信デバイスドライバ１２２によって他ユニットから受信された自ユニット宛の第２パケットである場合、判定部１４１は、第２パケットについての判定を行なわない。そして、振分部１４２は、第２パケットを自ユニット内のＯＳ１１Ａでの受信処理、つまりカーネル１３に振り分ける（矢印Ａ２５，Ａ２３参照）。このとき、第２パケットは、判定部１４１や振分部１４２としての機能を経由させることなく、ループバックデバイスドライバ１４Ａ経由で直接的にカーネル１３に渡されてもよい。
【００５８】
このように、本実施形態では、図１２に示すごとく、ループバックデバイスドライバ１４Ａと送信デバイスドライバ１２１や受信デバイスドライバ１２２との間において処理対象パケットが直接的にやり取りされる。このため、処理対象パケット（第１パケットおよび第２パケット）をカーネル空間とユーザ空間との間でコピーすることがなくなる。
【００５９】
また、プロセス＃１から処理対象パケット（第１パケット）については、判定部１４１によって自ユニット宛か他ユニット宛かを判定され、カーネル１３と他ユニット送信デバイスドライバ１２１とのいずれか一方に選択的に振り分けられる。このため、矢印Ａ２３で示す経路と矢印Ａ２４で示す経路との両方に、同じパケットが流れることがない。したがって、対比例のごときファイアウォール機能を備えることなく、ユニット間通信が確立されないまま終了するのを確実に抑止することができる。ファイアウォール機能を用いないため、パケット破棄処理といった無駄な処理を行なうこともない。
【００６０】
さらに、他ユニットからのパケットについては、判定部１４１による判定処理は不要であるため、ループバックデバイスドライバ１４Ａを通してカーネル１３に渡される。このため、無駄な判定処理を行なうことが抑止される。
【００６１】
以上のように、本実施形態では、パケットが他ユニットのプロセスに届くまで、パケットに対する処理は、デバイスドライバ１４Ａ，１２１，１２２が走行するカーネル空間で完了するため、対比例に比べ、パケットの流れが簡潔になる。したがって、パケットのスループットが大幅に向上する。
【００６２】
〔３〕本実施形態の情報処理装置における各ユニットの構成
次に、図２を参照しながら、図１に示す情報処理装置１０を構成する各ユニット１１のハードウェア構成および機能構成について説明する。なお、図２は、そのハードウェア構成および機能構成を示すブロック図である。
【００６３】
各ユニット１１は、少なくともＣＰＵ（処理部）１１ａおよびメモリ（記憶部）１１ｂを含む。なお、ユニット１１が仮想マシンである場合、同一ハイパバイザ上の複数の仮想マシン（ユニット１１）によってＣＰＵ１１ａおよびメモリ１１ｂは共用される。メモリ１１ｂは、例えば、ＲＡＭ（Random Access Memory），ＲＯＭ（Read Only Memory），ＨＤＤ（Hard Disk Drive），ＳＳＤ（Solid State Drive）等である。メモリ１１ｂは、各ユニット１１での処理に必要な各種情報、例えば、上述したＯＳ１１Ａやハイパバイザなどに係るソフトウェアや各種機能を実現するためのアプリケーションプログラムを保存する。
【００６４】
図２に示すように、外部ネットワーク２０に接続されるユニット１１−１のＣＰＵ１１ａは、メモリ１１ｂに保存されたアプリケーションプログラムを実行することで、内部ネットワークインタフェース１２ａ（他ユニット送信デバイスドライバ１２１，他ユニット受信デバイスドライバ１２２）としての機能を果たす。同様に、ＣＰＵ１１ａは、ループバックデバイスドライバ１４Ａ（判定部１４１，振分部１４２），変換部１８および外部ネットワークインタフェース２０ａとしての機能も果たす。また、内部ネットワーク１２を介してユニット１１−１に接続されるユニット１１−２〜１１−５のＣＰＵ１１ａは、メモリ１１ｂに保存されたアプリケーションプログラムを実行することで、ユニット１１−１と同様の機能を果たす。
【００６５】
外部ネットワークインタフェース２０ａは、図１を参照しながら上述した通り、ユニット１１−１において、外部ネットワーク（イーサネット）２０の第１アドレス体系（192.168.1.0/24）で外部ネットワーク２０に接続され端末４０との通信を行なう。
【００６６】
内部ネットワークインタフェース（通信アプリケーション）１２ａは、図１を参照しながら上述した通り、各ユニット１１において、ループバックデバイス１４によるプロセス間通信のアドレス体系（127.1.0.1/5）でユニット１１間の通信を行なう。内部ネットワークインタフェース１２ａは、他ユニットへパケットを送信する送信デバイスを制御する他ユニット送信デバイスドライバ１２１を含む。また、内部ネットワークインタフェース１２ａは、他ユニットからのパケットを受信する受信デバイスを制御する他ユニット受信デバイスドライバ１２２を含む。
【００６７】
また、内部ネットワークインタフェース１２ａ（他ユニット受信デバイスドライバ１２２）は、他ユニットからの自ユニット宛のパケットを選択してループバックデバイスドライバ１４Ａ経由でカーネル１３に受け渡す機能を有する。また、内部ネットワークインタフェース１２ａ（他ユニット受信デバイスドライバ１２２）は、自ユニット宛のパケット以外のパケットを他ユニットに転送する機能を有する。この機能は、例えば上述した統合ストレージ装置のごとく複数のユニット１１がハイパバイザ上に構築される複数の仮想マシンである場合に有効に用いられる。つまり、ＳＡＮ用ＯＳを稼働するユニット１１でＮＡＳ用ＯＳを稼動するユニット１１宛のパケットを受信した場合、当該機能によって、当該パケットを、ハイパバイザ経由で、ＳＡＮ用ＯＳを稼働するユニット１１からＮＡＳ用ＯＳを稼動するユニット１１に転送する。
【００６８】
そして、本実施形態において、ループバックデバイス１４を制御するループバックデバイスドライバ１４Ａは、判定部１４１および振分部１４２としての機能を有する。
【００６９】
判定部１４１は、ループバックデバイスドライバ１４Ａがカーネル空間でＯＳ１１Ａによる処理対象パケットを受信すると、処理対象パケットが自ユニット宛であるか他ユニット宛であるかの判定を行なう。また、振分部１４２は、判定部１４１による判定結果に応じた処理に、処理対象パケットを振り分ける。
【００７０】
このとき、自ユニットのＯＳ１１Ａ内のプロセスから処理対象パケット（第１パケット）を受信した場合、判定部１４１は、第１パケットが自ユニット宛であるか他ユニット宛であるかを判定する。そして、判定部１４１によって第１パケットが自ユニット宛であると判定された場合、振分部１４２は、第１パケットを自ユニット内のＯＳ１１Ａでの受信処理、つまりカーネル１３に振り分ける。
【００７１】
一方、判定部１４１によって第１パケットが他ユニット宛であると判定された場合、振分部１４２は、第１パケットを、送信デバイスによって他ユニットに送信すべく、カーネル空間でそのまま、送信デバイスを制御する送信デバイスドライバ１２１に受け渡す。つまり、振分部１４２は、第１パケットを送信デバイスドライバ１２１による転送処理に振り分ける。これにより、内部ネットワークインタフェース１２ａ（送信デバイスドライバ１２１）は、振り分けられた第１パケットを、内部ネットワーク１２に出力し、ループバックデバイス１４によるプロセス間通信のアドレス体系に従って送信先ユニット１１へ送信する。
【００７２】
また、処理対象パケットが、自ユニットの受信デバイスドライバ１２２によって他ユニットから受信された自ユニット宛の第２パケットである場合、判定部１４１は、第２パケットについての判定を行なわない。そして、振分部１４２は、第２パケットを自ユニット内のＯＳ１１Ａでの受信処理、つまりカーネル１３に振り分ける。このとき、第２パケットは、判定部１４１や振分部１４２としての機能を経由させることなく、ループバックデバイスドライバ１４Ａ経由で直接的にカーネル１３に渡されてもよい。
【００７３】
変換部１８は、外部ネットワーク２０に接続された一のユニット１１−１において、外部ネットワーク２０の第１アドレス体系と内部ネットワーク１２の第２アドレス体系との間のアドレス変換を行なう。変換部１８としての機能は、ＮＡＰＴ (Network Address Port Translation) 機構を用いて実現することができる。変換部１８によって、情報処理装置１０内部の各ユニット１１は、外部ネットワーク２０に接続される外部機器（例えば端末４０）との通信を行なうことが可能になっている。
【００７４】
〔４〕本実施形態の情報処理装置における各ユニットの動作
次に、図１３〜図１６を参照しながら、上述のごとく構成された本実施形態の情報処理装置１０を含む情報処理システム１の動作、特に各ユニット１１の動作について詳細に説明する。図１３は本実施形態におけるユニット間通信手順（ループバックデバイスドライバ１４Ａの動作）を説明するフローチャートであり、図１４〜図１６は本実施形態におけるユニット間通信動作を説明する図である。図１４〜図１６では、ユニット１１−１とユニット１１−２との間での通信動作が、各ユニット１１における要部構成のみを図示しながら説明される。前述した通り、ユニット１１−１および１１−２には、それぞれ、ループバックデバイス１４によるプロセス間通信のアドレス体系のＩＰアドレス127.1.0.1および127.1.0.2が割り振られている。なお、図中、既述の符号と同一の符号は、同一もしくはほぼ同一の部分を示しているので、その説明は省略する。
【００７５】
図１４〜図１６を参照しながら、図１３に示すフローチャート（ステップＳ１〜Ｓ５）に従って、本実施形態のユニット間通信手順について説明する。
【００７６】
ユニット１１−１のループバックデバイスドライバ１４Ａは、ＯＳ１１Ａによる処理対象パケットを受信したか否かを判定し（ステップＳ１）、処理対象パケットを受信するまで待機する（ステップＳ１のＮＯルート）。
【００７７】
ユニット１１−１のプロセス＃１と自ユニット１１−１のプロセス＃２との間で通信を行なう場合（図１４参照）、送信元ユニット１１−１のプロセス（送信元プロセス）＃１は、自ユニット１１−１のプロセス（送信先プロセス）＃２へのパケットを生成する。そして、当該パケットは、ＯＳ１１Ａの処理対象パケット（第１パケット）としてループバックデバイスドライバ１４Ａへ出力される（図１４の矢印Ａ２１参照）。
【００７８】
これに伴い、ループバックデバイスドライバ１４Ａは、処理対象パケットを受信したと判定する（ステップＳ１のＹＥＳルート）。そして、ループバックデバイスドライバ１４Ａは、当該処理対象パケットを、自ユニットのプロセスから受信したか、他ユニット（つまり他ユニット受信デバイスドライバ１２２）から受信したかを判定する（ステップＳ２）。
【００７９】
このとき、当該処理対象パケットは、自ユニットのプロセスから受信したもの（第１パケット）であると判定される（ステップＳ２の「自ユニット」ルート）。そして、判定部１４１は、当該処理対象パケットが自ユニット宛であるか他ユニット宛であるかを判定する（ステップＳ３）。このとき、判定部１４１は、処理対象パケットが自ユニット宛であると判定する（ステップＳ３の「自ユニット宛」ルート）。
【００８０】
そして、振分部１４２は、判定部１４１による判定結果（自ユニット宛）を受け（図１４の矢印Ａ２２参照）、当該処理対象パケットを自ユニット１１−１内のＯＳ１４Ａ（カーネル１３）での受信処理に振り分ける（図１４の矢印Ａ２３参照）。これにより、当該処理対照パケットについて受信処理が実行され（ステップＳ４）、ステップＳ１の処理に戻る。つまり、ループバックデバイスドライバ１４Ａは、当該処理対象パケットについての処理をそのまま続け、当該処理対象パケットを自ユニット１１−１内のプロセス＃２に受け渡す。このとき、振分部１４２から他ユニット送信デバイスドライバ１２１へのパケット振分処理（図１４の二点差線矢印Ａ２４′参照）は実行されない。
【００８１】
また、ユニット１１−１のプロセス＃１と他ユニット１１−２のプロセス＃２との間で通信を行なう場合（図１５参照）、送信元ユニット１１−１のプロセス（送信元プロセス）＃１は、他ユニット１１−２のプロセス（送信先プロセス）＃２へのパケットを生成する。そして、当該パケットは、ＯＳ１１Ａの処理対象パケット（第１パケット）としてループバックデバイスドライバ１４Ａへ出力される（図１５の矢印Ａ２１参照）。
【００８２】
これに伴い、ループバックデバイスドライバ１４Ａは、処理対象パケットを受信したと判定する（ステップＳ１のＹＥＳルート）。そして、ループバックデバイスドライバ１４Ａは、当該処理対象パケットを、自ユニットのプロセスから受信したか、他ユニット（つまり他ユニット受信デバイスドライバ１２２）から受信したかを判定する（ステップＳ２）。
【００８３】
このとき、当該処理対象パケットは、自ユニットのプロセスから受信したもの（第１パケット）であると判定される（ステップＳ２の「自ユニット」ルート）。そして、判定部１４１は、当該処理対象パケットが自ユニット宛であるか他ユニット宛であるかを判定する（ステップＳ３）。このとき、判定部１４１は、処理対象パケットが他ユニット宛であると判定する（ステップＳ３の「他ユニット宛」ルート）。
【００８４】
そして、振分部１４２は、判定部１４１による判定結果（他ユニット宛）を受け（図１５の矢印Ａ２２参照）、当該処理対象パケットを、送信デバイスによって他ユニット１１−２に送信すべく、他ユニット送信デバイスドライバ１２１による転送処理に振り分ける（図１５の矢印Ａ２４参照）。これにより、当該処理対照パケットについて転送処理が実行され（ステップＳ５）、ステップＳ１の処理に戻る。つまり、ループバックデバイスドライバ１４Ａは、他ユニット送信デバイスドライバ１２１を呼び出し、当該処理対象パケットを上述したフレームリレー（内部ネットワーク）１２によって他ユニット１１−２に送信する（図１５の矢印Ａ２６参照）。このとき、振分部１４２からカーネル１３へのパケット振分処理（図１５の二点差線矢印Ａ２３′参照）は実行されない。このため、対比例のごとくファイアウォール機能を用いたパケット廃棄処理が不要になる。
【００８５】
上述のようにして、図１６に示すごとく、パケットが他ユニット１１−２に送信されると（図１６の矢印Ａ２７参照）、当該パケットは、他ユニット受信デバイスドライバ１２２によって受信される。そして、他ユニット受信デバイスドライバ１２２は、他ユニット１１−１からの自ユニット１１−２宛のパケットを選択してループバックデバイスドライバ１４Ａ経由でカーネル１３に受け渡す。
【００８６】
つまり、他ユニット受信デバイスドライバ１２２で受信されたパケットが、処理対象パケット（第２パケット）としてループバックデバイス１４Ａへ出力される（図１６の矢印Ａ２８参照）。
【００８７】
これに伴い、ユニット１１−２のループバックデバイスドライバ１４Ａは、処理対象パケットを受信したと判定する（ステップＳ１のＹＥＳルート）。そして、ループバックデバイスドライバ１４Ａは、当該処理対象パケットを、自ユニットのプロセスから受信したか、他ユニット（つまり他ユニット受信デバイスドライバ１２２）から受信したかを判定する（ステップＳ２）。
【００８８】
このとき、当該処理対象パケットは、他ユニット１１−１のプロセス＃１から受信したもの（第２パケット）であると判定される（ステップＳ２の「他ユニット」ルート）。この場合、ユニット１１−２の判定部１４１（図示略）は、当該処理対象パケットについての判定を行なわない。そして、ユニット１１−２のループバックデバイスドライバ１４Ａ（振分部１４２（図示略））は、当該処理対象パケットを自ユニット１１−２内のＯＳ１４Ａ（カーネル１３）での受信処理に振り分ける（図１６の矢印Ａ２９参照）。これにより、当該処理対照パケットについて受信処理が実行され（ステップＳ４）、ステップＳ１の処理に戻る。つまり、ループバックデバイスドライバ１４Ａは、当該処理対象パケットについての処理をそのまま続け、当該処理対象パケットを自ユニット１１−２内のプロセス＃２に受け渡す。
【００８９】
以上の説明では、ユニット１１−１からユニット１１−２へパケットを送信する場合の手順について説明したが、逆に、ユニット１１−２からユニット１１−１へのパケット送信も、上述した例と同様の手順で行なわれる。例えば、図１０や図１１に示したような応答パケットＰ２は、ループバックデバイス１４からカーネル１３に受け渡されることなくユニット１１−１のプロセス＃１に送信される。これにより、ユニット１１−１とユニット１１−２との間での通信が実行される。
【００９０】
なお、送信元ポート番号は、ＯＳ１１Ａによって自動的に採番される。アプリケーションプログラムが自身で送信元ポート番号を指定することも可能であるが、例外的である。ループバックアドレスは、どのＯＳにも存在するため、ユニット＃１のＯＳが自動で割り当てた送信元ポート番号が、ユニット＃２のＯＳが自動で割り当てたポート番号と同じになることがある。しかし、本実施形態では、送信元ポート番号は、ＩＰアドレス毎に管理されるため、ループバックアドレスを各ユニット１１専用のアドレスとして割り振る（例えば127.1.0.2をユニット＃２のＯＳ専用とする）ことで、送信元ポート番号が同一になることが抑止される。
【００９１】
〔５〕本実施形態の効果
本実施形態によれば、情報処理装置１０内において、当該情報処理装置１０を構成するユニット１１間の内部ネットワーク１２に、外部ネットワーク２０の第１アドレス体系とは独立した第２アドレス体系を、ループバックアドレスを用いて構築することができる。これにより、外部ネットワーク２０に影響されない内部ネットワーク１２を構築することができる。
【００９２】
したがって、外部ネットワーク２０の設定が変化しても内部ネットワーク１２の設定を変更する必要がなくなる。また、外部ネットワーク２０の設定をどのようなものにしても内部ネットワーク１２を構築することが可能である。
【００９３】
また、内部ネットワーク１２用のアドレスを確保することができない場合であっても、本実施形態によれば、ループバックアドレスを用いて内部ネットワーク１２のアドレス体系を構築することができる。内部ネットワーク１２用のアドレスを確保できない場合は、例えば、プライベートアドレスを全部抑えられ且つグローバルネットワーク空間に接続されている場合である。
【００９４】
さらに、外部ネットワーク２０とつながるユニット１１−１がＮＡＰＴ機構１８を備えることで、情報処理装置１０内部の各ユニット１１は、外部ネットワーク２０に接続される外部機器（例えば端末４０）との通信を行なうことができる。
【００９５】
また、本実施形態では、ループバックデバイスドライバ１４Ａと送信デバイスドライバ１２１や受信デバイスドライバ１２２との間において処理対象パケットが直接的にやり取りされる。このため、処理対象パケットをカーネル空間とユーザ空間との間でコピーすることがなくなる。
【００９６】
また、プロセス＃１から処理対象パケットについては、判定部１４１によって自ユニット宛か他ユニット宛かを判定され、カーネル１３と他ユニット送信デバイスドライバ１２１とのいずれか一方に選択的に振り分けられる。したがって、対比例のごときファイアウォール機能を備えることなく、ユニット間通信が確立されないまま終了するのを確実に抑止することができる。ファイアウォール機能を用いないため、パケット破棄処理といった無駄な処理を行なうこともない。
【００９７】
さらに、他ユニットからのパケットについては、判定部１４１による判定処理は不要であるため、ループバックデバイスドライバ１４Ａを通してカーネル１３に渡される。このため、無駄な判定処理を行なうことが抑止される。
【００９８】
以上のように、本実施形態では、パケットが他ユニットのプロセスに届くまで、パケットに対する処理は、デバイスドライバ１４Ａ，１２１，１２２が走行するカーネル空間（カーネル層）で完了する。これにより、カーネル空間とユーザ空間との間での無駄なコピー処理を行なわずに済み、対比例に比べ、パケットの流れが簡潔になる。結果として、処理時間を短縮することができ、パケットのスループットが大幅に向上する。
【００９９】
さらに、内部ネットワークインタフェース１２ａは、自ユニット宛のパケットを選択してループバックデバイスドライバ１４Ａに受け渡す一方、自ユニット宛のパケット以外のパケットを他ユニットに転送する機能を有している。この機能によって、例えば統合ストレージ装置のごとく複数のユニット１１がハイパバイザ上に構築される複数の仮想マシンである場合に、他ユニット１１に内部ネットワーク１２を介して直接接続されていないユニット１１間の通信を行なうことが可能になる。
【０１００】
〔６〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１０１】
上述した内部ネットワークインタフェース１２ａ（他ユニット送信デバイスドライバ１２１，他ユニット受信デバイスドライバ１２２），ループバックデバイスドライバ１４Ａ（判定部１４１，振分部１４２），変換部１８および外部ネットワークインタフェース２０ａとしての機能の全部もしくは一部は、コンピュータ（ＭＰＵ（Micro-Processing Unit），ＣＰＵ，各種端末を含む）が所定のプログラムを実行することによって実現されてもよい。
【０１０２】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【０１０３】
〔７〕付記
以上の各実施形態を含む実施形態に関し、さらに以下の付記を開示する。
【０１０４】
（付記１）
外部ネットワークに接続可能な情報処理装置であって、
オペレーティングシステム（ＯＳ）を有し、当該ＯＳ内のプロセス間通信を行なうループバックデバイスを制御するループバックデバイスドライバを有する複数のユニットと、
前記複数のユニットのうちの少なくとも一のユニットに設けられ、前記外部ネットワークに接続される外部ネットワークインタフェースと、
前記複数のユニットのそれぞれに設けられ、前記情報処理装置の内部ネットワークに接続される内部ネットワークインタフェースと、を有し、
前記内部ネットワークは、前記外部ネットワークの第１アドレス体系とは独立した、前記プロセス間通信の第２アドレス体系で構築され、
前記複数のユニットそれぞれの前記内部ネットワークインタフェースは、前記第２アドレス体系を用いて前記複数のユニット間の通信を行なうとともに、
前記ループバックデバイスドライバは、
前記ＯＳの処理対象パケットが自ユニット宛であるか他ユニット宛であるかを判定する判定部と、
前記判定部による判定結果に応じた処理に、前記処理対象パケットを振り分ける振分部と、を有する、情報処理装置。
【０１０５】
（付記２）
前記処理対象パケットが、自ユニットの前記ＯＳ内のプロセスからの第１パケットである場合、前記判定部は、前記第１パケットが自ユニット宛であるか他ユニット宛であるかを判定し、前記振分部は、前記判定部による判定結果に応じた処理に、前記第１パケットを振り分ける、付記１に記載の情報処理装置。
【０１０６】
（付記３）
前記判定部によって前記第１パケットが自ユニット宛であると判定された場合、前記振分部は、前記第１パケットを自ユニット内の前記ＯＳでの受信処理に振り分ける、付記２に記載の情報処理装置。
【０１０７】
（付記４）
前記判定部によって前記第１パケットが他ユニット宛であると判定された場合、前記振分部（１４２）は、前記第１パケットを、送信デバイスによって他ユニットに送信すべく、前記送信デバイスを制御する送信デバイスドライバによる転送処理に振り分ける、付記２または付記３に記載の情報処理装置。
【０１０８】
（付記５）
前記処理対象パケットが、自ユニットの受信デバイスドライバによって他ユニットから受信された自ユニット宛の第２パケットである場合、前記判定部は、前記第２パケットについての判定を行なうことなく、前記振分部は、前記第２パケットを自ユニット内の前記ＯＳでの受信処理に振り分ける、付記１〜付記４のいずれか一項に記載の情報処理装置。
【０１０９】
（付記６）
前記内部ネットワークは、インターネットプロトコル（ＩＰ）通信でない汎用通信回線、もしくは、前記複数のユニット間の共有メモリによって構築される、付記１〜付記５のいずれか一項に記載の情報処理装置。
【０１１０】
（付記７）
前記外部ネットワークに接続された前記一のユニットは、
前記外部ネットワークの第１アドレス体系と前記内部ネットワークの第２アドレス体系との間のアドレス変換を行ない、前記外部ネットワークを介して前記情報処理装置と通信可能に接続される端末と前記複数のユニットとの間の通信を行なう変換部を有する、付記１〜付記６のいずれか一項に記載の情報処理装置。
【０１１１】
（付記８）
前記複数のユニットは、それぞれ、ハイパバイザ上に構築される複数の仮想マシンである、付記１〜付記７のいずれか一項に記載の情報処理装置。
【０１１２】
（付記９）
外部ネットワークと、
前記外部ネットワークに接続可能で、前記外部ネットワークを介して端末と通信可能に接続される情報処理装置と、を備え、
前記情報処理装置は、
オペレーティングシステム（ＯＳ）を有し、当該ＯＳ内のプロセス間通信を行なうループバックデバイスを制御するループバックデバイスドライバを有する複数のユニットと、
前記複数のユニットのうちの少なくとも一のユニットに設けられ、前記外部ネットワークに接続される外部ネットワークインタフェースと、
前記複数のユニットのそれぞれに設けられ、前記情報処理装置の内部ネットワークに接続される内部ネットワークインタフェースと、を有し、
前記内部ネットワークは、前記外部ネットワークの第１アドレス体系とは独立した、前記プロセス間通信の第２アドレス体系で構築され、
前記複数のユニットそれぞれの前記内部ネットワークインタフェースは、前記第２アドレス体系を用いて前記複数のユニット間の通信を行なうとともに、
前記ループバックデバイスドライバは、
前記ＯＳの処理対象パケットが自ユニット宛であるか他ユニット宛であるかを判定する判定部と、
前記判定部による判定結果に応じた処理に、前記処理対象パケットを振り分ける振分部と、を有する、情報処理システム。
【０１１３】
（付記１０）
前記処理対象パケットが、自ユニットの前記ＯＳ内のプロセスからの第１パケットである場合、前記判定部は、前記第１パケットが自ユニット宛であるか他ユニット宛であるかを判定し、前記振分部は、前記判定部による判定結果に応じた処理に、前記第１パケットを振り分ける、付記９に記載の情報処理システム。
【０１１４】
（付記１１）
前記判定部によって前記第１パケットが自ユニット宛であると判定された場合、前記振分部は、前記第１パケットを自ユニット内の前記ＯＳでの受信処理に振り分ける、付記１０に記載の情報処理システム。
【０１１５】
（付記１２）
前記判定部によって前記第１パケットが他ユニット宛であると判定された場合、前記振分部は、前記第１パケットを、送信デバイスによって他ユニットに送信すべく、前記送信デバイスを制御する送信デバイスドライバによる転送処理に振り分ける、付記１０または付記１１に記載の情報処理システム。
【０１１６】
（付記１３）
前記処理対象パケットが、自ユニットの受信デバイスドライバによって他ユニットから受信された自ユニット宛の第２パケットである場合、前記判定部は、前記第２パケットについての判定を行なうことなく、前記振分部は、前記第２パケットを自ユニット内の前記ＯＳでの受信処理に振り分ける、付記９〜付記１２のいずれか一項に記載の情報処理システム。
【０１１７】
（付記１４）
前記内部ネットワークは、インターネットプロトコル（ＩＰ）通信でない汎用通信回線、もしくは、前記複数のユニット間の共有メモリによって構築される、付記９〜付記１３のいずれか一項に記載の情報処理システム。
【０１１８】
（付記１５）
前記外部ネットワークに接続された前記一のユニットは、
前記外部ネットワークの第１アドレス体系と前記内部ネットワークの第２アドレス体系との間のアドレス変換を行ない、前記外部ネットワークを介して前記情報処理装置と通信可能に接続される端末と前記複数のユニットとの間の通信を行なう変換部を有する、付記９〜付記１４のいずれか一項に記載の情報処理システム。
【０１１９】
（付記１６）
前記複数のユニットは、それぞれ、ハイパバイザ上に構築される複数の仮想マシンである、付記９〜付記１５のいずれか一項に記載の情報処理システム。
【０１２０】
（付記１７）
外部ネットワークに接続可能な情報処理装置であって、
オペレーティングシステム（ＯＳ）を有し、当該ＯＳ内のプロセス間通信を行なうループバックデバイスを制御するループバックデバイスドライバを有する複数のユニットと、
前記複数のユニットのうちの少なくとも一のユニットに設けられ、前記外部ネットワークに接続される外部ネットワークインタフェースと、
前記複数のユニットのそれぞれに設けられ、前記情報処理装置の内部において前記外部ネットワークの第１アドレス体系とは独立した前記プロセス間通信の第２アドレス体系で構築された内部ネットワークに接続される内部ネットワークインタフェースと、を有する前記情報処理装置における前記ＯＳに、
前記内部ネットワークインタフェースによって、前記第２アドレス体系を用いて前記複数のユニット間の通信を行なうとともに、
前記ループバックデバイスドライバによって、前記ＯＳの処理対象パケットが自ユニット宛であるか他ユニット宛であるかの判定を行ない、
前記ループバックデバイスドライバによって、前記判定の結果に応じた処理に、前記処理対象パケットを振り分ける、
処理を実行させる、プログラム。
【０１２１】
（付記１８）
前記処理対象パケットが、自ユニットの前記ＯＳ内のプロセスからの第１パケットである場合、前記第１パケットが自ユニット宛であるか他ユニット宛であるかの判定を行ない、
前記判定の結果に応じた処理に、前記第１パケットを振り分ける、
処理を、前記ＯＳに実行させる、付記１７に記載のプログラム。
【０１２２】
（付記１９）
前記判定によって前記第１パケットが自ユニット宛であると判定された場合、前記第１パケットを自ユニット内の前記ＯＳでの受信処理に振り分ける、
処理を、前記ＯＳに実行させる、付記１８に記載のプログラム。
【０１２３】
（付記２０）
前記判定によって前記第１パケットが他ユニット宛であると判定された場合、前記第１パケットを、送信デバイスによって他ユニットに送信すべく、前記送信デバイスを制御する送信デバイスドライバによる転送処理に振り分ける、
処理を、前記ＯＳに実行させる、付記１８または付記１９に記載のプログラム。
【符号の説明】
【０１２４】
１    情報処理システム
１０    情報処理装置（サーバ装置，統合ストレージ装置）
１１，１１−１〜１１−５    ユニット
１１Ａ    ＯＳ
１１ａ    ＣＰＵ（処理部）
１１ｂ    メモリ（記憶部）
１２    内部ネットワーク（フレームリレー，汎用通信回線）
１２ａ    内部ネットワークインタフェース（通信アプリケーションプログラム）
１２１    他ユニット送信デバイスドライバ
１２２    他ユニット受信デバイスドライバ
１３    カーネル
１４    ループバックデバイス
１４Ａ    ループバックデバイスドライバ
１４１    判定部
１４２    振分部
１８    変換部（ＮＡＰＴ機構）
２０    外部ネットワーク（イーサネット）
２０ａ    外部ネットワークインタフェース
３０    ゲートウェイ
４０    端末（外部ユニット）
【図１】
0006365280.tif 000002
【図２】
0006365280.tif 000003
【図３】
0006365280.tif 000004
【図４】
0006365280.tif 000005
【図５】
0006365280.tif 000006
【図６】
0006365280.tif 000007
【図７】
0006365280.tif 000008
【図８】
0006365280.tif 000009
【図９】
0006365280.tif 000010
【図１０】
0006365280.tif 000011
【図１１】
0006365280.tif 000012
【図１２】
0006365280.tif 000013
【図１３】
0006365280.tif 000014
【図１４】
0006365280.tif 000015
【図１５】
0006365280.tif 000016
【図１６】
0006365280.tif 000017
【図１７】
0006365280.tif 000018