説明

スケーラブルなピア・グループを使用して通信を最適化すること

【課題】スケーラブルなピア・グループを使用して通信を最適化する。
【解決手段】ピア・メッセージの1または複数の配信制約に関連するように以前にピア・メッセージを送受信されたピアのいくつかを示し、中央トラッキングオブジェクトは、中央トラッキングオブジェクトの少なくとも部分が他のピアとメッセージアノーテーションを送受信することを伝搬することを他のピアと共有可能であるように指定された共有区分の少なくとも部分にストアされ、中央トラッキングオブジェクトからのピア・メッセージについてのアノーテーションを送受信することにアクセスすることと、アクセスされたピア・メッセージについてのアノーテーションの送受信に基づいて、ピア・メッセージについての1または複数の配信制約を評価し、評価に基づいて、メッセージについての発信元のピアの配信意図を保全するため、どのようなピア・メッセージがさらに配信されるべきか決定する。

【発明の詳細な説明】
【背景技術】
【0001】
コンピュータ化されたシステムが広まり、他の人々と通信するニーズやそれに関連するアプリケーションがある。一般に、コンピュータ・システムと、関連したデバイスとは、例えば個人電子メッセージを交換し、商品を販売し、アカウント情報を供給し、1つのアプリケーションから別のアプリケーションへとメッセージを通信するなど、様々な理由のためにネットワーク上で情報を通信する。しかしながら、コンピュータ・システム、およびそれらの関連したアプリケーションがますます高度化するようになるにつれて、ネットワーク上でメッセージを伝えることに関連する課題も増大してきていることを認識するであろう。
【0002】
一般に、ネットワーク上で1つのコンピュータ・システムから次のコンピュータ・システムへとメッセージを通信するためのいくつかの異なるプロトコルおよびトポロジが存在する。電子メール(「Eメール」)システムや一部のインスタント・メッセンジャー・システム(instant messenger system)などと共に使用される1つの従来のトポロジは、1つまたは複数の中央集中されたメッセージング・サーバ(centralized messaging server)を使用して、ユーザ情報を管理し検証し、また1つのコンピュータ・システムから次のコンピュータ・システムに対して、送信されるユーザ・メッセージを経路指定もする。この例においては、1つのコンピュータ・システムは、中央集中されたメッセージ・サーバ(message server)へとログインし、別のユーザまたはコンピュータ・システムに対して、アドレス指定されたメッセージを送信する。中央集中されたサーバは、アドレス指定されたメッセージを受信し、ユーザ情報を検証し、アドレス指定されたメッセージを、そのコンピュータ・システム(またはユーザ)に対して送信する。
【0003】
別の従来のトポロジは、ピア・ツー・ピア・フレームワーク(peer-to-peer framework)を使用して、1つのコンピュータ・システムから次のコンピュータ・システムに対して直接にメッセージを送信する。すなわち、1つのコンピュータ・システム(すなわち、1つの「ピア(peer)」または「ピア・コンピュータ・システム(peer computer system)」)は、別のコンピュータ・システム(すなわち、他の「ピア」または「ピア・コンピュータ・システム」)に対して直接に接続し、次いで他のピア・コンピュータ・システムに対して直接にメッセージを送信する可能性がある。これらのような従来のピア接続はまた、複数の異なる他のピア・コンピュータ・システムとのいくつかの他の接続を有する可能性もある。特に、1つのピアは、通信ネットワークにおいて複数の他のピアに対して接続される可能性もあり、またさらに定義された「グループ」の複数のピアに対して接続される可能性もある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、これらのような従来のピア通信フレームワークは、それらがどれだけ、
従来のEメール・システムまたはインスタント・メッセージング・システム(instant messaging system)と比較して通信を容易にするかの点で、いろいろな意味で、より制限されている。例えば、従来のピア通信フレームワークによっては、一般的に、グループは、他のグループを含むことができないようになっている。すなわち、ピア・グループは、一般的に1つまたは複数のピア・コンピュータ・システムのメンバシップを備えるが、おそらく他のグループのすべてのメンバを別々にアドレス指定することなしには、一般的に、そのメンバシップには別のグループを表す単一エンティティ(例えば、アドレスまたはオブジェクト)を含めてはいない。
【0005】
従来のピア通信フレームワークは、また、一般的に、その数を適切にインテリジェントに調整するサービスおよびある種のメッセージを通信するための手段とを、たとえあるとしても、少ししか有していない。例えば、1つのピアは、定義されたグループ内のいくつかの他のピアに対してメッセージを送信する可能性がある。受信ピアはさらに、誰がその第1のメッセージを最初に送信したかを区別せずに、そのグループ内の少数の他のピアに対してそのメッセージを中継する可能性がある。したがって、元の送信ピアは、そのピア・グループの他のメンバから元のメッセージのいくつかのコピーを受信する可能性がある。
【0006】
さらに、従来のピア・フレームワークは、問い合わせ(query)に対する回答をユーザが、どのように受信したか、いつ受信したか、あるいは受信したかどうかを、仮に識別したとしても、効率的に識別しない。例えば、ユーザが、ピア・グループの幾人かのメンバに対して問い合わせ(query)を送信したいと望む可能性があるが、そのユーザは、正しい回答を一回受信する必要があるだけである。それにもかかわらず、そのピア・グループ・メンバが、その問い合わせが満たされているとのある種の別のメッセージを送信しない限り、各ピア・グループ・メンバは、その問い合わせに対する応答がまだ存在していないと考え、それ故に、引き続き、応答する可能性がある。結果として、ユーザは、たった1つの質問について、グループ内の複数のピアから同じ回答のいくつかの反復を、ひょっとすると、取得する可能性がある。これらのライン(傾向)に加え、従来のピア通信フレームワークはまた、一般的にピア・グループの内部の1人のピア・メンバを次のピア・メンバから非常にうまく区別することをしない。例えば、あるピアは、そのピア・グループに加わるなどのために、ピア・グループのすべてのメンバに対してその情報を通信したいとは思わない(あるいは、通信する必要がない)が、そのピア・グループの1人のメンバに対してある種の情報を一回だけ送信する必要がある可能性がある。残念ながら、従来のピア・フレームワークは、このタイプの制約条件を許可しない。
【0007】
したがって、従来のピア通信フレームワークは、様々なステージのネットワークに多数の不必要なメッセージのコピーが出回る可能性があることを認識することができる。すなわち、ピアの間で区別すること、あるいはちょうど説明されたシナリオにおけるようにピアが、メッセージを発信しているか受信しているかを区別すること、の失敗に起因して、ピア・ネットワークの周りには、多数の不必要なメッセージの複製(duplicate)が送信されている可能性がある。他の場合には、ピア通信フレームワークは、所与のコンテキストについて不適切であるある種の通信メカニズムを使用して送信されるメッセージで渋滞させられる可能性があり、この場合には、エンド・ユーザは、ピア・ツー・ピア・メッセージにアクセスすることさえできない可能性がある。
【0008】
例えば、ピア通信フレームワークは、何らかの初期接続情報に基づいてユーザに対してメッセージを送信するためのハイパー・テキスト転送プロトコル(Hypertext Transfer Protocol)(「HTTP」)メカニズムを使用する可能性がある。しかしながら、ユーザがローカル・コンピュータ・システムを離れる(すなわち、建物の外を歩く)場合、ショート・メッセージ・サービス(Short Message Service)(「SMS」)通信メカニズムを使用して、ユーザのモバイル電話に対してメッセージを通信することがより効率的である可能性がある。それにもかかわらず、従来のピア通信フレームワークは、存在の変化に対応するようにその選択された通信メカニズムを自動的に調整しない。特に、ピア通信フレームワークは、一般的に「オール・オア・ナッシング(all-or-nothing)」アプローチを使用することになり、別の通信メカニズムが、その後になってより適切な可能性があるかどうかにかかわらず、依然として最初に選択された通信メカニズムを使用するのみに留まる。どれだけ多くの、どんなメッセージが送信されているかを適切に調整することの失敗は、ピア通信フレームワークに重い負担をかけることをもたらす可能性があることを認識することができる。
【0009】
従来のピア通信フレームワークの別の態様は、それらのフレームワークが、ピアにおける「リスニングする(listen)」ビヘイビアと「送信する」ビヘイビアとを区別するときに、見込まれる制約条件を、通常(例えば、ハードウェア、ソフトウェア、またはその両方を)考慮に入れないことである。例えば、送信ピア(sending peer)は、株価情報(stock quote)を配信する場合のように、情報をブロードキャストすることだけをしたいと望む可能性があるが、リスニング・ピア(listening peer)は、株価情報のストリームを単に閲覧する場合のように、ブロードキャスト情報(broadcast information)をリッスンしたいとだけ望む可能性もある。送信ピアとリスニング・ピアは、それぞれ、さらに、異なる能力を有する2つの異なるタイプの通信チャネルを使用している可能性がある。例えば、1つの通信チャネルは、高速なアップロード速度と低速なダウンロード速度を有する可能性があるが、別の通信チャネルは、等しいが但し適度の速さのアップロード速度とダウンロード速度を有する可能性がある。しかしながら、従来のピア・フレームワークは、一般的にピアの振る舞いのタイプに少なくとも部分的に基づいて適切な通信チャネル(または他のハードウェア決定もしくはソフトウェア決定)を決定せず、あるいはピア接続を確立した後にその決定を適切に調整することもしない。
【0010】
したがって、従来のピア・ツー・ピア通信は、多種多様な考察について最適化される可能性が存在する。
【課題を解決するための手段】
【0011】
本発明の実装形態(inplementation)は、ピア・ツー・ピア通信を最適化するシステム、方法、およびコンピュータ・プログラム・プロダクト(computer program product)を使用して、当技術分野における1つまたは複数の問題を解決する。とりわけ、本発明の実装形態は、ピアが加入し、発行することができ、他のピア・グループがメンバになることができるピア通信グループを含んでいる。本発明の実装形態はまた、多数の異なる通信チャネルのうちの、所与のコンテキストに対して適切な1つを、インテリジェントに、動的に、選択することができるコンポーネントも含んでいる。本発明の実装形態はさらに、最適な数のメッセージが、所与の任意のピアに、または任意のピアから、通信されることを保証するコンポーネントも含んでいる。
【0012】
例えば、通信メカニズムを動的に調整するための、本発明の一実装形態による一方法は、ピア・コンピュータ・システムから受信ピア・コンピュータ・システムに対してピア・メッセージを通信するための複数の通信メカニズムを識別することを含む。さらに、本方法は、複数の通信メカニズムのうちの初期の通信メカニズムが、複数の通信メカニズムのうちの別の通信メカニズムよりも好ましいことを自動的に決定するようにすることもできる。この決定を行うとすぐに、本方法はさらに、その初期の通信メカニズムを自動的に選択すること、およびその選択された初期の通信メカニズムを使用して受信コンピュータ・システムに対してピア・メッセージを送信することを含む。
【0013】
ネットワーク・ネームスペース(network name space)内のピア・グループ通信を管理するための、本発明の一実装形態による別の代替方法は、1つまたは複数のピアのうちの、第1のネームスペースに関連付けられた第1のピア・グループを識別することを含む。さらに、本方法はまた、第1のネームスペースに対してグループ参加要求メッセージ(group join request message)を送信すること、ならびに第1のピア・グループ内のメンバシップが受け入れられたという第1のネームスペースからの確認メッセージを受信することも含む。したがって、そのピアは、第1のピア・グループのメンバシップ・リストに追加されており、ピアは、第1のネームスペースに会員登録(subscribe)される。
【0014】
ピア・メッセージの通信を最適化するための、本発明の一実装形態によるさらなる代替方法は、ピア・ツー・ピア通信ネットワークを介して発信ピア(originating peer)からの、1つまたは複数の配信制約条件を含んでいるピア・メッセージを受信することを含む。次いで、ピアは、セントラル・トラッキング・オブジェクト(central tracking object)を参照することができ、このセントラル・トラッキング・オブジェクトは、少なくとも1つまたは複数のピアが、ピア・メッセージを受信していること、および発信ピアが、ピア・メッセージを送信したことを示す。本方法はさらに、ピア・メッセージについての1つまたは複数の配信制約条件を評価すること、および1つまたは複数の配信制約条件の評価に基づくのはもちろん、セントラル・トラッキング・オブジェクトから参照される表示(indication)に基づいて、ピア応答メッセージを送信することを含む。したがって、本方法は、このメッセージに関する発信ピアの配信意図を保全する(preserve)ことができる。
【0015】
この課題を解決するための手段のこの概要は、詳細な説明の形で以下にさらに説明される概念の選択を簡略化された形式で紹介するために提供される。本概要は、特許請求の範囲の主題の主要な特徴または不可欠な特徴を識別することを意図せず、また特許請求の範囲の主題の範囲を決定する際の助けとしても使用されることも意図していない。
【0016】
本発明の追加の特徴または利点は、以下に続く説明の中で述べられ、部分的にはその説明から明らかになり、あるいは本発明の実施により知ることができる。本発明の特徴および利点は、添付の特許請求の範囲において特に指摘される手段およびその組合せを用いて実現され、取得されることができる。本発明のこれらの特徴および他の特徴は、以下の説明および添付の特許請求の範囲からもっと十分に明らかになり、あるいは以降で述べられるような本発明の実施によって知ることができる。
【0017】
本発明の以上で列挙された利点および特徴と、他の利点および特徴が取得されることができる方法を説明するために、上記で簡潔に説明された本発明のより特定の説明が、添付図面中に示されるその特定の実施形態を参照して、提供されることになる。これらの図面は、本発明の典型的な実施形態だけを示しており、それ故にその範囲を限定するように考えられるべきではないことを理解して、本発明は、添付図面の使用を介して追加の特異性(specificity)と細部に関して記述されおよび説明されることになる。
【図面の簡単な説明】
【0018】
【図1A】本発明の一実装形態に従って、ピアが、ピアのグループに対して方向づけられたメッセージを送信するピア・ツー・ピア通信システムの全体的な概要を示す図である。
【図1B】ピアが、ピアのグループに対して方向づけられたメッセージを送信する、図1Aに示されるような別の概略図である。
【図2】ピアが、スマート・トランシーバとセントラル・トラッキング・オブジェクトとを使用してメッセージを送信するピア・ツー・ピア通信システムの全体的な概要を示す図である。
【図3】図2に示される概要において、スマート・トランシーバが、送信機能とリスニング機能を区別することを示す図である。
【図4】選択された通信メカニズムを使用してメッセージを送信するための、本発明の一実装形態による動作のシーケンスを備える一方法のフローチャートである。
【図5】ネームスペースに関連するグループに対してメッセージを送信するための、本発明の一実装形態による動作のシーケンスを備える一方法のフローチャートである。
【図6】1つまたは複数の配信制約条件を含むピア・メッセージを配信するための、本発明の一実装形態による動作のシーケンスを備える一方法のフローチャートである。
【発明を実施するための形態】
【0019】
本発明は、ピア・ツー・ピア通信を最適化するシステム、方法、およびコンピュータ・プログラム・プロダクトに適用される。とりわけ、本発明の実装形態は、ピアが加入し、発表(publish)することができ、他のピア・グループがメンバになりことができる複数のピア通信グループを含んでいる。本発明の実装形態はまた、所与のコンテキストについての多数の異なる通信チャネルのうちの適切な1つをインテリジェントに動的に選択することができるコンポーネントも含んでいる。本発明の実装形態はさらに、最適な数のメッセージが、所与の任意のピアに対して、または任意のピアから通信されることを保証するコンポーネントも含んでいる。
【0020】
例えば、本発明の少なくとも1つの態様は、一般に中央集中化されたアドミニストレータ(administrator)を必ずしも必要としない加入ポイント(subscription point)であるピア・グループの使用に関連する。とりわけ、所与のピア・グループの各メンバ(または「ピア」)は、グループ・メンバ・ピアそれぞれが、加入し発行することができるネームスペースのメンバとして考えられることができる。このピア・グループは、さらに別のグループに属すこともでき、そのグループ・メンバのうちの1人として異なるピア・グループを有することもできる。所与のピアのコンピュータ・システムのアプリケーションは、次いで加入/発行(subscription/publication)モデルの観点から各ピア・グループを閲覧することができる。
【0021】
さらに、本発明の態様は、任意の時点において所与の任意の通信シナリオについての適切な通信メカニズムを動的に選択するスマート・トランシーバ・コンポーネント(smart transceiver component)の使用に関連する。例えば、本明細書中でもっと十分に論じられることになるが、スマート・トランシーバ・コンポーネントは、ピアのコンピュータ・システムにおけるアプリケーション・コンポーネントと、無線周波数(radio frequency)(「RF」)コンポーネント、赤外線コンポーネント、共有メモリ・コンポーネント、および/またはシリアル・ポート・コンポーネント(serial port component)など他の通信メカニズムはもちろん、伝統的なHTTPメカニズム、SMSメカニズム、TCPメカニズムなど、1つまたは複数の通信メカニズムとの間をインターフェースすることができる。当業者なら、多くの異なる種類の通信を使用することができることを理解するであろう。
【0022】
1つまたは複数のピアとの通信中の任意の時点(ポイント)で、送信通信システムにおけるスマート・トランシーバ・コンポーネントは、通信プロトコルのうちの任意のものを選択し(かつ/またはそれに合わせて調整する)ことができる。スマート・トランシーバ・コンポーネントはまた、後の時点において、任意の数のファクタに応じて、通信をできるだけ効果的にすることを支援するために、別の通信プロトコルへの変更が適切であると検出した場合に、別の通信プロトコルに動的に変更する(または、別の通信プロトコルを含む)こともできる。さらに、スマート・トランシーバ・コンポーネントは、そのコンピュータ化されたシステムが同じピアと通信するために複数の異なる通信チャネルをオープンする必要がないように、通信チャネルをキャッシュし、再使用することができる。
【0023】
本発明の態様は、さらに、所与のピアの振る舞い(behavior)に基づいて送信通信チャネルおよび受信通信チャネルを最適化することができる。例えば、スマート・トランシーバ・コンポーネントは、いつ、ピアが主としてピア・メッセージを「リッスンする」ために、あるいは主として「送信する」ために構成されるかを識別することができる。ピアが、主としてリッスンするために構成される場合、そのときにはスマート・トランシーバ・コンポーネントは、より高いダウンロードのスループットと速度とを有する通信プロトコルとハードウェア・ポートとを選択する可能性がある。同様に、ピアが主として送信するために構成される場合、そのときにはスマート・トランシーバ・コンポーネントは、より高いアップロードのスループットと速度とを有する他の通信プロトコルとハードウェア・ポートとを選択する可能性がある。
【0024】
本発明のさらに他の態様は、適切な数またはコピーの所与のメッセージが、ピア通信構造(peer communication fabric)において通信されることの保証を支援することができるいくつかの最適化を含んでいる。例えば、以下でもっと十分に詳述されることになるが、各ピアのコンピュータ・システムにおけるセントラル・トラッキング・オブジェクトが、ユーザの間で、および、異なる通信チャネル上で送信されるメッセージを追跡するために使用されることができる。とりわけ、セントラル・トラッキング・オブジェクトは、例えば、送信ピアが、それら自体のメッセージのコピーを受信することがないこと、あるいは他のピアが、同じメッセージの複製コピーを受信しないことの保証を支援することができる。
【0025】
本発明のこれらおよび他の態様はさらに、いくつかの追加の特徴をピア通信フレームワークに提供するのに使用されることができる。例えば、本発明の態様は、メッセージが、グループ内の「任意の1つの」ピアだけに送信されるという制約条件で、グループに対して1つのメッセージを送信するのに使用されることができる。本発明の態様はまた、例えば所与のグループ内のすべてのピアに対して問い合わせを送信した後に、ただ1つの応答メッセージの受信を保証し、それにより不必要な複製を回避するのに使用されることもできる。
【0026】
次に図面を参照すると、図1Aは、ピア・ツー・ピア通信システムを示しており、このピア・ツー・ピア通信システムは、ピア105と通信しているピア100を含み、このピア105は、さらにピア110、ピア115、およびピア120と通信している(例えば、通信チャネルを有する)。ピア115はまた、ピア120とも通信しているが、ピア110はまた、別個のネームスペース内のピア125とも通信している。したがって、例示の通信システムは、1つまたは複数のピア(例えば、105、110)が、「ノード」ピアでもあり得ることを示している。これらのノード・ピアは、ピア・メッセージを経路指定するための中央集中化されたサーバ(centralized server)と類似したハイブリッド・ファンクション(hybrid function)をサービスすることができ、あるいは別のピアとメッセージを簡単にあちこちへと交換する典型的なエンド・ピア(end-peer)としての機能を果たすこともできる。
【0027】
例えば、ノード・ピア105と110は、両方ともに、グループAについてのグループ・リストの少なくとも一部分を格納する。とりわけ、ピア105は、グループ・リスト130aを記憶し、このグループ・リストは、ピア100、110、115、および120を含むが、ピア110(ノード・ピア)は、リスト130bを格納し、このリストは、そのメンバシップの中にピア105とグループB(ピア125を経由)を含んでいる。一実装形態においては、グループ・リストの各部分は、ハッシュ・テーブル(hash table)として記憶される。
【0028】
いずれにしても、グループ・リストの所有権/管理により、ピア105および110は、それらに関連があるグループ・リスト内のピアに対してアドレス指定されたピア・メッセージを経路指定する(転送し、または「チェーンする」)こともできるようにすることができる。例えば、ピア105がグループBに対して(ピア125を経由して)方向づけられたメッセージを受信した場合、ピア105は、そのグループ・リスト・メンバシップをチェックし、それがグループBについてのレコードを有さないが、そのレコードは、そのグループ・リストの別の部分(すなわち、130b)上で見出される可能性があることを決定し、したがって、ピア105が知っているピア110に、そのグループ・リストの残りをホストしているピア110対してその要求を転送する。代わりに、ピア105によってホストされるリスト部分130aが、ピア110においてホストされるリスト部分130bがグループBについてのレコードを含むことを示す情報を保持する可能性もある。以下で、より十分に論じられことになるが、次いでピア110は、メッセージを受信し、グループBについてのグループ・リストをホストしている対応するピア125に対してメッセージを送信することができる。これが行われることができる一方法は、ある種の「ネームスペース」に対してメッセージを送信したり、あるいは発行したりすることによる方法である。
【0029】
例えば、図1Aは、図に示される複数のピアが、ある種のネームスペース160、163の部分(division)に関連付けられることができることを示している。一般に、ネームスペースは、階層的フォーマットにおける1組の名前を識別して、異なる起源(但し、同じ名前)のオブジェクトが一緒に混在するときのあいまいさを回避する。ネームスペースは、ユニフォーム・リソース識別子(Uniform Resource Identifier)(「URI」)によって識別されることができるので、またピアは、URIによって識別されることもできるので、ピア・グループは、URIによってアドレス指定される固有のネームスペースに関連付けられることもできる。したがって、図1Aは、ピア100、105、110、115、および120が、ネームスペース160における同じグループAの一部分であるが、ピア125は、ネームスペース163の一部分であることを示している。すなわち、ピア100、105、110、115、および120のそれぞれは、同じネームスペース160内のURIによってアドレス指定可能であるが、ピア125は、異なるネームスペース163内のURIによってアドレス指定可能である。各ピアは、次に関連するネームスペースに対して発行することにより、そのグループに対してメッセージを送信することができる。同様に、ピアは、関連するネームスペースに対してグループ加入要求(group join request)を送信することにより、グループに加入することができる。
【0030】
さらに、図1Aは、1つのネームスペース(例えば、163)のピア・グループが、異なるネームスペース(例えば、160)の異なるピア・グループのメンバであることが可能であることを示している。例えば、図1Aは、グループ・リスト130a〜bが、ネームスペース160に関連付けられることを示している。しかしながら、グループ・リスト130bは、そのメンバシップの中に「グループB」を有する。グループ・リスト130bは、さらにグループBが、ネームスペース163内のピア125を介してアドレス指定可能であることを示す。したがって、ネームスペース160の一般的なグループAのメンバシップに対して送信されるメッセージは、また、ネームスペース163のグループBのメンバシップに対して転送され、あるいはチェーンされることになる。
【0031】
一般に、1つのネームスペースの1つのピア・グループが、異なるネームスペースの別のピア・グループに追加されることができるいくつかの方法が存在する。一実装形態において、(例えば、ネームスペース163の)1つのグループは、ピア・メンバシップについて(例えば、ネームスペースのピアURIによって)問い合わせされ、これらの見出されたピアは、要求を行うグループのメンバシップ(例えば、ネームスペース160についての)に追加される。次いで各ピアは、新しいグループに追加される前にそれらの以前のグループの中に有するときに受信されたメッセージを送信し、チェーンすることができる。別の実装形態においては、1つのグループは、2つの関連するネームスペース(すなわち、ネームスペース160と163と)の間のネームスペース・ブリッジ(namespace bridge)を作成することにより、別のグループに対して追加されることができる。さらに別の実装形態においては、コンテキストが、特定のピアの会話に関連付けられることができ、それにより、その会話は、複数のピア・グループにまたがって混在され、依然として受信者によって構成されることができるようになる。例えば、メッセージ・アトリビュート(message attribute)は、「会話23」を言う可能性もあり、あるいはもっと特定のものでさえあり、「グループAの会話Y」を言う可能性もある。
【0032】
さらに、図1Aは、どのようにして1つのピアが、どのようにしてメッセージが送信されるか、あるいは誰から応答が受信されるかについての個々の制約条件を含んでピアのグループに対してメッセージを送信することができるかについての概要を提供している。例えば、図1Aは、ピア100が、「たった1つの応答だけ」が受信されるという制約条件を含んでメッセージ103を送信することを示している。すなわち、ピア100のコンピュータ・システムにおけるアプリケーションは、日付や時刻など、1つの一般的な情報だけを必要とする可能性があり、ピア100が誰からその応答メッセージを受信するかについては気にかけない。それにもかかわらず、ピア100は、適切な応答が受信されるまで必要なだけ多くのグループ・メンバに対してメッセージを送信したい。
【0033】
したがって、図1Aは、ピア100がメッセージ103をピア105に対して送信することを示しており、このピア105は、ノード・ピアである。ピア105は、そのグループメンバシップを検査して、ピア100についてのメンバシップ・レコードを検証し、そしてメッセージを中継するためのピアを識別する。ピア105はまた、それがメッセージ103に回答することができるかどうかも識別する。例えば、ピア105は、メッセージ103に回答するために使用可能な適切なリソースまたは帯域幅を有さず、あるいは単に適切な回答について知らない可能性がある。したがって、図1Aは、ピア105が、ピア110に対して、そしてピア115に対してメッセージを転送することを示している。ピア115は、また、ピア120とのピア接続を有し、またピア115が、グループ・メッセージをピア120に対して中継することになるので、ピア105は、メッセージ103の別のコピーをピア120に対して送信する必要はない。類似した理由のために、ピア105は、ピア110が、「グループA」についてのグループ・リストの残りに対するノードであることを知っているので、ピア105は、ピア110に対してアドレス指定され、さらにそのメッセージが、「グループA」の他の任意のメンバに送信されるべきであることを指摘する、メッセージ103を単に送信することもできる。
【0034】
この例においては、ピア120は、ピア115およびピア110がピア105を経由して応答107をピア100に対して返信する前に、ピア105を経由して応答107をピア100に対して返信する。一部の場合には、これは、ピア105がメッセージ103をピア110に対して送信する前に行われている可能性がある(これは、メッセージ103をピア110に対して不必要にレンダリングすることになる)。しかしながら、ピア120から応答107を受信すると、ピア105は、以下の図(例えば、図2)においてもっと十分に論じられる「セントラル・トラッキング・オブジェクト」に記入することなどにより、その応答を記録することができる。さらに、ピア100は、たった1つの応答だけを必要としたので、ピア105は、この制約条件を識別し、ピア120からピア100へと応答107を単に転送し、一方、ピア110および115からのそれぞれ応答107をドロップする(捨てる)。したがって、ピア105は、ピア100が、元々要求されているように、1つの応答を受信するだけであるように保証することができる。
【0035】
図1Bは、図1Aに示されるシナリオと類似したシナリオを示しているが、メッセージ配信に関してピア100によって置かれる別の制約条件を示している。とりわけ、図1Bは、ピア100が、メッセージ113をグループAの「任意の1つ」に対して送信されるように制約することを示している。例えば、ピア100のコンピュータ・システムにおけるアプリケーションは、ピア・グループの一般的な任意のメンバに対して「プレゼンス(presence)」情報を送信したいと望むが、そのグループのすべてのメンバに対してこれを送信する必要はないという場合がある。プレゼンス情報は、必ずしもそれぞれがピア100からメッセージ113を受信する必要はなく、グループ内の他のピアにとってアクセス可能であってよい。したがって、図1Bは、ピア100が、この場合にはたまたまノード・ピアになっているピア105に、すなわち「ターゲット」ピア、に対してメッセージ113を送信することを示している。
【0036】
1つのピアが、メッセージ113を送信すべき(一つの)ターゲット・ピアを自動的に選択する多数の方法が存在する可能性がある。例えば、ピア100は、近接情報を考慮に入れ、グループA内の他のピアの最も近いネットワーク・ロケーションおよび/または最も遠いネットワーク・ロケーションを決定してもよい。この情報はまた、別のネットワーク・ロケーションにおける受信者と比較される1つのネットワーク・ロケーションにおける受信者などの、受信者の可能性のあるクラスまたは組を生成するために使用することもできる。一実装形態においては、この情報は、最下位のid、最上位のid、固定された識別子、ランダム識別子、最低の帯域幅または処理負荷などの選択判断基準、あるいは何らかの他の動的にアクセス可能な判断基準、を含んでいる。
【0037】
ピア100は、そのような許容可能な任意の受信者リストに加えて、対応する除外リスト(exclusion list)を作成することもできる。とりわけ、ピア100は、メッセージ113を制約することができ、その結果、そのメッセージは、「Xドメイン内のグループAのうちの任意のものであるが、Yドメイン内のグループBのうちのどれでもないもの」に対してアドレス指定される。したがって、本発明の態様は、キャッシュ複製などのシナリオにおいて、より大きなスケールを提供することができ、ここではデータは、別のピア(例えば、115、120)から必要とされる可能性があるが、ここではピアの「クラス」の選択は、重要であり、そのメッセージ(例えば、113)は、それ故にすべてのピア・メンバに対して複製される必要がない。
【0038】
いずれにしても、また以前に説明されるように、図1Bは、メッセージ113が、グループAの任意の1つに対して(130aを経由して)アドレス指定され、これは、メッセージ113の配信をピア115またはピア120のうちの任意のものだけに制限し、これらのピアは、グループ・リスト130a上で見出されることを示している。したがって、ピア105がメッセージ113を受信すると、ピア105は、適切な応答を有さず、したがってメッセージ113を別のピアに対して渡すべきかどうかを識別する。この決定は、以上で識別されたパラメータのうちのどれか、ならびに帯域幅またはリソースの考察に基づいたものとすることができる。したがって、例えば図1Bは、(メッセージ113からのコンテンツを含む)新しいメッセージ111の形でピア115に、応答することが可能かどうかを質問し、これに対してピア115が否定的に応答する(109)応答することを示している。次いでピア105は、同じ問い合わせ111をピア120に対して送信し、応答117を受信し、この応答を、ピア105は、次いでピア100に戻すようにチェーンする(または転送する)。したがって、図1Bは、ピア100によって行われる「任意のもの」に対して送信する制約条件が満たされることを、どのようにしてピア105が保証する助けを行うことができるかを示している。とりわけ、図1Aから1Bは、グループと、グループ内のピアが、組織化されることができ、いくつかの最適化および/または制約条件を含むメッセージ配信を管理することができるいくつかの方法を示している。
【0039】
図2は、本発明の実装形態に従ってこれらの組織的な最適化を可能にする助けを行うために使用されることができる1つまたは複数のコンポーネントのより詳細な概略図を示している。例えば、図2は、セントラル・トラッキング・オブジェクト145を示しており、このセントラル・トラッキング・オブジェクトは、選択グループ内の複数のピアの間でメッセージ送信アノテーション(message sending annotation)とメッセージ受信アノテーション(message receiving annotation)を共用するために使用されることができる。一実装形態においては、セントラル・トラッキング・オブジェクト145は、指定された共用パーティションの形でピア・ノード(例えば、ピア・ノード105、110)上に少なくとも部分的に記憶されることができる。次いで、セントラル・トラッキング・オブジェクト145に対する登録アップデートは、必要に応じて、あるいはピア・ユーザによって構成されるピア・ツー・ピア通信システムにおける他のピアのうちの任意のものに対してプッシュされ(または任意のものからプルされ)ることができる。
【0040】
例えば、図2は、ピア100でセントラル・トラッキング・オブジェクト145によって管理される情報も、ピア115およびピア120に関連付けられたトラッキング・オブジェクト内で共用されることもできることを示している。一実装形態においては、セントラル・トラッキング・オブジェクト145は、各ピアが、それぞれのピアにおける異なるトランスポート入力プロセッサ(transport input processor)とトランスポート出力プロセッサ(transport output processor)にまたがって共用する単一のオブジェクトであるが、代替実装形態(明示的に示されず)においては、各ピアは、独立な、本質的に異なる、トラッキング・オブジェクトの所有権を有することができる。しかしながら、説明の簡単のために、図2は、ピア100、115、および120のそれぞれが、セントラル・トラッキング・オブジェクト145の少なくとも一部分を共用することを示している。ピア100がピア115とピア120に対してメッセージ140を送信すると、図2のピア100におけるセントラル・トラッキング・オブジェクト145、ならびにピア115および120におけるオブジェクト145は、ピア100がメッセージ140を送信したことを記録することができる。この方法における情報を共用すること、および/または配信することは、送信されたおよび受信されたメッセージを登録することなどにより、任意の数のメッセージング最適化を可能にすることができる。
【0041】
例えば、図1Aにおけるように、ピア105が複数の応答107を受信すると、ピア105は、応答107がピア120からすでに受信されており、ピア100に対して送信されていることをセントラル・トラッキング・オブジェクト(例えば、145)から識別し、したがってこの情報を使用して、ピア110および115から複製応答107をドロップすることができる。同様に図1Bに示されるように、ピア105は、セントラル・トラッキング・オブジェクト(例えば、145)を調べて、グループA内のどのピアと、ピア105が、「ただ1つに対する送信」などの制約条件の下でメッセージ113をハンドオフする(hand off)することをすでに試みたかを決定することができる。したがって、セントラル・トラッキング・オブジェクト145による登録は、複製にフィルタをかけること、ならびにブラック・リスト(black list)、ホワイト・リスト(white list)の使用、および/または故障情報の識別、などのために構成される少なくとも1つのメカニズムを提供することができ、次いでこれは、通信チャネルのより高位レベルにおいて、スマート・トランシーバ150a〜cによって、使用されることができる。
【0042】
例えば、図2は、ピア100がスマート・トランシーバ・コンポーネント150aを含むことができることを示している。スマート・トランシーバ150aは、ピア115上のトランシーバ150bや、ピア120上のトランシーバ150cとして示されるなど、ピア・ツー・ピア通信システム内の他のピアにも見出される個別化されたコンポーネントである。一般に、スマート・トランシーバ150aは、アプリケーション・コンポーネント155と、1つまたは複数の通信メカニズム133、135、および137との間をインターフェースするために使用されることができ、次いで様々なシステム制約条件またはシステム・プロパティ(例えば、ハードウェア課題、ソフトウェア課題、ネットワーク課題(network issues)など)に基づいてある種のメッセージ送信決定およびメッセージ受信決定を行う。
【0043】
特に、スマート・トランシーバ(すなわち、150a〜c)は、任意の数の動的に決定されるファクタに基づいて、何がより効果的な通信メカニズムであるかを、通信プロセスにおける任意の時間に動的に決定することができる。一実装形態においては、例えばスマート・トランシーバ150aは、(例えば、通信メカニズム133、135、137などを経由する)アプリケーション・チャネルをキャッシュすることができ、その結果、確立されたセキュリティおよび他のアプリケーション・レベルのロジックが、(タイム・ウィンドウ(time window)内で)再確立される必要はない。スマート・トランシーバ150a〜cはまた、様々なアイデンティティと、他のネットワーク・スループットまたは処理手続の考慮すべき事柄とを使用して、確立された、または好ましい通信メカニズムを選択することもできる。これらのライン(方針)に沿って、スマート・トランシーバ150a〜cは、ネットワークの故障アクティビティ、ならびにネットワーク・ポリシーの変化またはアップデートを含めて、他の任意のネットワーク変化を監視することもできる。スマート・トランシーバ150a〜cによって動的に決定されるそのような情報により、所与のトランシーバは、どの通信メカニズム、またはチャネルが使用されるかを動的に調整することができるようになり得る。
【0044】
一例として、ピア配信システム(または任意の通信メカニズム)が、特定のエンドポイントピア(例えば、ピア115)に対して通信メカニズム133、135、または137のうちのどれかを経由して通信チャネルを確立するものと仮定する。ピア100におけるスマート・トランシーバ150aは、所与のエンドポイント・ピアにおける別のスマート・トランシーバ(例えば、ピア115におけるトランシーバ150b)との最も適切なファクタに基づいた接続を開始し、次いで接続状態(すなわち、「通信チャネル」)をキャッシュする。接続は、依然としてその通信チャネルのアプリケーション・コンポーネントを介して行われるので、重要なアプリケーション接続セマンティクス(application connection semantics)は、後でより適切な接続メカニズムに基づいて別の通信メカニズム(より低レベルの通信チャネル)にスイッチングするときに保持されることができる。
【0045】
したがって、通信チャネルは、送信されているメッセージ(例えば、140)内の既存の任意のネットワーク・ポリシーおよび/または制約条件に基づいて使用される(または再使用される)ことができる。例えば、適切なコンピュータ・システム(例えば、パーソナルコンピュータ、セルラ電話など)におけるピア100などのユーザは、メッセージを送信するために最初に別のピア115に接続する可能性がある。ピア100は、最初にスマート・トランシーバ150aを介してある種の「プレゼンス」情報を検出する可能性があり、このプレゼンス情報は、ピア115におけるユーザが、ランドライン(land line)を介してネットワークに接続されていることを示唆している。したがって、スマート・トランシーバ150aは、HTTP通信メカニズム133を使用して、スマート・トランシーバ150bを経由してピア115に接続することにより通信チャネルを開始する可能性がある。しかしながら、ピア115におけるユーザは、その後のポイントにおいてランドライン・コンピュータ・システムを終了し、それ故に、その後はワイヤレス通信手段のみを経由して応じられる可能性がある。したがって、スマート・トランシーバ150bは、ピア100におけるトランシーバ150aに対してそのユーザについてのプレゼンス情報におけるこの変化を送信する可能性がある。
【0046】
次いでスマート・トランシーバ150aは、ユーザ(ピア115)が、SMS通信メカニズム137など、異なる通信メカニズムを介してよりよく連絡可能であることを自動的に決定する可能性がある。したがって、スマート・トランシーバ150aは、HTPPメカニズム133上で最初にセットアップされたキャッシュされた通信チャネルを使用し、今では好ましいSMS通信メカニズム137上にその通信チャネルを複製する。結果として、アプリケーション155を介してピア115に対して送信される新しいメッセージは、今やSMSを経由して通信される。
【0047】
1つまたは複数の代替実装形態(図示されず)においては、スマート・トランシーバ150aは、特定のメッセージを配信するための複数の通信チャネルを、それが適切と考えられ限り、作成することもできる。例えば、スマート・トランシーバ150aは、特定のメッセージについて緊要性(urgent nature)が与えられると、複数の通信チャネルを作成し、それによって、ユーザが所与のメッセージを受信することを保証することが効率的であることを決定することができる。例えば、そのような場合には、スマート・トランシーバ150は、複数の通信経路を経由してユーザ・プレゼンスを検出し、次いで対応する複数の通信チャネルを開始することができる。
【0048】
図3は、スマート・トランシーバ・コンポーネント150aが着信および発信のピアツーピア・メッセージを動的に管理するために使用されることができる、本発明の態様による別の実装形態を示している。とりわけ、図3は、ピア100が、アプリケーション156および157を使用してメッセージを通信している一実装形態を示しており、これらのアプリケーションは、それぞれリッスンのビヘイビア(listening behaviors)または送信のビヘイビア(sending behaviors)で動作している。例えば、アプリケーション156は、ピア115からの絶えず流される株価情報を受信し、表示するように構成されるが、アプリケーション157は、1つまたは複数の他のピア105および110に対してビデオ・データを流し出す(stream)ように構成される。しかしながら、通信チャネル170および175は、異なる能力(capabilities)を有する。とりわけ、通信チャネル170は、ほぼ等しいアップロード・コンフィギュレーションとダウンロード・コンフィギュレーションとを有するが、通信チャネル175は、より高速なダウンロード・コンフィギュレーションと、しかし、一方、より低速のアップロード・コンフィギュレーションを有する。
【0049】
したがって、アプリケーション156および157と通信チャネル170および175との間をインターフェースするスマート・トランシーバ150aは、所与の任意の時刻のアプリケーションの共通のビヘイビアを決定し、次いでどの通信チャネルを使用すべきかについての適切な決定を行うことができる。例えば、図3は、通信チャネル170が、チャネル175と比較して比較的高速なアップロード速度を有するので、スマート・トランシーバ150aが、アプリケーション157(送信)と共に使用されるように通信チャネル170を選択することを示している。同様に、図3は、通信チャネル175が、チャネル170と比較して比較的より高速なダウンロード速度を有するので、スマート・トランシーバ150aが、アプリケーション156(リッスン)と共に使用されるように通信チャネル175を選択することを示している。しかしながら、スマート・トランシーバ150aは、必要に応じて、あるいは通信チャネル170〜175の態様が、何らかの他の理由のために変化する場合に、その後のポイントでこれらの通信チャネルの決定を切り換えることができることが理解されるであろう。
【0050】
したがって、図1Aから図3と、その対応する説明は、ピア・ツー・ピア通信システムを最適化しスケーリングするためのいくつかのコンポーネントおよびメカニズムを示している。本発明の実装形態は、特定のファンクションを実行するための方法における動作の観点から説明されることもできる。とりわけ、図4および図5は、それぞれ動的に選択された通信メカニズムを使用してメッセージを送信するための、そしてネームスペースに関連するグループに対してメッセージを送信するための方法における動作のフローチャートを示している。
【0051】
例えば、図4は、ピアによって使用される通信メカニズムを動的に調整する方法は、複数の通信メカニズムを識別する動作200を備えることを示している。動作200は、ピアから受信ピアへとメッセージを通信するための複数の通信メカニズムを識別することを含んでいる。例えば、図2は、ピア100におけるスマート・トランシーバ150aが、別のピア(例えば、ピア115)と通信するために通信チャネルを作成するために、意のままに使える通信メカニズム133、135、および137を有することを示している。
【0052】
さらに、図4は、本方法が、少なくとも1つの初期の通信メカニズムが別の通信メカニズムよりも好ましいことを決定する動作210を備えることを示している。動作210は、複数の通信メカニズムのうちの少なくとも1つの初期の通信メカニズムが、複数の通信メカニズムのうちの別の通信メカニズムよりも好ましいことを自動的に決定することを含んでいる。例えば、スマート・トランシーバ150aは、ユーザがランドライン接続されたコンピュータ・システム(land-line-connected computer system)の所に存在するなどの、ピア115におけるユーザに関するプレゼンス情報を識別する。したがって、他の関連した任意のファクタ(例えば、近接度、ネットワーク・ロケーション、関連したアプリケーション、日時など)に基づいて、スマート・トランシーバ150aは、HTTP通信メカニズム133が、例えばSMS通信メカニズム133よりも適切であることを決定する。
【0053】
図4はまた、本方法が、少なくとも1つの初期の通信メカニズムを選択する動作220を備えることを示してもいる。動作220は、少なくとも1つの初期の通信メカニズムを自動的に選択することを含んでいる。例えば、HTTP通信メカニズム133がより適切であることを決定するとすぐに、スマート・トランシーバ150aは、HTTP通信メカニズム133を使用してピア100におけるアプリケーションと、ピア115におけるアプリケーションとの間に通信チャネルを作成する。代わりに、SMS通信メカニズム137が、その後になってより適切である場合には、スマート・トランシーバ150aは、HTTP通信メカニズム133のために最初に作成された通信チャネルのキャッシュを取得し、それをSMS通信メカニズム137に対して適用することもある。
【0054】
さらに、図4は、本方法が、少なくとも1つの選択された通信メカニズムを使用してメッセージングを送信する動作230を備えることを示している。動作230は、少なくとも1つの選択された初期の通信メカニズムを使用して受信ピアのコンピュータ・システムに対してメッセージを送信することを含んでいる。例えば、ピア100におけるアプリケーション155は、ピア115における対応するアプリケーション(図示されず)に対して、HTTP通信メカニズム133を使用して作成される通信チャネルを介してメッセージ140を送信する。しかしながら、通信チャネルの詳細は、そのアプリケーション・レイヤ(application layer)それ自体から抽出(abstract)され、スマート・トランシーバ・コンポーネント150aによって処理される。それ故に、内在する通信メカニズム(underlying communication mechanism)が変化する場合、アプリケーションは、この変化について事実上気付かず、単にスマート・トランシーバ150aによって確立された通信チャネルを介してメッセージを送信する。
【0055】
図5は、ネットワーク・ネームスペース(network namespace)内のピア・グループ通信のための、本発明の態様による代替方法を示している。とりわけ、図5は、本方法が、第1のネームスペースに関連付けられた第1のピア・グループを識別する動作300を備えることを示している。動作300は、第1のネームスペースに関連付けられた第1のピア・グループの1つまたは複数のピアを識別することを含んでいる。例えば、ピア100は、ピア105、110、115、および120を含む、ピアの「グループA」を識別し、グループAが、ネームスペース160に関連することを識別する。したがって、グループAに参加することは、ネームスペース160に参加することを包含することになることが理解される。
【0056】
さらに、図5の方法は、第1のネームスペースに対してグループ参加メッセージを送信する動作310を備える。動作310は、第1のネームスペースに対してグループ参加要求メッセージを送信することを含んでいる。例えば、ピア100は、グループ参加要求メッセージ(図示されず)をネームスペース160に対して送信する。次いで、このメッセージは、ピア・ノード105やピア・ノード110など、要求を処理するためのネームスペース内の最も適切なピア・ノードによって処理される可能性があり、このピア・ノードは、グループ・リスト(すなわち、130aまたは130b)の少なくとも一部分のハッシュを記憶する。
【0057】
さらに、図5は、本方法が、第1のネームスペースからメンバシップの確認を受信する動作320を備えることを示している。動作320は、そのピアが、第1のピア・グループのメンバシップ・リストに追加されるなどの、第1のピア・グループ内のメンバシップが受け入れられたという第1のネームスペースからの確認を受信することを含んでいる。例えば、「グループA」メンバシップのハッシュ・テーブル(103a)の少なくとも一部分を記憶しているピア・ノード105は、ネームスペース160の代わりにピア100に対してメンバシップが受け入れられたことを応答する。類似したラインに沿って、ピア・ノード110は、「グループB」を追加するためにネームスペース160に代わってネームスペース163に対してグループ参加要求メッセージを送信する。次いで、「グループB」内の(それ故に、ネームスペース163の)ノードであるピア125は、ピア・ノード110に対して確認で応答し、それ故、グループAとグループBとの間のネームスペース・ブリッジの構築を許可する。代わりに、このグループ参加要求の受け入れは、ピア110がグループBのメンバシップを問い合わせるためのビークル(vehicle)を提供し、グループAについてのハッシュ・テーブル130bのリスト内の各グループBのピア・メンバについてのURIを含む可能性もある。
【0058】
図6は、一つまたは複数の配信制約条件に基づいてピア・グループ内の1つまたは複数のピアの間でのピア・メッセージの通信を最適化するための、本発明の一実装形態による別の代替方法を示している。とりわけ、図6は、本方法が、1つまたは複数の配信制約条件を指し示すピア・メッセージを受信する動作400を備えることができることを示している。動作400は、発信元のピアから、少なくとも1つのピア・ツー・ピア通信チャネルを介して、1つまたは複数の配信制約条件を指し示すピア・メッセージを受信することを含んでいる。例えば、ピア100は、メッセージ103を送信し、このメッセージは、「1つの応答だけ」が必要とされるという制約条件を含んでいる。同様に、ピア100は、メッセージ113を送信し、これは、このメッセージがグループAの「任意の1つ」に対して送信されるように制約する。
【0059】
図6は、本方法が、セントラル・トラッキング・オブジェクトを参照する動作410を備えることも示している。動作410は、少なくとも1つまたは複数のピアが、ピア・メッセージを受信していること、および発信ピアがピア・メッセージを送信したこと、を指し示すセントラル・トラッキング・オブジェクトを参照することを含んでいる。例えば、ピア105は、メッセージ(図1A)を受信し、セントラル・トラッキング・オブジェクト145(図2)を調べて、メッセージ103がピア100によって送信されているにすぎず、まだピア105以外のどのピアにも受信されてはいないことを決定する。セントラル・トラッキング・オブジェクト145は、メッセージ103が、HTTP通信メカニズム133を経由して送信されているにすぎないことも指し示すことができる。
【0060】
さらに、本方法は、1つまたは複数の配信制約条件を評価する動作420を備える。動作420は、ピア・メッセージについての1つまたは複数の配信制約条件を評価することを含んでいる。例えば、ピア105は、メッセージが1つの応答を必要とするにすぎないという、メッセージ103内の制約条件を識別する。さらに、ピア105は、セントラル・トラッキング・オブジェクト145から、他のピアがまだメッセージ103に対する応答を供給していないことを識別する。同様に、ピア105は、セントラル・トラッキング・オブジェクト145から、メッセージ113を受信すべき他のピアが、まだメッセージ113を受信していないことを識別する。代わりに、ピア105は、メッセージ113に対して応答することができる他のピアが、まだメッセージ113を受信していないことを識別することもある。
【0061】
したがって、図6はさらに、本方法が、ピア応答メッセージを送信する動作430を備えることを示している。動作430は、セントラル・トラッキング・オブジェクトから参照される表示に基づいて、および、発信ピアの配信意図が保全されるなどの、1つまたは複数の配信制約条件の評価に基づいて、ピア応答メッセージを送信することを含んでいる。例えば、ピア105は、応答107をピア100に対して送信し、このアクションをセントラル・トラッキング・オブジェクト145(例えば、図2)に登録する。したがって、ピア105によって受信されるメッセージ103に対する他の任意の応答107は、少なくともピア・ノード105、ならびにセントラル・トラッキング・オブジェクト145に対するアクセス権を有する他の任意のピアによってドロップさせられることになる。同様に、ピア105は、ピア105が、グループAのうちの「任意の1つ」に対してアドレス指定されているメッセージ113を受信したことを表す印をセントラル・トラッキング・オブジェクト145に登録する。したがって、メッセージ113のコピーをうっかりして受信する、グループA内の他の任意のピアは、そのメッセージをドロップし、あるいは単に応答することを回避することができる。
【0062】
したがって、本発明の実装形態は、ピア・ツー・ピア通信システムについてのいくつかの利点および最適化を提供する。本発明の範囲内の実施形態および/または実装形態はまた、コンピュータ実行可能命令またはデータ構造を搬送し、あるいは記憶するためのコンピュータ読取り可能媒体も含んでいる。そのようなコンピュータ読取り可能媒体は、汎用コンピュータまたは専用コンピュータによってアクセスされることができる使用可能な任意の媒体とすることができる。
【0063】
一例として、限定するものではないが、そのようなコンピュータ読取り可能媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク・ストレージ、磁気ディスク・ストレージまたは他の磁気ストレージ・デバイス、あるいはコンピュータ実行可能命令またはデータ構造の形態で望ましいプログラム・コード手段を搬送し、または記憶するために使用されることができ、また汎用コンピュータまたは専用コンピュータによってアクセスされることができる他の任意の媒体を備えることができる。情報が、ネットワークまたは別の通信接続(ハード・ワイヤード、ワイヤレス、あるいはハード・ワイヤードまたはワイヤレスの組合せのいずれか)の上でコンピュータに対して転送され、あるいは供給されるときに、コンピュータは、適切にその接続をコンピュータ読取り可能媒体と見なす。したがって、そのような任意の接続は、適切にコンピュータ読取り可能媒体と名付けられる。以上についての組合せもまた、コンピュータ読取り可能媒体の範囲内に含められるべきである。
【0064】
コンピュータ実行可能命令は、例えば汎用コンピュータ、専用コンピュータ、または専用処理デバイスが、ある種のファンクションまたはファンクションのグループを実行するようにさせる命令およびデータを備える。本発明は、構造的機能(structural features)および/または方法論的な動作(methodological acts)に特有の言語で説明されているが、添付の特許請求の範囲の中で定義される主題は、必ずしも上記の特定の機能または動作だけに限定されるとは限らないことが理解されるべきである。そうではなくて、上記の特定の機能および動作は、特許請求の範囲を実装する例示の形態として開示されている。
【0065】
本発明は、その趣旨または本質的な特徴を逸脱することなく、他の特定の形態で実施されることもできる。説明された実施形態は、すべての点において、例示としてのみであり、および限定的でないものと考えられるべきである。本発明の範囲は、したがって前述の説明によってではなく、添付の特許請求の範囲によって指し示される。特許請求の範囲と同等の意味および範囲内に含まれるすべての変更は、それらの範囲内に包含されるべきである。

