(57)【特許請求の範囲】
【請求項１】
複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのための方法において、
前記方法は、
前記オーバレイネットワーク上の複数のバケットを識別することと、
バケットグループを識別することと、
前記バケットグループに基づいて、イベントを配信することと、
前記イベントに基づいて、ルーティングテーブルを更新することとを含み、
各バケットは、それぞれ、１つ以上のノードを含み、前記１つ以上のノードは、ルーティングに対して責任を有し、
各バケットグループは、それぞれ、選択された数のバケットを含み、
同じバケットグループの２つの連続するバケット間の距離は、前記バケットグループ中のバケットの前記選択された数に対応し、
前記イベントは、前記複数のノードのうちの少なくとも１つが前記オーバレイネットワークに参加するときの、第１のイベントを含む方法。
【請求項２】
前記更新することは、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成することを含む請求項１記載の方法。
【請求項３】
前記複数のバケットを識別することは、合計Ｎ個のバケットがあるように、前記複数のバケットを識別することを含む請求項１記載の方法。
【請求項４】
前記バケットグループを識別することは、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成することを含み、Ｎ＝ｎ*ｍである請求項３記載の方法。
【請求項５】
前記ルーティングテーブルを更新することは、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にすることを含む請求項１記載の方法。
【請求項６】
前記バケットグループを識別することは、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成することを含み、Ｎ＝ｎ*ｍ*ｏである請求項３記載の方法。
【請求項７】
前記ルーティングテーブルを更新することは、前記イベントに基づいて、ルーティングテーブルを更新して、３ホップルーティングを容易にすることを含む請求項６記載の方法。
【請求項８】
前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させることをさらに含む請求項１記載の方法。
【請求項９】
複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのための装置において、
前記装置は、
前記オーバレイネットワーク上の複数のバケットを識別する手段と、
バケットグループを識別する手段と、
前記バケットグループに基づいて、イベントを配信する手段と、
前記イベントに基づいて、ルーティングテーブルを更新する手段とを具備し、
各バケットは、それぞれ、１つ以上のノードを含み、前記１つ以上のノードは、ルーティングに対して責任を有し、
各バケットグループは、それぞれ、選択された数のバケットを含み、
同じバケットグループの２つの連続するバケット間の距離は、前記バケットグループ中のバケットの前記選択された数に対応し、
前記イベントは、前記複数のノードのうちの少なくとも１つが前記オーバレイネットワークに参加するときの、第１のイベントを含む装置。
【請求項１０】
前記更新する手段は、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成する手段を備える請求項９記載の装置。
【請求項１１】
前記複数のバケットを識別する手段は、合計Ｎ個のバケットがあるように、前記複数のバケットを識別する手段を備える請求項９記載の装置。
【請求項１２】
前記バケットグループを識別する手段は、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成する手段を備え、Ｎ＝ｎ*ｍである請求項１１記載の装置。
【請求項１３】
前記ルーティングテーブルを更新する手段は、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にする手段を備える請求項９記載の装置。
【請求項１４】
前記バケットグループを識別する手段は、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成する手段を備え、Ｎ＝ｎ*ｍ*ｏである請求項１１記載の装置。
【請求項１５】
前記ルーティングテーブルを更新する手段は、前記イベントに基づいて、ルーティングテーブルを更新して、３ホップルーティングを容易にする手段を備える請求項１４記載の装置。
【請求項１６】
前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させる手段をさらに具備する請求項９記載の装置。
【請求項１７】
複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのために構成されているノードにおいて、
前記ノードは、
トランシーバと、
前記トランシーバに結合されたプロセッサとを具備し、
前記プロセッサは、
前記オーバレイネットワーク上の複数のバケットを識別し、
バケットグループを識別し、
前記バケットグループに基づいて、イベントを配信し、
前記イベントに基づいて、ルーティングテーブルを更新するように構成されており、
各バケットは、それぞれ、１つ以上のノードを含み、前記１つ以上のノードは、ルーティングに対して責任を有し、
各バケットグループは、それぞれ、選択された数のバケットを含み、
同じバケットグループの２つの連続するバケット間の距離は、前記バケットグループ中のバケットの前記選択された数に対応し、
前記イベントは、前記複数のノードのうちの少なくとも１つが前記オーバレイネットワークに参加するときの、第１のイベントを含むノード。
【請求項１８】
前記プロセッサは、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成するように構成されている請求項１７記載のノード。
【請求項１９】
前記プロセッサは、合計Ｎ個のバケットがあるように、前記複数のバケットを識別するように構成されている請求項１７記載のノード。
【請求項２０】
前記プロセッサは、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成するように構成されており、Ｎ＝ｎ*ｍである請求項１９記載のノード。
【請求項２１】
前記プロセッサは、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にするように構成されている請求項１７記載のノード。
【請求項２２】
前記プロセッサは、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成するように構成されており、Ｎ＝ｎ*ｍ*ｏである請求項１９記載のノード。
【請求項２３】
前記プロセッサは、前記イベントに基づいて、ルーティングテーブルを更新して、３ホップルーティングを容易にするように構成されている請求項２２記載のノード。
【請求項２４】
前記プロセッサは、前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させるように構成されている請求項１７記載のノード。
【請求項２５】
複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのためのコンピュータ読み取り可能記憶媒体において、
前記コンピュータ読み取り可能記憶媒体は、コードを含み、
前記コードは、
前記オーバレイネットワーク上の複数のバケットを識別し、
バケットグループを識別し、
前記バケットグループに基づいて、イベントを配信し、
前記イベントに基づいて、ルーティングテーブルを更新することが実行可能であり、
各バケットは、それぞれ、１つ以上のノードを含み、前記１つ以上のノードは、ルーティングに対して責任を有し、
各バケットグループは、それぞれ、選択された数のバケットを含み、
同じバケットグループの２つの連続するバケット間の距離は、前記バケットグループ中のバケットの前記選択された数に対応し、
前記イベントは、前記複数のノードのうちの少なくとも１つが前記オーバレイネットワークに参加するときの、第１のイベントを含むコンピュータ読み取り可能記憶媒体。
【請求項２６】
前記コードは、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成するように構成されている請求項２５記載のコンピュータ読み取り可能記憶媒体。
【請求項２７】
前記コードは、合計Ｎ個のバケットがあるように、前記複数のバケットを識別するように構成されている請求項２５記載のコンピュータ読み取り可能記憶媒体。
【請求項２８】
前記コードは、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成するように構成されており、Ｎ＝ｎ*ｍである請求項２７記載のコンピュータ読み取り可能記憶媒体。
【請求項２９】
前記コードは、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にするように構成されている請求項２５記載のコンピュータ読み取り可能記憶媒体。
【請求項３０】
前記コードは、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成するように構成されており、Ｎ＝ｎ*ｍ*ｏである請求項２９記載のコンピュータ読み取り可能記憶媒体。
【請求項３１】
前記コードは、前記イベントに基づいて、ルーティングテーブルを生成させて、３ホップルーティングを容易にするように構成されている請求項３０記載のコンピュータ読み取り可能記憶媒体。
【請求項３２】
前記コードは、前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させるように構成されている請求項２９記載のコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【合衆国法典第３５部第１１９条に基づく優先権の主張】
【０００１】
特許に対する本出願は、２００８年６月１９日に出願され、本出願の譲受人に譲渡され、参照により明白にここに組み込まれている、“オーバレイネットワークにおける情報配布のための方法および装置”と題する仮出願第６１／０７３，９０９号に対する優先権を主張する。
【０００２】
特許に対する本出願は、２００８年６月１９日に出願され、本出願の譲受人に譲渡され、参照により明白にここに組み込まれている、“オーバレイネットワークにおける、配信される定ホップルーティングのための方法および装置”と題する仮出願第６１／０７３，９２０号に対する優先権を主張する。
【分野】
【０００３】
本出願は一般に、オーバレイネットワークの動作に関し、より詳細には、ピアツーピアオーバレイネットワークにおける、イベントの配信およびルーティングのための方法および装置に関する。
【背景】
【０００４】
メンバーノードが、サーバベースのインフラストラクチャなしに、サービスを取得するネットワークは、ここでは“ピアツーピア”オーバレイネットワークと呼ばれる。ピアツーピアオーバレイにおいて、ピアノードは、ともに互いに協同して、サービスを提供し、ネットワークを維持する。ピアツーピアオーバレイネットワークは、インターネットプロトコル（ＩＰ）を利用するネットワークのような、下層（underlying）ネットワークの上に構築できる。
【０００５】
通常、ピアツーピアオーバレイネットワーク上でのイベントのルーティングは、ルーティング待ち時間、帯域幅利用、およびルーティングテーブルサイズに関してトレードオフを与える。例えば、イベントをルーティングするとき、少ない待ち時間を有することが望まれる。しかしながら、少ない待ち時間を達成することは、大きなルーティングテーブルを結果として生じるかもしれず、大きなルーティングテーブルは、オーバレイネットワークに参加するノードの利用可能なリソースに適合しない。さらに、オーバレイネットワークを通してルーティングテーブルと、時間とともに生じる何らかの変更とを伝達するのに、かなりの帯域幅を必要とすることから、大きなルーティングテーブルは、乏しい帯域幅の利用を結果として生じるかもしれない。
【０００６】
従来のシステムは、上述のトレードオフを管理するために、技術を利用している。例えば、いくつかのシステムは、上述したような非常に大きなルーティングテーブルを利用し、そのようなルーティングテーブルは、待ち時間を減少させるかもしれないが、参加ノードにおけるリソースを極限まで使うか、または、リソースを超えるかもしれない。他のシステムは、イベント配布に対してより大きな責任を有すると仮定する、オーバレイネットワーク中の特別のノードを利用する。しかしながら、これらの特定のノードに対する帯域幅要件は、それらを合理的にセットアップすることを必要とするほど実質的である。
【０００７】
残念ながら、従来のシステムにより使用される技術は、異なるノードに対して一貫性のないルーティングを結果として生じ、伝搬遅延に至らしめる。また、異なるルーティングテーブルは、異なる長さとエントリとを有し、異なる長さおよびエントリは、同じイベントの発信者からのイベントを配布するのに、異なる伝搬木を結果として生じるかもしれない。さらに、異なるルーティングテーブルは、“ホール”を結果として生じるかもしれず、それにより、いくつかのノードは、配布されるイベントを受信しないかもしれない。
【０００８】
それゆえに、従来のシステムに関係付けられている問題を克服する、ピアツーピアオーバレイネットワークにおける、イベントの配信およびルーティングのための効率的なメカニズムを有することが望まれる。
【概要】
【０００９】
１つ以上の観点において、方法および装置を含むイベント配信システムが、ピアツーピアオーバレイネットワークにおけるイベントの配信およびルーティングに対して提供される。
【００１０】
１つの観点において、方法が、複数のノードを含むピアツーピアオーバレイネットワーク中での、イベントの配信およびルーティングに対して提供される。方法は、オーバレイネットワーク上の複数のバケットを識別し、各バケットは、それぞれ、１つ以上のノードを含むことと、バケットグループを識別し、各バケットグループは、それぞれ、選択された数のバケットを含むことと、バケットグループに基づいて、イベントを配信することと、イベントに基づいて、ルーティングテーブルを更新することとを含む。
【００１１】
１つの観点において、装置が、複数のノードを含むピアツーピアオーバレイネットワーク中での、イベントの配信およびルーティングに対して提供される。装置は、オーバレイネットワーク上の複数のバケットを識別する手段であって、各バケットは、それぞれ、１つ以上のノードを含む手段と、バケットグループを識別する手段であって、各バケットグループは、それぞれ、選択された数のバケットを含む手段と、バケットグループに基づいて、イベントを配信する手段と、イベントに基づいて、ルーティングテーブルを更新する手段とを備える。
【００１２】
１つの観点において、ノードが、複数のノードを含むピアツーピアオーバレイネットワーク中での、イベントの配信およびルーティングのために構成されている。ノードは、トランシーバと、トランシーバに結合されたプロセッサとを備える。ノードは、オーバレイネットワーク上の複数のバケットを識別し、バケットグループを識別し、バケットグループに基づいて、イベントを配信し、イベントに基づいて、ルーティングテーブルを更新するように構成されており、各バケットは、それぞれ、１つ以上のノードを含み、各バケットグループは、それぞれ、選択された数のバケットを含む。
【００１３】
１つの観点において、コンピュータプログラムプロダクトが、複数のノードを含むピアツーピアオーバレイネットワーク中での、イベントの配信およびルーティングに対して提供される。コンピュータプログラムプロダクトは、オーバレイネットワーク上の複数のバケットを識別し、バケットグループを識別し、バケットグループに基づいて、イベントを配信し、イベントに基づいて、ルーティングテーブルを更新することが実行可能なコードを組み入れているコンピュータ読み取り可能媒体を備え、各バケットは、それぞれ、１つ以上のノードを含み、各バケットグループは、それぞれ、選択された数のバケットを含む。
【図面の簡単な説明】
【００１４】
ここで記述した上述の観点は、添付図面とともに考慮したとき、以下の詳細な説明を参照することにより、より容易に明らかになるであろう。
【図１】図１は、イベント配信システムの観点を図示するネットワークを示す。
【図２】図２は、イベント配信システムにしたがって生成される配布木（dissemination tree）を示す。
【図３】図３は、イベント配信システムの観点にしたがって、２ホップルーティングに対して構成されているピアツーピアオーバレイネットワークを示す。
【図４】図４は、イベント配信システムの観点にしたがった、２ホップルーティングのプロセスを図示するピアツーピアオーバレイネットワークを示す。
【図５】図５は、イベント配信システムにしたがった、さまざまなルーティングの構成の比較を図示するテーブルを示す。
【図６】図６は、イベント配信システムの観点における、ノードで使用するための例示的な配信プロセッサを示す。
【図７】図７は、イベント配信システムにしたがって、ピアツーピアオーバレイネットワーク中でイベントのルーティングを提供するための例示的な方法を示す。
【図８】図８は、イベント配信システムの観点における、ノードで使用するための例示的な配信プロセッサを示す。
【説明】
【００１５】
以下の説明は、ピアツーピアオーバレイネットワーク中での、イベントの配信およびルーティングのためのイベント配信システムの観点を記述する。１つの観点において、固定された数の“バケット”が、識別され、ノードのルーティングテーブルに課される“ビュー（view）”を形成するために使用される。例えば、オーバレイネットワーク上に参加しているノードは、特定のバケットに割り当てられる。結果として、識別されているバケットからから配布木（dissemination trees）を形成でき、配布木のアレイ表示は、固定長を有する。システムは、１、２および３のホップルーティングを提供することにより、待ち時間、帯域幅利用およびルーティングテーブルサイズに関係付けられているトレードオフを管理するように動作し、１、２および３のホップルーティングは、これらのトレードオフを効率的に管理することを可能にする。
【００１６】
システムは、特に、ＩＰネットワーク環境を使用するピアツーピアオーバレイネットワークに十分適しているが、限定されないが、仮想プライベートネットワーク（ＶＰＮ）、ローカルエリアネットワーク、ワイドエリアネットワーク、長距離ネットワーク、および／または他の任意のタイプのネットワーク環境のような、通信ネットワーク、パブリックネットワーク、プライベートネットワークを含む任意のタイプのネットワーク環境中で使用してもよい。
【００１７】
ここで記述した上述の観点は、次の定義を参照することにより、より容易に明らかになるであろう。  
オーバレイネットワーク 
オーバレイネットワークは、ピアノードがともに互いに協同して、サービスを提供し、ネットワークを維持するネットワークである。オーバレイネットワークは、実質的に任意の数のノードを含んでいてもよい。
【００１８】
バケット 
バケットは、近接ノードのグループ分けである。オーバレイネットワークは、オーバレイネットワーク中のノードの数まで、合計“Ｎ”個のバケットを含んでいてもよく、その点において、各バケットは、１つのノードを含んでいてもよい。例えば、オーバレイネットワークは、合計Ｎ＝１００のバケットにグループ化される１０００個のノードを含んでいてもよく、各バケットは、１０個のノードを含む。しかしながら、各バケット中のノードの数は、異なっていてもよいことに注目すべきである。  
兄弟ノード（Sibling Nodes） 
バケット内のノードは、兄弟“ｓ”と呼ばれる。  
バケットグループ 
バケットグループは、所望のオーバレイネットワークの編成およびルーティングを達成するためのバケットのグループ分けである。“ｎ”は、バケットグループの総数を表す。各バケットグループは、“ｍ”個のバケットを含み、そのため、（ｎ*ｍ）＝Ｎがバケットの総数である。視覚化を容易にするために、各バケットグループは、関連する図中で図示されるように、同じシェーディングを有するバケットにより表される。  
バディバケット（Buddy Buckets） 
同じバケットグループ内のバケットを指す。  
近隣（Neighborhood） 
近隣は、ｎ個のバケットグループのそれぞれからの少なくとも１つのバケットを含むバケットの集合である。  
イベント 
ノードがオーバレイネットワークに参加するか、または離脱するとき、あるいは、近隣の更新が生じるときに、イベントが生じる。  
マルチレベルグループ分け 
マルチレベルグループ分けにおいて、バケットグループは、それら自身、追加のグループにグループ化される。例えば、２レベルグループ分けにおいて、ｎ個のバケットグループのｏ個のグループが、バケットの総数がＮ＝（ｏ*ｎ*ｍ）から決定できるように定義される。２レベルよりも多いグループ分けを有することも可能であるが、グループ分けのレベルは、ルーティングテーブルのサイズまたは待ち時間の増加に対してバランスがとられるべきである。
【００１９】
図１は、イベント配信システムの観点を図示するネットワーク１００を示す。ネットワーク１００は、下層ネットワーク１０２を含み、下層ネットワーク１０２は、インターネットプロトコルネットワークのような、任意のタイプのネットワークを含む。下層ネットワーク１０２は、単一のエンティティとして示されているが、下層ネットワークは、ＷＡＮ、ＬＡＮ、ワイヤレスネットワークまたは他の任意のタイプのネットワークのような、任意の数またはタイプのネットワークを含んでいてもよい。
【００２０】
ピアツーピアオーバレイネットワーク１０４は、下層ネットワーク１０２のノードのサブセットを含み、それらのノードが通信することを可能にするために、下層ネットワーク１０２のサービスを利用して動作する。例えば、１０６において一般に示されるノードは、通信リンクにより接続されて、ピアツーピアオーバレイネットワーク１０４のまわりに円形のルーティングパスを形成する。通信リンクは、下層ネットワーク１０２により提供されるセキュアトンネル（secure tunnel）であってもよい。ピアツーピアオーバレイネットワーク１０４は、任意のルーティングパターンを可能にするために任意のトポロジまたはアーキテクチャを有していてもよく、それは、図１中で示したルーティングに限定されないことに注目すべきである。例えば、オーバレイネットワーク１０４のノード１０６は、示した円形のパスに加えて、他のルーティングパスを提供するために、より多くの相互接続を有していてもよい。
【００２１】
イベント配信システムの動作中に、ピアツーピアオーバレイネットワークトポロジは、１０８において一般に示すように、Ｎ個のバケットに分けられる。オーバレイ中のすべてのノードは、オーバレイネットワークトポロジー中のその位置に基づいて、バケットに割り当てられ、そのため、各バケットは、ｓ個の兄弟ノードを含む。各バケット中の兄弟ノードの数は異なっていてもよいことに注目すべきである。バケットは次に、１つ以上の方法でグループ化される。例えば、各グループが、選択されたバケットの数ｍを含むように、ｎ個のバケットグループが生成される。視覚化を容易にするために、各バケットグループは、同じシェーディングを有するバケットにより、図で表されている。近隣が、すべてのバケットグループからの少なくとも１つのバケットを含むように生成される。マルチホップルーティングを容易にするために、グループが、バケットグループのグループ分けを含むように形成される。
【００２２】
図１を再び参照すると、ピアツーピアオーバレイネットワーク１０４は、イベント配信システムにしたがって編成されて、バケット（０−１４）を含んでいる。ノード１０６のそれぞれは、バケットに割り当てられている。１つの構成において、２つのバケット間のすべてのノードは、より早いバケットに割り当てられる。例えば、ノード識別子のより高位のビットが、バケット識別子を決定するために使用される。しかしながら、ノードを各バケットに割り当てるために、任意のアルゴリズムまたは割り当て技術を使用してもよいことに注目すべきである。同じバケット内のノードは、互いに兄弟である。バケットの数が固定されていることから、バケットを使用して形成される配布木は、すべてのノードが配布木の同じビューを形成することを意味する。例えば、すべてのノードは、オーバレイネットワーク１０４にわたってメッセージをルーティングすべきバケットの正確な順序を知っている。
【００２３】
１つの構成において、特定のノードがイベント配信サーバの役割を果たし、バケットおよび対応するバケットグループを識別するように動作する。例えば、オーバレイネットワーク１０４において、ノード１１０がイベント配信サーバの役割を果たす。ノード１１０は、配信プロセッサ（ＤＰ）１１２を備え、ＤＰ１１２は、バケット（０−１４）を識別し、その結果、ノードをそれらのバケットに割り当てるように動作する。ＤＰ１１２はまた、ここで記述するイベント配信システムにしたがって、バケットグループを決定するように動作する。配信プロセッサ（ＤＰ）１１２の動作は、この文書の別のセクションにおいてより詳細に記述されている。バケットおよびバケットグループの識別は、他の方法で実行できることにも注目すべきである。例えば、複数のノードがバケットおよびバケットグループを識別するように動作するように、配信プロセスを使用してもよい。別の構成において、ネットワークの構成、初期化、または登録の間に、バケット情報が各ノードに提供される。
【００２４】
図２は、イベント配信システムにしたがって生成される配布木２００を示す。例えば、配布木２００は、図１中で示したバケット（０−１４）により形成され、固定長のアレイを表す。イベントの配布のために、特定のバケット中のノードは、それ自体のバケット中の兄弟と、２個の子バケット中の１つ以上のノードとに通知する。例えば、バケット５中のノードは、バケット５中のその兄弟ノードと、その２個の子バケット４および６中のノードとに通知する。
【００２５】
したがって、イベント配信システムの１つの構成において、固定された数のバケットが識別され、これらのバケットは、オーバレイネットワーク１０４中のすべてのノードにおいて配布木の同じビューを提供するように動作し、その結果、従来のシステムにおいて生じ得る、ルーティングテーブルにおける差異の影響を緩和する。
【００２６】
（兄弟がない）１ホップルーティングおよび解析
図２中で示した配布木２００に関係付けられている１ホップルーティングの解析を次に示す。例えば、ピアツーピアオーバレイネットワーク１０４にわたって配布されるイベントに応答して、次の送信がノードに関して生じる。  
１．ノードは、イベントに関して、その親バケット中のノードから１つのメッセージを受け取る。  
２．ノードは、その親バケット中のノードに１つの肯定応答を送る。  
３．ノードは、各子バケット中の１つ以上のノードにメッセージを転送する。  
４．ノードは、各子バケット中のノードから１つの肯定応答を受け取る。  
５．ノードは、それ自体のバケット中のすべての兄弟にメッセージを転送する。  
６．ノードは、それ自体のバケット中のすべての兄弟から肯定応答を受け取る。
【００２７】
さらに、次の条件が適用される２分伝搬木を仮定する。  
１．半分のノードは葉である。  
２．ノードは、半分のイベントに対して葉であるであろう。  
３．ノードは、半分のイベントだけを転送しなければならない。
【００２８】
１つの例において、配布木２００に関係付けられている１ホップルーティングを解析するために、次の情報を仮定する。  
１．メッセージサイズ＝ｘバイト  
２．ヘッダサイズ＝肯定応答サイズ＝ｙバイト  
３．イベントレート＝ｒイベント／秒  
４．各バケット内に兄弟はない。
【００２９】
ダウンストリームの解析に対して、次の送信が生じる。  
１．すべてのイベントに対する、親からの１つのメッセージは、毎秒ｒ*（ｘ＋ｙ）の送信レートを生じさせる。  
２．各子からの半分のイベントに対する肯定応答は、毎秒２*（ｒ／２）*ｙバイトの送信レートを生じさせる。  
３．１ホップに対する総ダウンストリーム帯域幅は、Ｄ1＝ｒ*（ｘ＋２ｙ）である。
【００３０】
アップストリームの解析に対して、次の送信が生じる。  
１．半分のイベントに対する、子への２つのメッセージは、２*（ｒ／２）*（ｘ＋ｙ）を発生させる。  
２．すべてのイベントに対する、親への１つの肯定応答は、毎秒ｒ*ｙバイトを発生させる。  
３．１ホップルーティングに対する総アップストリーム帯域幅は、毎秒Ｕ1＝ｒ*（ｘ＋２ｙ）バイトである。
【００３１】
したがって、オーバレイネットワークが、識別される百万個のバケットとともに百万個のノードを含む（すなわち、兄弟がない）ケースにおいて、次の仮定を使用して、帯域幅およびルーティングテーブルサイズの解析を実行できる。  
１．毎秒ｒ＝２００のイベント  
２．ｘ＝２０バイト  
３．ｙ＝３０バイト  
４．ルーティングテーブルのエントリは４０バイトである。
【００３２】
これらの仮定を上述の等式に代入することにより、次の１ホップの帯域幅とルーティングテーブルのサイズが取得される。  
１．帯域幅＝１２８ｋｂｐｓ  
２．ルーティングテーブルサイズ＝４０メガバイト
（兄弟を有する）１ホップルーティングおよび解析
各バケット中にｓ個の兄弟ノードがあると仮定される、配布木２００に関係付けられている１ホップルーティングの解析を次に示す。結果として、すべてのノードは、（ｓ−１）個の兄弟を有する。例えば、配布されるイベントに応答して、次の送信が、ノードに関して生じる。
【００３３】
ダウンストリームに対して、次の送信が生じる。  
１．すべての１／ｓのイベントに対する、親からの１つのメッセージは、毎秒（ｒ／ｓ）*（ｘ＋ｙ）バイトの送信レートを生じさせる。  
２．（ｓ−１）／ｓのイベントに対する、兄弟からの１つのメッセージは、（ｓ−１）／ｓ*ｒ*（ｘ＋ｙ）を生じさせる。  
３．半分のイベントに対する、子からの２つの肯定応答は、毎秒２*（ｒ／２）*ｙの送信レートを生じさせる。  
４．すべての受け取られたイベントに対する、（ｓ−１）の兄弟からの１つの肯定応答は、（ｓ−１）*ｒ／ｓ*（ｘ＋ｙ）を生じさせる。  
５．１ホップに対する総ダウンストリーム帯域幅は、Ｄ1＝ｒ*（ｘ＋２ｙ）である。
【００３４】
アップストリームの解析に対して、次の送信が生じる。  
１．半分のイベントに対する、子への２つのメッセージは、２*ｒ／２*（ｘ＋ｙ）＝ｒ／ｓ（ｘ＋ｙ）を生じさせる。  
２．すべての受け取られたイベントに対する、兄弟への（ｓ−１）個のメッセージは、（ｓ−１）*ｒ／ｓ*（ｘ＋ｙ）を生じさせる。  
３．すべてのイベントに対する、親への１つの肯定応答は、毎秒ｒ／ｓ*ｙバイトを生じさせる。  
４．（ｓ−１）／ｓのイベントに対する、兄弟への１つの肯定応答は、（ｓ−１）／ｓ*ｒ*ｙを生じさせる。  
５．１ホップルーティングに対する総アップストリーム帯域幅は、毎秒Ｕ1＝ｒ*（ｘ＋２ｙ）バイトである。
【００３５】
したがって、各バケットがｓ個のノードを含むケースにおいて、帯域幅要件は兄弟の数から独立していることが理解できる。兄弟の数は、省電力化のために利用できるアップストリームトラフィックのバースト性に影響を及ぼす。
【００３６】
１ホップルーティングおよびＫ−アレイのイベント伝搬木
イベント配布のための２分木の代わりに、ｋ−アレイの木を利用する、１ホップルーティングの解析を次に示す。完全なｋ−アレイ木において、ほぼ、ノードの（ｋ−１）／ｋが葉である。ノードは、すべてのノードの分数（ｋ−１）／ｋに対して葉であり、ノードは、メッセージの分数１／ｋだけを転送しなければならないであろう。
【００３７】
ダウンストリームの解析に対して、次の送信が生じる。  
１．親からの１つのメッセージは、毎秒ｒ*（ｘ＋ｙ）バイトの送信レートを生じさせる。  
２．イベントの１／ｋに対する、子からのｋ個の肯定応答は、毎秒ｋ*ｒ／ｋ*ｙバイトの送信レートを生じさせる。  
３．１ホップに対する総ダウンストリーム帯域幅は、Ｄ1k＝ｒ*（ｘ＋２ｙ）である。
【００３８】
アップストリームの解析に対して、次の送信が生じる。  
１．イベントの分数１／ｋに対する、子へのｋ個のメッセージは、ｋ*ｒ／ｋ*（ｘ＋ｙ）＝ｒ（ｘ＋ｙ）を生じさせる。  
２．親への１つの肯定応答は、毎秒ｒ*ｙバイトを生じさせる。  
３．１ホップルーティングに対する総アップストリーム帯域幅は、毎秒Ｕ1k＝ｒ*（ｘ＋２ｙ）バイトである。
【００３９】
したがって、ｋ−アレイ配布木が使用されるケースにおいて、帯域幅要件は、木の程度から独立していることが理解できる。木の程度の増加は、省電力化のために利用できるアップストリームトラフィックのバースト性に影響を及ぼす。
【００４０】
２ホップルーティング
図３は、イベント配信システムの観点にしたがった、２ホップルーティングに対して構成されているピアツーピアオーバレイネットワーク３００を示す。
【００４１】
オーバレイネットワーク３００において、Ｎ個のバケットが、グループ毎にｍ個のバケットの、ｎ個のグループに分けられている。したがって、バケットの総数Ｎは、Ｎ＝（ｎ*ｍ）から決定できる。例えば、オーバレイネットワーク３００は、Ｎ＝１６のバケットを図示し、Ｎ＝１６のバケットは、グループ毎にｍ＝４のバケットを含むｎ＝４のバケットグループに分けられている。理解しやすいように、各グループのバケットは、番号およびシェーディングにより識別されている。例えば、図３は、次のバケットグループを図示する。  
１．グループ１−ｇ（１，ｘ）黒のシェーディング  
２．グループ２−ｇ（２，ｘ）グレーのシェーディング  
３．グループ３−ｇ（３，ｘ）模様シェーディング  
４．グループ４−ｇ（４，ｘ）シェーディングなし（クリア）
【００４２】
図３中のバケットのそれぞれは、グループ番号と、それぞれのバケット番号とにより表されている（すなわち、ｇ（グループ番号，バケット番号））。近隣（１−４）もまた示されており、各近隣は、各グループからの１つのバケットを含む。ネットワーク３００はまた、バケットｇ（１，１）中のノードに位置しているＤＰ３０２を備えている。ＤＰ３０２は、イベント配信システムにしたがって動作して、バケットの数と、バケットへのノードの割り当てと、グループの数と、各グループ中のバケットの数とを識別する。ＤＰ３０２は、図１中で示したＤＰ１１２としての使用に適していることに注目すべきである。
【００４３】
第１の構成において、同じグループの２つの連続するバケット間の距離は常に、グループ毎のバケットの数ｍである。グループ中のバケットの順序は、すべてのグループにわたって同じであり；同様に、近隣中のバケットの順序は、すべての近隣にわたって同じである。図３中で使用されるグループ分けの割り当ては、以下のすべての説明において使用されることに注目すべきである。
【００４４】
第２の構成において、同じシェーディングの２つの連続するバケット間の距離は、マッピング機能を使用して選ばれる。このアプローチは、ランダム化の確率に起因して、望ましい安全特性を有するかもしれない。
【００４５】
これらの構成において、オーバレイネットワーク３００のノードは、次の情報を知っている。  
１．ノードは、それ自体のバケットを含むその近隣におけるｍ個のバケット中のすべてのノードについて知っている。近隣は、ｍ個のバケットの弧により表される。第１のオプションにおいて、その近隣中の半分のバケットが、それ自体のバケットの両側にある。したがって、これは、それ自体のバケットを中央に有する、ｍ個のバケットの近隣である。第２のオプションにおいて、近隣は、ノードを含む任意のｍ個のバケットの弧により表される。  
２．ノードは、そのグループにおけるすべてのバケット中のすべてのノードについて知っている。これらは、“バディ”バケットと呼ばれ、いっしょに、それらはバディネットワークを形成する。
【００４６】
２ホップルーティングの例
図４は、イベント配信システムの観点にしたがった、２ホップルーティングのプロセスを図示するピアツーピアオーバレイネットワーク４００を示す。以下の記述において、１ホップルーティングは、第１のノードから、第１のノード自体の近隣におけるｍ個のバケット中の他のすべてのノードへのルーティングとして定義される。２ホップルーティングは、第１のノードから、第１のノードのバケットグループ中であるが、異なる近隣における、第２のノードへルーティングし、次に、第２のノードの近隣中のターゲットノードにルーティングするものとして定義される。例えば、図４を参照すると、メッセージが近隣３におけるバケットｇ（１，３）中のノードから、近隣１におけるバディバケットｇ（１，１）中のノードに送られるときに、第１のホップ４０２が生じる。近隣１は、ターゲットノードの近隣である。メッセージが、近隣１におけるバディバケットｇ（１，１）中のノードから、近隣１におけるバケットｇ（４，１）中のターゲットノードに送られるときに、第２のホップ４０４が生じる。
【００４７】
イベント配信システムの観点にしたがった、２ホップルーティングのためのバケット構成を次に説明する。次の情報が仮定される。  
１．１００万個のノードのネットワーク、ここで、ｎ＝ｍ＝１０００。  
２．各ノードは、その近隣中の１０００個のノード（それ自体も含まれる）について知っている。  
３．各ノードは、そのバディネットワーク中の１０００個のノード（それ自体も含まれる）について知っており、ノードのそれぞれは、１０００個の他のノード（それ自体も含まれる）について知っている。  
４．すべてのバディバケットに関係付けられている近隣弧は、互いにオーバーラップせず、それゆえに、相互排除的である。  
５．すべてのバディバケットの近隣弧は、全体として漏れがないように、オーバレイネットワーク中のすべてのバケットをカバーする。
【００４８】
結果として、各ノードは、１０００*１０００＝１，０００，０００個のノードに到達できる。例えば、ノードは、１ホップにおいて、その近隣中のすべての１０００個のノードに到達できる。さらに、ノードは、そのバディノードを使用して、２ホップにおいて他のすべてのノードに到達できる（すなわち、ターゲットの近隣中のバディノードへの第１のホップと、ターゲットの近隣中のバディノードからターゲットノードへの第２のホップ）。
【００４９】
２ホップルーティング中のイベント伝搬
２ホップルーティングをサポートするために、ノードは、それ自体の近隣中のすべてのバケットと、そのすべてのバディバケットとにおける参加／離脱について学ぶ。２つの２分木が、イベントの伝搬のために使用される。１つの木は、ノード自体の近隣中のすべてのバケットを含み、ローカル木と呼ばれるであろう。もう１つの木は、すべてのバディバケットを含み、バディ木と呼ばれるであろう。正常な離脱中に、ノードは離脱する前に他のすべてのノードに通知する。ノードのエラー（node failures）（すなわち、正常でない離脱）に対して、監視ノードがノードのエラーを検出し、エラーが生じたノードのバディバケット中のノードに対してイベントを配布する。
【００５０】
監視ノードのバディバケットは、エラーが生じたノードのバケットとは異なるシェーディングを有していてもよい（すなわち、エラーが生じたノードは監視ノードとは異なるグループ中にあってもよい）ことに注目すべきである。このケースにおいて、監視ノードのバディバケット中のノードは、エラーが生じたノードのバディバケット中のノードに通知してもよく、追加の１つのホップを利用してもよい。例えば、黒のバケット中のノードにエラーが生じ、そのバケット中には他のノードがない。グレーのバケット中のノードが、エラーを検出し、そのグループ中のすべてのグレーのバケットに対して、エラーイベントに関する情報を配布すると想定されるであろう。グレーのバケット中のノードは次に、隣接した黒のバケットに通知する。
【００５１】
２ホップルーティングの解析
イベント配信システムの観点にしたがった２ホップルーティングの解析を次に示す。次のパラメータが仮定される。  
１．バケットの総数＝Ｎ、ｎ*ｍ＝Ｎとなるように、それぞれｍ個のバケットのｎ個のグループを定義する  
２．メッセージサイズ＝ｘ  
３．ヘッダサイズ＝ｙ  
４．システムイベントレート＝ｒイベント／秒  
５．各近隣におけるイベントレート＝ｒ*（ｍ／Ｎ）＝ｒ／ｎ  
６．バディネットワークにおけるイベントレート＝ｒ*（ｎ／Ｎ）＝ｒ／ｍ  
７．バケット中に兄弟がないことと、正常な参加および離脱とを仮定。
【００５２】
ダウンストリームの解析に対して、次の送信が生じる。  
１．ローカル木中の親からの１つのメッセージは、（ｒ／ｎ）*（ｘ＋ｙ）を生じさせる。
【００５３】
２．バディ木中の親からの１つのメッセージは、（ｒ／ｍ）*（ｘ＋ｙ）を生じさせる。  
３．半分のローカルイベントに対する、ローカル木中の子からの２つの肯定応答は、２*（ｒ／２ｎ）*ｙを生じさせる。  
４．半分のバディイベントに対する、バディ木中の子からの２つの肯定応答は、２*（ｒ／２ｍ）*ｙを生じさせる。  
５．２ホップルーティングに対する総ダウンストリーム帯域幅は、Ｄ2＝ｒ*（ｘ＋２ｙ）*（（ｍ＋ｎ）／ｍｎ）＝Ｄ1*（ｍ＋ｎ）／ｍｎである。
【００５４】
アップストリームの解析に対して、次の送信が生じる。  
１．半分のローカルイベントに対する、ローカル木中の子への２つのメッセージは、２*（ｒ／２ｎ）*（ｘ＋ｙ）を生じさせる。  
２．半分のローカルイベントに対する、バディ木中の子への２つのメッセージは、２*（ｒ／２ｍ）*（ｘ＋ｙ）を生じさせる。  
３．ローカル木中の親への１つの肯定応答は、（ｒ／ｎ）*ｙを生じさせる。  
４．バディ木中の親への１つの肯定応答は、（ｒ／ｍ）*ｙを生じさせる。  
５．２ホップルーティングに対する総アップストリーム帯域幅は、Ｕ2＝ｒ*（ｘ＋２ｙ）*（（ｍ＋ｎ）／ｍｎ）＝Ｕ1*（ｍ＋ｎ）／ｍｎである。
【００５５】
上述の等式から理解できるように、２ホップルーティングにおいて、帯域幅は、（ｍ＋ｎ）／ｍｎが最小になるときに最小になる。しかしながら、ｍ*ｎは固定されている（すなわち、ｍ*ｎは、バケットの総数Ｎに等しい）。したがって、固定されたｍ*ｎに対して、量（ｍ＋ｎ）／ｍｎは、ｍ＝ｎ＝ｓｑｒｔ（ｍ*ｎ）となるときに最小である。
【００５６】
一例として、次のパラメータが仮定されるであろう。  
１．ネットワークは、１０6個のノードを含む。  
２．ｘ＝２０バイト  
３．ｙ＝３０バイト  
４．ｍ＝ｎ＝ｓｑｒｔ（１０6）＝１０3 
５．ルーティングテーブルのエントリサイズ＝４０バイト
【００５７】
上述のパラメータを、２ホップルーティングに対する等式に代入すると、次の結果が生じる。  
１．帯域幅＝２５６ｂｐｓ  
２．ルーティングテーブルサイズ＝（ｍ＋ｎ）*４０＝２０００エントリ*４０＝８０ｋＢ
【００５８】
１０8個のノードを有し、ｒが２０００イベント／秒に等しいネットワークに対して、上述の演算を繰り返すと、次の結果が生じる。  
１．ｍ＝ｎ＝１０4 
２．帯域幅＝２．５６ｋｂｐｓ  
３．ルーティングテーブルサイズ＝２００００エントリ*４０＝８００ｋＢ
したがって、理解できるように、２ホップルーティングは、１ホップルーティングよりも、低減された帯域幅と小さいルーティングテーブルとを提供する。
【００５９】
３ホップルーティング
イベント配信システムの別の構成において、３ホップルーティングが提供される。３ホップにおいて、すべてのバケットＮをグループ化する２レベルは、それぞれ、ｍ個のバケットのｎ個のバケットグループの、ｏ個のグループに分けられる。例えば、ｏ＝ｎ＝ｍ＝１００である、１０6個のノードのネットワークにおいて、各ノードは、次のことについて知っている。  
１．その近隣中の１００個のノード（１００個のノードへの１ホップルーティング）  
２．他の１００個のノード、ノードのそれぞれは、せいぜい１ホップにおいて１００個より多いノードに到達できる（１０００個のノードへの２ホップルーティングを提供する）。  
３．１００個より多いノード、ノードのそれぞれは、せいぜい２ホップにおいて１００００個のノードに到達できる（１０6個のノードへの３ホップルーティングを提供する）。
【００６０】
３ホップルーティングの解析
イベント配信システムの観点にしたがった３ホップルーティングの解析を次に示す。次のパラメータが仮定される。  
１．バケットの総数＝Ｎ、ここで、ｍ*ｎ*ｏ＝Ｎ  
２．固定されたｍ*ｎ*ｏに対して、量（ｍ＋ｎ＋ｏ）／ｍｎｏは、ｍ＝ｎ＝ｏ＝ｃｕｂｅｒｏｏｔ（ｍ*ｎ*ｏ）であるときに最小である。  
３．メッセージサイズ＝ｘ
【００６１】
上述のパラメータであるものと仮定して、次のダウンストリームおよびアップストリームの帯域幅は、先に提供した解析と類似の解析を使用して決定できる。  
１．ダウンストリーム帯域幅  
Ｄ3＝ｒ*（ｘ＋２ｙ）*（ｍ＋ｎ＋ｏ）／ｍｎｏ＝Ｄ1*（ｍ＋ｎ＋ｏ）／ｍｎｏ  
２．アップストリーム帯域幅  
Ｕ3＝ｒ*（ｘ＋２ｙ）*（ｍ＋ｎ＋ｏ）／ｍｎｏ＝Ｕ1*（ｍ＋ｎ＋ｏ）／ｍｎｏ
【００６２】
３ホップルーティングを説明するために、次のパラメータを仮定する。  
１．１０6個のノードを含むネットワーク  
２．ｘ＝２０バイト  
３．ｙ＝３０バイト  
４．ｍ＝ｎ＝ｏ＝１００  
５．ルーティングテーブルのエントリサイズ＝４０バイト
【００６３】
上述のパラメータを、３ホップルーティングに対する等式に代入すると、次の結果が生じる。  
１．帯域幅＝３８．４ｂｐｓ  
２．ルーティングテーブルサイズ＝（ｍ＋ｎ＋ｏ）*４０＝３００エントリ*４０＝１２ｋＢ
【００６４】
１０9個のノードを有し、ｒが２００，０００イベント／秒に等しいネットワークに対して上述の演算を繰り返すと、次の結果を生じる。  
１．ｍ＝ｎ＝ｏ＝１０００  
２．帯域幅＝３８４ｂｐｓ  
３．ルーティングテーブルサイズ＝３０００エントリ*４０＝１２０ｋＢ
【００６５】
ルーティング構成の比較
図５は、イベント配信システムにしたがった、さまざまなルーティング構成の比較を図示するテーブル５００を示す。一般に、ｎホップルーティングの構成に対して、帯域幅およびルーティングテーブルのサイズは、次のものから決定できる。  
１．帯域幅Ｄn−Ｋ*ｒ*（ｘ＋２ｙ）  
ここで、Ｋ＝（ｍ1＋ｍ2＋ｍ3＋．．．＋ｍn）／（ｍ1*ｍ2*ｍ3*．．．*ｍn）  
２．ルーティングテーブルサイズは、Ｏ*（Ｎのｎ乗根）であり、Ｎは、ノード／バケットの総数である。
【００６６】
図５中で図示されているように、ルーティングのタイプ５０２と、ノードの数５０４と、帯域幅５０６と、ルーティングテーブルのサイズ５０８とが示されている。したがって、テーブル５００を使用して、待ち時間と、帯域幅またはルーティングテーブルサイズとの間のトレードオフを管理できる。例えば、１０6個のノードを有するオーバレイネットワークにおいて、３ホップルーティングを提供するグループ分けの構成は、図５中で図示される、最も小さいルーティングテーブルサイズを結果として生じる。
【００６７】
図６は、イベント配信システムの観点において使用するための例示的な配信プロセッサ６００を示す。例えば、ＤＰ６００は、例えば、図３中で示したＤＰ３０２のように、ピアツーピアオーバレイネットワーク中のノードにおける使用に適している。ＤＰ６００は、プロセッサ６０２と、バケット構成ロジック６０４と、メモリ６０６と、トランシーバ６０８とを備え、すべてがデータバス６１０に結合されている。ＤＰ６００は、単に１つの構成に過ぎず、他の構成が、本観点の範囲内で可能であることに注目すべきである。
【００６８】
トランシーバ６０８は、ハードウェアおよび／またはハードウェアにより実行されるソフトウェアを備えており、ハードウェアおよび／またはハードウェアにより実行されるソフトウェアは、ＤＰ６００が、ピアツーピアオーバレイネットワーク上の複数のノードとの、データ、イベントまたは他の情報の通信を可能にするように動作する。１つの観点において、トランシーバ６０８は、ピアツーピアオーバレイネットワークのノードと１つ以上の通信リンク６１２を確立するように動作可能である。例えば、通信リンク６１２は、下層ＩＰネットワークのサービスを利用して形成されている。
【００６９】
メモリ６０６は、ルーティングテーブル６１４を記憶するように動作可能な任意の適切な記憶デバイスを備えている。ルーティングテーブル６１４は、識別されているバケットを使用して、ピアツーピアオーバレイネットワーク上でのメッセージのルーティングを記述する。例えば、ルーティングテーブル６１４は、ここで記述したイベント配信システムにしたがった、１、２または３のホップルーティングを可能にするルーティング情報を提供する。メモリ６０６はまた、配信モジュール６１６を記憶するように動作可能であり、配信モジュール６１６は、ここで記述した機能を提供するための、プロセッサ６０２により実行可能な命令またはコードを組み入れている１つ以上のモジュールを含む。
【００７０】
プロセッサ６０２は、ＣＰＵ、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリ素子、および／またはハードウェアにより実行されるソフトウェアのうちの少なくとも１つを備える。１つの観点において、プロセッサモジュール６０２は、ＤＰ６００モジュールを制御して、ここで記述した機能を実行するために、配信モジュール６１６の命令またはコードを実行するように動作する。
【００７１】
１つの構成において、プロセッサ６０２は、ノード識別子、バケット識別子およびバケットグループ識別子を含むオーバレイネットワーク構成パラメータを受け取るように動作する。オーバレイネットワーク構成パラメータは、オーバレイネットワーク中の１つ以上のノードから受け取られてもよく、または、ネットワーク構成、初期化、または登録のプロセスの間に、集中化したサーバから受け取られてもよい。オーバレイネットワーク構成パラメータはまた、ユーザ入力から受け取られてもよい。オーバレイネットワーク構成パラメータは、メモリ６０６中に記憶され、プロセッサ６０２は、これらの構成パラメータを使用して、ルーティングテーブル６１４としてメモリ６０６中に記憶されるルーティングテーブルを最初に生成させるように動作する。ルーティングテーブル６１４は、１、２または３のホップルーティングを提供するように構成されていてもよい。
【００７２】
別の構成において、バケット構成ロジック６０４が、オーバレイネットワーク構成パラメータを生成させるように動作する。バケット構成ロジック６０４は、ＣＰＵ、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリ素子、および／またはハードウェアにより実行されるソフトウェアのうちの少なくとも１つを備える。バケット構成ロジック６０４は、固定された数のバケットと、それらのバケットに割り当てられるノードとを決定するように動作する。バケット構成ロジック６０４はまた、バケットのグループ分けを実行して、ここで記述した１レベルまたはマルチレベルのグループ分けを実現するように動作する。バケット構成ロジック６０４により生成されるオーバレイネットワーク構成パラメータは次に、メモリ６０６中に記憶され、また、トランシーバ６０８を使用して、オーバレイネットワーク中の他のノードに配信される。プロセッサ６０２は、これらの構成パラメータを取得して、ルーティングテーブル６１４を最初に生成させてもよい。オーバレイネットワーク中の他のノードは、同じ機能を実行して、それら自体のルーティングテーブルを最初に生成させる。
【００７３】
動作中に、トランシーバ６０８は、１つ以上のイベントを受信するように動作し、１つ以上のイベントは、プロセッサ６０２にパスされる。プロセッサ６０２は、ルーティングテーブル６１４中のバケットグループに基づいて、イベントを配信するように動作する。プロセッサ６０２はまた、受信したイベントに基づいて、ルーティングテーブル６１４を更新するように動作する。例えば、ノードが、参加するか、または離脱するとき、あるいは、近隣に対する更新が生じるとき、プロセッサ６０２は、これらのイベントに関するメッセージを受け取る。プロセッサ６０２はルーティングテーブル６１４を使用して、オーバレイネットワーク上で、これらのイベントをルーティングする。プロセッサ６０２はまた、ルーティングテーブル６１４を更新して、これらの変更を反映させるように動作する。この動作は、オーバレイネットワーク中の他のノードにおいて繰り返され、それにより、各ノードは、それ自体のルーティングテーブルを更新する。したがって、システムは、ピアツーピアオーバレイネットワークにおけるイベントの配信およびルーティングに対して、効率的なメカニズムを提供する。
【００７４】
１つの観点において、イベント配信システムは、機械読み取り可能媒体上に記憶されているか、または組み入れられている１つ以上のプログラム命令である、“命令”または“コード”から形成されるコンピュータプログラムを有するコンピュータプログラムプロダクトを備えている。コードが、例えば、プロセッサ６０２のような、少なくとも１つのプロセッサにより実行されるとき、それらの実行は、ここで記述したイベント配信システムの機能をＤＰ６００に提供させる。例えば、機械読み取り可能媒体は、フロッピー（登録商標）ディスク、ＣＤＲＯＭ、光学ディスク、メモリカード、ＦＬＡＳＨメモリデバイス、ＲＡＭ、ＲＯＭ、あるいは、ＤＰ６００とインターエースできる他の任意のタイプのメモリデバイスまたは機械読み取り可能媒体を含む。別の観点において、コードは、外部のデバイスまたは通信ネットワークリソースからＤＰ６００にダウンロードされてもよく、後の実行のために、機械読み取り可能媒体中に記憶されてもよい。実行されるとき、コードのセットは、ここで記述したイベント配信システムの観点を提供するように動作する。
【００７５】
図７は、イベント配信システムにしたがって、ピアツーピアオーバレイネットワーク中でイベントのルーティングを提供するための例示的な方法７００を示す。例えば、方法７００は、図６中で示したＤＰ６００によるノードにおいて実行できる。
【００７６】
理解しやすいように、方法７００は、図６中で示したＤＰ６００により実行されるように以下で説明される。１つの観点において、プロセッサ６０２は、ＤＰ６００を制御して以下で記述する機能を実行するために、メモリ６０６中に記憶されている配信モジュール６１６の１つ以上のコードを実行する。
【００７７】
ブロック７０２において、ピアツーピアオーバレイネットワーク中の、１つ以上のノードを含む固定された数のバケットが識別される。例えば、プロセッサ６０２が、バケットを識別するように動作する。１つの観点において、プロセッサ６０２は、メモリ６０６中に記憶されている構成情報に基づいてバケットを識別する。例えば、オーバレイネットワーク上のノードは、オーバレイネットワーク上のバケットの位置に基づいて、各バケットに割り当てられる。例えば、ノード識別子のより高位のビットが、バケット識別子を決定するために使用される。１つの構成において、２つのバケット間のすべてのノードは、より小さい識別子に関係付けられているバケットに割り当てられる。しかしながら、任意のアルゴリズムまたは割り当て技術を使用して、各バケットにノードを割り当ててもよいことに注目すべきである。
【００７８】
ブロック７０４において、１つ以上のバケットを含む固定された数のバケットグループが識別される。例えば、プロセッサ６０２が、バケットグループを識別するように動作する。１つの観点において、プロセッサ６０２は、メモリ６０６中に記憶されている構成情報に基づいて、バケットグループを識別する。
【００７９】
ブロック７０６において、ルーティングテーブルが、１、２または３のホップルーティングを提供するために、バケットグループに基づいて最初に生成される。１つの観点において、プロセッサ６０２は、バケットグループに基づいて、ルーティングテーブルを生成させるように動作する。
【００８０】
ブロック７０８において、受信したイベントが、ルーティングテーブルのバケットグループに基づいて配信される。１つの構成において、イベントは、参加、離脱、または、近隣の更新を含む。例えば、プロセッサ６０２は、ルーティングテーブル６１４のバケットグループに基づいて、イベントを配信するように動作する。イベントは、トランシーバ６０８を使用して、オーバレイネットワーク上で配信される。
【００８１】
ブロック７１０において、ルーティングテーブルが、イベントに基づいて更新される。例えば、プロセッサ６０２は、受信されている、参加、離脱、または、近隣の更新に基づいて、ルーティングテーブル６１４を更新する。
【００８２】
それゆえに、方法７００は、イベント配信システムにしたがって、ピアツーピアオーバレイネットワーク中でイベントの配信およびルーティングテーブルの更新を提供するように実行できる。方法７００は、単に１つの構成であり、方法７００の動作は、さまざまな観点の範囲内で、並べ変えられ、または修正されてもよいことに注目すべきである。したがって、他の構成が、ここで記述したさまざまな観点の範囲により可能である。
【００８３】
図８は、イベント配信システムの観点において、ノードで使用するための例示的な配信プロセッサ８００を示す。例えば、配信プロセッサ８００は、図６中で示した配信プロセッサ６００として実現してもよい。１つの観点において、配信プロセッサ８００は、ここで記述したイベント配信システムの観点を提供するように構成されている１つ以上のモジュールを含む、少なくとも１つの集積回路により実現される。例えば、１つの観点において、各モジュールは、ハードウェアおよび／またはハードウェアにより実行されるソフトウェアを含む。
【００８４】
配信プロセッサ８００は、オーバレイネットワーク上の複数のバケットを識別する手段（８０２）を含む第１のモジュールを備え、各バケットは、それぞれ、１つ以上のノードを含み、１つの観点において、第１のモジュールは、プロセッサ６０２を備える。配信プロセッサ８００はまた、バケットグループを識別する手段（８０４）を含む第２のモジュールを備え、各バケットグループは、それぞれ、選択された数のバケットを含み、１つの観点において、第２のモジュールはプロセッサ６０２を含む。配信プロセッサ８００はまた、バケットグループに基づいてイベントを配信する手段（８０６）を含む第３のモジュールを備え、１つの観点において、第３のモジュールは、トランシーバ６０８を含む。配信プロセッサ８００はまた、イベントに基づいてルーティングテーブルを更新する手段（８０８）を含む第４のモジュールを備え、１つの観点において、第４のモジュールは、プロセッサ６０２を含む。
【００８５】
汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）または他のプログラム可能論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいはここで記述した機能を実行するために設計された、これらの任意の組み合わせにより、ここで開示した観点とともに記述した、さまざまな実例となる論理、論理ブロック、モジュールおよび回路を実現または実行してもよい。汎用プロセッサはマイクロプロセッサでもよいが、代わりに、プロセッサは任意の従来のプロセッサ、制御装置、マイクロ制御装置、または状態遷移機械であってもよい。計算デバイスの組み合わせ、例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに関連した１つ以上のマイクロプロセッサ、または他の任意のこのような構成として、プロセッサを実現してもよい。
【００８６】
ここで開示した観点に関して記述した方法またはアルゴリズムのステップを、ハードウェア中で直接、プロセッサにより実行されるソフトウェアモジュール中で、またはその２つの組み合わせ中で具体化してもよい。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバルディスク、ＣＤ−ＲＯＭ，または技術的に知られている他の任意の形態の記憶媒体中に存在してもよい。プロセッサが記憶媒体から情報を読み取ることができ、記憶媒体に情報を書き込むことができるように、例示的な記憶媒体はプロセッサに結合されている。代わりに、記憶媒体はプロセッサと一体化されていてもよい。プロセッサおよび記憶媒体は、ＡＳＩＣ中に存在してもよい。ＡＳＩＣワイヤレス通信デバイス中に存在してもよい。代わりに、プロセッサおよび記憶媒体は、ワイヤレス通信デバイス中にディスクリートコンポーネントとして存在してもよい。
【００８７】
いかなる当業者であっても本開示を実施しまたは使用できるように、開示した観点の記述をこれまでに提供している。これらの観点に対してさまざまな修正が当業者に容易に明らかであり、本発明の精神または範囲から逸脱することなく、ここで規定した一般的な原理を、例えば、インスタントメッセージングサービスまたは何らかの一般的なワイヤレスデータ通信における、他の観点に適用してもよい。したがって、本発明は、ここで示した観点に限定されるように向けられていないが、ここで開示した原理および新規な特徴に矛盾しない最も広い範囲に一致すべきである。本記述において、“例として、事例として、あるいは実例として機能する”ことを意味するために、“例示的な”という文言をここではもっぱら使用している。“例示的な”ものとして、ここで記述するいずれの観点も、他の構成と比較して、必ずしも、好ましいまたは効果的なものと解釈されるものではない。
【００８８】
したがって、イベント配信システムの観点をここで図示および記述しているが、観点の精神または本質的な特性から逸脱することなく、さまざまな変更を観点に対して実施できることを理解すべきである。それゆえに、ここでの開示および記述は、特許請求の範囲において示されている本発明の範囲の、限定的ではない実例であるように向けられている
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのための方法において、
前記方法は、
前記オーバレイネットワーク上の複数のバケットを識別することと、
バケットグループを識別することと、
前記バケットグループに基づいて、イベントを配信することと、
前記イベントに基づいて、ルーティングテーブルを更新することとを含み、
各バケットは、それぞれ、１つ以上のノードを含み、
各バケットグループは、それぞれ、選択された数のバケットを含む方法。
［２］前記イベントは、参加と、離脱と、近隣の更新とのうちの少なくとも１つを含む上記［１］記載の方法。
［３］前記更新することは、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成することを含む上記［１］記載の方法。
［４］前記複数のバケットを識別することは、合計Ｎ個のバケットがあるように、前記複数のバケットを識別することを含む上記［１］記載の方法。
［５］前記バケットグループを識別することは、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成することを含み、Ｎ＝ｎ*ｍである上記［４］記載の方法。
［６］前記ルーティングテーブルを更新することは、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にすることを含む上記［１］記載の方法。
［７］前記バケットグループを識別することは、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成することを含み、Ｎ＝ｎ*ｍ*ｏである上記［４］記載の方法。
［８］前記ルーティングテーブルを更新することは、前記イベントに基づいて、ルーティングテーブルを更新して、３ホップルーティングを容易にすることを含む上記［７］記載の方法。
［９］前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させることをさらに含む上記［１］記載の方法。
［１０］複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのための装置において、
前記装置は、
前記オーバレイネットワーク上の複数のバケットを識別する手段と、
バケットグループを識別する手段と、
前記バケットグループに基づいて、イベントを配信する手段と、
前記イベントに基づいて、ルーティングテーブルを更新する手段とを具備し、
各バケットは、それぞれ、１つ以上のノードを含み、
各バケットグループは、それぞれ、選択された数のバケットを含む装置。
［１１］前記イベントは、参加と、離脱と、近隣の更新とのうちの少なくとも１つを含む上記［１０］記載の装置。
［１２］前記更新する手段は、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成する手段を備える上記［１０］記載の装置。
［１３］前記複数のバケットを識別する手段は、合計Ｎ個のバケットがあるように、前記複数のバケットを識別する手段を備える上記［１０］記載の装置。
［１４］前記バケットグループを識別する手段は、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成する手段を備え、Ｎ＝ｎ*ｍである上記［１３］記載の装置。
［１５］前記ルーティングテーブルを更新する手段は、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にする手段を備える上記［１０］記載の装置。
［１６］前記バケットグループを識別する手段は、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成する手段を備え、Ｎ＝ｎ*ｍ*ｏである上記［１３］記載の装置。
［１７］前記ルーティングテーブルを更新する手段は、前記イベントに基づいて、ルーティングテーブルを更新して、３ホップルーティングを容易にする手段を備える上記［１６］記載の装置。
［１８］前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させる手段をさらに具備する上記［１０］記載の装置。
［１９］複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのために構成されているノードにおいて、
前記ノードは、
トランシーバと、
前記トランシーバに結合されたプロセッサとを具備し、
前記プロセッサは、
前記オーバレイネットワーク上の複数のバケットを識別し、
バケットグループを識別し、
前記バケットグループに基づいて、イベントを配信し、
前記イベントに基づいて、ルーティングテーブルを更新するように構成されており、
各バケットは、それぞれ、１つ以上のノードを含み、
各バケットグループは、それぞれ、選択された数のバケットを含むノード。
［２０］前記イベントは、参加と、離脱と、近隣の更新とのうちの少なくとも１つを含む上記［１９］記載の装置。
［２１］前記プロセッサは、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成するように構成されている上記［１９］記載の装置。
［２２］前記プロセッサは、合計Ｎ個のバケットがあるように、前記複数のバケットを識別するように構成されている上記［１９］記載の装置。
［２３］前記プロセッサは、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成するように構成されており、Ｎ＝ｎ*ｍである上記［２２］記載の装置。
［２４］前記プロセッサは、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にするように構成されている上記［１９］記載の装置。
［２５］前記プロセッサは、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成するように構成されており、Ｎ＝ｎ*ｍ*ｏである上記［２２］記載の装置。
［２６］前記プロセッサは、前記イベントに基づいて、ルーティングテーブルを更新して、３ホップルーティングを容易にするように構成されている上記［２５］記載の装置。
［２７］前記プロセッサは、前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させるように構成されている上記［１９］記載の装置。
［２８］複数のノードを含むピアツーピアオーバレイネットワーク中でのイベントの配信およびルーティングのためのコンピュータプログラムプロダクトにおいて、
前記コンピュータプログラムプロダクトは、
コードを組み入れているコンピュータ読み取り可能媒体を具備し、
前記コードは、
前記オーバレイネットワーク上の複数のバケットを識別し、
バケットグループを識別し、
前記バケットグループに基づいて、イベントを配信し、
前記イベントに基づいて、ルーティングテーブルを更新することが実行可能であり、
各バケットは、それぞれ、１つ以上のノードを含み、
各バケットグループは、それぞれ、選択された数のバケットを含むコンピュータプログラムプロダクト。
［２９］前記イベントは、参加と、離脱と、近隣の更新とのうちの少なくとも１つを含む上記［２８］記載のコンピュータ読み取り可能媒体。
［３０］前記コードは、前記ルーティングテーブルを更新して、固定されたアレイ長を有する配布木を形成するように構成されている上記［２８］記載のコンピュータ読み取り可能媒体。
［３１］前記コードは、合計Ｎ個のバケットがあるように、前記複数のバケットを識別するように構成されている上記［２８］記載のコンピュータ読み取り可能媒体。
［３２］前記コードは、前記バケットグループを識別して、グループ毎にｍ個のバケットを含む、合計ｎ個のバケットグループを形成するように構成されており、Ｎ＝ｎ*ｍである上記［３１］記載のコンピュータ読み取り可能媒体。
［３３］前記コードは、前記イベントに基づいて、ルーティングテーブルを更新して、２ホップルーティングを容易にするように構成されている上記［２８］記載のコンピュータ読み取り可能媒体。
［３４］前記コードは、前記バケットグループを識別して、バケットグループ毎にｍ個のバケットを含むｎ個のバケットグループの、合計ｏ個のグループを形成するように構成されており、Ｎ＝ｎ*ｍ*ｏである上記［３３］記載のコンピュータ読み取り可能媒体。
［３５］前記コードは、前記イベントに基づいて、ルーティングテーブルを生成させて、３ホップルーティングを容易にするように構成されている上記［３４］記載のコンピュータ読み取り可能媒体。
［３６］前記コードは、前記バケットグループに基づいて、前記ルーティングテーブルを最初に生成させるように構成されている上記［３３］記載のコンピュータ読み取り可能媒体。
【図１】
0005524198.tif 000002
【図２】
0005524198.tif 000003
【図３】
0005524198.tif 000004
【図４】
0005524198.tif 000005
【図５】
0005524198.tif 000006
【図６】
0005524198.tif 000007
【図７】
0005524198.tif 000008
【図８】
0005524198.tif 000009