(57)【特許請求の範囲】
【請求項１】
ピア・ツー・ピア（Ｐ２Ｐ）データ交換においてデータノードとして機能する装置であって、
ピア・リスト要求を発行し、ピアとのＰ２Ｐデータ交換を実行するデータノードアプリケーションユニットと、
前記ピア・リスト要求に応答してインデックスサーバによって提供されるオリジナルのピア・リストを傍受し、情報サーバにピア位置要求を発行し、ピア位置要求に応答して情報サーバによって提供されるピア位置情報を受信し、前記ピア位置情報に基づいてオリジナルのピア・リストについて処理を実行し、処理済みのピア・リストを取得し、処理済みのピア・リストを前記データノードアプリケーションユニットに提供するリスト処理ユニットとを備え、
前記リスト処理ユニットが、
ピア・リスト要求に応答して前記インデックスサーバによって提供されるオリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、傍受したピア・リスト応答メッセージを、アプリケーションメッセージ処理ユニットに配信するメッセージ傍受ユニットと、
前記メッセージ傍受ユニットから配信されたピア・リスト応答メッセージを受信すると、ピア・リスト応答メッセージに含まれるオリジナルのピア・リストを抽出し、前記情報サーバにピア位置要求を発行し、ピア位置要求に応答して前記情報サーバによって提供されるピア位置情報を受信し、前記ピア位置情報に基づいて、抽出したオリジナルのピア・リストについて処理を実行して処理済みのピア・リストを取得し、処理済みのピア・リストをメッセージ構成ユニットに提供する前記アプリケーションメッセージ処理ユニットと、
前記アプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、処理済みのピア・リストを含むピア・リスト応答メッセージを前記データ・ノード・アプリケーション・ユニットに提供する前記メッセージ構成ユニットと、
ピア・リスト要求を発行するために用いる再要求ユニットと、
一時的にピア・リストを格納するために用いるキャッシュユニットとを含み、
前記アプリケーションメッセージ処理ユニットは、オリジナルのピア・リストについて処理を実行した後に、処理済みのピア・リストにリストされたピアの数がしきい値に達しているかどうかを判定し、ピアの数が前記しきい値に達していない場合、処理済みのピア・リストを一時的に前記キャッシュユニットに格納し、ピア・リスト要求を発行するよう前記再要求ユニットに指示する
ことを特徴とする装置。
【請求項２】
前記データノードアプリケーションユニットが、１以上のデータノードアプリケーションユニットを含み、
前記アプリケーションメッセージ処理ユニットは、１以上のデータノードアプリケーションユニットに対応する１以上のアプリケーションメッセージ処理ユニットを含み、
前記メッセージ傍受ユニットは、１以上の前記データノードアプリケーションユニットのうち、特定のデータノードアプリケーションユニットに関連するピア・リスト要求に応答して提供されるオリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、１以上のアプリケーションメッセージ処理ユニットのうち、特定のデータノードアプリケーションユニットに対応するアプリケーションメッセージ処理ユニットに対して傍受したピア・リスト応答メッセージを配信し、
前記メッセージ構成ユニットは、１以上のアプリケーションメッセージ処理ユニットのうち、特定のアプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、１以上のデータノードアプリケーションユニットのうち、特定のアプリケーションメッセージ処理ユニットに対応するデータノードアプリケーションユニットに対して処理済みのピア・リストを含むピア・リスト応答メッセージを提供する
ことを特徴とする請求項１に記載の装置。
【請求項３】
前記データノードアプリケーションユニットが１以上のデータノードアプリケーションユニットを含み、
前記アプリケーションメッセージ処理ユニットは、１以上のデータノードアプリケーションユニットに対応する１以上のアプリケーションメッセージ処理ユニットを含み、
前記再要求ユニットは、１以上のアプリケーションメッセージ処理ユニットに対応する１以上の再要求ユニットを含み、
前記メッセージ傍受ユニットは、１以上の前記データノードアプリケーションユニットのうち、特定のデータノードアプリケーションユニットに関連するピア・リスト要求に応答して提供されるオリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、１以上のアプリケーションメッセージ処理ユニットのうち、特定のデータノードアプリケーションユニットに対応するアプリケーションメッセージ処理ユニットに対して傍受したピア・リスト応答メッセージを配信し、
１以上のアプリケーションメッセージ処理ユニットのそれぞれが、ピアノ数が前記しきい値に達していない場合、前記キャッシュユニットに処理済みのピア・リストを格納し、１以上の再要求ユニットのうち、自身のアプリケーションメッセージ処理ユニットに対応する再要求ユニットに対してピア・リスト要求の発行を指示し、
前記メッセージ構成ユニットは、１以上のアプリケーションメッセージ処理ユニットのうち、特定のアプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、１以上のデータノードアプリケーションユニットのうち、特定のアプリケーションメッセージ処理ユニットに対応するデータノードアプリケーションユニットに対して処理済みのピア・リストを含むピア・リスト応答メッセージを提供する
ことを特徴とする請求項１に記載の装置。
【請求項４】
前記ピア位置情報は、オリジナルのピア・リストにリストされたピアが存在するデータノードと前記データノード間のネットワーク距離に関する情報を含み、
前記処理が、前記ネットワーク距離の降順に、オリジナルのピア・リストにリストされたピアをソートする処理を含むことを特徴とする請求項１から請求項３の何れか１項に記載の装置。
【請求項５】
前記処理が、オリジナルのピア・リストにリストされたピアのうち、前記データノードと同一のネットワークドメイン内にないデータノード上に存在するピアを削除する処理を含むことを特徴とする請求項４に記載の装置。
【請求項６】
前記ピア位置情報は、オリジナルのピア・リストにリストされたピアが存在するデータノードと前記データノード間のネットワーク距離に関する情報を含み、
前記処理が、前記ネットワーク距離の降順に、オリジナルのピア・リストにリストされたピアをソートする処理と、オリジナルのピア・リストにリストされたピアのうち、前記データノードと同一のネットワークドメイン内にないデータノード上に存在するピアを削除する処理と、残りのピアを含むピア・リストを前記キャッシュユニットにキャッシュしたピア・リストと組み合わせる処理を含むことを特徴とする請求項１から請求項５の何れか１項に記載の装置。
【請求項７】
ピア・ツー・ピア（Ｐ２Ｐ）データ交換のためのデータノードとして機能する装置によるピア情報の取得方法であって、
データノードアプリケーションユニットが、ピア・リスト要求を発行し、ピアとのＰ２Ｐデータ交換を実行するデータノードアプリケーションステップと、
リスト処理ユニットが、前記ピア・リスト要求に応答してインデックスサーバによって提供されるオリジナルのピア・リストを傍受し、情報サーバにピア位置要求を発行し、ピア位置要求に応答して情報サーバによって提供されるピア位置情報を受信し、前記ピア位置情報に基づいてオリジナルのピア・リストについて処理を実行し、処理済みのピア・リストを取得し、処理済みのピア・リストを前記データノードアプリケーションユニットに提供するリスト処理ステップと、
前記リスト処理ユニットが含むメッセージ傍受ユニットが、ピア・リスト要求に応答して前記インデックスサーバによって提供されるオリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、傍受したピア・リスト応答メッセージを、アプリケーションメッセージ処理ユニットに配信するメッセージ傍受ステップと、
前記リスト処理ユニットが含むアプリケーションメッセージ処理ユニットが、前記メッセージ傍受ユニットから配信されたピア・リスト応答メッセージを受信すると、ピア・リスト応答メッセージに含まれるオリジナルのピア・リストを抽出し、前記情報サーバにピア位置要求を発行し、ピア位置要求に応答して前記情報サーバによって提供されるピア位置情報を受信し、前記ピア位置情報に基づいて、抽出したオリジナルのピア・リストについて処理を実行して処理済みのピア・リストを取得し、処理済みのピア・リストをメッセージ構成ユニットに提供するアプリケーションメッセージ処理ステップと、
前記リスト処理ユニットが含むメッセージ構成ユニットが、前記アプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、処理済みのピア・リストを含むピア・リスト応答メッセージを前記データ・ノード・アプリケーション・ユニットに提供するメッセージ構成ステップと、
前記リスト処理ユニットが含む再要求ユニットが、ピア・リスト要求を発行する再要求ステップと、
前記リスト処理ユニットが含むキャッシュユニットが、一時的にピア・リストを格納するキャッシュステップとを有し、
前記アプリケーションメッセージ処理ステップで、オリジナルのピア・リストについて処理を実行した後に、処理済みのピア・リストにリストされたピアの数がしきい値に達しているかどうかを判定し、ピアの数が前記しきい値に達していない場合、処理済みのピア・リストを一時的に前記キャッシュユニットに格納し、ピア・リスト要求を発行するよう前記再要求ユニットに指示する
ことを特徴とするピア情報の取得方法。
【請求項８】
ピア・ツー・ピア（Ｐ２Ｐ）データ交換においてピア情報を提供しかつ取得するためのシステムであって、
それぞれがピア・リスト要求に応答してオリジナルのピア・リストを提供する１つ以上のインデックスサーバと、
ピア位置要求に応答してピア位置情報を提供する情報サーバと、
請求項１から請求項６の何れかに記載の装置と
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークに関し、特に、Ｐ２Ｐクロスドメイン（ｃｒｏｓｓ−ｄｏｍａｉｎ）トラフィックを軽減することができる、ピア・ツー・ピア（Ｐ２Ｐ）データ交換において用いられるピア情報を提供し取得するデータノード装置、ピア情報取得方法およびシステムに関する。
【背景技術】
【０００２】
Ｐ２Ｐシステムは分散型データ共有システムであり、ファイル共有、ストリーミング・メディア（ｓｔｒｅａｍｉｎｇ  ｍｅｄｉａ）、ボイス・オーバ・インターネット・プロトコル（Ｖｏｉｃｅ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ：ＶｏＩＰ）などのサービスを提供する。Ｐ２Ｐシステムにおけるトラフィック量は莫大である。Ｐ２Ｐトラフィックが世界中のインターネットトラフィックの７０％を占めることが報告されている。既存のＰ２Ｐ実装方法の大部分は、ネットワークのトポロジ状態を考慮に入れていない。ピアリング決定（相互接続の決定：ｐｅｅｒｉｎｇ  ｄｅｃｉｓｉｏｎ）は、ネットワーク・トポロジとトラフィック状態と無関係に下される。問い合わせデータノードアプリケーションユニットによってなされた要求に応答して、インデックスサーバは、通常、既存のメタデータの集合から部分集合をランダムに選択する。このようなランダムな応答は、クロスドメイン（ｃｒｏｓｓ−ｄｏｍａｉｎ）トラフィックの重要な問題を引き起こす。
【０００３】
例えば、図１は、関連技術によるピア情報を提供し取得するためのシステム５の構成ブロック図を示している。図示のように、データノード６０内のデータノードアプリケーションユニット６１が、それが属するＰ２Ｐシステム内のピア（図示しない）とデータファイルを交換したい場合、そのピア情報要求ユニット６１２がＰ２Ｐシステム内のインデックスサーバ５０にピア・リスト要求を発行する。ピア・リスト要求を受信すると、インデックスサーバ５０内のピア情報管理ユニット５２は、データノードアプリケーションユニット６１とデータファイルを交換することができる全てのピアについてピア情報記憶ユニット５１を検索し、これらのピアの中からの幾つかのピアをランダムに選択してピア・リストに含める。そのピア・リストが応答としてデータノードアプリケーションユニット６１に返される。ピア・リスト応答を受信すると、データノードアプリケーションユニット６１のピア情報要求ユニット６１２は、データ交換装置６１１にそれを提供する。その後、データ交換装置６１１は、ピア・リストにリストされたピアとデータを交換する。
【０００４】
インデックスサーバ５０によって返されたピア・リスト内のピアはランダムに選択されているので、それらは、異なるネットワークドメインに位置するデータノード上のデータノードアプリケーションユニット（例えば、異なるＩＳＰ（インターネット・サービス・プロバイダ：Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）に属するデータノード上のデータノードアプリケーションユニット）を含む可能性ある。そのため、自身のネットワークドメインのデータノードがそのデータファイルを有しても、ネットワークドメインのデータノードは、他のネットワークドメインのデータノードからデータファイルをダウンロードすることになる。このことが、莫大な量のクロスドメインのトラフィックを引き起こす。
【０００５】
Ｐ２Ｐシステムによってもたらされる莫大な量のクロスドメインのトラフィックを軽減するために、ＩＳＰはかつてＰ２Ｐアプリケーションについてブロッキング・ポリシを強化したが、大きな効果は得られていない。現在、何人かの学者が、既存のシステムコードを修正する解決策を提案している。
例えば、Ｈａｉｙｏｎｇ  Ｘｉｅ，  Ｙ．  Ｒｉｃｈａｒｄ  Ｙａｎｇ，  Ａｒｖｉｎｄ  Ｋｒｉｓｈｎａｍｕｒｔｈｙ，  Ｙａｎｂｉｎ  Ｌｉｕ，  Ａｖｉ  Ｓｉｌｂｅｒｓｃｈａｔｚ等は、“Ｐ４Ｐ：Ｐｒｏｖｉｄｅｒ  Ｐｏｒｔａｌ  ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ”，  ＳＩＧＣＯＭＭ’２００８，  ｐｐ．  ３５１−３６２（非特許文献１）において、新たなＰ２Ｐネットワーク・アーキテクチャ：Ｐ４Ｐ（Ｐｒｏａｃｔｉｖｅ  ｎｅｔｗｏｒｋ  Ｐｒｏｖｉｄｅｒ  Ｐａｒｔｉｃｉｐａｔｉｏｎ  ｆｏｒ  Ｐ２Ｐ）を紹介している。
このアーキテクチャは、ネットワークプロバイダがアプリケーションに対して、より多くの情報を提供することを可能にし、不必要なクロスＩＳＰ（ｃｒｏｓｓ−ＩＳＰ）トラフィックを減らすことができる。ネットワークとアプリケーションの間のインタフェースとして、Ｐ４Ｐは、問合せクライアントに対して、静的なネットワーク・ポリシ、ネットワークの状態を反映するＰ４Ｐ距離（Ｐ４Ｐ  ｄｉｓｔａｎｃｅ）、ネットワーク能力（ｎｅｔｗｏｒｋ  ｃａｐａｂｉｌｉｔｙ）等の多くの情報を提供する。この新たなアーキテクチャの中心は、Ｐ４Ｐ距離インタフェースである。このインタフェースを通じて、ＩＳＰは、アプリケーションに対して、現在の内部リンクと外部リンク上のアプリケーションオーバヘッド情報を供給することができる。Ｐ４Ｐアーキテクチャは、ネットワーク事業者（ｎｅｔｗｏｒｋ  ｏｐｅｒａｔｏｒ）とアプリケーション間の通信用のインタフェースとして情報サーバを導入する。
【０００６】
例えば、図２は、非特許文献１に記載された関連技術によるピア情報の提供と取得のための他のシステム５ａのブロック図を示している。システム５ａは、さらに情報サーバ７０を含む点において図１に示すシステム５と相違する。情報サーバ７０は、距離、遅延、トラフィック状態等を含むネットワーク情報を提供する。ネットワーク内の他の実体（インデックスサーバ、データノード）は、それが提供するサービス・インタフェースを通して２つのノードの間の距離、ネットワークトラフィック等に関する情報を問い合わせる。
【０００７】
図示のインデックスサーバ５０ａは、ピア情報記憶ユニット５１とピア情報管理ユニット５２ａに加えて、位置情報要求ユニット５３をさらに含んでいる点で図１に示すインデックスサーバ５０と相違する。インデックスサーバ５０ａ内のピア情報管理ユニット５２ａは、ピア・リスト要求を受信すると、ピア情報管理ユニット５２と同様に、まず、データノードアプリケーションユニット６１とデータを交換することができる全てのピアについてピア情報記憶ユニット５１を検索する。その後、ピア情報管理ユニット５２と異なり、これらのピアから幾つかのピアをランダムに選択するのではなく、ピア情報管理ユニット５２ａは、これらのピアが存在する全てのデータノードのデータノード６０に対する位置（Ｐ４Ｐ距離）に関する情報を情報サーバ７０に対して要求するよう位置情報要求ユニット５３に指示し、位置情報要求ユニット５３によって情報サーバから受信した位置情報について基づいて、データノードアプリケーションユニット６１とデータを交換することができるピアからデータノード６０に近いデータノード上に存在するピアを選択し、そして、データノード６０に返す応答としてピア・リスト内にそれらの選択したピアを含める。
【０００８】
このようにして、インデックスサーバは、情報サーバからの情報を用いることにより、同一のドメイン（例えば、同一のＩＳＰ）から大部分が到来するピアを含むピア・リストを用いてクライアントに応答する。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Ｈａｉｙｏｎｇ  Ｘｉｅ，  Ｙ．  Ｒｉｃｈａｒｄ  Ｙａｎｇ，  Ａｒｖｉｎｄ  Ｋｒｉｓｈｎａｍｕｒｔｈｙ，  Ｙａｎｂｉｎ  Ｌｉｕ，  Ａｖｉ  Ｓｉｌｂｅｒｓｃｈａｔｚ等による“Ｐ４Ｐ：Ｐｒｏｖｉｄｅｒ  Ｐｏｒｔａｌ  ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ”，  ＳＩＧＣＯＭＭ’２００８，  ｐｐ．  ３５１−３６２
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以上のように、非特許文献１は、ネットワーク情報の転送とクロスドメインのトラフィックの管理のための新たなＰ２Ｐネットワーク・アーキテクチャを定義する。
しかしながら、そのような解決策は、現在のネットワークに対してほとんど効果が得られない。その理由は、まず、現在多くのＰ２Ｐシステムが既に配置されており、莫大なネットワークトラフィックを生成しているためである。次に、現在のＰ２Ｐシステム内のクロスドメインのトラフィックを減らすためには、既存のＰ２Ｐシステム内のインデックスサーバのコードの修正が必要であるが、それを実現するのが困難であるためである。
【００１１】
本発明は、Ｐ２Ｐデータ交換において用いられ、クロスドメインのトラフィックを減らすことが可能なデータノード装置、それに用いるピア情報取得方法、および関連システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の態様によれば、ピア・ツー・ピア（Ｐ２Ｐ）データ交換においてデータノードとして機能する装置であって、ピア・リスト要求を発行し、ピアとのＰ２Ｐデータ交換を実行するデータノードアプリケーションユニットと、ピア・リスト要求に応答してインデックスサーバによって提供されるオリジナルのピア・リストを傍受し、情報サーバにピア位置要求を発行し、ピア位置要求に応答して情報サーバによって提供されるピア位置情報を受信し、ピア位置情報に基づいてオリジナルのピア・リストについて処理を実行し、処理済みのピア・リストを取得し、処理済みのピア・リストをデータノードアプリケーションユニットに提供するリスト処理ユニットとを備える。
【００１３】
本発明の第２の態様によれば、ピア・ツー・ピア（Ｐ２Ｐ）データ交換のためのデータノードでのピア情報の取得方法であって、インデックスサーバにピア・リスト要求を発行するステップと、ピア・リスト要求に応答してインデックスサーバによって提供されるオリジナルのピア・リストを傍受するステップと、情報サーバにピア位置要求を発行するステップと、ピア位置要求に応答して情報サーバによって提供されるピア位置情報を受信するステップと、ピア位置情報に基づいて、オリジナルのピア・リストについて処理を実行して処理済みのピア・リストを取得するステップと、処理済みのピア・リストをデータノードアプリケーションユニットに提供するステップとを含む。
【００１４】
本発明の第３の態様によれば、ピア・ツー・ピア（Ｐ２Ｐ）データ交換においてピア情報を提供しかつ取得するためのシステムであって、それぞれがピア・リスト要求に応答してオリジナルのピア・リストを提供する１つ以上のインデックスサーバと、ピア位置要求に応答してピア位置情報を提供する情報サーバと、上述した装置とを備える。
【発明の効果】
【００１５】
本発明によれば、既存のＰ２Ｐクロスドメイントラフィックを、既存のインデックスサーバとデータノードアプリケーションユニットを修正することなく軽減することが可能となる。また、例えばプラグ・インとして提供される１つのリスト処理ユニットをデータノード内に配置するだけで、多数の異なるＰ２Ｐシステムに関するメッセージを同時に処理することが可能となる。さらに、再度ピア・リストを要求することにより、より短いダウンロード時間が保証される。
【図面の簡単な説明】
【００１６】
本発明の上記および他の特徴、並びに効果は、図面を参照して説明された下記の好適な実施例からさらに明らかになるであろう。添付図面において、同一の又は類似する参照符号は、同一又は類似する構成要素を示している。
【図１】関連技術によるシステムの構成を示すブロック図である。
【図２】関連技術による他のシステムの構成を示すブロック図である。
【図３】本発明の第１の実施の形態によるデータノードとして機能する装置を含むシステムのブロック図である。
【図４】図３に示すデータノードによってピア・リストを取得する方法を説明するフローチャートである。
【図５】本発明の第２の実施の形態によるデータノードとして機能する装置を含むシステムのブロック図である。
【図６】図５に示すデータノードによってピア・リストを取得する方法を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
添付図面を参照して本発明の実施の形態を説明する前に、ここで用いられるいくつかの用語について説明する。
【００１８】
Ｐ２Ｐシステム：Ｐ２Ｐシステムは、インデックスサーバ、情報サーバおよびデータ交換を実行し互いにピアとなる複数のデータノードアプリケーションユニットを含む。
【００１９】
インデックスサーバ：交換される全てのファイルのメタデータとこれらのファイルを交換するデータノードアプリケーションが存在するデータノードに関する情報を格納する実体。インデックスサーバは、また、信号ノード（Ｓｉｇｎａｌｉｎｇ  Ｎｏｄｅ）、Ｔｒａｃｋｅｒ、ａｐｐＴｒａｃｋｅｒ、Ｓｕｐｅｒ  Ｎｏｄｅとして知られている。ピアリスト要求を受信すると、インデックスサーバは、対応するピアリスト応答により応答する。各Ｐ２Ｐシステムは１つ以上のインデックスサーバを含んでいる。異なるＰ２Ｐシステムは、通常それ自身のインデックスサーバを有している。
【００２０】
情報サーバ：ｉＴｒａｃｋｅｒとして知られている。距離、遅延、トラフィック状態等を含むネットワーク情報を提供する実体である。
ネットワーク内の他の実体（インデックスサーバとデータノード）は、それが提供するサービスインタフェースを通して２つのデータノード間の距離、ネットワークトラフィック等に関する情報を問い合わせることが可能である。
１つの情報サーバを複数のＰ２Ｐシステムで共有することが可能である。例えば、情報サーバはＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅｓ  Ｐｒｏｖｉｄｅｒ）によって提供される。
【００２１】
データノード：実際のデータ項目の全てあるいは一部分を格納する実体。
データノードは、情報処理装置（例えば、パソコン（ＰＣ）、携帯電話、携帯情報端末（ＰＤＡ）等）であり、データを格納し、ネットワーク上の他のネットワークノードと通信することが可能である。
データノードは、１つ以上のＰ２Ｐシステムにそれぞれ属する１つ以上のデータノードアプリケーションユニットをホストする。
例えば、ＢｉｔＴｏｒｒｅｎｔアプリケーションユニット、ｅＭｕｌｅアプリケーションユニット等が、ＰＣにインストールされる。
以下、データノードは、時々、データノード装置あるいはデータノードとして機能する装置と呼ばれる。
【００２２】
データノードアプリケーションユニット：Ｐ２Ｐシステムにおけるデータ交換とピア情報問い合わせのためのユニット。データノードアプリケーションユニットは、データ交換ユニットとピア情報要求ユニットを含んでいる。
ピア情報要求ユニットは、データノードアプリケーションユニットが属するＰ２Ｐシステム内のインデックスサーバから所望のファイルを交換（ダウンロード／アップロード）しているピアに関する情報を要求する。
データ交換ユニットは、ピアリスト内のピアとの接続を確立し、これらのピアに対してファイルデータのダウンロード／アップロードを実行する。
データノードアプリケーションユニットはデータノードアプリケーションとも呼ばれる。さらに、インデックスサーバと情報サーバとのやり取りにおいて、データノードアプリケーションユニットは、クライアントアプリケーションユニットあるいはクライアントアプリケーションとも呼ばれる。
【００２３】
ピア：Ｐ２Ｐシステム内のデータノードアプリケーションユニットは互いにピアである。さらに、本明細書においては、ピアとなるデータノードアプリケーションユニットが存在するデータノードは互いにピアであると称する。
【００２４】
メタデータ：実際のデータの属性（例えば、実際のデータ項目の位置とサイズ）について記述する情報。
【００２５】
ネットワークドメイン：一般的に、ネットワーク・トポロジーの観点から同一のエリアに存在するネットワークノードの集合である。例えば、同じ「ネットワークドメイン」は、同じＩＳＰ、同じローカル・エリア・ネットワーク等を示す。２つのデータノードが同一のネットワークドメインに属するとすれば、これらの２つのデータノードによってホストされる各のデータノードアプリケーションユニットは、同一のネットワークドメインに属すると言える。
【００２６】
位置：ここで、「位置」とは必ずしも物理的な位置を指さない場合がある。もっと正確に言えば、「位置」とは、ネットワーク・トポロジーの観点からのデータノードの位置を指す。本発明において、データノードアプリケーションユニットに関してデータノードアプリケーションユニットのピアの位置は、データノードアプリケーションユニットをホストするデータノードに関してこれらのピアをホストするデータノードの位置に相当する。一例として、データノード間の相対位置は、それらの間のネットワーク距離によって表される。
【００２７】
ネットワーク距離：ネットワーク・トポロジーの観点からのデータノードの間の距離を反映する。
それは、ネットワークの状態とトラフィックに関するプレファレンスを反映する上述のようなＰ４Ｐ距離でもよい。
同様に、本発明において、データノードアプリケーションユニットのピアとデータノードアプリケーションユニットの間の距離は、それらのピアをホストするデータノードとそのデータノードアプリケーションユニットをホストするデータノードの間の距離に等しい。
【００２８】
本発明の好ましい実施の形態について、図面を参照して以下に説明する。
【００２９】
図３は、本発明の第１の実施の形態によるデータノード（以下、データノード２０と称する）として機能する装置２０と、１以上のインデックスサーバ１０と１の情報サーバ３０から構成されるシステム１のブロック図を示す。
図３に示すように、システム１は、１以上のインデックスサーバ１０−１、１０−２、・・・及び１０−Ｎ（インデックスサーバ１０と総称する）と、データノード２０と、情報サーバ３０を含む（Ｎは１以上の整数）。
【００３０】
インデックスサーバ１０は、ピア情報を格納し索引付けを行う実体であり、図１に示すようにピア情報記憶ユニットと、ピア情報管理ユニットを含んでいる。説明を分かり易くするため、インデックスサーバ１０の内部構成は、図３において示されない。
各インデックスサーバ１０のピア情報記憶ユニットは、インデックスサーバ１０が属するＰ２Ｐシステム内のデータノードアプリケーションユニットが存在する全てのデータノードの情報、例えば、連絡情報、保有するファイルのメタデータ等を格納し、それらのデータノードによって交換された（あるいは、これらのデータノードによってホストされたデータノードアプリケーションユニットによって交換された）ファイルによってデータノードを索引付けする。
ピア情報管理ユニットは、全てのデータノードアプリケーションユニットと通信することを担当する。それは、データノードアプリケーションユニットからの報告を受信するとピア情報記憶ユニットに情報を格納し、データノードアプリケーションユニットからの要求を受信すると適切なピアリストを提供する。
【００３１】
情報サーバ３０は、距離、遅延、トラフィック状態等を含むネットワーク情報を提供する実体である。インデックスサーバとデータノードアプリケーションユニットは、それが提供するサービス・インタフェースを通して２つのデータノード間の距離とネットワークトラフィックに関する情報を問い合わせること可能である。
説明を分かり易くするため、情報サーバ３０の内部構成は、図３において示されていない。
【００３２】
データノード２０は、１以上のＰ２Ｐシステムにそれぞれ属する１以上のデータノードアプリケーションユニット２１−１、２１−２、・・・、２１−Ｎおよび（データノードアプリケーションユニット２１と総称する）と、リスト処理ユニット２２を含んでいる。
データノードアプリケーションユニット２１−１、インデックスサーバ１０−１、情報サーバ３０および１以上の他のデータノードにそれぞれ存在する１以上のデータノードアプリケーションユニット（図示しない）が、第１のＰ２Ｐシステムを構成し、データノードアプリケーションユニット２１−２、インデックスサーバ１０−２、情報サーバ３０および１以上の他のデータノードにそれぞれ存在する１以上の他のデータノードアプリケーションユニット（図示しない）が第２のＰ２Ｐシステムを構成し、・・・、データノードアプリケーションユニット２１−Ｎ、インデックスサーバ１０−Ｎ、情報サーバ３０および１以上の他のデータノードにそれぞれ存在する１以上の他のデータノードアプリケーションユニット（図示しない）が第ＮのＰ２Ｐシステムを構成する。
例えば、いくつかのデータノードに存在するＢｉｔＴｏｒｒｅｎｔアプリケーションユニット、ＢｉｔＴｏｒｒｅｎｔインデックスサーバおよび共有情報サーバが、ＢｉｔＴｏｒｒｅｎｔ  Ｐ２Ｐシステムを構成し、一方、これらのデータノードに存在するｅＭｕｌｅアプリケーションユニット、ｅＭｕｌｅインデックスサーバおよび共有情報サーバが、ｅＭｕｌｅ  Ｐ２Ｐシステムを構成する。
ここでは、Ｎ個のＰ２Ｐシステムの各々がインデックスサーバを含み、全てのＰ２Ｐシステムが１つの情報サーバを共有する場合を図示している。しかしながら、しかしながら、本発明がそれらに限定されないことは当業者にとって明白である。
例えば、各Ｐ２Ｐシステムが複数のインデクシングサーバを含んでいてもよい。また、例えば、各Ｐ２Ｐシステムが、それ自身の情報サーバを有していてもよい。
さらに、異なるＰ２Ｐシステムが１以上のインデックスサーバを共有していてもよい。
【００３３】
各データノードアプリケーションユニット２１はデータ交換装置とピア情報要求ユニットを含んでいる。
例えば、データノードアプリケーションユニット２１−１は、データ交換装置２１１−１とピア情報要求ユニット２１２−１を含み、データノードアプリケーションユニット２１−２は、データ交換装置２１１−２とピア情報要求ユニット２１２−２を含み、・・・、データノードアプリケーションユニット２１−Ｎは、データ交換装置２１１−Ｎとピア情報要求ユニット２１２−Ｎを含んでいる。
【００３４】
本実施の形態において、リスト処理ユニット２２は、応答メッセージ取得ユニット２２１、応答メッセージ構成ユニット２２３、および１つ以上のアプリケーションメッセージ処理ユニット２２２−１、２２２−２、・・・、２２２−Ｎ（アプリケーションメッセージ処理ユニット２２２と総称する）を含んでいる。
アプリケーションメッセージ処理ユニット２２２−１、２２２−２、・・・、２２２−Ｎは、それぞれデータノードアプリケーションユニット２１−１、２１−２、・・・、２１−Ｎと関連付けられている。
すなわち、例えば、アプリケーションメッセージ処理ユニット２２２−１、２２２−２、・・・、２２２−Ｎは、データノードアプリケーションユニット２１−１、２１−２、・・・、２１−Ｎに対して一対一に対応している。
各アプリケーションメッセージ処理ユニット２２２は、対応する１つのデータノードアプリケーションユニット２１が属するＰ２Ｐシステムに関連する情報、例えば、ＢｉｔＴｏｒｒｅｎｔメッセージ、ｅＭｕｌｅメッセージ等を処理する。
【００３５】
データノードアプリケーションユニット（例えば、データノード２０のデータノードアプリケーションユニット２１−１）が、それが属するＰ２Ｐシステム内の他のデータノードアプリケーションユニットとデータを交換したい場合、データノードアプリケーションユニット２１−１のピア情報要求ユニット２１２−１は、リストを取得するために対応するインデックスサーバ１０−１にピア・リスト要求をまず発行する。このリストは、データノードアプリケーションユニット２１−１が属するＰ２Ｐシステムにおいて、そのデータノードアプリケーションユニットとデータファイルを交換することが可能なデータノードアプリケーションユニット（すなわち、ピア）をリストアップしている。
ピアリスト要求を受信すると、インデックスサーバ１０−１内のピア情報管理ユニットは、そのピア情報記憶ユニットからデータの交換に利用可能なデータノードアプリケーションユニットを検索し、それらのデータノードアプリケーションユニットからランダムに幾つかのデータノードアプリケーションユニットを選択し、返すピア・リストに、ランダムに選択したデータノードアプリケーションユニットをピアとして含める。
ランダムな選択であるため、ピア・リストは、データノードアプリケーションユニット２１−１が存在するデータノード２０から大きな距離にあるデータノード上に存在するピア（例えば、異なるネットワークドメインから来る）を含む可能性がある。
言いかえれば、これらのピアはデータノードアプリケーションユニット２１−１から離れている。例えば、それらは、データノードアプリケーションユニット２１−１と異なるネットワークドメインから到来する。
【００３６】
ここで、このように各インデックスサーバ１０によってランダムに選択されたピアのリストを、オリジナルピア・リストと称する。
一実現例において、各インデックスサーバ１０は、ピア・リスト応答メッセージにオリジナルピア・リストを含め、ピア・リスト要求を発行したデータノードに対してその応答メッセージを返す。
【００３７】
上述のように、本発明のデータノード２０はリスト処理ユニット２２を含んでいる。
このリスト処理ユニット２２は、プラグ・インのモジュールとして、データノード２０のオペレーティング・システムのカーネル空間に追加することが可能である。しかしながら、本発明はそれに限定されない。
リスト処理ユニット２２が、他のソフトウェア、ハードウェア、ファームウェアあるいはそれの組み合わせによって実現可能であることは、当業者にとって十分に理解できるであろう。
【００３８】
リスト処理ユニット２２は、１つのインデックスサーバ１０から送信され、データノードアプリケーションユニット２１によって受信されたピア・リスト応答メッセージを取得する。
具体的には、リスト処理ユニット２２内の応答メッセージ取得ユニット２２１が、ピア・リスト応答メッセージを取得する。
一実現例において、応答メッセージ取得ユニット２２１は、データノード２０のオペレーティング・システムにフック（ｈｏｏｋ）を追加することにより、インデックスサーバから送信された全てのメッセージを傍受することが可能である。
一実現例において、応答メッセージ取得ユニット２２１は、オペレーティング・システムのＴＣＰ／ＩＰプロトコル・スタックからこれらのメッセージを直接傍受することが可能である。
【００３９】
応答メッセージ取得ユニット２２１は、ピア・リスト応答メッセージがどのＰ２Ｐシステムに属するか、すなわち、メッセージがどのデータノードアプリケーションユニット２１−１、２１−２、・・・、２１−Ｎに関連しているかを判定するために、傍受したピア・リスト応答メッセージを分類し、その分類結果に従って対応する１つのアプリケーションメッセージ処理ユニット２２２にピア・リスト応答メッセージを配信する。
【００４０】
この実施例においては、上述のように、ピア・リスト要求がデータノードアプリケーションユニット２１−１によって発行され、その結果、ピア・リスト応答メッセージがインデックスサーバ１０−１によって返されたので、応答メッセージ取得ユニット２２１は、メッセージに含まれている識別情報に基づいて、受信したピア・リスト応答メッセージがデータノードアプリケーションユニット２１−１を対象としていると判定する。これにより、応答メッセージ取得ユニット２２１は、データノードアプリケーションユニット２１−１と関連するアプリケーションメッセージ処理ユニット２２２−１にピア・リスト応答メッセージを配信する。
例えば、データノードアプリケーションユニット２１−１がＢｉｔＴｏｒｒｅｎｔアプリケーションである場合、応答メッセージ取得ユニット２２１は、メッセージに含まれる識別情報に基づいて、受信したメッセージがＢｉｔＴｏｒｒｅｎｔ応答メッセージであることを識別し、それにより、ＢｉｔＴｏｒｒｅｎｔアプリケーション・メッセージと関連するアプリケーションメッセージ処理ユニット２２２−１にメッセージを配信することが可能となる。
【００４１】
応答メッセージ取得ユニット２２１から配信されたピア・リスト応答メッセージを受信すると、アプリケーションメッセージ処理ユニット２２２−１は、そこに含まれるオリジナルピア・リストを抽出する。
その後、アプリケーションメッセージ処理ユニット２２２−１は、オリジナルピア・リストに含まれるピアが存在するデータノードの当該データノード２０に対する位置情報を取得するために、情報サーバ３０にピア位置要求を発行する。
【００４２】
アプリケーションメッセージ処理ユニット２２２−１からのピア位置要求に応答して、情報サーバ３０はアプリケーションメッセージ処理ユニット２２２−１に対してピア位置情報を返す。
一例として、ピア位置情報は、オリジナルピア・リストにリストされたピアが存在するデータノードとデータノード２０の間のネットワーク距離（例えばＰ４Ｐ距離）に関する情報を含んでいる。
【００４３】
アプリケーションメッセージ処理ユニット２２２−１は、情報サーバ３０から返されたピア位置情報に基づいて、オリジナルピア・リスト内のピアに関する処理を実行する。
一実現例において、この処理は、これらのピアが存在するデータノードとデータノード２０の間のネットワーク距離の降順にピアをソートすることを含む。
一例として、この処理は、ピアをソートした後、必要に応じてデータノード２０から遠く離れているデータノード上に存在するピアをリストから削除する処理をさらに含む。
この結果、このように処理されたピア・リストは、データノード２０に比較的近いデータノード、例えば、データノード２０と同一のネットワークドメインに属するデータノード上のピアだけを包含する。
【００４４】
アプリケーションメッセージ処理ユニット２２２−１は、このように処理されたピア・リストを応答メッセージ構成ユニット２２３に配信する。
【００４５】
応答メッセージ構成ユニット２２３は、アプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、対応するデータノードアプリケーションユニットに対して、処理済みのピア・リストを含むピア・リスト応答メッセージを提供する。
この実施例において、アプリケーションメッセージ処理ユニット２２２−１から配信された処理済みのピア・リストを受信すると、応答メッセージ構成ユニット２２３は、それを、対応するＰ２Ｐシステムに対するピア・リスト応答メッセージとしてデータノードアプリケーションユニット２１−１に提供する。
例えば、データノードアプリケーションユニット２１−１がＢｉｔＴｏｒｒｅｎｔアプリケーションである場合、応答メッセージ構成ユニット２２３は、ＢｉｔＴｏｒｒｅｎｔ応答メッセージに処理済みのピア・リストを含め、それをデータノードアプリケーションユニット２１−１に提供する。
【００４６】
処理済みのピア・リストを含むピア・リスト応答メッセージを受信すると、データノードアプリケーションユニット２１−１のピア情報要求ユニット２１２−１は、そこからピア・リストを抽出し、それをデータ交換装置２１１−１に提供する。
これにより、データ交換装置２１１−１は、ピア・リストにリストされているピアとのデータ交換を実行することができる。
【００４７】
以上のように、データノードアプリケーションユニット２１−１、関連するアプリケーションメッセージ処理ユニット２２２−１及びインデックスサーバ１０−１を例として用いて説明を行ったが、同様の解決方法は、データノード２０内の他のデータノードアプリケーションユニットと、関連するアプリケーションメッセージ処理ユニットと、インデックスサーバに適用可能であることに留意されたい。
【００４８】
以上のように、ピアとデータを交換しようとするデータノードアプリケーションユニットは、ランダムに選択されたピアのリストではなく、それに接近して位置するピアのリストを取得する。
従って、本発明によれば、既存のＰ２Ｐクロスドメイントラフィックを、既存のインデックスサーバとデータノードアプリケーションユニットを修正することなく軽減することが可能となる。また、例えばプラグ・インとして提供される１つのリスト処理ユニットをデータノード内に配置するだけで、多数の異なるＰ２Ｐシステムに関するメッセージを同時に処理することが可能となる。
【００４９】
図３において示したデータノード２０によってピア・リストを取得する方法について、図４を参照して以下に説明する。
【００５０】
ステップＳ１０１において、データノードアプリケーションユニット２１の１つのピア情報要求ユニットは、対応するインデックスサーバ１０の１つにピア・リスト要求を発行する。
【００５１】
ステップＳ１０２において、オリジナルピア・リストが傍受される。
本実施の形態において、このステップは、ピア・リスト要求に応じてインデックスサーバ１０の１つから送信されたピア・リスト応答メッセージを傍受し、データノードアプリケーションユニット２１のどの１つがピア・リスト応答メッセージに関連しているかを判定し、その後、対応するアプリケーションメッセージ処理ユニット２２２の１つにピア・リスト応答メッセージを配信する応答メッセージ取得ユニット２２１を含んでいる。
このステップは、さらに、応答メッセージ取得ユニット２２１から配信されたピア・リスト応答メッセージを受信し、ピア・リスト応答メッセージに含まれるオリジナルピア・リストを抽出し、それにより、オリジナルピア・リストを取得するアプリケーションメッセージ処理ユニット２２２の１つを含む。
【００５２】
ステップＳ１０３において、アプリケーションメッセージ処理ユニット２２２の１つが、オリジナルピア・リストに含まれるピアが存在するデータノードの当該データノード２０に対する位置情報を取得するために、情報サーバ３０にピア位置要求を発行する。
【００５３】
ステップＳ１０４において、ピア位置要求を発行したアプリケーションメッセージ処理ユニットは、情報サーバ３０から返されたピア位置情報を受信する。
【００５４】
ステップＳ１０５において、アプリケーションメッセージ処理ユニットは、ピア位置情報に基づいて、オリジナルピア・リスト内のピアについて、例えばソートと幾つかのピアの削除を含む処理を実行し、そして、処理済みのピア・リストを応答メッセージ構成ユニット２２３に配信する。
【００５５】
ステップＳ１０６において、応答メッセージ構成ユニット２２３は、アプリケーションメッセージ処理ユニット２２２の１つから配信された処理済みのピア・リストを受信すると、対応するデータノードアプリケーションユニットに処理済みのピア・リストを含むピア・リスト応答メッセージを提供する。その後、処理が終了する。
【００５６】
図５は、本発明の第２の実施の形態によるデータノード（以下、データノード２０ａと呼ぶ）として機能する装置２０ａと、１以上のインデックスサーバ１０、情報サーバ３０から構成されるシステム１ａの構成ブロック図である。
図５において、図３に示した第１の実施の形態と同一の参照番号は、同一の構成要素を示しており、これらの構成要素の詳細な説明については省略する。
【００５７】
図５に示すように、データノード２０ａは、応答メッセージ取得ユニット２２１、アプリケーションメッセージ処理ユニット２２２および応答メッセージ構成ユニット２２３に加えて、以下の要素を含む点で図３に示すデータノード２０と相違する。リスト処理ユニット２２ａは、さらに、データノードアプリケーションユニット２１−１、２１−２、・・・、２１−Ｎに対して一対一に対応し、かつそれによりアプリケーションメッセージ処理ユニット２２２−１、２２２−２、・・・、２２２−Ｎに対して一対一に対応する１以上の再要求ユニット２２４−１、２２４−２、・・・、２２４−Ｎ（再要求ユニット２２４と総称する）と、キャッシュユニット２２５を備えている。
【００５８】
再要求ユニット２２４は、対応するインデックスサーバ１０により多くのピア情報を要求するために、対応するＰ２Ｐシステム用のピア・リスト要求を作成する。
キャッシュユニット２２５は、ピア・リストを取得する処理で得られた処理済みのピア・リストをキャッシュする。
本実施の形態においては、１つのキャッシュユニット２２５が複数アプリケーションメッセージ処理ユニット２２２によって共有される場合を示していることに留意されたい。この場合、各アプリケーションメッセージ処理ユニット２２２は、キャッシュユニット２２５内の対応するエリアにアクセスする。
もちろん、当業者であれば思い付く他の実現方式も可能である。例えば、各アプリケーションメッセージ処理ユニット２２２がそれ自身のキャッシュユニットを有することも可能である。
【００５９】
通常、本実施の形態のアプリケーションメッセージ処理ユニットによりオリジナルピア・リストについて実行される処理は、距離よってオリジナルピア・リストをソートし、必要に応じて大きな距離を有する幾つかのピアを削除することに加えて、そのように取得したピア・リストを、キャッシュユニット２２５内の対応するエリアに既にキャッシュさされているピア・リスト（もし存在すれば）と組み合わせることを含む。
その後、アプリケーションメッセージ処理ユニットは、そのように処理されたピア・リスト内のピアが十分であるかどうか、例えば、その数がしきい値に達しているかどうかを判定する。
ピアの数が少な過ぎると、データ交換を実行した場合に、データノードアプリケーションユニットは十分なデータソースを確保することできず、その結果、データダウンロードのための時間が延長されることになる。
短いダウンロード時間を保証するために、ピアの数が少な過ぎると判定した場合に、本実施の形態によるアプリケーションメッセージ処理ユニットは、キャッシュユニット２２５内の対応するエリアに、現在処理済みのピア・リストを一時的に格納し、対応するインデックスサーバ１０の１つに１以上の追加のピア・リスト要求を発行することを、対応する再要求ユニットに指示する。
このような追加のピア・リスト要求を受け取ると、対応するインデックスサーバ１０内のピア情報管理ユニットは、再度、ピア情報記憶ユニットを検索し、対応するデータノードアプリケーションユニットによって要求されたデータファイルを交換することができるピアをそこからランダムに選択し、その結果、オリジナルピア・リストを含む１以上の追加のピア・リスト応答メッセージをデータノード２０ａに提供する。
アプリケーションメッセージ処理ユニットは、ソート、削除、組合せを含む処理と、１以上の抽出された追加のオリジナルのピア・リストについて上述した判定を実行し、ピアの数が十分となるまで、必要に応じて再要求を繰り返す。
【００６０】
例として、再度アプリケーションメッセージ処理ユニット２２２−１を用いて説明を行う。
特に、一実現方式において、応答メッセージ取得ユニット２２１から配信されたピア・リスト応答メッセージ内のオリジナルのピア・リストを抽出した後、アプリケーションメッセージ処理ユニット２２２−１が、オリジナルのピア・リストを処理する。
【００６１】
この処理は、オリジナルピア・リスト内のピアをソートし、必要に応じて大きな距離のピア（例えば、異なるネットワークドメイン内のピア）を削除すること、及び、残りのピアを含むピア・リストをキャッシュユニット２２５の対応するエリア内のピア・リスト（もし、存在すれば）と組み合わせることを含む。
【００６２】
この場合、アプリケーションメッセージ処理ユニット２２２−１は、まず、以前にキャッシュされたピア・リストがキャッシュユニット２２５の対応するエリアに存在するかどうかをチェックする。
【００６３】
現在処理されているオリジナルピア・リストが、データノードアプリケーションユニットによって発行されたピア・リスト要求に応じてインデックスサーバ１０−１によって返されたオリジナルのピア・リストであれば、キャッシュユニット２２５の対応するエリアは空であるはずである。
この場合、組み合わせは不要であり、ソートされ幾つかのピアが削除されたピア・リストが処理済みのピア・リストとなる。
【００６４】
一方、ピア・リストがキャッシュユニット２２５の対応するエリアに既にキャッシュされていれば、これは、現在処理されているオリジナルピア・リストが、再要求ユニットによって発行された追加のピア・リスト要求に応答してインデックスサーバ１０−１によって返されたオリジナルのピア・リストであることを示している。
そこで、アプリケーションメッセージ処理ユニット２２２−１は、上述のようにソートされ幾つかのピアが削除されたピア・リストを、キャッシュユニット２２５内のピア・リストと組み合わせ、処理済みのピア・リストを取得する。
【００６５】
いずれの場合も、その後、アプリケーションメッセージ処理ユニット２２２−１は、処理済みのピア・リスト内のピアが十分であるかどうか、例えば、その数が所定のしきい値に達しているかどうかを判定する。
【００６６】
数が十分であれば、アプリケーションメッセージ処理ユニット２２２−１は、応答メッセージ構成ユニット２２３を介して処理済みのピア・リストを対応するデータノードアプリケーションユニット２１−１に提供する。
その前或いは後に、アプリケーションメッセージ処理ユニット２２２−１は、キャッシュユニット２２５内の対応するエリアを空にする。
【００６７】
一方、ピアが十分でなければ、アプリケーションメッセージ処理ユニット２２２−１は、キャッシュユニット２２５の対応するエリアにもともとキャッシュされたピア・リストに上書きするように、処理済みのピア・リストを対応するエリアにキャッシュし、かつインデックスサーバ１０−１に追加のピア・リスト要求を発行するよう対応する再要求ユニット２２４−１に指示する。
このピア・リスト要求に応じて、インデックスサーバ１０−１は、再度、ランダムに選択されたピア・リストを含むピア・リスト応答メッセージを返す。
そして、リスト処理ユニット２２ａは、処理済みのピア・リスト内のピアの数が十分となるまで、上述したような処理を繰り返す。
【００６８】
言うまでもなく、上記の処理はあくまで一例である。
例えば、アプリケーションメッセージ処理ユニット２２２−２は、オリジナルピア・リストを抽出した後に、まず、オリジナルピア・リストを、キャッシュされたピア・リスト（もし存在すれば）と組み合わせ、その後、ネットワーク距離によって組み合わせたピア・リスト内のすべてのピアをソートし、かつ必要に応じて大きな距離を有する幾つかのピアを削除して、処理済みのピア・リストを取得することも可能である。
この場合、ピア・リストそのものをキャッシュすることに加えて、各ピアをホストするデータノードと現在のデータノードの間のネットワーク距離に関する情報もキャッシュすることも可能である。
当業者によって思い付く他の実現方式も可能である。
【００６９】
第１の実施の形態と同様に、データノードアプリケーションユニット２１−１、関連するアプリケーションメッセージ処理ユニット２２２−１、再要求ユニット２２４−１及びインデックスサーバ１０−１を例として用いて説明を行ったが、同様の解決方法は、データノード２０内の他のデータノードアプリケーションユニットと、関連するアプリケーションメッセージ処理ユニットと、再要求ユニットおよびインデックスサーバにも適用可能である。
【００７０】
上述したように、本実施の形態によれば、ピアの数が十分でなければ、インデックスサーバは幾つかのランダムに選択されたピアを返すことを再度要求される。従って、ピアが十分にあることが保証され、それにより、より短いダウンロード時間が保証される。
【００７１】
図５において示したデータノード２０ａによってピア・リストを取得する方法について、図６を参照して以下に説明する。
【００７２】
ステップＳ２０１において、１つのデータノードアプリケーションユニットのピア情報要求ユニットは、対応するインデックスサーバ１０の１つにピア・リスト要求を発行する。
【００７３】
ステップＳ２０２において、オリジナルピア・リストが傍受される。
本実施の形態において、このオリジナルピア・リストは、対応するデータノードアプリケーションユニットのピア情報要求ユニットによって発行された最初のピア・リスト要求に応じてインデックスサーバ１０の１つによって返されたオリジナルピア・リストであり、さらに、対応する再要求ユニットによって発行された追加のピア・リスト要求に応じてインデックスサーバ１０の１つによって返されたオリジナルピア・リストでもある。
いずれの場合も、応答メッセージ取得ユニット２２１は、オリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、アプリケーションメッセージ処理ユニット２２２の対応する１つにピア・リスト応答メッセージを配信する。
その後、アプリケーションメッセージ処理ユニット２２２の対応する１つが、ピア・リスト応答メッセージに含まれるオリジナルのピア・リストを抽出する。
【００７４】
ステップＳ２０３において、アプリケーションメッセージ処理ユニット２２２の１つが、対応するデータノード２０に対するオリジナルピア・リストに含まれるピアの位置情報（すなわち、これらのピアが位置するデータノードの現在のデータノード２０に対する位置）を取得するために、情報サーバ３０にピア位置要求を発行する。
【００７５】
ステップＳ２０４において、ピア位置要求を発行したアプリケーションメッセージ処理ユニットが、情報サーバ３０から返されたピア位置情報を受信する。
【００７６】
ステップＳ２０５において、アプリケーションメッセージ処理ユニットは、ピア位置情報に基づいて、オリジナルピア・リストについて、ソート、削除、キャッシュされたピア・リストとの組み合わせを含む処理を実行する。
【００７７】
ステップＳ２０６において、アプリケーションメッセージ処理ユニットは、処理済みのピア・リスト内のピアが十分であるかどうか、例えば、その数が所定のしきい値に達しているかどうかを判定する。
【００７８】
ピアが十分でなければ（ステップＳ２０６で「ＮＯ」）、アプリケーションメッセージ処理ユニットは、キャッシュユニットの対応するエリアに処理済みのピア・リストをキャッシュし（ステップＳ２０７）、インデックスサーバに対して追加のピア・リスト要求を発行するよう対応する再要求ユニットに指示する（ステップＳ２０８）。
その後、処理済みのピア・リスト内のピアの数が十分となるまで、データノード２０は、ステップＳ２０２からステップＳ２０６を繰り返す。
【００７９】
一方、ステップＳ２０６においてピアが十分であることを判定すると（ステップＳ２０６で「ＹＥＳ」）、アプリケーションメッセージ処理ユニットは、ステップＳ２０９において、キャッシュユニット２２５内の対応するエリアを空にし、ステップＳ２１０において、応答メッセージ構成ユニットを介して対応するデータノードアプリケーションユニットに処理済みのピア・リストを提供する。
その後、その処理が終了する。
【００８０】
以上、本発明についてその好適な実施例を参照して説明したが、当該技術に精通した当業者には、本発明の精神と範囲から逸脱することなく他の様々な修正、変更、追加を行うことが可能なことは明らかであろう。したがって、本発明の範囲は上記の具体的な実施例に限定されず、付記した請求項によってのみ限定される。
【００８１】
さらに、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、これに限定されない。
【００８２】
（付記１）
ピア・ツー・ピア（Ｐ２Ｐ）データ交換においてデータノードとして機能する装置であって、
ピア・リスト要求を発行し、ピアとのＰ２Ｐデータ交換を実行するデータノードアプリケーションユニットと、
前記ピア・リスト要求に応答してインデックスサーバによって提供されるオリジナルのピア・リストを傍受し、情報サーバにピア位置要求を発行し、ピア位置要求に応答して情報サーバによって提供されるピア位置情報を受信し、前記ピア位置情報に基づいてオリジナルのピア・リストについて処理を実行し、処理済みのピア・リストを取得し、処理済みのピア・リストを前記データノードアプリケーションユニットに提供するリスト処理ユニットと
を備えることを特徴とする装置。
【００８３】
（付記２）
前記リスト処理ユニットが、さらに、
ピア・リスト要求に応答して前記インデックスサーバによって提供されるオリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、傍受したピア・リスト応答メッセージを、アプリケーションメッセージ処理ユニットに配信するメッセージ傍受ユニットと、
前記メッセージ傍受ユニットから配信されたピア・リスト応答メッセージを受信すると、ピア・リスト応答メッセージに含まれるオリジナルのピア・リストを抽出し、前記情報サーバにピア位置要求を発行し、ピア位置要求に応答して前記情報サーバによって提供されるピア位置情報を受信し、前記ピア位置情報に基づいて、抽出したオリジナルのピア・リストについて処理を実行して処理済みのピア・リストを取得し、処理済みのピア・リストをメッセージ構成ユニットに提供する前記アプリケーションメッセージ処理ユニットと、
前記アプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、処理済みのピア・リストを含むピア・リスト応答メッセージを前記データ・ノード・アプリケーション・ユニットに提供する前記メッセージ構成ユニットとを含むことを特徴とする付記１に記載の装置。
【００８４】
（付記３）
前記リスト処理ユニットが、さらに、
ピア・リスト要求を発行するために用いる再要求ユニットと、
一時的にピア・リストを格納するために用いるキャッシュユニットとを含み、
前記アプリケーションメッセージ処理ユニットは、オリジナルのピア・リストについて処理を実行した後に、処理済みのピア・リストにリストされたピアの数がしきい値に達しているかどうかを判定し、ピアの数が前記しきい値に達していない場合、処理済みのピア・リストを一時的に前記キャッシュユニットに格納し、ピア・リスト要求を発行するよう前記再要求ユニットに指示する
ことを特徴とする付記２に記載の装置。
【００８５】
（付記４）
前記データノードアプリケーションユニットが、１以上のデータノードアプリケーションユニットを含み、
前記アプリケーションメッセージ処理ユニットは、１以上のデータノードアプリケーションユニットに対応する１以上のアプリケーションメッセージ処理ユニットを含み、
前記メッセージ傍受ユニットは、１以上の前記データノードアプリケーションユニットのうち、特定のデータノードアプリケーションユニットに関連するピア・リスト要求に応答して提供されるオリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、１以上のアプリケーションメッセージ処理ユニットのうち、特定のデータノードアプリケーションユニットに対応するアプリケーションメッセージ処理ユニットに対して傍受したピア・リスト応答メッセージを配信し、
前記メッセージ構成ユニットは、１以上のアプリケーションメッセージ処理ユニットのうち、特定のアプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、１以上のデータノードアプリケーションユニットのうち、特定のアプリケーションメッセージ処理ユニットに対応するデータノードアプリケーションユニットに対して処理済みのピア・リストを含むピア・リスト応答メッセージを提供する
ことを特徴とする付記２に記載の装置。
【００８６】
（付記５）
前記データノードアプリケーションユニットが１以上のデータノードアプリケーションユニットを含み、
前記アプリケーションメッセージ処理ユニットは、１以上のデータノードアプリケーションユニットに対応する１以上のアプリケーションメッセージ処理ユニットを含み、
前記再要求ユニットは、１以上のアプリケーションメッセージ処理ユニットに対応する１以上の再要求ユニットを含み、
前記メッセージ傍受ユニットは、１以上の前記データノードアプリケーションユニットのうち、特定のデータノードアプリケーションユニットに関連するピア・リスト要求に応答して提供されるオリジナルのピア・リストを含むピア・リスト応答メッセージを傍受し、１以上のアプリケーションメッセージ処理ユニットのうち、特定のデータノードアプリケーションユニットに対応するアプリケーションメッセージ処理ユニットに対して傍受したピア・リスト応答メッセージを配信し、
１以上のアプリケーションメッセージ処理ユニットのそれぞれが、ピアノ数が前記しきい値に達していない場合、前記キャッシュユニットに処理済みのピア・リストを格納し、１以上の再要求ユニットのうち、自身のアプリケーションメッセージ処理ユニットに対応する再要求ユニットに対してピア・リスト要求の発行を指示し、
前記メッセージ構成ユニットは、１以上のアプリケーションメッセージ処理ユニットのうち、特定のアプリケーションメッセージ処理ユニットから配信された処理済みのピア・リストを収集し、１以上のデータノードアプリケーションユニットのうち、特定のアプリケーションメッセージ処理ユニットに対応するデータノードアプリケーションユニットに対して処理済みのピア・リストを含むピア・リスト応答メッセージを提供する
ことを特徴とする付記３に記載の装置。
【００８７】
（付記６）
前記ピア位置情報は、オリジナルのピア・リストにリストされたピアが存在するデータノードと前記データノード間のネットワーク距離に関する情報を含み、
前記処理が、前記ネットワーク距離の降順に、オリジナルのピア・リストにリストされたピアをソートする処理を含むことを特徴とする付記１に記載の装置。
【００８８】
（付記７）
前記処理が、オリジナルのピア・リストにリストされたピアのうち、前記データノードと同一のネットワークドメイン内にないデータノード上に存在するピアを削除する処理を含むことを特徴とする付記６に記載の装置。
【００８９】
（付記８）
前記ピア位置情報は、オリジナルのピア・リストにリストされたピアが存在するデータノードと前記データノード間のネットワーク距離に関する情報を含み、
前記処理が、前記ネットワーク距離の降順に、オリジナルのピア・リストにリストされたピアをソートする処理と、オリジナルのピア・リストにリストされたピアのうち、前記データノードと同一のネットワークドメイン内にないデータノード上に存在するピアを削除する処理と、残りのピアを含むピア・リストを前記キャッシュユニットにキャッシュしたピア・リストと組み合わせる処理を含むことを特徴とする付記３に記載の装置。
【００９０】
（付記９）
ピア・ツー・ピア（Ｐ２Ｐ）データ交換のためのデータノードでのピア情報の取得方法であって、
インデックスサーバにピア・リスト要求を発行するステップと、
前記ピア・リスト要求に応答して前記インデックスサーバによって提供されるオリジナルのピア・リストを傍受するステップと、
情報サーバにピア位置要求を発行するステップと、
前記ピア位置要求に応答して前記情報サーバによって提供されるピア位置情報を受信するステップと、
前記ピア位置情報に基づいて、オリジナルのピア・リストについて処理を実行して処理済みのピア・リストを取得するステップと、
処理済みのピア・リストをデータノードアプリケーションユニットに提供するステップと
を含むことを特徴とするピア情報の取得方法。
【００９１】
（付記１０）
処理済みのピア・リストにリストされたピアの数がしきい値に達しているかどうかを判定し、ピアの数が前記しきい値に達していない場合、処理済みのピア・リストをキャッシュし、１以上の追加のピア・リスト要求を発行するステップをさらに含むことを特徴とする付記９に記載のピア情報の取得方法。
【００９２】
（付記１１）
前記ピア位置情報は、オリジナルのピア・リストにリストされたピアが存在するデータノードと前記データノード間のネットワーク距離に関する情報を含み、
前記処理が、前記ネットワーク距離の降順に、オリジナルのピア・リストにリストされたピアをソートする処理を含むことを特徴とする付記９に記載のピア情報の取得方法。
【００９３】
（付記１２）
前記処理が、オリジナルのピア・リストにリストされたピアのうち、前記データノードと同一のネットワークドメイン内にないデータノード上に存在するピアを削除する処理を含むことを特徴とする付記１１に記載のピア情報の取得方法。
【００９４】
（付記１３）
前記ピア位置情報は、オリジナルのピア・リストにリストされたピアが存在するデータノードと前記データノード間のネットワーク距離に関する情報を含み、
前記処理が、前記ネットワーク距離の降順に、オリジナルのピア・リストにリストされたピアをソートする処理と、オリジナルのピア・リストにリストされたピアのうち、前記データノードと同一のネットワークドメイン内にないデータノード上に存在するピアを削除する処理と、残りのピアを含むピア・リストをキャッシュしたピア・リストと組み合わせる処理を含むことを特徴とする付記１０に記載のピア情報の取得方法。
【００９５】
（付記１４）
ピア・ツー・ピア（Ｐ２Ｐ）データ交換においてピア情報を提供しかつ取得するためのシステムであって、
それぞれがピア・リスト要求に応答してオリジナルのピア・リストを提供する１つ以上のインデックスサーバと、
ピア位置要求に応答してピア位置情報を提供する情報サーバと、
付記１から付記８の何れかに記載の装置と
を備えることを特徴とするシステム。
【符号の説明】
【００９６】
５、５ａ：システム
１０−１〜１０−Ｎ：インデックスサーバ
２０：データノード
２１−１〜２１−Ｎ：データノードアプリケーションユニット
２１１−１〜２１１−Ｎ：データ交換装置
２１２−１〜２１２−Ｎ：ピア情報要求ユニット
２２：リスト処理ユニット
２２１：応答メッセージ取得ユニット
２２２−１〜２２２−Ｎ：アプリケーションメッセージ処理ユニット
２２３：応答メッセージ構成ユニット
２２５：キャッシュユニット
３０：情報サーバ
５０、５０ａ：インデックスサーバ
５１：ピア情報記憶ユニット
５２、５２ａ：ピア情報管理ユニット
５３：位置情報要求ユニット
６０：データノード
６１：データノードアプリケーションユニット
６１１：データ交換装置
６１２：ピア情報要求ユニット
７０：情報サーバ
【図１】
0005259835.tif 000002
【図２】
0005259835.tif 000003
【図３】
0005259835.tif 000004
【図４】
0005259835.tif 000005
【図５】
0005259835.tif 000006
【図６】
0005259835.tif 000007