【特許請求の範囲】
【請求項1】
1または複数の他のピアのピア・グループとピアがメッセージを通信するピア・ツー・ピア通信システムにおけるピアコンピュータシステムで、1または複数の配信制約に基づいて前記ピア・グループの1または複数のピアの間でピア・メッセージの通信を最適化する方法であって、該方法は、
発信ピアからピア・ツー・ピア通信ネットワークを経由してピア・メッセージを受け取るピアコンピュータシステムであって、前記ピア・メッセージは、メッセージの発信ピアの配信のメッセージ配信意図を示す1つまたは複数の配信制約を含み、
中央トラッキングオブジェクトを参照することであって、前記中央トラッキングオブジェクトは、ピア・グループ内のピアの間のアノーテーションを送受信するメッセージを共有化し、アノーテーションを送受信することは、アノーテーションを送受信することがピア・メッセージの1または複数の配信制約に関連するように以前にピア・メッセージを送受信されたピアのいくつかを示し、中央トラッキングオブジェクトは、中央トラッキングオブジェクトの少なくとも部分が他のピアとメッセージアノーテーションを送受信することを伝搬することを他のピアと共有可能であるように、ピアコンピュータシステムにおいて、指定された共有区分の少なくとも部分にストアされ、
中央トラッキングオブジェクトからピア・メッセージについてのアノーテーションを送受信することにアクセスすることと、
アクセスされたピア・メッセージについてのアノーテーションの送受信に基づいて、ピア・メッセージについての1または複数の配信制約を評価することと、
配信制約評価に基づいて、メッセージについての発信元のピアの配信意図を保全するためには、あれば、どのようなピア・メッセージがさらに配信されるべきか決定することと、を含む、ことを特徴とする方法。
【請求項2】
1つまたは複数の配信制約は、ピア・メッセージの配信をピア・グループの単一のピアに限定することによって、資源を維持するように、ピア・グループ内の1つまたは複数のピアのいずれかの1つにピア・メッセージを配信する配信意図を含む、ことを特徴とする請求項1に記載の方法。
【請求項3】
ピア・メッセージについてのアノーテーションの送受信へのアクセスに基づいて、ピア・メッセージについての1または複数の配信制約を評価することは、ピア・メッセージがピア・グループの1つまたは複数のピアのうちの異なる1つにすでに配信されたことを中央トラッキングオブジェクトから識別することを含み
あれば、どのようなピア・メッセージがさらに送信されるべきか決定することは、ピア・メッセージが廃棄されるべきであることを決定することと、ピア・グループの1つまたは複数のピアのいずれかの1つにピア・メッセージを配信する配信意図を保全するピア・メッセージを廃棄することを含む、ことを特徴とする請求項2に記載の方法。
【請求項4】
1つまたは複数の配信制約は、ピア・メッセージに対して生成されるメッセージの数を制限することによって、資源を維持するように、1つのピアに、メッセージを受信する何れのピアの間から、ピア・メッセージに対して応答させる配信意図を含む、ことを特徴とする請求項1に記載の方法。
【請求項5】
ピア・メッセージについてのアノーテーションへの送受信のアクセスに基づいて、ピア・メッセージについての1つまたは複数の配信制約を評価することは、ピア・グループ内の1つまたは複数のピアのいずれからも何の応答もないことを中央トラッキングオブジェクトから識別することを含み、
あれば、どのようなピア・メッセージがさらに配信されるべきか決定することは、ピア応答メッセージが送信されるべきことを決定することを含み、さらに、
ピア応答メッセージを送信することと、
ピアコンピュータがピア・メッセージへの応答を送信したことを中央トラッキングオブジェクト内にエントリ登録することを含む、ことを特徴とする請求項4に記載の方法。
【請求項6】
中央トラッキングオブジェクトは、ピア・グループ内の1つまたは複数のピアの全てに亘って共有化されている、ことを特徴とする請求項1に記載の方法。
【請求項7】
ピア・グループ内の1つまたは複数のピアに送信されるべきと意図されていることを示す中央トラッキングオブジェクトをエントリ登録することをさらに含む、ことを特徴とする請求項1に記載の方法。
【請求項8】
ピア・グループ内の1つまたは複数のピアから異なるピア・メッセージを受信することをさらに含み、異なるピア・メッセージは1つまたは複数のピアのいずれかにそれが送信されるべきことを示す、ことを特徴とする請求項1に記載の方法。
【請求項9】
異なるピア・メッセージが1または複数のピアのいずれかによって受信されたことを中央トラッキングオブジェクトから識別することと、
異なるピア・メッセージを処理することと、をさらに含む、ことを特徴とする請求項8に記載の方法。
【請求項10】
ピア・メッセージについての1つまたは複数の配信制約を評価することは、中央トラッキングオブジェクトで登録エントリを識別することを含み、登録エントリは異なるピア・メッセージが1つまたは複数のピアのうちの少なくとも1つによってすでに受信されたことを示し、メッセージがすでに受信されたことの示唆に応答して異なるピア・メッセージを廃棄することをさらに含む、ことを特徴とする請求項8に記載の方法。
【請求項11】
ピア・グループ内の1つまたは複数のピアのうちの1つから異なるピア・メッセージを受信することを含み、異なるピア・メッセージはピア・グループ内の1つまたは複数のピアからたった1つの応答を要求していることを示す、ことを特徴とする請求項1に記載の方法。
【請求項12】
ピア・メッセージについての1つまたは複数の配信制約を評価することは、1つまたは複数のピアのいずれかによって異なるピア・メッセージに応答して答えが送信されたことを示す登録エントリがないことを中央トラッキングオブジェクトから識別することを含み、さらに、
異なるピア・メッセージについての応答を送信することと、
応答が異なるピア・メッセージにについて送信されたことを示す中央トラキングオブジェクトの形態でエントリ登録することを含む、ことを特徴とする請求項11に記載の方法。
【請求項13】
ピア・メッセージについての1つまたは複数の配信制約を評価することは、1つまたは複数のピアのうちのいずれか1つによって異なるピア・メッセージに応答して答えが送信されたことを示す登録エントリがある1つまたは複数のピアの一方によって、所有される中央トラッキングオブジェクトまたは異なる中央トラッキングオブジェクトから識別することを含み、さらに、
異なるピア・メッセージを廃棄することを含む、ことを特徴とする請求項11に記載の方法。
【請求項14】
ピア・グループ内で1または複数のピアが1つまたは複数の他のピアとメッセージを通信するピア・ツー・ピア通信システム内のピアコンピュータにおいて、ネットワーク名前空間内のピア・グループ通信を管理する方法であって、
ピア・ツー・ピア通信システム内で関連する1つまたは複数のピアの第1のピア・グループを識別することと、第1のピア・グループは名前空間が階層フォーマットで名前空間のセットを識別する第1の名前空間と関連付けられており、
第1の名前空間にグループ参加リクエストメッセージを送信することと、
ピアが第1のピア・グループのメンバシップ・リストに追加され、ピアが第1の名前空間に会員登録されるように、ピアが第1の名前空間に第1のピア・グループ内のメンバシップが受け入れられたという名前空間からの確認メッセージを受信することとを含み、
第1のピア・グループのメンバシップ・リストは、1つまたは複数のピアと、第2の名前空間と関連付けられ、1つまたは複数のピアからなる第2のピア・グループの識別子とを含み、第1のピア・グループに送信されるメッセージは、メンバリップリストの各メンバに転送されることによって、第1のピア・グループの1つまたは複数のピアの各々と第2のピア・グループの1つまたは複数のピア各々とがメッセージを受信する、ことを特徴とする方法。
【請求項15】
ピア・メッセージを第1の名前空間に発行することによって第1のピア・グループにピア・メッセージを送信することをさらに含む、ことを特徴とする請求項14に記載の方法。
【請求項16】
ピアコンピュータにおいて、第1のグループに対してメンバシップ・リストの少なくとも一部をストアすることと、
第2のピア・グループに関連する第2の名前空間にグループ参加要求メッセージを送信することとをさらに含む、ことを特徴とする請求項14に記載の方法。
【請求項17】
第2のピア・グループ内のメンバシップが受け入れられた第2の名前空間から新しい確認メッセージを受信することと、
第2のピア・グループについてのメンバシップ・リストに第1のピア・グループを追加することとをさらに含む、ことを特徴とする請求項16に記載の方法。
【請求項18】
第1の名前空間と第2の名前空間の間の名前空間ブリッジを作成することによって第1の名前空間に送信されたピア・メッセージが第2の名前空間に自動的につなげられることをさらに含む、ことを特徴とする請求項17に記載の方法。
【請求項19】
ピアコンピュータはピア・ツー・ピアコンピュータシステム内のノードであり、メンバシップ・リストの少なくとも一部がピアコンピュータのハッシュテーブルにストアされる、ことを特徴とする請求項17記載の方法。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−146312(P2012−146312A)
【公開日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願番号】特願2012−26533(P2012−26533)
【出願日】平成24年2月9日(2012.2.9)
【分割の表示】特願2008−549492(P2008−549492)の分割
【原出願日】平成18年12月19日(2006.12.19)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】