(57)【特許請求の範囲】
【請求項１】
一意の番号がアドレスに変換されるサーバレス名前解決方法であって、
第１ノードで、一意の番号識別子を有する第２ノードのアドレス解決を求める要求側ノードから、該要求側ノードのアドレス情報、ホップの最大集計値、前記要求メッセージを事前に処理したノードのリストを含む要求メッセージを受信するステップであって、前記第１ノードは、ノードの円形番号空間内にあり、かつ前記第１ノードに最も近い前記円形番号空間内のノードのサブセットの識別子に対応する項目のキャッシュを含む、要求メッセージを受信するステップと、
前記第１ノードのルーティングテーブルに前記要求側ノードのアドレス情報を入れるステップと、
前記要求メッセージを分析するステップと、
前記一意の識別子が前記第１ノードのアドレス情報と同じである場合、前記要求メッセージを事前に処理したノードの数が前記ホップの最大集計値を超えた場合、または前記要求メッセージを事前に処理したノードのリストが前記第１ノードに対応するアドレスを含む場合、前記第１ノードのアドレス情報を前記要求メッセージに最も一致するものと判定する前記要求側ノードからの要求メッセージに対する応答メッセージを生成するステップと、
その他の場合、前記要求に対する適切な次のホップを含む中間ノードを決定するステップと、
前記要求メッセージを前記適切な次のホップに転送するステップと、
前記第２ノードに到達するまで、前記分析するステップ、前記生成するステップおよび前記決定するステップを繰り返すステップとを備えることを特徴とする方法。
【請求項２】
前記要求メッセージは起点の証明を含み、前記起点の証明の有効性を判定するために前記起点の証明を検査するステップと、前記起点の証明が無効な場合は前記要求メッセージを拒絶するステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記ルーティングテーブルに入れるステップは、
前記要求側ノードのアドレス情報が前記ルーティングテーブルに既に入っているか否かを判定するステップと、
前記要求側ノードのアドレス情報よりも新しいアドレス情報が既に前記ルーティングテーブルに格納されている場合、前記要求側ノードのアドレス情報をリフレッシュするステップと、
前記第１ノードと前記要求側ノードのアドレス情報との間の距離を計算するステップと、
前記距離から、前記要求側ノードのアドレス情報を格納させる選択されたレベルを判定するステップと、
前記選択されたレベルに前記アドレス情報を格納するステップとを備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記選択されたレベルは、Ｋ個の項目をその中に格納している最後のレベルであり、前記選択されたレベルを判定するステップは、項目が置き換えられるべきか否かを判定するステップと、前記項目で前記要求側ノードのアドレス情報を置き換えるステップとを備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記選択されたレベルは最後のレベルであり、既にフラッドしたノードのリストを有する前記第１ノードのアドレス情報を含むフラッディングメッセージを作成するステップと、前記フラッディングメッセージを前記要求側ノードに送信するステップとをさらに備えることを特徴とする請求項３に記載の方法。
【請求項６】
前記要求側ノードへの距離がＤＭＡＸ／（Ｐ（Ｌ−１））よりも短い前記ルーティングテーブル内のノードのリストを作成するステップであって、前記新しい項目の追加がフラッディングメッセージの結果であるときに、前記リストから既にフラッドしているものとしてマーク付けされているノードを除去するステップと、前記要求側ノードのアドレス情報を含んでいるフラッディングメッセージを作成するステップであって、前記フラッディングメッセージを前記リスト中のすべてのノードに送信するステップとをさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記選択されたレベルは、Ｋ個またはＫ＋１個以上の項目をそこに格納している最後のレベルであり、前記選択されたレベルを判定するステップは、新しいレベルを追加するステップと、前記最後のレベル中の項目を、前記第１ノードのアドレス情報からの距離に従って前記最後のレベルと前記新しいレベルとの間で分割するステップとを備えることを特徴とする請求項３に記載の方法。
【請求項８】
前記ルーティングテーブル内のアドレス情報に関する有効日付を検査するステップと、前記有効日付が過ぎたアドレス情報を除去するステップとを備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記要求に適した次のホップを判定するステップは、前記要求メッセージにそのアドレスがまだ列挙されていないルーティングテーブル項目のサブセットを探すステップと、前記サブセットが空のときには失敗の指示を戻すステップと、特定項目が前記サブセット内の唯一の項目であるときは前記特定項目を戻すステップとを備えることを特徴とする請求項１に記載の方法。
【請求項１０】
前記第２ノードに最も近い識別子を有する２つの項目を探すステップであって、前記２つの項目のうちの１つをランダムに選択して、該ランダムに選択した項目を戻すステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記第２ノードのアドレス情報と、最も一致するノードのアドレス情報とを含む応答メッセージを受信するステップと、
前記第２ノードのアドレス情報と、前記最も一致するノードのアドレス情報とを比較するステップと、
前記最も一致するノードのアドレス情報が前記第２ノードのアドレス情報と一致せず、かつ前記最も一致するノードのアドレス情報よりも前記第１ノードのアドレス情報の方が前記第２ノードのアドレス情報に近いときに、前記最も一致するノードのアドレス情報を前記第１ノードのアドレス情報で置き換えるステップと、
前記要求側ノードが第１ノードでないときに、前記要求側ノードに応答メッセージを中継するステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
前記第２ノードの名前のハッシュを計算することによって、前記第２ノードの一意の番号識別子を形成するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１３】
前記一意の番号識別子を形成するステップは、＜ハッシュ＞．＜一意の番号＞の形式で前記一意の番号識別子を形成するために、一意の番号を前記名前のハッシュに関連付けるステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記第２ノードの一意の番号識別子をピアツーピアサーバへのＤＮＳ照会によって処理された一意の番号から抽出するステップであって、前記一意の名前は＜ピアツーピア識別子＞．＜ＤＮＳサーバアドレス＞の形式をとるステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１５】
前記＜ピアツーピア識別子＞は一意の名前であり、前記第２ノードの名前のハッシュを計算することによって、前記第２ノードの一意の番号識別子を形成するステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記一意の番号識別子を形成するステップは、＜ハッシュ＞．＜一意の番号＞の形式で前記一意の番号識別子を形成するために、一意の番号を前記名前のハッシュに関連付けるステップをさらに備えることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記円形番号空間内のノードのサブセットは、前記第１ノードからπＫ／Ｎにほぼ等しい距離の範囲内にある円形番号空間内のノードを含み、ここでＫは前記ノードのサブセット内のノード数を表し、Ｎはノードの円形番号空間内のノード数を表すことを特徴とする請求項１に記載の方法。
【請求項１８】
前記ノードのサブセット内のノードは、前記円形番号空間の、角度の大きさの平均が２πＫ／Ｎである小片の範囲内に位置していることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記第１ノードと前記第２ノードの間の距離はπＫ／Ｎより大きく、前記中間ノードを決定するステップは、前記適切な次のホップを、前記第２のノードに最も近い円形番号空間の小片内のノードとして特定するステップを含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
転送された前記要求メッセージを受信する中間ノードの各々において、前記要求メッセージを転送する、前側の中間ノードの各々に対応するノード識別子情報を格納するステップと、
前記中間ノードの各々において、前記格納されたノード識別子情報に基いて、ピアツーピア名前解決方法に使用されるマルチレベルキャッシュであって、各レベルが対応するレベルの境界の指示を含む複数のレベルを含むマルチレベルキャッシュを生成するステップと、
前記マルチレベルキャッシュに基いて前記第２ノードのアドレスを解決するステップとをさらに備えることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記マルチレベルキャッシュ内の連続する各レベルの境界は（Ｌ−１）／Ｋ個であり、ここでＬは前記レベルの数を表し、Ｋは前記レベル内の項目の数を表すことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記マルチレベルキャッシュは、Ｌ個のレベルのセットを含み、各レベルはＫ個の項目を保持するように分けられ、前記レベルの数Ｌは動的であり、Ｌ番目のレベルをＫ個の項目が占めているときにＫ＋１個目の項目がＬ番目のレベルに追加されるべきときは、最後のレベルを形成するために１増加されることを特徴とする請求項２０に記載の方法。
【請求項２３】
前記最後のレベルは、サイズが２＊ＤＭＡＸ／Ｋ（Ｌ−１）の間隔で識別子を有するノードのサンプリングを含み、ここでＤＭＡＸは２つの有効な識別子間の最長距離を表すことを特徴とする請求項２２に記載の方法。
【請求項２４】
中間ノードのマルチレベルキャッシュの１つのレベルに項目を追加するステップと、
中間ノードのアドレス証明と、既にフラッドしたノードの空のリストとを含む第１のフラッディングメッセージを準備するステップと、
追加された前記項目に対応するアドレスへ前記第１のフラッディングメッセージを送信するステップと、
追加された前記項目への距離がＤＭＡＸ／（Ｐ（Ｌ−１））より小さいノードを含むマルチレベルキャッシュ内のノードのリストを生成し、ここでＰは区分のサイズを表すステップと、
追加された前記項目のアドレス証明を含む第２のフラッディングメッセージを準備するステップと、
前記ノードのリスト上のノードへ前記第２のフラッディングメッセージを送信するステップとをさらに備えることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記マルチレベルキャッシュ内のキャッシュが完全であることを検査するステップであって、前記検査は１つのレベルにおいて２つのキャッシュ項目間の最大間隔を計測することを含む、検査するステップと、
計測された前記最大間隔が２＊ＤＭＡＸ／（ＰＩ）より大きいかどうか判断し、ここでＩは前記レベルの値を表し、Ｐは区分のサイズを表すステップと、
計測された前記最大間隔の中央にある第２のノードの位置を含む前記要求メッセージをフォーマットするステップとをさらに備えることを特徴とする請求項２３に記載の方法。
【発明の詳細な説明】
【０００１】
関連特許出願の相互参照
本特許出願は、その教示および開示を参照により本明細書に組み込んだ２００１年４月２日出願の米国特許仮出願第６０／２８０，８９６号の利益を主張するものである。
【０００２】
【発明の属する技術分野】
本発明は、一般に、名前解決プロトコルに関し、より詳細には、ピアツーピア名前解決プロトコルに関する。
【０００３】
【従来の技術】
ピアツーピア通信および実際にはすべてのタイプの通信は、選択されたエンティティ間に接続を確立する可能性に依存するものである。エンティティは、１つまたは複数のアドレスを有する場合がある。実際、これらのアドレスは、エンティティがネットワーク内を移動する際に変化することがしばしばあるが、これはそのトポロジーが変化するか、またはアドレスリースを更新することができないという理由によるものである。したがって、このアドレッシング問題に対する典型的なアーキテクチャによる解法は、各エンティティに安定した名前を割り当てること、および接続が必要なときにこの名前を「解決する」ことである。この名前−アドレス変換は非常に堅固である必要があり、また、簡単で迅速に更新することができる必要がある。
【０００４】
名前サービスには２つの典型的なタイプ、すなわちマルチキャストに基づくものと、集中型サーバに基づくものとがある。最近、純粋なピアツーピアネットワークであるＧｎｕｔｅｌｌａおよびＦｒｅｅｎｅｔは、分散アルゴリズムを使用した命名機能を実施しようとした。残念ながら、これらすべてのアルゴリズムには限界があり、このためインターネットのサイズに近づきつつあるネットワーク内において普遍的な解決法を提供する能力は限定されている。
【０００５】
マルチキャストアーキテクチャでは、要求は、グループ内のすべての局がリッスンする１つのマルチキャストアドレスに送信される。ターゲットはその名前を認識し、応答する。このようなサービスの一例としては、ＳＬＰおよびＳＳＤＰがある。残念ながら、ネットワークはいかなる要求でも複数のコピーを送信することを必要とするので、マルチキャストサービスは、大きなネットワーキングオーバーヘッドを伴うものである。さらに、グループのすべてのメンバーがすべての照会を受信してそれを処理し、それ自体の名前を認識しない照会だけを破棄するので、これらのマルチキャストサービスは、大きな計算オーバーヘッドをも伴う。これらのオーバーヘッドがあるため、マルチキャストアーキテクチャは、通常、限定された数のノードと少数のリンクを含んでいる非常に小規模なネットワークでのみ使用される。スケールするために、マルチキャストプロトコルは、集中型サーバ挿入の実現と、サーバが存在するときは集中型モードに移行することを含むことがしばしばある。
【０００６】
このような集中型アーキテクチャでは、要求は、データベースが名前とアドレスの間のマッピングを含んでいる集中型サーバによって処理される。現在インターネットで使用されているドメインネームサービス（ＤＮＳ）は、集中型ルートとサーバのネットワークを結合し、階層化された名前を解決するように構成されている。残念ながら、集中型サービスおよび準集中型サービスは、何種類かの弱点があることを証明している。まず、全信頼が中央サーバに掛かっているので、更新情報は強力な制御を必要とする。実際、集中型サーバは負荷に対処することが困難であり、照会の大きな部分がキャッシュによって解決される場合だけ動作することができる。これらのキャッシュには、名前−アドレス解決の古いコピーがいつまでも残存しているが、これが迅速な更新を困難にしている。さらに、集中型サーバは、政治的、法律的、商業的管理の対象となるものである。これらの管理が、サービスの信頼性を干渉する場合がある。単なるスケーリング問題としてこれらの弱点を排除しようという意向があるかもしれないが、これらは集中型サービスを使用することによって直接的に導かれるものであることは非常に明らかである。
【０００７】
Ｇｎｕｔｅｌｌａには中央データベースはない。各ノードは、一組の指名されたオブジェクトを「認識する」。グローバルサーチは、指定した「半径」内にある近接ノード上で並列検索を実行し、その結果を併合することによって実施される。この形式による拡大は、メッセージおよび演算用のメモリすなわち各ノードにおけるデータベースのフットプリントと引き換えに得られるものである。データベースが例えばＰ個の構成要素に分割される場合、各要求は少なくともＰ個のメッセージを要求し、少なくともＰ個のノードで検索をトリガする。データセットのサイズが限定されている場合、構成要素数Ｐは、データセットのサイズと、所与のノードが格納することができる最大サイズＳとの間の関係に完全に依存するものである。この場合、構成要素数Ｐが基本的に一定である場合、システムはスケールする。しかしノード数Ｎが増加するに従い、所与の構成要素のコピー数は０（Ｎ／Ｐ）のように増加するが、これは０（Ｎ）と等価である。したがって、ノード数０（Ｎ）が増えるに従ってサーチ数も増加する。したがって、構成要素の所与のコピーが処理しなければならないサーチ数は、サーチ数をコピー数で割った解に応じてスケールする。両方の数はＮと線形に増加するので、コピー当たりのサーチ数は一定のままである。
【０００８】
残念ながら、名前サーバアプリケーションでは、データベースのサイズとサーチ数の両方がＮすなわちメンバー数と線形に増加する。このため、スケーリング問題が生じる。具体的には、いかなる構成要素にも０（Ｎ／Ｐ）のコピーがあり、単位時間当たり０（Ｎ）サーチがあることになる。したがって、各ノードは、サーチ当たり０（Ｐ）メッセージを送信する必要がある。各構成要素は０（Ｎ）回サーチされることになるので、各コピーは（０（Ｎ）／０（Ｎ／Ｐ））＝０（Ｐ）回サーチされることになる。使用可能なメモリによって限定される、所与の構成要素に対して最大サイズＳがある場合、Ｐは０（Ｎ／Ｓ）に応じて増加させる必要がある。Ｓを一定であると仮定すると、Ｐは０（Ｎ）に応じて増加しなければならない。したがって、各ノードが処理するサーチ数と、各ノードが送受信するメッセージ数は、両方とも０（Ｎ）に応じて増加することになる。要するに、データセットがノード数に応じて増加する場合、単純な分割戦略では役立たないということである。実際、ＮＡＰＳＴＥＲ裁判中にＧｎｕｔｅｌｌａの需要が高まり、システムの崩壊を招いた。その後、需要の高まりが、平均的なトラフィックがモデムリンクの限度を超える原因となり、これが原因でＧｎｕｔｅｌｌａシステムは一組の切断されたネットワーク中で分裂した。
【０００９】
Ｆｒｅｅｎｅｔは、有機的アルゴリズムでそれ自体を編成する「ピアツーピア」ネットワークである。ネットワークの目的は、バイナリ識別子によって識別される文書を分配することである。文書をサーチすることによって、図８に示す要求ノードの近接局に伝播される要求が生じる。この近接局がその文書のコピーを有しない場合、この近接局は要求を別の近接局に転送する、という具合である。その文書が発見された場合、経路上の各ノードは、最終的に最初の要求元にコピーが到着するまでコピーを受け取る。また、コピーが発見されないケースもあるが、この場合サーチは失敗する。サーチを転送するノードは、まったくアトランダムに近接局を選択するわけではない。これらのノードは、文書識別子を、既に複数の近接局によって供給され、それら近接局のルーティングテーブルに格納されている別の識別子と比較する。格納されている情報は、一意の番号、アドレス、およびそれら近接局に対する証明を含む。次いでノードは、サーチされている識別子に最も類似した識別子を有する文書を以前に供給した「最も近い」近接局を選択する。このアルゴリズムの作者によると、類似文書に対する連続した要求を受信するノードは、そのような文書の「クラスタ」を蓄積することになる。したがって、最も需要の多い文書が、その文書を必要とする場所の近くでコピーされる傾向を有することになる。
【００１０】
Ｆｒｅｅｎｅｔのノードは、文書識別子と文書を受信した近接局のＩＤとを関連付ける「ルーティングテーブル」を維持する。このルーティングテーブルは、検索プロセスの副産物として更新される。すなわち、要求が達成されると、経路上の各ノードは、テーブルにその文書識別子とその文書を受信した近接ノードとをリンクする項目を入れる。現実の生活環境では、ルーティングテーブルのサイズには限界がある。一旦限界に達すると、ノードは保存または破棄を意図する項目を選択する必要がある。限界に達すると、新しい入力は最も低頻度に使用されている項目と置き換わる。
【００１１】
文書がサーチされるとき、ノードは、要求されたキーに最も近いキーをそのルーティングテーブル内で検索し、対応するノードにその要求を転送する。Ｆｒｅｅｎｅｔでは、キーは１６０ビットの番号である。ルーティングテーブルは最適の近接局を発見する。この近接局が既に経路上でリストされている場合は、次の近接局が選択される等が行われる。ルーティングテーブル内のサーチが確定的でない場合、また、まだ訪問されていない近接局がある場合は、それら近接局のうちの１つが選択されることになる。使用可能な近接局がない場合、要求は経路上の前のノードに返送され、そこでより良い適合が試される。要求が送信者に循環して戻り、新しい近接局がない場合、またはホップの最大数を超えた場合は、失敗が宣言される。
【００１２】
各ノードが文書を１つだけ発行する環境において、最初の接近においてノード当たり名前を１つだけ含んでいるネットワークにおいて名前サービスを提供するためにＦｒｅｅｎｅｔアルゴリズムを使用することは、その学習効果とその限界を示している。例えば、学習プロセスは極めて遅い。学習効果は、様々な要因に基づいて大幅に変動するものである。第１にグラフの形状はこのプロセスに影響を与える。より結合の強いグラフはより良い結果を生じるものである。所与の結果に関して許可されているホップ数も、この学習効果に大きな役割を担っている。ホップ数が少なすぎる場合、結果は劇的に悪化する。各ノードにおけるキャッシュのサイズは、ネットワークのサイズと同様に１つの要因である。
【００１３】
Ｆｒｅｅｎｅｔアルゴリズムを使用することによって達成される成功率は、ネットワーク学習のための所要時間を許可した後で、様々なネットワークサイズに応じて変動する。ノード当たりの平均近接局数を５と仮定した場合、要求は、最高２５６ノードまで訪問することが許可され、各ノードは最高５１２項目までキャッシュすることができ、ネットワークサイズの影響は非常に劇的なものとなる。一定サイズを超えると、この学習プロセスは協同で機能することを停止する。例えば１０，０００ノードのネットワーク上では、成功率は約４０％落ちる。要するに、Ｆｒｅｅｎｅｔアルゴリズムは良好にスケールしない。
【００１４】
【発明が解決しようとする課題】
したがって、少なくとも１００億の名前−アドレスマッピングの管理を定義することができる、インターネット規模の命名プロトコルに関する技術が必要とされている。好ましい解決法は、十分に分散されており自己調製型で能率的であるべきである。これは、高レベルの機密保護をも提供すべきである。しかし上記の議論から明らかなように、そのようなプロトコルを提供する既存技術は１つもない。
【００１５】
【課題を解決するための手段】
本願で開示する本発明の概念は、集中型サーバがない状態で演算可能な新たな名前解決プロトコルを伴う。この新しいピアツーピアの、サーバレスな名前解決プロトコルは、絶えず増加し続けるキャッシュを必要とせず、適切なホップ数によって、ネットワークのサイズに関わらず収束を保証するものである。
【００１６】
上記の通り、ＧｎｕｔｅｌｌａおよびＦｒｅｅｎｅｔなどの純粋なピアツーピアネットワークは、命名機能を実施するために分散アルゴリズムを使用する。残念ながら、これらのアルゴリズムは、ネットワークサイズが増大するに従い、収束を保証できなくなる。すなわち、これらのアルゴリズムは、ネットワークサイズに伴ってキャッシュサイズを線形に増大させることなく、また、不合理な数まで許可されるホップ数を増やすことなくして収束を保証することはできないのである。
【００１７】
本発明によるサーバレスの、すなわちピアツーピアの名前解決プロトコルは、これらの問題を解決し、マルチレベルキャッシュと事前対応キャッシュ初期設定戦略との２つのメカニズムによって、大規模なネットワーク内における収束を保証するものである。マルチレベルキャッシュはプロトコルが様々なサイズのネットワークに適合することを可能にし、（従来技術のピアツーピアプロトコルによって要求されるように線形ではなく）あくまでネットワークサイズの対数だけ増大するものである。マルチレベルキャッシュは、基礎となる円形番号空間（ｃｉｒｃｕｌａｒ  ｎｕｍｂｅｒ  ｓｐａｃｅ）の概念に基づいて構築されている。キャッシュの各レベルは、円形空間の様々なレベルの小域（ｓｌｉｖｅｒ）からの情報を含んでいる。キャッシュ内のレベル数は、それが接続しているネットワークのサイズに依存する。しかしこのサイズは知られていないので、最後のレベルが満杯であるとノードが判断したときにマルチレベルキャッシュにレベルを追加するためのメカニズムが含まれる。このようにして、急速な収束が保証される。
【００１８】
ピアツーピア名前解決プロトコルの第１の拡張として、名前の解決を可能にするメカニズムも提示される。これらの名前は、ハッシュ関数によって円形番号空間上にマッピングされる。しかし、単一ハッシュ値に対して複数の項目（例えば、１０，０００メンバーの大規模なグループ）がある場合があると認識すると、＜ハッシュ＞．＜一意の番号＞（＜Ｍ＞．＜Ｎ＞）のように一意の番号が名前のハッシュに関連付けられる。この拡張子を使用することによって、本発明の中核プロトコルは名前ならびに番号に関して使用することができる。
【００１９】
本発明の基本プロトコルへの第２の拡張は、ピアツーピア解決プロトコルとドメインネームシステムとの実際の統合を実現するものである。各ノードに、ＤＮＳ構成要素および一意の番号からなるＩＤを提供することによって、そのＤＮＳ構成要素に対するサーバを見つけ出すためにＤＮＳメカニズムを使用することができるが、これは、ＰＮＲＰの知識をも有するローカルＤＮＳリゾルバであってもよく、あるいは指定のＤＮＳ構成要素を管理する集中型サーバであってもよい。次いでこのサーバは、特定ノードを発見するために一意の番号の部分を有する本発明のプロトコルを使用してピアツーピア名前解決プロトコル（ＰＮＲＰ）空間に移動し、その情報を要求側に戻す。個々のノードは、集中型サーバに乱数と共に要求を送信することによってそのキャッシュをシードするために役立つ近接局を発見することができる。
【００２０】
本明細書に組み込まれその一部を構成する添付の図面は、本発明のいくかの態様を示しており、説明と共に本発明の原理を説明するために役立つ。
【００２１】
本発明は特定の好ましい実施形態に関して説明するが、本発明をこれらの実施形態に限定する意図はない。むしろ、頭記の特許請求の範囲によって規定される本発明の趣旨および範囲内に含まれるすべての代替形態、変形形態、および均等物を対象とすることを意図するものである。
【００２２】
【発明の実施の形態】
同様の参照番号が同様の要素を示す複数の図面を参照して、適切なコンピュータ環境で実施されているものとして本発明を説明する。必須ではないが、本発明は、パーソナルコンピュータによって実行中のプログラムモジュールなど、コンピュータ実行可能命令の一般的なコンテキストにおいて説明する。一般に、プログラムモジュールには、特定タスクを実行し、または特定抽象データタイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭電化製品またはプログラム可能な家庭電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含めて、他のコンピュータシステム構成によって実施することも可能であることを当業者なら理解するだろう。本発明は、通信ネットワークを介してリンクされている遠隔処理デバイスによってタスクが実施される分散型コンピュータ環境において実施することも可能である。分散型コンピュータ環境では、プログラムモジュールは、ローカル記憶装置と遠隔記憶装置の両方に配置することができる。
【００２３】
図１に、本発明を実施することができる適切なコンピューティングシステム環境１００の一例を示す。このコンピューティングシステム環境１００は適切なコンピューティング環境の一例であるにすぎず、本発明の使用法または機能性の範囲に関するいかなる限定をも示唆しようとするものではない。また、コンピューティング環境１００は、例示的オペレーティング環境１００内に示す任意の１つの構成要素または複数構成要素の組合せに関する依存または要件を有するものと解釈されるべきではない。
【００２４】
本発明は、他の無数の汎用または専用のコンピュータシステム環境または構成によって操作することができる。よく知られたコンピューティングシステム、環境および／または構成の態様は、限定はしないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、設定可能な家庭電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかなどを含む分散型コンピューティング環境などを含む本発明の使用に適する場合がある。
【００２５】
本発明は、コンピュータで実行中のプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストに関して説明することができる。一般に、プログラムモジュールは、特定タスクを実行するか、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本発明は、通信ネットワークを介してリンクされている遠隔処理デバイスによってタスクが実施される分散型コンピューティング環境で実施することもできる。分散型コンピューティング環境では、プログラムモジュールは、記憶装置を含めて、ローカルおよび遠隔コンピュータの記憶媒体内に配置することができる。
【００２６】
図１を参照すると、本発明を実施するための例示的システムは、コンピュータ１１０の形態による汎用コンピューティングデバイスを含む。コンピュータ１１０の構成要素は、限定はしないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含む。システムバス１２１は様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数バス構造のうちのどれであってもよい。限定的ではないが、例示として、このようなアーキテクチャには、Ｉｎｄｕｓｔｒｙ  Ｓｔｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｅ（ＶＥＳＡ）ローカルバス、およびＭｅｚｚａｎｉｎｅバスとしても知られているＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスが含まれる。
【００２７】
コンピュータ１１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセス可能ないかなる使用可能な媒体であってもよく、揮発性媒体および不揮発性媒体、取り外し可能媒体および非取り外し可能媒体の両方を含むものである。限定はしないが例示として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体とを含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報格納用のいかなる方法または技術で実施される揮発性および不揮発性、取り外し可能および非取り外し可能媒体の両方を含む。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、所望の情報を格納するために使用され、またコンピュータ１１０によってアクセスすることができる他のいかなる媒体をも含む。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュールまたは搬送波または他の搬送メカニズムなどの変調されたデータ信号形式の他のデータを組み込むものであり、いかなる情報伝達媒体をも含むものである。「変調されたデータ信号」という用語は、１つまたは複数のその特徴的な設定を有する信号、または信号中に情報を符号化するような方法で変更された信号を意味している。限定はしないが例示として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体と、音波、ＲＦ、赤外線または他の無線媒体などの無線媒体を含む。コンピュータ可読媒体の範囲には、上記のいかなる組合せも含まれるべきである。
【００２８】
システムメモリ１３０は、読み出し専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリ形式のコンピュータ記憶媒体を含む。起動中などに、コンピュータ１１０内の要素（エレメント）間で情報を転送するために役立つ基本ルーチンを含んでいる基本入出力システム１３３（ＢＩＯＳ）は、一般にＲＯＭ１３１内に格納されている。ＲＡＭ１３２は、一般に、処理ユニット１２０に即時アクセス可能な、かつ／またはその時点において処理ユニット１２０により操作されているデータおよび／またはプログラムモジュールを含む。限定はしないが例示として、図１に、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７を示す。
【００２９】
コンピュータ１１０は、他の取り外し可能／非取り外し可能、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。例示として、図１に、非取り外し可能な不揮発性磁気媒体に対して読み出しまたは書込みするハードディスクドライブ１４１、取り外し可能な不揮発性磁気ディスク１５２に対して読み出しまたは書込みする磁気ディスクドライブ１５１、取り外し可能な不揮発性光ディスク１５６に対して読み出しまたは書込みをする、ＣＤ  ＲＯＭまたは他の光学媒体などの光ディスクドライブ１５５を示す。例示的オペレーティング環境で使用することができる他の取り外し可能／非取り外し可能な揮発性／不揮発性コンピュータ記憶媒体は、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタル多目的ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどを含む。ハードディスクドライブ１４１は、一般に、インターフェース１４０などの非取り外し可能なメモリインターフェースを介してシステムバス１２１に接続されており、磁気ディスクドライブ１５１と光ディスクドライブ１５５は、一般に、インターフェース１５０などの取り外し可能なメモリインターフェースによってシステムバス１２１に接続されている。
【００３０】
図１に示す上記のドライブおよびそれらに関連したコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびコンピュータ１１０のための他のデータの記憶装置を提供する。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７を格納しているものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７と同じであっても異なっていても良いということに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、最低限、それらが異なるコピーであることを示すために異なる番号が与えられている。ユーザは、キーボード１６２および、一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスによってコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナなどを含むことができる。これらのおよび他の入力デバイスは、システムバスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることがしばしばあるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造に接続されることもできる。モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタの他に、コンピュータは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７およびプリンタ１９６など、他の周辺出力装置を含むこともできる。
【００３１】
コンピュータ１１０は、遠隔コンピュータ１８０などの１つまたは複数の遠隔コンピュータへの論理接続を使用してネットワーク化された環境において動作することができる。遠隔コンピュータ１８０は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードであってよく、図１では記憶装置１８１しか示していないが、一般にパーソナルコンピュータ１１０に関して上記で説明した多くのまたはすべての要素を含む。図１で示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、事務所、企業全体に巡らされているコンピュータネットワーク、イントラネットおよびインターネットでは一般的なことである。
【００３２】
ＬＡＮネットワーキング環境で使用されるとき、パーソナルコンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ１１０は、通常、インターネットなどのＷＡＮ１７３を介して通信を確立するモデム１７２または他の手段を含む。内部であっても外部であってもよいモデム１７２は、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境において、パーソナルコンピュータ１１０に関して示されたプログラムモジュールまたはその一部は、遠隔記憶装置に格納することができる。限定はしないが例示として、図１に、記憶装置１８１上に常駐するものとして遠隔アプリケーションプログラム１８５を示す。図示するネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることを理解されたい。
【００３３】
以下の説明では、本発明は、特に指摘しない限り、１つまたは複数のコンピュータによって実行することができる動作と演算の記号表現とを参照して説明する。したがって、コンピュータによって実行されるときに時折表現されることのあるこのような動作および演算には、コンピュータの処理ユニットによる、構造化形式のデータを表現する電子信号の操作が含まれることを理解されたい。この操作はデータを変換するか、またはコンピュータのメモリシステム中の記憶場所にデータを維持し、そこで、当業者が良く理解している方法でコンピュータの演算を再構成あるいは変更する。データが維持されているデータ構造は、データ形式によって規定される特定の特性を有するメモリの物理的な記憶場所である。本発明を上記の条件で説明してはいるが、以下で説明する様々な動作および演算はハードウェアでも実施可能であることを当業者なら理解するように、この説明は限定を意図するものではない。
【００３４】
上記で説明したように、対等の関係を確立することはＦｒｅｅｎｅｔでは費用の掛かる方法である。これは、既存の関連付けに沿ってのみ要求とファイルを転送することができる比較的静的なグラフを要求する。しかし、ピア当たりの関連付け数が増加するに伴い、応答率は向上した。これは、ピアが即座に関係を構築することが許可されている場合は、より良い結果を得ることができるということを示している。別の報告は、ナレッジテーブルのＬＲＵ管理は逆効果を生じる場合があるということである。クラスタリング効果が発生する場合があるが、これは偶然に発生するものである。照会の結果による新しい情報の到着は、実際には無用なノイズ中にある有用な情報によって引き出される場合がある。本発明のシステムでは、情報管理は、ローカルピアのキーに最も類似したキーを特に許可する。
【００３５】
本発明のシステムの一実施形態では、各ノードは、ネットワーク中の他のノードへの参照リストを含んでいるルーティングテーブルを蓄積する。ノードの項目ごとに、ノードＩＤを含めることができるアドレス情報、アドレス、ノードのキー、このノードのキーとローカルノードのキーとの間の距離を獲得することができる。ローカルノードは、遠隔ノードに関して学習する度に、そのノードを既に知っているか否かを検査し、知らない場合は、項目の１つをルーティングテーブルに入れるか否かを検査する。これは、項目数がサイズの限界に達していない場合は常に行われる。サイズの限界に達すると、任意の新しい項目が既存の項目に置き換えられることになるが、それには名前空間中に十分に空間のある項目を発見しようとする戦略、そのローカルノードに最も近接した項目を選択しようとする戦略、または置き換えられるべき既存の項目を単にアトランダムに選択する戦略など、幾つかの実施態様の戦略がある。このようにして、ルーティングテーブルは、アクティブな近接局を含むように常に更新される。この置き換え方法は、送信する近接局に影響を与えるものではない。これらの近接局項目は、グラフが設定されたときに作成される。ある程度の接続性を維持するために、一実施形態ではこの制限が使用される。好ましい実施形態では、この置き換え戦略は、ユーティリティの基準に基づくのではなく、キャッシュレベルごとにランダムである。各項目は、キャッシュ所有者からのその「距離」によって決定される「理想的なキャッシュレベル」を有する。新しい項目は、その項目の「理想的なキャッシュレベル」がまだ破られていない場合のみ、それら項目の距離に対応するキャッシュレベルに、または最低レベルに追加することができる。
【００３６】
本発明のシステムでは、ノードは照会を受信すると、その項目を発見するために、既に訪問済みのノード以外の、ターゲットと最も良く一致するキーを有するルーティングテーブル内をサーチする。次いで照会は、その項目を公表したノードに直接的に転送される。適切な項目がない場合、要求はその要求がそこから受信されたノードに返送され、このノードはそれ自体のルーティングテーブル内にある別の項目を試みる。要求がターゲットにキーが一致している項目に到着した場合、要求は成功である。ターゲットがステップの最大数まで達していない場合、または、要求がそこから受信されたノードがすべての可能性のある近接局を試して否定応答を受信した場合、要求は不成功である。要求が成功した場合、応答がすべての中間ホップによって中継される。応答は、そのターゲットキーを保持するノードのアドレスを伝えるが、この項目は中間ノードのルーティングテーブルに挿入することができる。
【００３７】
一実施形態では、ノード識別子はランダムに選択された整数であり、二進法の補数として表わされる。この表記法において、ｎビット形式では、番号は−２（ｎ−１）と２（ｎ−１）−１との間を変動する。距離関数は、これら２つの整数の間の絶対差を計算する。これによって、端点−２（ｎ−１）と２（ｎ−１）−１の間の距離が１である円形空間が提供される。この円形番号空間１８２の一例を図２に示す。Ｎ個のノードのネットワークでは、その円形番号空間内のランダムに間隔をおいて配置したＮ個の識別子が選択される。ノードが、それ自体の識別子に最も近い識別子を有するＫ個のノード識別子を含んでいるＫ個の項目のキャッシュを蓄積している場合、そのキャッシュを、その平均角の大きさがα＝２πＫ／Ｎであるその円形空間の小域をカバーするように参照することができる。
【００３８】
識別子Ｘのノードが識別子Ｙに対する照会を受信すると、ＸとＹの角距離はβ＝２π｜Ｘ−Ｙ｜／２ｎで表わすことができる。βがα／２よりも小さい場合、そのノードは、以下で議論するように、この近接した小域内のピアのほとんどすべてを認識することになるので、Ｙはそのローカルキャッシュ中のＫ個の項目のうちの１つであるはずである。ターゲットは既に発見されている。この他の場合、ノードはＹに最も近い項目を選択することになる。その項目は小域のエッジの１つになるが、これは次のステップ（ホップ）では角距離が平均でα／２だけ低減されるということである。次のホップ（識別子Ｘ′を有する）でも、ターゲットが発見されるまでこのプロセスが反復される。図２に示すように、所望のターゲットＹを発見するためには、識別子Ｘ″を有するノードへのさらなるホップが必要となる。βの最大値は２（ｎ−１）の距離に対応するπであり、ここでＮ／２個の項目の平均が発見される。各ステップ（ホップ）は、Ｋ／２個の項目に対応するα／２だけ角度を小さくする。十分な数のステップ（ホップ）の後、要求はターゲットに到着することが保証される。α／２がπＫ／Ｎに対応し、最大角度がπなので、ステップの最大数はＨ＝π／（α／２）＝Ｎ／Ｋである。成功すると、各ノードは、円形番号空間の連続した小域の少なくとも１つのノードに関する情報を獲得する。この情報は、絶えず深まる情報の階層を有するマルチレベルキャッシュ（下記で説明する）を構築するために使用される。
【００３９】
これは、本発明のシステムが成功する１つの理由を示している。しかし、ホップ回数を少なく維持するために、キャッシュのサイズはネットワークのサイズと共に線形に増大する必要があるということも示しているが、これは許容できることではない。実用的であるために、このシステムは線形よりも適した方法でスケーリングする必要がある。解決法はマルチレベルキャッシュを使用すること、すなわちルーティングキャッシュを、１つはローカルキーに最も近いキーを有する項目を含んでおり、もう１つはアトランダムに選択された項目を含んでいる２つの部分に分割することである。図のように、第１のキャッシュはＫ１項目を含んでおり、第２のキャッシュはＫ２項目を含んでいると仮定する。要求を処理する第１のノードは、ターゲットに最も近いキーを有する項目を選択する。その項目がセットＫ１中にある場合（角度αに対応する）、この処理は完了する。この項目がセットＫ２中にある場合、ターゲットＸと選択された項目Ｙとの間の最大距離は、セットＫ２中の２つの項目間の距離の半分以下になる。これらの項目が均等に間隔を置いて配置されている場合、その距離は２（ｎ−１）／Ｋ２であり、対応する角度はβ＝π／Ｋ２となる。次のノードで、照会は上記の要領で処理される。各ホップは、α＝２πＫ１／Ｎとして、少なくともα／２だけ角度の減少を受けることになる。したがって、ホップのこの数はＨ＝１＋２・β／α＝１＋Ｎ／（Ｋ１・Ｋ２）である。Ｋ＝Ｋ１＋Ｋ２に対する所与の合計数に関して、Ｋ１＝Ｋ２＝Ｋ／２である場合、Ｈの最低数が得られる。この場合はＨ＝１＋Ｎ／（Ｋ／２）２である。
【００４０】
識別子のサイズはネットワークのサイズによって変動する場合があり、２進数の補数として表わす必要はない。しかし、プロトコルの主要な要件は、ノード識別子を、最小値ＮＭＩＮと最大値ＮＭＡＸとの間を変動する整数として扱うことができるということである。この空間では、ＤＭＡＸ＝（ＮＭＡＸ−ＮＭＩＮ）／２というように、ＤＭＡＸは２点間の最大距離と定義することができる。このように、２つの識別子ＸとＹとの間の距離Ｄは次のように定義される。（１）Ｘ＜Ｙである場合、ＸとＹを置換する。（２）（（Ｘ−Ｙ）＜ＤＭＡＸ）の場合はＤ＝Ｘ−Ｙであり、そうでない場合はＤ＝（ＮＭＡＸ＋１−Ｘ）＋（Ｙ−ＮＭＩＮ）である。上記で指摘したように、番号が２論理の補数を使用して２進法で格納されている場合、距離はＸとＹとの間の差の絶対値として計算することができる。
【００４１】
照会を処理するとき、最も適切な次のホップを発見するためにキャッシュが使用される。これは、中継リストにまだ列挙されていないアドレスを有するキャッシュ項目のサブセットをまず発見することによって行われる。そのサブセットが空である場合、失敗の指示が戻される。しかし、そのサブセットが項目を１つだけ含んでいる場合、その項目が戻される。そうでない場合、要求されたターゲットに最も近い識別子を有する２つの項目が発見される。これらの項目はＡおよびＢと命名することができ、それぞれのターゲットへの距離はＤＡおよびＤＢと命名することができる。本発明のプロトコルは、Ａ（重みＤＢを有する）とＢ（重みＤＡを有する）との間でアトランダムに選択して、このランダムな選択が戻される。
【００４２】
本発明の別の実施形態では、キャッシュを整除数の任意の数で割ることができる。例えばＰという整除数がある場合、Ｋ／Ｐ個の項目を含む第１のセットを有することになる。最大角度は、約β＝Ｐ／２Ｋであるべきである。次のホップは、次のレベルセットにおける最適の一致を使用するが、それはＫ／Ｐ個の項目を含み、Ｐ／Ｋのサイズの角上に拡散されている。そのホップの後、残りの角はｂ′＝Ｐ２／２Ｋ２になる。これは、最後のセットに到達するまで続き、最後のセットに達すると、角度はセット当たりα／２＝Ｋ／（ＰＮ）だけ減少する。したがって、ホップの最大数はＨ＝Ｐ−１＋Ｎ／（Ｋ／Ｐ）Ｐとなる。
【００４３】
図３に、５００個の項目キャッシュと様々な値Ｐに対して予測されるホップ数を示す。この図の要点は、ネットワークサイズが１０１０項目まで増大したとしても、キャッシュが５または６のデータセットに分割される場合、要求は６以下のホップで解決されることになるということが予測されることである。より小規模なネットワークの場合は、より少ない分割で僅かに良い結果を達成することができる。実際には、分割の最適数はキャッシュのサイズとネットワークに予想されるサイズによって変動する。上記の計算では、各データセットにおいてキーが番号空間に沿って規則的に分配されていると想定される。必ずしもこの通りでないネットワークにおいては、システムは項目数を２倍に増やすことを許可することによって同様の能率を得ることができる。一実施形態では、ノードは、要求を送信しているノードのアドレスと識別子しか学習しない。別の実施形態では、各要求を処理するノードは、要求側のアドレスと識別子をも学習する。さらに別の実施形態では、要求が失敗した場合、ノードは、ターゲットがそのネットワーク上に存在しなかったとしても、ターゲットに最も近い識別子を有する局のアドレスと識別子をも学習する。
【００４４】
マルチレベルキャッシュ１８４は、図４に示すように視覚化することができる。図から分かるように、キャッシュの各レベルは、そのレベルの限界を示すＭＩＮおよびＭＡＸ識別子の指定を含む。このＭＩＮ値およびＭＡＸ値は、Ｎを番号空間のサイズとし、ＸをローカルＩＤとした場合に、初期レベルに関してＭＩＮ＝Ｘ−Ｎ／２、ＭＡＸ＝Ｘ＋Ｎ／２と決定される。各レベル内にはノードによって知られている項目がある。連続するレベル内で、Ｌをそのレベルの数とした場合、ＭＩＮおよびＭＡＸは（Ｌ−１）／Ｋと定義される。
【００４５】
本発明の一実施形態では、事前対応キャッシュ構築戦略が使用されるが、そこでは、各ノードがネットワークに接続されている場合、各ノードは戦略的に配置された識別子に対する連続した無償要求を送信する。１０００個のノードによるシミュレーションでは、そのような９個の要求はそのキャッシュに入るに十分であると証明されており、したがってこのシミュレーション中に送信されるすべての照会は、平均３から４のホップを使用して即座に対応された。しかし、それ以上の数またはそれ以下の数のそのような要求を使用することもできる。
【００４６】
マルチレベルキャッシュは一組のＬ個のレベルとして構成され、そのそれぞれは図４に示すように最高Ｋ個の項目を保持している。キャッシュ内のレベル数は、ネットワークのサイズおよび各区分内の項目数に応じて変わる。ノードは、それ自体が接続すべきネットワークのサイズを事前に認識していないので、これは問題を生じる原因となる。この理由から、ノードは「最後のレベル」が満杯であることを認識すると、そのキャッシュに動的にレベルを１つ追加する。キャッシュの最後のレベル内の項目数は、実際には、ネットワークサイズの優れた指針となる。このレベルは、２＊ＤＭＡＸ／（Ｋ（Ｌ−１））のサイズの間隔内に入る識別子を有するノードの完全なサンプリングを含んでいると考えられる。キャッシュ内のレベル数が動的である場合、選択される必要のあるパラメータはキャッシュレベルあたりの項目数だけである。このパラメータの選択は、照会解決手順の効率と、キャッシュ内容をセットアップするために必要となる補助トラフィックの量との間における妥協である。図５に、照会を解決するために必要となる平均ホップ数がキャッシュのサイズに応じてどのように変化するかを示す。この計算は、データがランダムに分配されるということ、また、レベルごとのキャッシュの範囲は、本明細書で指定した通りに計算されること、すなわち、カバーしたサイズをレベルごとにＫ／２で割った数であると想定している。
【００４７】
一実施形態では、Ｋの値をネットワークのサイズ、ホップ数の限度などに応じて他の値に設定することができるが、Ｋの値は２０に設定される。キャッシュの各レベルは、ローカル識別子の最大距離によって特徴付けられる。この距離は、２つの有効な識別子間の最大距離であるＤＭＡＸの関数である。ＤＭＡＸは数空間の関数であり、Ｎ／２に等しい係数Ｐの関数であり、キャッシュレベルの関数である。最後のキャッシュレベルは、ローカル識別子への距離がＤＭＡＸ／（Ｐ（Ｌ−１））と同等かまたはそれよりも小さい項目を含んでいる。最初のキャッシュレベルは、ローカル識別子への距離がＤＭＡＸ／Ｐよりも大きい項目を含んでいる。他のキャッシュレベルは、Ｌをレベルの値として、ローカル識別子への距離がＤＭＡＸ／（ＰＬ）よりも大きい項目を含んでいる。
【００４８】
ノードは、新しい項目に関して学習するとき、それをキャッシュに挿入しようとする。これを行うために、ノードは次のステップを実施する。第１に、その項目が既にキャッシュ内にあれば、その項目の証明は、新しく学習した値が最新の値である場合は、その新しく学習した値で置き換えられる。第２に、その項目がまだキャッシュ内にない場合、その項目とローカル識別子との間の距離が計算される。これは、その項目がキャッシュされるべきレベルを決定するために使用される。選択されたレベルが、その時点で存在しているキャッシュの最後のレベルである場合、またそのレベルに対してそのキャッシュ内にＫ個またはＫ＋１個以上の項目がある場合、新しいレベルが追加される（Ｌ＝Ｌ＋１と設定される）。レベルＬの項目は、ローカル識別子への距離に応じてこれら２つのレベル間に分割される。次いで、新しい項目に関して選択されるレベルが再評価される。このプロセスは必要に応じて反復される。しかしその選択されたレベルに対するキャッシュ内にある項目数がＫ個より少ない場合、新しい項目は単に追加されるだけである。選択されたレベルに対するキャッシュ内にＫ個の項目がある場合、および選択されたレベルがその時点で存在するキャッシュの最後のレベルでない場合、新しい項目が既存の項目に置き換えられるべきか否かを判定するために置換アルゴリズムが実施され、置き換えられるべきであると判断された場合、どの項目と置き換えられるべきかを判定する。最も単純な置換アルゴリズムは「ランダム置換」である。すなわち、Ｋキャッシュの項目からアトランダムに１つの項目を選択し、それを新たに学習した項目で置き換えることことである。最後に、最後のレベルに新しい項目が追加された場合、以下で説明するフラッディングアルゴリズムが実行される。
【００４９】
上記の要領で、ノードがキャッシュの最後のレベル内に項目を１つ追加する際、または既存の項目をより新しい値で置き換える場合、ノードはフラッディング手順を行う。この手順を達成するために、既にフラッドしているノードの空のリストを有するローカルノードのアドレス証明を含んでいるフラッディングメッセージを作成する。次いでこのメッセージが新しい項目のアドレスに送信される。次いで、新しい項目への距離がＤＭＡＸ／（Ｐ（Ｌ−１））よりも小さいキャッシュ内のノードのリストが作成される。新しい項目の追加がフラッディングメッセージの結果である場合、既にフラッドしたものとしてマーク付けされているノードがリストから除去される。次いで、ノードは、新しい項目のアドレス証明を含んでいるフラッディングメッセージを準備する。既にフラッドしたノードのリストがローカルノード、リスト内のすべてのノード、およびフラッディングメッセージからの追加結果である場合は、そのメッセージ内で既にフラッドしたものとしてマーク付けされたすべてのノードを含むように設定される。次いで、このメッセージのコピーがリスト内のすべてのノードに送信される。容量が限定されているノードは、「フラッディングターゲット」のリストのサイズを制限する傾向を持つ場合がある。制限する場合、これらのノードはそのリスト内にローカル識別子に最も近い識別子を有するノードを保存すべきである。
【００５０】
上記のように、キャッシュ項目は、有効日付を含んでいるアドレス証明によって表わされる。ネットワーク内の他のノードに関するその時点における情報を維持するために、また、古くなったデータの束を低減するために、本発明の一実施形態では、キャッシュ項目は有効日付の経過後、キャッシュから除去される。この実施形態でネットワークに参加している各ノードは、したがって、そのアドレス証明を定期的に更新する。更新の際、ノードがそのキャッシュにおける最後のレベル内の新しい項目を学習したかのように新しい値がフラッドされる。このプロセスは、他のノードのキャッシュ内のその項目が古くなったものとして除去されないことを保証する。
【００５１】
定期的な間隔で、ノードはそれらのキャッシュの構造を検査し、各キャッシュレベルが適切に完了していることを確認することが好ましい。最後のキャッシュレベルは常に完了しているものとみなされる。また、Ｉをレベルの値とした場合、このレベルにおける２つのキャッシュ項目間の最大の間隔が２＊ＤＭＡＸ／（ＰＩ）よりも大きい場合は、他のすべてのキャッシュは完了していないものとみなされる。この場合、ノードは、最大間隔の中間にターゲットが調整されている要求メッセージをフォーマットし、この要求の標準的な処理に従事することになる。
【００５２】
上記で説明したように、本発明のシステムは任意のサイズのネットワークを取り扱うことができる。しかし、各ノードは正確に初期化されたキャッシュを有する必要がある。Ｆｒｅｅｎｅｔのように、ノードは、要求の規則的な処理の副次的な作用として他のノードに関して学習する。残念ながら、信頼できる性能を達成するには自然な学習プロセスに単純に依存するだけでは十分でない。したがって、本発明のシステムは、送信する近接局との同期、レベル１更新のフラッディング、およびノードの存在を効果的に通知することの３つの明示的な手順によってこの自然学習を補う。近接局同期手順は、ネットワークに接続しているノードのキャッシュを迅速に初期化するように設計されている。この手順は、２つのノードが形式的に接続するときにも使用することができる。これはスプリットを修復する簡単な方法である。フラッディング手順は、キャッシュの最後のレベルが一貫しているよう保証する。サーチが実際に完了することを保証するためにこれは必須である。最後に、ノードは、固有の識別子に非常に近いが等しくはない識別子を探すことによってその存在を通知する。この要求は、既存の近接局に転送される。これを実行することによって、ホストがいくつかの関係サイトによって認識されることが保証される。これによって、フラッディング手順がトリガされることも保証される。
【００５３】
本発明のこれらのプロトコルの実際の処理に関して議論する前に、本発明のプロトコルにおける例示的な適切なメッセージとデータ形式を議論することが有益である。例えば、ネットワーク内の各ノードは、ノード識別子、ノードアドレス、証明が有効とされる期日、キーおよび署名情報を含んでいるアドレス証明によって記述される。キーおよび署名情報の形式は、特定の実施態様によって変化する。重要な点は、この情報は、そのノードがピアーツーピアネットワークのメンバーであること、およびそのノードと識別子との間の関係が本物であることを証明するのに十分であるということである。上記のように、キャッシュ項目の古さに関して、この情報が最新のものであることを確認するために日付フィールドが使用される。
【００５４】
要求メッセージは、メッセージコード、ＲＥＱＵＳＥＳＴ、要求のターゲット、要求の起点のアドレス証明、このメッセージに許可される最大中継数、および要求を処理した各ノードに関してそのノードのアドレスと、ノードが要求を受理したか拒否したかの指示とを含む経過リストを含んでいる。要求を発信する際、要求しているノードはメッセージコード、ターゲット値、起点のアドレス証明を設定する。ノード数は１に設定されており、経過リストは、起点のアドレスと要求が受理されたという指示と共に項目を１つだけ含むように初期化されている。ＲＥＱＵＥＳＴは、完全一致が発見されていない場合、最も近い一致が戻されることを保証するように「最適マッチ」証明を含むこともできる。
【００５５】
応答メッセージは、メッセージコード、ＲＥＳＰＯＮＳＥ、要求のターゲット、要求に最もよく一致するノードのアドレス証明、要求を受理したが応答をまだ処理していない各ノードに対してノードのアドレスを含んでいる経過リストを含んでいる。メッセージが最初の要求元に向かう過程でノードは応答リストから除外される。フラッディングメッセージは、メッセージコード、ＦＬＯＯＤＩＮＧ、フラッド中のアドレス証明、その証明のコピーを受信済みの、各ノードに関するノードのアドレスを含むすべてのノードのリストを含んでいる。フラッディングが進行するに従いノードがそのリストに追加される。近接局同期要求は、メッセージコード、ＳＹＮＣＨＲＯＮＩＺＥ、ノード識別子として表わされる要求のターゲット、近接局を求めるノードのアドレス証明を含んでいる。近接局公示メッセージは、メッセージコード、ＡＤＶＥＲＴＩＳＥ、ノード識別子として表わされる公示の上限、公示を送信するノードのアドレス証明、および、項目ごとにその項目の識別子を含んでいる証明が入手可能な項目リストを含んでいる。最後に、近接局同期要求は、メッセージコード、ＳＯＬＩＣＩＴ、請求（ｓｏｌｉｃｉｔａｔｉｏｎ）のターゲット、および近接局を求めているノードのアドレス証明を含んでいる。
【００５６】
本発明のプロトコルに適用可能な一組のメッセージを説明したが、次に、上記で説明した解決手順に関心を戻す。具体的には、照会解決手順は、アドレス指定するために一意の番号が解決されるプロセスである。解決を要求するノードは、上記で説明した指定に従って要求メッセージをフォーマットし、そのメッセージを最適な近接局に転送する。要求を受信したノードはそれを処理し、応答を返送することも、別のノードに要求を転送ことも、あるいはその要求を処理できない場合は拒絶を返送することもできる。
【００５７】
ノードは、要求メッセージを受信すると、まず起点の証明が有効であることを検査する。その証明が無効である場合、要求は拒絶される。証明が有効である場合、ノードは上記で指定した規則に従って起点のアドレス証明でそのキャッシュ情報を更新する。次いで、以下のステップに従ってメッセージを続行する。第１に、要求のターゲットがローカル識別子と比較される。２つの値が同一である場合、最後の値は既に発見済みである。次いで手順はステップ４に進むか、あるいは第２のステップに進む。第２に、中継リストが既にホストに関する項目を含んでいるか否かが検査される。含んでいる場合、プロセスはステップ４に進む。第３に、中継リスト中のノード数が許可されている中継数よりも少ないか否かが検査される。多い場合、プロセスはステップ４に進む。しかし少ない場合は、ノードのアドレスと、そのノードが照会を受け付けたという指示を含むリストに項目が１つ追加される。一旦これが完了すると、次いでプロセスはステップ４に進む。
【００５８】
ステップ４では、識別子がターゲットと一致した場合、または中継しているノード数が既に許可された数に達している場合、ノードはメッセージコードをＲＥＳＰＯＮＳＥに更新し、その固有のアドレス証明を最適一致ノードとして認識する。中継リストがホストに対する項目を既に含んでいる場合、メッセージコードも応答に変更されるが、ホストは最適一致ノードの証明を更新しない。応答の中継リストは、要求を受け付けた中継ノードだけを含む。ローカルノードが要求の起点である場合、処理は完了しているが、そうでない場合、メッセージは中継リスト中でそのローカルノードの前にあり、それが要求を受け付けたことを示すコードを有する第１の項目に中継される。
【００５９】
ノードは、中継リストにそのアドレスがまだ列挙されていない、適切な次のホップを発見するためにそのキャッシュ情報を使用する。適切な次のホップがある場合、メッセージはそのホストに中継される。しかし適切な次のホップがない場合、中継ノードに対応する項目は要求が受け付けられなかったことを示すように変更される。そのノードが要求の起点である場合、その要求は失敗している。そうでない場合、そのメッセージは中継リスト中でそのローカルノードの前にあり、それが要求を受け付けたことを示すコードを有する第１の項目に中継される。この手順は、メッセージ中のすべてのトランザクション状態を認識するように設計されている。したがって、中間ノードが進行中のトランザクションリストを保存する必要はない。
【００６０】
ノードは、要求メッセージを受信すると、まず最適マッチの証明が有効であることを検査する。証明が無効である場合、要求は拒絶される。証明が有効である場合、ノードは、上記で説明した手順に従ってそのキャッシュ情報を最適マッチのアドレス証明で更新する。次いでノードは、以下のステップに従ってメッセージを進める。第１に、最適マッチ識別子が要求のターゲットと同じでない場合、および、そのローカル識別子が最適マッチ識別子よりもターゲットにより近い場合、ノードは最適マッチ証明をローカル証明で置き換える。第２に、そのノードの項目が中継リストから除去される。そのローカルノードが中継リスト中の第１の項目である場合、要求は完了する。そうでない場合、リスト中の残りのノードの最後のノードに応答が中継される。このプロトコルを正確に実行するために、中間中継は状態を維持する必要はない。
【００６１】
以上、本発明の中核的なピアーツーピア名前解決プロトコル（ＰＮＲＰ）を説明したが、次にＰＮＲＰによって名前の解決を許可するメカニズムについて議論する。要約すれば、上記でハッシュ関数、例えばＭＤ５、によって説明した円形番号空間上にそれらの名前がマッピングされる。しかし１つのハッシュ値に対して複数の項目がある場合がある（例えば、１０，０００メンバーを有する大規模なグループ）。したがって、このグループは図６に示すように、円形番号空間１８２上に、それに関連付けられた大規模なグループ１８８を有する単一項目１８６として位置付けられる。これが名前−番号解決の唯一のメカニズムである場合、そのハッシュに対応する各ノードは、そのサーチを十分に解決するために、グループ内のすべてのメンバーの膨大なキャッシュを有する必要がある。この制約を克服するためには、＜ハッシュ＞．＜一意の番号＞（＜Ｍ＞．＜Ｎ＞）として名前のハッシュに一意の番号が関連付けられる。この追加の実際的な結果は、各グループのメンバーのマッピングを含めるために円形番号空間１９０を拡張することである。この拡張子によって、名前ならびに番号のために前述の中核プロトコルを使用することができ、大規模なグループにスケールすることができる。
【００６２】
このピアーツーピア名前解決プロトコル（ＰＮＲＰ）によって、ピアは大域的に一意のＩＤをピアアドレス証明に変換することができる。大域的に一意のピアＩＤは、１２８ビットのＩＤであることが好ましい。ピアＩＤは、ピアＩＤ番号空間中にランダムに分散されることが理想的である。ピアアドレス証明（ＰＡＣ）は、ピアＩＤに関連付けられているデータの集合であり、公開鍵および公開鍵の派生物を除いて、ピアＩＤ、ピアインスタンスアドレス、ピアフレンドリーな名前、完全な公開鍵、および証明全体の保全性を証明する署名を含んでいる。必要に応じてＰＡＣには他のデータを含めることもできる。下記で説明するように、本発明のシステムは、ピアＩＤと、ピア資源のクラスの任意のインスタンスを捜し出すために有用な範疇ピアＩＤ接頭部（ｃａｔｅｇｏｒｙ  ｐｅｅｒ  ＩＤｐｒｅｆｉｘ）とを使用する。
【００６３】
ピアＩＤ方式のための理想的な特性には、ランダム分散、導出可能性（Ｄｅｒｉｖａｂｉｌｉｔｙ）、セキュリティイネーブラ、インスタス生成可能性（ｉｎｓｔａｎｔｉａｂｉｌｉｔｙ）が含まれる。ランダム分散によって、インスタンス化されたピアＩＤが上記で説明したピアＩＤ空間中にランダム分散を有することが好ましい。ＩＤのクラスタ化が進んでいないほど、ＰＮＲＰ解決はよりよく機能する。導出可能性によって、共通の一意のフレンドリーな名前からピアＩＤを生成する機能が意味される。導出可能性は、事前に認識せずにピアＩＤを獲得することを可能にする。番号によるピアＩＤよりも、電子メールアドレスなどのより直感的な名前の方が覚えやすいのでこれは有利である。セキュリティイネーブラとは、個人情報窃盗を諦めさせるようなピアＩＤ構成のことである。すなわち、好ましい実施形態では、本発明のシステムの個人情報の所有権は証明可能である。最後に、本発明のＰＮＲＰには、ピアＩＤの活動状態にある複数のインスタンス、例えば２つのマシン上で同時に活動状態にあるユーザのピアＩＤを許可するための明確なメカニズムが含まれる。
【００６４】
ＰＮＲＰキーは、本発明の実施形態では１２８ビット数のオブジェクトの識別子と、通常はその項目が入手可能なＩＰｖ６アドレスである、本発明の実施形態では別の１２８ビット数であるインスタンスの識別子との２つの構成部分を有する。各ＰＮＲＰ項目は、このキーの他にその項目の発行者がＩＤを発行する資格を有しているか否かを検査し、かつ、その項目に関する情報がその発行者の意思に反して発行されることができないようにするために使用することができる「プルーフ」を含む。
【００６５】
項目の最も単純な形式では、オブジェクト識別子は項目に関連付けられた公開鍵のセキュアハッシュであり、インスタンス識別子はオブジェクトがそこで入手可能なＩＰｖ６である。識別子およびインスタンスと、この公開鍵に関連付けられている秘密鍵との組合せを示すことによってプルーフが得られる。
【００６６】
グループベースの識別子は、そのグループに関連付けられている公開鍵のセキュアハッシュであり、インスタンス識別子はグループメンバーが存在するＩＰｖ６アドレスである。識別子およびインスタンスと、グループメンバーの公開鍵との組合せを示し、次いで、グループに対するグループメンバーの公開鍵のリンクを評価するグループの公開鍵で署名した証明を開示することによってプルーフが得られる。
【００６７】
ユーザベースの識別子は、命名機関のセキュアキーを有する、電子メールアドレスで表される、請求されたユーザの識別のセキュアハッシュである。識別子およびインスタンスと、ユーザの秘密鍵との組合せを示し、次いでユーザ名を対応する公開鍵にリンクしている命名機関によって署名された証明を開示することによってプルーフが得られる。電子メールアドレスは大域的に一意のアドレスであるはずなので、このハッシュ手順は、抽出したもの同士が衝突する確率が５０％になる前に、２６４の一意のピアを考慮に入れている。
【００６８】
本発明の中核ＰＮＲＰに対するこのような拡張によって、個々のホストのキャッシュ管理はより複雑化する。すなわち、所与のホスト上に１つ以上のＩＤが格納されている場合、キャッシュ管理は、各表記されたＩＤに対して適切な近接局が維持されることを保証する必要がある。理想的な場合は（メモリおよび処理は関係なく）、このキャッシュは２つのＩＤが同じキャッシュレベルで重複し、次いで上位レベルのキャッシュを共有した時点まで各ＩＤごとに一意のレベルを含んでいる。キャッシュされたＰＡＣは、様々な表記されたＩＤ間に１つ以上のキャッシュレベル内の論理メンバーシップを有することができる。
【００６９】
本発明の基本プロトコルに対する第２の拡張は、ピアーツーピア解決プロトコルとドメインネームシステム（ＤＮＳ）との事実上の統合を実現する。各ノードに、ＤＮＳ構成部分と一意の番号とからなるＩＤを提供することによって、ＤＮＳ構成要素のために集中型サーバを配置するようにＤＮＳメカニズムを使用することができる。次いで集中型サーバは、特定のノードを発見するために一意の番号の部分と共に本発明のプロトコルを使用して、ピアーツーピア名前解決プロトコル（ＰＮＲＰ）空間に移動し、その情報を要求側に戻すことができる。個々のノードは、集中型サーバに乱数と共に要求を送信することによって、そのキャッシュをシードするために役立つ近接局を発見することができる。
【００７０】
具体的には、ＰＮＲＰ  ＤＮＳ結合（ｌｉｎｋａｇｅ）によって、ピア識別子（ＰｒＩＤ）を正式なアドレス証明に変換することができる。このサービスによって、加入者は接続したピアの正確なアドレスを獲得することができる。インターネットはアドレス解決のためにＤＮＳを使用する。名前解決のためにＤＮＳとＰＮＲＰを結合することは有利である。このような結合は、そのクライアントのフレンドリーな名前または符号化されたＰｒＩＤを使用して、ＤＮＳクライアントがＰＮＲＰクライアントのＩＰアドレスを獲得できるようにするべきである。これは、ＤＮＳリゾルバーが期限切れのアドレスをキャッシュする危険性も最小限に抑える。さらに、いかなるＰＮＲＰ加入者上で実行するにも十分に軽い。
【００７１】
ＰＮＲＰ  ＤＮＳゲートウェイは、ポート５３上のＴＣＰおよびＵＤＰ接続をリッスンする。これは、ＱＣＬＡＳＳ＝ＩＮおよびＱＴＹＰＥ＝ＡＡＡＡまたはＡ６（ＩＰｖ６アドレス）または＊を有する照会だけを受理する。このゲートウェイは、ＱＮＡＭＥをホスト名とドメイン接尾部（ｄｏｍａｉｎ  ｐｒｅｆｉｘ）に分割する。ドメイン接頭部は、存在しないか、または左端の構成部分として「Ｐ２Ｐ」を有する必要がある。この他のドメイン接尾部では０回答になる。この接尾部は、一部をパラメータ化可能とし、命名クラウドの定義とすることが好ましい。
【００７２】
ゲートウェイは、有効な照会を受信すると、ホスト名上で２つのＰＮＲＰサーチを実施する。第１に、サーチは常に、ディフォルトフレンドリーな名前−ＰｒＩＤ変換の結果上で実施される。この変換は、フレンドリーな名前の１２８ビットのセキュアハッシュであることが好ましい。第２に、ホスト名が１６進数のＰｒＩＤの有効なＡＳＣＩＩ表記に対応する場合、そのホスト名は、２進法のＰｒＩＤに変換され、そのＰｒＩＤのサーチが開始される。より強力な機密保護の必要性を認識すると、強力なハッシュと秘密の組合せを使用することができる。どのサーチも照会と完全に一致するアドレス証明を戻す場合、その一致に対してＤＮＳ  Ａ記録が構築される。Ａ記録ＴＴＬは１０分またはそのアドレス証明のＴＴＬの短い方に設定される。応答は、正式のものとしてマーク付けされている。
【００７３】
ＤＮＳサーバは、次の２つの方法のうちの一方によってＰＮＲＰ  ＤＮＳゲートウェイにリンクすることができる。第１に、ＤＮＳサーバの正式ゾーンの子である新しいゾーンを作成することができる。例えば、ＮＴＤＥＶ．ＭＩＣＲＯＳＯＦＴ．ＣＯＭ．の正式なネームサーバは、ローカルＰＮＲＰ  ＤＮＳゲートウェイを指す１つまたは複数のＮＳ記録を有するＰ２Ｐ．ＮＴＤＥＶ．ＭＩＣＲＯＳＯＦＴ．ＣＯＭ．というゾーンを有することができる。第２に、＜Ｐ２Ｐ＞を任意の値とした場合、例えば「ｐｎｒｐ．ｎｅｔ」または「ｐ２ｐ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ」のように新しいゾーン＜Ｐ２Ｐ＞を作成することができる。このようなゾーンが、最も近いＰＮＲＰ  ＤＮＳゲートウェイを指して各ドメインに存在する場合、ピアは、＜ＰｒＩＤ＞．Ｐ２Ｐを解決することによって、そのローカルＰＮＲＰアクセスポイントを発見するためにＤＮＳを使用することができる。各ＤＮＳサーバは、ローカルＰ２Ｐネットワークに対してローカルアクセスおよびグローバルアクセスの両方を可能にするために、両方のゾーンを定義しておくことが理想的である。
【００７４】
ＤＮＳへの本発明のＰＮＲＰのこのような拡張の一例を図７に示す。この図は、ＤＮＳ空間２００とピアーツーピア空間２０２の２つの空間を示している。これら２つの空間の間の結合は、ｐ２ｐ．ｍｉｃｏｒｓｏｆｔ．ｃｏｍ．という例示的な名前を有するサーバ２０４によって実現する。ピアーツーピア空間２０２に存在するノード２０６は、１２３４５０ＡＦ３９．ｐｔｐ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ．という例示的な名前を有することができる。あるいは、一意の番号ＩＤは、中核プロトコルへの名前−番号拡張に関して上記で説明したフレンドリーな名前で置き換えることができる。ＤＮＳ空間２００内のノード２０８がピアーツーピア空間２０２内のノード２０６を発見しようとする場合、ノード２０８はＤＮＳ照会を．ｃｏｍルートサーバ２１０に送信し、そこからその照会は．ｍｉｃｒｏｓｏｆｔサーバ２１２に渡され、そこからその照会は．ｐ２ｐサーバ２０４に渡される。次いでこのサーバは、上記で説明したようにピアーツーピア空間２０２内にあるターゲットノード２０６を発見するために、ノードｉｄと本発明のプロトコルを使用する。ターゲットノード２０６が発見されると、そのアドレスがＤＮＳ空間にある要求ノード２０８に戻される。新しいノード２１４は、システムにプラグインしてそのキャッシュをシードすることを希望する場合、ノード２１４は、＜乱数＞．ｐ２ｐ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ．の形式でｉｄを有するノードに対して要求を送信するだけである。当然、他の実施態様は、「ｐ２ｐ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ．」の代わりに、例えば「ｐｎｒｐ．ｎｅｔ」などの異なるドメイン名を使用することができることを当業者なら理解するだろう。
【００７５】
上記で説明した本発明の様々な実施形態は、例示および説明の目的で提示したものである。これは本発明を、開示した実施形態だけを網羅したり、これらに限定することを意図したものではない。上記の教示に鑑みて無数の修正形態または変形形態が可能である。議論した実施形態は、本発明の原理の最良の例示を提供するために選択され、説明されたものであり、その事実上の適用例は、様々な実施形態の形式で、また、考慮される特定の用途に適した様々な修正形態で当業者が本発明を使用することを可能にする。このようなすべての修正形態および変形形態は、公平、合法的、公正に権利を有する範囲に従って解釈されるとき、頭記の特許請求の範囲によって規定される本発明の範囲内にあるものである。
【００７６】
【発明の効果】
以上説明したように、本発明によれば、絶えず増加し続けるキャッシュを必要とせず、適切なポップ数によって、ネットワークのサイズに関わらず収束が保証される。
【図面の簡単な説明】
【図１】本発明が常駐する例示的コンピュータシステムを全体的に示すブロック図である。
【図２】本発明の円形番号空間のグラフである。
【図３】本発明のシステムで収束に期待される平均ホップ数を示すグラフである。
【図４】本発明のマルチレベルキャッシュを簡略化した図である。
【図５】本発明のシステムで収束に達するための様々なネットワークサイズに対するホップ数対キャッシュ分割サイズを示すグラフである。
【図６】本発明による名前対番号マッピングを含めるように拡張された本発明の円形番号空間を示すグラフである。
【図７】ドメインネームサービス（ＤＮＳ）とピアツーピア空間の２つの空間の間の本発明のシステムのクロスオーバーアプリケーションを示す図である。
【図８】ピアツーピア空間を示す図である。
【符号の説明】
１００  コンピューティングシステム環境
１１０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  読み出し専用メモリ
１３２  ランダムアクセスメモリ
１３３  基本入出力システム
１３４  オペレーティングモジュール
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５１  磁気ディスクドライブ
１５２  取り外し可能な不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  取り外し可能な不揮発性光ディスク
１６０  ユーザ入力インターフェース
１６１  ポインティングデバイス
１６２  キーボード
１７０  アダプタ
１７１  ローカルエリアネットワーク（ＬＡＮ）
１７２  モデム
１７３  ワイドエリアネットワーク（ＷＡＮ）
１８０  遠隔コンピュータ
１８１  記憶装置
１８４  マルチレベルキャッシュ
１８５  遠隔アプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
【図１】
0004117144.tif 000002
【図２】
0004117144.tif 000003
【図３】
0004117144.tif 000004
【図４】
0004117144.tif 000005
【図５】
0004117144.tif 000006
【図６】
0004117144.tif 000007
【図７】
0004117144.tif 000008
【図８】
0004117144.tif 000009