(57)【要約】【課題】本発明は、受信された通信メッセージの量を増加させることによりピアツーピア・ネットワークを最適に用いることに関係する。【解決手段】本発明は、パフォーマンスの悪い接続を排除し、接続が試みられる方法を制御して、最適な接続を見つけることにより、これを行う。本発明は、サーチが可能なノードの数を増加させる方法を提供する。【選択図】図５
2011066934.tif 000002
【特許請求の範囲】
【請求項１】
第１のノードと第２のノードとを少なくとも有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）前記ピアツーピア・ネットワークを介して前記第１のノードを前記第２のノードに接続するステップと、
（ｂ）前記第１のノードから前記第２のノードを介して前記ピアツーピア・ネットワークに向けて、所定のタームに対するサーチ・リクエストを生じるステップと、
（ｃ）前記第１のノードが、前記第２のノードと前記第２のノードを介して利用可能な任意のノードとから応答を受信するステップと、
（ｄ）前記第１のノードが、前記第１のノードへの応答の中で提供された距離情報を用いて値を計算するステップと、
（ｅ）前記第１のノードが接続する値に基づき、前記ピアツーピア・ネットワークの中で前記第１のノードに応答したノードを選択するステップと、
（ｆ）前記第１のノードを前記選択されたノードに接続するステップと、
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、ノードを前記第１のノードから特定の距離だけ離して配置するのに用いられることを特徴とする方法。
【請求項３】
第１のノードと第２のノードとを少なくとも有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）前記ピアツーピア・ネットワークを介して前記第１のノードを前記第２のノードに接続するステップと、
（ｂ）前記第１のノードから前記第２のノードを介して前記ピアツーピア・ネットワークに向けて、ピング・リクエストを生じるステップと、
（ｃ）前記第１のノードが、前記第２のノードと前記第２のノードを介して利用可能な任意のノードとから応答を受信するステップと、
（ｄ）前記第１のノードが、前記第１のノードへの応答の中で提供された距離情報を用いて、方程式により値を計算するステップと、
（ｅ）前記第１のノードが接続する値に基づき、前記ピアツーピア・ネットワークの中で前記第１のノードに応答したノードを選択するステップと、
（ｆ）前記第１のノードを前記選択されたノードに接続するステップと、
を含むことを特徴とする方法。
【請求項４】
請求項３記載の方法において、ノードを前記第１のノードから特定の距離だけ離して配置するのに用いられることを特徴とする方法。
【請求項５】
第１のノードと第２のノードとを少なくとも有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）前記ピアツーピア・ネットワークを介して前記第１のノードを前記第２のノードに接続するステップと、
（ｂ）前記第１のノードから前記第２のノードを介して前記ピアツーピア・ネットワークに向けて、所定のタームに対するサーチ・リクエストを生じるステップと、
（ｃ）前記第１のノードによる応答を、前記第２のノードと前記第２のノードを介して利用可能な任意のノードとから受信するステップと、
（ｄ）前記第１のノードを応答するすべてのノードに接続するステップと、
を含むことを特徴とする方法。
【請求項６】
ピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）第１のノードが、ピアツーピア・ネットワークに接続するステップと、
（ｂ）第１のノードが、特定の接続に関する特定の統計を維持するステップと、
（ｃ）第１のノードが、前記統計を方程式において用いるステップと、
（ｄ）第１のノードが、前記方程式の結果に基づいて接続を切断する決定をするステップと、
（ｅ）第１のノードが、切断するという決定がなされた接続を切断するステップと、
を含むことを特徴とする方法。
【請求項７】
第１のノードと第２のノードとを少なくとも有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）前記第１のノードを前記ピアツーピア・ネットワークに接続するステップと、
（ｂ）特定の接続に関して所定の統計を取るステップと、
（ｃ）前記第１のノードで所定の方程式において前記統計を用いるステップと、
（ｄ）前記第１のノードが、前記第１のノードへの応答の中で提供された前記統計を用いて、方程式により、値を計算するステップと、
（ｅ）前記第１のノードが切断する値に基づき、前記ネットワークの中にあり前記第１のノードに応答したノードを選択するステップと、
（ｆ）前記第１のノードを前記選択されたノードから切断するステップと、
を含むことを特徴とする方法。
【請求項８】
請求項６記載の方法において、前記統計は受信された通信メッセージの数であることを特徴とする方法。
【請求項９】
請求項６記載の方法において、前記統計は、送信が受信された最後の時刻であることを特徴とする方法。
【請求項１０】
請求項６記載の方法において、前記統計は、受信されたサーチの数であることを特徴とする方法。
【請求項１１】
請求項６記載の方法において、前記方程式は、平均に基づく又は他の接続の平均の百分率の中にあることを特徴とする方法。
【請求項１２】
請求項６記載の方法において、前記決定は、他の接続の統計と比較してより低い値である統計に基づくことを特徴とする方法。
【請求項１３】
複数のノードを有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）少なくとも１つのノードを前記ピアツーピア・ネットワークに接続するステップと、
（ｂ）前記ネットワークにおける接続されたそれぞれのノードと通信するステップと、
（ｃ）通信されたそれぞれのノードが、前記ネットワークから情報を受信するタスクを共有するステップと、
を含むことを特徴とする方法。
【請求項１４】
請求項１３記載の方法において、負荷を集合的に共有する前記ノードは、接続されたネットワークのリストを保持することにより、単一のネットワーク・ノードへの複数の接続が排除されることを特徴とする方法。
【請求項１５】
請求項１３記載の方法において、負荷を共有する前記ノードはマスタ・ノードと通信関係にあることを特徴とする方法。
【請求項１６】
請求項１５記載の方法において、前記マスタ・ノードは、負荷を共有する前記ノードが接続するネットワーク・ノードを管理することを特徴とする方法。
【請求項１７】
請求項１５記載の方法において、前記マスタ・ノードは、負荷を共有する前記ノードから前記ネットワーク通信を受信することを特徴とする方法。
【請求項１８】
複数のノードを有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）最大の同時接続値を定義するステップと、
（ｂ）前記第１のノードを介して、前記ピアツーピア・ネットワークにおいて前記最大同時接続値までノードへの複数の接続を試みるステップと、
（ｃ）接続の試みが成功するか失敗するかにより、新たな接続の試みを前記同時接続値まで追加するステップと、
を含むことを特徴とする方法。
【請求項１９】
請求項１８記載の方法において、前記第１のノードは、所定の数の成功裏の接続試みが成功するまで、前記最大同時接続値より多く試みることを特徴とする方法。
【請求項２０】
第１のノードと第２のノードとを少なくとも有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）前記第１のノードを第２のノードに接続するステップと、
（ｂ）接続の回数を前記第１のノードに記録するステップと、
（ｃ）間隔をおいて、前記第１のノードの接続時間を値と比較するステップと、
（ｄ）前記値に到達したときには、前記第１のノードを前記第２のノードから切断するステップと、
を含むことを特徴とする方法。
【請求項２１】
複数のノードを有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）第１のノードが、前記ネットワーク・ノードに関するアドレス情報を取得するステップと、
（ｂ）前記情報をキャッシュに追加するステップと、
（ｃ）特定のイベントが生じたときに前記キャッシュをクリアするステップと、
を含むことを特徴とする方法。
【請求項２２】
請求項２１記載の方法において、前記イベントは、前記キャッシュが特定のサイズに到達することであることを特徴とする方法。
【請求項２３】
請求項２１記載の方法において、前記イベントは、前記キャッシュの中の前記接続情報が特定の古さに到達することであることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
この出願は、２００４年１月２３日に出願され発明の名称が「Method for Monitoring and Providing Information over a Peer to Peer Network」である米国特許第１０／７６４１１１号の一部継続出願である。
【０００２】
本発明は、ピアツーピア（peer-to-peer）ネットワークを最適に用いる方法を提供し、特に、ピアツーピア・ネットワークを最適に用いて受信される通信メッセージの量を増加させる方法を提供する。
【背景技術】
【０００３】
本発明の主題でありこの明細書で説明するピアツーピア・ネットワークは、複数のノードを備えていて、それぞれのノードは、通信メッセージ又は情報を接続されているノードとの間で送受信することができるファイル・サーバ及びクライアントの両方で構成されているのが典型的である。
【０００４】
ピアツーピア・ネットワークでは、それぞれのノードは、インターネットなどの通信媒体により、直接に又は何らかのタイプのプロキシを経由して、他のノードに接続されている。例えば、サーチ・リクエストが送出される際には、送信側のノードは、この送信側のノードが接続されているすべてのノードにサーチ・リクエストを送信する（図１を参照のこと）。これらのノードは利用可能なファイルのリストをサーチして、一致が見つかると、その位置とともに応答を返送する。しかし、ピアツーピア・プロキシ・ネットワークは、典型的には、ノードＢに接続されたノードＡで構成されていて、ノードＢはノードＣに接続されている（図２を参照のこと）。ノードＡは、ノードＣに接続されていないから、ノードＡがサーチ・リクエストを送出すると、このサーチ・リクエストはノードＢに送られ、ノードＢがその利用可能なファイルをサーチし、一致が見つかると、応答がノードＡに返送される。ノードＢは、次に、ノードＡのリクエストをノードＣに転送し、ノードＣがその利用可能なファイルをサーチし、一致が見つかると、応答がノードＢに返送される。ノードＢは、次に、この応答をノードＡに転送する。図３は、非プロキシ型のループ・ネットワークを示し、この場合には、それぞれのノードが相互に直接に接続されている。
【０００５】
リーフ／メイン・ノード・プロキシ・トポロジを用いるピアツーピア・ネットワークもあり（図４を参照のこと）、この場合には、ノードのいくつかがメイン・ノードと分類され、残りのノードがリーフ・ノードと分類される。リーフ・ノードは、メイン・ノードにしか接続できない。メイン・ノードだけが、他のメイン・ノードに接続できる。リーフ・ノードは、サーチ・リクエストを生じるときには、そのリクエストを、自分が接続されているメイン・ノードに送る。そして、そのメイン・ノードが、リクエストを、自分が接続されているすべての他のリーフ・ノードに転送し、更に、自分が接続されているすべてのメイン・ノードにも転送する。これらのメイン・ノードは、リクエストを、それらに接続されているすべてのリーフ・ノードに転送する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、本発明の目的は、ピアツーピア・ネットワークを最適に用いる方法を提供することである。本発明の別の目的は、ピアツーピア・ネットワークの上の単一のノードから要求される接続の数を減少させ、すべてではないにしてもほとんどの通信メッセージを見る方法を提供することである。本発明の更に別の目的は、ネットワークに最適に接続する方法を提供することである。本発明の更に別の目的は、第１のノードから特定の距離だけ離れているノードを見つける方法を提供することである。
【課題を解決するための手段】
【０００７】
一般に、本発明は、ノードがどのようにしてネットワークに接続するかを制御し、ノードがどのようにして最適なノードを見つけるかを制御し、ノードがネットワークやそれ以外のノードとどのように相互作用するかを制御することにより、ピアツーピア・ネットワークを最適に用いる方法を提供する。
【０００８】
ある実施例では、第１のノードが、予め選択された情報に対するサーチを生じ、応答を見ることにより他のノードを見つけることを助ける。別の実施例では、第１のノードが、ピングを生じ、ホップ値を所定の最適値と比較する。更に別の実施例では、第１のノードが、接続統計を取り、それを、構成された最適値と比較する。更に別の実施例では、第１のノードが、所定の時刻にそのホスト・キャッシュを連続的にクリアする。
【０００９】
これらすべての実施例において、ノードは、以下の特徴の１又は複数を有するように構成されている。これらの特徴は、本発明において、それほどには最適化されていない特定のネットワークにおける他のネットワーク・ノードとの比較において、ピアツーピア・ネットワークを最適に用いるために用いられる。従って、ネットワークを最適に用いるためには、それぞれのノードにおいて、これらのすべてをプログラムすることは必要ない。本発明の好適な方法は、以下を含む：
・  ピングを送出して、結果に含まれる距離パラメータを検討するようにノードを構成する。
・  予め構成されたサーチを送出して、結果に含まれる距離パラメータを検討するようにノードを構成する。
・  そのホスト・キャッシュ・サイズの比較に基づいて、そのホスト・キャッシュをクリアする又は修正するようにノードを構成する。
・  そのホスト・キャッシュがどのくらい長く存在しているかの比較に基づいて、そのホスト・キャッシュをクリアする又は修正するようにノードを構成する。
・  その接続の試みを減少させるようにノードを構成する。
・  受信した重複する通信メッセージの計算に基づいて接続を廃棄するようにノードを構成する。
・  接続から最後に送信が受信された時刻に基づいて接続を廃棄するようにノードを構成する。
・  他の接続と比較して接続がどのくらいのパフォーマンスであるかに基づいて接続を廃棄するようにノードを構成する。
・  他の類似のノード又はマスタ・ノードに接続してネットワークの処理を共有するようにノードを構成する。
【００１０】
本発明のこれ以外の効果は、添付の図面を参照して本発明の好適実施例に関する以下の詳細な説明から明らかになるはずである。
【図面の簡単な説明】
【００１１】
【図１】２ノード型のピアツーピア・ネットワークの単純化された概観である。
【図２】ピアツーピア・プロキシ・ネットワークの単純化された概観である。
【図３】ピアツーピア・ノンプロキシ・ループ・ネットワークの単純化された概観である。
【図４】ピアツーピア・リーフ／メイン・ネットワークの単純化された概観である。
【図５】５より多くのホップから構成されるピアツーピア・ネットワークの単純化された概観である。
【図６】負荷を共有するノードを有するピアツーピア・ネットワークの単純化された概観である。
【図７】負荷を共有するが接続されていないノードを有するピアツーピア・ネットワークの単純化された概観である。
【図８】その接続を減速するノードを有するピアツーピア・ネットワークの単純化された概観である。
【発明を実施するための形態】
【００１２】
一般に、ピアツーピア・ネットワークは相当に大規模であり、多くの場合、１００万個以上のノードで構成される。そのようなネットワークを動作させるのに要求される帯域幅を限縮するため、ノードは、コミュニティによって課せられた伝送距離制限を有する。ホップとは、通常は０から開始し通信が転送されるたびにインクリメントする値である。ホップが予め定められた限度に到達すると、通信はネットワークから排除される。これにより、コミュニティに「生存時間」の値が強制され、特定の送信側ノードから通信を受信するノードの数が制限される。従って、ノードがすべての通信メッセージが到達する範囲内に存在するように接続することが最適であり有効である。
【００１３】
本発明のある実施例では、第２のノードに最適に接続されることを望む第１のノードは、予め構成されたサーチ・タームを含むサーチ・リクエストを生じる。このサーチ・タームは、任意のタームでかまわないが、他のノード上の多くのファイルと一致するものであることが望ましい。第２のノードを介して利用可能な他のノードが第１のノードに応答すると、第１のノードは、その応答のホップ値を見て、その値とオペレータによって予め構成されることが可能な値とを比較する。そのような値は、他の値に基づいて数学的な計算により生成可能であるか、又は、他の値と関係している。ホップ値が比較される値と等しいか又はそれよりも大きい場合には、第１のノードは、その応答を送信しているノードへの接続を試みる。ホップ値が比較される値よりも小さい場合には、第１のノードは、その応答を送信しているノードへの接続を試みることはない。この方法により、第１のノードが、現在接続されているノードからＮホップだけ離れているノードに接続することが可能になり、その通信半径を拡大する。
【００１４】
他の実施例では、第１のノードは、第２のノードに接続し、第２のリクエストではなくピングを生じる。第２のノードを介して利用可能な他のノードが第１のノードに応答すると、第１のノードは、その応答のホップ値を見て、その値とオペレータによって予め構成されることが可能な値とを比較する。そのような値は、他の値に基づいて数学的な計算により生成可能であるか、又は、第１の実施例の場合のように他の値と関係している。ホップ値が比較される値と等しいか又はそれよりも大きい場合には、第１のノードは、その応答を送信しているノードへの接続を試みる。ホップ値が比較される値よりも小さい場合には、第１のノードは、その応答を送信しているノードへの接続を試みることはない。この方法により、第１のノードが、現在接続されているノードからＮホップだけ離れているノードに接続することが可能になり、その通信半径を拡大する。
【００１５】
別の実施例では、接続する目的でネットワーク上の他のノードを見つけるようとする第１のノードは、予め構成されたサーチ・タームを含むサーチ・リクエストを生じる。このサーチ・タームは任意のタームでかまわないが、他のノード上の多くのファイルと一致するものであることが望ましい。第２のノードを介して利用可能である他のノードが第１のノードに応答すると、第１のノードは、それらのノードに接続することを試み、それらのノードを後で接続されるキャッシュに追加する。
【００１６】
図３を参照すると、第１のノードが、相互に非最適な距離以内にある他のノードと接続されることが可能であり、これらの他のノード自体が、第１のノードへの第２の経路を有している。それ以外の非最適な接続も可能であるが、その結果、第１のノードは、重複した通信メッセージを受信することになる。第１のノードがこの状況を検出できるのであれば、それは第１のノードに有益であり、従って、本発明の別の実施例では、第１のノードは、それぞれのノードから受信した重複する通信メッセージのカウント（回数）を保持する。ある間隔で、第１のノードは、ある値との比較など予め構成された方程式において、重複する通信メッセージの量を用いるが、この値は、オペレータが予め構成することが可能であり、他の値に基づいて数学的計算によって生成されることもあり、又は、他の値に関係することもある。この比較は任意の比較であることが可能であり、例えば、大小関係であったり、平均を取ることであったりする。第１のノードは、この方程式を用いて接続が最適ではない、すなわち、ある基準を満足していないことを検出すると、その接続を切断する。
【００１７】
第１のノードが他のどのノードにも接続されていない第２のノードに接続することは可能であり、さもなければ、第２のノードをどのような通信も転送しないように構成することが可能である。この状況では、第２のノードは、生産的でないと見なされる。従って、本発明の別の実施例では、第１のノードは、その接続を求めて受信された通信メッセージのカウントを保持する。ある間隔で、第１のノードは、ある値との比較など予め構成された方程式において、受信した通信メッセージの量を用いる。この値は、オペレータが予め構成することが可能であり、他の値に基づいて数学的計算によって生成されることもあり、又は、他の値に関係することもある。この比較は任意の比較であることが可能であり、例えば、大小関係であったり、平均を取ることであったりする。第１のノードは、この方程式を用いて接続が最適ではない、すなわち、ある基準を満足していないことを検出すると、その接続を切断する。
【００１８】
他の実施例では、第１のノードは、その接続を求めて受信された通信メッセージのカウントを保持する。ある間隔で、第１のノードは、ある値との比較など予め構成された方程式において受信した通信メッセージの量を用いる。この値は、オペレータが予め構成することが可能であり、他の値に基づいて数学的計算によって生成されることもあり、又は、他の値に関係することもある。この比較は任意の比較であることが可能であり、例えば、大小関係であったり、平均を取ることであったりする。第１のノードは、この方程式を用いて接続が最適ではない、すなわち、ある基準を満足していないことを検出すると、その接続を切断する。
【００１９】
他の実施例では、第１のノードは、特定の接続に関して受信された通信メッセージの最後の時刻を保持する。ある間隔で、第１のノードは、ある値との比較など予め構成された方程式において最後の送信時刻を用いる。この値は、オペレータが予め構成することが可能であり、他の値に基づいて数学的計算によって生成されることもあり、又は、他の値に関係することもある。この比較は任意の比較であることが可能であり、例えば、大小関係であったり、平均を取ることであったりする。第１のノードは、この方程式を用いて接続が最適ではない、すなわち、ある基準を満足していないことを検出すると、その接続を切断する。
【００２０】
状況によっては、他の接続の平均ほど適切に動作していない接続や、他の接続の平均のある百分率の範囲内で動作していない接続や、所定の動作範囲との比較で動作していない接続は切断するのが好ましい。よって、そのような場合には、他の実施例では、第１のノードは、その接続に関して特定の通信統計を取り、ある間隔でこれらの統計の平均を計算して、計算された平均よりも下にある又は計算された平均のある百分率よりも下にある接続を切断する。
【００２１】
ときには、１つのノードが、ピアツーピア・ネットワークにおいて、通信の処理のために過負荷となることがある。そのような状況では、通信処理の負荷を分割可能であることが有益である。従って、本発明のある実施例では、複数のノードが、異なる点でネットワークに接続して負荷を共有することが可能である。これらの複数のノードは、ノード相互間の、又は、マスタ・ノードへの通信経路を保持して、他のネットワーク・ノードが何であるのか、そして、それぞれのノードがどこに接続されているのかに関する情報を送受信する。これにより、複数のノードが負荷を共有することが可能になる。これらのノードは、また、処理しているサーチに関してマスタ・ノードに報告を返すこともある。
【００２２】
何度も１つのネットワークに接続するときには、負荷は、接続の試みがある時刻に生じている回数に関係して、ノードのリソースに配置される。ノードがネットワークへの複数の接続の試みを制御する又は減少させる方法を有していれば、それはノードにとって有益である。本発明の実施例では、ノードは、設定された数の同時的な接続の試みを可能にするように構成されている。接続が受け入れられると、ノードは、新たな接続の試みを追加して、この設定された値を維持する。この方法がなければ、１０００の他のノードに接続しようとするノードは、１０００の同時的な接続を試みることになる。この方法を用いれば、そして、最大で５０の同時的な接続を可能にするように構成されていれば、ノードは、ネットワークへの５０の同時的な接続の試みを試みる。これらの接続の試みが成功するか失敗するかに応じて、ノードは、新たな接続の試みを十分に追加して、５０という設定された限度に到達する。１０００の接続という限度がいったん確立されれば、ノードは、それ以上の接続を試みない。
【００２３】
ノードによる同時的な接続の試みの数を制限し制御することで負荷が抑制されるのであるが、多数の同時的な接続の試みから開始して、後でその数を設定された値に制限することが望ましい場合もある。別の実施例では、ノードは、設定された数だけの同時的な接続の試みを試みるように構成される。接続の試みが最初に始まるときには、ノードは、成功裏の接続の数がある値に達するまで、可能な限り多くの接続を試みる。この値は、オペレータによって予め構成されていることが可能であり、他の値に基づいて数学的計算によって生成されることもあり、又は、他の値と関係することもある。いったんこの値に到達すると、ノードは、その試みを、上述した制限された同時的接続の方法まで縮小させる。
【００２４】
多くの場合、第１のノードは第２のノードに接続し、いくらかの時間の後で、第２のノードは、第１のノードにそれを知らせずに、送信を停止する。第２のノードが送信を停止するのは、技術的問題のためであるか、又は、第２のノードがもはや用いられないからである。いくらかの時間が経過した後では、予めの注意として接続を廃棄するのが第１のノードに有益である。ある実施例では、第１のノードは、いつ第２のノードに接続するかの記録を取るように構成される。いくらかの構成された又は計算された時間限度に到達すると、第１のノードは接続を廃棄して、同じノードに再接続するか又は別のノードに接続することを試みる。
【００２５】
ノードは、ネットワークに接続すると、潜在的に接続可能な他のノードに関するアドレス情報を一定間隔で受け取る。これらの新たなノードは、発見されると、キャッシュに追加される。このキャッシュは、ノードに、潜在的な新たな接続を提供するのに用いられる。ノードの中には、同時に有することが可能な接続の数に関して限度が設定されているものがある。そのような設定された限度に到達した場合には、これらのノードは、それ以上のノードに接続することはなく、新たに発見されたノードはすべて自らのキャッシュに追加し続ける。１つのノードが非常に長い接続を維持する場合には、このキャッシュの中のノードは、様々な理由により無効になりうる。ノードが最終的に接続を失いキャッシュの中のノードへの接続を試みると、キャッシュの中のノードは無効であるから、リソースが消費され浪費される。従って、更に別の実施例では、ノードは、通常のようにノードをそのキャッシュに追加するように構成されていて、更に、設定された期間ごとに、又は、キャッシュがある限度に到達すると、このキャッシュをクリアするように構成されている。キャッシュを一定間隔でクリアすることにより、無効なノードを減少させることが達成できる。
【００２６】
次に例について説明するが、以下の例は、本発明による方法の様々な実施例を説明するためのものである。
例１：図５を参照すると、この例では、サーチ・リクエストからホップ情報を取得して、この情報を用いることによりネットワークに最適に接続する方法を説明している。
【００２７】
この例では、ノードＡは、ノードＢに接続されていて、ネットワークの残りと最適に接続することを望んでいる。このネットワークは通信メッセージが最大で５ホップ移動することが可能であるように構成されており、従って、ノードＡは５ホップ離れたノードを探すように構成されている。それぞれのノードは、「Samuel.txt」と称されるファイルを含む。ノードＡは、ターム「Samuel.txt」を用いて、ノードＢを介してネットワークにサーチ・メッセージを送出する。ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦが、すべて応答する。ノードＡはそれぞれのサーチ応答を調べ、ノードＦが５ホップ離れていることを発見する。ノードＡはノードＦに接続する。ノードＡは、ターム「Samuel.txt」を用いて、ノードＦを介してネットワークにサーチ・メッセージを送出する。ノードＢ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ及びＲが応答する。ノードＡはそれぞれのサーチ応答を調べ、ノードＢ及びＲが５ホップ離れていることを発見する。ノードＡは既にノードＢに接続されていることを知っているので、ノードＲだけに接続する。ノードＡは、ターム「Samuel.txt」を用いて、ノードＲを介してネットワークにサーチ・メッセージを送出する。ノードＦ、Ｇ、Ｈ、Ｉ、Ｒ、Ｑ、Ｐ、Ｏ及びＮが応答する。ノードＡはそれぞれのサーチ応答を調べ、ノードＦ及びＮが５ホップ離れていることを発見する。ノードＡは既にノードＦに接続されていることを知っているので、ノードＮだけに接続する。ノードＡは、ターム「Samuel.txt」を用いて、ノードＮを介してネットワークにサーチ・メッセージを送出する。ノードＪ、Ｋ、Ｌ、Ｍ、Ｎ、Ｏ、Ｐ、Ｑ及びＲが応答する。ノードＡはそれぞれのサーチ応答を調べ、ノードＪ及びＲが５ホップ離れていることを発見する。ノードＡは既にノードＲに接続されていることを知っているので、ノードＪだけに接続する。ノードＡは、ターム「Samuel.txt」を用いて、ノードＪを介してネットワークにサーチ・メッセージを送出する。ノードＪ、Ｋ、Ｌ、Ｍ及びＮが応答する。ノードＡはそれぞれのサーチ応答を調べ、ノードＮが５ホップ離れていることを発見する。ノードＡは既にノードＮに接続されていることを知っているので、もう接続はしない。ノードＡは、この時点ですべてのノードから５ホップの距離にあり、すべてのノードからのすべての通信を受信する。
【００２８】
例２：再び図５を参照するが、例２では、ピングからホップ情報を取得し、この情報を用いてネットワークと最適に接続する方法について説明する。
この例では、ノードＡは、ノードＢに接続されていて、ネットワークの残りと最適に接続することを望んでいる。このネットワークは通信メッセージが最大で５ホップ移動することが可能であるように構成されており、従って、ノードＡは５ホップ離れたノードを探すように構成されている。ノードＡは、ノードＢを介してネットワークにピング・メッセージを送出する。ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦが、すべて応答する。ノードＡはそれぞれの応答を調べ、ノードＦが５ホップ離れていることを発見する。ノードＡはノードＦに接続する。ノードＡは、ノードＦを介してネットワークにピングを送出する。ノードＢ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ及びＲが応答する。ノードＡはそれぞれの応答を調べ、ノードＢ及びＲが５ホップ離れていることを発見する。ノードＡは既にノードＢに接続されていることを知っているので、ノードＲだけに接続する。ノードＡは、ノードＲを介してネットワークにピング・メッセージを送出する。ノードＦ、Ｇ、Ｈ、Ｉ、Ｒ、Ｑ、Ｐ、Ｏ及びＮが応答する。ノードＡはそれぞれの応答を調べ、ノードＦ及びＮが５ホップ離れていることを発見する。ノードＡは既にノードＦに接続されていることを知っているので、ノードＮだけに接続する。ノードＡは、ノードＮを介してネットワークにピング・メッセージを送出する。ノードＪ、Ｋ、Ｌ、Ｍ、Ｎ、Ｏ、Ｐ、Ｑ及びＲが応答する。ノードＡはそれぞれの応答を調べ、ノードＪ及びＲが５ホップ離れていることを発見する。ノードＡは既にノードＲに接続されていることを知っているので、ノードＪだけに接続する。ノードＡは、ノードＪを介してネットワークにピング・メッセージを送出する。ノードＪ、Ｋ、Ｌ、Ｍ及びＮが応答する。ノードＡはそれぞれの応答を調べ、ノードＮが５ホップ離れていることを発見する。ノードＡは既にノードＮに接続されていることを知っているので、もう接続はしない。ノードＡは、この時点ですべてのノードから５ホップの距離にあり、すべてのノードからのすべての通信を受信する。
【００２９】
例３：図５を参照して、例３では、より多くの接続オプションが存在するように他のノードを見つける方法を説明する。
この例では、ノードＡは、接続する他のノードを見つけることを望んでいる。ノードＡは、既にノードＢに接続されている。このネットワークは通信メッセージが最大で５ホップ移動することが可能であるように構成されている。それぞれのノードは、「Samuel.txt」と称されるファイルを含む。ノードＡは、ターム「Samuel.txt」を用いて、ノードＢを介してネットワークにサーチ・メッセージを送出する。ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦが、すべて応答する。ノードＡはそれぞれのサーチ応答を調べ、そのメッセージに含まれているアドレス情報を用いて、これらのノードに接続する。
【００３０】
例４：図２及び３を参照して、例４では、存在している重複メッセージの数に着目することによりノードの接続を最適化する方法を説明する。
図３を参照すると、ノードＢは、ファイル「Samuel.txt」を見つけようとしており、ノードＡへの接続とノードＣへの接続との両方からサーチ・リクエストを送出する。ノードＣはサーチ・リクエストを受け取る。ノードＡはサーチ・リクエストを受け取る。ノードＡはサーチ・リクエストをノードＣに転送する。ノードＣはノードＡから重複メッセージを受信したことを記録する。ノードＣは、重複メッセージを受信したときには接続を廃棄するように構成されていることを発見し、従って、ノードＡへの接続を廃棄する。ノードＣはノードＡからのサーチを依然として見ることができるが、これは、それらのサーチがノードＢを介して移動するからである。次に図２を参照すると、最終的な結論は、ネットワークからのすべての通信を受け取るにはただ１つの接続だけが必要であるということである。
【００３１】
例５：図４を参照して、図５では、１つの接続上で受信される通信メッセージの数をモニタすることによりノードの接続を最適化する方法を説明する。
この例では、メイン・ノード４は、すべての接続からいくつの通信メッセージを受信しているかをモニタし、それを平均と比較することによって、その接続を最適化することを望んでいる。ある接続が平均に満たない場合には、その接続は切断される。メイン・ノード４は、以下の統計を記録する。
【００３２】
メイン・ノード２は、１の通信メッセージを送信した。
メイン・ノード３は、１の通信メッセージを送信した。
リーフ・ノードＧは、１の通信メッセージを送信した。
【００３３】
リーフ・ノードＨは、１の通信メッセージを送信した。
メイン・ノード４は、例えば５分だけ待機し、以下の統計を記録する。
メイン・ノード２は、５１の通信メッセージを送信した。
【００３４】
メイン・ノード３は、５３の通信メッセージを送信した。
リーフ・ノードＧは、５４の通信メッセージを送信した。
リーフ・ノードＨは、１の通信メッセージを送信した。
メイン・ノード４は、すべてのメッセージのデルタを相互に加算し、４で除算して３８．７５という平均を得る。メイン・ノード４は、平均より下のすべての接続を廃棄するように構成されているので、リーフ・ノードＨへの接続を廃棄する。
【００３５】
例６：図４を参照して、図６では、１つの接続上で受信された最後の送信の時刻をモニタすることによりノードの接続を最適化する方法を説明する。
この例では、メイン・ノード４は、その接続が通信メッセージを受信した最後の時刻がいつであるかをモニタし、それをある値と比較することによって、その接続を最適化するようにプログラムされている。ある接続が１分以内に通信メッセージを全く受信しない場合、ノードは、その接続を切断する。メイン・ノード４は、以下の統計を記録する。
【００３６】
メイン・ノード２は、１の通信メッセージを送信した。
メイン・ノード３は、１の通信メッセージを送信した。
リーフ・ノードＧは、１の通信メッセージを送信した。
【００３７】
リーフ・ノードＨは、１の通信メッセージを送信した。
メイン・ノード４は、１分だけ待機し、以下の統計を記録する。
メイン・ノード２は、５１の通信メッセージを送信した。
【００３８】
メイン・ノード３は、５３の通信メッセージを送信した。
リーフ・ノードＧは、５４の通信メッセージを送信した。
リーフ・ノードＨは、１の通信メッセージを送信した。
メイン・ノード４は、１分以内に通信メッセージを全く受信しないすべての接続を廃棄するように構成されているので、リーフ・ノードＨへの接続を廃棄する。
【００３９】
例７：図４を参照して、図７では、その接続上で受信されるサーチ・リクエストの数をモニタすることによりノードの接続を最適化する方法を説明する。
この例では、メイン・ノード４は、すべての接続からいくつのサーチ・リクエストを受信しているかをモニタし、それを平均と比較することによって、その接続を最適化するようにプログラムされている。ある接続が平均に満たない場合には、その接続は切断される。メイン・ノード４は、以下の統計を記録する。
【００４０】
メイン・ノード２は、１のサーチ・リクエストを送信した。
メイン・ノード３は、１のサーチ・リクエストを送信した。
リーフ・ノードＧは、１のサーチ・リクエストを送信した。
【００４１】
リーフ・ノードＨは、１のサーチ・リクエストを送信した。
メイン・ノード４は、５分だけ待機し、以下の統計を記録する。
メイン・ノード２は、５１のサーチ・リクエストを送信した。
【００４２】
メイン・ノード３は、５３のサーチ・リクエストを送信した。
リーフ・ノードＧは、５４のサーチ・リクエストを送信した。
リーフ・ノードＨは、１のサーチ・リクエストを送信した。
メイン・ノード４は、すべてのメッセージのデルタを相互に加算し、４で除算して３８．７５という平均を得る。メイン・ノード４は、平均より下のすべての接続を廃棄するように構成されているので、リーフ・ノードＨへの接続を廃棄する。
【００４３】
例８：図６を参照して、例８では、複数のノードの間で負荷を分割しその情報をマスタ・ノードに報告する方法を説明する。マスタ・ノードは、また、負荷を共有するノードがどのネットワーク・ノードに接続されているのかを追跡する。
【００４４】
ここでは、ノード１、７及び１３は、最適な点においてネットワークをモニタする負荷を共有するものとして示されている。ノード１はノード２に接続され、この情報をマスタ・ノードＡに報告する。ノード７はノード８に接続され、この情報をマスタ・ノードＡに報告する。ノード１３はノード１４に接続され、この情報をマスタ・ノードＡに報告する。ノード７はノード２に接続することを望み、このリクエストをマスタ・ノードＡに送信する。マスタ・ノードＡは、ノード１がノード２に接続されていることを知っており、このリクエストを否定する。
【００４５】
ノード２は、「samuel.txt」に対するサーチ・リクエストを生じる。ノード１はこの通信メッセージを受信し、マスタ・ノードＡに転送する。マスタ・ノードＡはこの情報を記録する。ノード１７は、「bob.txt」に対するサーチ・リクエストを生じる。ノード１３はこの通信メッセージを受信し、マスタ・ノードＡに転送する。マスタ・ノードＡはこの情報を記録する。
【００４６】
例９：図６及び７を参照して、例９では、複数のノードの間で負荷を分割しその情報をマスタ・ノードに報告する方法を説明する。マスタ・ノードは、また、負荷を共有するノードに、どのネットワーク・ノードに接続するのかを伝える。
【００４７】
まず図７を参照すると、この例では、ノード１、７及び１３は、ネットワークに参加することを望んでいる。ノード１、７及び１３は、通信メッセージをマスタ・ノードＡに送り、クライアントに接続することを求める。マスタ・ノードＡは、ノード２への接続情報を用いて、ノード１に応答する。マスタ・ノードＡは、ノード８への接続情報を用いて、ノード７に応答する。マスタ・ノードＡは、ノード１４への接続情報を用いて、ノード１３に応答する。
【００４８】
ノード１、７及び１３は、最適な点において接続しネットワークをモニタする負荷を共有している。ノード１はノード２に接続され、この情報をマスタ・ノードＡに報告する。ノード７はノード８に接続され、この情報をマスタ・ノードＡに報告する。ノード１３はノード１４に接続され、この情報をマスタ・ノードＡに報告する。ノード７はノード２に接続することを望み、このリクエストをマスタ・ノードＡに送信する。マスタ・ノードＡは、ノード１がノード２に接続されていることを知っており、このリクエストを否定する。
【００４９】
ノード２は、「samuel.txt」に対するサーチ・リクエストを生じる。ノード１はこの通信メッセージを受信し、マスタ・ノードＡに転送する。マスタ・ノードＡはこの情報を記録する。ノード１７は、「bob.txt」に対するサーチ・リクエストを生じる。ノード１３はこの通信メッセージを受信し、マスタ・ノードＡに転送する。マスタ・ノードＡはこの情報を記録する。
【００５０】
例１０：図８を参照して、図１０では、ネットワークへの接続の試みを減少させる方法を説明する。
この例では、ノードＣは、最大で３つの他のノードに接続することを望んでいる。そのキャッシュには、以下のエントリを有する。
【００５１】
ノードＡ
ノードＨ
ノードＬ
ノードＶ
ノードＢ
ノードＯ
ノードＥ
ノードＤ
ノードＣは、最大で２つの同時的な接続の試みだけを有し、それぞれの接続の試みのために１０秒だけ待機するように構成されている。ノードＣは、ノードＡ及びノードＨに接続することを試みる。ノードＣは、ノードＡに接続し、接続を確立する。ノードＣは、ノードＨへの接続の試みを待機し続ける。ノードＣはノードＡに接続したので、１つの接続スロットの空きが存在し、従って、ノードＣはノードＶへの接続を試みる。ノードＨへの接続の試みは失敗し、従って、接続スロットの空きが１つ存在する。ノードＣはノードＢへの接続を試み、この接続の試みは成功する。再び接続スロットの空きが１つ存在するので、ノードＣは、ノードＯへの接続を試みる。エラーが直ちに生じ、同時に、ノードＶへの接続の試みも同様に失敗する。この時点で、接続スロットの空きが２つ存在する。ノードＣは、ノードＥ及びノードＤへの接続を試みる。ノードＣのノードＤに対する接続の試みは成功する。１０秒後に、ノードＥへの接続の試みは失敗する。
【００５２】
以上で、好適実施例について説明したが、本発明は、特に断らない限り、冒頭の特許請求の範囲の範囲内で実現されうる。
【図１】
2011066934.tif 000003
【図２】
2011066934.tif 000004
【図３】
2011066934.tif 000005
【図４】
2011066934.tif 000006
【図５】
2011066934.tif 000007
【図６】
2011066934.tif 000008
【図７】
2011066934.tif 000009
【図８】
2011066934.tif 000010
【手続補正書】
【提出日】平成22年12月17日(2010.12.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ピアツーピア・ネットワークを監視する負荷を分割する方法であって、前記方法は、前記ピアツーピア・ネットワークにおける第１のノードで、
（ａ）前記ピアツーピア・ネットワークにおける第２のノードによって報告された情報を受けるステップであって、前記情報は、前記第２のノードにどのノードが接続されたかに関する情報を含む、ステップと、
（ｂ）受けた前記情報を使用して、前記第２のノードに接続されたノードとは異なるノードに接続するステップと、
（ｃ）前記第１のノードにどのノードが接続されたかに関する情報を含む情報を報告して、前記第２のノードも報告した前記情報へのアクセスを有するようにし、それによって、前記第１のノードと前記第２のノードとの間で前記ピアツーピア・ネットワークを監視する前記負荷を分割するステップと、
を含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記第２のノードによって報告された前記情報は、前記第２のノードが受けたサーチ・リクエストを含む、方法。
【請求項３】
請求項１に記載の方法において、前記第２のノードによって報告された前記情報を受けるステップは、マスタ・ノードから前記情報を受けるステップを含み、
前記第２のノードは、前記情報を直接前記マスタ・ノードに報告することを特徴とする方法。
【請求項４】
請求項１に記載の方法において、異なるノードに接続するステップは、接続するためのノードに対する接続情報を返すようにマスタ・ノードに要求するステップを含み、前記マスタ・ノードは、前記第２のノードによって報告された前記情報を使用して、前記接続情報を前記第１のノードに返すことを特徴とする方法。
【請求項５】
請求項１に記載の方法において、前記情報を報告するステップは、前記情報をマスタ・ノードに報告するステップを含み、
前記第２のノードは、前記第１のノードが報告する前記情報を、前記マスタ・ノードから受けることを特徴とする方法。
【請求項６】
請求項１に記載の方法において、接続するための前記ノードをキャッシュに記憶するステップを更に含み、接続するための前記ノードは、前記第２のノードに接続されたノードとは異なることを特徴とする方法。
【請求項７】
請求項６に記載の方法において、前記キャッシュをクリアするステップを更に含むことを特徴とする方法。
【請求項８】
ピアツーピア・ネットワークを最適に用いる方法であって、該方法は、前記ピアツーピア・ネットワークにおける第１のノードで、
（ａ）前記ピアツーピア・ネットワークにおける他のノードに接続するステップと、
（ｂ）前記他のノードへの接続の各々に対して、所定の統計を取るステップと、
（ｃ）前記統計に基づいて前記他のノードのうちの１つのノードから切断するステップと、
を含むことを特徴とする方法。
【請求項９】
請求項８記載の方法において、接続の各々に対して取られる前記統計は、前記接続上で受信された通信メッセージの数であることを特徴とする方法。
【請求項１０】
請求項８記載の方法において、接続の各々に対して取られる前記統計は、送信が前記接続上で最後に受信された時刻であることを特徴とする方法。
【請求項１１】
請求項８記載の方法において、接続の各々に対して取られる前記統計は、前記接続上で受信されたサーチの数であることを特徴とする方法。
【請求項１２】
請求項８記載の方法において、前記１つのノードから切断するステップは、前記統計の平均に基づく又は前記統計の平均の百分率の中にあることを特徴とする方法。
【請求項１３】
請求項８記載の方法において、前記１つのノードから切断するステップは、前記１つのノードへの接続に対する統計が前記他のノードへの接続に対する統計と比較してより低い値であることに基づくことを特徴とする方法。
【請求項１４】
複数のノードを有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）最大の同時接続値を定義するステップと、
（ｂ）第１のノードを介して、前記ピアツーピア・ネットワークにおいて前記最大同時接続値までノードへの複数の接続を試みるステップと、
（ｃ）接続の試みが成功するか失敗するかにより、新たな接続の試みを前記同時接続値まで追加するステップと、
を含むことを特徴とする方法。
【請求項１５】
請求項１４記載の方法において、前記第１のノードは、所定の数の成功裏の接続試みまで、前記最大同時接続値より多く試みることを特徴とする方法。
【請求項１６】
第１のノードと第２のノードとを少なくとも有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）前記第１のノードを前記第２のノードに接続するステップと、
（ｂ）接続の回数を前記第１のノードに記録するステップと、
（ｃ）間隔をおいて、前記第１のノードの接続時間を値と比較するステップと、
（ｄ）前記値に到達したときには、前記第１のノードを前記第２のノードから切断するステップと、
を含むことを特徴とする方法。
【請求項１７】
複数のノードを有するピアツーピア・ネットワークを最適に用いる方法であって、
（ａ）前記ネットワークにおけるあるノードで、前記複数のノードに関するアドレス情報を取得するステップと、
（ｂ）前記アドレス情報をキャッシュに追加するステップと、
（ｃ）特定のイベントが生じたときに前記キャッシュをクリアするステップと、
を含むことを特徴とする方法。
【請求項１８】
請求項１７記載の方法において、前記イベントは、前記キャッシュが特定のサイズに到達することであることを特徴とする方法。
【請求項１９】
請求項１７記載の方法において、前記イベントは、前記キャッシュの中の前記接続情報が特定の古さに到達することであることを特徴とする方法。
【外国語明細書】
2011066934000001.pdf