(57)【特許請求の範囲】
【請求項１】
１または複数のピアのピア・グループとピアがメッセージを通信するピア・ツー・ピア通信システムにおけるピアコンピュータシステムで、ピア・グループ内の前記１つまたは複数のピアの全てに亘って共有化されている中央トラッキングオブジェクトを参照することにより前記ピア・グループの１または複数のピアの間でピア・メッセージの通信を最適化する方法であって、該方法は、
前記ピアコンピュータシステムが、発信ピアからピア・ツー・ピア通信ネットワークを経由してピア・メッセージを受信するステップと、
前記中央トラッキングオブジェクトが、ピア・グループ内の前記１つまたは複数のピアの間で前記ピア・メッセージが送信されたこと及び受信されたことを記録するステップと、
前記ピアコンピュータシステムが、前記中央トラッキングオブジェクトを参照し、前記ピア・メッセージを受信すべき他のピアが前記ピア・メッセージを受信していないことを識別するステップと、
前記ピアコンピュータシステムが、メッセージの１または複数の配信制約条件及び前記識別に基づいて、前記ピアコンピュータシステムにより受信されたピア・メッセージに対する応答の要否を決定するステップと、
を含む、ことを特徴とする方法。
【請求項２】
１つまたは複数の配信制約条件は、ピア・メッセージの配信をピア・グループの単一のピアに限定することによって、資源を維持するように、ピア・グループ内の１つまたは複数のピアのいずれかの１つにピア・メッセージを配信する配信意図を含む、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記要否を決定するステップは、前記応答をドロップするステップを含む、ことを特徴とする請求項１又は２に記載の方法。
【請求項４】
１つまたは複数の配信制約条件は、ピア・メッセージに対して生成されるメッセージの数を制限することによって、資源を維持するように、１つのピアに、メッセージを受信する何れのピアの間から、ピア・メッセージに対して応答させる配信意図を含む、ことを特徴とする請求項１に記載の方法。
【請求項５】
前記中央トラッキングオブジェクトをエントリ登録するステップをさらに含む、ことを特徴とする請求項１〜４のいずれか１項に記載の方法。
【請求項６】
ピア・グループ内の１つまたは複数のピアから異なるピア・メッセージを受信するステップをさらに含み、異なるピア・メッセージは１つまたは複数のピアのいずれかにそれが送信されるべきことを示す、ことを特徴とする請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記異なるピア・メッセージはピア・グループ内の１つまたは複数のピアからたった１つの応答を要求していることを示す、ことを特徴とする請求項６に記載の方法。
【請求項８】
前記異なるピア・メッセージについての応答を送信するステップと、
応答が異なるピア・メッセージにについて送信されたことを示す中央トラキングオブジェクトの形態でエントリ登録するステップをさらに含む、ことを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ化されたシステムが広まり、他の人々と通信するニーズやそれに関連するアプリケーションがある。一般に、コンピュータ・システムと、関連したデバイスとは、例えば個人電子メッセージを交換し、商品を販売し、アカウント情報を供給し、１つのアプリケーションから別のアプリケーションへとメッセージを通信するなど、様々な理由のためにネットワーク上で情報を通信する。しかしながら、コンピュータ・システム、およびそれらの関連したアプリケーションがますます高度化するようになるにつれて、ネットワーク上でメッセージを伝えることに関連する課題も増大してきていることを認識するであろう。
【０００２】
一般に、ネットワーク上で１つのコンピュータ・システムから次のコンピュータ・システムへとメッセージを通信するためのいくつかの異なるプロトコルおよびトポロジが存在する。電子メール（「Ｅメール」）システムや一部のインスタント・メッセンジャー・システム（instant messenger system）などと共に使用される１つの従来のトポロジは、１つまたは複数の中央集中されたメッセージング・サーバ（centralized messaging server）を使用して、ユーザ情報を管理し検証し、また１つのコンピュータ・システムから次のコンピュータ・システムに対して、送信されるユーザ・メッセージを経路指定もする。この例においては、１つのコンピュータ・システムは、中央集中されたメッセージ・サーバ（message server）へとログインし、別のユーザまたはコンピュータ・システムに対して、アドレス指定されたメッセージを送信する。中央集中されたサーバは、アドレス指定されたメッセージを受信し、ユーザ情報を検証し、アドレス指定されたメッセージを、そのコンピュータ・システム（またはユーザ）に対して送信する。
【０００３】
別の従来のトポロジは、ピア・ツー・ピア・フレームワーク（peer-to-peer framework）を使用して、１つのコンピュータ・システムから次のコンピュータ・システムに対して直接にメッセージを送信する。すなわち、１つのコンピュータ・システム（すなわち、１つの「ピア（peer）」または「ピア・コンピュータ・システム（peer computer system）」）は、別のコンピュータ・システム（すなわち、他の「ピア」または「ピア・コンピュータ・システム」）に対して直接に接続し、次いで他のピア・コンピュータ・システムに対して直接にメッセージを送信する可能性がある。これらのような従来のピア接続はまた、複数の異なる他のピア・コンピュータ・システムとのいくつかの他の接続を有する可能性もある。特に、１つのピアは、通信ネットワークにおいて複数の他のピアに対して接続される可能性もあり、またさらに定義された「グループ」の複数のピアに対して接続される可能性もある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、これらのような従来のピア通信フレームワークは、それらがどれだけ、
従来のＥメール・システムまたはインスタント・メッセージング・システム（instant messaging system）と比較して通信を容易にするかの点で、いろいろな意味で、より制限されている。例えば、従来のピア通信フレームワークによっては、一般的に、グループは、他のグループを含むことができないようになっている。すなわち、ピア・グループは、一般的に１つまたは複数のピア・コンピュータ・システムのメンバシップを備えるが、おそらく他のグループのすべてのメンバを別々にアドレス指定することなしには、一般的に、そのメンバシップには別のグループを表す単一エンティティ（例えば、アドレスまたはオブジェクト）を含めてはいない。
【０００５】
従来のピア通信フレームワークは、また、一般的に、その数を適切にインテリジェントに調整するサービスおよびある種のメッセージを通信するための手段とを、たとえあるとしても、少ししか有していない。例えば、１つのピアは、定義されたグループ内のいくつかの他のピアに対してメッセージを送信する可能性がある。受信ピアはさらに、誰がその第１のメッセージを最初に送信したかを区別せずに、そのグループ内の少数の他のピアに対してそのメッセージを中継する可能性がある。したがって、元の送信ピアは、そのピア・グループの他のメンバから元のメッセージのいくつかのコピーを受信する可能性がある。
【０００６】
さらに、従来のピア・フレームワークは、問い合わせ（query）に対する回答をユーザが、どのように受信したか、いつ受信したか、あるいは受信したかどうかを、仮に識別したとしても、効率的に識別しない。例えば、ユーザが、ピア・グループの幾人かのメンバに対して問い合わせ（query）を送信したいと望む可能性があるが、そのユーザは、正しい回答を一回受信する必要があるだけである。それにもかかわらず、そのピア・グループ・メンバが、その問い合わせが満たされているとのある種の別のメッセージを送信しない限り、各ピア・グループ・メンバは、その問い合わせに対する応答がまだ存在していないと考え、それ故に、引き続き、応答する可能性がある。結果として、ユーザは、たった１つの質問について、グループ内の複数のピアから同じ回答のいくつかの反復を、ひょっとすると、取得する可能性がある。これらのライン（傾向）に加え、従来のピア通信フレームワークはまた、一般的にピア・グループの内部の１人のピア・メンバを次のピア・メンバから非常にうまく区別することをしない。例えば、あるピアは、そのピア・グループに加わるなどのために、ピア・グループのすべてのメンバに対してその情報を通信したいとは思わない（あるいは、通信する必要がない）が、そのピア・グループの１人のメンバに対してある種の情報を一回だけ送信する必要がある可能性がある。残念ながら、従来のピア・フレームワークは、このタイプの制約条件を許可しない。
【０００７】
したがって、従来のピア通信フレームワークは、様々なステージのネットワークに多数の不必要なメッセージのコピーが出回る可能性があることを認識することができる。すなわち、ピアの間で区別すること、あるいはちょうど説明されたシナリオにおけるようにピアが、メッセージを発信しているか受信しているかを区別すること、の失敗に起因して、ピア・ネットワークの周りには、多数の不必要なメッセージの複製（duplicate）が送信されている可能性がある。他の場合には、ピア通信フレームワークは、所与のコンテキストについて不適切であるある種の通信メカニズムを使用して送信されるメッセージで渋滞させられる可能性があり、この場合には、エンド・ユーザは、ピア・ツー・ピア・メッセージにアクセスすることさえできない可能性がある。
【０００８】
例えば、ピア通信フレームワークは、何らかの初期接続情報に基づいてユーザに対してメッセージを送信するためのハイパー・テキスト転送プロトコル（Hypertext Transfer Protocol）（「ＨＴＴＰ」）メカニズムを使用する可能性がある。しかしながら、ユーザがローカル・コンピュータ・システムを離れる（すなわち、建物の外を歩く）場合、ショート・メッセージ・サービス（Short Message Service)（「ＳＭＳ」）通信メカニズムを使用して、ユーザのモバイル電話に対してメッセージを通信することがより効率的である可能性がある。それにもかかわらず、従来のピア通信フレームワークは、存在の変化に対応するようにその選択された通信メカニズムを自動的に調整しない。特に、ピア通信フレームワークは、一般的に「オール・オア・ナッシング（all-or-nothing）」アプローチを使用することになり、別の通信メカニズムが、その後になってより適切な可能性があるかどうかにかかわらず、依然として最初に選択された通信メカニズムを使用するのみに留まる。どれだけ多くの、どんなメッセージが送信されているかを適切に調整することの失敗は、ピア通信フレームワークに重い負担をかけることをもたらす可能性があることを認識することができる。
【０００９】
従来のピア通信フレームワークの別の態様は、それらのフレームワークが、ピアにおける「リスニングする（listen）」ビヘイビアと「送信する」ビヘイビアとを区別するときに、見込まれる制約条件を、通常（例えば、ハードウェア、ソフトウェア、またはその両方を）考慮に入れないことである。例えば、送信ピア（sending peer）は、株価情報（stock quote）を配信する場合のように、情報をブロードキャストすることだけをしたいと望む可能性があるが、リスニング・ピア（listening peer）は、株価情報のストリームを単に閲覧する場合のように、ブロードキャスト情報（broadcast information）をリッスンしたいとだけ望む可能性もある。送信ピアとリスニング・ピアは、それぞれ、さらに、異なる能力を有する２つの異なるタイプの通信チャネルを使用している可能性がある。例えば、１つの通信チャネルは、高速なアップロード速度と低速なダウンロード速度を有する可能性があるが、別の通信チャネルは、等しいが但し適度の速さのアップロード速度とダウンロード速度を有する可能性がある。しかしながら、従来のピア・フレームワークは、一般的にピアの振る舞いのタイプに少なくとも部分的に基づいて適切な通信チャネル（または他のハードウェア決定もしくはソフトウェア決定）を決定せず、あるいはピア接続を確立した後にその決定を適切に調整することもしない。
【００１０】
したがって、従来のピア・ツー・ピア通信は、多種多様な考察について最適化される可能性が存在する。
【課題を解決するための手段】
【００１１】
本発明の実装形態（inplementation）は、ピア・ツー・ピア通信を最適化するシステム、方法、およびコンピュータ・プログラム・プロダクト（computer program product）を使用して、当技術分野における１つまたは複数の問題を解決する。とりわけ、本発明の実装形態は、ピアが加入し、発行することができ、他のピア・グループがメンバになることができるピア通信グループを含んでいる。本発明の実装形態はまた、多数の異なる通信チャネルのうちの、所与のコンテキストに対して適切な１つを、インテリジェントに、動的に、選択することができるコンポーネントも含んでいる。本発明の実装形態はさらに、最適な数のメッセージが、所与の任意のピアに、または任意のピアから、通信されることを保証するコンポーネントも含んでいる。
【００１２】
例えば、通信メカニズムを動的に調整するための、本発明の一実装形態による一方法は、ピア・コンピュータ・システムから受信ピア・コンピュータ・システムに対してピア・メッセージを通信するための複数の通信メカニズムを識別することを含む。さらに、本方法は、複数の通信メカニズムのうちの初期の通信メカニズムが、複数の通信メカニズムのうちの別の通信メカニズムよりも好ましいことを自動的に決定するようにすることもできる。この決定を行うとすぐに、本方法はさらに、その初期の通信メカニズムを自動的に選択すること、およびその選択された初期の通信メカニズムを使用して受信コンピュータ・システムに対してピア・メッセージを送信することを含む。
【００１３】
ネットワーク・ネームスペース（network name space）内のピア・グループ通信を管理するための、本発明の一実装形態による別の代替方法は、１つまたは複数のピアのうちの、第１のネームスペースに関連付けられた第１のピア・グループを識別することを含む。さらに、本方法はまた、第１のネームスペースに対してグループ参加要求メッセージ（group join request message）を送信すること、ならびに第１のピア・グループ内のメンバシップが受け入れられたという第１のネームスペースからの確認メッセージを受信することも含む。したがって、そのピアは、第１のピア・グループのメンバシップ・リストに追加されており、ピアは、第１のネームスペースに会員登録（subscribe）される。
【００１４】
ピア・メッセージの通信を最適化するための、本発明の一実装形態によるさらなる代替方法は、ピア・ツー・ピア通信ネットワークを介して発信ピア（originating peer）からの、１つまたは複数の配信制約条件を含んでいるピア・メッセージを受信することを含む。次いで、ピアは、セントラル・トラッキング・オブジェクト（central tracking object）を参照することができ、このセントラル・トラッキング・オブジェクトは、少なくとも１つまたは複数のピアが、ピア・メッセージを受信していること、および発信ピアが、ピア・メッセージを送信したことを示す。本方法はさらに、ピア・メッセージについての１つまたは複数の配信制約条件を評価すること、および１つまたは複数の配信制約条件の評価に基づくのはもちろん、セントラル・トラッキング・オブジェクトから参照される表示（indication）に基づいて、ピア応答メッセージを送信することを含む。したがって、本方法は、このメッセージに関する発信ピアの配信意図を保全する（preserve）ことができる。
【００１５】
この課題を解決するための手段のこの概要は、詳細な説明の形で以下にさらに説明される概念の選択を簡略化された形式で紹介するために提供される。本概要は、特許請求の範囲の主題の主要な特徴または不可欠な特徴を識別することを意図せず、また特許請求の範囲の主題の範囲を決定する際の助けとしても使用されることも意図していない。
【００１６】
本発明の追加の特徴または利点は、以下に続く説明の中で述べられ、部分的にはその説明から明らかになり、あるいは本発明の実施により知ることができる。本発明の特徴および利点は、添付の特許請求の範囲において特に指摘される手段およびその組合せを用いて実現され、取得されることができる。本発明のこれらの特徴および他の特徴は、以下の説明および添付の特許請求の範囲からもっと十分に明らかになり、あるいは以降で述べられるような本発明の実施によって知ることができる。
【００１７】
本発明の以上で列挙された利点および特徴と、他の利点および特徴が取得されることができる方法を説明するために、上記で簡潔に説明された本発明のより特定の説明が、添付図面中に示されるその特定の実施形態を参照して、提供されることになる。これらの図面は、本発明の典型的な実施形態だけを示しており、それ故にその範囲を限定するように考えられるべきではないことを理解して、本発明は、添付図面の使用を介して追加の特異性（specificity）と細部に関して記述されおよび説明されることになる。
【図面の簡単な説明】
【００１８】
【図１Ａ】本発明の一実装形態に従って、ピアが、ピアのグループに対して方向づけられたメッセージを送信するピア・ツー・ピア通信システムの全体的な概要を示す図である。
【図１Ｂ】ピアが、ピアのグループに対して方向づけられたメッセージを送信する、図１Ａに示されるような別の概略図である。
【図２】ピアが、スマート・トランシーバとセントラル・トラッキング・オブジェクトとを使用してメッセージを送信するピア・ツー・ピア通信システムの全体的な概要を示す図である。
【図３】図２に示される概要において、スマート・トランシーバが、送信機能とリスニング機能を区別することを示す図である。
【図４】選択された通信メカニズムを使用してメッセージを送信するための、本発明の一実装形態による動作のシーケンスを備える一方法のフローチャートである。
【図５】ネームスペースに関連するグループに対してメッセージを送信するための、本発明の一実装形態による動作のシーケンスを備える一方法のフローチャートである。
【図６】１つまたは複数の配信制約条件を含むピア・メッセージを配信するための、本発明の一実装形態による動作のシーケンスを備える一方法のフローチャートである。
【発明を実施するための形態】
【００１９】
本発明は、ピア・ツー・ピア通信を最適化するシステム、方法、およびコンピュータ・プログラム・プロダクトに適用される。とりわけ、本発明の実装形態は、ピアが加入し、発表（publish）することができ、他のピア・グループがメンバになりことができる複数のピア通信グループを含んでいる。本発明の実装形態はまた、所与のコンテキストについての多数の異なる通信チャネルのうちの適切な１つをインテリジェントに動的に選択することができるコンポーネントも含んでいる。本発明の実装形態はさらに、最適な数のメッセージが、所与の任意のピアに対して、または任意のピアから通信されることを保証するコンポーネントも含んでいる。
【００２０】
例えば、本発明の少なくとも１つの態様は、一般に中央集中化されたアドミニストレータ（administrator）を必ずしも必要としない加入ポイント（subscription point）であるピア・グループの使用に関連する。とりわけ、所与のピア・グループの各メンバ（または「ピア」）は、グループ・メンバ・ピアそれぞれが、加入し発行することができるネームスペースのメンバとして考えられることができる。このピア・グループは、さらに別のグループに属すこともでき、そのグループ・メンバのうちの１人として異なるピア・グループを有することもできる。所与のピアのコンピュータ・システムのアプリケーションは、次いで加入／発行（subscription/publication）モデルの観点から各ピア・グループを閲覧することができる。
【００２１】
さらに、本発明の態様は、任意の時点において所与の任意の通信シナリオについての適切な通信メカニズムを動的に選択するスマート・トランシーバ・コンポーネント（smart transceiver component）の使用に関連する。例えば、本明細書中でもっと十分に論じられることになるが、スマート・トランシーバ・コンポーネントは、ピアのコンピュータ・システムにおけるアプリケーション・コンポーネントと、無線周波数（radio frequency）（「ＲＦ」）コンポーネント、赤外線コンポーネント、共有メモリ・コンポーネント、および／またはシリアル・ポート・コンポーネント（serial port component）など他の通信メカニズムはもちろん、伝統的なＨＴＴＰメカニズム、ＳＭＳメカニズム、ＴＣＰメカニズムなど、１つまたは複数の通信メカニズムとの間をインターフェースすることができる。当業者なら、多くの異なる種類の通信を使用することができることを理解するであろう。
【００２２】
１つまたは複数のピアとの通信中の任意の時点（ポイント）で、送信通信システムにおけるスマート・トランシーバ・コンポーネントは、通信プロトコルのうちの任意のものを選択し（かつ／またはそれに合わせて調整する）ことができる。スマート・トランシーバ・コンポーネントはまた、後の時点において、任意の数のファクタに応じて、通信をできるだけ効果的にすることを支援するために、別の通信プロトコルへの変更が適切であると検出した場合に、別の通信プロトコルに動的に変更する（または、別の通信プロトコルを含む）こともできる。さらに、スマート・トランシーバ・コンポーネントは、そのコンピュータ化されたシステムが同じピアと通信するために複数の異なる通信チャネルをオープンする必要がないように、通信チャネルをキャッシュし、再使用することができる。
【００２３】
本発明の態様は、さらに、所与のピアの振る舞い（behavior）に基づいて送信通信チャネルおよび受信通信チャネルを最適化することができる。例えば、スマート・トランシーバ・コンポーネントは、いつ、ピアが主としてピア・メッセージを「リッスンする」ために、あるいは主として「送信する」ために構成されるかを識別することができる。ピアが、主としてリッスンするために構成される場合、そのときにはスマート・トランシーバ・コンポーネントは、より高いダウンロードのスループットと速度とを有する通信プロトコルとハードウェア・ポートとを選択する可能性がある。同様に、ピアが主として送信するために構成される場合、そのときにはスマート・トランシーバ・コンポーネントは、より高いアップロードのスループットと速度とを有する他の通信プロトコルとハードウェア・ポートとを選択する可能性がある。
【００２４】
本発明のさらに他の態様は、適切な数またはコピーの所与のメッセージが、ピア通信構造（peer communication fabric）において通信されることの保証を支援することができるいくつかの最適化を含んでいる。例えば、以下でもっと十分に詳述されることになるが、各ピアのコンピュータ・システムにおけるセントラル・トラッキング・オブジェクトが、ユーザの間で、および、異なる通信チャネル上で送信されるメッセージを追跡するために使用されることができる。とりわけ、セントラル・トラッキング・オブジェクトは、例えば、送信ピアが、それら自体のメッセージのコピーを受信することがないこと、あるいは他のピアが、同じメッセージの複製コピーを受信しないことの保証を支援することができる。
【００２５】
本発明のこれらおよび他の態様はさらに、いくつかの追加の特徴をピア通信フレームワークに提供するのに使用されることができる。例えば、本発明の態様は、メッセージが、グループ内の「任意の１つの」ピアだけに送信されるという制約条件で、グループに対して１つのメッセージを送信するのに使用されることができる。本発明の態様はまた、例えば所与のグループ内のすべてのピアに対して問い合わせを送信した後に、ただ１つの応答メッセージの受信を保証し、それにより不必要な複製を回避するのに使用されることもできる。
【００２６】
次に図面を参照すると、図１Ａは、ピア・ツー・ピア通信システムを示しており、このピア・ツー・ピア通信システムは、ピア１０５と通信しているピア１００を含み、このピア１０５は、さらにピア１１０、ピア１１５、およびピア１２０と通信している（例えば、通信チャネルを有する）。ピア１１５はまた、ピア１２０とも通信しているが、ピア１１０はまた、別個のネームスペース内のピア１２５とも通信している。したがって、例示の通信システムは、１つまたは複数のピア（例えば、１０５、１１０）が、「ノード」ピアでもあり得ることを示している。これらのノード・ピアは、ピア・メッセージを経路指定するための中央集中化されたサーバ（centralized server）と類似したハイブリッド・ファンクション（hybrid function）をサービスすることができ、あるいは別のピアとメッセージを簡単にあちこちへと交換する典型的なエンド・ピア（end-peer）としての機能を果たすこともできる。
【００２７】
例えば、ノード・ピア１０５と１１０は、両方ともに、グループＡについてのグループ・リストの少なくとも一部分を格納する。とりわけ、ピア１０５は、グループ・リスト１３０ａを記憶し、このグループ・リストは、ピア１００、１１０、１１５、および１２０を含むが、ピア１１０（ノード・ピア）は、リスト１３０ｂを格納し、このリストは、そのメンバシップの中にピア１０５とグループＢ（ピア１２５を経由）を含んでいる。一実装形態においては、グループ・リストの各部分は、ハッシュ・テーブル（hash table）として記憶される。
【００２８】
いずれにしても、グループ・リストの所有権／管理により、ピア１０５および１１０は、それらに関連があるグループ・リスト内のピアに対してアドレス指定されたピア・メッセージを経路指定する（転送し、または「チェーンする」）こともできるようにすることができる。例えば、ピア１０５がグループＢに対して（ピア１２５を経由して）方向づけられたメッセージを受信した場合、ピア１０５は、そのグループ・リスト・メンバシップをチェックし、それがグループＢについてのレコードを有さないが、そのレコードは、そのグループ・リストの別の部分（すなわち、１３０ｂ）上で見出される可能性があることを決定し、したがって、ピア１０５が知っているピア１１０に、そのグループ・リストの残りをホストしているピア１１０対してその要求を転送する。代わりに、ピア１０５によってホストされるリスト部分１３０ａが、ピア１１０においてホストされるリスト部分１３０ｂがグループＢについてのレコードを含むことを示す情報を保持する可能性もある。以下で、より十分に論じられことになるが、次いでピア１１０は、メッセージを受信し、グループＢについてのグループ・リストをホストしている対応するピア１２５に対してメッセージを送信することができる。これが行われることができる一方法は、ある種の「ネームスペース」に対してメッセージを送信したり、あるいは発行したりすることによる方法である。
【００２９】
例えば、図１Ａは、図に示される複数のピアが、ある種のネームスペース１６０、１６３の部分（division）に関連付けられることができることを示している。一般に、ネームスペースは、階層的フォーマットにおける１組の名前を識別して、異なる起源（但し、同じ名前）のオブジェクトが一緒に混在するときのあいまいさを回避する。ネームスペースは、ユニフォーム・リソース識別子（Uniform Resource Identifier）（「ＵＲＩ」）によって識別されることができるので、またピアは、ＵＲＩによって識別されることもできるので、ピア・グループは、ＵＲＩによってアドレス指定される固有のネームスペースに関連付けられることもできる。したがって、図１Ａは、ピア１００、１０５、１１０、１１５、および１２０が、ネームスペース１６０における同じグループＡの一部分であるが、ピア１２５は、ネームスペース１６３の一部分であることを示している。すなわち、ピア１００、１０５、１１０、１１５、および１２０のそれぞれは、同じネームスペース１６０内のＵＲＩによってアドレス指定可能であるが、ピア１２５は、異なるネームスペース１６３内のＵＲＩによってアドレス指定可能である。各ピアは、次に関連するネームスペースに対して発行することにより、そのグループに対してメッセージを送信することができる。同様に、ピアは、関連するネームスペースに対してグループ加入要求（group join request）を送信することにより、グループに加入することができる。
【００３０】
さらに、図１Ａは、１つのネームスペース（例えば、１６３）のピア・グループが、異なるネームスペース（例えば、１６０）の異なるピア・グループのメンバであることが可能であることを示している。例えば、図１Ａは、グループ・リスト１３０ａ〜ｂが、ネームスペース１６０に関連付けられることを示している。しかしながら、グループ・リスト１３０ｂは、そのメンバシップの中に「グループＢ」を有する。グループ・リスト１３０ｂは、さらにグループＢが、ネームスペース１６３内のピア１２５を介してアドレス指定可能であることを示す。したがって、ネームスペース１６０の一般的なグループＡのメンバシップに対して送信されるメッセージは、また、ネームスペース１６３のグループＢのメンバシップに対して転送され、あるいはチェーンされることになる。
【００３１】
一般に、１つのネームスペースの１つのピア・グループが、異なるネームスペースの別のピア・グループに追加されることができるいくつかの方法が存在する。一実装形態において、（例えば、ネームスペース１６３の）１つのグループは、ピア・メンバシップについて（例えば、ネームスペースのピアＵＲＩによって）問い合わせされ、これらの見出されたピアは、要求を行うグループのメンバシップ（例えば、ネームスペース１６０についての）に追加される。次いで各ピアは、新しいグループに追加される前にそれらの以前のグループの中に有するときに受信されたメッセージを送信し、チェーンすることができる。別の実装形態においては、１つのグループは、２つの関連するネームスペース（すなわち、ネームスペース１６０と１６３と）の間のネームスペース・ブリッジ（namespace bridge）を作成することにより、別のグループに対して追加されることができる。さらに別の実装形態においては、コンテキストが、特定のピアの会話に関連付けられることができ、それにより、その会話は、複数のピア・グループにまたがって混在され、依然として受信者によって構成されることができるようになる。例えば、メッセージ・アトリビュート（message attribute）は、「会話２３」を言う可能性もあり、あるいはもっと特定のものでさえあり、「グループＡの会話Ｙ」を言う可能性もある。
【００３２】
さらに、図１Ａは、どのようにして１つのピアが、どのようにしてメッセージが送信されるか、あるいは誰から応答が受信されるかについての個々の制約条件を含んでピアのグループに対してメッセージを送信することができるかについての概要を提供している。例えば、図１Ａは、ピア１００が、「たった１つの応答だけ」が受信されるという制約条件を含んでメッセージ１０３を送信することを示している。すなわち、ピア１００のコンピュータ・システムにおけるアプリケーションは、日付や時刻など、１つの一般的な情報だけを必要とする可能性があり、ピア１００が誰からその応答メッセージを受信するかについては気にかけない。それにもかかわらず、ピア１００は、適切な応答が受信されるまで必要なだけ多くのグループ・メンバに対してメッセージを送信したい。
【００３３】
したがって、図１Ａは、ピア１００がメッセージ１０３をピア１０５に対して送信することを示しており、このピア１０５は、ノード・ピアである。ピア１０５は、そのグループメンバシップを検査して、ピア１００についてのメンバシップ・レコードを検証し、そしてメッセージを中継するためのピアを識別する。ピア１０５はまた、それがメッセージ１０３に回答することができるかどうかも識別する。例えば、ピア１０５は、メッセージ１０３に回答するために使用可能な適切なリソースまたは帯域幅を有さず、あるいは単に適切な回答について知らない可能性がある。したがって、図１Ａは、ピア１０５が、ピア１１０に対して、そしてピア１１５に対してメッセージを転送することを示している。ピア１１５は、また、ピア１２０とのピア接続を有し、またピア１１５が、グループ・メッセージをピア１２０に対して中継することになるので、ピア１０５は、メッセージ１０３の別のコピーをピア１２０に対して送信する必要はない。類似した理由のために、ピア１０５は、ピア１１０が、「グループＡ」についてのグループ・リストの残りに対するノードであることを知っているので、ピア１０５は、ピア１１０に対してアドレス指定され、さらにそのメッセージが、「グループＡ」の他の任意のメンバに送信されるべきであることを指摘する、メッセージ１０３を単に送信することもできる。
【００３４】
この例においては、ピア１２０は、ピア１１５およびピア１１０がピア１０５を経由して応答１０７をピア１００に対して返信する前に、ピア１０５を経由して応答１０７をピア１００に対して返信する。一部の場合には、これは、ピア１０５がメッセージ１０３をピア１１０に対して送信する前に行われている可能性がある（これは、メッセージ１０３をピア１１０に対して不必要にレンダリングすることになる）。しかしながら、ピア１２０から応答１０７を受信すると、ピア１０５は、以下の図（例えば、図２）においてもっと十分に論じられる「セントラル・トラッキング・オブジェクト」に記入することなどにより、その応答を記録することができる。さらに、ピア１００は、たった１つの応答だけを必要としたので、ピア１０５は、この制約条件を識別し、ピア１２０からピア１００へと応答１０７を単に転送し、一方、ピア１１０および１１５からのそれぞれ応答１０７をドロップする（捨てる）。したがって、ピア１０５は、ピア１００が、元々要求されているように、１つの応答を受信するだけであるように保証することができる。
【００３５】
図１Ｂは、図１Ａに示されるシナリオと類似したシナリオを示しているが、メッセージ配信に関してピア１００によって置かれる別の制約条件を示している。とりわけ、図１Ｂは、ピア１００が、メッセージ１１３をグループＡの「任意の１つ」に対して送信されるように制約することを示している。例えば、ピア１００のコンピュータ・システムにおけるアプリケーションは、ピア・グループの一般的な任意のメンバに対して「プレゼンス（presence）」情報を送信したいと望むが、そのグループのすべてのメンバに対してこれを送信する必要はないという場合がある。プレゼンス情報は、必ずしもそれぞれがピア１００からメッセージ１１３を受信する必要はなく、グループ内の他のピアにとってアクセス可能であってよい。したがって、図１Ｂは、ピア１００が、この場合にはたまたまノード・ピアになっているピア１０５に、すなわち「ターゲット」ピア、に対してメッセージ１１３を送信することを示している。
【００３６】
１つのピアが、メッセージ１１３を送信すべき（一つの）ターゲット・ピアを自動的に選択する多数の方法が存在する可能性がある。例えば、ピア１００は、近接情報を考慮に入れ、グループＡ内の他のピアの最も近いネットワーク・ロケーションおよび／または最も遠いネットワーク・ロケーションを決定してもよい。この情報はまた、別のネットワーク・ロケーションにおける受信者と比較される１つのネットワーク・ロケーションにおける受信者などの、受信者の可能性のあるクラスまたは組を生成するために使用することもできる。一実装形態においては、この情報は、最下位のｉｄ、最上位のｉｄ、固定された識別子、ランダム識別子、最低の帯域幅または処理負荷などの選択判断基準、あるいは何らかの他の動的にアクセス可能な判断基準、を含んでいる。
【００３７】
ピア１００は、そのような許容可能な任意の受信者リストに加えて、対応する除外リスト（exclusion list）を作成することもできる。とりわけ、ピア１００は、メッセージ１１３を制約することができ、その結果、そのメッセージは、「Ｘドメイン内のグループＡのうちの任意のものであるが、Ｙドメイン内のグループＢのうちのどれでもないもの」に対してアドレス指定される。したがって、本発明の態様は、キャッシュ複製などのシナリオにおいて、より大きなスケールを提供することができ、ここではデータは、別のピア（例えば、１１５、１２０）から必要とされる可能性があるが、ここではピアの「クラス」の選択は、重要であり、そのメッセージ（例えば、１１３）は、それ故にすべてのピア・メンバに対して複製される必要がない。
【００３８】
いずれにしても、また以前に説明されるように、図１Ｂは、メッセージ１１３が、グループＡの任意の１つに対して（１３０ａを経由して）アドレス指定され、これは、メッセージ１１３の配信をピア１１５またはピア１２０のうちの任意のものだけに制限し、これらのピアは、グループ・リスト１３０ａ上で見出されることを示している。したがって、ピア１０５がメッセージ１１３を受信すると、ピア１０５は、適切な応答を有さず、したがってメッセージ１１３を別のピアに対して渡すべきかどうかを識別する。この決定は、以上で識別されたパラメータのうちのどれか、ならびに帯域幅またはリソースの考察に基づいたものとすることができる。したがって、例えば図１Ｂは、（メッセージ１１３からのコンテンツを含む）新しいメッセージ１１１の形でピア１１５に、応答することが可能かどうかを質問し、これに対してピア１１５が否定的に応答する（１０９）応答することを示している。次いでピア１０５は、同じ問い合わせ１１１をピア１２０に対して送信し、応答１１７を受信し、この応答を、ピア１０５は、次いでピア１００に戻すようにチェーンする（または転送する）。したがって、図１Ｂは、ピア１００によって行われる「任意のもの」に対して送信する制約条件が満たされることを、どのようにしてピア１０５が保証する助けを行うことができるかを示している。とりわけ、図１Ａから１Ｂは、グループと、グループ内のピアが、組織化されることができ、いくつかの最適化および／または制約条件を含むメッセージ配信を管理することができるいくつかの方法を示している。
【００３９】
図２は、本発明の実装形態に従ってこれらの組織的な最適化を可能にする助けを行うために使用されることができる１つまたは複数のコンポーネントのより詳細な概略図を示している。一実装形態においては、セントラル・トラッキング・オブジェクト１４５は、指定された共用パーティションの形でピア・ノード（例えば、ピア・ノード１０５、１１０）上に少なくとも部分的に記憶されることができる。次いで、セントラル・トラッキング・オブジェクト１４５に対する登録アップデートは、必要に応じて、あるいはピア・ユーザによって構成されるピア・ツー・ピア通信システムにおける他のピアのうちの任意のものに対してプッシュされ（または任意のものからプルされ）ることができる。
【００４０】
例えば、図２は、ピア１００でセントラル・トラッキング・オブジェクト１４５によって管理される情報も、ピア１１５およびピア１２０に関連付けられたトラッキング・オブジェクト内で共用されることもできることを示している。一実装形態においては、セントラル・トラッキング・オブジェクト１４５は、各ピアが、それぞれのピアにおける異なるトランスポート入力プロセッサ（transport input processor）とトランスポート出力プロセッサ（transport output processor）にまたがって共用する単一のオブジェクトであるが、代替実装形態（明示的に示されず）においては、各ピアは、独立な、本質的に異なる、トラッキング・オブジェクトの所有権を有することができる。しかしながら、説明の簡単のために、図２は、ピア１００、１１５、および１２０のそれぞれが、セントラル・トラッキング・オブジェクト１４５の少なくとも一部分を共用することを示している。ピア１００がピア１１５とピア１２０に対してメッセージ１４０を送信すると、図２のピア１００におけるセントラル・トラッキング・オブジェクト１４５、ならびにピア１１５および１２０におけるオブジェクト１４５は、ピア１００がメッセージ１４０を送信したことを記録することができる。この方法における情報を共用すること、および／または配信することは、送信されたおよび受信されたメッセージを登録することなどにより、任意の数のメッセージング最適化を可能にすることができる。
【００４１】
例えば、図１Ａにおけるように、ピア１０５が複数の応答１０７を受信すると、ピア１０５は、応答１０７がピア１２０からすでに受信されており、ピア１００に対して送信されていることをセントラル・トラッキング・オブジェクト（例えば、１４５）から識別し、したがってこの情報を使用して、ピア１１０および１１５から複製応答１０７をドロップすることができる。同様に図１Ｂに示されるように、ピア１０５は、セントラル・トラッキング・オブジェクト（例えば、１４５）を調べて、グループＡ内のどのピアと、ピア１０５が、「ただ１つに対する送信」などの制約条件の下でメッセージ１１３をハンドオフする（hand off）することをすでに試みたかを決定することができる。したがって、セントラル・トラッキング・オブジェクト１４５による登録は、複製にフィルタをかけること、ならびにブラック・リスト（black list）、ホワイト・リスト（white list）の使用、および／または故障情報の識別、などのために構成される少なくとも１つのメカニズムを提供することができ、次いでこれは、通信チャネルのより高位レベルにおいて、スマート・トランシーバ１５０ａ〜ｃによって、使用されることができる。
【００４２】
例えば、図２は、ピア１００がスマート・トランシーバ・コンポーネント１５０ａを含むことができることを示している。スマート・トランシーバ１５０ａは、ピア１１５上のトランシーバ１５０ｂや、ピア１２０上のトランシーバ１５０ｃとして示されるなど、ピア・ツー・ピア通信システム内の他のピアにも見出される個別化されたコンポーネントである。一般に、スマート・トランシーバ１５０ａは、アプリケーション・コンポーネント１５５と、１つまたは複数の通信メカニズム１３３、１３５、および１３７との間をインターフェースするために使用されることができ、次いで様々なシステム制約条件またはシステム・プロパティ（例えば、ハードウェア課題、ソフトウェア課題、ネットワーク課題（network issues）など）に基づいてある種のメッセージ送信決定およびメッセージ受信決定を行う。
【００４３】
特に、スマート・トランシーバ（すなわち、１５０ａ〜ｃ）は、任意の数の動的に決定されるファクタに基づいて、何がより効果的な通信メカニズムであるかを、通信プロセスにおける任意の時間に動的に決定することができる。一実装形態においては、例えばスマート・トランシーバ１５０ａは、（例えば、通信メカニズム１３３、１３５、１３７などを経由する）アプリケーション・チャネルをキャッシュすることができ、その結果、確立されたセキュリティおよび他のアプリケーション・レベルのロジックが、（タイム・ウィンドウ（time window）内で）再確立される必要はない。スマート・トランシーバ１５０ａ〜ｃはまた、様々なアイデンティティと、他のネットワーク・スループットまたは処理手続の考慮すべき事柄とを使用して、確立された、または好ましい通信メカニズムを選択することもできる。これらのライン（方針）に沿って、スマート・トランシーバ１５０ａ〜ｃは、ネットワークの故障アクティビティ、ならびにネットワーク・ポリシーの変化またはアップデートを含めて、他の任意のネットワーク変化を監視することもできる。スマート・トランシーバ１５０ａ〜ｃによって動的に決定されるそのような情報により、所与のトランシーバは、どの通信メカニズム、またはチャネルが使用されるかを動的に調整することができるようになり得る。
【００４４】
一例として、ピア配信システム（または任意の通信メカニズム）が、特定のエンドポイントピア（例えば、ピア１１５）に対して通信メカニズム１３３、１３５、または１３７のうちのどれかを経由して通信チャネルを確立するものと仮定する。ピア１００におけるスマート・トランシーバ１５０ａは、所与のエンドポイント・ピアにおける別のスマート・トランシーバ（例えば、ピア１１５におけるトランシーバ１５０ｂ）との最も適切なファクタに基づいた接続を開始し、次いで接続状態（すなわち、「通信チャネル」）をキャッシュする。接続は、依然としてその通信チャネルのアプリケーション・コンポーネントを介して行われるので、重要なアプリケーション接続セマンティクス（application connection semantics）は、後でより適切な接続メカニズムに基づいて別の通信メカニズム（より低レベルの通信チャネル）にスイッチングするときに保持されることができる。
【００４５】
したがって、通信チャネルは、送信されているメッセージ（例えば、１４０）内の既存の任意のネットワーク・ポリシーおよび／または制約条件に基づいて使用される（または再使用される）ことができる。例えば、適切なコンピュータ・システム（例えば、パーソナルコンピュータ、セルラ電話など）におけるピア１００などのユーザは、メッセージを送信するために最初に別のピア１１５に接続する可能性がある。ピア１００は、最初にスマート・トランシーバ１５０ａを介してある種の「プレゼンス」情報を検出する可能性があり、このプレゼンス情報は、ピア１１５におけるユーザが、ランドライン（land line）を介してネットワークに接続されていることを示唆している。したがって、スマート・トランシーバ１５０ａは、ＨＴＴＰ通信メカニズム１３３を使用して、スマート・トランシーバ１５０ｂを経由してピア１１５に接続することにより通信チャネルを開始する可能性がある。しかしながら、ピア１１５におけるユーザは、その後のポイントにおいてランドライン・コンピュータ・システムを終了し、それ故に、その後はワイヤレス通信手段のみを経由して応じられる可能性がある。したがって、スマート・トランシーバ１５０ｂは、ピア１００におけるトランシーバ１５０ａに対してそのユーザについてのプレゼンス情報におけるこの変化を送信する可能性がある。
【００４６】
次いでスマート・トランシーバ１５０ａは、ユーザ（ピア１１５）が、ＳＭＳ通信メカニズム１３７など、異なる通信メカニズムを介してよりよく連絡可能であることを自動的に決定する可能性がある。したがって、スマート・トランシーバ１５０ａは、ＨＴＰＰメカニズム１３３上で最初にセットアップされたキャッシュされた通信チャネルを使用し、今では好ましいＳＭＳ通信メカニズム１３７上にその通信チャネルを複製する。結果として、アプリケーション１５５を介してピア１１５に対して送信される新しいメッセージは、今やＳＭＳを経由して通信される。
【００４７】
１つまたは複数の代替実装形態（図示されず）においては、スマート・トランシーバ１５０ａは、特定のメッセージを配信するための複数の通信チャネルを、それが適切と考えられ限り、作成することもできる。例えば、スマート・トランシーバ１５０ａは、特定のメッセージについて緊要性（urgent nature）が与えられると、複数の通信チャネルを作成し、それによって、ユーザが所与のメッセージを受信することを保証することが効率的であることを決定することができる。例えば、そのような場合には、スマート・トランシーバ１５０は、複数の通信経路を経由してユーザ・プレゼンスを検出し、次いで対応する複数の通信チャネルを開始することができる。
【００４８】
図３は、スマート・トランシーバ・コンポーネント１５０ａが着信および発信のピアツーピア・メッセージを動的に管理するために使用されることができる、本発明の態様による別の実装形態を示している。とりわけ、図３は、ピア１００が、アプリケーション１５６および１５７を使用してメッセージを通信している一実装形態を示しており、これらのアプリケーションは、それぞれリッスンのビヘイビア（listening behaviors）または送信のビヘイビア（sending behaviors）で動作している。例えば、アプリケーション１５６は、ピア１１５からの絶えず流される株価情報を受信し、表示するように構成されるが、アプリケーション１５７は、１つまたは複数の他のピア１０５および１１０に対してビデオ・データを流し出す（stream）ように構成される。しかしながら、通信チャネル１７０および１７５は、異なる能力（capabilities）を有する。とりわけ、通信チャネル１７０は、ほぼ等しいアップロード・コンフィギュレーションとダウンロード・コンフィギュレーションとを有するが、通信チャネル１７５は、より高速なダウンロード・コンフィギュレーションと、しかし、一方、より低速のアップロード・コンフィギュレーションを有する。
【００４９】
したがって、アプリケーション１５６および１５７と通信チャネル１７０および１７５との間をインターフェースするスマート・トランシーバ１５０ａは、所与の任意の時刻のアプリケーションの共通のビヘイビアを決定し、次いでどの通信チャネルを使用すべきかについての適切な決定を行うことができる。例えば、図３は、通信チャネル１７０が、チャネル１７５と比較して比較的高速なアップロード速度を有するので、スマート・トランシーバ１５０ａが、アプリケーション１５７（送信）と共に使用されるように通信チャネル１７０を選択することを示している。同様に、図３は、通信チャネル１７５が、チャネル１７０と比較して比較的より高速なダウンロード速度を有するので、スマート・トランシーバ１５０ａが、アプリケーション１５６（リッスン）と共に使用されるように通信チャネル１７５を選択することを示している。しかしながら、スマート・トランシーバ１５０ａは、必要に応じて、あるいは通信チャネル１７０〜１７５の態様が、何らかの他の理由のために変化する場合に、その後のポイントでこれらの通信チャネルの決定を切り換えることができることが理解されるであろう。
【００５０】
したがって、図１Ａから図３と、その対応する説明は、ピア・ツー・ピア通信システムを最適化しスケーリングするためのいくつかのコンポーネントおよびメカニズムを示している。本発明の実装形態は、特定のファンクションを実行するための方法における動作の観点から説明されることもできる。とりわけ、図４および図５は、それぞれ動的に選択された通信メカニズムを使用してメッセージを送信するための、そしてネームスペースに関連するグループに対してメッセージを送信するための方法における動作のフローチャートを示している。
【００５１】
例えば、図４は、ピアによって使用される通信メカニズムを動的に調整する方法は、複数の通信メカニズムを識別する動作２００を備えることを示している。動作２００は、ピアから受信ピアへとメッセージを通信するための複数の通信メカニズムを識別することを含んでいる。例えば、図２は、ピア１００におけるスマート・トランシーバ１５０ａが、別のピア（例えば、ピア１１５）と通信するために通信チャネルを作成するために、意のままに使える通信メカニズム１３３、１３５、および１３７を有することを示している。
【００５２】
さらに、図４は、本方法が、少なくとも１つの初期の通信メカニズムが別の通信メカニズムよりも好ましいことを決定する動作２１０を備えることを示している。動作２１０は、複数の通信メカニズムのうちの少なくとも１つの初期の通信メカニズムが、複数の通信メカニズムのうちの別の通信メカニズムよりも好ましいことを自動的に決定することを含んでいる。例えば、スマート・トランシーバ１５０ａは、ユーザがランドライン接続されたコンピュータ・システム（land-line-connected computer system）の所に存在するなどの、ピア１１５におけるユーザに関するプレゼンス情報を識別する。したがって、他の関連した任意のファクタ（例えば、近接度、ネットワーク・ロケーション、関連したアプリケーション、日時など）に基づいて、スマート・トランシーバ１５０ａは、ＨＴＴＰ通信メカニズム１３３が、例えばＳＭＳ通信メカニズム１３３よりも適切であることを決定する。
【００５３】
図４はまた、本方法が、少なくとも１つの初期の通信メカニズムを選択する動作２２０を備えることを示してもいる。動作２２０は、少なくとも１つの初期の通信メカニズムを自動的に選択することを含んでいる。例えば、ＨＴＴＰ通信メカニズム１３３がより適切であることを決定するとすぐに、スマート・トランシーバ１５０ａは、ＨＴＴＰ通信メカニズム１３３を使用してピア１００におけるアプリケーションと、ピア１１５におけるアプリケーションとの間に通信チャネルを作成する。代わりに、ＳＭＳ通信メカニズム１３７が、その後になってより適切である場合には、スマート・トランシーバ１５０ａは、ＨＴＴＰ通信メカニズム１３３のために最初に作成された通信チャネルのキャッシュを取得し、それをＳＭＳ通信メカニズム１３７に対して適用することもある。
【００５４】
さらに、図４は、本方法が、少なくとも１つの選択された通信メカニズムを使用してメッセージングを送信する動作２３０を備えることを示している。動作２３０は、少なくとも１つの選択された初期の通信メカニズムを使用して受信ピアのコンピュータ・システムに対してメッセージを送信することを含んでいる。例えば、ピア１００におけるアプリケーション１５５は、ピア１１５における対応するアプリケーション（図示されず）に対して、ＨＴＴＰ通信メカニズム１３３を使用して作成される通信チャネルを介してメッセージ１４０を送信する。しかしながら、通信チャネルの詳細は、そのアプリケーション・レイヤ（application layer）それ自体から抽出（abstract）され、スマート・トランシーバ・コンポーネント１５０ａによって処理される。それ故に、内在する通信メカニズム（underlying communication mechanism）が変化する場合、アプリケーションは、この変化について事実上気付かず、単にスマート・トランシーバ１５０ａによって確立された通信チャネルを介してメッセージを送信する。
【００５５】
図５は、ネットワーク・ネームスペース（network namespace）内のピア・グループ通信のための、本発明の態様による代替方法を示している。とりわけ、図５は、本方法が、第１のネームスペースに関連付けられた第１のピア・グループを識別する動作３００を備えることを示している。動作３００は、第１のネームスペースに関連付けられた第１のピア・グループの１つまたは複数のピアを識別することを含んでいる。例えば、ピア１００は、ピア１０５、１１０、１１５、および１２０を含む、ピアの「グループＡ」を識別し、グループＡが、ネームスペース１６０に関連することを識別する。したがって、グループＡに参加することは、ネームスペース１６０に参加することを包含することになることが理解される。
【００５６】
さらに、図５の方法は、第１のネームスペースに対してグループ参加メッセージを送信する動作３１０を備える。動作３１０は、第１のネームスペースに対してグループ参加要求メッセージを送信することを含んでいる。例えば、ピア１００は、グループ参加要求メッセージ（図示されず）をネームスペース１６０に対して送信する。次いで、このメッセージは、ピア・ノード１０５やピア・ノード１１０など、要求を処理するためのネームスペース内の最も適切なピア・ノードによって処理される可能性があり、このピア・ノードは、グループ・リスト（すなわち、１３０ａまたは１３０ｂ）の少なくとも一部分のハッシュを記憶する。
【００５７】
さらに、図５は、本方法が、第１のネームスペースからメンバシップの確認を受信する動作３２０を備えることを示している。動作３２０は、そのピアが、第１のピア・グループのメンバシップ・リストに追加されるなどの、第１のピア・グループ内のメンバシップが受け入れられたという第１のネームスペースからの確認を受信することを含んでいる。例えば、「グループＡ」メンバシップのハッシュ・テーブル（１０３ａ）の少なくとも一部分を記憶しているピア・ノード１０５は、ネームスペース１６０の代わりにピア１００に対してメンバシップが受け入れられたことを応答する。類似したラインに沿って、ピア・ノード１１０は、「グループＢ」を追加するためにネームスペース１６０に代わってネームスペース１６３に対してグループ参加要求メッセージを送信する。次いで、「グループＢ」内の（それ故に、ネームスペース１６３の）ノードであるピア１２５は、ピア・ノード１１０に対して確認で応答し、それ故、グループＡとグループＢとの間のネームスペース・ブリッジの構築を許可する。代わりに、このグループ参加要求の受け入れは、ピア１１０がグループＢのメンバシップを問い合わせるためのビークル（vehicle）を提供し、グループＡについてのハッシュ・テーブル１３０ｂのリスト内の各グループＢのピア・メンバについてのＵＲＩを含む可能性もある。
【００５８】
図６は、一つまたは複数の配信制約条件に基づいてピア・グループ内の１つまたは複数のピアの間でのピア・メッセージの通信を最適化するための、本発明の一実装形態による別の代替方法を示している。とりわけ、図６は、本方法が、１つまたは複数の配信制約条件を指し示すピア・メッセージを受信する動作４００を備えることができることを示している。動作４００は、発信元のピアから、少なくとも１つのピア・ツー・ピア通信チャネルを介して、１つまたは複数の配信制約条件を指し示すピア・メッセージを受信することを含んでいる。例えば、ピア１００は、メッセージ１０３を送信し、このメッセージは、「１つの応答だけ」が必要とされるという制約条件を含んでいる。同様に、ピア１００は、メッセージ１１３を送信し、これは、このメッセージがグループＡの「任意の１つ」に対して送信されるように制約する。
【００５９】
図６は、本方法が、セントラル・トラッキング・オブジェクトを参照する動作４１０を備えることも示している。動作４１０は、少なくとも１つまたは複数のピアが、ピア・メッセージを受信していること、および発信ピアがピア・メッセージを送信したこと、を指し示すセントラル・トラッキング・オブジェクトを参照することを含んでいる。例えば、ピア１０５は、メッセージ（図１Ａ）を受信し、セントラル・トラッキング・オブジェクト１４５（図２）を調べて、メッセージ１０３がピア１００によって送信されているにすぎず、まだピア１０５以外のどのピアにも受信されてはいないことを決定する。セントラル・トラッキング・オブジェクト１４５は、メッセージ１０３が、ＨＴＴＰ通信メカニズム１３３を経由して送信されているにすぎないことも指し示すことができる。
【００６０】
さらに、本方法は、１つまたは複数の配信制約条件を評価する動作４２０を備える。動作４２０は、ピア・メッセージについての１つまたは複数の配信制約条件を評価することを含んでいる。例えば、ピア１０５は、メッセージが１つの応答を必要とするにすぎないという、メッセージ１０３内の制約条件を識別する。さらに、ピア１０５は、セントラル・トラッキング・オブジェクト１４５から、他のピアがまだメッセージ１０３に対する応答を供給していないことを識別する。同様に、ピア１０５は、セントラル・トラッキング・オブジェクト１４５から、メッセージ１１３を受信すべき他のピアが、まだメッセージ１１３を受信していないことを識別する。代わりに、ピア１０５は、メッセージ１１３に対して応答することができる他のピアが、まだメッセージ１１３を受信していないことを識別することもある。
【００６１】
したがって、図６はさらに、本方法が、ピア応答メッセージを送信する動作４３０を備えることを示している。動作４３０は、セントラル・トラッキング・オブジェクトから参照される表示に基づいて、および、発信ピアの配信意図が保全されるなどの、１つまたは複数の配信制約条件の評価に基づいて、ピア応答メッセージを送信することを含んでいる。例えば、ピア１０５は、応答１０７をピア１００に対して送信し、このアクションをセントラル・トラッキング・オブジェクト１４５（例えば、図２）に登録する。したがって、ピア１０５によって受信されるメッセージ１０３に対する他の任意の応答１０７は、少なくともピア・ノード１０５、ならびにセントラル・トラッキング・オブジェクト１４５に対するアクセス権を有する他の任意のピアによってドロップさせられることになる。同様に、ピア１０５は、ピア１０５が、グループＡのうちの「任意の１つ」に対してアドレス指定されているメッセージ１１３を受信したことを表す印をセントラル・トラッキング・オブジェクト１４５に登録する。したがって、メッセージ１１３のコピーをうっかりして受信する、グループＡ内の他の任意のピアは、そのメッセージをドロップし、あるいは単に応答することを回避することができる。
【００６２】
したがって、本発明の実装形態は、ピア・ツー・ピア通信システムについてのいくつかの利点および最適化を提供する。本発明の範囲内の実施形態および／または実装形態はまた、コンピュータ実行可能命令またはデータ構造を搬送し、あるいは記憶するためのコンピュータ読取り可能媒体も含んでいる。そのようなコンピュータ読取り可能媒体は、汎用コンピュータまたは専用コンピュータによってアクセスされることができる使用可能な任意の媒体とすることができる。
【００６３】
一例として、限定するものではないが、そのようなコンピュータ読取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク・ストレージ、磁気ディスク・ストレージまたは他の磁気ストレージ・デバイス、あるいはコンピュータ実行可能命令またはデータ構造の形態で望ましいプログラム・コード手段を搬送し、または記憶するために使用されることができ、また汎用コンピュータまたは専用コンピュータによってアクセスされることができる他の任意の媒体を備えることができる。情報が、ネットワークまたは別の通信接続（ハード・ワイヤード、ワイヤレス、あるいはハード・ワイヤードまたはワイヤレスの組合せのいずれか）の上でコンピュータに対して転送され、あるいは供給されるときに、コンピュータは、適切にその接続をコンピュータ読取り可能媒体と見なす。したがって、そのような任意の接続は、適切にコンピュータ読取り可能媒体と名付けられる。以上についての組合せもまた、コンピュータ読取り可能媒体の範囲内に含められるべきである。
【００６４】
コンピュータ実行可能命令は、例えば汎用コンピュータ、専用コンピュータ、または専用処理デバイスが、ある種のファンクションまたはファンクションのグループを実行するようにさせる命令およびデータを備える。本発明は、構造的機能（structural features）および／または方法論的な動作（methodological acts）に特有の言語で説明されているが、添付の特許請求の範囲の中で定義される主題は、必ずしも上記の特定の機能または動作だけに限定されるとは限らないことが理解されるべきである。そうではなくて、上記の特定の機能および動作は、特許請求の範囲を実装する例示の形態として開示されている。
【００６５】
本発明は、その趣旨または本質的な特徴を逸脱することなく、他の特定の形態で実施されることもできる。説明された実施形態は、すべての点において、例示としてのみであり、および限定的でないものと考えられるべきである。本発明の範囲は、したがって前述の説明によってではなく、添付の特許請求の範囲によって指し示される。特許請求の範囲と同等の意味および範囲内に含まれるすべての変更は、それらの範囲内に包含されるべきである。
【図１Ａ】
0005536120.tif 000002
【図１Ｂ】
0005536120.tif 000003
【図２】
0005536120.tif 000004
【図３】
0005536120.tif 000005
【図４】
0005536120.tif 000006
【図５】
0005536120.tif 000007
【図６】
0005536120.tif 000008