(58)【調査した分野】(Int.Cl.,DB名)
ピアツーピアネットワークの第1のノードにより、ピアツーピアネットワークに関連付けられる1つまたは複数の他のノードに、コンテンツを求める要求と、第1のノードによってコンテンツが受信されるべきときに関する締切りとを含む第1のメッセージを送信することであって、第1のメッセージが複数のフィールドを有するデータパケットを含み、複数のフィールドがコンテンツを求める要求を示す第1のフィールドと締切りを示す第2のフィールドとを含むこと、
第1のノードにより、複数のノードの第2のノードから、第2のノードが要求されたコンテンツを有しない場合、要求されたコンテンツについての情報を有する複数のノードの少なくとも1つの他のノードのリストを含む第2のメッセージを受信することであって、リストが要求されたコンテンツの論理識別子に基づき、
締切りが過ぎていない場合、第2のメッセージのリストが、少なくとも1つの基準によりフィルタリングされたリストであり、
締切りが過ぎている場合、第2のメッセージのリストがフィルタリングされていないリストであることを含む、方法。
第1のノードにより、1つまたは複数の他のノードのうちの1つである第2のノードから、第2のノードがコンテンツの少なくとも一部を有することを示す第2のメッセージを受信すること、および
第1のノードにより、第1のノードにコンテンツを送信するように第2のノードに要求する第3のメッセージを第2のノードに送信すること
をさらに含む、請求項1に記載の方法。
ピアツーピアネットワークの第1のノードにより、ピアツーピアネットワークに関連付けられる第2のノードから、コンテンツを求める要求と、コンテンツを受信すべきときに関する締切りとを含む第1のメッセージを受信することであって、第1のメッセージが複数のフィールドを有するデータパケットを含み、複数のフィールドがコンテンツを求める要求を示す第1のフィールドと締切りを示す第2のフィールドとを含むこと、
第1のノードが要求されたコンテンツを有しない場合、要求されたコンテンツについての情報を有するピアツーピアネットワークに関連付けられる少なくとも1つの他のノードのリストを含む第2のメッセージを送信することであって、リストが要求されたコンテンツの論理識別子に基づき、
締切りが過ぎていない場合、第2のメッセージのリストが、少なくとも1つの基準によりフィルタリングされたリストであり、
締切りが過ぎている場合、第2のメッセージのリストがフィルタリングされていないリストであることを含む、方法。
【背景技術】
【0002】
ピアツーピアファイル共有ネットワークのいくつかのバージョンは、ネットワーク内の利用可能なコンテンツのすべてを列挙するために、ネットワーク要素の集中型コンピュータまたはネットワークに依拠する。他のピアツーピアファイル共有ネットワークは、ネットワークの利用可能なコンテンツのすべてを列挙するために、集中型構成要素に依拠しない。むしろ、コンテンツ自体が配布されるときにディレクトリが配布される。すべての参加クライアント上にディレクトリデータベースを配布するのに使用される技法は、分散ハッシュテーブル(DHT)と呼ばれることがある。
【0003】
ネットワークが集中型ネットワークであっても、DHTを使用するネットワークであっても、各ピアは、コンテンツがそこから共有されるピアの局所性とは無関係に、一方のピアから別のピアにコンテンツをダウンロードする。その結果、ピアが別のピアのコンピュータ上に含まれるファイルを要求する場合、ファイルを要求するピアから遠く離れた、ファイルを含むコンピュータの位置が特定されることがある。この結果、ファイル転送遅延が生じるだけではなく、ピア間のリンクが1つまたは複数のインターネットサービスプロバイダ(ISP)を通らなければならないので、コストが増加する。したがって、そのようなピアツーピア型の接続は、ISPを互いにリンクするトランジットリンク上で大量のトラフィックを生み出す可能性があり、それによってネットワークオペレータに対するコストが増加する。
【0004】
例えば、人気のコンテンツファイルがあり、このファイルをコンピュータ上に有する10,000人のユーザが世界中にいると仮定する。そうした10,000人のユーザのうちの50人の位置を所与のISP「A」内に特定できると仮定する。ISP「A」内のピアが人気のファイルに興味があり、ファイルをそこからダウンロードするための50個のランダムなピアに関する、集中型ディレクトリまたはDHT型ディレクトリのいずれかのディレクトリを要求すると仮定する。そのような場合、ISP「A」内の単一のピアを見つける可能性は0.5%である。ファイルを有する50個のピアが要求側ピアに対してランダムに識別される場合、すべての50個のピアがISP「A」内にある可能性はゼロに近い。
【0005】
そのようなシナリオでは、ファイルを要求するピアと同一のISP内に十分な数のピアがあるが、ピアが結局は要求側ピアのISPの外部に位置するピアからファイルを受信することになる可能性がある。これにより、ISP間のトランジットリンク上で不必要なトラフィックが必要となる。
【0006】
図1に、集中型ピアツーピアシステム10の略図を示す。集中型ピアツーピアシステム10は、ピアおよび/またはノード12とも呼ばれるコンピュータ12と、中央コンピュータ14とを含む。ピアおよび/またはノード12は、接続16を介して中央コンピュータ14に接続される。接続16は、ワイヤレス接続、イーサネット(登録商標)接続、または任意の適切な接続ハードウェアまたは方法の組合せなどの任意の適切な接続でよい。
【0007】
ピアツーピアシステム10は4つのピアおよび/またはノード12と単一の中央コンピュータ14だけを示すが、ピアツーピアシステムは、図示するピアおよび/またはノード12の数と、単一の中央コンピュータ14の中央ネットワーク構成要素に限定されないことを理解されたい。実際に、ピアツーピアシステム10は、より多数のピアおよび/またはノード12を含むことができ、多数のコンピュータ、サーバ、または他の構成要素が、図示する中央コンピュータ14のタスクを実施することができる。
【0008】
図1に示す集中型ピアツーピアシステム10では、ピアおよび/またはノード12がコンテンツまたはファイルを要求するとき、要求が、接続16を介して集中型コンピュータ14に送られる。要求を送ることは、ピアツーピアネットワークでよく知られている。
【0009】
集中型コンピュータ14は、どのピアおよび/またはノード12が要求されたコンテンツを有するかを判定し、どのピアおよび/またはノード12が要求されたコンテンツを有するかに関する情報で要求に応答することができる。集中型コンピュータ14は、要求されたコンテンツを有するいくつかのピアおよび/またはノード12を識別し、複数の識別したピアおよび/またはノード12に関する情報で応答することができる。1つのピアおよび/またはノード12あるいは複数のピアおよび/またはノード12が識別されると、要求側ピアは、識別されたピアのうちの1つから、要求したファイルを受信することができる。
【0010】
集中型コンピュータ14は、トランジットリンクを介して送信される多量のデータを低減するために、要求側ピアに対して識別すべき要求されたコンテンツを含む可能性があるのは多数のピアおよび/またはノード12の中のどのピアおよび/またはノード12であるかの判定を行うことができる。こうした判定を行って、ピアツーピアトラフィックを位置特定することができる。この判定を以下でより詳細に説明する。
【0011】
例えば、ピアツーピアネットワークのための1つの良く知られているファイル共有システムは、BitTorrent Inc.に対して登録されたBITTORRENT TMとして知られている。ピアを発見するためにBITTORRENTファイル共有システムが使用する機構は、P2Pネットワークの構造、したがってデータ配布に影響を及ぼす。したがって、BITTORRENTファイル共有システムでのピア発見の知識は、トラフィック位置特定の明白な理解にとって根本的である。BITTORRENTファイル共有システムは、ピアを発見し、ファイル交換を調整するために、トラッカまたは中央サーバ(例えば、集中型コンピュータ14)を利用する。ピアは、ウェブからダウンロードするトレント内のトラッカのアドレスを取り出す。「.torrent」は、ファイル交換のための有用な情報を含むメタデータファイルである。
【0012】
当初、ピアは、トラッカと連絡を取り、ファイルまたはその一部を保持するピアのリストを取り出す。トラッカは、一般に50個のピアで構成されるアクティブなピアのランダムなサブセットである、ピアリストで回答する。その後で、ピアは、ピアがダウンロードまたはアップロードしたバイトの量についての情報を送るために、トラッカと定期的に対話する。それに応答して、トラッカは、ピアに新しいピアリストを送る。クライアントとトラッカとの間の通信の頻度は、トラッカ応答内に含まれるmin intervalフィールドを介して、トラッカによって調整される。一般に、min intervalフィールドは15分に設定される。
【0013】
上記で示したように、ピアリストは、アクティブなピアのランダムなサブセットである。ピアリストは、ネットワーク(例えば、インターネットサービスプロバイダネットワーク(ISP)ネットワーク)内のピアの位置特定を決して含まない。位置特定のためにトラッカまたは中央サーバ(例えば、集中型コンピュータ14)を活用するためのいくつかの取組みが行われてきた。しかし、こうした取組みは本開示の範囲外にある。
【発明を実施するための形態】
【0018】
こうした図は、いくつかの例示的実施形態で使用される方法、構造、および/または材料の一般的特性を示し、以下の文面で与える説明を補足することを意図することに留意されたい。しかし、こうした図面は原寸に比例せず、所与の実施形態の厳密な構造的特性または性能特性を厳密に反映しないことがあり、例示的実施形態によって包含される値または特性の範囲を定義または限定するものとして解釈すべきではない。例えば、図が見やすいように、分子、層、領域、および/または構造的要素の相対的厚さおよび配置が縮小または誇張されることがある。様々な図面での同様または同一の参照番号の使用は、同様または同一の要素または特徴の存在を示すことを意図する。
【0019】
例示的実施形態は、様々な修正形態および代替形態が可能であるが、本発明の実施形態が例として図面に示され、本明細書で詳細に説明される。しかし、開示する特定の形態に例示的実施形態を限定する意図はなく、むしろ例示的実施形態は、特許請求の範囲内に含まれるすべての修正形態、均等物、および代替形態を包含すべきであることを理解されたい。図の説明全体にわたって、同様の番号は同様の要素を指す。
【0020】
例示的実施形態をより詳細に論じる前に、流れ図として示すプロセスまたは方法としていくつかの例示的実施形態を説明することに留意されたい。流れ図は動作を順次プロセスとして説明するが、動作の多くは、並列または同時に実施することができる。さらに、動作の順序を再構成することができる。プロセスの動作が完了したとき、プロセスを終了することができるが、プロセスは、図に含まれない追加のステップも有することができる。プロセスは、方法、関数、手続き、サブルーチン、サブプログラムなどに対応することができる。
【0021】
その一部を流れ図で示す、以下で論じる方法は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せで実装することができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装するとき、必要なタスクを実施するためのプログラムコードまたはコードセグメントが、記憶媒体などの機械またはコンピュータ可読媒体に格納される。プロセッサは必要なタスクを実施する。
【0022】
本明細書で開示する特定の構造的および機能的詳細は、本発明の例示的実施形態を説明するための代表例に過ぎない。しかし、多数の代替形態で本発明を実施することができ、本発明を本明細書に記載の実施形態だけに限定されると解釈すべきではない。
【0023】
様々な要素を説明するために第1、第2などの用語が本明細書で使用されることがあるが、こうした要素は、こうした用語によって限定されるべきではないことを理解されよう。こうした用語は、ある要素を別の要素と区別するために使用されるに過ぎない。例えば、例示的実施形態の範囲から逸脱することなく、第1の要素を第2の要素と呼ぶことができ、同様に、第2の要素を第1の要素と呼ぶことができる。本明細書では、「および/または」という用語は、関連する列挙される項目のうちの1つまたは複数のありとあらゆる組合せを含む。
【0024】
要素が別の要素に「接続」または「結合」されると呼ばれるとき、要素を別の要素に直接的に接続または結合することができ、あるいは介在する要素が存在することがあることを理解されよう。一方、要素が別の要素に「直接的に接続される」または「直接的に結合される」と呼ばれるとき、介在する要素は存在しない。要素間の関係を記述するために使用される他の語は同様に解釈されるべきである(例えば、「の間(between)」と「直接的に...の間(directly between)」、「隣接する(adjacent)」と「直接的に隣接する(directly adjacent)」など)。
【0025】
本明細書で使用される用語は、特定の実施形態を説明するためのものに過ぎず、例示的実施形態の限定ではないものとする。本明細書では、単数形「a」、「an」、および「the」は、文脈が別段に明白に示すのでない限り、複数形も含むものとする。「備える」および/または「含む」という用語は、本明細書で使用されるとき、記載の特徴、整数、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を除外しないことをさらに理解されよう。
【0026】
いくつかの代替実装では、記載の機能/動作が、図に記載の順序とは異なる順序で行われることがあることにも留意されたい。例えば、連続して示す2つの図が、関係する機能/動作に応じて、実際には同時に実行されることがあり、またはあるときには、逆の順序で実行されることがある。
【0027】
別段の定義がない限り、本明細書で使用するすべての用語(技術的用語および科学的用語を含む)は、例示的実施形態が属する技術分野の技術者が一般的に理解するのと同じ意味を有する。用語、例えば一般的に使用される辞書で定義される用語は、関連技術分野の文脈での意味と一貫した意味を有すると解釈すべきであり、本明細書で明白に定義されるのでない限り、理想化した意味または過度に正式な意味には解釈されないことをさらに理解されよう。
【0028】
例示的実施形態の部分、および対応する詳細な説明は、ソフトウェア、またはコンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現によって提示される。こうした説明および表現は、当業者がそれによって自分の研究の内容を他の当業者に効果的に伝達するものである。アルゴリズムとは、その用語がここで使用されるとき、および一般的に使用されるとき、所望の結果が得られる首尾一貫したステップのシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするものである。通常、必須ではないが、こうした量は、格納、転送、結合、比較、あるいは操作することのできる光学的、電気的、または磁気的信号の形態を取る。主に一般的な使用法のために、こうした信号をビット、値、要素、シンボル、文字、用語、数などとして参照することが時には好都合であることが示されている。
【0029】
以下の説明では、特定のタスクを実施し、または特定の抽象データタイプを実装し、既存のネットワーク要素で既存のハードウェアを使用して実装されるルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムモジュールまたは機能プロセスとして実装することのできる(例えば、流れ図の形の)動作および操作の記号表現を参照しながら例示的実施形態が説明される。そのような既存のハードウェアは、1つまたは複数の中央演算処理装置(CPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路、フィールドプログラマブルゲートアレイ(FPGA)コンピュータなどを含むことができる。
【0030】
しかし、こうした用語および類似の用語のすべては適切な物理量と関連付けられるべきであり、こうした量に適用される好都合なラベルに過ぎないことに留意されたい。別段の記述がない限り、または議論から明らかなように、「表示」の「処理」または「コンピューティング」または「計算」または「決定」などの用語は、コンピュータシステムのレジスタおよびメモリ内の物理的な電子量として表されるデータをコンピュータシステムメモリまたはレジスタまたは他のそのような情報記憶装置、情報送信装置、または情報表示装置内の物理量として同様に表される他のデータに操作および変換するコンピュータシステムまたは類似の電子コンピューティング装置のアクションおよびプロセスを指す。
【0031】
例示的実施形態のソフトウェアで実装された態様は通常、何らかの形態のプログラム記憶媒体上に符号化され、または何らかのタイプの伝送媒体を介して実装されることにも留意されたい。プログラム記憶媒体は、磁気式(例えば、フロッピィディスクまたはハードドライブ)または光学式(例えば、コンパクトディスク読取り専用メモリすなわち「CD−ROM」)でよく、読取り専用またはランダムアクセスでよい。同様に、伝送媒体は撚線対、同軸ケーブル、光ファイバ、または当技術分野で知られている何らかの他の適切な伝送媒体でよい。例示的実施形態は、いかなる所与の実装のこうした態様によって限定されない。
【0032】
「ピア」および「ノード」という用語は、本開示全体を通して互換的に使用される。一般に、ピアは、ピアツーピアネットワーク内の物理的ハードウェアを指す。ピアはノードでもよい。しかし、ノードはより一般に、例えばピアツーネットワーク内のファイル位置(例えば、アドレスまたはテーブル内の参照)の論理的インスタンスも指す。
【0033】
図2は、例示的実施形態によるピアツーピアネットワーク18の略図である。
図2に示すピアツーピアネットワーク18では、中央コンピュータ14はない。図示していないが、ピア40が互いへの接続によって接続されることを理解されたい。
【0034】
図2に、ピアツーピアファイル共有ネットワーク18を示す。
図2のネットワーク18は、ネットワークコンテンツを列挙するために集中型構成要素に依拠せず、むしろ、分散ハッシュテーブル(DHT)19を使用して、すべての参加クライアントにディレクトリデータベースを配布する。
図2では、DHT19は、ネットワーク18のすべての側面を互いに接続する破線として表される。
【0035】
ファイル共有ネットワーク18は、第1のインターネットサービスプロバイダ(ISP)24および第2のISP26を含む。ISP24内には様々なクライアントがあり、クライアントは、ピア、ノード、またはユーザ40とも呼ばれることがある。様々なクライアント、ピア、またはユーザは、参照番号の後ろに文字を追加することにより、同一のISP上の他のピアの間で区別される。
【0036】
様々なピア42を有する第2のISP26も示されている。第1のISP24と第2のISP26は、ピアリングリンク28を介して互いに接続することができる。
【0037】
インターネット全体22が
図2に示されている。トランジットリンク30によってインターネット全体22にISP24を接続することができる。トランジットリンク30はまた、インターネット全体22にISP26を接続することもできる。インターネット全体22上で位置が特定されるピアは、参照番号44によって識別される。ピア40および42と同様に、インターネット全体22上のピア44は、少なくとも1つのISPに関連付けられる。しかし、インターネット全体22上のピア44に関連付けられるISPは図示されていない。
【0038】
異なるISP24、26に関連付けられるピア40、42、44間でファイルを共有するのに必要なリソース(例えば、ピアリングリンク28またはトランジットリンク30)の量のために、可能ならいつでも、異なるISP上に位置が特定されるピア間でファイルを共有するのではなく、特定のISP内のピアに互いの間でファイルを共有させることが好ましい。
【0039】
矢印32は、ピア40a、40b、および40dが互いの間でファイルを共有する、好ましいファイル共有の方式を示す。ピア40a、40b、および40dのすべては、ISP24上に位置が特定される。ISP24内に位置が特定されるピア40が、やはりISP24上に位置が特定されるどんなピアによっても含まれないファイルを要求する何らかの状況が生じることがある。したがって、要求されたコンテンツを得るために、ピア40は、ISP26またはインターネット全体22のどちらかに位置が特定されるユーザからコンテンツを得なければならない。
【0040】
図3は、様々なISP24、26、インターネット全体22、およびネットワーク構成要素(コンピュータ、またはネットワーク要素とも呼ばれる)を示す略図である。
図2に関して上記で示したように、ネットワーク全体にわたってネットワーク要素45を分散させることができる。例えば、集中型コンピュータ14を有さないが、DHT19を使用するファイル共有ネットワーク18などのピアツーピアファイル共有ネットワークでは、ファイル共有ネットワーク全体にわたってコンピュータまたはネットワーク要素45を分散させることができる。あるいは、接続46を介してネットワーク要素45を単に様々なISP24および26、ならびにインターネット全体22に接続することができる。
【0041】
図3に示すように、ネットワーク要素45は、接続50を介してデータベース52に接続される1つまたは複数のマイクロプロセッサ48を含むことができる。接続55を介してネットワーク要素45を別のデータベース53に動作可能に接続することもできる。データベース53は検索可能とすることができ、以下でより詳細に説明するように、どのISPが所与のピアに関連付けられるかなどの情報をネットワーク要素45に提供することができる。
【0042】
本発明のいくつかの実施形態では、ネットワーク要素45は、ネットワークに接続された既存のシステム構成要素でよい。本明細書に記載の機能を実施するように既存のネットワーク要素45をプログラムすることができる。例えば、既存のネットワークは、本明細書に記載の機能を実施するようにプログラムされたネットワーク構成要素を含むことができる。別の実施形態では、(既存のネットワーク構成要素ではなく)ネットワーク要素45をネットワークに追加し、本明細書に記載の機能を実施するようにネットワーク要素45を構成することができる。
【0043】
ピアおよびノードという用語が以下で互換的に使用される。通常、ピアという用語は、ピアツーピアネットワーク内の物理的エンティティ(例えば、コンピューティング装置)を指す。通常、ノードという用語は、ピアツーピアネットワーク内の論理的エンティティ(例えば、格納されたコンテンツ)と物理的エンティティ(例えば、コンピューティング装置)の両方を指す。通常、論理識別情報、キー、および/または制御ピアとは、DHT(例えば、DHT19)内の論理エントリを指す。
【0044】
DHTは、<キー,値>ペアリングとしてエントリを格納し、キーはハッシュ関数の結果であり、値は、DHT19内のエントリに関する何らかの情報である。例えば、値は、ノード識別もしくは名前、ネットワークについての情報、またはコンテンツについての情報でよい。ファイルまたはコンテンツに関する情報は、例えば、そのファイルまたはコンテンツをホストするピアのアドレスでよく、値はまた、ファイルの名前、ファイルを格納するピア上のファイルのメモリ位置に対するポインタ、またはファイルのタイプ(例えば、ビデオ、オーディオ、プログラム)をも含むことができる。
【0045】
例えば、ノードおよび/またはコンテンツに関連付けられる情報に対してハッシュ関数を実施することができる。例示的実施形態では、ノードまたはピア(例えば、ピア40a)は、固有の識別子またはキーを有することができ、ファイルまたはコンテンツは、固有の識別子またはキーを有することができる。
【0046】
知られているように、DHT(例えば、DHT19)を使用する従来のピアツーピアネットワークでは、コンテンツを有し、コンテンツを共有したいピアは単に、その識別子(例えば、ピアに関連付けられる論理識別情報またはキー)がピア識別子に最も近いDHT内のk個(通常は10個)のピアにコンテンツを告知する。
【0047】
コンテンツをダウンロードしたいピアは、コンテンツを有するピアのうちの最も近い知られている(例えば、DHT19に格納された)ピアに要求する。最も近い知られているピアは、コンテンツをダウンロードしたいピアに、コンテンツを有するピアのアドレスを返す。その後で、コンテンツをダウンロードしたいピアは、コンテンツを有するピアからのコンテンツのダウンロードを開始する。
【0048】
例えば、上述のように、ピアツーピアネットワーク用の1つのよく知られているファイル共有システムは、BITTORRENTとして知られている。BITTORRENTファイル共有システムは、get_peerオブジェクトを使用してコンテンツ要求を行う。ピアは、そのノード識別情報を既にピアが認識しているk個のピアにget_peerメッセージを送る。
【0049】
知られているように、BITTORRENTファイル共有システム内のピアは、他の知られているピアのメッセージで応答する。例えば、応答側ピアがコンテンツを含むピアを知らない場合、応答側ピアは、要求側ピアが次の反復でメッセージを送ることができる、要求されたファイルの識別子にその識別子がより近い、知られているピアのリストで応答する。知られているように、この反復プロセスは、要求されたコンテンツのコピーまたは一部を保持するピアのリストでget_peerメッセージが応答されるまで反復する。ピアのリストは、例えば、コンテンツにアクセスするためのピアのアドレスおよびポート番号を含むことができる。
【0050】
当業者は理解するであろうが、上記のBITTORRENTの例は、要求側ピアとコンテンツを有するピアとの間のどんなネットワーク関係も考慮に入れない。要求側ピアは、要求側がコンテンツを有すると認識させられる第1のピアからコンテンツをダウンロードする。したがって、ピアは、任意の他のピアから、ネットワーク内のその物理的位置の如何に関わらず、コンテンツをダウンロードすることができる。したがって、ピアツーピアネットワークは、トランジットリンク上で大量のトラフィックを生成し、ネットワークオペレータに対するコストが増加する。
【0051】
ピアツーピアネットワークがトラフィック位置特定を実装する場合、コンテンツ要求に対して返されるアドレスは、要求側までのそのネットワーク距離で順序付けられる。要求側の同一のISPからのIPアドレスは、リストの先頭にある。
【0052】
ピアツーピアアプリケーションが現在生成する大量のトランジットトラフィックを削減するために、例示的実施形態は、ピアツーピア応用例の用語集に「遅延許容度」という用語を導入する。遅延許容度は、ユーザが許容することのできる、ファイルの検索での一定の遅延を定義する。例えば、ユーザは、ユーザがムービーを楽しみたい次の日のためにダウンロードの準備ができることを予期して、晩の遅くにムービーのダウンロードを開始することがある。
【0053】
例示的実施形態は、この遅延許容度を使用して、ピアツーピアネットワーク内のトラフィック位置特定を改善する。ファイルがローカルに利用可能ではない場合、ファイルダウンロードが(ユーザが許容できる遅延まで)遅延することがある。このようにして、要求側のISP内の別のピアが要求されたコンテンツを有する確率が向上する。
【0054】
図4Aおよび4Bに、例示的実施形態によるデータパケットを示す。
図4Aに示すように、データパケットは、プロトコルフィールド、サイズフィールド、およびタイプフィールドを含むヘッダを含むことができる。データパケットはまた、締切りフィールドおよびパース済み検索文字列フィールドを含むデータ区間をも含むことができる。
図4Aのデータパケットは、例えばTCPメッセージデータパケットでよい。
【0055】
プロトコルフィールドは1バイトのサイズでよく、ファイル共有のために使用されるプロトコルの指示を含むことができる。例えば、標識は、MetaMachine, Inc.に対して登録されたeMuleやeDonkey TMなどのプロトコルを示すことができる。
【0056】
サイズフィールドは4バイトのサイズでよく、バイト単位のデータパケット/メッセージのサイズの指示を含むことができる。タイプフィールドは1バイトのサイズでよく、データパケット/メッセージのタイプの指示を含むことができる。例えば、標識は、検索要求、検索結果、ログイン、サーバまたはID変更などのタイプを示すことができる。
【0057】
締切りフィールドは4バイトのサイズでよく、コンテンツがそれまでに必要とされる時間の指示を含むことができる。例えば、締切りは、ユーザが許容することができるファイルの検索での一定の遅延を定義する(上述の)遅延許容度を示すことができる。
【0058】
パース済み検索文字列フィールドは可変サイズでよく、要求されたコンテンツの指示を含むことができる。例えば、知られているように、パース済み検索文字列は、要求されたコンテンツの指示を含むことができる。パース済み検索文字列は、コンテンツの検索を除外または拡張するための「AND」、「OR」、および「NOT」などのブール条件を含むことができる。ユーザは、必要なファイルタイプおよびサイズを指定することができ、可用性しきい値も設定することができる(例えば、少なくとも5つの他のクライアントから入手可能な結果を見せて欲しい)。
【0059】
図4Bに示すように、データパケットは、プロトコルフィールドおよびタイプフィールドを含むヘッダを含むことができる。データパケットはまた、締切りフィールドおよびファイルIDリストフィールドを含むデータ区間をも含むことができる。
図4Bのデータパケットは、例えばUDPメッセージデータパケットでよい。
【0060】
プロトコルフィールドは1バイトのサイズでよく、ファイル共有のために使用されるプロトコルの指示を含むことができる。例えば、標識は、eMuleやeDonkeyなどのプロトコルを示すことができる。タイプフィールドは1バイトのサイズでよく、データパケット/メッセージのタイプの指示を含むことができる。例えば、標識は、検索要求、検索結果、取得ソース(get source)または見つかったソース(found source)などのタイプを示すことができる。
【0061】
締切りフィールドは4バイトのサイズであり、コンテンツがそれまでに必要とされる時間の指示を含むことができる。例えば、締切りは、ユーザが許容することができるファイルの検索での一定の遅延を定義する(上述の)遅延許容度を示すことができる。
【0062】
ファイルIDリストフィールドは可変サイズでよく、要求されたコンテンツの指示を含むことができる。例えば、ファイルIDリストは、1つまたは複数の要求されたコンテンツに関するファイルIDの指示を含むことができる。ファイルのデータをハッシングすることによってファイルIDを計算することができる。
【0063】
当業者は理解するであろうが、
図4Aおよび4Bを参照しながら説明したデータパケットは、例えばメッセージングプロトコルまたはファイル共有プロトコルに基づいて、様々な形に変更することができる。例示的実施形態は、
図4Aおよび4Bのデータパケットに限定されない。
【0064】
図5A−5Dに、例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する方法の流れ図を示す。
図5Aおよび5Bに関連する方法のステップを説明する間に、
図2および
図3のネットワークと、
図4Aおよび4Bに示すデータパケットとを参照する。
【0065】
図5Aを参照すると、ステップS502で、要求メッセージが受信される。例えば、要求メッセージは、
図6Aに関して以下でより詳細に説明するメッセージでよい。要求メッセージは、コンテンツを求める要求と、コンテンツを受信すべきときに関する締切りとを含むことができる。例えば、要求メッセージは、上記で
図4Aで示した関連するデータパケットを有することができる。
図4Aを参照すると、締切りフィールドは、コンテンツがそれまでに受信されるべきときに関する締切りを示す時間値を含むことができる。時間値は、コンテンツがそれまでに受信されるべき日付および時刻を示すことができる。あるいは、時間値は、コンテンツがそれまでに受信されるべき日付および時刻を計算するのに使用される値でよい。
【0066】
ステップS504で、受信側ノードが、受信側ノードが要求メッセージに基づくコンテンツを含むかどうかを判定する。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。送信される応答メッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。受信側ノードがコンテンツを含むかどうかを判定し、コンテンツの指示を含む応答メッセージを送信する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。しかし、受信側ノードと要求側ノードが同一のネットワークに関連付けられるので、例示的実施形態に従ってトラフィックが位置特定される。
【0067】
ステップS506で、受信側ノードがコンテンツを有する場合、処理はステップS520に進む。そうでない場合、処理はステップS508に進む。
【0068】
ステップS504で受信側ノードがコンテンツを有さない場合、ステップS508で、受信側ノードは、メッセージを送信したノードと同一のネットワーク(例えば、同一のISP)に関連付けられる他のノードがコンテンツについての情報を含むことを受信側ノードが知っているかどうかを判定する。ステップS510で、要求されたコンテンツについての情報を含むネットワークに関連付けられる他のノードを受信側ノードが知っている場合、ステップS512で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、ノードのリストをコンテンツについての情報と共に含む。そうでない場合、処理はステップS514に進む。
【0069】
例えば、ステップS508で、ノードのリストが、要求側ノードISPに基づいてフィルタリングされる。フィルタリングされるノードのリストは、要求側ノードと同一のISPに関連付けられるノードのみを含むことができる。フィルタリングされるノードのリストはまた、要求側に関して比較的良好な品質および/または比較的安価な接続性(例えばピアリング契約)を有するノードをも含むことができる。ステップS512で、要求側ノードは、フィルタリングされたノードのリストに基づくピアセットまたはノードのリストを含む応答メッセージで応答を受ける。
【0070】
例えば、ステップS510で、マイクロプロセッサ46は、要求側ノードがネットワーク24のメンバであると判定することができる。さらに、マイクロプロセッサ46は、コンピュータ3、4、および7がネットワーク24のメンバであると判定することができる。例示的実施形態によれば、ステップS508のローカルピアセットまたはノードのリストは、コンピュータ3、4、および7を含み、他のネットワークのコンピュータを含まない。ステップS512で、マイクロプロセッサ46は、コンピュータ3、4、および7のリストを含む応答メッセージを送信することができる。
【0071】
ステップS514で、上述の締切りが過ぎている場合、処理はステップS540に進む。そうでない場合、処理はステップS508に戻る。
【0072】
図5Bを参照すると、ステップS520で、受信側ノードは、受信側ノードが要求側ノード(要求メッセージを送信したノード)と同一のネットワークに関連付けられるかどうかを判定する。例えば、最初に、要求側ノードに関連付けられるISPを求めることができる。例えば、マイクロプロセッサ46は、要求側ノードに関連付けられるアドレスと、データベース53から取り出したネットワーク情報との比較を行うことができる。代替および/または追加として、マイクロプロセッサ46は、DHT19から読み取った情報を使用することができる。例えば、マイクロプロセッサ46は、要求側ノードに関連付けられる値フィールドに格納された情報を使用することができる。
【0073】
一度要求側ノードに関連付けられるネットワークが求められると、マイクロプロセッサ46は、要求側ノードに関連付けられるネットワークと、要求メッセージを受信したノードに関連付けられるネットワークとの比較を行って、ネットワークが同一かどうかを判定することができる。例えば、ネットワークが同一のインターネットサービスプロバイダ(ISP)ネットワークである場合、ネットワークは同一であることがある。
【0074】
パース済み検索文字列は、コンテンツを示す文字列でよい。上述のように、コンテンツを示すパース済み検索文字列は、当業者に知られている。例えば、要求メッセージは上述のBITTORRENT get_peerメッセージでよい。
【0075】
ステップS522で、(ステップS520で判定したように)受信側ノードと要求側ノードが同一のネットワークに関連付けられない場合、処理はステップS530に移動する。そうでない場合、処理はステップS524に進む。
【0076】
ステップS524で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、受信側ノードがコンテンツを有することを示す。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。さらに送信される応答メッセージは、応答側ノードがピアにコンテンツを送信すべきことを示すフィールドを含むことができる。受信側ノードがコンテンツを含むかどうかを判定し、コンテンツの指示を含む応答メッセージを送信する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。しかし、受信側ノードと要求側ノードが同一のネットワークに関連付けられないので、受信側ノードが要求側ノードと同一のネットワークに関連付けられないので、トラフィックは位置特定されない。
【0077】
図5Cを参照すると、ステップS530で、受信側ノードは、メッセージを送信したノードと同一のネットワーク(例えば、同一のISP)に関連付けられる他のノードがコンテンツについての情報を含むことを受信側ノードが知っているかどうかを判定する。ステップS532で、要求されたコンテンツについての情報を含むネットワークに関連付けられる他のノードを受信側ノードが知っている場合、ステップS534で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、ノードのリストをコンテンツについての情報と共に含む。そうでない場合、処理はステップS536に進む。
【0078】
例えば、ステップS530で、ノードのリストが、要求側ノードISPに基づいてフィルタリングされる。フィルタリングされるノードのリストは、要求側ノードと同一のISPに関連付けられるノードのみを含むことができる。フィルタリングされるノードのリストはまた、要求側に関して比較的良好な品質および/または比較的安価な接続性(例えばピアリング契約)を有するノードをも含むことができる。ステップS534で、要求側ノードは、フィルタリングされたノードのリストに基づくピアセットまたはノードのリストを含む応答メッセージで応答を受ける。
【0079】
例えば、ステップS532で、マイクロプロセッサ46は、要求側ノードがネットワーク24のメンバであると判定することができる。さらに、マイクロプロセッサ46は、コンピュータ3、4、および7がネットワーク24のメンバであると判定することができる。例示的実施形態によれば、ステップS530のローカルピアセットまたはノードのリストは、コンピュータ3、4、および7を含み、他のネットワークのコンピュータを含まない。ステップS534で、マイクロプロセッサ46は、コンピュータ3、4、および7のリストを含む応答メッセージを送信することができる。
【0080】
ステップS536で、上述の締切りが過ぎている場合、処理はステップS540に進む。そうでない場合、処理はステップS530に戻る。
【0081】
図5Dを参照すると、ステップS540で、受信側ノードは、ネットワーク(例えば、ISP)に関連付けられる他のノードが要求されたコンテンツについての情報を含むことを受信側ノードが知っているかどうかを判定する。ステップS542で、要求されたコンテンツについての情報を含むネットワークに関連付けられる他のノードを受信側ノードが知っている場合、ステップS544で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、ノードのリストをコンテンツについての情報と共に含む。そうでない場合、処理はステップS546に進む。
【0082】
例えば、ステップS540で、ノードのリストは、ステップS508およびS530に関して上記で説明した通りではない。したがって、ステップS544で、要求側ノードは、ネットワークに基づく区別のないピアセットまたはノードのリストを含む応答メッセージで応答を受ける。
【0083】
ステップS546で、ノードのリストが、コンテンツの論理識別子(キー)に近接するノードに基づいて求められる。ノードのリストは、コンテンツの論理識別情報に近いノードを含む。ステップS548で、応答メッセージが、コンテンツを要求するノードに送信され、応答メッセージは、コンテンツの論理識別子(キー)に近接するノードに基づくノードのリストを含む。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。送信される応答メッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。コンテンツの論理識別子に近接するノードに基づいてノードのリストを求め、リストを送信する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【0084】
図6Aおよび6Bに、例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する別の方法の流れ図を示す。
図6Aおよび6Bに関連する方法のステップを説明する間に、
図2および
図3のネットワークと、
図4Aおよび4Bに示すデータパケットとを参照する。
【0085】
図6Aを参照すると、ステップS605で、メッセージが送信される。メッセージは、コンテンツを求める要求と、コンテンツを受信すべきときに関する締切りとを含むことができる。例えば、メッセージは、上記で
図4Aで示した関連するデータパケットを有することができる。
図4Aを参照すると、締切りフィールドは、コンテンツがそれまでに受信されるべきときに関する締切りを示す時間値を含むことができる。時間値は、コンテンツがそれまでに受信されるべき日付および時刻を示すことができる。あるいは、時間値は、コンテンツがそれまでに受信されるべき日付および時刻を計算するのに使用される値でよい。
【0086】
パース済み検索文字列は、コンテンツを示す文字列でよい。上述のように、コンテンツを示すパース済み検索文字列は、当業者に知られている。例えば、メッセージは上述のBITTORRENT get_peerメッセージでよい。
【0087】
ステップS610で、応答メッセージが監視される。ステップS615で、応答メッセージが、送信されたメッセージに応答して受信されたメッセージであるかどうかが判定される。応答メッセージが、送信されたメッセージに応答して受信された場合、処理はステップS620に進む。そうでない場合、処理はステップS610に戻る。メッセージを監視し、応答メッセージが送信されたメッセージに関連付けられるかどうかを判定することは、当業者に知られており、簡潔のためにさらには論じない。
【0088】
ステップS620で、ピアは、応答メッセージがピアと同一のネットワークに関連付けられるノードから受信されたかどうかを判定する。例えば、応答メッセージに関連付けられるアドレスを、ピアに関連付けられるアドレスと比較することができる。両方のアドレスが同一のネットワーク(例えば、インターネットサービスプロバイダ(ISP)ネットワーク)に関連付けられる場合、ノードとピアが同一のネットワークに関連付けられると判定することができる。応答メッセージが、ピアと同一のネットワークに関連付けられるノードから受信される場合、処理はステップS630に進む。そうでない場合、処理はステップS625に移動し、メッセージがキューイングまたは格納される。例えば、データベース52に関連付けられるメモリ位置にメッセージをキューイングまたは格納することができる。ステップS605で送信されたメッセージに関連してメッセージをキューイングまたは格納することができる。何らかの将来の処理のためにメッセージをキューイングまたは格納することができる。例えば、
図6Bに関して以下で説明するように、キューイングまたは格納されたメッセージを処理することができる。メッセージがキューイングまたは格納された後、処理はステップS610に戻る。
【0089】
ステップS630で、ピアは、要求したコンテンツを応答側ノードが有することを応答メッセージが示すかどうかを判定する。ステップS630で、要求したコンテンツを応答側ノードが有する場合、ステップS635で、メッセージが、コンテンツを有する応答側ノードに送信される。メッセージは、コンテンツを送信する要求でよい。そうでない場合、処理はステップS640に移動する。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。さらに送信されるメッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。要求したコンテンツを応答側ノードが有することを応答メッセージが示すかどうかを判定し、コンテンツを要求する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【0090】
ステップS640で、ピアは、応答メッセージがノードのリストを含むかどうかを判定する。応答メッセージがノードのリストを含む場合、処理はステップS645に進む。そうでない場合、処理はステップS610に戻る。ステップS645で、ノードのリストが処理され、処理はステップS605に戻る。例えば、メッセージは、メッセージがノードのリストを含むことを示すフィールドを含むことができる。ピアは、ノードのリストを読み取り、ステップS605に関して上記で説明したように、リスト内のノードにメッセージを送信することができる。応答メッセージがノードのリストを含むかどうかを判定し、ノードのリストを処理する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【0091】
図6Bに、例示的実施形態によるピアツーピアネットワーク内のピアによってキューイングまたは格納されたメッセージを処理する方法の流れ図を示す。キューイングまたは格納されたメッセージは、上述のステップS625で格納されたメッセージでよい。
【0092】
図6Bを参照すると、ステップS650で、ピアは、上述の締切りが過ぎたかどうかを判定する。締切りが過ぎている場合、処理はステップS655に進む。そうでない場合、処理はステップS650でループする。上述のように、受信側ノードと要求側ノードが同一のネットワークに関連付けられないので、処理はステップS650に移動する(かつループする)。したがって、受信側ノードと要求側ノードが同一のネットワークに関連付けられない場合、受信側ノードによってアクションは実施されない。ステップS650で締切りが過ぎるまで、アクションは実施されない。したがって、ピアツーピアネットワーク(例えば、ネットワーク24)内のトラフィック位置特定が改善される。
【0093】
ステップS655で、ピアは、コンテンツの位置が特定されたかどうかを判定する。例えば、ピアに関連付けられるクライアントが、コンテンツの位置が特定されたことをピアに通知する標識を格納することができる。コンテンツの位置が特定されたかどうかを判定する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。コンテンツの位置が特定されていない場合、処理はステップS665に進む。そうでない場合、処理はステップS660に移動する。ステップS665で、ピアは、すべてのキューイングまたは格納されたメッセージを削除すべきかどうかを判定する。例えば、クライアントアプリケーションは、ローカルネットワークに関連付けられるコンテンツの位置だけを突き止めるための設定を含むことができる。設定をコンテンツ要求に関連付けることができ、または設定は、すべてのコンテンツ要求に関連付けられる一般的設定でよい。ローカルネットワークにコンテンツを要求すべきであることを設定が示す場合、ピアは、すべてのキューイングまたは格納されたメッセージを削除するように決定することができる。すべてのキューイングまたは格納されたメッセージを削除すべきである場合、処理はステップS660に移動する。そうでない場合、処理はステップS670に進む。
【0094】
ステップS660で、キューイングまたは格納されたメッセージが削除される。例えば、データベース52に関連付けられるメモリ位置にメッセージをキューイングまたは格納することができる。(上述の)ステップS605で送信されたメッセージに関連してメッセージをキューイングまたは格納することができる。ステップS660で、ステップS605で送信されたメッセージに関連付けられるメッセージをデータベース52から削除することができる。
【0095】
ステップS670で、ピアは、キューが空であるかどうかを判定する。例えば、ピアは、データベース52に照会して、ステップS605で送信されたメッセージに関連付けられる何らかのメッセージがあるかどうかを判定する。キューが空である場合、処理は何らかの他の処理に進む。キューが空でない場合、処理はステップS675に進み、メッセージがキューから選択される。例えば、データベース52の照会からのメッセージが選択される。
【0096】
ステップS680で、ピアは、要求したコンテンツを応答側ノードが有することを、選択されたメッセージが示すかどうかを判定する。ステップS680で、要求されたコンテンツを応答側ノードが有する場合、ステップS685で、メッセージが、コンテンツを有する応答側ノードに送信される。メッセージは、コンテンツを送信する要求でよい。そうでない場合、処理はステップS690に移動する。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。さらに送信されるメッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。要求したコンテンツを応答側ノードが有することを応答メッセージが示すかどうかを判定し、コンテンツを要求する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【0097】
ステップS690で、ピアは、選択されたメッセージがノードのリストを含むかどうかを判定する。応答メッセージがノードのリストを含む場合、処理はステップS695に進む。そうでない場合、処理はステップS698に移動する。ステップS695で、ノードのリストが処理され、処理はステップS698に進む。例えば、メッセージは、メッセージがノードのリストを含むことを示すフィールドを含むことができる。ピアは、ノードのリストを読み取り、ステップS605に関して上記で説明したように、リスト内のノードにメッセージを送信することができる。応答メッセージがノードのリストを含むかどうかを判定し、ノードのリストを処理する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【0098】
ステップS698で、ピアは、キューが空であるかどうかを判定する。例えば、ピアは、データベース52に照会して、ステップS605で送信されたメッセージに関連付けられる何らかのメッセージがあるかどうかを判定する。キューが空である場合、処理は何らかの他の処理に進む。キューが空でない場合、処理はステップS675に戻る。
【0099】
要求されたコンテンツのすべてが要求され、要求側ピアにダウンロードされるまで、
図6Aおよび6Bで示した方法のステップを反復的に繰り返すことができる。
【0100】
ファイル共有(例えば、BITTORRENTファイル共有システム)を実施するクライアントアプリケーションを修正することにより、
図5A、5B、6A、および6Bの例示的実施形態に基づくピアツーピアネットワーク内のトラフィック位置特定を実装することができる。
【0101】
本発明の代替実施形態をコンピュータシステムと共に使用されるコンピュータプログラム製品として実装することができ、コンピュータプログラム製品は、例えば、ディスケット、CD−ROM、ROM、または固定ディスクなどの有形または非一時的データ記録媒体(コンピュータ可読媒体)上に格納された一連のコンピュータ命令、コードセグメント、またはプログラムセグメントであり、または本発明の代替実施形態をコンピュータデータ信号で実施することができ、信号は、有形媒体またはワイヤレス媒体、例えばマイクロ波または赤外線を介して伝送される。一連のコンピュータ命令、コードセグメント、またはプログラムセグメントは、上述の例示的実施形態の方法の機能のすべてまたは一部を構成することができ、半導体装置、磁気装置、光学装置、または他のメモリ装置などの、揮発性または不揮発性の任意のメモリ装置に格納することもできる。
【0102】
例示的実施形態が具体的に図示され、説明されたが、請求項の趣旨および範囲から逸脱することなく、これらの実施形態において形態および細部の変形を行うことができることを当業者は理解されよう。
【0103】
このように本発明が説明されたので、本発明を多くの形で変形できることは明らかであろう。そのような変形は本発明からの逸脱とみなされるべきではなく、すべてのそのような修正は、本発明の範囲内に包含されるものとする。