説明

情報通信システム、ノード装置、情報処理方法、及び情報処理プログラム

【課題】ノード装置が複数の分割データに分割されたコンテンツを取得するときに、コンテンツ全体の取得に要する時間を短くすることを可能とする。
【解決手段】ノード装置は、コンテンツを取得するノード装置の下り帯域幅を示す下り帯域情報を取得し、分割データを保存するノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得し、コンテンツを取得するとき、取得された下り帯域情報に基づいて、分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定し、分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない分割データの中から、上り帯域情報が示す上り帯域幅が狭い保存ノード装置が保存する分割データの順に、利用可能な下り帯域幅を用いてダウンロードを開始させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))方式の通信システムの技術分野に関する。
【背景技術】
【0002】
近年、ピアツーピア方式の通信システムが注目されている。このピアツーピア方式の通信システムにおいて、1つのコンテンツを複数のデータに分割して、複数のノード装置に分散して保存させる技術が知られている。ここで、分割された各データを、「分割データ」と称する。この技術においては、コンテンツを取得するノード装置が、コンテンツを構成する各分割データを他のノード装置からダウンロードする。
【0003】
また、特許文献1には、分割データに相当するブロックに分割されたコンテンツの配信スループットを最大化することを目的とする技術が記載されている。具体的に、特許文献1に記載の技術においては、各ノード装置に保存させるブロックを、ノード装置のアップロードするときの上り帯域幅に比例して割り当てる。これにより、上り帯域幅が広いノード装置であるほど、再配信するブロックの数を多くする。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−25408号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ノード装置が或る分割データをダウンロードしているとき、そのノード装置の下り帯域幅に、まだ分割データのダウンロードに利用可能な下り帯域幅が残っている場合がある。この場合、ノード装置は、この利用可能な下り帯域幅を利用して別の分割データをダウンロードすることができる。こうしてノード装置は、複数の分割データを並行してダウンロードすることで、コンテンツ全体の取得に要する時間を短くすることができる。しかしながら、特許文献1に記載の技術のように、ダウンロードする分割データの順序が考慮されていないと、複数の分割データを並行してダウンロードすることのメリットを十分に生かせない場合があった。具体的に、コンテンツの取得の序盤で、保存するノード装置の上り帯域幅が広い分割データをダウンロードすると、終盤では、保存するノード装置の上り帯域幅が狭い分割データをダウンロードすることになる。コンテンツの取得の終盤では、ダウンロードに利用可能な下り帯域幅が生じても、これからダウンロードすべき分割データがもう存在しない状態となる。このときに上り帯域幅が狭いノード装置から分割データをダウンロードしていると、ダウンロード速度が低下する。そのため、コンテンツを取得するノード装置の下り帯域幅の占有率が低くなる。従って、下り帯域幅の占有率が低いまま、ダウンロード速度が遅い分割データを長い時間をかけてダウンロードすることになる。このように、下り帯域幅を有効に利用することができないことから、コンテンツ全体の取得に時間を要する。
【0006】
そこで、本発明は、以上の点に鑑みてなされたものである。本発明は、ノード装置が複数の分割データに分割されたコンテンツを取得するときに、コンテンツ全体の取得に要する時間を短くすることを可能とする情報通信システム、ノード装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、請求項1に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムであって、前記ノード装置は、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得手段と、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得手段と、前記コンテンツを取得するとき、前記第1取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、を備えることを特徴とする。
【0008】
この発明によれば、コンテンツの取得の序盤では、上り帯域幅が狭いノード装置が保存する分割データからダウンロードが開始される。また、コンテンツを取得する側のノード装置の下り帯域幅に、利用可能な帯域幅が存在する場合には、新たな分割データのダウンロードが順次開始される。そのため、複数の分割データを並行してダウンロードすることができる。よって、上り帯域幅が狭いノード装置から分割データをダウンロードしても、下り帯域幅の占有率を高くすることができる。また、コンテンツの取得の終盤では、上り帯域幅が広いノード装置が保存する分割データがダウンロードされるので、下り帯域幅の占有率を高くすることができる。従って、下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【0009】
請求項2に記載の発明は、前記分割データを識別する識別情報と、前記分割データを保存する前記保存ノード装置のアドレスを示すアドレス情報と、前記保存ノード装置の前記上り帯域情報と、を対応付けて記憶する記憶手段と、前記コンテンツを取得する前記ノード装置から、前記保存ノード装置のアドレス情報の要求を示す要求情報を受信する第1受信手段と、前記第1受信手段により受信された前記要求情報に含まれる前記識別情報に対応する前記アドレス情報及び前記上り帯域情報を、前記ノード装置に送信する第1送信手段と、を備える情報処理装置を更に備え、前記第2取得手段は、取得するコンテンツを構成する前記分割データの前記識別情報を含む前記要求情報を前記情報処理装置に送信する第2送信手段と、前記情報処理装置から送信された前記アドレス情報及び前記上り帯域情報を受信する第2受信手段と、を備えることを特徴とする。
【0010】
この発明によれば、ノード装置は、取得するコンテンツを構成する分割データを保存するノード装置の情報を取得するときに、分割データを保存するノード装置の上り帯域幅を示す情報も合わせて取得することができる。
【0011】
請求項3に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置であって、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得手段と、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得手段と、前記コンテンツを取得するとき、前記第1取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、を備えることを特徴とする。
【0012】
この発明によれば、コンテンツの取得の序盤では、上り帯域幅が狭いノード装置が保存する分割データからダウンロードが開始される。また、コンテンツを取得する側のノード装置の下り帯域幅に、利用可能な帯域幅が存在する場合には、新たな分割データのダウンロードが順次開始される。そのため、複数の分割データを並行してダウンロードすることができる。よって、上り帯域幅が狭いノード装置から分割データをダウンロードしても、下り帯域幅の占有率を高くすることができる。また、コンテンツの取得の終盤では、上り帯域幅が広いノード装置が保存する分割データがダウンロードされるので、下り帯域幅の占有率を高くすることができる。従って、下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【0013】
請求項4に記載の発明は、前記制御手段は、前記第2取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の和を決定し、前記上り帯域幅の和が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする。
【0014】
分割データを保存する複数のノード装置全体としての上り帯域幅が広いほど、分割データを安定して高速にダウンロードすることができると考えられる。この発明によれば、上り帯域幅の和に基づいて順序が決定されるので、分割データのダウンロードの開始の順序を、下り帯域幅の実際の占有率が低い順に近づけることができる。
【0015】
請求項5に記載の発明は、前記制御手段は、前記第2取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の代表値を決定し、前記代表値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする。
【0016】
例えば、平均値や中央値等の、複数のノード装置の上り帯域幅から決定された上り帯域幅の代表値が小さい複数のノード装置が保存する分割データほど、1つあたりのノード装置からのダウンロードの速度は遅くなる。そのため、ダウンロードの速度を高くするためには、多くのノード装置からダウンロードを行う必要があり、ダウンロードの効率が低くなる。この発明によれば、ダウンロードの効率を考慮した適切な順序で分割データをダウンロードすることができる。
【0017】
請求項6に記載の発明は、前記制御手段は、前記第2取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の最小値または最大値の何れか一方を決定し、決定された値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする。
【0018】
この発明によれば、同じ分割データを保存するノード装置のうち実際に或るノード装置からダウンロードするときの速度を考慮した順序で分割データをダウンロードすることができる。具体的に、最低限のダウンロードの速度の保証の程度を考慮する場合には、上り帯域幅の最小値で順序を決定することができる。また、上り帯域幅が広いノード装置から優先してダウンロードを行う場合には、上り帯域幅の最大値で順序を決定することができる。
【0019】
請求項7に記載の発明は、前記制御手段は、前記分割データ毎に、前記保存ノード装置のうち、上り帯域幅の広さの順位の中で、上位に位置する所定数の前記保存ノード装置の前記上り帯域情報に基づいて、ダウンロードを開始させる前記分割データの順序を決定することを特徴とする。
【0020】
この発明によれば、分割データのダウンロードの開始の順序の決定に、上り帯域幅の上位所定順位以内に入るノード装置の上り帯域幅のみが考慮される。そのため、ダウンロードを開始させる分割データの順序から、ダウンロードの速度が遅いためにダウンロード先としては適切ではないノード装置の上り帯域幅の影響を除去することができる。
【0021】
請求項8に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置による情報処理方法であって、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得ステップと、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得ステップと、前記コンテンツを取得するとき、前記第1取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、を含むことを特徴とする。
【0022】
請求項9に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置に、前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得ステップと、前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得ステップと、前記コンテンツを取得するとき、前記第1取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、を実行させることを特徴とする。
【発明の効果】
【0023】
本発明によれば、コンテンツの取得の序盤では、複数の分割データを並行してダウンロードすることができる。よって、上り帯域幅が狭いノード装置から分割データをダウンロードしても、下り帯域幅の占有率を高くすることができる。また、コンテンツの取得の終盤では、上り帯域幅が広いノード装置が保存する分割データがダウンロードされるので、下り帯域幅の占有率を高くすることができる。従って、下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【図面の簡単な説明】
【0024】
【図1】一実施形態におけるコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
【図2】(a)乃至(f)は、ノードN0がチャンクA0〜A5それぞれのルートノードから取得したチャンク情報の内容の一例である。
【図3】(a)は、一実施形態の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図であり、(b)は、比較例の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図である。
【図4】センターサーバSAの概要構成例を示す図である。
【図5】ノードNnの概要構成例を示す図である。
【図6】(a)は、一実施形態におけるユーザノードの制御部21のコンテンツ取得処理における処理例を示すフローチャートであり、(b)は、一実施形態におけるルートノードの制御部21の問い合わせメッセージ受信時処理における処理例を示すフローチャートである。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【0026】
[1.コンテンツ分散保存システムの概要構成及び動作概要]
始めに、図1を参照して、本実施形態におけるコンテンツ分散保存システムの構成及び動作概要について説明する。図1は、本実施形態におけるコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。図1は、コンテンツ分散保存システムSの具体的構成図101と、概念的構成図100とから構成される。コンテンツ分散保存システムSの具体的構成図101が示すように、コンテンツ分散保存システムSは、多数のノード装置Nn(n=0,1,2,3・・・の何れか)から構成される。
【0027】
図1の具体的構成図101内に示すように、コンテンツ分散保存システムSは、複数のノード装置Nnがインターネットを介して接続されることで構成される。また、図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a,4b、DSL(Digital Subscriber Line)回線事業者の装置5a,5b、FTTH(Fiber To The Home)回線事業者の装置6、及び通信回線7等によって、インターネット等のネットワーク8が構築されている。ネットワーク8は、現実世界の通信ネットワークである。なお、図1の例におけるネットワーク8には、データパケットを転送するためのルータが適宜挿入されているが、図1では図示を省略している。また、通信回線7としては、例えば、電話回線や光ケーブル等が用いられる。
【0028】
このようなネットワーク8には、複数のノード装置Nnが接続されている。以下、ノード装置を、「ノード」という。また、各ノードNnには、固有の製造番号及びIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態におけるコンテンツ分散保存システムSは、これらのノードNnのうち、図1の概念的構成図100内に示すように、何れか複数のノードNnの接続により形成されるピアツーピア方式のネットワークシステムとなっている。
【0029】
なお、図1の概念的構成図100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9である。論理的なネットワークであるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムSに接続されている各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。
【0030】
各ノードNnは、夫々、DHT(Distributed Hash Table)を用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。コンテンツ分散保存システムSに接続している1台のノードNnは、必要最低限のノードNnのノード情報をルーティングテーブルとして記憶している。各ノードNn間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードNnについてのノード情報が取得される。なお、ノード情報に含まれるIPアドレスは、本発明におけるアドレス情報の一例である。
【0031】
コンテンツ分散保存システムSにおいては、内容の異なる様々なコンテンツが複数のノードNnに分散して保存される。各コンテンツには、それぞれコンテンツ名及びコンテンツ毎に固有の識別情報であるコンテンツIDが付与されている。各コンテンツのコンテンツ名及びコンテンツID等の属性情報は、コンテンツカタログ情報に記述されている。コンテンツカタログ情報は、センターサーバSAにより作成されて、全てのノードNnに配信される。
【0032】
また、各コンテンツは、複数のデータに分割されている。この分割されたデータを、「チャンク」という。各チャンクは、例えば、センターサーバSAにより、コンテンツを所定のデータサイズで分割することにより生成される。各チャンクは、複数のノードNnに分散されて保存される。これにより、元となるコンテンツが複数のノードNnに分散して保存されることになる。各チャンクのオリジナルは、センターサーバSAに保存されている。各チャンクには、それぞれシーケンス番号及びチャンクIDが付与されている。シーケンス番号は、例えば、分割された複数のチャンクを、元となるコンテンツを構成するように並べたときの並び順に相当する。チャンクIDは、チャンク毎に固有の識別情報である。なお、チャンクは、本発明における分割データの一例である。また、チャンクIDは、本発明における識別情報の一例である。
【0033】
コンテンツを構成する各チャンクのシーケンス番号及びチャンクIDは、コンテンツ毎にメタファイルに記載されている。コンテンツのメタファイルは、そのコンテンツのコンテンツIDと対応付けられている。メタファイルは、チャンクと同様に、複数のノードNnに分散されて保存される。
【0034】
チャンクを保存しているノードNnを、「ホルダノード」という。また、チャンクの所在は、チャンク情報として、チャンクの所在を管理(記憶)しているノードNnにより記憶される。以下、チャンクの所在を管理しているノードNnを、「ルートノード」という。チャンク情報は、チャンクのチャンクIDと、チャンクを保存したホルダノードのノード情報と、チャンクを保存したホルダノードの上り帯域幅を示す上り帯域幅値との組を含む。上り帯域幅値は、チャンクのダウンロード(取得)を開始する順序を決定するために用いられる情報である。ルートノードは、例えば、チャンクIDと最も近いノードIDを有するノードNnであるように定められる。チャンクIDと最も近いノードIDとは、例えば、IDの上位桁が最も多く一致するノードIDである。なお、ホルダノードは、本発明における保存ノード装置の一例である。また、ルートノードは、本発明における情報処理装置の一例である。
【0035】
或るノードNnのユーザが、所望のコンテンツを取得したい場合、ノードNnは、先ずコンテンツのメタファイルを取得する。以下、ユーザによりコンテンツの取得を望むノードNnを、「ユーザノード」という。なお、メタファイルの取得方法は、チャンクIDに代えてコンテンツIDを用いることを除いて、基本的にこの後説明するチャンクの取得方法と同様である。そのため、メタファイルの取得方法の詳しい説明を省略する。
【0036】
ユーザノードは、メタファイルを取得すると、メタファイルに記載されている各チャンクIDに基づいて、所望されたコンテンツを構成する各チャンクを保存するホルダノードの情報をそれぞれ問い合わせる。具体的に、ユーザノードは、問い合わせメッセージを送信する。この問い合わせメッセージは、取得を望むチャンクのチャンクID及びユーザノードのノード情報を含む。この問い合わせメッセージが、ユーザノードが記憶するDHTのルーティングテーブルに従って、他のノードNnに対して送信される。つまり、ユーザノードは、問い合わせメッセージを、ルートノードに向けて送信する。これにより、問い合わせメッセージは、チャンクIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。この問い合わせメッセージは、本発明における要求情報の一例である。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0037】
問い合わせメッセージを受信したルートノードは、これに含まれるチャンクIDに対応するチャンク情報をチャンク情報キャッシュから取得する。ルートノードは、取得したチャンク情報を、問い合わせメッセージの送信元であるユーザノードに対して返信する。各チャンクのチャンク情報を取得したユーザノードは、コンテンツ全体の取得に要する時間を短くするために、ダウンロードを開始させるチャンクの順序を決定する。なお、ダウンロードを開始させるチャンクの順序の決定方法については後述する。
【0038】
ダウンロードを開始させる順序を決定すると、ユーザノードは、決定した順序に従って、各チャンクをダウンロードする。具体的に、ユーザノードは、チャンク情報に含まれるホルダノードのIPアドレス及びポート番号等に基づいて、チャンク要求メッセージをホルダノードに送信する。チャンク要求メッセージには、取得を望むチャンクのチャンクIDが含まれている。チャンク要求メッセージを受信したホルダノードは、チャンク要求メッセージに含まれるチャンクIDに対応するチャンクをユーザノードにアップロード(送信)する。
【0039】
ユーザノードは、ホルダノードからチャンクを取得して保存したとき、チャンクを公開する。チャンクの公開とは、ユーザノードがホルダノードとしてチャンクを保存したことをルートノードへ知らせることをいう。具体的に、チャンクを保存したユーザノードは、パブリッシュメッセージを送信する。パブリッシュメッセージは、保存したチャンクのチャンクID、チャンクを保存したユーザノードのノード情報、及びチャンクを保存したユーザノードの上り帯域幅値を含む。パブリッシュメッセージは、ルートノードに向けて送出される。これにより、パブリッシュメッセージは、問い合わせメッセージと同じように、チャンクIDをキーとするDHTルーティングによってルートノードに到着することになる。ルートノードは、受信したパブリッシュメッセージに含まれるチャンクID、ノード情報及び上り帯域幅値の組を含むチャンク情報をチャンク情報キャッシュに記憶する。こうして、上記ユーザノードは、新たに、上記チャンクを保存するホルダノードとなる。
【0040】
[2.コンテンツ取得時の制御]
ユーザノードは、取得すべきコンテンツを構成する各チャンクをダウンロードするとき、互いに異なる複数のチャンクを並行してダウンロードする。このとき、ユーザノードは、並行して行うダウンロード数を、各チャンクのダウンロード速度と、ユーザノード自身の下り帯域幅とにより決定する。具体的に、ユーザノードは、或るチャンクのダウンロードを開始すると、チャンクの実際のダウンロード速度を取得する。そして、ユーザノードは、ユーザノード自身の下り帯域幅の値から、取得したダウンロード速度を減算して、ダウンロードにまだ利用可能な下り帯域幅の値を算出する。その結果、ユーザノードは、チャンクのダウンロードに利用可能な下り帯域幅がまだ存在する場合には、この帯域を利用して、別のチャンクのダウンロードを開始する。また、或るチャンクのダウンロードが完了すると、チャンクのダウンロードに利用可能な下り帯域幅が生じる。そこで、ユーザノードは、この帯域を利用して、また別のチャンクのダウンロードを開始する。このようにして、ユーザノードは、ユーザノード自身の下り帯域幅を極力最大限利用して、チャンクをダウンロードする。
【0041】
また、ユーザノードは、各チャンクをダウンロードするとき、ダウンロードを開始させるチャンクの順序を決定する。具体的に、ユーザノードは、コンテンツを構成する各チャンクの中から、上り帯域幅が狭いホルダノードが保存するチャンクの順に、ダウンロードを開始させる。この上り帯域幅は、チャンクのルートノードから取得されたチャンク情報に含まれる上り帯域幅値により示されている。
【0042】
ユーザノードが、コンテンツの取得時にこのような制御を行うことで、コンテンツ全体の取得に要する時間を短くすることができる。コンテンツの取得の序盤では、ユーザノードは、ホルダノードの上り帯域幅が狭いチャンクをダウンロードすることになる。そのため、1つ1つのチャンクのダウンロード速度は遅くなる。しかしながら、この時点では、ダウンロードを開始していないチャンク、すなわち、これから取得すべきチャンクがまだ存在する。そのため、ユーザノードは、空いている下り帯域幅を利用して別のチャンクをダウンロードすることができる。このようにして、ユーザノードは、複数のチャンクを並行してダウンロードすることにより、下り帯域幅の占有率を高くすることができる。その一方で、コンテンツの取得の終盤では、ユーザノードは、ホルダノードの上り帯域幅が広いチャンクをダウンロードすることになる。そのため、1つ1つのチャンクのダウンロード速度は速くなる。従って、そのときに、ダウンロードが開始されていないチャンクがもう存在しない状態となっても、下り帯域幅の占有率を高くすることができる。このように、コンテンツの取得の序盤から終盤までユーザノードの下り帯域幅を有効に利用することができるので、コンテンツ全体の取得に要する時間を短くすることができる。
【0043】
上述したコンテンツの取得時の制御のため、各ノードNnは、ノードNn自身の上り帯域幅を示す上り帯域値及び下り帯域幅を示す下り帯域幅値を取得して記憶する。取得対象となる上り帯域幅値及び下り帯域幅値は、そのノードNn自身がネットワーク8に接続するための通信回線7の上り帯域幅及び下り帯域幅に相当する。ここで、通信回線7の上り帯域幅の範囲内でチャンクのアップロード専用の上り帯域幅が設定されている場合がある。また、通信回線7の下り帯域幅の範囲内でチャンクのダウンロード専用の下り帯域幅が設定されている場合がある。この場合、ノードNnは、アップロード専用の上り帯域幅値及びダウンロード専用の下り帯域幅値を取得しても良い。なお、上り帯域値は、本発明における上り帯域情報の一例である。また、下り帯域値は、本発明における下り帯域情報の一例である。
【0044】
具体的な取得方法としては、種々考えられる。例えば、帯域測定用のサーバ装置を設ける方法がある。この場合、ノードNnは、帯域測定用のサーバ装置とデータを送受信して帯域測定を行い、ノードNnの上り帯域幅値及び下り帯域幅値を取得する。この場合、ノードNnは、定期的に帯域測定を行うと良い。ネットワーク8等の状態によって、帯域幅が変化する場合があるからである。
【0045】
また、ノードNn間でメッセージを送受信するときに、メッセージの転送速度から各ノードNnが帯域測定を行っても良い。この場合、例えば、メッセージを送信しているノードNnがそのノードNn自身の上り帯域幅を測定し、メッセージを受信しているノードNnがそのノードNn自身の下り帯域幅を測定する。なお、メッセージの送受信には、チャンクの送受信も含まれる。
【0046】
また、上り帯域幅及び下り帯域幅が予め判明している場合には、例えば、ユーザが上り帯域幅値及び下り帯域幅値を設定した設定ファイルを、ノードNnに記憶させても良い。この場合、ノードNnは、設定ファイルから上り帯域幅値及び下り帯域幅値を取得する。
【0047】
なお、通信回線7やネットワーク8のトラフィックの変化等によって、ホルダノードのアップロード速度が変化する場合がある。また、ホルダノードが複数のユーザノードにアップロードを行っていると、個々のアップロード速度が低下する場合がある。このように、実際のアップロード速度がノードNnの最大の上り帯域幅ほどには速くはならない場合がある。そこで、このような事態も考慮して、各ノードNnが、送信するパブリッシュメッセージに含める上り帯域幅値を、そのノードNn自身の上り帯域幅の値よりも小さくすると良い。この場合、例えば、ノードNnは、取得したノードNn自身の上り帯域幅値に補正係数を乗算することにより、一定の割合で値を小さくした上り帯域幅値を記憶しておいても良い。また、このときの補正係数を、例えば通信回線7の種別等に応じて、ノードNn毎に変えても良い。例えば、通信速度が遅い通信回線7であるほど、アップロード速度の変動が大きいと考えられるので、通信速度が遅い通信回線7であるほど、補正係数の値を小さくする。通信回線7の種別としては、例えば、電話回線、光ケーブル等がある。
【0048】
次に、具体例を用いて、コンテンツの取得時の制御を説明する。ここでは、ノードN0が、ユーザノードとして、チャンクA0〜A5の6個のチャンクにより構成されているコンテンツAを取得するものとする。チャンクA0〜A5のデータサイズは、それぞれ16Mビットである。また、ノードN0の下り帯域幅は、4Mbpsである。
【0049】
図2(a)乃至図2(f)は、ノードN0がチャンクA0〜A5それぞれのルートノードから取得したチャンク情報の内容の一例である。図2(a)に示すように、チャンクA0は、ノードN1〜N4に保存されている。また、図2(b)に示すように、チャンクA1は、ノードN11〜N13に保存されている。また、図2(c)に示すように、チャンクA2は、ノードN21及びN22に保存されている。また、図2(d)に示すように、チャンクA3は、ノードN31に保存されている。また、図2(e)に示すように、チャンクA4は、ノードN41〜N44に保存されている。また、図2(f)に示すように、チャンクA5は、ノードN51及びN52に保存されている。
【0050】
ユーザノードは、ダウンロードするチャンクの順序を決定するとき、チャンク毎に、そのチャンクを保存するホルダノードの上り帯域幅を足し合わせて、上り帯域幅の総和を算出する。そして、ユーザノードは、ホルダノードの上り帯域幅の総和の値が小さいチャンクの順にダウンロードを開始させる。これは、チャンクをアップロードすることができるホルダノード全体の上り帯域幅が広いほど、ユーザノードは、そのチャンクを安定して高速にダウンロードすることができると考えられるからである。
【0051】
ただし、ユーザノードは、実際には、全ホルダノードのうち、上り帯域幅が広い順に上位所定台数のホルダノードについて、その上り帯域幅の総和を算出する。上り帯域幅が比較的狭いホルダノードからチャンクをダウンロードしても、ダウンロード速度があまり速くならない場合がある。そこで、ユーザノードは、このようなホルダノードからはチャンクをダウンロードしないか、または、ダウンロード先としての優先順位を低くする。そのため、ユーザノードは、ダウンロード先として極力適切なホルダノード、すなわち、上り帯域幅が広いホルダノードのみを考慮して、ダウンロードを開始する順序を決定する。なお、上り帯域を足し合わせるホルダノードの最大数を、「総和算出台数」という。
【0052】
例えば、総和算出台数が3台であるとする。チャンクA0は、4台のホルダノードが保存している。各ホルダノードの上り帯域幅は、2Mbps、1Mbps、4Mbps、0.5Mbpsである。そのため、ノードN0は、2+1+4を計算して、チャンクA0に対応する上り帯域幅の総和として、7Mbpsを得る。チャンクA1は、3台のホルダノードが保存している。そのため、ノードN0は、全てのホルダノードの上り帯域を足し合わせて、チャンクA1に対応する上り帯域幅の総和として、8Mbpsを得る。以下同様に、ノードN0は、チャンクA2〜A5に対応する上り帯域幅の総和として、6Mbps、4Mbps、5Mbps、1Mbpsを得る。なお、ユーザノードは、該当するチャンクを保存する全てのホルダノードの上り帯域幅を足し合わせて、上り帯域幅の総和を算出しても良い。
【0053】
各チャンクを、上り帯域幅の総和の値が小さい順に並べると、チャンクA5、A3、A4、A2、A0、A1となる。そこで、ノードN0は、先ずチャンクA5のダウンロードを開始する。ユーザノードは、チャンクをダウンロードするとき、同一のチャンクを複数のホルダノードから並行してダウンロードする。このとき、ユーザノードは、上り帯域幅が広い順に上位所定台数のホルダノードから、ダウンロードを行う。これにより、ユーザノードは、高速にチャンクをダウンロードする。例えば、ノードN0は、最大3台のホルダノードからダウンロードするものとする。ノードN0は、ノードN51及びN52からそれぞれチャンクA0をダウンロードする。このとき、ノードN0は、ノードN51からは、チャンクA0の前半部分、ノードN52からは、チャンクA0の後半部分というように、各ホルダノードから別々の部分をダウンロードする。
【0054】
図3(a)は、本実施形態の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図である。図3(a)において、各行は、チャンクに対応し、各列は、コンテンツの取得開始からの経過時間に対応する。図3(a)の各欄に記載されている数値は、チャンクのダウンロード速度である。各ホルダノードのチャンクのアップロード速度を、そのホルダノード自身の上り帯域幅と同一であるとする。すると、ノードN0によるチャンクA0のダウンロード速度は、1Mbpsとなる。この場合、チャンクA0のダウンロードに16秒の時間が必要となる。ノードN0の下り帯域幅は、まだ3Mbps利用可能であるため、ノードN0は、ノードN31から、チャンクA3のダウンロードを開始する。ノードN31の上り帯域幅は4Mbpsであるが、ノードN0の利用可能な下り帯域幅が3Mbpsであるため、チャンクA1のダウンロード速度は、3Mbpsとなる。
【0055】
コンテンツの取得開始から5.33秒経過すると、チャンクA1のダウンロードが完了する。すると、ノードN0は、チャンクA4のダウンロードを開始する。このとき、ノードN0は、ノードN41〜N44のうち、ノードN41〜N43からダウンロードを行う。この場合も、チャンクA4のダウンロード速度は、3Mbpsとなる。
【0056】
その後、コンテンツの取得開始から10.67秒経過すると、チャンクA4のダウンロードが完了し、次いで、チャンクA2のダウンロードが開始される。そして、コンテンツの取得開始から16秒が経過すると、チャンクA2及びA5のダウンロードが完了する。次いで、チャンクA0、A1の順でダウンロードが行われ、コンテンツの取得開始から24秒でチャンクA1が完了する。つまり、コンテンツAの取得に24秒要したことになる。この例では、ユーザノードの下り帯域幅全体を、24秒間利用することができた。
【0057】
図3(b)は、比較例の方法でチャンクをダウンロードした場合に、チャンクのダウンロードに要する時間を示す図である。もし、ノードN0が、ホルダノードの上り帯域幅を考慮せずに、例えば、シーケンス番号順、すなわち、A0、A1、A2、A3、A4、A5の順でチャンクをダウンロードしたとする。そうすると、A0〜A4までは、1つのチャンクのダウンロードで、ノードN0の下り帯域幅が占有される。各チャンクのダウンロードはそれぞれ4秒要する。ノードN0は、チャンクA4のダウンロードが完了すると、チャンクA5をダウンロードする。チャンクA5のダウンロード速度は1Mbpsであるから、利用可能な下り帯域幅はまだ3Mbps存在している。しかしながら、これ以上ダウンロードするチャンクが存在しない。そのため、3Mbps分の下り帯域幅が余った状態で、この後、コンテンツ取得の完了までに16秒が費やされることになる。その結果、コンテンツの取得に36秒を要する。
【0058】
図3(a)及び図3(b)に示すように、本実施形態の具体例では、比較例よりも12秒早くコンテンツの取得を完了することができた。なお、ユーザノードは、ダウンロードするチャンクの順序を、ホルダノードの上り帯域幅の代表値の小さい順としても良い。例えば、複数のホルダノードの上り帯域の総和の値が大きくても、上り帯域の平均値や中央値等が小さい場合がある。そして、ホルダノードの上り帯域幅の代表値が小さいチャンクほど、1台あたりのノード装置からのダウンロード速度は遅くなる。そのため、ユーザノードは、多数のホルダノードからダウンロードを行わないと、上り帯域の総和の値ほどにはダウンロード速度が速くならない。つまり、チャンクのダウンロードの効率が低くなる。よって、ダウンロードの効率を考慮した順序で、チャンクのダウンロードを開始させることができる。
【0059】
また、ユーザノードは、ダウンロードするチャンクの順序を、ホルダノードの上り帯域幅の最小値の小さい順としても良い。例えば、チャンクを保存するホルダノードの中から任意のホルダノードを選択してダウンロードしたとする。この場合、上り帯域幅の最小値が大きいほど、最低限のダウンロード速度が速くなる。つまり、上り帯域幅の最小値が大きいほど、ダウンロード速度が保証されていることになる。よって、最低限のダウンロード速度が遅いチャンクの順に、ダウンロードを開始させることができる。
【0060】
また、ユーザノードは、ダウンロードを開始させるチャンクの順序を、ホルダノードの上り帯域幅の最大値の小さい順としても良い。例えば、チャンクを保存するホルダノードのうち上り帯域幅が広いホルダノードから優先的にダウンロードしたとする。この場合、ホルダノードの上り帯域幅の最大値が大きいチャンクであるほど、実際のダウンロード速度が速くなる。よって、実際のダウンロード速度が遅いチャンクの順に、ダウンロードを開始させることができる。また、ユーザノードは、上り帯域幅が広い順に上位所定台数のホルダノードの上り帯域幅値のみに基づいて、代表値、最小値または最大値を求めても良い。
【0061】
[3.各装置の構成及び機能]
次に、図4及び図5を参照して、各装置の構成及び機能について説明する。図4は、センターサーバSAの概要構成例を示す図である。また、図5は、ノードNnの概要構成例を示す図である。
【0062】
[3.1 センターサーバSAの構成]
センターサーバSAは、図4に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成された制御部11を備えている。また、センターサーバSAは、各種データ及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部12を備えている。更に、センターサーバSAは、ネットワーク8等を通じてノードNnとの間の情報の通信制御を行うための通信部13を備えている。また更に、センターサーバSAは、各種情報を表示するCRT,液晶ディスプレイ等の表示部14を備えている。更にまた、センターサーバSAは、オペレータからの指示を受け付けこの指示に応じた指示信号を制御部11に対して与える入力部15(例えば、キーボード、マウス等)を備えている。そして、制御部11、記憶部12、通信部13、表示部14、及び入力部15はバス16を介して相互に接続されている。
【0063】
記憶部12には、各ノードNnのノードID、IPアドレス及びポート番号等が記憶されている。また、記憶部12には、各コンテンツをそれぞれ構成する各チャンクが、チャンクIDに対応付けて記憶されている。更に、記憶部12には、オペレーティングシステム、制御プログラム等の各種プログラムが記憶されている。制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、センターサーバSAの各部を制御する。
【0064】
[3.2 ノードNnの構成]
各ノードNnは、図5に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部21を備えている。また、各ノードNnは、各種データ及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部22と、ダウンロードされたチャンク等を一時蓄積するバッファメモリ23とを備えている。更に、各ノードNnは、コンテンツに含まれるエンコードされたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコードするデコーダ部24を備えている。また更に、各ノードNnは、このデコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部25と、この映像処理部25から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部26と、を備えている。更にまた、各ノードNnは、上記デコードされたオーディオデータをアナログオーディオ信号にD (Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部27と、この音声処理部27から出力されたオーディオ信号を音波として出力するスピーカ28と、を備えている。また更に、各ノードNnは、ネットワーク8を通じて他のノードNn等間の情報の通信制御を行うための通信部29を備えている。更にまた、各ノードNnは、ユーザからの指示を受け付けこの指示に応じた指示信号を制御部21に対して与える入力部30(例えば、キーボード、マウス、或いは、リモコンや操作パネル等)を備えている。そして、制御部21、記憶部22、バッファメモリ23、デコーダ部24、通信部29、及び入力部30はバス31を介して相互に接続されている。
【0065】
記憶部22は、本発明における記憶手段の一例を構成する。この記憶部22には、DHTを用いたルーティングテーブル、チャンク情報、及びセンターサーバSAのアドレス情報等が記憶されている。また、記憶部22には、ダウンロードされたチャンクが、チャンクIDに対応付けて記憶されている。また、記憶部22には、取得されたノードNn自身の上り帯域幅値及び下り帯域幅値が記憶されている。更に、記憶部22には、オペレーティングシステム、及び各種プログラム(本発明の情報処理プログラムを含む)が記憶されている。なお、各種プログラムは、例えば、センターサーバSA等からダウンロードされるようにしても良い。また、各種プログラムは、例えば、DVD(Digital Versatile Disc)等の記録媒体に記録されて当該記録媒体からドライブを介して読み込まれるようにしても良い。
【0066】
制御部21は、CPUが記憶部22等に記憶されたプログラムを読み出して実行することにより、第1取得手段、第2取得手段、判定手段、制御手段、第1受信手段、第1送信手段、第2送信手段、及び第2受信手段として機能する。
【0067】
[4.コンテンツ分散保存システムの動作]
次に、図6を参照して、本実施形態におけるコンテンツ分散保存システムSの動作について説明する。図6(a)は、本実施形態におけるユーザノードの制御部21のコンテンツ取得処理における処理例を示すフローチャートである。また、図6(b)は、本実施形態におけるルートノードの制御部21の問い合わせメッセージ受信時処理における処理例を示すフローチャートである。
【0068】
図6(a)に示すユーザノードのコンテンツ取得処理は、例えば、ユーザが入力部30を操作して所望のコンテンツを指定したときに開始される。
【0069】
先ず、ユーザノードの制御部21は、指定されたコンテンツのメタファイルを取得する(ステップS1)。具体的に、制御部21は、指定されたコンテンツのコンテンツIDを含む問い合わせメッセージをルートノードに向けて送信する。そして、制御部21は、ルートノードから、メタファイルのホルダノードのノード情報を受信する。そして、制御部21は、受信したノード情報に基づいて、ホルダノードからメタファイルをダウンロードする。
【0070】
次いで、制御部21は、取得したメタファイルに基づいて、ダウンロード管理テーブルを、例えば記憶部22に作成する(ステップS2)。ダウンロード管理テーブルは、チャンクのダウンロードを管理するためのテーブルである。ダウンロード管理テーブルには、チャンク毎に、チャンクID、ダウンロード状態、チャンク情報有無、及びダウンロード速度が設定される。ダウンロード状態は、対応するチャンクのダウンロードの状態を示す。ダウンロードが完了している場合、ダウンロード状態は「ダウンロード済み」に設定される。また、ダウンロードがまだ開始されていない場合、ダウンロード状態は「未ダウンロード」に設定される。また、現在ダウンロード中である場合、ダウンロード状態は「ダウンロード中」に設定される。チャンク情報有無は、対応するチャンクのチャンク情報が記憶部22に保持されているか否かを示す。チャンク情報が保持されている場合、チャンク情報有無は「有り」に設定され、チャンク情報が保持されていない場合、チャンク情報有無は「無し」に設定される。ダウンロード速度は、対応するチャンクの実際のダウンロード速度である。
【0071】
ここで、制御部21は、メタファイルに記載されている各チャンクIDを、ダウンロード管理テーブルに設定する。また、制御部21は、全てのチャンクのダウンロード状態を「未ダウンロード」に設定し、全てのチャンクのチャンク情報有無を「無し」に設定する。
【0072】
次いで、制御部21は、ダウンロードを開始していないチャンクのチャンク情報を取得する(ステップS3)。つまり、制御部21は、ダウンロード管理テーブルにおいて、ダウンロード状態が「未ダウンロード」に設定されているチャンクのチャンク情報を取得する。
【0073】
ここで、ユーザノードがコンテンツを取得するときに一度に保持することができるチャンク情報の個数には、上限が設けられている。この上限を「保持上限」という。この保持上限は、例えば、予め記憶部22に記憶されている。制御部21は、チャンク情報の保持数が保持上限に達するまで、チャンク情報を取得する。例えば、保持上限が10個であるとする。そして、例えば、現在のチャンク情報の保持数が0個である場合、10個のチャンク情報が取得される。また例えば、現在のチャンク情報の保持数が9個である場合、1個のチャンク情報が取得される。
【0074】
コンテンツを構成するチャンクが多数になると、ユーザノードは、多数のチャンク情報を取得する必要がある。最初に全てのチャンクについてチャンク情報を取得すると、チャンクのダウンロードの開始が遅くなる。そこで、一度に保持することができるチャンク情報の個数に上限を設けることにより、一度に取得するチャンクの個数を制限している。これにより、チャンクのダウンロードの開始を早くすることができる。
【0075】
制御部21は、ダウンロード管理テーブルにおいて、「有り」に設定されているチャンク情報有無の個数を数えることにより、現在のチャンク情報の保持数を計算する。次いで、制御部21は、保持上限から現在のチャンク情報の保持数を減算して、取得すべきチャンク情報の個数を計算する。次いで、制御部21は、ダウンロード管理テーブルにおいて、ダウンロード状態が「未ダウンロード」に設定され、且つ、チャンク情報有無が「無し」に設定されているチャンクの中から、任意のチャンクを選択する。次いで、制御部21は、選択したチャンクのチャンクIDを含む問い合わせメッセージを、ルートノードに向けて送信する。制御部21は、この処理を、取得すべきチャンク情報の個数分実行する。
【0076】
図6(b)に示すルートノードの問い合わせメッセージ受信時処理は、ルートノードが、問い合わせメッセージを受信したときに開始される。
【0077】
先ず、ルートノードの制御部21は、記憶部22に記憶されているチャンク情報の中から、受信した問い合わせメッセージに含まれるチャンクIDに対応するチャンク情報を全て取得する(ステップS11)。次いで、制御部21は、取得したチャンク情報を、ユーザノードに送信する(ステップS12)。
【0078】
ユーザノードの制御部21は、ルートノードからチャンク情報を受信すると、受信したチャンク情報を記憶部22に一時的に保持する。また、制御部21は、受信したチャンク情報に対応するチャンク情報有無を「有り」に変更する。そして、制御部21は、保持上限となるまでチャンク情報を受信すると、ステップS4に移行する。
【0079】
ステップS4において、制御部21は、記憶部22に保持されているチャンク情報に基づいて、ホルダノードの上り帯域の総和をチャンク毎に算出する(ステップS4)。具体的に、制御部21は、ダウンロード状態が「未ダウンロード」に設定され、且つ、チャンク情報有無が「有り」に設定されているチャンクのチャンク情報を、記憶部22から取得する。次いで、制御部21は、チャンク情報に設定されている上り帯域幅値の中から、上り帯域幅が広い順に総和算出台数分の上り帯域幅値を取得する。そして、制御部21は、取得した上り帯域幅値を足し合わせて、上り帯域幅の総和を算出する。制御部21は、この計算を、ダウンロード状態が「未ダウンロード」に設定され、且つ、チャンク情報有無が「有り」に設定されている各チャンクについて実行する。つまり、制御部21は、ダウンロードを開始していないチャンクのうち、チャンク情報が保持されているチャンクについて、上り帯域幅の総和を算出する。
【0080】
次いで、制御部21は、ダウンロードを開始していないチャンクのうち、算出した上り帯域幅の総和の値が最も小さいチャンクのダウンロードを開始する(ステップS5)。具体的に、制御部21は、上り帯域幅の総和の値が最も小さいチャンクを選択する。次いで、制御部21は、選択したチャンクのチャンク情報に基づいて、上り帯域幅が広いホルダノードの順に、ホルダノードを複数選択する。次いで、制御部21は、選択した各ホルダノードに対して、選択したチャンクのチャンクIDを含むチャンク要求メッセージをそれぞれ送信する。チャンク要求メッセージを受信したホルダノードは、チャンク要求メッセージに含まれるチャンクIDに対応するチャンクのアップロードを開始する。ユーザノードの制御部21は、ダウンロードを開始したチャンクのダウンロード状態を「ダウンロード中」に変更する。
【0081】
次いで、制御部21は、ダウンロード速度を取得する(ステップS6)。具体的に、制御部21は、ダウンロード中の各チャンクのダウンロード速度をそれぞれ測定する。そして、制御部21は、測定したダウンロード速度を、対応するチャンクのダウンロード速度として、ダウンロード管理テーブルに設定する。
【0082】
次いで、制御部21は、利用可能な下り帯域幅が存在するか否かを判定する(ステップS7)。具体的に、制御部21は、ダウンロード中の各チャンクについて取得したダウンロード速度を足し合わせて、ダウンロード速度の総和を算出する。つまり、制御部21は、チャンクのダウンロードに占有されている下り帯域幅を算出する。次いで、制御部21は、記憶部22に記憶されている下り帯域幅値から、ダウンロード速度の総和を減算して、利用可能な下り帯域幅値を算出する。なお、記憶部22に記憶されている下り帯域幅値が、チャンクのダウンロード専用の下り帯域幅の値ではなく、その他の情報の受信にも用いられる汎用の下り帯域幅の値である場合がある。その他の情報としては、例えば、問い合わせメッセージ、パブリッシュメッセージ、チャンク要求メッセージ等がある。この場合、制御部21は、記憶部22に記憶されている下り帯域幅値から、その他の情報の受信速度をも減算して、利用可能な下り帯域幅値を算出する。つまり、制御部21は、ユーザノード自身の下り帯域幅のうち、純粋に空いている帯域幅の値を算出する。
【0083】
制御部21は、算出した利用可能な下り帯域幅の値が0である場合には、利用可能な下り帯域幅が存在しないと判定する。或いは、制御部21は、利用可能な下り帯域幅の値が、所定値以下である場合に、利用可能な下り帯域幅が存在しないと判定しても良い。つまり、制御部21は、新たなチャンクをダウンロードするために十分な下り帯域を確保することができない場合には、利用可能な下り帯域幅が存在しないと判定しても良い。
【0084】
制御部21は、利用可能な下り帯域幅が存在すると判定した場合には(ステップS7:YES)、ステップS5に移行する。そして、制御部21は、次に上り帯域幅の総和の値が小さいチャンクのダウンロードを開始させる。ここで、制御部21は、例えば、新しくダウンロードを開始させたチャンクのダウンロード速度が、算出した利用可能な下り帯域幅を超えないように、ホルダノードとの間でチャンクの転送速度を調整する。これは、例えば、既にダウンロード中のチャンクのダウンロード速度を低下させないためである。
【0085】
制御部21は、ステップS5〜S7の処理を繰り返すことにより、利用可能な下り帯域幅がなくなるまで、チャンクのダウンロードの開始を繰り返す。これにより、制御部21は、下り帯域幅が狭いホルダノードが保存するチャンクから順に、ダウンロードを開始させ、互いに異なる複数のチャンクを並行してダウンロードする。
【0086】
そして、制御部21は、利用可能な下り帯域幅が存在しないと判定した場合には(ステップS7:NO)、ダウンロード中のチャンクのうち、ダウンロードが完了したチャンクが存在するか否かを判定する(ステップS8)。このとき、制御部21は、ダウンロードが完了したチャンクが存在しないと判定した場合には(ステップS8:NO)、ステップS8の判定を繰り返す。つまり、制御部21は、何れかのチャンクのダウンロードが完了するまで待機する。そして、制御部21は、ダウンロードが完了したチャンクが存在すると判定した場合には(ステップS8:YES)、パブリッシュメッセージをルートノードに向けて送信する(ステップS9)。具体的に、制御部21は、ダウンロードが完了したチャンクのチャンクID、記憶部22に記憶されているユーザノード自身のノード情報及び上り帯域幅値を含むパブリッシュメッセージを送信する。また、制御部21は、ダウンロードが完了したチャンクのチャンク情報を記憶部22から削除する。また、制御部21は、ダウンロードが完了したチャンクのダウンロード状態を「ダウンロード完了」に変更する。また、制御部21は、ダウンロードが完了したチャンクのチャンク情報有無を「無し」に設定する。
【0087】
次いで、制御部21は、全てのチャンクのダウンロードが完了したか否かを判定する(ステップS10)。このとき、制御部21は、ダウンロードが完了していないチャンクが存在すると判定した場合には(ステップS10:NO)、ステップS3に移行する。ここで、記憶部22から少なくとも1つのチャンク情報が削除されたので、ダウンロードが開始されていないチャンクのチャンク情報が新たに取得される。そして、ダウンロードが開始されておらず、且つ、チャンク情報が保持されているチャンクの中から、下り帯域幅が狭いホルダノードが保存するチャンクの順に、ダウンロードが開始される。
【0088】
制御部21は、ステップS3〜S10の処理を繰り返すことにより、全てのチャンクのダウンロードが完了したと判定すると(ステップS10:YES)、コンテンツ取得処理を終了させる。このとき、制御部21は、作成したダウンロード管理テーブルを、記憶部22から削除する。
【0089】
なお、本発明の下り帯域情報を、ノードNnが通信先のノードNnとの間で確立するセッションの数の上限値に適用しても良い。またこの場合、本発明の上り帯域情報を、チャンクを保存するホルダノードの台数に適用しても良い。
【0090】
ノードNnは、通信先のノードNnと接続してセッションを確立する。そのため、ノードNnが通信先として同時接続しているノードNnの台数がセッション数となる。このセッション数の上限は、通常制限されている。ここで、1セッションあたりの通信速度が固定されているシステムである場合、セッション数の上限は、ホルダノードの下り帯域幅と等価とみなすことができる。すなわち、セッション数の上限×1セッションあたりの通信速度=最大通信速度となるからである。また、1セッションあたりの通信速度が固定であることから、ホルダノード1台あたりの上り帯域幅=1セッションあたりの通信速度とみなすことができる。この場合、チャンク毎のホルダノードの総数が、チャンク毎のホルダノードの上り帯域幅の総和に相当する。
【0091】
例えば、ユーザノードのセッション数の上限が20であり、1セッションあたりの通信速度が1Mbpsであるとする。ユーザノードが、チャンクB1〜B4の4個のチャンクにより構成されているコンテンツBを取得するとする。また、チャンクB1〜B4のデータサイズは、それぞれ100Mビットであるとする。チャンクB1、B2、B3、B4それぞれを保存する保存するホルダノードの台数は、50、70、100、5である。チャンクを保存するホルダノードの総数が、チャンクを保存するホルダノードの上り帯域幅の総和に相当するから、チャンクB4、B1、B2、B3の順にチャンクのダウンロードが開始されることになる。ユーザノードが、5台のホルダノードから、チャンクB4のダウンロードを開始すると、利用可能な残りのセッション数は15となる。そこで、ユーザノードは、15台のホルダノードから、チャンクB1のダウンロードを開始する。このようにして、ユーザノードは順次チャンクをダウンロードする。こうすると、ユーザノードは、コンテンツの取得の最後まで、セッションを有効に利用することができる。
【0092】
一方、ユーザノードが、例えば、チャンクB1、B2、B3、B4の順にチャンクのダウンロードを開始したとする。チャンクB1〜B3までのダウンロードの際、ユーザノードは、20個全てのセッションを利用してダウンロードを行う。しかしながら、チャンクB3のダウンロードが完了して、チャンクB4のダウンロードを行っているときには、15個のセッションが余っている状態となる。つまり、セッションを有効に利用していないことになる。
【0093】
以上のことから、下り帯域情報をセッション数に適用しても、本発明の効果を奏することができる。
【0094】
また、上記実施形態においては、オーバーレイネットワークに、DHTを利用したピアツーピアネットワークが適用されていたが、これに限られるものではない。例えば、他のピアツーピアシステム、または、オーバーレイネットワークを用いたシステムが適用されても良い。DHTを利用しないピアツーピアシステムとしては、例えば、ハイブリッド型のピアツーピアシステムがある。ハイブリッド型のピアツーピアシステムの場合、チャンクの所在は、例えば、センターサーバSAが管理する。そのため、センターサーバSAは、各ホルダノードのノード情報、上り帯域幅値及び保存するチャンクのチャンクIDを、チャンク情報として記憶する。この場合のセンターサーバSAは、本発明の情報処理装置の一例である。ユーザノードは、センターサーバSAに問い合わせメッセージを送信することにより、取得するコンテンツを構成するチャンクのチャンク情報を取得する。
【符号の説明】
【0095】
8 ネットワーク
9 オーバーレイネットワーク
21 制御部
22 記憶部
23 バッファメモリ
29 通信部
Nn ノード
SA センターサーバ
S コンテンツ分散保存システム

【特許請求の範囲】
【請求項1】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムであって、
前記ノード装置は、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得手段と、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得手段と、
前記コンテンツを取得するとき、前記第1取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、
前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、
を備えることを特徴とする情報通信システム。
【請求項2】
前記分割データを識別する識別情報と、前記分割データを保存する前記保存ノード装置のアドレスを示すアドレス情報と、前記保存ノード装置の前記上り帯域情報と、を対応付けて記憶する記憶手段と、
前記コンテンツを取得する前記ノード装置から、前記保存ノード装置のアドレス情報の要求を示す要求情報を受信する第1受信手段と、
前記第1受信手段により受信された前記要求情報に含まれる前記識別情報に対応する前記アドレス情報及び前記上り帯域情報を、前記ノード装置に送信する第1送信手段と、
を備える情報処理装置を更に備え、
前記第2取得手段は、
取得するコンテンツを構成する前記分割データの前記識別情報を含む前記要求情報を前記情報処理装置に送信する第2送信手段と、
前記情報処理装置から送信された前記アドレス情報及び前記上り帯域情報を受信する第2受信手段と、
を備えることを特徴とする請求項1に記載の情報通信システム。
【請求項3】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置であって、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得手段と、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得手段と、
前記コンテンツを取得するとき、前記第1取得手段により取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定手段と、
前記判定手段により前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得手段により取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御手段と、
を備えることを特徴とするノード装置。
【請求項4】
前記制御手段は、前記第2取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の和を決定し、前記上り帯域幅の和が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする請求項3に記載のノード装置。
【請求項5】
前記制御手段は、前記第2取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の代表値を決定し、前記代表値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする請求項3に記載のノード装置。
【請求項6】
前記制御手段は、前記第2取得手段により取得された前記上り帯域情報に基づいて、前記分割データ毎に、前記保存ノード装置の上り帯域幅の最小値または最大値の何れか一方を決定し、決定された値が小さい前記保存ノード装置が保存する前記分割データの順に、ダウンロードを開始させることを特徴とする請求項3に記載のノード装置。
【請求項7】
前記制御手段は、前記分割データ毎に、前記保存ノード装置のうち、上り帯域幅の広さの順位の中で、上位に位置する所定数の前記保存ノード装置の前記上り帯域情報に基づいて、ダウンロードを開始させる前記分割データの順序を決定することを特徴とする請求項4乃至6の何れか1項に記載のノード装置。
【請求項8】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置による情報処理方法であって、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得ステップと、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得ステップと、
前記コンテンツを取得するとき、前記第1取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、
前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、
を含むことを特徴とする情報処理方法。
【請求項9】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存する前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける前記ノード装置に、
前記コンテンツを取得する前記ノード装置の下り帯域幅を示す下り帯域情報を取得する第1取得ステップと、
前記分割データを保存する前記ノード装置である保存ノード装置の上り帯域幅を示す上り帯域情報を取得する第2取得ステップと、
前記コンテンツを取得するとき、前記第1取得ステップにおいて取得された前記下り帯域情報に基づいて、前記分割データのダウンロードに利用可能な下り帯域幅が存在するか否かを判定する判定ステップと、
前記判定ステップにおいて前記分割データのダウンロードに利用可能な下り帯域幅が存在すると判定された場合には、ダウンロードされていない前記分割データの中から、前記第2取得ステップにおいて取得された前記上り帯域情報が示す上り帯域幅が狭い前記保存ノード装置が保存する前記分割データの順に、前記利用可能な下り帯域幅を用いてダウンロードを開始させる制御ステップと、
を実行させることを特徴とする情報処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate