(57)【要約】【課題】分散ハッシュネットワークにおいて問い合わせを再帰解決するのにより適した経路を選択する。【解決手段】本発明の経路選択方法は、分散ハッシュネットワークにおけるノードの密度を推定し、ラウンドトリップタイムの平均値を推測し、フィンガー候補ノードを選出し、選出された前記フィンガー候補ノードに対するラウンドトリップタイムを計測し、前記選出されたフィンガー候補ノードをフィンガー経路として選択した場合における探索空間の残存サイズと、前記ノードの密度と、前記ラウンドトリップタイムの平均値とから、前記選択されたフィンガー候補ノードに対する問い合わせを行った後、探索が完了するまでに要する探索時間を予測し、予測された前記探索時間と、計測された前記ラウンドトリップタイムとから求められる評価値を各前記選択されたフィンガー候補ノード間で比較し、最も評価の高いフィンガー候補ノードを新たなフィンガーノードとして選択する。【選択図】図４
2007158907.tif 000002
【特許請求の範囲】
【請求項１】
分散ハッシュネットワークにおけるあるノードにおいて実行する経路選択方法であって、
前記分散ハッシュネットワークにおけるノードの密度を推定するノード密度推定ステップと、
ラウンドトリップタイムの平均値を推測する平均値推測ステップと、
あらかじめ保持するフィンガーノードの情報を元にフィンガー候補ノードを選出するフィンガー候補選出ステップと、
選出された前記フィンガー候補ノードに対するラウンドトリップタイムを計測する計測ステップと、
前記選出されたフィンガー候補ノードをフィンガー経路として選択した場合における探索空間の残存サイズと、推定された前記ノードの密度と、推測された前記ラウンドトリップタイムの平均値とから、前記選択されたフィンガー候補ノードに対する問い合わせを行った後、探索が完了するまでに要する探索時間を予測する、予測ステップと、
予測された前記探索時間と、計測された前記ラウンドトリップタイムとから求められる評価値を各前記選択されたフィンガー候補ノード間で比較し、最も評価の高いフィンガー候補ノードを新たなフィンガーノードとして選択するフィンガーノード選択ステップと、
を備えた経路選択方法。
【請求項２】
前記ノード密度推定ステップは、あらかじめ与えられたノードリストに載っているノードの個数を、前記自ノードから最も遠いノードと自ノードとの間の距離で除算することにより前記ノードの密度を推定することを特徴とする請求項１に記載の経路選択方法。
【請求項３】
前記平均値推測ステップは、過去に通信を行った各ノードに対するラウンドトリップタイムの平均をとることにより前記ラウンドトリップタイムの平均値を推測することを特徴とする請求項１に記載の経路選択方法。
【請求項４】
前記フィンガー候補選出ステップと前記計測ステップとをこの順序で繰り返し行い、または、前記フィンガー候補選出ステップと前記計測ステップと前記予測ステップとをこの順序で繰り返し行い、あらかじめ指定された終了条件が満たされた場合は繰り返しを終了する繰り返しステップをさらに備えたことを特徴とする請求項１に記載の経路選択方法。
【請求項５】
前記予測ステップは、前記探索空間の残存サイズをＸ、前記推定されたノードの密度をＤ、前記ラウンドトリップタイムの平均値を平均ＲＴＴとした場合、平均ＲＴＴ×Ｌｏｇ２（Ｄ×Ｘ）により前記探索時間を予測することを特徴とする請求項１に記載の経路選択方法。
【請求項６】
請求項１ないし５のいずれか一項に記載の各ステップをコンピュータに実行させるための経路選択プログラム。
【請求項７】
分散ハッシュネットワーク上のノードに搭載される経路選択装置であって、
前記分散ハッシュネットワークにおけるノードの密度を推定するノード密度推定部と、
ラウンドトリップタイムの平均値を推測する平均値推測部と、
あらかじめ保持するフィンガーノードの情報を元にフィンガー候補ノードを選出するフィンガー候補選出部と、
選出された前記フィンガー候補ノードに対するラウンドトリップタイムを計測する計測部と、
前記選出されたフィンガー候補ノードをフィンガー経路として選択した場合における探索空間の残存サイズと、推定された前記ノードの密度と、推測された前記ラウンドトリップタイムの平均値とから、前記選択されたフィンガー候補ノードに対する問い合わせ後、探索が完了するまでに要する探索時間を予測する予測部と、
予測された前記探索時間と、計測された前記ラウンドトリップタイムとから求められる評価値を各前記選択されたフィンガー候補ノード間で比較し、最も評価の高いフィンガー候補ノードを新たなフィンガーノードとして選択するフィンガーノード選択部と、
を備えた経路選択装置。
【請求項８】
前記ノード密度推定部は、あらかじめ与えられたノードリストに載っているノードの個数を、前記自ノードから最も遠いノードと自ノードとの間の距離で除算することにより前記ノードの密度を推定することを特徴とする請求項７に記載の経路選択装置。
【請求項９】
前記平均値推測部は、過去に通信を行った各ノードに対するラウンドトリップタイムの平均をとることにより前記ラウンドトリップタイムの平均値を推測することを特徴とする請求項７に記載の経路選択装置。
【請求項１０】
前記予測部は、前記探索空間の残存サイズをＸ、前記推定されたノードの密度をＤ、前記ラウンドトリップタイムの平均値を平均ＲＴＴとした場合、平均ＲＴＴ×Ｌｏｇ２（Ｄ×Ｘ）により前記探索時間を予測することを特徴とする請求項７に記載の経路選択装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路選択方法、経路選択プログラムおよび経路選択装置に関する。
【背景技術】
【０００２】
分散ハッシュテーブルのうち、Chordについて、Finger(短絡経路)を形成する仕組みが存在する。Fingerにより、ハッシュテーブル上の残り探索空間を1/n(nは2以上の整数)とでき、これによりO(logN)(Nはノード数)のホップ数での探索が可能になる。
【０００３】
従来技術として、
1)分散ハッシュテーブルの探索空間を削減するのに最適なノードをFingerに選択する（非特許文献１参照）、2)分散ハッシュテーブル上の一定範囲に存在する一定数のノードのうち、もっともRTTの小さいものをFingerに選択する（非特許文献２参照）、の2種類の方法が存在する。
【特許文献１】特開２００４−２６６７９６公報
【非特許文献１】I.Stoica,R.Morris,D.Karger,M.F.Kaashoek,andH.Balakrishnan.Chord:Ascalablepeer-to-peerlookupserviceforinternetapplications.InProceedingsofACMSIGCOMM,August2001.
【非特許文献２】FrankDabek,JinyangLi,EmilSit,JamesRobertson,FransKaashoek,andRobertMorris.DesigningaDHTforlowlatencyandhighthrough-put.InProceedingsofthe1stUSENIXSymposiumonNetworkSys-temsDesignandImplementation(NSDI’04),SanFrancisco,California,March2004.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、分散ハッシュテーブルの構築において、ネットワーク層の近傍性の軽視により高遅延なシステムができていた。
【０００５】
また、遅延を低減させるための仕組みの一つとしてプロトコル上許される範囲でRTTの短いノードを選択し、問い合わせにかかる時間を減少させる、という手段がある。
【０００６】
しかし、分散ハッシュテーブルの探索において最適でないノードを選択することによる問い合わせホップ数の期待値の増加の効果と、上記問い合わせにかかる時間の減少とを比べて、どちらが優位であるかは判断ができず、上記手段は単純にある数のノードをFinger候補として比較しもっとも小さいRTTのものを選択するのみであった。
【０００７】
従って、このFingerの選択によって選ばれた経路が最適であるという保証がない。特に、近くのFingerのRTTを最適化する際、探索空間の削減比の増分が大きくなる可能性があり、その評価が不十分であった。
【０００８】
本発明は、問い合わせを再帰解決するのにより適した経路を選択できるようにした経路選択方法、経路選択プログラムおよび経路選択装置を提供する。
【課題を解決するための手段】
【０００９】
本発明の一態様としての経路選択方法は、分散ハッシュネットワーク（分散ハッシュテーブルを構成する装置間で構築する論理的ネットワーク）におけるあるノードにおいて実行する経路選択方法であって、前記分散ハッシュネットワークにおけるノードの密度を推定するノード密度推定ステップと、ラウンドトリップタイムの平均値を推測する平均値推測ステップと、あらかじめ保持するフィンガーノードの情報を元にフィンガー候補ノードを順次選出するフィンガー候補選出ステップと、選出された前記フィンガー候補ノードに対するラウンドトリップタイムを計測する計測ステップと、前記選出されたフィンガー候補ノードをフィンガー経路として選択した場合における探索空間の残存サイズと、推定された前記ノードの密度と、推測された前記ラウンドトリップタイムの平均値とから、前記選択されたフィンガー候補ノードに対する問い合わせを行った後、探索が完了するまでに要する探索時間を予測する、予測ステップと、予測された前記探索時間と、計測された前記ラウンドトリップタイムとから求められる評価値を各前記選択されたフィンガー候補ノード間で比較し、最も評価の高いフィンガー候補ノードを新たなフィンガーノードとして選択するフィンガーノード選択ステップと、を備える。
【００１０】
本発明の一態様としての経路選択プログラムは、上記経路選択方法に記載の各ステップをコンピュータに実行させることを特徴とする。
【００１１】
本発明の一態様としての経路選択装置は、分散ハッシュネットワーク上のノードに搭載される経路選択装置であって、前記分散ハッシュネットワークにおけるノードの密度を推定するノード密度推定部と、ラウンドトリップタイムの平均値を推測する平均値推測部と、  あらかじめ保持するフィンガーノードの情報を元にフィンガー候補ノードを選出するフィンガー候補選出部と、選出された前記フィンガー候補ノードに対するラウンドトリップタイムを計測する計測部と、前記選出されたフィンガー候補ノードをフィンガー経路として選択した場合における探索空間の残存サイズと、推定された前記ノードの密度と、推測された前記ラウンドトリップタイムの平均値とから、前記選択されたフィンガー候補ノードに対する問い合わせ後、探索が完了するまでに要する探索時間を予測する予測部と、予測された前記探索時間と、計測された前記ラウンドトリップタイムとから求められる評価値を各前記選択されたフィンガー候補ノード間で比較し、最も評価の高いフィンガー候補ノードを新たなフィンガーノードとして選択するフィンガーノード選択部と、を備える。
【発明の効果】
【００１２】
本発明により、問い合わせを再帰解決するのにより適した経路を選択できる。
【発明を実施するための最良の形態】
【００１３】
本発明はChordアルゴリズムを背景としている。Chordアルゴリズムについては、非特許文献２を参照されたい。以下では、まず本発明の要点を説明するに足る最低限の内容について説明する。
【００１４】
分散ハッシュテーブル(DHT:Distributed Hash Table)とは、Chordに代表されるアルゴリズムの総称で、ハッシュテーブルの機能を分散させ、大規模なデータ管理機構を実現させるものである。
【００１５】
分散ハッシュテーブルにおけるキー(鍵)の取り得る値域を空間に射影したものを、DHT空間と呼ぶ。Chordでは、160ビットのハッシュ関数(SHA-1)をキーの値域とし、これを1次元の閉じた数直線に射影する。この閉じた数直線は、本実施形態では上を0=2160 とし、下を2159 とする時計回りの座標を持つ円として表現する。
【００１６】
本実施形態において、ノードとは通信可能、かつデータ保存可能な計算機であり、分散ハッシュテーブルを形成するための基本構成要素である。多数のノードがネットワーク接続されて分散ハッシュネットワークが形成される。多数のノードが自律分散協調的に連携することにより誤りなくハッシュテーブルの機能が実現される。
【００１７】
ノードのDHT上の位置とは、DHT空間上に各ノードを射影した結果のキーの値を指す。実装上、ノードのIPアドレスの文字列などをハッシュ関数にかけた結果（ハッシュ値）をDHT上の位置として用いることが多い。また、DHT空間は各ノードのDHT上の位置により分割され、各ノードは自身の位置から一つ手前(本実施形態では反時計回り)のノードの位置までの間のデータを管理する。
【００１８】
Finger（フィンガー）とは、ノード間で作成する短絡経路のことである。各ノードは自身の前後のノードについてはお互いにお互いを教え合う（例えばノードに割り当てられたキーの値（ハッシュ値）、ノードのIPアドレスなどを教え合う）ことで分散したデータの取り扱いを可能にする。一方、前後のつながりのみにおいて数千・数万台のノードを接続することは、問い合わせに必要な時間がノードの台数に比例して大きくなることを意味し、現実的ではない。そこで、DHT空間をショートカットするための経路を各ノードが自律的に構成する。この経路をFingerと呼ぶ。
【００１９】
Fingerには添字が存在する。具体的には、Fingerは各ノードが、DHT空間上の半分、1/4、1/8、1/16‥‥‥先付近に存在するノードを予め互いの連携により調べておき、自分の位置からDHT空間を半分(半周)行ったところよりも先にあるデータは半分先のノードに、半分よりも手前だが1/4よりも向こうにあるデータは1/4向こうに位置するノードに、といった形で問い合わせを転送する。転送先でも半分、1/4、1/8‥‥‥といったFingerを用いてショートカットすることができるので、ノードの数が増えても再帰問い合わせの回数はそれほどは増えない(具体的にはノードの数をNとして、log2Nに比例する)。
【００２０】
以下、DHT空間上の半分から先の領域を担当するFingerを、Finger[159]、1/4から先の領域を担当するFingerをFinger[158]などと表現する。これは、自ノードの位置をsとして、Finger[i]は、s+2i を超えない範囲でできるだけ自ノードよりも遠い(s+2i に近い) 位置に存在するノードを意味する。
【００２１】
RTTとは、Round-Trip-Time（ラウンドトリップタイム）の略で、あるノードから別のノードまでの通信の往復にかかる時間である。
【００２２】
図１は、分散ハッシュネットワークの例を模式的に示す。
【００２３】
説明の簡単のため６つのノード（計算機）１〜６のみを示している。図中上側の円が160ビットのDHT空間を表しこのDHT空間上にノード１〜６が配置されている。図中下側は実際のネットワーク構造を示している。ノード１〜３は地理的（ネットワーク層的）に互いに近い距離に配置され、ノード４〜６も同様に地理的に互い近い距離に配置される。一方、DHT空間上ではノード１、２、４、３、５、６の順に配置され、ノード２〜６が比較的互いに近い距離に配置され、ノード１がノード２〜６から遠い距離に配置されている。ここでは、ノード１がノード４、３、５、６に順次再帰的に問い合わせを行って、ノード６から目的の情報（キーの値に対応する情報）を取得する例が示されている。ノード４はノード１のFingerノードに相当するとする。
【００２４】
図２は、ノードの構成を概略的に示すブロック図である。図３および図４はノードによる行われる処理の流れを示すフローチャートである。ノードによる処理は、図３に示す「Finger最適化処理」と、図４に示す「Finger[i]の最適化処理」との2つに分れている。前者は全体の処理であり、後者はサブルーチン（プログラム実装の場合）である。また、ノードによる処理は、この他に、Successor（サクセッサ）およびSuccessorList（サクセッサリスト）の最適化処理も存在する。
【００２５】
SuccessorとはDHT空間において自ノードの次に位置するノードである。また、各ノードは、Successorの故障時に備えるためと、問い合わせの最終ホップの効率化のために、別途定める台数のノードをSuccessorListとして保持する。SuccessorListはSuccessorの次のノード、その次のノード、といったふうに順次自ノードから見てDHT空間の順方向に位置するノードを選択する。なお、SuccessorListの台数は、logNに比例させるのが良いという研究結果があるが、とりあえず十分な数の定数でも構わない。
【００２６】
SuccessorおよびSuccessorListはノード起動時あるいはタイマ駆動により確認・更新される。詳細は非特許文献１に記載される。Successor情報およびSuccessorListは記憶部１１に格納される。Successor情報はSuccessorのキーの値やIPアドレスの他、過去に通信を行った際に測定したRTTも含む。SuccessorListも同様に各ノードのキーの値やIPアドレスの他、過去に通信を行った際に測定したRTTも含む。記憶部１１にはFinger情報も格納される。Finger情報は各Fingerノードのキーの値やIPアドレスの他、過去に通信を行った際に測定したRTTも含む。
【００２７】
図３を用いて、「Finger最適化処理」全体の処理について説明する。
【００２８】
Finger最適化処理は、DHTを構成する各ノードでタイマ等により起動される（Finger最適化処理開始）。この処理は、平均RTT推測部１２が記憶部１１から、現在のノードが持っているFinger情報や、Successor情報＆SuccessorListなどからそれぞれのノードとのRTT(過去に測定した内容)を取得し、そこからネットワーク全体への平均RTTを推測する(Ｓ１１)。具体的には、過去に測定したRTTの算術平均を取る。
【００２９】
次に、ノード密度推定部１３が、Successor情報＆SuccessorListを利用して、ノードの密度を推定する(Ｓ１２)。ノードの密度の推定は具体的には次の通りである。Successor情報＆SuccessorListによりノードがnノード先まで観測されていたとする。自ノードからnノード先のノードまでのDHT空間上の距離をdとしたときに、ノードの密度はn/dで表現できる。また、ノードの密度n/dを用いて、DHT空間上に存在するノードの数の推定値Nは2m×n/dと表される。
【００３０】
次に、それぞれのFingerについて図４に示す「Finger[i]の最適化処理」を行う。存在するFingerの添字[i]の最大のもの(通常はm-1(mが160の場合は159))から開始する（Ｓ１３）。Ｓ１３の詳細については後述する。i の処理が終了したら、i =i-1、つまり次に小さいiの処理を行う（Ｓ１４のＹＥＳ）。もし、より小さい添字を持つFingerが残っていなかったら(Ｓ１４のＮＯ)、処理を終了する(Finger最適化処理終了(sleep))。なお、全体の処理が終了した後、一定時間を経過後に再度「Finger最適化処理」は起動される。
【００３１】
さて、図４に示す「Finger[i]の最適化処理」について説明する。Finger[i]においては、正規のアルゴリズムで求めたFinger[i]ノード、およびこれに対して近傍性で優位になりうる複数のFinger[i]候補ノードの中から、より優位なノードを実際のFinger[i]ノードとして利用するものである。
【００３２】
まず、最適化部２０におけるFinger指定部１９が、最初に処理すべきFinger[i]をFinger情報から検出してFinger候補選出部１４に通知する。Finger候補選出部１４は、通知されたFinger[i]について、Finger候補の選出を行う(Ｓ２１)。Finger[i]自体もFinger候補として選出してもよい。ここにはいくつかの戦略（アルゴリズム）があり得る。最も単純な戦略は、正規のアルゴリズムで求めたFinger[i]ノードを起点として、一つずつ手前側に隣接するノードを選択する方法である。ただし、この方法では毎回ほぼ同一のノードしか探索できず、最適化の程度が低いので、過去探索したノードについては一定時間の間は再探索を行わず、より手前のノードに探索を延長する方法が考えられる。逆に、一定時間毎に再探索を行うことによって、新規に登場したノードを探索対象に含めることができる。また、前回探索したノードが存在する場合は、そのうち成績の良かったもの半分を再探索し、残りは新規ノードと入れ替えて探索する、といった戦略も考えられる。このような戦略あるいはその派生により、次のFinger候補としてノードを一つ選出する。Finger候補の選出のため、Finger候補選出部１４は、Finger[i]ノード等と連携してFinger候補の情報を取得する。
【００３３】
このように選出したノードに対して、RTT計測部１５が自ノードとの間のRTTを計測する(Ｓ２２)。計測方法は、単純にプローブパケットを送受信するだけでも良いし、より正確な計測方法があればそれを利用しても良い。計測したRTTは、記憶部１１における「各Finger候補のRTT一覧」に記録する。
【００３４】
予測部１６は、選出したノードについて、これをFingerとして利用した場合に、このFingerから先にかかる問い合わせ時間（探索時間）を予測し（Ｓ２３）、「各Finger候補の問い合わせ時間予測一覧」に記録する。ここで、問い合わせ時間は、そのノードに問い合わせを行った以後、問い合わせが解決するまでにかかる時間を示す。
【００３５】
この時間を、本実施形態ではP(X)×平均RTTで予測する。ここで、P(X)は、そのノードに問い合わせを転送することにより残る探索空間のサイズXを引数とし、そのノード以降問い合わせを解決するまでに必要な平均ホップ数を示す。
【００３６】
残る探索空間Xは、例えば自ノードのDHT空間上の位置が0x3000..0000(160bitで、..は省略を意味、以下同じ)である場合を例に説明する。
【００３７】
Finger[159]の場合、元々のFinger[159]による探索区間は、ノードの位置+2159、つまり0x3000..0000+2159 =0xb000..0000から時計回りにノードの位置の直前0x2fff..ffffまでである（ノードの位置+2159にFingerノードが存在する場合を想定している）。候補ノードのDHT空間上の位置が0x9000..0000であった場合、Finger[159]による探索区間に加えて、0x9000..0000〜0xafff..ffffが探索空間として残る。サイズにしてFinger[159]による探索区間に加えて、0xa000...0000分の空間が増分することになる。この合計サイズ（残存サイズ）がXになる。Finger[158]の場合は、元々のFinger[158]による探索区間が0x3000..0000+2158 =0x7000..0000から、Finger[159]の始点の直前0xafff..ffffまでである。仮に候補ノードが0x5000..0000であった場合、そこから0xafff..ffffまでの区間の0x6000..0000がXとなる。図５に、探索空間が増分する様子を示す。Fingerノード４（Finger[159]）に対するFinger候補としてノード２を選出した場合、斜線で示された領域Ａが増分する探索空間である。
【００３８】
ここで、P(X)は、事前に推定されたノードの密度をDとしたときに、P(X)=log2(D×X)となる。非特許文献１より、ノード数がNのChordネットワークは平均log2Nホップの再帰問い合わせにより解決が可能となる。ここで、引数として与えられたXの空間に存在するノードの数はD× Xであることから、Xの領域への問い合わせホップ数の平均がP(X)=log2(D×X)により求められる。
【００３９】
この探索は、事前に定められた終了条件が満されるまで続き、終了条件が満たされたか否かを判断部１７が判断する（Ｓ２４）。終了条件が満たされない場合は（Ｓ２４のＮＯ）Ｓ２１に戻る。終了条件にはいくつかの種類が考えられ、例えば必ずN個のノードを探索するもの、消費するトラフィック量を事前に定めるもの、あるいは、Finger[i]のiの値によって資源を偏って配分し、より大きな影響を与える、iの大きい短絡経路の最適化を優先するもの、RTT改善比やRTTの絶対値の閾値を用いて、閾値に達したら探索を打ち切るもの、およびそれらの組み合わせなどが考えられる。もっとも単純な実装としては、処理に用いる時間をi秒と定数で決めておき、i秒間で探索できるだけのノードの探索（Ｓ２１）とRTTの計測（Ｓ２２）とを行う実装が考えられる。例えば、探索開始(「Finger[i]の最適化処理」の開始)からi秒経過した時点で探索を終了する。
【００４０】
終了条件が満たされたら（Ｓ２４のＹＥＳ）、選択部１８が、ここまでで計測されたRTT(各Finger候補のRTT一覧)および問い合わせ時間(各Finger候補の問い合わせ時間予測一覧)を集計し、それぞれのFinger候補ノードについて、例えば、該ノードに対するRTTと、該ノードから先の問い合わせ時間の予測値とを合計した値を評価値として計算する。そして各Finger候補ノードから計算された評価値を比較し、この値がもっとも小さいFinger候補ノードを、新しいFinger[i]として選択する。比較の際、前回求めた各Finger候補ノードの評価値も含めて比較を行ってもよい。選択された新しいFinger[i]がこれ以降問い合わせの経路付けに使われる。
【００４１】
図６は、Fingerノードが変更された後の分散ハッシュネットワークを示している。ノード４に代わってノード２が新たなFingerノードとして選択されている。図１と対比すると、長距離ホップが図１ではノード１→ノード４、ノード１→ノード５、ノード１→ノード６の３つあったが、図６では、ノード１→ノード５、ノード１→ノード６の２つに減少されている。よって、図１よりも高速な検索が行われることが期待される。
【００４２】
以上に述べた本実施形態の要点を別の観点から述べると以下の通りである。Finger（短絡経路）の選択において、対象経路を選択することによるRTTの減少または増加と、問い合わせホップ数の増加による問い合わせ時間の増加との総合評価を通じて、最適な選択を行う。具体的には、問い合わせホップ数の増加による問い合わせ時間の増加について、DHTのノード数と平均RTTとの２つの推測値から増加量の推測値を算出し、算出した推測値とRTTの減少または増加とを総合評価する。
【００４３】
以下に本発明を実施するのに最適な実施例を述べる。本発明により提供される分散ハッシュテーブルは、例えばEPCglobalによる電子タグのように、商品に関連づけられたIDと、その商品に関する情報とを関連づける、などの目的で利用できる。この時、例えば商品のIDなどを鍵として、商品の位置情報履歴や、鮮度に関係する保管状況などの情報を格納する、などの利用例が考えられる。分散ハッシュテーブルの持つスケーラビリティにより、このような大規模の情報管理が可能になる。
【００４４】
一方、現実に分散ハッシュテーブルを提供することを考える。このようなサービスは、P2P的にクライアントの参加により実現することも、データセンターに設置することもできる。また、その両者を混合することもできる。ここでは、米国・欧州・アジアの3箇所のデータセンターにおいて、1000台ずつのノードを設置し、サービスを行うことを考える。
【００４５】
ここで、米国←→欧州、欧州←→アジア、アジア←→米国の間には、インターネット回線の速度の限界などによる通信の遅延が発生する。クライアント・サーバ方式の通常のサービスであれば遅延はクライアント・サーバ間の遅延のみで済むが、大規模な情報管理を実現するためには通常のクライアント・サーバシステムでは不十分である。しかし一方で、広域に分散したサービスを分散ハッシュテーブルで実現する場合、分散ハッシュテーブル上の再帰的問い合わせの結果遅延が長くなる傾向があるのも事実である。
【００４６】
こういった場合、本発明にあるFingerの選択方式を採用することにより、分散ハッシュテーブルのノード間の「長距離リンク」を選択することが少なくなり、理想的には各長距離リンクのメッセージ転送は高々一往復で完了する。
【図面の簡単な説明】
【００４７】
【図１】分散ハッシュネットワークの例を模式的に示す図
【図２】ノードの構成を概略的に示すブロック図
【図３】ノードにより行われる処理の流れを示すフローチャート
【図４】ノードにより行われる処理の流れを示すフローチャート
【図５】探索空間が増分する様子を示す図
【図６】Fingerノードが変更された後の分散ハッシュネットワークを示す図
【符号の説明】
【００４８】
１〜６  ノード（計算機）
１１  記憶部
１２  平均RTT推測部
１３  ノード密度推定部
１４  Finger候補選出部
１５  RTT計測部
１６  予測部
１７  判断部
１８  選択部
１９  Finger指定部
２０  最適化部
【図１】
2007158907.tif 000003
【図２】
2007158907.tif 000004
【図３】
2007158907.tif 000005
【図４】
2007158907.tif 000006
【図５】
2007158907.tif 000007
【図６】
2007158907.tif 000008