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