(57)【要約】【課題】  ＲＤＭＡ転送を受ける際のメモリ空間の使用効率を向上させる。【解決手段】  仮想識別子送信手段１ｃによりプロセス１ｂに対応する仮想識別子が通信相手に送信される。その後、ノード２のプロセス２ｂから仮想識別子を指定した転送要求が出されたとき、メモリ領域が確保されていない場合、メモリ領域確保要求手段２ｅにより、ノード１に対してデータ受信用メモリ領域の確保要求が送信される。すると、ノード１では、メモリ領域確保手段１ｄにより通信装置１ａのデータ受信用メモリ領域がメモリ空間上に確保される。ノード２では、データ送信制御手段２ｈにより、通信装置２ａに対し、データ転送指示が出力される。すると、通信装置２ａによって、プロセス２ｂが管理するメモリ領域内の転送データ３が、データ受信用メモリ領域を指定したＲＤＭＡ転送で出力される。【選択図】  図１
2005182491.tif 000002
【特許請求の範囲】
【請求項１】
通信装置によるデータ受信処理を管理するための通信装置管理プログラムにおいて、
コンピュータに、
仮想識別子送信手段が、ネットワークを介して接続されている通信相手からデータを取得するプロセスに対応する仮想識別子を前記通信相手に送信し、
前記通信相手から前記仮想識別子を指定したアドレス取得要求を受け取ると、メモリ領域確保手段が、前記通信装置のデータ受信用メモリ領域をメモリ空間上に確保し、
識別子管理情報格納手段が、前記仮想識別子と前記データ受信用メモリ領域との対応関係を記憶装置に格納し、
メモリ領域通知手段が、確保された前記データ受信用メモリ領域を前記通信相手に通知し、
前記通信相手から前記データ受信用メモリ領域を指定した転送データを受け取ると、データ受信制御手段が、前記記憶装置を参照して前記データ受信用メモリ領域に対応する前記プロセスを判断し、前記通信装置に対し、前記プロセスが管理するメモリ領域への前記転送データの格納指示を出力する、
処理を実行させることを特徴とする通信装置管理プログラム。
【請求項２】
メモリ領域解放手段が、データ転送に使用されていない前記データ受信用メモリ領域を開放することを特徴とする請求項１記載の通信装置管理プログラム。
【請求項３】
メモリ領域解放手段は、前記仮想識別子に対応付けられた前記メモリ領域の解放要求を前記通信相手に対して送信し、前記解放要求に対応する確認応答を受けると、前記記憶装置に格納された前記仮想識別子と前記データ受信用メモリ領域との対応関係を削除することを特徴とする請求項２記載の通信装置管理プログラム。
【請求項４】
前記メモリ領域確保手段は、前記通信装置に確保した前記データ受信用メモリ領域を使用したデータ転送において異常の発生を検出した場合、再度前記データ受信用メモリ領域を前記メモリ空間上に確保することを特徴とする請求項１記載の通信装置管理プログラム。
【請求項５】
通信相手のメモリアドレスを指定したデータ転送を行うための通信装置管理プログラムにおいて、
コンピュータに、
仮想識別子受信手段が、ネットワークを介して接続されている通信相手から仮想識別子を受信して、前記仮想識別子を記憶装置に格納し、
メモリ領域判断手段が、プロセスから前記仮想識別子を指定した転送要求を受け取ると、前記記憶装置を参照して、前記仮想識別子に対応する前記通信相手のデータ受信用メモリ領域の確保の有無を判断し、
メモリ領域が確保されていない場合、メモリ領域確保要求手段が、前記通信相手に対して前記データ受信用メモリ領域の確保要求を送信し、
前記通信相手から確保された前記データ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域情報格納手段が、前記メモリ領域を示す情報を前記仮想識別子に対応付けて前記記憶装置に格納し、
データ送信制御手段が、前記記憶領域を参照し、前記転送要求で指定された前記仮想識別子に対応する前記前記データ受信用メモリ領域を判断し、通信装置に対し、前記プロセスが管理するメモリ領域内から前記通信相手への前記データ受信用メモリ領域を指定したデータ転送指示を出力する、
処理を実行させることを特徴とする通信装置管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は直接転送を行うための通信装置管理プログラム、通信装置管理方法、および通信管理装置に関し、特に大規模なネットワークシステムにおいて効率の良い直接転送を実現できる通信装置管理プログラム、通信装置管理方法、および通信管理装置に関する。
【背景技術】
【０００２】
大規模なコンピュータネットワークでは、複数のサーバが稼働している。これらの各サーバが互いに連携して動作することで、高度な情報処理サービスをユーザに提供することができる。このようなシステムでは、ネットワークを介したサーバ間のデータ転送が頻繁に発生する。そのため、システム全体の処理能力を向上させるには、データ転送の効率化が不可欠となる。
【０００３】
図２８は、従来のデータ転送方式を示す図である。図２８に示すように、コンピュータ９１０とコンピュータ９２０とが通信媒体９３０で接続されている。
コンピュータ９１０には、ソフトウェアによってユーザアプリケーション９１１と通信装置管理部９１２とが実装されている。ユーザアプリケーション９１１と通信装置管理部９１２とのそれぞれに対して、メモリ空間上のメモリ領域９１１ａ，９１２ａが割り当てられている。また、コンピュータ９１０は、通信装置９１３によって通信媒体９３０に接続されている。
【０００４】
同様に、コンピュータ９２０には、ソフトウェアによってユーザアプリケーション９２１と通信装置管理部９２２とが実装されている。ユーザアプリケーション９２１と通信装置管理部９２２とのそれぞれに対して、メモリ空間上のメモリ領域９２１ａ，９２２ａが割り当てられている。また、コンピュータ９２０は、通信装置９２３によって通信媒体９３０に接続されている。
【０００５】
ここで、コンピュータ９１０のユーザアプリケーション９１１からコンピュータ９２０のユーザアプリケーション９２１に対してデータ転送を行う場合のデータ転送手順を説明する。
【０００６】
送信側のコンピュータ９１０では、ユーザアプリケーション９１１が、通信装置管理部９１２に対して転送要求を出力する。通信装置管理部９１２は、ユーザアプリケーションのメモリ領域９１１ａから自己の管理するメモリ領域９１２ａに対応する記録媒体へデータをコピーする。その後、通信装置管理部９１２は、メモリ領域９１２ａ内のデータを含むパケットを生成し、そのパケットを通信装置９１３に転送する。通信装置９１３は、受け取ったパケットを通信媒体９３０経由でコンピュータ９２０に転送する。
【０００７】
コンピュータ９２０側では、ユーザアプリケーション９２１が、通信装置管理部９２２に対して受信要求を出力する。そして、通信媒体９３０を介して送られたパケットを通信装置９２３で受信する。通信装置９２３は、受信したパケットを通信装置管理部９２２に転送する。通信装置管理部９２２は、受け取ったパケット内のデータを自己のメモリ領域９２２ａに対応する記録媒体に格納する。その後、通信装置管理部９２２は、メモリ領域９２２ａ内のデータをユーザアプリケーション９２１のメモリ領域９２１ａにコピーする（たとえば、非特許文献１参照）。
【０００８】
このように、従来のデータ転送方式では、送信側と受信側との双方において、バッファとなる記録媒体への書き込みとデータのコピーが発生する。このようなコピー処理は、データ転送全体の処理効率を低下させる要因となる。そこで、データ転送の処理効率を向上させるために、データのコピーを伴わないデータ転送方式（ゼロコピー通信）が考えられている。
【０００９】
ゼロコピー通信を実現する場合、たとえば、ハードウェアアシストを用いたＲＤＭＡ（Remote Direct Memory Access）機能を有する通信装置が使用される。
図２９は、ＲＤＭＡを利用したデータ転送方式を示す図である。図２９に示すように、コンピュータ９４０とコンピュータ９５０とが通信媒体９６０で接続されている。
【００１０】
コンピュータ９４０には、ソフトウェアによってユーザアプリケーション９４１と通信装置管理部９４２とが実装されている。ユーザアプリケーション９４１には、アドレス空間上のメモリ領域９４１ａが割り当てられている。また、コンピュータ９４０は、通信装置９４３によって通信媒体９６０に接続されている。
【００１１】
同様に、コンピュータ９５０には、ソフトウェアによってユーザアプリケーション９５１と通信装置管理部９５２とが実装されている。ユーザアプリケーション９５１には、アドレス空間上のメモリ領域９５１ａが割り当てられている。また、コンピュータ９５０は、通信装置９５３によって通信媒体９６０に接続されている。
【００１２】
ここで、コンピュータ９４０のユーザアプリケーション９４１からコンピュータ９５０のユーザアプリケーション９５１に対してデータ転送を行う場合のデータ転送手順を説明する。
【００１３】
送信側のコンピュータ９４０では、ユーザアプリケーション９４１が、通信装置管理部９４２に対して転送要求を出力する。通信装置管理部９４２はＲＤＭＡ転送の指示を通信装置９４３に与え、ユーザアプリケーションのメモリ領域９４１ａから通信装置９４３へデータを転送する。通信装置管理部９４２は、受け取ったデータをＲＤＭＡにより通信装置９４３に転送する。通信装置９４３は、コンピュータ９５０側のＩ／Ｏアドレスを指定して、受け取ったデータを通信媒体９６０経由でコンピュータ９５０に転送する。
【００１４】
コンピュータ９５０側では、ユーザアプリケーション９５１が、通信装置管理部９５２に対して受信要求を出力する。そして、通信媒体９６０を介してＲＤＭＡ転送で送られたデータを通信装置９５３で受信する。通信装置９５３は、受信したデータをユーザアプリケーション９５１のメモリ領域９５１ａに転送する。
【００１５】
このように、ＲＤＭＡ機能を有する通信装置９４３，９５３を用いれば、各コンピュータ９４０，９５０内でデータのコピーを行わずに、通信媒体９６０経由のデータ転送が可能となる。なお、ＲＤＭＡが正しく実行されたかどうかのアクセス確認技術も考えられている（たとえば、特許文献１参照）。
【特許文献１】特開平２００２−３５１８１７号公報
【非特許文献１】Ｗ・リチャード・スティーブンス著「ＵＮＩＸネットワークプログラミング  第２版  Vol.1」ピアソン・エデュケーション出版、1999年7月30日、ｐ．４８−４９
【発明の開示】
【発明が解決しようとする課題】
【００１６】
ところで、従来のＲＤＭＡ転送では、送信相手のメモリ領域等を意識しながら転送する必要がある。すなわち、ＲＤＭＡ転送を開始する際には、転送すべきデータ量に応じたメモリ領域をデータ受信側のメモリ空間上に確保し、各サーバ上のアプリケーションがメモリ領域のアドレスを認識する必要がある。このようなメモリ領域の確保処理を通信の度に行っていたのでは、サーバが協働して実行するサービスの処理効率が低下する。そのため、ＲＤＭＡ転送によりデータを受信する装置では、送信元のコンピュータに対応するデータ受信用のメモリ領域を、メモリ空間内に予め確保しておく必要がある。
【００１７】
しかし、データ転送が行われていない間も、通信相手のコンピュータに応じたメモリ領域を確保しておくと、メモリ空間が無駄に消費されてしまう。特に、多数のサーバからデータ転送が行われる場合、サーバ毎にデータ転送用のメモリ領域を確保する必要があるため、メモリ空間内のメモリ領域が足りなくなる虞もある。
【００１８】
たとえば、仮想メモリ空間を実現したコンピュータであっても、データ転送に使用できるのは、その仮想メモリ空間の一部である。しかも、転送するデータの容量が大きければ、その容量の分だけメモリ領域を確保しなければならない。そのため、複数のコンピュータからデータ転送を受けるサーバにおいて、接続された全てのコンピュータ用にメモリ領域を確保しておくことは現実的ではない。
【００１９】
本発明はこのような点に鑑みてなされたものであり、ＲＤＭＡ転送を受ける際のメモリ空間の使用効率を向上させることができる通信装置管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の第１の態様では上記課題を解決するために、図１のノード１に示すような、通信装置管理プログラムが提供される。この通信装置管理プログラムは、通信装置１ａのメモリアドレスを管理するためのものである。通信装置管理プログラムはコンピュータに対して以下の処理を実行させることができる。
【００２１】
仮想識別子送信手段１ｃが、ネットワークを介して接続されている通信相手からデータを取得するプロセス１ｂに対応する仮想識別子を通信相手に送信する。通信相手から仮想識別子を指定したアドレス取得要求を受け取ると、メモリ領域確保手段１ｄが、通信装置１ａのデータ受信用メモリ領域をメモリ空間上に確保する。識別子管理情報格納手段１ｅが、仮想識別子とデータ受信用メモリ領域との対応関係を示す識別子管理情報を記憶装置１ｆに格納する。メモリ領域通知手段１ｇが、確保されたデータ受信用メモリ領域を通信相手に通知する。通信相手からデータ受信用メモリ領域を指定した転送データ３を受け取ると、データ受信制御手段１ｈが、記憶装置１ｆを参照してデータ受信用メモリ領域に対応するプロセス１ｂを判断し、通信装置１ａに対し、プロセス１ｂが管理するメモリ領域への転送データ３の格納指示を出力する。
【００２２】
このような通信装置管理プログラムをコンピュータに実行させると、仮想識別子送信手段１ｃによりプロセス１ｂに対応する仮想識別子を通信相手に送信される。その後、仮想識別子を指定したアドレス取得要求を受け取ると、メモリ領域確保手段１ｄにより通信装置１ａのデータ受信用メモリ領域がメモリ空間上に確保される。次に、識別子管理情報格納手段１ｅにより、仮想識別子とデータ受信用メモリ領域との対応関係が記憶装置１ｆに格納される。また、メモリ領域通知手段１ｇにより、確保されたデータ受信用メモリ領域が通信相手に通知される。通信相手からデータ受信用メモリ領域を指定した転送データを受け取ると、データ受信制御手段１ｈにより、識別子管理情報を参照してメモリ領域に対応するプロセスが判断され、通信装置１ａに対し、プロセス１ｂが管理するメモリ領域へ転送データを格納させる。
【００２３】
また、本発明の第２の態様では上記課題を解決するために、図１のノード２に示すような通信装置管理プログラムが提供される。この通信装置管理プログラムは、通信相手のメモリアドレスを指定したデータ転送を行うためのものである。通信装置管理プログラムに基づいて、コンピュータにより以下の処理が実行される。
【００２４】
仮想識別子受信手段２ｃが、ネットワークを介して接続されている通信相手から仮想識別子を受信して、仮想識別子を記憶装置２ｇに格納する。メモリ領域判断手段２ｄが、プロセス２ｂから仮想識別子を指定した転送要求を受け取ると、記憶装置２ｇを参照して、仮想識別子に対応する通信相手のデータ受信用メモリ領域の確保の有無を判断する。メモリ領域が確保されていない場合、メモリ領域確保要求手段２ｅが、通信相手に対してデータ受信用メモリ領域の確保要求を送信する。通信相手から確保されたデータ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域情報格納手段２ｆが、メモリ領域を示す情報を仮想識別子に対応付けて記憶装置２ｇに格納する。データ送信制御手段２ｈが、記憶領域を参照し、転送要求で指定された仮想識別子に対応するデータ受信用メモリ領域を判断し、通信装置に対し、プロセス２ｂが管理するメモリ領域内から通信相手へのデータ受信用メモリ領域を指定したデータ転送指示を出力する。
【００２５】
このような通信装置管理プログラムをコンピュータに実行させると、仮想識別子受信手段２ｃにより、ネットワークを介して接続されている通信相手から仮想識別子が受信され、仮想識別子が記憶装置２ｇに格納される。その後、メモリ領域判断手段２ｄにより、プロセス２ｂから仮想識別子を指定した転送要求を受け取ると、記憶装置２ｇが参照され、仮想識別子に対応する通信相手のデータ受信用メモリ領域の確保の有無が判断される。メモリ領域が確保されていない場合、メモリ領域確保要求手段２ｅにより、通信相手に対してデータ受信用メモリ領域の確保要求が送信される。そして、通信相手から確保されたデータ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域情報格納手段２ｆにより、メモリ領域を示す情報が仮想識別子に対応付けて記憶装置２ｇに格納される。さらに、データ送信制御手段２ｈにより、記憶領域が参照され、転送要求で指定された仮想識別子に対応するデータ受信用メモリ領域が判断され、通信装置に対し、プロセス２ｂが管理するメモリ領域内から通信相手へのデータ受信用メモリ領域を指定したデータ転送指示が出力される。
【発明の効果】
【００２６】
以上説明したように本発明の第１の態様では、プロセスに対応する仮想識別子を送信し、その仮想識別子に対するメモリ領域の確保要求を受けたときにデータ受信用メモリ領域を確保するようにした。そのため、全ての通信相手毎のデータ受信用メモリ領域を予め確保しておく必要がなく、メモリ空間の有効利用が可能となる。
【００２７】
また、以上説明したように本発明の第２の態様では、プロセスから仮想識別子を指定した転送要求が出された際に、その仮想識別子に対応するメモリ領域の確保を要求し、確保されたデータ受信用メモリ領域を指定してデータ転送を行うようにした。そのため、通信相手側にデータ受信用メモリ領域を予め確保しておく必要がなく、通信相手のメモリ空間の有効利用が可能となる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【００２９】
図１は、実施の形態に適用される発明の概念図である。図１の例では、ノード２からノード１に対してＲＤＭＡによるデータ転送が行われる。
ノード１は、ＲＤＭＡ機能をサポートした通信装置１ａを有している。また、ノード１では、ネットワークを介してデータを受信するプロセス１ｂが実行されている。さらに、ノード１は、通信装置１ａによるデータ受信処理を管理するために、仮想識別子送信手段１ｃ、メモリ領域確保手段１ｄ、識別子管理情報格納手段１ｅ、記憶装置１ｆ、メモリ領域通知手段１ｇ、およびデータ受信制御手段１ｈを有している。
【００３０】
仮想識別子送信手段１ｃは、プロセス１ｂに対応する仮想識別子を通信相手に送信する。メモリ領域確保手段１ｄは、通信相手から仮想識別子を指定したアドレス取得要求を受け取ると、通信装置１ａのデータ受信用メモリ領域をメモリ空間上に確保する。識別子管理情報格納手段１ｅは、仮想識別子とデータ受信用メモリ領域との対応関係を示す識別子管理情報を記憶装置１ｆに格納する。メモリ領域通知手段１ｇは、確保されたデータ受信用メモリ領域を通信相手に通知する。データ受信制御手段１ｈは、通信相手からデータ受信用メモリ領域を指定した転送データ３を受け取ると、記憶装置１ｆを参照してデータ受信用メモリ領域に対応するプロセス１ｂを判断し、通信装置１ａに対し、プロセス１ｂが管理するメモリ領域への転送データ３の格納指示を出力する。
【００３１】
ノード２は、ＲＤＭＡ機能をサポートした通信装置２ａを有している。また、ノード２では、ネットワークを介してデータを送信するプロセス２ｂが実行されている。プロセス２ｂは、通信相手のメモリアドレスを指定したデータ転送を行うためのものである。さらに、ノード２は、通信装置２ａによるデータ送信処理を管理するために、仮想識別子受信手段２ｃ、メモリ領域判断手段２ｄ、メモリ領域確保要求手段２ｅ、メモリ領域情報格納手段２ｆ、記憶装置２ｇ、およびデータ送信制御手段２ｈを有している。
【００３２】
仮想識別子受信手段２ｃは、ネットワークを介して接続されている通信相手から仮想識別子を受信して、仮想識別子を記憶装置２ｇに格納する。メモリ領域判断手段２ｄは、プロセス２ｂから仮想識別子を指定した転送要求を受け取ると、記憶装置２ｇを参照して、仮想識別子に対応する通信相手のデータ受信用メモリ領域の確保の有無を判断する。メモリ領域確保要求手段２ｅは、メモリ領域が確保されていない場合、通信相手に対してデータ受信用メモリ領域の確保要求を送信する。メモリ領域情報格納手段２ｆは、通信相手から確保されたデータ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域を示す情報を仮想識別子に対応付けて記憶装置２ｇに格納する。データ送信制御手段２ｈは、記憶領域を参照し、転送要求で指定された仮想識別子に対応するデータ受信用メモリ領域を判断し、通信装置２ａに対し、プロセス２ｂが管理するメモリ領域内から通信相手へのデータ受信用メモリ領域を指定したデータ転送指示を出力する。
【００３３】
このようなシステムにより以下のような処理が実行される。
まず、ノード１の仮想識別子送信手段１ｃによりプロセス１ｂに対応する仮想識別子が通信相手に送信される。送信された仮想識別子は、ノード２の仮想識別子受信手段２ｃで受け取られ、仮想識別子を記憶装置２ｇに格納する。
【００３４】
その後、プロセス２ｂから仮想識別子を指定した転送要求が出されると、メモリ領域判断手段２ｄにより、仮想識別子に対応するノード１のデータ受信用メモリ領域の確保の有無が判断される。ここで、メモリ領域が確保されていない場合、メモリ領域確保要求手段２ｅにより、ノード１に対してデータ受信用メモリ領域の確保要求が送信される。
【００３５】
ノード１では、仮想識別子を指定したアドレス取得要求を受け取ると、メモリ領域確保手段１ｄにより通信装置１ａのデータ受信用メモリ領域がメモリ空間上に確保される。次に、識別子管理情報格納手段１ｅにより、仮想識別子とデータ受信用メモリ領域との対応関係が記憶装置１ｆに格納される。また、メモリ領域通知手段１ｇにより、確保されたデータ受信用メモリ領域がノード２に通知される。
【００３６】
ノード２では、ノード１から確保されたデータ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域情報格納手段２ｆにより、メモリ領域を示す情報が仮想識別子に対応付けて記憶装置２ｇに格納される。次に、データ送信制御手段２ｈにより、記憶領域を参照し、転送要求で指定された仮想識別子に対応するデータ受信用メモリ領域を判断し、通信装置２ａに対し、プロセス２ｂが管理するメモリ領域内からノード１へのデータ受信用メモリ領域を指定したデータ転送指示が出力される。すると、通信装置２ａによって、プロセス２ｂが管理するメモリ領域内の転送データ３がデータ受信用メモリ領域を指定したＲＤＭＡ転送で出力される。
【００３７】
ノード１では、ノード２からデータ受信用メモリ領域を指定した転送データ３を受け取ると、データ受信制御手段１ｈにより、記憶装置１ｆを参照してデータ受信用メモリ領域に対応するプロセス１ｂが判断され、通信装置１ａに対し、プロセス１ｂが管理するメモリ領域への転送データ３の格納指示が出力される。すると、通信装置１ａによって、転送データ３をプロセス１ｂが管理するメモリ領域に格納される。
【００３８】
このように、仮想識別子に対するメモリ領域の確保要求を受けたときにデータ受信用メモリ領域を確保するようにしたため、全ての通信相手毎のデータ受信用メモリ領域を予め確保しておく必要がなく、メモリ空間の有効利用が可能となる。
【００３９】
また、データを受信するノード１側に、データ転送に使用されていないデータ受信用メモリ領域を開放するメモリ領域解放手段を設けることにより、使用されていないデータ受信用メモリ領域が長期間メモリ空間内に確保され続けることを防止できる。
【００４０】
さらに、メモリ領域確保手段１ｄが、通信装置１ａに確保したデータ受信用メモリ領域を使用したデータ転送において異常の発生を検出した場合、再度データ受信用メモリ領域をメモリ空間上に確保することもできる。これにより、プロセスが通信パスの障害に関して意識せずに、安定したデータ転送を継続することができる。
【００４１】
以下、本発明の実施の形態を具体的に説明する。
図２は、本発明の実施の形態に係るネットワークシステムを示す図である。ネットワークシステムでは、複数のノード１００，２００，２００ａ，２００ｂ，・・・が通信媒体１０を介して互いに接続されている。通信媒体１０は、たとえば、InfiniBandと呼ばれるインタフェース技術を利用する。これらの各ノード１００，２００，２００ａ，２００ｂ，・・・が協働して様々な処理を実行する。
【００４２】
各ノード１００，２００，２００ａ，２００ｂ，・・・は、通信媒体１０を介して互いにデータの送受信を行う。このデータ転送は高速に行うことが望まれるため、ゼロコピー転送が実施される。その際、各ノード１００，２００，２００ａ，２００ｂ，・・・が他の全てのノードに応じたＩ／Ｏアドレスを用意すると、メモリ空間の枯渇を招く。そこで、本実施の形態では、データ転送時のＩ／Ｏアドレスの効率的な割当てを行う。
【００４３】
図３は、本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。ノード１００は、ＣＰＵ(Central Processing Unit)１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信装置１０６，１０７が接続されている。
【００４４】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００４５】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００４６】
通信装置１０６，１０７は、通信媒体１０に接続されている。通信装置１０６，１０７は、通信媒体１０を介して、他のノードとの間でデータの送受信を行う。また、通信装置１０６，１０７は、ＲＤＭＡによるデータ転送機能を有している。すなわち、通信装置１０６，１０７は、データを送信する際に、通信相手のＩ／Ｏアドレスを指定して、データを送信することができる。また、通信装置１０６，１０７は、自身のＩ／Ｏアドレスを指定したデータを受信したとき、そのＩ／Ｏアドレスを、データの受信対象であるユーザアプリケーション（仮想識別子で判別される）が管理するメモリ領域のアドレスに変換する。そして、通信装置１０６，１０７は、ユーザアプリケーションのメモリ領域に、受信したデータを直接書き込むことができる。
【００４７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３にはノード１００のハードウェア構成例を示したが、他のノード２００，２００ａ，２００ｂ，・・・も同様のハードウェアで実現することができる。
【００４８】
図４は、ノード内の機能構成を示す図である。ノード１００には、ソフトウェアによってユーザアプリケーション１１０と通信装置管理部１２０とが実装されている。ユーザアプリケーション１１０と通信装置管理部１２０とは、ノード１００内のプロセスとして動作する。ユーザアプリケーション１１０は、たとえば、ＤＢサーバ機能などの各種データ処理提供機能である。
【００４９】
通信装置管理部１２０は、通信装置１０６，１０７の動作を管理する。通信装置管理部１２０は、たとえば、デバイスドライバとして実装される。通信装置管理部１２０は、自仮想識別子管理情報１２１と相手仮想識別子管理情報１２２とを有している。自仮想識別子管理情報１２１には、通信装置１０６，１０７のＩＯアドレスと自装置の仮想識別子との対応関係が登録される。相手仮想識別子管理情報１２２には、通信相手ノードのＩＰアドレスと相手装置の仮想識別子との対応関係が登録される。なお、自仮想識別子管理情報１２１と相手仮想識別子管理情報１２２とは、ＲＡＭ１０２やＨＤＤ１０３等の記憶装置内に格納される。
【００５０】
同様に、ノード２００には、ソフトウェアによってユーザアプリケーション２１０と通信装置管理部２２０とが実装されている。ユーザアプリケーション２１０と通信装置管理部２２０とは、ノード２００内のプロセスとして動作する。通信装置管理部２２０は、通信装置２０６，２０７の動作を管理する。通信装置管理部２２０は、自仮想識別子管理情報２２１と相手仮想識別子管理情報２２２とを有している。自仮想識別子管理情報２２１には、通信装置２０６，２０７のＩＯアドレスと自装置の仮想識別子との対応関係が登録される。相手仮想識別子管理情報２２２には、通信相手ノードのＩＰアドレスと相手装置の仮想識別子との対応関係が登録される。なお、自仮想識別子管理情報２２１と相手仮想識別子管理情報２２２とは、ＲＡＭやＨＤＤ等の記憶装置内に格納される。
【００５１】
図５は、自仮想識別子管理情報のデータ構造例を示す図である。図５に示すように、自仮想識別子管理情報１２１のデータ構造は、２次元のリスト構造となっている。すなわち、自仮想識別子管理情報１２１では、仮想識別子と通信装置の識別子との組に対応付けて、構造体２１〜２６が登録されている。仮想識別子は、ユーザアプリケーションのメモリ領域に一意に対応付けられている。
【００５２】
図６は、自仮想識別子管理情報の構造体の内容を示す図である。構造体２１には、仮想識別子、装置識別子、Ｉ／Ｏアドレス、メモリアドレス、長さ、仮想識別子リスト用領域、および通信装置構造体リスト用領域が設けられている。
【００５３】
仮想識別子は、構造体２１が対応付けられている仮想識別子である。装置識別子は、構造体２１が対応付けられている通信装置の識別子である。Ｉ／Ｏアドレスは、構造体２１が対応付けられた通信装置のデータ受信用のメモリ領域のアドレスである。
【００５４】
メモリアドレスは、構造体２１が対応付けられたユーザアプリケーションの管理するメモリ領域の先頭アドレスである。ここで、ノード１００が仮想メモリ空間を実現したコンピュータであれば、ユーザアプリケーションの管理するメモリ領域とは、ユーザアプリケーションのプロセスに割り当てられた仮想メモリ空間内の一部の領域である。このメモリ領域と、実メモリ（ＲＡＭ１０２）内のアドレスとの対応関係は、ＯＳによって管理される。
【００５５】
長さは、ユーザアプリケーションの管理するメモリ領域のサイズである。仮想識別子リスト用領域には、自仮想識別子管理情報１２１における２次元のリスト構造上での次の仮想識別子の構造体の位置を示すポインタが登録される。通信装置構造体リスト用領域には、自仮想識別子管理情報１２１における２次元のリスト構造上での次の通信装置の構造体の位置を示すポインタが登録される。
【００５６】
図７は、相手仮想識別子管理情報のデータ構造例を示す図である。図７に示すように、相手仮想識別子管理情報１２２のデータ構造は、２次元のリスト形式となっている。すなわち、相手仮想識別子管理情報１２２では、仮想識別子と通信装置の識別子との組に対応付けて、構造体３１〜３６が登録されている。
【００５７】
図８は、自仮想識別子管理情報の構造体の内容を示す図である。構造体３１には、相手ＩＰアドレス、相手仮想識別子、自装置識別子、相手Ｉ／Ｏアドレス、相手メモリアドレス、相手長さ、使用カウンタ、ＩＰアドレスリスト用領域、および通信装置構造体リスト用領域とが設けられている。
【００５８】
相手ＩＰアドレスは、構造体３１が対応付けられている相手ＩＰアドレスである。相手仮想識別子は、構造体３１が対応付けられている相手ＩＰアドレスに該当するノードで定義された仮想識別子である。自装置識別子は、構造体３１が対応付けられている通信装置の識別子である。相手Ｉ／Ｏアドレスは、相手仮想識別子に割り当てられているＩ／Ｏメモリ領域の先頭アドレスである。相手メモリアドレスは、通信相手のユーザアプリケーションが管理するメモリ領域の先頭アドレスである。相手長さは、通信相手のユーザアプリケーションが管理するメモリ領域のサイズである。
【００５９】
使用カウンタは、実行されているデータ転送処理の数を示すカウンタである。使用カウンタは、構造体３１で示される通信パスを用いてデータ転送が開始されると１ずつカウントアップされ、データ転送が完了すると１ずつカウントダウンされる。使用カウンタの値が「０」であれば、構造体３１で示される通信パスを使用したデータ転送が行われていない。
【００６０】
ＩＰアドレスリスト用領域には、相手仮想識別子管理情報１２２における２次元のリスト構造上での次の相手ＩＰアドレスの構造体の位置を示すポインタが登録される。通信装置構造体リスト用領域には、自仮想識別子管理情報１２１における２次元のリスト構造上での次の通信装置の構造体の位置を示すポインタが登録される。
【００６１】
次に、ノード２００からノード１００に対してデータを転送する場合を例に採り、データ転送手順を説明する。データ転送を行うには、前段階として仮想識別子の取得処理が行われる。
【００６２】
図９は、仮想識別子の取得処理を示すフローチャートである。以下、ノード１００における処理として、図９に示す処理をステップ番号に沿って説明する。
〔ステップＳ１１〕ユーザアプリケーション１１０から通信装置管理部１２０に対して、仮想識別子の取得要求が出される。
【００６３】
〔ステップＳ１２〕通信装置管理部１２０は、新たな仮想識別子を生成し、自仮想識別子管理情報１２１に登録する。そして、通信装置管理部１２０は、生成した仮想識別子をユーザアプリケーション１１０に渡す。これにより、ユーザアプリケーション１１０が仮想識別子を獲得することができる。
【００６４】
このような仮想識別子取得処理は、ノード２００においても同様に行われる。
図１０は、仮想識別子取得処理を示す図である。具体的には、ユーザアプリケーション１１０から通信装置管理部１２０に対して仮想識別子の取得要求が出され、通信装置管理部１２０からユーザアプリケーション１１０へ仮想識別子が返される。同様に、ユーザアプリケーション２１０から通信装置管理部２２０に対して仮想識別子の取得登録要求が出され、通信装置管理部２２０からユーザアプリケーション２１０へ仮想識別子が返される。
【００６５】
その後、ノード２００のユーザアプリケーション２１０からノード１００のユーザアプリケーション１１０にデータを転送する場合、ノード１００側の通信装置１０６，１０７のＩ／Ｏアドレスを、ノード２００側で取得する。
【００６６】
図１１は、Ｉ／Ｏアドレス取得処理を示す概念図である。なお、ノード１００の通信装置１０６の装置識別子を「装置＃１」、通信装置１０７の装置識別子を「装置＃２」とする。
【００６７】
ノード１００の通信装置管理部１２０は、ノード２００の通信装置管理部２２０に対して、ユーザアプリケーション１１０用に生成した仮想識別子４１を送信する。すると、ノード２００側の通信装置管理部２２０は、受信した仮想識別子４１を保持する。具体的には、通信装置管理部２２０内の相手仮想識別子管理情報２２２に登録される。この状態では、まだ仮想識別子４２に対応する実識別子（Ｉ／Ｏアドレス）は登録されていない。
【００６８】
次に、ノード２００の通信装置管理部２２０からノード１００の通信装置管理部１２０へ、仮想識別子４２に関する仮想識別子解決要求５１が送信される。すると、通信装置管理部１２０において、通信装置１０６の実識別子（Ｉ／Ｏアドレス）が取得される。
【００６９】
具体的には、通信装置管理部１２０が通信装置１０６用のＩ／Ｏメモリ領域１０６ａをアドレス空間に確保する。さらに、通信装置管理部１２０は、Ｉ／Ｏメモリ領域１０６ａのＩ／Ｏアドレスを仮想識別子４１に対応付ける。そして、通信装置管理部１２０は、通信装置１０６の装置識別子「装置＃１」とＩ／Ｏアドレス４３とを仮想識別子解決結果５２としてノード２００に送信する。
【００７０】
ノード１００では、通信装置管理部２２０が仮想識別子解決結果５２を受け取る。そして、通信装置管理部２２０は、通信装置１０６の装置識別子４４（装置＃１）とＩ／Ｏアドレス４５とを、仮想識別子４２に対応付けて保持する。具体的には、通信装置管理部２２０は、相手仮想識別子管理情報２２２内に、仮想識別子４２と装置識別子４４（装置＃１）との組み合わせに応じたＩ／Ｏアドレス４５を登録する。
【００７１】
図１２は、仮想識別子解決要求のデータ構造例を示す図である。仮想識別子解決要求５１は、仮想識別子解決要求プロトコル識別子と仮想識別子とが含まれている。仮想識別子解決要求プロトコル識別子は、仮想識別子解決要求であることを示す情報である。仮想識別子は、相手側のノードから通知された仮想識別子である。
【００７２】
図１３は、仮想識別子解決結果のデータ構造例を示す図である。仮想識別子解決結果５２には、仮想識別子解決結果プロトコル識別子、仮想識別子、Ｉ／Ｏアドレス、メモリアドレス、および長さが含まれている。仮想識別子解決結果プロトコル識別子は、仮想識別子解決結果であることを示す情報である。仮想識別子は、Ｉ／Ｏアドレスを割り当てた仮想識別子である。Ｉ／Ｏアドレスは、確保されたＩ／Ｏメモリ領域の先頭アドレスである。メモリアドレスは、受信側のユーザアプリケーションのメモリアドレスである。長さは、確保されたＩ／Ｏメモリ領域のデータサイズである。
【００７３】
このようにして、データの送信元となるノードにおいてＩ／Ｏアドレスを取得することで、そのＩ／Ｏアドレスを指定したＲＤＭＡ転送が可能となる。
図１４は、データ転送状況を示す図である。まず、ユーザアプリケーション２１０から通信装置管理部２２０へ転送要求が出される。この転送要求では、転送元のデータが格納されたメモリ領域２１１を示す情報と共に、ノード１００側のユーザアプリケーション１１０に対応する仮想識別子が指定される。
【００７４】
すると、通信装置管理部２２０は、通信装置２０６に対して転送要求を出力する。この転送要求では、転送元のデータが格納されたメモリ領域２１１を示す情報と共に、指定された仮想識別子に対応するＩ／Ｏアドレスが指定される。通信装置２０６は、転送要求で指定されたメモリ領域２１１からデータを取得し、そのデータを、転送要求で指示されたＩ／Ｏアドレスを指定してノード１００に転送する。
【００７５】
ノード１００では、通信装置１０６がデータを受け取る。このとき、データ転送で指定されたＩ／Ｏアドレスは、ユーザアプリケーション１１０のメモリ領域１１１に対応付けられているため、通信装置１０６は、取得したデータをメモリ領域１１１に随時格納する。
【００７６】
以下にデータ転送処理手順を詳細に説明する。
図１５は、データ転送処理の手順を示すシーケンス図である。この例では、ノード１００がデータの受信側であり、ノード２００がデータの送信側である。以下、図１５に示す処理をステップ番号に沿って説明する。
【００７７】
〔ステップＳ２１〕ノード２００のユーザアプリケーション２１０が、相手のＩＰアドレスと相手の仮想識別子とを指定した転送要求を、通信装置管理部２２０に対して出力する。
【００７８】
〔ステップＳ２２〕通信装置管理部２２０は、転送要求に応じたノード１００側の通信装置を選択する。
〔ステップＳ２３〕通信装置管理部２２０は、相手仮想識別子管理情報２２２を参照し、ステップＳ２２で選択した通信装置に対するＩ／Ｏアドレスが採取済か否かを判断する。採取済であれば処理がステップＳ２９に進められる。採取済でなければ処理がステップＳ２４に進められる。
【００７９】
〔ステップＳ２４〕通信装置管理部２２０は、ノード１００に対して、ステップＳ２２で選択した通信装置に対するＩ／Ｏアドレスの採取要求（仮想識別子解決要求）を出力する。
【００８０】
〔ステップＳ２５〕ノード１００の通信装置管理部１２０は、自仮想識別子管理情報１２１を参照し、仮想識別子解決要求を受け取り、該当する通信装置に対するＩ／Ｏアドレスが採取済みか否かを判断する。採取済みであれば処理がステップＳ２７に進められる。採取済みでなければ処理がステップＳ２６に進められる。
【００８１】
〔ステップＳ２６〕通信装置管理部１２０は、該当する通信装置に対するＩ／Ｏアドレスを採取する。すなわち、通信装置管理部１２０は、通信装置用のＩ／Ｏメモリ領域をメモリ空間上に確保し、Ｉ／Ｏアドレスを取得する。さらに、通信装置管理部１２０は、採取したＩ／Ｏアドレスを自仮想識別子管理情報１２１に登録する。
【００８２】
〔ステップＳ２７〕通信装置管理部１２０は、該当する通信装置に対するＩ／Ｏアドレスをノード２００に応答（仮想識別子解決結果）する。
〔ステップＳ２８〕ノード２００の通信装置管理部２２０は、仮想識別子とＩ／Ｏアドレスとを関連付ける。具体的には、通信装置管理部２２０は、仮想識別子解決結果で示される仮想識別子とＩ／Ｏアドレスとを関連づけて、相手仮想識別子管理情報２２２に登録する。
【００８３】
〔ステップＳ２９〕通信装置管理部２２０は、ステップＳ２２で選択したノード１００側の通信装置２２０に対するＩ／Ｏアドレスを指定して、通信装置２０６または通信装置２０７に対してＲＤＭＡの転送要求を出力する。すると、通信装置が、ユーザアプリケーション２１０のメモリ領域２１１内のデータを、指定されたＩ／Ｏアドレス宛にＲＤＭＡ転送を開始する。
【００８４】
このとき、通信装置管理部２２０は、相手仮想識別子に対応付けて設けられている使用カウンタをカウントアップする。なお、使用カウンタは、データ転送完了時に減算される。この使用カウンタの値を参照することで、該当するＩ／Ｏアドレスが使用中か否かを判断できる。すなわち、使用カウンタの値が１以上であれば、該当するＩ／Ｏアドレスを用いたデータ転送実行中である。
【００８５】
このようにして、ユーザアプリケーション２１０からは、相手の仮想識別子を指定することで、ＲＤＭＡによるデータ転送を行うことができる。その結果、ユーザアプリケーション２１０側で通信パスを意識せずに済む。
【００８６】
なお、ノード２００によってＩ／Ｏアドレスが取得されたとき、そのＩ／Ｏアドレスに対応するノード１００側の仮想識別子はノード２００によって占有される。すなわち、ノード２００は、Ｉ／Ｏアドレスを確保している間は、そのＩ／Ｏアドレス宛に適宜データ転送を行うことができる。
【００８７】
なお、ノード１００側の仮想識別子に対応して確保されたＩ／Ｏメモリ領域は、ノード１００からの開放要求に基づいて開放される。解放要求は、たとえば、複数の他のデータ受信用に確保されたＩ／Ｏメモリ領域の総量が所定値を超えた場合や、該当するＩ／Ｏメモリ領域を指定したデータ転送が所定期間実施されなかった場合に出される。Ｉ／Ｏメモリ領域を開放するには、その仮想識別子に対応するＩ／Ｏメモリ領域を確保したノード２００において、Ｉ／Ｏメモリ領域の開放を行う必要がある。
【００８８】
図１６は、仮想識別子開放処理の手順を示すシーケンス図である。以下、図１６に示す処理をステップ番号に沿って説明する。
〔ステップＳ４１〕ノード１００のユーザアプリケーション１１０は、通信装置管理部１２０に対して仮想識別子の開放要求を出力する。
【００８９】
〔ステップＳ４２〕通信装置管理部１２０は、仮想識別子が有するＩ／Ｏアドレスが、他のノードによって取得済みか否かを判断する。取得済みであれば、処理がステップＳ４３に進められる。取得済みでなければ、処理がステップＳ４６に進められる。
【００９０】
〔ステップＳ４３〕通信装置管理部１２０は、仮想識別子を指定した解放要求をノード２００に対して送信する。
〔ステップＳ４４〕ノード２００の通信装置管理部２２０は、解放要求で指定された仮想識別子に対応するＩ／Ｏアドレスが使用中か否かを判断する。使用中であればステップＳ４４の処理が繰り返される。使用中でなければ処理がステップＳ４５に進められる。すなわち、Ｉ／Ｏアドレスがデータ転送に使用中の場合には、データ転送の終了を待って処理がステップＳ４５に進められる。
【００９１】
〔ステップＳ４５〕通信装置管理部２２０は、指定された仮想識別子を解放し、解放確認をノード１００に送信する。仮想識別子の解放とは、その仮想識別子に対応付けて登録されているＩ／Ｏアドレスを消去する処理である。
【００９２】
〔ステップＳ４６〕ノード１００の通信装置管理部１２０は、仮想識別子の解放処理を行う。具体的には、通信装置管理部１２０は、仮想識別子に対応付けて登録されていたＩ／Ｏアドレスを削除する。
【００９３】
図１７は、仮想識別子解放要求のデータ構造例を示す図である。仮想識別子解放要求５３には、仮想識別子解放要求であることを示す仮想識別子解放要求プロトコル識別子と、解放対象の仮想識別子とが含まれる。
【００９４】
図１８は、仮想識別子解放確認のデータ構造例を示す図である。仮想識別子解放確認５４には、仮想識別子解放確認であることを示す仮想識別子解放確認プロトコル識別子と、解放された仮想識別子とが含まれる。
【００９５】
このようにして、仮想識別子の解放が行われることで、対応するＩ／Ｏメモリ領域が解放される。その結果、使用されていないＩ／Ｏメモリ領域が特定のノードによって占有されること事態を防止できる。その結果、ノード１００におけるメモリ空間を効率良く利用できる。
【００９６】
また、通信中に障害が発生した場合、Ｉ／Ｏアドレスを自動的（ユーザアプリケーションが関与せず）に再取得することができる。
図１９は、Ｉ／Ｏアドレス再取得の状況を示す図である。図１９の例では、通信装置２０６から通信装置１０６へのデータ転送に障害が発生した場合を想定している。
【００９７】
通信装置１０６において異常を検出すると、通信装置１０６から通信装置管理部１２０へ異常発生が通知される。すると、通信装置管理部１２０が実識別子（Ｉ／Ｏアドレス）を再取得する。
【００９８】
図１９の例では、通信装置管理部１２０は、通信装置１０７のＩ／Ｏメモリ領域１０７ａを確保し、そのＩ／Ｏアドレスを取得している。そして、通信装置管理部１２０は、再マップ通知をノード２００に対して送信する。再マップ通知には、異常が発生した通信の仮想識別子、新たに採取したＩ／Ｏアドレス、および通信装置１０７の装置識別子が含まれる。
【００９９】
ノード２００では、再マップ通知を通信装置管理部２２０が受け取る。通信装置管理部２２０は、再マップ通知に従って、仮想識別子に対応付けて登録されているＩ／Ｏアドレスや装置識別子等を更新する。
【０１００】
このようにして、通信障害発生時にもユーザアプリケーションに意識させずに、データ転送可能な状態を復旧することができる。従って、ユーザアプリケーションにおいて、通信障害発生時の対策時の再接続に関する機能を備える必要がなくなる。これにより、ユーザアプリケーションの開発が容易になると共に、複数のノードで協働して動作させるユーザアプリケーションの信頼性が向上する。
【０１０１】
次に、ノード２００からノード１００へのデータ転送例を具体的に説明する。ここで、データ転送環境を以下に示す。
まず、送信側のノード２００の環境を示す。ノード２００のＩＰアドレスは「192.168.1.1」である。ユーザアプリケーション２１０のメモリ領域２１１は、メモリアドレスが「０ｘ１００」、長さが「０ｘ１００」である。通信装置２０６の識別子は「Ａ１」、通信装置２０７の識別子は「Ａ２」である。
【０１０２】
次に、受信側のノード１００の環境を示す。ノード１００のＩＰアドレスは「192.168.1.2」である。ユーザアプリケーション１１０のメモリ領域１１１は、メモリアドレスが「０ｘ５００」、長さが「０ｘ１００」である。通信装置１０６の識別子は「Ｂ１」、通信装置１０７の識別子は「Ｂ２」である。
【０１０３】
このようなデータ転送環境において実行されるデータ転送手順を以下に示す。
図２０は、データ転送手順を示すシーケンス図である。以下、図２０に示す処理をステップ番号に沿って説明する。
【０１０４】
〔ステップＳ５１〕ノード２００において、メモリ領域２１１に対して仮想識別子を採取する。この例では、仮想識別子「０ｘ０」が採取されたものとする。
〔ステップＳ５２〕ノード１００において、メモリ領域１１１に対して仮想識別子を採取する。この例では、仮想識別子「０ｘ２」が採取されたものとする。
【０１０５】
〔ステップＳ５３〕ノード１００から送信側のノード２００へ仮想識別子「０ｘ２」を送信する。
〔ステップＳ５４〕ノード２００では、受信側のノード１００から送られた仮想識別子「０ｘ２」を受信する。
【０１０６】
〔ステップＳ５５〕ノード２００では、ユーザアプリケーション２１０より、仮想識別子「０ｘ０」からノード１００の仮想識別子「０ｘ２」への長さ「０ｘ１００」の転送要求が出される。
【０１０７】
〔ステップＳ５６〕ノード２００は仮想識別子「０ｘ２」に対するＩ／Ｏアドレスを持っていないため、仮想識別子解決要求を通信装置２０６を介してノード１００に対して送信する。
【０１０８】
〔ステップＳ５７〕ノード１００では、仮想識別子解決要求を受け取ると、仮想識別子「０ｘ２」に対するＩ／Ｏアドレスを定義していないため、通信装置１０６のＩ／Ｏアドレス「０ｘ１ｃ００」を取得する。そして、ノードでは、取得したＩ／Ｏアドレスを仮想識別子「０ｘ２」に対応付けて登録する。
【０１０９】
〔ステップＳ５８〕ノード１００では、仮想識別子「０ｘ２」に対する仮想識別子解決結果を、通信装置１０６を介してノード２００へ送信する。
〔ステップＳ５９〕ノード２００では、仮想識別子解決結果を受信し、情報を登録する。
【０１１０】
〔ステップＳ６０〕ノード２００では、相手側の仮想識別子「０ｘ２」に対する転送を、通信装置２０６で開始し、使用カウンタを加算する。
〔ステップＳ６１〕ノード２００では、転送が完了すると、使用カウンタを減算する。
【０１１１】
このような手順でデータ転送が行われる。以下に、データ転送手順の進行状況に応じた各ノード１００，２００内で保持する情報（自仮想識別子管理情報および相手仮想識別子管理情報）の遷移について説明する。
【０１１２】
図２１は、仮想識別子採取後の各情報の内容を示す図である。ノード２００では、仮想識別子の採取処理（ステップＳ５１）が行われたことにより、自仮想識別子管理情報２２１に仮想識別子「０ｘ０」が登録されている。ノード１００では、仮想識別子の採取処理（ステップＳ５２）が行われたことにより、自仮想識別子管理情報１２１に仮想識別子「０ｘ２」が登録されている。
【０１１３】
その後、ノード１００の仮想識別子「０ｘ２」が送信され（ステップＳ５３）ると、ノード２００の相手仮想識別子管理情報２２２が更新される。
図２２は、仮想識別子配信後の各情報の内容を示す図である。ノード１００からノード２００へ仮想識別子をノード２００が受信（ステップＳ５４）し、その仮想識別子への転送要求が出された（ステップＳ５５）ことで、ノード２００の相手仮想識別子管理情報２２２に構造体２２２ａが登録される。
【０１１４】
具体的には、構造体２２２ａは、通信装置２０６の装置識別子「Ａ１」とノード１００のＩＰアドレス「192.168.1.2」とに対応付けて登録される。構造体２２２ａには、相手ＩＰアドレス「192.168.1.2」、相手仮想識別子「０ｘ２」、自装置識別子「Ａ１」、使用カウンタ「０」が設定されている。
【０１１５】
その後、ノード２００からノード１００へ仮想識別子解決要求が出される（ステップＳ５６）。
図２３は、仮想識別子解決要求の内容を示す図である。仮想識別子解決要求５１ａには、仮想識別子解決要求であることを示す仮想識別子解決要求プロトコル識別子とノード１００の仮想識別子「０ｘ２」が含まれている。
【０１１６】
仮想識別子解決要求５１ａを受け取ったノード１００では、Ｉ／Ｏアドレスが取得され（ステップＳ５７）、自仮想識別子管理情報１２１が更新される。
図２４は、Ｉ／Ｏアドレス取得後の各情報の内容を示す図である。ノード１００の自仮想識別子管理情報１２１には、構造体１２１ａが登録されている。具体的には、構造体１２１ａは、仮想識別子「０ｘ２」と装置識別子「Ｂ１」とに対応付けて登録されている。構造体１２１ａには、仮想識別子「０ｘ２」、装置識別子「Ｂ１」、Ｉ／Ｏアドレス「０ｘ１ｃ００」、メモリアドレス「０ｘ５００」、長さ「０ｘ１００」が設定されている。
【０１１７】
その後、ノード１００からノード２００へ、仮想識別子解決結果が送信される（ステップＳ５８）。
図２５は、仮想識別子解決結果の内容を示す図である。仮想識別子解決結果５２ａには、仮想識別子解決結果であることを示す仮想識別子解決結果プロトコル識別子、仮想識別子「０ｘ２」、Ｉ／Ｏアドレス「０ｘ１ｃ００」、メモリアドレス「０ｘ５００」、長さ「０ｘ１００」が含まれている。
【０１１８】
このような仮想識別子解決結果５２ａを受け取ったノード２００では、仮想識別子解決結果５２ａに含まれる情報が相手仮想識別子管理情報２２２内の構造体２２２ａに登録される（ステップＳ５９）。
【０１１９】
図２６は、仮想識別子解決結果受信後の各情報の状態を示す図である。仮想識別子解決結果５２ａを受信したことにより、構造体２２２ａには、相手Ｉ／Ｏアドレス「０ｘ１ｃ００」、相手メモリアドレス「０ｘ５００」、相手長さ「０ｘ１００」が追加登録されている。
【０１２０】
ノード２００では構造体２２２ａを参照することで、ノード１００のＩ／Ｏアドレスを認識し、そのアドレスを指定したＲＤＭＡ転送が開始される（ステップＳ６０）。ＲＤＭＡ転送が開始されると、構造体２２２ａの使用カウンタの値が更新される。
【０１２１】
図２７は、データ転送中の各情報の内容を示す図である。データ転送が開始されたことにより、ノード２００側の相手仮想識別子管理情報２２２内の構造体２２２ａの使用カウンタが「１」に変更されている。この使用カウンタの値は、データ転送が完了すると１だけ減算される。
【０１２２】
以上説明したように、データを送信するノードから仮想識別子解決要求があったときに、ＲＤＭＡ転送用のＩ／Ｏメモリ領域を確保するため、データ受信側において全ての通信相手に応じたＩ／Ｏメモリ領域を予め確保しておく必要がない。これにより、Ｉ／Ｏメモリ領域に関する資源を節約できる。
【０１２３】
しかも、ユーザアプリケーションからは、仮想識別子を指定したデータの転送要求を出すだけで、その仮想識別子に対応するＩ／Ｏアドレスが取得され、そのＩ／Ｏアドレスを指定したＲＤＭＡ転送が行われる。これにより、ユーザアプリケーションにおいては、Ｉ／Ｏアドレスの確保の有無を意識する必要が無く、ユーザアプリケーション用のプログラム開発の負荷が軽減される。
【０１２４】
さらに、メモリ空間内でのＩ／Ｏメモリ領域の確保や解放を通信装置管理部が一元管理するため、Ｉ／Ｏメモリ領域の使用状況を勘案し、システム全体が効率良く動作できるようにＩ／Ｏメモリ領域の総量等を管理できる。
【０１２５】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、各サーバが有すべき機能の処理内容を記述した通信装置管理プログラムが提供される。その通信装置管理プログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述した通信装置管理プログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disk)などがある。
【０１２６】
通信装置管理プログラムを流通させる場合には、たとえば、その通信装置管理プログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、通信装置管理プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにその通信装置管理プログラムを転送することもできる。
【０１２７】
通信装置管理プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録された通信装置管理プログラムもしくはサーバコンピュータから転送された通信装置管理プログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置から通信装置管理プログラムを読み取り、通信装置管理プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接通信装置管理プログラムを読み取り、その通信装置管理プログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータから通信装置管理プログラムが転送される毎に、逐次、受け取った通信装置管理プログラムに従った処理を実行することもできる。
【０１２８】
（付記１）  通信装置によるデータ受信処理を管理するための通信装置管理プログラムにおいて、
コンピュータに、
仮想識別子送信手段が、ネットワークを介して接続されている通信相手からデータを取得するプロセスに対応する仮想識別子を前記通信相手に送信し、
前記通信相手から前記仮想識別子を指定したアドレス取得要求を受け取ると、メモリ領域確保手段が、前記通信装置のデータ受信用メモリ領域をメモリ空間上に確保し、
識別子管理情報格納手段が、前記仮想識別子と前記データ受信用メモリ領域との対応関係を記憶装置に格納し、
メモリ領域通知手段が、確保された前記データ受信用メモリ領域を前記通信相手に通知し、
前記通信相手から前記データ受信用メモリ領域を指定した転送データを受け取ると、データ受信制御手段が、前記記憶装置を参照して前記データ受信用メモリ領域に対応する前記プロセスを判断し、前記通信装置に対し、前記プロセスが管理するメモリ領域への前記転送データの格納指示を出力する、
処理を実行させることを特徴とする通信装置管理プログラム。
【０１２９】
（付記２）  メモリ領域解放手段が、データ転送に使用されていない前記データ受信用メモリ領域を開放することを特徴とする付記１記載の通信装置管理プログラム。
（付記３）  メモリ領域解放手段は、前記仮想識別子に対応付けられた前記メモリ領域の解放要求を前記通信相手に対して送信し、前記解放要求に対応する確認応答を受けると、前記記憶装置に格納された前記仮想識別子と前記データ受信用メモリ領域との対応関係を削除することを特徴とする付記２記載の通信装置管理プログラム。
【０１３０】
（付記４）  前記メモリ領域確保手段は、前記通信装置に確保した前記データ受信用メモリ領域を使用したデータ転送において異常の発生を検出した場合、再度前記データ受信用メモリ領域を前記メモリ空間上に確保することを特徴とする付記１記載の通信装置管理プログラム。
【０１３１】
（付記５）  通信相手のメモリアドレスを指定したデータ転送を行うための通信装置管理プログラムにおいて、
コンピュータに、
仮想識別子受信手段が、ネットワークを介して接続されている通信相手から仮想識別子を受信して、前記仮想識別子を記憶装置に格納し、
メモリ領域判断手段が、プロセスから前記仮想識別子を指定した転送要求を受け取ると、前記記憶装置を参照して、前記仮想識別子に対応する前記通信相手のデータ受信用メモリ領域の確保の有無を判断し、
メモリ領域が確保されていない場合、メモリ領域確保要求手段が、前記通信相手に対して前記データ受信用メモリ領域の確保要求を送信し、
前記通信相手から確保された前記データ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域情報格納手段が、前記メモリ領域を示す情報を前記仮想識別子に対応付けて前記記憶装置に格納し、
データ送信制御手段が、前記記憶領域を参照し、前記転送要求で指定された前記仮想識別子に対応する前記前記データ受信用メモリ領域を判断し、通信装置に対し、前記プロセスが管理するメモリ領域内から前記通信相手への前記データ受信用メモリ領域を指定したデータ転送指示を出力する、
処理を実行させることを特徴とする通信装置管理プログラム。
【０１３２】
（付記６）  メモリ領域解放手段が、前記通信相手からの解放要求を受け取ると、前記メモリ領域へのデータ転送の完了を確認して、前記通信相手に開放確認を応答することを特徴とする付記５記載の通信装置管理プログラム。
【０１３３】
（付記７）  通信装置によるデータ受信処理を管理するための通信装置管理方法において、
仮想識別子送信手段が、ネットワークを介して接続されている通信相手からデータを取得するプロセスに対応する仮想識別子を前記通信相手に送信し、
前記通信相手から前記仮想識別子を指定したアドレス取得要求を受け取ると、メモリ領域確保手段が、前記通信装置のデータ受信用メモリ領域をメモリ空間上に確保し、
識別子管理情報格納手段が、前記仮想識別子と前記データ受信用メモリ領域との対応関係を記憶装置に格納し、
メモリ領域通知手段が、確保された前記データ受信用メモリ領域を前記通信相手に通知し、
前記通信相手から前記データ受信用メモリ領域を指定した転送データを受け取ると、データ受信制御手段が、前記記憶装置を参照して前記データ受信用メモリ領域に対応する前記プロセスを判断し、前記通信装置に対し、前記プロセスが管理するメモリ領域への前記転送データの格納指示を出力する、
ことを特徴とする通信装置管理方法。
【０１３４】
（付記８）  通信相手のメモリアドレスを指定したデータ転送を行うための通信装置管理方法において、
仮想識別子受信手段が、ネットワークを介して接続されている通信相手から仮想識別子を受信して、前記仮想識別子を記憶装置に格納し、
メモリ領域判断手段が、プロセスから前記仮想識別子を指定した転送要求を受け取ると、前記記憶装置を参照して、前記仮想識別子に対応する前記通信相手のデータ受信用メモリ領域の確保の有無を判断し、
メモリ領域が確保されていない場合、メモリ領域確保要求手段が、前記通信相手に対して前記データ受信用メモリ領域の確保要求を送信し、
前記通信相手から確保された前記データ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域情報格納手段が、前記メモリ領域を示す情報を前記仮想識別子に対応付けて前記記憶装置に格納し、
データ送信制御手段が、前記記憶領域を参照し、前記転送要求で指定された前記仮想識別子に対応する前記前記データ受信用メモリ領域を判断し、通信装置に対し、前記プロセスが管理するメモリ領域内から前記通信相手への前記データ受信用メモリ領域を指定したデータ転送指示を出力する、
ことを特徴とする通信装置管理方法。
【０１３５】
（付記９）  通信装置によるデータ受信処理を管理するための通信管理装置において、
ネットワークを介して接続されている通信相手からデータを取得するプロセスに対応する仮想識別子を前記通信相手に送信する仮想識別子送信手段と、
前記通信相手から前記仮想識別子を指定したアドレス取得要求を受け取ると、前記通信装置のデータ受信用メモリ領域をメモリ空間上に確保するメモリ領域確保手段と、
前記仮想識別子と前記データ受信用メモリ領域との対応関係を記憶装置に格納する識別子管理情報格納手段と、
確保された前記データ受信用メモリ領域を前記通信相手に通知するメモリ領域通知手段と、
前記通信相手から前記データ受信用メモリ領域を指定した転送データを受け取ると、前記記憶装置を参照して前記データ受信用メモリ領域に対応する前記プロセスを判断し、前記通信装置に対し、前記プロセスが管理するメモリ領域への前記転送データの格納指示を出力するデータ受信制御手段と、
を有することを特徴とする通信管理装置。
【０１３６】
（付記１０）  通信相手のメモリアドレスを指定したデータ転送を行うための通信管理装置において、
ネットワークを介して接続されている通信相手から仮想識別子を受信して、前記仮想識別子を記憶装置に格納する仮想識別子受信手段と、
プロセスから前記仮想識別子を指定した転送要求を受け取ると、前記記憶装置を参照して、前記仮想識別子に対応する前記通信相手のデータ受信用メモリ領域の確保の有無を判断するメモリ領域判断手段と、
メモリ領域が確保されていない場合、前記通信相手に対して前記データ受信用メモリ領域の確保要求を送信するメモリ領域確保要求手段と、
前記通信相手から確保された前記データ受信用メモリ領域の範囲を示す確保結果を受け取ると、前記メモリ領域を示す情報を前記仮想識別子に対応付けて前記記憶装置に格納するメモリ領域情報格納手段と、
前記記憶領域を参照し、前記転送要求で指定された前記仮想識別子に対応する前記前記データ受信用メモリ領域を判断し、通信装置に対し、前記プロセスが管理するメモリ領域内から前記通信相手への前記データ受信用メモリ領域を指定したデータ転送指示を出力するデータ送信制御手段と、
を有することを特徴とする通信管理装置。
【０１３７】
（付記１１）  通信装置によるデータ受信処理を管理するための通信装置管理プログラムを記憶するコンピュータ読み取り可能な記録媒体において、
コンピュータに、
仮想識別子送信手段が、ネットワークを介して接続されている通信相手からデータを取得するプロセスに対応する仮想識別子を前記通信相手に送信し、
前記通信相手から前記仮想識別子を指定したアドレス取得要求を受け取ると、メモリ領域確保手段が、前記通信装置のデータ受信用メモリ領域をメモリ空間上に確保し、
識別子管理情報格納手段が、前記仮想識別子と前記データ受信用メモリ領域との対応関係を記憶装置に格納し、
メモリ領域通知手段が、確保された前記データ受信用メモリ領域を前記通信相手に通知し、
前記通信相手から前記データ受信用メモリ領域を指定した転送データを受け取ると、データ受信制御手段が、前記記憶装置を参照して前記データ受信用メモリ領域に対応する前記プロセスを判断し、前記通信装置に対し、前記プロセスが管理するメモリ領域への前記転送データの格納指示を出力する、
処理を実行させることを特徴とする通信装置管理プログラムを記憶するコンピュータ読み取り可能な記録媒体。
【０１３８】
（付記１２）  通信相手のメモリアドレスを指定したデータ転送を行うための通信装置管理プログラムを記憶するコンピュータ読み取り可能な記録媒体において、
コンピュータに、
仮想識別子受信手段が、ネットワークを介して接続されている通信相手から仮想識別子を受信して、前記仮想識別子を記憶装置に格納し、
メモリ領域判断手段が、プロセスから前記仮想識別子を指定した転送要求を受け取ると、前記記憶装置を参照して、前記仮想識別子に対応する前記通信相手のデータ受信用メモリ領域の確保の有無を判断し、
メモリ領域が確保されていない場合、メモリ領域確保要求手段が、前記通信相手に対して前記データ受信用メモリ領域の確保要求を送信し、
前記通信相手から確保された前記データ受信用メモリ領域の範囲を示す確保結果を受け取ると、メモリ領域情報格納手段が、前記メモリ領域を示す情報を前記仮想識別子に対応付けて前記記憶装置に格納し、
データ送信制御手段が、前記記憶領域を参照し、前記転送要求で指定された前記仮想識別子に対応する前記前記データ受信用メモリ領域を判断し、通信装置に対し、前記プロセスが管理するメモリ領域内から前記通信相手への前記データ受信用メモリ領域を指定したデータ転送指示を出力する、
処理を実行させることを特徴とする通信装置管理プログラムを記憶するコンピュータ読み取り可能な記録媒体。
【図面の簡単な説明】
【０１３９】
【図１】実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態に係るネットワークシステムを示す図である。
【図３】本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
【図４】ノード内の機能構成を示す図である。
【図５】自仮想識別子管理情報のデータ構造例を示す図である。
【図６】自仮想識別子管理情報の構造体の内容を示す図である。
【図７】相手仮想識別子管理情報のデータ構造例を示す図である。
【図８】自仮想識別子管理情報の構造体の内容を示す図である。
【図９】仮想識別子の取得処理を示すフローチャートである。
【図１０】仮想識別子取得処理を示す図である。
【図１１】Ｉ／Ｏアドレス取得処理を示す概念図である。
【図１２】仮想識別子解決要求のデータ構造例を示す図である。
【図１３】仮想識別子解決結果のデータ構造例を示す図である。
【図１４】データ転送状況を示す図である。
【図１５】データ転送処理の手順を示すシーケンス図である。
【図１６】仮想識別子開放処理の手順を示すシーケンス図である。
【図１７】仮想識別子解放要求のデータ構造例を示す図である。
【図１８】仮想識別子解放確認のデータ構造例を示す図である。
【図１９】Ｉ／Ｏアドレス再取得の状況を示す図である。
【図２０】データ転送手順を示すシーケンス図である。
【図２１】仮想識別子採取後の各情報の内容を示す図である。
【図２２】仮想識別子配信後の各情報の内容を示す図である。
【図２３】仮想識別子解決要求の内容を示す図である。
【図２４】Ｉ／Ｏアドレス取得後の各情報の内容を示す図である。
【図２５】仮想識別子解決結果の内容を示す図である。
【図２６】仮想識別子解決結果受信後の各情報の状態を示す図である。
【図２７】データ転送中の各情報の内容を示す図である。
【図２８】従来のデータ転送方式を示す図である。
【図２９】ＲＤＭＡを利用したデータ転送方式を示す図である。
【符号の説明】
【０１４０】
１  ノード
１ａ  通信装置
１ｂ  プロセス
１ｃ  仮想識別子送信手段
１ｄ  メモリ領域確保手段
１ｅ  識別子管理情報格納手段
１ｆ  記憶装置
１ｇ  メモリ領域通知手段
１ｈ  データ受信制御手段
２  ノード
２ａ  通信装置
２ｂ  プロセス
２ｃ  仮想識別子受信手段
２ｅ  メモリ領域確保要求手段
２ｆ  メモリ領域情報格納手段
２ｇ  記憶装置
２ｈ  データ送信制御手段
３  転送データ
【図１】
2005182491.tif 000003
【図２】
2005182491.tif 000004
【図３】
2005182491.tif 000005
【図４】
2005182491.tif 000006
【図５】
2005182491.tif 000007
【図６】
2005182491.tif 000008
【図７】
2005182491.tif 000009
【図８】
2005182491.tif 000010
【図９】
2005182491.tif 000011
【図１０】
2005182491.tif 000012
【図１１】
2005182491.tif 000013
【図１２】
2005182491.tif 000014
【図１３】
2005182491.tif 000015
【図１４】
2005182491.tif 000016
【図１５】
2005182491.tif 000017
【図１６】
2005182491.tif 000018
【図１７】
2005182491.tif 000019
【図１８】
2005182491.tif 000020
【図１９】
2005182491.tif 000021
【図２０】
2005182491.tif 000022
【図２１】
2005182491.tif 000023
【図２２】
2005182491.tif 000024
【図２３】
2005182491.tif 000025
【図２４】
2005182491.tif 000026
【図２５】
2005182491.tif 000027
【図２６】
2005182491.tif 000028
【図２７】
2005182491.tif 000029
【図２８】
2005182491.tif 000030
【図２９】
2005182491.tif 000031