(57)【要約】      （修正有）【課題】ネットワーク内の探索パス長及びトラフィックの低減を可能にする、自己組織型分散オーバーレイ・ネットワーク内でクエリ（問い合わせ）の結果をキャッシュに入れる確実な手法を提供する。【解決手段】自己組織型分散オーバーレイ・ネットワークで、ネットワーク内のノードと関連付けられたオブジェクトへの参照を分散させる方法において、この参照を記憶している現在のノードは、このオブジェクトについてのクエリを受け取る。このオブジェクトについての受信されたクエリの数が判定され、このオブジェクトについての受信されたクエリの数が所定の閾値に達した場合に、この参照はネットワークにおいて分散される。【選択図】図２
2010182301.tif 000002
【特許請求の範囲】
【請求項１】
自己組織型分散オーバーレイ・ネットワークにおいて前記ネットワーク内のあるノードと関連付けられたあるオブジェクト（Ａ）への参照を分散させる方法であって、前記参照は、前記ネットワークの現在のノード（１００）に記憶されており、
前記現在のノード（１００）において、前記オブジェクトについてのクエリを受信するステップと、
前記オブジェクトについての受信されたクエリの数を判定するステップと、
前記オブジェクト（Ａ）についての前記受信されたクエリの数が所定の閾値（ｐ）に達した場合に、前記参照を前記ネットワークにおいて分散させるステップと
を含む方法。
【請求項２】
前記分散させるステップは、前記現在のノード（１００）へと前記オブジェクト（Ａ）についての１つ以上のクエリを転送した１つ以上のノード（１０２、１０４）へ、前記参照を、前記現在のノード（１００）から分散させるステップを含む、請求項１に記載の方法。
【請求項３】
前記受信するステップは、
前記ネットワーク内のある転送ノード（１０２、１０４）から特定のオブジェクトと関連付けられたクエリを受信するステップであって、前記クエリが、クエリ元のノード（Ｑ１、Ｑ２、Ｑ３）によって生成されたものである、ステップと、
前記クエリ及び関連付けられた転送ノードを記憶するステップと
を含み、
前記判定するステップは、
前記記憶されたクエリに基づいて、前記特定のオブジェクトについての前記クエリの数を判定するステップを含み、
前記分散させるステップは、
前記参照を前記記憶された転送ノードに転送するステップと、
前記転送ノードにおいて前記参照を記憶するステップと
を含む、請求項１又は２に記載の方法。
【請求項４】
前記現在のノードが前記特定のオブジェクトへの参照を含むかどうかを判定するステップと、
前記現在のノードが前記特定のオブジェクトへの参照を含む場合に、前記参照を前記クエリ元のノード（Ｑ１、Ｑ２、Ｑ３）に送るステップと
を更に含み、
前記分散させるステップは、前記現在のノード（１００）が前記特定のオブジェクトについての前記参照を含む場合に、前記参照を転送するステップを含む、請求項３に記載の方法。
【請求項５】
前記クエリ元のノードが、転送ノードである、請求項３又は４に記載の方法。
【請求項６】
前記ネットワークが、複数の異なるオブジェクトを含むものである、請求項３ないし５のいずれか一項に記載の方法。
【請求項７】
前記記憶するステップは、前記特定のオブジェクトについての前記クエリのためのクエリ識別及び前記転送ノードのためのノード識別を記憶するステップを含む、請求項３ないし６のいずれか一項に記載の方法。
【請求項８】
前記クエリ識別及び前記ノード識別はテーブルのエントリとして記憶され、
前記現在のノードにおいて受信された各クエリごとに前記テーブルにおいてエントリが生成され、
前記特定のオブジェクトについての前記クエリの数を判定するステップは、
前記テーブル内の全エントリ数に対する、前記特定のオブジェクトへのクエリのための前記クエリ識別を保持する前記テーブル内のエントリ数の比を決定するステップと、
前記比を前記所定の閾値と比較するステップと
を含む、請求項７に記載の方法。
【請求項９】
前記記憶するステップは、
前記特定のオブジェクトについての受信されたクエリごとにカウンタを増分又は減分するステップを含み、
前記クエリの数を判定するステップは、
前記カウンタの現在のカウントを判定するステップを含む、請求項３ないし６のいずれか一項に記載の方法。
【請求項１０】
前記現在のノードは、前記オブジェクトについてのクエリを生成し、出力したことに応答して、又はクエリ元のノードによって生成された前記クエリを転送したことに応答して、前記オブジェクトへの前記参照を獲得するものである、請求項１ないし９のいずれか一項に記載の方法。
【請求項１１】
前記オブジェクトは、所定のコンテンツ、ファイル、文書、サービス、又はプロバイダを含むグループの中から選択されるものである、請求項１ないし１０のいずれか一項に記載の方法。
【請求項１２】
前記自己組織型分散オーバーレイ・ネットワークは、分散ハッシュテーブルを使用するピア・ツー・ピア・ネットワークである、請求項１ないし１１のいずれか一項に記載の方法。
【請求項１３】
プロセッサ（１１２）が実行する際に、請求項１ないし１２のいずれか一項に記載の方法を実行する命令を備えるコンピュータプログラム。
【請求項１４】
自己組織型分散オーバーレイ・ネットワークにおけるノード（１００）であって、
前記ネットワーク内のノードと関連付けられたオブジェクトへの参照（Ａ）と、
請求項１ないし１２のいずれか一項に記載の方法に従って、前記ネットワークにおいて前記オブジェクトへの前記参照を分散させるように構成された処理装置（１１２）と
を備えるノード。
【請求項１５】
請求項１４に記載のノード（１００から１０８）を複数備えている自己組織型分散オーバーレイ・ネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、ピア・ツー・ピア・ネットワークのような自己組織型分散オーバーレイ・ネットワークの分野に関し、より詳細には、そのようなネットワーク内で、ネットワークのノードと関連付けられたオブジェクトへの参照を分散させる方法に関する。さらに、本発明は、そのようなネットワーク内のノードであり、ネットワーク内の特定のノードと関連付けられたオブジェクトへの参照を分散させるように構成されているノードに関する。また、本発明は、複数のそのようなノードを備える自己組織型分散オーバーレイ・ネットワークにも関する。
【背景技術】
【０００２】
ピア・ツー・ピア（Ｐ２Ｐ）ネットワークは、リソース集合の高速な位置決めを可能にする自己組織型分散オーバーレイ・ネットワーク（self-organizing, distributed overlay network）である。Ｐ２Ｐネットワークは、どんなものでも、そのネットワークに参加しているノードの間の物理的接続を利用するアプリケーション層オーバーレイ・ネットワークとして実現される。Ｐ２Ｐネットワークによって対処される基本的な問題は、ピアの集合の間におけるリソース集合の自己組織型分散を行って、その後に各ピアを高速で探索（lookup）することを可能にすることである。
【０００３】
この問題を解決するための有望なアプローチが、分散ハッシュテーブル（DHT, Distributed Hash Table）である。ＤＨＴにおいて、各ピアは、あるキー空間からのいくつかのキーによって識別されるリソースの特定の部分集合を協調して管理する。各ピアは、キー空間から取られるキーと関連付けられている。ピア集合が与えられたとすると、各ピアのキーは、キー空間の、あるパーティションと関連付けられて、そのピアは、関連付けられたパーティションからのキーによって識別される全てのリソースを管理する責任を負うようになる。キーパーティションは、適切なメトリック（測定指標：metric）においてピアのキーに最も近い全てのキーからなり、キーの近接度は、距離関数によって測られる。リソース要求を転送するために、各ピアは、ピアとキーパーティションとの関連付けに関する知識を考慮に入れて、ルーティングネットワークを形成する。各ピアは、典型的には、隣接するキーを有する全てのピアに対して短距離リンクを維持すると共に、いくつかの選択された遠隔のピアに対して少数の長距離リンクも維持している。このようにして確立されたルーティングネットワークを使用して、各ピアは、リソース要求を、各ピアのルーティング・テーブルから得た他のピアに対して、宛先指定して転送し、探索されるキーまでの距離を貪欲に短縮しようと試みる。このように、大部分のＤＨＴは、ネットワークのサイズに対して対数的ないくつかのホップ数を伴う探索を、やはりネットワークのサイズに対して対数的であるルーティング・テーブルを使用して達成する。
【０００４】
ルーティングを効率的にするための有効な特性は、無償で得られるものではない。ＤＨＴを構築し、維持するために、各ピアは、特に、ノードの参加及びノードの障害の問題を処理する必要がある。構造化されたＰ２Ｐネットワークにおいては、自由に近隣のピアを選択することが制限されているため、ネットワーク・ダイナミックスの存在下においてルーティング・テーブルの一貫性（consistency）を再確立するためのメンテナンス・アルゴリズムが必要である。その異なるメンテナンスの戦略は、一貫性の度合い、すなわちネットワークの障害に対する復元力に対して、保守コストを交換（トレードオフ）するようなものである。
【０００５】
ネットワーク内のあるアイテムの可用性を、そのアイテムへの参照を記憶しているピアに障害が発生した場合でさえも最大化し、また、探索トラフィック及び応答時間を低減するためには、システムへのキャッシング及び／又は複製（replication）のやり方を導入する必要がある。これらのアプローチは、結果として、事前対応的にせよ、事後対応的にせよ、ネットワーク全体にわたって参照のコピーを分散させることになる。
【０００６】
コンテンツを求めるクエリ（及びコンテンツ自体）は、均一な分布とならず、普通は、Ｚｉｐｆ分布すると考えられる（非特許文献１参照）ため、複製をネットワーク内の各ピアに分散させるにはマチュア戦略（mature strategy）が必要である。これまで、この問題には、クエリのシンク（受信側）からソースまで遡るパス全体に沿ってクエリ対象の参照をキャッシュに入れることによって対処されている。その場合、次のクエリの際には、最初のクエリをルーティング（経路指定）する際に関与したノードであって、新しいクエリが通るパス上で遭遇した最初のノードが回答することができる。このやり方を使用するシステムの例としては、ＰＡＳＴ（非特許文献２など参照）や、ＣＦＳ（Cooperative File System、協調型ファイルシステム）（非特許文献３参照）などがある。しかし、探索パスに沿った全てのノードに参照をコピーすることになるため、この戦略は、ネットワーク全体にデータを分散させるための高いオーバーヘッドを伴う。コンテンツの需要が低い場合でさえも、全ての参加ノードに知らせるために多くのメッセージが生成されることになる。これは、モバイルネットワークにおいては特に望ましくない、必要以上に高いコストをもたらすことになる。
【０００７】
Ｐ２Ｐネットワークにおけるキャッシング及び複製に関する大規模な研究が行われている。この研究の目的は、トラフィックを低減し、主に遅延の低減によって、ユーザ体験の品質を高めることである。
【０００８】
非特許文献４及び非特許文献５は、非構造化Ｐ２Ｐネットワークにおけるキャッシング戦略の、理論的な部分と実証的な部分の両方を含む入念な分析を提供している。これらの研究で行われている重要な仮定は、サーチをランダムとする（すなわち、サーチ技術として、フラッディングではなくランダムウォークが使用される）ことである。この仮定に基づいて、キャッシングの強力な理論モデル及び様々なキャッシング技術の特徴が提供されている。主な結果としては、いわゆる「平方根複製（square root replication）」が最適なキャッシング戦略であるというものである。最適化すべき目標関数は、期待されるサーチサイズ、すなわち、オブジェクトを探し出すためにコンタクトを取るべき平均ホップ数である。
【０００９】
非特許文献６、非特許文献７、及び非特許文献８は、Ｐ２Ｐネットワークにおけるキャッシングを目的とする別グループの研究を示している。しかし、これらの研究は、サーチよりもコンテンツの分散に注目している。これらの研究では、コミュニティ内のピア間でコンテンツを分散させる方が、外からコミュニティにコンテンツを転送するより大幅に安くつくようなＰ２Ｐコミュニティ（低速な、又は輻輳したリンクを介して外界に接続されている高速ＬＡＮを備える大規模な大学キャンパスなど）が検討されている。そのような設定においては、コミュニティ内におけるキャッシュヒット率が、最も関連性を有する最適化すべきメトリックであることが判明している（非特許文献９及び非特許文献１０参照）。これらの研究では、コンテンツ複製の問題を、各ピアにまたがってファイルのコピーを割り当てることを目的とした整数計画法の一例として構想して、ピアメンバ構成のダイナミックス（到来及び離脱）が与えられることによりヒット率が最適になるようにしている。重要な貢献として、これらの研究は、最適な複製プロファイルを導出し、このプロファイルに漸近的に接近するようなアルゴリズムを提案している。
【００１０】
また、Ｐ２Ｐネットワークにおけるキャッシングの問題は、分散ハッシュテーブル上に構築された分散ファイルシステムのコンテクストにおいても対処されている。例としては、それぞれ、Ｃｈｏｒｄ（非特許文献１１参照）及びＰａｓｔｒｙ（非特許文献１２参照）の上で実施された、ＣＦＳ（非特許文献１３参照）及びＰＡＳＴ（非特許文献１４参照）、ならびにＦｒｅｅｎｅｔ（非特許文献１５参照）が挙げられる。非特許文献１３及び非特許文献１４においては、ファイル（又はファイルの断片、非特許文献１３参照）を、ＬＲＵ（least recently used、最も長い間使用されていない）置換ポリシを使用して、サーチパス全体に沿ってキャッシュに入れるようにしている。生成されるトラフィックの観点から見ると、このキャッシング戦略は準最適、すなわち、（後で示すように）他のキャッシング戦略より高いトラフィックを生成するものである。しかし、この戦略は、負荷平衡化といった他の要件が考慮に入れられるときには、より有効となり得る。
【００１１】
Ａｋａｍａｉ（「Ａｋａｍａｉ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｉｎｃ．（ｗｗｗ．ａｋａｍａｉ．ｃｏｍ）」参照）などのコンテンツ分散ネットワーク（ＣＤＮ、content distribution network）は、基本的に、ワールド・ワイド・ウェブのコンテクストにおけるキャッシング及び複製の解決策を提供するものである。ＣＤＮは、特定のウェブサイトへのアクセスパターンを調査し、次いで、平均アクセス遅延といった特定の目標が満たされるように、世界中の大規模なサーバ集合上にそれらのコンテンツを複製する。前述の問題と比較すると、主要な違いは、ＣＤＮを用いる場合、一部（サブセット）のノードだけがそのコンテンツをキャッシュに入れることができること、及び、ＣＤＮがそのサーバをどこに配置すべきか選択するときに大きな自由度を有することである。
【００１２】
前述のように、キャッシングは、Ｐ２Ｐネットワークにおける負荷を平衡化するのに有益な技術ともみなすことができる。これは重要な問題である。というのは、各参加ノードは、典型的には、能力が低く、重い負荷による影響を受けやすいからである。非特許文献１６は、この問題に対処するためのキャッシング適用の一例を示している。
【００１３】
前述のように、キャッシング及び複製は、ワールド・ワイド・ウェブの性能を改善するのに有益な技術と認められている。そのような状況において、これらの技術は、（１）ウェブページなどの所望のリソースにアクセスするための遅延を低減することによってユーザ体験の品質を改善し、（２）遠方のリソースではなく近隣のリソースのコピーにアクセスすることによってネットワークトラフィックを低減し、（３）ウェブサーバの負荷を軽減し、その帯域幅要求を低減しようと試みる（非特許文献１７参照）。これらのキャッシングの利益は全て、Ｐ２Ｐネットワークにおけるサーチの問題に対して直接移すことができる。Ｐ２Ｐのサーチメッセージは、探索対象の文書又はオブジェクトが見つかるまでに複数のホップを通過するため、遅延を低減することは依然として問題となる。また、進むべきホップ数を低減することは、基礎をなす物理ネットワークにおけるトラフィックを低減することにもなるが、この第３の利益は、キャッシングが、事実上、データ項目のコピーを保持する各ノードにまたがって負荷を分散させることになるので、負荷を平衡化していると言い換えることができる。
【００１４】
１つの重要な態様は、キャッシングによるＰ２Ｐサーチの性能の改善である。より具体的に、オブジェクトの集合体を記憶する所与のサイズのＰ２Ｐネットワークを検討する。これらのオブジェクトは、ネットワーク内のノードからのクエリの対象である。クエリは、特定の分布、典型的にはＺｉｐｆ分布に従う（あるオブジェクトの度数は、その度数分布表におけるランクに逆比例する）。クエリは、サーチ対象のオブジェクトを指し示すポインタを有するノードが見つかるまで各ノード間で転送される。このノードは、クエリ元のノードにオブジェクトのポインタを送り返して、サーチプロセスを終了させる。クエリ元のノードによって様々なノードから受け取られたポインタの集合をサーチ結果という。ネットワーク内の各ノードは、クエリ、すなわち、クエリの結果をキャッシュするための若干の予備空間を有するものと仮定する。そのため、ノードＰ１がデータオブジェクトＡを記憶していることを知ると、ノードＰ２は、そのキャッシュに、（Ａ，Ｐ１）としてポインタを記憶することができる。オブジェクトＡについての新しいクエリがノードＰ２に届くと、ノードＰ２は、通常のクエリの転送手順に従うのではなく、ノードＰ２がキャッシュに入れたショートカットをクエリ元のノードに送り返して、クエリのパスを短縮することができる。このアプローチを考えると次のようないくつかの疑問が生じる。すなわち、（１）最終目標がサーチサイズ、すなわち、あるクエリが通過すべき平均ホップ数を最小化することである場合、ネットワーク内の各ノードのキャッシュにまたがるような前述のやり方での参照の最適分布とはどんなものか、及び（２）その最適分布を達成するための分散アルゴリズムは何か、である。同じ２つの疑問は、サーチサイズを最小化するのではなく、ネットワークトラフィックを最小化したり、負荷を可能な限り均一に分散させたりといったように、達成すべき目標が変わってもやはり繰り返し生じることになる。
【００１５】
Ｐ２Ｐキャッシングに関する文献の大部分は、平均サーチサイズを可能な限り低減するキャッシング技術に注目したものである。しかし、これらの技術は、通常、総ネットワークトラフィック、すなわち、オーバーレイ・ネットワークにおいて生成される全メッセージの総和に関しては、準最適である。以下の極端な例を考える。クエリが解決された後、そのオブジェクトを保持するノードは、ネットワーク内の全てのノードに更新を送ることができる。各ノードが、ＭＦＲ（most-frequency-requested、最も高い頻度で要求されるもの）といった、適切なキャッシュ置換ポリシを用いれば、サーチサイズは、全てのキャッシュにデータが取り込まれた後で、最小化されるはずである。しかし、これは、ネットワークトラフィックに関して極めて効率が悪い。この非効率性の原因は、以下のように２つある。（１）キャッシングは、キャッシュ参照がネットワーク内のノードのサブセット（クエリのパスに沿った全てのノードなど）に向けて転送（push）されなければならないという意味で事前対応的でなければならない。（２）したがって、キャッシュにデータを取り込むことはコストがかかり、これらのコストは、ネットワークトラフィックを測るときに考慮に入れられなければならない。ネットワークトラフィックは、その運用コストを低減し、なおかつ、そのユーザ体験の品質を高めようとするオーバーレイ運用者にとって、より重要な問題となり得る。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】Ｊ．Ｋａｎｇａｓｈａｒｊｕ，Ｋ．Ｗ．Ｒｏｓｓ及びＤ．Ａ．Ｔｕｒｎｅｒ，「Ａｄａｐｔｉｖｅ  Ｃｏｎｔｅｎｔ  Ｍａｎａｇｅｍｅｎｔ  ｉｎ  Ｓｔｒｕｃｔｕｒｅｄ  Ｐ２Ｐ  Ｃｏｍｍｕｎｉｔｉｅｓ」，ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｆｉｒｓｔ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｃａｌａｂｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ（Ｉｎｆｏｓｃａｌｅ），Ｂａｒｋｅｌｅｙ，ＣＡ，ＵＳＡ，２００３
【非特許文献２】Ｉ．Ｓｔｏｉｃａ，Ｒ．Ｍｏｒｒｉｓ，Ｄ．Ｋａｒｇｅｒ，Ｆ．Ｋａａｓｈｏｅｋ及びＨ．Ｂａｌａｋｒｉｓｈｎａｎ，「Ｃｈｏｒｄ：Ａ  Ｓｃａｌａｂｌｅ  Ｐｅｅｒ−Ｔｏ−Ｐｅｅｒ  Ｌｏｏｋｕｐ  Ｓｅｒｖｉｃｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ａｐｐｌｉｃａｔｉｏｎｓ」，ｉｎ  ｐｒｏｃｅｅｄｉｎｇ  ｏｆ  ｔｈｅ  ２００１  ＡＣＭ  ＳＩＧＣＯＭＭ  Ｃｏｎｆｅｒｅｎｃｅ，２００１，ｐｐ．１４９−１６０
【非特許文献３】Ｆ．Ｄａｂｅｋ，Ｍ．Ｆ．Ｋａａｓｈｏｅｋ，Ｄ．Ｋａｒｇｅｒ，Ｒ．Ｍｏｒｒｉｓ及びＩ．Ｓｔｏｉｃａ，「Ｗｉｄｅａｒｅａ  ｃｏｏｐｅｒａｔｉｖｅ  ｓｔｏｒａｇｅ  ｗｉｔｈ  ＣＦＳ」，ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １８ｔｈ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０１），Ｃｈａｔｅａｕ  Ｌａｋｅ  Ｌｏｕｉｓｅ，Ｂａｎｆｆ，Ｃａｎａｄａ，Ｏｃｔｏｂｅｒ  ２００１
【非特許文献４】Ｅ．Ｃｏｈｅｎ及びＳ．Ｓｈｅｎｋｅｒ，「Ｒｅｐｌｉｃａｔｉｏｎ  ｓｔｒａｔｅｇｉｅｓ  ｉｎ  ｕｎ−ｓｔｒｕｃｔｕｒｅｄ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｎｅｔｗｏｒｋｓ」，ｉｎ  ＳＩＧＣＯＭＭ２００２，Ｐｉｔｔｓｂｕｒｇｈ，ＵＳＡ，２００２
【非特許文献５】Ｑ．Ｌｖ，Ｐ．Ｃａｏ，Ｅ．Ｃｏｈｅｎ，Ｋ．Ｌｉ及びＳ．Ｓｈｅｎｋｅｒ，「Ｓｅａｒｃｈ  ａｎｄ  ｒｅｐｌｉｃａｔｉｏｎ  ｉｎ  ｕｎｓｔｒｕｃｔｕｒｅｄ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｎｅｔｗｏｒｋｓ」，Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｕｐｅｒｃｏｍｐｕｔｉｎｇ，Ｎｅｗ  Ｙｏｒｋ，ＵＳＡ，２００２，ｐｐ．８４−９５
【非特許文献６】Ｓ．Ｉｙｅｒ，Ａ．Ｒｏｗｓｔｒｏｎ、及びＰ．Ｄｒｕｓｃｈｅｌ，「ＳＱＵＩＲＲＥＬ：Ａ  ｄｅｃｅｎｔｒａｌｉｚｅｄ，ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｗｅｂ  ｃａｃｈｅ」，ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  １２ｔｈ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔｉｎｇ（ＰＯＤＣ  ２００２），Ｍｏｎｔｅｒｅｙ，ＣＡ，ＵＳＡ，２００２
【非特許文献７】Ｊ．Ｋａｎｇａｓｈａｒｊｕ，Ｋ．Ｗ．Ｒｏｓｓ及びＤ．Ａ．Ｔｕｒｎｅｒ，「Ａｄａｐｔｉｖｅ  Ｃｏｎｔｅｎｔ  Ｍａｎａｇｅｍｅｎｔ  ｉｎ  Ｓｔｒｕｃｔｕｒｅｄ  Ｐ２Ｐ  Ｃｏｍｍｕｎｉｔｉｅｓ」，ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｆｉｒｓｔ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｃａｌａｂｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ（Ｉｎｆｏｓｃａｌｅ），Ｂａｒｋｅｌｅｙ，ＣＡ，ＵＳＡ，２００３
【非特許文献８】Ｊ．Ｋａｎｇａｓｈａｒｊｕ，Ｋ．Ｗ．Ｒｏｓｓ及びＤ．Ａ．Ｔｕｒｎｅｒ，「Ｏｐｔｉｍｉｚｉｎｇ  Ｆｉｌｅ  Ａｖａｉｌａｂｉｌｉｔｙ  ｉｎ  Ｐ２Ｐ  Ｃｏｎｔｅｎｔ  Ｄｉｓｔｒｉｂｕｔｉｏｎ」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ  Ｉｎｆｏｃｏｍ  Ｃｏｎｆｅｒｅｎｃｅ，Ａｎｃｈｏｒａｇｅ，ＡＫ，ＵＳＡ，２００７
【非特許文献９】Ｊ．Ｋａｎｇａｓｈａｒｊｕ，Ｋ．Ｗ．Ｒｏｓｓ及びＤ．Ａ．Ｔｕｒｎｅｒ，「Ａｄａｐｔｉｖｅ  Ｃｏｎｔｅｎｔ  Ｍａｎａｇｅｍｅｎｔ  ｉｎ  Ｓｔｒｕｃｔｕｒｅｄ  Ｐ２Ｐ  Ｃｏｍｍｕｎｉｔｉｅｓ」，ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｆｉｒｓｔ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｃａｌａｂｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ（Ｉｎｆｏｓｃａｌｅ），Ｂａｒｋｅｌｅｙ，ＣＡ，ＵＳＡ，２００３
【非特許文献１０】Ｊ．Ｋａｎｇａｓｈａｒｊｕ，Ｋ．Ｗ．Ｒｏｓｓ及びＤ．Ａ．Ｔｕｒｎｅｒ，「Ｏｐｔｉｍｉｚｉｎｇ  Ｆｉｌｅ  Ａｖａｉｌａｂｉｌｉｔｙ  ｉｎ  Ｐ２Ｐ  Ｃｏｎｔｅｎｔ  Ｄｉｓｔｒｉｂｕｔｉｏｎ」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ  Ｉｎｆｏｃｏｍ  Ｃｏｎｆｅｒｅｎｃｅ，Ａｎｃｈｏｒａｇｅ，ＡＫ，ＵＳＡ，２００７
【非特許文献１１】Ｉ．Ｓｔｏｉｃａ，Ｒ．Ｍｏｒｒｉｓ，Ｄ．Ｋａｒｇｅｒ，Ｆ．Ｋａａｓｈｏｅｋ及びＨ．Ｂａｌａｋｒｉｓｈｎａｎ，「Ｃｈｏｒｄ：Ａ  Ｓｃａｌａｂｌｅ  Ｐｅｅｒ−Ｔｏ−Ｐｅｅｒ  Ｌｏｏｋｕｐ  Ｓｅｒｖｉｃｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ａｐｐｌｉｃａｔｉｏｎｓ」，ｉｎ  ｐｒｏｃｅｅｄｉｎｇ  ｏｆ  ｔｈｅ  ２００１  ＡＣＭ  ＳＩＧＣＯＭＭ  Ｃｏｎｆｅｒｅｎｃｅ，２００１，ｐｐ．１４９−１６０
【非特許文献１２】Ａ．Ｒｏｗｓｔｒｏｎ及びＰ．Ｄｒｕｓｃｈｅｌ，「Ｐａｓｔｒｙ：Ｓｃａｌａｂｌｅ，ｄｉｓｔｒｉｂｕｔｅｄ  ｏｂｊｅｃｔ  ｌｏｃａｔｉｏｎ  ａｎｄ  ｒｏｕｔｉｎｇ  ｆｏｒ  ｌａｒｇｅ−ｓｃａｌｅ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｓｙｓｔｅｍｓ」，ｉｎ  ＩＦＩＰ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｓｙｓｔｅｍｓ  Ｐｌａｔｆｏｒｍｓ（Ｍｉｄｄｌｅｗａｒｅ），ｎｏｖ  ２００１，ｐｐ．３２９−３５０
【非特許文献１３】Ｆ．Ｄａｂｅｋ，Ｍ．Ｆ．Ｋａａｓｈｏｅｋ，Ｄ．Ｋａｒｇｅｒ，Ｒ．Ｍｏｒｒｉｓ及びＩ．Ｓｔｏｉｃａ，「Ｗｉｄｅａｒｅａ  ｃｏｏｐｅｒａｔｉｖｅ  ｓｔｏｒａｇｅ  ｗｉｔｈ  ＣＦＳ」，ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １８ｔｈ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０１），Ｃｈａｔｅａｕ  Ｌａｋｅ  Ｌｏｕｉｓｅ，Ｂａｎｆｆ，Ｃａｎａｄａ，Ｏｃｔｏｂｅｒ  ２００１
【非特許文献１４】Ａ．Ｒｏｗｓｔｒｏｎ及びＰ．Ｄｒｕｓｃｈｅｌ、「Ｓｔｏｒａｇｅ  ｍａｎａｇｅｍｅｎｔ  ａｎｄ  ｃａｃｈｉｎｇ  ｉｎ  ＰＡＳＴ，ａ  ｌａｒｇｅ−ｓｃａｌｅ，ｐｅｒｓｉｓｔｅｎｔ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｓｔｏｒａｇｅ  ｕｔｉｌｉｔｙ」，ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０１），２００１
【非特許文献１５】Ｉ．Ｃｌａｒｋｅ，Ｓ．Ｇ．Ｍｉｌｌｅｒ，Ｔ．Ｗ．Ｈｏｎｇ，Ｏ．Ｓａｎｄｂｅｒｇ及びＢ．Ｗｉｌｅｙ，「Ｐｒｏｔｅｃｔｉｎｇ  ｆｒｅｅ  ｅｘｐｒｅｓｓｉｏｎ  ｏｎｌｉｎｅ  ｗｉｔｈ  ｆｒｅｅｎｅｔ」、ＩＥＥＥ  Ｉｎｔｅｒｎｅｔ  Ｃｏｍｐｕｔｉｎｇ，ｖｏｌ．６，ｎｏ．１，ｐｐ．４０−４９，２００２
【非特許文献１６】Ｖ．Ｇｏｐａｌａｋｒｉｓｈｎａｎ，Ｂ．Ｓｉｌａｇｈｉ，Ｂ．Ｂｈａｔｔａｃｈａｒｊｅｅ及びＰ．Ｋｅｌｅｈｅｒ，「Ａｄａｐｔｉｖｅ  ｒｅｐｌｉｃａｔｉｏｎ  ｉｎ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｓｙｓｔｅｍｓ」ｉｎ  Ｐｒｏｃ．ｏｆ  ｔｈｅ  ２４ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍｓ（ＩＣＤＣＳ），Ｔｏｋｙｏ，Ｊａｐａｎ，２００４
【非特許文献１７】Ａ．Ｆｅｌｄｍａｎｎ，Ｒ．Ｃａｃｅｒｅｓ，Ｆ．Ｄｏｕｇｌｉｓ，Ｇ．Ｇｌａｓｓ及びＭ．Ｒａｂｉｎｏｖｉｃｈ，「Ｐｅｒｆｏｒｍａｎｃｅ  ｏｆ  Ｗｅｂ  Ｐｒｏｘｙ  Ｃａｃｈｉｎｇ  ｉｎ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｂａｎｄｗｉｄｔｈ  Ｅｎｖｉｒｏｎｍｅｎｔｓ」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ  Ｉｎｆｏｃｏｍ  Ｃｏｎｆｅｒｅｎｃｅ，Ｎｅｗ  Ｙｏｒｋ，ＵＳＡ，１９９９
【非特許文献１８】Ｅ．Ｃｏｈｅｎ及びＳ．Ｓｈｅｎｋｅｒ，「Ｒｅｐｌｉｃａｔｉｏｎ  ｓｔｒａｔｅｇｉｅｓ  ｉｎ  ｕｎｓｔｒｕｃｔｕｒｅｄ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｎｅｔｗｏｒｋｓ」，ｉｎ  ＳＩＧＣＯＭＭ２００２，Ｐｉｔｔｓｂｕｒｇｈ，ＵＳＡ，２００２
【非特許文献１９】Ｑ．Ｌｖ，Ｐ．Ｃａｏ，Ｅ．Ｃｏｈｅｎ，Ｋ．Ｌｉ及びＳ．Ｓｈｅｎｋｅｒ，「Ｓｅａｒｃｈ  ａｎｄ  ｒｅｐｌｉｃａｔｉｏｎ  ｉｎ  ｕｎｓｔｒｕｃｔｕｒｅｄ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｎｅｔｗｏｒｋｓ」，Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｕｐｅｒｃｏｍｐｕｔｉｎｇ，Ｎｅｗ  Ｙｏｒｋ，ＵＳＡ，２００２，ｐｐ．８４−９５
【非特許文献２０】Ｆ．Ｄａｂｅｋ，Ｍ．Ｆ．Ｋａａｓｈｏｅｋ，Ｄ．Ｋａｒｇｅｒ，Ｒ．Ｍｏｒｒｉｓ及びＩ．Ｓｔｏｉｃａ，「Ｗｉｄｅａｒｅａ  ｃｏｏｐｅｒａｔｉｖｅ  ｓｔｏｒａｇｅ  ｗｉｔｈ  ＣＦＳ」，ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １８ｔｈ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０１），Ｃｈａｔｅａｕ  Ｌａｋｅ  Ｌｏｕｉｓｅ，Ｂａｎｆｆ，Ｃａｎａｄａ，Ｏｃｔｏｂｅｒ  ２００１
【非特許文献２１】Ａ．Ｒｏｗｓｔｒｏｎ及びＰ．Ｄｒｕｓｃｈｅｌ、「Ｓｔｏｒａｇｅ  ｍａｎａｇｅｍｅｎｔ  ａｎｄ  ｃａｃｈｉｎｇ  ｉｎ  ＰＡＳＴ，ａ  ｌａｒｇｅ−ｓｃａｌｅ，ｐｅｒｓｉｓｔｅｎｔ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｓｔｏｒａｇｅ  ｕｔｉｌｉｔｙ」，ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０１），２００１
【発明の概要】
【発明が解決しようとする課題】
【００１７】
本発明の目的は、ネットワーク内の探索パス長及びトラフィックの低減を可能にする、自己組織型分散オーバーレイ・ネットワーク内でクエリ（問い合わせ）の結果をキャッシュに入れる確実な手法を提供することである。
【課題を解決するための手段】
【００１８】
この目的は、請求項１に記載の方法、請求項１３に記載のコンピュータプログラム、請求項１４に記載のノード、及び請求項１５に記載の自己組織型分散オーバーレイ・ネットワークによって解決される。
【００１９】
本発明の各実施形態は、自己組織型分散オーバーレイ・ネットワークにおいて、前記ネットワーク内のノードと関連付けられたオブジェクトへの参照（reference）を分散させる方法を提供する。当該方法において、前記参照は、前記ネットワークの現在のノードに記憶されており、当該方法は、
現在のノードにおいて、前記オブジェクトについてのクエリ（問い合わせ）を受信するステップと、
前記オブジェクトについての受信されたクエリの数を判定するステップと、
前記オブジェクトについての前記受信されたクエリの数が所定の閾値に達した場合に、前記参照をネットワークにおいて分散させるステップと
を含む。
【００２０】
本発明はさらに、プロセッサが実行する際に、本発明による方法を実行する命令を備えるコンピュータプログラムを提供する。
【００２１】
本発明はさらに、自己組織型分散オーバーレイ・ネットワークにおけるノードを提供する。当該ノードは、ネットワーク内のノードと関連付けられたオブジェクトへの参照と、本発明の方法に従ってネットワーク内のオブジェクトへの参照を分散させるように構成されている処理装置とを備えるものである。
【００２２】
さらに、本発明は、本発明の方法を実施する複数のノードを備える自己組織型分散オーバーレイ・ネットワークを提供する。
【００２３】
本発明の方法の好ましい実施形態は、従属請求項において定義されている。
【００２４】
前述の研究は、キャッシングがどのように働くかについての重要な洞察を提供する。これらの研究で論じられている手法がＤＨＴに適用されてもよいが、これらの手法はサーチの時間又は長さを最小化しようとするものであり、他方、本発明は、ＤＨＴにおけるキャッシングを最小化するものである。第１に、非特許文献１８及び非特許文献１９のモデルと、ＤＨＴにおけるキャッシングとの基本的な違いは、ＤＨＴにおいてはランダムサーチの仮定が当てはまらないことである。第２に、最適性の尺度としてＤＨＴの総運用コストに主眼が置かれる。これは、非特許文献１８及び非特許文献１９にはない複製自体のコストも含むという意味において、期待されるサーチサイズとは異なる。正確には、オブジェクトが、オブジェクトの提供するもの及び消費するもの以外のノードによってキャッシュに入れられる必要があるとき（非特許文献１９の「パス複製」など）には、オブジェクトの複製を分散させるコストが生じる。これらのコストは、非特許文献１８及び非特許文献１９のモデルではカバーされていない。本発明の実施形態によって考慮されるメトリックは、そうしたコストを含む。
【００２５】
より具体的には、最新技術のＤＨＴのためのキャッシング解決法では、サーチパス全体、すなわち、クエリ結果を通過させる全てのノードに沿ってクエリの結果をキャッシュに入れるが、本発明の実施形態に係る手法は異なる。分散型のプッシュベースのキャッシング法（アルゴリズム）が導入され、ネットワーク内の各ノードは、記憶されたオブジェクトへの参照を、それらの参照が高頻度で要求される場合に限り、探索パス内の各ノードの先行するノードに向けてプッシュ（転送）する。各ノードは、クエリの度数を測るための簡単なデータ構造を保持する。クエリの度数がある一定の閾値を上回るときに限り、クエリ結果が、偶然そのクエリを現在のノードまでルーティング（経路指定）することになった各ノードにプッシュバックされる。このアルゴリズムは、探索パス長（ホップ数）及び探索トラフィックの総量の大幅な低減をもたらす。また、アルゴリズムの最適構成、すなわち、最適な度数閾値も存在し、この閾値は、シミュレーションによって見つけることができる。
【００２６】
本発明の実施形態は、クエリの成功の確率を大幅に増大させる分散型のプッシュベースのキャッシング法（アルゴリズム）を提示する。この手法によれば、ネットワーク内の各ノードは、記憶されたオブジェクトへの参照を、それらの参照が高頻度で要求される場合に限り、探索パス内の各ノードの先行するノードに向けてプッシュする。この手法は、探索パス長（ホップ数）及び探索トラフィックの総量の大幅な低減をもたらす。
【００２７】
本発明の実施形態は、オンデマンド式プッシュ法（アルゴリズム）を使用し、段階的に後方に向けて各ノードのキャッシュにデータを取り込む。各参照は、一度にパス全体に沿って分散されるのではなく、コピーの数は、需要の増大に従ってのみ増大する。この分散アルゴリズムは、Ｐ２Ｐネットワークにおけるクエリ要求の不均一な分布に適合することのできる適応型のコンテンツ複製をもたらすことになる。獲得される可用性が増大すると、要求された参照を記憶する責任を負うピアに障害が発生している場合でさえも、クエリ結果を獲得する確率が高まる。
【００２８】
本発明の実施形態によれば、各ピアは、各ピアがルーティング（経路指定）するクエリに基づいて、クエリ度数を追跡する。所与のオブジェクトを求める十分に高い要求が検出されるときに限り、ピアは、それに対応するキャッシュ参照を、それ以前に偶然その関与するオブジェクトについてのクエリを転送することになった前の各ホップ（そのクエリを転送した各ノード）に送る。十分に高い要求であるかは、前の各ホップに向けてクエリをプッシュするために超える必要のあるクエリの度数閾値として定義され得る。この閾値の最適値が存在し、この最適値は、他のパラメータ（ネットワークサイズ、ネットワーク動作時間など）が変化するときにごくわずかだけ変化する。
【発明の効果】
【００２９】
本発明の手法は、任意のピア・ツー・ピア通信システムにおいて有益となり得る。この手法が主に貢献するのはキャッシングによるオーバーレイ・トラフィックの低減に対してであり、したがって、基礎をなすネットワークの観点から見て有益なものである。本発明の手法は、特に、クエリの応答時間の短縮によりＤＨＴオーバーレイ運用者のユーザにとって有益となり、トラフィック全体の低減により基礎をなす物理ネットワーク運用者にとっても有益となり得る。
【００３０】
一般に、キャッシングの利点は、ネットワークリソースにアクセスする際の待ち時間が小さいこと、及びアクセスと関連付けられるトラフィックを減らせることである。これら２つの利点のうち、前者はユーザにとってより重要であり、物理ネットワーク運用者にとっては、後者がより重要な関心対象となり得る。本発明の実施形態によって定義される手法は、これら２つの利点をもたらす。探索パス長の短縮により、この手法は、総クエリ実行時間を短縮する。探索パス長の短縮の別の効果は、サーチトラフィックの低減である。しかし、探索パスに沿ってクエリ対象のコンテンツへの参照をプッシュすることによるトラフィックの増大も生じることに留意する必要がある。この増大は、探索パスの短縮というプラスの効果によって相殺され、最終的な効果は、実際のところ、プラスになることが以下で明らかになる。
【００３１】
いくつかの別の利点もある。典型的なＰ２Ｐシステムにおける各ノードの揮発性を考えると、探索パスの短縮は、クエリの成功の確率の増大と関連付けられる。また、本発明の実施形態によって定義されるキャッシングアルゴリズムは、前述の低減を高速で達成すること、すなわち、各ノードにまたがってキャッシュ参照を効率的に分散させることが、各ノードが平均で数十件のクエリを送った後だけで達成されることも以下で明らかになる。よって、クエリ分布が動的に変化するときに、それらの変化をより効率的に追跡することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明に係るネットワーク内のノード間でオブジェクトへの参照を分散させる方法を示すためのピア・ツー・ピア・ネットワークの一部の概略図である。
【図２】本発明の方法を実施する要素を示すノードの概略図である。
【図３】本発明の一実施形態に係る方法を実施するアルゴリズムを擬似コードとして示す図である。
【図４】ピア・ツー・ピア・ネットワーク内の総トラフィックを、ネットワーク運用における様々な時間についてのクエリ度数の閾値の関数として示すグラフである。
【図５】総トラフィックを、様々なクエリ分布パラメータについてのクエリ度数の閾値の関数として示すグラフである。
【図６】総トラフィックを、様々なネットワークサイズについてのクエリ度数の閾値の関数として示すグラフである。
【図７】総トラフィックを、クエリ分布の追跡ありとなしとの場合（ｗ＝あり、ｗ／ｏ＝なし）について、１ノード当たりで送られたクエリの数の関数として示すグラフである。
【図８】総トラフィックを、クエリの分布の追跡ありとなしとの場合について、Ｚｉｐｆ分布パラメータの関数として示すグラフである。
【図９】総トラフィックを、ネットワークサイズの関数として示すグラフである。
【発明を実施するための形態】
【００３３】
以下では、本発明の好ましい実施形態を、添付の図を参照して、さらに詳細に説明する。
【００３４】
以下で、本発明の好ましい実施形態をさらに詳細に説明する。参照（reference）及びポインタという用語は、同じものを意味するものとして使用する。オブジェクトという用語は、多くの場合、データオブジェクトを指し示すポインタを表わすのに使用する。その意味は文脈から明らかとなる。
【００３５】
図１は、複数のノードＮを含むピア・ツー・ピア・ネットワークの一部の概略図である。図１には、複数のノードのうちの３つのクエリ元のノード（問い合わせ元のノード）Ｑ１、Ｑ２及びＱ３が示されており、これらのノードは、ネットワーク全体の内部において、文字「Ａ」で示されるノードのところに記憶されたオブジェクトＡを求めるクエリ（問い合わせ）を発行する。個々のノードＱ１からＱ３からのクエリは、オブジェクトＡと関連付けられたノードが見つかるまで、いくつかの中間ノード（ホップ）を通過する必要がある。ノードが見つかると、オブジェクトＡと関連付けられたノードへの参照が、個々のクエリ元のノードＱ１、Ｑ２及び／又はＱ３に返される。次いで、この情報を使用して、個々のクエリ元のノードは、所望のオブジェクトＡ、例えば、オーディオコンテンツやビデオコンテンツ、ファイル、文書、サービス、特定のプロバイダなどのような特定のコンテンツにアクセスする。
【００３６】
従来のアプローチは、クエリのパスに沿った各ノードごとに、すなわち、図１に示す、クエリ元のノードＱ１、Ｑ２又はＱ３とノードＡとの間にある各ノードごとに、オブジェクトＡへの参照をキャッシュに入れることを教示している。このアプローチは、不利であり、したがって、本発明は、オブジェクトＡへの参照を分散させる改善された手法を提供する。
【００３７】
ノード１００は、すでにオブジェクトＡへの参照を保持しているものと仮定する。ノード１００を「現在のノード」と呼び、ノード１００は、以下のいずれかによりオブジェクトＡへの参照を受信する。１つは、ネットワーク内の別のノード（不図示）からオブジェクトＡへの参照を受け取ること、もう１つは、現在のノード１００がノードＡについてのクエリを生成し、これに応答してオブジェクトＡへの参照を得て、これによりオブジェクトＡへの参照を受け取ることである。
【００３８】
クエリ元のノードＱ１からＱ３からの各クエリは、クエリパスに沿ってネットワークにおいて経路指定（ルーティング）される。ここで、クエリパスとは、クエリがクエリ元のノードからオブジェクトを保持するノードに至るまで通過するいくつかのホップ（ノード）を含むものである。
本発明によれば、すでにノード１００に記憶されているオブジェクトＡへの参照は、特定のクエリパスに沿った全てのノードに自動的に転送されるのではない。そうではなく、ノード１００内に記憶された他のノードへの参照のいかなる分散も、オブジェクトＡについてのクエリがノード１００においてどれ程の頻度で受信されたかに応じて行われる。ノード１００において受信されたオブジェクトＡを求める要求の度数が、所定の閾値に達した場合に、そのクエリをノード１００に転送したノードのうちの１つ以上に、オブジェクトＡへの参照のコピーが提供される。図１に示す例では、そのような状況において、ノード１０２及び１０４に、オブジェクトＡへの参照のコピーが提供されるはずである。より具体的には、ノード１００においてオブジェクトＡについてのクエリを受信すると、オブジェクトＡについての受信されたクエリの数、すなわち、ノード１００において受信されたオブジェクトＡについてのクエリの数が判定され、この数が所定の閾値に達した場合には、オブジェクトＡへの参照がピア・ツー・ピア・ネットワーク内で分散される。好ましい実施形態によれば、現在のノード１００からの参照は、オブジェクトＡについての１つ以上のクエリを現在のノード１００に転送した、ノード１０２及び１０４のような１つ以上のノードに転送される。
【００３９】
以下で、様々なシミュレーション結果に基づいてさらに詳細に説明されるように、本発明のアプローチは、ピア・ツー・ピア・ネットワーク全体の中でのネットワークトラフィックの大幅な低減を可能にする。
【００４０】
好ましい実施形態によれば、本発明は、ノード１００において、転送ノード（例えばノード１０２など）からオブジェクトＡのような特定のオブジェクトについてのクエリを受信するための方法を提供する。ここで、ノード１００において受信するクエリは、クエリ元のノードＱ１によって生成されたクエリである。クエリ元のノードＱ２又はＱ３によって生成されたクエリを受信するときにも類似のアプローチが取られることがわかる。ノード１００において、クエリと、例えばノード１０２やノード１０４などの、そのクエリを転送した関連ノード、いわゆる「転送ノード」とが、テーブル（表）などに記憶される。より具体的には、オブジェクトＡについてのクエリは、特定のクエリ識別、いわゆる「ｑｕｅｒｙＩＤ（クエリＩＤ）」と関連付けられ、転送ノードは、ノード識別、いわゆるｎｏｄｅＩＤ（ノードＩＤ）と関連付けられている。現在のノード１００において受信される各クエリのｑｕｅｒｙＩＤ及びｎｏｄｅＩＤは、現在のノード１００内のテーブルにエントリとして記憶され、ノード１００において受信される各クエリごとに、テーブル内の個々のエントリが生成される。このようにして記憶された情報に基づいて、オブジェクトＡについてのクエリの数が判定される。クエリの数は、テーブル内の全エントリ数に対する、オブジェクトＡについてのｑｕｅｒｙＩＤを含むエントリ数の比によって判定される。この比が所定の閾値ｐに達したと判定される場合に、ノード１００のキャッシュ内に記憶された参照が、個々のテーブルのエントリに記憶されたｎｏｄｅＩＤで識別されるノード、例えば、ノード１０２やノード１０４などに転送される。
【００４１】
あるいは、テーブルを使用する代わりに、現在のノード１００は、複数のカウンタを備えることができる。オブジェクトＡなどの特定のオブジェクトについての各クエリが発生するごとに、関連付けられたカウンタが増分される。また、個々のクエリを受信した相手先のノードも記憶される。カウンタが特定のカウントに達すると、オブジェクトＡへの参照は、現在のノード１００から、記憶されている各ノード（クエリを転送した各ノード、例えば、ノード１０２やノード１０４）に分散され得る。カウンタを使用するとき、カウンタは、所定の開始値に設定され、増分又は減分されて所定のカウント、すなわち所定の閾値に達すると、各ノードへのキャッシュ参照の転送が開始される。
【００４２】
受信側のノード１０２及び１０４では、現在のノード１００から転送されたオブジェクトＡへの参照が記憶される。これらの、本発明の方法を実施するノード１０２及び１０４においても、類似のプロセスが開始される。よって、ノード１０４及び１０６において、例えば、クエリ元のノードＱ２及びＱ３から、所定の数のオブジェクトＡについてのクエリの数が受信された後に、ノード１０４に記憶された参照は、ノード１０６及び１０８に転送され、そこで記憶される。
【００４３】
図１に関して、本発明は、オブジェクトＡのような単一のオブジェクトについてのクエリだけに限定されないことがわかる。そうではなく、むしろ、多くのオブジェクトがピア・ツー・ピア・ネットワーク内の１つ以上のノードと関連付けられ、そのため、多くの異なるオブジェクトについてのクエリがネットワークを通過する。よって、現在のノード１００では、特定のクエリを受信すると、まず第１に、現在のノードがその特定のオブジェクトへの参照を含むかどうかが判定される。現在のノード１００に、オブジェクトＡへの参照など、そのような参照がある場合、サーチパスは現在のノード１００で終了し、情報が、ノードＱ１からＱ３のうちの１つなど、クエリを生成したクエリ元のノードに直接返される。同時に、現在のノード１００においては、その特定のオブジェクトについてのクエリの数も、例えば、前述のようなテーブルを更新することなどによって更新される。現在のノード１００は、現在のノード１００にその参照があるオブジェクトについてのエントリ、すなわち、オブジェクトＡについてのクエリに関するエントリを導入するのみならず、現在のノード１００のキャッシュにその参照がない他のオブジェクトについて受信されたクエリも、そのテーブルに導入することがわかる。これは、そのような状況においては、現在のノードにそれについての参照がない、現在のノード１００を介してルーティング（経路指定）される特定のオブジェクトについてのクエリが記憶されるため有利である。現在のノード１００が、特定のオブジェクトを求める要求を転送した相手先のノードから参照を受信する場合、現在のノード１００は、この特定のオブジェクトについては、すでに所定の閾値に達しているため、この参照は、ノード１０２及び１０４のような、先に現在のノード１００にクエリを転送した他のノードに転送されてもよいと判定し得る。このアプローチは、現在のノード１００にそのオブジェクトへの参照があるか否かにかかわらず、現在のノード１００が、特定のオブジェクトについて最も高頻度で受信されたクエリを追跡することを確実にする。加えて、このアプローチは、現在のノード１００が特定のオブジェクトへの参照を保持せず、その特定のオブジェクトについてのクエリの数がまだ閾値に達していない状況においても有利である。この場合、現在のノード１００が別のノードから特定のオブジェクトへの参照のコピーを受信すると、現在のノード１００においては、その特定のオブジェクトについてのより少数のクエリが受信されるだけで、その前のノード１０２及び１０４への参照のさらなる分散が開始される。
【００４４】
図１に関して、現在のノードは、オブジェクトＡについてのクエリを生成し、クエリに応答して参照を受信したノードとすることができ、すなわち、現在のノード１００は、クエリ元のノードとすることもできることがわかる。
【００４５】
図２に、ネットワークへの接続、すなわち、ネットワーク内の他のノードへの接続のための入力／出力１１０を備える現在のノード１００の概略図を示す。
ノード１００は、処理装置１１２と記憶装置１１４を備えている。記憶装置１１４は、キャッシュメモリ１１４ａとテーブル１１４ｂとを備える。キャッシュメモリ１１４ａは、前述のオブジェクトＡのような、ネットワーク内の様々なオブジェクトへの参照をキャッシュに入れるために設けられている。テーブル１１４ｂは、様々なクエリ及びそれに関連付けられたノードのエントリを保持して、これにより、テーブルのコンテンツを使用して、マイクロコントローラ又は処理装置１１２が、キャッシュに記憶されている任意の参照がネットワーク内の特定のノードに転送されるべきかどうか判定することができるようにする。ノード１００は、例えば、必要なネットワーク接続を有するコンピュータとすることもでき、このコンピュータは、プロセッサ１１２が実行する際に本発明の方法を実行する命令を受け取ることができる。これらの命令は、コンピュータプログラムとしてプロセッサに提供されてもよく、コンピュータプログラムとは、プロセッサの諸機能に関与するコード、アルゴリズム、ルーチン又は命令を含む任意のものを指す。コンピュータ読取可能な媒体の一般的なものとしては、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の任意の磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤ、ブルー・レイ・ディスク、他の任意の光媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、他の任意のメモリチップ又はキャリッジ、データ又は命令を搬送する搬送波、そのような搬送波を搬送するケーブル又はリンク、あるいはコンピュータがそこからプログラミングコード及び／又はデータを読み取り得る他の任意の媒体が含まれる。
【００４６】
図３に関して、図１及び図２に示す各ノード上で実装される実施形態を説明する。この実施形態は、Ｐ２Ｐネットワーク内のオブジェクトへの参照を分散させるものである。
【００４７】
この方法（アルゴリズム）は、その参照を求める高い需要が検出されている場合に限り、参照のコピーを分散させるという点で、プッシュベースのものである。図１及び図２との関連で前述したように、あらゆるピア（ノード１００、１０２、１０４、１０６、１０８など）は、
（１）キャッシュ参照を保持するキャッシュ１１４ａと、
（２）どの参照が他のノードにプッシュ（転送）されるべきか判定するのに使用されるクエリ対象のＩＤのテーブル１１４ｂ
という２つのデータ構造を保持している。
【００４８】
クエリ対象のＩＤのテーブル１１４ｂは、（ｑｕｅｒｉｅｄＩＤ，ｐｒｅｖｉｏｕｓＨｏｐ）という形のエントリを含む。テーブル１１４ｂ内の各エントリは、クエリ対象のオブジェクトのＩＤ（ｑｕｅｒｉｅｄＩＤ）、及び対応するクエリを転送したその前のホップを記録する。ノードは、クエリをルーティング（経路指定）するたびに、テーブル１１４ｂに新しいエントリを追加する。
第２のステップとして、ノードは、クエリ対象のＩＤの相対度数（テーブル１１４ｂのサイズに対するそのクエリＩＤを有するエントリの割合など）を計算する。その相対度数がある一定の閾値を超える場合であり、ノードのキャッシュがクエリ対象のオブジェクトの参照を保持している場合、その参照は、偶然、同じＩＤについての最近のクエリにおいて前のホップとなった全てのノード（そのコンタクト情報がノードのテーブル１１４ｂに存在する全てのノード）に向けてプッシュ（転送）される。テーブルのサイズの限界を超えた場合には、古いエントリが置換される。置換ポリシはＬＲＵである。
【００４９】
この方法（アルゴリズム）は、図３に示す擬似コードにおいて２つの関数として示されている。
【００５０】
図３の行１に示すように、関数「ｓｅｎｄＣａｃｈｅＵｐｄａｔｅ」は、例えば、図１に示すノード１００など、そのノードがｑｕｅｒｉｅｄＩＤに責任を負う場合を含めて、ノードがクエリをルーティング（経路指定）するたびに呼び出される。この関数の呼出しと共に、クエリ元、すなわち、図１に示すノードＱ１、Ｑ２又はＱ３のようなクエリを生成したノードと、クエリの識別であるｑｕｅｒｙＩＤと、いわゆる「ｐｒｅｖｉｏｕｓＨｏｐ」と、閾値ｐに関する情報とが獲得される。この関数の呼出しは、現在のノード１００のルーティングハンドラからのものであり、このルーティングハンドラでは、前述の呼出しのパラメータ、すなわち、クエリ元と、ｑｕｅｒｙＩＤと、ｐｒｅｖｉｏｕｓＨｏｐと、閾値ｐとが解決される。現在のノード１００のキャッシュ１１４ａがｑｕｅｒｉｅｄＩＤを含むかどうかが判定される（図３の行３参照）。ノード１００のキャッシュ１１４ａにｑｕｅｒｉｅｄＩＤがある場合、ノード１００は、図３の行４に示すように、図１のオブジェクトＡのようなクエリ対象のオブジェクトへの参照を、クエリ元のノード、すなわち、ノードＱ１からＱ３のうちの１つのようなクエリ発行ノード（ｑｕｅｒｙＩｓｓｕｅｒ）に返す関数ｑｕｅｒｙＩｓｓｕｅｒ．ｓｅｎｄを呼び出すことによって、その応答をクエリ元のノードに送り返す。その後、図３の行６に示すように、ペア（ｐｒｅｖｉｏｕｓＨｏｐ，ｑｕｅｒｙＩＤ）をクエリテーブル１１４ｂに追加することによって、クエリの度数に関する統計が更新される。
【００５１】
受信されたクエリに関して閾値ｐに達しているかどうか判定するために、図３の行７に示すように、受信されたｑｕｅｒｙＩＤを有するテーブル内の全てのエントリが獲得される。ｑｕｅｒｙＩＤが十分に高頻度である、すなわち、その度数がある一定の閾値ｐを超える場合であり、キャッシュ１１４ａがｑｕｅｒｉｅｄＩＤへの参照を含む場合（図３の行８参照）には、図３の行９に示すように、偶然そのｑｕｅｒｙＩＤを現在のノード１００までルーティング（経路指定）するときに前のノードになった全てのノードが検索される。図３に示すように、行８で、本実施形態に従い、テーブルのサイズに対するｑｕｅｒｙＩＤを有するエントリの比が求められ、閾値ｐと比較され、閾値を上回り、キャッシュが要求された参照を含む場合には、図３の行９でｐｒｅｖｉｏｕｓＨｏｐが獲得される。ｑｕｅｒｙＩＤと関連付けられた参照、例えば、そのＩＤに責任を負うノードのアドレスを含むｑｕｅｒｉｅｄＩＤに関する完全な情報が、図３の行１１に示すように、見つかった全てのｐｒｅｖｏｕｓＨｏｐに送られる。
【００５２】
行１５から行１８までは、現在のノードから、ｑｕｅｒｙＩＤと関連付けられた情報を受信するノードにおいて呼び出される関数を示している。関数「ｓｅｎｄＣａｃｈｅＵｐｄａｔｅ」に応答して、ｑｕｅｒｙＩＤ及びｎｏｄｅＩＤ（オブジェクトＡへの参照）をパラメータとして含む、関数「ｒｅｃｅｉｖｅＣａｃｈｅＵｐｄａｔｅ」が呼び出される。この関数を実行するノードは、そのキャッシュ１１４ａを、受信したデータ項目で更新する。キャッシュの更新ポリシは、ＭＦＲ（最も高頻度で要求されるもの）とすることができる。しかし、例えば、ランダム置換やＬＲＵ置換といった、他のキャッシュ置換ポリシも使用され得る。後述するシミュレーションにおいては、ピア・ツー・ピア・ネットワークの各ノードのキャッシュメモリにおける異なる置換ポリシの使用に関して、大きな違いは観測されなかった。
【００５３】
以下に、前述のキャッシングアルゴリズムの評価を示す。最初に、シミュレーション設定を、次いで、関連する結果を説明する。
【００５４】
シミュレーション設定
本発明の実施形態に係る方法（アルゴリズム）は、非構造化Ｐ２ＰネットワークにもＤＨＴにも適用可能である。以下の結果は、ＤＨＴルーティングに主眼が置かれたため、ＤＨＴに当てはまるものである。全ての試験は、典型的なＤＨＴ表現としてのＣｈｏｒｄについて行われた。５００ノード、１０００ノード、１５００ノード、及び２０００ノードを有するネットワークがシミュレートされた。シナリオによっては、結果が、これらの値の一部についてだけ示されている。
【００５５】
各シミュレーションの主要目標は以下のとおりである。
（１）本発明のアルゴリズムが、最新技術のＤＨＴキャッシング解決法と比べて、重要な利益をもたらすことを実証すること
（２）入力パラメータが変化する際の最適アルゴリズム構成を見つけること。より具体的には、第２の目標は、ネットワークサイズやクエリの分布といった外生パラメータが変化する際の最適な度数閾値を見つけることである。
【００５６】
キャッシングの利益を測るために、システム内で生成されるトラフィックの総量から導出されるメトリックが以下のように使用される。
クエリは、選択されたクエリ分布に従って無作為に生成され、システム稼働中に生成される全てのクエリ及びキャッシングメッセージがカウントされる。これが、本発明のキャッシングアルゴリズム（又は最新技術のキャッシングアルゴリズム）が配備されたシステムについてと、キャッシングを全く備えないシステムについて行われる。
次いで、キャッシングありとキャッシングなしで生成されたトラフィックの比が計算される。例えば、特定のキャッシングアルゴリズムでの値０．６は、同じクエリの負荷がキャッシングなしのシステムにおいて繰り返される場合と比べて、４０％のトラフィック低減が達成されたことを意味する。カウントされるメッセージは、通常のルーティングメッセージ、クエリ応答、ならびにキャッシングメッセージを含む。最新技術のアルゴリズムはキャッシングメッセージをカウントしないことを明記しておく。
【００５７】
シミュレーション結果
図４に、総トラフィックの低減を、異なるシミュレーション時間、すなわち、１ノード当たりで発行された異なる平均クエリ数についてのクエリの度数閾値の関数として示す。全てのグラフにおけるクエリ分布は、パラメータ０．２を有するＺｉｐｆである。この分布は、典型的なＰ２Ｐファイル共用ネットワークにおいて期待されるものである。最上部の曲線は、各ノードが平均で１０件のクエリを発行したときの、すなわち、１ノード当たりの平均クエリ発行率を毎秒０．１とした場合の１００秒のシミュレーション時間の後の総トラフィックを示している。１ノード当たりで発行される平均クエリ数は、図の下に行くに従って１０件ずつ増加している。
【００５８】
図４の結果に基づいて２つの重要な知見が得られる。第１に、総トラフィックは常に１００％をはるかに下回っている。これは、ルーティング（経路指定）されたクエリの度数を追跡し、観測されるクエリ分布に従ってデータを複製することが、トラフィック低減の点で利益をもたらすことを意味する。しかし、見出すべき重要な知見は、曲線の中間のあたりに、０．２から０．４までの度数閾値の値に対応する、トラフィック低減が最も高い、すなわち、総生成トラフィックが可能限り最小となるような領域があることである。より具体的には、各曲線には、トラフィックを最小化する、すなわち、トラフィック低減を最大化する度数閾値ｐの特定の最適値がある。この値は常に０．２から０．４の間にあり、トラフィックはこの領域においてはあまり変化しないため、中央値の０．３が最適な度数閾値として使用され得る。
【００５９】
図５及び図６に、他のパラメータ、特に、クエリ分布パラメータ（図５参照）とネットワークサイズ（図６参照）が変化するときに、この選択が最適なまま維持されていることを示す。クエリ分布パラメータの異なる値についてのトラフィック低減を示す図５においては、（明瞭さは劣るが）類似の挙動、すなわち、最適な度数閾値の存在が見られる。この傾向は、Ｚｉｐｆパラメータの各値ごとに、特に、典型的なＰ２Ｐ配備において観測される０．３を下回る値の場合に存在する。同じことが、異なるネットワークサイズについてトラフィックが度数閾値と共にどのように変化するかを示す図６の各曲線についても当てはまる。図５と図６におけるシミュレーション時間は、それぞれ、６００秒と５００秒である。
【００６０】
図７では、本発明のキャッシングアルゴリズムの利益（下の２曲線）と、データがクエリパス全体に沿って複製される最新技術のキャッシング解決法（非特許文献２０や非特許文献２１など）によって生じる利益（上の２曲線）を比較している。本発明のアルゴリズムは、クエリの度数閾値の最適値、すなわち、ｐ＝０．３を使用するように調整されている。２つの異なるＺｉｐｆパラメータ、０．１及び０．２についての結果が示されている。したがって、（上から見て）第１の曲線は第３の曲線と比較され、第２の曲線は第４の曲線と比較される必要がある。クエリ分布がほぼ均一である（Ｚｉｐｆ分布パラメータが０．１である、すなわち、第１と第３の曲線）とき、本発明のキャッシングアルゴリズムは、２５％から３０％までの間のさらなるトラフィック低減をもたらす。典型的なクエリ分布（Ｚｉｐｆパラメータ０．２）の場合、利益は２０％前後である。対応する曲線間の差は、発行されるクエリの平均数がグラフに示される限界を超えて増大するに従って減少するが、これらの差は、システム内の各ノードが平均で３０００件のクエリを発行したときでさえも、１０％を上回ったままであることに留意されたい。
【００６１】
この知見は、より高速で変化するクエリ分布を有する、より動的なシステムが、本発明のキャッシング法を使用すれば、より大きな利益が得られる可能性があることを意味する。これらのダイナミックスは、前述の従来技術の文献においては無視されている。したがって、本発明の解決法は、実際の配備に際してはさらに一層有利になる。
【００６２】
図８は、トラフィックがどれほどクエリ分布パラメータに依存するかを示している。上の曲線は、完全パス複製に属し、下の曲線は本発明のキャッシングアルゴリズムに属する。この場合もやはり、クエリの度数閾値は０．３に設定されている。トラフィックの低減度は、より小さい分布パラメータでより大きく、パラメータが増大するに従って減少する。０．４以上の値は、ファイル共用といった典型的なＰ２Ｐ配備においてはほとんど起こり得ないことに留意されたい。
【００６３】
ネットワークサイズは、前述の全ての実験において一定（１５００ノード）であった。最後の実験は、ネットワークサイズが変化するときにこれら全ての数がどのように変化するか評価するものである。図９は、これを、１００秒（１ノード当たり１０件のクエリ）と６００秒（１ノード当たり６０件のクエリ）という、２つの異なるシミュレーション時間の値について示している。図９から導くべき主要な結論は、前述の各図からの全ての知見がより大規模なネットワークについても有効のままであるというものである。
【図１】
2010182301.tif 000003
【図２】
2010182301.tif 000004
【図３】
2010182301.tif 000005
【図４】
2010182301.tif 000006
【図５】
2010182301.tif 000007
【図６】
2010182301.tif 000008
【図７】
2010182301.tif 000009
【図８】
2010182301.tif 000010
【図９】
2010182301.tif 000011
【外国語明細書】
2010182301.tif 000012
2010182301.tif 000013
2010182301.tif 000014
2010182301.tif 000015
2010182301.tif 000016
2010182301.tif 000017
2010182301.tif 000018
2010182301.tif 000019
2010182301.tif 000020
2010182301.tif 000021
2010182301.tif 000022
2010182301.tif 000023
2010182301.tif 000024
2010182301.tif 000025
2010182301.tif 000026
2010182301.tif 000027
2010182301.tif 000028
2010182301.tif 000029
2010182301.tif 000030
2010182301.tif 000031
2010182301.tif 000032
2010182301.tif 000033
2010182301.tif 000034
2010182301.tif 000035
2010182301.tif 000036
2010182301.tif 000037
2010182301.tif 000038
2010182301.tif 000039
2010182301.tif 000040
2010182301.tif 000041
2010182301.tif 000042
2010182301.tif 000043
2010182301.tif 000044
2010182301.tif 000045
2010182301.tif 000046
2010182301.tif 000047
2010182301.tif 000048
2010182301.tif 000049