(57)【要約】      （修正有）【課題】各ノード装置が、コンテンツ分散保存システムにおいてコンテンツデータのレプリカ（複製データ）をより迅速に取得することを可能にしたシステムを提供する。【解決手段】内容の異なる複数のコンテンツデータの複製データが複数のノード装置に分散保存され、自ノード装置が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置からネットワークを介して取得する複製数取得手段と、前記取得された夫々の複製数情報に示される前記複製データの数を比較する複製数比較手段と、前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存する複製データ取得手段と、を備える。【選択図】図６
2008234445.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、内容の異なる複数のコンテンツデータの複製データが複数のノード装置に分散保存され、当該分散保存されている複製データの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおける前記ノード装置であって、
自ノード装置が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得する複製数取得手段と、
前記取得された夫々の複製数情報に示される前記複製データの数を比較する複製数比較手段と、
前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存する複製データ取得手段と、
を備えることを特徴とするノード装置。
【請求項２】
請求項１に記載のノード装置において、
前記複製数取得手段は、前記複製データ取得手段により前記複製データが取得される度に、当該複製データ以外の前記複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から再取得し、前記複製数比較手段は、当該取得された夫々の複製数情報に示される前記複製データの数を再比較し、前記複製データ取得手段は、前記再比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを取得して保存することを特徴とするノード装置。
【請求項３】
請求項１に記載のノード装置において、
前記複製数取得手段は、所定時間が経過する度に、前記複製データ取得手段により取得された前記複製データ以外の前記複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から再取得し、前記複製数比較手段は、当該取得された夫々の複製数情報に示される前記複製データの数を再比較し、前記複製データ取得手段は、前記再比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを取得して保存することを特徴とするノード装置。
【請求項４】
請求項１乃至３の何れか一項に記載のノード装置において、
自ノード装置が取得すべき前記複数のコンテンツデータのうち、当該数より少ない複数のコンテンツデータを選択するコンテンツ選択手段を更に備え、
前記複製数取得手段は、前記選択された複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から取得し、前記複製数比較手段は、当該取得された夫々の複製数情報に示される前記複製データの数を比較することを特徴とするノード装置。
【請求項５】
請求項４に記載のノード装置において、
夫々の前記コンテンツデータ及び夫々の前記ノード装置には、所定桁数からなる固有の識別情報が割り当てられており、
前記コンテンツ選択手段は、自ノード装置の識別情報の所定桁目と一致桁が少ない識別情報が割り当てられたコンテンツデータを選択することを特徴とするノード装置。
【請求項６】
請求項１乃至５の何れか一項に記載のノード装置において、
前記複製データ取得手段は、前記比較された前記複製データの数が同じコンテンツデータが複数ある場合には、それらのコンテンツデータのうち、データ量が最も大きいコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを取得して保存することを特徴とするノード装置。
【請求項７】
請求項１乃至５の何れか一項に記載のノード装置において、
前記複製データ取得手段は、前記比較された前記複製データの数が同じコンテンツデータが複数ある場合には、それらのコンテンツデータのうち、自ノード装置との間のデータ伝送に要する時間が最も長い他のノード装置に保存されているコンテンツデータを優先して、その複製データを保存している当該他のノード装置から取得して保存することを特徴とするノード装置。
【請求項８】
コンピュータを、請求項１乃至７の何れか一項に記載のノード装置として機能させることを特徴とするノード処理プログラム。
【請求項９】
ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、内容の異なる複数のコンテンツデータの複製データが複数のノード装置に分散保存され、当該分散保存されている複製データの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムであって、
前記ノード装置は、
自ノード装置が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得する複製数取得手段と、
前記取得された夫々の複製数情報に示される前記複製データの数を比較する複製数比較手段と、
前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存する複製データ取得手段と、
を備えることを特徴とするコンテンツ分散保存システム。
【請求項１０】
ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、内容の異なる複数のコンテンツデータの複製データが複数のノード装置に分散保存され、当該分散保存されている複製データの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおける複製データ取得方法であって、
前記ノード装置が、
自ノード装置が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得する工程と、
前記取得された夫々の複製数情報に示される前記複製データの数を比較する工程と、
前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存する工程と、
を備えることを特徴とする複製データ取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の通信システムの技術分野に関する。
【背景技術】
【０００２】
この種のピアツーピア型の通信システムにおいて、コンテンツデータのレプリカ（複製データ）を複数のノード装置に分散配置（分散保存）させておくコンテンツ分散保存システムが知られており、これにより、対故障性やアクセスの分散性が高められている。このように分散保存されたコンテンツデータのレプリカの所在は、例えば特許文献１に開示されるような分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用して効率良く検索可能になっている。当該ＤＨＴは、各ノード装置に記憶されており、当該ＤＨＴには、各種メッセージの転送先となるべき複数のノード装置を示すノード情報（例えば、ＩＰアドレス及びポート番号を含む）が登録されている。
【０００３】
そして、コンテンツ分散保存システムに参加しているノード装置は、所望のコンテンツデータの取得を望む場合、当該コンテンツデータのレプリカの所在を検索（発見）するためのメッセージ（クエリ）を他のノード装置に送出することにより、当該メッセージは、上記ＤＨＴにしたがって、中継のノード装置により当該コンテンツデータのレプリカの所在の管理元のノード装置に向かって転送され、最終的に当該メッセージが辿り着く上記管理元のノード装置から上記所在を示す情報を取得することになる。これにより、当該メッセージを送出したノード装置は、上記検索に係るコンテンツデータのレプリカを保存しているノード装置に対して、当該コンテンツデータのレプリカを要求し、当該コンテンツデータのレプリカの提供を受けることができる。
【特許文献１】特開２００６−１９７４００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、コンテンツ分散保存システムにおいて取得可能なコンテンツデータには様々な（内容が異なる）ものがあるが、分散保存されているレプリカの数が少ない（当該レプリカを保存しているノード装置の数が少ない）コンテンツデータについては、そのレプリカの所在を検索（発見）するためのメッセージ（クエリ）を他のノード装置に送出しても、その管理元のノード装置から迅速に返答（上記所在を示す情報を含む）が得られない（例えば、返答に時間がかかったり、返答が帰ってこない等）場合や、得られても当該レプリカを保存しているノード装置へのアクセス集中により当該レプリカを迅速に取得できない場合がある。また、このような場合、ノード装置は、全てのコンテンツデータを管理しているコンテンツ管理サーバにアクセスして当該レプリカを取得することもできるが、この場合も、コンテンツ管理サーバの負荷が増大するという問題がある。
【０００５】
また、各ノード装置において新たなコンテンツデータのレプリカが取得され保存される場合、各ノード装置においてコンテンツデータのレプリカを記憶保存するための記憶装置（例えば、ハードディスク）の記憶容量は限られているため、それ以前に保存されていたコンテンツデータのレプリカが上書きされてしまい、そのレプリカのコンテンツ分散保存システム上における数が更に減ってしまい、上記問題が一層顕著になることも懸念される。
【０００６】
本発明は、以上の問題等に鑑みてなされたものであり、各ノード装置が、コンテンツ分散保存システムにおいてコンテンツデータのレプリカ（複製データ）をより迅速に取得することを可能にしたコンテンツ分散保存システム、複製データ取得方法、ノード装置、及びノード処理プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、内容の異なる複数のコンテンツデータの複製データが複数のノード装置に分散保存され、当該分散保存されている複製データの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおける前記ノード装置であって、自ノード装置が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得する複製数取得手段と、前記取得された夫々の複製数情報に示される前記複製データの数を比較する複製数比較手段と、前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存する複製データ取得手段と、を備えることを特徴とする。
【０００８】
この発明によれば、ノード装置は、自己が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得し、前記取得した夫々の複製数情報に示される前記複製データの数を比較し、前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存するように構成したので、数が少ない複製データを早い段階で増やすことができ、したがって、当該複製データを他のノード装置が、より迅速に取得する（取得し易くする）ことができる。
【０００９】
請求項２に記載の発明は、請求項１に記載のノード装置において、前記複製数取得手段は、前記複製データ取得手段により前記複製データが取得される度に、当該複製データ以外の前記複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から再取得し、前記複製数比較手段は、当該取得された夫々の複製数情報に示される前記複製データの数を再比較し、前記複製データ取得手段は、前記再比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを取得して保存することを特徴とする。
【００１０】
この発明によれば、あるコンテンツデータの複製データが取得されている間に、次に取得すべきコンテンツデータの複製データのコンテンツ分散保存システムにおける数が変わっても、より正確な複製データの数に用いて複製データの数の比較を行うことができる。
【００１１】
請求項３に記載の発明は、請求項１に記載のノード装置において、前記複製数取得手段は、所定時間が経過する度に、前記複製データ取得手段により取得された前記複製データ以外の前記複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から再取得し、前記複製数比較手段は、当該取得された夫々の複製数情報に示される前記複製データの数を再比較し、前記複製データ取得手段は、前記再比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを取得して保存することを特徴とする。
【００１２】
この発明によれば、あるコンテンツデータの複製データが取得される時間が所定時間よりも長くかかってしまい、次に取得すべきコンテンツデータの複製データのコンテンツ分散保存システムにおける数が変わっても、より正確な複製データの数に用いて複製データの数を比較を行うことができ、一方、所定時間経過していなければ、次に取得すべきコンテンツデータの複製データの数がそれほど変わることがないで、この場合には複製数情報を再取得するために生じるネットワークやノード装置等の負担を抑えることができる。
【００１３】
請求項４に記載の発明は、請求項１乃至３の何れか一項に記載のノード装置において、自ノード装置が取得すべき前記複数のコンテンツデータのうち、当該数より少ない複数のコンテンツデータを選択するコンテンツ選択手段を更に備え、前記複製数取得手段は、前記選択された複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から取得し、前記複製数比較手段は、当該取得された夫々の複製数情報に示される前記複製データの数を比較することを特徴とする。
【００１４】
この発明によれば、取得すべき全てのコンテンツデータの複製データの数を比較するのではなく、そのうち所定数のコンテンツデータの複製データの数を比較することで、効率化を図ることができる。
【００１５】
請求項５に記載の発明は、請求項４に記載のノード装置において、夫々の前記コンテンツデータ及び夫々の前記ノード装置には、所定桁数からなる固有の識別情報が割り当てられており、前記コンテンツ選択手段は、自ノード装置の識別情報の所定桁目と一致桁が少ない識別情報が割り当てられたコンテンツデータを選択することを特徴とする。
【００１６】
請求項６に記載の発明は、請求項１乃至５の何れか一項に記載のノード装置において、前記複製データ取得手段は、前記比較された前記複製データの数が同じコンテンツデータが複数ある場合には、それらのコンテンツデータのうち、データ量が最も大きいコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを取得して保存することを特徴とする。
【００１７】
この発明によれば、より長い取得時間を要するコンテンツデータのレプリカを早目に取得することができる。
【００１８】
請求項７に記載の発明は、請求項１乃至５の何れか一項に記載のノード装置において、前記複製データ取得手段は、前記比較された前記複製データの数が同じコンテンツデータが複数ある場合には、それらのコンテンツデータのうち、自ノード装置との間のデータ伝送に要する時間が最も長い他のノード装置に保存されているコンテンツデータを優先して、その複製データを保存している当該他のノード装置から取得して保存することを特徴とする。
【００１９】
この発明によれば、より長い取得時間を要するコンテンツデータのレプリカを早目に取得することができる。
【００２０】
請求項８に記載のノード処理プログラムの発明は、コンピュータを、請求項１乃至７の何れか一項に記載のノード装置として機能させることを特徴とする。
【００２１】
請求項９に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、内容の異なる複数のコンテンツデータの複製データが複数のノード装置に分散保存され、当該分散保存されている複製データの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムであって、前記ノード装置は、自ノード装置が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得する複製数取得手段と、前記取得された夫々の複製数情報に示される前記複製データの数を比較する複製数比較手段と、前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存する複製データ取得手段と、を備えることを特徴とする。
【００２２】
請求項１０に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、内容の異なる複数のコンテンツデータの複製データが複数のノード装置に分散保存され、当該分散保存されている複製データの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおける複製データ取得方法であって、前記ノード装置が、自ノード装置が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得する工程と、前記取得された夫々の複製数情報に示される前記複製データの数を比較する工程と、前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存する工程と、を備えることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、ノード装置は、自己が取得すべき、内容の異なる複数のコンテンツデータ毎に、その複製データの数を示す複製数情報を、当該複製データの所在を管理している装置から前記ネットワークを介して取得し、前記取得した夫々の複製数情報に示される前記複製データの数を比較し、前記比較された前記複製データの数が少ないコンテンツデータを優先して、その複製データを保存している他のノード装置から当該複製データを前記ネットワークを介して取得して保存するように構成したので、数が少ない複製データを早い段階で増やすことができ、したがって、当該複製データを他のノード装置が、より迅速に取得する（取得し易くする）ことができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【００２５】
［１．コンテンツ分散保存システムの構成等］
始めに、図１等を参照して、本実施形態に係るコンテンツ分散保存システムの概要構成等について説明する。
【００２６】
図１は、本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
【００２７】
図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４ａ,４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５ａ,５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、及び通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界の通信ネットワークであり、通信手段の一例）８が構築されている。なお、図１の例におけるネットワーク（通信ネットワーク）８には、データ（パケット）を転送するためのルータが、適宜挿入されているが図示を省略している。
【００２８】
このようなネットワーク８には、複数のノード装置（以下、「ノード」という）Ｎｎ（ｎ＝１，２，３・・・の何れか）が接続されている。また、各ノードＮｎには、固有の製造番号およびＩＰ（Internet Protocol）アドレスが割り当てられている。このような製造番号およびＩＰアドレスは、複数のノード間で重複しないものである。
【００２９】
そして、本実施形態に係るコンテンツ分散保存システムＳは、これらのノードＮｎのうち、図１の上部枠１００内に示すように、何れか複数のノードＮｎの参加により形成されるピアツーピア方式のネットワークシステムとなっている。なお、図１の上部枠１００内に示すネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク９（論理的なネットワーク）である。かかるオーバーレイネットワーク９は、特定のアルゴリズム、例えば、ＤＨＴ（Distributed Hash Table）を利用したアルゴリズムにより実現される。
【００３０】
そして、コンテンツ分散保存システムＳ（言い換えれば、オーバーレイネットワーク９）に参加している各ノードＮｎには、所定桁数からなる固有の識別情報であるノードＩＤが割り当てられており、当該ノードＩＤは、例えば、各ノードＮｎに個別に割り当てられたＩＰアドレス或いは製造番号を共通のハッシュ関数（例えば、ＳＨＡ−１等）によりハッシュ化した値（例えば、ｂｉｔ長が１６０ｂｉｔ）であり、図３に示すような一つのＩＤ空間に偏りなく分散して配置されることになる。
【００３１】
なお、コンテンツ分散保存システムＳへの参加は、参加していないノードＮｎ（例えば、ノードＮ８）が、参加している任意のノードＮｎ（例えば、当該システムＳに常時参加しているコンタクトノード）に対して参加要求を示す参加メッセージを送信することによって行われる。
【００３２】
上記のように共通のハッシュ関数により求められた（ハッシュ化された）ノードＩＤは、当該ＩＰアドレス或いは製造番号が異なれば、同じ値になる確率が極めて低いものである。また、このノードＩＤは、ノードの最大運用台数を収容できるだけのｂｉｔ数を持たせる必要がある。例えば、１２８ｂｉｔの番号とすれば、2＾128＝340×10＾36台のノードを運用できる。なお、ハッシュ関数については公知であるので詳しい説明を省略する。
【００３３】
また、各ノードＮｎは、夫々、ＤＨＴを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムＳ上における各種メッセージの転送先を規定しており、具体的には、ＩＤ空間内で適度に離れたノードＮｎのノードＩＤ、ＩＰアドレス及びポート番号を含むノード情報が複数登録されている。
【００３４】
コンテンツ分散保存システムＳに参加している１台のノードＮｎは、該システムＳに参加している全てのノードＮｎのうち、必要最低限のノードＮｎのノード情報をルーティングテーブルに登録しておき、ノード情報を知らない（記憶していない）ノードＮｎについては、各ノードＮｎ間で互いに各種メッセージを転送し合って届けてもらうようになっている。
【００３５】
ここで、図２及び図３を参照して、ＤＨＴを用いたルーティングテーブルについて詳しく説明する。
【００３６】
図２は、ノードＮ２が保持するＤＨＴを用いたルーティングテーブルの一例を示す図であり、図３は、ＤＨＴのＩＤ空間の一例を示す概念図である。
【００３７】
なお、図２及び図３の例においては、説明の便宜上、ノードＩＤのｂｉｔ長を２ｂｉｔ×３桁＝６ｂｉｔとし、各桁を４進数（０〜３の整数）で表している（実際には、もっと長いｂｉｔ長を用い、各桁も例えば４ｂｉｔに区切って０〜ｆの１６進数で表現する）。
【００３８】
図２の例において、ＤＨＴを用いたルーティングテーブルは、レベル１〜レベル３のテーブルからなり（複数のレベルに区分されており）、各レベルのテーブルエントリーには、エリア毎に、ノード情報として、ノードＩＤとこれに対応するノードＮｎのＩＰアドレス及びポート番号が対応付けられて登録されている。各レベルのテーブルにおける各エリアは、ＤＨＴのノードＩＤ空間を分割することにより得られるエリアである。例えば、図３に示すように、レベル１では、ＤＨＴのＩＤ空間全体が４分割され、“０００”〜“０３３”のノードＩＤが存在するエリアを０ＸＸのエリア、“１００”〜“１３３” のノードＩＤが存在するエリアを１ＸＸのエリア、“２００”〜“２３３” のノードＩＤが存在するエリアを２ＸＸのエリア、“３００”〜“３３３” のノードＩＤが存在するエリアを３ＸＸのエリアとする。また、レベル２では、レベル１のエリア（つまり、０ＸＸ〜３ＸＸのエリア）が更に４分割、例えば１ＸＸのエリアが４分割され、“１００”〜“１０３” のノードＩＤが存在するエリアを１０Ｘのエリア、“１１０”〜“１１３” のノードＩＤが存在するエリアを１１Ｘのエリア、“１２０”〜“１２３” のノードＩＤが存在するエリアを１２Ｘのエリア、“１３０”〜“１３３” のノードＩＤが存在するエリアを１３Ｘのエリアとする。
【００３９】
そして、例えば、ノードＮ２のノードＩＤが“１２２”とすると、図２に示すように、かかるノードＮ２のレベル１における１ＸＸのエリア（自己（つまり、自ノード）が存在するエリア）のテーブルには、自己のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）等が登録され、自己が存在しないエリア（つまり、０ＸＸのエリア、２ＸＸのエリア、及び３ＸＸのエリア）には、夫々、他の任意のノードＮｎのノードＩＤ及びＩＰアドレス等が登録されている。
【００４０】
また、かかるノードＮ２のレベル２における１２Ｘのエリア（自己が存在するエリア）のテーブルには、図２に示すように、自己のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）等が登録され、自己が存在しないエリア（つまり、１０Ｘのエリア、１１Ｘのエリア、及び１３Ｘのエリア）等には、夫々、他の任意のノードＮｎのノードＩＤ及びＩＰアドレス等が登録されている。
【００４１】
更に、かかるノードＮ２のレベル３には、図２に示すように、ノードＩＤが“１２０”〜“１２２”のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）等が登録されている。
【００４２】
なお、図２及び図３の例では、ノードＩＤのｂｉｔ長を３桁×２ｂｉｔとしたので、レベル１〜３の３レベル分のテーブルで網羅できるが、ノードＩＤのｂｉｔ長が増せば、その分のテーブルが必要となる（例えば、ノードＩＤのｂｉｔ長を１６桁×４ｂｉｔとした場合、１６レベル分のテーブルが必要となる）。
【００４３】
このように、本実施形態におけるＤＨＴを用いたルーティングテーブルでは、レベルが上がるほど、エリアが狭まっていくようになっている。
【００４４】
また、このようなＤＨＴは、例えば、未参加のノードがコンテンツ分散保存システムＳに参加する際に与えられることになる。
【００４５】
ところで、コンテンツ分散保存システムＳにおいては、内容の異なる様々なコンテンツ（例えば、映画や音楽等）データの夫々の複製データ（以下、「レプリカ」という）が複数のノードＮｎに分散して保存（格納）されている。
【００４６】
例えば、ノードＮ１及びノードＮ５には、タイトルがＸＸＸの映画のコンテンツデータのレプリカが保存されており、一方、ノードＮ３には、タイトルがＹＹＹの映画のコンテンツデータのレプリカが保存されるというように、複数のノードＮｎ（以下、「コンテンツ保持ノード」という）に分散されて保存される。
【００４７】
また、これらのコンテンツデータのレプリカには、夫々、コンテンツ名（タイトル）及びコンテンツＩＤ（コンテンツ毎に固有の識別情報）等の情報が付加されている。このコンテンツＩＤは、例えば、コンテンツ名＋任意の数値（或いは、当該コンテンツデータの先頭数バイトでも良い）が、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化されて生成される（ノードＩＤと同一のＩＤ空間に配置）。或いは、システム管理者が、コンテンツ毎に一意のＩＤ値（ノードＩＤと同一ビット長）を付与しても良い。この場合は、コンテンツ名とそのコンテンツＩＤの対応が書かれたコンテンツカタログ情報が、全ノードＮｎに配布される。
【００４８】
また、このように分散保存されているコンテンツデータのレプリカの所在、つまり、当該コンテンツデータのレプリカを保存したノードＮｎのＩＰアドレス等と当該コンテンツデータに対応するコンテンツＩＤ等の組が含まれるインデックス情報が、当該コンテンツデータのレプリカの所在の管理元であるノードＮｎ（以下、「ルートノード」、又は「コンテンツ（コンテンツＩＤ）のルートノード」という）等により記憶（インデックスキャッシュに記憶）、管理されるようになっている。
【００４９】
例えば、タイトルがＸＸＸの映画のコンテンツデータのレプリカについてのインデックス情報は、そのコンテンツ（コンテンツＩＤ）のルートノードであるノードＮ４により管理され、タイトルがＹＹＹの映画のコンテンツデータのレプリカについてのインデックス情報は、そのコンテンツ（コンテンツＩＤ）のルートノードであるノードＮ６により管理される（つまり、レプリカの所在が夫々のコンテンツデータ毎に管理される）。
【００５０】
すなわち、コンテンツ毎にルートノードが分けられるので負荷分散が図らており、しかも、同一（内容が同一）のコンテンツデータ（コンテンツＩＤが同一）のレプリカが、夫々、複数のコンテンツ保持ノードに保存されている場合であっても、かかるコンテンツデータのインデックス情報は、一つのルートノードで管理することができる。このため、各ルートノードは、コンテンツ分散保存システムＳにおいて自己がその所在を管理するコンテンツデータのレプリカの数（言い換えれば、当該レプリカを保存しているコンテンツ保持ノードの数）を認識している。
【００５１】
また、このようなルートノードは、例えば、コンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮｎであるように定められる。
【００５２】
そして、あるノードＮｎのユーザが、所望するコンテンツデータを取得したい場合、当該コンテンツデータの取得を望むノードＮｎ（以下、「ユーザノード」という）は、当該ユーザにより選択（例えば、全てのノードＮｎに配信されているコンテンツカタログ情報（コンテンツ名とコンテンツＩＤ等が記述されており、例えばコンテンツカタログ管理サーバ（図示せず）にて管理される）から選択）されたコンテンツデータのコンテンツＩＤ及び自己のＩＰアドレス等を含むコンテンツ所在問合せ（検索）メッセージ（クエリ）を生成し、これを自己のＤＨＴを用いたルーティングテーブルにしたがって他のノードＮｎに対して送出する。つまり、ユーザノードは、コンテンツ所在問合せ（検索）メッセージを、ルートノードに向けて（ルートノード宛てに）送出する。これにより、コンテンツ所在問合せ（検索）メッセージは、コンテンツＩＤをキーとするＤＨＴルーティングによって最終的にルートノードに到着することになる。
【００５３】
なお、上記コンテンツ所在問合せ（検索）メッセージに含まれるコンテンツＩＤは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。
【００５４】
図４は、ユーザノードから送出されたコンテンツ所在問合せ（検索）メッセージの流れの一例を、ＤＨＴのＩＤ空間にて示した概念図である。
【００５５】
図４の例において、例えば、ユーザノードであるノードＮ２は、自己のＤＨＴのレベル１のテーブルを参照して、コンテンツ所在問合せ（検索）メッセージに含まれるコンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有する例えばノードＮ３のＩＰアドレス及びポート番号を取得し、そのＩＰアドレス及びポート番号宛てに、上記コンテンツ所在問合せ（検索）メッセージ（クエリ）を送信する。
【００５６】
これに対して、ノードＮ３は、当該コンテンツ所在問合せ（検索）メッセージを受信し、自己のＤＨＴのレベル２のテーブルを参照して、当該コンテンツ所在問合せ（検索）メッセージに含まれるコンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有する例えばノードＮ４のＩＰアドレス及びポート番号を取得し、そのＩＰアドレス及びポート番号宛てに、上記コンテンツ所在問合せ（検索）メッセージを転送する。
【００５７】
これに対して、ノードＮ４は、当該コンテンツ所在問合せ（検索）メッセージを受信し、自己のＤＨＴのレベル３のテーブルを参照して、当該コンテンツ所在問合せ（検索）メッセージに含まれるコンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤが自分である、つまり、自分がそのコンテンツＩＤのルートノードであることを認識すると、当該コンテンツ所在問合せ（検索）メッセージに含まれるコンテンツＩＤに対応するインデックス情報をインデックスキャッシュから取得して、当該インデックス情報を、該コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信する。これにより、ユーザノードは、所望のコンテンツデータのレプリカを保存している上記コンテンツ保持ノードである例えばノードＮ１に対して、コンテンツ送信要求メッセージ（コンテンツデータの送信要求を示す要求情報）を送信し、そこから当該コンテンツデータのレプリカの提供を受けることが可能になる。
【００５８】
或いは、ルートノードであるノードＮ４は、当該インデックス情報に含まれるＩＰアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージ（ユーザノードのＩＰアドレス等を含み、当該ユーザノードに対してコンテンツデータのレプリカの送信要求を示す要求情報）を送信する。これにより、ユーザノードは、上記コンテンツ保持ノードである例えばノードＮ１から当該コンテンツデータのレプリカの提供を受けることが可能になる。
【００５９】
なお、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしている中継ノード（例えば、ノードＮ３のキャッシュノード）から当該インデックス情報を取得（受信）することもできる。
【００６０】
このようにしてコンテンツデータのレプリカを取得、保存したユーザノードは、当該レプリカを保存したことをそのルートノードに知らせるために（言い換えれば、自己が当該コンテンツデータのレプリカを保持していることを、該システムＳに参加している他のノードＮｎに対して公開するために）、そのコンテンツデータのコンテンツＩＤ及び自己のＩＰアドレス等が含まれるパブリッシュ（登録通知）メッセージ（コンテンツデータのレプリカを保存したので、ＩＰアドレス等の登録の要求を示す登録メッセージ）を生成し、該パブリッシュメッセージを、そのルートノードに向けて送出する。これにより、パブリッシュメッセージは、コンテンツ所在問合せ（検索）メッセージと同じように、コンテンツＩＤをキーとするＤＨＴルーティングによってルートノードに到着することになり、該ルートノードは、受信したパブリッシュメッセージに含まれるＩＰアドレス等及びコンテンツＩＤの組を含むインデックス情報を登録（インデックスキャッシュ領域に記憶）することになる。こうして、上記ユーザノードは、新たに、上記コンテンツデータのレプリカを保持するコンテンツ保持ノードとなる。
【００６１】
なお、上記パブリッシュメッセージに含まれるＩＰアドレス等及びコンテンツＩＤの組を含むインデックス情報は、ルートノードに至るまでの転送経路における中継ノードにおいても登録（キャッシュ）される。
【００６２】
［２．ノードＮｎの構成及び機能等］
次に、図５を参照して、ノードＮｎの構成及び機能について説明する。
【００６３】
図５は、ノードＮｎの概要構成例を示す図である。
【００６４】
各ノードＮｎは、図５に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データおよびプログラムを記憶するＲＯＭ等から構成されたコンピュータとしての制御部１１と、各種データ（例えば、コンテンツデータのレプリカ、インデックス情報、ＤＨＴ等）及び各種プログラム等を記憶保存（格納）するためのＨＤ等から構成された記憶部１２と、受信されたコンテンツデータのレプリカ等を一時蓄積するバッファメモリ１３と、コンテンツデータのレプリカに含まれるエンコードされたビデオデータ（映像情報）およびオーディオデータ（音声情報）等をデコード（データ伸張や復号化等）するデコーダ部１４と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部１５と、当該映像処理部１５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部１６と、上記デコードされたオーディオデータをアナログオーディオ信号にＤ （Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する音声処理部１７と、当該音声処理部１７から出力されたオーディオ信号を音波として出力するスピーカ１８と、ネットワーク８を通じて他のノードＮｎや各種サーバとの間の情報の通信制御を行うための通信部２０と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部１１に対して与える入力部（例えば、キーボード、マウス、或いは、操作パネル等）２１と、を備えて構成され、制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４、通信部２０、及び入力部２１はバス２２を介して相互に接続されている。なお、ノードＮｎとしては、パーソナルコンピュータ、ＳＴＢ（Set Top Box）、或いは、ＴＶ受信機等を適用可能である。また、記憶部１２には、コンテンツ分散保存システムＳに参加する際のアクセス先となるコンタクトノードのＩＰアドレス及びポート番号等が記憶されている。
【００６５】
このような構成において、制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラムを読み出して実行することにより、全体を統括制御し、コンテンツ分散保存システムＳへの参加により上述したユーザノード、中継ノード、ルートノード、キャッシュノード、及びコンテンツ保持ノードの少なくとも何れか一つのノードとしての処理を行うようになっており、ユーザノードとしての処理を実行する場合には、本発明における複製数取得手段、コンテンツ選択手段、複製数比較手段、及び複製データ取得手段等として機能するようになっている。
【００６６】
ここで、ユーザノードが、例えばシステム管理者等からのコンテンツ投入要求（保存要求）により、限られた時間内（例えば、１週間以内）に多く（例えば、１００個）のコンテンツデータのレプリカを他のノードＮｎから取得して保存する場合、制御部１１は、自ノードＮｎが取得すべきこれらのコンテンツデータ毎に、そのレプリカ数を示すレプリカ数情報を、これらのレプリカの所在を管理している夫々のルートノードからネットワークＮＷを介して取得するようになっている。
【００６７】
図６は、ユーザノードが夫々のルートノードからレプリカ数情報を取得する様子の一例を示す図である。
【００６８】
図６の例では、ユーザノードであるノードＮ２は、レプリカ数問合せメッセージを夫々のルートノードに向けて送出することにより、夫々のルートノード（コンテンツ“ＸＸＸ”のルートノードであるノードＮ４、コンテンツ“ＡＡＡ”のルートノードであるノードＮ２５、コンテンツ“ＺＺＺ”のルートノードであるノードＮ２１、コンテンツ“ＹＹＹ”のルートノードであるノードＮ６）からレプリカ数情報を取得し、後述するリストに登録している。ところで、例えばノードＮ４は、キャッシュノードとしてコンテンツＩＤ“０２２”に対応するインデックス情報も記憶している（コンテンツＩＤ“０２２”のルートノードは他に存在）が、このコンテンツデータのレプリカ数は、上記レプリカ数情報には含まれない。なお、ユーザノードから送出されたレプリカ数問合せメッセージ（コンテンツＩＤ及び自己のＩＰアドレス等を含む）は、上述したコンテンツ所在問合せ（検索）メッセージと同様、コンテンツＩＤをキーとするＤＨＴルーティングによって夫々のルートノードに到着することになる。また、ユーザノードは、レプリカ数問合せメッセージとコンテンツ所在問合せ（検索）メッセージとを一体にした問合せメッセージにより、当該コンテンツデータについてのレプリカ数情報及びインデックス情報を同時に取得しても良い。
【００６９】
そして、制御部１１は、このようにして取得された夫々のレプリカ数情報に示されるレプリカ数を比較し、比較されたレプリカ数が少ないコンテンツデータを優先して、そのレプリカを保存しているコンテンツ保持ノードから当該レプリカをネットワークＮＷを介して取得（ルートノードから取得したインデックス情報に基づきダウンロード）して記憶部１２に記憶保存するようになっている。例えば、図６の例では、コンテンツ“ＡＡＡ”のレプリカ数が最も少ないので、このレプリカが優先されて最初に取得され、次に、コンテンツ“ＺＺＺ”とコンテンツ“ＹＹＹ”のレプリカが取得され、最後にコンテンツ“ＸＸＸ”が取得される。
【００７０】
なお、上記ノード処理プログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしてもよいし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしてもよい。
【００７１】
［３．コンテンツ分散保存システムＳの動作］
次に、図７乃至図９等を参照して、コンテンツ分散保存システムＳの動作について説明する。
【００７２】
図７は、ノードＮｎの制御部１１におけるメイン処理を示すフローチャートである。また、図８（Ａ）は、図７におけるレプリカ数問合せ処理の詳細を示すフローチャートであり、図８（Ｂ）は、図７におけるコンテンツデータ取得処理の詳細を示すフローチャートである。また、図９は、図７におけるメッセージ受信処理の詳細を示すフローチャートである。
【００７３】
図７に示す処理は、任意のノードＮｎにおいて例えば電源ＯＮになった場合に開始され、コンテンツ分散保存システムＳへの参加処理が実行される。この参加処理においては、当該ノードＮｎの制御部１１は、記憶部１２からコンタクトノードのＩＰアドレス及びポート番号を取得し、これに基づきコンタクトノードにネットワーク８を介して接続し、参加要求を示す参加メッセージ（自己のノードＩＤ及びノード情報等を含む）を送信する。これにより、当該ノードＮｎには、当該システムＳに参加している他のノードＮｎからルーティングテーブルが送信されることになり、受信したルーティングテーブルに基づき自己のルーティングテーブルを生成し、コンテンツ分散保存システムＳに参加が完了することになる。なお、ルーティングテーブルの生成方法は、本発明の直接の関係がないので、詳しい説明を省略する。また、コンタクトノードのＩＰアドレス等の情報は、例えばノードＮｎの出荷時、或いはソフトウェア初回インストール時の初期状態で記憶部１２に記憶される。
【００７４】
こうしてコンテンツ分散保存システムＳへの参加処理が完了すると、制御部１１は、電源ＯＦＦの指示（例えば、ユーザから入力部２１を介した電源ＯＦＦ操作指示）があった場合には（ステップＳ１：ＹＥＳ）、当該処理を終了する。一方、電源ＯＦＦの指示がない場合には（ステップＳ１：ＮＯ）、制御部１１は、コンテンツ取得リストを受け取ったか（例えば、システム管理者等の管理サーバからコンテンツ投入要求と共に受信されたか）否かを判別し（ステップＳ２）、当該コンテンツ取得リストを受け取ってない場合には（ステップＳ２：ＮＯ）、ステップＳ３に進み、当該コンテンツ取得リストを受け取った場合には（ステップＳ２：ＹＥＳ）、ステップＳ５に進む。
【００７５】
かかるコンテンツ取得リストには、各コンテンツデータのコンテンツ情報（例えばコンテンツ名、コンテンツＩＤ、及びデータ量（例えば、数ギガバイト）等を含む）が、所定の順序（例えばコンテンツＩＤで示される数値の小さい順、コンテンツ名の「あいうえお」（又はアルファベット順）、或いはコンテンツ分散保存システムＳへの投入年月日順（つまり、新たにコンテンツ分散保存システムＳにおいて保存された年月日順）等）で記載されている。
【００７６】
また、コンテンツ取得リストは、システム管理者等の管理サーバから取得される他にも、ユーザからの入力部２１を介した指示の下、各ノードＮｎにおいて作成される場合もある。かかる場合、ユーザが、例えばコンテンツカタログ情報から所望の（視聴したい）数十個のコンテンツデータを入力部２１を操作して選択（例えば、コンテンツ名で選択）しコンテンツ取得リスト作成指示を行うと、選択されたコンテンツデータのコンテンツ情報がコンテンツカタログ情報から抽出され、これが登録されたコンテンツ取得リストが作成されることになる。こうして作成されたコンテンツ取得リストが、ユーザにより入力部２１を通じて指定された場合、上記ステップＳ２でコンテンツ取得リストを受け取ったと判断されることになる。
【００７７】
ステップＳ３では、制御部１１は、他のノードＮｎから送信されたメッセージを受信したか否かを判別し、当該メッセージを受信していない場合には（ステップＳ３：ＮＯ）、ステップＳ４に進み、当該メッセージを受信した場合には（ステップＳ３：ＹＥＳ）、ステップＳ１８に進み、メッセージ受信処理を行う。
【００７８】
なお、ステップＳ４におけるその他の処理では、例えば、ユーザからの入力部２１を介した指示に応じた処理等が行われ、ステップＳ１に戻る。また、ステップＳ１８におけるメッセージ受信処理の詳細については後述する。
【００７９】
ステップＳ５では、制御部１１は、コンテンツ取得リストにコンテンツ情報が記載されているか否かを判別し、記載されていない場合には（ステップＳ５：ＮＯ）、ステップＳ１に戻り、記載されている場合には（ステップＳ５：ＹＥＳ）、ステップＳ６に進む。
【００８０】
ステップＳ６では、制御部１１は、コンテンツ取得リストに記載されたコンテンツ情報の数が所定数（例えば、１０個）以上であるか否かを判別し、所定数以上である場合には（ステップＳ６：ＹＥＳ）、ステップＳ７に進み、所定数以上でない場合には（ステップＳ６：ＮＯ）、ステップＳ９に進む。
【００８１】
ステップＳ７では、制御部１１は、コンテンツ取得リストから上記所定数（例えば、１０個）のコンテンツデータを選択（例えば、コンテンツ名で選択）し、そのコンテンツ情報をコンテンツ選択リストに記載する。これは、コンテンツ取得リストにおけるコンテンツデータ（つまり、取得すべきコンテンツデータ）を所定数抜粋して、それらのレプリカ数を比較することで効率化を趣旨である。
【００８２】
ここで、上記所定数のコンテンツデータは、例えばコンテンツ取得リストからランダムに選択されるか、或いは、コンテンツ取得リストの記載順（登録順）に上から（例えば、図６に示すノードＮ２のリストにおけるコンテンツ“ＸＸＸ”から）選択（自ノードＮｎが取得すべき複数のコンテンツデータのうち、当該数より少ない複数のコンテンツデータを選択）される。
【００８３】
なお、自己（自ノードＮｎ）のノードＩＤの所定桁目と一致桁（例えば、上位桁目を優先とした一致桁）が少ない（言い換えれば、ＩＤ空間において自己のノードＩＤと遠い（離れた））コンテンツＩＤが割り当てられたコンテンツデータを選択すると効果的である。例えば、「０１３」、「１００」、「００２」、及び「２２１」のコンテンツＩＤがあるとすると、例えばノードＩＤ「００１」との上位桁目を優先とした一致桁が最も少ないコンテンツＩＤは「２２１」になり、逆に上位桁目を優先とした一致桁が最も多いコンテンツＩＤは「００２」となる。
【００８４】
これにより、当該ノードＮｎが自己のノードＩＤの例えば上位桁目を優先した一致桁が少ないコンテンツＩＤに対応するコンテンツデータのレプリカをそのコンテンツ保持ノードから取得して保存した場合に、ルートノードに向けて送出されるパブリッシュメッセージは、当該ルートノードに到達するまでに、より多くの中継ノードにより転送されるので、より多くの中継ノード（キャッシュノードとなる）にインデックス情報を記憶させることができ、ひいては、インデックス情報の検索効率を向上させることができる。
【００８５】
次いで、制御部１１は、上記選択したコンテンツ情報をコンテンツ取得リストから削除し（ステップＳ８）、ステップＳ１１に進む。
【００８６】
ステップＳ９では、制御部１１は、コンテンツ取得リストにおける全てのコンテンツ情報をコンテンツ選択リストに記載する。
【００８７】
次いで、制御部１１は、コンテンツ取得リストから全てのコンテンツ情報を削除する（ステップＳ１０）、ステップＳ１１に進む。
【００８８】
ステップＳ１１では、制御部１１は、レプリカ数問合せ処理を実行する。
【００８９】
当該レプリカ数問合せ処理において、制御部１１は、図８（Ａ）に示すように、変数Ｉを“１”にセットし（ステップＳ１１１）、コンテンツ選択リストにＩ番目のコンテンツ情報があるか否かを判別し（ステップＳ１１２）、Ｉ番目のコンテンツ情報がある場合には（ステップＳ１１２：ＹＥＳ）、ステップＳ１１３に進む。
【００９０】
ステップＳ１１３では、制御部１１は、Ｉ番目のコンテンツ情報に含まれるコンテンツＩＤを含むレプリカ数問合せメッセージを、上述したように、自己（ユーザノードである自ノードＮｎ）のルーティングテーブルにしたがって他のノードＮｎ（つまり、当該コンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮｎ）に対して送信（当該コンテンツＩＤのルートノードに向けて送出）する。これにより、当該レプリカ数問合せメッセージは、コンテンツＩＤをキーとするＤＨＴルーティングによって、そのコンテンツＩＤのルートノードに向かって転送されていくことになる。
【００９１】
次いで、制御部１１は、上記レプリカ数問合せメッセージに対する応答として、上記ルートノードから上記コンテンツＩＤに対応するコンテンツデータのレプリカ数を示すレプリカ数情報を受信（取得）したか否かを判別し（ステップＳ１１４）、当該レプリカ数情報を受信した場合には（ステップＳ１１４：ＹＥＳ）、当該レプリカ数情報に示されるレプリカ数をコンテンツ選択リストにおけるコンテンツＩＤに対応付けて記入し（ステップＳ１１５）し、上記変数Ｉを“１”インクリメントしてステップＳ１１１に戻る。
【００９２】
なお、制御部１１は、ステップＳ１１３にてレプリカ数問合せメッセージを送信する際に、上記Ｉ番目のコンテンツ情報に含まれるコンテンツＩＤを含むコンテンツ所在問合せ（検索）メッセージを、自己のルーティングテーブルにしたがって他のノードＮｎ（つまり、当該コンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮｎ）に対して送信（当該コンテンツＩＤのルートノードに向けて送出）するように構成しても良い。この場合、制御部１１は、レプリカ数情報に加えて、上記コンテンツ所在問合せ（検索）メッセージに含まれるコンテンツＩＤに対応するインデックス情報を受信することになる。
【００９３】
また、レプリカ数問合せメッセージの送出後、一定時間（例えば、タイマによりセットされた３分）以内に上記レプリカ数情報の返信がない場合には、ステップＳ１１５に移行してレプリカ数を「０」としてコンテンツＩＤに対応付けて記憶して、ステップＳ１１６に移行することが望ましい。
【００９４】
こうして、コンテンツ選択リストに記載された全てのコンテンツ情報についてレプリカ数問合せメッセージが送信され、例えば図６に示すように全てのコンテンツデータに対応するレプリカ数情報が、各ルートノードから取得された場合には、ステップＳ１１２にてＩ番目のコンテンツ情報がないと判別され（ステップＳ１１２：ＮＯ）、図７の処理に戻る。
【００９５】
次に、ステップＳ１２では、制御部１１は、上記コンテンツ選択リストに記載されたレプリカ数（レプリカ数情報に示されるレプリカ数）を比較し、比較されたレプリカ数が１つ以上であるコンテンツデータであって且つ最も少ないコンテンツデータのコンテンツ情報をコンテンツ選択リストの中から選択する。
【００９６】
次いで、制御部１１は、当該選択したコンテンツ情報が複数あるか否かを判別する。そして、選択されたコンテンツ情報が複数ある（つまり、比較されたレプリカ数が同じコンテンツデータが複数ある）場合には（ステップＳ１３：ＹＥＳ）、制御部１１は、その中から何れか一つのコンテンツ情報を選択（例えば、ランダムに選択）し（ステップＳ１４）、ステップＳ１５に進む。
【００９７】
ここで、レプリカ数が同じコンテンツデータが複数ある場合、何れか一つのコンテンツ情報をランダムに選択する他にも、例えば、データ量が最も大きいコンテンツデータを優先して選択（例えばコンテンツ選択リストを参照して判断）すれば、より効果的である。或いは、例えば上記ステップＳ１１３にてコンテンツ所在問合せ（検索）メッセージが送信され既に各コンテンツデータのコンテンツＩＤに対応するインデックス情報が取得されている（つまり、コンテンツ保持ノードのＩＰアドレス等が分かっている）場合には、自ノードＮｎとの間のデータ伝送に要する時間が最も長いコンテンツ保持ノード（自ノードＮｎから各コンテンツ保持ノードに対してデータ（例えば、ピング（Ping））を送信し、返信されてきた時間を計測して判断）に保存されているコンテンツデータを優先して選択すれば、より効果的である。
【００９８】
これは、データ量が大きいコンテンツデータのレプリカをコンテンツ保持ノードからダウンロードする場合、及び自ノードＮｎとの間のデータ伝送に要する時間が長いコンテンツ保持ノードからレプリカをダウンロードする場合は、何れも、より長いダウンロード時間を要するので、最初に行う趣旨である。
【００９９】
一方、選択されたコンテンツ情報が複数ない（一つである）場合には（ステップＳ１３：ＮＯ）、ステップＳ１５に進む（ステップＳ１２でコンテンツ情報が選択されまま）。
【０１００】
ステップＳ１５では、制御部１１は、コンテンツデータ取得処理を実行する。
【０１０１】
当該コンテンツデータ取得処理において、制御部１１は、図８（Ｂ）に示すように、上記ステップＳ１２又はステップＳ１４で選択されたコンテンツデータのコンテンツＩＤに対応するインデックス情報を既に取得しているか否かを判別し（ステップＳ１５１）、当該インデックス情報を取得している場合、例えば、上記ステップＳ１１３にてコンテンツ所在問合せ（検索）メッセージが送信され既に当該コンテンツデータのコンテンツＩＤに対応するインデックス情報を取得している場合には（ステップＳ１５１：ＹＥＳ）、ステップＳ１５３に進む。一方、当該インデックス情報を取得していない場合には（ステップＳ１５１：ＮＯ）、当該制御部１１は、コンテンツ所在問合せ（検索）処理を行い（ステップＳ１５２）、ステップＳ１５３に進む。かかるコンテンツ所在問合せ（検索）処理においては、制御部１１は、上記ステップＳ１２又はステップＳ１４で選択されたコンテンツ情報に含まれるコンテンツＩＤを含むコンテンツ所在問合せ（検索）メッセージを、自己のルーティングテーブルにしたがって他のノードＮｎに対して送信し、当該コンテンツＩＤのルートノードからインデックス情報を取得する。
【０１０２】
ステップＳ１５３では、制御部１１は、上記選択されたコンテンツデータのレプリカを保存しているコンテンツ保持ノードがあった（そのインデックス情報を取得できたか）か否かを判別し（ステップＳ１５３）、当該コンテンツ保持ノードがあった場合には（ステップＳ１５３：ＹＥＳ）、上記取得したインデックス情報に含まれるＩＰアドレス等に基づき、当該コンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し（ステップＳ１５２）、これに応じてコンテンツ保持ノードから送信されてきたコンテンツデータのレプリカを受信する。かかるレプリカは、例えば複数のデータ単位に分割されて送信され、受信された当該データはバッファメモリ１３に蓄積されていくことになる。
【０１０３】
一方、当該コンテンツ保持ノードが無かった（何からの理由で発見できなかった）場合には（ステップＳ１５３：ＮＯ）、制御部１１は、コンテンツ管理サーバに対してコンテンツ送信要求メッセージを送信し（ステップＳ１５５）、これに応じてコンテンツ管理サーバから送信されてきたコンテンツデータのレプリカを受信する。なお、コンテンツ保持ノードが無かった（発見できなかった）場合、当該コンテンツデータをコンテンツ管理サーバからすぐに取得せずに、コンテンツ取得リストにコンテンツ情報が記載されているコンテンツデータを全て取得した後に、再度コンテンツ所在問合せ（検索）処理を行うように構成しても良い。これは、時間が経過していれば、コンテンツ保持ノードを発見できる可能性があるからである。これにより、コンテンツ管理サーバの負荷を低減することができる。或いは、コンテンツ保持ノードを発見できなかったコンテンツデータを、一番最初にコンテンツ管理サーバから取得しても良い。
【０１０４】
そして、コンテンツ保持ノードから送信されたコンテンツデータのレプリカは、通信部２０を通じて受信されバッファメモリ１３に蓄積される。そして、制御部１１は、バッファメモリ１３に所定量の上記レプリカのデータが蓄積されたとき、当該レプリカのデータをバッファメモリ１３から記憶部１２に記憶保存（例えば、ＨＤの所定領域に書き込む）させる（ステップＳ１５６）。こうして、順次当該レプリカのデータがバッファメモリ１３から記憶部１２に送られ記憶保存されていく。
【０１０５】
次いで、制御部１１は、当該レプリカのデータが全て揃い、記憶保存された否かを判断し（ステップＳ１５７）、全て記憶保存されていない場合には（ステップＳ１５７：ＮＯ）、ステップ１５６に戻り当該処理を継続し、全て記憶保存された場合には（ステップＳ１５７：ＹＥＳ）、ステップＳ１５８に進む。なお、当該レプリカのデータ量が少ない場合、バッファメモリ１３に全てのデータが揃ってから記憶部１２に記憶保存されるように構成しても良い。
【０１０６】
ステップＳ１５８では、制御部１１は、当該保存されたレプリカに係るコンテンツデータのコンテンツＩＤを含む、上述したパブリッシュメッセージを、自己のルーティングテーブルにしたがって他のノードＮｎ（つまり、当該コンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮｎ）に対して送信（当該コンテンツＩＤのルートノードに向けて送出）し、図７の処理に戻る。これにより、当該パブリッシュメッセージは、コンテンツＩＤをキーとするＤＨＴルーティングによってルートノードに到着することになり、該ルートノードは、受信したパブリッシュメッセージに含まれるＩＰアドレス等及びコンテンツＩＤの組を含むインデックス情報を登録する。
【０１０７】
次に、制御部１１は、取得、保存したコンテンツデータのレプリカに対応するコンテンツ情報をコンテンツ選択リストから削除し（ステップＳ１６）、コンテンツ選択リストに未だコンテンツ情報が記載されているか否かを判別し（ステップＳ１７）、記載されていない場合には（ステップＳ１７：ＮＯ）、ステップＳ５に戻り、上記と同様の処理を行う。一方、コンテンツ選択リストにコンテンツ情報が記載されている場合には（ステップＳ１７：ＹＥＳ）、ステップＳ１２に戻り、上記と同様の処理を行う。
【０１０８】
ここで、コンテンツ選択リストにコンテンツ情報が記載されている場合に（ステップＳ１７：ＹＥＳ）、制御部１１は、ステップＳ１２ではなくステップＳ１１に戻り、再度レプリカ数問合せ処理を実行して、コンテンツ選択リストにコンテンツ情報が記載されたコンテンツデータのレプリカ数を示すレプリカ数情報を夫々のルートノードから再取得するように構成しても良い。この構成の場合、ステップＳ１５のコンテンツデータ取得処理にてレプリカが取得、保存される度に、当該レプリカ以外のレプリカの数（最新のレプリカ数）を示すレプリカ数情報が再取得されることになり、当該再取得されコンテンツ選択リストに記載されたレプリカ数が比較されることになる。これにより、例えば、レプリカのデータ量が大きいために、コンテンツデータ取得処理によるダウンロードに時間がかかってしまい（例えば、数十分）、次に取得すべきコンテンツデータのレプリカ数が変わってしまった場合でも、正確なレプリカ数を用いて上記ステップＳ１２における比較判断を行うことができる。
【０１０９】
また、コンテンツ選択リストにコンテンツ情報が記載されている場合に（ステップＳ１７：ＹＥＳ）、制御部１１は、例えば上記ステップＳ１１におけるレプリカ数問合せ処理から所定時間（例えば、１０分）経過したか否かを判断し、所定時間経過していない場合には、ステップＳ１２に戻り、所定時間経過している場合には、ステップＳ１１に戻り再度レプリカ数問合せ処理を実行するように構成しても良い。所定時間経過していなければ、次に取得すべきコンテンツデータのレプリカ数がそれほど変わることがないで、この場合には再度レプリカ数問合せ処理を行わないようにすることで、ネットワークやノードの負担を抑えることができる。
【０１１０】
次に、上記ステップＳ１８におけるメッセージ受信処理では、図９に示すように、制御部１１は、受信されたメッセージがレプリカ数問合せメッセージであるか否かを判別し（ステップＳ１８１）、レプリカ数問合せメッセージでない場合には（ステップＳ１８１：ＮＯ）、ステップＳ１８５に進む。一方、レプリカ数問合せメッセージである場合には（ステップＳ１８１：ＹＥＳ）、自己（自ノードＮｎ）がルートノードであるか否かを判別（つまり、自己のルーティングテーブルを参照して、当該レプリカ数問合せメッセージに含まれるコンテンツＩＤと最も近いノードＩＤが自分であるか否かを判別）し（ステップＳ１８２）、自己がルートノードでない（つまり、中継ノードである）場合には（ステップＳ１８２：ＮＯ）、ステップＳ１８３に進み、自己がルートノードである場合には（ステップＳ１８２：ＹＥＳ）、ステップＳ１８４に進む。
【０１１１】
ステップＳ１８３では、制御部１１は、受信されたレプリカ数問合せメッセージを、自己のルーティングテーブルにしたがって他のノードＮｎ（つまり、レプリカ数問合せメッセージに含まれるコンテンツＩＤと最も近いノードＩＤを有するノードＮｎ）に対して転送（当該コンテンツＩＤのルートノードに向けて送出）し、ステップＳ１８５に進む。
【０１１２】
一方、ステップＳ１８４では、制御部１１は、レプリカ数問合せメッセージに含まれるコンテンツＩＤに対応するコンテンツデータのレプリカ数を示すレプリカ数情報を、レプリカ数問合せメッセージの送信元のユーザノードに対して送信し、ステップＳ１８５に進む。
【０１１３】
ステップＳ１８５では、制御部１１は、受信されたメッセージがコンテンツ送信要求メッセージであるか否かを判別し、コンテンツ送信要求メッセージでない場合には（ステップＳ１８５：ＮＯ）、ステップＳ１８７に進む。一方、コンテンツ送信要求メッセージである場合には（ステップＳ１８５：ＹＥＳ）、当該コンテンツ送信要求メッセージを送信したユーザノードに対して、当該要求に係るコンテンツデータのレプリカを所定のデータ単位に分割して順次送信し（ステップＳ１８６）、送信完了後、ステップＳ１８７に進む。
【０１１４】
ステップＳ１８７では、制御部１１は、受信されたメッセージがパブリッシュメッセージであるか否かを判別し、パブリッシュメッセージでない場合には（ステップＳ１８７：ＮＯ）、ステップＳ１９１に進む。一方、パブリッシュメッセージである場合には（ステップＳ１８７：ＹＥＳ）、受信されたパブリッシュメッセージに含まれるＩＰアドレス等及びコンテンツＩＤの組を含むインデックス情報を登録（インデックスキャッシュ領域に記憶）する（ステップＳ１８８）。
【０１１５】
次いで、制御部１１は、ステップＳ１８２と同様、自己がルートノードであるか否かを判別し（ステップＳ１８９）、自己がルートノードでない（つまり、中継ノードである）場合には（ステップＳ１８９：ＮＯ）、ステップＳ１９０に進み、自己がルートノードである場合には（ステップＳ１８９：ＹＥＳ）、ステップＳ１９１に進む。
【０１１６】
ステップＳ１９０では、制御部１１は、受信されたパブリッシュメッセージを、自己のルーティングテーブルにしたがって他のノードＮｎ（つまり、パブリッシュメッセージに含まれるコンテンツＩＤと最も近いノードＩＤを有するノードＮｎ）に対して転送（当該コンテンツＩＤのルートノードに向けて送出）し、ステップＳ１９１に進む。
【０１１７】
ステップＳ１９１におけるその他のメッセージ受信処理においては、上記受信されたメッセージがコンテンツ所在問合せ（検索）メッセージ等である場合の処理が実行され、図７の処理に戻る。
【０１１８】
以上説明したように、上記実施形態によれば、各ノードＮｎは、自己が取得すべき、コンテンツ取得リストにおけるコンテンツデータ毎に、そのレプリカ数を示すレプリカ数情報を、これらのレプリカの所在を管理している夫々のルートノードからネットワークＮＷを介して取得し、取得した夫々のレプリカ数情報に示されるレプリカ数を比較し、比較されたレプリカ数が少ないコンテンツデータを優先して、そのレプリカを保存しているコンテンツ保持ノードから当該レプリカをネットワークＮＷを介して取得して記憶部１２に記憶保存するようにしたので、数が少ないレプリカを早い段階で増やすことができ、したがって、当該レプリカを他のノードＮｎからより迅速に取得する（取得し易くする）ことができる。また、これにより、多くのコンテンツデータを管理しているコンテンツ管理サーバの負荷を低減させることができる。
【０１１９】
また、各ノードＮｎにおける記憶部１２の記憶容量が足りず、過去に保存されたコンテンツデータのレプリカが上書きされても、そのレプリカは早い段階で多くのノードＮｎに保存されているので、当該コンテンツデータのレプリカ数が減ることを抑えることができる。
【０１２０】
なお、上記実施形態におけるコンテンツ分散保存システムＳは、ＤＨＴを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。
【図面の簡単な説明】
【０１２１】
【図１】本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ノードＮ２が保持するＤＨＴを用いたルーティングテーブルの一例を示す図である。
【図３】ＤＨＴのＩＤ空間の一例を示す概念図である。
【図４】ユーザノードから送出されたコンテンツ所在問合せ（検索）メッセージの流れの一例を、ＤＨＴのＩＤ空間にて示した概念図である。
【図５】ノードＮｎの概要構成例を示す図である。
【図６】ユーザノードが夫々のルートノードからレプリカ数情報を取得する様子の一例を示す図である。
【図７】ノードＮｎの制御部１１におけるメイン処理を示すフローチャートである。
【図８】（Ａ）は、図７におけるレプリカ数問合せ処理の詳細を示すフローチャートであり、（Ｂ）は、図７におけるコンテンツデータ取得処理の詳細を示すフローチャートである。
【図９】図７におけるメッセージ受信処理の詳細を示すフローチャートである。
【符号の説明】
【０１２２】
８  ネットワーク
９  オーバーレイネットワーク
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
２０  通信部
２１  入力部
２２  バス
Ｎｎ  ノード
Ｓ  コンテンツ分散保存システム
【図１】
2008234445.tif 000003
【図２】
2008234445.tif 000004
【図３】
2008234445.tif 000005
【図４】
2008234445.tif 000006
【図５】
2008234445.tif 000007
【図６】
2008234445.tif 000008
【図７】
2008234445.tif 000009
【図８】
2008234445.tif 000010
【図９】
2008234445.tif 000011