(57)【要約】  オーバレイ・ネットワークのノードに同報通信メッセージが効率的に向けられる。同報通信メッセージは、同報通信メッセージを受信すべきノードのためのキー値の範囲を特定する終了ＩＤパラメータを含む。オーバレイ・ネットワークの各ノードは、フィンガーノードおよびそれらのそれぞれのキー値のリストを保持している。同報通信メッセージを受信すると、ノードは、同報通信メッセージの終了ＩＤ値かまたは隣接するフィンガーノードのキー値に基づいて、フィンガーノードに新規の終了ＩＤ値を割当てる。ノードは、フィンガーノードの新規の終了ＩＤ値をそのフィンガーノードのキー値と比較して、そのフィンガーノードに同報通信メッセージを転送するかどうかを判断する。フィンガーノードに転送された同報通信メッセージは、そのフィンガーノードのために決定された新規の終了ＩＤ値に等しい終了ＩＤパラメータを含む。ノードは、そのフィンガーノードからの応答メッセージを集約することができる。
2009517921.tif 000002
【特許請求の範囲】
【請求項１】
オーバレイ・ネットワークにおいて同報通信メッセージを処理する方法であって、前記方法は、
送信ノードから終了ＩＤを含む同報通信メッセージを受信するステップを含み、前記終了ＩＤは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記方法はさらに、
フィンガーテーブルのエントリを選択するステップを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記方法はさらに、
前記フィンガーテーブルの次のエントリがあるかどうかを判断するステップを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記方法はさらに、
前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了ＩＤをセットするステップと、
前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了ＩＤに新規の終了ＩＤをセットするステップと、
前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了ＩＤと比較するステップと、
前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了ＩＤによって特定されたキー値の範囲内にあるという判断に応じて、前記新規の終了ＩＤを有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送するステップとを含む、方法。
【請求項２】
前記フィンガーテーブルは、それぞれのキー値に従って配置された２つ以上のエントリを含む、請求項１に記載の方法。
【請求項３】
前記ノードの順序は、キー値に従って昇順である、請求項１に記載の方法。
【請求項４】
前記ノードの順序は、キー値に従って降順である、請求項１に記載の方法。
【請求項５】
前記同報通信メッセージを通信する送信ノードへの参照を格納するステップと、
同報通信メッセージの前記転送されたコピーに応じて、少なくとも１つのフィンガーノードから応答メッセージを受信するステップと、
前記受信された応答メッセージを組み合わされた応答メッセージに集約するステップと、
前記組み合わされた応答メッセージを前記送信ノードに転送するステップとをさらに含む、請求項１に記載の方法。
【請求項６】
前記同報通信メッセージへの応答を受信するステップと、
前記応答を前記組み合わされた応答メッセージに含めるステップとをさらに含む、請求項５に記載の方法。
【請求項７】
前記受信された応答メッセージを集約するステップは、前記受信された応答メッセージのコンパクト表現を作成するために周波数領域変換を使用するステップをさらに含む、請求項５に記載の方法。
【請求項８】
オーバレイ・ネットワークにおいて同報通信メッセージを処理する方法であって、前記方法は、
現在のキー値を有する現在のノードによって同報通信メッセージを受信するステップを
含み、前記同報通信メッセージは送信ノードからの開始ＩＤおよび終了ＩＤを含み、前記開始ＩＤおよび終了ＩＤは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記方法はさらに、
フィンガーテーブルのエントリを選択するステップを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記方法はさらに、
前記フィンガーテーブルの次のエントリがあるかどうかを判断するステップを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記方法はさらに、
前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了ＩＤをセットするステップと、
前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了ＩＤに新規の終了ＩＤをセットするステップと、
前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了ＩＤと比較し、前記開始ＩＤを前記新規の終了ＩＤと比較するステップと、
前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了ＩＤによって特定されたキー値の範囲内にあり、かつ、前記開始ＩＤが、前記新規の終了ＩＤによって特定されたキー値の範囲内にあるという判断に応じて、
前記フィンガーテーブルの前記選択されたエントリの前記キー値かまたは前記開始ＩＤのうち、前記現在のキー値から遠いほうに、新規の開始ＩＤをセットするステップと、
前記新規の終了ＩＤおよび前記新規の開始ＩＤを有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送するステップとを含む、方法。
【請求項９】
前記フィンガーテーブルは、それぞれのキー値に従って配置された２つ以上のエントリを含む、請求項８に記載の方法。
【請求項１０】
前記ノードの順序は、キー値に従って昇順である、請求項８に記載の方法。
【請求項１１】
前記ノードの順序は、キー値に従って降順である、請求項８に記載の方法。
【請求項１２】
前記同報通信メッセージを通信する送信ノードへの参照を格納するステップと、
同報通信メッセージの前記転送されたコピーに応じて、少なくとも１つのフィンガーノードから応答メッセージを受信するステップと、
前記受信された応答メッセージを組み合わされた応答メッセージに集約するステップと、
前記組み合わされた応答メッセージを前記送信ノードに転送するステップとをさらに含む、請求項８に記載の方法。
【請求項１３】
前記同報通信メッセージへの応答を受信するステップと、
前記応答を前記組み合わされた応答メッセージに含めるステップとをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記受信された応答メッセージを集約するステップは、前記受信された応答メッセージのコンパクト表現を作成するために周波数領域変換を使用するステップをさらに含む、請求項１２に記載の方法。
【請求項１５】
情報処理装置に動作を実行するよう指示するために適合された命令を含む情報記憶媒体であって、前記動作は、
送信ノードから終了ＩＤを含む同報通信メッセージを受信することを含み、前記終了Ｉ
Ｄは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記動作はさらに、
フィンガーテーブルのエントリを選択することを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記動作はさらに、
前記フィンガーテーブルの次のエントリがあるかどうかを判断することを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記動作はさらに、
前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了ＩＤ値をセットすることと、
前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了ＩＤに新規の終了ＩＤ値をセットすることと、
前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了ＩＤ値と比較することと、
前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了ＩＤ値によって特定されたキー値の範囲内にあるという判断に応じて、前記新規の終了ＩＤ値を有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送することとを含む、情報記憶媒体。
【請求項１６】
前記フィンガーテーブルは、それぞれのキー値に従って配置された２つ以上のエントリを含む、請求項１５に記載の情報記憶媒体。
【請求項１７】
前記ノードの順序は、キー値に従って昇順である、請求項１５に記載の情報記憶媒体。
【請求項１８】
前記ノードの順序は、キー値に従って降順である、請求項１５に記載の情報記憶媒体。
【請求項１９】
前記同報通信メッセージを通信する送信ノードへの参照を格納することと、
同報通信メッセージの前記転送されたコピーに応じて、少なくとも１つのフィンガーノードから応答メッセージを受信することと、
前記受信された応答メッセージを組み合わされた応答メッセージに集約することと、
前記組み合わされた応答メッセージを前記送信ノードに転送することとをさらに含む、請求項１５に記載の情報記憶媒体。
【請求項２０】
前記同報通信メッセージへの応答を受信することと、
前記応答を前記組み合わされた応答メッセージに含めることとをさらに含む、請求項１９に記載の情報記憶媒体。
【請求項２１】
前記受信された応答メッセージを集約することは、前記受信された応答メッセージのコンパクト表現を作成するために周波数領域変換を使用することをさらに含む、請求項１９に記載の情報記憶媒体。
【請求項２２】
情報処理装置に動作を実行するよう指示するために適合された命令を含む情報記憶媒体であって、前記動作は、
現在のキー値を有する現在のノードによって同報通信メッセージを受信することを含み、前記同報通信メッセージは送信ノードからの開始ＩＤおよび終了ＩＤを含み、前記開始ＩＤおよび終了ＩＤは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記動作はさらに、
フィンガーテーブルのエントリを選択することを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記動作はさらに、
前記フィンガーテーブルの次のエントリがあるかどうかを判断することを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記動作はさらに、
前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了ＩＤをセットすることと、
前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了ＩＤに新規の終了ＩＤをセットすることと、
前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了ＩＤと比較し、前記開始ＩＤを前記新規の終了ＩＤと比較することと、
前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了ＩＤによって特定されたキー値の範囲内にあり、かつ、前記開始ＩＤが、前記新規の終了ＩＤによって特定されたキー値の範囲内にあるという判断に応じて、
前記フィンガーテーブルの前記選択されたエントリの前記キー値かまたは前記開始ＩＤのうち、前記現在のキー値から遠いほうに、新規の開始ＩＤをセットすることと、
前記新規の終了ＩＤおよび前記新規の開始ＩＤを有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送することとを含む、情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の背景
この発明はデータネットワークの分野に関し、特にピアツーピア・オーバレイ・ネットワークに関する。ピアツーピア・ネットワークとは、集中型の階層構造または組織を全く持たない分散データネットワークである。ピアツーピア・データネットワークは、一般にノードと呼ばれる多数のコンピュータまたは他の情報装置間で情報を通信する頑強で柔軟性のある手段を提供する。
【背景技術】
【０００２】
オーバレイ・ネットワークとは、１つ以上のタイプの下位の物理的ネットワーク接続によって接続されたノードに課された、論理または仮想ネットワーク組織である。オーバレイ・ネットワークでは、ノードは仮想または論理リンクによって接続され、それらの各々は、下位の物理的ネットワークにおける１つ以上の経路に一致し得る。オーバレイ・ネットワークは典型的には、ＯＳＩネットワークスタックまたは他のタイプのネットワーキングプロトコルのアプリケーション層または他の上位層で動作するハードウェアおよび／またはソフトウェアによって実現される。
【０００３】
ピアツーピア・オーバレイ・ネットワークの１クラスは、分散ハッシュテーブル・ネットワークと呼ばれる。分散ハッシュテーブル・オーバレイ・ネットワークは、ハッシュ関数を用いて１つ以上のキー値を生成し、一意的なノードに割当てる。すべての可能なキー値の組は、ハッシュ空間と呼ばれる。ノードはハッシュ空間において、それらの割当てられたキー値に従って組織化される。ハッシュ関数は、ハッシュ空間全体にわたってノードがほぼ均一に分散されるように選択される。分散ハッシュテーブル・オーバレイ・ネットワークは典型的には、非常に拡張性が高いためしばしば何百万ものノードをサポートし、頑強なためノードが頻繁に加入または離脱することを可能とし、また、効率的なためメッセージを単一の宛先ノードに迅速にルーティングする。
【０００４】
分散ハッシュテーブル・オーバレイ・ネットワークには多数の異なるタイプがある。ピアツーピア・オーバレイ・ネットワークの１タイプは、コード（Chord）ネットワークである。コード・オーバレイ・ネットワーク・プロトコルは、「コード：インターネットアプリケーションのための拡張性のあるピアツーピア・ルックアップ・プロトコル」（Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications）、イオン  ストイカ（Ion Stoica）、ロバート  モリス（Robert Morris）、デビッド  リベン−ノーウェル（David Liben-Nowell）、デビッド  Ｒ．カーガー（David R. Karger）、Ｍ．フラン  カーシュエク（M. Frans Kaashoek）、フランク  ダベック（Frank Dabek）、ハリ  バラクリシュナン（Hari Balakrishnan）、ＩＥＥＥ／ＡＣＭトランザクションズ・オン・ネットワーキング（IEEE/ACM Transactions on Networking）、第１１巻第１号、１７〜３２頁、２００３年２月に詳細に記載されている。
【０００５】
コードプロトコルといった分散ハッシュテーブル・オーバレイ・ネットワーク・プロトコルは、単一の宛先ノードへのメッセージの効率的な配信を提供するが、それらは、メッセージの同報通信と呼ばれる、単一のメッセージが多数の宛先ノードに効率的に配信されることを可能にはしない。
【０００６】
典型的な一実現化例では、メッセージを他のノードすべてに同報通信したいノードは、メッセージを各ノードに別個に送信しなければならない。各ノードは直接的には限られた
数のノードしか知らないため、開始ノードと呼ばれて同報通信メッセージを開始するノードは、すべての可能なキー値にメッセージを闇雲に送信しなければならない。分散ハッシュテーブル・ネットワークにとって、これは、可能な各キー値に別個のメッセージを送信することを必然的に伴う。（ＳＨＡ−１といった１６０ビットのハッシュ関数の使用から生じる）２＾１６０のハッシュ空間を有する分散ハッシュテーブル・ネットワークにとって、これは実現不可能である。
【０００７】
別の典型的な実現化例では、同報通信メッセージを配信するためにフラッディング・アプローチが使用される。開始ノードは、オーバレイ・ネットワークにおいて開始ノードと直接接続されたノードすべてにメッセージを送信する。メッセージを受信すると、各受信ノードは次にそのメッセージを、オーバレイ・ネットワークにおいて各受信ノードと直接接続されたあらゆる追加ノードに転送する。この実現化例は、いくつかのノードが重複するメッセージを受信するため、非効率的である。さらに、この実現化例は大量のネットワーク帯域幅を消費し、多大な動作時間を要する。
【０００８】
同報通信メッセージをフラッドさせることにより必要とされる帯域幅を減らすために、修正されたフラッディング手法は、各同報通信メッセージに有効期間（ＴＴＬ）値を割当てる。同報通信メッセージのコピーが追加ノードに転送される度に、そのＴＴＬ値はデクリメントされる。ＴＴＬ値が１に達すると、同報通信メッセージはもはや転送されない。この修正されたフラッディング手法は、浪費されるネットワーク帯域幅の量および重複するメッセージの数を減らすものの、それは、同報通信メッセージがすべてのノードにルーティングされることを確実にはできない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、システムおよび方法にとって、ピアツーピア・オーバレイ・ネットワークにおける各ノードが同報通信メッセージを受信することを保証することが望ましい。さらに、ピアツーピア・オーバレイ・ネットワークにおける各ノードが同報通信メッセージのコピーを１つだけ受信することをシステムおよび方法が保証し、それにより、ネットワーク帯域幅が効率的に利用されることを確実にすることが望ましい。さらに、システムおよび方法が、同報通信メッセージを開始するノードから時間および帯域幅資源を最小限しか必要としないことが望ましい。また、追加のネットワーク帯域幅オーバヘッドがないオーバレイ・ネットワークの部分に同報通信メッセージが選択的に向けられることを、システムおよび方法が可能にすることが望ましい。システムおよび方法にとって、最小限の時間間隔内で同報通信メッセージをピアツーピア・オーバレイ・ネットワークのすべてまたは選択された部分に配信することが望ましい。システムおよび方法にとって、ピアツーピア・オーバレイ・ネットワークにおけるノードからのクエリー結果の効率的な集約を可能にすることが望ましい。
【課題を解決するための手段】
【００１０】
発明の概要
この発明の一実施例は、重複するメッセージにネットワーク帯域幅を浪費することなく、またはノードをうっかり抜かすことなく、オーバレイ・ネットワークのノードに同報通信メッセージを効率的に向ける。同報通信メッセージは終了ＩＤパラメータを含む。終了ＩＤパラメータは、同報通信メッセージのコピーを受信すべきノードのためのキー値の範囲を特定する。各ノードは、フィンガーノードおよびそれらのそれぞれのキー値のリストを保持している。同報通信メッセージを受信すると、ノードは、受信した同報通信メッセージの終了ＩＤ値かまたは隣接するフィンガーノードのキー値に基づいて、各フィンガーノードに新規の終了ＩＤ値を割当てる。ノードは、各フィンガーノードの新規の終了ＩＤ値をそのフィンガーノードのキー値と比較して、そのフィンガーノードに同報通信メッセ
ージを転送するかどうかを判断する。フィンガーノードに転送された同報通信メッセージは、そのフィンガーノードのために決定された新規の終了ＩＤ値に等しい終了ＩＤパラメータを含む。ノードは、同報通信メッセージに応答し、そのフィンガーノードからの応答メッセージを集約することができる。
【００１１】
一実施例では、オーバレイ・ネットワークにおいて同報通信メッセージを処理する方法は、送信ノードから終了ＩＤを含む同報通信メッセージを受信するステップを含む。終了ＩＤは、同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定する。この方法は、フィンガーテーブルのエントリを選択する。フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含む。
【００１２】
この方法の一実施例は、フィンガーテーブルの次のエントリがあるかどうかを判断する。次のエントリは、ノードの順序に従って選択されたフィンガーテーブルエントリのキー値に隣接するキー値を含む。この方法は、フィンガーテーブルの次のエントリがあるという判断に応じて、次のエントリに関連付けられたキー値に新規の終了ＩＤ値をセットする。この方法は、フィンガーテーブルの次のエントリがないという判断に応じて、受信された同報通信メッセージの終了ＩＤに新規の終了ＩＤ値をセットする。この方法は、選択されたフィンガーテーブルエントリのキー値を新規の終了ＩＤ値と比較し、選択されたフィンガーテーブルエントリのキー値が、新規の終了ＩＤ値によって特定されたキー値の範囲内にあるという判断に応じて、新規の終了ＩＤ値を有する同報通信メッセージのコピーを選択されたエントリのフィンガーノードに転送する。
【００１３】
さらに別の一実施例では、フィンガーテーブルは、それぞれのキー値に従って配置された２つ以上のエントリを含む。一実施例では、ノードの順序は、キー値に従って昇順である。別の実施例では、ノードの順序は、キー値に従って降順である。
【００１４】
追加の一実施例では、この方法は、同報通信メッセージを通信する送信ノードへの参照を格納する。この方法は、同報通信メッセージの転送されたコピーに応じて、少なくとも１つのフィンガーノードから応答メッセージを受信し、受信された応答メッセージを組み合わされた応答メッセージに集約する。組み合わされた応答メッセージは送信ノードに転送される。
【００１５】
さらに別の実施例では、この方法は、同報通信メッセージへの応答を受信し、その応答を組み合わされた応答メッセージに含めることができる。さらに別の実施例では、組み合わされた応答メッセージは、周波数領域変換を使用して作成されたコンパクト表現での１つ以上のノードからの応答メッセージを含む。
【発明を実施するための最良の形態】
【００１６】
図面を参照して、この発明を説明する。
図面では、同一の参照番号の使用は同一または同様の要素を示す。
【００１７】
発明の詳細な説明
図１Ａおよび図１Ｂは、この発明の一実施例での使用に好適な、例示的なコード・オーバレイ・ネットワークを示す。図１Ａは、ノード１０２、１０４、１０６、１０８、１１０、１１２、１１４、１１６、１１８、および１２０といった多数のノードを含む例示的なコード・オーバレイ・ネットワーク１００を示す。各ノードには１つ以上のキー値が割当てられている。たとえば、ノード１０２、１０４、１０６、１０８、１１０、１１２、１１４、１１６、１１８、および１２０には、キー値０、４５、６０、１１５、１２０、１２８、１４４、１８７、２１０、および２４０がそれぞれ割当てられている。
【００１８】
オーバレイ・ネットワークのノードは、ハッシュ空間１２５におけるそれらの割当てられたキー値によって、またはすべての可能なキー値の組によって配置される。図１Ａでは、ハッシュ空間１２５は、０〜２Nのすべての可能なキー値のリング構成として示されており、ここでＮは、あるキー値に割当てられたビット数である。いくつかの実現化例では、Ｎは１６０ビットに等しく、それは、ＳＨＡ−１といった典型的なハッシュ関数の出力のサイズであり、ハッシュ衝突を回避するのに十分大きい。この実現化例では、コード・オーバレイ・ネットワーク１００は最大２160ノードをサポートし、典型的なコード・オーバレイ・ネットワークは何百万ものアクティブノードを含み得る。他の実現化例は、より多いかまたはより少ないハッシュビットを使用し得る。
【００１９】
いくつかの実現化例では、各ノードにはキー値がランダムに割当てられている。いくつかの実現化例では、各ノードには、ノードの１つ以上の属性のハッシュ関数の結果に基づいて、キー値が割当てられている。ハッシュ関数は、ハッシュ空間１２５全体にわたってノードがほぼ均一に分散されるように選択される。追加の実現化例では、ノードへのキー値の割当ては、下位の物理的ネットワークのトポロジに少なくとも部分的に基づいている。これらの実現化例では、ノードはハッシュ空間１２５全体にわたってほぼ均一に分散されているが、オーバレイ・ネットワーク１００は、物理的ネットワークにおいてごく接近して位置するノード同士が、オーバレイ・ネットワークのハッシュ空間１２５においてもごく接近して位置することを確実にするよう試みる。
【００２０】
ハッシュ空間１２５におけるノードの配置に基づいて、各ノードは、１つ以上の隣接するノードへの参照を含む。コード・オーバレイ・ネットワーク１００のいくつかの実現化例では、各ノードは、前後に隣接するノードへの参照を含む。たとえば、キー値６０を有するノード１０６は、キー値４５を有するノード１０４、およびキー値１１５を有するノード１０８への参照を含み得る。ノード１０６と１０８のキー値間にあるキー値、たとえば１００というキー値を有する新しいノードが追加されると、ノード１０６の適切な参照はそれに応じて調節される。
【００２１】
さらに別の一実現化例では、各ノードは、１つ以上の近傍のノードへの参照を含むフィンガーテーブルを含む。各フィンガーテーブルエントリは、現在のノードのキー値からのオフセットによって特定されたキー値に最も近いノードを参照する。これらの実現化例のうちのいくつかでは、各フィンガーテーブルエントリのオフセットは、二進法の桁値に一致する。たとえば、第１のフィンガーテーブルエントリは１（２0）というオフセット値を有し、第２のフィンガーテーブルエントリは２（２1）というオフセット値を有し、第３のフィンガーテーブルエントリは４（２2）というオフセット値を有し、第４のフィンガーテーブルエントリは８（２3）というオフセット値を有する、などである。他の実現化例では、異なるオフセット値が各フィンガーテーブルエントリに関連付けられ得る。
【００２２】
図１Ｂは、この実現化例に従ったオーバレイ・ネットワーク１３０においてフィンガーテーブルエントリによって特定されたノード関係の一例を示す。キー値４を有するノード１３２は、オフセット値１に一致するキー値５を有するノード１３６への参照１３４を特定する第１のフィンガーテーブルエントリを含む。ノード１３２の第２のフィンガーテーブルエントリは、ノード１３２からのオフセット値２に一致するキー値６を有するノード１４０への参照１３８を特定する。同様に、ノード１３２の第３のフィンガーテーブルエントリは、ノード１３２からのオフセット値４に一致するキー値８を有するノード１４４への参照１４２を特定する。ノード１３２の第４のフィンガーテーブルエントリは、ノード１３２からのオフセット値８に一致するキー値１２を有するノード１４８への参照１４６を特定する。オーバレイ・ネットワーク１３０の他のノードの各々は、他のノードへの参照を特定する同様のフィンガーテーブルを有する。
【００２３】
フィンガーテーブルは任意の数のエントリを有し得る。より大きなフィンガーテーブルは、ノードを追加または除去するためのより複雑な保守オーバヘッドを代償として、メッセージのためのルーティング時間を減少させることができる。たとえば、あるキー値がＮビットから構成される場合、各ノードは、Ｎ個のエントリを有するフィンガーテーブルを有し得る。他の実現化例では、アプリケーションに依存して、他のフィンガーテーブルサイズが最適となり得る。
【００２４】
オーバレイ・ネットワークのこの実現化例では、各ノードは、そのフィンガーテーブルにおける参照によって特定されたノードの場所しか知らない。しかしながら、ノードは、１つ以上の中間ノードを介して、オーバレイ・ネットワークにおける任意の他のノードにメッセージを送信することができる。図１Ｃは、この実現化例に従った、オーバレイ・ネットワーク１５０におけるメッセージの例示的なルーティングを示す。
【００２５】
図１Ｃの例では、キー値０を有するノード１５２が、キー値６を有するノード１６４にメッセージを向ける。ノード１５２のフィンガーテーブルは、それぞれキー値１、２、４および８を有するノード１５４、１５６、１５８および１６０への参照を有する。キー値６を有するノード１６４にメッセージを配信するために、ノード１５２は、そのフィンガーテーブルにおける、宛先ノードのキー値以下で最大のキー値を有するノードに、そのメッセージを転送する。この例では、ノード１５２は、キー値４を有するノード１５８にメッセージを転送する。ノード１５２のフィンガーテーブルにおいて、ノード１５８は、宛先ノードのキー値である６以下で最大のキー値４を有する。
【００２６】
ノード１５８に向けられた、キー値６を有するメッセージを受信すると、ノード１５８は、それ自体のフィンガーテーブルを用いて、宛先ノードのキー値以下で最大のキー値を有するノードを識別する。この例では、キー値４を有するノード１５８は、それぞれキー値５、６、８および１２を有するノード１６２、１６４、１６０および１７０への参照を有するフィンガーテーブルを有する。そのフィンガーテーブルに基づき、ノード１５８は、所望の宛先のキー値である６というキー値を有するノード１６４にメッセージを転送する。
【００２７】
上述のオーバレイ・ネットワークは、メッセージを個々のノードに効率的にルーティングできるが、オーバレイ・ネットワークのすべてまたは大部分に同報通信メッセージを効率的に転送するための機構がない。各ノードは直接的にはそのフィンガーテーブルにおけるノードしか知らない。このため、オーバレイ・ネットワークにおけるすべてのノードにメッセージを送信するには、開始ノードと呼ばれる、同報通信メッセージを開始するノードは、可能な各キー値に別個のメッセージを送信しなければならない。２160のハッシュ空間については、天文学的な数のキー値があり、それはこのアプローチを実行不可能にする。
【００２８】
上述のように、同報通信メッセージを向けるためのフラッディングアプローチはネットワーク帯域幅を浪費し、同報通信メッセージがすべてのノードにルーティングされることを保証しない場合がある。フラッディングアプローチでは、各ノードは、それが接続された他のノードすべてに、受信した同報通信メッセージを転送する。このため、オーバレイ・ネットワーク１５０では、ノード１５２は同報通信メッセージをノード１５４、１５６、１５８および１６０に転送するであろう。各ノードは次に、受信した同報通信メッセージを、そのフィンガーテーブルにおけるノードに転送するであろう。たとえば、ノード１５８は同報通信メッセージをノード１６２、１６４、１６０および１７０に転送するであろう。図１Ｃからわかるように、ノード１６０はノード１５２およびノード１５８から同報通信メッセージを少なくとも２回受信する。
【００２９】
図２は、この発明の一実施例に従った、オーバレイ・ネットワークにおいて同報通信メッセージをルーティングする方法２００を示す。方法２００は、重複するメッセージにネットワーク帯域幅を浪費することなく、またはどのノードも抜かすことなく、オーバレイ・ネットワークにおけるすべてのノードに同報通信メッセージを効率的に向ける。
【００３０】
方法２００は、ノードが同報通信メッセージを受信すると開始される。一実施例では、各同報通信メッセージは終了ＩＤパラメータを含む。終了ＩＤパラメータは、同報通信メッセージが転送され得るノードのキー値の範囲を表わしている。たとえば、あるノードが、１７という終了ＩＤ値を有する同報通信メッセージを受信した場合、そのノードは、そのフィンガーテーブルにおける、１７よりも小さいキー値を有するノードに、その同報通信メッセージのコピーを転送してもよい。さらに、重複するメッセージがノードに送信されることを防止するために、同報通信メッセージの各転送コピーには、方法２００に従って終了ＩＤ値が割当てられる。
【００３１】
受信された同報通信メッセージは、ノードによって以下のように処理される。ステップ２０５で、ノードは、ノードのフィンガーテーブルの第１のエントリに、インデックス値ｉをセットする。決定ブロック２１０で、ノードは、選択されたフィンガーテーブルエントリと呼ばれる、インデックス値ｉによって特定されたフィンガーテーブルエントリが、ノードのフィンガーテーブルの最後のエントリであるかどうかを判断する。そうである場合、方法２００は決定ブロック２１０からステップ２２０に進む。ステップ２２０は、新規の終了ＩＤパラメータを、受信された同報通信メッセージの終了ＩＤと等しくなるように割当てる。
【００３２】
逆に、選択されたフィンガーテーブルエントリがノードのフィンガーテーブルの最後のエントリではないとノードが判断した場合、方法２００は決定ブロック２１０からステップ２１５に進む。ステップ２１５は、新規の終了ＩＤパラメータを、次のフィンガーテーブルエントリ（すなわち、インデックスｉ＋１によって特定されるフィンガーテーブルエントリ）のキー値かまたは受信された同報通信メッセージの終了ＩＤのうち、ハッシュ空間における現在のノードに近い方と等しくなるように割当てる。一実施例では、現在のノードと、次のフィンガーテーブルエントリまたは現在の終了ＩＤのようなキー値との距離は、現在のノードのキー値を他のキー値から減算することによって求められ得る。
【００３３】
ステップ２１５のこの実施例では、フィンガーテーブルのエントリはそれらのそれぞれのノードのキー値の順に配置されること、および同報通信メッセージはキー値が大きくなる順にノードに通信されることが仮定される。しかしながら、代替的な実施例では、フィンガーテーブルは異なる順序で配置可能である。これらの実施例では、ステップ２１５は、新規の終了ＩＤパラメータを、選択されたフィンガーテーブルエントリのキー値よりも大きくかつそれに最も近いフィンガーテーブルエントリのキー値と等しくなるように割当てる。この実施例は、同報通信メッセージを、キー値が大きくなる順にノードに通信する。さらに別の実施例では、同報通信メッセージが、キー値が小さくなる順にノードに通信される場合、ステップ２１５は、新規の終了ＩＤパラメータを、選択されたフィンガーテーブルエントリのキー値よりも小さくかつそれに最も近いフィンガーテーブルエントリのキー値と等しくなるように割当てる。
【００３４】
ステップ２１５またはステップ２２０に続いて、方法２００は決定ブロック２２５に進む。決定ブロック２２５では、ノードは、選択されたフィンガーテーブルエントリのキー値が新規の終了ＩＤパラメータの値よりも小さいかどうかを判断する。小さい場合、方法２００はステップ２３０に進む。その他の場合、方法２００は直接、決定ブロック２３５に進む。
【００３５】
ステップ２３０は、選択されたフィンガーテーブルエントリに関連付けられたノードに同報通信メッセージのコピーを転送する。同報通信メッセージの転送されたコピーは、新規の終了ＩＤパラメータの値にセットされた終了ＩＤ値を含む。
【００３６】
決定ブロック２２５またはステップ２３０に続いて、方法２００は決定ブロック２３５に進む。決定ブロック２３５は、選択されたフィンガーテーブルエントリがノードのフィンガーテーブルの最後のエントリであるかどうかを判断する。そうである場合、方法２００は終了し、ノードは同報通信メッセージの転送を終える。
【００３７】
選択されたフィンガーテーブルエントリがノードのフィンガーテーブルの最後のエントリではないと決定ブロック２３５が判断した場合、方法２００はステップ２４０に進む。ステップ２４０はインデックスｉをインクリメントし、それにより、ノードのフィンガーテーブルの次のフィンガーテーブルエントリを選択する。ステップ２４０に続いて、方法２００は決定ブロック２１０に戻る。ステップ２１０、２１５、２２０、２２５、２３０、２３５、および２４０は、ノードのフィンガーテーブルのエントリすべてを評価するために必要に応じて何度でも繰返されてもよい。
【００３８】
図３Ａ−図３Ｃは、この発明の一実施例に従った、オーバレイ・ネットワークにおける同報通信の例示的なルーティングを示す。この例では、開始ノード３０５は、オーバレイ・ネットワーク３００のすべてのノードに同報通信メッセージを送信することを望んでいる。図３Ａは、オーバレイ・ネットワーク３００のノードへの同報通信メッセージの配信の第１段階３００を示す。方法２００に従って、開始ノードは、終了ＩＤ値が９の同報通信メッセージ３０７をノード３０９に、終了ＩＤが１２の同報通信メッセージ３１１をノード３１３に、終了ＩＤが１５の同報通信メッセージ３１５をノード３１７に、終了ＩＤが７の同報通信メッセージ３１９をノード３２１に送信する。
【００３９】
図３Ｂは、オーバレイ・ネットワークのノードへの同報通信メッセージの配信の第２段階３３０を示す。図３Ｂおよび図３Ｃにおいて、網掛けされたノードは、同報通信メッセージを既に受信している。第２段階３３０では、段階３００で開始ノード３０５から同報通信メッセージを受信したノードは、方法２００に従って同報通信メッセージのコピーを転送する。このため、段階３３０では、ノード３１７は、終了ＩＤが１４の同報通信メッセージ３３６をノード３３８に、終了ＩＤが１５の同報通信メッセージ３４０をノード３４２に転送する。同様に、ノード３２１は、終了ＩＤが１の同報通信メッセージ３４４をノード３４６に、終了ＩＤが４の同報通信メッセージ３４８をノード３５０に、終了ＩＤが７の同報通信メッセージ３５２をノード３５４に転送する。
【００４０】
ノード３０９は、それが受信した同報通信メッセージをどのノードにも転送しない。第１段階３００では、ノード３０９は、終了ＩＤが９の同報通信メッセージを受信した。キー値８を有するノード３０９とそれが受信した終了ＩＤ値９との間にはフィンガーノードがないため、ノード３０９にはそれが受信した同報通信メッセージを転送するノードがない。
【００４１】
図３Ａ〜図３Ｃの例では、場所３１４、３３１、３３２、および３３３にそれぞれ割当てられたキー値３、５、１０、および１１は、どのノードにも割当てられていない。このため、ノード３１３のフィンガーテーブルの第１のエントリは、キー値１２を有するノード３１７を参照する。しかしながら、ノード３１３は段階３００で終了ＩＤ値が１２の同報通信メッセージを受信した。ノード３１３はそのフィンガーテーブルに、終了ＩＤ値１２よりも近いノードを有していないため、ノード３１３にはそれが受信した同報通信メッセージを転送するノードがない。
【００４２】
図３Ｃは、オーバレイ・ネットワークのノードへの同報通信メッセージの配信の第３段階３６０を示す。図３Ｂおよび図３Ｃにおいて、網掛けされたノードは、同報通信メッセージを既に受信している。第３段階３６０では、第２段階３３０でノードから同報通信メッセージを受信したノードは、方法２００に従って同報通信メッセージのコピーを転送する。このため、段階３６０では、ノード３５０は、終了ＩＤが４の同報通信メッセージ３６２をノード３６４に転送する。加えて、ノード３５４は、終了ＩＤが７の同報通信メッセージ３６６をノード３６８に転送する。
【００４３】
ノード３３８、３４２、および３４６は、段階３３０においてそれらが受信した同報通信メッセージの終了ＩＤ値に起因して、段階３６０で同報通信メッセージを転送しない。同様に、段階３６０でノード３６４および３６６によって受信された同報通信メッセージは、それらのそれぞれの終了ＩＤ値に起因して、オーバレイ・ネットワークにおけるどの他のノードにも転送されない。
【００４４】
図３Ａ〜図３Ｃの例からわかるように、オーバレイ・ネットワークにおけるすべてのノードは、同報通信メッセージのコピーを受信する。加えて、オーバレイ・ネットワークにおけるどのノードも、同報通信メッセージの重複物を受信しない。さらに、開始ノードは、オーバレイ・ネットワークにおけるノードの総数に拘らず、そのフィンガーテーブルにおける各ノードに同報通信メッセージのコピーを送信するのに十分なネットワーク帯域幅しか必要としない。図３Ａ〜図３Ｃの例では、これはたった４つの同報通信メッセージである。２160のハッシュ空間に対応して１６０個のエントリフィンガーテーブルを有するノードを有するオーバレイ・ネットワークでは、開始ノードは、潜在的に何百万ものノードに達するために同報通信メッセージのコピーを１６０個送信するだけでよい。
【００４５】
さらに、方法２００は同報通信メッセージをオーバレイ・ネットワークのすべてのノードにＯ（ｌｏｇ2Ｎ)回で向けることが可能であることがわかっており、ここでＮは、オーバレイ・ネットワークにおけるノードの数である。図３Ａ〜図３Ｃの例では、これは、同報通信メッセージのｌｏｇ１０＝３．３２回、または約３段階の転送および受信に対応している。１，０００，０００個のノードを有する１６０ビットのハッシュ空間を有する例示的なオーバレイ・ネットワークでは、方法２００は、同報通信メッセージをすべてのノードに、同報通信メッセージの約２０回、または２０段階の転送および受信で向けることができる。
【００４６】
さらに別の実施例では、同報通信メッセージは、オーバレイ・ネットワークにおけるノードの一部にのみ向けることができる。一実施例では、各同報通信メッセージは、終了ＩＤパラメータに加え、開始ＩＤパラメータを含む。開始ＩＤパラメータは、同報通信メッセージを受信および処理するよう意図されたノードのキー値の範囲の始まりを表わしている。以下に詳細に説明するように、キー値のこの範囲外の追加ノードは、キー値のこの範囲内のノードがすべて同報通信メッセージを受信することを確実とするように同報通信メッセージを受信して転送してもよい。この実施例では、開始ＩＤおよび終了ＩＤは共に、ハッシュ空間の隣接部分のノードが同報通信メッセージを受信すべきであるということを特定する。開始ノードは、ハッシュ空間の異なる隣接部分を特定する開始ＩＤ値および終了ＩＤ値を各々有する多数の同報通信メッセージを送信することにより、オーバレイ・ネットワークにおける隣接していない組のノードに同報通信メッセージを向けることができる。
【００４７】
図４は、この発明の一実施例に従った、オーバレイ・ネットワークの一部に同報通信メッセージをルーティングする方法４００を示す。方法４００は、開始ＩＤパラメータおよび終了ＩＤパラメータを含む同報通信メッセージの受信で始まる。ステップ４０５で、ノ
ードは、ノードのフィンガーテーブルの第１のエントリに、インデックス値ｉをセットする。決定ブロック４１０で、ノードは、選択されたフィンガーテーブルエントリと呼ばれる、インデックス値ｉによって特定されたフィンガーテーブルエントリが、ノードのフィンガーテーブルの最後のエントリであるかどうかを判断する。そうである場合、方法４００は決定ブロック４１０からステップ４２０に進む。ステップ４２０は、新規の終了ＩＤパラメータを、受信された同報通信メッセージの終了ＩＤと等しくなるように割当てる。
【００４８】
逆に、選択されたフィンガーテーブルエントリがノードのフィンガーテーブルの最後のエントリではないとノードが判断した場合、方法４００は決定ブロック４１０からステップ４１５に進む。ステップ４１５は、新規の終了ＩＤパラメータを、次のフィンガーテーブルエントリ（すなわち、インデックスｉ＋１によって特定されるフィンガーテーブルエントリ）のキー値かまたは受信された同報通信メッセージの終了ＩＤのうち、ハッシュ空間における現在のノードに近い方と等しくなるように割当てる。一実施例では、現在のノードと、次のフィンガーテーブルエントリまたは現在の終了ＩＤのようなキー値との距離は、現在のノードのキー値を他のキー値から減算することによって求められ得る。
【００４９】
ステップ４１５のこの実施例では、フィンガーテーブルのエントリはそれらのそれぞれのノードのキー値の順に配置されること、および同報通信メッセージはキー値が大きくなる順にノードに通信されることが仮定される。しかしながら、代替的な実施例では、フィンガーテーブルは異なる順序で配置可能であり、同報通信メッセージはキー値が大きくなる順かまたは小さくなる順に通信され得る。
【００５０】
ステップ４１５またはステップ４２０に続いて、方法４００は決定ブロック４２５に進む。決定ブロック４２５では、ノードは、選択されたフィンガーテーブルエントリのキー値が新規の終了ＩＤパラメータの値よりも小さいかどうか、および、受信された同報通信メッセージの開始ＩＤパラメータが新規の終了ＩＤパラメータよりも近いかどうかを判断する。これらの条件が双方とも真である場合、方法４００はステップ４３０に進む。ステップ４３０は、新規の開始ＩＤパラメータを、選択されたフィンガーテーブルエントリのキー値かまたは受信された同報通信メッセージの開始ＩＤパラメータのうち、ハッシュ空間における現在のノードから近い方と等しくなるように割当てる。
【００５１】
ステップ４３０に続いて、ステップ４３５は、選択されたフィンガーテーブルエントリに一致するノードに同報通信メッセージを転送する。転送された同報通信メッセージは、新規の開始ＩＤパラメータに等しい開始ＩＤと、新規の終了ＩＤパラメータに等しい終了ＩＤパラメータとを含む。
【００５２】
決定ブロック４２５またはステップ４３５に続いて、方法４００は決定ブロック４４０に進む。決定ブロック４４０は、選択されたフィンガーテーブルエントリがノードのフィンガーテーブルの最後のエントリであるかどうかを判断する。そうである場合、方法４００は終了し、ノードは同報通信メッセージの転送を終える。
【００５３】
選択されたフィンガーテーブルエントリがノードのフィンガーテーブルの最後のエントリではないと決定ブロック４４０が判断した場合、方法４００はステップ４４５に進む。ステップ４４５はインデックスｉをインクリメントし、それにより、ノードのフィンガーテーブルの次のフィンガーテーブルエントリを選択する。ステップ４４５に続いて、方法４００は決定ブロック４１０に戻る。ステップ４１０、４１５、４２０、４２５、４３０、４３５、４４０、および４４５は、ノードのフィンガーテーブルのエントリすべてを評価するために必要に応じて何度でも繰返されてもよい。
【００５４】
同報通信メッセージは、任意のタイプの情報を、オーバレイ・ネットワークのノードの
すべてまたは一部に伝えることができる。加えて、１つ以上のノードが、同報通信メッセージを開始しているノードと直接接触することによって同報通信メッセージに応答することができる。多数のノードが同報通信メッセージに潜在的に応答できる場合、開始ノードおよびそのネットワーク接続は圧倒される場合がある。
【００５５】
この発明のさらに別の実施例は、同報通信メッセージの配信に使用されるのと同じルートに沿って応答メッセージを集約することにより、この問題を緩和する。この実施例では、各ノードが、それ自体または別のノードからの応答を潜在的に必要とする同報通信メッセージを受信した場合、受信ノードは、送信ノードと呼ばれる、同報通信メッセージを送信しているノードの場所を記憶し、送信ノードは、同報通信メッセージを開始しているノードか、または同報通信メッセージを転送している中間ノードであってもよい。受信ノードが、同報通信メッセージへの応答が必要であると判断した場合、受信ノードはその応答をそのそれぞれの送信ノードに転送し返す。ノードは潜在的にどのノードからも同報通信メッセージを受信できるため、一実施例では、各ノードは、それが受信する各同報通信メッセージに関連付けられた送信ノードを記憶する。
【００５６】
図５は、この発明の一実施例に従った、オーバレイ・ネットワークのノードからのクエリー結果を集約するためのシステムを示す。例示的なオーバレイ・ネットワーク５００は、１組のノードを含む。この１組のノードは、図３Ａ〜図３Ｃに説明したものと同様の１組の経路を介して、例示的な開始ノード５３５と接続されている。一実施例では、開始ノードからの同報通信メッセージに応答するノードは、その応答をそのそれぞれの送信ノードに転送する。たとえば、ノード５１０は、ノード５３５によって開始された同報通信メッセージを、送信ノード５１５を介して受信した。このため、ノード５１０は、その応答メッセージがもしあれば、それをノード５１５に送り返す。同様に、ノード５１５は、ノード５３５によって開始された同報通信メッセージを、ノード５２５を介して受信した。ノード５２５は、同報通信メッセージを開始ノード５３５から直接受信した。このため、ノード５１０からの応答メッセージは、ノード５１５および５２５を介して、開始ノード５３５に戻る。
【００５７】
あるノードが１つ以上のノードから応答メッセージを受信した場合、そのノードは応答メッセージを１つの新しい応答メッセージに集約し、それが次にその送信ノードに転送し返される。一実施例では、ノードは、同報通信メッセージに応答しないよう選択することができる。たとえば、同報通信メッセージが検索クエリーである場合、ノードは、そのノードがその検索クエリーを満たしている場合のみ応答するように選択できる。
【００５８】
ノードは、当該技術分野において公知のデータを圧縮または集約するための任意のアルゴリズムを用いて、応答メッセージを集約できる。たとえば、ノード５０５および５１０の双方が同報通信メッセージに応答する場合、ノード５２５が双方の応答を受信する。ノード５２５はこれらの応答を、ノード５３０の応答および／またはそれ自体の応答がもしあればともに集約して、組み合わされた応答メッセージにすることができる。ノード５２５は次に、組み合わされた応答メッセージをノード５３５に転送し返す。
【００５９】
一実施例では、ノードは、応答の組のコンパクト表現を決定することによってこれらの応答を集約する。たとえば、離散的コサイン変換、高速フーリエ変換、またはウェーブレット変換といった周波数領域変換を適用して、同報通信メッセージへの応答の組のコンパクト表現を決定することができる。この例では、ノードは、メッセージ応答の組の１つ以上の周波数領域表現を受信し、これらの表現を逆変換し、そのノード自体の応答がもしあればこれらの表現と組み合わせ、メッセージ応答の組み合わされた組の新しい周波数領域表現を作成し、組み合わされた周波数領域表現をその送信ノードに転送し返すことができる。
【００６０】
図６は、この発明の一実施例に従った、オーバレイ・ネットワーク６００を実現するのに好適な１組の情報処理装置を示す。オーバレイ・ネットワーク６００のノードは、ラップトップまたはポータブルコンピュータ６０５と、サーバコンピュータ６１０と、デスクトップコンピュータおよびワークステーション６１５と、携帯電話、携帯情報端末、携帯型デジタルメディアプレーヤ、および携帯型または手持ち式ゲーム機といった携帯コンピューティング装置６２０と、ビデオゲーム機、デジタルメディアプレーヤ、セットトップボックス、メディアセンターコンピュータ、および記憶装置といった家庭用娯楽機器６２５とを含む。オーバレイ・ネットワーク６００は、他のタイプの装置の数とは独立した任意の数の各タイプの装置を含み得る。各装置は、オーバレイ・ネットワーク６００の１つ以上のノードの機能性を実現する。各装置について、１つ以上のノードの機能性は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせとして実現可能である。ソフトウェアにおけるノード機能性は、アプリケーション、ライブラリ、アプリケーション・プログラミング・インターフェイス、および／またはオペレーティングシステムの一部であり得る。さらに、オーバレイ・ネットワーク６００の各ノードは、任意のタイプの電気、光学、無線または他の通信手段を取入れた任意のタイプの有線または無線ネットワーク接続を介して、他のノードと接続可能である。オーバレイ・ネットワーク６００は、ローカルエリアネットワークと、インターネットなどの広域ネットワークとの双方を包含し得る。
【００６１】
さらに別の実施例では、オーバレイ・ネットワーク６００のいくつかの装置は、制限された能力を有していてもよい。たとえば、オーバレイ・ネットワーク６００のノードの限られた一部だけが、同報通信メッセージを開始することを許可されてもよい。残りのノードは、同報通信メッセージを転送および／または処理することだけが許可される。さらに別の実施例では、オーバレイ・ネットワーク６００のノードのすべてまたは一部は、同報通信メッセージを認証することができる。この実施例は、不正な同報通信メッセージの拡散を防止する。同報通信メッセージを受信すると、ノードはまず、その同報通信メッセージが真正のものかどうかを、たとえば暗号シグネチャをチェックすることによって判断する。同報通信メッセージが真正のものである場合、それは上述のように処理され、他のノードに潜在的に転送される。その他の場合、その同報通信メッセージは無視される。
【００６２】
図７は、この発明の一実施例に従った、オーバレイ・ネットワーク７００を実現するのに好適な１組の情報処理装置を示す。オーバレイ・ネットワーク７００は、データバスを通して接続されたプロセッサが効率的な態様で同報通信メッセージを送受信できるようにする。データバスは、集積回路内および／または集積回路間でデータを搬送可能な任意の電気、光学または他のタイプのデータ通信手段を使用可能である。
【００６３】
オーバレイ・ネットワーク７００は、プロセッサ７０５、７１０、７１５、および７２０を含む。さらに別の実施例では、オーバレイ・ネットワーク７００は、何千または何百万ものプロセッサを含み得る。各プロセッサは、マイクロプロセッサ、マイクロコントローラ、システム・オン・チップ・プロセッサ、デジタル信号プロセッサ、ＡＳＩＣ、プログラム可能論理装置、および／または任意の他のタイプの情報処理装置であり得る。各プロセッサはさらに、情報処理命令のシーケンスを独立して実行すること、または固定されたアルゴリズムに従って情報を処理することが可能な１つ以上の処理ユニットを含み得る。各プロセッサは、ローカルデータストレージと、共通または共有データストレージへのアクセスとを含み得る。
【００６４】
図８は、この発明の一実施例に従った、オーバレイ・ネットワークのノードを実現するのに好適な情報処理装置の構成要素を示す。図８は、この発明の一実施例を実践するのに好適な、パーソナルコンピュータ、ビデオゲーム機、携帯情報端末、または他のデジタル
装置といったコンピュータシステム１０００のブロック図である。コンピュータシステム１０００は、ソフトウェアアプリケーションおよび任意でオペレーティングシステムを動作させるための中央処理装置（ＣＰＵ）１００５を含む。ＣＰＵ１００５は、１つ以上の処理コアから構成されてもよい。メモリ１０１０は、ＣＰＵ１００５によって使用されるためのアプリケーションおよびデータを格納する。ストレージ１０１５は、アプリケーションおよびデータ用の不揮発性ストレージを提供し、固定ディスクドライブ、取外し可能ディスクドライブ、フラッシュメモリ装置、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ブルーレイ、ＨＤ−ＤＶＤ、ＵＭＤ、または他の光学ストレージ装置を含んでいてもよい。ユーザ入力装置１０２０は、１人以上のユーザからのユーザ入力をコンピュータシステム１０００に通信し、その例は、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルまたはビデオカメラ、および／またはマイクを含んでいてもよい。ネットワークインターフェイス１０２５は、コンピュータシステム１０００が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、ローカルエリアネットワークおよびインターネットなどの広域ネットワークを通した有線または無線通信を含んでいてもよい。音声プロセッサ１０５５は、ＣＰＵ１００５、メモリ１０１０、および／またはストレージ１０１５によって提供される命令および／またはデータからアナログまたはデジタル音声出力を生成するようになっている。ＣＰＵ１００５、メモリ１０１０、データストレージ１０１５、ユーザ入力装置１０２０、ネットワークインターフェイス１０２５、および音声プロセッサ１０５５を含むコンピュータシステム１０００の構成要素は、１つ以上のデータバス１０６０を介して接続されている。
【００６５】
グラフィックスサブシステム１０３０がさらに、データバス１０６０およびコンピュータシステム１０００の構成要素と接続されている。グラフィックスサブシステム１０３０は、グラフィックス処理ユニット（ＧＰＵ）１０３５と、グラフィックスメモリ１０４０とを含む。グラフィックスメモリ１０４０は、出力画像の各画素についての画素データを格納するために使用されるディスプレイメモリ（たとえばフレームバッファ）を含む。グラフィックスメモリ１０４０は、ＧＰＵ１０３５と同じ装置に一体化可能であり、ＧＰＵ１０３５とは別個の装置として接続可能であり、および／またはメモリ１０１０内に実現可能である。画素データは、ＣＰＵ１００５から直接、グラフィックスメモリ１０４０に提供され得る。また、これに代えて、ＣＰＵ１００５はＧＰＵ１０３５に、所望の出力画像を規定するデータおよび／または命令を提供し、それからＧＰＵ１０３５は１つ以上の出力画像の画素データを生成する。所望の出力画像を規定するデータおよび／または命令は、メモリ１０１０および／またはグラフィックスメモリ１０４０に格納され得る。一実施例では、ＧＰＵ１０３５は、あるシーンについてのジオメトリ、照明、影付け、テキスチャリング、動き、および／またはカメラパラメータを規定する命令およびデータから、出力画像用の画素データを生成するための三次元化機能を含む。ＧＰＵ１０３５はさらに、シェーダプログラムを実行可能な１つ以上のプログラム可能実行ユニットを含み得る。
【００６６】
グラフィックスサブシステム１０３０は、画像用の画素データを、ディスプレイ装置１０５０上に表示されるようにグラフィックスメモリ１０４０から周期的に出力する。ディスプレイ装置１０５０は、コンピュータシステム１０００からの信号に応答して視覚情報を表示可能なあらゆる装置であり、ＣＲＴ、ＬＣＤ、プラズマおよびＯＬＥＤディスプレイを含む。コンピュータシステム１０００は、ディスプレイ装置１０５０にアナログまたはデジタル信号を提供可能である。
【００６７】
明細書および図面から、さらに別の実施例が当業者の脳裏に浮かぶであろう。他の実施例では、上に開示された発明の組み合わせまたは部分的な組み合わせが有利になされ得る。アーキテクチャのブロック図およびフローチャートは、理解を容易にするためにグループ化されている。しかしながら、この発明の代替的な実施例では、ブロックの組み合わせ、新しいブロックの追加、ブロックの再構成などが考えられるということが理解されるべ
きである。
【００６８】
したがって、明細書および図面は、限定的な意味というよりもむしろ例示的な意味において考慮されるべきである。しかしながら、請求項に述べられているようなこの発明のより広い精神および範囲から逸脱することなく、さまざまな修正および変更がそれになされてもよいことは明らかである。
【図面の簡単な説明】
【００６９】
【図１Ａ】この発明の一実施例での使用に好適な、例示的なコード・オーバレイ・ネットワークを示す図である。
【図１Ｂ】この発明の一実施例での使用に好適な、例示的なコード・オーバレイ・ネットワークを示す図である。
【図１Ｃ】この発明の一実施例での使用に好適な、例示的なコード・オーバレイ・ネットワークを示す図である。
【図２】この発明の一実施例に従った、オーバレイ・ネットワークにおいて同報通信メッセージをルーティングする方法を示す図である。
【図３Ａ】この発明の一実施例に従った、オーバレイ・ネットワークにおける同報通信メッセージの例示的なルーティングを示す図である。
【図３Ｂ】この発明の一実施例に従った、オーバレイ・ネットワークにおける同報通信メッセージの例示的なルーティングを示す図である。
【図３Ｃ】この発明の一実施例に従った、オーバレイ・ネットワークにおける同報通信メッセージの例示的なルーティングを示す図である。
【図４】この発明の一実施例に従った、オーバレイ・ネットワークの一部に同報通信メッセージをルーティングする方法を示す図である。
【図５】この発明の一実施例に従った、オーバレイ・ネットワークのノードからのクエリー結果を集約するためのシステムを示す図である。
【図６】この発明の一実施例に従った、オーバレイ・ネットワークを実現するのに好適な１組の情報処理装置を示す図である。
【図７】この発明の一実施例に従った、オーバレイ・ネットワークを実現するのに好適な１組の情報処理装置を示す図である。
【図８】この発明の一実施例に従った、オーバレイ・ネットワークのノードを実現するのに好適な情報処理装置の構成要素を示す図である。
【図１Ａ】
2009517921.tif 000003
【図１Ｂ】
2009517921.tif 000004
【図１Ｃ】
2009517921.tif 000005
【図２】
2009517921.tif 000006
【図３Ａ】
2009517921.tif 000007
【図３Ｂ】
2009517921.tif 000008
【図３Ｃ】
2009517921.tif 000009
【図４】
2009517921.tif 000010
【図５】
2009517921.tif 000011
【図６】
2009517921.tif 000012
【図７】
2009517921.tif 000013
【図８】
2009517921.tif 000014
【国際調査報告】
2009517921.tif 000015
2009517921.tif 000016
2009517921.tif 000017