(57)【要約】【課題】ノード装置が複数の分割データに分割されたコンテンツを取得するときに、コンテンツ全体の取得に要する時間を短くすることを可能とする。【解決手段】ノード装置は、コンテンツを取得するノード装置の下り帯域幅を示す下り帯域情報を取得し、分割データを保存するノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得し、コンテンツを取得するとき、取得された下り帯域情報に基づいて、分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定し、分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない分割データの中から、上り帯域情報が示す上り帯域幅が狭い保存ノード装置が保存する分割データの順に、利用可能な下り帯域幅を用いてダウンロードを開始させる。【選択図】図６
2012010225.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムであって、
前記ノード装置は、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得手段と、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得手段と、
前記コンテンツを取得するとき、前記第１取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、
前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、
を備えることを特徴とする情報通信システム。
【請求項２】
前記分割データを識別する識別情報と、前記分割データを保存する前記保存ノード装置のアドレスを示すアドレス情報と、前記保存ノード装置の前記上り帯域情報と、を対応付けて記憶する記憶手段と、
前記コンテンツを取得する前記ノード装置から、前記保存ノード装置のアドレス情報の要求を示す要求情報を受信する第１受信手段と、
前記第１受信手段により受信された前記要求情報に含まれる前記識別情報に対応する前記アドレス情報及び前記上り帯域情報を、前記ノード装置に送信する第１送信手段と、
を備える情報処理装置を更に備え、
前記第２取得手段は、
取得するコンテンツを構成する前記分割データの前記識別情報を含む前記要求情報を前記情報処理装置に送信する第２送信手段と、
前記情報処理装置から送信された前記アドレス情報及び前記上り帯域情報を受信する第２受信手段と、
を備えることを特徴とする請求項１に記載の情報通信システム。
【請求項３】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置であって、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得手段と、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得手段と、
前記コンテンツを取得するとき、前記第１取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、
前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、
を備えることを特徴とするノード装置。
【請求項４】
前記制御手段は、前記第２取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の和を決定し、前記上り帯域幅の和が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする請求項３に記載のノード装置。
【請求項５】
前記制御手段は、前記第２取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の代表値を決定し、前記代表値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする請求項３に記載のノード装置。
【請求項６】
前記制御手段は、前記第２取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の最小値または最大値の何れか一方を決定し、決定された値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする請求項３に記載のノード装置。
【請求項７】
前記制御手段は、前記分割データ毎に、前記保存ノード装置のうち、上り帯域幅の広さの順位の中で、上位に位置する所定数の前記保存ノード装置の前記上り帯域情報に基づいて、ダウンロードを開始させる前記分割データの順序を決定することを特徴とする請求項４乃至６の何れか１項に記載のノード装置。
【請求項８】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置による情報処理方法であって、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得ステップと、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得ステップと、
前記コンテンツを取得するとき、前記第１取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、
前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、
を含むことを特徴とする情報処理方法。
【請求項９】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置に、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得ステップと、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得ステップと、
前記コンテンツを取得するとき、前記第１取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、
前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、
を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））方式の通信システムの技術分野に関する。
【背景技術】
【０００２】
近年、ピアツーピア方式の通信システムが注目されている。このピアツーピア方式の通信システムにおいて、１つのコンテンツを複数のデータに分割して、複数のノード装置に分散して保存させる技術が知られている。ここで、分割された各データを、「分割データ」と称する。この技術においては、コンテンツを取得するノード装置が、コンテンツを構成する各分割データを他のノード装置からダウンロードする。
【０００３】
また、特許文献１には、分割データに相当するブロックに分割されたコンテンツの配信スループットを最大化することを目的とする技術が記載されている。具体的に、特許文献１に記載の技術においては、各ノード装置に保存させるブロックを、ノード装置のアップロードするときの上り帯域幅に比例して割り当てる。これにより、上り帯域幅が広いノード装置であるほど、再配信するブロックの数を多くする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２５４０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ノード装置が或る分割データをダウンロードしているとき、そのノード装置の下り帯域幅に、まだ分割データのダウンロードに利用可能な下り帯域幅が残っている場合がある。この場合、ノード装置は、この利用可能な下り帯域幅を利用して別の分割データをダウンロードすることができる。こうしてノード装置は、複数の分割データを並行してダウンロードすることで、コンテンツ全体の取得に要する時間を短くすることができる。しかしながら、特許文献１に記載の技術のように、ダウンロードする分割データの順序が考慮されていないと、複数の分割データを並行してダウンロードすることのメリットを十分に生かせない場合があった。具体的に、コンテンツの取得の序盤で、保存するノード装置の上り帯域幅が広い分割データをダウンロードすると、終盤では、保存するノード装置の上り帯域幅が狭い分割データをダウンロードすることになる。コンテンツの取得の終盤では、ダウンロードに利用可能な下り帯域幅が生じても、これからダウンロードすべき分割データがもう存在しない状態となる。このときに上り帯域幅が狭いノード装置から分割データをダウンロードしていると、ダウンロード速度が低下する。そのため、コンテンツを取得するノード装置の下り帯域幅の占有率が低くなる。従って、下り帯域幅の占有率が低いまま、ダウンロード速度が遅い分割データを長い時間をかけてダウンロードすることになる。このように、下り帯域幅を有効に利用することができないことから、コンテンツ全体の取得に時間を要する。
【０００６】
そこで、本発明は、以上の点に鑑みてなされたものである。本発明は、ノード装置が複数の分割データに分割されたコンテンツを取得するときに、コンテンツ全体の取得に要する時間を短くすることを可能とする情報通信システム、ノード装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムであって、前記ノード装置は、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得手段と、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得手段と、前記コンテンツを取得するとき、前記第１取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、を備えることを特徴とする。
【０００８】
この発明によれば、コンテンツの取得の序盤では、上り帯域幅が狭いノード装置が保存する分割データからダウンロードが開始される。また、コンテンツを取得する側のノード装置の下り帯域幅に、利用可能な帯域幅が存在する場合には、新たな分割データのダウンロードが順次開始される。そのため、複数の分割データを並行してダウンロードすることができる。よって、上り帯域幅が狭いノード装置から分割データをダウンロードしても、下り帯域幅の占有率を高くすることができる。また、コンテンツの取得の終盤では、上り帯域幅が広いノード装置が保存する分割データがダウンロードされるので、下り帯域幅の占有率を高くすることができる。従って、下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【０００９】
請求項２に記載の発明は、前記分割データを識別する識別情報と、前記分割データを保存する前記保存ノード装置のアドレスを示すアドレス情報と、前記保存ノード装置の前記上り帯域情報と、を対応付けて記憶する記憶手段と、前記コンテンツを取得する前記ノード装置から、前記保存ノード装置のアドレス情報の要求を示す要求情報を受信する第１受信手段と、前記第１受信手段により受信された前記要求情報に含まれる前記識別情報に対応する前記アドレス情報及び前記上り帯域情報を、前記ノード装置に送信する第１送信手段と、を備える情報処理装置を更に備え、前記第２取得手段は、取得するコンテンツを構成する前記分割データの前記識別情報を含む前記要求情報を前記情報処理装置に送信する第２送信手段と、前記情報処理装置から送信された前記アドレス情報及び前記上り帯域情報を受信する第２受信手段と、を備えることを特徴とする。
【００１０】
この発明によれば、ノード装置は、取得するコンテンツを構成する分割データを保存するノード装置の情報を取得するときに、分割データを保存するノード装置の上り帯域幅を示す情報も合わせて取得することができる。
【００１１】
請求項３に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置であって、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得手段と、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得手段と、前記コンテンツを取得するとき、前記第１取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、を備えることを特徴とする。
【００１２】
この発明によれば、コンテンツの取得の序盤では、上り帯域幅が狭いノード装置が保存する分割データからダウンロードが開始される。また、コンテンツを取得する側のノード装置の下り帯域幅に、利用可能な帯域幅が存在する場合には、新たな分割データのダウンロードが順次開始される。そのため、複数の分割データを並行してダウンロードすることができる。よって、上り帯域幅が狭いノード装置から分割データをダウンロードしても、下り帯域幅の占有率を高くすることができる。また、コンテンツの取得の終盤では、上り帯域幅が広いノード装置が保存する分割データがダウンロードされるので、下り帯域幅の占有率を高くすることができる。従って、下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【００１３】
請求項４に記載の発明は、前記制御手段は、前記第２取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の和を決定し、前記上り帯域幅の和が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする。
【００１４】
分割データを保存する複数のノード装置全体としての上り帯域幅が広いほど、分割データを安定して高速にダウンロードすることができると考えられる。この発明によれば、上り帯域幅の和に基づいて順序が決定されるので、分割データのダウンロードの開始の順序を、下り帯域幅の実際の占有率が低い順に近づけることができる。
【００１５】
請求項５に記載の発明は、前記制御手段は、前記第２取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の代表値を決定し、前記代表値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする。
【００１６】
例えば、平均値や中央値等の、複数のノード装置の上り帯域幅から決定された上り帯域幅の代表値が小さい複数のノード装置が保存する分割データほど、１つあたりのノード装置からのダウンロードの速度は遅くなる。そのため、ダウンロードの速度を高くするためには、多くのノード装置からダウンロードを行う必要があり、ダウンロードの効率が低くなる。この発明によれば、ダウンロードの効率を考慮した適切な順序で分割データをダウンロードすることができる。
【００１７】
請求項６に記載の発明は、前記制御手段は、前記第２取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の最小値または最大値の何れか一方を決定し、決定された値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする。
【００１８】
この発明によれば、同じ分割データを保存するノード装置のうち実際に或るノード装置からダウンロードするときの速度を考慮した順序で分割データをダウンロードすることができる。具体的に、最低限のダウンロードの速度の保証の程度を考慮する場合には、上り帯域幅の最小値で順序を決定することができる。また、上り帯域幅が広いノード装置から優先してダウンロードを行う場合には、上り帯域幅の最大値で順序を決定することができる。
【００１９】
請求項７に記載の発明は、前記制御手段は、前記分割データ毎に、前記保存ノード装置のうち、上り帯域幅の広さの順位の中で、上位に位置する所定数の前記保存ノード装置の前記上り帯域情報に基づいて、ダウンロードを開始させる前記分割データの順序を決定することを特徴とする。
【００２０】
この発明によれば、分割データのダウンロードの開始の順序の決定に、上り帯域幅の上位所定順位以内に入るノード装置の上り帯域幅のみが考慮される。そのため、ダウンロードを開始させる分割データの順序から、ダウンロードの速度が遅いためにダウンロード先としては適切ではないノード装置の上り帯域幅の影響を除去することができる。
【００２１】
請求項８に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置による情報処理方法であって、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得ステップと、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得ステップと、前記コンテンツを取得するとき、前記第１取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、を含むことを特徴とする。
【００２２】
請求項９に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置に、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第１取得ステップと、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第２取得ステップと、前記コンテンツを取得するとき、前記第１取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第２取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、を実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、コンテンツの取得の序盤では、複数の分割データを並行してダウンロードすることができる。よって、上り帯域幅が狭いノード装置から分割データをダウンロードしても、下り帯域幅の占有率を高くすることができる。また、コンテンツの取得の終盤では、上り帯域幅が広いノード装置が保存する分割データがダウンロードされるので、下り帯域幅の占有率を高くすることができる。従って、下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【図面の簡単な説明】
【００２４】
【図１】一実施形態におけるコンテンツ分散保存システムＳにおける各ノード装置の接続態様の一例を示す図である。
【図２】（ａ）乃至（ｆ）は、ノードＮ０がチャンクＡ０〜Ａ５それぞれのルートノードから取得したチャンク情報の内容の一例である。
【図３】（ａ）は、一実施形態の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図であり、（ｂ）は、比較例の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図である。
【図４】センターサーバＳＡの概要構成例を示す図である。
【図５】ノードＮｎの概要構成例を示す図である。
【図６】（ａ）は、一実施形態におけるユーザノードの制御部２１のコンテンツ取得処理における処理例を示すフローチャートであり、（ｂ）は、一実施形態におけるルートノードの制御部２１の問い合わせメッセージ受信時処理における処理例を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【００２６】
［１．コンテンツ分散保存システムの概要構成及び動作概要］
始めに、図１を参照して、本実施形態におけるコンテンツ分散保存システムの構成及び動作概要について説明する。図１は、本実施形態におけるコンテンツ分散保存システムＳにおける各ノード装置の接続態様の一例を示す図である。図１は、コンテンツ分散保存システムＳの具体的構成図１０１と、概念的構成図１００とから構成される。コンテンツ分散保存システムＳの具体的構成図１０１が示すように、コンテンツ分散保存システムＳは、多数のノード装置Ｎｎ（ｎ＝０，１，２，３・・・の何れか）から構成される。
【００２７】
図１の具体的構成図１０１内に示すように、コンテンツ分散保存システムＳは、複数のノード装置Ｎｎがインターネットを介して接続されることで構成される。また、図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４ａ，４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者の装置５ａ，５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者の装置６、及び通信回線７等によって、インターネット等のネットワーク８が構築されている。ネットワーク８は、現実世界の通信ネットワークである。なお、図１の例におけるネットワーク８には、データパケットを転送するためのルータが適宜挿入されているが、図１では図示を省略している。また、通信回線７としては、例えば、電話回線や光ケーブル等が用いられる。
【００２８】
このようなネットワーク８には、複数のノード装置Ｎｎが接続されている。以下、ノード装置を、「ノード」という。また、各ノードＮｎには、固有の製造番号及びＩＰ（Internet Protocol）アドレスが割り当てられている。そして、本実施形態におけるコンテンツ分散保存システムＳは、これらのノードＮｎのうち、図１の概念的構成図１００内に示すように、何れか複数のノードＮｎの接続により形成されるピアツーピア方式のネットワークシステムとなっている。
【００２９】
なお、図１の概念的構成図１００内に示すネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク９である。論理的なネットワークであるオーバーレイネットワーク９は、特定のアルゴリズム、例えば、ＤＨＴを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムＳに接続されている各ノードＮｎには、所定桁数からなる固有の識別情報であるノードＩＤが割り当てられている。
【００３０】
各ノードＮｎは、夫々、ＤＨＴ（Distributed Hash Table）を用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムＳ上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ＩＤ空間内で適度に離れたノードＮｎのノードＩＤ、ＩＰアドレス及びポート番号を含むノード情報が複数登録されている。コンテンツ分散保存システムＳに接続している１台のノードＮｎは、必要最低限のノードＮｎのノード情報をルーティングテーブルとして記憶している。各ノードＮｎ間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードＮｎについてのノード情報が取得される。なお、ノード情報に含まれるＩＰアドレスは、本発明におけるアドレス情報の一例である。
【００３１】
コンテンツ分散保存システムＳにおいては、内容の異なる様々なコンテンツが複数のノードＮｎに分散して保存される。各コンテンツには、それぞれコンテンツ名及びコンテンツ毎に固有の識別情報であるコンテンツＩＤが付与されている。各コンテンツのコンテンツ名及びコンテンツＩＤ等の属性情報は、コンテンツカタログ情報に記述されている。コンテンツカタログ情報は、センターサーバＳＡにより作成されて、全てのノードＮｎに配信される。
【００３２】
また、各コンテンツは、複数のデータに分割されている。この分割されたデータを、「チャンク」という。各チャンクは、例えば、センターサーバＳＡにより、コンテンツを所定のデータサイズで分割することにより生成される。各チャンクは、複数のノードＮｎに分散されて保存される。これにより、元となるコンテンツが複数のノードＮｎに分散して保存されることになる。各チャンクのオリジナルは、センターサーバＳＡに保存されている。各チャンクには、それぞれシーケンス番号及びチャンクＩＤが付与されている。シーケンス番号は、例えば、分割された複数のチャンクを、元となるコンテンツを構成するように並べたときの並び順に相当する。チャンクＩＤは、チャンク毎に固有の識別情報である。なお、チャンクは、本発明における分割データの一例である。また、チャンクＩＤは、本発明における識別情報の一例である。
【００３３】
コンテンツを構成する各チャンクのシーケンス番号及びチャンクＩＤは、コンテンツ毎にメタファイルに記載されている。コンテンツのメタファイルは、そのコンテンツのコンテンツＩＤと対応付けられている。メタファイルは、チャンクと同様に、複数のノードＮｎに分散されて保存される。
【００３４】
チャンクを保存しているノードＮｎを、「ホルダノード」という。また、チャンクの所在は、チャンク情報として、チャンクの所在を管理（記憶）しているノードＮｎにより記憶される。以下、チャンクの所在を管理しているノードＮｎを、「ルートノード」という。チャンク情報は、チャンクのチャンクＩＤと、チャンクを保存したホルダノードのノード情報と、チャンクを保存したホルダノードの上り帯域幅を示す上り帯域幅値との組を含む。上り帯域幅値は、チャンクのダウンロード（取得）を開始する順序を決定するために用いられる情報である。ルートノードは、例えば、チャンクＩＤと最も近いノードＩＤを有するノードＮｎであるように定められる。チャンクＩＤと最も近いノードＩＤとは、例えば、ＩＤの上位桁が最も多く一致するノードＩＤである。なお、ホルダノードは、本発明における保存ノード装置の一例である。また、ルートノードは、本発明における情報処理装置の一例である。
【００３５】
或るノードＮｎのユーザが、所望のコンテンツを取得したい場合、ノードＮｎは、先ずコンテンツのメタファイルを取得する。以下、ユーザによりコンテンツの取得を望むノードＮｎを、「ユーザノード」という。なお、メタファイルの取得方法は、チャンクＩＤに代えてコンテンツＩＤを用いることを除いて、基本的にこの後説明するチャンクの取得方法と同様である。そのため、メタファイルの取得方法の詳しい説明を省略する。
【００３６】
ユーザノードは、メタファイルを取得すると、メタファイルに記載されている各チャンクＩＤに基づいて、所望されたコンテンツを構成する各チャンクを保存するホルダノードの情報をそれぞれ問い合わせる。具体的に、ユーザノードは、問い合わせメッセージを送信する。この問い合わせメッセージは、取得を望むチャンクのチャンクＩＤ及びユーザノードのノード情報を含む。この問い合わせメッセージが、ユーザノードが記憶するＤＨＴのルーティングテーブルに従って、他のノードＮｎに対して送信される。つまり、ユーザノードは、問い合わせメッセージを、ルートノードに向けて送信する。これにより、問い合わせメッセージは、チャンクＩＤをキーとするＤＨＴルーティングによって最終的にルートノードに到着することになる。この問い合わせメッセージは、本発明における要求情報の一例である。なお、ＤＨＴルーティングについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００３７】
問い合わせメッセージを受信したルートノードは、これに含まれるチャンクＩＤに対応するチャンク情報をチャンク情報キャッシュから取得する。ルートノードは、取得したチャンク情報を、問い合わせメッセージの送信元であるユーザノードに対して返信する。各チャンクのチャンク情報を取得したユーザノードは、コンテンツ全体の取得に要する時間を短くするために、ダウンロードを開始させるチャンクの順序を決定する。なお、ダウンロードを開始させるチャンクの順序の決定方法については後述する。
【００３８】
ダウンロードを開始させる順序を決定すると、ユーザノードは、決定した順序に従って、各チャンクをダウンロードする。具体的に、ユーザノードは、チャンク情報に含まれるホルダノードのＩＰアドレス及びポート番号等に基づいて、チャンク要求メッセージをホルダノードに送信する。チャンク要求メッセージには、取得を望むチャンクのチャンクＩＤが含まれている。チャンク要求メッセージを受信したホルダノードは、チャンク要求メッセージに含まれるチャンクＩＤに対応するチャンクをユーザノードにアップロード（送信）する。
【００３９】
ユーザノードは、ホルダノードからチャンクを取得して保存したとき、チャンクを公開する。チャンクの公開とは、ユーザノードがホルダノードとしてチャンクを保存したことをルートノードへ知らせることをいう。具体的に、チャンクを保存したユーザノードは、パブリッシュメッセージを送信する。パブリッシュメッセージは、保存したチャンクのチャンクＩＤ、チャンクを保存したユーザノードのノード情報、及びチャンクを保存したユーザノードの上り帯域幅値を含む。パブリッシュメッセージは、ルートノードに向けて送出される。これにより、パブリッシュメッセージは、問い合わせメッセージと同じように、チャンクＩＤをキーとするＤＨＴルーティングによってルートノードに到着することになる。ルートノードは、受信したパブリッシュメッセージに含まれるチャンクＩＤ、ノード情報及び上り帯域幅値の組を含むチャンク情報をチャンク情報キャッシュに記憶する。こうして、上記ユーザノードは、新たに、上記チャンクを保存するホルダノードとなる。
【００４０】
［２．コンテンツ取得時の制御］
ユーザノードは、取得すべきコンテンツを構成する各チャンクをダウンロードするとき、互いに異なる複数のチャンクを並行してダウンロードする。このとき、ユーザノードは、並行して行うダウンロード数を、各チャンクのダウンロード速度と、ユーザノード自身の下り帯域幅とにより決定する。具体的に、ユーザノードは、或るチャンクのダウンロードを開始すると、チャンクの実際のダウンロード速度を取得する。そして、ユーザノードは、ユーザノード自身の下り帯域幅の値から、取得したダウンロード速度を減算して、ダウンロードにまだ利用可能な下り帯域幅の値を算出する。その結果、ユーザノードは、チャンクのダウンロードに利用可能な下り帯域幅がまだ存在する場合には、この帯域を利用して、別のチャンクのダウンロードを開始する。また、或るチャンクのダウンロードが完了すると、チャンクのダウンロードに利用可能な下り帯域幅が生じる。そこで、ユーザノードは、この帯域を利用して、また別のチャンクのダウンロードを開始する。このようにして、ユーザノードは、ユーザノード自身の下り帯域幅を極力最大限利用して、チャンクをダウンロードする。
【００４１】
また、ユーザノードは、各チャンクをダウンロードするとき、ダウンロードを開始させるチャンクの順序を決定する。具体的に、ユーザノードは、コンテンツを構成する各チャンクの中から、上り帯域幅が狭いホルダノードが保存するチャンクの順に、ダウンロードを開始させる。この上り帯域幅は、チャンクのルートノードから取得されたチャンク情報に含まれる上り帯域幅値により示されている。
【００４２】
ユーザノードが、コンテンツの取得時にこのような制御を行うことで、コンテンツ全体の取得に要する時間を短くすることができる。コンテンツの取得の序盤では、ユーザノードは、ホルダノードの上り帯域幅が狭いチャンクをダウンロードすることになる。そのため、１つ１つのチャンクのダウンロード速度は遅くなる。しかしながら、この時点では、ダウンロードを開始していないチャンク、すなわち、これから取得すべきチャンクがまだ存在する。そのため、ユーザノードは、空いている下り帯域幅を利用して別のチャンクをダウンロードすることができる。このようにして、ユーザノードは、複数のチャンクを並行してダウンロードすることにより、下り帯域幅の占有率を高くすることができる。その一方で、コンテンツの取得の終盤では、ユーザノードは、ホルダノードの上り帯域幅が広いチャンクをダウンロードすることになる。そのため、１つ１つのチャンクのダウンロード速度は速くなる。従って、そのときに、ダウンロードが開始されていないチャンクがもう存在しない状態となっても、下り帯域幅の占有率を高くすることができる。このように、コンテンツの取得の序盤から終盤までユーザノードの下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【００４３】
上述したコンテンツの取得時の制御のため、各ノードＮｎは、ノードＮｎ自身の上り帯域幅を示す上り帯域値及び下り帯域幅を示す下り帯域幅値を取得して記憶する。取得対象となる上り帯域幅値及び下り帯域幅値は、そのノードＮｎ自身がネットワーク８に接続するための通信回線７の上り帯域幅及び下り帯域幅に相当する。ここで、通信回線７の上り帯域幅の範囲内でチャンクのアップロード専用の上り帯域幅が設定されている場合がある。また、通信回線７の下り帯域幅の範囲内でチャンクのダウンロード専用の下り帯域幅が設定されている場合がある。この場合、ノードＮｎは、アップロード専用の上り帯域幅値及びダウンロード専用の下り帯域幅値を取得しても良い。なお、上り帯域値は、本発明における上り帯域情報の一例である。また、下り帯域値は、本発明における下り帯域情報の一例である。
【００４４】
具体的な取得方法としては、種々考えられる。例えば、帯域測定用のサーバ装置を設ける方法がある。この場合、ノードＮｎは、帯域測定用のサーバ装置とデータを送受信して帯域測定を行い、ノードＮｎの上り帯域幅値及び下り帯域幅値を取得する。この場合、ノードＮｎは、定期的に帯域測定を行うと良い。ネットワーク８等の状態によって、帯域幅が変化する場合があるからである。
【００４５】
また、ノードＮｎ間でメッセージを送受信するときに、メッセージの転送速度から各ノードＮｎが帯域測定を行っても良い。この場合、例えば、メッセージを送信しているノードＮｎがそのノードＮｎ自身の上り帯域幅を測定し、メッセージを受信しているノードＮｎがそのノードＮｎ自身の下り帯域幅を測定する。なお、メッセージの送受信には、チャンクの送受信も含まれる。
【００４６】
また、上り帯域幅及び下り帯域幅が予め判明している場合には、例えば、ユーザが上り帯域幅値及び下り帯域幅値を設定した設定ファイルを、ノードＮｎに記憶させても良い。この場合、ノードＮｎは、設定ファイルから上り帯域幅値及び下り帯域幅値を取得する。
【００４７】
なお、通信回線７やネットワーク８のトラフィックの変化等によって、ホルダノードのアップロード速度が変化する場合がある。また、ホルダノードが複数のユーザノードにアップロードを行っていると、個々のアップロード速度が低下する場合がある。このように、実際のアップロード速度がノードＮｎの最大の上り帯域幅ほどには速くはならない場合がある。そこで、このような事態も考慮して、各ノードＮｎが、送信するパブリッシュメッセージに含める上り帯域幅値を、そのノードＮｎ自身の上り帯域幅の値よりも小さくすると良い。この場合、例えば、ノードＮｎは、取得したノードＮｎ自身の上り帯域幅値に補正係数を乗算することにより、一定の割合で値を小さくした上り帯域幅値を記憶しておいても良い。また、このときの補正係数を、例えば通信回線７の種別等に応じて、ノードＮｎ毎に変えても良い。例えば、通信速度が遅い通信回線７であるほど、アップロード速度の変動が大きいと考えられるので、通信速度が遅い通信回線７であるほど、補正係数の値を小さくする。通信回線７の種別としては、例えば、電話回線、光ケーブル等がある。
【００４８】
次に、具体例を用いて、コンテンツの取得時の制御を説明する。ここでは、ノードＮ０が、ユーザノードとして、チャンクＡ０〜Ａ５の６個のチャンクにより構成されているコンテンツＡを取得するものとする。チャンクＡ０〜Ａ５のデータサイズは、それぞれ１６Ｍビットである。また、ノードＮ０の下り帯域幅は、４Ｍｂｐｓである。
【００４９】
図２（ａ）乃至図２（ｆ）は、ノードＮ０がチャンクＡ０〜Ａ５それぞれのルートノードから取得したチャンク情報の内容の一例である。図２（ａ）に示すように、チャンクＡ０は、ノードＮ１〜Ｎ４に保存されている。また、図２（ｂ）に示すように、チャンクＡ１は、ノードＮ１１〜Ｎ１３に保存されている。また、図２（ｃ）に示すように、チャンクＡ２は、ノードＮ２１及びＮ２２に保存されている。また、図２（ｄ）に示すように、チャンクＡ３は、ノードＮ３１に保存されている。また、図２（ｅ）に示すように、チャンクＡ４は、ノードＮ４１〜Ｎ４４に保存されている。また、図２（ｆ）に示すように、チャンクＡ５は、ノードＮ５１及びＮ５２に保存されている。
【００５０】
ユーザノードは、ダウンロードするチャンクの順序を決定するとき、チャンク毎に、そのチャンクを保存するホルダノードの上り帯域幅を足し合わせて、上り帯域幅の総和を算出する。そして、ユーザノードは、ホルダノードの上り帯域幅の総和の値が小さいチャンクの順にダウンロードを開始させる。これは、チャンクをアップロードすることができるホルダノード全体の上り帯域幅が広いほど、ユーザノードは、そのチャンクを安定して高速にダウンロードすることができると考えられるからである。
【００５１】
ただし、ユーザノードは、実際には、全ホルダノードのうち、上り帯域幅が広い順に上位所定台数のホルダノードについて、その上り帯域幅の総和を算出する。上り帯域幅が比較的狭いホルダノードからチャンクをダウンロードしても、ダウンロード速度があまり速くならない場合がある。そこで、ユーザノードは、このようなホルダノードからはチャンクをダウンロードしないか、または、ダウンロード先としての優先順位を低くする。そのため、ユーザノードは、ダウンロード先として極力適切なホルダノード、すなわち、上り帯域幅が広いホルダノードのみを考慮して、ダウンロードを開始する順序を決定する。なお、上り帯域を足し合わせるホルダノードの最大数を、「総和算出台数」という。
【００５２】
例えば、総和算出台数が３台であるとする。チャンクＡ０は、４台のホルダノードが保存している。各ホルダノードの上り帯域幅は、２Ｍｂｐｓ、１Ｍｂｐｓ、４Ｍｂｐｓ、０．５Ｍｂｐｓである。そのため、ノードＮ０は、２＋１＋４を計算して、チャンクＡ０に対応する上り帯域幅の総和として、７Ｍｂｐｓを得る。チャンクＡ１は、３台のホルダノードが保存している。そのため、ノードＮ０は、全てのホルダノードの上り帯域を足し合わせて、チャンクＡ１に対応する上り帯域幅の総和として、８Ｍｂｐｓを得る。以下同様に、ノードＮ０は、チャンクＡ２〜Ａ５に対応する上り帯域幅の総和として、６Ｍｂｐｓ、４Ｍｂｐｓ、５Ｍｂｐｓ、１Ｍｂｐｓを得る。なお、ユーザノードは、該当するチャンクを保存する全てのホルダノードの上り帯域幅を足し合わせて、上り帯域幅の総和を算出しても良い。
【００５３】
各チャンクを、上り帯域幅の総和の値が小さい順に並べると、チャンクＡ５、Ａ３、Ａ４、Ａ２、Ａ０、Ａ１となる。そこで、ノードＮ０は、先ずチャンクＡ５のダウンロードを開始する。ユーザノードは、チャンクをダウンロードするとき、同一のチャンクを複数のホルダノードから並行してダウンロードする。このとき、ユーザノードは、上り帯域幅が広い順に上位所定台数のホルダノードから、ダウンロードを行う。これにより、ユーザノードは、高速にチャンクをダウンロードする。例えば、ノードＮ０は、最大３台のホルダノードからダウンロードするものとする。ノードＮ０は、ノードＮ５１及びＮ５２からそれぞれチャンクＡ０をダウンロードする。このとき、ノードＮ０は、ノードＮ５１からは、チャンクＡ０の前半部分、ノードＮ５２からは、チャンクＡ０の後半部分というように、各ホルダノードから別々の部分をダウンロードする。
【００５４】
図３（ａ）は、本実施形態の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図である。図３（ａ）において、各行は、チャンクに対応し、各列は、コンテンツの取得開始からの経過時間に対応する。図３（ａ）の各欄に記載されている数値は、チャンクのダウンロード速度である。各ホルダノードのチャンクのアップロード速度を、そのホルダノード自身の上り帯域幅と同一であるとする。すると、ノードＮ０によるチャンクＡ０のダウンロード速度は、１Ｍｂｐｓとなる。この場合、チャンクＡ０のダウンロードに１６秒の時間が必要となる。ノードＮ０の下り帯域幅は、まだ３Ｍｂｐｓ利用可能であるため、ノードＮ０は、ノードＮ３１から、チャンクＡ３のダウンロードを開始する。ノードＮ３１の上り帯域幅は４Ｍｂｐｓであるが、ノードＮ０の利用可能な下り帯域幅が３Ｍｂｐｓであるため、チャンクＡ１のダウンロード速度は、３Ｍｂｐｓとなる。
【００５５】
コンテンツの取得開始から５．３３秒経過すると、チャンクＡ１のダウンロードが完了する。すると、ノードＮ０は、チャンクＡ４のダウンロードを開始する。このとき、ノードＮ０は、ノードＮ４１〜Ｎ４４のうち、ノードＮ４１〜Ｎ４３からダウンロードを行う。この場合も、チャンクＡ４のダウンロード速度は、３Ｍｂｐｓとなる。
【００５６】
その後、コンテンツの取得開始から１０．６７秒経過すると、チャンクＡ４のダウンロードが完了し、次いで、チャンクＡ２のダウンロードが開始される。そして、コンテンツの取得開始から１６秒が経過すると、チャンクＡ２及びＡ５のダウンロードが完了する。次いで、チャンクＡ０、Ａ１の順でダウンロードが行われ、コンテンツの取得開始から２４秒でチャンクＡ１が完了する。つまり、コンテンツＡの取得に２４秒要したことになる。この例では、ユーザノードの下り帯域幅全体を、２４秒間利用することができた。
【００５７】
図３（ｂ）は、比較例の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図である。もし、ノードＮ０が、ホルダノードの上り帯域幅を考慮せずに、例えば、シーケンス番号順、すなわち、Ａ０、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５の順でチャンクをダウンロードしたとする。そうすると、Ａ０〜Ａ４までは、１つのチャンクのダウンロードで、ノードＮ０の下り帯域幅が占有される。各チャンクのダウンロードはそれぞれ４秒要する。ノードＮ０は、チャンクＡ４のダウンロードが完了すると、チャンクＡ５をダウンロードする。チャンクＡ５のダウンロード速度は１Ｍｂｐｓであるから、利用可能な下り帯域幅はまだ３Ｍｂｐｓ存在している。しかしながら、これ以上ダウンロードするチャンクが存在しない。そのため、３Ｍｂｐｓ分の下り帯域幅が余った状態で、この後、コンテンツ取得の完了までに１６秒が費やされることになる。その結果、コンテンツの取得に３６秒を要する。
【００５８】
図３（ａ）及び図３（ｂ）に示すように、本実施形態の具体例では、比較例よりも１２秒早くコンテンツの取得を完了することができた。なお、ユーザノードは、ダウンロードするチャンクの順序を、ホルダノードの上り帯域幅の代表値の小さい順としても良い。例えば、複数のホルダノードの上り帯域の総和の値が大きくても、上り帯域の平均値や中央値等が小さい場合がある。そして、ホルダノードの上り帯域幅の代表値が小さいチャンクほど、１台あたりのノード装置からのダウンロード速度は遅くなる。そのため、ユーザノードは、多数のホルダノードからダウンロードを行わないと、上り帯域の総和の値ほどにはダウンロード速度が速くならない。つまり、チャンクのダウンロードの効率が低くなる。よって、ダウンロードの効率を考慮した順序で、チャンクのダウンロードを開始させることができる。
【００５９】
また、ユーザノードは、ダウンロードするチャンクの順序を、ホルダノードの上り帯域幅の最小値の小さい順としても良い。例えば、チャンクを保存するホルダノードの中から任意のホルダノードを選択してダウンロードしたとする。この場合、上り帯域幅の最小値が大きいほど、最低限のダウンロード速度が速くなる。つまり、上り帯域幅の最小値が大きいほど、ダウンロード速度が保証されていることになる。よって、最低限のダウンロード速度が遅いチャンクの順に、ダウンロードを開始させることができる。
【００６０】
また、ユーザノードは、ダウンロードを開始させるチャンクの順序を、ホルダノードの上り帯域幅の最大値の小さい順としても良い。例えば、チャンクを保存するホルダノードのうち上り帯域幅が広いホルダノードから優先的にダウンロードしたとする。この場合、ホルダノードの上り帯域幅の最大値が大きいチャンクであるほど、実際のダウンロード速度が速くなる。よって、実際のダウンロード速度が遅いチャンクの順に、ダウンロードを開始させることができる。また、ユーザノードは、上り帯域幅が広い順に上位所定台数のホルダノードの上り帯域幅値のみに基づいて、代表値、最小値または最大値を求めても良い。
【００６１】
［３．各装置の構成及び機能］
次に、図４及び図５を参照して、各装置の構成及び機能について説明する。図４は、センターサーバＳＡの概要構成例を示す図である。また、図５は、ノードＮｎの概要構成例を示す図である。
【００６２】
［３．１  センターサーバＳＡの構成］
センターサーバＳＡは、図４に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データ及びプログラムを記憶するＲＯＭ等から構成された制御部１１を備えている。また、センターサーバＳＡは、各種データ及び各種プログラム等を記憶保存するためのＨＤ（ハードディスク）等から構成された記憶部１２を備えている。更に、センターサーバＳＡは、ネットワーク８等を通じてノードＮｎとの間の情報の通信制御を行うための通信部１３を備えている。また更に、センターサーバＳＡは、各種情報を表示するＣＲＴ，液晶ディスプレイ等の表示部１４を備えている。更にまた、センターサーバＳＡは、オペレータからの指示を受け付けこの指示に応じた指示信号を制御部１１に対して与える入力部１５（例えば、キーボード、マウス等）を備えている。そして、制御部１１、記憶部１２、通信部１３、表示部１４、及び入力部１５はバス１６を介して相互に接続されている。
【００６３】
記憶部１２には、各ノードＮｎのノードＩＤ、ＩＰアドレス及びポート番号等が記憶されている。また、記憶部１２には、各コンテンツをそれぞれ構成する各チャンクが、チャンクＩＤに対応付けて記憶されている。更に、記憶部１２には、オペレーティングシステム、制御プログラム等の各種プログラムが記憶されている。制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラムを読み出して実行することにより、センターサーバＳＡの各部を制御する。
【００６４】
［３．２  ノードＮｎの構成］
各ノードＮｎは、図５に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データ及びプログラムを記憶するＲＯＭ等から構成されたコンピュータとしての制御部２１を備えている。また、各ノードＮｎは、各種データ及び各種プログラム等を記憶保存するためのＨＤ（ハードディスク）等から構成された記憶部２２と、ダウンロードされたチャンク等を一時蓄積するバッファメモリ２３とを備えている。更に、各ノードＮｎは、コンテンツに含まれるエンコードされたビデオデータ（映像情報）及びオーディオデータ（音声情報）等をデコードするデコーダ部２４を備えている。また更に、各ノードＮｎは、このデコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部２５と、この映像処理部２５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部２６と、を備えている。更にまた、各ノードＮｎは、上記デコードされたオーディオデータをアナログオーディオ信号にＤ （Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する音声処理部２７と、この音声処理部２７から出力されたオーディオ信号を音波として出力するスピーカ２８と、を備えている。また更に、各ノードＮｎは、ネットワーク８を通じて他のノードＮｎ等間の情報の通信制御を行うための通信部２９を備えている。更にまた、各ノードＮｎは、ユーザからの指示を受け付けこの指示に応じた指示信号を制御部２１に対して与える入力部３０（例えば、キーボード、マウス、或いは、リモコンや操作パネル等）を備えている。そして、制御部２１、記憶部２２、バッファメモリ２３、デコーダ部２４、通信部２９、及び入力部３０はバス３１を介して相互に接続されている。
【００６５】
記憶部２２は、本発明における記憶手段の一例を構成する。この記憶部２２には、ＤＨＴを用いたルーティングテーブル、チャンク情報、及びセンターサーバＳＡのアドレス情報等が記憶されている。また、記憶部２２には、ダウンロードされたチャンクが、チャンクＩＤに対応付けて記憶されている。また、記憶部２２には、取得されたノードＮｎ自身の上り帯域幅値及び下り帯域幅値が記憶されている。更に、記憶部２２には、オペレーティングシステム、及び各種プログラム（本発明の情報処理プログラムを含む）が記憶されている。なお、各種プログラムは、例えば、センターサーバＳＡ等からダウンロードされるようにしても良い。また、各種プログラムは、例えば、ＤＶＤ（Digital Versatile Disc）等の記録媒体に記録されて当該記録媒体からドライブを介して読み込まれるようにしても良い。
【００６６】
制御部２１は、ＣＰＵが記憶部２２等に記憶されたプログラムを読み出して実行することにより、第１取得手段、第２取得手段、判定手段、制御手段、第１受信手段、第１送信手段、第２送信手段、及び第２受信手段として機能する。
【００６７】
［４．コンテンツ分散保存システムの動作］
次に、図６を参照して、本実施形態におけるコンテンツ分散保存システムＳの動作について説明する。図６（ａ）は、本実施形態におけるユーザノードの制御部２１のコンテンツ取得処理における処理例を示すフローチャートである。また、図６（ｂ）は、本実施形態におけるルートノードの制御部２１の問い合わせメッセージ受信時処理における処理例を示すフローチャートである。
【００６８】
図６（ａ）に示すユーザノードのコンテンツ取得処理は、例えば、ユーザが入力部３０を操作して所望のコンテンツを指定したときに開始される。
【００６９】
先ず、ユーザノードの制御部２１は、指定されたコンテンツのメタファイルを取得する（ステップＳ１）。具体的に、制御部２１は、指定されたコンテンツのコンテンツＩＤを含む問い合わせメッセージをルートノードに向けて送信する。そして、制御部２１は、ルートノードから、メタファイルのホルダノードのノード情報を受信する。そして、制御部２１は、受信したノード情報に基づいて、ホルダノードからメタファイルをダウンロードする。
【００７０】
次いで、制御部２１は、取得したメタファイルに基づいて、ダウンロード管理テーブルを、例えば記憶部２２に作成する（ステップＳ２）。ダウンロード管理テーブルは、チャンクのダウンロードを管理するためのテーブルである。ダウンロード管理テーブルには、チャンク毎に、チャンクＩＤ、ダウンロード状態、チャンク情報有無、及びダウンロード速度が設定される。ダウンロード状態は、対応するチャンクのダウンロードの状態を示す。ダウンロードが完了している場合、ダウンロード状態は「ダウンロード済み」に設定される。また、ダウンロードがまだ開始されていない場合、ダウンロード状態は「未ダウンロード」に設定される。また、現在ダウンロード中である場合、ダウンロード状態は「ダウンロード中」に設定される。チャンク情報有無は、対応するチャンクのチャンク情報が記憶部２２に保持されているか否かを示す。チャンク情報が保持されている場合、チャンク情報有無は「有り」に設定され、チャンク情報が保持されていない場合、チャンク情報有無は「無し」に設定される。ダウンロード速度は、対応するチャンクの実際のダウンロード速度である。
【００７１】
ここで、制御部２１は、メタファイルに記載されている各チャンクＩＤを、ダウンロード管理テーブルに設定する。また、制御部２１は、全てのチャンクのダウンロード状態を「未ダウンロード」に設定し、全てのチャンクのチャンク情報有無を「無し」に設定する。
【００７２】
次いで、制御部２１は、ダウンロードを開始していないチャンクのチャンク情報を取得する（ステップＳ３）。つまり、制御部２１は、ダウンロード管理テーブルにおいて、ダウンロード状態が「未ダウンロード」に設定されているチャンクのチャンク情報を取得する。
【００７３】
ここで、ユーザノードがコンテンツを取得するときに一度に保持することができるチャンク情報の個数には、上限が設けられている。この上限を「保持上限」という。この保持上限は、例えば、予め記憶部２２に記憶されている。制御部２１は、チャンク情報の保持数が保持上限に達するまで、チャンク情報を取得する。例えば、保持上限が１０個であるとする。そして、例えば、現在のチャンク情報の保持数が０個である場合、１０個のチャンク情報が取得される。また例えば、現在のチャンク情報の保持数が９個である場合、１個のチャンク情報が取得される。
【００７４】
コンテンツを構成するチャンクが多数になると、ユーザノードは、多数のチャンク情報を取得する必要がある。最初に全てのチャンクについてチャンク情報を取得すると、チャンクのダウンロードの開始が遅くなる。そこで、一度に保持することができるチャンク情報の個数に上限を設けることにより、一度に取得するチャンクの個数を制限している。これにより、チャンクのダウンロードの開始を早くすることができる。
【００７５】
制御部２１は、ダウンロード管理テーブルにおいて、「有り」に設定されているチャンク情報有無の個数を数えることにより、現在のチャンク情報の保持数を計算する。次いで、制御部２１は、保持上限から現在のチャンク情報の保持数を減算して、取得すべきチャンク情報の個数を計算する。次いで、制御部２１は、ダウンロード管理テーブルにおいて、ダウンロード状態が「未ダウンロード」に設定され、且つ、チャンク情報有無が「無し」に設定されているチャンクの中から、任意のチャンクを選択する。次いで、制御部２１は、選択したチャンクのチャンクＩＤを含む問い合わせメッセージを、ルートノードに向けて送信する。制御部２１は、この処理を、取得すべきチャンク情報の個数分実行する。
【００７６】
図６（ｂ）に示すルートノードの問い合わせメッセージ受信時処理は、ルートノードが、問い合わせメッセージを受信したときに開始される。
【００７７】
先ず、ルートノードの制御部２１は、記憶部２２に記憶されているチャンク情報の中から、受信した問い合わせメッセージに含まれるチャンクＩＤに対応するチャンク情報を全て取得する（ステップＳ１１）。次いで、制御部２１は、取得したチャンク情報を、ユーザノードに送信する（ステップＳ１２）。
【００７８】
ユーザノードの制御部２１は、ルートノードからチャンク情報を受信すると、受信したチャンク情報を記憶部２２に一時的に保持する。また、制御部２１は、受信したチャンク情報に対応するチャンク情報有無を「有り」に変更する。そして、制御部２１は、保持上限となるまでチャンク情報を受信すると、ステップＳ４に移行する。
【００７９】
ステップＳ４において、制御部２１は、記憶部２２に保持されているチャンク情報に基づいて、ホルダノードの上り帯域の総和をチャンク毎に算出する（ステップＳ４）。具体的に、制御部２１は、ダウンロード状態が「未ダウンロード」に設定され、且つ、チャンク情報有無が「有り」に設定されているチャンクのチャンク情報を、記憶部２２から取得する。次いで、制御部２１は、チャンク情報に設定されている上り帯域幅値の中から、上り帯域幅が広い順に総和算出台数分の上り帯域幅値を取得する。そして、制御部２１は、取得した上り帯域幅値を足し合わせて、上り帯域幅の総和を算出する。制御部２１は、この計算を、ダウンロード状態が「未ダウンロード」に設定され、且つ、チャンク情報有無が「有り」に設定されている各チャンクについて実行する。つまり、制御部２１は、ダウンロードを開始していないチャンクのうち、チャンク情報が保持されているチャンクについて、上り帯域幅の総和を算出する。
【００８０】
次いで、制御部２１は、ダウンロードを開始していないチャンクのうち、算出した上り帯域幅の総和の値が最も小さいチャンクのダウンロードを開始する（ステップＳ５）。具体的に、制御部２１は、上り帯域幅の総和の値が最も小さいチャンクを選択する。次いで、制御部２１は、選択したチャンクのチャンク情報に基づいて、上り帯域幅が広いホルダノードの順に、ホルダノードを複数選択する。次いで、制御部２１は、選択した各ホルダノードに対して、選択したチャンクのチャンクＩＤを含むチャンク要求メッセージをそれぞれ送信する。チャンク要求メッセージを受信したホルダノードは、チャンク要求メッセージに含まれるチャンクＩＤに対応するチャンクのアップロードを開始する。ユーザノードの制御部２１は、ダウンロードを開始したチャンクのダウンロード状態を「ダウンロード中」に変更する。
【００８１】
次いで、制御部２１は、ダウンロード速度を取得する（ステップＳ６）。具体的に、制御部２１は、ダウンロード中の各チャンクのダウンロード速度をそれぞれ測定する。そして、制御部２１は、測定したダウンロード速度を、対応するチャンクのダウンロード速度として、ダウンロード管理テーブルに設定する。
【００８２】
次いで、制御部２１は、利用可能な下り帯域幅が存在するか否かを判定する（ステップＳ７）。具体的に、制御部２１は、ダウンロード中の各チャンクについて取得したダウンロード速度を足し合わせて、ダウンロード速度の総和を算出する。つまり、制御部２１は、チャンクのダウンロードに占有されている下り帯域幅を算出する。次いで、制御部２１は、記憶部２２に記憶されている下り帯域幅値から、ダウンロード速度の総和を減算して、利用可能な下り帯域幅値を算出する。なお、記憶部２２に記憶されている下り帯域幅値が、チャンクのダウンロード専用の下り帯域幅の値ではなく、その他の情報の受信にも用いられる汎用の下り帯域幅の値である場合がある。その他の情報としては、例えば、問い合わせメッセージ、パブリッシュメッセージ、チャンク要求メッセージ等がある。この場合、制御部２１は、記憶部２２に記憶されている下り帯域幅値から、その他の情報の受信速度をも減算して、利用可能な下り帯域幅値を算出する。つまり、制御部２１は、ユーザノード自身の下り帯域幅のうち、純粋に空いている帯域幅の値を算出する。
【００８３】
制御部２１は、算出した利用可能な下り帯域幅の値が０である場合には、利用可能な下り帯域幅が存在しないと判定する。或いは、制御部２１は、利用可能な下り帯域幅の値が、所定値以下である場合に、利用可能な下り帯域幅が存在しないと判定しても良い。つまり、制御部２１は、新たなチャンクをダウンロードするために十分な下り帯域を確保することができない場合には、利用可能な下り帯域幅が存在しないと判定しても良い。
【００８４】
制御部２１は、利用可能な下り帯域幅が存在すると判定した場合には（ステップＳ７：ＹＥＳ）、ステップＳ５に移行する。そして、制御部２１は、次に上り帯域幅の総和の値が小さいチャンクのダウンロードを開始させる。ここで、制御部２１は、例えば、新しくダウンロードを開始させたチャンクのダウンロード速度が、算出した利用可能な下り帯域幅を超えないように、ホルダノードとの間でチャンクの転送速度を調整する。これは、例えば、既にダウンロード中のチャンクのダウンロード速度を低下させないためである。
【００８５】
制御部２１は、ステップＳ５〜Ｓ７の処理を繰り返すことにより、利用可能な下り帯域幅がなくなるまで、チャンクのダウンロードの開始を繰り返す。これにより、制御部２１は、下り帯域幅が狭いホルダノードが保存するチャンクから順に、ダウンロードを開始させ、互いに異なる複数のチャンクを並行してダウンロードする。
【００８６】
そして、制御部２１は、利用可能な下り帯域幅が存在しないと判定した場合には（ステップＳ７：ＮＯ）、ダウンロード中のチャンクのうち、ダウンロードが完了したチャンクが存在するか否かを判定する（ステップＳ８）。このとき、制御部２１は、ダウンロードが完了したチャンクが存在しないと判定した場合には（ステップＳ８：ＮＯ）、ステップＳ８の判定を繰り返す。つまり、制御部２１は、何れかのチャンクのダウンロードが完了するまで待機する。そして、制御部２１は、ダウンロードが完了したチャンクが存在すると判定した場合には（ステップＳ８：ＹＥＳ）、パブリッシュメッセージをルートノードに向けて送信する（ステップＳ９）。具体的に、制御部２１は、ダウンロードが完了したチャンクのチャンクＩＤ、記憶部２２に記憶されているユーザノード自身のノード情報及び上り帯域幅値を含むパブリッシュメッセージを送信する。また、制御部２１は、ダウンロードが完了したチャンクのチャンク情報を記憶部２２から削除する。また、制御部２１は、ダウンロードが完了したチャンクのダウンロード状態を「ダウンロード完了」に変更する。また、制御部２１は、ダウンロードが完了したチャンクのチャンク情報有無を「無し」に設定する。
【００８７】
次いで、制御部２１は、全てのチャンクのダウンロードが完了したか否かを判定する（ステップＳ１０）。このとき、制御部２１は、ダウンロードが完了していないチャンクが存在すると判定した場合には（ステップＳ１０：ＮＯ）、ステップＳ３に移行する。ここで、記憶部２２から少なくとも１つのチャンク情報が削除されたので、ダウンロードが開始されていないチャンクのチャンク情報が新たに取得される。そして、ダウンロードが開始されておらず、且つ、チャンク情報が保持されているチャンクの中から、下り帯域幅が狭いホルダノードが保存するチャンクの順に、ダウンロードが開始される。
【００８８】
制御部２１は、ステップＳ３〜Ｓ１０の処理を繰り返すことにより、全てのチャンクのダウンロードが完了したと判定すると（ステップＳ１０：ＹＥＳ）、コンテンツ取得処理を終了させる。このとき、制御部２１は、作成したダウンロード管理テーブルを、記憶部２２から削除する。
【００８９】
なお、本発明の下り帯域情報を、ノードＮｎが通信先のノードＮｎとの間で確立するセッションの数の上限値に適用しても良い。またこの場合、本発明の上り帯域情報を、チャンクを保存するホルダノードの台数に適用しても良い。
【００９０】
ノードＮｎは、通信先のノードＮｎと接続してセッションを確立する。そのため、ノードＮｎが通信先として同時接続しているノードＮｎの台数がセッション数となる。このセッション数の上限は、通常制限されている。ここで、１セッションあたりの通信速度が固定されているシステムである場合、セッション数の上限は、ホルダノードの下り帯域幅と等価とみなすことができる。すなわち、セッション数の上限×１セッションあたりの通信速度＝最大通信速度となるからである。また、１セッションあたりの通信速度が固定であることから、ホルダノード１台あたりの上り帯域幅＝１セッションあたりの通信速度とみなすことができる。この場合、チャンク毎のホルダノードの総数が、チャンク毎のホルダノードの上り帯域幅の総和に相当する。
【００９１】
例えば、ユーザノードのセッション数の上限が２０であり、１セッションあたりの通信速度が１Ｍｂｐｓであるとする。ユーザノードが、チャンクＢ１〜Ｂ４の４個のチャンクにより構成されているコンテンツＢを取得するとする。また、チャンクＢ１〜Ｂ４のデータサイズは、それぞれ１００Ｍビットであるとする。チャンクＢ１、Ｂ２、Ｂ３、Ｂ４それぞれを保存する保存するホルダノードの台数は、５０、７０、１００、５である。チャンクを保存するホルダノードの総数が、チャンクを保存するホルダノードの上り帯域幅の総和に相当するから、チャンクＢ４、Ｂ１、Ｂ２、Ｂ３の順にチャンクのダウンロードが開始されることになる。ユーザノードが、５台のホルダノードから、チャンクＢ４のダウンロードを開始すると、利用可能な残りのセッション数は１５となる。そこで、ユーザノードは、１５台のホルダノードから、チャンクＢ１のダウンロードを開始する。このようにして、ユーザノードは順次チャンクをダウンロードする。こうすると、ユーザノードは、コンテンツの取得の最後まで、セッションを有効に利用することができる。
【００９２】
一方、ユーザノードが、例えば、チャンクＢ１、Ｂ２、Ｂ３、Ｂ４の順にチャンクのダウンロードを開始したとする。チャンクＢ１〜Ｂ３までのダウンロードの際、ユーザノードは、２０個全てのセッションを利用してダウンロードを行う。しかしながら、チャンクＢ３のダウンロードが完了して、チャンクＢ４のダウンロードを行っているときには、１５個のセッションが余っている状態となる。つまり、セッションを有効に利用していないことになる。
【００９３】
以上のことから、下り帯域情報をセッション数に適用しても、本発明の効果を奏することができる。
【００９４】
また、上記実施形態においては、オーバーレイネットワークに、ＤＨＴを利用したピアツーピアネットワークが適用されていたが、これに限られるものではない。例えば、他のピアツーピアシステム、または、オーバーレイネットワークを用いたシステムが適用されても良い。ＤＨＴを利用しないピアツーピアシステムとしては、例えば、ハイブリッド型のピアツーピアシステムがある。ハイブリッド型のピアツーピアシステムの場合、チャンクの所在は、例えば、センターサーバＳＡが管理する。そのため、センターサーバＳＡは、各ホルダノードのノード情報、上り帯域幅値及び保存するチャンクのチャンクＩＤを、チャンク情報として記憶する。この場合のセンターサーバＳＡは、本発明の情報処理装置の一例である。ユーザノードは、センターサーバＳＡに問い合わせメッセージを送信することにより、取得するコンテンツを構成するチャンクのチャンク情報を取得する。
【符号の説明】
【００９５】
８  ネットワーク
９  オーバーレイネットワーク
２１  制御部
２２  記憶部
２３  バッファメモリ
２９  通信部
Ｎｎ  ノード
ＳＡ  センターサーバ
Ｓ  コンテンツ分散保存システム
【図１】
2012010225.tif 000003
【図２】
2012010225.tif 000004
【図３】
2012010225.tif 000005
【図４】
2012010225.tif 000006
【図５】
2012010225.tif 000007
【図６】
2012010225.tif 000008