(57)【要約】【課題】  本発明の目的は、他のノード装置のキャッシュに空き容量があるかを判断して、ピアツーピア型の通信システム全体としてキャッシュの使用効率を向上させるノード装置、ノード処理プログラム、及びコンテンツデータ保存方法を提供することを提供することである。【解決手段】  ルーティングテーブルまたはインデックスキャッシュに記載されたノード装置Ｎｎの中で、空き記録容量が所定値以上であるノード装置があるかが判定される。ノード装置により削除すると決定されたレプリカが、空き記録容量が所定値以上のノード装置へ送信される。【選択図】図９
2010231576.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータを前記複数のノード装置に分散して保存させ、各前記ノード装置間で前記コンテンツデータを利用可能としたコンテンツ分散保存システムにおける前記ノード装置であって、
前記コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、前記所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得するノード情報取得手段と、
前記コンテンツ分散保存システムにおいて利用可能な前記コンテンツデータを記憶する記憶手段と、
前記記憶手段に記憶されたコンテンツデータのうち、所定の条件に基づいてコンテンツデータを削除する削除手段と、
前記削除手段により前記コンテンツデータが削除されるとき、前記ノード情報に基づいて所定容量以上の前記空き記憶容量があるノード装置が存在するか否かを判定する判定手段と、
前記判定手段が前記空き容量があるとノード装置があると判定したとき、前記空き容量があると判定されたノード装置識別情報が示すノード装置へ前記削除手段により削除されるコンテンツデータを送信するコンテンツ送信手段と、
を備えることを特徴とするノード装置。
【請求項２】
前記コンテンツ送信手段は、前記削除手段により削除されるコンテンツを前記空き容量が最大のノード装置へ送信することを特徴とする請求項１に記載のノード装置。
【請求項３】
前記ノード装置から所定の要求を処理する内容を含むメッセージを送信可能なノード装置の前記所在情報を含むルーティングテーブルを取得するルーティングテーブル取得手段と、
前記削除手段により前記コンテンツデータが削除されるとき、前記ルーティングテーブルに従って、前記ルーティングテーブルに記載された前記所在情報が示す前記ノード装置の前記容量情報を検索する検索メッセージを送信する検索メッセージ送信手段と、
を備え、
前記ノード情報取得手段は、前記検索メッセージを受信した前記ノード装置から、前記所在情報と前記容量情報とが対応付けられた前記ノード情報を取得し、
前記判定手段は前記ノード情報取得手段により取得されたノード情報に基づいて所定容量以上の前記空き記憶容量があるノード装置が存在するか否かを判定することを特徴とする請求項１または請求項２に記載のノード装置。
【請求項４】
前記ノード情報取得手段は、前記ノード装置から所定の要求を処理する内容を含むメッセージを送信可能なノード装置の前記所在情報を含むルーティングテーブルに前記所在情報と前記空き容量とを対応付けて記憶し、
前記判定手段は、前記ルーティングテーブルに記述される前記ノード装置の前記空き容量が所定容量以上であるか否かを判定し、
前記判定手段が前記空き容量があると判定したとき、前記コンテンツ送信手段は前記ルーティングテーブルに記述され、かつ、空き容量があるノード装置へ前記削除されるコンテンツを送信することと特徴とする請求項１または請求項２に記載のノード装置。
【請求項５】
前記記憶手段は、前記コンテンツデータを公開する公開時期が記述された公開時期情報を記憶し、
前記公開時期情報に基づいて、前記記憶手段が記憶しているコンテンツデータの前記公開時期が終了したか否かを判定する公開時期判定手段を備え、
前記公開時期判定手段が、前記公開時期が終了したと判定したとき、前記削除手段は前記コンテンツデータを削除し、前記判定手段は判定を行わない、または、前記コンテンツ送信手段は、前記削除されるコンテンツを送信しないことを特徴とする請求項１から請求項４に記載のノード装置。
【請求項６】
前記記憶手段は、前記記憶手段に記憶された前記コンテンツデータと、前記コンテンツデータの評価を示す評価値とを対応付けて記憶し、
前記削除手段は、前記所定の条件として、前記記憶手段に記憶されたコンテンツデータの中で、所定の値より低い前記評価値のコンテンツを前記記憶手段から削除することを特徴とする請求項１から請求項４のいずれかに記載のノード装置。
【請求項７】
前記コンテンツ分散保存システムに新規のノード装置が参加するか否かを判定する参加処理判定手段と、
前記参加処理判定手段により、新規ノード装置が前記コンテンツ分散保存システムに参加すると判定された場合、前記判定手段は、前記新規ノード装置に所定容量以上の前記空き記憶容量があるか否かを判定し、
前記判定手段により前記新規ノードに前記空き記憶容量があると判定された場合、前記コンテンツ送信手段は、前記削除されるコンテンツを前記新規ノードへ送信することを特徴とする請求項１から請求項６のいずれかに記載のノード装置。
【請求項８】
請求項１乃至７の何れか一項に記載のノード装置としてコンピュータを機能させることを特徴とするノード処理プログラム。
【請求項９】
ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータを複数のノード装置に分散して保存させ、各前記ノード装置間で前記コンテンツデータを利用可能としたコンテンツ分散保存システムであって、
前記コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、前記所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得するノード情報取得手段と、
前記コンテンツ分散保存システムにおいて利用可能な前記コンテンツデータを記憶する記憶手段と、
前記記憶手段に記憶されたコンテンツデータのうち、所定の条件に基づいてコンテンツデータを削除する削除手段と、
前記削除手段により前記コンテンツデータが削除されるとき、前記ノード情報に基づいて所定容量以上の前記空き記憶容量があるノード装置が存在するか否かを判定する判定手段と、
前記判定手段が前記空き容量があるとノード装置があると判定したとき、前記空き容量があると判定されたノード装置識別情報が示すノード装置が前記削除手段により削除されるコンテンツデータを取得するコンテンツ取得手段と、
を備えることを特徴とするコンテンツ分散保存システム。
【請求項１０】
ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータを前記複数のノード装置に分散して保存させ、各前記ノード装置間で前記コンテンツデータを利用可能としたコンテンツ分散保存システムにおけるコンテンツ保存方法であって、
前記コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、前記所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得するノード情報取得ステップと、
前記コンテンツ分散保存システムにおいて利用可能な前記コンテンツデータを記憶する記憶手段に記憶されたコンテンツデータのうち、所定の条件に基づいてコンテンツデータを削除する削除ステップと、
前記削除ステップにより前記コンテンツデータが削除されるとき、前記ノード情報に基づいて所定容量以上の前記空き記憶容量がノード装置が存在するか否かを判定する判定ステップと、
前記判定ステップが前記空き容量があるノード装置が存在すると判定したとき、前記空き容量があると判定されたノード装置識別情報が示すノード装置が前記削除手段により削除されるコンテンツデータを取得するコンテンツ取得ステップと、
を備えることを特徴とするコンテンツ保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の通信システムの技術分野に関する。
【背景技術】
【０００２】
この種のピアツーピア型の通信システムは、複数のノード装置により構成される。各種コンテンツのデータファイルは、複数のデータファイルの複製データ（以下、「レプリカ」という）として複数のノード装置に分散して保存される。データファイルは、映画及び音楽などのデータファイルである。一般的には、各ノード装置間でレプリカを利用可能とした分散保存システムが知られている。これにより、対故障性やアクセスの分散性が高められている。このように分散保存されたレプリカの所在は、例えば特許文献１に開示されるような分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用して効率良く検索可能になっている。
【０００３】
そして、上述のノード装置は、所望のコンテンツを取得するとき、当該コンテンツのレプリカの所在を検索するためのメッセージ（クエリ）が他のノード装置へ送出される。これにより、当該メッセージは、上記ＤＨＴにしたがって、当該コンテンツのレプリカの所在の管理元のノード装置に向かって転送される。そして、上記メッセージを送出したノード装置は、上記管理元のノード装置から上記レプリカの所在を示す情報を取得することになる。これにより、上記メッセージを送出したノード装置は、上記検索に係るコンテンツのレプリカを保存しているノード装置にアクセスすることができる。そして、当該レプリカを取得（ダウンロード）することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１９７４００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般的なピアツーピア型の通信システムでは、コンテンツのレプリカを取得したノード装置は、当該レプリカをキャッシュとして各種記憶手段に保存する。そして、ノード装置はキャッシュしているコンテンツのレプリカが、所定条件となるとキャッシュから削除する。上記の通信システムへ参加しているノード装置の中で、レプリカをキャッシュしていないノード装置は、他のノード装置からのコンテンツのリクエストに応じることができず、キャッシュの使用効率が低くなってしまう。そのため、システムに対する貢献度が低いノード装置となってしまう。各ノード装置は、それぞれの判断により、キャッシュからレプリカを削除してしまうため、ピアツーピア型の通信システム全体として、キャッシュの使用効率が低下してしまうという問題があった。
【０００６】
本発明は、以上の点に鑑みてなされたものである。本発明の目的は、他のノード装置のキャッシュに空き容量があるかを判断して、ピアツーピア型の通信システム全体としてキャッシュの使用効率を向上させるノード装置、ノード処理プログラム、及びコンテンツデータ保存方法を提供することを提供することである。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明によれば、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータを前記複数のノード装置に分散して保存させ、各前記ノード装置間で前記コンテンツデータを利用可能としたコンテンツ分散保存システムにおける前記ノード装置であって、前記コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、前記所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得するノード情報取得手段と、前記コンテンツ分散保存システムにおいて利用可能な前記コンテンツデータを記憶する記憶手段と、前記記憶手段に記憶されたコンテンツデータのうち、所定の条件に基づいてコンテンツデータを削除する削除手段と、前記削除手段により前記コンテンツデータが削除されるとき、前記ノード情報に基づいて所定容量以上の前記空き記憶容量があるノード装置が存在するか否かを判定する判定手段と、前記判定手段が前記空き容量があるとノード装置があると判定したとき、前記空き容量があると判定されたノード装置識別情報が示すノード装置へ前記削除手段により削除されるコンテンツデータを送信するコンテンツ送信手段と、を備えることを特徴とするノード装置である。
【０００８】
請求項２に記載の発明によれば、前記コンテンツ送信手段は、前記削除手段により削除されるコンテンツを前記空き容量が最大のノード装置へ送信することを特徴とする。
【０００９】
請求項３に記載の発明によれば、  前記ノード装置から所定の要求を処理する内容を含むメッセージを送信可能なノード装置の前記所在情報を含むルーティングテーブルを取得するルーティングテーブル取得手段と、前記削除手段により前記コンテンツデータが削除されるとき、前記ルーティングテーブルに従って、前記ルーティングテーブルに記載された前記所在情報が示す前記ノード装置の前記容量情報を検索する検索メッセージを送信する検索メッセージ送信手段と、を備え、前記ノード情報取得手段は、前記検索メッセージを受信した前記ノード装置から、前記所在情報と前記容量情報とが対応付けられた前記ノード情報を取得し、前記判定手段は前記ノード情報取得手段により取得されたノード情報に基づいて所定容量以上の前記空き記憶容量があるノード装置が存在するか否かを判定することを特徴とする。
【００１０】
請求項４に記載の発明によれば、前記ノード情報取得手段は、前記ノード装置から所定の要求を処理する内容を含むメッセージを送信可能なノード装置の前記所在情報を含むルーティングテーブルに前記所在情報と前記空き容量とを対応付けて記憶し、前記判定手段は、前記ルーティングテーブルに記述される前記ノード装置の前記空き容量が所定容量以上であるか否かを判定し、前記判定手段が前記空き容量があると判定したとき、前記コンテンツ送信手段は前記ルーティングテーブルに記述され、かつ、空き容量があるノード装置へ前記削除されるコンテンツを送信することと特徴とする。
【００１１】
請求項５に記載の発明によれば、前記記憶手段は、前記コンテンツデータを公開する公開時期が記述された公開時期情報を記憶し、前記公開時期情報に基づいて、前記記憶手段が記憶しているコンテンツデータの前記公開時期が終了したか否かを判定する公開時期判定手段を備え、前記公開時期判定手段が、前記公開時期が終了したと判定したとき、前記削除手段は前記コンテンツデータを削除し、前記判定手段は判定を行わない、または、前記コンテンツ送信手段は、前記削除されるコンテンツを送信しないことを特徴とする。
【００１２】
請求項６に記載の発明によれば、前記記憶手段は、前記記憶手段に記憶された前記コンテンツデータと、前記コンテンツデータの評価値とを対応付けて記憶し、前記削除手段は、前記所定の条件として、前記記憶手段に記憶されたコンテンツデータの中で、所定の値より低い前記評価値のコンテンツを前記記憶手段から削除することを特徴とする。
【００１３】
請求項７に記載の発明によれば、前記コンテンツ分散保存システムに新規のノード装置が参加するか否かを判定する参加処理判定手段と、前記参加処理判定手段により、新規ノード装置が前記コンテンツ分散保存システムに参加すると判定された場合、前記判定手段は、前記新規ノード装置に所定容量以上の前記空き記憶容量があるか否かを判定し、前記判定手段により前記新規ノードに前記空き記憶容量があると判定された場合、前記コンテンツ送信手段は、前記削除されるコンテンツを前記新規ノードへ送信することを特徴とする。
【００１４】
請求項８に記載の発明によれば、請求項１乃至６の何れか一項に記載のノード装置としてコンピュータを機能させることを特徴とするノード処理プログラムである。
【００１５】
請求項９に記載の発明によれば、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータを複数のノード装置に分散して保存させ、各前記ノード装置間で前記コンテンツデータを利用可能としたコンテンツ分散保存システムであって、前記コンテンツ分散保存システムに参加する  ノード装置の所在を示す所在情報と、前記所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得するノード情報取得手段と、前記コンテンツ分散保存システムにおいて利用可能な前記コンテンツデータを記憶する記憶手段と、前記記憶手段に記憶されたコンテンツデータのうち、所定の条件に基づいてコンテンツデータを削除する削除手段と、前記削除手段により前記コンテンツデータが削除されるとき、前記ノード情報に基づいて所定容量以上の前記空き記憶容量があるノード装置が存在するか否かを判定する判定手段と、前記判定手段が前記空き容量があるとノード装置があると判定したとき、前記空き容量があると判定されたノード装置識別情報が示すノード装置が前記削除手段により削除されるコンテンツデータを取得するコンテンツ取得手段と、を備えることを特徴とするコンテンツ分散保存システムである。
【００１６】
請求項１０に記載の発明によれば、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータを前記複数のノード装置に分散して保存させ、各前記ノード装置間で前記コンテンツデータを利用可能としたコンテンツ分散保存システムにおけるコンテンツ保存方法であって、前記コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、前記所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得するノード情報取得ステップと、前記コンテンツ分散保存システムにおいて利用可能な前記コンテンツデータを記憶する記憶手段に記憶されたコンテンツデータのうち、所定の条件に基づいてコンテンツデータを削除する削除ステップと、前記削除ステップにより前記コンテンツデータが削除されるとき、前記ノード情報に基づいて所定容量以上の前記空き記憶容量があるノード装置が存在するか否かを判定する判定ステップと、前記判定ステップが前記空き容量があるノード装置が存在すると判定したとき、前記空き容量があると判定されたノード装置識別情報が示すノード装置が前記削除手段により削除されるコンテンツデータを取得するコンテンツ取得ステップと、を備えることを特徴とするコンテンツ保存方法である。
【発明の効果】
【００１７】
請求項１に記載の発明によれば、ノード情報取得手段は、コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得する。コンテンツ送信手段は、判定手段が空き容量があると判定したとき、空き容量があると判定されたノード装置識別情報が示すノード装置へコンテンツデータを送信する。従って、ノード装置から削除されるコンテンツが、システムへの貢献度が低いノード装置へ送信される。この結果、本来は削除されるコンテンツが、空き容量に余裕がある貢献度の低いノード装置へ送信される。本来削除されるはずだったコンテンツが分散保存システムで使用可能となることで、システム全体のキャッシュの使用効率を向上させることができる。
【００１８】
請求項２に記載の発明によれば、コンテンツ送信手段は、削除手段により削除されるコンテンツを空き容量が最大のノード装置へ送信する。空き容量が最大のノード装置は、システムへの貢献度が低いノード装置である。そのため、本来削除されるはずだったコンテンツが、貢献度が低いノード装置へ送信されることで、各ノード装置のシステムへの貢献度が大幅に改善される。
【００１９】
請求項３に記載の発明によれば、検索メッセージ送信手段は、削除手段によりコンテンツデータが削除されるとき、ルーティングテーブルに従って、ルーティングテーブルに記載された所在情報が示すノード装置の容量情報を検索する検索メッセージを送信する。判定手段はノード情報取得手段により取得されたノード情報に基づいて所定容量以上の空き記憶容量があるノード装置が存在するか否かを判定する。従って、コンテンツが削除されるとき、ルーティングテーブルを用いて、所定の空き記憶容量があるノード装置が検索される。コンテンツが削除されるタイミングで、コンテンツ分散保存システムへの貢献度が低いノード装置が検索される。この結果、コンテンツが削除されるときに貢献度が低いノード装置へ、削除されるコンテンツが送信されることで、システム全体のキャッシュの使用効率を確実に向上させることができる。
【００２０】
請求項４に記載の発明によれば、ノード情報取得手段は、ノード装置から所定の要求を処理する内容を含むメッセージを送信可能なノード装置の所在情報を含むルーティングテーブルと空き容量とを対応付けて記憶する。判定手段が空き容量があると判定したとき、コンテンツ送信手段はルーティングテーブルに記述され、かつ、空き容量があるノード装置へ削除されるコンテンツを送信する。この結果、検索メッセージにより空き容量を検索することなく、ルーティングテーブルにより、分散保存システムを構成する複数のノード装置の中から、コンテンツを削除するノード装置と接続可能なノード装置を決定することができる。
【００２１】
請求項５に記載の発明によれば、記憶手段は、コンテンツデータを公開する公開時期が記述された公開時期情報を記憶する。公開時期判定手段が、公開時期が終了したと判定したとき、削除手段はコンテンツデータを削除し、判定手段は判定を行わない、または、コンテンツ送信手段は、前記削除されるコンテンツを送信しない。この結果、記憶容量に余裕があるノード装置へ、公開時期が終了したコンテンツを送ったとしても、公開時期が終了したコンテンツは今後使用されない。この結果、記憶容量に余裕があるノード装置であっても、公開時期が終了して今後使用されないコンテンツデータは送信されない。この結果、今後使用しないコンテンツが送信されないため、システム全体のキャッシュの使用効率を向上させることができる。
【００２２】
請求項６に記載の発明によれば、記憶手段は、記憶手段に記憶されたコンテンツデータと、コンテンツデータの評価値とを対応付けて記憶する。削除手段は、所定の条件として、記憶手段に記憶されたコンテンツデータの中で、所定の値より低い評価値のコンテンツを記憶手段から削除する。記憶容量に余裕があるノード装置がある場合、評価値の低いコンテンツであっても記憶手段へ記憶される。この結果、システム全体の貢献度を向上させることができるとともに、本来削除されるはずだった評価値の低いコンテンツが分散保存システムで利用可能になる。
【００２３】
請求項７に記載の発明によれば、参加処理判定手段は、コンテンツ分散保存システムに新規のノード装置が参加するか否かを判定する。判定手段により新規ノードに空き記憶容量があると判定された場合、コンテンツ送信手段は、削除されるコンテンツを前記新規ノードへ送信する。この結果、分散保存システムへ新規に参加したノード装置であっても空き容量に余裕がある場合、本来削除されるはずのコンテンツが送信される。新規ノードであっても参加するとすぐに、貢献度の高いノード装置になるため、各ノード装置のシステムへの貢献度も向上する。
【００２４】
請求項８に記載の発明によれば、請求項１乃至７の何れか一項に記載のノード装置としてコンピュータを機能させることを特徴とするノード処理プログラである。従って、ノード装置から削除されるコンテンツが、システムへの貢献度が低いノード装置へ送信される。この結果、本来は削除されるコンテンツが空き容量に余裕がある貢献度の低いノード装置へ送信される。本来削除されるはずだったコンテンツが分散保存システムで使用可能となることで、システム全体のキャッシュの使用効率を向上させることができる。
【００２５】
請求項９に記載の発明によれば、ノード情報取得手段は、コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得する。コンテンツ取得手段は、判定手段が空き容量があるノード装置があると判定したとき、空き容量があると判定されたノード装置識別情報が示すノード装置から削除手段により削除されるコンテンツデータを取得する。従って、ノード装置から削除されるコンテンツが、システムへの貢献度が低いノード装置へ取得される。この結果、本来は削除されるコンテンツが空き容量に余裕がある貢献度の低いノード装置へ取得される。本来削除されるはずだったコンテンツが分散保存システムで使用可能となることで、システム全体のキャッシュの使用効率を向上させることができる。
【００２６】
請求項１０に記載の発明によれば、ノード情報取得ステップは、コンテンツ分散保存システムに参加するノード装置の所在を示す所在情報と、所在情報が示すノード装置の空き記憶容量を特定するための容量情報とが対応付けられたノード情報を取得する。コンテンツ送信ステップは、判定ステップが空き容量があるノード装置が存在すると判定したとき、空き容量があると判定されたノード装置識別情報が示すノード装置が前記削除手段により削除されるコンテンツデータを取得する。従って、ノード装置から削除されるコンテンツは、システムへの貢献度が低いノード装置が取得する。この結果、本来は削除されるコンテンツが空き容量に余裕がある貢献度の低いノード装置へ送信される。本来削除されるはずだったコンテンツが分散保存システムで使用可能となることで、システム全体のキャッシュの使用効率を向上させることができる。
【図面の簡単な説明】
【００２７】
【図１】本実施形態のコンテンツ分散保存システムにおける各ノード装置Ｎｎの接続態様の一例を示す図である。
【図２】ノードＮ２が保持するルーティングテーブルの一例を示す概念図である。
【図３】ＤＨＴのＩＤ空間の一例を示す概念図である。
【図４】コンテンツ分散保存システムＳへの参加時におけるルーティングテーブルの生成手順の一例を示す概念図である。
【図５】各ノードＮｎ間を転送するメッセージの様子を示す概念図である。
【図６】ノードＮ２が保持するインデックスキャッシュの一例を示す図である。
【図７】各ノードＮｎ間を転送するパブリッシュメッセージの様子を示す概念図である。
【図８】ノード装置Ｎｎの電気的構成を示す概念図である。
【図９】ノード装置Ｎｎのメイン処理動作を示すフローチャートである。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の最良の実施形態を図面に基づいて説明する。
【００２９】
［コンテンツ分散保存システムの構成］
図１は、本実施形態のコンテンツ分散保存システムＳを示す。コンテンツ分散保存システムＳは、多数ノード装置Ｎｎ（ｎ＝１，２，３・・・の何れか）から構成される。
【００３０】
図１の下部枠１０１内に示すように、一般的なインターネット等のネットワーク８は、ＩＸ（Internet eXchange）３、ＩＳＰ（Internet Service Provider）４ａ及び４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者の装置５ａ及び５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者の装置６、通信回線７等によって構築されている。例えば、通信回線７は、電話回線や光ケーブル等である。なお、図１の例におけるネットワーク８には、データ（パケット）を転送するためのルータが、適宜挿入されているが図示を省略している。
【００３１】
ネットワーク８は、多数のノード装置Ｎｎ（ｎ＝１，２，３・・・の何れか）から構成される。多数のノード装置Ｎｎは、ルータ等を介してインターネットで接続されている。また、各ノード装置Ｎｎには、固有の製造番号およびＩＰ（Internet Protocol）アドレスが割り当てられている。本実施形態のコンテンツ分散保存システムＳは、ピアツーピア方式のネットワークシステムである。図１の上部枠１００内に示すように、ピアツーピア方式のネットワークシステムは、これらのノード装置Ｎｎのうち、何れか複数のノード装置Ｎｎの参加により形成される。
【００３２】
なお、図１の上部枠１００内に示すＰ２Ｐネットワーク９は、既存のネットワーク８を用いて形成されたＰ２Ｐネットワークである。Ｐ２Ｐネットワークは、図１の上部枠１００内の複数のノード装置を仮想的にリンクさせることで構築される。Ｐ２Ｐネットワーク９は、オーバーレイネットワーク、または、論理的なネットワークである。Ｐ２Ｐネットワーク９は、特定のアルゴリズム、により構築される。例えば、特許文献の特開２００６−１９７４００に記載されたＤＨＴを利用したアルゴリズムにより、Ｐ２Ｐネットワーク９は構築される。
【００３３】
そして、Ｐ２Ｐネットワーク９を構成している各ノード装置Ｎｎには、ノードＩＤが割り当てられている。ノードＩＤは、所定桁数からなる固有の識別情報である。また、具体的には、各ノード装置Ｎｎに個別に割り当てられたＩＰアドレス或いは製造番号を基に、ノードＩＤは生成される。ノードＩＤは、上述のＩＰアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。例えば、ＳＨＡ−１等のハッシュ関数により、ｂｉｔ長が１６０ｂｉｔのハッシュ値が生成される。各ノードＩＤは、ある一つのＩＤ空間に偏りなく分散して配置されることになる。
【００３４】
図１に示すように、コンテンツ分散保存システムＳは、コンテンツ投入サーバＣＳを備える。コンテンツ投入サーバＣＳは、新しいコンテンツデータをコンテンツ分散保存システムＳ内に投入するためのサーバである。コンテンツ投入サーバＣＳは、コンテンツデータを複製したレプリカを、コンテンツ分散保存システムＳに投入する。
【００３５】
コンテンツ分散保存システムＳへの参加は、現在Ｐ２Ｐネットワーク９に参加していないノード装置Ｎｎが、現在参加している任意のノード装置Ｎｎへ参加要求を示す参加メッセージを送信する。参加メッセージを受信するノード装置は、コンテンツ分散保存システムＳに常時参加しているノード装置である。本実施例では、常時参加しているノード装置をコンタクトノードとする。例えば、Ｐ２Ｐネットワーク９に参加していないノード装置がノード装置Ｎ８の場合、ノード装置Ｎ８は、コンテンツ分散保存システムＳのコンタクトノードへ送信要求メッセージを送信する。コンタクトノードは、要求メッセージの送信元であるノード装置Ｎ８へＰ２Ｐネットワーク９に参加するために必要な情報を送信する。上述の必要な情報の詳細は後述する。
【００３６】
各ノード装置Ｎｎは、特許文献１に記載のＤＨＴを用いたルーティングテーブルを各ノード装置Ｎｎの記憶手段に記憶している。ルーティングテーブルは、コンテンツ分散保存システムＳ上における各種メッセージの送信先候補先を規定している。具体的には、ルーティングテーブルには、ノード情報が記載される。本実施形態では、ノード情報として、メッセージ送信先候補の「ノードＩＤ」と「ＩＰアドレス及びポート番号」と「空き記録容量」とが記載される。メッセージ送信先候補の「ノードＩＤ」は、ＩＤ空間内で適度に離れたノードＮｎの「ノードＩＤ」である。メッセージ送信先候補の「ＩＰアドレスまたはポート番号」は、ノードＩＤが示すノードのＩＰアドレス及びポート番号である。メッセージ送信先候補の「空き記録容量」は、コンテンツ及びレプリカを記憶する記憶手段の空き容量である。具体的には、空き容量は、コンテンツ記録手段の一例であるＨＤ（Hard Disk）等によって構成される。
【００３７】
なお、「ＩＰアドレスまたはポート番号」は、アドレス情報の一例である。「空き記録容量」は、記憶部の“空き記録容量を特定するための情報”の一例である。この記憶手段の“空き記録容量を特定するための情報”は、ノード装置Ｎｎの記憶手段の空き記録容量を特定できる情報であれば、記憶部の空き記録容量そのものに限定されない。例えば、ノード装置Ｎｎの装置としての総稼働時間を示す情報であっても良い。または、ノード装置Ｎｎが過去にレプリカを取得した回数（ダウンロード回数）を示す情報であっても良い。または、ノード装置Ｎｎが取得したレプリカを再生した回数（視聴回数）を示す情報であっても良い。または、ノード装置Ｎｎが過去に他のノード装置Ｎｎ又はコンテンツ投入サーバＣＳから受けた保存指示の回数（事前配布回数）を示す情報であっても良い。または、ノード装置Ｎｎがレプリカを他のノード装置Ｎｎに利用可能とした回数（公開回数）を示す情報であってもよい。上述した総稼働時間は少ないほうが記憶部の空き記録容量が大きいと特定できる。ダウンロード回数、視聴回数等の回数はいずれも少ないほうが記憶部の空き記録容量が大きいものと特定することができる。
【００３８】
コンテンツ分散保存システムＳに参加しているあるノード装置Ｎｎのルーティングテーブルには、コンテンツ分散保存システムＳに参加しているノード装置Ｎｎの少なくとも一部のノード情報が記載される。特許文献１に記載のように、ＤＨＴテーブルにノード情報が記載されていないノード装置Ｎｎは、各ノード装置Ｎｎ間で互いに各種メッセージを転送し合って届けてもらうようになっている。
【００３９】
本実施形態では、ルーティングテーブルを用いて、上述した他のノード装置Ｎｎへ各種メッセージを送信、または転送するとき、メッセージの送信元、または転送元のノードＮｎの空き記録容量がメッセージに含まれて送信される。このメッセージを受信した各ノード装置Ｎｎは、各ノード装置Ｎｎが保持するルーティングテーブル及びインデックスキャッシュに受信したノード情報の登録及び更新を行う。このような構成により、各ノード装置Ｎｎは、他のノード装置の空き記録容量を把握することができる。ルーティングテーブル及びインデックスキャッシュの登録及び更新を行う方法の詳細な説明は後述する。
【００４０】
[ルーティングテーブルの概要]
以下、コンテンツ分散保存システムＳにおける各ノード装置Ｎｎの機能を説明する。各ノード装置Ｎｎが記憶する「ルーティングテーブル」について詳細に説明する。ここで、図２及び図３を参照して、ルーティングテーブルについて詳しく説明する。
【００４１】
図２は、ノードＮ２が保持するルーティングテーブルの一例を示す図であり、図３は、ＤＨＴのＩＤ空間の一例を示す概念図である。なお、図２及び図３の例においては、説明の便宜上、ノードＩＤのｂｉｔ長を２ｂｉｔ×３桁＝６ｂｉｔとしている。そのため、各桁は、２ｂｉｔで表された４進数（０〜３の整数）で表されている。格桁を２ｂｉｔよりも長いｂｉｔ長を用いても良い。例えば、各桁を４ｂｉｔで表して、０〜ｆの１６進数で表現しても良い。
【００４２】
図２は、ノードＮ２のルーティングテーブルを示す概念図である。図２に示すように、ルーティングテーブルは、レベル１（一段目）〜レベル３（三段目）の複数レベルから構成される。各エリアには、ノード情報が登録される。ノード情報として、ノードＩＤと、ノードＩＤに対応するノード装置ＮｎのＩＰアドレス及びポート番号と、ノードＩＤが示すノード装置Ｎｎの記憶部の空き記録容量とが対応付けられて登録される。
【００４３】
各レベルにおける各エリアは、ノードＩＤ空間を分割することにより決定されるエリアである。図３は、ノードＩＤを用いて各エリアが決定される概念図である。ノードＩＤ空間は、各桁が４進数（０〜３の整数）で表される３桁の数字により構成される。図３に示すように、レベル１のエリアとして、ノードＩＤ空間が４つ（４進数のため）に分割される。具体的にレベル１のエリアは、０ＸＸのエリアと１ＸＸのエリアと２ＸＸのエリアと３ＸＸとのエリアに分割される。０ＸＸのエリアは、“０００”〜“０３３”のノードＩＤが存在するエリアである。１ＸＸのエリアは、“１００”〜“１３３”のノードＩＤが存在するエリアである。２ＸＸのエリアは、“２００”〜“２３３” のノードＩＤが存在するエリアである。３ＸＸのエリアは、“３００”〜“３３３” のノードＩＤが存在するエリアである。
【００４４】
また、レベル２では、レベル１のエリアが更に４つ（４進数のため）に分割される。つまり、０ＸＸ〜３ＸＸの各エリアが更に４分割される。同様に、０ＸＸのエリアと１ＸＸのエリアと２ＸＸのエリアと３ＸＸのエリアとが夫々４分割される。例えば、１ＸＸエリアの場合、“１００”〜“１０３”のノードＩＤが存在するエリアが１０Ｘのエリアとして分割される。また、“１１０”〜“１１３” のノードＩＤが存在するエリアが１１Ｘのエリアとして分割される。“１２０”〜“１２３” のノードＩＤが存在するエリアが１２Ｘのエリアとして分割される。“１３０”〜“１３３” のノードＩＤが存在するエリアが１３Ｘのエリアとして分割される。
【００４５】
以降、ノードＮ２のノードＩＤが“１２２”の場合を例として説明する。図２に示すように、ルーティングテーブルのレベル１における１ＸＸのエリアは、ノードＮ２のノードＩＤが存在するエリアである。そのため、レベル１の１ＸＸのエリアには、ノードＮ２自身のノードＩＤと、ＩＰアドレスまたはポート番号と、記憶部の空き記録容量とが登録される。本実施形態では、ノードＮ２自身のノードＩＤとＩＰアドレスまたはポート番号と空き記録容量とを登録したが、ＩＰアドレスまたはポート番号、空き記録容量はノードＮ２自身のものであるので、登録されなくても良い。ノードＮ２のノードＩＤが存在しないエリアには、夫々、他の任意のノード装置ＮｎのノードＩＤと、ＩＰアドレスまたはポート番号と空き記録容量と等が登録されている。ノードＮ２のノードＩＤが「１２２」の場合、ノードＮ２のノードＩＤが存在しないエリアは、０ＸＸのエリアと、２ＸＸのエリアと、３ＸＸのエリアとである。
【００４６】
また、ルーティングテーブルのレベル２における１２Ｘのエリアは、ノードＮ２のノードＩＤが存在するエリアである。そのため、レベル２の１２Ｘのエリアには、ノードＮ２自身のノードＩＤと、ＩＰアドレスまたはポート番号と、記憶部の空き記録容量とが登録される。本実施形態では、ノードＮ２自身のノードＩＤとＩＰアドレスまたはポート番号と空き記録容量とを登録したが、ＩＰアドレスまたはポート番号、空き記録容量はノードＮ２自身のものであるので、登録されなくても良い。ノードＮ２のノードＩＤが存在しないエリアには、レベル１と同様に、他の任意のノード装置ＮｎのノードＩＤと、ＩＰアドレスまたはポート番号と空き記録容量と等が登録されている。
【００４７】
更に、ルーティングテーブルのレベル３には、図２に示すように、ノードＩＤが“１２０”〜“１２２”である。そのため、レベル３の１２２のエリアには、ノードＮ２自身のノードＩＤと、ＩＰアドレスまたはポート番号と、記憶部の空き記録容量とが登録される。本実施形態では、ノードＮ２自身のノードＩＤとＩＰアドレスまたはポート番号と空き記録容量とを登録したが、ＩＰアドレスまたはポート番号、空き記録容量はノードＮ２自身のものであるので、登録されなくても良い。
【００４８】
なお、図２及び図３の例では、ノードＩＤのｂｉｔ長は３桁×２ｂｉｔである。例えば、ノードＩＤのｂｉｔ長を１６桁×４ｂｉｔとした場合、１６レベル分のテーブルが必要となる。図２及び図３に示すように、本実施形態におけるルーティングテーブルでは、レベルの数値が大きくなるほど、エリアが狭まっていく。そして、このようなルーティングテーブルは、例えば、未参加のノードがコンテンツ分散保存システムＳに参加する際に生成される。ここで、図４を参照して、コンテンツ分散保存システムＳへの参加時におけるルーティングテーブルの生成手順について詳しく説明する。
【００４９】
図４は、コンテンツ分散保存システムＳへの参加時におけるルーティングテーブルの生成手順の一例を示す概念図である。以降、未参加のノードＮ８がコンテンツ分散保存システムＳに参加する例を用いて説明する。ノードＮ８のノードＩＤは“１２３”とする。
【００５０】
図４に示すように、未参加のノードＮ８がコンテンツ分散保存システムＳに参加する場合、コンタクトノードのＩＰアドレスを用いてコンタクトノードに参加メッセージを送信する。参加メッセージは、前記ノードＮ８のノード情報を含む。コンタクトノードにメッセージを送信するためのＩＰアドレスを、ノード装置Ｎｎが事前に知っているものとする。例えば、Ｐ２Ｐネットワークに参加するために必要なソフトウェアをダウンロードするときに、コンタクトノードのＩＰアドレスは配布される。参加メッセージを受信したコンタクトノードは、コンタクトノードのルーティングテーブルを参照する。具体的には、ルーティングテーブルにおけるレベル１のテーブルに登録されているノード情報が参照される。レベル１のテーブルに登録されているノード情報を含む返信メッセージを、コンタクトノードはノードＮ８へ返信する。さらにコンタクトノードは、受信された参加メッセージに含まれるノードＩＤと、ルーティングテーブルに登録された他のノードＮｎのノードＩＤとを比較する。比較結果に基づいてルーティングテーブルから一つのノードＮｎが選定される。例えば、参加メッセージに含まれるノードＩＤと最も近いノードＩＤであるノードＮ３５が、選定される。最も近いノードＩＤは、上位桁がより多く一致するＩＤ、または、比較されるノードＩＤとの差が最も小さいＩＤである。選定されたノード装置が、ノード装置Ｎ２である例を用いて説明する。このとき、参加メッセージには、次に返信させるテーブルの段数を示す情報が含められる。上記例では、レベル２が参加メッセージに含められる。
【００５１】
参加メッセージを受信したノードＮ３５は、ノードＮ３５のルーティングテーブルのレベル２のテーブルに登録されているノード情報等を含む返信メッセージを、ノードＮ８に対して返信する。更に、ノードＮ３５は、ルーティングテーブルから選定されたノードＮ２へ、上記参加メッセージを転送する。このとき、参加メッセージには、次に返信させるべきテーブルの段数として、レベル３を示す情報が含められる。
【００５２】
参加メッセージを受信したノードＮ２は、ノードＮ２のルーティングテーブルにおけるレベル３のテーブルに登録されているノード情報等を含む返信メッセージを、ノードＮ８に対して返信する。以上のようにして参加メッセージは、ノードＩＤをキーとしてＤＨＴルーティング基いて転送される。そのため、未参加のノードＮ８のノードＩＤに一番近いノードＩＤを有するノードＮｎまで転送される。
【００５３】
そして、ノードＮ８は、各ノードＮｎから受信した返信メッセージに含まれるノード情報を用いてルーティングテーブルを生成する。具体的には、コンタクトノードから送信されたノード情報が、ノードＮ８のルーティングテーブルのテーブル１に登録される。ノードＮ３５から送信されたノード情報が、ノードＮ８ルーティングテーブルのレベル２に登録される。ノードＮ２から送信されたノード情報が、ノードＮ８のルーティングテーブルのレベル３に登録される。
【００５４】
こうして、ノードＮ８は、コンテンツ分散保存システムＳへの参加が完了することになる。
【００５５】
本実施形態では、上述したような参加メッセージや、後述するクエリ等の各種メッセージは、メッセージの送信元、または、転送元のノード装置Ｎｎのノード情報を含む。そのため、メッセージを受信したノード装置Ｎｎは、ノード装置Ｎｎのルーティングテーブルにメッセージに含まれるノード情報を登録及び更新する。  
【００５６】
図５は各ノード装置Ｎｎ間を転送するメッセージの様子を示す概念図である。具体的には、図５は、ノードＮ８からの参加メッセージがノードＮ３１、ノードＮ３５、ノードＮ２間を転送する概念図である。
【００５７】
各ノード装置Ｎｎ間を転送するメッセージは、メッセージ送信元のノードＩＤと、メッセージの内容と、送信元のノードＮｎのノード情報とを含む。メッセージ送信元のノードＩＤは、メッセージを送信した送信元のノードＮｎのノードＩＤである。メッセージの内容は、メッセージの目的を表す「参加」、「パブリッシュ」、「クエリ」等である。送信元のノードＮｎのノード情報は、メッセージを送信または転送してきた送信元または転送元のノードＮｎのノード情報である。具体的には、ノード情報は、送信元または転送元のノードＮｎのノードＩＤと、ＩＰアドレスまたはポート番号と、記憶手段の空き記録容量とを含んで構成される。なお、“メッセージの内容”は、参加メッセージの場合、テーブルの登録情報の返信を要求する旨の情報等が含まれている。また、パブリッシュ（登録）メッセージ又はクエリの場合、パブリッシュ（登録）やクエリ（要求）の対象となるコンテンツのコンテンツＩＤが含まれている。
【００５８】
図５に示す例の場合、ノードＮ３５は、コンタクトノードのノードＮ３１から参加メッセージを受信して、参加メッセージに含まれる送信元または転送元のノードＮ３１のノード情報をノードＮ３５のルーティングテーブルに登録する。このとき、ノードＮ３５のルーティングテーブルにノードＮ３１のノード情報が既に登録されている場合、登録済みノードＮ３１のノード情報は、受信したノード情報に基づいて更新される。
【００５９】
同様に、ノードＮ３５から参加メッセージを受信したノードＮ２は、参加メッセージに含まれる送信元または転送元のノードＮ３５のノード情報をノードＮ２のルーティングテーブルに登録、或いは更新する。
【００６０】
以上の手順に従い、ルーティングテーブルは、ノード情報を登録、または、更新する。従って、ルーティングテーブルに登録されているノードＮｎの記憶手段の空き記録容量を取得することができる。また、ルーティングテーブルの空き記録容量を常に最新の状態に保つことができる。
【００６１】
［インデックスキャッシュ］
コンテンツ分散保存システムＳにおいては、内容の異なる様々なコンテンツのレプリカが所定のファイル形式で複数のノード装置Ｎｎに分散して保存されている。コンテンツは、映画及び動画、または、音楽などである。各ノード装置Ｎｎ間でレプリカが送受信可能になっている。例えば、ノードＮ５には、タイトルがＸＸＸの映画のコンテンツのレプリカが保存されているとする。一方、ノード装置Ｎ３には、タイトルがＹＹＹの映画のコンテンツのレプリカが保存されているとする。上述したように、複数のノード装置Ｎｎは、複製されたレプリカを記憶している。以下、コンテンツを記憶したノード装置Ｎｎは、「コンテンツ保持ノード」という。
【００６２】
これらコンテンツのレプリカには、夫々、コンテンツ名（タイトル）と、コンテンツＩＤとを含む情報が付与されている。コンテンツ名は、コンテンツのタイトルであっても良い。また、コンテンツＩＤは、コンテンツ毎に固有のコンテンツ識別情報である。例えば、コンテンツＩＤは、コンテンツ名＋任意の数値が、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化されて生成される。そのため、コンテンツＩＤは、ノードＩＤと同一のＩＤ空間に配置されることとなる。或いは、システム管理者が、コンテンツ毎に一意のＩＤ値を付与しても良い。ＩＤ値は、ノードＩＤと同一ビット長でも良い。コンテンツ名とそのコンテンツＩＤとの対応が書かれたコンテンツカタログリストが、全ノードＮｎに配布される。コンテンツカタログリストには、コンテンツ名と、コンテンツＩＤと、そのコンテンツＩＤが表すレプリカの公開開始日時及び公開終了日時とが対応付けられて記載されている。尚、コンテンツカタログリストの詳細は、特開２００８−１２９６９４号公報に記載されているため、詳細な説明は省略する。
【００６３】
上述のように分散保存されているレプリカの所在は、インデックス情報により管理される。インデックス情報は、レプリカが保存されたノード装置Ｎｎのノード情報と、レプリカのコンテンツＩＤとを組み合わせた情報から構成される。インデックス情報は、レプリカの所在を管理しているノードＮｎにより記憶される。レプリカの所在を管理しているノードを「ルートノード」とする。つまり、コンテンツのレプリカを保存しているコンテンツ保持ノードのノード情報は、他のノードＮｎからの問い合わせに応じて提供可能なようにルートノードにより管理されている。
【００６４】
例えば、タイトルがＸＸＸの映画のコンテンツのレプリカについてのインデックス情報は、レプリカのコンテンツＩＤのルートノードであるノードＮ４により管理される。タイトルがＹＹＹの映画のコンテンツのレプリカについてのインデックス情報は、レプリカのコンテンツＩＤのルートノードであるノードＮ７により管理される。例えば、このようなルートノードには、コンテンツＩＤと最も近いノードＩＤを有するノードＮｎが選定される。例えば、コンテンツＩＤと最も近いとは、上位桁がより多く一致する、または、比較結果の差が最も小さいことである。
【００６５】
図６は、ノードＮ２が保持するインデックスキャッシュの一例を示す概念図である。ノードＮ２は、コンテンツ１、コンテンツ２、コンテンツ３・・・・を保存しているコンテンツ保持ノードのノード情報を登録し管理している。ノードＮ２は、コンテンツ１、コンテンツ２、コンテンツ３・・・・のルートノードである。ノードＮ２は、図６に示すコンテンツ保持ノードＮｎから後述するパブリッシュ（登録）メッセージを受信する。そして、ノードＮ２は、パブリッシュメッセージに含まれるコンテンツＩＤとノード情報とをインデックス情報としてインデックスキャッシュに登録する。
【００６６】
あるノード装置Ｎｎのユーザが、所望するコンテンツのレプリカを取得したい場合、レプリカの取得を望むノード装置Ｎｎは、コンテンツ所在問合せメッセージ（クエリ）を生成する。ユーザがレプリカの取得を望むノード装置Ｎｎを、ユーザノードとする。クエリは、コンテンツのコンテンツＩＤとユーザノードのＩＰアドレスとを含む。クエリに含まれるコンテンツＩＤは、ユーザによりコンテンツカタログリストから選択されたコンテンツのコンテンツＩＤである。
【００６７】
ユーザノードは、ユーザノードのルーティングテーブルにしたがって他のノードＮｎへクエリを送信する。つまり、ユーザノードは、クエリをルートノードに向けて送信する。これにより、コンテンツＩＤをキーとして、クエリは、ＤＨＴルーティングによって最終的にルートノードに到着することになる。なお、このＤＨＴルーティングについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００６８】
各ノード装置Ｎｎにおいてユーザにより選択される情報は、コンテンツカタログリストに記述されている。コンテンツカタログリストには、コンテンツのコンテンツ名と、コンテンツＩＤと、公開日時等の属性情報とが記載される。また、クエリに含まれるコンテンツＩＤは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。
【００６９】
クエリを受信したルートノードは、クエリに含まれるコンテンツＩＤに対応するインデックス情報をインデックスキャッシュから取得する。取得されたインデックス情報は、クエリの送信元であるユーザノードへ返信される。こうしてインデックス情報を取得したユーザノードは、取得したインデックス情報からコンテンツ保持ノードのＩＰアドレスを知ることができる。取得したコンテンツ保持ノードのＩＰアドレスに基づいて、ユーザノードは、コンテンツ送信要求メッセージを送信する。そして、ユーザノードは、コンテンツ保持ノードからからコンテンツのレプリカを取得（ダウンロード）することができる。レプリカを取得するとき、レプリカのコンテンツＩＤとレプリカの評価値とが、レプリカと共に取得される。
【００７０】
そして、コンテンツ保持ノードから取得したコンテンツのレプリカをユーザノードは、ハードディスク等の記憶手段に保存する。レプリカを保存したユーザノードは、レプリカを保存したことをそのルートノードに知らせる。レプリカを保存したことを知らせるために、ユーザノードは、レプリカのコンテンツＩＤとユーザノードのノード情報とが含まれるパブリッシュ（登録）メッセージを生成する。生成されたパブリッシュメッセージは、ユーザノードからルートノードに向けて送信される。パブリッシュメッセージが送信されることで、コンテンツ分散保存システムＳに参加している他のノード装置Ｎｎは、レプリカを取得したユーザノードからもレプリカを取得（ダウンロード）することができる。
【００７１】
上述の方法により、パブリッシュメッセージは、クエリと同じように、コンテンツＩＤをキーとするＤＨＴルーティングによってルートノードに到着することになる。そして、ルートノードは、受信したパブリッシュメッセージに含まれるユーザノードのノード情報とレプリカのコンテンツＩＤの組を含むインデックス情報を登録することができる。こうして、上記ユーザノードは、新たに、コンテンツのレプリカを保持するコンテンツ保持ノードとなる。なお、上記パブリッシュメッセージに含まれるユーザノード装置のノード情報と、コンテンツＩＤとの組であるインデックス情報は、ルートノードに至るまでの転送経路におけるノード装置Ｎｎにおいても登録される。
【００７２】
図７は各ノード装置Ｎｎ間を転送するパブリッシュメッセージの様子を示す概念図である。図７は任意のコンテンツのレプリカを保存したノードＮ１からのパブリッシュメッセージが送信される例である。送信されたパブリッシュメッセージは、ノードＮ７、ノードＮ２９、ノードＮ２間へ転送される。パブリッシュメッセージには、パブリッシュメッセージを送信した送信元のノード装置Ｎｎのノード情報と、コンテンツＩＤと、パブリッシュメッセージを転送してきた転送元のノード装置Ｎｎのノード情報とを含んで構成される。そしてパブリッシュメッセージの転送経路のノード装置Ｎｎにおいて、送信元のノード装置Ｎｎのノード情報はインデックスキャッシュに登録される。転送元のノードＮｎのノード情報はルーティングテーブルに登録される。
【００７３】
図７に示す例の場合、任意のコンテンツを保持したノードＮ１から、パブリッシュメッセージを受信したノードＮ７は、送信元のノードＮ１のノード情報をノードＮ７のインデックスキャッシュに登録する。このとき、ノードＮ１のノード情報が既にインデックスキャッシュに登録されている場合、登録済みのノード情報に基づいて更新する。そして、ノードＮ７からパブリッシュメッセージを受信したノードＮ２９は、パブリッシュメッセージに含まれる送信元のノードＮ１のノード情報をノードＮ２９のインデックスキャッシュに登録、または、更新する。
【００７４】
また、ノードＮ２９は、パブリッシュメッセージに含まれる送信元のノードＮ７のノード情報をノードＮ２９のルーティングテーブルに登録する。このとき、ノードＮ７のノード情報が既にルーティングテーブルに登録されている場合、登録済みのノード情報は、受信したノード情報に基づいて更新される。
【００７５】
そして、ノードＮ２９からパブリッシュメッセージを受信したノードＮ２は、送信元のノードＮ１のノード情報をノードＮ２のインデックスキャッシュに登録又は、更新する。送信元のノードＮ２９のノード情報は、ノードＮ２のルーティングテーブルに登録又は、更新される。
【００７６】
図６に示す例の場合、ノードＮ２はインデックスキャッシュに、コンテンツ１を保存しているノードＮ１とＮ１４とＮ２１とＮ１１との空き記録容量を記憶している。また、ノードＮ２は、コンテンツ２を保存しているノードＮ３５の空き記憶容量を記憶している。同様にノードＮ２は、コンテンツ３を保存しているノードＮ３２とＮ２２とＮ５との記憶部の空き記録容量を記憶している。図７を用いて説明した手順に従い、インデックスキャッシュのノード情報を登録、または、更新するので、インデックスキャッシュに登録されているノードＮｎの記憶部の空き記録容量を常に最新の状態に保つことができる。
【００７７】
［コンテンツ投入サーバＣＳの概要］
次に、コンテンツ投入サーバＣＳについて説明する。
【００７８】
コンテンツ投入サーバＣＳが、コンテンツ分散保存システムＳの任意のノードＮｎへレプリカの保存指示を行なう。レプリカの保存指示は、保存されるレプリカの記憶容量を含む指示である。保存指示を受けたノードＮｎが他のノード装置Ｎｎに対して保存指示を繰り返し行なう。繰り返し行うことにより、コンテンツ保存分散システムＳ内にてレプリカの事前保存が行なわれる。
【００７９】
なお、本実施形態では、コンテンツ投入サーバＣＳがコンテンツのレプリカの保存を指示するとき、保存指示と共にコンテンツのレプリカが保存先のノード装置Ｎｎに共に送信される。いわゆる「プッシュ式」のコンテンツ保存が行なわれる。
【００８０】
コンテンツ投入サーバＣＳは、ランダムに選択した任意台数のノードＮｎへレプリカの保存を指示するよう構成してもよい。コンテンツ分散保存システムＳに参加するノード装置Ｎｎの中から、任意台数のノード装置Ｎｎがランダムに選択される。レプリカの保存指示が送信されるノードＮｎの決定方法は上記の方法に特に限定されない。
【００８１】
コンテンツ投入サーバＣＳから送信されたレプリカは、所定のノード装置Ｎｎに保存される。レプリカを保存したコンテンツ事前保持ノードは、コンテンツ保持ノードのルーティングテーブルに基いて、他のノードＮｎへレプリカの保存を指示する。
【００８２】
[ノード装置の電気的構成]
次に、図８を参照して、ノードＮｎの電気的構成ついて説明する。
【００８３】
図８は、本実施形態のノード装置Ｎｎの電気的構成を示すブロック図である。図８に示すように、第１の実施形態のノード装置Ｎｎには、ノード装置Ｎｎを制御するＣＰＵ１１が備えられている。ＣＰＵ１１には、ＲＡＭ１２とＨＤＤ１３とデコーダ部１４と通信部１９と入力部２０とがそれぞれ電気的に接続されている。ＲＡＭ１２、ＨＤＤ１３などの記憶手段とＣＰＵ１１とは、ノード装置Ｎｎのコンピュータを構成している。そのコンピュータは、ノード装置Ｎｎの動作を制御処理する。
【００８４】
ＲＡＭ１２は、各種メッセージ一時記憶領域１２１を含む。各種メッセージ一時記憶領域１２１は、ノード装置Ｎｎが受信した各種メッセージを一時記憶する。例えば、参加メッセージやクエリ等である。
【００８５】
ＨＤＤ１３は、プログラム記憶領域１３１とレプリカ記憶領域１３３と、インデックスキャッシュ記憶領域１３４と、ルーティングテーブル記憶領域１３５と、コンテンツカタログリスト記憶領域を含む。プログラム記憶領域１３１は、メイン動作プログラム記憶領域１３２を含む。メイン動作プログラム記憶領域１３２は、ノード装置Ｎｎを制御するためのプログラム情報を記憶する。レプリカ記憶領域１３３は、コンテンツ投入サーバＣＳまたは他のノード装置Ｎｎから送信されたレプリカを記憶する。レプリカ記憶領域１３３は、記憶するレプリカの評価値を、レプリカと対応付けて記憶する。インデックスキャッシュ記憶領域１３４は、上述したインデックスキャッシュを記憶する。ルーティングテーブル記憶領域１３５は、上述したＤＨＴルーティングテーブルを記憶する。コンテンツカタログリスト記憶領域１３６は、上述したコンテンツカタログリストを記憶する。レプリカ記憶領域１３３は、本発明の記憶手段の一例である。本実施形態のインデックスキャッシュ記憶領域１３４とルーティングテーブル記憶領域１３５とは、本発明のノード情報取得手段の一例である。
【００８６】
デコーダ部１４は、映像情報と音声情報とをデコードする。本実施形態のデコードは、エンコード化された映像情報と音声情報とを、データ伸張または復号化することである。映像情報と音声情報とは、コンテンツデータのレプリカに含まれる。
【００８７】
映像処理部１５は、デコードされた映像情報に所定の描画処理を施して映像信号を出力する。
【００８８】
ディスプレイ１６は、映像処理部１５から出力された映像信号に基づいて映像表示する。ディスプレイ１６は、ＣＲＴディスプレイ、または、液晶ディスプレイにより構成される。
【００８９】
音声処理部１７は、上記デコードされた音声情報をアナログオーディオ信号にＤ（Digital）／Ａ（Analog）変換する。
【００９０】
スピーカ１８は、変化されたアナログオーディオ信号を、アンプにより増幅して出力する。
【００９１】
通信部１９は、ノード装置Ｎｎをインターネットと接続する。通信部１９は、ネットワーク８を介して他のノード装置Ｎｎまたはコンテンツ投入サーバＣＳと情報の送受信を行う。
【００９２】
入力部２０は、ユーザからの指示を受け付ける。入力部２０は、キーボード、マウス、或いは、操作パネル等から構成される。なお、ノード装置Ｎｎとしては、パーソナルコンピュータ、ＳＴＢ（Ｓｅｔ  Ｔｏｐ  Ｂｏｘ）、或いは、ＴＶ受信機等を適用可能である。
【００９３】
また、コンテンツ分散保存システムＳが、コンテンツ分散保存システムＳに参加する際のアクセス先となるコンタクトノードを備えている場合、各ノード装置ＮｎのＨＤＤ１３にはコンタクトノードのＩＰアドレスまたはポート番号等が記憶されている。なお、ＨＤＤ１３に記憶されるプログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしてもよい。また、ＣＤ−ＲＯＭ等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
【００９４】
各種メッセージを他のノードＮｎに送信、または、転送する際、ＣＰＵ１１は、ＨＤＤ１３の空き記録容量を取得する。例えば、ＨＤＤ１３のレプリカ記憶領域１３３に使用されるハードディスクの記憶領域の全容量と、既に使用している使用容量とが求められる。全容量から使用容量を減算することで、空き記録容量が求められる（空き記録容量＝全容量―使用容量）。また、空き記録容量として、上述のように減算せず、全容量と使用容量との比率が用いられても良い。上述の全容量または使用量として、レプリカ記憶領域１３３の記憶容量が用いられても良い。
【００９５】
［ノード装置Ｎｎのメイン処理動作］
以上説明した構成からなる本実施形態のノード装置Ｎｎの動作及び作用について、添付図面を参照して説明する。図９は、ノード装置Ｎｎにおける動作の処理手順を示すフローチャートである。ノード装置Ｎｎのメイン処理動作は、上述したＰ２Ｐネットワークへの参加処理が終了した後に、ＣＰＵ１１がメイン処理動作プログラムを実行することにより、遂行される。以下に示す処理は、ＣＰＵ１１により処理される。Ｐ２Ｐネットワークへの参加処理が実行されたノード装置Ｎｎは、他のノード装置、または、コンテンツ投入サーバＣＳからコンテンツカタログリストを取得する。取得されたコンテンツカタログリストは、コンテンツカタログリスト記憶領域１３６に記憶される。
【００９６】
ステップＳ１０１では、新規に参加するノード装置があるか否かが判定される。新規にノード装置が参加したかは、参加メッセージを受信したか否かによって判定される。参加メッセージは、各種メッセージ一時記憶領域１２１に記憶される。新規参加ノードありと判定された場合、ステップＳ１１６が実行される。新規参加ノードがないと判定された場合、ステップＳ１０２が実行される。本発明のコンピュータと、ステップＳ１０１とは、本発明の参加手段の一例である。
【００９７】
ステップＳ１０２では、ノード装置Ｎｎが、ノード装置Ｎｎとは異なる他のノード装置Ｎｎまたはコンテンツ投入サーバＣＳから、レプリカ保存指示を受信したかが判定される。レプリカ保存指示は、保存されるレプリカの記憶容量を含む。レプリカ保存指示を受信したと判定した場合、ステップＳ１０３が実行される。レプリカ保存指示を受信したと判定されなかった場合、ステップＳ１０６が実行される。
【００９８】
ステップＳ１０３では、レプリカを保存可能な記憶容量があるか否かが判定される。ステップＳ１０２で受信した保存指示に含まれる記憶容量と、ノード装置Ｎｎの空き記録容量とが比較される。比較した結果、ノード装置Ｎｎの空き記録容量が、保存指示に含まれる記憶容量よりも大きいと判定された場合、ステップＳ１０４が実行される。ノード装置Ｎｎの空き記録容量が、保存指示に含まれる記憶容量よりも大きいと判定されなかった場合、ステップＳ１１１が実行される。
【００９９】
ステップＳ１０４では、ステップＳ１０２で保存指示されたレプリカが、レプリカ記憶領域１３３に記憶される。
【０１００】
ステップＳ１０５では、ステップＳ１０４でレプリカを記憶したノードＮｎが、パブリッシュメッセージをＤＨＴルーティングテーブルに基いて送信する。パブリッシュメッセージを受信した各ノード装置Ｎｎは、インデックスキャッシュ記憶領域１３４に記憶されたインデックスキャッシュをパブリッシュメッセージに基づいて、登録、または、更新する。
【０１０１】
ステップＳ１０６では、ノード装置Ｎｎのユーザにより所定の指示が入力部２０により入力されたかが判定される。ユーザにより所定の指示があると判定された場合、ステップＳ１０７が実行される。ユーザにより所定の指示がないと判定された場合、ステップＳ１１１が実行される。
【０１０２】
ステップＳ１０７では、ユーザによる所定の指示が、所定のレプリカのダウンロード指示であるか否かが判定される。所定のレプリカのダウンロード指示であると判定された場合、ステップＳ１０８が実行される。所定のレプリカのダウンロード指示であると判定されなかった場合、ステップＳ１１０が実行される。
【０１０３】
ステップＳ１０８では、ステップＳ１０７で指示された所定のレプリカのコンテンツ所在問い合わせメッセージ（クエリ）が送信される。コンテンツ所在問い合わせメッセージ（クエリ）は、上述したレプリカの所在を問い合わせるメッセージである。
【０１０４】
ステップＳ１０９では、ステップＳ１０８で送信したクエリに基づいて、ステップＳ１０７で指示された所定のレプリカがダウンロードされる。
【０１０５】
ステップＳ１１０では、その他の指示が実行される。その他の指示とは、ステップＳ１０７のダウンロード指示とは異なる指示である。その他の指示もダウンロード指示と同様に、ノード装置Ｎｎのユーザが入力部２０により入力する。
【０１０６】
ステップＳ１１１では、ノード装置ＮｎのＨＤＤ１２に所定の容量以上の空き記録容量があるか否かが判定される。所定の容量以上の空き記録容量があると判定された場合、ステップＳ１１９が実行される。所定の容量以上の空き記録容量がないと判定された場合、ステップＳ１１２が実行される。
【０１０７】
ステップＳ１１２では、レプリカ記憶領域１３３に記憶された複数のレプリカの中から、削除されるレプリカが決定される。レプリカ記憶領域１３３に記憶された各レプリカの中で、公開時期が過ぎたレプリカが削除される。また、レプリカ記憶領域１３３に記憶されたレプリカの中で、評価値が悪いレプリカが削除される。ステップＳ１１２では、公開時期が過ぎたレプリカのみが削除されても良い。また、評価値が悪いレプリカのみが削除されても良い。また、公開時期が過ぎたレプリカと、評価値が悪いレプリカとの両方が削除されても良い。削除されるレプリカの数は、１個であってもよいし、複数であっても良い。公開時期が過ぎたレプリカか否かは、コンテンツカタログリスト記憶領域１３６に記憶されたコンテンツカタログリストの公開終了日時によって判定される。また、評価値が悪いか否かは、レプリカ記憶領域１３３に記憶されたレプリカの評価値に基づいて判定される。本実施形態のコンピュータとステップＳ１１２は、本発明の公開時期判定手段の一例である。
【０１０８】
ステップＳ１１３では、ルーティングテーブルまたはインデックスキャッシュに記載されたノード装置Ｎｎの中で、空き記録容量が所定値以上であるノード装置があるかが判定される。図２または図６に示す各ノード装置Ｎｎの空き記録容量が、所定値以上のノード装置があると判定された場合、ステップＳ１１４が実行される。所定値以上の空き記録容量があるノード装置がないと判定された場合、ステップＳ１１５が実行される。具体的には、ステップＳ１１２で削除が決定されたレプリカの記憶容量より大きい空き記録容量のノード装置があるか否かが判定される。図２に示すルーティングテーブル、または、図６に示すインデックスキャッシュの中から、所定値以上の空き記録容量のノード装置Ｎｎが決定される。ステップＳ１１３では、図２に示すルーティングテーブルのみが参照されても良い。また、ステップＳ１１３では、図６に示すインデックスキャッシュのみが参照されても良い。図２に示すルーティングテーブルと図６に示すインデックスキャッシュとの両方が参照されても良い。本実施形態のコンピュータと、ステップＳ１１３でＨＤＤ１３に記憶されたルーティングテーブルとインデックスキャッシュとを参照する処理は、本発明のノード情報取得手段の一例である。ステップＳ１１３でＨＤＤ１３に記憶されたルーティングテーブルとインデックスキャッシュとを参照する処理は、本発明のノード情報取得ステップの一例である。本実施形態のコンピュータとステップＳ１１３とは、本発明の判定手段の一例である。また、本実施形態のステップＳ１１３は、本発明の判定ステップの一例である。
【０１０９】
ステップＳ１１４では、ステップＳ１１２で削除が決定されたレプリカが、ステップＳ１１３で決定されたノード装置Ｎｎへ送信される。具体的には、ステップＳ１１２で削除されるレプリカの数が１個の場合、ステップＳ１１３で決定されたノード装置の中から、空き記録容量が最大のノード装置へ、削除されるレプリカが送信される。また、ステップＳ１１２で削除されるレプリカの数が複数個の場合、ステップＳ１１３で決定されたノード装置の中から、空き記録容量が多いノード装置から順にレプリカが送信される。本実施形態のコンピュータとステップＳ１１４とは、本発明のコンテンツ送信手段の一例である。また、本実施形態のステップＳ１１４は、本発明のコンテンツ送信ステップの一例である。
【０１１０】
ステップＳ１１５では、ステップＳ１１２で削除が決定されたレプリカが、レプリカ記憶領域１３３から削除される。本実施形態のコンピュータと、ステップＳ１１５とは、本発明の削除手段の一例である。また、ステップＳ１１５は、本発明の削除ステップの一例である。
【０１１１】
ステップＳ１１６では、ステップＳ１１２と同様の方法で、削除されるレプリカが決定される。
【０１１２】
ステップＳ１１７では、新規ノード装置に所定の容量以上の空き記録容量があるか否かが判定される。具体的には、参加メッセージに含まれた空き記録容量が、所定の空き容量以上であるかが判定される。参加メッセージに含まれた空き記録容量は、参加メッセージとともに、各種メッセージ一時記憶領域１２１に記憶される。新規ノード装置に所定の容量以上の空き記録容量があると判定された場合、ステップＳ１１８が実行される。新規ノード装置に所定の容量以上の空き記録容量がないと判定された場合、ステップＳ１１９が実行される。具体的には、ステップＳ１１６で削除が決定されたレプリカの記憶容量より大きい空き記録容量であるか否かが判定される。
【０１１３】
ステップＳ１１８では、ステップＳ１１６で削除が決定されたコンテンツが新規ノード装置へ送信される。
【０１１４】
ステップＳ１１９では、ノード装置Ｎｎに備えられた電源ＯＦＦボタンが操作されたかが判定される。電源ＯＦＦボタンが操作された場合、メイン処理動作は終了される。操作されなかった場合、ステップＳ１０１が再度実行される。ステップＳ１１９では、電源ＯＦＦボタンの操作の代わりに、Ｐ２Ｐネットワーク９からの離脱指示により判定されても良い。離脱指示は、ノード装置Ｎｎのユーザにより入力される。また、離脱指示はノード装置Ｎｎから自動で発生されても良い。離脱指示があった場合、メイン処理動作は終了される。離脱指示がなかった場合、ステップＳ１０１が再度実行される。
【０１１５】
（変形例１）
本実施形態のメイン処理動作のステップＳ１１３の変形例１について説明する。本実施形態では、ルーティングテーブルまたはインデックスキャッシュに基いて、空き記録容量があるノード装置が決定されている。変形例１では、ルーティングテーブルまたはインデックスキャッシュを用いる代わりに、所定のタイミングで、Ｐ２Ｐネットワーク９に参加するノード装置Ｎｎが互いに空き記録容量を送受信し合うようにしても良い。この場合、各ノード装置Ｎｎは、受信した空き記録容量と空き記録容量が送られてきた送信元のノードＩＤとを対応付けて記憶する。また、Ｐ２Ｐネットワークに参加する全てのノード装置Ｎｎから空き記録容量が送受信されても良い。Ｐ２Ｐネットワークに参加する一部のノード装置Ｎｎから空き記録容量が送受信されても良い。
【０１１６】
（変形例２）
本実施形態のＲＡＭ１２とＨＤＤ１３との変形例２について説明する。本実施形態では、レプリカ記憶領域１３３とインデックスキャッシュ記憶領域１３４とルーティングテーブル記憶領域１３５とコンテンツカタログリスト記憶領域１３６とがＨＤＤ１３に記憶されている。変形例２では、レプリカ記憶領域１３３とインデックスキャッシュ記憶領域１３４とルーティングテーブル記憶領域１３５とコンテンツカタログリスト記憶領域１３６とがＲＡＭに記憶されても良い。レプリカ記憶領域１３３とインデックスキャッシュ記憶領域１３４とルーティングテーブル記憶領域１３５とコンテンツカタログリスト記憶領域１３６とは、ＨＤＤまたはＲＡＭのいずれに記憶されても良い。また、ＲＡＭ１２の各種メッセージ一時記憶領域１２１についても同様に、ＲＡＭまたはＨＤＤのいずれに記憶されても良い。
【０１１７】
（変形例３）
本実施形態のメイン処理動作のステップＳ１１２の変形例３について説明する。変形例３では、ステップＳ１１２で削除が決定されたレプリカの数が複数個ある場合、ステップＳ１１３では、削除が決定された複数のレプリカの総記憶容量より大きい空き記録容量があるノード装置があるか否かが判定されても良い。また、決定された複数のレプリカ個々が、記憶可能な空き記録容量を持つ複数のノード装置があるか否かが判定されても良い。例えば、ステップＳ１１２で削除されるレプリカの数が、ステップＳ１１３で決定されたノード装置の数よりも大きい場合、削除されるレプリカの中から、記憶容量が大きいレプリカから順に、ノード装置の数のレプリカが選択される。選択されたレプリカが、ステップＳ１１３で決定された各ノード装置へ夫々送信されても良い。尚、この場合、ステップＳ１１３で決定され、且つ、各ノード装置へ送信されたレプリカが、レプリカ記憶領域から削除される。送信されなかったレプリカはレプリカ記憶領域から削除されない。
【０１１８】
（変形例４）
本実施形態のメイン処理動作のステップＳ１１３の変形例４について説明する。本実施形態では、ルーティングテーブルまたはインデックスキャッシュに基いて、空き記録容量があるノード装置が決定されている。変形例４では、ルーティングテーブルまたはインデックスキャッシュを用いる代わりに、マルチキャストにより、各ノード装置Ｎｎに空き記録容量があるかを検索するメッセージが、Ｐ２Ｐネットワーク９に参加する各ノード装置Ｎｎへ送信されても良い。この場合、記録容量の検索メッセージを受信した各ノード装置Ｎｎは、所定の空き記録容量があるかを判別する。判別した結果、空き記録容量があると判別されたノード装置Ｎｎが、メイン動作のステップＳ１１２で削除されるコンテンツを取得、または、ダウンロードを行っても良い。また、判別した結果、空き記録容量があると判別されたノード装置Ｎｎが空き記録容量がある旨のメッセージを、上述の検索メッセージを送信したノード装置へ送信しても良い。この場合、上述の検索メッセージの送信元のノード装置が、空き記録容量がある旨のメッセージを送信したノード装置へ、削除するコンテンツを送信しても良い。
【０１１９】
（変形例５）
本実施形態のメイン処理動作のステップＳ１１３の変形例５について説明する。ステップＳ１１３では、ルーティングテーブルまたはインデックスキャッシュに記載されたノード装置の中で、空き記録容量が所定値以上であるノード装置があるかが判定されている。変形例５では、ルーティングテーブルまたはインデックスキャッシュを用いる代わりに、各ノード装置Ｎｎの空き記録容量を管理する管理サーバがＰ２Ｐネットワーク９内に設置されても良い。メイン処理動作のステップＳ１１２で削除されるコンテンツが決定されたとき、所定の空き記録容量があるノード装置があるかを検索するために、管理サーバにより管理された各ノード装置Ｎｎの空き記録容量が参照されても良い。管理サーバは、ログとして各ノード装置Ｎｎの記憶手段の空き記録容量を記憶する。各ノード装置Ｎｎは、所定の周期ごとに、上述した記憶手段の空き記録容量を管理サーバへログとして送信する。また、記憶手段の空き記録容量の代わりに、ノード装置の総稼動時間が、空き記録容量として用いられても良い。
【０１２０】
（変形例６）
本実施形態のメイン処理動作のステップＳ１１３の変形例６について説明する。ステップＳ１１３では、ルーティングテーブルまたはインデックスキャッシュに記載されたノード装置の中で、空き記録容量が所定値以上であるノード装置があるかが判定されている。変形例６では、ルーティングテーブルまたはインデックスキャッシュを用いて、各ノード装置Ｎｎに所定の空き記録容量があるか否かを問い合わせるメッセージが送信されても良い。この場合、ルーティングテーブルまたはインデックスキャッシュには、ノード装置の空き記録容量は記憶されない。所定の空き記録容量があるか否かを問い合わせるメッセージを受信したノード装置は、所定の空き記録容量があるかを判別する。判別した結果、空き記録容量があると判別されたノード装置が、メイン動作のステップＳ１１２で削除されるコンテンツを取得、または、ダウンロードを行っても良い。また、判別した結果、空き記録容量があると判別されたノード装置が空き記録容量がある旨のメッセージを、上述の検索メッセージを送信したノード装置へ送信しても良い。この場合、上述の検索メッセージの送信元のノード装置が、空き記録容量がある旨のメッセージを送信したノード装置へ、削除するコンテンツを送信しても良い。
【０１２１】
（変形例７）
本実施形態のメイン処理動作のステップＳ１１３の変形例７について説明する。ステップＳ１１３では、ルーティングテーブルまたはインデックスキャッシュに記載されたノード装置の中で、空き記録容量が所定値以上であるノード装置があるかが判定されている。変形例７では、ルーティングテーブルまたはインデックスキャッシュを用いる代わりに、各ノード装置に空き記録容量があるかを検索するメッセージが、Ｐ２Ｐネットワーク９に参加するノード装置へランダムに送信されても良い。この場合、ランダムに選択されて、記録容量の検索メッセージを受信したノード装置は、所定の空き記録容量があるかを判別する。判別した結果、空き記録容量があると判別されたノード装置が、メイン動作のステップＳ１１２で削除されるコンテンツを取得、または、ダウンロードを行っても良い。また、判別した結果、空き記録容量があると判別されたノード装置が空き記録容量がある旨のメッセージを、上述の検索メッセージを送信したノード装置へ送信しても良い。この場合、上述の検索メッセージの送信元のノード装置が、空き記録容量がある旨のメッセージを送信したノード装置へ、削除するコンテンツを送信しても良い。空き記録容量があるノード装置が見つかるまで、繰り返しノード装置がランダムに選択されても良い。
【０１２２】
（変形例８）
本実施形態の変形例８について説明する。本実施形態では、空き記録容量として、各ノード装置Ｎｎの記憶手段の空き記録容量が用いられている。変形例８では、各ノード装置Ｎｎの記憶手段の空き記録容量の代わりに、ノード装置がＰ２Ｐネットワーク９に参加した参加時期が空き記録容量として用いられても良い。この場合、参加時期が早いノード装置はＰ２Ｐネットワーク９に参加していることで、記憶手段にレプリカが多く保存されていると推定される。また、参加時期が遅いノード装置はＰ２Ｐネットワーク９に参加しているが、まだ記憶手段にレプリカが多く保存されていないと推定される。空き記録容量としての参加時期を管理する管理サーバが、Ｐ２Ｐネットワーク９内に設置されても良い。本実施形態のメイン処理動作のステップＳ１１３で、ルーティングテーブルまたはインデックスキャッシュを参照する代わりに、上述の管理サーバに問い合わせても良い。また、ルーティングテーブルまたはインデックスキャッシュに参加時期が記載されても良い。
【０１２３】
（変形例９）
本実施形態では、ルーティングテーブルとしてＤＨＴを用いたルーティングテーブルが用いられている。変形例９では、ＤＨＴ以外のルーティングテーブルが用いられている。
【符号の説明】
【０１２４】
３  ＩＸ
４ａ、４ｂ  ＩＳＰ
５ａ、５ｂ  ＤＳＬ回線業者装置
６  ＦＴＴＨ回線事業者装置
７  回線速度
８  ネットワーク
９  Ｐ２Ｐネットワーク（オーバーレイネットワーク）
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＨＤＤ
１４  デコーダ部
１５  映像処理部
１６  ディスプレイ
１７  音声処理部
１８  スピーカ
１９  通信部
２０  入力部
１２１  各種メッセージ記憶一時記憶領域
１３１  プログラム記憶領域
１３２  メイン動作プログラム記憶領域
１３３  レプリカ記憶領域
１３４  インデックスキャッシュ記憶領域
１３５  ルーティングテーブル記憶領域  
１３６  コンテンツカタログリスト記憶領域
Ｓ  コンテンツ分散保存システム
Ｎｎ  ノード
ＣＳ  コンテンツ投入サーバ
【図１】
2010231576.tif 000003
【図２】
2010231576.tif 000004
【図３】
2010231576.tif 000005
【図４】
2010231576.tif 000006
【図５】
2010231576.tif 000007
【図６】
2010231576.tif 000008
【図７】
2010231576.tif 000009
【図８】
2010231576.tif 000010
【図９】
2010231576.tif 000011