説明

配信システム、ノード装置、ノード処理プログラム、及びコンテンツ取得方法

【課題】センターサーバへの負荷集中を回避しつつ、コンテンツを構成する各チャンクの取得をより効率良く行わせることが可能な配信システム、ノード装置、ノード処理プログラム、及びコンテンツ取得方法を提供する。
【解決手段】ノード装置は、第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツがグループ毎に異なる取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報をコンテンツ配信装置から受信すると、最初に取得される第二コンテンツから、前記ノード装置が属するグループに応じた取得順序で第二コンテンツの取得処理を開始する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の配信システムの技術分野に関する。
【背景技術】
【0002】
近年、ピアツーピア型の配信システムにおいて、一つのコンテンツデータが複数に分割された各分割コンテンツデータを、複数のノード装置に分散保存した配信システムが知られている(特許文献1参照)。一つの分割コンテンツデータのデータ量は例えば数Mbyteになっている。以下、コンテンツデータを「コンテンツ」という。また、分割コンテンツデータを「チャンク」という。特許文献1に開示された配信システムでは、各チャンクには固有のコンテンツIDが付与されている。そして、各ノード装置は、チャンクのコンテンツIDに基づいて他のノード装置からチャンク単位でチャンクを取得すること可能になっている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−047065号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ピアツーピア型の配信システムにおいてコンテンツの配信元であるセンターサーバが、新たなコンテンツを配信システム内に投入する場合がある。コンテンツの投入とは、1以上のノードNnに、新たなコンテンツを保存させることをいう。この場合、センターサーバは、予め決定した複数のノード装置へ取得指示メッセージを送信する。この取得指示メッセージは、コンテンツを構成する複数のチャンクを、各ノード装置に先頭のチャンクから順次取得させるためのメッセージである。取得指示メッセージには、コンテンツの取得開始時刻を示す情報が含まれている。取得開始時刻は、所定数のノード装置毎に所定時間間隔で遅らせるように設定されている。そのため、最も取得開始時刻の早いノード装置は、センターサーバからの各チャンクの取得を開始する。その所定時間経過後、次に取得開始時刻が早いノード装置は、最も取得開始時刻の早いノード装置からのコンテンツの取得を開始するようになっている。以降同様の要領で所定時間経過毎にコンテンツの取得が段階的に開始される。なお、取得開始時刻が早いノード装置の数よりも遅いノード装置の数が多くなるように設定される。これにより、複数のノード装置によるコンテンツの取得経路は、センターサーバを頂点とした仮想的なツリーを形成する。
【0005】
しかしながら、上述した従来のコンテンツの取得方法では、ネットワークの負荷、センターサーバ又はノード装置の負荷等に起因して各ノード装置へのチャンクの送信が遅れる場合がある。この場合、各ノード装置は、チャンクの取得を停止するか、或いは別のノード装置やセンターサーバにチャンクを取得しにいくことになる。このような現象が発生すると、コンテンツの配信元であるセンターサーバに負荷が集中すると問題が生じる。
【0006】
そこで、本発明は、以上の問題等に鑑みてなされたものであり、センターサーバへの負荷集中を回避しつつ、コンテンツを構成する各チャンクの取得をより効率良く行わせることが可能な配信システム、ノード装置、ノード処理プログラム、及びコンテンツ取得方法を提供すること等を課題とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、請求項1に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置と、コンテンツの配信元であるコンテンツ配信装置とを備えた配信システムであって、前記コンテンツ配信装置は、複数に分けられたグループのうちの何れかのグループに属する前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序を決定する決定手段と、前記決定された前記取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、各前記グループに属する各前記ノード装置に送信する送信手段と、を備え、各前記ノード装置は、前記コンテンツ配信装置から送信された前記取得指示情報を受信する受信手段と、前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行う取得手段と、を備え、前記取得手段は、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始する。
【0008】
請求項2に記載の発明は、請求項1に記載の配信システムにおいて、前記コンテンツ配信装置は、当該ノード装置による前記取得処理を開始する取得開始時刻を決定する第二決定手段を更に備え、前記第二決定手段は、同一の前記グループに属する複数のノード装置の中で、第一の前記ノード装置の前記取得開始時刻より、第二の前記ノード装置の前記取得開始時刻を所定時間遅らせて決定することを特徴とする。
【0009】
請求項3に記載の発明は、請求項1又は2に記載の配信システムにおいて、前記ノード装置は、前記取得処理において要求された前記第二コンテンツを所定時間内に取得できなかった場合に、前記取得指示情報を受信した前記ノード装置が属する前記グループ以外の他の前記グループに応じた前記取得順序に変更する変更手段を更に備え、前記取得手段は、前記変更手段により変更された前記取得順序で前記取得処理を開始することを特徴とする。
【0010】
請求項4に記載の発明は、請求項1又は2に記載の配信システムにおいて、前記ノード装置は、前記取得処理において要求された前記第二コンテンツを所定時間内に取得できなかった場合に、取得できなかった前記第二コンテンツ以外の前記第二コンテンツの保存数が所定数以上であるか否かを判定する判定手段と、前記判定手段により前記所定数以上であると判定された場合には、前記取得指示情報を受信した前記ノード装置が属する前記グループ以外の他の前記グループに応じた前記取得順序に変更する変更手段と、を更に備え、前記取得手段は、前記変更手段により変更された前記取得順序で前記取得処理を開始することを特徴とする。
【0011】
請求項5に記載の発明は、請求項3又は4に記載の配信システムにおいて、前記変更手段により変更された前記取得順序において前記最初に取得される第二コンテンツは前記グループ毎に異なることを特徴とする。
【0012】
請求項6に記載の発明は、請求項1又は2に記載の配信システムにおいて、前記ノード装置は、前記取得処理において要求された前記第二コンテンツを所定時間内に取得できなかった場合に、取得できなかった前記第二コンテンツ以外の前記第二コンテンツの保存数が所定数以上であるか否かを判定する判定手段と、前記判定手段により前記所定数以上でないと判定された場合には、前記取得手段は、前記取得できなかった前記第二コンテンツを前記コンテンツ配信装置から取得することを特徴とする。
【0013】
請求項7に記載の発明は、請求項1乃至7の何れか一項に記載の配信システムにおいて、前記第一コンテンツは、当該第一コンテンツが再生時間軸上における先頭から所定時間間隔で分割された前記複数の第二コンテンツから構成されており、前記決定手段は、前記第一コンテンツの再生時間軸上における前記複数の第二コンテンツの再生順序に応じて前記取得順序を決定することを特徴とする。
【0014】
請求項8に記載の発明は、請求項7に記載の配信システムにおいて、前記決定手段は、前記複数の第二コンテンツの再生順序と、所定の前記グループに対応する前記取得順序とが一致するように前記取得順序を決定することを特徴とする。
【0015】
請求項9に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備え、各前記ノード装置は複数に分けられたグループのうちの何れかのグループに属するように構成された配信システムにおける前記ノード装置であって、前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、コンテンツ配信装置から受信する受信手段と、前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行う取得手段と、を備え、前記取得手段は、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始することを特徴とする。
【0016】
請求項10に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備え、各前記ノード装置は複数に分けられたグループのうちの何れかのグループに属するように構成された配信システムにおける前記ノード装置に含まれるコンピュータを、前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、コンテンツ配信装置から受信するステップと、前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行うステップと、を実行させ、更に、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始することを実行させるためのノード処理プログラムである。
【0017】
請求項11に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置と、前記ノード装置へコンテンツを配信するコンテンツ配信装置とを備えた配信システムにおけるコンテンツ取得方法であって、前記コンテンツ配信装置が、前記コンテンツ配信装置が、複数に分けられたグループのうちの何れかのグループに属する前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序を決定するステップと、前記コンテンツ配信装置が、前記決定された前記取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、各前記グループに属する各前記ノード装置に送信するステップと、前記ノード装置が、前記コンテンツ配信装置から送信された前記取得指示情報を受信するステップと、前記ノード装置が、前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行う取得ステップと、を含み、前記取得ステップは、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始することを特徴とする。
【発明の効果】
【0018】
請求項1、8乃至11に記載の発明によれば、各ノード装置は、各ノード装置が属するグループ毎に異なる取得順序で第二コンテンツの取得処理を開始するので、コンテンツ配信装置への負荷集中を回避することができ、チャンクの取得をより効率良く行わせることができる。
【0019】
請求項2に記載の発明によれば、グループ毎に、所定時間間隔でコンテンツの取得が段階的に開始されるので、第二コンテンツの送信が遅れることを軽減することができる。
【0020】
請求項3又は4に記載の発明によれば、ネットワークの負荷、コンテンツ配信装置又はノード装置の負荷等に起因して各ノード装置へのチャンクの送信が遅れる場合があっても、第二コンテンツの取得停止を回避し第二コンテンツの取得を継続させることができる。
【0021】
請求項5に記載の発明によれば、同時期に取得される第二コンテンツが各グループで重複することを回避することができる。
【0022】
請求項6に記載の発明によれば、ネットワークの負荷、コンテンツ配信装置又はノード装置の負荷等に起因して各ノード装置へのチャンクの送信が遅れる場合があっても、第二コンテンツの取得を迅速に行わせることができる。
【0023】
請求項7に記載の発明によれば、取得された第二コンテンツの再生を円滑に実行させることができる。
【図面の簡単な説明】
【0024】
【図1】本実施形態に係るコンテンツ配信システムの概要構成例を示す図である。
【図2】取得指示メッセージを受信したノードNnによる各チャンクの取得の様子を示す概念図である。
【図3】(A)は、センターサーバCSの概要構成例を示すブロック図である。(B)は、コンテンツ投入管理テーブルに登録された情報の一例を示す図である。(C)は、優先順位管理テーブルに登録された情報の一例を示す図である。
【図4】ノードNnの概要構成例を示すブロック図である。
【図5】(A)は、センターサーバCSの制御部11におけるチャンクの取得指示処理を示すフローチャートである。(B)は、センターサーバCSの制御部11における回線空き状況の応答処理を示すフローチャートである。
【図6】(A)は、ノードNnの制御部21における取得指示メッセージ受信処理を示すフローチャートである。(B)は、ノードNnの制御部21における取得指示遂行処理を示すフローチャートである。(C)は、ノードNnの制御部21におけるダウンロード可否確認メッセージ受信処理を示すフローチャートである。
【図7】図6に示すステップS23におけるタイムアウトに対する対応処理の詳細を示すフローチャートである。
【図8】(A)は、タイムアウトに対する対応処理により、チャンクの取得順序が一時変更されることに伴い、ダウンロードされるチャンクが一時変更される様子を示す概念図である。(B)は、一時変更された取得順序から元の取得順序に戻ることに伴い、ダウンロードされるチャンクが変更される様子を示す概念図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに本発明を適用した場合の実施形態である。
【0026】
1.コンテンツ配信システムの構成及び動作概要
始めに、図1を参照して、本実施形態に係るコンテンツ配信システムの構成及び動作概要について説明する。図1は、本実施形態に係るコンテンツ配信システムの概要構成例を示す図である。図1に示すように、本実施形態に係るコンテンツ配信システムSは、センターサーバCS、及び複数のノード装置Nn(n=1,2,3・・・k)等を備えて構成されている。センターサーバCS、及び各ノード装置Nnは、インターネット等からなるネットワークNWに接続されている。なお、ノード装置を、以下、「ノード」という。また、各ノードNnには固有の識別情報であるノードIDが割り当てられている。また、図示しないが、ノードNnには、1以上の端末が例えばLAN(Local Area Network)を介して接続されている。端末の例としては、パーソナルコンピュータ、STB(Set Top Box)、又はカラオケ装置等が挙げられる。そして、ノードNnは、LANを介して端末にコンテンツを送信するエッジサーバとしての機能を有する。また、センターサーバCSは、本発明におけるコンテンツ配信装置の一例である。また、センターサーバCSは、ノードNnにより再生可能なコンテンツの配信元である。
【0027】
コンテンツ配信システムSには、オーバーレイネットワークONが形成されている。オーバーレイネットワークONは、ネットワークを介して互いに通信可能な複数のノードNnにより構成される仮想的なリンクを構成する論理的なネットワークである。また、オーバーレイネットワークONは、特定のアルゴリズム、例えば、分散ハッシュテーブルを利用したアルゴリズムにより実現される。分散ハッシュテーブルを、以下、「DHT(Distributed Hash Table)」という。なお、DHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0028】
また、コンテンツ配信システムSにおける複数のノードNnには、コンテンツが分散されて保存されている。例えば、コンテンツには、映画、音楽、番組のコンテンツ等がある。各コンテンツには固有の識別情報であるコンテンツIDが割り当てられている。また、データ量が所定値より大きいコンテンツは、複数のチャンクに分割される。そして、各チャンクは複数のノードNnに分散されて保存されている。例えば、ノードN1には、コンテンツXを構成するチャンクX1が保存されている。また、ノードN2には、コンテンツXを構成するチャンクX2が保存されている。また、コンテンツXを構成する全てのチャンクを保存するノードNnも存在する。ここで、コンテンツXが、本発明における第一コンテンツに対応する。また、各チャンクX1,X2が、本発明における第二コンテンツに対応する。
【0029】
また、各チャンクには固有の識別情報であるチャンクIDが割り当てられている。コンテンツを構成する各チャンクのチャンクIDは、例えば、このコンテンツのメタファイルに記述されている。コンテンツのメタファイルとは、コンテンツを構成する各チャンクを検索するためのファイルである。コンテンツのメタファイルには、コンテンツ中における各チャンクの対応関係を示す情報がチャンクIDに対応付けられて記述されている。この対応関係を示す情報は、例えば、各チャンクの再生開始位置のバイト数で表される。そして、各コンテンツのメタファイルは、一つのコンテンツとして、複数のノードNnに分散されて保存されている。なお、メタファイルには、これに対応するコンテンツのコンテンツIDが割り当てられている。そのため、各ノードNnは、コンテンツIDに基づき、オーバーレイネットワークONを介して他のノードNnからコンテンツのメタファイルを取得することができる。そして、各ノードNnは、取得したメタファイルに記述されている各チャンクIDに基づき、オーバーレイネットワークONを介して他のノードNnから各チャンクを取得することができる。なお、ノードID、コンテンツID、及びチャンクIDは、例えば、特開2006−197400号公報等に開示されるように、共通のハッシュ関数によりハッシュ化されて生成される。
【0030】
以下の説明において、コンテンツ、コンテンツのメタファイル、及びチャンクの少なくとも一つを保存しているノードNnを、以下、「コンテンツ保持ノード」という。また、コンテンツ、コンテンツのメタファイル、又はチャンクの所在を示す情報は、インデックス情報として、コンテンツの所在を管理しているノードNnに記憶される。コンテンツの所在を管理しているノードNnを、以下、「ルートノード」という。インデックス情報には、コンテンツ又はコンテンツのメタファイルを保存しているコンテンツ保持ノードのノード情報と、コンテンツ又はコンテンツのメタファイルのコンテンツIDとの組が含まれる。又は、このインデックス情報には、チャンクを保存しているコンテンツ保持ノードのノード情報と、このチャンクのチャンクIDとの組が含まれる。ノード情報には、例えば、コンテンツ保持ノードのIPアドレス、ポート番号、及びノードIDが含まれる。ルートノードは、例えば、コンテンツID又はチャンクIDと最も近いノードIDが割り当てられたノードNnであるように定められる。コンテンツID又はチャンクIDと最も近いノードIDとは、例えば、IDの上位桁が最も多く一致するノードIDである。
【0031】
そして、あるノードNnが、例えば、コンテンツのメタファイルを取得する場合、コンテンツのメタファイルに割り当てられたコンテンツIDに基づいてコンテンツのメタファイルの取得処理を行う。この取得処理を行うノードNnを、以下、「ユーザノード」という。コンテンツのメタファイルの取得処理は、オーバーレイネットワークONを介してコンテンツ保持ノード等からコンテンツのメタファイルを取得する処理である。この取得処理において、ユーザノードは、先ず、コンテンツ所在問合せメッセージを生成する。コンテンツ所在問合せメッセージは、コンテンツのメタファイルの所在をルートノードに問い合わせるためのメッセージである。また、コンテンツ所在問合せメッセージには、このメッセージを送信するノードNnのIPアドレス及びポート番号、並びにコンテンツのメタファイルに割り当てられているコンテンツIDが含まれる。そして、ユーザノードは、生成したコンテンツ所在問合せメッセージを、DHTルーティングによりルートノード宛に送信する。なお、DHTルーティングは、例えば特開2007−053662号公報等で公知であるので、詳しい説明を省略する。コンテンツ所在問合せメッセージを受信したルートノードは、コンテンツ所在問合せメッセージに含まれるコンテンツIDに対応するインデックス情報を取得する。そして、ルートノードは、取得したインデックス情報を、ユーザノードへ返信する。このように返信されたインデックス情報には、コンテンツのメタファイルを保存している各コンテンツ保持ノードのIPアドレス等が含まれている。こうして、ユーザノードは、ルートノードからのインデックス情報を受信する。そして、ユーザノードは、受信したインデックス情報に含まれるコンテンツ保持ノードのIPアドレス等に基づいてコンテンツ保持ノードにアクセスする。そして、ユーザノードは、コンテンツ保持ノードに対してコンテンツのメタファイルを要求しこのメタファイルを取得する。
【0032】
そして、コンテンツのメタファイルを取得したユーザノードは、コンテンツのメタファイルに記述されたチャンクのチャンクIDに基づいてチャンクの取得処理を行う。チャンクの取得処理は、オーバーレイネットワークONを介してコンテンツ保持ノード等からチャンクを取得する処理である。この取得処理は、コンテンツのメタファイルの取得処理と同じ要領で行われる。すなわち、ユーザノードは、チャンクのルートノードからインデックス情報を取得する。そして、ユーザノードは、インデックス情報で示されるコンテンツ保持ノードに対してチャンクを要求しこのチャンクを取得する。なお、ユーザノードは、コンテンツ保持ノードからチャンクを取得できない場合、センターサーバCSからこのチャンクを取得するようになっている。
【0033】
また、ユーザノードは、取得したチャンクを記憶部に保存すると、コンテンツ保持ノードとして、チャンクのパブリッシュ処理を行う。このパブリッシュ処理は、チャンクを保存していることを他のノードNnに公開するための処理である。このパブリッシュ処理において、ユーザノードは、パブリッシュメッセージを生成する。パブリッシュメッセージには、チャンクのチャンクID、及びチャンクを保存したユーザノードのノード情報が含まれる。そして、ユーザノードは、生成したパブリッシュメッセージを、DHTルーティングにより、チャンクのルートノード宛に送信する。パブリッシュメッセージを受信したルートノードは、チャンクのチャンクIDとノードNnのIPアドレス等との組を、インデックス情報としてインデックスキャッシュ領域に記憶する。なお、コンテンツのメタファイルが保存された場合、コンテンツのメタファイルのパブリッシュ処理がチャンクのパブリッシュ処理と同じ要領で行われる。
【0034】
ところで、センターサーバCSは、コンテンツ配信システムS内に新たなコンテンツを投入する場合、複数のノードNnへ取得指示メッセージを送信する。ここで、新たなコンテンツは、コンテンツ配信システムS内に未だ分散保存されていないコンテンツである。この取得指示メッセージは、新たなコンテンツを構成する複数のチャンクを各ノードNnに取得させるためのメッセージである。取得指示メッセージは、本発明における取得指示情報の一例である。なお、新たなコンテンツのメタファイルは、取得指示メッセージと共に各ノードNnへ送信される。或いは、新たなコンテンツのメタファイルは、取得指示メッセージの送信よりも前に各ノードNnへ送信するように構成しても良い。また、取得指示メッセージの送信先となる各ノードNnは、複数に分けられたグループのうちの何れかのグループに属している。各ノードNnがどのグループに属しているかの情報は、センターサーバCSにより管理されている。また、取得指示メッセージには、例えば、新たなコンテンツを構成するチャンクの取得開始時刻及びチャンクの取得順序を示す情報等が含まれている。ここで、取得開始時刻は、ノードNnがチャンクの取得処理を開始する時刻である。各ノードNnは、受信した取得指示メッセージに応じて、これに示される取得開始時刻及び取得順序にしたがって、チャンクの取得処理を行うことになる。ここで、チャンクの取得開始時刻は、所定数のノードNn毎に所定時間間隔で遅らせるように設定される。また、取得順序において少なくとも最初に取得されるチャンクはグループ毎に異なるように設定される。
【0035】
図2(A),(B)は、取得指示メッセージを受信したノードNnによる各チャンクの取得の様子を示す概念図である。図2(A)に示す例では、投入対象のコンテンツは9つのチャンク1〜9から構成されている。ここで、図中、各チャンクに付与される番号1〜9は、各チャンクを識別するチャンク番号を表している。ノードNnにおいて、各チャンクは、例えば、チャンク番号順に再生される。また、各ノードNnによるチャンクの取得開始時刻は、図2(A)に示すように、各ノードNnが位置する段毎にT秒間隔で遅れるようになっている。例えば、図中、第1段のノードN1〜N3の取得開始時刻が最も早い。次に、第2段のノードN4〜N9の取得開始時刻は第1段の取得開始時刻のT秒後になっている。次に、第3段のノードN10〜N21の取得開始時刻は第2段の取得開始時刻のT秒後になっている。この時間“T”は、ノードNnが1つのチャンクの取得を開始してから完了するまでの時間以上になるように設定される。このようにチャンクの取得開示時刻が遅くなるにつれ、ノードNnの数が増すようになっている。なお、図2(A),(B)中に示される矢印の先は、各ノードNnによるチャンクの取得先を表している。
【0036】
更に、図2(A)に示す例では、各ノードNnは、3つに分けられたグループA,B,Cのうちの何れかのグループに属している。なお、グループを3つに分けることに限定されるものではなく、幾つのグループに分けてもよい。また、図2(A)に示すコンテンツにおける取得開始位置は、グループ毎に異なっている。そのため、各ノードNnによるチャンクの取得順序は、グループ毎に異なる。例えば、グループAに属するノードNnによるチャンクの取得順序は、チャンク1→2→3→4→5→6→7→8→9という順序である。一方、グループBに属するノードNnによるチャンクの取得順序は、チャンク4→5→6→7→8→9→1→2→3という順序である。一方、グループCに属するノードNnによるチャンクの取得順序は、チャンク7→8→9→1→2→3→4→5→6という順序である。なお、図2(A)は、各ノードNnによるチャンクの取得が理想的に行われた場合の例を表している。例えば、図2(A)に示すノードN1がグループAに応じた取得順序にしたがってチャンク1の取得処理を実行したとする。このとき、チャンク1は、未だどのノードNnにも保存されていない。そのため、ノードN1は、センターサーバCSからチャンク1を取得することになる。次に、ノードN1によるチャンク1の取得開始からT秒後、図2(A)に示すノードN4,N5が、グループAに応じた取得順序にしたがってチャンク1の取得処理を実行したとする。このとき、ノードN1がチャンク1を保存し、チャンク1のパブリッシュ処理を完了しているとする。この場合、ノードN4,N5は、チャンク1のルートノードから、チャンク1の保存先が、センターサーバCSとノードN1であることを示す情報を取得する。そして、ノードN4,N5は、理想的には、ノードN1からチャンク1を取得することになる。次に、ノードN4,N5によるチャンク1の取得開始からT秒後、図2(A)に示すノードN10〜N13が、グループAに応じた取得順序にしたがってチャンク1の取得処理を実行したとする。このとき、ノードN4,N5がチャンク1を保存し、チャンク1のパブリッシュ処理を完了しているとする。この場合、ノードN10〜N13は、チャンク1のルートノードから、チャンク1の保存先がセンターサーバCSとノードN1,N4,N5であることを示す情報を取得する。そして、ノードN10〜N13は、理想的には、ノードN4又はN5からチャンク1を取得することになる。このように、チャンクの取得が理想的に行われた場合、オーバーレイネットワークONにおいて、図2(A)に示すような仮想的なツリーが形成されることになる。以上の事は、グループBに属するノードNn、及びグループCに属するノードNnでも同様である。
【0037】
そして、例えば、図2(A)に示すノードN1がチャンク1〜3を保存しそのパブリッシュ処理を完了したとする。この場合、グループBに属するノードN2にはチャンク4〜6が保存されそのパブリッシュ処理が完了していることが想定される。また、このとき、グループBに属するノードN6,N7にはチャンク4,5が保存されそのパブリッシュ処理が完了していることが想定される。また、このとき、グループBに属するノードN14〜N17にはチャンク4が保存されそのパブリッシュ処理が完了していることが想定される。そのため、ノードN1は、図2(B)に示すように、グループBに属する何れかのノードNnからチャンク4を取得することができる。そして、ノードN1は、チャンク4の取得が完了すると、グループBに属する何れかのノードNnからチャンク5を取得することになる。同様に、グループBに属するノードN2がチャンク4〜6を保存しそのパブリッシュ処理を完了したとする。この場合、グループBに属するノードN2は、グループCに属する何れかのノードNnからチャンク7を取得することができる。同様に、グループCに属するノードN3がチャンク7〜9を保存しそのパブリッシュ処理を完了したとする。この場合、グループCに属するノードN3は、グループAに属する何れかのノードNnからチャンク1を取得することができる。以上のように、各ノードNnによるチャンクの取得順序は、グループ毎に異なるので、センターサーバCSへの負荷集中を回避しつつ、各チャンクの取得をより効率良く行わせることができる。
【0038】
2.センターサーバCSの構成及び機能
次に、図3(A)を参照して、センターサーバCSの構成及び機能について説明する。図3(A)は、センターサーバCSの概要構成例を示すブロック図である。センターサーバCSは、図3(A)に示すように、制御部11、記憶部12、及び通信部13等を備えて構成される。制御部11、記憶部12、及び通信部13はバス14を介して相互に接続されている。記憶部12は、記憶手段の一例である。
【0039】
記憶部12は、例えばハードディスクドライブ等から構成される。記憶部12には、オペレーティングシステム、及びサーバ処理プログラム等が記憶されている。また、記憶部12には、オリジナルのコンテンツ又はコンテンツのメタファイル、更にはオリジナルのチャンクが記憶、保存されている。また、記憶部12には、オーバーレイネットワークONに参加しているノードNnの中で所定数のノードNnのノード情報が記憶されている。ノード情報の中には、ネットワーク上におけるノードNnのアドレス情報としてIPアドレスが含まれる。
【0040】
また、記憶部12には、コンテンツ投入管理テーブルが記憶される。コンテンツ投入管理テーブルは、投入対象となる新たなコンテンツを構成するチャンクの取得開始時刻及び取得順序等を管理するためのテーブルである。図3(B)は、コンテンツ投入管理テーブルに登録された情報の一例を示す図である。なお、図3(B)に示すコンテンツ投入管理テーブルに登録された情報は、図2(A)に示すように各ノードNnに各チャンクを取得させるための情報である。図3(B)に示すように、コンテンツ投入管理テーブルには、新たなコンテンツを取得するノードNnのノード情報、このノードNnが属するグループのグループ名、チャンクの取得開始時刻、チャンクの取得順序、及びコンテンツにおける取得開始位置等の情報が、ノードNn毎に対応付けられて登録されている。ここで、ノード情報は、ノードNnの情報の一例である。ノード情報には、例えば、IPアドレス、ポート番号、及びノードIDが含まれる。また、グループ名は、グループの情報の一例である。
【0041】
更に、記憶部12には、優先順位管理テーブルが記憶される。優先順位管理テーブルは、取得すべきチャンクの優先順位を管理するテーブルである。図3(C)は、優先順位管理テーブルに登録された情報の一例を示す図である。図3(C)に示すように、優先順位管理テーブルには、グループ名と、各チャンクの優先順位とが対応付けられて登録されている。ここで、優先順位が1位のチャンクは、最優先で取得すべきチャンクである。一方、優先順位が2位のチャンクは、優先順位が1位のチャンクの次に優先して取得すべきチャンクである。また、チャンクの優先順位は、グループ毎に異なっている。例えば、グループAで優先順位が1位のチャンクは、チャンク1〜3になっている。一方、グループBで優先順位が1位のチャンクは、チャンク4〜6になっている。一方、グループCで優先順位が1位のチャンクは、チャンク7〜9になっている。このようなチャンクの優先順位は、チャンクの取得順序に対応している。
【0042】
通信部13は、ネットワークNWを通じてノードNn等との間の情報の通信制御を行う。制御部11は、演算機能を有するCPU,作業用RAM,及びROM等から構成される。そして、制御部11は、CPUが記憶部12等に記憶されたサーバ処理プログラムを読み出して実行することにより、後述する処理を行う。なお、制御部11は、本発明における決定手段、送信手段、及び第二決定手段の一例である。
【0043】
3.ノードNnの構成及び機能
次に、図4を参照して、ノードNnの構成及び機能について説明する。図4は、ノードNnの概要構成例を示すブロック図である。ノードNnは、図4に示すように、制御部21、記憶部22、バッファメモリ23、デコーダ部24、映像処理部25、表示部26、音声処理部27、スピーカ28、通信部29、及び入力部29a等を備えて構成される。制御部21、記憶部22、バッファメモリ23、デコーダ部24、映像処理部25、表示部26、音声処理部27、通信部29、及び入力部29aは、バス29bを介して相互に接続されている。
【0044】
記憶部22は、例えばハードディスクドライブ等から構成される。記憶部22には、オペレーティングシステム、及びノード処理プログラム等が記憶されている。また、記憶部22には、コンテンツ保持ノード、又はセンターサーバCSから取得されたコンテンツ又はコンテンツのメタファイル、更にはチャンクが記憶、保存されている。また、記憶部22には、センターサーバCSのIPアドレス及びポート番号が記憶されている。更に、オーバーレイネットワークONに参加しているノードNnの記憶部22には、DHTを用いたルーティングテーブル等が記憶されている。
【0045】
バッファメモリ23は、受信されたコンテンツ又はチャンクをバッファリングする。デコーダ部24は、コンテンツ又はチャンクに含まれる映像データ及び音声データ等のデータ伸張や復号化等のデコード処理を行う。映像処理部25は、デコーダ部24によりデコードされた映像データ等に対して所定の描画処理を施し映像信号として再生出力する。表示部26は、映像処理部25から再生出力された映像信号に基づきディスプレイに映像等を表示する。また、表示部26は、デコーダ部24によりデコードされた画像を表示する。音声処理部27は、デコーダ部24によりデコードされた音声データをアナログ音声信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する。スピーカ28は、音声処理部27から出力された音声信号を音波として出力する。通信部29は、ネットワークNWを通じてセンターサーバCS及び他のノードNn等との間の情報の通信制御を行う。
【0046】
制御部21は、演算機能を有するCPU,作業用RAM,及びROM等から構成される。そして、制御部21は、CPUが記憶部22等に記憶されたノード処理プログラムを読み出して実行することにより、後述する処理を行う。なお、制御部21は、本発明における受信手段、取得手段、変更手段、及び判定手段の一例である。また、制御部21は、時計機能及びタイマ機能を有する。このタイマ機能により、後述するダウンロード用タイマや一時変更用タイマのカウントが行われる。
【0047】
4.コンテンツ配信システムSの動作
次に、複数のチャンクから構成された新たなコンテンツの投入動作について説明する。
【0048】
(4−1.センターサーバCSの動作)
先ず、図5を参照して、センターサーバCSの動作について説明する。図5(A)は、センターサーバCSの制御部11におけるチャンクの取得指示処理を示すフローチャートである。図5(B)は、センターサーバCSの制御部11における回線空き状況の応答処理を示すフローチャートである。
【0049】
図5(A)に示す処理は、例えば、管理者の端末から新たなコンテンツの投入指令があった場合に開始される。なお、新たなコンテンツのコンテンツIDと、このコンテンツを構成する各チャンクのチャンクIDは既に決定されているものとする。チャンクの取得指示先として決定された複数のノードNnのノード情報が、コンテンツ投入管理テーブルに既に登録されているものとする。また、上述した複数のグループが既に決定されているものとする。
【0050】
図5(A)に示す処理が開始されると、制御部11は、例えば管理者の端末からの指示にしたがって、チャンクの取得指示先となる各ノードNnについてグループ分け処理を行う(ステップS1)。このグループ分け処理により、各ノードNnが属するグループが決定される。こうして、各ノードNnに対して決定されたグループのグループ名は、図3(B)に示すように、ノードNnのノード情報に対応付けられてコンテンツ投入管理テーブルに登録される。なお、各グループに属するノードNnの数は、図2(A)に示すように、グループ間で均等になることが望ましい。
【0051】
次いで、制御部11は、例えば管理者の端末からの指示にしたがって、チャンクの取得順序及び各チャンクの優先順位をグループ毎に決定する(ステップS2)。例えば、コンテンツの再生時間軸上における複数のチャンクの再生順序に応じて取得順序が決定されることが望ましい。再生順序に応じて取得順序が決定されることで、取得されたチャンクの再生を円滑に実行させることができるためである。ここで、再生順序に応じて取得順序とは、チャンクの再生順序と、所定のグループに対応する取得順序とが一致することを意味する。例えば、図2(A)に示す例では、チャンク1〜9の再生順序が、グループAに対応する取得順序と一致している。こうして決定された各グループのチャンクの取得順序は、図3(B)に示すように、グループ名に対応付けられてコンテンツ投入管理テーブルに登録される。また、各グループで最初に取得されるチャンクの再生開始位置が、チャンクの取得開始位置としてグループ名に対応付けられてコンテンツ投入管理テーブルに登録される。また、上記決定された各チャンクの優先順位は、図3(C)に示すように、グループ名に対応付けられて優先順位管理テーブルに登録される。
【0052】
次いで、制御部11は、例えば管理者の端末からの指示にしたがって、チャンクの取得開始時刻をノードNn毎に決定する(ステップS3)。ここで、チャンクの取得開始時刻は、図2(A)に示すように、所定数のノードNn毎に所定時間間隔で段階的に遅らせるように決定される。例えば、制御部11は、同一のグループAに属する複数のノードNnの中で、第1段のノードN1の取得開始時刻より、第2段のノードN4の取得開始時刻を所定時間“T”遅らせて決定する。同様に、制御部11は、第2段のノードN4の取得開始時刻より、第3段のノードN10の取得開始時刻を所定時間“T”遅らせて決定する。このように、グループ毎に、所定時間間隔でチャンクの取得が段階的に開始されるので、チャンクの送信が遅れることを軽減することができる。こうして決定された取得開始時刻は、図3(B)に示すように、各ノードNnのノード情報に対応付けられてコンテンツ投入管理テーブルに登録される。
【0053】
次いで、制御部11は、コンテンツ投入管理テーブルに登録された情報に基づき、取得指示先の各ノードNnに対する取得指示メッセージを生成する(ステップS4)。ここで、取得指示メッセージには、投入対象となる新たなコンテンツのコンテンツIDが含まれる。また、取得指示メッセージには、コンテンツ投入管理テーブルにおいて、取得指示先のノードNnのノード情報に対応付けられたチャンクの取得順序、及びチャンクの取得開始時刻を示す情報が含まれる。チャンクの取得順序を示す情報には、例えば、各チャンクの再生開始位置を示す情報が各チャンクの取得順に記述されている。チャンクの再生開始位置を示す情報は、例えばバイト数で表される。或いは、チャンクの取得順序を示す情報には、各チャンクのチャンク番号又はチャンクIDが各チャンクの取得順に記述されるように構成しても良い。
【0054】
なお、チャンクの取得順序を示す情報には、最初に取得されるチャンクを示す情報のみが含まれれば良い場合がある。最初に取得されるチャンクを示す情報の例としては、このチャンクの再生開始位置を示す情報が挙げられる。この場合の例としては、図2(A)に示すように、チャンクの取得順序が、チャンクの再生順序に応じて取得順序の場合が挙げられる。この場合、最初に取得されるチャンクが分かれば、以後のチャンクの取得順序は、コンテンツのメタファイルを確認すれば判断できる。また、取得指示メッセージには、優先順位管理テーブルにおいて、取得指示先のノードNnが属するグループのグループ名に対応付けられたチャンクの優先順位を示す情報が含まれる。更に、取得指示メッセージには、新たなコンテンツのメタファイルが含まれるように構成しても良い。
【0055】
次いで、制御部11は、取得指示先となる各ノードNnのIPアドレス等に基づき、上記生成した各取得指示メッセージを各ノードNnへ通信部13を介して送信する(ステップS5)。つまり、ノードNnのIPアドレス等が宛先アドレス等として設定された取得指示メッセージがセンターサーバCSから各ノードNnへ送信される。
【0056】
次に、図5(B)に示す処理は、ノードNnから回線空き状況確認メッセージが受信された場合に開始される。回線空き状況確認メッセージは、センターサーバCSの通信部13に接続されている通信回線の帯域の空き状況を確認するメッセージである。回線空き状況確認メッセージは、後述するステップS232でノードNnから送信される。
【0057】
図5(B)に示す処理が開始されると、制御部11は、通信部13に接続されている通信回線の帯域の空き状況の確認処理を行う(ステップS6)。ここで、通信回線の帯域の空き状況の確認処理では、例えば、通信回線におけるデータパケットの通信速度が計測される。そして、通信速度が閾値以上である場合、通信回線の帯域に余裕が有と判定される。
【0058】
次いで、制御部11は、回線空き状況確認メッセージの送信元のノードNnに対する回線空き状況応答メッセージを生成する(ステップS7)。ここで、回線空き状況応答メッセージには、例えば通信回線の帯域に余裕が有又は無を示す情報が含まれる。或いは、回線空き状況応答メッセージには、上記計測された通信速度を示す情報が含まれるように構成しても良い。
【0059】
次いで、制御部11は、生成した回線空き状況応答メッセージを、回線空き状況確認メッセージの送信元のノードNnへ通信部13を介して送信する(ステップS8)。
【0060】
(4−2.ノードNnの動作)
次に、図6及び図7等を参照して、ノードNnの動作について説明する。図6(A)は、ノードNnの制御部21における取得指示メッセージ受信処理を示すフローチャートである。図6(B)は、ノードNnの制御部21における取得指示遂行処理を示すフローチャートである。図6(C)は、ノードNnの制御部21におけるダウンロード可否確認メッセージ受信処理を示すフローチャートである。図7は、図6に示すステップS23におけるタイムアウトに対する対応処理の詳細を示すフローチャートである。
【0061】
図6(A)に示す処理は、センターサーバCSから取得指示メッセージが受信された場合に開始される。図6(A)に示す処理が開始されると、制御部21は、受信した取得指示メッセージに含まれるチャンクの取得順序、チャンクの取得開始時刻、及びチャンクの優先順位を示す情報をRAMに記憶する(ステップS11)。ここで、受信された取得指示メッセージにコンテンツのメタファイルが含まれる場合、このメタファイルは記憶部22に記憶される。一方、受信された取得指示メッセージにコンテンツのメタファイルが含まれていない場合がある。この場合、制御部21は、取得指示メッセージに含まれるコンテンツIDに基づいて上述したようにコンテンツのメタファイルの取得処理を行う。これにより、制御部21は、センターサーバCS又は他のノードNnからコンテンツのメタファイルを取得する。
【0062】
次いで、制御部21は、上記チャンクの取得順序及びチャンクの優先順位を示す情報等に基づいて、チャンクの取得順序リストを生成し(ステップS12)、図6(A)に示す処理を終了する。チャンクの取得順序リストは、取得対象の各チャンクの取得順にチャンクIDを登録するリストである。このチャンクIDは、例えば、新たなコンテンツのメタファイルから取得される。この場合、取得順序リストの始めに登録されるチャンクIDは、例えば、上記取得順序において最初に取得されるチャンクの再生開始位置に対応付けられてメタファイルに記述されているチャンクIDである。
【0063】
こうして取得順序リストが生成されると、制御部21は、時計機能により得られる現在時刻が、上記ステップS11で記憶された取得開始時刻に到達したか否かを監視する。そして、制御部21は、現在時刻が取得開始時刻に到達したと判定した場合に、制御部21は、図6(B)に示す処理を開始する。図6(B)に示す処理が開始されると、制御部21は、チャンクの取得順序リストにおいて未だダウンロードされていないチャンクのチャンクIDの中で、取得順序が最も早いチャンクIDを選択する(ステップS14)。ここで、この取得順序は、制御部21を備えるノードNnが属するグループに応じた取得順序である。また、未だダウンロードされていないチャンクのチャンクIDとは、後述するステップS20で未だダウンロード済フラグが対応付けられて登録されていないチャンクIDである。
【0064】
次いで、制御部21は、上記ステップS14で選択したチャンクIDに基づいてチャンクの取得処理を開始する(ステップS15)。こうして、制御部21は、受信した取得指示メッセージに示される最初に取得されるチャンクから、制御部21を備えるノードNnが属するグループに応じた取得順序で取得処理を開始することになる。この取得処理において、制御部21は、センターサーバCS又はコンテンツ保持ノードからのチャンクのダウンロードを行う。なお、チャンクのダウンロードとは、ノードNnがネットワークNWを介してチャンクを取得しバッファメモリ23にバッファリングすることをいう。なお、チャンクの取得処理が開始されるとダウンロード用タイマ(図示せず)のカウントが開始される。このダウンロード用タイマは、チャンクのダウンロードが所定時間内に完了するか否かを判定するためのものである。この所定時間は、例えば数秒に設定される。
【0065】
次いで、制御部21は、チャンクのダウンロードがタイムアウトしたか否かを判定する(ステップS16)。例えば、ダウンロード用タイマのカウント値が所定時間を超えた場合には、チャンクのダウンロードがタイムアウトしたと判定される。なお、タイムアウトは、例えば、ネットワークNWの負荷、センターサーバCS又はノードNnの負荷等に起因するデータパケットの遅延等により発生する。そして、制御部21は、ダウンロードがタイムアウトしていないと判定した場合には(ステップS16:NO)、ステップS17に進む。一方、制御部21は、ダウンロードがタイムアウトしたと判定した場合には(ステップS16:YES)、ステップS22に進む。つまり、制御部21は、取得処理において要求されたチャンクを所定時間内にダウンロードできなかった場合に、ステップS22に進む。
【0066】
ステップS17では、制御部21は、後述するステップS23に示す「タイムアウトに対する対応処理」により、チャンクの取得順序が一時変更中であるか否かを判定する。タイムアウトに対する対応処理は、タイムアウトに対して、チャンクの取得順序が一時変更されるなどがなされる復旧処理である。そして、制御部21は、チャンクの取得順序が一時変更中でないと判定した場合には(ステップS17:NO)、ステップS18に進む。一方、制御部21は、チャンクの取得順序が一時変更中であると判定した場合には(ステップS17:YES)、ステップS24に進む。
【0067】
ステップS18では、制御部21は、チャンクのダウンロードが完了したか否かを判定する。そして、制御部21は、チャンクのダウンロードが完了していないと判定した場合には(ステップS18:NO)、ステップS16に戻り、ダウンロードを継続する。一方、制御部21は、チャンクのダウンロードが完了したと判定した場合には(ステップS18:YES)、ステップS19に進む。ダウンロードされたチャンクは、チャンクIDに対応付けられて記憶部22に記憶保存される。
【0068】
ステップS19では、制御部21は、記憶部22に保存されたチャンクのパブリッシュ処理を行う。このパブリッシュ処理により、上述したように、制御部21を備えるノードNnのノード情報とチャンクのチャンクIDを含むインデックス情報が、このチャンクのルートノードのインデックスキャッシュ領域に記憶される。
【0069】
次いで、制御部21は、記憶部22に保存されたチャンクのチャンクIDに対応付けてダウンロード済フラグを上記チャンクの取得順序リストに登録する(ステップS20)。
【0070】
次いで、制御部21は、取得対象の全てのチャンクをダウンロードしたか否かを判定する(ステップS21)。例えば、チャンクの取得順序リストに登録されている全てのチャンクIDに対してダウンロード済フラグが対応付けられて登録されている場合には、取得対象の全てのチャンクをダウンロードしたと判定される。そして、制御部21は、取得対象の全てのチャンクをダウンロードしたと判定した場合には(ステップ21:YES)、図6(A)に示す処理を終了する。一方、制御部21は、取得対象の全てのチャンクをダウンロードしていないと判定した場合には(ステップ21:NO)、ステップS14に戻る。ステップS14に戻ると、チャンクの取得順序リストにおいて未だダウンロードされていないチャンクのチャンクIDの中で、取得順序が最も早いチャンクIDが選択される。ここで、未だダウンロードされていないチャンクのチャンクIDの判別は、例えば、チャンクの取得順序リストにおいてダウンロード済フラグが対応付けられて登録されているか否かにより行われる。こうして、例えば、図2(A)に示すように、取得順序にしたがって各チャンクが順次ダウンロードされることになる。
【0071】
一方、ステップS22では、制御部21は、この制御部21を備えるノードNnが第1段に位置するノードNnであるか否かを判定する。図2(A)に示す例では、第1段に位置するノードN1は、センターサーバCSからチャンクをダウンロードするノードNnである。言い換えれば、第1段に位置するノードNnは、最上流に位置するノードNnである。なお、第1段に位置するノードNnは、チャンクの取得開始時刻が最も早い。制御部21は、第1段に位置するノードNnであると判定した場合には(ステップ22:YES)、ステップS18に移行する。一方、制御部21は、第1段に位置するノードNnでないと判定した場合には(ステップ22:NO)、タイムアウトに対する対応処理を行う(ステップS23)。
【0072】
図8(A)は、タイムアウトに対する対応処理により、チャンクの取得順序が一時変更されることに伴い、ダウンロードされるチャンクが一時変更される様子を示す概念図である。なお、図8(A)に示すように、第1段に位置するノードN1においてチャンクのダウンロードがタイムアウトした場合であっても、ダウンロードされるチャンクは変更されない。
【0073】
タイムアウトに対する対応処理では、図7に示すように、制御部21は、先ず、この制御部21を備えるノードNnが所定段よりも上流に位置するか否かを判定する(ステップS231)。ここで、所定段は、例えば第3段に設定される。例えば第3段よりも上流とは、第1段と第2段が該当する。そして、制御部21は、ノードNnが所定段よりも上流に位置すると判定した場合には(ステップS231:YES)、ステップS232に進む。一方、制御部21は、ノードNnが所定段よりも上流に位置していないと判定した場合には(ステップS231:NO)、ステップS236に進む。
【0074】
ステップS232では、制御部21は、回線空き状況確認メッセージをセンターサーバCSへ送信する。そして、制御部21は、回線空き状況確認メッセージに応じて、センターサーバCSから送信された回線空き状況応答メッセージを受信する(ステップS233)。
【0075】
次いで、制御部21は、回線空き状況応答メッセージから抽出した、通信回線の帯域に余裕が有又は無を示す情報を参照し、センターサーバCSの通信回線の帯域に余裕が有るか否かを判定する(ステップS234)。そして、制御部21は、通信回線の帯域に余裕が有ると判定した場合には(ステップS234:YES)、ステップS235に進む。一方、制御部21は、通信回線の帯域に余裕が無いと判定した場合には(ステップS234:NO)、ステップS243に進む。なお、回線空き状況応答メッセージにセンターサーバCSにより計測された通信速度を示す情報が含まれている場合がある。この場合、制御部21は、回線空き状況応答メッセージに示される通信速度が閾値以上であるか否かを判定する。そして、制御部21は、通信速度が閾値以上である場合、通信回線の帯域に余裕が有ると判定する。
【0076】
ステップS235では、制御部21は、センターサーバCSにアクセスして、上記ステップS16でダウンロードがタイムアウトしたチャンクのダウンロードを再開し、図6(B)に示す処理に戻る。ネットワークNWの負荷やノードNnの負荷等に起因してチャンクの送信が遅れた場合であっても、チャンクのダウンロードを迅速に行わせることができる。
【0077】
ステップS236では、制御部21は、ダウンロードがタイムアウトしたチャンク以外で優先順位が1位のチャンクの保存数が所定数以上であるか否かを判定する。この所定数は例えば2に設定される。この優先順位が1位のチャンクは、上記ステップS12で生成されたチャンクの取得順序リストを参照することにより判別できる。例えば、図2(A)に示すノードN2の場合、優先順位が1位のチャンクは、チャンク4〜6である。例えば、ダウンロードがタイムアウトしたチャンクがチャンク6とする。このとき、ダウンロードがタイムアウトしたチャンク以外で優先順位が1位のチャンクはチャンク4及び5となる。チャンク6のダウンロードがタイムアウトになったときに、チャンク4及び5が保存されているとすると、上記優先順位が1位のチャンクの保存数は、2となる。
【0078】
そして、制御部21は、優先順位が1位のチャンクの保存数が所定数以上でないと判定した場合には(ステップS236:NO)、ステップS232に移行する。優先順位が1位のチャンクの保存数が少ない状況下で、後述するステップS237,S238に移行させて、優先順位の低いチャンクを取得させてしまうと、優先順位が1位のチャンクを保存するコンテンツ保持ノードの数がシステムS内において少なくなってしまう。そうなると、このチャンクのコンテンツ保持ノードにアクセスが集中してしまう。そのため、優先順位が1位のチャンクの保存数が所定数以上でない場合、ダウンロードがタイムアウトしたチャンクをセンターサーバCSからダウンロードさせるのである。
【0079】
一方、制御部21は、優先順位が1位のチャンクの保存数が所定数以上であると判定した場合には(ステップS236:YES)、ステップS237に進む。
【0080】
ステップS237では、制御部21は、未だダウンロードされていないチャンクの中で、ダウンロードがタイムアウトしたチャンクの優先順位より低い優先順位のチャンクが既に記憶部22に保存されているか否かを判定する。ここで、制御部21は、チャンクの取得順序リストを参照することで、各チャンクの優先順位を判定することができる。例えば、図2(A)に示すノードN2において、例えば、ダウンロードがタイムアウトしたチャンクがチャンク6とする。このチャンク6の優先順位より1つ低い優先順位のチャンクは、チャンク7〜9である。また、このチャンク6の優先順位より2つ低い優先順位のチャンクは、チャンク1〜3である。
【0081】
そして、制御部21は、ダウンロードがタイムアウトしたチャンクの優先順位より低い優先順位のチャンクが既に記憶部22に保存されていると判定した場合には(ステップS237:YES)、ステップS238に進む。一方、制御部21は、ダウンロードがタイムアウトしたチャンクの優先順位より低い優先順位のチャンクが既に記憶部22に保存されていないと判定した場合には(ステップS237:NO)、ステップS243に進む。
【0082】
ステップS238では、制御部21は、チャンクの取得順序リストにおいてダウンロード済フラグが対応付けられていないチャンクIDの中から、ダウンロードがタイムアウトしたチャンクの優先順位より低い優先順位のチャンクのチャンクIDを選択する。ここで、ダウンロードがタイムアウトしたチャンクの優先順位より1つ低い優先順位のチャンクのチャンクIDが優先して選択されることが望ましい。例えば、図2(A)に示すノードN2において、例えば、ダウンロードがタイムアウトしたチャンクがチャンク6とする。そして、このチャンク6の優先順位より低い優先順位のチャンクとして、チャンク1〜3、及びチャンク7〜9が未だダウンロードされていないとする。この場合、チャンク6の優先順位より1つ低い優先順位のチャンク7〜9の何れかのチャンクIDが優先的に選択される。このように、各グループに属するノードNn間で、例えば1つ低い優先順位のチャンクを優先的に選択させることを統一する。これにより、後述するステップS242で変更された取得順序において最初に取得されるチャンクをグループ毎に異ならせることができる。そのため、同時期に別々のグループに属する各ノードNnが一斉にステップS238の処理を実行した場合であっても、重複するチャンクIDが選択されるのを防止することができる。その結果、特定のノードNnにチャンクの要求が集中することを防止することができる。
【0083】
また、チャンク6の優先順位より1つ低い優先順位のチャンク7〜9というように複数ある場合、その中から、取得順序が最も早いチャンク7のチャンクIDが優先的に選択される。この場合において、取得順序が最も早いチャンク7は、グループCに応じた取得順序において最初に取得されるチャンクである。
【0084】
次いで、制御部21は、上記ステップS238で選択されたチャンクのダウンロード可否確認処理を行う(ステップS239)。ダウンロード可否確認処理は、チャンクのコンテンツ保持ノードにダウンロード可否を確認する処理である。ダウンロード可否確認処理において、ノードNnは、先ず、上記選択されたチャンクのルートノードからインデックス情報を取得する。これは、上述したチャンクの取得処理と同様の要領で行われる。続いて、制御部21は、ダウンロード可否確認メッセージを生成する。ダウンロード可否確認メッセージは、チャンクのコンテンツ保持ノードにダウンロード可否を確認するためのメッセージである。このダウンロード可否確認メッセージには、上記ステップS238で選択されたチャンクIDが含まれる。そして、ノードNnは、取得したインデックス情報に含まれるコンテンツ保持ノードのIPアドレス等に基づいてコンテンツ保持ノードにアクセスする。そして、ノードNnは、コンテンツ保持ノードに対してダウンロード可否確認メッセージを送信する。なお、取得されたインデックス情報に複数のコンテンツ保持ノードのノード情報が含まれている場合がある。この場合、各コンテンツ保持ノードへダウンロード可否確認メッセージが送信される。こうして、制御部21は、コンテンツ保持ノードへダウンロード可否確認メッセージを送信してから予め設定された待機時間、コンテンツ保持ノードから、後述するステップS30の処理によりダウンロードOKメッセージが返信されてくるのを待機する。このダウンロードOKメッセージは、コンテンツ保持ノードがチャンクのダウンロードを許可するメッセージである。
【0085】
次いで、制御部21は、上記待機期間内にダウンロードOKメッセージが所定数受信されたか否かを判定する(ステップS240)。この所定数は、例えば4に設定される。そして、制御部21は、ダウンロードOKメッセージが所定数受信されていないと判定した場合には(ステップS240:NO)、ステップS243に進む。一方、制御部21は、ダウンロードOKメッセージが所定数受信されたと判定した場合には(ステップS240:YES)、ステップS241に進む。ここで、ダウンロードOKメッセージを送信したコンテンツ保持ノードの数が少ないと、これらのノードNnにアクセスが集中する可能性がある。これを回避するため、ある程度以上の数のコンテンツ保持ノードが確保されている場合に限り、ステップS241,S242の処理を行わせるのである。
【0086】
ステップS241では、制御部21は、ダウンロードOKメッセージを送信したコンテンツ保持ノードの中から、何れかのコンテンツ保持ノードを決定する。そして、制御部21は、決定したコンテンツ保持ノードから、上記ステップS238で選択されたチャンクのダウンロードを開始する(ステップS242)。すなわち、このとき、制御部21は、上記タイムアウトする前のチャンク取得順序を、制御部21を備えるノードNnが属するグループ以外の他のグループに応じた取得順序に一時変更する。そして、制御部21は、図8(A)に示すように、変更された取得順序で、上記ステップS238で選択されたチャンクのダウンロードを開始し、図6(B)に示す処理に戻る。このように、ノードNnは、このノードNnが属するグループ以外の他のグループに応じた取得順序に変更してチャンクのダウンロードを行う。そのため、ネットワークNWの負荷やノードNnの負荷等に起因してチャンクの送信が遅れた場合であっても、チャンクのダウンロード停止を回避しチャンクのダウンロードを継続させることができる。なお、変更された取得順序でチャンクのダウンロードが開始されると、一時変更用タイマ(図示せず)のカウントが開始される。この一時変更用タイマは、変更された取得順序でのダウンロード開始から所定時間が経過したか否かを判定するためのものである。
【0087】
一方、ステップS243では、制御部21は、チャンクのダウンロードを所定時間停止する。そして、制御部21は、ダウンロードの所定時間停止後、上記ステップS16でダウンロードがタイムアウトしたチャンクの取得処理を再度実行する(ステップS244)、図6(B)に示す処理に戻る。
【0088】
上記ステップS242で一時変更された取得順序でチャンクのダウンロードが開始された場合、図6(B)に示すステップS17では、チャンクの取得順序が一時変更中であると判定され、ステップS24に進む。そして、ステップS24では、制御部21は、変更された取得順序でのダウンロード開始から所定時間が経過したか否かを判定する。例えば、一時変更用タイマのカウント値が所定時間を超えた場合には、所定時間が経過したと判定される。そして、制御部21は、所定時間が経過していないと判定した場合には(ステップS24:NO)、ステップS18に移行する。一方、制御部21は、所定時間が経過したと判定した場合には(ステップS24:YES)、ステップS25に進む。
【0089】
ステップS25では、制御部21は、変更された取得順序でのチャンクのダウンロードを強制終了する。そして、制御部21は、この強制終了までにダウンロードされたチャンクのデータ位置及びチャンクIDを記憶し(ステップS26)、ステップS14に戻る。このように、ダウンロードの強制終了されたチャンクが、後に、再度ダウンロードされる場合には、記憶されたチャンクのデータ位置からダウンロードが開始されることになる。こうして、ステップS14に戻ると、制御部21は、一時変更された取得順序から、制御部21を備えるノードNnが属するグループに応じた元の取得順序に戻す。そして、制御部21は、チャンクの取得順序リストにおいて未だダウンロードされていないチャンクのチャンクIDの中で、元の取得順序において最も早いチャンクIDを選択する。
【0090】
図8(B)は、一時変更された取得順序から元の取得順序に戻ることに伴い、ダウンロードされるチャンクが変更される様子を示す概念図である。こうして、制御部21は、一時変更された取得順序から元に戻った取得順序で取得処理を開始することになる。
【0091】
なお、ステップS25,S26において、制御部21は、変更された取得順序でのチャンクのダウンロードを強制終了せずに、このチャンクのダウンロードが完了するまで待つように構成しても良い。この場合、このチャンクのダウンロードが完了し、そのチャックのパブリッシュ処理が実行された後に、ステップS14に戻ることになる。
【0092】
次に、図6(C)に示す処理は、他のノードNnからダウンロード可否確認メッセージが受信された場合に開始される。このダウンロード可否確認メッセージは、上述したステップS239で他のノードNnから送信されたメッセージである。なお、図6(C)に示す処理は、図6(B)に示す処理が実行中であっても、ダウンロード可否確認メッセージが受信されると割り込みにより開始される。図6(C)に示す処理が開始されると、制御部21は、受信したダウンロード可否確認メッセージに含まれるチャンクIDに対応するチャンクが記憶部22に保存されているか否かを判定する(ステップS28)。そして、制御部21は、チャンクIDに対応するチャンクが記憶部22に保存されていると判定した場合には(ステップS28:YES)、ステップS29に進む。そして、制御部21は、チャンクIDに対応するチャンクが記憶部22に保存されていないと判定した場合には(ステップS28:NO)、図6(C)に示す処理を終了する。
【0093】
ステップS29では、制御部21は、通信部23に接続されている通信回線のアップロード帯域に余裕が有るか否かを判定する。例えば、制御部21は、通信回線におけるデータパケットの通信速度を計測する。そして、制御部21は、計測した通信速度が閾値以上である場合、通信回線のアップロード帯域に余裕が有ると判定する。例えば、図8(A)に示す例において、第2段に位置するノードN6は、ダウンロード可否確認メッセージを受信したとき、ノードN14及びN15にチャンクのアップロード中である可能性が高い。そのため、ノードN6のアップロード帯域には余裕が無い可能性が高い。一方、第3段に位置するノードN14は、ダウンロード可否確認メッセージを受信したとき、どのノードNnにもチャンクをアップロードしていない可能性が高い。そのため、ノードN14のアップロード帯域には余裕が有る可能性が高い。
【0094】
そして、通信回線のアップロード帯域に余裕が有ると判定した場合には(ステップS29:YES)、ステップS30に進む。一方、通信回線のアップロード帯域に余裕が無いと判定した場合には(ステップS29:NO)、図6(C)に示す処理を終了する。
【0095】
ステップS30では、制御部21は、ダウンロードOKメッセージを、上記受信されたダウンロード可否確認メッセージの送信元のノードNnへ返信し、図6(C)に示す処理を終了する。
【0096】
以上説明したように、上記実施形態によれば、各ノードNnは、各ノードNnが属するグループ毎に異なる取得順序でチャンクの取得処理を行うように構成した。そのため、センターサーバCSへの負荷集中を回避することができる。更に、各ノードNnによるチャンクの取得をより効率良く行わせることができる。
【0097】
なお、例えばSWF(Shockwave Flash)やHTML(Hyper Text Markup Language)等によって作成されたコンテンツは、作成当初から複数のサブコンテンツから構成されている。例えば、複数のサブコンテンツは、アーカイブ化により一つの圧縮ファイルに纏められている。このようなコンテンツを新たなコンテンツとしてコンテンツ配信システムS内に投入する場合にも、本発明を適用することができる。この場合、SWF等によって作成されたコンテンツが、本発明における第一コンテンツに対応する。また、各サブコンテンツが、本発明における第二コンテンツに対応する。
【0098】
また、上記実施形態においては、オーバーレイネットワークONに、DHTを利用したピアツーピアネットワークを適用したが、これに限られるものではない。例えば、他のオーバーレイネットワークを用いたシステムが適用されても良い。DHTを利用しないピアツーピアシステムとしては、例えば、ハイブリッド型のピアツーピアシステムがある。
【符号の説明】
【0099】
11 制御部
12 記憶部
13 通信部
21 制御部
22 記憶部
23 バッファメモリ
29 通信部
MS コンテンツ管理サーバ
Nn ノード
NW ネットワーク
ON オーバーレイネットワーク
S コンテンツ配信システム

【特許請求の範囲】
【請求項1】
ネットワークを介して互いに通信可能な複数のノード装置と、コンテンツの配信元であるコンテンツ配信装置とを備えた配信システムであって、
前記コンテンツ配信装置は、
複数に分けられたグループのうちの何れかのグループに属する前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序を決定する決定手段と、
前記決定された前記取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、各前記グループに属する各前記ノード装置に送信する送信手段と、
を備え、
各前記ノード装置は、
前記コンテンツ配信装置から送信された前記取得指示情報を受信する受信手段と、
前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行う取得手段と、
を備え、
前記取得手段は、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始することを特徴とする配信システム。
【請求項2】
前記コンテンツ配信装置は、当該ノード装置による前記取得処理を開始する取得開始時刻を決定する第二決定手段を更に備え、前記第二決定手段は、同一の前記グループに属する複数のノード装置の中で、第一の前記ノード装置の前記取得開始時刻より、第二の前記ノード装置の前記取得開始時刻を所定時間遅らせて決定することを特徴とする請求項1に記載の配信システム。
【請求項3】
前記ノード装置は、前記取得処理において要求された前記第二コンテンツを所定時間内に取得できなかった場合に、前記取得指示情報を受信した前記ノード装置が属する前記グループ以外の他の前記グループに応じた前記取得順序に変更する変更手段を更に備え、
前記取得手段は、前記変更手段により変更された前記取得順序で前記取得処理を開始することを特徴とする請求項1又は2に記載の配信システム。
【請求項4】
前記ノード装置は、前記取得処理において要求された前記第二コンテンツを所定時間内に取得できなかった場合に、取得できなかった前記第二コンテンツ以外の前記第二コンテンツの保存数が所定数以上であるか否かを判定する判定手段と、
前記判定手段により前記所定数以上であると判定された場合には、前記取得指示情報を受信した前記ノード装置が属する前記グループ以外の他の前記グループに応じた前記取得順序に変更する変更手段と、
を更に備え、
前記取得手段は、前記変更手段により変更された前記取得順序で前記取得処理を開始することを特徴とする請求項1又は2に記載の配信システム。
【請求項5】
前記変更手段により変更された前記取得順序において前記最初に取得される第二コンテンツは前記グループ毎に異なることを特徴とする請求項3又は4に記載の配信システム。
【請求項6】
前記ノード装置は、前記取得処理において要求された前記第二コンテンツを所定時間内に取得できなかった場合に、取得できなかった前記第二コンテンツ以外の前記第二コンテンツの保存数が所定数以上であるか否かを判定する判定手段と、
前記判定手段により前記所定数以上でないと判定された場合には、前記取得手段は、前記取得できなかった前記第二コンテンツを前記コンテンツ配信装置から取得することを特徴とする請求項1又は2に記載の配信システム。
【請求項7】
前記第一コンテンツは、当該第一コンテンツが再生時間軸上における先頭から所定時間間隔で分割された前記複数の第二コンテンツから構成されており、
前記決定手段は、前記第一コンテンツの再生時間軸上における前記複数の第二コンテンツの再生順序に応じて前記取得順序を決定することを特徴とする請求項1乃至7の何れか一項に記載の配信システム。
【請求項8】
前記決定手段は、前記複数の第二コンテンツの再生順序と、所定の前記グループに対応する前記取得順序とが一致するように前記取得順序を決定することを特徴とする請求項7に記載の配信システム。
【請求項9】
ネットワークを介して互いに通信可能な複数のノード装置を備え、各前記ノード装置は複数に分けられたグループのうちの何れかのグループに属するように構成された配信システムにおける前記ノード装置であって、
前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、コンテンツ配信装置から受信する受信手段と、
前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行う取得手段と、
を備え、
前記取得手段は、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始することを特徴とするノード装置。
【請求項10】
ネットワークを介して互いに通信可能な複数のノード装置を備え、各前記ノード装置は複数に分けられたグループのうちの何れかのグループに属するように構成された配信システムにおける前記ノード装置に含まれるコンピュータを、
前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、コンテンツ配信装置から受信するステップと、
前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行うステップと、
を実行させ、
更に、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始することを実行させるためのノード処理プログラム。
【請求項11】
ネットワークを介して互いに通信可能な複数のノード装置と、前記ノード装置へコンテンツを配信するコンテンツ配信装置とを備えた配信システムにおけるコンテンツ取得方法であって、
前記コンテンツ配信装置が、複数に分けられたグループのうちの何れかのグループに属する前記ノード装置により再生可能な第一コンテンツを構成する複数の第二コンテンツの取得順序であって、少なくとも最初に取得される第二コンテンツが前記グループ毎に異なる取得順序を決定するステップと、
前記コンテンツ配信装置が、前記決定された前記取得順序において前記最初に取得される第二コンテンツを示す情報を少なくとも含む取得指示情報を、各前記グループに属する各前記ノード装置に送信するステップと、
前記ノード装置が、前記コンテンツ配信装置から送信された前記取得指示情報を受信するステップと、
前記ノード装置が、前記受信された取得指示情報に応じて、前記第二コンテンツを保存しているノード装置から、前記複数の第二コンテンツを取得する取得処理を行う取得ステップと、
を含み、
前記取得ステップは、前記取得指示情報に示される前記最初に取得される第二コンテンツから、前記取得指示情報を受信した前記ノード装置が属する前記グループに応じた前記取得順序で前記取得処理を開始することを特徴とするコンテンツ取得方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−8847(P2012−8847A)
【公開日】平成24年1月12日(2012.1.12)
【国際特許分類】
【出願番号】特願2010−144881(P2010−144881)
【出願日】平成22年6月25日(2010.6.25)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】