(57)【要約】  【課題】  Ｐ２Ｐネットワークを効率的に拡張するための方法および装置を提供する。  【解決手段】  Ｐ２Ｐネットワークを効率的に拡張するための本発明の方法および装置の一実施形態は、要求側ノードから検索要求メッセージを受信するステップと、要求されたデータを有するノードの代わりに要求側ノードに応答メッセージを送信するステップと、を含み、応答メッセージは中間ノードにおいて発生する。例えば、「応答側」ノードが要求側ノードから遠すぎて検索要求メッセージを受信することができない場合に、中間ノードが応答側ノードの代わりに応答することができる。【選択図】  図２
2008537619.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークにおいて第１のノードから第２のノードにデータを転送するための方法であって、
前記第２のノードから、データを要求する検索要求メッセージを受信するステップと、
前記第１のノードの代わりに第３のノードによって前記第２のノードに、前記第１のノードが前記要求されたデータを有することを示す応答メッセージを送信するステップと、
を含む、方法。
【請求項２】
前記第３のノードが、前記検索要求メッセージが前記第１のノードに到着することができないと判定した場合に、前記第３のノードが前記第１のノードの代わりに前記応答メッセージを送信する、請求項１に記載の方法。
【請求項３】
前記検索要求メッセージの有効期間フィールドまたはホップ・カウント・フィールドを調べて、前記検索要求メッセージが前記ネットワーク内でどのくらい遠くまで伝達可能であるかを判定するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記送信するステップが、
前記第３のノードに関連したデータベースにおいて前記要求されたデータに関連する情報を特定するステップであって、前記データベースが、前記ネットワーク上で実行された少なくとも１つの以前のデータ転送に関連する少なくとも１つのエントリを含む、ステップと、
前記特定した情報に従って、前記応答メッセージを前記第２のノードに送信するステップと、
を含む、前出の請求項のいずれか１項に記載の方法。
【請求項５】
前記データベースにおいて前記少なくとも１つのエントリを保持するための時間期間が、固定数の最新データ転送、固定数の最も人気のある応答、固定数の最も人気のないデータ応答、および、前記ネットワークにおいて転送側ノードがアクティブである時間長のうち少なくとも１つによって指示される、請求項４に記載の方法。
【請求項６】
前記少なくとも１つのエントリが、前記少なくとも１つの以前のデータ転送に関連した前記第３のノードによって以前に受信された少なくとも１つの応答メッセージから取得された情報を含む、請求項４または５に記載の方法。
【請求項７】
前記少なくとも１つのエントリが、前記少なくとも１つの以前のデータ転送に関連した前記第１のノードによって以前に送信された少なくとも１つの応答メッセージから取得された情報を含む、請求項４または５に記載の方法。
【請求項８】
前記情報が、前記少なくとも１つの以前のデータ転送において転送されたデータ名、前記少なくとも１つの以前のデータ転送において転送されたデータの内容の記述、前記少なくとも１つの以前のデータ転送において転送されたデータのサイズ、前記少なくとも１つの以前のデータ転送において転送されたデータのタイプ、前記少なくとも１つの以前のデータ転送の時刻、前記第１のノードと前記第３のノードとを分離するホップ数、前記少なくとも１つの応答メッセージに関連したメタ・データ、前記少なくとも１つの以前のデータ転送において転送されたデータのソース、および前記少なくとも１つの応答メッセージ自体のうち少なくとも１つを含む、請求項４または５に記載の方法。
【請求項９】
前記第３のノードによって受信される応答メッセージごとに、前記情報が前記データベースにおいて自動的にセーブされ、
前記情報のセーブは、利用可能なデータベース・メモリ、利用可能なデータベース・ストレージ、ネットワーク帯域幅速度、ネットワーク帯域幅利用、および、前記少なくとも１つの応答メッセージのソースが前記ネットワークにおいてアクティブである時間長のうち少なくとも１つに基づいている、請求項４または５に記載の方法。  
【請求項１０】
コンピュータ・システムにロードされてそこで実行されると、前記コンピュータ・システムに、いずれかの前出の請求項に従った方法の全てのステップを実行させる、コンピュータ・プログラム・コードを含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピューティング・ネットワークに関し、更に具体的には、ピア・ツー・ピア・データ転送ネットワークの拡張に関する。
【背景技術】
【０００２】
図１は、ピア・ツー・ピア（Ｐ２Ｐ）でインタラクトするノード（例えばコンピューティング・デバイス）のネットワーク１００の概略図である。一般に、要求側ノード１０１は、検索メッセージ１０５（例えば、要求側ノード１０１が検索を望むデータに関するキーワードを含む）を、ピア接続を介して要求側ノード１０１と通信状態にある少なくとも１つの中間ノード１１１に送信する。中間ノード１１１は検索メッセージ１０５を受信し、この検索メッセージ１０５を少なくとも１つの追加ノード１１１に転送する。最終的に、検索メッセージ１０５は、要求されたデータを有する少なくとも１つの応答側ノード１０３に到着する（場合によっては、検索メッセージ１０５が転送される第１の中間ノード１１１が応答側ノード１０３でもある）。次いで、少なくとも１つの応答側ノード１０３は、応答メッセージ１０７を、例えば中間ノード１１１を介して要求側ノード１０１に返信する。次いで、要求側ノード１０１は、例えば直接接続１０９を介して応答側ノード１０３に直接接続することによって、応答側ノード１０３からの関連データを要求する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のＰ２Ｐシステムにおいては、検索メッセージ１０５および応答メッセージ１０７を含むメッセージは、有効期間（time to live）またはホップ・カウントが限られている。すなわち、メッセージは、いったん所定の最大数のノード１０１、１０３、または１１１まで転送されると、有効期限が切れる。このため、要求側ノード１０１が有効期間４の第２の検索メッセージを発生し、要求されたデータが存在するノード（例えばノード１１３）が要求側ノード１０１から５「ホップ」以上離れている場合、第２の検索メッセージは、要求されたデータを取得する前に有効期限が切れる。この問題は、検索メッセージの有効期間を延長することによって、またはノード当たりのピア接続数を増すことによって軽減することができる。しかしながら、いずれの手法でもネットワーク・トラフィックが増大する結果となる（ネットワーク１００のファンアウト（fan out）の性質のため、前者の増大は指数的である）。
【０００４】
従って、当技術分野において、Ｐ２Ｐネットワークを効率的に拡張するための方法および装置が必要とされている。
【課題を解決するための手段】
【０００５】
従って、本発明は、第１の態様において、ネットワークにおいて第１のノードから第２のノードにデータを転送するための方法を提供する。前記方法は、前記第２のノードから、データを要求する検索要求メッセージを受信するステップと、前記第１のノードの代わりに第３のノードによって前記第２のノードに、前記第１のノードが要求されたデータを有することを示す応答メッセージを送信するステップと、を含む。
【０００６】
好ましくは、前記第３のノードは、前記第１のノードと前記第２のノードとの間に配置された中間ノードである。
【０００７】
好ましくは、前記第３のノードは、前記検索要求メッセージが前記第１のノードに到着することができないと判定した場合に、前記第３のノードが前記第１のノードの代わりに前記応答メッセージを送信する。
【０００８】
この方法は、前記検索要求メッセージの有効期間フィールドまたはホップ・カウント・フィールドを調べて、前記検索要求メッセージが前記ネットワーク内でどのくらい遠くまで伝達可能であるかを判定するステップを更に含むことができる。
【０００９】
好ましくは、前記送信するステップが、前記第３のノードに関連したデータベースにおいて前記要求されたデータに関連する情報を特定するステップであって、前記データベースが、前記ネットワーク上で実行された少なくとも１つの以前のデータ転送に関連する少なくとも１つのエントリを含む、ステップと、前記特定した情報に従って前記応答メッセージを前記第２のノードに送信するステップと、を含む。
【００１０】
好ましくは、前記データベースにおいて前記少なくとも１つのエントリを保持するための時間期間が、固定数の最新データ転送、固定数の最も人気のある応答、固定数の最も人気のないデータ応答、および、前記ネットワークにおいて転送側ノードがアクティブである時間長のうち少なくとも１つによって指示される。
【００１１】
この方法は、前記要求データの少なくとも１つのソースに定期的に問合わせを行って、前記少なくとも１つのエントリの妥当性を確認するステップを更に含むことができる。
【００１２】
好ましくは、前記少なくとも１つのエントリは、前記少なくとも１つの以前のデータ転送に関連した前記第３のノードによって以前に受信された少なくとも１つの応答メッセージから取得された情報を含む。
【００１３】
好ましくは、前記少なくとも１つのエントリが、前記少なくとも１つの以前のデータ転送に関連した前記第１のノードによって以前に送信された少なくとも１つの応答メッセージから取得された情報を含む。
【００１４】
好ましくは、前記情報が、前記少なくとも１つの以前のデータ転送において転送されたデータ名、前記少なくとも１つの以前のデータ転送において転送されたデータの内容の記述、前記少なくとも１つの以前のデータ転送において転送されたデータのサイズ、前記少なくとも１つの以前のデータ転送において転送されたデータのタイプ、前記少なくとも１つの以前のデータ転送の時刻、前記第１のノードと前記第３のノードとを分離するホップ数、前記少なくとも１つの応答メッセージに関連したメタ・データ、前記少なくとも１つの以前のデータ転送において転送されたデータのソース、および前記少なくとも１つの応答メッセージ自体のうち少なくとも１つを含む。
【００１５】
好ましくは、前記第３のノードによって受信される応答メッセージごとに、前記情報が前記データベースにおいて自動的にセーブされる。
【００１６】
好ましくは、前記情報のセーブは、利用可能なデータベース・メモリ、利用可能なデータベース・ストレージ、ネットワーク帯域幅速度、ネットワーク帯域幅利用、および、前記少なくとも１つの応答メッセージのソースが前記ネットワークにおいてアクティブである時間長のうち少なくとも１つに基づいている。  
【００１７】
好ましくは、前記少なくとも１つの応答メッセージは、それに含まれるデータが有効である時間長を示す。
【００１８】
Ｐ２Ｐネットワークを効率的に拡張するための本発明の方法および装置の一実施形態は、要求側ノードからの検索要求メッセージを受信するステップと、要求されたデータを有するノードの代わりに要求側ノードに応答メッセージを送信するステップと、を含み、応答メッセージは中間ノードから発生する。中間ノードは、例えば、「応答側」ノードが要求側ノードから遠すぎて検索要求メッセージを受信することができない場合に、応答側ノードの代わりに応答することができる。
【００１９】
これより、本発明の好適な実施形態について、添付図面を参照しながら、一例としてのみ説明する。
【００２０】
理解を容易にするため、複数の図に共通した同一の要素を示す際に、可能な場合は同一の参照番号を用いている。
【発明を実施するための最良の形態】
【００２１】
一実施形態において、本発明は、Ｐ２Ｐネットワークを効率的に拡張するための方法および装置である。本発明の実施形態によって、Ｐ２Ｐネットワーク上の要求側ノードが、通常は要求側ノードの「範囲」の外であるノードからデータを受信することができ、そのために、範囲外ノードについては中間ノードが「代理で（by proxy）」応答することを可能とする。
【００２２】
図２は、図１に示すネットワーク１００等のＰ２Ｐネットワークを効率的に拡張するための方法２００の一実施形態を示すフロー図である。方法２００は、例えば、Ｐ２Ｐネットワーク１００上のいずれかのノード（例えば１０１、１０３、１１１、または１１３）においても実施することができる。方法２００はステップ２０２において開始し、ステップ２０４に進む。ここで、方法２００は、例えばピア（接続された）・ノードから検索要求メッセージを受信する。
【００２３】
次いで、方法２００はステップ２０６に進む。ここで、方法２００は、検索要求メッセージを調べ、受信器（例えばステップ２０４において検索要求メッセージを受信したノード）が要求されたデータを有するか否かを判定する。受信器が要求されたデータを有する場合、方法２００はステップ２０８に進み、例えば従来のＰ２Ｐプロトコルに従って、ネットワーク１００を介して要求側ノードに応答メッセージを送信する。次いで、この方法はステップ２１２に進み、検索要求メッセージに合致する可能性のある他のデータについてローカル・データベースを調べる。これについては以下で更に詳細に説明する。
【００２４】
あるいは、方法２００がステップ２０６において、受信器が要求されたデータを有しないと判定した場合、方法２００は直接ステップ２１２に進み、受信器にあるローカル・データベースを調べる。ステップ２１２において調べられるローカル・データベースは、ネットワーク１００上で実行された以前のデータ転送（例えば応答側ノードから要求側ノードにデータが転送された）に関する情報を含む少なくとも１つのエントリを含む。一実施形態において、この情報は、転送されたデータ名、転送されたデータの内容の記述、転送されたデータのサイズ、データのタイプ（例えば画像ファイル、オーディオ・ファイル等）、データ転送の時刻、転送されたデータのソース（例えばネットワークＩＤ、アドレス、ポート番号、またはその転送の応答側ノードについての他の形態の識別）、応答側ノードと受信器とを分離するホップ数、または実際のデータ転送の前に送信された応答メッセージに関する他のメタ・データの少なくとも１つを含む。
【００２５】
一実施形態において、受信器は、実際のデータ転送の前に送信された入来応答メッセージから以前のデータ転送に関する情報をセーブする。具体的には、受信器は、応答メッセージを代理応答（proxy response）として再構築するために必要な量の情報を応答メッセージからセーブする。これについては以下で更に詳細に説明する。いくつかの実施形態では、応答メッセージに含まれる全てのデータをセーブする。この実施形態においては、ある特定の以前のデータ転送についてデータベースにセーブされる情報は、そのデータ転送に対応する応答メッセージ全体とすることができる。
【００２６】
具体的には、ステップ２１２において、方法２００は、検索要求メッセージにおいて要求されたデータに合致するかまたは対応するエントリ（例えば応答メッセージ）がデータベース内にあるか否かを判定する。すなわち、方法２００は、データベースが、要求されたデータを有するネットワーク１００内の少なくとも１つのノード（例えばこのノードは現在要求されているものと同じデータに対する以前の要求に応答した可能性がある）を示すエントリを含むか否かを判定する。かかるデータベース・エントリが存在しない場合、方法２００はステップ２１８に進み、検索要求メッセージを次のノードに転送する（例えば検索要求メッセージの有効期間が切れていない場合）か、または、検索要求メッセージを廃棄する（例えばステップ２０４における受信器への送信時に有効期間フィールドの期限が切れた場合）。
【００２７】
あるいは、方法２００がステップ２１２において、検索要求メッセージにおいて要求されたデータに対応するエントリをデータベースが含むと判定した場合、方法２００はステップ２１４に進み、更に、検索要求メッセージが対応するデータベース・エントリのソース（例えば要求されたデータを有するノードと推定される）に到着可能であるか否かを判定する。一実施形態において、方法２００は、検索要求メッセージの有効期間フィールド（これは検索要求メッセージがあといくつのホップを行うことができるかを示す）、またはホップ・カウント・フィールド（これは今までにいくつのホップが行われたかを示す）を調べ、検索要求メッセージがネットワーク内であとどのくらい伝達可能であるかを判定する（例えば、検索要求メッセージが到着可能な最も遠いノードはどれか？）。従って、検索要求メッセージがあとｘ個のホップを行うことができ、かつ、対応するデータベース・エントリのソースが受信器から少なくともｘ＋１個のホップだけ離れている場合、方法２００は、検索要求メッセージは対応するデータベース・エントリのソースに到着することができないと見なす。
【００２８】
方法２００がステップ２１４において、検索要求メッセージが対応するデータベース・エントリのソースに到着することができないと判定した場合、方法２００はステップ２２０に進み、対応するデータベース・エントリのソースの代わりに、例えばプロキシ（proxy）として応答する。一実施形態において、方法２００は、受信器から要求側ノードに応答メッセージを送信することによって、対応するデータベース・エントリのソースの代わりに応答する。この応答メッセージは、対応するデータベース・エントリのソースが、要求側ノードが検索しているデータを有することを示す。
【００２９】
あるいは、方法２００がステップ２１４において、検索要求メッセージが対応するデータベース・エントリのソースに到着可能であると判定した場合、方法２００は２つのうちの１つを行うことができる。一実施形態において、方法２００は単に、例えば従来のＰ２Ｐプロトコルに従って、検索要求メッセージを次のノードに転送する。
【００３０】
別の実施形態においては、方法２００は、ステップ２１６において、検索要求メッセージが対応するデータベース・エントリのソースに到着する可能性がある場合であっても、対応するデータベース・エントリのソースの代わりに検索要求メッセージに応答する。この場合、方法２００は、いったん要求側ノードに応答したら検索要求メッセージを廃棄することがある（すなわち、検索要求メッセージをそれ以上はネットワーク内で転送しない）。この場合、対応するデータベース・エントリのソースの代わりに応答することは、検索要求メッセージに対する応答を迅速にする（例えば、伝送路内のもっと前の方のノードにおいて応答を発生する）ために、または、ネットワーク・トラフィックを軽減する（例えば、いったん対応するデータベース・エントリのソースが識別されたら検索要求メッセージがそれ以上ネットワーク内で伝達するのを防ぐ）ために、望ましい場合がある。これらの利点は、データ要求に応答するために単一の有限応答のみが必要である場合（例えば株価についての問合せ等）に、特に望ましい場合がある。
【００３１】
方法２００は、ステップ２２２において終了する。いくつかの実施形態において、方法２００全体を要求側ノードにおいて実行可能であることは、当業者には認められよう。すなわち、要求側ノードが以前の応答メッセージの独自のデータベースを維持する場合、要求側ノードは、実際、ステップ２１０〜２１２に従って単に独自のデータベースを検索することによって、要求されたデータを有するノードを識別することができる。
【００３２】
上述のような方法２００は、ネットワーク・トラフィックの増大を最小限に抑えながら、Ｐ２Ｐネットワークを効率的に拡張することを可能にする。Ｐ２Ｐネットワークにおける１つ以上のノードがネットワーク内の他のノードの「代理で」応答することを可能とすることによって、データ要求を追加ノードに実際に送信せずに、データ要求のための検索空間を効果的に拡大する。このため、（例えば検索要求メッセージの有効期間の延長またはノードのピア接続数の増大のいずれかによって）時にネットワーク・トラフィックを指数的に増大させることになる傾向がある従来のＰ２Ｐ拡張方法とは異なり、方法２００は、実際、ネットワークを「拡張」すると同時にトラフィックを一定に保つ。
【００３３】
以前のデータ転送に関連する情報をストアするためのノードのデータベースは様々な基準に従って構築可能であることは、当業者には認められよう。例えば、一実施形態においては、応答メッセージを受信するたびに、ノードは自動的に情報をセーブすることができる。他の実施形態においては、利用可能なメモリ又はストレージ、ネットワーク帯域幅速度、ネットワーク帯域幅利用、またはネットワークにおいて応答側ノードがアクティブである時間長等のパラメータによって、対応するエントリをデータベースにセーブするか否かを指示することができる。更に別の実施形態においては、ノードが受信した応答メッセージと既存のデータベース・エントリを比較し、応答メッセージの関連データのためのエントリが存在しない場合にのみ、受信した応答メッセージのためのエントリを作成することができる。あるいは、関連データのためのデータベース・エントリがすでに存在する場合、受信した応答メッセージを用いて、（例えばそのデータまたはファイルを有するノードのリストを作成することによって）そのデータについての情報を更新することができる。
【００３４】
更に、データベースは、様々な基準に基づいて維持することができる。例えば、スライディング・タイム・ウィンドウ（例えば固定数の最新の検索応答のみに関連した情報をセーブする）、固定数の最も人気のあるデータ検索または最も人気のないデータ検索、またはネットワークで応答側ノードがアクティブである時間長（例えば、ノードは、最長の時間期間アクティブであった応答側ノード数について検索応答情報のサブセットを保持することができる）に従ってデータベース・エントリを維持することを、ノードが指定することができる。
【００３５】
データベース・エントリの妥当性の継続を確実とするため、ノードは、データベースに応答メッセージが入力された他のノードに定期的に問合せを行って、例えば、それらのノードが引き続き関連データを有することを保証することができる。あるいは、応答側ノードは、検索結果が有効な期間を示す（例えば「ライブ・ビデオ・ストリームのこのセクションは１日のみ利用可能です」）、または、応答側ノードがネットワークにおいてアクティブである期間を示すフィールドを応答メッセージに追加することによって、データベース・エントリの管理を支援することができる。
【００３６】
いくつかの実施形態においては、要求側ノードは、範囲外ノードの代わりにプロキシ応答を受信することを望まないことを（例えば検索要求メッセージにそう指定することによって）明示することができる。例えば、要求側ノードは、近傍のノード（例えばある範囲内）がその検索の条件を満足させると予想する場合がある。あるいは、要求側ノードは、プロキシ応答が可能であるホップ・カウントを指定し（例えば「ｎthホップまではプロキシ応答なし」）、最も近いピア・ノードはプロキシ応答を送信しないようにすることができる。更に、要求側ノードは、プロキシ応答の妥当性を保証するために、プロキシ応答に寿命制限を設定することができる（例えば「ｎ日よりも古いデータベース・エントリを参照するプロキシ応答はなし」）。
【００３７】
逆に、応答側ノードは、その応答メッセージに関する情報のセーブを望まないことを（例えば応答メッセージにそう指定ことによって）明示することができる。例えば、応答側ノードは、その通信を近傍のノードのみに制限したい場合がある。あるいは、応答側ノードは、応答メッセージに関する情報をセーブすることが可能な応答メッセージ経路上の所与のポイントを指定し（例えば「ｎthホップを超えるとセーブしない」）、ある範囲内のノードのみが応答メッセージに関する情報をセーブするようにすることができる。
【００３８】
図３は、汎用コンピューティング・デバイス３００を用いて実施されるネットワーク拡張方法の高レベルのブロック図である。一実施形態においては、汎用コンピューティング・デバイス３００は、プロセッサ３０２、メモリ３０４、データ転送モジュール３０５、および、ディスプレイ、キーボード、マウス、モデム等の様々な入／出力（Ｉ／Ｏ）デバイス３０６を含む。一実施形態では、少なくとも１つのＩ／Ｏデバイスはストレージ・デバイスである（例えばディスク・ドライブ、光ディスク・ドライブ、フレキシブル・ディスク・ドライブ）。データ転送モジュール３０５は、通信チャネルを介してプロセッサに結合される物理デバイスまたはサブシステムとして実施可能なことは理解されよう。
【００３９】
あるいは、データ転送モジュール３０５は、１つ以上のソフトウェア・アプリケーション（または、例えば特定用途向けＩＣ（ＡＳＩＣ）のようなソフトウェアおよびハードウェアの組み合わせ）とすることができ、この場合、ソフトウェアをストレージ媒体（例えばＩ／Ｏデバイス３０６）からロードし、汎用コンピューティング・デバイス３００のメモリ３０４において、プロセッサ３０２によって動作させる。このため、一実施形態においては、前出の図を参照して説明した、Ｐ２Ｐネットワークを効率的に拡張するためのデータ転送モジュール３０５は、コンピュータ読み取り可能媒体またはキャリア（例えばＲＡＭ、磁気または光ドライブまたはディスケット等）にストアすることができる。
【００４０】
従って、本発明は、データ転送ネットワークの分野において著しい進歩となる。提供される方法および装置によって、Ｐ２Ｐネットワーク上の要求側ノードが、通常は要求側ノードの範囲外であるノードからデータを受信することができ、そのために、範囲外ノードについては中間ノードが代理で応答することを可能とする。更に、Ｐ２Ｐネットワークを拡張するための従来の方法とは異なり、本発明の方法および装置は実際、データ要求のための検索空間を効果的に拡大しながら、ネットワーク・トラフィックを一定に保つ。
【図面の簡単な説明】
【００４１】
【図１】ピア・ツー・ピアでインタラクトしているノードのネットワークの概略図である。
【図２】図１に示したネットワーク等のＰ２Ｐネットワークを効率的に拡張するための方法の一実施形態を示すフロー図である。
【図３】汎用コンピューティング・デバイスを用いて実施されるネットワーク拡張方法の高レベルのブロック図である。
【図１】
2008537619.tif 000003
【図２】
2008537619.tif 000004
【図３】
2008537619.tif 000005
【国際調査報告】
2008537619.tif 000006
2008537619.tif 000007
2008537619.tif 000008