(57)【要約】【課題】ネットワークのノードのワークロードを分割する。【解決手段】本発明にかかる情報サービスのためのネットワーク（２１０）のノード（１３０）から最高ワークロードを有する一組のノードを決定する方法は、ネットワーク（２１０）の最高ワークロードを有する一組のノードのリスト（７１２）を、ネットワーク（２１０）のノードを通じて、ネットワーク（２１０）の最終宛先（７０１）へルーティングすることと、リスト（７１２）が最終宛先（７０１）へルーティングされる際に、リスト（７１２）を受信した各ノードにおいてリスト（７１２）を受信した各ノードのワークロードを含めるか否かを判断することとを含む。【選択図】図７
2008526056.tif 000002
【特許請求の範囲】
【請求項１】
情報サービスのためのネットワーク（２１０）のノード（１３０）から最高ワークロードを有する一組のノードを決定する方法であって、
前記ネットワーク（２１０）の最高ワークロードを有する前記一組のノードのリスト（７１２）を、前記ネットワーク（２１０）のノードを通じて、前記ネットワーク（２１０）の最終宛先（７０１）へルーティングすることと、
前記リスト（７１２）が前記最終宛先（７０１）へルーティングされる際に、前記リスト（７１２）を受信した各ノードにおいて前記リスト（７１２）を受信した各ノードのワークロードを含めるか否かを判断することと
を含む方法。
【請求項２】
前記ネットワーク（２１０）の最高ワークロードを有する前記一組のノードの前記リスト（７１２）を、前記ネットワーク（２１０）のノードを通じて、前記ネットワーク（２１０）の最終宛先（７０１）へルーティングすることは、
前記リスト（７１２）を受信した各ノードにおいて、属性分割値以下の属性範囲を含む前記リスト（７１２）を受信したノードのルーティング表における最高レベルのエントリーを特定することと、
前記最高レベルのエントリーからノードを特定することと、
前記特定された最高レベルのエントリーの前記ノードへ前記リスト（７１２）を送信することと
をさらに含む
請求項１に記載の方法。
【請求項３】
前記リスト（７１２）が前記最終宛先（７０１）へルーティングされる際に前記リスト（７１２）を受信した各ノードにおいて、前記リスト（７１２）を受信した各ノードのワークロードを含めるか否かを判断することは、
前記リスト（７１２）を受信した前記各ノードのワークロードが、前記リスト（７１２）の別のノードのワークロードよりも大きいか否かを判断することと、
前記リスト（７１２）を受信した前記各ノードの前記ワークロードが、前記リスト（７１２）の前記別のノードの前記ワークロードよりも大きいことに応じて、前記リスト（７１２）を受信した前記各ノードの前記ワークロードを前記リスト（７１２）に追加することと
をさらに含む
請求項１に記載の方法。
【請求項４】
前記リスト（７１２）は、
所定の個数のワークロード
を含む
請求項３に記載の方法。
【請求項５】
前記リスト（７１２）が、前記リーダノードへルーティングされる際に、前記リスト（７１２）を受信した各ノードの識別情報を前記リスト（７１２）に含めること
をさらに含む請求項１に記載の方法。
【請求項６】
前記最終宛先（７０１）から、前記リスト（７１２）が、前記識別情報を使用して前記最終宛先（７０１）へルーティングされた際に、前記リスト（７１２）を受信した前記ノードのそれぞれへ、前記リスト（７１２）を送信すること
をさらに含む請求項５に記載の方法。
【請求項７】
前記ネットワーク（２１０）の前記ノードのそれぞれは、前記ネットワーク（２１０）で利用可能なサービスについての情報を記憶するように動作可能であり、前記サービスについての問い合わせに応答するように動作可能である
請求項１に記載の方法。
【請求項８】
ネットワーク（２１０）のノード（１３０）であって、
前記ネットワーク（２１０）のノードのワークロードのリスト（７１２）を受信するように動作可能なインターフェース（１１３０）と、
前記リスト（７１２）に前記ノード（１３０）のワークロードを含めるか否かを判断し、前記リスト（７１２）を前記ネットワーク（２１０）の最終宛先（７０１）に向けて転送するように動作可能な処理回路（１１０２）と
を備えるネットワークのノード。
【請求項９】
前記処理回路（１１０２）は、前記リスト（７１２）を前記最終宛先（７０１）に向けて転送するためのルーティング表を生成するようにさらに動作可能である
請求項８に記載のネットワークのノード。
【請求項１０】
前記ノード（１３０）は、ピアツーピアオーバーレイネットワーク（２１０）で利用可能な少なくとも１つのサービスの情報を提供するように動作可能な、前記ピアツーピアオーバーレイネットワーク（２１０）のノードである
請求項８に記載のネットワークのノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、ネットワークに関する。より詳細には、本発明は、ネットワークのノードのワークロードを分割することに関する。
【背景技術】
【０００２】
［背景］
インターネット等の大きなネットワークは、多くのピアツーピアシステムのインフラストラクチャを提供することができ、今や、さまざまなサービスをユーザに提供するのに使用されている。
たとえば、ストリーミングおよびトランスコード等のメディアサービス、航空券の予約およびホテルの予約等の電子商取引のウェブサービス、または、計算およびデータのグリッドコンピューティングサービスが、大きなネットワークを介して利用可能であり得る。
【特許文献１】国際公開第２００４／０８６７２０号
【特許文献２】米国特許出願公開第２００２／１７８２６１号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
これらのネットワークサービスを効果的に利用する際の基本的な課題は、インターネット等の大きなネットワークで所望のサービスを効率的に且つ素早く突き止めることである。
サービスを発見する課題は、いくつかの要因によって複雑化されている。
たとえば、ピアツーピアファイル共有システムに使用される集中化（centralized）情報サービス等、このような発見を容易にするための集中化情報サービスが利用された場合、利用可能なサービス数およびユーザ数が増加しても、集中化情報サービスは容易に拡大しない。
加えて、各サービスは、変化し続け、情報サービスにおいて更新を受ける必要がある、たとえば負荷および待ち時間といったいくつかの動的な属性を有する。
所望の更新レートは、集中化情報サービスによって維持することができない。
また、情報サービスを最小のダウンタイムで提供するには、数人のシステムアドミニストレータがメンテナンスを行うことが必要となる場合があり、これは多大な費用を要する。
最後に、情報サービスは、より高速な応答時間のために局所性を考慮すべきである。
たとえば、所望のサービスの要求を含む問い合わせは、その問い合わせを最初に送信するノードの、ネットワークにおける近接したノードへ向けられるべきであり、問い合わせに対する応答として返されるサービスも、問い合わせを行ったノードにネットワークにおいて近接して存在すべきである。
【課題を解決するための手段】
【０００４】
［概要］
一実施の形態によれば、ネットワークのノードは、情報サービスを提供するように動作可能である。
最高ワークロードを有する一組のノードが、オーバーレイネットワークのノードを通じてネットワークの最終宛先へノードのワークロードのリストをルーティングすることによって特定される。
リストを受信した各ノードは、リストにワークロードを含めるか否かを判断する。
【０００５】
実施形態の以下の詳細な説明が添付図面に関して考慮された時に、実施形態のさまざまな特徴は、当該以下の詳細な説明についてより良く理解されるにつれてより十分に認識することができる。
【発明を実施するための最良の形態】
【０００６】
［実施形態の詳細な説明］
簡単にするために且つ例示の目的で、実施形態の原理を説明する。
しかしながら、当業者は、同じ原理が、すべてのタイプのネットワークシステムに等しく適用可能であり、且つ、すべてのタイプのネットワークシステムで実施できること、および、あらゆるこのような変形が、実施形態の真の趣旨および範囲から逸脱しないことを容易に認識するであろう。
その上、以下の詳細な説明では、添付図面が参照される。
添付図面は、特定の実施形態を示している。
実施形態の趣旨および範囲から逸脱することなく、電気的な変更、機械的な変更、論理的な変更、および構造的な変更を実施形態に対して行うことができる。
【０００７】
一実施形態によれば、ネットワークにおいてサービスを発見するための分散情報サービスが提供される。
この情報サービスは、ネットワークを介して利用可能なサービスについての情報をユーザに提供する。
ユーザは、ネットワークを介して利用可能な所望のサービスについての情報を情報サービスに問い合わせる。
情報サービスは、所望のサービスを提供するように動作可能なネットワークのサービスノードのリストで応答することができる。
【０００８】
情報サービスは、利用可能なサービスについての情報を記憶するピアツーピアネットワークの複数の情報サービスノードを含む分散情報サービスである。
ノードが一時的なものである傾向を有する従来のピアツーピアネットワークと異なり、情報サービスノードは、短期間ピアツーピアネットワークに参加するのではなく、長期間ピアツーピアネットワークに留まる可能性が高いピアツーピアアーキテクチャの安定したノードである。
ピアツーピアネットワークは、分散アーキテクチャで情報サービスノードを組織化する一例であり、任意のタイプの分散アーキテクチャを使用できることが当業者には明らかであろう。
【０００９】
情報サービスの分散性によって、情報のすべての問い合わせを取り扱う従来の中央情報レポジトリを使用することに関連するボトルネックが最小にされ、したがって、問い合わせ応答時間が改善される。
ピアツーピアネットワークのオーバーレイネットワークが、ネットワークにおいて利用可能なサービスの発見を容易にするために、分散情報サービスにおけるサービスについての問い合わせおよび情報を効率的にルーティングするのに使用される。
【００１０】
本明細書で使用されるようなサービスは、入力に処理を行い、出力を生成するあらゆる機能を指す。
サービスの例には、トランスコード、言語翻訳、暗号化、画像修復および画像解析、エラー訂正、異なる言語へのコンテンツの変換等が含まれる。
また、１つのサービスは、複数のサービスで構成される場合がある。
たとえば、或るサービスの出力は別のサービスの入力となる場合があり、サービスを構成するのに使用される同じ数の中間サービスについて同様である。
構成されたサービスの一例には、ユーザが特定のエンドユーザデバイスで視聴できるフォーマットでストリーミングビデオを受信できるようなトランスコードサービスに入力されるビデオストリーミングサービスを含むメディアサービスが含まれ得る。
【００１１】
他のタイプのサービスには、コンピューティングサービス、データストレージサービス、およびグリッドコンピューティングサービスが含まれる。
グリッドコンピューティングサービスは、コンピュータ資源の共有を包含することができる。
グリッドコンピューティングサービスによって、たとえば、ユーザは、アプリケーション要件等の仕様に基づいてコンピューティングサービスにアクセスすることが可能になる。
【００１２】
［１．システムの概観］
図１は、ユーザノード１１０とサービスノード１２０と情報サービスノード１３０とを含むネットワーク１００を示している。
ネットワーク１００の一例には、サービスがユーザに利用可能とされるインターネット等の大規模ネットワークが含まれる。
しかしながら、実施形態は、サービスを提供するより小さなネットワークで実施してもよい。
ユーザノードには、サービスを受信するように動作可能なあらゆるノードが含まれる。
通常、ユーザノードは、ユーザが所望するサービスがネットワーク１００において利用可能であるか否か、および、そのサービスが利用可能である場合に、そのサービスを受信するためにどのサービスノードと連絡するかを判断するための問い合わせを情報サービスにサブミットする。
サービスノード１２０には、サービスを提供するように動作可能なノードが含まれる。
ユーザノードは、情報サービスに問い合わせることによって所望のサービスを提供するように動作可能なサービスノードを特定した後、所望のサービスを提供するサービスノードからサービスを受信する。
ノードとは、ネットワークを介してメッセージを送信および／または受信でき、且つ、通常は或るタイプのデータ処理を実行するように動作可能であるあらゆるデバイスである。
ノードの例には、ルータ、サーバ、およびエンドユーザデバイスが含まれる。
エンドユーザデバイスは、ＰＤＡ、パーソナルコンピュータ、ラップトップ、および携帯電話等である。
【００１３】
情報サービスは、一実施形態によれば、情報サービスノード１３０によって提供される。
情報サービスノード１３０は、ネットワーク１００においてサービスの発見を可能にする。
情報サービスノード１３０は、サービスの発見に加えて、Sujoy Basu他による「Splitting Workload Of A Node」という発明の名称の同時係属中の米国特許出願（代理人整理番号第２００５０００３１−１号）に記載されたいくつかの技法を使用して、それらの情報サービスノード間でワークロードをバランスさせ、且つSujoy Basu他による「Routing a Service Query In An Overlay Network」という発明の名称の同時係属中の米国特許出願（代理人整理番号第２００４０６０５８−１号）に記載されたルーティングを実行する。
これらの米国特許出願の双方は、その全内容が参照により援用される。
上述したように、情報サービスノード１３０を含む情報サービスは、ネットワーク１００におけるサービスの発見に関連する機能を実行する。
２つの重要な機能は、利用可能なサービスについての情報を記憶すること、および利用可能なサービスについての問い合わせに対して応答することを含む。
情報サービスノード１３０は、ネットワーク１００における、図２に示すピアツーピアネットワーク２００に設けられる。
ピアツーピアネットワーク２００、および、ピアツーピアネットワーク２００のオーバーレイネットワーク２１０は、とりわけ、情報サービスノード１３０にサービスについての情報を記憶すること、情報サービスノード１３０間でルーティングを行うこと、および問い合わせに対して応答するために使用される。
【００１４】
図２に示すように、オーバーレイネットワーク２１０は、基礎と成るピアツーピアネットワーク２００をオーバーレイする。
オーバーレイネットワーク２１０は、ピアツーピアネットワーク２００の論理表現であり、以下で詳述するように、サービスを定義するために使用される属性および属性範囲に基づいて、問い合わせおよびサービス情報を効率的にルーティングするように動作可能である。
図２は、ピアツーピアネットワーク２００が情報サービスノード１３０を含むこと、並びに、ユーザノード１１０およびサービスノード１２０が必要に応じてピアツーピアネットワーク２００の情報サービスノード１３０と通信することを示す目的で、ネットワーク１００の中央に位置する情報サービスノード１３０、並びに、オーバーレイネットワーク２１０の周囲に設けられたユーザノード１１０およびサービスノード１２０を示している。
待ち時間（たとえば、ユーザノードが問い合わせ応答に対する応答を得るのに要する時間の長さ）を最小にするために、情報サービスノード１３０は、ネットワーク１００のいくつかの異なるエリアに設けてもよい。
【００１５】
［２．属性空間および属性部分空間］
サービスは、さまざまなサービス属性の値を指定することによって特徴付けられる。
たとえば、コンピューティングサービスは、オペレーティングシステムおよびアプリケーション、物理メモリの量、ディスク容量、およびネットワーク帯域幅等の属性の値によって特徴付けられてもよい。
【００１６】
情報サービスは、これらの属性および属性値を追跡する。
各情報サービスノードは、属性の１つまたは複数の一定の一組の値の追跡を担当する。
追跡されるすべての属性の数組の属性値を組み合わせることによって、その情報サービスノードによって追跡される属性部分空間が形成される。
【００１７】
情報サービスノード１３０により構成される情報サービスは、図３に示す属性空間３００を含む。
属性空間３００は、ピアツーピアネットワーク１００の利用可能なサービスについてのすべての情報を含む。
属性空間３００は、情報サービスに記憶された情報の論理表現である。
【００１８】
属性空間３００は、情報サービスノード１３０間に分散される。
図３には、例示の目的で、３つの情報サービスノード１３０ａ〜１３０ｃのみ示す。
情報サービスノード１３０のそれぞれには、属性空間３００の属性部分空間の担当が割り当てられる。
各属性部分空間は、特定の属性および属性値に関連付けられる。
情報サービスにおいて、サービスは、サービスによって変化する所定の属性および属性値により定義される。
属性および属性値は、情報サービスノード１３０のそれぞれに割り当てられる。
サービスは、１つの情報サービスノードの１つの属性部分空間内に分類されるように定められ、したがって、そのサービスの属性および属性値が、情報サービスノードの属性部分空間に割り当てられた属性および属性値と一致する場合、そのサービスについての情報は、最終的に、その情報サービスノードに記憶される。
たとえば、属性部分空間は、特定の属性の属性値を含むことができる。
或るサービスが、或る属性部分空間の属性値と交わる１つまたは複数の属性値を使用して定義される場合、そのサービスは、その属性部分空間内に分類することができる。
属性部分空間をさらに説明する一例は以下の通りである。
ネットワーク１００におけるすべてのサービスを定義するための所定の属性のリストは、メモリ、ディスク容量、平均負荷、オペレーティングシステム、アプリケーション、サービスアップタイム、および応答時間を含んでもよい。
グリッドコンピューティングサービスは、コンピュータ資源の共有を含んでもよい。
グリッドコンピューティングサービス（たとえばグリッドコンピューティングサービス１）は、共有できるコンピュータ資源に基づいて定義することができる。
グリッドコンピューティングサービス１は、以下の属性値を使用して定義される。
【００１９】
［グリッドコンピューティングサービス１の属性および属性値の表１］
メモリ：１ＧＢ，
ディスク容量：２．５〜５ＧＢ，
オペレーティングシステム：Ｌｉｎｕｘ２．４，
平均負荷：０，
アプリケーション：Ｍａｙａ、Ｒｅｎｄｅｒｍａｎ，
サービスアップタイム：９９．５％，
応答時間：≦２０ｍｓ，
【００２０】
図３に示すように、情報サービスノード１３０ａには、メモリ≦１ＧＢの属性値によって定義される属性部分空間が割り当てられている。
グリッドコンピューティングサービス１の広告３１０は、表１の属性値を含み、情報サービスノード１３０ａに記憶される。
その理由は、情報サービスノード１３０ａが、メモリ属性値≦１ＧＢを有するすべての広告を記憶するからである。
【００２１】
広告は、特定のサービスを定義するために使用される属性および属性値を含む。
ネットワーク１００のすべてのサービスを定義するために所定の一組の属性を使用してもよい。
サービスノード１２０のそれぞれは、その所定の一組の属性における属性のそれぞれについて属性値を測定するかまたは他の方法で決定する。
また、サービスノード１２０のそれぞれは、それらのノードの広告を情報サービスへ定期的に送信する。
オーバーレイネットワーク２１０は、広告が分類される属性部分空間を所有する適切な情報サービスノードへ広告を自動的にルーティングする。
グリッドコンピューティングサービス１についての上記に示した属性および属性値は、グリッドコンピューティングサービス１の広告１３０の情報の一例である。
たとえば、グリッドコンピューティングサービス１を提供するサービスノードは、表１に示すグリッドコンピューティングサービス１の属性値を定期的に測定するかまたは他の方法で決定し、属性値を含む広告３１０をオーバーレイネットワーク２１０へ送信して、その広告が分類される属性部分空間を所有する情報サービスノードに記憶する。
図３に示す例では、情報サービスノード１３０は、グリッドコンピューティングサービス１の広告３１０を情報サービスノード１３０ａへルーティングした。
その理由は、情報サービスノード１３０ａが、オーバーレイネットワーク２１０へ送信される、メモリ≦１ＧＢ内の属性値を有するサービスについてのすべての情報を記憶するからである。
すなわち、グリッドコンピューティングサービス１は、メモリ＝属性の１ＧＢの属性値を使用して定義され、１ＧＢの属性値が交わる。
すなわち、１ＧＢの属性値は、情報サービスノード１３０ａの属性部分空間のメモリ≦１ＧＢの属性範囲に含まれる。
このように、グリッドコンピューティングサービス１は、情報サービスノード１３０ａの属性部分空間内に分類される。
【００２２】
グリッドコンピューティングサービス１について上記に示した属性は、ネットワーク１００におけるサービスを定義するために使用される所定の一組の属性の例である。
利用可能なサービスを定義するのに他の属性を使用してもよいことが当業者に明らかであろう。
また、それらのサービスを定義するのに或る所定の一組の属性を使用することもできる。
しかしながら、各サービスは、異なる属性値を有してもよい。
これらの異なる属性値は、定期的に測定されて、対応する属性部分空間を有する情報サービスノードに記憶される。
【００２３】
問い合わせも、同様に、ピアツーピアネットワーク２００に記憶される。
たとえば、図２に示すオーバーレイネットワーク２１０は、メモリ＞１ＧＢおよびディスク容量＝２ＧＢの属性を有するサービスの要求を含む、図３に示す問い合わせ３２０を受信する場合がある。
問い合わせ３２０は、情報サービスノード１３０ｂによって所有される属性部分空間に分類される。
したがって、問い合わせ３２０は、オーバーレイネットワーク２１０を通じて情報サービスノード１３０ｂへルーティングされる。
問い合わせ３２０は、情報サービスノード１３０ｂへ自動的にルーティングされ且つ情報サービスノード１３０ｂに記憶され、情報サービスノード１３０ｂは、情報サービスノード１３０ｂに記憶された広告を探索して、あらゆる一致するものを、サービスを要求したノードへ送信することにより、この問い合わせに応答する。
【００２４】
属性空間３００を含むオーバーレイネットワーク２１０は、範囲問い合わせをサポートする。
範囲問い合わせは、所望のサービスを特定する１つまたは複数の属性範囲を含む。
情報サービスノード１３０は、オーバーレイネットワーク２１０を使用して、範囲問い合わせを、属性値の範囲を含む属性部分空間へ、または問い合わせの属性値の範囲と交わる属性部分空間へルーティングするように動作可能である。
加えて、問い合わせは、複数の属性範囲を含むことができ、問い合わせは、属性範囲を含む属性部分空間または属性範囲と交わる属性部分空間を有する２つ以上の情報サービスノードへルーティングすることができる。
【００２５】
［３．情報サービスノード］
図４は、情報サービスノード１３０ｂ等の情報サービスノードに記憶された情報の一部の一例を示している。
情報サービスノード１３０ｂは、ストレージキャッシュ４１０、オーバーレイルーティング表４２０、およびレプリカロケーションキャッシュ４４０を含む。
ストレージキャッシュ４１０は、ローカルな問い合わせ４０１およびグローバルな問い合わせ４０２を記憶する。
また、ストレージキャッシュ４１０は、ローカルな広告４０５およびグローバルな広告４０６も記憶する。
グローバルな問い合わせ４０２には、オーバーレイネットワーク２１０を通じて情報サービスノード１３０ｂへルーティングされる問い合わせが含まれる。
その理由は、問い合わせは、情報ストレージノード１３０ｂによって所有される属性部分空間に分類されるからである。
図３に示す問い合わせ３２０は、グローバルな問い合わせの一例である。
【００２６】
ローカルな問い合わせ４０１には、情報サービスノード１３０ｂによって受信されるあらゆる問い合わせが含まれる。
たとえば、情報サービスノード１３０ａは、問い合わせを受信して、その問い合わせを、オーバーレイネットワーク２１０にあるその宛先に向けて転送することができる。
オーバーレイネットワーク２１０は、問い合わせが分類される属性部分空間を所有する情報サービスノードを含むことができる。
問い合わせをその宛先に向けて転送する前に、問い合わせは、ストレージキャッシュ４１０にローカルにキャッシュされる。
また、情報サービスノード１３０ｂは、問い合わせをその宛先に向けて転送する前に、ストレージキャッシュ４１０に記憶されたローカルな広告４０５を探索して、問い合わせと一致するものが何か見つかるか否かを判断する。
一致するものが見つかった場合、情報サービスノード１３０ｂは、たとえば、サービスを要求したノードおよび関連するサービスノードへ一致する広告を送信することによって、その問い合わせに応答する。
宛先は、サービスを要求したノードにより近いサービスノードによって提供される、問い合わせと一致するサービスの広告を含む場合があることから、情報サービスノード１３０ｂは、問い合わせをその宛先に向けて引き続きルーティングする場合がある。
或いは、情報サービスノード１３０ｂは、一致するものがローカルにキャッシュされている場合に、問い合わせを転送しない場合がある。
【００２７】
グローバルな広告４０６は、オーバーレイネットワーク２１０を通じて情報サービスノード１３０ｂへルーティングされる広告を含む。
その理由は、それらの広告が、情報ストレージノード１３０ｂによって所有される属性部分空間に分類されるからである。
図３に示す広告３１０は、情報サービスノード１３０ａのグローバルな広告の一例である。
【００２８】
ローカルな広告４０５は、情報サービスノード１３０ａによって受信されたあらゆる広告を含む。
たとえば、情報サービスノード１３０ａは、広告を受信して、その広告をその宛先に向けて転送することができる。
これらの広告は、ストレージキャッシュ４１０にローカルにキャッシュされ、一致するものがローカルキャッシュに見つかった場合に、問い合わせに対するより高速な応答時間を提供するために探索することができる。
【００２９】
情報サービスノード１３０ｂは、オーバーレイルーティング表４２０も含む。
オーバーレイルーティング表４２０は、以下のフィールド、すなわち、レベル４２１、ＩＰアドレス４２２、確率４２３、および属性範囲４２４を含む。
レベル４２１は、一般に、情報サービスノード１３０ｂが自身のワークロードを別の情報サービスと分割した回数に関連付けられている。
情報サービス１３０ｂが自身のワークロードを別の情報サービスノードと分割する時、情報サービスノード１３０ｂのルーティング表の新たなエントリーが、ルーティング表における既存の最高レベルよりも大きなレベルに作成される。
たとえば、エントリー４３１および４３２は、情報サービスノード１３０ｂが自身のワークロードを情報サービスノード１３０ｃと分割した時にレベル１に作成されたものである。
エントリー４３３は、情報サービスノード１３０ｂがその後自身のワークロードを情報サービスノード１３０ｄと分割した時にレベル２に作成されたものである。
ワークロードの分割は、情報サービスノードが、オーバーレイネットワーク２１０の他の情報サービスノードと比較して高いワークロードを有すると判断された時に行うことができる。
確率４２３は、情報サービスノードが所望のデータを有する確率を示す。
たとえば、エントリー４３０は、情報サービスノード１３０ａが、メモリ≦１ＧＢを有する広告を常に記憶していることを示し、エントリー４３１は、情報サービスノード１３０ｃが、ディスク容量≦２ＧＢを有する広告を常に記憶していることを示す。
一方、情報サービスノード１３０ｃが、ディスク容量≦５ＧＢを有する広告を記憶している確率は５０％である。
ルーティング表にエントリーを生成することおよび確率は、上記で参照により援用された米国特許出願にさらに詳細に記載されている。
【００３０】
ルーティング表４２０のＩＰアドレスフィールド４２２は、特定のエントリーの情報サービスノードの宛先を特定するためのものである。
たとえば、情報サービスノード１３０ｂは、広告を受信して、その広告がメモリ属性＜１ＧＢを有するものと判断した場合、エントリー４３０を使用して、その広告をその次の宛先、たとえば情報サービスノード１３０ａへルーティングする。
情報サービスノード１３０ａのＩＰアドレスは、エントリー４３０のＩＰアドレスフィールドに設けることができ、情報サービスノード１３０ｂは、ＩＰルーティングを使用して、メッセージをネットワーク２００の情報サービスノード１３０ａへ送信する。
【００３１】
レプリカロケーションキャッシュ４４０は、各サービスノードが連絡を受ける回数および連絡を受けたことがあるサービスノードの待ち時間に関する情報を記憶する。
レプリカとは、情報サービスノードのコピーである。
たとえば、オリジナルの情報サービスノードが、ネットワーク１００の或るエリアのユーザノードによって頻繁に連絡されていたと判断された場合、および／または、オリジナルの情報サービスノードからの、問い合わせに対する応答等のメッセージを受信するユーザノードが、情報サービスノードへの長い待ち時間を経験し続けていたと判断された場合、情報サービスノードをネットワーク１００の新たなロケーションに複製することができる。
情報サービスノード１３０ｂは、レプリカロケーションキャッシュ４４０の情報を使用して、待ち時間を削減するためにネットワーク１００の別のエリアにレプリカを追加するか否かを判断することができる。
【００３２】
［４．ルーティング］
図５は、オーバーレイネットワーク２１０で問い合わせ５０１をルーティングする一例を示している。
ユーザノード１１０ａは、問い合わせ５０１を、オーバーレイネットワーク２１０の情報サービスノード、たとえば情報サービスノード１３０ａへ送信する。
一例では、ユーザノード１１０ａがオーバーレイネットワーク２１０において最初に連絡を取る情報サービスノードは、ネットワーク近接性に基づいて選択することができる。
たとえば、ユーザノード１１０ａがピアツーピアネットワーク１００に参加する時の初期化ステップの期間中、ユーザノード１１０ａは、ユーザノード１１０ａにネットワークにおいて極めて近接した情報サービスノードのＩＰアドレスを示すメッセージをその情報サービスノードから受信する。
待ち時間、ホップ数等のネットワークメトリックに基づき測定された距離を使用してノードのロケーション情報を決定する一例は、２００４年１月３０日に出願されたZhichen Xu他による「Selecting Nodes Close To Another Node In A Network Using Location Information For The Nodes」という発明の名称の米国特許出願第１０／７６７，２８５号に記載されている。
この米国特許出願は、本出願の譲受人に譲渡されている。
ロケーション情報は、ネットワークの他のノードへのネットワーク近接性を判断するのに使用され、最も近い情報サービスノードを選択するのに使用することができる。
ネットワークのノードの距離およびロケーション情報を決定するための他の技法も使用することができる。
【００３３】
ユーザノード１１０ａが、極めて近接した情報サービスノード、たとえば情報サービスノード１３０ａ、を特定した後、ユーザノード１１０ｂは、問い合わせ５０１を情報サービスノード１３０ａへ送信する。
問い合わせ５０１は、ユーザノード１１０ａが所望するサービスを定義する属性値を含む。
属性値は、範囲の場合も、単一の値の場合もある。この例では、問い合わせ５０１は以下の属性値を含む。
【００３４】
［問い合わせ５０１の属性および属性値の表２］
メモリ：２ＧＢ，
ディスク容量：１０ＧＢ，
オペレーティングシステム：Ｌｉｎｕｘ２．４，
応答時間：５０〜１００ｍｓ，
【００３５】
情報サービスノード１３０ａは問い合わせ５０１を受信する。
情報サービスノード１３０ａの属性部分空間は、メモリ≦１ＧＢを含む。
問い合わせ５０１は、メモリについて２ＧＢの属性値を含む。
この２ＧＢの属性値は、情報サービスノード１３０ａの属性部分空間のメモリ≦１ＧＢの属性範囲に含まれず、したがって、問い合わせ５０１は、情報サービスノード１３０ａの属性部分空間に分類されない。
【００３６】
情報サービスノード１３０ａは、自身のルーティング表から、問い合わせ５０１の属性値を含む情報サービスノードを特定する。
たとえば、情報サービスノード１３０ａは、最低レベルのエントリー、たとえばエントリー０から開始して、問い合わせ５０１の属性値と交わる属性値を含むエントリーを求めて自身のルーティング表を探索する。
レベル０、情報サービスノード１３０ｂのＩＰアドレス、１の確率、およびメモリ＞１ＧＢを含むエントリー５１０が示されている。
エントリー５１０に基づいて、情報サービスノード１３０ａは、問い合わせ５０１を情報サービスノード１３０ｂへ送信する。
情報サービスノード１３０ｂの属性部分空間は、問い合わせ５０１で指定された５０〜１００ｍｓの応答時間範囲に含まれない応答時間＜２０ｍｓを含む。
したがって、情報サービスノード１３０ｄは、自身のルーティング表を探索して、たとえばエントリー５１１を見つける。
エントリー５１１は、情報サービスノード１３０ｄを特定し、問い合わせ５０１は、情報サービスノード１３０ｄへ送信される。
情報サービスノード１３０ｄは、問い合わせ５０１の属性値を含む属性部分空間を有し、したがって、問い合わせ５０１は、その属性部分空間に分類される。
情報サービスノード１３０ａは、自身のグローバルキャッシュに記憶されたいずれかの広告が問い合わせを満たすか否かを判断する。
たとえば、サービスは、当該サービスが一致するものであるとみなされるためには、問い合わせ５０１で指定されたすべての属性値を有することを必要とし得る。
一致するものが見つかった場合、情報サービスノード１３０ａは、たとえばサービスを提供するサービスノードのＩＰアドレスを含む広告をユーザノード１１０ａへ送信することによって問い合わせ５０１に応答する。
また、情報サービスノード１３０ａは、広告のために、ユーザノード１１０ａが広告に記載されたサービスを要求していることを示すメッセージを、ユーザノード１１０ａのＩＰアドレスと共にサービスノードへ送信することもできる。
問い合わせ５０１も、情報サービスノード１３０ｃのグローバルキャッシュに記憶される。
【００３７】
情報サービスノード１３０ａおよび１３０ｂは、問い合わせ５０１を転送する前に、自身のローカルキャッシュに問い合わせ５０１のコピーを記憶することができる。
また、情報サービスノード１３０ａおよび１３０ｂは、問い合わせを転送する前に、自身のローカルキャッシュに記憶されたいずれかの広告が問い合わせ５０１を満たすか否かを判断することもできる。
一致するものが見つかった場合、情報サービスノード１３０ａは、たとえばサービスを提供するサービスノードのＩＰアドレスを含む広告をユーザノード１１０ａへ送信することによって問い合わせ５０１に応答することができる。
また、情報サービスノード１３０ａは、ユーザノード１１０ａが広告のサービスを要求していることを示すメッセージを、ユーザノード１１０ａのＩＰアドレスと共に、広告に記載されたサービスを提供するサービスノードへ送信することもできる。
【００３８】
図５に関して上述した例では、問い合わせ５０１は、情報サービスノード１３０ｄの属性部分空間に分類されるので、情報サービスノード１３０ｄへルーティングされる。
問い合わせ５０１は、問い合わせ５０１に一致する広告を含み得る他の情報サービスノードへ引き続きルーティングされる場合がある。
たとえば、別の情報サービスノードは、以下の属性部分空間、すなわち、メモリ＞１ＧＢ、ディスク容量＞５ＧＢ、応答時間≧２０ｍｓ、およびＬｉｎｕｘ１．０〜２．５を含むオペレーティングシステム、を含む場合がある。
問い合わせ５０１は、上述した属性部分空間にも分類されることから、情報サービスノード１３０ｄは、その属性部分空間を含む情報サービスノードへ問い合わせ５０１をルーティングすることができる。
したがって、ユーザノード１１０ａは、自身のローカルキャッシュで一致するものを見つけた情報サービスノードを含む複数の情報サービスノードから探索結果を受信する場合があり、ユーザノード１１０ａは、所望のサービスを受信するためのサービスノードを選択することができる。
【００３９】
加えて、オーバーレイネットワーク２１０は、範囲の問い合わせもサポートすることに留意すべきである。
問い合わせ５０１は、属性の応答時間について、属性値の範囲５０〜１００ｍｓを含む。
問い合わせ５０１は、１つまたは複数の範囲を含むことができ、その範囲と交わる情報サービスノードへルーティングされる。
たとえば、属性値５０〜１００ｍｓのいずれかを含む属性部分空間へ問い合わせ５０１をルーティングすることができる。
【００４０】
図６は、オーバーレイネットワーク２１０における広告６０１のルーティングを示している。
広告は、オーバーレイネットワーク２１０において問い合わせと同様にルーティングされる。
サービスノード１２０は、自身の属性を定期的に測定して、測定された属性を含む自身の広告をオーバーレイネットワーク２１０へ送信する。
各広告は、所定の一組の属性における属性ごとに属性値または属性値の範囲を含んでもよい。
所定の一組の属性の一例は、メモリ、ディスク容量、オペレーティングシステム、サービスを提供するサービスノードの平均負荷、アプリケーション、サービスアップタイム、およびサービスを提供する情報サービスノードの応答時間を含む。
【００４１】
図６は、サービスノード１２０ｂによって生成された広告６０１を示している。
広告６０１は以下のものを含む。
【００４２】
［広告６０１の属性値の表３］
メモリ：１ＧＢ，
ディスク容量：２．５〜５ＧＢ，
オペレーティングシステム：Ｌｉｎｕｘ２．４，
平均負荷：０，
アプリケーション：Ｍａｙａ、Ｒｅｎｄｅｒｍａｎ，
サービスアップタイム：９９．５％，
応答時間：≦２０ｍｓ，
【００４３】
たとえば、情報サービスノード１３０ａは、サービスノード１２０ｂに極めて近接しているので、サービスノード１２０ｂは、情報サービスノード１３０ａへ広告６０１を送信することができる。
広告６０１はメモリ＞１ＧＢを有し、且つ、情報サービスノード１３０ａの属性部分空間はメモリ≦１ＧＢを含むので、広告６０１は、情報サービスノード１３０ａによって所有される属性部分空間に分類されない。
したがって、情報サービスノード１３０ａは、自身のルーティング表のエントリー６１０から情報サービスノード１３０ｂを特定する。
たとえば、情報サービスノード１３０ｂは、最低レベルのエントリーから開始して、広告６０１の属性値と交わる属性値を含むエントリーを求めて自身のルーティング表を探索する。
エントリー６１０は、情報サービスノード１３０ｂを特定し、広告６０１は、情報サービスノード１３０ｂへ送信される。
広告６０１のディスク容量は５ＧＢ以下であるので、広告６０１は、情報サービスノード１３０ｂによって所有される属性部分空間に分類されない。
情報サービスノード１３０ｂは、ディスク容量≦５ＧＢの属性値を含む自身のルーティング表のエントリー６１１から情報サービスノード１３０ｃを特定する。
広告６０１は、情報サービスノード１３０ｃの属性部分空間に分類され、情報サービスノード１３０ｃに記憶される。
広告６０１を転送する前に、情報サービスノード１３０ａおよび１３０ｂは、広告６０１を自身のローカルキャッシュに記憶する。
加えて、情報サービスノード１３０ｃは、自身のグローバルキャッシュに記憶するために広告６０１をコピーすることができ、広告６０１が分類される属性部分空間を含む他の情報サービスノードへ広告６０１を転送することができる。
【００４４】
［４．上位Ｋ個のノードを特定するための分散アルゴリズム］
ワークロードは、図２に示すオーバーレイネットワーク２１０の情報サービスノード１３０のそれぞれによって定期的に測定される。
ワークロードは、１つまたは複数のメトリックから計算することができる。
これらのメトリックには、記憶された広告の個数、処理された問い合わせの個数、問い合わせを処理する平均待ち時間、たとえば毎秒処理される問い合わせ等のスループット等が含まれるが、これらに限定されるものではない。
【００４５】
各エポック（epoch）の初めに、情報サービスノード１３０は交換フェーズに参加する。
各エポックは、交換フェーズおよび／または普及（dissemination）フェーズが実行される期間を含んでもよい。
エポックカウンタまたは次のエポックの開始時刻を上位Ｋリストに含めてもよい。
エポックカウンタまたは次のエポックの開始時刻は、情報サービスノードが、その情報サービスノードによって受信されたリストが現在のエポックについてのものであるか否かを判断するのに使用することができる。
交換フェーズの期間中、上位Ｋ個のノードのリストが、情報サービスノード１３０で構成されたサービスツリーの上方にルーティングされる。
サービスツリーの最上位にはリーダノードがある。
リーダノードは、事前に選択された情報サービスノードとしてもよい。
【００４６】
上位Ｋリストは、オーバーレイネットワーク２１０の情報サービスノード１３０によって測定された最高ワークロードを含み、オーバーレイネットワーク２１０の情報サービスノード１３０のそれぞれを通じて、図７に示すリーダノード７１０へルーティングされる。
上位Ｋリストが、情報サービスノード１３０のそれぞれを通じてルーティングされる時、各情報サービスノードは、自身の測定されたワークロードを上位Ｋリストの他のワークロードと比較する。
上位Ｋリストを受信した情報サービスノードのワークロードが、上位Ｋリストの別のワークロードよりも大きい場合、その情報サービスノードは、自身のワークロードを上位Ｋリストに含め、場合により、それによりも小さなワークロードは置き換えられる。
上位Ｋリストは、所定の個数であるＫ個のワークロードを含むことができる。
したがって、上位Ｋリストが含むワークロードがＫ個よりも少ない場合、情報サービスノードは、自身のワークロードを上位Ｋリストに含める。
また、上位Ｋリストは、最初に、いくつかの上位Ｋリストで構成することもできる。
たとえば、情報サービスノード１３０を含むサービスツリーの各リーフが、上位Ｋリストを創設する（originate）ことができる。
これらの上位Ｋリストは、いくつかの上位Ｋリストを受信する情報サービスノードで結合することができる。
最終的に、リーダノード７１０が単一の上位Ｋリストを編集する。
【００４７】
上位Ｋリストに加えて、オーバーレイネットワークにおけるＬ最低レベルベクトルおよび最高ルーティング表値も、オーバーレイネットワーク２１０を通じて伝播される。
最低レベルベクトルは、オーバーレイネットワーク２１０のＬ個の最低ルーティング表レベルを含む。
最低レベルベクトルが情報サービスノード１３０のそれぞれを通じてルーティングされる時、各情報サービスノードは、自身のルーティング表の最高レベルを、最低レベルベクトルの他の値と比較する。
最低レベルベクトルを受信した情報サービスノードのルーティング表の最高レベルが、最低レベルベクトルの別の値よりも小さい場合、その情報サービスノードは、自身の最高レベルを最低レベルベクトルに含め、場合により、それよりも大きな値が置き換えられる。
最低レベルベクトルは、所定の個数であるＬ個の値を含むことができる。
したがって、最低レベルベクトルが含む値がＬ個よりも少ない場合、情報サービスノードは、自身の最高レベルを最低レベルベクトルに含める。
また、最低レベルベクトルは、最初に、いくつかの最低レベルベクトルで構成することもできる。
たとえば、情報サービスノード１３０を含むサービスツリーの各リーフが、最低レベルベクトルを創設することができる。
最低レベルベクトルは、いくつかの最低レベルベクトルを受信する情報サービスノードにおいて結合することができる。
最終的に、リーダノード７０１がＬ個の値を含む単一の最低レベルベクトルを編集する。
【００４８】
オーバーレイネットワーク２１０の情報サービスノード１３０のルーティング表の最高レベルも、オーバーレイネットワーク２１０の情報サービスノード１３０のそれぞれを通じて、図７に示す同じリーダノード７０１へルーティングされる。
最高レベルが、情報サービスノード１３０のそれぞれを通じてルーティングされる時、各情報サービスノードは、自身のルーティング表の最高レベルを受信した値と比較する。
情報サービスノードのルーティング表の最高レベルが、受信した値よりも大きい場合、その情報サービスノードは、受信した値を自身の値に置き替える。
情報サービスノード１３０を含むサービスツリーの各リーフが、その最高レベルを創設することになる。
これらの値は、いくつかの最高レベル値を受信した情報サービスノードにおいて結合することができる。
最終的に、リーダノード７０１が単一の最高レベルを編集する。
最高ルーティング表レベルは、便宜のための、Ｌ最低レベルベクトルに含めることができ、オーバーレイネットワークを通じてＬ最低レベルベクトルと共に送信することができる。
【００４９】
交換フェーズの期間中、上位Ｋリストがリーダノード７０１へルーティングされる時、情報サービスノード１３０のそれぞれは、ＩＰアドレス等の識別子を上位Ｋリストに含める。
上位Ｋリストを受信した情報サービスノードが上位Ｋリストに自身のワークロードを含めない場合であっても、識別子は含められる。
普及フェーズでは、上位Ｋリストは、これらの識別子を使用して情報サービスノード１３０のそれぞれを通じてサービスツリーの下方に送信される。
たとえば、上位Ｋリストは、各情報サービスノードが上位Ｋリストを受信した順序とは逆の順序で、情報サービスノード１３０のそれぞれへ送信される。
また、新たな情報サービスノードが情報サービスに参加する時、その新たな情報サービスノードは、ルーティング表を生成してその新たな情報サービスノードのグローバルキャッシュに広告および問い合わせを記憶することに加えて、最後のエポックにおいて測定されたワークロードを含む上位Ｋリストを受信する。
【００５０】
交換フェーズおよび普及フェーズを図７に関してさらに示す。
図７は、オーバーレイネットワーク２１０の情報サービスノード１３０ａ〜１３０ｄを含むサービスツリーの一部を示している。
リーダノード７０１は、情報サービスノード１３０ａである。
交換フェーズの期間中、情報サービスノード１３０ａ〜１３０ｄは、自身のワークロードを測定する。
ワークロードの上位Ｋリストは、リーフ、たとえば情報サービスノード１３０ｄおよび１３０ｅからリーダノード７０１へサービスツリーの上方に送信される。
【００５１】
情報サービスノード１３０は、上位Ｋリストのワークロードベクトルおよび最低レベルベクトルを生成して、サービスツリーがどれだけ非対称になっているか、または、サービスツリーがどれだけバランスがとれているかを指定する。
最低レベルベクトルは、サービスツリーのバランスを維持することを試みながら、ワークロード分割のための情報サービスノードを選択するのに使用することができる。
たとえば、オーバーレイネットワーク２１０の最高（最大）ルーティング表レベルと最低レベルベクトルの最小値との差がしきい値と比較される。
この差がしきい値よりも大きい場合、サービスツリーのバランスの維持を試みて、ワークロード分割用の、最小値を有する情報サービスノードを選択することができる。
【００５２】
図７に示すように、情報サービスノード１３０ｄおよび１３０ｅは、自身のワークロードを測定し、ワークロードベクトル７１０および７１１をそれぞれ生成する。
Ｋ個の最高ワークロードを含むオーバーレイネットワーク２１０のワークロードベクトルが結合されて、上位Ｋリストが形成される。
各ワークロードベクトルは、少なくとも、情報サービスノードの識別情報および測定されたワークロードを含む。
【００５３】
また、情報サービスノード１３０ｄおよび１３０ｅは、最低レベルベクトル７２０および７２１もそれぞれ生成する。
最低レベルベクトルは、その情報サービスノードのルーティング表における最高レベルを含む。
情報サービスノード１３０ａ〜１３０ｄの最高レベルの例は、図８Ａ〜図８Ｄに示され、０、２、１、および２をそれぞれ含む。
最低レベルベクトルは、オーバーレイネットワーク２１０のＬ個の最低レベルを含むＬ最低レベルリストを形成するのに使用される。
Ｌ最低レベルリストは、オーバーレイネットワーク２１０の最高レベルを有する情報サービスノードの情報サービスノードＩＤおよびルーティング表レベルも含む。
【００５４】
いくつかの上位Ｋリストは、交換フェーズの期間中に交換することができ、情報サービスノード１３０ｂ等の中間ノードにおいて結合することができる。
たとえば、ワークロードベクトル７１０および７１１は、情報サービスノード１３０ｂへ送信された上位Ｋリストである。
Ｋが３であると仮定すると、情報サービスノード１３０ｂは、ワークロードベクトル７１０および７１１と自身のワークロードベクトルとを結合して、上位Ｋリスト７１２にする。
上位Ｋリスト７１２は、リーダノード７０１に向けて送信され、情報サービスノード１３０ｃおよび／または１３０ａのワークロードが、各情報サービスノードによって受信された上位Ｋリスト７１２のワークロードよりも高い場合には、それらの情報サービスノード１３０ｃおよび／または１３０ａのワークロードを含めることができる。
【００５５】
また、交換フェーズの期間中、最低レベルベクトル７２０および７２１は、情報サービスノード１３０ｂへ送信される。
情報サービスノード１３０ｂは、（Ｌ最低レベルベクトルとも呼ばれる）最低レベルベクトル７２０および７２１と自身の最低レベルベクトルとを結合して、Ｌ最低レベルリスト７２２にする。
Ｌ最低レベルリストは、リーダノード７０１に向けて送信され、情報サービスノード１３０ｃおよび／または１３０ａのレベルが、Ｌ最低レベルリストのレベルよりも低い場合には、それらの情報サービスノードの最高ルーティング表レベルを含めることができる。
加えて、Ｌ最低レベルリストは、オーバーレイネットワーク２１０の最高レベルを有するサービスノードを含む。
最大レベルと、ワークロード分割のために最初に選択された情報サービスノードのレベルとの差をしきい値と比較して、最初に選択された情報サービスノードが、ワークロード分割のために選択されたもののままであるか否かを判断することができる。
この比較は、サービスツリーのバランスを維持するための一技法である。
【００５６】
また、普及フェーズの期間中に上位Ｋリストをすべての情報サービスノードに普及できるように、交換フェーズの期間中、上位Ｋリストを受信する情報サービスノードの順序が、情報サービスノード１３０に記憶される。
たとえば、情報サービスノード１３０ｂが普及フェーズの期間中に上位Ｋリスト７１２を情報サービスノード１３０ｅおよび１３０ｄへ送信するように、順序情報７３０は、ＩＰアドレス等の、情報サービスノード１３０ｅおよび１３０ｄの識別情報を含む。
順序情報の他の例には、情報サービスノード１３０ｂのＩＰアドレス等、情報サービスノード１３０ｃにおける順序情報７３１、および、情報サービスノード１３０ｃのＩＰアドレス等、情報サービス１３０ａにおける順序情報７３２が含まれる。
したがって、普及フェーズの期間中、上位Ｋリスト７１２は、すべての情報サービスノード１３０へサービスツリーの下方に送信される。
Ｋ最低レベルリストも、普及フェーズの期間中にサービスツリーの下方に送信される。
【００５７】
上位Ｋリストを送信する情報サービスノードのルーティング表に基づいて上位Ｋリストをどの情報サービスノードへ送信するかを決定するのに、上位Ｋルーティングアルゴリズムが使用される。
たとえば、図８Ａ〜図８Ｄは、情報サービスノード１３０ａ〜１３０ｄのルーティング表を示している。
上位Ｋリストをリーダノードへルーティングするために、上位Ｋリストを受信する情報サービスノードは、対応する分割値未満の範囲を担当する、自身のルーティング表における最大レベルへ上位Ｋリストを送信する。
上位Ｋリストの情報は、上位Ｋリストがリーダノードへルーティングされる所までに判明した上位Ｋ個のノードおよびそれらのノードのワークロードを特定する。
たとえば、図８Ｄの情報サービスノード１３０ｄのルーティング表を参照すると、最高レベルまたは最大レベルは、２のレベルを有するエントリー８４０にある。
エントリー８４０は、応答時間属性について２０ｍｓの属性分割値を含む。
応答時間の範囲は応答時間≦２０ｍｓを含む。
この範囲は、対応する分割値未満、すなわち、２０ｍｓの分割値よりも小さいので、ノード１３０ｂは上位Ｋリストを受信する次のノードとして特定される。
ノード１３０ｄは、上位Ｋリストをノード１３０ｂへ送信する。
【００５８】
情報サービスノード１３０ｂは、上位Ｋリストを受信し、上位Ｋルーティングアルゴリズムに基づき、図８ｂに示す情報サービスノード１３０ｂのルーティング表のエントリー８２０を使用して、情報サービスノード１３０ｃを、上位Ｋリストを受信する次の情報サービスノードとして特定する。
情報サービスノード１３０ｂは、上位Ｋリストに自身のワークロードを含め、上位Ｋリストを情報サービスノード１３０ｃへ送信する。
【００５９】
この例では、Ｋ＝３の値である。
また、情報サービスノード１３０ｃは、図７に示すように、情報サービスノード１３０ｂ、１３０ｄ、および１３０ｅのワークロードも受信する。
情報サービスノード１３０ｃのワークロードが、情報サービスノード１３０ｂ、１３０ｄ、および１３０ｅのワークロードよりも小さい場合、情報サービスノード１３０ｃは、自身のワークロードを上位Ｋリストに含めない。
情報サービスノード１３０ｃのルーティング表のエントリー８３０は、上位Ｋルーティングアルゴリズムに基づいて、上位Ｋリストを受信する次のノードとして情報サービスノード１３０ａを特定する。
情報サービスノード１３０ａは、自身のワークロードが上位Ｋリストの３つのワークロードよりも大きいか否かを判断する。
大きい場合には、情報サービスノード１３０ａは、自身のワークロードを上位Ｋリストに含める。
また、情報サービスノード１３０ａはリーダノードでもある。
リーダノードは、自身のルーティング表の対応する分割値よりも大きな属性範囲のみを有する情報サービスノードである。
図８Ａに示す情報サービスノード１３０ａのルーティング表は、１つのエントリー８１０を含む。
エントリー８１０は、１ＧＢの対応する分割値よりも大きな属性範囲を含む。
したがって、情報サービスノード１３０ａのルーティング表は、対応する分割値よりも大きな属性範囲しか含まず、情報サービスノード１３０ａはリーダノードである。
これとは対照的に、情報サービスノード１３０ｂ〜１３０ｄのルーティング表は、エントリー８２０、８３０および８４０等、対応する分割値よりも小さな少なくとも１つの属性範囲を含む。
【００６０】
リーダノードが上位Ｋリストを受信した後、普及フェーズが開始する。
図７に示すように、リーダノード、たとえば情報サービスノード１３０ａは、上位Ｋリストを情報サービスノード１３０ｃへ送信する。
上位Ｋリストは、最終的には、たとえば、前に、上位Ｋリストがリーダノードに向けてサービスツリーの上方にルーティングされた時に情報サービスノードが上位Ｋリストを受信した順序と逆の順序で、すべての情報サービスノードへ普及される。
【００６１】
上位Ｋリストは、オーバーレイネットワーク２１０のＫ個の最高ワークロードのリストを含む。
本明細書で使用されるようなリストは、ノード間で送信できる１つまたは複数の値のデータ表現を含む。
たとえば、上位Ｋリストは、オーバーレイネットワーク２１０の最大のワークロードの値を含む。
これらの値は、情報サービスノード１３０間で送信される。
上位Ｋリストは、ワークロードを含むことに加えて、上位Ｋリストにワークロードを有する情報サービスノードの識別子も含む。
識別子の一例はＩＰアドレスであるが、他の識別子も使用することができる。
【００６２】
図９は、一実施形態による、交換フェーズのステップを含む方法９００を示している。
方法９００は、限定ではなく一例として、図１〜図８について説明される。
ステップ９０１において、上位Ｋリストが、オーバーレイネットワーク２１０の情報サービスノード１３０を通じて、オーバーレイネットワーク２１０の最終宛先へルーティングされる。
一例では、最終宛先には、図７に示すリーダノード１３０ａが含まれる。
交換フェーズの期間中、図７に示すリーダノード１３０ａは、図２に示すオーバーレイネットワーク２１０の上位のＫ個の最高ワークロードを有する情報サービスノードの識別情報を含む上位Ｋリストを受信する。
リーダノードは、自身のルーティング表の対応する分割値よりも大きな１つまたは複数の属性範囲のみを有するルーティング表を備える情報サービスノードである。
リーダノードは、アドミニストレータが最初に選択することができる。
ロバストな情報サービスノードをリーダノードとして選択することができる。
【００６３】
上位Ｋリストが最終宛先へルーティングされる際に情報サービスノード１３０が実行できるステップ９０２において、上位Ｋリストを受信した各情報サービスノードは、リストを受信した各ノードのワークロードを含めるか否かを判断する。
たとえば、図７に示すように、情報サービスノード１３０ｃは、交換フェーズの期間中、情報サービスノード１３０ｂから上位Ｋリストを受信する。
情報サービスノード１３０ｃのワークロードが情報サービスノード１３０ｂおよび１３０ｄのワークロードよりも小さい場合、情報サービスノード１３０ｃは、Ｋ＝２の場合の上位Ｋリストに自身のワークロードを含めない。
情報サービスノード１３０ｃが、自身のワークロードが上位Ｋリストの２つのワークロードよりも大きいと判断する場合、情報サービスノード１３０ｃのワークロードは、上位Ｋリストに含められ、上位Ｋリストは、リーダノード１３０ａ等の最終宛先に向けてルーティングされる。
【００６４】
図１０は、一実施形態による、情報サービスノード等のノードで実行される上位Ｋルーティングアルゴリズムの方法１０００のフローチャートを示している。
方法１０００は、限定ではなく一例として、図１〜図８について説明される。
【００６５】
ステップ１００１において、図７に示す情報サービスノード１３０ｂは、上位Ｋリストを受信する。
ステップ１００２において、情報サービスノード１３０ｂは、自身のワークロードを上位Ｋリストに含めるか否かを判断する。
たとえば、情報サービスノード１３０ｂは、自身のワークロードが上位Ｋリストの別のワークロードよりも大きい場合、または、上位ＫリストがＫ個のワークロードをまだ含んでいない場合に、自身のワークロードを上位Ｋリストに含める。
たとえば、図７の例を参照すると、Ｋ＝２の場合、上位Ｋリストは、情報サービスノード１３０ｄの１つのワークロードを含むので、情報サービスノード１３０ｂは、自身のワークロードを上位Ｋリストに含める。
ステップ１００３において、情報サービスノード１３０ｂは、ピアツーピアオーバーレイネットワーク２１０のリーダノードに向けてリストを転送する。
たとえば、情報サービスノード１３０ｂは、自身のルーティング表から、属性分割値以下の属性範囲を含む最高レベルのエントリーを特定する。
情報サービスノード１３０ｂのルーティング表の図８ｂに示すように、属性分割値以下の属性範囲を含む最高レベルのエントリーは、エントリー８２０である。
情報サービスノード１３０ｃがエントリー８２０から特定され、上位Ｋリストは、情報サービスノード１３０ｃへ送信される。
【００６６】
図８Ｂ〜図８Ｄに示すルーティング表は、上位Ｋリストに特定されるような最高ワークロードを有する情報サービスノードのワークロードをバランスさせるのに使用される分割アルゴリズムに基づいて生成することができる。
１つのローカル分割アルゴリズムは、オーバーレイネットワークの第２のノードの少なくとも１つの属性分割値に基づいて、その第２のノードのワークロードを第１のノードと分割することを含むことができる。
第１のノードには、オーバーレイネットワーク２１０に参加する新たなノードが含まれ得る。
この新たなノードには、分割値に基づいて、属性部分空間が割り当てられる。
実質的には、第２のノードのルーティング表のすべてのエントリーが、第１のノードのルーティング表にコピーされ、第１のノードのルーティング表の少なくとも１つの新たな最高レベルのエントリーが、少なくとも１つの属性分割値に基づいて、第１のノードのルーティング表について生成される。
【００６７】
図１１は、オーバーレイネットワーク２１０の情報サービスノードとして使用できるコンピュータシステム１１００の一例示のブロック図を示している。
コンピュータシステム１１００は、ソフトウェアを実行するための実行プラットフォームを提供するプロセッサ１１０２等の１つまたは複数のプロセッサを含む。
【００６８】
プロセッサ１１０２からのコマンドおよびデータは、通信バス１１０４により通信される。
また、コンピュータシステム１１００は、ランタイム期間中、ソフトウェアが常駐することができるランダムアクセスメモリ（ＲＡＭ）等のメインメモリ１１０６および２次メモリ１１０８も含む。
２次メモリ１１０８は、たとえば、ソフトウェアのコピーを記憶できるフロッピー（登録商標）ディスケットドライブ、磁気テープドライブ、コンパクトディスクドライブ等を表す、ハードディスクドライブ１１１０および／または着脱可能ストレージドライブ１１１２、すなわち不揮発性メモリを含む。
また、２次メモリ１１０８は、ＲＯＭ（読み出し専用メモリ）、ＥＰＲＯＭ（消去可能プログラマブルＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブルＲＯＭ）を含むことができる。
ソフトウェアに加えて、ルーティング表、グローバル情報表、並びに、測定されたＱｏＳ特性、測定された利用可能帯域幅、およびサービスに必要とされる帯域幅も、メインメモリ１１０６および／または２次メモリ１１０８に記憶することができる。
着脱可能ストレージドライブ１１１２は、既知の方法で着脱可能ストレージユニット１１１４から読み出しを行い、且つ／または、着脱可能ストレージユニット１１１４に書き込みを行う。
【００６９】
コンピュータシステム１１００とのユーザインターフェースは、キーボード、マウス、スタイラス等の１つまたは複数の入力デバイス１１２８が用いられる。
ディスプレイアダプタ１１２２は、通信バス１１０４およびディスプレイ１１２０とインターフェースし、プロセッサ１１０２から表示データを受信し、その表示データをディスプレイ１１２０の表示コマンドに変換する。
ネットワークインターフェース１１３０は、図１に示すネットワーク２００を介する他のノードとの通信用に設けられている。
【００７０】
方法７００、８００、および９００のステップの１つまたは複数は、メモリ１１０６および／または１１０８等のコンピュータ可読媒体に組み込まれるソフトウェアとしてインプリメントすることができ、たとえばプロセッサ１１０２によってコンピュータシステム１１００で実行することができる。
これらのステップは、コンピュータプログラムによって具現化することができる。
コンピュータプログラムは、アクティブおよび非アクティブの双方のさまざまな形で存在し得る。
たとえば、コンピュータプログラムは、ソースコード、オブジェクトコード、実行可能コード、またはステップの一部を実行するための他のフォーマットのプログラム命令で構成されたソフトウェアプログラム（複数可）として存在し得る。
上記のいずれも、コンピュータ可読媒体に具現化することができる。
コンピュータ可読媒体には、圧縮形式または非圧縮形式のストレージデバイスおよび信号が含まれる。
【００７１】
適したコンピュータ可読ストレージデバイスの例には、従来のコンピュータシステムのＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み出し専用メモリ）、ＥＰＲＯＭ（消去可能プログラマブルＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブルＲＯＭ）、および磁気ディスク若しくは磁気テープまたは光ディスク若しくは光テープが含まれる。
コンピュータ可読信号の例は、搬送波を使用して変調されていようといまいと、インターネットまたは他のネットワークを通じてダウンロードされた信号を含めて、コンピュータプログラムをホスティングまたは実行するコンピュータシステムを、アクセスするように構成可能な信号である。
上記の具体例には、ＣＤ  ＲＯＭでのプログラムの配布またはインターネットのダウンロードを介したプログラムの配信が含まれる。
或る意味で、インターネット自体が、抽象的なエンティティとして、コンピュータ可読媒体である。
同じことはコンピュータネットワーク一般にも当てはまる。
したがって、以下に列挙する機能は、上述した機能を実行できるどの電子デバイスによっても実行できることが理解されよう。
【００７２】
例について実施形態を説明してきたが、当業者は、真の精神および範囲から逸脱することなく、説明した実施形態にさまざまな変更を行うことができる。
本明細書で使用された用語および説明は、例示としてのみ述べられており、限定として意図されたものではない。
詳細には、方法は、例によって説明されているが、方法のステップは、示したものとは異なる順序でまたは同時に実行することができる。
当業者は、これらの変形および他の変形が、添付の特許請求の範囲およびその均等物で規定される精神および範囲内において可能であることを認識するであろう。
【図面の簡単な説明】
【００７３】
【図１】一実施形態によるネットワークを示す図である。
【図２】一実施形態によるピアツーピアネットワークにおけるオーバーレイネットワークを示す図である。
【図３】一実施形態による属性空間および属性部分空間を示す図である。
【図４】一実施形態による、情報サービスノードに記憶された情報を示す図である。
【図５】一実施形態による問い合わせのルーティングを示す図である。
【図６】一実施形態による広告のルーティングを示す図である。
【図７】一実施形態による交換フェーズおよび普及フェーズを示す図である。
【図８Ａ】一実施形態による情報サービスノードのルーティング表である。
【図８Ｂ】一実施形態による情報サービスノードのルーティング表である。
【図８Ｃ】一実施形態による情報サービスノードのルーティング表である。
【図８Ｄ】一実施形態による情報サービスノードのルーティング表である。
【図９】一実施形態による、交換フェーズのステップを含む方法のフローチャートである。
【図１０】一実施形態による、上位Ｋルーティングアルゴリズムの方法のフローチャートである。
【図１１】一実施形態によるコンピュータシステムを示す図である。
【符号の説明】
【００７４】
１１０２・・・プロセッサ，
１１０６・・・メインメモリ，
１１１０・・・ハードディスクドライブ，
１１１２・・・着脱可能ストレージドライブ，
１１１４・・・着脱可能ストレージユニット，
１１１８・・・入力デバイス，
１１２０・・・ディスプレイ，
１１２２・・・ディスプレイアダプタ，
１１３０・・・ネットワークインターフェース，
【図１】
2008526056.tif 000003
【図２】
2008526056.tif 000004
【図３】
2008526056.tif 000005
【図４】
2008526056.tif 000006
【図５】
2008526056.tif 000007
【図６】
2008526056.tif 000008
【図７】
2008526056.tif 000009
【図８Ａ】
2008526056.tif 000010
【図８Ｂ】
2008526056.tif 000011
【図８Ｃ】
2008526056.tif 000012
【図８Ｄ】
2008526056.tif 000013
【図９】
2008526056.tif 000014
【図１０】
2008526056.tif 000015
【図１１】
2008526056.tif 000016
【国際調査報告】
2008526056.tif 000017
2008526056.tif 000018