(57)【要約】【課題】オーバーレイネットワークにおいて、一つのノードに負荷を集中させることなくオブジェクトの検索に必要な情報の消失を防ぐ。【解決手段】ノード装置は、自ノードとしてオーバーレイネットワークに参加している状態において、オブジェクト位置との距離が自ノードとオブジェクト位置との距離よりも小さいノードをオブジェクトが保持されたノードを示すキャッシュ情報の転送先に選定する転送先選定部と、転送先選定部によって選定された転送先にキャッシュ情報を転送する情報転送部とを備える。さらに、オーバーレイネットワークから離脱させる指示を受けたときに、キャッシュ情報をこれまで保持していた空間の外に位置するノードにキャッシュ情報を拡散するようにキャッシュ情報の転送先に選定し、選定された転送先にキャッシュ情報を転送する。【選択図】図１１
2011175448.tif 000002
【特許請求の範囲】
【請求項１】
オーバーレイネットワークのノードとして当該オーバーレイネットワークの他のノードと通信するノード装置であって、
前記オーバーレイネットワークでの検索対象となるオブジェクトを保持したノードを当該オブジェクトに対応付けて示すキャッシュ情報であり当該ノード装置に該当するノードである自ノードに保持される前記キャッシュ情報を参照し、そのキャッシュ情報に示されるノードに対応する前記オブジェクトについて、前記オブジェクトの論理位置であるオブジェクト位置と前記自ノード以外のノードである注目ノードとの、前記オーバーレイネットワークが構築される論理空間における距離を算出する第２演算部と、
前記第２演算部によって算出された距離に基づいて前記キャッシュ情報の転送先を選定する転送先選定部と、
前記転送先選定部によって選定された転送先に前記キャッシュ情報を転送する情報転送部とを備えるノード装置。
【請求項２】
前記オーバーレイネットワークが構築される論理空間における、前記自ノードと前記オブジェクトの論理位置であるオブジェクト位置との距離を算出する第１演算部を更に備え、
前記第２演算部は、通信相手の選択肢を示すルーティング情報であり当該ノード装置に保持される前記ルーティング情報を参照し、そのルーティング情報が示すノードを前記注目ノードとして距離を算出し、
前記転送先選定部は、前記第２演算部によって算出された距離が前記第１演算部によって算出された距離よりも小さいノードを転送先に選定する
ことを特徴とする請求項１記載のノード装置。
【請求項３】
前記論理空間において、前記自ノードに隣接する隣接ノードを検索する隣接ノード検索部をさらに備え、
前記隣接ノード検索部による検索の実行を契機として、前記転送先選定部が転送先を選定し、選定された転送先に前記キャッシュ情報を前記情報転送部が転送する
請求項１または２記載のノード装置。
【請求項４】
前記論理空間における自ノードと前記自ノード以外のノードである注目ノードとの距離を算出する第３演算部をさらに備え、
当該ノード装置に対して、前記自ノードを前記オーバーレイネットワークから離脱させる指示が与えられたことを契機として、
前記第２演算部、及び前記第３演算部は、前記ルーティング情報が示すノードを前記注目ノードとして距離を算出し、
前記転送先選定部は、前記第２演算部によって算出された距離が前記第１演算部によって算出された距離よりも大きいノードの中から、第３演算部によって算出された距離に基づいて転送先のノードを選定し、
前記情報転送部は、転送先に選定されたノードに前記キャッシュ情報を転送する
請求項１ないし３のいずれかに記載のノード装置。
【請求項５】
前記情報転送部による転送を間引く転送管理部をさらに備え、
当該ノード装置が前記自ノードとして前記オーバーレイネットワークに参加している前記状態において、
前記転送管理部は、前記自ノードと前記オブジェクト位置との間のノード数が少ないほど割合の大きい間引きをする
請求項１ないし４のいずれかに記載のノード装置。
【請求項６】
前記転送先選定部は、前記自ノードを前記オーバーレイネットワークから離脱させる指示が与えられたことを契機として転送先を選定する場合に、前記第１演算部によって算出された距離が小さいほど転送先を数多く選定する
請求項４記載のノード装置。
【請求項７】
オーバーレイネットワークのノードとして当該オーバーレイネットワークの他のノードと通信するノード装置において実行されるコンピュータプログラムであって、
前記オーバーレイネットワークでの検索対象となるオブジェクトを保持したノードを当該オブジェクトに対応付けて示すキャッシュ情報であり当該ノード装置に該当するノードである自ノードに保持される前記キャッシュ情報を参照し、そのキャッシュ情報に示されるノードが対応付けられた前記オブジェクトについて、前記オブジェクトの論理位置であるオブジェクト位置と前記自ノード以外のノードである注目ノードとの、前記オーバーレイネットワークが構築される論理空間における距離を算出する第２演算部と、
前記第２演算部によって算出された距離に基づいて前記キャッシュ情報の転送先を選定する転送先選定部と、
前記転送先選定部によって選定された転送先に前記キャッシュ情報を転送する情報転送部として、前記ノード装置を動作させる
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、分散ハッシュテーブルを用いるネットワークに接続されるノード装置およびそれの機能を実現するコンピュータプログラムに関する。
【背景技術】
【０００２】
ピアツーピア（以下、Ｐ２Ｐと記す）ネットワークにおいて、ルーティングの手法として分散ハッシュテーブル（DHT: Distributed Hash Table）が用いられている。分散ハッシュテーブルは、所定のハッシュ関数によって決まるハッシュ値の集合であるハッシュ空間にノードを写像し、それによってオーバーレイネットワークを構築する。例えば、映像、音声、ソフトウェアといった各種のコンテンツを複数のノードが共有するオーバーレイネットワークでは、コンテンツごとにそれの所在を管理するノードが定められる。あるコンテンツについては、ハッシュ空間において当該コンテンツに定まるハッシュ値に近いノードが所在管理を担当する。コンテンツの所在管理を担当するノードは、コンテンツそのものを保持するノードを示すキャッシュ情報をコンテンツ検索のためのインデックス情報として保持する。これにより、任意のノードは他のノードが保持するコンテンツを取得することができる。すなわち、任意のノードは、取得したいコンテンツに対してハッシュ値を求め、求めたハッシュ値に該当するノードにコンテンツの所在を問い合わせ、コンテンツを保持するノードと通信してコンテンツを受け取る。分散ハッシュテーブルによれば、ネットワークに参加している全てのノードがＰ２Ｐ通信によって相互にコンテンツを高速に検索することができる。
【０００３】
ノードが随時に離脱したり参加したりするネットワークでは、所在管理担当のノードの離脱によるキャッシュ情報の消失を防ぐため、各コンテンツのキャッシュ情報が定期的に再登録される、または、複数のノードによって冗長的に保持される。例えば、自ノードがキャッシュ情報を登録した相手先となる、所在管理担当のノードに対して、接続を監視し、切断を検知すると、新たなノードを定め直して、キャッシュ情報を再登録する手法が提案されている（特許文献１）。また、複数のノードに同じキャッシュ情報を冗長的に記憶させることに関して、ハッシュ空間での距離に基づいて複数のノードを選定する認証システムがある（特許文献２）。この認証システムは、被認証ノードの正当性を、認証ノードが他の複数のノードに記録されている被認証ノードの検証情報に基づいて認証するシステムであり、全ノードを管理する管理用ノードを備える。管理用ノードは、被認証ノードの検証情報のハッシュ値との距離が所定値以下であるノード、すなわち当該検証情報に近い複数ノードに当該検証情報（キャッシュ情報）を記録させる。管理用ノードが求める距離は、ハッシュ値どうしの排他的論理和である。
【０００４】
一方、ネットワーク管理の処理負担の軽減に関して、階層ツリー構造のネットワークにおけるツリーの途中にノード接続の態様を制御する手段を設けることが提案されている（特許文献３）。配信元装置を頂点として階層ツリー状に接続された情報処理装置が第１サブネットワークを構成する。第１サブネットワークの情報処理装置のいずれかが頂点情報処理装置とされ、頂点情報処理装置を頂点として階層ツリー状に接続された情報処理装置が第２サブネットワークを構成する。頂点情報処理装置が第２サブネットワークにおける接続の管理を受け持ち、ネットワーク全体の接続管理の負担が低減する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２４６２２５号公報
【特許文献２】特開２００９−１６９８６１号公報
【特許文献３】特開２００８−２５２４９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のノードがキャッシュ情報を冗長的に保持していたとしても、これらノードが全てネットワークから離脱すれば、キャッシュ情報は消失する。キャッシュ情報がコンテンツを保持するノードを示すコンテンツ所在管理リストであった場合は、コンテンツ検索要求を送信したが、コンテンツ取得先を得られない、また、キャッシュ情報がノードの検証情報で合った場合は、正規のノードであるにもかかわらず、正当に認証されない、などの問題が発生する。管理担当のノードが離脱したときに、キャッシュ情報に関わるコンテンツを保持するノードが管理担当のノードを定め直してキャッシュ情報を再登録することにすれば、キャッシュ情報の消失を防ぐことができる。また、特許文献２においては、キャッシュ情報となる検証情報を保持するノードが離脱したときに、全ノードを管理する管理用ノードが、検証情報を保持させるノードを定め直して再配信することにより、認証システムは機能することができる。しかし、そのようにすると、各ノードは、自己が保持するコンテンツごとに管理担当のノードを記憶し、かつ、離脱の有無を検知するための接続確認を頻繁に行わなければならない。ネットワーク内で共有されるコンテンツが増えるに従って、接続確認のためのトラフィックが増大する。特許文献２において、接続確認や検証情報の再配信など、特定の管理用ノードのトラフィックを増大させることは、P2Pのメリットが失わせる。
【０００７】
オーバーレイネットワークにおいて、検索対象となるコンテンツの所在を示す、コンテンツ所在管理リストや、他ノードの検証情報を、一つのノードに負荷を集中させることなく複製配置し、それらキャッシュ情報の消失を防ぐ手法を提案する。
【課題を解決するための手段】
【０００８】
オーバーレイネットワークのノードとして当該オーバーレイネットワークの他のノードと通信するノード装置は、通信相手の選択肢を示すルーティング情報を保持するルーティング情報保持部と、前記オーバーレイネットワークでの検索対象となるデータを保持したノードを示すキャッシュ情報を保持するキャッシュ情報保持部と、前記オーバーレイネットワークが構築される論理空間における、自ノードと前記キャッシュ情報の論理位置であるオブジェクト位置との距離を算出する第１演算部と、前記論理空間における前記自ノード以外のノードである注目ノードと前記オブジェクト位置との距離を算出する第２演算部と、前記第１演算部および第２演算部によってそれぞれ算出された距離に基づいて前記キャッシュ情報の転送先を選定する転送先選定部と、前記転送先選定部によって選定された転送先に前記キャッシュ情報を転送する情報転送部とを備える。当該ノード装置が前記自ノードとして前記オーバーレイネットワークに参加している状態において、前記第２演算部は、前記ルーティング情報が示すノードを前記注目ノードとして距離を算出し、前記転送先選定部は、前記第２演算部によって算出された距離が前記第１演算部によって算出された距離よりも小さいノードを転送先に選定する。さらに、ノード装置は、自ノードと前記論理空間における注目ノードとの距離を算出する第３演算部を備え、オーバーレイネットワークから離脱するノードは、第１、第２及び第３演算部によって算出された距離の比較によって、前記論理空間上、オブジェクト位置より、遠ざかる方向に存在するノードを転送先に選定する。
【発明の効果】
【０００９】
論理空間において自ノードよりもオブジェクト位置に近いノードにキャッシュ情報が転送されるので、新たにオーバーレイネットワークに参加したノードに対して、キャッシュ情報の登録元のノードが登録先に対して再登録を行わなくても、ネットワーク内でキャッシュ情報が冗長的に保持される。また、キャッシュ情報を保持するノードが離脱する際に、オブジェクト位置より、遠ざかる方向にキャッシュ情報を拡散することができるので、キャッシュ情報がネットワークから消失することなく、ネットワークに参加している複数のノード装置で冗長的に保持し続けることができる。
【図面の簡単な説明】
【００１０】
【図１】ネットワークの概略を示す図である。
【図２】ルーティングテーブルの例を示す図である。
【図３】ハッシュ値どうしの距離の例を示す図である。
【図４】一つのノードとその近傍のノードとの距離関係を模式的に示す図である。
【図５】ノード装置の構成の第１例を示す図である。
【図６】キャッシュ情報の例を示す図である。
【図７】ノード装置の動作の概略を示すフローチャートである。
【図８】参加時の動作の流れを示すフローチャートである。
【図９】通常時の転送動作の流れを示すフローチャートである。
【図１０】離脱時の転送動作の流れを示すフローチャートである。
【図１１】通常時におけるキャッシュ情報の転送の例を示す図である。
【図１２】離脱時におけるキャッシュ情報の転送の第１例を示す図である。
【図１３】離脱時におけるキャッシュ情報の転送の第２例を示す図である。
【図１４】ノード装置の構成の第２例を示す図である。
【図１５】転送管理部の動作の流れを示すフローチャートである。
【図１６】第２例のノード装置による通常時におけるキャッシュ情報の転送の形態を示す図である。
【図１７】第２例のノード装置による離脱時におけるキャッシュ情報の転送の形態を示す図である。
【発明を実施するための形態】
【００１１】
図１に示されるようなネットワーク１を想定する。ネットワーク１は、Ｐ２Ｐネットワークを構成する複数のノード装置をハッシュ空間に写像したオーバーレイネットワークである。ハッシュ空間は、ｎ桁（ｎは自然数）の２進数で表わされるｎ次元の論理空間の一種であって、ノードの位置がハッシュ関数によって決まる空間である。
【００１２】
ネットワーク１は、図示された複数のノードＮａ，Ｎｂ，Ｎｃ，Ｎｄ，Ｎｅ，Ｎｆ，Ｎｇ，Ｎｈ，Ｎｉ，Ｎｊ、および図示されない複数のノードを有する。ネットワーク１内の全てのノードは、それぞれノード装置に対応する。ノード装置は、パーソナルコンピュータ、ＰＤＡ（Personal Digital Assistant）またはネットワーク接続可能な他の情報機器である。ノードＮａ〜Ｎｊには、それぞれに固有のノードID(identification)にハッシュ関数を適用して得られるハッシュ値がハッシュ空間内での位置として対応づけられている。図では各ノードＮａ〜Ｎｊのハッシュ値が便宜的に十進数で表記されている。
【００１３】
ネットワーク１では、“オブジェクト”についての検索（探索ともいう）が、オブジェクトを保持していないノードによって行われる。検索の時点で、いずれかのノードにおいてオブジェクトが保持されている場合もあるし、いずれのノードにも保持されていない場合もあり得る。検索の対象となるオブジェクトの代表例は、映像や音楽といったいわゆるコンテンツである。他には、各ノードの認証情報を他のノードが検証する場合に当該他のノードが保持する検証情報が、オブジェクトとして挙げられる。
【００１４】
キャッシュ情報を次のように定義する。キャッシュ情報は、Ｐ２Ｐネットワークによって、分散保持されている情報であって、検索されるキー（ハッシュ値）に対して、キーを受信した場合に、何らかのバリューが応答可能か否かをノードが判断するための基となるデータ(例えば、コンテンツ所在管理リスト)や、検索応答を受信した後、検索応答に記述された接続先ノードに対して、処理を要求すると、情報提供される基となるデータ（例えば、コンテンツ、ノードの検証情報）を想定する。つまり、検索するオブジェクトがコンテンツ（コンテンツID=ID0)の場合には、ハッシュ関数Hash()を適用することによって得られたハッシュ値Hash(ID0)に近いノードが、コンテンツを保持するノードを示す情報(コンテンツ所在管理リスト)を管理担当することになり、このコンテンツ所在管理リストをキャッシュ情報と定義する。また、前記特許文献２のような認証システムにおいては、管理用ノードが、ノード(ノードID= ID0)の検証情報を、ハッシュ値Hash(ID0+α)に近いノードから、複数に配置することになり、この配置された、ノードが保持する他ノード検証情報をキャッシュ情報と定義する。ここでαは、適用システムにて設定される定数とする。認証システムにおいては、被認証ノード(ノードID= ID0)の認証を担当するノードは、ハッシュ値Hash(ID0+α)に近いノードを検索することによって、被認証ノード(ノードID= ID0)の検証情報を保持するノードを探し出し、検証依頼を要求、検証結果を受信できる。キャッシュ情報の保持を担当するノードは、オブジェクトの識別子(ID0、または、ID0+α)のハッシュ値と同一または近いハッシュ値に対応づけられているノードである。ハッシュ値はハッシュ空間における位置に相当するので、オブジェクトの論理的な位置（これをオブジェクト位置と呼称する）またはその近傍に写像されているノードによってキャッシュ情報が保持されることになる。すなわち、ネットワーク１では、オブジェクト位置をキー（Key）として、キャッシュ情報やキャッシュ情報から判断される値をValueとして取得する検索が行われる。
【００１５】
図１の例示では、ノードＮｂとノードＮｆとの間で、あるコンテンツＡの授受が行われる。ここでは、コンテンツＡを映像データとし、詳しくは放送局から放送や通信によって提供される番組または番組の一部とする。ただし、コンテンツＡは映像データ以外であってもよい。コンテンツＡの授受の基本的な手順は次のとおりである。
【００１６】
ノードＮｂは、放送を受信してコンテンツＡを取得すると、コンテンツＡについてのキャッシュ情報ＬAを保持すべきノードに保持を依頼する（段階[１]）。このとき、コンテンツＡを特定するコンテンツID（番組名等でもよい）のハッシュ値、すなわちコンテンツ位置が「６０」であるとする。また、コンテンツ位置に最も近いノードがノードＮｉであるとする。ノードＮｂは、コンテンツ位置に近いノードを探索するルーティングによってノードＮｉを特定し、ノードＮｉに所定のメッセージを送信する。
【００１７】
メッセージを受けたノードＮｉは、コンテンツＡがノードＮｂによって保持されていることを示すキャッシュ情報ＬAを作成して保持する。これにより、コンテンツＡが検索対象のオブジェクトとして登録される（段階[２]）。なお、この登録に関して、契機となったメッセージの送信元のノード（この例でのノードＮｂ）を登録元と呼び、メッセージを受けて登録をしたノード（この例でのノードＮｉ）を登録先と呼ぶ。
【００１８】
その後、例えばノードＮｆがコンテンツＡを取得するために検索をする。ノードＮｆはコンテンツ位置（コンテンツIDのハッシュ値）を求め、コンテンツ位置に近いノードに向けてコンテンツＡの所在を照会するクエリを送信する。クエリはコンテンツＡに関するキャッシュ情報ＬAを有するノードＮｉに受信される。ノードＮｉは、コンテンツＡの所在であるノードＮｂのアドレス情報を、クエリの送信元であるノードＮｆに通知する（段階[３]）。
【００１９】
クエリに対する回答を得たノードＮｆは、ノードＮｂとの通信を試みる。ノードＮｂがネットワーク１から離脱しておらず、かつノードＮｂにおいてコンテンツＡが削除されていなければ、ノードＮｂからノードＮｆへコンテンツＡが転送される（段階[４]）。
【００２０】
このような手順によって、ネットワーク１内に存在する他の任意のコンテンツについても、コンテンツＡと同様に所定のノード間で授受が行われる。
【００２１】
ネットワーク１におけるルーティングには、例えばKademliaを用いることができる。KademliaはＤＨＴアルゴリズムの一つである。Kademliaには、スケーラビリティの高い検索が可能であり、ノードの参加・離脱に伴う経路維持のための各ノードの負担が小さいという利点がある。
【００２２】
図２（Ａ）はKademliaに係るルーティングテーブルＴ１の構成を示す。ルーティングテーブルＴ１は、K-bucketと呼ばれる接続先ノードのリストである。０からハッシュ値のビット数までの値をとるbucket番号ｉの値ごとに、規定個数（例えば８個）以下のノードが登録される。登録されるノードには、ＩＰ(Internet Protocol)アドレスおよびポート番号といったネットワーク通信のため情報が対応づけられる。例えばハッシュ関数がＳＨＡ−１(Secure Hash Algorithm 1)である場合、ハッシュ値のビット数は１６０であるので、bucket番号ｉのとる値の範囲は０〜１６０である。bucket番号ｉは、当該ルーティングテーブルＴ１を保持する自ノードと接続先ノードとの距離の区分を表わす。bucket番号ｉの各値には、２i以上２i+1未満の距離が対応する。図中の距離の値は十進数で表記されている。
【００２３】
図２（Ｂ）ではハッシュ値が二分木で図式化されている。そして、下位４ビットが1000であるハッシュ値を自ノードとして、bucket番号ｉが０〜４のノードが示されている。二分木における斜体の数字「０」「１」はビット値を表わす。図２（Ｂ）では、ノードがノード間の距離とは関係なくハッシュ値そのものの大きさ順に等間隔に並んでいる。
【００２４】
本実施形態のネットワーク１における“距離”とは、ネットワーク１が構築される論理空間上の位置に相当するハッシュ値どうしの排他的論理和（ＸＯＲ）である。例えば、下位５ビットに差異がある値「11111B」と値「11000B」との距離は「111B」（十進表記で７）である。排他的論理和で定義される距離には、ユークリッド空間での距離と同様に、２点の一方からみた値と他方からみた値とが等しいという対称性がある。
【００２５】
ネットワーク１における距離には対称性があるものの、３以上のノードについての遠近関係は注目するノードによって異なる。図３において、例えばノード[25]（[]内の数字は十進表記のハッシュ値を表わす）とノード[28]との距離は十進表記の５で、ノード[25]とノード[29]との距離は４である。すなわち、ノード[25]からみると、ノード[29]の方がノード[28]よりも近い。これに対して、ノード[26]とノード[28]との距離は６で、ノード[26]とノード[29]との距離は７である。すなわち、ノード[26]からみると、ノード[28]のの方がノード[29]よりも近い。
【００２６】
そこで、以下においては、図４の下半部に描かれた二分木のようにノード相互の遠近を表わす図を必要に応じて参照する。図４の下半部に描かれた二分木は、上半部に描かれたノードＮ１〜Ｎ８が等間隔に並ぶ二分木を変形させたものである。図４の下半部に描かれた二分木では、下位４ビットが1010の値をもつノードＮ３からみた他のノードＮ１，Ｎ２，Ｎ４〜Ｎ８との遠近関係が表わされている。
【００２７】
次に、上記ネットワーク１のノードの一つとして機能するノード装置の構成および動作を説明する。
〔ノード装置の第１例〕
図５に示されるノード装置１０は、ノードとしての基本動作のためのソフトウェア構成要素として、ネットワーク送受信部１２、応答処理部１４、ルーティング情報保持部１６、およびキャッシュ情報保持部１８を備える。また、ノード装置１０は、キャッシュ情報Ｌの転送に関係するソフトウェア構成要素として、論理距離演算部２０、転送先選定部２４、情報転送部２６、隣接ノード検索部２８、およびノード停止処理部３０を備える。これらの要素は、図示しない所定のハードウェア要素によるコンピュータプログラムの実行によって実現される。
【００２８】
ネットワーク送受信部１２は、ネットワーク１内の他のノード装置との間で、メッセージおよびクエリを送受信する。他のノード装置からの検索要求を受信すると、ネットワーク送受信部１２は応答処理部１４に要求を引き渡す。ルーティングのための検索が要求されたとき、応答処理部１４は、ルーティング情報保持部１６によって更新されるルーティングテーブルＴ１から検索要求に該当する情報を抽出する。応答処理部１４によって抽出された情報は、ネットワーク送受信部１２によって検索要求元のノードへ送信される。また、キャッシュ情報Ｌの保持が要求されたとき、応答処理部１４はキャッシュ情報保持部１８に処理を依頼する。依頼を受けて、キャッシュ情報保持部１８は、所定のメモリにキャッシュ情報Ｌを格納する。その後、キャッシュ情報Ｌはノード装置１０がネットワーク１を離脱するまで保持される。
【００２９】
検索要求の受信を含めて他のノード装置との間で何らかの通信が行われることは、他のノードがネットワーク１に参加していることを意味する。何らかの通信が行われたとき、ルーティング情報保持部１６は、ルーディングテーブルＴ１の保守をする。通信相手がルーディングテーブルＴ１に登録されていない場合、通信相手がそれに該当するbucket番号ｉにおける末尾に登録され、ルーディングテーブルＴ１が更新される。このとき、bucket番号ｉにおける先頭のノードについて接続確認が行われ、先頭のノードが参加中（online）でなければ、この先頭のノードはルーディングテーブルＴ１から削除される。接続確認は、bucket番号ｉにおいて、規定個数（例えば８個）以上のノードが登録されている場合にのみ実施してもよい。Kademliaでは通常の通信に際してルーディングテーブルＴ１を逐次更新するので、経路維持のための専用の通信が不要である。
【００３０】
論理距離演算部２０は、第１演算部２１と、第２演算部２２と、第３演算部２３とを有する。第１演算部２１は、ノード装置１０自身に該当するノードである自ノードとコンテンツ位置との距離Ｄ１を算出する。すなわち、自ノードIDのハッシュ値とコンテンツIDのハッシュ値との排他的論理和が第１演算部２１によって算出される。第２演算部２２は、自ノード以外のノードの中の注目する一つのノード（注目ノード）とコンテンツ位置との距離Ｄ２を算出する。第３演算部２３は、第２演算部２２の演算対象と同じ注目ノードと自ノードとの距離Ｄ３を算出する。ハッシュ関数を「Ｈ(被変換ビット列)」と表し、排他的論理和を記号「 ^ 」で表わすと、距離Ｄ１，Ｄ２，Ｄ３は次の式で表わされる。
Ｄ１＝Ｈ(自ノードID) ^ Ｈ(コンテンツID)
Ｄ２＝Ｈ(注目ノードID) ^ Ｈ(コンテンツID)
Ｄ３＝Ｈ(自ノードID) ^ Ｈ(注目ノードID)
転送先選定部２４は、複数ノードによる冗長的な保持または離脱時の委譲のために行うキャッシュ情報Ｌの転送に際して、転送先のノードを選定する。転送先の選定は、論理距離演算部２０によって算出される距離Ｄ１，Ｄ２，Ｄ３に基づいて行われる。選定の詳細は後述のとおりである。転送先選定部２４は、選定した一つまたは複数の転送先を情報転送部２６に伝える。
【００３１】
情報転送部２６は、ネットワーク送受信部１２と連携して、キャッシュ情報保持部１８によって保持されているキャッシュ情報Ｌを転送先選定部２４によって選定された転送先に転送する。
【００３２】
隣接ノード検索部２８は、自ノードに隣接するノードである隣接ノードを検索する。ここでいう隣接ノードとは、自ノードIDのハッシュ値の最下位ビットを反転したハッシュ値をノードIDとするノードである。隣接ノード検索部２８は、通常動作として、ルーティングテーブルＴ１に登録されているノードの中で自ノードに最も近いノードに対して、隣接ノードの検索を要求する。要求を受けたノードは、それが保持するルーティングテーブルを検索し、要求に該当するノードがあれば、該当するノードの情報を要求元に送る。このとき、該当するノードが無くても、該当するノードに近い所定数のノードの情報を要求元に送るようにしてもよい。このような隣接ノード検索部２８による検索の実行は、上述の転送先選定部２４が転送先を選定する契機となる。
【００３３】
ノード停止処理部３０は、自ノードをネットワーク１から離脱させる指示の入力を監視する。指示が入力されると、ノード停止処理部３０は転送先選定部２４に指示を伝える。
指示を受けた転送先選定部２４がキャッシュ情報Ｌの保持を委譲する転送先を選定し、情報転送部２６がキャッシュ情報Ｌを転送する。ノード停止処理部３０が入力を監視する指示は、ノード装置１０のユーザが図示しないユーザインタフェースを用いて所定の操作をすることによってノード装置１０に与えられる。自動離脱機能が設けられている場合には、ユーザ操作時の他に、予め設定された自動離脱時期にノード停止処理部３０に指示が入力される。
【００３４】
図６にキャッシュ情報Ｌの例が示される。本実施形態のキャッシュ情報Ｌは、あるコンテンツＡのコンテンツIDのハッシュ値と、当該コンテンツＡの登録元であるノードのＩＰアドレスおよびポート番号とを有する。ＩＰアドレスおよびポート番号はコンテンツIDのハッシュ値に対応づけられている。コンテンツIDにＳＨＡ−１を適合すると、コンテンツIDのハッシュ値は２160ビットの長さをもつ。同じコンテンツIDをもつ複数のコンテンツＡがそれぞれ異なるノードに保持され、それに伴って一つのコンテンツIDに対して複数の登録元が存在する場合もある。この場合、一つのコンテンツIDに対して、ＩＰアドレスおよびポート番号の組が複数登録される。また、コンテンツ数は１に限らず、コンテンツＡのコンテンツIDのハッシュ値と近いハッシュ値を持つ複数のコンテンツについて、それぞれの登録元のＩＰアドレスおよびポート番号が登録される場合もある。この場合、コンテンツＡについての問い合わせに際しては、キャッシュ情報ＬのうちのコンテンツＡに関する部分ＬAの情報が問い合わせ元に送られる。いずれの場合であって、登録元のノードが離脱していたり、コンテンツを削除していたりすることがある。したがって、厳密には、キャッシュ情報Ｌはコンテンツの所在を示す情報ではなく、所在の候補を示す情報である。この意味において、キャッシュ情報Ｌは“コンテンツ所有候補リスト”と言える。
【００３５】
以上の構成のノード装置１０の動作の流れが図７、８、９、１０のフローチャートによって示される。
【００３６】
図７のように、ネットワーク１に参加したノード装置１０は、まず参加処理を実行してルーティング情報を構築する（＃１）。参加処理を終えた後、スリープ処理の実行によってノード装置１０は待機状態（スリープ）に移行する（＃２）。他のノード装置からのメッセージ入力や一定時間の経過を契機とするスリープ解除といったイベントが発生すると、ノード装置１０は待機状態から通常動作状態に復帰し、他のノード装置と通信する応答処理を実行する（＃３）。登録元のノードまたはノード装置１０と同様の転送機能をもつ近傍のノードからキャッシュ情報Ｌの保持が要求された場合、応答処理においてキャッシュ情報保持部１８によってキャッシュ情報Ｌが記憶される。続いて、ノード装置１０は、キャッシュ情報Ｌの保持を冗長化するための通常時の転送処理を実行する（＃４）。ノード装置１０は、離脱指示があれば、キャッシュ情報Ｌの保持を委譲するための離脱時の転送処理を実行し（＃５、＃６）、離脱指示がなければステップ＃２〜＃４の処理を繰り返し実行する。
【００３７】
図８のように参加処理においては、隣接ノード検索部２８が、予め定められた初期接続ノードに対して隣接ノードの検索を要求する（＃１１）。返答として隣接ノードを含みまたは含まない複数の近傍ノードの情報を受信すると、隣接ノード検索部２８は、ルーティング情報保持部１６と連携してルーディングテーブルＴ１に情報を登録する（＃１２）。
【００３８】
図９のように通常時の転送処理においては、隣接ノード検索部２８が上述したとおり自ノードに最も近いノードに対して、隣接ノードの検索を要求する（＃４１）。これにより、ノード装置１０は、ハッシュ空間上の自ノード付近について密にノードの存在を認識することができる。これを契機として、自ノード内でキャッシュ情報Ｌが保持されている場合のみにおいて（＃４２でＹＥＳ）、転送先選定部２４が転送先を選定し（＃４３）、情報転送部２６がキャッシュ情報Ｌを転送する（＃４４）。転送先は次のようにして選定される。
【００３９】
論理距離演算部２０はルーディングテーブルＴ１に存在するノードの中からbucket番号ｉの小さい順に所定数（例えば８）のノードを抽出する。抽出したノードを順に注目ノードとして、論理距離演算部２０は距離Ｄ１，Ｄ２を算出する。転送先選定部２４は、距離Ｄ１よりも距離Ｄ２が小さいという条件（Ｄ１＞Ｄ２）を満たすノード、すなわち自ノードよりもコンテンツ位置に近いノードを転送先の候補とする。そして、転送先選定部２４は、転送先の候補の中の一つをランダムに選んで転送先に定める。このような選定によって、キャッシュ情報Ｌはよりコンテンツ位置の近くで保持されることになる。
【００４０】
転送の契機となる隣接ノード検索部２８による検索は定期的に繰り返し行われるので、転送先の候補からランダムに一つを転送先に選定したとしても、複数回の転送によってキャッシュ情報Ｌはコンテンツ位置の近くで冗長的に保持される。冗長化によって、キャッシュ情報Ｌを保持するノードの離脱でキャッシュ情報Ｌの消失する確率が低減される。ネットワーク１においては、コンテンツ位置の近くのノード間での転送で冗長的な保持が維持されるので、キャッシュ情報Ｌを保持するノードが離脱しても登録元が再登録をする必要も離脱の有無を監視する必要もない。また、キャッシュ情報Ｌをコンテンツ位置の近くに配置するように転送することによって、任意のノードがコンテンツ位置をキー（Key）としてキャッシュ情報Ｌを検索したときのキャッシュ情報Ｌを得ることのできるヒットの確率が大きくなる。
【００４１】
なお、転送先の候補からランダムに一つを選ぶ代わりに、ランダムに複数を選んでもよいし、条件（Ｄ１＞Ｄ２）を満たすノードを全て転送先に選定してもよい。
【００４２】
図１０のように離脱時の転送処理においては、自ノード内でキャッシュ情報Ｌが保持されている場合にのみ（＃６１でＹＥＳ）、実質的な処理（ステップ＃６２〜＃６５）が実行される。キャッシュ情報Ｌが保持されていなければ、転送処理はスルーされる。
【００４３】
論理距離演算部２０はルーディングテーブルＴ１に存在するノードの中からbucket番号ｉの小さい順に所定数のノードを抽出する。抽出したノードを順に注目ノードとして、論理距離演算部２０は距離Ｄ１，Ｄ２、Ｄ３を算出する（＃６２）。転送先選定部２４は、距離Ｄ１よりも距離Ｄ２が大きいという第１条件（Ｄ１＜Ｄ２）、および距離Ｄ１よりも距離Ｄ３が小さいという第２条件（Ｄ１＞Ｄ３）の両方が満たされるか否かをチェックする（＃６３）。第１条件および第２条件の両方を満たさすノードが転送先の候補とされる。
【００４４】
転送先選定部２４は、第１条件および第２条件を満たす転送先の候補の中で、最も自ノードに近い（距離Ｄ３が最小）一つのノードを転送先に選定する。そして、情報転送部２６が選定された一つのノードにキャッシュ情報Ｌを転送する（＃６４）。第１条件は、注目ノードが自ノードよりもコンテンツ位置から遠いときに満たされる。第２条件は、転送先がコンテンツ位置から離れすぎないようにする制限条件である。
【００４５】
所定数の注目ノードのいずれもが第１条件および第２条件を満たさないとき（＃６３でＮＯ）、転送先選定部２４はルーディングテーブルＴ１を検索して注目ノード以外のノードを転送先に選定する。その転送先に情報転送部２６がキャッシュ情報Ｌを転送する（＃６５）。このときの転送先は、自ノードよりもコンテンツ位置から遠いノードの中で最もコンテンツ位置に近いノードであって、次のようにして選定される。
【００４６】
論理距離演算部２０は距離Ｄ１における最も上位の有効ビットを認識する。例えば二進数の距離Ｄ１が「001...011」であったとき、最上位からみた有効ビット（３ビット目）が認識される。さらに、論理距離演算部２０は、コンテンツ位置を示すビット列、つまり、コンテンツIDのハッシュ値=Ｈ(コンテンツID)における３ビット目の上位のビット(最上位からみた２ビット目)を反転したビット列Ｈxを算出する。この算出されたハッシュ値Ｈxに最も近いノードを転送先選定部２４は転送先に選定する。例として、簡単に４ビットとして、ノード１０装置のハッシュ値が1010、ハッシュ値Ｈ(コンテンツID)=1001とすると、
Ｄ１=1010^1001=0011
であり、Ｄ１の上位からの最初の有効ビットは３ビット目となる。ノード１０は、自ノードのルーティングテーブルから、ハッシュ値Ｈ(コンテンツID)の３ビット目の一つ上位、２ビット目を反転したＨx=1101に最も近いノードをルーディングテーブルＴ１から抽出し、転送先選定部２４は転送先に選定する。
【００４７】
このように離脱時の転送処理においては、第１条件および第２条件が満たされる場合もそうでない場合も、自ノードと比べてコンテンツ位置から遠いノードにキャッシュ情報Ｌが転送される。つまり、論理空間内のキャッシュ情報Ｌの保持される範囲が拡大される。これにより、自ノードが離脱しても論理空間におけるキャッシュ情報Ｌの保持される範囲が縮小されず、ネットワーク１においてキャッシュ情報Ｌが消失してしまう確率が減少する。
【００４８】
図１１は通常時におけるキャッシュ情報Ｌの転送の一例を示す。図１１（Ａ）において、下位５ビットより上位のビット値が等しい１２個のノードＮ１〜Ｎ１２が示されている。１２個のうちの３個のノードＮ２，Ｎ６，Ｎ９はネットワーク１から離脱しており、その他のノードは参加しているものとする。図１１（Ａ）では、ノードＮ４を自ノードとし、自ノードＮ４からみた他のノードとの遠近関係が表わされている。
【００４９】
自ノードＮ４としてのノード装置１０は、参加処理を終えた通常動作状態において、上述のとおり隣接ノードの検索を契機としてキャッシュ情報Ｌを転送する。自ノードＮ４は自ノードＮ４からみた隣接ノードであるノードＮ３に検索クエリを送信し、クエリに対する回答をルーティングテーブルＴ１に反映させる。今、ルーティングテーブルＴ１には自ノードＮ４および離脱状態のノードではない８個のノードＮ１，Ｎ３，Ｎ５，Ｎ７，Ｎ８，Ｎ１０，Ｎ１１，Ｎ１２が登録されているものとする。また、自ノードＮ４および他の４個のノードＮ３，Ｎ５，Ｎ７，Ｎ８が、コンテンツＡに関するキャッシュ情報Ｌを冗長的に保持すべき空間ＡＬに該当するものとする。さらに、ここではコンテンツＡのコンテンツIDのハッシュ値（Ｈ(ＣA)）であるコンテンツ位置が、ノードＮ７に該当するものとする。
【００５０】
自ノードＮ４としてのノード装置１０は、例えばハッシュ値が近い８個のノードＮ１，Ｎ３，Ｎ５，Ｎ７，Ｎ８，Ｎ１０，Ｎ１１，Ｎ１２について距離Ｄ１，Ｄ２を算出し、転送先の候補を選ぶ。候補となるのは、上述のとおり、自ノードＮ４よりもコンテンツ位置に近いという条件（Ｄ１＞Ｄ２）を満たすノードである。コンテンツ位置であるノードＮ７からみた他のノードとの遠近関係が図１１（Ｂ）に表わされている。
【００５１】
図１１（Ｂ）のように、本例ではノードＮ３，Ｎ５，Ｎ８，Ｎ７が条件（Ｄ１＞Ｄ２）を満たす転送先の候補である。自ノードＮ４としてのノード装置１０は、候補の中から選んだ一つのノードにキャッシュ情報Ｌを転送する。図ではノードＮ５にキャッシュ情報Ｌ転送されている。
【００５２】
図１２および図１３は離脱時におけるキャッシュ情報Ｌの転送の第１例および第２例を示す。上述の図１１での想定と同様に、下位５ビットより上位のビット値が等しい図示された１２個のノードＮ１〜Ｎ１２のうち、３個のノードＮ２，Ｎ６，Ｎ９が離脱しており、その他のノードは参加している。図１２の第１例では自ノードがノードＮ３であり、図１３の第２例では自ノードがノードＮ１である。コンテンツ位置は第１例および第２例の両方においてノードＮ７に該当する。
【００５３】
図１２（Ａ）では自ノードＮ３からみた他のノードとの遠近関係が表わされ、図１２（Ｂ）ではコンテンツ位置であるノードＮ７からみた他のノードとの遠近関係が表わされている。図１２（Ｃ）には距離Ｄ１，Ｄ２の具体値が示されている。
【００５４】
図１２の第１例において、自ノードＮ３としてのノード装置１０は、例えばハッシュ値が近い５個のノードＮ１，Ｎ４，Ｎ５，Ｎ７，Ｎ８について距離Ｄ１，Ｄ２，Ｄ３を算出し、転送先の候補か否かを判断する。候補となるのは、上述のとおり自ノードＮ３よりもコンテンツ位置から遠いという第１条件（Ｄ１＜Ｄ２）を満たし、かつコンテンツ位置から離れすぎないという第２条件（Ｄ１＞Ｄ３）を満たすノードである。自ノードＮ３としてのノード装置１０は、転送先の候補のうちで最も自ノードＮ３に近い一つのノードを転送先に選定する。本例では自ノードＮ３の隣接ノードであるノードＮ４が転送先に選定され、ノードＮ４にキャッシュ情報Ｌが転送される。
【００５５】
図１３の第２例において、自ノードＮ１としてのノード装置１０は、例えばハッシュ値が近い５個のノードＮ３，Ｎ４，Ｎ５，Ｎ７，Ｎ８について距離Ｄ１，Ｄ２，Ｄ３を算出し、転送先の候補か否かを判断する。本例では５個のノードＮ３，Ｎ４，Ｎ５，Ｎ７，Ｎ８のいずれもが第１条件（Ｄ１＜Ｄ２）を満たさない。そこで、自ノードＮ１としてのノード装置１０は、自ノードＮ１よりもコンテンツ位置から遠いノードの中で最もコンテンツ位置に近いノードＮ１１にキャッシュ情報Ｌを転送する。
〔ノード装置の第２例〕
図１４に示されるノード装置１０ｂの構成は図５のノード装置１０の構成とほぼ同様である。両者の間の差異は、ノード装置１０ｂが転送管理部２５を備えるとともに、ノード装置１０の転送先選定部２４に代えて転送先選定部２４ｂを備える点である。ノード装置１０ｂにおけるノード装置１０と共通の構成要素についての説明を省略する。共通の構成要素には同一の参照符号が付されている。
【００５６】
転送管理部２５は、通常時のキャッシュ情報Ｌの転送を間引く。詳しくは、転送管理部２５は、転送先選定部２４ｂから情報転送部２６への転送先の伝達を後述のように自ノードの位置に応じて保留し、情報転送部２６の動作頻度を低減する。転送を間引くことにより、自ノードを含めた同一のキャッシュ情報Ｌを保持する複数のノードが同等の頻度でキャッシュ情報Ｌを送受信し合うのが回避される。つまり、ネットワーク１におけるトラフィックに関わるメッセージ数が削減される。
【００５７】
転送先選定部２４ｂは、基本的には図５のノード装置１０の転送先選定部２４と同様に、通常時および離脱時におけるキャッシュ情報Ｌの転送先を選定する。転送先選定部２４ｂは、離脱時のキャッシュ情報Ｌの転送に際して、後述のように自ノードとコンテンツ位置との距離Ｄ１に応じて転送先の個数を変える。
【００５８】
図１５は転送管理部２５が実行するキャッシュ情報転送待機処理の流れを示す。
【００５９】
転送管理部２５は、転送先選定部２４ｂから転送先が通知されると、離脱時の転送か否かをチェックする（＃７１）。離脱時の転送であれば（＃７１でＹＥＳ）、必ず転送しなければならないので、転送管理部２５は流れをステップ＃７４に進めて、情報転送部２６に転送先を伝達して転送を指示する。
【００６０】
離脱時の転送でなければ（＃７１でＮＯ）、前回の転送の時刻からの経過時間が自ノード距離順位に応じた転送待機時間を超えたか否かがチェックされる（＃７２）。経過時間が転送待機時間を超えている場合は（＃７２でＹＥＳ）、転送管理部２５は転送の時刻を現在時刻に更新し（＃７３）、情報転送部２６に転送を指示する（＃７４）。一方、経過時間が転送待機時間を超えていない場合は（＃７２でＮＯ）、転送管理部２５は情報転送部２６に転送を指示することなくキャッシュ情報転送待機処理を終える。したがって、この場合には、転送先選定部２４ｂからの転送先の通知が無効となり、転送が間引かれる。
【００６１】
転送待機時間（Ｍ）は、自ノード距離順位（Ｒ）と定数（ｍ）と単位時間（例えば１秒）との積（Ｍ＝Ｒ×ｍ秒）である。そして、自ノード距離順位とは、現時点でキャッシュ情報Ｌを保持すべきノードをコンテンツ位置から遠い順に数えた自ノードの順位を意味し、キャッシュ情報Ｌを保持すべきノードの設定基準数と転送先の候補数との差と定義される。転送先の候補数が少ないほど自ノード距離順位は下位になる（つまり、順位の値が大きくなる）。自ノードがコンテンツ位置に近いほど、転送先の候補数は少ない。したがって、自ノードがコンテンツ位置に近いほど、自ノード距離順位の値が大きく、転送待機時間は長い。
【００６２】
図１６に転送の間引きの例が示される。図１６では５個のノードＮ９０，Ｎ９５，Ｎ１０５，Ｎ１０１，Ｎ１００がコンテンツ位置の近くに存在する。ここで、キャッシュ情報Ｌを保持すべきノードの設定基準数を５とする。コンテンツ位置から最も遠いノードＮ９０が自ノードである場合、転送先の候補はノードＮ９５，Ｎ１０５，Ｎ１０１，Ｎ１００の４個である。候補数が４であるので、自ノード距離順位は設定基準数の５から４を差し引いた値の１である。定数を３０とすると、転送待機時間は３０秒である。ノードＮ９０は３０秒ごとに４個の候補からランダムに選んだ一つのノードにキャッシュ情報Ｌを転送する。同様の手順で、コンテンツ位置から２番目に遠いノードＮ９５は６０秒ごとに、３番目に遠いノードＮ１０５は９０秒ごとに、４番目に遠いノードＮ１０１は１２０秒ごとに、それぞれキャッシュ情報Ｌをコンテンツ位置に近いノードに転送する。
【００６３】
通常時の転送における転送先の選定は、定数に単位時間を乗じた時間より短い周期で繰り返される。転送先の候補は固定ではなく、新たに参加したノードも候補になる。候補は、定期的に隣接ノード検索部２８が送信する検索クエリに対する他のノードからの応答結果に依存する。通常時の転送において、転送先の候補から選ぶ転送先の個数を１に限る必要はない。自ノードがコンテンツ位置から遠いときには多く、近いときには少ないというようにコンテンツ位置からの距離に応じて転送先の個数を変えることができる。
【００６４】
図１７は離脱時におけるキャッシュ情報の転送の形態を示す。転送先選定部２４ｂは、自ノードをネットワーク１から離脱させる指示が与えられたことを契機として転送先を選定する場合に、第１演算部によって算出された距離が小さいほど転送先を数多く選定する。
【００６５】
図１７（Ａ）の例示では、ノードＮ１０５が自ノードであり、ノードＮ１０５はノードＮ９５，Ｎ９０を含めて自ノードよりもコンテンツ位置から遠い３個のノードにキャッシュ情報Ｌを転送する。図１７（Ｂ）の例示では、ノードＮ９５が自ノードであり、ノードＮ９５はノードＮ９０を含めて自ノードよりもコンテンツ位置から遠い２個のノードにキャッシュ情報Ｌを転送する。図１７（Ｃ）の例示では、ノードＮ９０が自ノードであり、ノードＮ９０は自ノードよりもコンテンツ位置から遠い１個のノードにのみキャッシュ情報Ｌを転送する。このように自ノードがコンテンツ位置から遠いほど転送先を減らすのは、コンテンツ位置から遠いほどコンテンツ位置をキーとする検索要求を受信する確率が小さいからである。コンテンツ位置から遠い位置でキャッシュ情報Ｌを保持しておくことの必要性は高くない。
【００６６】
以上の実施形態によれば、キャッシュ情報Ｌの登録先がその近傍のノードに転送してキャッシュ情報Ｌの保持を冗長化するので、キャッシュ情報Ｌの登録元が登録先を記憶したり、登録先が離脱したときに再登録したりする必要がない。ハッシュ値の近いノード間でキャッシュ情報を転送するので、再登録のためにキャッシュ情報Ｌが分散ハッシュテーブルに従って収束するまでバケツリレー形式で転送されて、メッセージ数が増える可能性もない。
【００６７】
オーバーレイネットワークのルーティング維持のために自ノードが隣接ノードを検索した際に、自ノードが自己の保持するキャッシュ情報Ｌについて転送先を選定するので、隣接ノード装置の存在を認識すると同時にキャッシュ情報Ｌを転送することができる。
【００６８】
離脱時に自ノードよりもオブジェクト位置から遠いノードにキャッシュ情報Ｌを転送してキャッシュ情報Ｌを拡散するので、キャッシュ情報Ｌを保持するノードが離脱したとしても、キャッシュ情報Ｌを冗長的に保持し続けることができる。
【００６９】
自ノードとオブジェクト位置との距離に応じてキャッシュ情報Ｌの転送先の数を変えることにより、オブジェクト位置に最も近い、最もキャッシュ情報Ｌを保持すべきノードがより確実にキャッシュ情報Ｌを保持することができる。
【符号の説明】
【００７０】
１    ネットワーク（オーバーレイネットワーク）
Ｎａ〜Ｎｊ    ノード
Ｎ１〜Ｎ１２    ノード
Ｎ９０，Ｎ９５，Ｎ１００，Ｎ１０１，Ｎ１０５    ノード
１０、１０ｂ    ノード装置
Ｔ１    ルーティングテーブル（ルーティング情報）
１６    ルーティング情報保持部
Ｌ    キャッシュ情報
１８    キャッシュ情報保持部
２１    第１演算部
２２    第２演算部
２３    第３演算部
Ｄ１，Ｄ２，Ｄ３    距離
２４、２４ｂ    転送先選定部
２５    転送管理部
２６    情報転送部
２８    隣接ノード検索部
【図１】
2011175448.tif 000003
【図２】
2011175448.tif 000004
【図３】
2011175448.tif 000005
【図４】
2011175448.tif 000006
【図５】
2011175448.tif 000007
【図６】
2011175448.tif 000008
【図７】
2011175448.tif 000009
【図８】
2011175448.tif 000010
【図９】
2011175448.tif 000011
【図１０】
2011175448.tif 000012
【図１１】
2011175448.tif 000013
【図１２】
2011175448.tif 000014
【図１３】
2011175448.tif 000015
【図１４】
2011175448.tif 000016
【図１５】
2011175448.tif 000017
【図１６】
2011175448.tif 000018
【図１７】
2011175448.tif 000019