(57)【要約】【課題】  本発明の目的は、ヒントサーバに記憶する通信経路情報が膨大になった場合であっても、ヒントサーバの処理負荷を低減させることが可能な通信経路情報を分散して保存させる方法を提供することである。【解決手段】  本発明は、上位装置群情報、近接装置群情報、下位装置群情報それぞれには、装置群識別情報とルータ識別情報とＩＰアドレス範囲とが含まれる。装置群識別情報は、例えば各装置群を管理する管理者名である。ＩＰアドレス範囲は、各装置群に割り当てられたＩＰアドレス範囲である。上位装置群１３ａと、下位装置群１４ａ及び下位装置群１４ｂとを識別する装置群識別情報が、接続関係情報コンテンツに含まれる。また、上位装置群１３ａと、下位装置群１４ａ及び下位装置群１４ｂとに対応するＩＰアドレス範囲が、接続関係情報コンテンツとして生成される。接続情報コンテンツには、コンテンツデータと同じようにコンテンツＩＤが割り当てられる。【選択図】図４
2010278617.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なるネットワーク間を接続し、所定数の所在情報が割り当てられた少なくとも１つ以上の通信機器から構成される複数の装置群が階層構造により接続され、
前記階層構造により接続された複数の装置群の一部の装置群を表す装置群情報と、前記一部の装置群に対応する所在情報とから構成されるデータファイルを分散して保存し、ネットワークを介して前記データファイルの送受信が可能な複数のノード装置と、
前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて送信する送信部と、
前記送信部により送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を取得する取得部と、
前記取得部により取得された前記データファイル識別情報に基づいて、前記データファイルが保存された前記複数のノード装置のいずれかから前記データファイルを取得するデータファイル取得部と、
を備える第１ノード装置と、
から構成されることを特徴とする分散保存システム。
【請求項２】
前記分散保存システムは、
前記データファイルを識別するデータファイル識別情報と、前記データファイル識別情報が示すデータファイルの前記所在情報とを対応付けて記憶する第１記憶部を備えた管理装置を備え、
前記送信部は、前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて前記管理装置へ送信し、
前記取得部は、前記送信部により送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を、前記管理装置から取得することを特徴とする請求項１に記載の分散保存システム。
【請求項３】
前記コンテンツ分散保存システムは、
前記複数のノード装置に分散して保存された前記コンテンツデータの保存先のノード装置の前記所在情報を複数記憶する第２記憶部を備えた第２ノード装置を備え、
前記第１ノード装置は、
前記複数のノード装置に分散して保存された複数のコンテンツデータの中から、所望のコンテンツを要求するコンテンツ要求部と、
前記コンテンツ要求部により要求されたコンテンツデータの所在情報を前記第２ノード装置から取得するコンテンツ取得部と、
前記コンテンツ取得部により取得された前記所在情報の中から、前記コンテンツ要求部によりコンテンツを要求したノード装置における前記装置群情報の前記所在情報に含まれるノード装置を決定する決定部と、
前記コンテンツ取得部は、前記決定部により決定されたノード装置から、前記コンテンツを取得することを特徴とする請求項１または請求項２に記載の分散システム。
【請求項４】
前記コンテンツ分散保存システムは、
前記複数のノード装置に分散して保存された前記コンテンツデータの保存先のノード装置の前記所在情報を複数記憶する第２記憶部を備えた第２ノード装置を備え、
前記第１ノード装置は、
前記複数のノード装置に分散して保存された複数のコンテンツデータの中から、所望のコンテンツデータを要求するコンテンツ要求部を備え、
前記送信部は、前記コンテンツ要求部によりコンテンツデータを要求したノード装置における前記装置群情報の前記所在情報を前記第２ノード装置へ送信し、
前記第２ノード装置は、
前記送信部により送信された前記所在情報を受信する受信部と、
前記第２記憶部に記憶された前記所在情報の中から、前記受信部が受信した所在情報に含まれるノード装置を決定する決定部と、
前記決定部により決定されたノード装置の所在情報を、前記第１ノード装置へ送信する第２送信部と、
を備え、
前記コンテンツ取得部は、前記第２送信部により送信された所在情報に位置するノード装置から、前記コンテンツを取得することを特徴とする請求項１または請求項２に記載の分散システム。
【請求項５】
前記複数のノード装置は、
前記装置群と同階層で接続される第１装置群及び前記装置群の下位階層に位置する第２装置群と、前記第１装置群及び前記第２装置群に対応する所在情報とを、前記装置群情報として分散保存し、
前記決定部は、
前記第２ノード装置の前記第２記憶部に記憶された複数の保存先の中から、前記コンテンツ要求部によりコンテンツを要求したノード装置における前記第２装置群の前記所在情報に含まれる保存先があるか否かを判定する第１判定部を備え、
前記第１判定部が、前記第２装置群の前記所在情報に含まれる保存先があると判定したとき、前記コンテンツ取得部は、前記第１判定部に含まれると判定された保存先から、前記コンテンツを取得することを特徴とする請求項３または請求項４に記載の分散保存システム。
【請求項６】
前記決定部は、
前記第１判定部により、前記第２装置群の前記所在情報に含まれる保存先がないと判定されたとき、前記コンテンツ要求部によりコンテンツを要求したノード装置における第１装置群の前記所在情報に含まれる保存先があるか否かを判定する第２判定部を備え、
前記第２判定部が、前記第１装置群の前記所在情報に含まれる保存先があると判定したとき、前記コンテンツ取得部は、前記第２判定部により含まれると判定された保存先から、前記コンテンツを取得することを特徴とする請求項５に記載の分散保存システム。
【請求項７】
前記決定部は、
前記第１判定部により、前記第２装置群の前記所在情報に含まれる保存先がないと判定されたとき、前記第２ノード装置の前記第２記憶部に記憶された複数の保存先の中から、前記第１装置群と直接接続される保存先があるか否かを判定する第３判定部を備え、
前記第３判定部が、前記第１装置群と直接接続される保存先があると判定したとき、前記コンテンツ取得部は、前記第３判定部により判定された保存先から、前記コンテンツを取得することを特徴とする請求項５に記載の分散保存システム。
【請求項８】
複数の異なるネットワーク間を接続し、所定数の所在情報が割り当てられた少なくとも１つ以上の通信機器から構成される複数の装置群が階層構造により接続され、
前記階層構造により接続された複数の装置群の一部の装置群を表す装置群情報と、前記一部の装置群に対応する所在情報とから構成されるデータファイルを複数のノード装置に分散して保存し、前記複数のノード装置でネットワークを介して送受信が可能な前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて送信する送信ステップと、
前記送信ステップにより送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を取得する取得ステップと、
前記取得ステップにより取得された前記データファイル識別情報に基づいて、前記複数のノード装置のいずれかから前記データファイルを取得するデータファイル取得ステップと、
を含むことを特徴とするデータファイル分散保存方法。
【請求項９】
複数の異なるネットワーク間を接続し、所定数の所在情報が割り当てられた少なくとも１つ以上の通信機器から構成される複数の装置群が階層構造により接続され、
前記階層構造により接続された複数の装置群の一部の装置群を表す装置群情報と、前記一部の装置群に対応する所在情報とから構成されるデータファイルを、ネットワークを介して前記データファイルの送受信が可能な複数のノード装置に分散して保存し、前記複数のノード装置でネットワークを介して送受信が可能な前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて、送信する送信ステップと、
前記送信ステップにより送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を取得する取得ステップと、
前記取得ステップにより取得された前記データファイル識別情報に基づいて、前記複数のノード装置のいずれかから前記データファイルを取得するデータファイル取得ステップと、
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ（Ｐ２Ｐ））型の通信システムに関する。具体的には、通信負荷の少ない通信経路からコンテンツを取得する方法に関する。
【背景技術】
【０００２】
この種のピアツーピア型の通信システムは、複数のノード装置により構成される。各種コンテンツのコンテンツデータは、複数のコンテンツデータの複製データ（以下、「レプリカ」という）として複数のノード装置に分散して保存される。コンテンツデータは、映画及び音楽などのコンテンツデータである。一般的には、各ノード装置間でレプリカを利用可能とした分散保存システムが知られている。これにより、対故障性やアクセスの分散性が高められている。このように分散保存されたレプリカの所在は、例えば特許文献１に開示されるような分散ハッシュテーブル（以下、ＤＨＴ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｈａｓｈ  Ｔａｂｌｅ）という）を利用して効率良く検索可能になっている。
【０００３】
そして、上述のノード装置は、所望のコンテンツデータを取得するとき、当該コンテンツデータのレプリカの所在を検索するためのメッセージ（クエリ）が他のノード装置へ送出される。これにより、当該メッセージは、上記ＤＨＴにしたがって、当該コンテンツデータのレプリカの所在の管理元のノード装置に向かって転送される。そして、上記メッセージを送出したノード装置は、上記管理元のノード装置から上記レプリカの所在を示す情報を取得することになる。これにより、上記メッセージを送出したノード装置は、上記検索に係るコンテンツデータのレプリカを保存しているノード装置にアクセスすることができる。そして、当該レプリカを取得（ダウンロード）することができる。特許文献２には、通信負荷の少ない通信経路を選択するために、コンテンツホルダが所属しているＡＳ（Ａｕｔｏｎｏｍｏｕｓ  Ｓｙｓｔｅｍ）番号が用いられる技術が開示されている。ＡＳ番号は、インターネット内にある複数の組織が運用するネットワークを識別するための番号である。また、ホップ数を用いて経路選択をするものもある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１９７４００号公報
【特許文献２】特開２００６−２７７３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ホップ数を測定しようとしても必ずしもルータが応答するとは限らない。また、ＡＳ番号を用いて、通信経路を決定しようとしても、ＡＳ番号は全ての管理者に割り当てられているとは限らない。そのため、従来では全てのノード装置間の通信負荷を判定するために、インターネットのトポロジー情報を記憶したヒントサーバ（トラッカー）が用いられてきた。しかしながら、コンテンツを取得するたびにヒントサーバにアクセスしているのでは、ヒントサーバへの処理負荷が集中し、ヒントサーバの処理負荷が大きかった。また、ヒントサーバが記憶する通信経路情報が膨大になると、ヒントサーバの記憶容量が不足するという問題があった。
【０００６】
本発明は、上述した問題点を解決するためになされたものである。本発明の目的は、ヒントサーバに記憶する通信経路情報が膨大になった場合であっても、ヒントサーバの処理負荷を低減させることが可能な通信経路情報を分散して保存させる方法を提供することである。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明によれば、複数の異なるネットワーク間を接続し、所定数の所在情報が割り当てられた少なくとも１つ以上の通信機器から構成される複数の装置群が階層構造により接続され、前記階層構造により接続された複数の装置群の一部の装置群を表す装置群情報と、前記一部の装置群に対応する所在情報とから構成されるデータファイルを分散して保存し、ネットワークを介して前記データファイルの送受信が可能な複数のノード装置と、前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて送信する送信部と、前記送信部により送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を取得する取得部と、前記取得部により取得された前記データファイル識別情報に基づいて、前記データファイルが保存された前記複数のノード装置のいずれかから前記データファイルを取得するデータファイル取得部と、を備える第１ノード装置と、から構成されることを特徴とする分散保存システムである。
【０００８】
請求項２に記載の発明によれば、前記分散保存システムは、前記データファイルを識別するデータファイル識別情報と、前記データファイル識別情報が示すデータファイルの前記所在情報とを対応付けて記憶する第１記憶部を備えた管理装置を備え、前記送信部は、前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて前記管理装置へ送信し、前記取得部は、前記送信部により送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を、前記管理装置から取得することを特徴とする。
【０００９】
請求項３に記載の発明によれば、前記コンテンツ分散保存システムは、前記複数のノード装置に分散して保存された前記コンテンツデータの保存先のノード装置の前記所在情報を複数記憶する第２記憶部を備えた第２ノード装置を備え、前記第１ノード装置は、前記複数のノード装置に分散して保存された複数のコンテンツデータの中から、所望のコンテンツを要求するコンテンツ要求部と、前記コンテンツ要求部により要求されたコンテンツデータの所在情報を前記第２ノード装置から取得するコンテンツ取得部と、前記コンテンツ取得部により取得された前記所在情報の中から、前記コンテンツ要求部によりコンテンツを要求したノード装置における前記装置群情報の前記所在情報に含まれるノード装置を決定する決定部と、前記コンテンツ取得部は、前記決定部により決定されたノード装置から、前記コンテンツを取得することを特徴とする。
【００１０】
請求項４に記載の発明によれば、前記コンテンツ分散保存システムは、前記複数のノード装置に分散して保存された前記コンテンツデータの保存先のノード装置の前記所在情報を複数記憶する第２記憶部を備えた第２ノード装置を備え、前記第１ノード装置は、前記複数のノード装置に分散して保存された複数のコンテンツデータの中から、所望のコンテンツデータを要求するコンテンツ要求部を備え、前記送信部は、前記コンテンツ要求部によりコンテンツデータを要求したノード装置における前記装置群情報の前記所在情報を前記第２ノード装置へ送信し、前記第２ノード装置は、前記送信部により送信された前記所在情報を受信する受信部と、前記第２記憶部に記憶された前記所在情報の中から、前記受信部が受信した所在情報に含まれるノード装置を決定する決定部と、前記決定部により決定されたノード装置の所在情報を、前記第２ノード装置へ送信する第２送信部と、を備え、前記コンテンツ取得部は、前記第２送信部により送信された所在情報に位置するノード装置から、前記コンテンツを取得することを特徴とする。
【００１１】
請求項５に記載の発明によれば、前記複数のノード装置は、前記装置群と同階層で接続される第１装置群及び前記装置群の下位階層に位置する第２装置群と、前記第１装置群及び前記第２装置群に対応する所在情報とを、前記装置群情報として分散保存し、前記決定部は、前記第２ノード装置の前記第２記憶部に記憶された複数の保存先の中から、前記コンテンツ要求部によりコンテンツを要求したノード装置における前記第２装置群の前記所在情報に含まれる保存先があるか否かを判定する第１判定部を備え、前記第１判定部が、前記第２装置群の前記所在情報に含まれる保存先があると判定したとき、前記コンテンツ取得部は、前記第１判定部に含まれると判定された保存先から、前記コンテンツを取得することを特徴とする。
【００１２】
請求項６に記載の発明によれば、前記決定部は、前記第１判定部により、前記第２装置群の前記所在情報に含まれる保存先がないと判定されたとき、前記コンテンツ要求部によりコンテンツを要求したノード装置における第１装置群の前記所在情報に含まれる保存先があるか否かを判定する第２判定部を備え、
前記第２判定部が、前記第１装置群の前記所在情報に含まれる保存先があると判定したとき、前記コンテンツ取得部は、前記第２判定部により含まれると判定された保存先から、前記コンテンツを取得することを特徴とする。
【００１３】
請求項７に記載の発明によれば、前記決定部は、前記第１判定部により、前記第２装置群の前記所在情報に含まれる保存先がないと判定されたとき、前記第２ノード装置の前記第２記憶部に記憶された複数の保存先の中から、前記第１装置群と直接接続される保存先があるか否かを判定する第３判定部を備え、前記第３判定部が、前記第１装置群と直接接続される保存先があると判定したとき、前記コンテンツ取得部は、前記第３判定部により判定された保存先から、前記コンテンツを取得することを特徴とする。
【００１４】
請求項８に記載の発明によれば、複数の異なるネットワーク間を接続し、所定数の所在情報が割り当てられた少なくとも１つ以上の通信機器から構成される複数の装置群が階層構造により接続され、前記階層構造により接続された複数の装置群の一部の装置群を表す装置群情報と、前記一部の装置群に対応する所在情報とから構成されるデータファイルを複数のノード装置に分散して保存し、前記複数のノード装置でネットワークを介して送受信が可能な前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて送信する送信ステップと、前記送信ステップにより送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を取得する取得ステップと、前記取得ステップにより取得された前記データファイル識別情報に基づいて、前記複数のノード装置のいずれかから前記データファイルを取得するデータファイル取得ステップと、を含むことを特徴とするデータファイル分散保存方法である。
【００１５】
請求項９に記載の発明によれば、複数の異なるネットワーク間を接続し、所定数の所在情報が割り当てられた少なくとも１つ以上の通信機器から構成される複数の装置群が階層構造により接続され、前記階層構造により接続された複数の装置群の一部の装置群を表す装置群情報と、前記一部の装置群に対応する所在情報とから構成されるデータファイルを、ネットワークを介して前記データファイルの送受信が可能な複数のノード装置に分散して保存し、前記複数のノード装置でネットワークを介して送受信が可能な前記データファイルを要求する要求メッセージを、前記要求メッセージを送信する前記ノード装置の所在情報を含ませて、送信する送信ステップと、前記送信ステップにより送信された要求メッセージに含まれた所在情報に基づいて、前記所在情報に対応するデータファイル識別情報を取得する取得ステップと、前記取得ステップにより取得された前記データファイル識別情報に基づいて、前記複数のノード装置のいずれかから前記データファイルを取得するデータファイル取得ステップと、をコンピュータに実現させるためのプログラムである。
【発明の効果】
【００１６】
請求項１に記載の発明によれば、取得部は、送信部により送信された要求メッセージに含まれた所在情報に基づいて、所在情報に対応するデータファイル識別情報を取得する。データファイル取得部は、取得部により取得されたデータファイル識別情報に基づいて、データファイルが保存された複数のノード装置のいずれかからデータファイルを取得する。この結果、階層構造により接続された複数の装置群の接続態様を、複数のデータファイルとして、複数のノード装置に分散して保存することができる。そのため、ヒントサーバのへ処理負荷が集中することを防ぐことができる。
【００１７】
請求項２に記載の発明によれば、分散保存システムは、データファイルを識別するデータファイル識別情報と、データファイル識別情報が示すデータファイルの所在情報とを対応付けて記憶する第１記憶部を備えた管理装置を備える。取得部は、送信部により送信された要求メッセージに含まれた所在情報に基づいて、所在情報に対応するデータファイル識別情報を、管理装置から取得する。この結果、分散保存システムＳに管理装置が備えられることで、管理装置からデータファイル識別情報を取得することができる。
【００１８】
請求項３に記載の発明によれば、決定部は、コンテンツ取得部により取得された所在情報の中から、コンテンツ要求部によりコンテンツを要求したノード装置における装置群情報の所在情報に含まれるノード装置を決定する。コンテンツ取得部は、決定部により決定されたノード装置からから、コンテンツを取得する。この結果、複数のノード装置に分散して保存されたデータファイルに基づいて、通信負荷の少ない通信経路を決定することができる。
【００１９】
請求項４に記載の発明によれば、第１ノード装置の送信部は、コンテンツ要求部によりコンテンツデータを要求したノード装置における装置群情報の所在情報を第２ノード装置へ送信する。第２ノード装置の決定部は、第２記憶部に記憶された所在情報の中から、受信部が受信した所在情報に含まれるノード装置を決定する。第１ノード装置のコンテンツ取得部は、第２送信部により送信された所在情報に位置するノード装置から、コンテンツを取得する。従って、第２ノード装置により決定されたノード装置の所在情報が第１ノード装置へ送信されるだけである。この結果、第１ノード装置と第２ノード装置との間の情報通信量を低減できるとともに、通信負荷の少ない通信経路を決定することができる。
【００２０】
請求項５に記載の発明によれば、装置群と同階層で接続される第１装置群及び前記装置群の下位階層に位置する第２装置群と、前記第１装置群及び前記第２装置群に対応する所在情報とを、装置群情報として分散保存する。第１判定部が、第２装置群の所在情報に含まれる保存先があると判定したとき、コンテンツ取得部は、第１判定部に含まれると判定された保存先から、コンテンツを取得する。この結果、同じ第２装置群に所属する保存先からコンテンツを取得することができるため、経由する装置群の数を最小限にすることができる。
【００２１】
請求項６に記載の発明によれば、第２判定部が、第１装置群の所在情報に含まれる保存先があると判定したとき、コンテンツ取得部は、第２判定部により含まれると判定された保存先から、コンテンツを取得する。この結果、同じ第１装置群に接続される保存先からコンテンツを取得することができるため、経由する装置群が、第１装置群を構成する通信機器内で抑えることができる。
【００２２】
請求項７に記載の発明によれば、第３判定部が、第１装置群と直接接続される保存先があると判定したとき、コンテンツ取得部は、第３判定部により判定された保存先から、コンテンツを取得する。この結果、第１装置群と直接接続される保存先からコンテンツを取得することができるため、第１装置群の下位に位置する下位装置群を経由しなくてもよい。したがって、経由する装置群の数を減らすことができる。
【００２３】
請求項８及び請求項９に記載の発明によれば、取得ステップは、送信ステップにより送信された要求メッセージに含まれた所在情報に基づいて、所在情報に対応するデータファイル識別情報を取得する。データファイル取得ステップは、取得ステップにより取得されたデータファイル識別情報に基づいて、複数のノード装置のいずれかから前記データファイルを取得する。保存された前記複数のノード装置のいずれかからデータファイルを取得する。この結果、階層構造により接続された複数の装置群の接続態様を、複数のデータファイルとして、複数のノード装置に分散して保存することができる。そのため、ヒントサーバのへ処理負荷が集中することを防ぐことができる。
【図面の簡単な説明】
【００２４】
【図１】本実施形態のコンテンツ分散保存システムＳにおける各ノード装置Ｎｎの接続態様の一例を示す図である。
【図２】一般的なインターネット等のネットワーク構造の具体例を示す説明図である。
【図３】ヒントサーバ１７に記憶されるトポロジー情報の概念図である。
【図４】接続関係情報コンテンツを示す概念図である。
【図５】、図３に示すノード装置２１ａが記憶する装置群情報の一例を示す概念図である。
【図６】ノードＮ２が保持するルーティングテーブルの一例を示す概念図である。
【図７】ＤＨＴのＩＤ空間の一例を示す概念図である。
【図８】コンテンツ分散保存システムＳへの参加時におけるルーティングテーブルの生成手順の一例を示す概念図である。
【図９】ＩＰアドレス範囲と対応付けられた接続情報コンテンツＩＤが、コンタクトノードに記憶される概念図である。
【図１０】各ノードＮｎ間を転送するメッセージの様子を示す概念図である。
【図１１】ノードＮ２が保持するインデックスキャッシュの一例を示す図である。
【図１２】ルートノードに記憶される保持ノード２２ａ〜２２ｅのインデックスキャッシュにおける装置群情報の詳細を示す概念図である。
【図１３】ノード装置Ｎｎの電気的構成を示す概念図である。
【図１４】ノード装置Ｎｎのメイン処理動作を示すフローチャートである。
【図１５】ノード装置Ｎｎの保持ノード距離決定処理を実行するフローチャートである。
【図１６】ノード装置Ｎｎのコンテンツ取得処理を実行するフローチャートである。
【図１７】ノード装置Ｎｎの接続関係情報コンテンツ取得処理を実行するフローチャートである。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の最良の実施形態を図面に基づいて説明する。
【００２６】
［分散保存システムの構成］
図１は、本実施形態の分散保存システムＳを示す。分散保存システムＳは、多数ノード装置Ｎｎ（ｎ＝１，２，３・・・の何れか）から構成される。
【００２７】
図１の下部枠１０１内に示すように、一般的なインターネット等のネットワーク８は、ＩＸ（Ｉｎｔｅｒｎｅｔ  Ｅｘｃｈａｎｇｅ）３、ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）４ａ及び４ｂ、ＤＳＬ（Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）回線事業者の装置５ａ及び５ｂ、ＦＴＴＨ（Ｆｉｂｅｒ  Ｔｏ  Ｔｈｅ  Ｈｏｍｅ）回線事業者の装置６、通信回線７等によって構築されている。例えば、通信回線７は、電話回線や光ケーブル等である。なお、図１の例におけるネットワーク８には、データ（パケット）を転送するためのルータが、適宜挿入されているが図示を省略している。
【００２８】
ネットワーク８は、多数のノード装置Ｎｎ（ｎ＝１，２，３・・・の何れか）から構成される。多数のノード装置Ｎｎは、ルータ等を介してインターネットで接続されている。また、各ノード装置Ｎｎには、固有の製造番号およびＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスが割り当てられている。本実施形態の分散保存システムＳは、ピアツーピア方式のネットワークシステムである。図１の上部枠１００内に示すように、ピアツーピア方式のネットワークシステムは、これらのノード装置Ｎｎのうち、何れか複数のノード装置Ｎｎの参加により形成される。本実施形態における参加とは、ノード装置Ｎｎが分散保存システムＳと接続し、コンテンツデータの送受信をすることを意味している。
【００２９】
なお、図１の上部枠１００内に示すＰ２Ｐネットワーク９は、既存のネットワーク８を用いて形成されたＰ２Ｐネットワークである。Ｐ２Ｐネットワークは、図１の上部枠１００内の複数のノード装置を仮想的にリンクさせることで構築される。Ｐ２Ｐネットワーク９は、オーバーレイネットワーク、または、論理的なネットワークである。Ｐ２Ｐネットワーク９は、特定のアルゴリズム、により構築される。例えば、特許文献の特開２００６−１９７４００に記載されたＤＨＴを利用したアルゴリズムにより、Ｐ２Ｐネットワーク９は構築される。
【００３０】
そして、Ｐ２Ｐネットワーク９を構成している各ノード装置Ｎｎには、ノードＩＤが割り当てられている。ノードＩＤは、所定桁数からなる固有の識別情報である。また、具体的には、ノードＩＤは、各ノード装置Ｎｎに個別に割り当てられたＩＰアドレス或いは製造番号を基に、ノードＩＤは生成される。ノードＩＤは、上述のＩＰアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。例えば、ＳＨＡ−１等のハッシュ関数により、ｂｉｔ長が１６０ｂｉｔのハッシュ値が生成される。各ノードＩＤは、ある一つのＩＤ空間に偏りなく分散して配置されることになる。
【００３１】
図１に示すように、分散保存システムＳは、コンテンツ投入サーバ１６とヒントサーバ１７とを備える。コンテンツ投入サーバ１６は、新しいコンテンツデータを分散保存システムＳ内に投入するためのサーバである。コンテンツ投入サーバ１６は、コンテンツデータを複製したレプリカを、分散保存システムＳに投入する。
【００３２】
ヒントサーバ１７は、インターネットに接続される上位装置群と下位装置群とのトポロジー情報を記憶する。ヒントサーバに記憶されるトポロジー情報についての詳細は後述する。
【００３３】
分散保存システムＳへの参加は、現在Ｐ２Ｐネットワーク９に参加していないノード装置Ｎｎが、現在参加している任意のノード装置Ｎｎへ参加要求を示す参加メッセージを送信する。参加メッセージを受信するノード装置は、分散保存システムＳに常時参加しているノード装置である。本実施例では、常時参加しているノード装置をコンタクトノードと称する。例えば、Ｐ２Ｐネットワーク９に参加していないノード装置から、分散保存システムＳのコンタクトノードへ参加メッセージが送信される。コンタクトノードは、参加メッセージの送信元であるノード装置へＰ２Ｐネットワーク９に参加するために必要な情報を送信する。上述の必要な情報の詳細は後述する。
【００３４】
図２は、一般的なインターネット等のネットワーク構造の具体例を示す。ＩＸ（Ｉｎｔｅｒｎｅｔ  ｅＸｃｈａｎｇｅ）３は、ネットワークを介して複数の装置群を接続する。ＩＸ３を頂点として上位装置群１３ａ〜１３ｃが、ＩＸを介して接続される。ＩＸ３を頂点として上位装置群１３ａ〜１３ｃの下位には、下位装置群１４ａ及び１４ｆが接続される。上位装置群１３ａ〜１３ｃと下位装置群１４ａ及び１４ｆとは、複数のルータ１１から構成される。
【００３５】
各装置群を構成するルータ１１は、任意の管理者により管理される。各ルータ１１には、所定範囲のＩＰアドレスが割り当てられている。上位装置群１３ａ〜１３ｃを構成する複数のルータに対応するＩＰアドレスが、上位装置群１３ａ〜１３ｃのＩＰアドレス範囲として設定される。同様に、下位装置群１４ａ及び１４ｆを構成する複数のルータのＩＰアドレスが、下位装置群１４ａ及び１４ｆのＩＰアドレス範囲として設定される。
【００３６】
図２に示すようにＩＸ３を頂点として、上位装置群１３ａ〜１３ｃまたは下位装置群１４ａ及び１４ｆの下位には、多数のノード装置１２がルータ１１を介して接続される。ノード装置１２は、局舎モデム１５を介してルータ１１と接続される。尚、ルータ１１とノード装置１２とは、直接接続されても良い。
【００３７】
［トポロジー情報の説明］
図３は、ヒントサーバ１７に記憶されるトポロジー情報の概念図である。トポロジー情報は、上位装置群及び下位装置群との接続態様を表す。具体的には、トポロジー情報は、接続関係情報とＩＰアドレス範囲情報とから構成される。接続関係情報は、インターネットを構成する複数の上位装置群または下位装置群の接続関係を表す情報である。また、ＩＰアドレス範囲情報は、上位装置群または下位装置群夫々に対応するＩＰアドレス範囲である。例えば、接続関係情報は、図３の上位装置群１３ａに接続される上位装置群が、上位装置群１３ｂ、１３ｃであることを示す情報である。また、上位装置群１３ａに接続される下位装置群が、下位装置群１４ａ、１４ｂであることを示す情報である。ユーザノードがコンテンツを取得するとき、トポロジー情報と、ユーザノードのＩＰアドレスとに基づいて、装置群間の経由が最小の経路である保持ノード装置からコンテンツを取得することができる。尚、本実施形態では、ユーザノードは、ユーザからの指示にしたがってコンテンツ所在問合せメッセージを生成するノード装置Ｎｎを表す。また、保持ノードは、コンテンツデータが記憶されるノード装置Ｎｎを表す。
【００３８】
[トポロジー情報のコンテンツ化]
図４は、接続関係情報コンテンツを示す概念図である。接続関係情報コンテンツは、上位情報コンテンツと、下位情報コンテンツとから構成される。上位情報コンテンツは、上位装置群情報と、近接装置群情報とから構成される。近接装置群情報は、上位装置群と同階層で接続される上位装置群を表す情報である。下位情報コンテンツは、上位装置群情報と、下位装置群情報とから構成される。下位装置群情報は、上位装置群情報の下位に位置する下位装置群を表す情報である。
【００３９】
図４（ａ）は、上位情報コンテンツの一例を示す概念図である。また、図４（ｂ）は、下位情報コンテンツの一例を示す概念図である。具体的には、図４（ａ）及び図４（ｂ）に示すように、上位装置群情報、近接装置群情報、下位装置群情報それぞれには、装置群識別情報とルータ識別情報とＩＰアドレス範囲とが含まれる。装置群識別情報は、例えば各装置群を管理する管理者名である。ルータ識別情報は、各装置群に割り当てられたルータ１２を識別するための情報である。ＩＰアドレス範囲は、各装置群に割り当てられたＩＰアドレス範囲である。上位装置群は存在するが、その上位装置群の下位に位置する下位装置群が存在しない場合、図４に示す下位装置群情報には、「Ｎｕｌｌ」が記憶される。例えば、図４（ｂ）に示すように、上位装置群１３ａと、下位装置群１４ａ及び下位装置群１４ｂとを識別する装置群識別情報が、接続関係情報コンテンツに含まれる。また、上位装置群１３ａと、下位装置群１４ａ及び下位装置群１４ｂとに夫々対応するＩＰアドレス範囲が、接続関係情報コンテンツとして生成される。接続情報コンテンツには、後述する一般的なコンテンツデータと同じようにコンテンツＩＤが割り当てられる。詳細な説明は後述する。
【００４０】
［分散保存システムのコンテンツ取得動作説明］
図１または図２に示す各ノードＮｎは、夫々、ＤＨＴを用いたルーティングテーブルを保持している。このルーティングテーブルは、分散保存システムＳ上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ＩＤ空間内で適度に離れたノード装置ＮｎのノードＩＤ、ＩＰアドレス及びポート番号を含むノード情報が複数登録されている。本実施形態では、ノード情報は、メッセージ送信先候補の「ノードＩＤ」と「ＩＰアドレス及びポート番号」と「装置群情報」とを含む。尚、「ＩＰアドレスまたはポート番号」は、アドレス情報の一例である。「装置群情報」は、ノード装置Ｎｎ自身が直接接続される下位装置群、または、当該直接接続される下位装置群の上位装置群を表す。図５は、図３に示すノード装置２１ａが記憶する装置群情報の一例を示す概念図である。図３に示すように、ノード装置２１ａと直接接続される下位装置群は、下位装置群１４ａである。また、ノード装置２１ａは、下位装置群１４ａを介して上位装置群１３ａと接続する。従って、図５に示すように、ノード装置２１ａの装置群情報として、下位装置群１４ａと上位装置群１３ａとが登録される。各ノード装置は、各ノード装置が接続する装置群情報を記憶する。尚、各ノード装置Ｎｎが装置群情報を取得する詳細な説明は後述する。
【００４１】
分散保存システムＳに接続している１台のノードは、必要最低限のノードＮｎのノード情報をルーティングテーブルとして記憶している。各ノードＮｎ間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードＮｎについてのノード情報が取得される。本実施形態では、ルーティングテーブルを用いて、上述した他のノード装置Ｎｎへ各種メッセージを送信、または転送するとき、メッセージの送信元、または転送元のノード装置Ｎｎのノード情報が含まれて送信される。このメッセージを受信した各ノード装置Ｎｎは、各ノード装置Ｎｎが保持するルーティングテーブル及びインデックスキャッシュに、受信したノード情報の登録および更新を行う。このような構成により、各ノード装置Ｎｎは、他のノード装置のノード情報を把握することができる。ルーティングテーブル及びインデックスキャッシュの登録及び更新を行う方法の詳細は後述する。
【００４２】
[ルーティングテーブルの概要]
以下、分散保存システムＳにおける各ノード装置Ｎｎの機能を説明する。各ノード装置Ｎｎが記憶するルーティングテーブルについて詳細に説明する。ここで、図６及び図７を参照して、ルーティングテーブルについて詳しく説明する。
【００４３】
図６は、ノードＮ２が保持するルーティングテーブルの一例である。図７は、ＤＨＴのＩＤ空間の一例を示す概念図である。なお、図６及び図７の例においては、説明の便宜上、ノードＩＤのｂｉｔ長を２ｂｉｔ×３桁＝６ｂｉｔとしている。そのため、各桁は、２ｂｉｔで表された４進数（０〜３の整数）で表されている。各桁を２ｂｉｔよりも長いｂｉｔ長を用いても良い。例えば、各桁を４ｂｉｔで表して、０〜ｆの１６進数で表現しても良い。
【００４４】
図６は、ノードＮ２のルーティングテーブルを示す概念図である。図６に示すように、ルーティングテーブルは、レベル１（一段目）〜レベル３（三段目）の複数レベルから構成される。各エリアには、ノード情報が登録される。ノード情報として、ノードＩＤと、ノードＩＤに対応するノードＮ２のＩＰアドレス及びポート番号と、ノードＮ２の装置群情報とが対応付けられて登録される。
【００４５】
各レベルにおける各エリアは、ノードＩＤ空間を分割することにより決定されるエリアである。図７は、ノードＩＤを用いて各エリアが決定される概念図である。ノードＩＤ空間は、各桁が４進数（０〜３の整数）で表される３桁の数字により構成される。図７に示すように、レベル１のエリアとして、ノードＩＤ空間が４つ（４進数のため）に分割される。具体的にレベル１のエリアは、０ＸＸのエリアと、１ＸＸのエリアと、２ＸＸのエリアと、３ＸＸのエリアとに分割される。０ＸＸのエリアは、'０００'〜'０３３'のノードＩＤが存在するエリアである。１ＸＸのエリアは、'１００'〜'１３３'のノードＩＤが存在するエリアである。２ＸＸのエリアは、'２００'〜'２３３'のノードＩＤが存在するエリアである。３ＸＸのエリアは、'３００'〜'３３３'のノードＩＤが存在するエリアである。
【００４６】
また、レベル２では、レベル１のエリアが更に４つ（４進数のため）に分割される。つまり、０ＸＸ〜３ＸＸの各エリアが更に４つに分割される。０ＸＸのエリアと１ＸＸのエリアと２ＸＸのエリアと３ＸＸのエリアとが夫々４分割される。例えば、１ＸＸのエリアの場合、'１００'〜'１０３'のノードＩＤが存在するエリアが１０Ｘのエリアとして分割される。また、'１１０'〜'１１３'のノードＩＤが存在するエリアが１１Ｘのエリアとして分割される。'１２０'〜'１２３'のノードＩＤが存在するエリアが１２Ｘのエリアとして分割される。'１３０'〜'１３３'のノードＩＤが存在するエリアが１３Ｘのエリアとして分割される。
【００４７】
以降、ノードＮ２のノードＩＤが'１２２'の場合を例として説明する。図６に示すように、ルーティングテーブルのレベル１における１ＸＸのエリアは、ノードＮ２のノードＩＤが存在するエリアである。そのため、レベル１の１ＸＸのエリアには、ノードＮ２自身のノードＩＤと、ＩＰアドレスまたはポート番号と、装置群情報とが登録される。本実施形態では、ノードＮ２自身のノードＩＤとＩＰアドレスまたはポート番号と装置群情報とを登録したが、ノードＩＤとＩＰアドレスまたはポート番号と装置群情報とはノードＮ２自身のものであるので登録されなくてもよい。ノードＮ２のノードＩＤが存在しないエリアには、夫々、他の任意のノードＮｎのノードＩＤと、ＩＰアドレスまたはポート番号と装置群情報とが登録されている。ノードＮ２のノードＩＤが「１２２」の場合、ノードＮ２のノードＩＤが存在しないエリアは、０ＸＸのエリアと、２ＸＸのエリアと、３ＸＸのエリアとである。
【００４８】
また、ルーティングテーブルのレベル２における１２Ｘのエリアは、ノードＮ２のノードＩＤが存在するエリアである。そのため、レベル２の１２Ｘのエリアには、ノードＮ２自身のノードＩＤと、ＩＰアドレスまたはポート番号と、装置群情報とが登録される。ノードＮ２のノードＩＤが存在しないエリアには、レベル１と同様に、他の任意のノードＮｎのノードＩＤと、ＩＰアドレスまたはポート番号と、装置群情報とが登録されている。本実施形態では、ノードＮ２自身のノードＩＤとＩＰアドレスまたはポート番号と装置群情報とを登録したが、ノードＩＤとＩＰアドレスまたはポート番号と装置群情報とはノードＮ２自身のものであるので登録されなくてもよい。
【００４９】
更に、ルーティングテーブルのレベル３には、図６に示すように、ノードＩＤが'１２０'〜'１２２'である。そのため、レベル３の１２２のエリアには、ノードＮ２自身のノードＩＤと、ＩＰアドレスまたはポート番号と、装置群情報とが登録される。本実施形態では、ノードＮ２自身のノードＩＤとＩＰアドレスまたはポート番号と装置群情報とを登録したが、ＩＰアドレスまたはポート番号、装置群情報はノードＮ２自身のものであるので、登録されなくても良い。
【００５０】
なお、図６及び図７の例では、ノードＩＤのｂｉｔ長は３桁×２ｂｉｔである。例えば、ノードＩＤのｂｉｔ長を１６桁×４ｂｉｔとした場合、１６レベル分のテーブルが必要となる。図６および図７に示すように、本実施形態におけるルーティングテーブルでは、レベルの数値が大きくなるほど、エリアが狭くなっていく。そして、このようなルーティングテーブルは、例えば、未参加のノード装置が分散保存システムＳに参加する際に生成される。ここで、図８を参照して、分散保存システムＳへの参加時におけるルーティングテーブルの生成手順について詳しく説明する。
【００５１】
図８は、分散保存システムＳへの参加時におけるルーティングテーブルの生成手順の一例を示す概念図である。以降、未参加のノードＮ８がコンテンツ分散保存システムＳに参加する例を用いて説明する。ノードＩＤのノードＩＤは、'１２３'とする。
【００５２】
図８に示すように、未参加のノードＮ８が分散保存システムＳに参加する場合、コンタクトノードのＩＰアドレスを用いてコンタクトノードに参加メッセージが送信される。参加メッセージは、ノードＮ８のノード情報を含む。コンタクトノードにメッセージを送信するためのＩＰアドレスを、ノード装置Ｎ８が事前に知っているものとする。例えば、Ｐ２Ｐネットワークに参加するために必要なソフトウェアをダウンロードするときに、コンタクトノードのＩＰアドレスは配布される。参加メッセージを受信したコンタクトノードは、コンタクトノードのルーティングテーブルを参照する。具体的には、ルーティングテーブルにおけるレベル１のテーブルに登録されているノード情報が参照される。レベル１に登録されているノード情報を含む返信メッセージを、コンタクトノードはノードＮ８へ返信する。さらにコンタクトノードは、受信された参加メッセージに含まれるノードＩＤと、ルーティングテーブルに登録された他のノードＮｎのノードＩＤと比較する。比較結果に基づいてルーティングテーブルから、一つのノードＮｎが選定される。例えば、参加メッセージに含まれるノードＩＤと最も近いノードＩＤであるノードＮ３５が選定される。最も近いノードＩＤは、上位桁がより多く一致するＩＤ、または、比較されるノードＩＤとの差が最も小さいノードＩＤである。選定されたノード装置が、ノード装置Ｎ２である例を用いて説明する。このとき、参加メッセージには、次に返信させるテーブルの段数を示す情報が含められる。上記例では、レベル２が参加メッセージに含められる。
【００５３】
参加メッセージを受信したノードＮ３５は、ノードＮ３５のルーティングテーブルのレベル２に登録されているノード情報を含む返信メッセージを、ノードＮ８に対して返信する。さらに、ノードＮ３５は、ルーティングテーブルから選定されたノードＮ２へ、上記参加メッセージを転送する。このとき、参加メッセージには、次に返信させるべきテーブルの段数として、レベル３を示す情報が含められる。
【００５４】
参加メッセージを受信したノードＮ２は、ノードＮ２のルーティングテーブルにおけるレベル３に登録されているノード情報を含む返信メッセージを、ノードＮ８に対して返信する。以上のようにして参加メッセージは、ノードＩＤをキーとしてＤＨＴルーティングに基づいて転送される。そのため、未参加のノードＮ８のノードＩＤに一番近いノードＩＤを有するノードＮｎまで転送される。
【００５５】
そして、ノードＮ８は、各ノードＮｎから受信した返信メッセージに含まれるノード情報を用いてルーティングテーブルを生成する。具体的には、コンタクトノードから送信されたノード情報が、ノードＮ８のルーティングテーブルのレベル１に登録される。ノードＮ３５から送信されたノード情報が、ノードＮ８のルーティングテーブルのレベル２に登録される。ノードＮ２から送信されたノード情報が、ノードＮ８のルーティングテーブルのレベル３に登録される。
【００５６】
こうして、ノードＮ８は、分散システムＳへの参加が完了することになる。本実施形態では、上述したような参加メッセージや、後述するクエリ等の各種メッセージは、メッセージの送信元、または、転送元のノードＮｎのノード情報を含む。そのため、メッセージを受信したノード装置Ｎｎは、ノード装置Ｎｎのルーティングテーブルに、ノード情報を登録及び更新する。
【００５７】
本実施形態では、通常の参加処理に加えて、参加メッセージに含まれたＩＰアドレスに基づいて、参加メッセージを送信したノード装置の装置群情報を決定することができる。決定する方法について具体的に説明する。図９は、ＩＰアドレス範囲と対応付けられた接続関係情報コンテンツＩＤが、コンタクトノードに記憶される概念図である。図９に示す用に、コンタクトノードには、各ＩＰアドレス範囲に含まれるＩＰアドレスを有する接続関係情報コンテンツＩＤが記憶される。例えば、ノード２１ａのIPアドレスが、「１０．１０．１０．８９」の場合、図９のアドレス範囲「１０．１０．１０．１０〜１０．１０．１０．９０」に含まれるため、接続情報コンテンツＩＤ「ａａａ」と「ｂｂｂ」とが取得される。決定されたコンテンツＩＤは、参加メッセージを送信したノード装置Ｎｎへ送信される。上述した処理を行うことで、参加ノード装置は、参加ノード装置自身が接続される装置群情報を把握することができる。図９に示す情報は、コンテンツ投入サーバ１６に記憶されても良い。その場合、コンテンツ投入サーバ１６に、ノード装置ＮｎのＩＰアドレスが送信される。
【００５８】
図１０は、各ノード装置Ｎｎ間を転送するメッセージの様子を示す概念図である。具体的には、図１０は、ノード８からの参加メッセージがノードＮ３１、ノードＮ３５、ノードＮ２間を転送する概念図である。
【００５９】
各ノードＮｎ間を転送するメッセージは、メッセージ送信元のノードＩＤと、メッセージの内容と、送信元または転送元のノード情報とを含む。メッセージ送信元のノードＩＤは、メッセージを送信した送信元のノードＮｎのノードＩＤである。メッセージの内容は、メッセージの目的を表す「参加（ＪＯＩＮ）」、「パブリッシュ」、「クエリ」等である。ノード情報は、送信元または転送元のノードＮｎのノードＩＤと、ＩＰアドレスまたはポート番号と、装置群情報とを含んで構成される。なお、'メッセージの内容'は、参加メッセージの場合、テーブルの登録情報の返信を要求する旨の情報等が含まれている。また、パブリッシュ（登録）メッセージまたはクエリの場合、パブリッシュ（登録）やクエリ（要求）の対象となるコンテンツデータのコンテンツＩＤが含まれている。
【００６０】
図１０に示す例の場合、ノードＮ３５は、コンタクトノードのノードＮ３１から参加メッセージを受信する。そして、ノードＮ３５は、参加メッセージに含まれる送信元または転送元のノードＮ３１のノード情報をノードＮ３５のルーティングテーブルに登録する。このとき、ノードＮ３５のルーティングテーブルにノードＮ３１のノード情報が既に登録されている場合、登録済みノードＮ３１のノード情報は、受信したノード情報に基づいて更新される。
【００６１】
同様に、ノードＮ３５から参加メッセージを受信したノードＮ２は、参加メッセージに含まれる送信元または転送元のノードＮ３５のノード情報をノードＮ２のルーティングテーブルに登録、或いは更新する。以上の手順に従い、ルーティングテーブルは、ノード情報を登録、または、更新される。
【００６２】
このようなＤＨＴを用いたルーティングテーブルについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００６３】
[インデックスキャッシュ]
分散保存システムＳにおいては、内容の異なる様々なコンテンツデータのレプリカが所定のファイル形式で複数のノード装置Ｎｎに分散保存されている。コンテンツは、映画および動画、または音楽等である。各ノード装置Ｎｎ間でレプリカが送受信可能になっている。
【００６４】
これらコンテンツデータのレプリカには、夫々、コンテンツ名（タイトル）と、コンテンツＩＤとを含む情報が付与されている。コンテンツ名は、コンテンツデータのタイトルであっても良い。また、コンテンツＩＤは、コンテンツ毎に固有のコンテンツ識別情報である。例えば、コンテンツＩＤは、コンテンツ名＋任意の数値が、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化されて生成される。そのため、コンテンツＩＤは、ノードＩＤと同一のＩＤ空間に配置されることとなる。あるいは、システム管理者が、コンテンツデータ毎に一意のＩＤ値を付与しても良い。ＩＤ値は、ノードＩＤと同一ビット長でも良い。コンテンツ名とそのコンテンツＩＤとの対応が記載されたコンテンツカタログリストが、全ノードＮｎに配布される。コンテンツカタログリストには、コンテンツ名と、コンテンツＩＤと、そのコンテンツＩＤが表すレプリカの公開開始日時及び公開終了日時とが対応付けられて記載されている。尚、コンテンツカタログリストの詳細は、特開２００８−１２９６９４号公報に記載されているため、詳細な説明は省略する。
【００６５】
上述のように分散保存されているレプリカの所在は、インデックス情報により管理される。インデックス情報は、レプリカが保存されたノード装置Ｎｎの情報と、レプリカのコンテンツＩＤとを組み合わせた情報から構成される。インデックス情報は、レプリカの所在を管理しているノード装置Ｎｎにより記憶される。レプリカの所在を管理しているノード装置を「ルートノード」とする。本実施形態のルートノードは、本発明の第２ノード装置の一例である。つまり、コンテンツデータのレプリカを保存しているノード装置Ｎｎのノード情報は、他のノード装置Ｎｎからの問い合わせに応じて提供可能なようにルートノードにより管理されている。コンテンツのレプリカを保存しているノード装置Ｎｎを「保持ノード」とする。このようなルートノードには、コンテンツＩＤと最も近いノードＩＤを有するノードＮｎが選定される。例えば、コンテンツＩＤと最も近いとは、上位桁がより多く一致する、または、比較結果の差が最も小さいことである。
【００６６】
図１１は、ノードＮ２が保持するインデックスキャッシュの一例を示す概念図である。ノードＮ２は、コンテンツ１、コンテンツ２、コンテンツ３・・・・・のルートノードである。ノードＮ２は、図１１に示す保持ノードＮｎからパブリッシュメッセージを受信する。そして、ノードＮ２は、パブリッシュメッセージに含まれるコンテンツＩＤとノード情報とを、インデックス情報としてインデックスキャッシュに登録する。図１１では、コンテンツ１の保持ノードとして、ノード２１ａとノード２１ｂとノード２１ｃとノード２１ｄとノード２１ｅとがインデックス情報に記載されている。それぞれの保持ノードに対応するノード情報がインデックス情報に含まれる。
【００６７】
あるノード装置Ｎｎのユーザが、所望するコンテンツデータのレプリカを取得したい場合、レプリカの取得を望むユーザは、クエリを生成する。ユーザがレプリカの取得を望むノード装置Ｎｎを、「ユーザノード」とする。本実施形態のユーザノードは、本発明の第１ノードの一例である。クエリは、コンテンツデータのコンテンツＩＤとユーザノードのＩＰアドレスを含む。クエリに含まれるコンテンツＩＤは、ユーザによりコンテンツカタログリストから選択されたコンテンツデータのコンテンツＩＤである。
【００６８】
ユーザノードは、ユーザノードのルーティングテーブルに従って、他のノード装置Ｎｎへクエリを送信する。つまり、ユーザノードは、クエリをルートノードに向けて送信する。これにより、コンテンツＩＤをキーとしてクエリは、ルートノードに到着することとなる。
【００６９】
クエリを受信したルートノードは、クエリに含まれるコンテンツＩＤに対応するインデックス情報をインデックスキャッシュ記憶領域から取得する。取得されたインデックス情報は、クエリの送信元であるユーザノードへ返信される。こうしてインデックス情報を取得したユーザノードは、取得したインデックス情報から保持ノードのＩＰアドレスを知ることができる。取得した保持ノードのＩＰアドレスに基づいて、ユーザノードは、コンテンツ送信要求メッセージを送信する。そして、ユーザノードは、保持ノードからコンテンツデータのレプリカを取得（ダウンロード）することができる。レプリカを取得するとき、レプリカのコンテンツＩＤがレプリカとともに取得される。
【００７０】
そして、保持ノードから取得したコンテンツデータのレプリカを、ユーザノードは、ハードディスク等の記憶手段に保存する。レプリカを保存したユーザノードは、レプリカを保存したことをルートノードに知らせる。レプリカを保存したことを知らせるために、ユーザノードは、レプリカのコンテンツＩＤと、ユーザノードのノード情報が含まれたパブリッシュメッセージを生成する。生成されたパブリッシュメッセージは、ユーザノードからルートノードに向けて送信される。パブリッシュメッセージが送信されることで、分散保存システムＳに参加している他のノード装置Ｎｎは、レプリカを取得したユーザノードからもレプリカを取得（ダウンロード）することができる。
【００７１】
上述の方法により、パブリッシュメッセージは、クエリと同じように、コンテンツＩＤをキーとするＤＨＴルーティングによってルートノードに到着する。そして、ルートノードは、受信したパブリッシュメッセージに含まれるユーザノードのノード情報とレプリカのコンテンツＩＤの組とを含むインデックス情報を登録することができる。こうして、上記ユーザノードは、新たに、コンテンツのレプリカを保持する保持ノードとなる。なお、上記パブリッシュメッセージに含まれるユーザノードのインデックス情報は、ルートノードに至るまでの転送経路におけるノード装置Ｎｎにおいても登録される。また、ルートノードは、所在情報に含まれるＩＰアドレス等により示されたコンテンツ保持ノードへコンテンツ送信要求メッセージを送信してもよい。この場合、コンテンツ保持ノードがユーザノードへアクセスしてコンテンツを提供することになる。
【００７２】
また、コンテンツ分散保存システムＳに保存される全てのコンテンツは、コンテンツ管理サーバＭＳにより管理される。尚、本実施形態では、コンテンツ管理サーバＭＳは、図示していない。コンテンツ管理サーバＭＳは、分散保存システムＳに保存される全てのコンテンツの属性情報を記憶している。そして、コンテンツ管理サーバＭＳは、コンテンツの属性情報を含むコンテンツカタログ情報を、全てのノード装置Ｎｎに対して、ＤＨＴマルチキャストで配信する。ＤＨＴマルチキャストでは、コンテンツ管理サーバＭＳからあるノードＮｎに配信されたメッセージが、ＤＨＴを用いたルーティングテーブルにしたがって、分散保存システムＳに接続しているノード装置Ｎｎを順次転送される。これにより、最終的には全てのノード装置Ｎｎに行き渡る。なお、ＤＨＴマルチキャストは、例えば特開２００７−０５３６６２号公報等で公知であるので、詳しい説明を省略する。
【００７３】
[コンテンツ保持ノード決定方法の説明]
各ノード装置ＮｎがＰ２Ｐネットワーク９に参加するときに取得された装置群情報に基づいて、コンテンツを取得する保持ノードを決定する方法を説明する。具体的には、図３に示すユーザノード２１ａが、コンテンツ１のコンテンツ送信要求メッセージをルートノードへ送信した例を用いて説明する。図１１に示すように、コンテンツ１の保持ノードとして、保持ノード２２ａ〜２２ｅのノード情報がルートノードに記憶されている。そして、ルートノードは、インデックスキャッシュをコンテンツの取得候補先としてユーザノードへ送信する。取得候補先を受信したユーザノードは、ユーザノードの装置群情報に基づいて、コンテンツ取得先を決定する。
【００７４】
図１２は、ルートノードに記憶される保持ノード２２ａ〜２２ｅのインデックスキャッシュにおける装置群情報の詳細を示す説明図である。図５に示すように、ユーザノード２１ａの装置群情報は、「上位装置群１３ａ」、「下位装置群１４ａ」である。コンテンツの取得先の決定は、下記に示す優先度により決定される。
１．ユーザノードと保持ノードとが同じ下位装置群と接続されている場合、同じ下位装置群に接続された保持ノードからコンテンツデータを取得する。
２．ユーザノードと保持ノードとが同じ下位装置群と接続されていない場合、ユーザノードと保持ノードとが同じ上位装置群と接続され、その上位装置群と直接接続される保持ノードからコンテンツデータを取得する。
３．ユーザノードと保持ノードとが同じ下位装置群と接続されておらず、且つ、ユーザノードと保持ノードとが同じ上位装置群と接続されていない場合、他の上位装置群と直接接続される保持ノードからコンテンツデータを取得する。
【００７５】
本実施形態では、上記の優先順序にもとづいて、コンテンツデータの取得先が決定される。従って、コンテンツ取得の際、経由する装置群の数が減らせることで、装置群間の通信負荷を減らせることができる。例えば、ユーザノード２１ａの装置群情報が、「上位装置群１３ａ」、「下位装置群１４ａ」の場合、図１２に示すように、ノード装置２２ａは下位装置群が一致する保持ノード装置である。同様に、ノード装置２２ｂは上位装置群が一致する保持ノード装置である。ノード装置２２ｃは、上位装置群が一致し、且つ、上位装置群と直接接続される保持ノードである。ノード装置２２ｄは、上位装置群が一致せず、且つ、上位装置群と直接接続される保持ノードである。ノード装置２２ｅは、下位装置群が一致せず、且つ、上位装置群も一致しない保持ノードである。従って、ノード装置２２ａ、ノード装置２２ｃ、ノード装置２２ｄの優先順序で保持ノードが決定される。尚、上述したノード装置２２ａ、ノード装置２２ｃ、ノード装置２２ｄと比較すると、ノード装置２２ｂ及びノード装置２２ｅは、優先度は低くなる。ノード装置２２ｂとノード装置２２ｅとでは、ノード装置２２ｂの上位装置群が、ユーザノード２１ａの上位装置群と一致するため、ノード装置２２ｂの方が優先される。
【００７６】
本実施形態では、コンテンツ取得先を決定する処理は、ユーザノードにより行われている。ユーザノードがクエリとともにユーザノードの装置群情報を送信することで、ルートノードによりコンテンツ取得先を決定することができる。この場合、ルートノードにより決定されたコンテンツ取得先がユーザノードに送信される。また、取得先として決定された保持ノードへコンテンツ送信要求メッセージが送信されても良い。
【００７７】
[ノード装置の電気的構成]
次に、図１３を参照して、ノード装置Ｎｎの電気的構成ついて説明する。
【００７８】
図１３は、本実施形態のノード装置Ｎｎの電気的構成を示すブロック図である。図１３に示すように、本実施形態のノード装置Ｎｎには、ノード装置Ｎｎを制御するＣＰＵ３１が備えられている。ＣＰＵ３１には、ＲＡＭ３２とＨＤＤ３３とデコーダ部３４と通信部３９と入力部４０とがそれぞれ電気的に接続されている。ＲＡＭ３２、ＨＤＤ３３などの記憶手段とＣＰＵ３１とは、ノード装置Ｎｎのコンピュータを構成している。そのコンピュータは、ノード装置Ｎｎの動作を制御処理する。
【００７９】
ＲＡＭ３２は、各種メッセージ一時記憶領域３２１と、装置群情報一時記憶領域３２２と、接続関係情報コンテンツ一時記憶領域３２３と決定保持ノード一時記憶領域３２４とを含む。各種メッセージ一時記憶領域３２１は、ノード装置Ｎｎが受信した各種メッセージを一時記憶する。例えば、参加メッセージやパブ立秋メッセージやクエリ等である。装置群情報一時記憶領域３２２は、ノード装置Ｎｎが接続される装置群情報を一時記憶する。接続関係情報コンテンツ一時記憶領域３２３は、取得した接続関係情報コンテンツを一時記憶する。決定保持ノード一時記憶領域３２４は、後述する保持ノード距離決定処理により決定された保持ノードのノード情報が一時記憶される。
【００８０】
ＨＤＤ３３は、プログラム記憶領域３３１とレプリカ記憶領域３３６と、インデックスキャッシュ記憶領域３３７と、ルーティングテーブル記憶領域３３８と、コンテンツカタログリスト記憶領域３３９とを含む。プログラム記憶領域３３１は、メイン動作プログラム記憶領域３３２と保持ノード距離決定処理プログラム記憶領域３３３とコンテンツ取得処理プログラム記憶領域３３４と接続関係情報コンテンツ取得処理プログラム記憶領域３３５とを含む。メイン動作プログラム記憶領域３３２は、ノード装置Ｎｎを制御するためのプログラム情報を記憶する。保持ノード距離決定処理プログラム記憶領域３３３は、ルートノードのインデックキャッシュにおける保持ノードの中から、ユーザノードから経由する装置群の数が少ない保持ノードを決定する。コンテンツ取得処理プログラム記憶領域３３４は、コンテンツを取得するプログラム情報を記憶する。接続関係情報コンテンツ取得処理プログラム記憶領域３３５は、接続関係情報コンテンツを取得するプログラム情報を記憶する。レプリカ記憶領域３３６は、コンテンツ投入サーバ１６または他のノード装置Ｎｎから送信されたレプリカを記憶する。レプリカ記憶領域３３６は、記憶するレプリカの公開時期及び評価値を、レプリカと対応付けて記憶する。インデックスキャッシュ記憶領域３３７は、上述したインデックスキャッシュを記憶する。ルーティングテーブル記憶領域３３８は、上述したルーティングテーブルを記憶する。コンテンツカタログリスト記憶領域３３９は、上述したコンテンツカタログリストを記憶する。
【００８１】
デコーダ部３４は、映像情報と音声情報とをデコードする。本実施形態のデコードは、エンコード化された映像情報と音声情報とを、データ伸張または復号化することである。映像情報と音声情報とは、コンテンツデータのレプリカに含まれる。
【００８２】
映像処理部３５は、デコードされた映像情報に所定の描画処理を施して映像信号を出力する。
【００８３】
ディスプレイ３６は、映像処理部１５から出力された映像信号に基づいて映像表示する。ディスプレイ３６は、ＣＲＴディスプレイ、または、液晶ディスプレイにより構成される。
【００８４】
音声処理部３７は、上記デコードされた音声情報をアナログオーディオ信号にＤ（Ｄｉｇｉｔａｌ）／Ａ（Ａｎａｌｏｇ）変換する。
スピーカ３８は、変化されたアナログオーディオ信号を、アンプにより増幅して出力する。
【００８５】
通信部３９は、ノード装置Ｎｎをインターネットと接続する。通信部３９は、ネットワーク８を介して他のノード装置Ｎｎまたはコンテンツ投入サーバ１６またはヒントサーバ１７と情報の送受信を行う。
【００８６】
入力部４０は、ユーザからの指示を受け付ける。入力部４０は、キーボード、マウス、或いは、操作パネル等から構成される。なお、ノード装置Ｎｎとしては、パーソナルコンピュータ、ＳＴＢ（Ｓｅｔ  Ｔｏｐ  Ｂｏｘ）、或いは、ＴＶ受信機等を適用可能である。
【００８７】
また、分散保存システムＳが、分散保存システムＳに参加する際のアクセス先となるコンタクトノードを備えている場合、各ノード装置ＮｎのＨＤＤ３３にはコンタクトノードのＩＰアドレスまたはポート番号等が記憶されている。更に、ＨＤＤ３３には、コンテンツカタログリストが記憶されている。なお、ＨＤＤ３３に記憶されるプログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしてもよい。また、ＣＤ−ＲＯＭ等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
【００８８】
［ノード装置Ｎｎのメイン処理動作］
以上説明した構成からなる本実施形態のノード装置Ｎｎの動作及び作用について、添付図面を参照して説明する。図１４は、ノード装置Ｎｎにおける動作の処理手順を示すフローチャートである。ノード装置Ｎｎにより上述したＰ２Ｐネットワーク９への参加処理の要求が行われたとき、ノード装置Ｎｎのメイン動作が実行される。ＣＰＵ３１がメイン動作プログラムを実行することにより、遂行される。以下に示す処理は、ＣＰＵ３１により処理される。
【００８９】
ステップＳ１０１では、Ｐ２Ｐネットワーク９への参加処理が実行される。参加処理は、ノード装置ＮｎがＰ２Ｐネットワーク９のコンタクトノードにアクセスする。そして、コンタクトノードから、各種メッセージを転送するルーティングテーブルとコンテンツカタログリストとノードとが取得される。
【００９０】
ステップＳ１０２では、接続関係情報コンテンツが取得される。ノード装置ＮｎのＩＰアドレスに基づいて、ＩＰアドレスに対応した接続関係情報コンテンツが取得される。
【００９１】
ステップＳ１０３では、ルートノードからインデックスキャッシュが受信されたか否かが判定される。インデックスキャッシュが受信されたと判定された場合、ステップＳ１０４が実行される。インデックスキャッシュが受信されたと判定されなかった場合、ステップＳ１０７が実行される。
【００９２】
ステップＳ１０４では、ステップＳ１０３で受信したインデックスキャッシュにおける保持ノードの装置群情報に基づいて、保持ノード距離決定処理が実行される。保持ノード距離決定処理に基づいて、ユーザノードから装置群の経由が少ない保存ノードへの経路が決定される。本実施形態のコンピュータとステップＳ１０４とは、本発明の決定部の一例である。
【００９３】
ステップＳ１０５では、ステップＳ１０４で決定された保持ノードへ、コンテンツの送信要求が送信される。
【００９４】
ステップＳ１０６では、ステップＳ１０５でコンテンツを要求したノード装置から、コンテンツを受信する。
【００９５】
ステップＳ１０７では、コンテンツ投入サーバ１６、または、他のノード装置Ｎｎから送信されたコンテンツデータを受信したか否かが判定される。コンテンツデータを受信したと判定したとき、ステップＳ１０８が実行される。コンテンツを受信しなかったと判定したとき、ステップＳ１１０が実行される。
【００９６】
ステップＳ１０８では、ステップＳ１０７で受信したコンテンツデータが、ノード装置Ｎｎのレプリカ記憶領域３３６に記憶される。
【００９７】
ステップＳ１０９では、ステップＳ１０８で受信したコンテンツについて、パブリッシュメッセージがコンテンツ管理サーバＭＳ、または、ルートノード、または、他のノード装置Ｎｎへ送信される。
【００９８】
ステップＳ１１０では、他のノード装置Ｎｎから送信されたクエリが受信されたかが否かが判定される。クエリが受信しされたと判定された場合、ステップＳ１１１が実行される。クエリが受信されたと判定されなかった場合、ステップＳ１１２が実行される。
【００９９】
ステップＳ１１１では、コンテンツ取得処理が実行される。コンテンツ取得処理は、他のノード装置からクエリを受信したときに実行される。ノード装置Ｎｎが保持するインデッククスキャッシュに基づいて、複数ある保持ノードの中から、ユーザノードから保存ノードへの装置群の経由が少ない経路が決定される。決定された保持ノードのノード情報が、ユーザノードに送信される。本実施形態のコンピュータとステップＳ１１１とは、本発明のコンテンツ取得部の一例である。
【０１００】
ステップＳ１１２では、コンテンツ送信要求メッセージを受信したか否かが判定される。コンテンツ送信要求メッセージが受信された場合、ステップＳ１１３が実行される。コンテンツ送信要求メッセージが受信されなかったと判定されなかった場合、ステップＳ１１４が実行される。
【０１０１】
ステップＳ１１３では、コンテンツ送信要求メッセ−ジに含まれるコンテンツが、ノード装置Ｎｎの記憶部から読み出される。読み出されたコンテンツが、ユーザノードへ送信される。
【０１０２】
ステップＳ１１４では、Ｐ２Ｐ動作に必要なその他の処理が実行される。具体的には、カタログリスト中の所望のコンテンツのクエリを送信する処理、ルーティングテーブルに基づいて、種々のメッセージを転送する処理である。また、ルートノードの場合、ユーザノードへインデックキャッシュを送信する処理である。本実施形態のコンピュータとステップＳ１１４のカタログリスト中の所望のコンテンツのクエリを送信する処理とは、本発明のコンテンツ要求部の一例である。
［保持ノード距離決定処理］
図１５は、保持ノード距離決定処理プログラムに従うノード装置Ｎｎの保持ノード距離決定処理を実行するフローチャートである。まず、ステップＳ２０１では、ノード装置Ｎｎの装置群情報に基づいて、ノード装置Ｎｎが下位装置群に接続されているか否かが判定される。下位装置群に接続されていると判定された場合、ステップＳ２０２が実行される。下位装置群に接続されていないと判定された場合、ステップＳ２０４が実行される。図５に示す下位装置群に「Ｎｕｌｌ」が記憶されている場合、下位装置群と接続されていないと判定される。
【０１０３】
ステップＳ２０２では、ノード装置Ｎｎが接続される下位装置群と一致する保持ノードがあるか否かが判定される。具体的には、ノード装置Ｎｎの装置群情報と、インデックスキャッシュに記載される装置群情報とが比較される。比較対象のインデックスキャッシュは、インデックスキャッシュ記憶領域３３７に記憶されている。比較した結果、下位装置群と一致する保持ノードがあると判定された場合、ステップＳ２０３が実行される。下位装置群と一致する保持ノードがないと判定された場合、ステップＳ２０４が実行される。尚、本実施形態では、ノード装置Ｎｎが接続される下位装置群と、保持ノードが接続されている下位装置群とが一致するかを判定している。ノード装置ＮｎのＩＰアドレスに基づいて、ノード装置ＮｎのＩＰアドレスを含む下位装置群と接続される保持ノードがあるか否かが判定されても良い。本実施形態のコンピュータとステップＳ２０２とは、本発明の第１判定部の一例である。
【０１０４】
ステップＳ２０３では、ステップＳ２０２で決定された保持ノードが、取得先の保持ノードとして決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域３２４に記憶される。
【０１０５】
ステップＳ２０４では、ノード装置Ｎｎの装置群情報における上位装置群と、保持ノードの上位装置群とが一致するか否かが判定される。具体的には、具体的には、ノード装置Ｎｎの装置群情報と、インデックスキャッシュに記載される装置群情報とが比較される。比較対象のインデックスキャッシュは、インデックスキャッシュ記憶領域３３７に記憶されている。比較した結果、上位装置群と一致する保持ノードがあると判定された場合、ステップＳ２０５が実行される。上位装置群と一致する保持ノードがないと判定された場合、ステップＳ２１０が実行される。本実施形態のコンピュータとステップＳ２０４とは、本発明の第２判定部の一例である。
【０１０６】
ステップＳ２０５では、ステップＳ２０４で一致すると判定された保持ノードが、上位装置群と直接接続されるノード装置であるか否かが判定される。ステップＳ２０５で決定された保持ノード装置の下位装置群が「Ｎｕｌｌ」であるか否かが判定される。上位装置群と直接接続される保持ノード装置があると判定された場合、ステップＳ２０６が実行される。上位装置群と直接接続される保持ノード装置がないと判定された場合、ステップＳ２０７が実行される。本実施形態のコンピュータとステップＳ２０５とは、本発明の第３判定部の一例である。
【０１０７】
ステップＳ２０６では、ステップＳ２０５で判定された上位装置群と直接接続される保持ノード装置が、コンテンツ取得先として決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域３２４に記憶される。
【０１０８】
ステップＳ２０７では、インデックキャッシュ記憶領域３３７に記憶されたインデックスキャッシュに記載された保持ノードの中で、上位装置群と直接接続される保持ノードがあるか否かが判定される。上位装置群と直接接続される保持ノードがあると判定された場合、ステップＳ２０８が実行される。上位装置群と直接接続される保持ノードがないと判定された場合、ステップＳ２０９が実行される。本実施形態のコンピュータとステップＳ２０７とは、本発明の第３判定部の一例である。
【０１０９】
ステップＳ２０８では、ステップＳ２０７で判定された上位装置群と直接接続される保持ノード装置が、コンテンツ取得先として決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域３２４に記憶される。取得先が複数ある場合、いずれかの保持ノード装置が取得先として決定される。
【０１１０】
ステップＳ２０９では、ユーザノードと上位装置群が同じ保持ノードの中から、取得先がランダムに決定される。
【０１１１】
ステップＳ２１０では、ステップＳ２０７と同様に、インデックキャッシュ記憶領域３３７に記憶されたインデックスキャッシュに記載された保持ノードの中で、上位装置群と直接接続される保持ノードがあるか否かが判定される。上位装置群と直接接続される保持ノードがあると判定された場合、ステップＳ２１１が実行される。上位装置群と直接接続される保持ノードがないと判定された場合、ステップＳ２１２が実行される。本実施形態のコンピュータとステップＳ２１０とは、本発明の第３判定部の一例である。
【０１１２】
ステップＳ２１１では、ステップＳ２０８と同様に、ステップＳ２１０で判定された上位装置群と直接接続される保持ノード装置が、コンテンツ取得先として決定される。決定された保持ノード情報のノード情報が、決定保持ノード一時記憶領域３２４に記憶される。取得先が複数ある場合、いずれかの保持ノード装置が取得先として決定される。
【０１１３】
ステップＳ２１２では、インデックスキャッシュに記載される保持ノードの中から、取得先がランダムに決定される。
［コンテンツ取得処理］
図１６は、コンテンツ取得処理プログラムに従うノード装置Ｎｎのコンテンツ取得処理を実行するフローチャートである。まず、ステップＳ３０１では、ノード装置Ｎｎのインデックスキャッシュに、ステップＳ１１０で受信したクエリに含まれるコンテンツデータが記憶されているか否かが判定される。具体的には、クエリに含まれるコンテンツＩＤと一致するコンテンツデータがあるか否かが判定される。インデックスキャッシュに記憶されていないと判定されたとき、ステップＳ３０２が実行される。インデックスキャッシュに記憶されていると判定されたとき、ステップＳ３０３が実行される。
【０１１４】
ステップＳ３０２では、ステップＳ１１０で受信したクエリを、ルーティングテーブルに基づいて、他のノード装置Ｎｎへ転送する。
【０１１５】
ステップＳ３０３では、ノード装置Ｎｎが保持するインデックスキャッシュにおける保持ノードの装置群情報に基づいて、保持ノード距離決定処理が実行される。保持ノード距離決定処理に基づいて、ユーザノードから保持ノードへの装置群の経由が少ない経路が決定される。本実施形態のコンピュータとステップＳ３０３とは、本発明の決定部の一例である。
【０１１６】
ステップＳ３０４では、ステップＳ３０３で決定された保持ノードへ、コンテンツの送信要求が送信される。
【０１１７】
ステップＳ３０５では、ステップＳ３０４でコンテンツを要求した保持ノードから、コンテンツデータが受信される。
【０１１８】
図１８は、接続関係情報取得処理プログラムに従うノード装置Ｎｎの接続関係情報コンテンツ取得処理を実行するフローチャートである。まず、ステップＳ４０１では、ノード装置ＮｎのＩＰアドレスが、コンタクトノードに送信される。本実施形態のコンピュータとステップＳ４０１とは、本発明の送信部の一例である。また、本実施形態のステップＳ４０１は、本発明の送信ステップの一例である。
【０１１９】
ステップＳ４０２では、ノード装置ＮｎのＩＰアドレスに対応する上位情報コンテンツと、下位情報コンテンツとのコンテンツＩＤを受信する。本実施形態のコンピュータとステップＳ４０２とは、本発明の取得部の一例である。また、本実施形態のステップＳ４０２は、取得ステップの一例である。
【０１２０】
ステップＳ４０３では、ステップＳ４０２で受信したコンテンツＩＤに基づいて、コンテンツＩＤに対応する上位情報コンテンツと下位情報コンテンツとが受信される。受信された上位情報コンテンツと下位情報コンテンツとは、接続関係情報コンテンツ一時記憶領域３２３に一時記憶される。受信された下位情報コンテンツに記載される上位装置群情報と下位装置群情報とが、装置群情報一時記憶領域３２２に一時記憶される。本実施形態のコンピュータとステップＳ４０３とは、本発明のデータファイル取得部の一例である。また、本実施形態のステップＳ４０３は、本発明のデータファイル取得ステップの一例である。
【０１２１】
また、上記実施形態におけるコンテンツ分散保存システムＳは、ＤＨＴを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。ＤＨＴを利用したルーティングテーブル以外にも適用可能である。また、本実施形態では、所在情報としてＩＰアドレスを用いたが、ＩＰアドレスに限定されるものではない。ＭＡＣアドレス等が用いられても良い。
【０１２２】
また、本実施形態では、上位装置群または下位装置群が一致するか否かにより、コンテンツデータを取得する保持ノードが決定されている。上位装置群または下位装置群のＩＰアドレス範囲に、保持ノードのＩＰアドレスが含まれるか否かにより、保持ノードが決定されても良い。
【符号の説明】
【０１２３】
３  ＩＸ
４ａ、４ｂ  ＩＳＰ
５ａ、５ｂ  ＤＳＬ回線業者装置
６  ＦＴＴＨ回線事業者装置
７  回線速度
８  ネットワーク
９  Ｐ２Ｐネットワーク（オーバーレイネットワーク）
１１  ルータ
１２  ノード装置
１３ａ、１３ｂ、１３ｃ  上位装置群
１４ａ、１４ｂ、１４ｃ、１４ｄ、１４ｆ  下位装置群
１５  局舎モデム
１６  コンテンツ投入サーバ
１７  ヒントサーバ
２１ａ  ユーザノード
２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅ  保持ノード
３１  ＣＰＵ
３２  ＲＡＭ
３３  ＨＤＤ
３４  デコーダ部
３５  映像処理部
３６  ディスプレイ
３７  音声処理部
３８  スピーカ
３９  通信部
４０  入力部
３２１  各種メッセージ記憶一時記憶領域
３２２  装置群情報一時記憶領域
３２３  接続系情報コンテンツ一時記憶領域
３２４  決定保持ノード一時記憶領域
３３１  プログラム記憶領域
３３２  メイン動作プログラム記憶領域
３３３  保持ノード距離決定処理プログラム記憶領域
３３４  コンテンツ取得処理プログラム記憶領域
３３５  接続関係情報コンテンツ取得プログラム記憶領域
３３６  レプリカ記憶領域
３３７  インデックスキャッシュ記憶領域
３３８  ルーティングテーブル記憶領域
３３９  コンテンツカタログリスト記憶領域
Ｓ  分散保存システム
Ｎｎ  ノード
【図１】
2010278617.tif 000003
【図２】
2010278617.tif 000004
【図３】
2010278617.tif 000005
【図４】
2010278617.tif 000006
【図５】
2010278617.tif 000007
【図６】
2010278617.tif 000008
【図７】
2010278617.tif 000009
【図８】
2010278617.tif 000010
【図９】
2010278617.tif 000011
【図１０】
2010278617.tif 000012
【図１１】
2010278617.tif 000013
【図１２】
2010278617.tif 000014
【図１３】
2010278617.tif 000015
【図１４】
2010278617.tif 000016
【図１５】
2010278617.tif 000017
【図１６】
2010278617.tif 000018
【図１７】
2010278617.tif 000019