(57)【特許請求の範囲】
【請求項１】
分散ハッシュテーブル（ＤＨＴ）クライアントが自身のＤＨＴルーティングテーブルを埋めることを可能にするために、ＤＨＴクライアントからのＤＨＴメッセージに応答するための処理方法であって、代理ノード動作を遂行する複数のノードを有する代理処理エージェントによって行われる、
ＤＨＴクライアントからＤＨＴ要求メッセージを受信するステップと、
少なくとも１つのノード識別子を生成し、各ノード識別子をＩＰアドレスおよびポート番号に関連付けるステップであって、各ＩＰアドレス／ポート番号の組み合わせは、前記複数のノードのうち１つのノードに対応する、ステップと、
前記少なくとも１つのノード識別子とそれに関連付けられたＩＰアドレスおよびポートを含んでいるＤＨＴ応答メッセージをＤＨＴクライアントに送信するステップと、
少なくとも１つの生成されたノード識別子とそれに関連付けられたＩＰアドレスおよびポートを前記ＤＨＴクライアントとの関連で記憶するステップと
を含む、処理方法。
【請求項２】
前記受信ステップが、ブートストラップサーバを宛先とし、ルータにより代理処理エージェントに転送された第１のＤＨＴ要求メッセージをＤＨＴクライアントから受信するステップを含み、前記生成ステップは、ノード空間の第１のバケットを埋めるための第１のノード識別子の第１のグループを生成するステップを含み、かつ／または、
前記受信ステップが、前記第１のノード識別子の第１のグループに関連付けられたＩＰアドレス／ポートを宛先とするさらなるＤＨＴ要求メッセージをＤＨＴクライアントから受信するステップを含み、前記生成ステップが、ノード空間のさらに他のバケットを埋めるためのさらなるノード識別子のさらなるグループを生成するステップを含む、請求項１に記載の処理方法。
【請求項３】
ＤＨＴ要求メッセージが、それに対して、関連付けられたＤＨＴ応答メッセージが少なくとも１つのノード識別子を含む、メッセージであり、ＤＨＴノード発見、ＤＨＴｐｉｎｇ、ＤＨＴピア取得、またはＤＨＴアナウンス要求メッセージ、のいずれか１つである、請求項１に記載の処理方法。
【請求項４】
前記ＤＨＴクライアントがノード識別子を有し、ＤＨＴ要求メッセージが前記ノード識別子を含み、ＤＨＴクライアントノードのノード識別子を考慮して、所定のパターンに従って少なくとも１つのノード識別子が生成される、請求項１に記載の処理方法。
【請求項５】
ＤＨＴクライアントが、受信したノード識別子をノード空間の連続したバケットに入れることによって自身のＤＨＴルーティングテーブルを埋めることをさらに含み、受信されたＤＨＴ要求メッセージごとに代理処理エージェントで複数のノード識別子が生成され、パターンは、前記生成された複数のノード識別子のすべてが同じバケットにあり、ＤＨＴクライアントのノード識別子が前記バケットに存在しないようなパターンである、請求項４に記載の処理方法。
【請求項６】
代理処理エージェントで、
ＤＨＴクライアントから、ｐｉｎｇまたは反復されるＤＨＴノード発見要求メッセージ等のさらなるＤＨＴ要求メッセージを、代理処理エージェントの前記複数のノードのうち１つのノードで受信するステップと、
前記ＤＨＴクライアントについて、前記ノードに関連付けられた格納されたノード識別子を検索するステップと、
前記検索された格納ノード識別子を含むＤＨＴ応答メッセージを送信するステップと
をさらに含む、請求項１に記載の処理方法。
【請求項７】
分散ハッシュテーブル（ＤＨＴ）クライアントが自身のＤＨＴルーティングテーブルを埋めることを可能にするために、ＤＨＴクライアントからのＤＨＴメッセージに応答する、代理ノード動作を遂行する代理処理エージェントであって、
ＤＨＴクライアントからＤＨＴ要求メッセージを受信する複数のノードと、
少なくとも１つのノード識別子を生成し、各ノード識別子にＩＰアドレスおよびポート番号を関連付ける処理手段であって、各ＩＰアドレス／ポート番号の組み合わせは、前記複数のノードのうち１つのノードに対応する、手段と、
前記ＤＨＴ要求メッセージに応答してＤＨＴ応答メッセージを作成し、ＤＨＴクライアントに送信する手段であって、前記ＤＨＴ応答メッセージは、前記少なくとも１つのノード識別子とそれに関連付けられたＩＰアドレスおよびポートを含む、手段と、
少なくとも１つの生成されたノード識別子とそれに関連付けられたＩＰアドレスおよびポートを、前記ＤＨＴクライアントとの関連で記憶する記憶手段と
を備える、代理処理エージェント。
【請求項８】
ＤＨＴメッセージがＤＨＴクライアントのノード識別子を含み、
前記処理手段が、ＤＨＴクライアントのノード識別子を考慮して、所定のパターンに従って前記少なくとも１つのノード識別子を生成するように構成される、請求項７に記載の代理処理エージェント。
【請求項９】
分散ハッシュテーブル（ＤＨＴ）ブートストラップサーバを備えるＤＨＴインフラストラクチャ内のＤＨＴクライアントノードのルーティングテーブルを埋めるためのシステムであって、
請求項７または８に記載の代理処理エージェントと、
ブートストラップサーバを宛先とするパケットを前記代理処理エージェントに転送するように構成された少なくとも１つのルータと
を備える、システム。
【請求項１０】
ＤＨＴブートストラップサーバを備えるＤＨＴインフラストラクチャ内のＤＨＴクライアントノードのルーティングテーブルを埋める方法で使用する、前記ＤＨＴクライアントノードのネットワーク内で使用するためのルータであって、前記ネットワークは、複数の代理ノードを持つ代理処理エージェントを有し、前記ルータは、ＤＨＴブートストラップサーバを宛先とするパケットを、前記代理処理エージェントの前記複数の代理ノードのうち第１のノードに転送するように構成される、ルータ。
【請求項１１】
前記ルータが、ＤＨＴブートストラップサーバに関連付けられた特定のＩＰアドレス／ＵＤＰポートを行き先とするパケットを、代わりに、前記複数の代理ノードのうち第１のノードに関連付けられた第１のＩＰアドレス／ＵＤＰポートに送ることを指示したポリシー規則を保持している、請求項１０に記載のルータ。
【請求項１２】
分散ハッシュテーブル（ＤＨＴ）ブートストラップサーバ、代理処理エージェント、および、ＤＨＴブートストラップサーバを宛先とするパケットを代理処理エージェントに転送するように構成された少なくとも１つのルータを備えているＤＨＴインフラストラクチャ内のＤＨＴクライアントノードのルーティングテーブルを埋める方法であって、ＤＨＴクライアントノードで行われる、
ブートストラップサーバを宛先とするＤＨＴ要求メッセージを、前記少なくとも１つのルータのルータを通じて送信するステップと、
前記ＤＨＴ要求メッセージに応答して、ノード識別子とそれに関連付けられたＩＰアドレスおよびポートをノードごとに含むノードグループを含んだＤＨＴ応答メッセージを、前記代理処理エージェントから受信するステップであって、前記グループは、代理処理エージェントで所定のパターンに従って作成および管理される、ステップと、
前記ノード識別子のグループと、それに関連付けられたＩＰアドレスおよびポートをルーティングテーブルに格納するステップと
を含む、方法。
【請求項１３】
前記グループのうち少なくとも１つのノードにさらにＤＨＴ要求メッセージを送信するステップと、ノードごとにノード識別子とそれに関連付けられたＩＰアドレスおよびポートを含む、少なくとも１つのさらなるノードグループを前記少なくとも１つのノードから受信するステップであって、前記さらなるグループは、代理処理エージェントで所定のパターンに従って作成および管理される、ステップと、前記さらなるノード識別子のグループとそれらに関連付けられたＩＰアドレスおよびポートとを前記ルーティングテーブルに格納し、任意で、さらなるノードグループのうち少なくとも１つのノードについて前記送信および受信ステップを繰り返すステップとをさらに含む、請求項１２に記載の方法。
【請求項１４】
請求項４に記載の方法をコンピュータに実行させるためのコンピュータ実行可能命令を含むコンピュータプログラムであって、生成された複数のノード識別子のすべてが同じバケットにあり、ＤＨＴクライアントのノード識別子が前記バケットに存在しないようにするパターンを使用して、受信されたＤＨＴ要求メッセージごとに前記複数のノード識別子をコンピュータに生成させるためのコンピュータ実行可能命令をさらに含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、分散ハッシュテーブル（ＤＨＴ）クライアントノードのルーティングテーブルを埋めることに関連するシステムおよび方法の分野に関し、より詳細には、処理方法、代理処理エージェント、ルーティングテーブルを埋めるシステムおよび方法、ルータ、ならびにＤＨＴクライアントノードに関する。
【背景技術】
【０００２】
分散ハッシュテーブル（ＤＨＴ）は高度に分散したノード間の通信に適する。ノードが分散していると、より低費用の通信が可能なノードが利用できる可能性があるにも関わらず、実際に関係するノードに明示的に知られていないために、しばしば結果的にノード間の通信が高費用になることがある。
【０００３】
現行では、ＤＨＴノードは、そのＤＨＴノードが外部ノードに送信するＤＨＴ要求メッセージ（例えばＤＨＴノード発見またはピア取得要求メッセージ）に対して受信するＤＨＴ応答メッセージに見つかるノード／ピアから、および／または、外部ノードから受信するＤＨＴ要求メッセージに見つかるノードから、および／または、ＢｉｔＴｏｒｒｅｎｔトラッカー（ｔｒａｃｋｅｒ）に送信するＢｉｔＴｏｒｒｅｎｔアナウンス要求メッセージに対して受信するＢｉｔＴｏｒｒｅｎｔ応答メッセージに見つかるピア等から、ＤＨＴネットワーク内の利用可能な外部ノードについてのビューを構築する。生成されたビューは、半恒久的にＤＨＴノードのＤＨＴルーティングテーブルに格納される。一旦ＤＨＴノードのルーティングテーブルに外部ノードが入れられると、通例は、少なくとも、その外部ノードがＤＨＴ要求メッセージに応答しなくなるまで、またはＤＨＴノードが切断されるまでテーブル内にあり、その時点でＤＨＴノードはＤＨＴルーティングテーブルを更新（ｃｌｅａｎ）することができる。ＤＨＴノードは、自身のＤＨＴルーティングテーブルにある外部ノードのみを使用してＤＨＴネットワーク内でさらに通信するため、ＤＨＴネットワークで実際に通信を行うノードについての制御はなく、結果として、例えば「近隣」ノードが利用可能である場合に「遠方」のノードを使用した必要以上に高費用の通信になり、大西洋をまたぐリンクや複数回のＩＰホップが必要になってしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、特にＢｉｔＴｏｒｒｅｎｔを適用する場合にＤＨＴノード間の通信を向上させる、処理方法、代理処理エージェント、ルーティングテーブルを埋めるシステムおよび方法、ルータ、ならびにＤＨＴクライアントノードを提供することである。
【課題を解決するための手段】
【０００５】
一実施形態によれば、分散ハッシュテーブル（ＤＨＴ）クライアントが自身のＤＨＴルーティングテーブルを埋めることを可能にするために、ＤＨＴクライアントからのＤＨＴメッセージに応答するための処理方法が提供される。この方法は、複数の所定のノードを有する代理処理エージェントで行われる複数のステップを含み、各ノードはＩＰアドレスおよびポート番号を有する。最初のステップでは、それらノードの１つがＤＨＴクライアントからＤＨＴ要求メッセージを受信する。次に、代理処理エージェントが、少なくとも１つのノード識別子を生成し、各ノード識別子をＩＰアドレスおよびポート番号に関連付ける。各ＩＰアドレス／ポート番号の組み合わせは、代理処理エージェントのノードの１つに対応する。次に、前記少なくとも１つのノード識別子とそれに関連付けられたＩＰアドレスおよびポートを含んでいるＤＨＴ応答メッセージがＤＨＴクライアントに送信される。通例は、代理処理エージェントが、生成されたノード識別子とそれに関連付けられたＩＰアドレスおよびポートを各ＤＨＴクライアントとの関連で記憶するデータベースを管理する。
【０００６】
この方法により、ＤＨＴクライアントノードのルーティングテーブルを制御することが可能になる。このような方法の実施形態は、例えば、ＩＳＰネットワーク上に存在するＤＨＴノードが、通信費用が低いことが分かっている所定のノードで自身のルーティングテーブルを埋めることを保証することができる。
【０００７】
好ましい実施形態によれば、ＤＨＴ要求メッセージは、関連付けられたＤＨＴ応答メッセージが少なくとも１つのノードを含むメッセージである。ＤＨＴ要求メッセージは例えば次のいずれか１つである：ＤＨＴノード発見要求メッセージ、ＤＨＴｐｉｎｇ要求メッセージ、ＤＨＴピア取得要求メッセージ、ＤＨＴアナウンス要求メッセージ等。
【０００８】
本発明の処理方法の一実施形態によれば、特定のＤＨＴクライアントから受信される最初のメッセージは、通例は、ブートストラップサーバを宛先としルータによって代理処理エージェントに転送された最初のＤＨＴ要求メッセージである。そして、生成ステップは、通例、ノード空間の第１のバケット（ｂｕｃｋｅｔ）を埋めるための第１のノード識別子の第１のグループ、通例は８つのノード識別子を生成するステップを含む。本発明の処理方法の一実施形態によれば、同じＤＨＴクライアントから受信されるさらなるＤＨＴ要求メッセージは、前記第１のグループの第１のノード識別子に関連付けられたアドレス／ポートを持つノードを宛先とする。そして、生成ステップは、さらに他のバケットを埋めるためのさらなるノード識別子のさらなるグループを生成するステップを含む。通例はそのＤＨＴクライアントのルーティングテーブルを常に十分に埋めておくために、同じＤＨＴクライアントからさらにＤＨＴ要求メッセージが受信される可能性があることが理解されよう。
【０００９】
好ましい実施形態によれば、受信されたＤＨＴノード発見要求メッセージごとに、複数のノード識別子、通例は８つのノード識別子が生成される。この実施形態は、大きさが２１６０のノード空間に好ましく、その場合バケットは８つのノード識別子を保持している時に満杯とみなされる。
【００１０】
好ましい実施形態によれば、少なくとも１つのノード識別子は、ＤＨＴクライアントノードのノード識別子を考慮して、所定のパターンに従って生成される。好ましくは、受信されたＤＨＴ要求メッセージごとに、複数のノード識別子（例えば８つのノード識別子）が代理処理エージェントで生成される。さらに好ましくは、パターンは、前記生成された複数のノード識別子のすべてが同じバケットにあり、ＤＨＴクライアントのノード識別子が前記バケットに存在しないようにするパターンである。例えばルーティングテーブルが大きさ２１６０のノード空間を使用する場合、パターンは、ノード空間を２つのバケットに分割し、ＤＨＴ識別子を含んでいない方のバケットに所定数、通例は８つの生成されたノード識別子を入れ、バケットサイズが所定の数、通例は８になるまで、前記分割およびテーブルを埋めるステップをその他のバケットに繰り返し、前記最後のバケットに最後に生成されたノード識別子を入れるものとすることができる。
【００１１】
可能な実施形態によれば、この方法はさらに、代理処理エージェントの前記複数のノードのうち１つのノードで、ＤＨＴクライアントから、さらなるＤＨＴ要求メッセージ（例えばＤＨＴｐｉｎｇまたは反復されるノード発見要求メッセージ）を受信するステップを含む。そのＤＨＴ要求メッセージに応答して、前記ＤＨＴクライアントについて、前記ノードに関連付けられた格納されたノード識別子が検索され、前記検索された格納ノード識別子を含むＤＨＴ応答メッセージがＤＨＴクライアントに送信される。
【００１２】
本発明はさらに、分散ハッシュテーブル（ＤＨＴ）クライアントが自身のＤＨＴルーティングテーブルを埋めることを可能にするために、ＤＨＴクライアントからのＤＨＴメッセージに応答する代理処理エージェントに関する。このエージェントは、ＤＨＴクライアントからＤＨＴ要求メッセージを受信することが可能な複数のノードと、少なくとも１つのノード識別子を生成し、各ノード識別子にＩＰアドレスおよびポート番号を関連付ける処理手段と、前記ＤＨＴ要求メッセージに応答してＤＨＴ応答メッセージを作成し、ＤＨＴクライアントに送信する手段であって、前記ＤＨＴ応答メッセージは、少なくとも１つのノード識別子とそれに関連付けられたＩＰアドレスおよびポートを含む、手段と、少なくとも１つの生成されたノード識別子とそれに関連付けられたＩＰアドレスおよびポートを、前記ＤＨＴクライアントとの関連で記憶する記憶手段とを備える。
【００１３】
好ましい実施形態によれば、処理手段は、ＤＨＴクライアントのノード識別子を考慮して、所定のパターンに従ってノード識別子のグループを生成するように構成される。可能なパターンについては、上記の方法および下記の図の説明で与える例を参照されたい。
【００１４】
本発明はさらに、分散ハッシュテーブル（ＤＨＴ）ブートストラップサーバを備えるＤＨＴインフラストラクチャ内のＤＨＴクライアントノードのルーティングテーブルを埋めるためのシステムに関する。このシステムは、複数の代理ノードを有する代理処理エージェントと、ブートストラップサーバを宛先とするパケットを前記代理処理エージェントに転送するように構成された複数のルータとを備える。そのようにして、代理処理エージェントは、ブートストラップサーバを宛先とするＤＨＴクライアントからのＤＨＴ要求メッセージに応答することができる。したがって、返されるノードは、代理処理エージェントの複数のノードの中から選ぶことができ、その他の点では分散型のＤＨＴインフラストラクチャに一定程度の集中化をもたらす。
【００１５】
本発明は、ＤＨＴクライアントノードのネットワーク内で使用するためのルータにも関し、このルータは、ＤＨＴブートストラップサーバを宛先とするパケットを、前記代理処理エージェントの前記複数の代理ノードのうち第１のノードに転送するように構成される。好ましくは、ルータは、ＤＨＴブートストラップサーバに関連付けられた特定のＩＰアドレス／ＵＤＰポートを行き先とするパケットを、代わりに、前記複数の代理ノードのうち第１のノードに関連付けられた第１のＩＰアドレス／ＵＤＰポートに送ることを指示したポリシー規則を保持する。
【００１６】
本発明はさらに、分散ハッシュテーブル（ＤＨＴ）インフラストラクチャ内のＤＨＴクライアントノードのルーティングテーブルを埋める方法に関し：
−  ブートストラップサーバを宛先とするＤＨＴ要求メッセージを、前記少なくとも１つのルータのルータを通じて送信するステップと、
−  前記ＤＨＴ要求メッセージに応答して、ノード識別子とそれに関連付けられたＩＰアドレスおよびポートをノードごとに含むノードグループを含んだＤＨＴ応答メッセージを、前記代理処理エージェントから受信するステップであって、前記グループは、代理処理エージェントで好ましくは所定のパターンに従って作成および管理される、ステップと、
−  前記ノード識別子のグループと、それに関連付けられたＩＰアドレスおよびポートをルーティングテーブルに格納するステップと
がＤＨＴクライアントノードで行われる。
【００１７】
好ましい実施形態によれば、方法はさらに、前記グループのうち少なくとも１つのノードにさらにＤＨＴ要求メッセージを送信するステップと、ノードごとにノード識別子とそれに関連付けられたＩＰアドレスおよびポートを含む少なくとも１つのさらなるノードグループを前記少なくとも１つのノードから受信するステップがＤＨＴクライアントノードで行われる。このさらなるグループは、上記で説明したように、代理処理エージェントで好ましくは所定のパターンに従って作成および管理されたものである。クライアントノードで受信されると、さらなるノード識別子のグループとそれらに関連付けられたＩＰアドレスおよびポートがそのノードのルーティングテーブルに格納される。通例は、ルーティングテーブルが十分に埋まるまで、各さらなるノードグループのうち複数のノードについて送信および受信ステップが繰り返される。
【００１８】
本発明の別の態様によれば、ルーティングテーブルを記憶した記憶手段を有するＤＨＴクライアントノードが提供され、前記ルーティングテーブルは、上記開示の方法に従って取得されたノード識別子のグループを含む。
【００１９】
本発明の別の態様によれば、生成される複数のノード識別子のすべてが同じバケットにあり、ＤＨＴクライアントのノード識別子が前記バケットに存在しないようにするパターンを使用して、受信されたＤＨＴ要求メッセージごとに複数のノード識別子を生成するためのコンピュータプログラムが提供される。さらに別の態様によれば、そのようなコンピュータプログラム製品を記憶するコンピュータプログラム製品が提供される。
【００２０】
本発明の好ましい態様によれば、代理処理エージェントのノード（代理ノードとも呼ぶ）は、そのノードへの到達を可能とするノード識別番号、ＩＰアドレスおよびＵＤＰポートで特徴付けられるＩＳＰネットワークの所定のノードである。そして、上記開示のＤＨＴクライアントとルータは、同じＩＳＰネットワーク内に置かれる。
【００２１】
本発明の一態様によれば、ＤＨＴノードのルーティングテーブル上で主要な制御を掌握することを介して、そのＤＨＴノードが発信するＤＨＴ要求メッセージに対して一定程度の集中化がもたらされる。
【００２２】
好ましくは、所定の代理ノードのノード識別子は、代理ノードのセットで、ＩＳＰネットワーク内のどのＤＨＴクライアントノードのルーティングテーブルも十分に埋まることが保証されるように生成される。
【００２３】
添付図面を使用して、本発明の現時点で好ましい非限定的な例示的実施形態を説明する。添付図面と併せて以下の詳細な説明を読むことにより、本発明の上記およびその他の利点、特徴、および目的がより明らかになり、本発明をより良く理解することができよう。
【図面の簡単な説明】
【００２４】
【図１Ａ】ＤＨＴノードのルーティングテーブルを埋める従来技術の方法を説明する図である。
【図１Ｂ】本発明の方法およびシステムの好ましい実施形態を説明する図である。
【図２−１】本発明の一実施形態における、ＤＨＴクライアントＸと代理ノード処理システムの間で交換されるメッセージと、ＤＨＴクライアントＸと代理ノード処理システムで行われる、メッセージ間でのステップを説明する図である。
【図２−２】本発明の一実施形態における、ＤＨＴクライアントＸと代理ノード処理システムの間で交換されるメッセージと、ＤＨＴクライアントＸと代理ノード処理システムで行われる、メッセージ間でのステップを説明する図である。
【図３】本発明の代理ノード処理システムの一実施形態で管理されるデータベースの一例の図である。
【図４】本発明のシステムの第２の実施形態を説明する図である。
【発明を実施するための形態】
【００２５】
従来技術によれば、ＤＨＴクライアント１００が最初にＤＨＴネットワークに参入しようとする時、ＤＨＴクライアント１００は、ブートストラップ処理を行う必要がある（図１Ａ参照）。ＤＨＴクライアント１００はまずＤＨＴノード発見要求メッセージ１０１ａ（ＢｉｔＴｏｒｒｅｎｔクライアントでハードコーディングされる）をブートストラップサーバ１０６に送信して、初期構成情報を取得する。この例では、ＤＨＴクライアントは８つの外部ノード１０２（ノード２−９）についての詳細を受け取る。用語「外部（ｆｏｒｅｉｇｎ）」とは、クライアントノード１００のＩＳＰネットワーク（図示せず）の外側にあるノードを意味する。従来技術の他の例では、ノード１０２の１つがクライアントのＩＳＰネットワーク内にある場合もあるが、一般に、それほど頻繁に生じるものではないことに留意されたい。ノード１０２の詳細は、通例、ノードＩＤ、ＩＰアドレスおよびＵＤＰポートを含む。次いで、ＤＨＴクライアント１００は、受信したそれら外部ノード１０２の詳細をルーティングテーブルに入れ、ルーティングテーブルをさらに埋めるための他のノード１０２の詳細を得るためにＤＨＴ要求メッセージ１０３ａをそれらのノード１０２に送信する。
【００２６】
本発明のシステムおよび方法の実施形態を図１Ｂに示す。ＤＨＴクライアント１００が最初にＤＨＴネットワークに参入しようとする時には、ブートストラップ処理を行う必要がある。すなわち、ＤＨＴクライアント１００はまずＤＨＴノード発見要求メッセージ１０１ｂ（ＢｉｔＴｏｒｒｅｎｔクライアントでハードコーディングされる）をブートストラップサーバ１０６に送信して初期構成情報を得る。しかし、本発明の実施形態によれば、このＤＨＴノード発見要求メッセージ１０１ｂは、ルータ１０７で第１の「人工的に作成された」代理ノード、この場合は、ルータ１０７のＩＳＰドメイン内にある代理処理エージェント１０８の代理ノード１に転送される。この第１の代理ノードは、あらかじめ設定された一意のＩＰアドレス｜ＵＤＰポートの組み合わせＩＰ＿１｜ｐ＿１を有する。この転送を実現するために、ルータは、ブートストラップノード１０６のＩＰアドレス｜ＵＤＰポートの組み合わせを宛先とする受信パケットを、ＩＰアドレス｜ＵＤＰポートの組み合わせＩＰ＿１｜ｐ＿１に送るように構成される。
【００２７】
代理処理エージェント１０８は、通例は、複数の代理ノード動作を遂行することが可能なサーバマシンのセットとして実施される。より詳細には、代理処理エージェント１０８は、ＤＨＴクライアントからＤＨＴメッセージを受信するように構成される。このメッセージは、ルータ１０７により転送された初期ＤＨＴノード発見要求メッセージ１０１ｂ、またはさらなるＤＨＴ要求メッセージ１０３ｂである（下記を参照されたい）。そのようなメッセージに対して、代理処理エージェント１０８は、いくつかのノード識別子、通例は８つのノード識別子を生成する。この生成は、ＤＨＴ要求メッセージ送信元のクライアントノード１００のノード識別子、およびそのクライアントに対してすでに生成されたノード識別子を考慮に入れ、所定のパターンに従って行うことが好ましい（下記を参照されたい）。各ノード識別子は、代理ノード１０５を表す。さらに、エージェントは、各ノード識別子にＩＰアドレスおよびポート番号を関連付け、生成されたノード識別子とそれに関連付けられたＩＰアドレスおよびポートを含むＤＨＴ応答メッセージをＤＨＴクライアントに送信することができる。また、代理処理エージェント１０８は、生成された数のノード識別子とそれに関連付けられたＩＰアドレスおよびポートをクライアント１００ごとに記憶する記憶手段を備える。
【００２８】
図１Ｂの例では、初期ＤＨＴノード発見要求メッセージ１０１ｂを受け取った第１の代理ノード１は、８つの代理ノード、代理ノード２−代理ノード９を返す。それら８つの代理ノード１０５は、所定のパターンに従って生成されたノード識別子と、それに関連付けられた、事前に設定されたＩＰアドレス｜ＵＤＰポートの組み合わせＩＰ＿ｘ｜ｐ＿ｙとを有する。ｘは、２０４８＜ｙ＜６５６３６の場合は１でよく、組み合わせの数がそれより多い場合は、ｘは２、３等とすることができる。次に、ＤＨＴノード１００は、新たに返された代理ノード１０５に対してさらに連続したＤＨＴノード発見要求メッセージ１０３ｂを発信し、それに対して代理ノード１０５は他の代理ノードを返す。それらの他の代理ノードも、所定のパターンに従って生成されたノード識別子と、それに対応する事前に設定されたＩＰアドレス｜ＵＤＰポートの組み合わせＩＰ＿ｘ｜ｐ＿ｙ）とを有する。
【００２９】
次いで、本発明のシステムおよび方法のより詳細な実施形態を図２を参照して説明する。この実施形態によれば、代理処理エージェントは、ＤＨＴクライアントノードのルーティングテーブルの十分な数の「バケット」が完全に埋められることが保証されるように、代理ノードのノード識別子（ノードＩＤ）を生成する。ここに示す例では、パターンは、要求元のＤＨＴノード２００自身のノードＩＤに応じて決まり、ノードＩＤは、ＤＨＴノードがＤＨＴノード発見要求メッセージで通知する。このパターンは、ＤＨＴノード２００ごとに異なるが、ＤＨＴノード２００自身のノードＩＤ  ＩＤＸを基準として決まる。図２を参照すると、ノードＩＤ  ＩＤＸを有するＤＨＴクライアント２００が、ルータ２０７を介してブートストラップサーバ１０６に初期ＤＨＴノード発見要求メッセージ２１０を送信し、そのＤＨＴノード発見要求メッセージは、ＩＰアドレスＩＰ＿１およびＵＤＰポートＰ＿１を有する代理ノードに転送され、代理処理エージェント２０８に受信される（矢印２１１を参照されたい）。便宜上ポート番号は１から番号を振っているが、実際には番号２０４８から始まることに留意されたい。そのＤＨＴノード発見要求メッセージに応答して、ステップ２１２で、エージェント２０８は、ノードＩＤがＩＤ２−ＩＤ９の８つの代理ノードを作成する。それらのノードＩＤは次のパターンを使用して生成される。全ノード空間（この場合は０−２１６０−１の範囲の値を有するノード空間）を等しい大きさの２つの「バケット」に分割し、自ノードのＩＤ  ＩＤＸがないバケット内で８つの適切なノードＩＤを計算する。この例では、ＩＤＸが２番目のバケットにあると仮定し、ＩＤ２−ＩＤ９に値０−７が与えられる（ステップ２１４も参照されたい）。ステップ２１３で、エージェント２０８からＤＨＴクライアント２００に、値０−７を持つノードＩＤとそれに関連付けられたＩＰアドレス｜ＵＤＰポートの組み合わせを含むＤＨＴ応答メッセージが送信される。ステップ２１４で、ＤＨＴクライアント２００が、自身のノード空間にＩＤ２−９を入れ、ノード空間を２つのバケットに分割する。１番目のバケットは８つのノードＩＤを含んでいるので満杯とみなされる。ステップ２１５で、ルーティングテーブルにノードＩＤ  ＩＤ２−９とそれらに関連付けられたＩＰ｜ＵＤＰの組み合わせを入れる。ステップ２１３および２１４は従来技術のＤＨＴクライアントによって行うことができることに留意されたい。一方、エージェント側における８つの代理ノードの生成と、エージェント側でノードＩＤを選択する方式は、本発明のこの実施形態に特有である。
【００３０】
次のステップで、クライアントノード２００は、さらなるＤＨＴノード発見要求メッセージをノードＩＤ２−９に送信する。第１のそのようなＤＨＴノード発見要求メッセージは、ステップ２１６で、ＩＰアドレスがＩＰ＿１、ＵＤＰポートがＰ＿２の代理ノードに送信される。そのＤＨＴノード発見要求メッセージに応答して、ノードＩＤ  ＩＤ１０−１７およびそれらに関連付けられたＩＰ｜ＵＤＰの組み合わせを有する８つの代理ノードがさらに生成される（ステップ２１７を参照されたい）。それらのノードＩＤは、ステップ２１２で使用されるパターンと同様の下記のパターンを使用して生成される。すなわち、ＩＤＸがあるバケットを等しい大きさの２つの（より小さい）「バケット」にさらに分割し（ステップ２１９も参照されたい）、ＩＤＸがないバケット内で８つの適切なノードＩＤ、ＩＤ１０−１７を選択する。この例では、ＩＤＸは１番目の（より小さい）バケットにあり、ＩＤ１０−１７に値３・２１５８−３・２１５８＋７が与えられるとする。
【００３１】
次いで、クライアントノードの振る舞いに応じて、ルーティングテーブルが完全に埋まるまで（大きさが２１６０のノード空間の例では１２８０個のエントリで埋まる）、または十分に埋まるまで、さらにＤＨＴ要求メッセージ２２１を送信することができる。ルーティングテーブルを完全に埋めることが可能／望ましい場合は、バケットサイズが８になり（その場合はそれ以上分割できない）、最後のバケットが８つの適切なノードＩＤで埋まるまでステップ２１６−２２０を繰り返す。
【００３２】
当業者は、この独自方式の埋め方は本発明の実施形態で使用できる可能なパターンの１つに過ぎず、多くの他のパターンを使用してよく、そのようなパターンは、ＤＨＴ処理に関連する他のパラメータに依存させることが可能であることを理解されよう。図２の例では、埋めようとするバケットの最初の８つの空間が選択されるが、当業者は、埋めようとするバケット中で他の空間を選択してノード識別子を分散させる、例えば埋めようとするバケットに均等に分散させることも可能であることを理解されよう。
【００３３】
図３に、代理処理エージェントで管理されるデータベースの実施形態を示す。クライアントＸの値は図２の例に対応している。クライアントＹについては、そのノードＩＤがノード空間の前半にあると仮定し、よって、図２の例のパターンに従って生成されたノードＩＤの第１のグループは２１５９−２１５９＋７となる。
【００３４】
ＤＨＴノード１００、２００は、ＤＨＴｐｉｎｇ要求メッセージや反復されるＤＨＴノード発見要求メッセージなどの連続したＤＨＴ要求メッセージを、それらＤＨＴノードが認識するようになった個々の代理ノード１０５、２０５に対して発信して、それらの代理ノードがまだ生きているかどうかを確認することができる。通例は、それらの代理ノードが応答する限り、ＤＨＴノード１００、２００は、代理ノード１０５、２０５を自身のＤＨＴルーティングテーブルに維持しておく。これは、通例、ＢｉｔＴｏｒｒｅｎｔのクライアント実装に依存する。代理ノード１０５、２０５は、ＤＨＴノード１００、２００からのそのようなＤＨＴ要求メッセージに対して、そのＤＨＴノード１００、２００に対する以前のＤＨＴノード発見応答メッセージ内で代理ノード１０５、２０５に関連付けられていたノードＩＤと同じノードＩＤで応答する。これは、代理処理エージェントで管理されるデータベースによって可能になり、データベースには、生成されたノードＩＤおよびそれに関連付けられたアドレス｜ポートの組み合わせがクライアントごとに記憶される。データはクライアント識別子に結び付けて記憶されるので、異なるクライアントに同じアドレス｜ポートの組み合わせを使用することができることに留意されたい。
【００３５】
図４に、本発明のシステムのさらなる実施形態を示し、これは大規模なＩＳＰネットワークで使用するのに特に適する。この場合は、１つのＩＳＰネットワーク４０９内に２つの代理処理エージェント４０８が設けられる。ルータ４０７が、ブートストラップサーバを宛先とする受信パケットを、そのパケットの送信元に応じて、代理処理エージェント４０８の代理ノードの１つに転送するように構成される。図４の例では、ブートストラップサーバを宛先とするＤＨＴクライアントノードＸおよびＹからのメッセージ４０１は、代理処理エージェント１に転送され、ＤＨＴクライアントノードＺのメッセージ４０１は代理処理エージェント２に転送される。そして、さらなるＤＨＴ要求メッセージ４０３も個々のエージェント４０８の代理ノードに送信される。当業者は、３つ以上のエージェントがある他の変形例も本発明の範囲内にあることを理解されよう。
【００３６】
本発明の実施形態は、その他の点では完全に分散型のＤＨＴネットワークに一定の集中化を導入する。その集中化を活用して、ＤＨＴネットワークの少なくとも一部分をＩＳＰの要求により合った方式で動作させることができ、エンドユーザによるＢｉｔＴｏｒｒｅｎｔのファイル交換の体験を損なわない。
【００３７】
本発明のさらなる実施形態は、市販されるＤＨＴクライアントに変更を加える必要がないとう利点を有する。ただし、本発明を使用した市販のＤＨＴクライアントは、その装置内のＤＨＴルーティングテーブルに格納された情報から認識できることに留意されたい。本発明の実施形態では、ＤＨＴルーティングテーブルは、通例は十分に埋められる。また、通例は、ＤＨＴルーティングテーブルのエントリは、従来技術のように無作為ではなく特定のパターンに従う。
【００３８】
上記で本発明の原理について特定実施形態との関連で述べたが、この説明は、単なる実施例であり、添付の特許請求の範囲によって決定される保護範囲の限定ではないことを明確に理解されたい。
【図１Ａ】
0005607252.tif 000002
【図１Ｂ】
0005607252.tif 000003
【図２−１】
0005607252.tif 000004
【図２−２】
0005607252.tif 000005
【図３】
0005607252.tif 000006
【図４】
0005607252.tif 000007