(57)【特許請求の範囲】
【請求項１】
ノードが、分解されたピアツーピア（Ｐ２Ｐ）ネットワークに参加するのを可能にするための装置であって、
プロセッサおよびメモリを含み、プロセッサが分解されたＰ２Ｐネットワークに参加することを要求しているノードに向けてネットワークマップを伝搬するように構成され、分解されたＰ２ＰネットワークがＰ２Ｐ制御ネットワークおよび複数のＰ２Ｐサブネットワークを含み、
ネットワークマップが、分解されたＰ２Ｐネットワークの複数のＰ２Ｐサブネットワークに対する複数のサブネットワーク指標のマッピングを含み、
複数のサブネットワークの少なくとも１つのサブネットワーク指標に関して、サブネットワーク指標が、少なくとも２つのＰ２Ｐサブネットワークにマッピングされる、装置。
【請求項２】
プロセッサが、分解されたＰ２Ｐネットワークの分解に基づいてネットワークマップを符号化する
ようにさらに構成される、請求項１に記載の装置。
【請求項３】
分解されたＰ２Ｐネットワークの分解が、少なくとも１つの分解基準に基づき、少なくとも１つの分解基準が、ノードの地理的位置および関心共同体のうちの少なくとも１つを含む、請求項１に記載の装置。
【請求項４】
Ｐ２Ｐサブネットワークのそれぞれに関して、Ｐ２ＰサブネットワークがＰ２Ｐサブネットワークにマッピングされたサブネットワーク指標のうちの１つまたは複数を有する、請求項１に記載の装置。
【請求項５】
ネットワークマップが、
分解されたＰ２Ｐネットワーク内にファイルを記憶するため、または分解されたＰ２Ｐネットワーク内でファイルを位置特定するためのオブジェクト識別子を生成する際にノードによって使用するために構成されたハッシュ情報、
Ｐ２Ｐサブネットワークのそれぞれに関して、Ｐ２Ｐサブネットワークのうちのどれに参加するかを決定する際にノードによって使用するために構成された１つまたは複数の記述子、および
ネットワークマップ管理情報のうちの少なくとも１つをさらに含む、請求項１に記載の装置。
【請求項６】
ノードが、分解されたピアツーピア（Ｐ２Ｐ）ネットワークに参加するのを可能にするための装置であって、装置が、
プロセッサおよびメモリを含み、プロセッサが、
Ｐ２Ｐ制御ネットワークおよび複数のＰ２Ｐサブネットワークを含む、分解されたＰ２Ｐネットワークのネットワークマップを獲得する際に使用するように構成されたメッセージの送信をノードから開始し、
分解されたＰ２Ｐネットワークのネットワークマップをノードにおいて受信するように構成され、
分解されたＰ２Ｐネットワークのネットワークマップが、分解されたＰ２Ｐネットワークの複数のＰ２Ｐサブネットワークに対する複数のサブネットワーク指標のマッピングを含み、
複数のサブネットワーク指標の少なくとも１つのサブネットワーク指標に関して、サブネットワーク指標が、少なくとも２つのＰ２Ｐサブネットワークにマッピングされる、装置。
【請求項７】
プロセッサが、分解されたＰ２ＰネットワークのＰ２Ｐ制御ネットワークの少なくとも１つのノードに向けて要求の送信を開始するように構成され、少なくとも１つのノードが、Ｐ２Ｐ制御ネットワーク内のノードの前任ノードまたはＰ２Ｐ制御ネットワーク内のノードの後任ノードのうちの少なくとも１つを含む、請求項６に記載の装置。
【請求項８】
分解されたＰ２Ｐネットワークの分解が、少なくとも１つの分解基準に基づき、少なくとも１つの分解基準が、ノードの地理的位置および関心共同体のうちの少なくとも１つを含む、請求項６に記載の装置。
【請求項９】
ネットワークマップが、
分解されたＰ２Ｐネットワーク内にファイルを記憶するため、または分解されたＰ２Ｐネットワーク内でファイルを位置特定するためのオブジェクト識別子を生成する際にノードによって使用するように構成されたハッシュ情報、
Ｐ２Ｐサブネットワークのそれぞれに関して、Ｐ２Ｐサブネットワークのうちのどれに参加するかを決定する際にノードによって使用するように構成された１つまたは複数の記述子、および
ネットワークマップ管理情報のうちの少なくとも１つをさらに含む、請求項６に記載の装置。
【請求項１０】
分解されたＰ２Ｐネットワーク内のファイルを管理するために、プロセッサが、
ファイルのサブネットワーク指標を計算し、
ファイルのサブネットワーク指標に関連するＰ２Ｐサブネットワークのうちの１つを識別し、
Ｐ２Ｐサブネットワークのうちの識別された１つのアクティブノードを識別し、
分解されたＰ２Ｐネットワーク内のファイルを管理するためにアクティブノードを使用するためのプロセスを開始する
ように構成される、請求項６に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００９年１２月１７日に出願され、その全体が参照により本明細書に明示的に組み込まれている、「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＬＯＣＡＴＩＮＧ  ＳＥＲＶＩＣＥＳ  ＷＩＴＨＩＮ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＮＥＴＷＯＲＫＳ」という表題の米国特許出願第１２／６４０，０７２号（整理番号第Ｃｈｕ１９−４３号（ＡＬＵ／１３０２０９））に関する。
【０００２】
本発明は、ピアツーピア（Ｐ２Ｐ）ネットワークの分野に関し、より詳細には、排他的ではないが、Ｐ２Ｐネットワークをサブネットワークに分割することに関する。
【背景技術】
【０００３】
ファイル共有は、かなりの期間、徹底的な研究および草の根的な使用の焦点であり続けてきた。ファイル共有は、特にそのために設計され、かつそれに関連するファイル共有プロトコルを有する、異なるファイル共有システムとして実施されるファイル共有手法によって可能にされる。Ｎａｐｓｔｅｒに始まり、次いで、ｇｎｕｔｅｌｌａ、Ｋａｚａａ、ｅＤｏｎｋｅｙ、Ｗｉｎｙ、およびＢｉｔＴｏｒｒｅｎｔなど、異なるファイル共有システムのいくつかの生成に続く、いくつかの異なるファイル共有システムが実施されている。これらのファイル共有システムに加えて、ＳｈａｒｅおよびＰｅｒｆｅｃｔ  Ｄａｒｋなどの新しいシステムも開発されている。これらのファイル共有システムおよび関連するプロトコルは、集合的に、ピアツーピア（Ｐ２Ｐ）ファイル共有システム／ピアツーピア（Ｐ２Ｐ）ファイル共有プロトコル、または、さらに簡単には、Ｐ２Ｐファイル共有アプリケーションと呼ばれる。さらに、Ｐ２Ｐファイル共有アプリケーションに加えて、構造上、Ｐ２Ｐファイル共有アプリケーションと異なる、新しいクラスのＰ２Ｐアプリケーション、すなわち、Ｐ２Ｐテレビジョン（Ｐ２ＰＴＶ）が出現している。
【０００４】
Ｐ２Ｐファイル共有の需要は、最近のトラフィック研究から明らかである。例えば、Ｅｌｌａｃｏｙａ  Ｎｅｔｗｏｒｋによる、合衆国内のブロードバンドユーザ１００万人の最近のトラフィック研究は、主なトラフィックタイプの容量ごとの内訳が以下のようであることを示している：すなわち、ウェブ（ＨＴＴＰ）が４６％、ピアツーピア（Ｐ２Ｐ）が３７％、ニュースグループが９％、非ＨＴＴＰストリーミングビデオが３％、ゲームが２％、ボイスオーバＩＰ（ＶｏＩＰ）が１％、その他が１％である。ＨＴＴＰトラフィックの量が高い主な理由は、上記の研究における総トラフィックの９．８％を占める、ＹｏｕＴｕｂｅからのトラフィックなど、埋込み型ビデオストリーミングトラフィックである。しかし、Ｐ２Ｐファイル共有は、依然としてトラフィックの大きな割合を担当し、Ｐ２ＰＴＶの出現に伴い、トラフィックの量は劇的に増大することが予測される。
【０００５】
既存のＰ２Ｐアプリケーションの大部分はファイル共有を必要とするが、ファイル共有を必要とする既存のＰ２Ｐアプリケーションの大部分は、少なくとも当初、完全にピアツーピアではなかった。むしろ、大部分の既存のＰ２Ｐアプリケーションは、当初、Ｐ２Ｐネットワークのメンバ同士の間の活動を調整するためにセントラルサーバを利用した。例えば、ｂｉｔＴｏｒｒｅｎｔでは、情報の異なる断片のダウンロードはピアツーピアであったが、ｂｉｔＴｏｒｒｅｎｔアプリケーションの活動を調整するために、ｂｉｔＴｏｒｒｅｎｔにおいてトラッカと呼ばれる集中サーバが使用された。同様に、例えば、ＮａｐｓｔｅｒおよびｅＤｏｎｋｅｙなど、ファイル共有を必要とする多くのその他のＰ２Ｐアプリケーションは、類似の特性も有していた。しかし、セントラルサーバの使用は、輻輳および障害に対して既存のＰ２Ｐアプリケーションを脆弱にし、さらに、セキュリティの脅威に対して既存のＰ２Ｐアプリケーションを魅力的なターゲットにする。
【０００６】
Ｐ２Ｐアプリケーションにおける集中サーバの使用に関連する課題を取り除くために、Ｐ２Ｐアプリケーションと共に集中サーバを使用する必要を除去するための新しい技術が提案されている。これらの技術のうち最も需要があるのは、分散ハッシュテーブル（ＤＨＴ）である。ＤＨＴでは、それぞれのオブジェクトは、関連するＭビットオブジェクト識別子によって識別される。オブジェクトのオブジェクト識別子は、コンシステントハッシュ関数（ｃｏｎｓｉｓｔｅｎｔ  ｈａｓｈ  ｆｕｃｎｔｉｏｎ）を使用したオブジェクト名のハッシュされた値を計算することによって取得される（例えば、オブジェクト識別子＝ｆ（オブジェクト名、この場合、ｆはコンシステントハッシュ関数である）。ハッシュ関数のＭビット出力フィールドは、通常、鍵空間と呼ばれ、ハッシュ関数はこの鍵空間を介してオブジェクトを均一にマッピングする。Ｃｈｏｒｄ、Ｐａｓｔｒｙ、Ｔａｐｅｓｔｒｙなど、ＤＨＴ技術に基づく、いくつかの異なるＰ２Ｐアーキテクチャが存在し、Ｃｈｏｒｄは、最も需要があるＤＨＴベースのＰ２Ｐアーキテクチャである。例えば、ｂｉｔＴｏｒｒｅｎｔおよびｅＤｏｎｋｅｙは両方ともＤＨＴをサポートする。
【０００７】
Ｐ２Ｐネットワークでは、設計目標のうちの１つは、多数のノードに対処することであるが、同時に、ノードのそれぞれの探索表は比較的小さくなければならない。ＤＨＴを使用すると、この目標は、探索要求が、必要に応じて、いくつかのノードを通じてその最終的な目標に最終的に経路指定されることになるように、ノードのそれぞれにおける探索表が協調的な形で構築される分散型探索方式を使用することによって達成される。一般に、それぞれのＤＨＴ技術は、一般に、ノード内の探索表の構成を示し、ノードがどのようにネットワークに参加するか、およびネットワークを退去するかをさらに指定する、その独自のジオメトリを定義する（例えば、Ｃｈｏｒｄネットワークはリングとして構成される）。一般に、ノードがネットワークに参加するとき、ノードはその存在をその近隣ノードに公示して、その探索表を作成して、ポピュレートし（ｐｏｐｕｌａｔｅ）、そのノードが担当するファイルを取得する。一般に、ノードがネットワークを退去するとき、ノードはそのノードの退去を反映するためにその近隣ノードを更新できるように、その近隣ノードに知らせなければならず、そのノードが担当する任意のファイルを転送しなければならない。ノードは、一般に、やはり、そのそれぞれの近隣に管理メッセージおよび制御メッセージを周期的に送信する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
不利なことには、Ｃｈｏｒｄなど、大部分のＤＨＴ技術において、ノードの物理的な位置（または、ノード同士の間の距離）は、アーキテクチャにおいて明らかにされない。結果として、メッセージおよび情報、例えば、ノードの参加手順／退去手順に関連する状況メッセージおよびファイル転送、近隣のノード同士の間で交換される状況メッセージおよび制御メッセージ、ファイル探索に関連する探索メッセージなどは、遥かな地理的距離を横断する場合がある。さらに、Ｐａｓｔｒｙなど、少なくともいくつかのＤＨＴ技術は、近接性基準（ｐｒｏｘｉｍｉｔｙ  ｍｅｔｒｉｃｓ）を使用して、ノード同士の間の「距離」の概念を組み込むことを試みるが、これらのＤＨＴ技術は、これらの技術に関連する不利点を依然として有する。すなわち：（１）特に、大型のネットワークの場合、使用しやすい近接性基準を画定することは困難であること、および（２）近接性基準は、三角不等式を満たす距離基準でなければならないが、ネットワークホップなど、需要がある基準の大部分は三角不等式を満たすことができないことである。
【課題を解決するための手段】
【０００９】
先行技術の様々な欠陥が、Ｐ２Ｐネットワークが複数のサブネットワークに分解されるピアツーピア（Ｐ２Ｐ）ネットワーク分解機能をサポートする実施形態によって対処される。複数のサブネットワークを含む、分解されたＰ２Ｐネットワークを形成するために、Ｐ２Ｐネットワークを分解して、分解されたＰ２Ｐネットワークをさらに使用するための機能が提供される。Ｐ２Ｐネットワークは、複数のサブネットワークを形成するために分解され、この場合、サブネットワークのそれぞれは、Ｐ２Ｐネットワークである。Ｐ２Ｐネットワークは、１つまたは複数の分解基準（例えば、地理的位置、関心共同体（ｃｏｍｍｕｎｉｔｙ  ｏｆ  ｉｎｔｅｒｅｓｔ）など、ならびにそれらの様々な組合せ）に基づいて、サブネットワークに分解され得る。Ｐ２Ｐネットワークの分解は、ネットワークマップ内で符号化される。ノードは、分解されたＰ２Ｐネットワークに参加するために、ネットワークマップを使用することも可能である。ノードは、サブネットワークのうちの１つに参加することが可能であり、それらのうちのいくつかに参加することが可能であり、またはそれらのすべてに参加することが可能である。分解されたＰ２Ｐネットワークのサブネットワークは、任意の適切な数の階層レベルで構成され得る。
【００１０】
本明細書の教示は、添付の図面と共に、以下の詳細な説明を考慮することによって容易に理解されよう。
【図面の簡単な説明】
【００１１】
【図１】ある例示的なＣｈｏｒｄネットワークを示す図である。
【図２】図１の例示的なＣｈｏｒｄネットワークの制御ネットワークおよび５つのサブネットワークへのある分解を示す図である。
【図３】ファイルを分解されたＰ２Ｐネットワーク内に記憶させる際にノードによって使用するための方法の一実施形態を示す図である。
【図４】分解されたＰ２Ｐネットワーク内に記憶されたファイルを位置特定する際にノードによって使用するための方法の一実施形態を示す図である。
【図５】分解されたＰ２Ｐネットワークのサブネットワークに参加する際にノードによって使用するための方法の一実施形態を示す図である。
【図６】分解されたＰ２Ｐネットワークを退去する際にノードによって使用するための方法の一実施形態を示す図である。
【図７】分解されたＰ２Ｐネットワークのネットワークマップ内の変更に基づいて、変更を実行する際にノードによって使用するための方法の一実施形態を示す図である。
【図８Ａ】ファイルが第１のサブネットワークから第２のサブネットワークに転送され得るプロセスを示す一例を示す図である。
【図８Ｂ】ファイルが第１のサブネットワークから第２のサブネットワークに転送され得るプロセスを示す一例を示す図である。
【図８Ｃ】ファイルが第１のサブネットワークから第２のサブネットワークに転送され得るプロセスを示す一例を示す図である。
【図８Ｄ】ファイルが第１のサブネットワークから第２のサブネットワークに転送され得るプロセスを示す一例を示す図である。
【図８Ｅ】ファイルが第１のサブネットワークから第２のサブネットワークに転送され得るプロセスを示す一例を示す図である。
【図９】分解されたＣｈｏｒｄネットワーク内でＣｈｏｒｄサブネットワークを初期化するとき、第１のサブネットワークのノードが第２のサブネットワークからファイルを獲得するのを可能にするための方法の一実施形態を示す図である。
【図１０】本明細書で説明される機能を実行する際に使用するのに適した汎用コンピュータのハイレベルブロック図である。
【発明を実施するための形態】
【００１２】
理解を促すために、可能な場合、図面に共通の同一の要素を指すために同一の参照番号が使用されている。
【００１３】
ピアツーピア（Ｐ２Ｐ）ネットワーク分解機能が本明細書で示され、説明される。Ｐ２Ｐネットワーク分解機能は、複数のサブネットワークを含む、分解されたＰ２Ｐネットワークを形成するために、Ｐ２Ｐネットワークが分解されることを可能にし、この場合、サブネットワークのそれぞれは、Ｐ２Ｐネットワークとしても動作する。Ｐ２Ｐネットワーク分解機能は、分解されたＰ２Ｐネットワークを使用することを可能にする。
【００１４】
本明細書では、主に、Ｃｈｏｒｄネットワークに関して示され、説明されているが、Ｐ２Ｐネットワーク分解機能は、Ｐａｓｔｒｙネットワーク、Ｔａｐｅｓｔｒｙネットワークなど、ならびにそれらの組合せなど、任意の適切なＰ２Ｐ技術を利用する任意のＰ２Ｐネットワークを分解するために利用され得る。
【００１５】
図１は、例示的なＣｈｏｒｄネットワークのハイレベルブロック図を示す。図１に示されるように、例示的なＣｈｏｒｄネットワーク１００は、リング構成で論理的に構成された複数のノード１１０を含む。ノード１１０は、それぞれ、ノード１１０間で共有され得るファイルを記憶する。ノード１１０は、Ｃｈｏｒｄネットワーク内に参加できる任意の適切なタイプのノードを含む。例えば、ノード１１０は、コンピュータ、電話などを含むことが可能である。ノード１１０はそれぞれ、本明細書で示され、説明されるＰ２Ｐネットワーク分解機能の様々な機能を提供するように構成される。Ｐ２Ｐネットワーク分解機能を使用した、Ｃｈｏｒｄネットワーク１００の分解は、図１の例示的なＣｈｏｒｄネットワーク１００に関して、Ｃｈｏｒｄネットワークの一般的な動作をまず考慮することによってより良好に理解されよう。
【００１６】
Ｃｈｏｒｄでは、Ｃｈｏｒｄネットワークのノードは、（例えば、ＩＰネットワークまたは任意のその他の適切なネットワークなど）パケットベースのネットワークを経由したネットワーク接続性を有し、Ｃｈｏｒｄは、基本的なパケットベースのネットワークを介してオーバーレイネットワークを形成する。
【００１７】
Ｃｈｏｒｄでは、Ｃｈｏｒｄネットワークに参加できるノードの数は、Ｃｈｏｒｄネットワークの鍵空間（アドレス空間）のサイズに基づく。一般に、鍵空間はＭビットであり、この場合、Ｍは、任意の適切な数であってよい。例えば、Ｃｈｏｒｄネットワークで使用される一般的な鍵空間は、１６０ビット実装形態を使用して提供され、鍵空間のサイズは、２１６０または約１．４５＊１０４８に等しくされる。入力を１６０ビット値にマッピングするために（すなわち、入力を鍵空間にマッピングするために）コンシステントハッシュ関数が使用される。ハッシュ関数からの出力は、鍵空間上に均一にマッピングされる。セキュアハッシュアルゴリズム（ＳＨＡ−１）、メッセージダイジェストアルゴリズム５（ＭＤ５）など、任意の適切なハッシュ関数が使用され得る点を理解されよう。ハッシュ関数の出力は、鍵空間上にマッピングされるとき、Ｃｈｏｒｄネットワーク内のノードを論理的に構成するために使用されるノードＩＤのセットを提供する。
【００１８】
Ｃｈｏｒｄでは、アクティブノード（Ｃｈｏｒｄネットワークに参加している既存のノード）および非アクティブノード（Ｃｈｏｒｄネットワークに参加できる潜在的なノード）は、ノードのノードＩＤの順序で円形に論理的に構成される。Ｃｈｏｒｄは、ラップアラウンドを伴って、ノードＩＤ値が増大する方向に円の形で順序を課す。Ｃｈｏｒｄでは、Ｃｈｏｒｄネットワークのアクティブノード同士の間の接続性は、円内のアクティブノードの隣接するノード同士の間の論理接続性である（非アクティブノードはＣｈｏｒｄネットワークに接続されないため、したがって、アクティブノードとしてＣｈｏｒｄネットワークに参加できる潜在的なノードに過ぎない）。このように、Ｃｈｏｒｄネットワーク内のターゲットアクティブノードから見ると、（１）ターゲットノードのノードＩＤを超えるノードＩＤを有する、円上の次のアクティブノードがターゲットアクティブノードの後任であり、（２）ターゲットノードのノードＩＤ未満のノードＩＤを有する、円上の次のアクティブノードがターゲットアクティブノードの前任である。
【００１９】
図１では、Ｃｈｏｒｄネットワークの鍵空間は（ノードＩＤ０からノードＩＤ６３に、右回りに、連続的に番号付された６４個のノードを提供する）６ビットである。図１では、ノード０、２−３、５−７、９、１２−１３、１６−２４、２６、２９−３０、３２、３４−３５、３７、４１、４３、４５、４９、５１、５３−５４、５６−５８、および６２がアクティブであり、残りのノードは非アクティブである（分かりやすくするために、アクティブノードと非アクティブノードの両方が表示されている）。図１では、Ｃｈｏｒｄネットワーク１００のアクティブノード同士の論理的な接続性は、ノード０がノード２に接続され、ノード２がノード３に接続され、ノード３がノード５に接続され、以下同様であり、ノード６２がノード０に接続されて、円が完了していることを示す。Ｃｈｏｒｄは、ラップアラウンドを伴って、右回り方向に増大値を使用して円の形で順序を課すため、ノード２は、ノード０の後任と呼ばれ、ノード６２は、ノード０の前任と呼ばれ、ノード３は、ノード２の後任と呼ばれ、ノード０は、ノード２の前任と呼ばれ、以下同様である。
【００２０】
本明細書で説明されるように、Ｃｈｏｒｄネットワークは、ファイル共有をサポートし、この場合、共有されることになるそれぞれのファイルは、Ｃｈｏｒｄネットワークの１つまたは複数のアクティブノード上に記憶される。Ｃｈｏｒｄでは、ファイルのファイル名は、Ｃｈｏｒｄネットワークのノードを識別するために使用される同じハッシュ関数を使用して、Ｃｈｏｒｄネットワークのノードを識別するために使用される同じ鍵空間内にハッシュされる。ファイル名をハッシュすることからハッシュされた出力は、そのファイルに関するファイル識別子である。したがって、１６０ビットの鍵空間を有するＣｈｏｒｄネットワークの場合、例えば、Ｃｈｏｒｄネットワークは、１．４５＊１０４８個のファイルに潜在的に対処することが可能である。Ｃｈｏｒｄでは、ファイルは、そのノードがアクティブな場合、そのファイルのファイルＩＤにマッチするノードＩＤを有するノードに記憶され、そのノードがアクティブでない場合、そのファイルは、そのファイルＩＤを超えるノードＩＤを有する第１のアクティブノードに記憶される。
【００２１】
図１では、Ｃｈｏｒｄネットワーク１００は、以下に記憶されることになる６４個の全ファイルに対処することが可能である：すなわち、ノード０はファイル０および６３を記憶し、ノード２はファイル１および２を記憶し、ノード３はファイル３を記憶し、ノード５はファイル４および５を記憶し、ノード６はファイル６を記憶し、ノード７はファイル７を記憶し、ノード９はファイル８および９を記憶し、ノード１２はファイル１０、１１、および１２を記憶し、ノード１３はファイル１３を記憶し、ノード１６はファイル１４、１５、および１６を記憶し、ノード１７はファイル１７を記憶し、ノード１８はファイル１８を記憶し、ノード１９はファイル１９を記憶し、ノード２０はファイル２０を記憶し、ノード２１はファイル２１を記憶し、ノード２２はファイル２２を記憶し、ノード２３はファイル２３を記憶し、ノード２４はファイル２４を記憶し、ノード２６はファイル２５および２６を記憶し、ノード２９はファイル２７、２８、および２９を記憶し、ノード３０はファイル３０を記憶し、ノード３２はファイル３１および３２を記憶し、ノード３４はファイル３３および３４を記憶し、ノード３５はファイル３５を記憶し、ノード３７はファイル３６および３７を記憶し、ノード４１はファイル３８、３９、４０、および４１を記憶し、ノード４３はファイル４２および４３を記憶し、ノード４５はファイル４４および４５を記憶し、ノード４９はファイル４６、４７、４８、および４９を記憶し、ノード５１はファイル５０および５１を記憶し、ノード５３はファイル５２および５３を記憶し、ノード５４はファイル５４を記憶し、ノード５６はファイル５５および５６を記憶し、ノード５７はファイル５７を記憶し、ノード５８はファイル５８を記憶し、ノード６２はファイル５９、６０、６１、および６２を記憶する。
【００２２】
最も基本的な実装形態では、（ノードＩＤとファイルＩＤとを割り当てるために同じハッシュ関数を使用することにより）任意の所与のファイルの１つのコピーだけがＣｈｏｒｄネットワーク内に記憶されるが、（例えば、ノード障害、ロードバランシングなどの場合の弾性により）Ｃｈｏｒｄネットワーク内にファイルの複数のコピーを記憶するために、異なる方法が用いられてもよい。
【００２３】
一実施形態では、例えば、ファイルの複数のバージョンは、合意された命名規則を使用して、若干異なるファイル名をファイルの複数のコピーに割り当てることによって、Ｃｈｏｒｄネットワーク内に記憶され得る。例えば、ファイルの名称が「ａｂｃ」である場合、「−ｎ」などの拡張子が同じファイルを表すファイル名に追加され得る。この例では、ファイルの複数のコピーは、名称「ａｂｃ」、「ａｂｃ−１」、「ａｂｃ−２」などの下で記憶され得る。このように、「ａｂｃ」ファイルに関する複数のファイル名は同一ではないため、異なるファイル名のハッシングは、結果として、異なるハッシュ出力、したがって、異なるファイルＩＤをもたらすことになり、それによって、ファイルの複数のコピーをＣｈｏｒｄネットワークの異なるノード内に記憶させる。
【００２４】
一実施形態では、例えば、（単一のコンシステントハッシュ関数が使用される、上で説明された実装形態ではなく）ファイル名を使用して、ファイルに関する複数のファイルＩＤを生成するために、複数の独立したハッシュ関数を使用することによって、ファイルの複数のバージョンがＣｈｏｒｄネットワーク内に記憶され得る。この実装形態では、ファイルをＣｈｏｒｄネットワーク内にシード処理している（ｓｅｅｄｉｎｇ）ノードは、ハッシュ関数を使用して、ファイルの可能なファイルＩＤのそれぞれを判断して、それらのファイルＩＤを使用して、ファイルの複数のコピーをＣｈｏｒｄネットワーク内に挿入する。この実施形態では、Ｃｈｏｒｄネットワーク内のファイルを探索しているノードは、（ハッシュ関数のそれぞれを使用してファイル名をハッシュすることによって）ファイルの可能なファイルＩＤのすべてを判断することになり、次いで、判断されたファイルＩＤを使用して、連続的にまたは同時にファイルを探索することが可能である。
【００２５】
Ｃｈｏｒｄネットワーク内にファイルの複数のバージョンを記憶することに関して、ファイルの複数のバージョンは、任意のその他の適切な形でＣｈｏｒｄネットワーク内に記憶され得る点を理解されよう。
【００２６】
本明細書で説明されるように、Ｃｈｏｒｄは、ノードがファイルを共有することを可能にする。Ｃｈｏｒｄネットワークのノードがファイルを共有することを可能にするために、Ｃｈｏｒｄネットワークのそれぞれのノードは、所望されるファイルを取得することが可能になるように、所望されるファイルの位置を探索して、それを最終的に判断することが可能である必要がある。
【００２７】
Ｃｈｏｒｄでは、それぞれのノードは、探索表を維持する。Ｍビットの鍵空間を有するＣｈｏｒｄネットワークの場合、それぞれのノードＮは、Ｍ個の項目を有する探索表を維持することになり、この場合、探索表の項目は「フィンガ」と呼ばれる。ノードＮに関する探索表では、第ｉ番目のフィンガは、Ｎから少なくとも２ｉ―１離れた、円上の第１のノードを指す。一般に、その他の表示がない限り、「第ｉ番目のフィンガ」という用語は、探索表の第ｉ番目の項目によって指摘されるノードを示すために使用されることになる。例えば、Ｃｈｏｒｄネットワーク１００では、ノード０の第３番目のフィンガは、ノード５である。
【００２８】
ノードの探索表は、Ｃｈｏｒｄネットワーク内のオブジェクトの（１つまたは複数の）位置が判断され得る効率的なグローバル探索アルゴリズムを集合的に提供する。
【００２９】
図１では、鍵空間は６ビットであり、したがって、それぞれのノードは、その探索表内に６個のフィンガを有する。図１では、ノード０に関する探索表は、続く表１に示されるように表現され得る：
【表１】
0005551270.tif 000002
【００３０】
Ｃｈｏｒｄでは、ネットワークは動的である。新しいノードがＣｈｏｒｄネットワークに参加して、既存のノードがＣｈｏｒｄネットワークを退去するにつれて、Ｃｈｏｒｄネットワークのアクティブノードにおいて探索表が影響を受ける可能性がある。したがって、Ｃｈｏｒｄでは、それぞれのアクティブノードＫは、その関連する探索表を周期的に更新することになる。アクティブノードＫは、任意の適切な形でその探索表を更新することが可能である。例えば、この探索を実行する結果は、探索表の第ｉ番目のフィンガに関する値になるため、アクティブノードＫは、ノード（Ｋ＋２ｉ−１）を探索することによって、その探索表を更新することが可能である。Ｃｈｏｒｄネットワークのアクティブノードは、任意のその他の適切な形でその探索表を更新することが可能である点を理解されよう。
【００３１】
Ｃｈｏｒｄでは、探索表に加えて、それぞれのノードは、リング内のその後任およびその前任の識別も記憶する。この情報は、新しいノードがネットワークに参加して、既存のノードがネットワークを退去するとき、ならびに、ノードが障害から回復したときなど、リング維持に関して使用される。いくつかのＣｈｏｒｄネットワークでは、複数の同時ノード障害が存在する状況を防ぐために、ノードは、リング内にＮ個の後任およびＮ個の前任の識別を記憶することが可能である。
【００３２】
Ｃｈｏｒｄでは、Ｃｈｏｒｄネットワークのノードは、Ｃｈｏｒｄネットワークの他のノードからのファイルを探索して、それらを取得することが可能である。Ｃｈｏｒｄネットワークは、それによって、ノードがＣｈｏｒｄネットワーク内の他のノードから利用可能なファイルを探索することができる探索アルゴリズムをサポートする。Ｃｈｏｒｄ探索アルゴリズムの動作は、図１のＣｈｏｒｄネットワーク１００を使用した一例を介して例示され得る。この例では、ノード２は、図１のＣｈｏｒｄネットワーク１００内のファイル０を探索することを望むと仮定する。ノード２は、ファイル要求の送信先である他のノードのうちの１つを選択するために、その探索表にアクセスすることになる。ノード２の観点から、ターゲットファイル（すなわち、ファイル０）のファイルＩＤは、ラップアラウンドにより、ノード２（すなわち、ノード３４）の最大フィンガの値を超えるため、ノード２は、ノード３４がファイル０を探索することを要求するファイル要求をノード３４に送信することになる。ノード３４は、ノード２からそのファイル要求を受信する。ノード３４はファイル０を記憶していないため、ノード３４は、そのファイル要求の転送先である他のノードのうちの１つを選択するために、その探索表にアクセスすることになる。ノード３４において、探索表は、ノード３５、３７、４０、４３、５１、および２を指す、６個のフィンガを含む。ファイル０のオブジェクトＩＤは第５番目のフィンガと第６番目のフィンガ（それぞれ、ノード５１およびノード２）との間にあるため、ノード３４は、第５番目のフィンガ（ノード５１）によって識別されたノードに探索要求を転送する。ノード５１は、ノード３４からファイル要求を受信する。ノード５１はファイル０を記憶していないため、ノード５１は、ファイル要求の送信先である他のノードのうちの１つを選択するために、その探索表にアクセスすることになる。ノード５１において、探索表は、ノード５３、５３、５６、６２、３、および１９を指す、６個のフィンガを含む。ファイル０のオブジェクトＩＤは第４番目のフィンガと第５番目のフィンガ（それぞれ、ノード６２およびノード３）との間にあるため、ノード５１は、第４番目のフィンガ（ノード６２）によって識別されたノードに探索要求を転送する。ノード６２は、ノード５１からファイル要求を受信する。ノード６２はファイル０を記憶していないため、ノード６２は、ファイル要求の送信先である他のノードのうちの１つを選択するために、その探索表にアクセスすることになる。ノード６２において、探索表は、ノード０、０、２、６、１６、および３０を指す、６個のフィンガを含む。ファイル０のオブジェクトＩＤは第１番目のフィンガと第２番目のフィンガの両方（ノード０）において示されるため、ノード６２は、ノード０がアクティブであることを知っており、探索要求をノード０に転送する。ファイル０は、次いで、ノード２に戻される。例えば、ファイル０は、次いで、（例えば、探索要求がノード２のＩＰアドレスを含む場合）ノード０からノード２に直接的に提供されることが可能であり、または、その後にファイル要求が続く経路に沿って（すなわち、ノード０からノード６２、ノード５１、ノード３４、ノード２に）伝搬し戻させることが可能である。したがって、この例から、Ｃｈｏｒｄでは、Ｃｈｏｒｄネットワーク内のノードのすべてがＣｈｏｒｄ検索アルゴリズムをサポートするために協働している点は明らかであろう。
【００３３】
Ｃｈｏｒｄでは、ノードは、任意の時点で、Ｃｈｏｒｄネットワークに参加して、Ｃｈｏｒｄネットワークを退去することができるため、Ｃｈｏｒｄネットワークは動的である。ノードがＣｈｏｒｄネットワークに参加するとき、およびＣｈｏｒｄネットワークから退去するとき、ファイルはノード同士の間で転送される。例えば、参加ノードは、少なくとも、その参加ノードのノードＩＤと同じファイルＩＤを有するファイル（および、潜在的に、その他のファイル）を記憶する責任を負うことができ、一方、退去するノードは、１つまたは複数のファイルを記憶する責任を別のノードに転送することができる。Ｃｈｏｒｄネットワークに参加することおよびＣｈｏｒｄネットワークから退去することに関連する手順は、以下でさらに詳細に説明される。
【００３４】
Ｃｈｏｒｄ参加手順において、ノードがＣｈｏｒｄネットワークに参加することを望むとき、参加ノードはそのノードＩＤを判断する。参加ノードは、その名称をキー値にハッシュすることによって、そのノードＩＤを判断する。例えば、ノードの名称がｎｏｄｅ−ｘｙｚ＠ｃｏｍｐａｎｙ−ａｂｃ．ｃｏｍである場合、ノードＩＤは、ＳＨＡ−１（ｎｏｄｅ−ｘｙｚ＠ｃｏｍｐａｎｙ−ａｂｃ．ｃｏｍ）の出力になり、この場合、分かりやすいように、（任意の適切なハッシング関数が使用され得るが）ハッシュ関数はＳＨＡ−１であると仮定する。この例では、このノードに関するノードＩＤを、ハッシング操作から判断されるように、Ｋとする。
【００３５】
Ｃｈｏｒｄ参加手順において、参加ノードＫは、次いで、Ｃｈｏｒｄネットワークの（初期化ノードとして示される）アクティブノードと交信する。一見、この初期化ノードは、集中サーバであるように思われるが、そうではなく、その理由は：（ａ）初期化ノードはＣｈｏｒｄネットワーク内で現在アクティブな任意のノードであってよく（例えば、ノードＫ１およびノードＫ２が同時にＣｈｏｒｄネットワークに参加することを望む場合、ノードＫ１およびノードＫ２はそれが可能であり、そのネットワークに参加するためのそのそれぞれの初期化ノードとして異なるアクティブノードを使用する可能性がある）、（ｂ）初期化ノードは、基本的な機能に加えて、何らの特別な機能も提供する必要がない（すなわち、初期化ノードは、Ｃｈｏｒｄネットワーク内の任意の他のノードと同じ様に行動することができる）ためである。ノードＫは、任意の適切な形で（例えば、参加ノードＫに関する１つもしくは複数の先の探索表、後任リスト、および／または前任リストから、参加ノード内で管理者によって構成された情報から、ウェブサイトからなど）潜在的な候補初期化ノードのリストを取得することが可能である。この例では、初期化ノードのノードＩＤをＬとする。
【００３６】
Ｃｈｏｒｄ参加手順において、参加ノードＫは、次いで、初期化ノードＬが参加ノードＫを探索する（すなわち、ＩＤ＝Ｋを有するオブジェクトを探索する）要求を送信する。この時点で、２つの事象が発生する可能性がある：
（Ａ）ノードＬは、Ｎの値を用いて、参加ノードＫに応答する。ノードＮは、すべてのアクティブノードの中でも、参加ノードＫに関連するＫよりも単により大きなノードＩＤを有するノードになる。したがって、参加ノードＫがＣｈｏｒｄネットワークに参加するとした場合、ノードＮは、参加ノードＫに関する後任ノードのはずである。ノードＫは、次いで、ノードＮと交信して、ノードＮの前任ノードの識別をノードＮに尋ねる。この例では、ノードＮの前任をノードＮ−として示させる。ノードＮは、参加ノードＫにＮ−の値を提供する。この情報に基づいて、ノードＫは、次いで、ノードＫがＣｈｏｒｄネットワーク内でノードＮとノードＮ−との間に自らを挿入しなければならないことを知る。
【００３７】
（Ｂ）ノードＬは、Ｋの値を用いて、参加ノードＫに応答する。これは、Ｃｈｏｒｄネットワーク内に既にアクティブなＫのノードＩＤを有する別のノードが存在することを意味する。この事例が大部分のＣｈｏｒｄネットワークにおいて起こる可能性は極めて低いが（例えば、１６０ビットの鍵空間であるＣｈｏｒｄネットワーク１００では、この状況が発生する可能性は１．４５＊１０４８中１であるが）、可能ではある。この状況は、参加ノードＫに（例えば、タイムスタンプを追加して、数を追加してなど）その独自の名称を若干変更させて、（Ｋ’として示される）異なるノードＩＤを生成するために新しいノード名を使用させることによって対処され得る。参加ノードＫ’は、新しい探索要求（すなわち、初期化ノードＬが参加ノードＫ’を探索する要求）を初期化ノードＬに送信することによって、再度このプロセスを開始することが可能である。
【００３８】
Ｃｈｏｒｄ参加プロセスでは、参加ノードＫに関する挿入点を判断することに続いて、Ｃｈｏｒｄネットワーク内にその参加ノードを挿入するための処理が実行される。参加ノードＫは、ノードＫ−（Ｋの候補前任）とノードＫ＋（Ｋの候補後任）との間に挿入されており、この場合、この時点で、ノードＫがネットワークに参加する前に、ノードＫ＋は、ノードＫ−の後任である。参加ノードＫは、後任ノードＫ＋と交信して、参加ノードＫがＣｈｏｒｄネットワークに参加することを望む旨を示す。後任ノードＫ＋は、次いで、（１）その前任がノードＫ−であることを参加ノードＫに知らせ、（２）ノードＫが担当すべき任意のファイル（すなわち、（Ｋ−）＋１からＫのファイルＩＤを有するファイル）を参加ノードＫに転送し始め、（３）参加ノードＫがＣｈｏｒｄネットワークに参加するプロセスにあることをその前任ノードＫ−に知らせる。ファイル転送が完了した後で、参加ノードＫは、前任ノードＫ−との接続を確立する。参加ノードＫと前任ノードＫ−との間の接続が確立された後で、参加ノードＫは、参加ノードＫがＣｈｏｒｄネットワークに成功裏に参加したことを後任ノードＫ＋に知らせる。後任ノードＫ＋は、次いで、前任ノードＫ−との接続を中断して、後任ノードＫ＋と前任ノードＫ−は両方とも、その前任リストおよび後任リストを更新する。
【００３９】
Ｃｈｏｒｄ退去手順では、退去ノードＫが制御された形でＣｈｏｒｄネットワークを退去することを可能にするための処理が実行される。退去するノードＫは、退去ノードＫに関連する（ノードＫ−として示される）前任ノードと（ノードＫ＋として示される）後任ノードとを有する。退去ノードＫは、前任ノードＫ−と後任ノードＫ＋の両方と交信して、退去ノードＫがＣｈｏｒｄネットワークを退去することを意図していることを前任ノードＫ−と後任ノードＫ＋の両方に知らせて、それら両方のノードに他方の識別を提供する。退去ノードＫは、次いで、Ｃｈｏｒｄネットワークに代わって退去ノードＫが現在記憶しているファイルのすべて（すなわち、Ｋを含めて、（Ｋ−）＋１とＫとの間のファイルＩＤを有するすべてのファイル）を後任ノードＫ＋に転送する。ファイルの転送が完了した後で、参加ノードは、前任ノードＫ−および後任ノードＫ＋から切断することによって、Ｃｈｏｒｄネットワークを退去する。ノードＫ−およびＫ＋は、次いで、互いの間に（それらのいずれかによって開始され得る）接続を確立する。ノードＫ−およびＫ＋は、その前任リストおよび後任リストをやはり更新する。
【００４０】
Ｃｈｏｒｄネットワークに対する動的な変更を可能にするためのＣｈｏｒｄ参加手順およびＣｈｏｒｄ退去手順の使用に加えて、Ｃｈｏｒｄは、ノード障害からの回復を可能にするためのＣｈｏｒｄ回復手順もサポートする（すなわち、Ｃｈｏｒｄ退去手順およびＣｈｏｒｄ参加手順は、ノード障害から回復するために使用されない）。Ｃｈｏｒｄネットワークのノードは、それぞれ、それらの前任ノードと後任ノードとにハートビートメッセージ（ｈｅａｒｔｂｅａｔ  ｍｅｓｓａｇｅｓ）を周期的に送信し、それによって、Ｃｈｏｒｄネットワークのノードがノード障害を迅速に検出するのを可能にする。一般に、ノードからのハートビートメッセージは、ハートビートメッセージが生じたノードの前任ノードおよび後任ノードの識別を含むことになる。このように、ノードがその後任ノードからハートビートメッセージを受信するとき、そのノードは、その後任ノードの後任ノードの識別を知り、したがって、ノードの後任に障害が発生したとき、そのノードは、その後任ノードの後任ノードに対する接続を開始することが可能であり、Ｃｈｏｒｄリングが維持される。上記のように、一部のＣｈｏｒｄネットワークでは、ノードは、ｋ個の前任およびｋ個の後任のリストを維持する。この場合、Ｃｈｏｒｄネットワークは、ｋ−１個の連続的なノードの障害から回復することが可能である。この場合、ｋの小さない値の場合ですら、ｋ個の連続的なノードの障害の確率は非常に小さい。一部のそのようなＣｈｏｒｄネットワークでは、ｋに関する値は、２＊ｌｏｇ２（Ｌ）と判断されることが可能であり、式中、Ｌは、ネットワーク内のアクティブノードの平均数である（すなわち、通常、１００、０００個のアクティブノードを有するＣｈｏｒｄ、ｋは３４までとなる）。
【００４１】
上述のＣｈｏｒｄ回復手順は、ノード障害の場合にＣｈｏｒｄネットワークが修復されることを可能にするが、障害が発生したノードに記憶されたファイルは失われる。この問題は、いくつかの形で対処され得る。
【００４２】
一実施形態では、この問題は、Ｃｈｏｒｄネットワーク内にファイルの複数のコピーを記憶することによって対処される。２つのそのような方法が上で説明されている。この方法は追加の弾性を提供するが、Ｃｈｏｒｄネットワークのノードのそれぞれに関する記憶容量をｋ倍に増大することを必要とする。
【００４３】
別の実施形態では、この問題は、ファイルを取得するノードが自発的にそれらのファイルに関するシードノードになることを可能にすることによって対処される。１つのそのような実施形態の説明が続く。ファイルは、Ｃｈｏｒｄネットワークのメンバによって、当初、Ｃｈｏｒｄネットワーク内に導入される（この場合、メンバノードは、ファイルのシードノードと呼ばれる）。このシードノードは、ファイル名のハッシュされた値（すなわち、ファイルＩＤ）を取得して、そのファイルＩＤと同じノードＩＤを有するノードを探索する。シードノードは、Ｃｈｏｒｄネットワーク内でそのファイルＩＤ以上のノードＩＤを有する第１のアクティブノードを位置特定することになる。シードノードは、そのファイルを位置特定されたノードに送信する。次いで、後の時点でそのファイルを取得する、Ｃｈｏｒｄネットワークの他のノードは、自発的にそのファイルに関するシードノードになることができる。ファイルに関するシードノードは、Ｃｈｏｒｄネットワーク内のそのファイルを周期的に探索することになり、シードノードがそのファイルを位置特定できない場合、そのシードノードは、上述のように適切なノードにファイルを送信することになる。このように、「失われた」ファイルがＣｈｏｒｄネットワーク内で回復される。
【００４４】
本明細書で説明されるように、Ｐ２Ｐネットワーク分解機能は、Ｐ２Ｐネットワークが複数のサブネットワークに分解されるのを可能にし、それによって、分解されたＰ２Ｐネットワークを形成する。分解されたＰ２Ｐネットワーク内でサブネットワークのそれぞれはＰ２Ｐネットワークとして動作し、これにより、上述のように、Ｐ２Ｐネットワークの機能のうちのいくつかまたはすべてをサポートする。分解されたＰ２Ｐネットワークを形成するためのＰ２Ｐネットワークの分解と、分解されたＰ２Ｐネットワークの使用とに関連する様々な実施形態の説明が続く。
【００４５】
図２は、図１の例示的なＣｈｏｒｄネットワークのサブネットワークへのある例示的な分解を示す。
【００４６】
図２に示されるように、Ｃｈｏｒｄネットワーク１００の分解されたＣｈｏｒｄネットワーク２００への分解は、制御ネットワーク２０２と複数のサブネットワーク２０４１−２０４５（集合的に、サブネットワーク２０４）とを形成することを必要とする。
【００４７】
分解されたＰ２Ｐネットワークでは、サブネットワークのそれぞれは、同じ鍵空間（Ｍビット）と（ｆ（ｘ）として示される）同じ鍵空間ハッシュ関数とを使用する。
【００４８】
分解されたＰ２Ｐネットワークの一実施形態では、分解されたＰ２Ｐネットワークは、それに関連するサブネットワーク指標のセットを有する。サブネットワーク指標は、Ｋビットフィールドであり、分解されたＰ２Ｐネットワークのサブネットワーク指標は、入力ストリングをＫビット値にマッピングする、（ｇ（ｘ）として示される）サブネットワーク指標ハッシュ関数を使用し、それによって、分解されたＰ２Ｐネットワークに関する２Ｋ個のサブネットワーク指標を生成して判断される。分解されたＰ２Ｐネットワークでは、それぞれサブネットワーク指標は、サブネットワークのうちの少なくとも１つに割り当てられ、それぞれのサブネットワークは、割り当てられた少なくとも１つのサブネットワーク指標を有する。サブネットワーク指標ハッシュ関数は、オブジェクト（ノードまたはファイル）のサブネットワーク指標を計算するために使用され、すなわち、ノードのサブネットワーク指標はｇ（ノード名）として判断され、ファイルのサブネットワーク指標はｇ（ファイル名）として判断される。
【００４９】
分解されたＰ２Ｐネットワークの一実施形態では、鍵空間ハッシュ関数ｆ（ｘ）およびサブネットワーク指標ハッシュ関数ｇ（ｘ）は、それらが統計的に無相関であるように選択されるべきである。一実施形態では、鍵空間ハッシュ関数ｆ（ｘ）およびサブネットワーク指標ハッシュ関数ｇ（ｘ）は、Ｊビットの出力を有する（ｈ（ｘ）として示される）ハッシュ関数を選択することによって構成され、この場合、Ｊは、Ｍ＋Ｋ以上の整数である。この実施形態では、オブジェクト（ノードまたはファイル）が与えられると、ｈ（オブジェクト名）が計算され、それによって、Ｊビット値をもたらし、この場合、オブジェクト（ｇ（オブジェクト名））に関するサブネットワークを識別するためにＫ個の最上位ビットが使用され、サブネットワーク内のオブジェクト（ｆ（オブジェクト名））を識別するために、Ｍ個の最下位ビットが使用される。
【００５０】
分解されたＰ２Ｐネットワークにおいて、分解されたＰ２Ｐネットワークに参加する際、分解されたＰ２Ｐネットワーク内で動作する（例えば、ファイルを記憶する、ファイルを位置特定するなど）の際、および分解されたＰ２Ｐネットワークを退去する際にノードによって使用するように構成された情報を維持するために、ネットワークマップが形成される。
【００５１】
一実施形態では、分解されたＰ２Ｐネットワークのネットワークマップは、分解されたＰ２Ｐネットワークのサブネットワークに対する分解されたＰ２Ｐネットワークのサブネットワーク指標のマッピングを含む。ネットワークマップは、サブネットワークのそれぞれに関して、サブネットワークを識別する、少なくとも１つのサブネットワーク指標に対するサブネットワークのマッピングを提供する。
【００５２】
一実施形態では、分解されたＰ２Ｐネットワークのネットワークマップは、鍵空間ハッシュ関数（ｆ（ｘ））の識別、鍵空間の関連するサイズ、サブネットワーク指標ハッシュ関数（ｇ（ｘ））の識別、およびその指標の関連するサイズなど、ならびにそれらの様々な組合せなど、ハッシング情報を含むことも可能である。
【００５３】
一実施形態では、分解されたＰ２Ｐネットワークのネットワークマップは、どのサブネットワークに参加するかを判断する際にノードによって使用するための記述子、ネットワークマップを管理するためにネットワークマップの（１人または複数の）管理者によって使用するためのネットワークマップ管理情報など、ならびにそれらの様々な組合せなど、分解されたＰ２Ｐネットワークに参加する際、分解されたＰ２Ｐネットワーク内で動作する際、および分解されたＰ２Ｐネットワークを退去する際にノードによって使用するように構成されたその他の情報を含むことが可能である。
【００５４】
分解されたＰ２Ｐネットワークでは、制御ネットワークは、分解されたＰ２Ｐネットワークのノードがノード、サービス、およびその他の制御情報を探索することを可能にする。したがって、ネットワークのそれぞれのノードに関して、ノードは、サブネットワークのうちのいずれかに参加する前に制御ネットワークに参加しなければならず、同様に、制御ネットワークを退去する前に、そのノードが属する（１つまたは複数の）サブネットワークのそれぞれを退去しなければならない。上で示されたように、制御ネットワークは、サブネットワークのそれぞれと同じ鍵空間を使用する。一般に、制御ネットワークは、任意のオブジェクトまたはファイルを記憶するために使用されないことになり、したがって、制御ネットワークに参加することおよび制御ネットワークを退去することに関連するオーバヘッドは比較的低い。制御ネットワークは、ノードが分解されたＰ２Ｐネットワークを介して「サービス」を探索する（例えば、特定のサブネットワークに属するノードに関してなど、特定の基準を満たすノードを探索する）ための能力を提供するのに適した任意のＰ２Ｐ技術を使用して実施され得る。一実施形態では、例えば、制御ネットワークは、Ｃｈｏｒｄネットワークとして実施される。１つのそのような実施形態では、例えば、制御ネットワークは、その全体が参照により本明細書に組み込まれている「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＬＯＣＡＴＩＮＧ  ＳＥＲＶＩＣＥＳ  ＷＩＴＨＩＮ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＮＥＴＷＯＲＫＳ」という表題の米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（整理番号第Ｃｈｕ１９−４３号（ＡＬＵ／１３０２０９））で示され、説明されるサービス位置特定機能など、サービス位置特定機能をサポートするＣｈｏｒｄネットワークとして実施される。その他のタイプのＰ２Ｐ技術がそのようなサービス位置特定機能をサポートする場合、これらのその他のタイプのＰ２Ｐ技術も制御ネットワークを実施するために使用され得る点を理解されよう。
【００５５】
上述のように、制御ネットワークは、他のノードを探索するために、サービスを探索するために、他の制御情報を取得するためになど、ならびにそれらの様々な任意の組合せを行うためにノードによって使用され得る。制御ネットワークによって可能にされる機能は、制御ネットワークの以下の例示的な使用を考慮することによって、より良好に理解されよう。
【００５６】
一例として、ノードＡがノードＢと交信することを望むと仮定するが、分解されたネットワークでは、ノードＡは、ノードＢがメンバである（１つまたは複数の）サブネットワークを知らないことになる。しかし、ノードＡは、ノードＢの（１つまたは複数の）サブネットワークを知らないが、ノードＢがアクティブな限り、ノードＢは制御ネットワークの一部になるため、ノードＡは制御ネットワーク内のノードＢの探索を開始することができる。ノードＡが制御ネットワークを使用してノードＢを位置特定した後で、ノードＡは、次いで、ノードＢと交信して、関係する交信情報および機能情報（例えば、ノードＢがメンバである（１つまたは複数の）サブネットワーク、ノードＢのＩＰアドレス、ノードＢ機能など）をノードＢから要求することが可能である。
【００５７】
一例として、ノードＡがサブネットワークＸに参加することを望むと仮定する。大部分のＰ２Ｐネットワークでは、ノードＡは、サブネットワークＸに参加するためのプロセスを開始するために、既にサブネットワークＸのメンバであるノードと交信することが必要になる。この例では、ノードＡは、サブネットワークＸのメンバである任意のノードに関する制御ネットワークを探索するためにサービス位置探索機能を使用することが可能である。次いで、ノードのうち、サブネットワークＸのメンバである１つを識別するとすぐ、ノードＡは、サブネットワークＸに参加するプロセスを開始することができる。
【００５８】
一例として、ノードＡがＰ２Ｐネットワークによって提供される特定のサービスを利用することを望むと仮定する。この例では、ノードＡは、サービスをサポートする任意のノードに関する制御ネットワークを探索するサービス位置探索機能を使用することが可能である。同様に、この例では、ノードＡは、特定のサブネットワーク内のサービスを探索するためにサービス位置探索機能を使用することが可能である。次いで、サービスの利用可能性を識別するとすぐ、ノードＡは、そのサービスに関する要求を開始することができる。
【００５９】
一例として、ノードＡが制御ネットワークに参加すると仮定する。この例では、制御ネットワークに参加した後で、ノードＡは、制御ネットワーク内のその近隣ノードとメッセージを交換することになる。（ノードＡがネットワークマップの現在のバージョンをまだ有していない場合）交換されたメッセージは、現在のネットワークマップを獲得するためにノードＡによって使用され得る。この例では、ノードＡは、次いで、分解されたネットワーク内でその他の機能を実行するために、ネットワークマップを使用することが可能である。
【００６０】
制御ネットワークの特定の例示的な使用に関して主に説明されているが、分解されたネットワークの制御ネットワークはその他の機能を実行するために使用され得る点を理解されよう。
【００６１】
分解されたＰ２Ｐネットワークでは、Ｐ２Ｐネットワークのサブネットワークへの分解は、任意の適切な分解基準に基づいてよい。例えば、Ｐ２Ｐネットワークのサブネットワークへの分解は、以下の基準の１つまたは複数に基づいてよい：すなわち、Ｐ２Ｐネットワークのノードの地理的位置、Ｐ２Ｐネットワークのノードのユーザの関心共同体など、ならびにそれらの様々な組合せである。
【００６２】
Ｐ２Ｐネットワークのノードの地理的位置に基づくＰ２Ｐネットワークの分解は、同じサブネットワークに属するノード同士の間の地理的距離を削減するかまたは最小限に抑える傾向がある形で実行される。これは、分解されたＰ２Ｐネットワークのノード同士の間で交換されたメッセージおよび情報によって横断された距離を削減するかまたは最小限に抑え（例えば、ノードがネットワークに参加および退去するとき、ハートビートメッセージ、ファイルが転送されるとき、など）、それによって、メッセージおよび情報を交換することに関連する遅延を削減し、メッセージおよび情報を交換することによって消費されるネットワークリソースを削減し、その他の利点を提供する。これらの利点は、世界中にアクティブノードを有する、ある例示的なグローバルＰ２Ｐネットワークの簡単な例を考慮することによって、より良好に理解されよう。
【００６３】
この例では、グローバルＰ２Ｐネットワークは分解されていないと仮定し、ニューヨーク市に位置特定されるＰ２Ｐのノードのうちの１つは東京に位置特定される前任を有し、シドニーに位置特定される後任を有するとさらに仮定する。この例では、ニューヨーク市内のノードがＰ２Ｐネットワークに参加するとき、およびＰ２Ｐネットワークを退去するとき、いくつかのファイル転送を含むことになる、その前任および後任と交換されたメッセージは、世界中を移動しなければならない。同様に、この例では、ニューヨーク市内のノードがその前任および後任とハートビートメッセージを交換するとき、ハートビートメッセージも世界中を移動しなければならない。同様に、この例では、ニューヨーク市内のノードから探索を実行するとき、探索メッセージが非常に長い距離を移動することができるように、次のノードは東京に位置特定されることが可能であり、次のノードは、ニューヨーク市に戻り、次のノードは南アメリカに位置特定され、以下同様である。
【００６４】
この例では、状況は、Ｐ２Ｐネットワークをサブネットワークに分解することによって改善されることが可能であり、この場合、サブネットワークのそれぞれに関して、そのサブネットワークに属するノードは、Ｐ２Ｐネットワークの他のノードに対して互いに地理的に近位である。この例では、Ｐ２Ｐネットワークは、日本に位置特定されるノードに関するサブネットワークと、ニューヨーク市領域に位置特定されるノードに関するサブネットワークとを含めて、複数のサブネットワークに分解されると仮定する。この例では、Ｐ２Ｐネットワークの分解に続いて、東京およびシドニーにその前任と後任とを有するのではなく、ニューヨーク市のノードは、その前任および後任として、ニューヨーク市内に他のノードを有することになる。同様に、この例では、Ｐ２Ｐネットワークの分解に続いて、長距離にわたって探索が実行される何らかの必要が存在する前に、探索は、（ローカルに利用可能なファイルが要求されていると仮定すると）サブネットワーク内に局在化され、かつ（この場合も、利用可能なファイルが要求されていると仮定すると）地理的に隣接するサブネットワーク内に局在化されることが可能である。このように、ニューヨーク市のノードによって交換される任意のメッセージ／情報によって横断される距離は劇的に削減される。
【００６５】
Ｐ２Ｐネットワークのノードの地理的位置に基づくＰ２Ｐネットワークの分解は、任意の適切な粒度において実行され得る。例えば、グローバルＰ２Ｐネットワークの分解は、ノードが位置特定される大陸に基づいて、ノードをサブネットワークにグループ化することによって実行され得る。例えば、国内Ｐ２Ｐネットワークの分解は、国内のノードの位置に基づいて、（例えば、合衆国東部、合衆国中部、および合衆国西部に関して３個のサブネットワークを使用して、５０の州に関して５０個のサブネットワークを使用してなど、ならびに、それらの様々な組合せを使用して）ノードをサブネットワークにグループ化することによって実行され得る。例えば、ノードがニューヨーク市内に位置特定されていることを含めて、Ｐ２Ｐネットワークの分解は、そのノードが位置特定される区に基づいて、ノードをサブネットワークにグループ化することによって実行され得る。これらの例から、ノードは、任意の適切な粒度を使用して、地理的にサブネットワークにグループ化され得る点を理解されよう。
【００６６】
特定の粒度におけるＰ２Ｐネットワークのノードの地理的位置に基づくＰ２Ｐネットワークの分解は、地理的領域内のノードの数に基づいて実行され得る。例えば、合衆国大陸をカバーするＰ２Ｐネットワークを考慮されたい。この例では、より多くのノードを有する、人口密度の高い州（例えば、ニューヨーク、カリフォルニアなど）は、それぞれ複数のサブネットワークに分解されてよく、一方で、より少ないノードを有する、人口密度がより低い州（例えば、ノースダコタ、サウスダコタなど）は、地理的位置に基づいて、組み合わされて単一のサブネットワークにされてよい。この例では、より大きな市（例えば、ニューヨーク、シカゴ、ロサンジェルスなど）のノードは、やはり組み合わされた単一のサブネットワークにされてよい。特定の粒度におけるＰ２Ｐネットワークのノードの地理的位置に基づくＰ２Ｐネットワークの分解は、任意のその他の適切な要因に基づいて実行され得る点を理解されよう。
【００６７】
複数のノードがその地理的位置に基づいて複数のサブネットワークに参加できるように、Ｐ２Ｐネットワークのノードの地理的位置に基づくＰ２Ｐの分解が実行され得る。例えば、サブネットワークの多くが個々の州と州のグループとに関して形成され、かつ人口密度の高い領域に関して追加の領域的サブネットワーク（例えば、ニューヨーク、シカゴ、ロサンジェルス、およびその他の市に関するサブネットワーク）が形成される合衆国大陸をカバーするＰ２Ｐネットワークを考慮されたい。この例では、ニュージャージのノードは、例えば、ニュージャージに関するサブネットワークとニューヨーク市に関するサブネットワークの両方に参加することが可能である。
【００６８】
上で示されたように、（地理的に互いに近いノードがサブネットワークにグループ化される）ノードの地理的位置に基づくＰ２Ｐネットワークの分解は、ネットワークリソース使用の改善、パフォーマンスの改善などを含めて、多くの利点を提供する。この場合、ノード同士の間で交換されるハートビートメッセージは、それぞれのサブネットワーク内に残る。同様に、この場合、地理的に遠隔なサブネットワークにおいてファイルを探索するとき、初期の探索メッセージだけがローカルサブネットワークから遠隔のサブネットワークに比較的長い地理的距離を横断しなければならず、すべての後続の探索メッセージは、遠隔サブネットワーク内に残ることになる。同様に、この場合、ノードがサブネットワークに参加するとき、またはノードがサブネットワークを退去するとき、その参加または退去の結果として生じるファイル転送は、サブネットワーク内のノード同士の間である。これらの機能のそれぞれに関して、関連するメッセージ／ファイルは、通常なら、ネットワークの分解前に可能になる距離よりも比較的より短い地理的距離を横断する。
【００６９】
Ｐ２Ｐネットワークのノードのユーザの関心共同体に基づくＰ２Ｐネットワークの分解は、（やはり、任意の適切な粒度においてであってよい）任意の適切な関心共同体に基づいて実行され得る。例えば、大学のＰ２Ｐネットワークは、専門学部／専門領域の関心（例えば、数理学部に関する１つのサブネットワーク、物理学部に関する１つのサブネットワークなど）に基づいて、サブネットワークに分解され得る。例えば、音楽のＰ２Ｐネットワークは、（例えば、ブルースミュージックに関する１つのサブネットワーク、カントリーミュージックに関する１つのサブネットワークなど）音楽のタイプに基づいて、サブネットワークに分解され得る。
【００７０】
本明細書で説明されるように、Ｐ２Ｐネットワークは、そのような分解基準の組合せを使用して分解されることも可能である。例えば、学問情報を交換するための国内Ｐ２Ｐネットワークは、その国内の大学のそれぞれに関するサブネットワークに分解されることが可能であり、１つまたは複数の大学サブネットワークは、その大学の専門学部のそれぞれに関して関連するサブネットワークにさらに分解され得る。例えば、図書館の書籍を交換するための州Ｐ２Ｐネットワークは、その州内の郡のそれぞれに関するサブネットワークに分解されることが可能であり、１つまたは複数の郡サブネットワークは、その郡内に位置特定される図書館のそれぞれに関して関連するサブネットワークにさらに分解され得る。これらの例から、Ｐ２Ｐネットワークは、分解基準の任意の組合せに基づいて、任意の数の階層レベルで任意の数のサブネットワークに分解され得る点を理解されよう。
【００７１】
本明細書では、２つの階層レベルを有する分解されたＰ２Ｐネットワークを形成するためのＰ２Ｐネットワークの分解に関して主に示され、説明されているが、サブネットワークのうちの１つまたは複数は、Ｐ２Ｐネットワークが任意の適切な数の階層レベルを有する任意の適切な構成に分解され得るように、関連するサブネットワークなどにさらに分解されることが可能である点を理解されよう。
【００７２】
分解されたＰ２Ｐネットワークを形成するためのＰ２Ｐネットワークの分解は、図２の分解されたＣｈｏｒｄネットワーク２００を形成するための、図１のＣｈｏｒｄネットワーク１００の分解を考慮することによってより良好に理解されよう。
【００７３】
図２に示されるように、図２の制御ネットワーク２０２は、図１のＣｈｏｒｄネットワーク１００のアクティブノードのすべてが図２の制御ネットワーク２０２にも属するという点で、図１のＣｈｏｒｄネットワーク１００と同一である。
【００７４】
図２に示されるように、分解されたＣｈｏｒｄネットワーク２００は、３つのサブネットワークを含む。サブネットワーク２０４は、分解されたＣｈｏｒｄネットワーク２００に関するネットワークマップ内で指定されるように、サブネットワーク２０４に関連するサブネットワーク指標をそれぞれ有する。図２では、分かりやすくするために、ネットワーク指標は、２ビットフィールドであり、さらに、分解されたＣｈｏｒｄネットワーク２００に関するネットワークマップは、以下の表２に示されるように構成されると仮定する。
【表２】
0005551270.tif 000003
【００７５】
図１に示されるように、Ｃｈｏｒｄネットワーク１００の６４個のノードのうち３６個（すなわち、ノード０、２−３、５−７、９、１２−１３、１６−２４、２６、２９−３０、３２、３４−３５、３７、４１、４３、４５、４９、５１、５３−５４、５６−５８、および６２）はアクティブであり、残りのノードは非アクティブである。
【００７６】
図２に示されるように、Ｃｈｏｒｄネットワーク１００の３６個のアクティブノードのそれぞれは、分解されたＣｈｏｒｄネットワーク２００の制御ネットワーク２０２のメンバであり、Ｃｈｏｒｄネットワーク１００の３６個のアクティブノードのサブセットは、それぞれ、サブネットワーク２０４１、２０４２、および２０４３のメンバである。
【００７７】
分解されたＣｈｏｒｄネットワーク２００では、ノード０、６、７、１３、１６、２０、２１、２４、２９、３５、４３、５３、５６、および５８はサブネットワーク２０４１内のアクティブノードであり、ノード３、７、１２、１６、１９、２１、２２、２３、３２、３７、４５、５１、５３、５７、および６２は、サブネットワーク２０４２内のアクティブノードであり、ノード２、５、９、１２、１６、１７、１８、１９、２６、２９、３０、３４、４１、４５、４９、５４、５６、および５８は、サブネットワーク２０４３内のアクティブノードである。
【００７８】
分解されたＣｈｏｒｄネットワーク２００では、制御ネットワーク２０２のアクティブノードのうち１０個がサブネットワーク２０４のうちの２つのメンバである：すなわち、ノード７、２１、および５３は、サブネットワーク２０４１および２０４２の両方のメンバであり、ノード１２、１９、および４５は、サブネットワーク２０４２および２０４３の両方のメンバであり、ノード２９、３０、５６、および５８は、サブネットワーク２０４１および２０４３の両方のメンバである。
【００７９】
分解されたＣｈｏｒｄネットワーク２００では、制御ネットワーク２０２のアクティブノードのうちの１つは、３つのサブネットワーク２０４のそれぞれのメンバ、すなわち、ノード１６である。
【００８０】
分解されたＰ２Ｐネットワークの動作は、分解されたＰ２Ｐネットワーク内で機能（例えば、ファイルの記憶、ファイルの検査など）を実行するための方法の様々な実施形態を説明する図３−図９に関してより良好に理解されよう。
【００８１】
図３は、ファイルを分解されたＰ２Ｐネットワーク内に記憶させる際にノードによって使用するための方法の一実施形態を示す。
【００８２】
ステップ３０２において、方法３００が開始する。
【００８３】
ステップ３０４において、ファイルのサブネットワーク指標が計算される。ファイルのサブネットワーク指標は、ハッシュ関数を使用して、ファイルの識別子（例えば、ファイル名またはその他の適切なファイル識別子）をハッシュすることによって計算される。このハッシュ関数は、ファイルのサブネットワーク指標がｇ（ファイル名）として判断されるようなサブネットワーク指標ハッシュ関数であってよい。このハッシュ関数は、ファイルのサブネットワーク指標がｈ（ファイル名）の結果のＫ個の最上位ビットによって表されるように、完全ハッシュであってよく、この場合、ファイルのファイルＩＤは、ｈ（ファイル名）の結果のＭ個の最下位ビットによって表される。
【００８４】
ステップ３０６において、ファイルのサブネットワーク指標に関連する（１つまたは複数の）サブネットワークが識別される。サブネットワーク指標に関連する（１つまたは複数の）サブネットワークは、分解されたＰ２Ｐネットワークのネットワークマップを使用して識別され得る。識別された（１つまたは複数の）サブネットワークは、ファイルが記憶されるべき（１つまたは複数の）サブネットワークである。
【００８５】
ステップ３０８において、（１つまたは複数の）識別されたサブネットワークに関連する（１つまたは複数の）アクティブノードが識別される。一実施形態では、サブネットワーク指標に関連する１つまたは複数のサブネットワークのそれぞれに関して、サブネットワークの１つまたは複数のアクティブノードが識別される。
【００８６】
サブネットワークのアクティブノードは、任意の適切な形で識別される。
【００８７】
一実施形態では、サブネットワークのアクティブノードは、方法３００を実行して、ノード内にローカルに記憶された情報を使用して判断され得る。
【００８８】
一実施形態では、サブネットワークのアクティブノードは、分解されたＰ２Ｐネットワークの制御ネットワークを使用して、サブネットワークのアクティブノードを探索することによって識別され得る。１つのそのような実施形態では、サブネットワークのアクティブノードの探索は、その全体が参照により本明細書に組み込まれている「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＬＯＣＡＴＩＮＧ  ＳＥＲＶＩＣＥＳ  ＷＩＴＨＩＮ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＮＥＴＷＯＲＫＳ」という表題の米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（整理番号第Ｃｈｕ１９−４３号（ＡＬＵ／１３０２０９）で示され、説明されるサービス位置特定機能など、サービス位置特定機能を使用して実行され得る。
【００８９】
ステップ３１０において、ファイルを識別されたサブネットワークのそれぞれの中に記憶させるためのプロセスが開始される。このプロセスは、ファイルを識別されたサブネットワークのそれぞれに記憶させるのに適した任意のプロセスであってよい。このプロセスは、分解されたＰ２Ｐネットワークにおいて使用する際にＰ２Ｐ技術によって指定されるような通常のファイル記憶プロセスであってよい。
【００９０】
ステップ３１２において、オプションのステップ、すなわち、ファイルをノードのローカルサブネットワーク内（または、ノードが分解されたＰ２Ｐネットワークの複数のサブネットワークに属する場合、ノードの複数のローカルサブネットワーク内）に記憶させるためのプロセスが開始される。
【００９１】
一実施形態では、そうすることが必要である場合、またはそうすることが望ましい場合、ノードは、ファイルをローカルサブネットワーク内に記憶することが可能である。例えば、ファイルがローカルサブネットワークに関係する情報を含む場合、ファイルがローカルサブネットワークのメンバによって頻繁に取り出される需要があるファイルである場合（例えば、ローカルサブネットワークのノードが地理的に互いと近いようにそれらの領域が組織される場合、ローカルサブネットワークからファイルを取り出すことは遠隔のサブネットワークからファイルを取り出すよりも、より効率的である）など、ならびにそれらの様々な組合せの場合、ノードは、ファイルをローカルサブネットワーク内に記憶することが可能である。
【００９２】
一実施形態では、ノードにそうする特権が与えられている場合、ノードは、ファイルをローカルサブネットワーク内だけに記憶することが可能である。ファイルをローカルサブネットワーク内だけに記憶する特権がノードに与えられているかどうかに関する判断は、任意の適切な形で実行され得る。１つのそのような実施形態では、例えば、ノードがＰ２Ｐネットワークに参加するとき、ユーザを認証するために公開鍵システムが使用され得る（すなわち、公開鍵システムでは、それぞれのユーザに、そのユーザを識別するために使用され得るデジタル証明書が割り当てられ、その証明書は、そのユーザがファイルをローカルサブネットワークに記憶する特権を有するかどうかを示すために使用され得る）。
【００９３】
ステップ３１４において、方法３００は終了する。
【００９４】
ファイルを分解されたＰ２Ｐネットワーク内に記憶させるための方法を説明する際に分かりやすくするために、図３の方法３００から省略されているが、一実施形態では、分解されたＰ２Ｐネットワーク内のファイルの管理を円滑にするために、分解されたＰ２Ｐネットワーク内のファイルの管理を円滑にする際に使用するために、論理コンパニオン（ｌｏｇｉｃａｌ  ｃｏｍｐａｎｉｏｎ）として、ファイル管理情報がファイルに提供され得る。このファイル管理情報は、ファイル内に含まれてよく、かつ／またはそのファイルに関連する別個のファイル／メッセージとして提供されてもよい。ファイルに関するファイル管理情報は、分解されたＰ２Ｐネットワーク内のファイルの管理を円滑にする際に使用するのに適した任意の情報を含むことが可能である。一実施形態では、例えば、ファイルに関するファイル管理情報は、（１）分解されたＰ２Ｐネットワーク内へのファイルの記憶を開始する記憶ノードの識別、および／または分解されたＰ２Ｐネットワーク内のファイルの存在を管理することを望んでいる（１つもしくは複数のサブネットワークに関連する）（集合的に、ファイルに関するシード処理ノード（ｓｅｅｄｉｎｇ  ｎｏｄｅｓ）と呼ばれる場合がある）１つもしく複数の他のノードの識別、（２）ファイルが初めてサブネットワーク内に記憶された時間、（３）個々のサブネットワーク内および／または全体として分解されたネットワーク内でのファイルの失効を可能にするためのタイムスタンプ（例えば、タイムスタンプの失効時に、記憶ノードは、（１つまたは複数の）シード処理ノードに関連する（１つまたは複数の）サブネットワークがファイルを記憶し続けるべきであるかどうかに関して（１つまたは複数の）シード処理ノードに相談することになる、シード処理ノードからの応答が否定的な場合、ファイルはシード処理ノードのサブネットワークから削除され、シード処理ノードからの応答が肯定的な場合、タイムスタンプは更新され得る）、（４）個々のサブネットワークから、および／または全体として分解されたＰ２Ｐネットワークからのファイルの知的除去を可能にするためのカウンタ（例えば、この場合、カウンタは、過去ｎ日にわたって、そのファイルが取り出された回数を記録する、この場合、その取出しの頻度が一定のしきい値未満である場合、記憶ノードは、（１つまたは複数の）シード処理ノードの（１つまたは複数の）ローカルサブネットワークがそのファイルを記憶し続けるべきかどうかを確認するために、（１つまたは複数の）シード処理ノードに相談することになる）など、ならびにそれらの様々な組合せのうちの１つまたは複数を含む。ファイル管理情報は、個々のサブネットワーク内および／または全体として分解されたＰ２Ｐネットワーク内でファイル管理機能を実行する際に使用するのに適した任意のその他の情報を含むことが可能である点を理解されよう。
【００９５】
本明細書では、連続的に実行されているとして主に示され、説明されているが、方法３００のステップの少なくとも一部は、同時に実行されてよく、または図３に関して示され、説明されるのと異なる順序で実行されてもよい。本明細書では、分解されたＰ２Ｐネットワーク内にファイルを記憶するためのプロセス論理の特定の実装形態に関して示され、説明されているが、分解されたＰ２Ｐネットワーク内にファイルを記憶するためのプロセス論理は、Ｐ２Ｐネットワーク分解機能を依然としてサポートしながら、様々な他の形で実施され得る点を理解されよう。
【００９６】
図４は、分解されたＰ２Ｐネットワーク内に記憶されたファイルを位置特定する際にノードによって使用するための方法の一実施形態を示す。
【００９７】
ステップ４０２において、方法４００が開始する。
【００９８】
ステップ４０４において、ファイルのサブネットワーク指標が計算される。ファイルのサブネットワーク指標は、ハッシュ関数を使用して、ファイルの識別子（例えば、ファイル名またはその他の適切なファイル識別子）をハッシュすることによって計算される。このハッシュ関数は、ファイルのサブネットワーク指標がｇ（ファイル名）として判断されるようなサブネットワーク指標ハッシュ関数であってよい。このハッシュ関数は、ファイルのサブネットワーク指標がｈ（ファイル名）の結果のＫ個の最上位ビットによって表されるように、完全ハッシュであってよく、この場合、ファイルのファイルＩＤは、ｈ（ファイル名）の結果のＭ個の最下位ビットによって表される。
【００９９】
ステップ４０６において、ファイルのサブネットワーク指標に関連する（１つまたは複数の）サブネットワークが識別される。サブネットワーク指標に関連する（１つまたは複数の）サブネットワークは、分解されたＰ２Ｐネットワークのネットワークマップを使用して識別され得る。識別された（１つまたは複数の）サブネットワークは、ファイルが記憶されている（１つまたは複数の）サブネットワークである。ファイルが複数のサブネットワーク内に記憶されている場合、（例えば、ノードが、ファイルを記憶しているサブネットワークのうちの１つの中のファイルを検査することになるか、それらのうちのいくつかの中のファイルを探索することになるか、またはそれらのすべての中のファイルを探索することになるかに応じて）それらのサブネットワークのうちの１つまたは複数は、サブネットワーク指標を使用して識別され得る。
【０１００】
ステップ４０８において、オプションのステップ、すなわち、サブネットワーク指標を使用して、複数のサブネットワークが識別されるとき（すなわち、ファイルが複数のサブネットワーク内に記憶されているとき）、そのファイル関して探索されることになる（１つまたは複数の）サブネットワークとして、識別されたサブネットワークのうちの１つまたは複数が選択される。
【０１０１】
ステップ４１０において、識別された（かつ、オプションで、選択された）（１つまたは複数の）サブネットワークに関連する（１つまたは複数の）アクティブノードが識別される。一実施形態では、サブネットワーク指標を使用して識別された（かつ、オプションで、識別されたサブネットワークの中から選択された）１つまたは複数のサブネットワークのそれぞれに関して、サブネットワークの１つまたは複数のアクティブノードが識別される。
【０１０２】
サブネットワークのアクティブノードは、任意の適切な形で識別され得る。
【０１０３】
一実施形態では、サブネットワークのアクティブノードは、方法４００を実行して、ノード内にローカルに記憶された情報を使用して判断され得る。
【０１０４】
一実施形態では、サブネットワークのアクティブノードは、分解されたＰ２Ｐネットワークの制御ネットワークを使用して、サブネットワークのアクティブノードを探索することによって識別され得る。１つのそのような実施形態では、サブネットワークのアクティブノードの探索は、その全体が参照により本明細書に組み込まれている「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＬＯＣＡＴＩＮＧ  ＳＥＲＶＩＣＥＳ  ＷＩＴＨＩＮ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＮＥＴＷＯＲＫＳ」という表題の米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（整理番号第Ｃｈｕ１９−４３号（ＡＬＵ／１３０２０９））で示され、説明されるサービス位置特定機能など、サービス位置特定機能を使用して実行され得る。
【０１０５】
ステップ４１２において、（１つまたは複数の）アクティブノードが識別されるそれぞれの（１つまたは複数の）サブネットワーク内のファイルを探索するためのプロセスが開始される。このプロセスは、そのノードがメンバでないＰ２Ｐネットワーク内のファイルを探索するのに適した任意のプロセスであってよい。ノードは、（１つまたは複数の）アクティブノードが、分解されたＰ２Ｐネットワークにおいて使用する際にＰ２Ｐ技術によって指定されたような通常のファイル探索プロセスを使用して、そのサブネットワーク内のファイルを探索することを要求するために、（１つまたは複数の）アクティブノードと交信することが可能である。サブネットワーク内のファイルの探索は、ファイル識別子をハッシュすることによって判断されるように、ファイルのファイルＩＤを使用して実行され得る。
【０１０６】
ステップ４１４において、方法４００は終了する。
【０１０７】
分かりやすくするために省略されているが、一実施形態では、識別されたサブネットワーク内でファイルを検査することに加えて、ノードは、その（１つまたは複数の）ローカルサブネットワーク内のファイルを探索することも可能である。
【０１０８】
（分かりやすくするために）終了として示され、説明されているが、方法４００の実行が、結果として、ノードによる１つまたは複数のファイル探索要求メッセージの開始をもたらす場合、ノードは、ファイルを記憶しているノードを位置特定するとすぐ、ファイルを記憶しているノードに対してそのファイルの要求を開始することと、そのファイルを記憶しているノードからそのファイルを受信することとを含めて、ノードによって開始されたファイル探索要求をサポートする処理を実行し続けることが可能である。
【０１０９】
本明細書では、連続的に実行されているとして主に示され、説明されているが、方法４００の少なくとも一部は、同時に、または図４に関して示され、説明されるのとは異なる順序で実行されてよい。分解されたＰ２Ｐネットワーク内のファイルを探索するためのプロセス論理の特定の実装形態に関して示され、説明されているが、分解されたＰ２Ｐネットワーク内のファイルを探索するためのプロセス論理は、Ｐ２Ｐネットワーク分解機能を依然としてサポートしながら、様々な他の形で実施され得る点を理解されよう。
【０１１０】
別個のプロセスとして主に示され、説明されているが、（図３に示されるような）ファイルを分解されたＰ２Ｐネットワーク内に記憶させる際にノードによって使用するためのプロセス、および（図４に示されるような）分解されたＰ２Ｐネットワーク内に記憶されたファイルを位置特定する際にノードによって使用するためのプロセスは、それらの２つのプロセスが、以下のステップが実行される単一の方法を使用して実施され得るように、類似のステップを含む点を理解されよう。すなわち、ファイルのサブネットワーク指標を計算するステップ、ファイルのサブネットワーク指標に関連するサブネットワークのうちのの１つ（または複数）のサブネットワークを識別するステップ、サブネットワークのうちの識別された１つ（または複数）のアクティブノードを識別するステップ、および分解されたＰ２Ｐネットワーク内でファイルを管理するためにアクティブノードを使用するためのプロセスを開始するステップであって、この場合、ファイルを管理するためにアクティブノードを使用するためのプロセスが、ファイルをネットワーク内に記憶させるためのプロセス、またはネットワーク内のファイルを位置特定するためのプロセスであってよい、開始するステップ、である。
【０１１１】
一実施形態では、分解されたＰ２Ｐネットワークのサブネットワークに参加するために、ノードは、まず、分解されたＰ２Ｐネットワークの制御ネットワークに参加しなければならない。ノードが分解されたＰ２Ｐネットワークのサブネットワークに開始するのを可能にするための一実施形態による方法が、図５に関して示され、説明される。
【０１１２】
図５は、分解されたＰ２Ｐネットワークのサブネットワークに参加する際にノードによって使用するための方法の一実施形態を示す。
【０１１３】
ステップ５０２において、方法５００が開始する。
【０１１４】
ステップ５０４において、ノードは、分解されたＰ２Ｐネットワークの制御ネットワークに参加するための要求を開始する。制御ネットワークに参加するための要求は、Ｐ２Ｐネットワークに参加するための標準プロセスを使用することを含めて、任意の適切な形で開始され得る。
【０１１５】
ステップ５０６において、ノードは、参加されることになる１つまたは複数のサブネットワークを判断する。
【０１１６】
ノードは、参加されることになる（１つまたは複数の）サブネットワークを任意の適切な形で判断することが可能である。一実施形態では、ノードが参加できるか、またはノードが参加すべき（１つもしくは複数の）サブネットワークがノード上で利用可能である（例えば、ノードに関して管理者によって構成される）。一実施形態では、情報に関して別のデバイス（例えば、分解されたＰ２Ｐネットワークの制御ネットワーク、ウェブサーバなど）に問い合わせることによって、ノードが参加できるか、または参加すべき（１つもしくは複数の）サブネットワークがノードによって取得される。ノードは、参加されることになる（１つまたは複数の）サブネットワークを任意のその他の形で判断することが可能である。
【０１１７】
一実施形態では、ノードが参加できるか、または参加すべき（１つもしくは複数の）サブネットワークは、分解されたＰ２Ｐネットワークのネットワークマップから判断される。この実施形態では、ネットワークマップは、（例えば、ノードに関してネットワークマップが管理者によって構成されている場合）ノードに関して利用可能であり得るか、または任意の適切な形でノードによって取得され得る。一実施形態では、例えば、ノードが制御ネットワークに参加するとき、ノードは、制御ネットワーク内でその前任および後任とメッセージを交換することになり、ネットワークマップは、交換された情報の一部として含まれることが可能である。一実施形態では、例えば、ノードは、（例えば、その全体が参照により本明細書に組み込まれている「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＬＯＣＡＴＩＮＧ  ＳＥＲＶＩＣＥＳ  ＷＩＴＨＩＮ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＮＥＴＷＯＲＫＳ」という表題の米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（整理番号第Ｃｈｕ１９−４３号（ＡＬＵ／１３０２０９））で示され、説明されるサービス位置特定機能など、サービス位置特定機能を使用して）利用可能なネットワークマップを有する制御ネットワークの（１つまたは複数の）アクティブノードを探索することができる。一実施形態では、例えば、ノードは、（例えば、ウェブサーバからネットワークマップを取り出すなど）ウェブ技術を使用して、ネットワークマップを取得することが可能である。ノードは、任意のその他の適切な形で、ネットワークマップを取得することが可能である。
【０１１８】
ノードがネットワークマップから参加され得るかまたは参加されるべき（１つもしくは複数の）サブネットワークを判断する一実施形態では、ネットワークマップは、参加され得るかまたは参加されるべき（１つもしくは複数の）サブネットワークを判断する際にノードによって使用するのに適した情報を用いて符号化され得る。この実施形態では、ネットワークマップは、任意の適切な情報を用いて、任意の適切な形で符号化され得る。
【０１１９】
一実施形態では、参加され得るかまたは参加されるべき（１つもしくは複数の）サブネットワークを判断する際にノードによって使用するのに適した情報は、Ｐ２Ｐネットワークの分解が基づく分解基準のタイプ（例えば、地理的位置、関心共同体など、ならびにそれらの様々な組合せ）に依存し得る。
【０１２０】
異なるタイプのそのような情報、すなわち、参加され得るかまたは参加されるべき（１つもしくは複数の）サブネットワークを判断する際にノードによって使用するのに適した情報の例の記述が続く。
【０１２１】
一実施形態では、例えば、それぞれのサブネットワークの名称は、ノードが適切な（１つもしくは複数の）サブネットワークを自動的に選択するためにサブネットワーク名を解析できるように、かつ／またはユーザが適切な（１つもしくは複数の）サブネットワークを選択することを可能にするためにサブネットワーク名がノードに表示され得るように、地理的情報を用いて符号化され得る。例えば、サブネットワークは、ニューヨーク領域ネットワーク、またはニュージャージ領域ネットワークなどと名付けられることが可能である。
【０１２２】
一実施形態では、例えば、サブネットワークのそれぞれは、ノードの地理的位置がサブネットワークの地理的サービスエリア内に包含される場合、ノードが（１つまたは複数の）サブネットワークに参加することになるように、そのサブネットワークに関連する地理的サービスエリア情報を有することが可能である。地理的サービスエリア情報は、任意の適切な手段（例えば、経度および緯度、長方形の四隅、または任意のその他の適切な手段）を使用して指定され得る。異なるサブネットワークの地理的サービスエリアは、領域のいずれも重複しないように、領域の一部が重複し、その他の領域は重複しないように、領域のすべてが何らかのレベルの重複を有するようになどに設定されてよい。ノードの地理的位置が複数のサブネットワークの地理的サービスエリアに包含される場合、ノードは、関連するサブネットワークのうちの１つに参加することが可能であり、それらのうちのいくつかに参加することが可能であり、またはそれらのすべてに参加することも可能である。ノードの地理的位置は、（例えば、ユーザインプット、ネットワーク測定情報、ＧＰＳなど）任意の適切な形で判断され得る。
【０１２３】
一実施形態では、例えば、サブネットワークのそれぞれは、ノードがノードの地理的位置から（１つまたは複数の）サブネットワークの（１つまたは複数の）地理的中心までの（１つまたは複数の）距離に基づいて、（１つまたは複数の）サブネットワークに参加することになるように、そのサブネットワークに関連する地理的中心を有し得る。この地理的中心は、（例えば、緯度および経度を使用して）任意の適切な形で指定され得る。ノードの地理的位置は、（例えば、ユーザインプット、ネットワーク測定情報、ＧＰＳなど）任意の適切な形で判断され得る。例えば、ノードは、ノードの地理的位置からサブネットワークのそれぞれの地理的中心までの距離を判断し、次いで、その判断された距離に基づいて、最も近いサブネットワークのうちの１つまたは複数を選択することが可能である。例えば、関連する距離がしいき値を満たす（１つまたは複数の）サブネットワークを見出すまで、ノードは、ノードの地理的距離からサブネットワークの地理的中心までの距離を連続的に判断することが可能である。
【０１２４】
一実施形態では、例えば、サブネットワークのそれぞれは、ノードのＩＰアドレスがサブネットワークに関連するＩＰアドレスプレフィックスのうちのいずれかの中に含まれている場合、ノードが（１つまたは複数の）サブネットワークに参加することになるように、そのサブネットワークに関連するいくつかのＩＰアドレスプレフィックスを有し得る。例えば、ＩＰｖ４プリフィックス１３２．２２２．ｘ．ｙに対するサブネットワーク１のマッピング、ＩＰｖ４プリフィックス１３３．２２２．ｘ．ｙに対するサブネットワーク２のマッピングなど。
【０１２５】
一実施形態では、例えば、ノードが適切な（１つもしくは複数の）サブネットワークを自動的に選択するためのサブネットワーク名を解析できるように、かつ／またはユーザが適切な（１つもしくは複数の）サブネットワークを選択することを可能にするために、サブネットワーク名がノードに表示され得るように、それぞれのサブネットワークの名称は、コンテンツタイプ情報を用いて符号化され得る。例えば、サブネットワークは、ｒｕｔｇｅｒｓ−ｐｈｙｓｉｃｓ−ｎｅｔｗｏｒｋ、ｒｕｔｇｅｒｓ−ｂｉｏｌｏｇｙ−ｎｅｔｗｏｒｋなどを名付けられることが可能である。
【０１２６】
参加され得るかまたは参加されるべき（１つもしくは複数の）サブネットワークを判断する際にノードによって使用するのに適した、異なるタイプの情報の特定の例が上で提供されているが、任意のその他の適切な情報が使用され得る点を理解されよう。
【０１２７】
参加され得るかまたは参加されるべき（１つもしくは複数の）サブネットワークを判断する際にノードによって使用するのに適した情報のタイプに関して上で提供された例は、そのような情報を相互排他的な形で使用することを主に説明しているが、そのような情報の任意の適切な組合せもノードが参加され得るかまたは参加されるべき（１つもしくは複数の）サブネットワークを判断するのを可能にするために使用され得る点を理解されよう。
【０１２８】
ステップ５０８において、ノードは、参加されることになる（１つまたは複数の）サブネットワークに参加するための（１つまたは複数の）要求を開始する。サブネットワークに参加するための要求は、Ｐ２Ｐネットワークに参加するための標準プロセスを使用することを含めて、任意の適切な形で開始され得る。
【０１２９】
ステップ５１０において、方法５００は終了する。
【０１３０】
分かりやすくするために省略されているが、ノードは、ノードが制御ネットワークに参加したかどうかを決定するステップを実行することも可能である点を理解されよう。一実施形態では、例えば、（例えば、制御ネットワークから取得された情報を使用して、どの（１つまたは複数の）サブネットワークに参加すべきかを判断する場合）ノードは、ステップ５０４からステップ５０６に進む前に、そのノードが制御ネットワークに成功裏に参加したことを確実にすることが可能である。一実施形態では、例えば、（例えば、ノードが、制御ネットワーク以外のソースから取得された情報を使用してどの（１つまたは複数の）サブネットワークに参加すべきかを判断する場合）ノードは、ステップ５０６からステップ５０８に進む前に、そのノードが制御ネットワークに成功裏に参加したことを確実にすることが可能である。そのような実施形態では、ノードは、（１つまたは複数の）サブネットワークに参加するための（１つまたは複数の）要求を開始する前に、そのノードが制御ネットワークに成功裏に参加したことを確実にする。
【０１３１】
分解されたＰ２Ｐネットワークに参加するためのプロセス論理の特定の実装形態に関して主に示され、説明されているが、分解されたＰ２Ｐネットワークに参加するためのプロセス論理は、Ｐ２Ｐネットワーク分解機能を依然としてサポートしながら、様々なその他の形で実施され得る点を理解されよう。
【０１３２】
分解されたＰ２Ｐネットワークに参加しているノードの観点から書かれているが、関連する処理は、ノードが制御ネットワークに参加するのを可能にするために制御ネットワークの１つまたは複数のノードによって実行されることが可能であり、同様に、ノードが（１つまたは複数の）サブネットワークに参加するのを可能にするためにノードによって参加される（１つまたは複数の）サブネットワークの１つまたは複数のノードによって実行されることも可能である点を理解されよう。
【０１３３】
図６は、分解されたＰ２Ｐネットワークを退去する際にノードによって使用するための方法の一実施形態を示す。
【０１３４】
ステップ６０２において、方法６００が開始する。
【０１３５】
ステップ６０４において、ノードは、分解されたＰ２Ｐネットワークの（１つまたは複数の）それぞれのサブネットワーク（すなわち、ノードが現在メンバであるサブネットワークのそれぞれ）を退去するための（１つまたは複数の）要求を開始する。サブネットワークを退去するための要求は、Ｐ２Ｐネットワークを退去するための標準プロセスを使用することを含めて、任意の適切な形で開始され得る。
【０１３６】
ステップ６０６において、ノードが分解されたＰ２Ｐネットワークのサブネットワークのうちのいずれかのメンバであるかどうかに関して判断が下される。ノードが、依然として、分解されたＰ２Ｐネットワークのサブネットワークのうちのいずれかのメンバである場合、方法６００は、ステップ６０６に戻る。ノードがもはや分解されたＰ２Ｐネットワークのサブネットワークのうちのいずれかのメンバでない場合、方法６００は、ステップ６０８に進む。
【０１３７】
ステップ６０８において、ノードは、分解されたＰ２Ｐネットワークの制御ネットワークを退去するための要求を開始する。制御ネットワークを退去するための要求は、Ｐ２Ｐネットワークを退去するための標準プロセスを使用することを含めて、任意の適切な形で開始され得る。
【０１３８】
ステップ６１０において、方法６００は終了する。
【０１３９】
分解されたＰ２Ｐネットワークを退去するためのプロセス論理の特定の実装形態に関して主に示され、説明されているが、分解されたＰ２Ｐネットワークを退去するためのプロセス論理は、Ｐ２Ｐネットワーク分解機能を依然としてサポートしながら、様々なその他の形で実装され得る点を理解されよう。
【０１４０】
本明細書で説明されるように、分解されたＰ２Ｐネットワークのネットワークマップは、分解されたＰ２Ｐネットワークの参加、分解されたＰ２Ｐネットワーク内のファイルの記録、分解されたＰ２Ｐネットワーク内のファイルの探索、および分解されたＰ２Ｐネットワークに関連する類似の機能を円滑にする。いくつかの実装形態では、ネットワークマップは比較的に静的である可能性があり、一方、他の実装形態では、ネットワークマップはより動的である可能性があるが、ネットワークマップが変更され得る頻度にかかわらず、ネットワークマップの情報の少なくとも一部が修正され得る時間が存在し得る。
【０１４１】
ネットワークマップが変更され得る、そのような実装形態では、ネットワークマップは、ネットワークマップに対する修正を管理する際に使用するのに適した情報を含むことも可能である。ネットワークマップに対する修正を管理する際に使用するのに適した情報は、以下のうちの１つまたは複数など、この目的に適した任意の情報を含むことが可能である。すなわち、ネットワークマップの名称、ネットワークマップのバージョン番号、ネットワークマップの現在のバージョンが作成された時を示す作成タイムスタンプ、ネットワークマップの（１つまたは複数の）ネットワーク管理者の管理者識別、ネットワークマップの（１つまたは複数の）ネットワーク管理者のデジタル署名、ネットワークマップの任意の無許可の修正を検出する際に使用するためのメッセージダイジェストなど、ならびにそれらの様々な組合せ、である。
【０１４２】
一般に、ネットワークマップが変更されるとき、ネットワークマップを変更することによって引き起こされる可能性がある途絶（ｄｉｓｒｕｐｔｉｏｎ）を最小限に抑えるために、合理的な期間にわたって遷移が発生すべきである。ネットワークマップが変更され得るそのような実装形態では、ネットワークマップを変更することによって引き起こされる可能性がある、分解されたＰ２Ｐネットワークに対する途絶を最小限に抑えるために、ネットワークマップは、本明細書で遷移時間間隔と呼ばれる時間間隔値を含むことも可能である。この遷移時間間隔は、分解されたＰ２Ｐネットワークに対する途絶を最小限に抑えるような形でネットワークマップを動的に修正するために使用され得る。
【０１４３】
一実施形態では、ネットワークマップの遷移時間間隔は、以下のように、分解されたＰ２Ｐネットワークに対する途絶を最小限に抑えるためにノードによって使用され得る。ノードは、更新メッセージを受信する。ノードは、ネットワークマップが変更されているかどうかを判断するために、更新メッセージ内のネットワークマップのバージョン番号を（例えば、ノードにおいて受信された最後の更新メッセージからの）ノード上でローカルに記憶されたネットワークマップのバージョン番号と比較する。ノードが、ネットワークマップが変更されたことを検出するとき、ノードは、現在の時間をネットワークマップの現在の（変更された）バージョンが作成された時を示す作成タイムスタンプと比較する。現在の時間と作成時間との間の差異が遷移時間間隔を超える場合、これは、ネットワークがネットワークマップに対する変更からすでに安定化していること、したがって、ノードはできるだけ早く任意の必要とされる変更を実行すべきであることを示す。現在の時間と作成時間との差異が遷移時間間隔未満である場合、これは、ネットワークマップに対する変更により、ネットワークが遷移期間にあること（または、遷移期間にある可能性が高いこと）、したがって、ノードは任意の必要とされる変更を実行するまで待機すべきであることを示す。ノードは、任意の必要とされる変更を実行するまで、（例えば、事前に判断された期間、任意の期間など）任意の適切な期間待機することができる。このように、ネットワークマップに対する変更に起因する分解されたＰ２Ｐネットワークに対する途絶は、削減されることが可能であり、最小限に抑えることすら可能である。
【０１４４】
この遷移時間間隔は、ネットワーク内のノードの数と、ネットワークマップに対する変更によって影響を受けることになるか、または当該変更によって影響を受けることが予測されるノードの数もしくは割合とに依存し得る、任意の適切な形で設定されてよい。
【０１４５】
上で示されたように、ネットワークマップを変更する際の課題のうちの１つは、ネットワークマップを変更する結果として分解されたＰ２Ｐネットワーク内で引き起こされる途絶の量を最小限に抑えるか、または少なくとも削減することである。この文脈で、分解されたＰ２Ｐネットワークの途絶は、分解されたＰ２Ｐネットワーク内に記憶されたファイルの損失、Ｐ２Ｐネットワークのノード同士の間の（例えば、サブネットワーク内の、および／またはサブネットワーク同士の間の）ファイルの転送など、ならびに類似の活動であると考えることができる。
【０１４６】
一般に、ネットワークマップの任意の情報が変更され得るが、ネットワークマップの変更情報の望ましさは、ネットワークマップの様々なタイプの情報に関して異なる。
【０１４７】
例えば、２つのハッシュ関数（すなわち、鍵空間ハッシュ関数ｆ（ｘ）およびサブネットワーク指標ハッシュ関数ｇ（ｘ））は、分解されたＰ２Ｐネットワークの動作のために重要であり、したがって、変更されない可能性が大きい（とはいえ、変更が必要とされる場合または所望される場合も存在し得る点を理解されるであろう）。
【０１４８】
例えば、Ｐ２Ｐネットワークが分解されたＰ２Ｐネットワークを形成するために分解される形を指定する分解基準は、変更される可能性がより高い。本明細書で説明されるように、分解基準は、地理的記述子、関心共同体記述子など、ならびにそれらの様々な組合せのうちの１つまたは複数を含むことが可能である。分解記述子に対する変更は、分解されたＰ２Ｐネットワークのノード（例えば、サブネットワークから切断しているいくつかのノードおよび／またはサブネットワークに参加しているいくつかのノード）によるサブネットワークメンバーシップの変更を必要とする場合がある。その変更が制御された形で実行される場合、分解されたＰ２Ｐネットワークの途絶は、削減されることが可能であるか、または除去されることすら可能である。この場合、多数のノードが短時間の間に、サブネットワークを退去する場合、および／またはサブネットワークに参加する場合、分解されたＰ２Ｐネットワークの途絶の高い可能性が存在することは明らかである。したがって、ネットワークマップの変更は、影響を受けたノードのすべてに同時にサブネットワークを退去させること、および／またはサブネットワークに参加させることを回避することを試みる形で実行されるべきである。
【０１４９】
ネットワークマップを変更することに関して、ネットワークマップ内に含まれ得る情報のタイプのサブセットに関する例が提供されているが、ネットワークマップ内に含まれ得るその他の情報に対する変更も、結果として、分解されたＰ２Ｐネットワークの途絶をもたらし得る点は明らかである。
【０１５０】
分解されたＰ２Ｐネットワークの途絶を削減または除去するために、変更は徐々に増分的に実行されるべきである。
【０１５１】
ネットワークマップの変更に基づいて、ノードが変更を実行する形を制御するための一実施形態による方法が、図７に関して示され、説明されている。
【０１５２】
図７は、分解されたＰ２Ｐネットワークのネットワークマップ内の変更に基づいて、変更を実行する際にノードによって使用するための方法の一実施形態を示す。
【０１５３】
ステップ７０２において、方法７００が開始する。
【０１５４】
ステップ７０４において、ノードは、ネットワークマップ内の変更を検出する。ノードは、ネットワークマップが変更されたことを任意の適切な形で（例えば、バージョン番号、ネットワークマップの解析情報など、ならびにそれらの様々な組合せで）検出することが可能である。ノードは、任意の適切な時点で（例えば、ノードが制御ネットワークを経由して通信するたびに、制御ネットワークと周期的に交信することによってなど、ならびにそれらの様々な組合せで）ネットワークマップ内の変更を検査することができる。
【０１５５】
ステップ７０６において、ノードは、ネットワークマップ内で検出された変更がノードに影響を与えるかどうかを判断する。
【０１５６】
この判断は、変更したネットワークマップの情報のタイプに依存し得る、任意の適切な形で実行されることが可能である。
【０１５７】
例えば、分解基準がサブネットワークのそれぞれに関連する長方形の地理的領域として指定される地理的記述子を含む場合、ネットワークマップ内で検出された変更がノードに影響を与えるかどうかに関する判断は、ノードの地理的位置を決定するステップと、そのノードがメンバである（１つまたは複数の）サブネットワークが変更される必要があるかどうかを判断するために、ノードのその地理的位置をサブネットワークのそれぞれに関連する長方形の地理的領域と比較するステップとを含むことが可能である。
【０１５８】
例えば、分解基準がサブネットワークのそれぞれに関連するサブネットワーク名として指定された関心共同体記述子を含む場合、ネットワークマップ内で検出された変更がノードに影響を与えるかどうかに関する判断は、そのノードがメンバである（１つまたは複数の）サブネットワークが変更される必要があるかどうかを判断するために、サブネットワーク名のそれぞれを走査するステップを含むことが可能である。
【０１５９】
このように、ノードが影響を受ける場合、ネットワークマップ内で検出された変更がノードに影響を与えるかどうかに関する判断は、ノードがノードによって実行されることになる変更を判断することを可能にする。
【０１６０】
ノードがその変更による影響を受けない場合、方法７００は、ステップ７１２に進み、その時点で、方法７００は終了する。
【０１６１】
ノードがその変更による影響を受ける場合、方法７００はステップ７０８に進む。
【０１６２】
ステップ７０８において、変更時間が判断される。この変更時間は、ネットワークマップ内の変更の変更に基づいて変更を実行する前に、ノードが待機することになる時間の量を示す。この変更時間は、（例えば、変更を実行する前に待機すべき期間、将来、変更が実行されるべき時間など）任意の適切な形で指定され得る。この変更時間は、（例えば、事前に判断された待機期間に基づいて、現在の時間に基づいて任意にタイムスタンプを生成することによってなど）任意の適切な形で判断され得る。
【０１６３】
ステップ７１０において、ノードは、変更時間によって示された時点で変更を実行する。
【０１６４】
ステップ７１２において、方法７００は終了する。
【０１６５】
ノードがネットワークマップに対する変更に基づいて変更を実行することを可能にするためのプロセス論理の特定の実装形態に関して主に示され、説明されているが、ノードがネットワークマップに対する変更に基づいて変更を実行することを可能にするためのプロセス論理は、Ｐ２Ｐネットワーク分解機能を依然としてサポートしながら、様々なその他の形で実施され得る点を理解されよう。
【０１６６】
ネットワークマップに対する変更に基づく、分解されたＰ２Ｐネットワークに対する変更がある期間にわたって実行されるにつれて、図７の方法７００が、ネットワークマップが変更する時点で、分解されたＰ２Ｐネットワークのメンバであるノードによってだけ必要とされるのは、ネットワークマップが変更する時点の後で、分解されたＰ２Ｐネットワークに参加する任意のノードは、ネットワークマップによって示される分解されたＰ２Ｐネットワークに参加することになるためである。
【０１６７】
前述の説明から、徐々に増分的にネットワークマップを変更して、合理的な時間間隔にわたってノード変更を拡散することによって、ネットワークマップに対する変更の結果としてもたらされる分解されたＰ２Ｐネットワークの途絶は、削減されることが可能であり、場合によっては、除去されることすら可能である点を理解されよう。
【０１６８】
本明細書で説明されるように、ネットワークマップ内の変更は、サブネットワーク指標マッピングを含めて、ネットワークマップ内の任意のタイプの情報に対する変更を含むことが可能である。サブネットワーク指標マッピングを変更することに関して、基本的に２つのタイプの増分的変更が存在する：すなわち、（ａ）サブネットワーク指標をサブネットワークに追加すること、および（ｂ）サブネットワークからサブネットワーク指標を削除することである。サブネットワーク指標が第１のサブネットワークから第２のサブネットワークに移動する事例は、「追加」動作の後に続く「削除」動作として対処され得るが、この事例に関連する付加的な懸念事項が１つ存在する：すなわち、サブネットワーク指標が第２のサブネットワークに追加されるとき、第１のサブネットワークはそのサブネットワーク指標のファイルを第２のサブネットワークに転送する必要がある点である。ファイルが第１のサブネットワークから第２のサブネットワークに転送され得るプロセスを示す例が図８Ａ−８Ｅに関して示され、説明され、ファイルが第１のサブネットワークから第２のサブネットワークに転送され得る、より一般的なプロセスが図９に関して示され、説明される。
【０１６９】
図８Ａ−８Ｅは、ファイルが第１のサブネットワークから第２のサブネットワークに転送され得るプロセスを示す一例を示す。
【０１７０】
この例では、Ｐ２ＰネットワークをＣｈｏｒｄネットワークとし、既存のサブネットワークＢに、現在、１０００１のサブネットワーク指標が割り当てられており、ネットワーク管理者は、サブネットワーク指標１０００１が割り当てられた新しいサブネットワークＡを作成することを望むと仮定する。ネットワーク管理者は、新しいサブネットワークＡと、新しいサブネットワークＡに対するサブネットワーク指標１０００１の割当てとを反映するためにネットワークマップを更新することになる。ネットワーク管理者は、やはり、（例えば、ネットワークマップのバージョン番号を変更して）、ネットワークマップが更新されていることをＣｈｏｒｄネットワークのノードに示すようにネットワークマップを更新することになる。ネットワーク管理者は、Ｃｈｏｒｄ制御ネットワークを介して、その更新されたネットワークマップをブロードキャストすることになる。その更新されたネットワークマップは、任意の適切な形でＣｈｏｒｄ制御ネットワークを介してブロードキャストされ得る。例えば、Ｃｈｏｒｄ制御ネットワークが、その全体が参照により本明細書に組み込まれている「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＬＯＣＡＴＩＮＧ  ＳＥＲＶＩＣＥＳ  ＷＩＴＨＩＮ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＮＥＴＷＯＲＫＳ」という表題の米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（整理番号第Ｃｈｕ１９−４３号（ＡＬＵ／１３０２０９））で示され、説明されるサービス位置特定機能など、ブロードキャスト機能を提供するために使用されることも可能なサービス位置特定機能をサポートするＣｈｏｒｄ制御ネットワークとして実施される場合、更新されたネットワークマップは、ブロードキャスト機能を使用してブロードキャストされ得る。更新されたネットワークマップのブロードキャストを経由して、更新されたネットワークマップを学習することに加えて、Ｃｈｏｒｄ制御ネットワークのノードは、（例えば、ブロードキャストメッセージのうちのいくつかに故障が発生した場合）Ｃｈｏｒｄ制御ネットワークを介してその（１つまたは複数の）前任および（１つまたは複数の）後任と交換されたハートビートメッセージを通じて更新されたネットワークマップを学習することも可能である。このように、Ｃｈｏｒｄ制御ネットワークのすべてのノードは、更新されたネットワークマップについて知らされる。
【０１７１】
この例では、サブネットワーク指標Ａが新しいサブネットワークＡに新たに割り当てられるとき、新しいサブネットワークＡは、サブネットワークＡ内に記憶されたサブネットワーク指標１０００１に関連するファイルのすべてを有さない可能性がある。結果として、ノードが新しいサブネットワークＡに初めて参加するとき、そのノードは、サブネットワーク指標１０００１をサポートする別のサブネットワーク（すなわち、この例では、サブネットワークＢ）からサブネットワーク指標１０００１に関連するファイルを獲得することを望む可能性がある。この例では、ノード１０００は、Ｃｈｏｒｄネットワークに関する通常の参加手順を使用して、新しいサブネットワークＡに参加すると仮定する。ノード１０００が新しいサブネットワークＡ内に記憶するために、サブネットワーク指標１０００１に関連するファイルを獲得することができる手順の説明が続く。
【０１７２】
図８Ａに示されるように、ノード１０００は、新しいサブネットワークＡに参加し、ノード９００は、ノード１０００の前任であり、ノード１１００は、新しいサブネットワークＡ内のノードＡの後任である。新しいサブネットワークＡに参加するとすぐ、後任ノード１１００は、９０１から１０００までのファイルＩＤを有するすべてのファイルをノード１０００に転送する（しかし、サブネットワークＡは新たに形成されているため、このリストは完全でない可能性がある）。ファイルのこのリストは完全でない可能性があるため、ノード１０００は、そのファイルが実際に、ノード１０００が新しいサブネットワークＡにおいて責任を負う必要なファイルのすべてを有することを確認することを望む場合がある。
【０１７３】
図８Ｂに示されるように、ノード１０００はサブネットワークＢを識別し（すなわち、サブネットワーク指標１０００１をサポートする別のサブネットワーク、この例では、サブネットワークＢを識別し）、ノード１０００がサブネットワークＢのメンバでない場合、ノード１０００は、サブネットワークＢ内で自らを探索する。図８Ｂにさらに示されるように、サブネットワークＢ内で自らを探索する結果として、ノード１０００は、サブネットワークＢ内でノード１０００を超えるノードＩＤを有し、ノード１０００に最も近いノード（例示的に、この例では、ノード１０５０）を識別する。
【０１７４】
図８Ｃに示されるように、ノード１０００は、次いで、サブネットワークＢ内のノード９００を探索する（すなわち、新しいサブネットワークＡ内のその独自の前任、それは、この例では、ノード９００である）。図８Ｃにさらに示されるように、サブネットワークＢ内でその前任を探索した結果として、ノード１０００は、サブネットワークＢ内でノード９００よりも大きいノードＩＤを有し、ノード９００に最も近いノード（例示的に、この例では、ノード９２０）を識別する。
【０１７５】
図８Ｄに示されるように、ノード１０００は、サブネットワークＢ内でノード９２０とノード１０５０の間のすべてのノードを識別する。（すべてのノードは、それぞれ、その（１つまたは複数の）前任および（１つまたは複数の）後任の識別を知っているため）ノード１０００は、それらのノードのそれぞれに問い合わせることによって、それらのノードを判断することができる。図８Ｄに示されるように、分かりやすくするために、ノード９２０と１０５０の間の１つのノードだけ、すなわち、ノード９５０がサブネットワークＢ内でアクティブであると仮定する。
【０１７６】
図８Ｅに示されるように、ノード１０００は、サブネットワークＢの識別されたノードから、サブネットワーク指標１０００１に関連し、かつノード１０００がまだ記憶していない、９０１から１０００の間のファイルＩＤを有する任意のファイルを取得する。ノード１０００は、サブネットワーク指標１０００１に関連し、かつそれらのノードによって記憶されている９０１から１０００の間のファイルＩＤを有する識別されたノード９２０、９５０、および１０５０のそれぞれにファイルのリストについて問い合わせる。ノード１０００は、次いで、それらのファイルリストを、ノード１０００が既に記憶しているファイルと比較する。ノード１０００は、次いで、サブネットワーク指標１０００１に関連し、かつノード１０００がまだ記憶していない、９０１から１０００の間のファイルＩＤを有する任意のファイルを取り出す。
【０１７７】
図９は、分解されたＣｈｏｒｄネットワーク内でＣｈｏｒｄサブネットワークを初期化するとき、第１のサブネットワークのノードが第２のサブネットワークからファイルを獲得するのを可能にするための方法の一実施形態を示す。
【０１７８】
ステップ９０２において、方法９００が開始する。
【０１７９】
ステップ９０４において、ノードは第１のサブネットワークに参加する。ノードはＮのノードＩＤを有し、第１のサブネットワークは、Ｊのサブネットワーク指標を有する。
【０１８０】
ステップ９０６において、ノードは、第１のサブネットワーク内のその前任を識別する。この前任ノードは、ＰのノードＩＤを有する。
【０１８１】
ステップ９０８において、ノードは、（そこからファイルが取得されることになる第２のサブネットワークとして示される）Ｊのサブネットワーク指標を有する別のサブネットワークを識別する。
【０１８２】
ステップ９１０において、ノードは、第２のサブネットワーク内で自らを探索する（ＮのノードＩＤを有するノードに関して第２のサブネットワークを探索する）。この探索の結果は、ノードＮが、サブネットワーク内の、ノードＩＤ  Ｎを超えるノードＩＤを有し、かつノードＩＤ  Ｎに最も近いノードの表示を受信することである。この結果、ノードはノードＮ１として示される。
【０１８３】
ステップ９１２において、ノードは、第２のサブネットワーク内で前任Ｐを探索する（ＰのノードＩＤを有するノードに関して第２のサブネットワークを探索する）。この検索の結果は、ノードＮが、サブネットワーク内で、ノードＩＤ  Ｐを超えるノードＩＤを有し、かつノードＩＤ  Ｐに最も近いノードの表示を受信することである。この結果、ノードはノードＮ２として示される。
【０１８４】
ステップ９１４において、ノードは、第２のサブネットワーク内のノードＮ１とノードＮ２との間のすべてのノード（Ｎｉ）を識別する。
【０１８５】
ステップ９１６において、ノードは、識別されたノードＮｉ内に記憶された、サブネットワーク指標Ｊを有するすべてのファイルを識別する。一実施形態では、例えば、ノードは、識別されたノードＮｉ内に記憶された、サブネットワーク指標Ｊを有するすべてのファイルを識別するための問合せを開始して、識別されたノードＮｉ内に記憶された、サブネットワーク指標Ｊを有するすべてのファイルを示す問合せ応答を識別されたノードＮｉから受信する。
【０１８６】
ステップ９１８において、ノードは、もしあれば、ノード上に記憶されるべき、識別されたファイルのうちのどれがその現在ノード上に記憶されていないかを判断する。そのノード上に現在記憶されていないが、そのノード上に記憶されるべき、判断されたファイルは、ファイルＩＤとノードＩＤとに基づいて判断される（すなわち、Ｎを含めて、ＰとＮの間のファイルＩＤを有するファイル）。
【０１８７】
ステップ９２０において、ノードは、識別されたノードＮｉから、そのノード上に現在記憶されていない、識別されたファイルのうちのいずれかを取得する。一実施形態では、例えば、ノードは、そのノード上に現在記憶されていない、識別されたファイルのうちのいずれかに関する要求を開始して、識別されたノードＮｉから（１つまたは複数の）要求されたファイルを受信する。
【０１８８】
ステップ９２２において、ノードは、取得された（１つまたは複数の）ファイルを第１のサブネットワーク内で利用可能にするためにそれらのファイルを記憶する。
【０１８９】
ステップ９２４において、方法９００は終了する。
【０１９０】
ノードが第２のサブネットワークからファイルを獲得するために第１のサブネットワークに参加するのを可能にするためのプロセス論理の特定の実装形態に関して主に示され、説明されているが、ノードが第２のサブネットワークからファイルを獲得するために第１のサブネットワークに参加するのを可能にするためのプロセス論理は、Ｐ２Ｐネットワーク分解機能を依然としてサポートしながら、様々なその他の形で実施され得る。
【０１９１】
新しいサブネットワークのノードが分解されたＣｈｏｒｄネットワーク内の既存のサブネットワークからファイルを獲得するのを可能にするための上述の実施形態では、新しいサブネットワークが当初形成されるとき、新しいサブワークには少数のアクティブノードだけが存在する可能性があり、したがって、参加ノードとその前任との間のギャップは大きい可能性がある。結果として、新しいノードがマッチするサブネットワーク指標を有するファイルを既存の（１つまたは複数の）ネットワーク内で探索するとき、新しいノードは、多数のファイルを識別することが可能である。一実施形態では、新しいノードは、識別されたファイルのサブセット（例えば、識別されたノードから降順で限定数のファイル、または任意のその他の適切なサブセット）だけを取り出して記憶することが可能である。この実施形態では、時間が経つにつれて、より多くのノードが新しいサブネットワークＡに参加する可能性が高まることになり、そのうちの少なくともいくつかは、新しいノードとその現在の前任との間にある可能性が高く、新しいサブネットワークに参加する新しいノードは、既存の（１つまたは複数の）サブネットワークから予め取得されていないファイルのうちのいずれかを取得するために、類似の手順を実行することが可能である。
【０１９２】
上述の実施形態では、新しく参加するノードが新しいサブネットワークに関するファイルを獲得するにつれて、新しいサブネットワークは、関連するサブネットワーク指標を有する、そのファイルの大部分を適宜に規則正しい形で獲得する。しかし、新しいサブネットワークと既存のサブネットワークは両方とも、ノードがサブネットワークに参加して、サブネットから退去する動的なネットワークであるため、上述の実施形態を使用して、ファイルのすべてが新しいサブネットワークに転送されことになるとは限らない可能性がある。したがって、一実施形態では、それぞれのファイルに関して、ファイルのシード処理ノードは、（例えば、定期的な間隔で、または任意のその他の適切なタイムフレームで）新しいサブネットワークに関するファイルを検索することになり、シード処理ノードが、そのファイルが欠けていることを判断した場合、シード処理ノードは、そのファイルを記憶する責任を負っている、新しいサブネットワークのノードにそのファイルを転送することが可能である。１つのそのような実施形態では、この手順は、新しいサブネットワークが安定化されると、または新しいサブネットワークが少なくとも比較的安定していると判断されると、実行もしくはアクティブ化されることが可能である。
【０１９３】
新しいサブネットワークのノードが分解されたＰ２Ｐネットワーク内の既存のサブネットワークからファイルを獲得するのを可能にするための上述の実施形態では、分解されたＰ２Ｐネットワークは、分解されたＣｈｏｒｄネットワークである。他のタイプのＰ２Ｐネットワーク（例えば、Ｐａｓｔｒｙ、Ｔｒａｐｅｓｔｒｙなど）の原理に従って、上述の実施形態を修正することによって、他のタイプのＰ２Ｐネットワークにおいて、類似の機能がサポートされ得る点を理解されよう。
【０１９４】
一実施形態では、例えば、新しいサブネットワークのノードが分解されたＣｈｏｒｄネットワーク内の既存のサブネットワークからファイルを獲得するのを可能にするための上述の実施形態は、新しいサブネットワークのノードが分解されたＰａｓｔｒｙネットワーク内の既存のサブネットワークからファイルを獲得するのを可能にするために修正され得る。一例として、新しいノードｘが、１０００１のサブネットワーク指標が割り当てられた新しいサブネットワークＡに参加する、分解されたＰａｓｔｒｙネットワークの事例を考慮する。新しいノードｘは、サブネットワーク指標１０００１が割り当てられたサブネットワークを識別することになる。新しいノードｘは、次いで、識別されたサブネットワークＢ内で自らを探索する（新しいノードｘが既に識別されたサブネットワークＢのメンバである場合、探索は必要ないため、この例では、新しいノードｘは、識別されたサブネットワークＢのメンバでないと仮定する）。この探索は、識別されたサブネットワークＢ内にノードｙをもたらす。Ｐａｓｔｒｙでは、ノードｙは、ノードｙのノードＩＤに近いノードのノードＩＤを含む「リーフセット（ｌｅａｆ  ｓｅｔ）を維持する（この例では、ノードｙのリーフセットのノードをｚ１、ｚ２、．．．、ｚｘとする）。新しいノードｘは、次いで、ノードｙ内に記憶され、そのリーフセットがｚ１、ｚ２、．．．、ｚｘである、サブネットワーク指標１０００１を有するファイルを識別する。新しいノードｘは、次いで、その新しいノードｘがそれらの識別されたファイルのうちどれを現在記憶していないかを識別する。新しいノードｘは、次いで、ノードｙおよびそのリーフセットｚ１、ｚ２、．．．、ｚｘと、新しいノードｘが現在記憶していない、識別されたそれらのファイルとを要求して、それらを受信して、受信されたファイルを記憶する。したがって、この例から、図９の方法９００は、新しいサブネットワークのノードが分解されたＰａｓｔｒｙネットワーク内の既存のサブネットワークからファイルを獲得するような形で修正され得る点を理解されよう。
【０１９５】
新しいサブネットワークのノードが分解されたＣｈｏｒｄネットワーク内またはＰａｓｔｒｙネットワーク内の既存のサブネットワークからファイルを獲得するのを可能にするための上述の実施形態から、新しいサブネットワークのノードが既存のサブネットワークからファイルを獲得するのを可能にするためのＣｈｏｒｄ固有の方法およびＰａｓｔｒｙ固有の方法は、任意のタイプのＰ２Ｐネットワークに適用可能であるようにさらに一般化され得る点を理解されよう。一実施形態では、新しいサブネットワークのノードが分解されたＰ２Ｐネットワーク内の既存のサブネットからファイルを獲得するのを可能にするめの方法は、（１）サブネットワーク指標をサポートする、新しいサブネットワーク内の新しいノードによって、サブネットワーク指標をサポートする、既存のサブネットワーク内の最も近いノードを探索するステップと、（２）識別された最も近いノードの近隣のセットを取得するステップと（例えば、この近隣のセットは、前任／後任の組合せ、リーフセット、または１つもしくは複数のノードの任意のその他の適切なセットであってよい）、（３）近隣のセットの（１つまたは複数の）ノードから、サブネットワーク指標を有するファイルを識別するステップと、（４）新しいノードに現在記憶されていない、識別されたファイルの少なくとも一部を要求、受信、および記憶するステップとを含む。
【０１９６】
本明細書では、サブネットワークとサブネットワーク指標との間のマッピングが１対１、または少なくとも１対１に比較的近い（例えば、１つまたは複数のサブネットワークには複数のサブネットワーク指標が割り当てられている可能性があるが、依然として、サブネットワーク指標のセット全体のほんの一部である、例えば、サブネットワーク指標のうちの１つまたは複数は、複数のサブネットワークに割り当てられることが可能であるが、依然として、複数のサブネットワーク指標が割り当てられたサブネットワークのセット全体のほんの一部である）実施形態に関して主に示され、説明されているが、その他の実施形態では、サブネットワーク／サブネットワーク指標の割当ての間の重複は増分されてよい。これは、ファイルダウンロードが、ネットワーク間ではなく、ネットワーク内である確率を増大し、したがって、ネットワークリソースの使用、パフォーマンス、および信頼性を改善するが、ネットワークリソースの使用、パフォーマンス、および信頼性の改善は、多数のファイルを複数の異なるサブネットワーク内に複数回記憶するために必要とされる記憶容量に関連する増大を犠牲にして獲得される。一実施形態では、サブネットワーク指標は、サブネットワークのメンバーシップのサイズに比例して割り当てられてよい（例えば、必要とされる記憶容量がサブネットワーク間で公平に分割されるように、より大きなメンバーシップを有するサブネットワークにはより多くのサブネットワーク指標が割り当てられてよい）。一実施形態では、極端な事例、それぞれのサブネットワークが分解されたＰ２Ｐネットワークのファイルのすべてを記憶するように、サブネットワーク指標のそれぞれがサブネットワークのそれぞれに割り当てられる。このように、ネットワークリソースの使用、パフォーマンス、および信頼性の改善は、記憶容量の増大のコストとのバランスを保つことができる。
【０１９７】
本明細書では、ファイルがサブネットワーク指標だけに基づいて、分解されたＰ２Ｐネットワークのサブネットワーク内に記憶される実施形態に関して主に示され、説明されているが、その他の実施形態では、ファイルは、需要または任意のその他の適切な基準に基づいてなど、サブネットワーク指標に加えて、その他の基準に基づいて、分解されたＰ２Ｐネットワークのサブネットワーク内に記憶されることも可能である。一実施形態では、特定のサブネットワーク内で需要がある（あるいは、特定の数のサブネットワークもしくはサブネットワークの特定のセットを通して、または分解されたＰ２Ｐネットワーク全体を通してすら需要があると見なされる）ファイルは、（そのファイルに関連するサブネットワーク指標を有する（１つまたは複数の）サブネットワーク内に記憶されることに加えて）ローカルサブネットワーク内に記憶され得る。１つのそのような実施形態では、ノードがファイルを探索するとき、ノードは、そのローカルサブネットワーク、ならびにそのファイルに関連するサブネットワーク指標を有する（１つまたは複数の）サブネットワークを探索することになる）。この場合、ファイルがローカルサブネットワーク内に記憶されている場合、探索を実行しているノードは、ローカルサブネットワークから、または、そうでない場合、ファイルのサブネットワーク指標をサポートするサブネットワークからそのファイルを取得することになる。分解が（少なくとも一部）地理的基準に基づく、分解されたＰ２Ｐネットワークでは、これは、記憶コストの点でより高価な可能性はあるが、ネットワークコストの点で効率的であろう。この実施形態では、ファイルは、ファイルのサブネットワーク指標をサポートする（１つまたは複数の）サブネットワークから依然として利用可能であると同時に、（例えば、ファイルの需要がローカルサブネットワーク内または分解されたＰ２Ｐネットワークを通して衰えたときなど、後の時点で）ローカルサブネットワークからパージされることが可能である。そのような実施形態では、需要は任意の適切な形で測定または判断され得る点を理解されよう。
【０１９８】
本明細書では、サブネットワーク指標がハッシュ関数の出力であるＫビットフィールドである実施形態に関して主に示され、説明されているが、その他の実施形態では、分解されたＰ２Ｐネットワークのサブネットワークに関連するサブネットワーク指標は、ハッシュ関数を使用せずに判断され得る。１つのそのような実施形態では、例えば、サブネットワークのサブネットワーク指標は、自然指標（ｎａｔｕｒａｌ  ｉｎｄｅｘ）を使用して設定され得る。一例として、Ｐ２Ｐネットワーク内に書籍を電子的に記憶することを望むライブラリの事例を考慮する。この例では、サブネットワークは、数理サブネットワーク、物理サブネットワークなど、学科によって構成され得る。この例では、使用すべき自然指標がデューイ十進法になるのは、デューイ十進法を使用することによって、当然、数理書籍を数理サブネットワーク内に記憶させ、物理書籍を物理サブネットワーク内に記憶させ、以下同様になるためである。加えて、物理学部が数理書籍のうちのいくつかを物理サブネットワーク内にローカルに記憶することを望む場合など、特定の学部にとって関心のある書籍が他のサブネットワーク内に記憶されることも可能である。デューイ十進法に関して主に示され、説明されているが、その他のタイプのアプリケーションにおいて様々な他の自然指標が使用され得る点を理解されよう。
【０１９９】
Ｐ２Ｐネットワーク分解機能は、Ｐ２Ｐネットワークに多数の利点を提供する。
【０２００】
Ｐ２Ｐネットワーク分解機能は、Ｐ２Ｐネットワークをサブネットワークに分解することを可能にすることによって、Ｐ２Ｐネットワークのスケーラビリティを改善する。
【０２０１】
Ｐ２Ｐネットワーク分解機能は、Ｐ２Ｐネットワーク内のファイル探索パフォーマンスを改善する。ノードがファイルを探査しているとき、ファイルは、そのノードのローカルサブネットワーク以外のサブネットワークに、例えば、そのローカルサブネットワーク以外のターゲットサブネットワークに位置特定される場合がある。第１のファイル探索は、ノードのローカルサブネットワークからターゲットサブネットワークに移動することができるが、そのファイルを位置特定するために必要とされるすべての後続の探索メッセージは、依然として、ターゲットサブネットワーク内にとどまることになる。したがって、Ｐ２Ｐネットワークの分解が「距離」に基づく場合、（ターゲットネットワークの外部の第１の探索メッセージを除いて）探索メッセージのすべてはターゲットサブネットワーク内に位置特定され、したがって、それらの探索メッセージが移動する距離は最小限に抑えられる。これは、（例えば、Ｃｈｏｒｄネットワークなど）そのアーキテクチャにおいて地理的位置が明らかにされないＰ２Ｐネットワークのパフォーマンスを改善することになる。位置基準／距離基準はサブネットワーク固有である可能性があるため、これは、位置基準／距離基準の限定された使用をサポートできるＰ２Ｐネットワークのパフォーマンスも改善することになる。例えば、近接性基準をサポートするＰａｓｔｒｙネットワークでは、近接性基準は同じサブネットワーク内のノードに関してだけ画定される必要がある。この例では、サブネットワークが小さな地理的領域をカバーする極端な事例では、そのサブネットワーク内の近接性基準は定数に設定されてよく（すなわち、サブネットワーク内のすべてのノードは同じ距離を有する）、これは、ネットワーク管理者が近接関数を定義する作業を軽減することになる。
【０２０２】
Ｐ２Ｐネットワーク分解機能は、ノードＩＤに関して、所与のノードの近接ノードが同じサブネットワークに属するように提供される。結果として、ノードがネットワークに参加するとき、またはネットワークを退去するとき、近接ノード同士の間の更新メッセージおよびファイル転送は、同じサブネットワーク内にとどまる。Ｐ２Ｐネットワークの分解が地形に基づく場合、更新メッセージおよびファイル転送が移動する距離は最小限に抑えられ、それによって、ノード同士の間でそのような情報を伝搬するために必要とされる時間を最小限に抑え、ノード同士の間でそのような情報を伝搬するために消費されるネットワークリソースの量を削減する。分解がその他の分解基準に基づく場合、他の利点が実現される。したがって、Ｐ２Ｐネットワークのパフォーマンスは改善される。
【０２０３】
Ｐ２Ｐネットワーク分解機能は、Ｐ２Ｐネットワークが地形、関心共同体などのうちの１つまたは複数、ならびにそれらの様々な組合せに基づいてなど、任意の適切な分解基準に基づいて分解されるのを可能にする。これは、Ｐ２Ｐネットワークの効率的かつ頑強な分解を可能にする。
【０２０４】
Ｐ２Ｐネットワーク分解機能は、それぞれのファイルが指定されたサブネットワークに記憶されることを可能にし、オプションで、ファイルのうちのいくつかまたはすべてが複数のサブネットワーク内に記憶されることも可能にできる（例えば、ファイルの追加のコピーは、指定されたサブネットワークに加えて、１つまたは複数のサブネットワークに記憶され得る）。これは、Ｐ２Ｐネットワークのパフォーマンスと信頼性とを改善する。
【０２０５】
Ｐ２Ｐネットワーク分解機能は、本明細書で提供されるＰ２Ｐネットワーク分解機能の説明を考慮して、当業者に明らかになる多数のその他の利点を提供する。
【０２０６】
本明細書では、制御ネットワークを使用してＰ２Ｐネットワーク分解機能が提供される実施形態に関して主に示され、説明されているが、Ｐ２Ｐネットワーク分解は、制御ネットワークを使用せずに提供されることも可能である。一実施形態では、例えば、制御ネットワークを使用するのではなく、サブネットワークのそれぞれは、１つまたは複数の永続的にアクティブなノードを有するように構成され、この場合、それらの永続的にアクティブなノードの識別は、ノードのそれぞれがノード、サービス、およびその他の制御情報を探索できるように、Ｐ２Ｐネットワークのノードのすべてに利用可能にされる。永続的にアクティブなノードの識別は、ネットワークマップに拡張を提供して、ウェブサーバを経由してなど、任意の適切な形ですべてのノードに利用可能にされ得る。
【０２０７】
本明細書では、Ｐ２ＰネットワークがＣｈｏｒｄネットワークである実施形態に関して主に示され、説明されているが、Ｐ２Ｐネットワーク分解機能は、Ｐａｓｔｒｙ、Ｔａｐｅｓｔｒｙなど、その他のタイプのＰ２Ｐネットワーク内で実施され得る。
【０２０８】
本明細書では、Ｐ２Ｐネットワーク分解機能が主に示され、説明されているが、Ｐ２Ｐネットワーク分解機能の原理は、併合されたＰ２Ｐネットワークを形成するためにコンポーネントＰ２Ｐネットワークを併合する目的で、Ｐ２Ｐネットワーク併合機能を提供するために適用されることも可能である。併合されたＰ２Ｐネットワークは、併合されたＰ２Ｐネットワークのコンポーネントネットワークのそれぞれが分解されたＰ２Ｐネットワークのサブネットに類似であるという点で、分解されたＰ２Ｐネットワークに類似する。コンポーネントＰ２Ｐネットワークは、同じＰ２Ｐ技術のものであってよく、または異なるＰ２Ｐ技術のものであってもよい。Ｐ２Ｐネットワークを分解するとき、（鍵空間およびオブジェクトＩＤハッシュ関数は分解されている元のＰ２Ｐネットワークから引き継がれているため）Ｐ２Ｐネットワークは、サブネットワークのすべてが同じ鍵空間と同じオブジェクトＩＤハッシュ関数とを使用するように分解され得る。しかし、併合されたＰ２Ｐネットワークを形成するためにコンポーネントＰ２Ｐネットワークを併合するとき、コンポーネントネットワークは異なる鍵空間と異なるオブジェクトＩＤハッシュ関数とを使用して併合されている可能性が高い。結果として、併合されたＰ２Ｐネットワークを形成するためにコンポーネントＰ２Ｐネットワークを併合することは、以下の考慮事項のうちの１つまたは複数を考慮に入れて実行され得る。
【０２０９】
Ｐ２Ｐネットワーク併合機能の場合、コンポーネントネットワークのすべては、（例えば、コンポーネントネットワークのうちの１つのハッシュ関数を選択すること、またはコンポーネントネットワークによって使用されることになる、いくつかのその他の適切なハッシュ関数を選択することによって）ネットワーク指標を計算する際に同じハッシュ関数を使用すべきである。
【０２１０】
Ｐ２Ｐネットワーク併合機能の場合、コンポーネントネットワークのすべては、同じファイル命名規則をサポートすべきであり、ノードが別のコンポーネントネットワーク内の別のノードからファイルを要求するとき、異なるコンポーネントネットワークは異なるハッシュ関数を使用する可能性が高いため、ファイル名のハッシュ値ではなく、ファイルのファイル名が使用されるべきである。
【０２１１】
Ｐ２Ｐネットワーク併合機能の場合、制御ネットワークは、それぞれのノードが特定のコンポーネントネットワーク（例えば、その全体が参照により本明細書に組み込まれている「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＬＯＣＡＴＩＮＧ  ＳＥＲＶＩＣＥＳ  ＷＩＴＨＩＮ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＮＥＴＷＯＲＫＳ」という表題の米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（整理番号第Ｃｈｕ１９−４３号（ＡＬＵ／１３０２０９））で示され、説明されるサービス位置特定機能を有するＣｈｏｒｄネットワーク）に属する他のノードを探索することを可能にするサービス位置特定機能をサポートするＰ２Ｐ技術を使用すべきである。
【０２１２】
Ｐ２Ｐネットワーク併合機能の場合、コンポーネントネットワークは、異なる鍵空間と異なるハッシュ関数とを使用する可能性が高い。併合されたＰ２Ｐネットワークの２つのコンポーネントネットワークが異なる鍵空間とハッシュ関数とを使用するとき、コンポーネントネットワークの両方に参加するノードは、２つの異なるノードＩＤを有することになり、２つのコンポーネントネットワークに関する異なるファイルを記憶することになり、さらに、１つのコンポーネントネットワーク内の（ノードＩＤに関して）近接ノードである２つのノードは、別のコンポーネントネットワーク内の近接ノードでない場合がある。結果として、コンポーネントネットワークに新しいネットワーク指標が割り当てられるとき、そのコンポーネントネットワークは、ネットワークに迅速にポピュレートするために、上述の手順を使用することができず、むしろ、ファイルは、関連するシード処理ノードを介してコンポーネントネットワーク内にロードされることになる。
【０２１３】
図１０は、本明細書で説明される機能を実行する際に使用するのに適したコンピュータのハイレベルブロック図を示す。図１０に示されるように、コンピュータ１０００は、プロセッサ要素１００２（例えば、中央処理装置（ＣＰＵ）または（１つもしくは複数の）他の適切なプロセッサ）と、メモリ１００４（例えば、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）など）と、サービス位置検索モジュール／プロセス１００５と、様々な入出力装置１００６（例えば、（キーボード、キーパッド、マウスなどの）ユーザ入力装置、（ディスプレイ、スピーカなどの）ユーザ出力装置、入力ポート、出力ポート、受信機、送信機、および記憶装置（例えば、テープドライブ、フロッピー（登録商標）ドライブ、ハードディスクドライブ、コンパクトディスクドライブなど））とを含む。
【０２１４】
本明細書で示され、説明される機能は、ソフトウェアの形で、かつ／あるいは、例えば、汎用コンピュータ、１つもしくは複数の特定用途向け集積回路（ＡＳＩＣ）、および／または任意のその他のハードウェア均等物を使用して、ソフトウェアとハードウェアの組合せの形で実施され得る点に留意されたい。一実施形態では、サービス位置検索プロセス１００５は、メモリ１００４内にロードされて、本明細書において上で議論された機能を実施するために、プロセッサ１００２によって実行されることが可能である。したがって、（関連するデータ構造を含めて）サービス位置検索プロセス１００５は、コンピュータ可読記憶媒体またはコンピュータ可読キャリア、例えば、ＲＡＭメモリ、磁気ドライブもしくは磁気ディスケットまたは光ドライブもしくは光ディスケットなどの上に記憶され得る。
【０２１５】
ソフトウェアとして実施される、本明細書で議論された機能の一部は、任意の適切な形で（例えば、ノードの製造の間に提供される、ノードにおいて管理者によってロードされる、ウェブサーバまたはその他の適切なソースからダウンロードされるなど、ならびにそれらの様々な組合せで）ピアツーピアネットワークのノード上で構成され得ることが想到される。ソフトウェア方法として、本明細書で議論されたステップのうちのいくつかは、例えば、様々な方法ステップを実行するために、プロセッサと協働する回路など、ハードウェア内で実施され得ることが想到される。本明細書で説明された機能／要素の一部は、コンピュータプログラム製品として実施されることが可能であり、コンピュータ命令は、コンピュータによって処理されるとき、本明細書で説明された方法および／または技術が起動されるか、または、そうでない場合、提供されるように、コンピュータの動作を適合させる。本発明の方法を起動させるための命令は、固定媒体内もしくは取外し可能媒体内に記憶されることが可能であり、データストリームを経由してブロードキャスト内もしくはその他の単一の信号伝達媒体内で送信されることが可能であり、かつ／またはそれらの命令に従って動作するコンピューティングデバイス内のメモリ内に記憶されることが可能である。
【０２１６】
本発明の態様は、請求項で指定される。本発明のそれらの態様およびその他の態様は、以下の番号付けされた条項において指定される：
１．ノードが、複数のサブネットワークを含む、分解されたピアツーピア（Ｐ２Ｐ）ネットワークに参加するのを可能にするための方法であって、
分解されたＰ２Ｐネットワークの複数のサブネットワークに対する複数のサブネットワーク指標のマッピングを含むネットワークマップを、分解されたＰ２Ｐネットワークに参加することを要求しているノードに向けて伝搬するステップを含む、方法。
２．分解されたＰ２Ｐネットワークの分解をネットワークマップ内で符号化するステップ
をさらに含む、第１項に記載の方法。
３．分解されたＰ２Ｐネットワークの分解が、少なくとも１つの分解基準に基づく、第１項に記載の方法。
４．少なくとも１つの分解基準が、ノードの地理的位置および関心共同体のうちの少なくとも１つを含む、第３項に記載の方法。
５．サブネットワークのそれぞれに関して、サブネットワークがサブネットワークにマッピングされたサブネットワーク指標のうちの１つまたは複数を有する、第１項に記載の方法。
６．ネットワークマップが、
分解されたＰ２Ｐネットワーク内にファイルを記憶するため、または分解されたＰ２Ｐネットワーク内でファイルを位置特定するためのオブジェクト識別子を生成する際にノードによって使用するのに適したハッシュ情報、
サブネットワークのそれぞれに関して、サブネットワークのうちのどれに参加するかを決定する際にノードによって使用するのに適した１つまたは複数の記述子、および
ネットワークマップ管理情報のうちの少なくとも１つをさらに含む、第１項に記載の方法。
７．ノードが、複数のサブネットワークを含む、分解されたピアツーピア（Ｐ２Ｐ）ネットワークに参加するのを可能にするための方法であって、方法が、
分解されたＰ２Ｐネットワークのネットワークマップを獲得する際に使用するように構成されたメッセージをノードから開始するステップと、
分解されたＰ２Ｐネットワークのネットワークマップをノードにおいて受信するステップとを含み、
ネットワークマップが、分解されたＰ２Ｐネットワークの複数のサブネットワークに対する複数のサブネットワーク指標のマッピングを含む、方法。
８．要求が、
分解されたＰ２Ｐネットワークの制御ネットワークの少なくとも１つのノード、および
ネットワークデバイスのうちの少なくとも１つに向けて開始される、第７項に記載の方法。
９．要求が分解されたＰ２Ｐネットワークの制御ネットワークの少なくとも１つのノードに向けて開始されるとき、要求が制御ネットワーク内のノードの前任ノードまたは制御ネットワーク内のノードの後任ノードに向けて開始される、第８項に記載の方法。
１０．分解されたＰ２Ｐネットワークの分解が、少なくとも１つの分解基準に基づく、第７項に記載の方法。
１１．少なくとも１つの分解基準が、ノードの地理的位置および関心共同体のうちの少なくとも１つを含む、第１０項に記載の方法。
１２．サブネットワークのそれぞれに関して、サブネットワークが、サブネットワークにマッピングされたサブネットワーク指標のうちの１つまたは複数を有する、第７項に記載の方法。
１３．ネットワークマップが、
分解されたＰ２Ｐネットワーク内にファイルを記憶するため、または分解されたＰ２Ｐネットワーク内でファイルを位置特定するためのオブジェクト識別子を生成する際にノードによって使用されるように構成されたハッシング情報、
サブネットワークのそれぞれに関して、サブネットワークのうちのどれに参加するかを決定する際にノードによって使用するように構成された１つまたは複数の記述子、および
ネットワークマップ管理情報のうちの少なくとも１つをさらに含む、第７項に記載の方法。
１４．分解されたＰ２Ｐネットワークの制御ネットワークに参加するための要求を開始するステップであって、制御ネットワークがＰ２Ｐネットワークである、開始するステップと、
分解されたＰ２Ｐネットワークのネットワークマップを獲得する際に使用するように構成されたメッセージを制御ネットワークの少なくとも１つのノードに向けて伝搬するステップと
をさらに含む、第７項に記載の方法。
１５．ノードが、複数のサブネットワークを含む、分解されたピアツーピア（Ｐ２Ｐ）ネットワーク内のファイルを管理することを可能にするための方法であって、
ファイルのサブネットワーク指標を計算するステップと、
ファイルのサブネットワーク指標に関連するサブネットワークのうちの１つを識別するステップと、
サブネットワークのうちの識別された１つのアクティブノードを識別するステップと、
分解されたＰ２Ｐネットワーク内のファイルを管理するためにアクティブノードを使用するためのプロセスを開始するステップとを含む、方法。
１６．ファイルのサブネットワーク指標が、ハッシュ関数とファイルのファイル名とを使用して計算される、第１５項に記載の方法。
１７．複数のサブネットワークが、ファイルのサブネットワーク指標に関連しているとして識別されるとき、複数のサブネットワークのそれぞれのアクティブノードが識別されて、ファイルを管理するために複数のサブネットワークの識別されたアクティブノードのそれぞれを使用するような形でファイルを管理するためのプロセスが開始される、第１５項に記載の方法。
１８．ファイルのサブネットワーク指標に関連するサブネットワークのうちの１つを識別するステップが、
ファイルのサブネットワーク指標を使用して、ネットワークマップを探索するステップを含み、
ネットワークマップが、サブネットワークのそれぞれに関して、１つまたは複数のサブネットワーク指標に対するサブネットワークのマッピングを含む、第１５項に記載の方法。
１９．ファイルを管理するステップが、分解されたＰ２Ｐネットワーク内にファイルを記憶するステップを含む、第１５項に記載の方法。
２０．ファイルを管理するためのプロセスが、ファイルをサブネットワークのうちの識別された１つの識別されたアクティブノード上に記憶させるためのプロセスを含む、第１９項に記載の方法。
２１．ファイルをサブネットワークのうちの識別された１つのアクティブノードに向けて伝搬するステップ
をさらに含む、第２０項に記載の方法。
２２．ファイルをノードがメンバであるサブネットワークのうちの１つの中に記憶させるためのプロセスを開始するステップ
をさらに含む、第１９項に記載の方法。
２３．ファイルを管理するステップが、分解されたＰ２Ｐネットワーク内でファイルを位置特定するステップを含む、第１５項に記載の方法。
２４．ファイルを管理するステップが、サブネットワークのうちの識別された１つの中のファイルを探索するためにアクティブノードを使用するためのプロセスを含む、第２３項に記載の方法。
２５．サブネットワークのうちの識別された１つの中のファイルを探査するためにアクティブノードを使用するためのプロセスを開始するステップが、
アクティブノードに対してサブネットワークのうちの識別された１つの中のファイルを探索する要求をアクティブノードに向けて伝搬するステップを含む、第２４項に記載の方法。
【０２１７】
本発明の教示を組み込んだ様々な実施形態が本明細書で示され、説明されているが、当業者は、依然としてこれらの教示を組み込む、多くのその他の様々な実施形態を容易に考案することができる。
【図１】
0005551270.tif 000004
【図２】
0005551270.tif 000005
【図３】
0005551270.tif 000006
【図４】
0005551270.tif 000007
【図５】
0005551270.tif 000008
【図６】
0005551270.tif 000009
【図７】
0005551270.tif 000010
【図８Ａ】
0005551270.tif 000011
【図８Ｂ】
0005551270.tif 000012
【図８Ｃ】
0005551270.tif 000013
【図８Ｄ】
0005551270.tif 000014
【図８Ｅ】
0005551270.tif 000015
【図９】
0005551270.tif 000016
【図１０】
0005551270.tif 000017