コンテンツ配信システム、ノード装置、サーバ装置、コンテンツ配信方法、コンテンツ中継処理プログラム及びスケジュール生成処理プログラム
【課題】複数のグループに所属するノード装置におけるコンテンツの転送遅延を防ぐ。
【解決手段】ノード装置は、配信スケジュール情報に基づいて、取得時期が到来したか否かを判定する取得時期判定手段と、取得時期が到来したと取得時期判定手段により判定された場合、取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツをコンテンツ転送手段により転送しているか否かを判定する転送判定手段と、を備え、スケジュール生成装置は、コンテンツ転送手段により他のグループに対応するコンテンツを転送していると転送判定手段により判定されたノード装置である転送ノード装置と、第1のグループにおいて取得時期が転送ノード装置よりも遅い何れか一つのノード装置と、の第1のグループにおける取得時期を互いに入れ替えた配信スケジュール情報を生成するスケジュール情報生成手段と、を備える。
【解決手段】ノード装置は、配信スケジュール情報に基づいて、取得時期が到来したか否かを判定する取得時期判定手段と、取得時期が到来したと取得時期判定手段により判定された場合、取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツをコンテンツ転送手段により転送しているか否かを判定する転送判定手段と、を備え、スケジュール生成装置は、コンテンツ転送手段により他のグループに対応するコンテンツを転送していると転送判定手段により判定されたノード装置である転送ノード装置と、第1のグループにおいて取得時期が転送ノード装置よりも遅い何れか一つのノード装置と、の第1のグループにおける取得時期を互いに入れ替えた配信スケジュール情報を生成するスケジュール情報生成手段と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の通信システムの技術分野に関する。
【背景技術】
【0002】
この種のシステムに関して、特許文献1には、分散ハッシュテーブル(以下、「DHT」(Distributed Hash Table)という)を利用したコンテンツのマルチキャスト配信を行う技術が開示されている。具体的には、DHTを用いてコンテンツが複数の拠点サーバに分散配置される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−53662号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、拠点サーバが複数存在する場合、複数の拠点サーバをグループ化することが考えられる。拠点サーバをグループ化することで、各グループ毎に夫々異なったコンテンツを配信することができる。複数の拠点サーバが、複数のグループにグループ化される場合、或る拠点サーバが異なる複数のグループに所属することが考えられる。このとき、複数のグループに所属する拠点サーバが、或るグループで配信されているコンテンツと、別のグループで配信されているコンテンツとを同時に受信又は送信する場合がある。この場合、複数のグループからコンテンツを受信又は送信するために、転送速度が低下する。この結果、その拠点サーバからコンテンツを受け取る拠点サーバへの配信遅延が生じてしまう。
【0005】
そこで、本発明は、以上の点等に鑑みてなされたものであり、複数のグループに所属するノード装置におけるコンテンツの転送遅延を防ぐことを可能とするコンテンツ配信システム、ノード装置、サーバ装置、コンテンツ配信方法、コンテンツ中継処理プログラム及びスケジュール生成処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムであって、所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得手段と、前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送手段と、前記コンテンツ取得手段によるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得手段と、前記スケジュール情報取得手段により取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定手段と、前記取得時期が到来したと前記取得時期判定手段により判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定手段と、を備え、前記スケジュール生成装置は、前記コンテンツ転送手段により前記他のグループに対応するコンテンツを転送していると前記転送判定手段により判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、を備えることを特徴とする。
【0007】
この発明によれば、配信スケジュール情報が示すコンテンツの取得時機が到来したときにコンテンツ取得手段によりコンテンツが取得され、取得されたコンテンツがコンテンツ転送手段により転送される。ここで、ノード装置が、或るグループ(他のグループ)に対応するコンテンツを転送しているときに別のグループ(第1のグループ)に対応するコンテンツを取得すると、その後この第1のグループに対応するコンテンツも転送することとなる。そうすると、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われてしまう。そこで、取得時期判定手段及び転送判定手段による判定の結果、スケジュール生成装置により第1のグループにおけるコンテンツの取得時期が、自ノード装置よりも取得時期が遅い他のノード装置と入れ替えられて、配信スケジュール情報が生成される。そして、ノード装置は、自ノード装置によるコンテンツの取得時期が変更された配信スケジュールに基づいて第1のグループに対応するコンテンツを取得するので、第1のグループに対応するコンテンツの転送時期が遅らされる。これにより、自ノード装置において、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われなくなり、複数のグループに属するノード装置におけるコンテンツの転送遅延を防ぐことができる。
【0008】
請求項2に記載の発明は、請求項1に記載のコンテンツ配信システムにおいて、前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅いノード装置のうち前記他のグループには所属しないノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とする。
【0009】
この発明によれば、他のグループに対応するコンテンツを転送しているノード装置とコンテンツの取得時期を入れ替えるノード装置は、第1のグループに属するノード装置のうち他のグループには属さないノード装置である。従って、当該ノード装置において、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われることを確実に防止することができる。
【0010】
請求項3に記載の発明は、請求項1又は請求項2に記載のコンテンツ配信システムにおいて、前記コンテンツ配信システムは、前記ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、当該複数のノード装置が複数の階層を形成し、上位階層のノード装置から下位階層のノード装置へコンテンツが順次転送されるようにしたものであって、前記配信スケジュール情報は、コンテンツの取得時間を階層毎に対応付けて示すものであり、前記コンテンツ取得手段は、所属するグループに対応するコンテンツを、当該グループにおいて上位階層側に位置するノード装置に要求することにより取得し、前記コンテンツ転送手段は、前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループにおいて下位階層側に位置するノード装置に転送し、前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記転送ノード装置よりも下位の階層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とする。
【0011】
この発明によれば、階層を入れ替えるだけでコンテンツの取得時期を入れ替えることができるので、スケジュールを調整するための処理を簡易にすることができる。
【0012】
請求項4に記載の発明は、請求項3に記載のコンテンツ配信システムにおいて、前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて最下位層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とする。
【0013】
この発明によれば、他のグループに対応するコンテンツを転送しているノード装置が第1のグループにおいて最下位層に移動することにより、当該ノード装置は、第1のグループに関してはコンテンツを取得するだけで転送する必要は無くなる。従って、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われることを確実に防止することができる。
【0014】
請求項5に記載の発明は、請求項1乃至4の何れか1項に記載のコンテンツ配信システムに含まれるノード装置であって、前記ノード装置は、前記コンテンツ取得手段と、前記コンテンツ転送手段と、前記スケジュール情報取得手段と、前記取得時期判定手段と、前記転送判定手段と、前記第1のグループに対応するコンテンツを前記コンテンツ転送手段により転送していると前記転送判定手段により判定された場合、前記他のグループにおける前記配信スケジュール情報の変更を指示する変更指示情報を前記スケジュール生成装置に送信する変更指示情報送信手段と、を備え、前記スケジュール情報取得手段は、前記配信スケジュールを前記スケジュール生成装置から受信することを特徴とする。
【0015】
請求項6に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるサーバ装置であって、各グループを構成する複数のノード装置夫々のコンテンツの取得時期をグループ毎に示す配信スケジュール情報を、各ノード装置に送信するスケジュール情報送信手段と、前記ノード装置から前記配信スケジュール情報の変更の指示を示す変更指示情報を受信する変更指示情報受信手段と、前記変更指示情報受信手段により前記変更指示情報が受信された場合、当該変更指示情報を送信したノード装置である送信ノード装置と、当該転送中に前記送信ノード装置による前記取得時期が到来したコンテンツに対応する第1のグループにおいて前記取得時期が前記送信ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、を備えることを特徴とする。
【0016】
請求項7に記載の発明は、コンピュータを、請求項5に記載のノード装置として機能させることを特徴とする。
【0017】
請求項8に記載の発明は、コンピュータを、請求項6に記載のサーバ装置として機能させることを特徴とする。
【0018】
請求項9に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるコンテンツ配信方法であって、所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得工程と、前記ノード装置が、前記コンテンツ取得工程において取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送工程と、前記ノード装置が、前記コンテンツ取得工程におけるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得工程と、前記ノード装置が、前記スケジュール情報取得工程において取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定工程と、前記ノード装置が、前記取得時期が到来したと前記取得時期判定工程において判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定工程と、前記スケジュール生成装置が、前記コンテンツ転送工程において前記他のグループに対応するコンテンツを転送していると前記転送判定工程において判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、を備えることを特徴とする。
【発明の効果】
【0019】
本発明によれば、同一のノード装置において、複数のグループに対応するコンテンツの転送が同時に行われなくなるので、複数のグループに所属するノード装置におけるコンテンツの転送遅延を防ぐことができる。
【図面の簡単な説明】
【0020】
【図1】一実施形態に係るコンテンツ分散保存システムSの構成及び動作概要について説明する。
【図2】一実施形態に係るコンテンツ分散保存システムSにおける概要構成の一例を示す図である。
【図3】一実施形態において、グループAに所属する複数のノードNnによる形成された階層とコンテンツの配信経路の一例を示す図である。
【図4】各時刻において各階層に位置するノードNnによるデータチャンクの取得スケジュールの一例を示す図である。
【図5】一実施形態において、DHTによるID空間及びノードNnのグループ分けを概念的に示す図である。
【図6】(a)は、グループAに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図であり、(b)は、グループBに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図である。
【図7】一実施形態において、DHTによるID空間におけるコンテンツの配信経路の一例を示す図である。
【図8】一実施形態に係る配信スケジュールの入れ替えの様子の一例を示す図である。
【図9】一実施形態に係るセンターサーバ10の概要構成例を示す図である。
【図10】一実施形態に係るノードNnの概要構成例を示す図である。
【図11】一実施形態に係るノードNnにおけるCPU204の処理例を示すフローチャートである。
【図12】一実施形態に係るセンターサーバ10におけるCPU104の処理例を示すフローチャートである。
【発明を実施するための形態】
【0021】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【0022】
[1.コンテンツ分散保存システムの構成及び動作概要]
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムの構成及び動作概要について説明する。
【0023】
図1は、本実施形態に係るコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
【0024】
図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としては、例えば、電話回線や光ケーブル等が用いられる。
【0025】
このようなネットワーク8には、複数のノード装置(以下、「ノード」という)Nn(n=1,2,3・・・の何れか)が接続されている。また、各ノードNnには、固有の製造番号及びIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
【0026】
各ノードNnは、本実施形態においては複数の拠点に分散配置された拠点サーバである。また、各拠点サーバは所定の基準に基づいてグループ化されているが、これに関しての詳細は後述する。
【0027】
なお、なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9である。オーバーレイネットワーク9は、論理的なネットワークである。かかるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムS(言い換えれば、オーバーレイネットワーク9)に参加している各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。
【0028】
また、ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。ノードIDは、ID空間に偏りなく分散して配置されることになる。ハッシュ関数としては、例えば、SHA−1等が用いられる。また、ハッシュ化した値は、例えば、bit長が160bitとなる。
【0029】
なお、コンテンツ分散保存システムSへの参加は、参加していないノードNn(例えば、ノードN8)が、参加している任意のノードNnに対して参加要求を示す参加メッセージを送信することによって行われる。任意のノードNnは、例えば、当該システムSに常時参加しているコンタクトノードである。
【0030】
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定している。具体的には、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。
【0031】
コンテンツ分散保存システムSに参加している1台のノードは、必要最低限のノードNnのノード情報をルーティングテーブルにとして記憶している。各ノードNn間で互いに各種メッセージが転送されることで、ノード情報を知らない(記憶していない)ノードNnについてのノード情報が取得される。
【0032】
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0033】
コンテンツ分散保存システムS2は、内容の異なる様々なコンテンツのレプリカを所定のファイル形式で複数のノードNnに分散して保存(格納)する。レプリカを保存しているノードNnは、以下「コンテンツ保持ノード」という。コンテンツ分散保存システムS2は、各ノードNn間でレプリカを利用可能になっている。各コンテンツのオリジナルはセンターサーバ50に保存されている。例えば、ノードN5には、タイトルがXXXの映画のコンテンツのレプリカが保存されている。一方、ノードN3には、タイトルがYYYの映画のコンテンツのレプリカが保存される。このように、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存されている。
【0034】
上述のコンテンツのレプリカには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有の識別情報)等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される。或いは、システム管理者が、コンテンツ毎に一意のID値を付与しても良い。この場合は、コンテンツ名とそのコンテンツIDの対応が書かれたコンテンツカタログ情報が、全ノードNnに配布される。また、この場合のコンテンツIDは、ノードIDと同一ビット長である。
【0035】
分散保存されているコンテンツのレプリカの所在は、インデックス情報として、コンテンツのレプリカの所在を管理(記憶)しているノードNn(以下、「ルートノード」という)等により記憶される。インデックス情報は、レプリカを保存したノードNnのノード情報と、コンテンツのコンテンツIDと等の組を含む。
【0036】
例えば、タイトルがXXXの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN4により管理される。また、タイトルがYYYの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードNnであるように定められる。コンテンツIDと最も近いノードIDとは、例えば、例えば、コンテンツIDと上位桁がより多く一致するノードIDである。
【0037】
そして、あるノードNnのユーザが、所望するコンテンツのレプリカを取得したい場合、当該レプリカの取得を望むノードNn(以下、「ユーザノード」という)は、メッセージ(クエリ)を生成する。このメッセージ(クエリ)は、取得を望むコンテンツのコンテンツID及びユーザノードのIPアドレス等を含むコンテンツ所在問合せメッセージである。コンテンツ所在問合せメッセージは、コンテンツ保持ノードを検索するためのメッセージでもある。上述のコンテンツ所在問合せメッセージが、ユーザノードが取得するDHTのルーティングテーブルに従って、他のノードNnに対して送出される。つまり、ユーザノードは、コンテンツ所在問合せメッセージを、ルートノードに向けて送出する。これにより、コンテンツ所在問合せメッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
【0038】
なお、各ノードNnにおいてユーザにより選択されるべきコンテンツのコンテンツ名及びコンテンツID等の属性情報は、例えばセンターサーバ10から全てのノードNnに配信されるコンテンツカタログ情報に記述されている。
【0039】
また、上記コンテンツ所在問合せ(検索)メッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0040】
上記コンテンツ所在問合せメッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得(検索)する。取得されたインデックス情報は、コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてコンテンツのレプリカをダウンロード(取得)することができる。インデックス情報に含まれるコンテンツ保持ノードのIPアドレス等に基づいて、ユーザノードはコンテンツ保持ノードにアクセスする。アクセスしたコンテンツ保持ノードから、コンテンツのレプリカをダウンロード(取得)することが可能になる。なお、当該インデックス情報には、例えば複数のコンテンツ保持ノードのノード情報が含まれていることもある(同一のコンテンツのレプリカが複数のコンテンツ保持ノードに保存されている場合)。かかる場合、ユーザノードは、当該複数のコンテンツ保持ノードのうち一つのコンテンツ保持ノードを選択する。そして、ユーザノードは、選択したコンテンツ保持ノードに接続してコンテンツのレプリカをダウンロードすることができる。
【0041】
なお、ルートノードは、当該インデックス情報に含まれるIPアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカをダウンロードすることもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
【0042】
また、ユーザノードは、コンテンツ保持ノードからコンテンツのレプリカを取得して保存したとき、保存したユーザノードは、パブリッシュ(登録通知)メッセージを生成する。パブリッシュメッセージは、レプリカを保存したことをルートノードへ知らせるためのメッセージである。パブリッシュメッセージは、レプリカのコンテンツID及び自己のノード情報を含む。パブリッシュメッセージは、ルートノードに向けて(ルートノード宛に)送出される。これにより、パブリッシュメッセージは、コンテンツ所在問合せメッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、ルートノードは、パブリッシュメッセージを受信する。ルートノードは、パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)する。こうして、上記ユーザノードは、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
【0043】
[2.コンテンツのグループ配信の概要]
次に、コンテンツのグループ配信について、図2乃至図4を用いて説明する。なお、ここからの説明においては、各ノードNnが保存しているレプリカも、コンテンツと称する。
【0044】
図2は、本実施形態に係るコンテンツ分散保存システムSにおける概要構成の一例を示す図である。
【0045】
コンテンツ分散保存システムSにおいては、各拠点に、拠点サーバとしてのノードNnが分散して設置されている。また、各拠点には、夫々複数のユーザ端末Um(m=1,2,3・・・の何れか)が設置されている。ユーザ端末Umとしては、例えば、パーソナルコンピュータ等を適用することができる。そして、図2に示すように、各拠点のノードNnと複数のユーザ端末Umとは、例えば、LAN(Local Area Network)等のネットワークを介して接続されている。また、各ノードNnは、グリッド技術としてDHTを利用したオーバーレイネットワーク9により互いに接続されている。
【0046】
例えば、拠点にいるユーザが所望のコンテンツを利用したい場合には、ユーザ端末Umを操作することにより、ユーザ端末Umからその拠点のノードNnにコンテンツ送信要求メッセージを送信させる。このメッセージを受信したノードNnは、要求されたコンテンツを自身が保存している場合には、その保存しているコンテンツをユーザ端末Umに送信する。一方、ノードNnは、リクエストされたコンテンツを保存していない場合には、そのコンテンツを保存している別のノードNnから当該コンテンツをダウンロードし保存するとともに、ダウンロードしたコンテンツをユーザ端末Umに送信する。
【0047】
また、各ノードNnは、所定の条件に基づいてグループ分けされている。例えば、拠点が所在する地域や部門等でグループ分けされている。グループ分けをする条件としては一つのみであっても複数であっても良い。条件が複数である場合には、各基準に基づいて夫々グループ分けがなされる。
【0048】
このようにグループ分けした場合において、特定のグループに所属する全ノードNnに対して特定のコンテンツを予め保存させておきたい場合がある。特定のコンテンツとは、例えば、特定のグループのみに関連するコンテンツである。その場合、コンテンツ分散保存システムSにおいては、そのグループに所属するノードNnで複数の階層を形成し、上位階層のノードNnから下位階層のノードNnにコンテンツがツリー状の配信経路を経て順次転送されるようにしている。このように、特定のグループに所属するノードNnに対してコンテンツを配信することを、「グループ配信」という。
【0049】
図3は、グループAに所属する複数のノードNnによる形成された階層とコンテンツの配信経路の一例を示す図である。
【0050】
例えば、グループAは、図3に示すように、ノードN1〜N22の22台のノードNnが所属しており、これらのノードNnにより4階層が形成されている。第1階層にはノードN1のみが位置している。また、第2階層には、ノードN2〜N4の3台のノードNnが位置している。また、第3階層には、ノードN5〜N10の6台のノードNnが位置している。更に、第4階層には、ノードN11〜N22の12台のノードNnが位置している。
【0051】
このような構成のグループAにおいて、先ず或る時刻T1において、第1階層に位置するノードN1がコンテンツ所在問合せを送信することにより、ダウンロードすべきコンテンツの所在を検索する。ただし、このときは、他のグループも含めてそのコンテンツを保存しているノードNnは存在していない。従ってこの場合、ノードN1は、オリジナルのコンテンツを予め保存しているセンターサーバ10からコンテンツをダウンロードする。コンテンツをダウンロードしたノードN1が、当該コンテンツを保存しパブリッシュメッセージを送信することで、ルートノードが保持するインデックス情報にノードN1が登録される。
【0052】
ノードN1によるコンテンツの取得開始から所定時間が経過した時刻T2において、次に、第2階層に位置するノードN2〜N4が夫々コンテンツの所在を検索する。すると、ノードN1がコンテンツ保持ノードであることが判明するので、ノードN2〜N4は、夫々ノードN1からコンテンツをダウンロードする。
【0053】
そして、ノードN2〜N4によるコンテンツの取得開始から更に所定時間が経過した時刻T3において、第3階層に位置するノードN5〜N10が夫々コンテンツの所在を検索する。すると、ノードN2〜N4がコンテンツ保持ノードであることが判明するので、ノードN5〜N10は、夫々ノードN2〜N4の何れかからコンテンツをダウンロードする。このとき、ノードN5〜N10は、コンテンツの取得先を例えばランダムに選択するので、ノードN2〜N4は、夫々平均して2台のノードNnに対してコンテンツを配信することとなる。なおコンテンツの所在の検索においては、コンテンツ保持ノードとして、ノードN2〜N4以外にノードN1も検索されるので、ノードN1からもコンテンツがダウンロードされる可能性がある。そうなるとコンテンツの配信経路がきれいなツリー形状にならない。そこでこの場合には、例えばノードN1は、時刻T2が到来する前に自身のノードIDとコンテンツのコンテンツIDとを含むコンテンツ削除メッセージを、ルートノードに向けて送信すると良い。コンテンツ削除メッセージを受信したルートノードは、自身が保持するインデックスキャッシュ情報からノードN1を削除する。これによりノードN1はコンテンツ保持ノードとしては検索されないようになる。
【0054】
次に、ノードN5〜N10によるコンテンツの取得開始から更に所定時間が経過した時刻T4において、第4階層に位置するノードN11〜N22が夫々コンテンツの所在を検索し、ノードN5〜N10の何れかからコンテンツをダウンロードする。このようにしてグループAに所属する全ノードNnに対してコンテンツが配信される。
【0055】
基本的にはこのようにしてコンテンツが配信されるのであるが、コンテンツを丸ごとそのまま配信していたのでは配信効率が良くない。例えば、時刻T1〜T2の間にコンテンツの送受信を行っているノードNnは、第1階層のノードN1と第2階層のノードN2〜N4の4台のみであり、その他の階層のノードN5〜N22は、コンテンツの配信に関しては完全に未稼働の状態である。そこで、コンテンツ分散保存システムSにおいては、コンテンツを複数のデータ(以下、「データチャンク」という)に分割してデータチャンク単位で順次配信するようになっている。各データチャンクには、通常のコンテンツと同様に、夫々コンテンツIDが割り当てられている。従って、各ノードNnは、データチャンクをコンテンツの場合と同様にダウンロードすることができる。
【0056】
図4は、各時刻において各階層に位置するノードNnによるデータチャンクの取得スケジュールの一例を示す図である。
【0057】
各階層のノードNnにおいて、データチャンクは、例えば、図4に示すようなスケジュールでダウンロードされる。なお、図4においては、説明を簡単にするため、データチャンクを全部で4個とし、また、コンテンツIDの代わりに、シーケンス番号でそのデータチャンクを示している。
【0058】
先ず、時刻t1においては、第1階層のノードNnが、シーケンス番号1のデータチャンク(以下データチャンク1)をセンターサーバ10からダウンロードする。次に、1周期経過後の時刻t2において、第1階層のノードNnが、データチャンク2をセンターサーバ10からダウンロードする。それと同時に、第2階層のノードNnが、データチャンク1を第1階層のノードNnからダウンロードする。更に1周期経過後の時刻t3において、第1階層のノードNnによるセンターサーバ10からのデータチャンク3のダウンロード、第2階層のノードNnによる第1階層のノードNnからのデータチャンク2のダウンロード、及び第3階層のノードNnによる第2階層のノードNnからのデータチャンク1のダウンロードが同時に行われる。そして、更に1周期経過後の時刻t4において、第1階層のノードNnによるセンターサーバ10からのデータチャンク4のダウンロード、第2階層のノードNnによる第1階層のノードNnからのデータチャンク3のダウンロード、第3階層のノードNnによる第2階層のノードNnからのデータチャンク2のダウンロード、及び第4階層のノードNnによる第3階層のノードNnからのデータチャンク1のダウンロードが同時に行われる。
【0059】
以下同様にして4周期が経過すると、全ノードに対して全てのデータチャンク、つまり、1個のコンテンツの配信が完了する。このように、隣接する階層間でデータチャンクの取得タイミングを少なくとも1周期以上ずらされる。これにより、コンテンツ分散保存システムSにおいては、ノードNnの稼働率を上げて、コンテンツの配信開始から配信完了までに要する時間を短縮させるようになっている。そして、ユーザ端末Umからの要求に応じてコンテンツの送信が可能なように、例えば、ノードNnにおいて複数のデータチャンクからコンテンツが復元される。
【0060】
このようなコンテンツの配信スケジュールは、配信スケジュール情報として、センターサーバ10により管理される。配信スケジュール情報には、例えば、配信対象のコンテンツのコンテンツID、配信するグループに固有に割り当てられたグループID、データチャンクの総数、各データチャンクのコンテンツID、階層の総数、各階層に割り当てられたノードNnのノードID、各階層における各データチャンクの取得時刻等が含まれる。ここで、各階層における取得時刻の間隔は、データチャンク1個のダウンロードに要する時間以上の長さとされるが、この周期が長すぎると、グループ内の全ノードNnへの配信完了までに要する時間が長くなるので、適切な長さに調節される。なお、データチャンクを1個のパケットで構成し、1パケットあたりのデータ量が、転送効率が最大となるように適切に調節されるようにしても良い。また、各階層に割り当てられるノードNnの台数は、例えば、夫々その上位のノードNn1台あたり同時に何台に対してコンテンツを送信することができるかを示す同時送信可能台数から決定される。図3の例では、第1階層に割り当てられたノードNnは1台であり、同時送信可能台数が3台であるとすると、第2階層に割り当てられるノードNnの台数は3台となる。また、第2階層における同時送信可能台数が2台であるとすると第3階層に割り当てられるノードNnの台数は6台となる。この同時送信可能台数は、例えば、ノードNnの上り帯域幅(上り回線速度)や処理能力等に応じて決定される。
【0061】
配信スケジュール情報は、例えば、カタログ情報と同様にして全ノードNnに配布される。この配信スケジュール情報の配布は、例えば、特許文献1に記載のされているようなDHTを利用したマルチキャスト配信を利用しても良い。
【0062】
なお、これまでの説明で明らかなように、図3に示すツリー状の配信経路は、予め定められたものではなく、各ノードNnによるコンテンツ保持ノードの検索の結果形成されたものである。従って、各ノードNnが、データチャンク毎にその所在を検索するようにすると、データチャンク毎に異なる配信経路が形成されることとなる。
【0063】
また、上記説明においては、最初はセンターサーバ10からノードNnがコンテンツをダウンロードすることによりグループ配信が開始されるようにしていたが、これに限られるものではない。例えば、予め1又は複数のノードNnにコンテンツを保存させておいて、その状態からグループ配信を開始させるようにしても良い。
【0064】
[3.グループ配信におけるコンテンツの中継タイミングの衝突とその回避]
コンテンツ分散保存システムSにおいては、上述のようにしてグループ配信が行われる。ここで、グループの分け方によっては、1台のノードNnが複数のグループに所属する場合もあり得る。この複数のグループの間で、グループ配信のスケジュールが重なると、その1台のノードNnによる各グループにおけるコンテンツの中継タイミングが衝突する可能性がある。
【0065】
図5は、DHTによるID空間及びノードNnのグループ分けを概念的に示す図である。また、図6(a)は、グループAに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図である。また、図6(b)は、グループBに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図である。
【0066】
各ノードNnに付与されたノードIDは、共通のハッシュ関数によって生成されたため、 図5に示すように、同一のリング状のID空間上にさほど偏ることなく散らばって存在するものと考えることができる。なお、図5においては、24ビットでノードIDを付与し、図示したものである。図中の白点及び黒点はノードIDを示し、反時計回りでIDが増加するものとする。
【0067】
各ノードNnは、或る条件に基づいて、例えばグループA及びBにグループ分けされる。ここで、例えばノードN1、N2、N3、N5、N7及びN15はグループAに所属し、ノードN7、N23、N24、N26、N28及びN36はグループBに所属している。この場合、ノードN7は、グループAとグループBの双方に所属しているため、図5においてはそのノードIDを黒点で示している。なお、図5においては、各グループに所属するノードNnのうち一部のノードNnについて示している。
【0068】
グループAに所属するノードNnにより形成された階層及びグループBに所属するノードNnにより形成された階層は、例えば、図6(a)及び図6(b)に示すようになっている。ノードN7は、グループAにおいて第3階層に位置している。その一方で、ノードN7は、グループBにおいて第2階層に位置している。
【0069】
ここで、例えば、グループAの方で先にコンテンツXの配信が開始される。コンテンツXは、データチャンクX1、データチャンクX2、データチャンクX3・・・に分割されており、コンテンツXの配信開始により、先ずデータチャンクX1を、グループAの第1階層に位置する例えばノードN1がダウンロードする。その後、3周期目において、グループAの第3階層に位置するノードN7が、データチャンクX1を第2階層に位置する例えばノードN3からダウンロードする。そして、4周期目において、ノードN7が、データチャンクX2をダウンロードしつつ、データチャンクX2を第4階層に位置する例えばノードN15及びノードN16に送信する。つまり、4周期目からノードN7による中継処理が開始される。
【0070】
一方で、グループBにおいては、グループAにおけるコンテンツXの配信開始から、例えば4周期目にコンテンツYの配信が開始される。コンテンツYは、データチャンクY1、データチャンクY2、データチャンクY3・・・に分割されている。この場合においては、コンテンツXの配信開始から5周期目において、グループBの第2階層に位置するノードN7が、データチャンクY1を第1階層に位置する例えばノードN23からダウンロードする。そして、6周期目において、ノードN7が、データチャンクY2をダウンロードしつつ、データチャンクY2を第3階層に位置する例えばノードN28及びノードN29に送信する。
【0071】
その結果、6周期目において、ノードN7による、グループAにおける中継処理と、グループBにおける中継処理とが同時に行われることとなる。これを中継タイミングの衝突という。そうすると、ノードN7は、同時に4台のノードNnに対してデータチャンクを送信することとなる。元来、グループAの配信スケジュールにおいても、グループBの配信スケジュールにおいても、夫々ノードN7の同時送信可能台数は2台として各階層に位置するノードNnの台数が設定されていたとすると、実際の送信数はそれを超えるものとなる。すると、ノードN7の中継負荷の増大や上り帯域の消費等により、コンテンツの中継遅延が生じる。つまり、グループAにおいては、第4階層に位置する、例えばノードN16及びN17によるデータチャンクのダウンロード時間が長くなる。
【0072】
また、グループBにおいては、第3階層に位置する、例えばノードN28及びN29によるデータチャンクのダウンロード時間が長くなる。そして、グループBにおいて、第4階層における取得時刻が到来してもノードN28及びN29によるダウンロードが終了していない場合には、第4階層に位置する12台のノードNnは、ノードN28及びN29以外の第3階層に位置するノードNn、つまり、ノードN26、N27、N30及び31の4台からデータチャンクをダウンロードすることとなる。そうすると、この4台のノードNnの同時送信数は平均して3台となるから、配信スケジュールにより予定されている同時送信可能台数の2台を超えることとなる。そうすると、この4台のノードNnのデータチャンクの中継も遅延する。これにより、第4階層に位置する12台のノードNnによるデータチャンクのダウンロード時間が長くなる。図6において、網掛け領域で囲まれているノードNnは、ダウンロード時間が長くなるノードNnである。
【0073】
このようにして中継遅延が生じることにより、コンテンツの配信がスケジュール通りに完了しない事態が生じる。そこで、コンテンツ分散保存システムSにおいては、各ノードNnが、或るグループ(以下、「中継中グループ」という)におけるコンテンツを中継しているときに別のグループ(以下、「取得時刻到来グループ」という)におけるコンテンツの取得時刻が到来した場合には、コンテンツの中継タイミングの衝突を回避すべく、後者の方の取得時刻到来グループにおける配信スケジュール(当該ノードNnのコンテンツの取得時刻)をセンターサーバ10により変更させることとした。つまり、自ノードにおいて中継中グループに対応するコンテンツの中継処理を行っているときに、更に取得時刻到来グループのコンテンツをダウンロードすると、その直後に当該コンテンツの中継処理も行わなければならなくなるので、取得時刻到来グループのコンテンツの取得時刻を遅らせるようセンターサーバ10に依頼するのである。
【0074】
図7は、DHTによるID空間におけるコンテンツの配信経路の一例を示す図である。また、図8は、配信スケジュールの入れ替えの様子の一例を示す図である。
【0075】
図6に示す配信経路を、DHTによるID空間上で示すと図7に示す通りとなる。グループAにおけるコンテンツを中継しているときにグループBにおけるコンテンツの取得時刻が到来したノードN7は、グループBにおいて、自身の取得時刻を変更させるための配信スケジュール変更依頼メッセージをセンターサーバ10に送信する。配信スケジュール変更依頼メッセージを受信したセンターサーバ10は、図8に示すように、対応する配信スケジュール情報において、依頼元となるノードN7の階層を最下位層である第4階層に移動させる。また、センターサーバ10は、ノードN7を第4階層に移動させる代わりに、現時点で第4階層に位置するノードNnのうち、グループAに属していない例えばノードN36を、ノードN7が位置していた第2階層に移動させる。センターサーバ10は、このように配信スケジュール情報を変更すると、当該配信スケジュール情報を全ノードに配布する。
【0076】
新しい配信スケジュールを受信したノードN7は、グループAにおけるコンテンツの中継処理は継続しつつ、グループBにおいては、第4階層に対応する取得タイミングでコンテンツをダウンロードする。最下位層である第4階層は、データチャンクをダウンロードするのみで、中継が行われない階層であるので、ノードN7に関する限り、グループAとグループBとの間で中継処理の衝突が発生することは決してない。
【0077】
一方、新しい配信スケジュールを受信したノードN36は、第2階層に対応する取得タイミングでデータチャンクをダウンロードする。そして、ノードN36は、データチャンクの中継処理を行う。ここで、ノードN36は、グループAには属していないので、ノードN36に関しても、グループAとグループBとの間で中継処理の衝突が発生することはない。
【0078】
[4.センターサーバ10の構成等]
次に、図9を参照して、センターサーバ10の構成及び機能について説明する。
【0079】
図9は、センターサーバ10の概要構成例を示す図である。
【0080】
センターサーバ10は、図9に示すように、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、ビデオチップ107、キーボード108、マウス109及びディスプレイ110等を備えて構成されている。また、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、及びビデオチップ107は、システムバス111を介して相互に接続されている。また、センターサーバ10は、ルータ112を介してネットワーク8に接続される。本実施形態に係るサーバ装置として機能するコンピュータは、CPU104及び主記憶装置102により構成される。
【0081】
主記憶装置102は、RAM及びROM等を備えて構成されており、オペレーティングシステム、運用管理プログラム、拠点サーバ管理プログラム、配信スケジュール管理プログラム及び配信スケジュール調節プログラム等が記憶されている。なお、各プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
【0082】
ハードディスク装置103には、各種コンテンツ、拠点サーバデータベース及び配信スケジュール情報等が記憶されている。ここで、各コンテンツは、そのコンテンツIDに対応付けて記憶されている。また、コンテンツがグループ配信の対象とされるコンテンツである場合には、これを分割した複数のデータチャンクとして夫々そのコンテンツIDに対応付けて記憶されている。拠点サーバデータベースには、拠点サーバとしてのノードNnのノードID及びネットワークアドレス情報等が登録されている。また、拠点サーバデータベースには、各グループのグループIDと各グループに所属するノードNnのノードIDとが対応付けて登録されている。配信スケジュール情報は、例えばグループ配信の対象とされるコンテンツ毎に登録されている。そして、配信スケジュール情報には、配信対象のコンテンツのコンテンツID、配信するグループのグループID、データチャンクの総数、各データチャンクのコンテンツID、階層の総数、各階層に割り当てられたノードNnのノードID及び各階層における各データチャンクの取得時刻等が含まれている。この配信スケジュール情報は、例えば、オペレータがキーボード108及びマウス109等を操作することにより生成されたり、所定の端末装置からルータ112を介して受信される。
【0083】
CPU104は、主記憶装置102に記憶された各種プログラム等を読み出して実行することにより、本発明におけるスケジュール情報送信手段、変更指示情報受信手段及びスケジュール情報生成手段等として機能する。また、CPU104は、スケジュール配信処理及びスケジュール変更処理等を行う。
【0084】
ここで、スケジュール配信処理において、CPU104は、配信スケジュール情報が入力されると、スケジュール情報送信手段として、入力された配信スケジュール情報を各ノードNnに配信する。配信スケジュール情報は、生成されたり受信されたりすること等により入力される。このとき、CPU104は、配信スケジュール情報を全てのノードNnに配信しても良いし、関係するグループに所属するノードNnに対してのみ配信しても良い。また、配信スケジュール情報の配信方法としては、例えば、特許文献1に記載されているようなDHTを利用したマルチキャスト配信が用いられる。また、例えば、各ノードNnが新しい、または変更された配信スケジュール情報の有無をセンターサーバ10に定期的に問い合わせ、これに応じてCPU104が送信するようにしても良い。
【0085】
そして、スケジュール変更処理において、CPU104は、変更指示情報受信手段としてノードNnから配信スケジュール変更依頼メッセージを受信すると、スケジュール情報生成手段として、配信スケジュール情報を変更する。具体的に、CPU104は、受信した配信スケジュール変更依頼メッセージからメッセージ送信元のノードNn(以下、「変更依頼ノード」という)のノードIDを取得する。次いで、CPU104は、取得したコンテンツIDが設定されている配信スケジュール情報を検索する。変更依頼ノードが複数のグループに所属している場合には、各グループに対応した配信スケジュール情報が夫々検索される。そこで、CPU104は、これらの配信スケジュール情報に基づいて、変更依頼ノードが或るグループ(中継中グループ)におけるコンテンツを現在中継している最中に当該変更依頼ノードによるコンテンツの取得開始時刻が到来している別のグループ(取得時刻到来グループ)の配信スケジュール情報を特定する。コンテンツの取得開始時刻とは、当該コンテンツの最初のデータチャンクの取得時刻である。
【0086】
そして、CPU104は、特定した配信スケジュール情報において、変更依頼ノードとの配信スケジュール(階層)の入れ替えが可能なノードNn(以下、「入替ノード」という)を検索する。具体的に、CPU104は、最下位層に位置しているノードNnの中から何れか一つを入替ノードとして選定する。次いで、CPU104は、特定した配信スケジュールにおいて、最下位層に対応付けられている入替ノードのノードIDを削除するとともに、当該入替ノードのノードIDを、変更依頼ノードのノードIDが対応付けられている階層に追加して対応付ける。また、CPU104は、特定した配信スケジュールにおいて、変更依頼ノードのノードIDを当該ノードIDが対応付けられている階層から削除するとともに、当該変更依頼ノードのノードIDを最下位層に追加して対応付ける。このようにして変更された配信スケジュール情報は、スケジュール配信処理において各ノードNnに配信される。
【0087】
入替ノードを検索するにあたっては、最下位層に位置するノードNnのうち、例えば、コンテンツの中継能力が最も高いノードNn、或いは、コンテンツを中継する能力があるノードNnを入替ノードとして検索しても良い。コンテンツを中継する能力があるノードNnとは、中継能力が所定値以上であるノードNnである。コンテンツの中継能力が高いノードNnが最下位層以外の階層に移動する、つまり、コンテンツを中継するノードNnとなることにより、コンテンツの配信効率を高めることができる。ここで、コンテンツの中継能力は、例えば、各ノードNnの上り帯域幅(上り回線速度)から判定することができる。例えば、各ノードNnは、コンテンツ分散保存システムSに参加する際、帯域測定を行い、その結果をセンターサーバ10に送信する。帯域測定の方法は公知の各種方法を用いることができるそして、CPU104は、帯域測定の結果をノードIDに対応付けて拠点サーバデータベースに登録しておけば良い。
【0088】
また、ノードNnが、配信スケジュール変更依頼メッセージを送信する際に、当該メッセージに変更対象となる配信スケジュール情報を示す情報を含めるようにすれば、CPU104にて、変更すべき配信スケジュール情報を検索する必要は無くなる。配信スケジュール情報を示す情報とは、例えば、コンテンツIDやグループID等である。
【0089】
なお、このようなセンターサーバ10として、専用のサーバの他、何れかのノードNn(拠点サーバ)が適用されても良い。
【0090】
[5.ノードNnの構成等]
次に、図10を参照して、ノードNnの構成及び機能について説明する。
【0091】
図10は、ノードNnの概要構成例を示す図である。
【0092】
ノードNnは、図10に示すように、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、ビデオチップ207、キーボード208、マウス209及びディスプレイ210等を備えて構成されている。また、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、及びビデオチップ207は、システムバス211を介して相互に接続されている。また、ノードNnは、ルータ212を介してネットワーク8及び拠点に構築されたネットワークに接続される。本実施形態に係るノード装置として機能するコンピュータは、CPU304及び主記憶装置302により構成される。
【0093】
主記憶装置202は、オペレーティングシステム、運用管理プログラム、HTTP(Hyper Text Transfer Protocol)サーバプログラム、ルーティングテーブル、ルート制御プログラム及び配信順序管理プログラム等が記憶されている。なお、各プログラムは、例えば、センターサーバ10からダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
【0094】
ハードディスク装置203には、ダウンロードされたコンテンツまたはコンテンツを分割したデータチャンクと配信スケジュール情報等が記憶されている。
【0095】
CPU204は、主記憶装置202に記憶された各種プログラム等を読み出して実行することにより、本発明におけるスケジュール情報取得手段、取得時期判定手段及び転送判定手段等として機能する。また、CPU204は、スケジュール受信処理、コンテンツ取得制御処理及びコンテンツ中継処理等を行う。
【0096】
ここで、スケジュール受信処理において、CPU204は、スケジュール情報取得手段として、センターサーバ10から送信されてきた配信スケジュール情報を受信しハードディスク装置203に記憶させる。
【0097】
コンテンツ取得制御処理において、CPU204は、取得時期判定手段として、自ノードが所属するグループのコンテンツの取得時刻が到来したか否かを判定する。具体的に、CPU104は、ハードディスク装置203に記憶されている自ノードが所属するグループの配信スケジュール情報を参照し、自ノードが位置する階層における各データチャンクの取得時刻が到来したか否かを判定する。また、CPU204は、コンテンツの取得時刻が到来したと判定した場合には、転送判定手段として、その取得時刻が到来したグループとは異なるグループにおけるコンテンツの転送をコンテンツ中継処理で行っているか否かを判定する。
【0098】
この判定は、例えば、コンテンツを送受信する際のパケットヘッダに設定されている情報に基づいて行っても良い。例えば、センターサーバ10が、ノードNnに対してコンテンツを送信する際、送信パケットのヘッダに、どのグループに対応するコンテンツであるかを示す情報を設定する。どのグループに対応するコンテンツであるかを示す情報は、例えば、グループID、コンテンツID等の識別情報である。そして、ノードNnにおいて、CPU204が、コンテンツをダウンロードする際には、受信パケットのヘッダから識別情報を読み取る。また、CPU204が、ダウンロードしたコンテンツを転送する際には、ダウンロード時に読み取った識別情報を送信パケットのヘッダに設定して、識別情報を引き継ぐ。このようにすれば、自ノードで現在転送しているコンテンツがどのグループのどのコンテンツであるかを識別することができる。
【0099】
CPU204は、上記判定により、コンテンツの取得時刻が到来したグループとは異なるグループにおけるコンテンツの転送が行われていない場合には、コンテンツ取得手段として、その取得時刻が到来したコンテンツをダウンロードする。具体的に、CPU204は、配信スケジュール情報に設定されているコンテンツIDを含むコンテンツ所在問合せメッセージをルートノードに向けて送信し、これに応じてルートノードから送信されてきたインデックス情報を受信する。次いで、CPU204は、受信したインデックス情報に示される任意のコンテンツ保持ノードにコンテンツ送信要求メッセージを送信してデータチャンクをダウンロードする。次いで、CPU204は、ダウンロードしたデータチャンクをコンテンツIDに対応付けてハードディスク装置203に記憶させる。そして、CPU204は、ルートノードに向けてパブリッシュメッセージを送信する。
【0100】
一方、CPU204は、コンテンツの取得時刻が到来したグループとは異なるグループにおけるコンテンツの転送が行われている場合には、変更指示情報送信手段として、自ノードのノードIDを含む配信スケジュール変更依頼メッセージをセンターサーバ10に送信する。CPU204は、この場合にはコンテンツのダウンロードを実行しないので、変更させたい配信スケジュール情報をこの時点でハードディスク装置203から削除しても良い。配信スケジュール変更依頼メッセージ送信によりセンターサーバ10により変更された配信スケジュール情報が送信されてくるので、CPU204は、この配信スケジュール情報をスケジュール受信処理により受信する。そして、受信された新しい配信スケジュール情報に基づいてコンテンツのダウンロードが行われる。
【0101】
コンテンツ中継処理において、CPU204は、コンテンツ取得制御処理によりダウンロードしたコンテンツを他のノードNnに転送する。具体的に、CPU204は、コンテンツ送信要求メッセージを受信すると、当該メッセージに含まれるコンテンツIDに対応するデータチャンクをハードディスク装置203から取得し、メッセージ送信元のノードNnに送信する。グループ配信されるコンテンツ(データチャンク)を要求してくるノードNnは、配信スケジュール情報により、自ノードと同一のグループに所属しているノードNnと定められている。
【0102】
[6.コンテンツ分散保存システムSの動作]
次に、図11及び図12を参照して、本実施形態に係るコンテンツ分散保存システムSの動作について説明する。なお、ここでは一部の動作の説明を省略している。
【0103】
図11は、本実施形態に係るノードNnにおけるCPU204の処理例を示すフローチャートである。
【0104】
図11の処理は、例えばノードNnの電源がONとされた場合に開始される。先ず、CPU204は、拠点サーバとして機能するためのプログラムの各種の初期化処理を実行する(ステップS1)。次いで、CPU204は、センターサーバ10から新しい配信スケジュール情報を受信したか否かを判定する(ステップS2)。このとき、CPU204は、新しい配信スケジュール情報を受信した場合には(ステップS2:YES)、ハードディスク装置203に記憶されている配信スケジュール情報を新しい配信スケジュール情報で更新する(ステップS3)。
【0105】
一方、ステップS2において、CPU204は、新しい配信スケジュール情報を受信していない場合には(ステップS2:NO)、ユーザ端末Umからのコンテンツ送信要求メッセージを受信したか否かを判定する(ステップS4)。このとき、CPU204は、コンテンツ送信要求メッセージを受信した場合には(ステップS4:YES)、受信したコンテンツ送信要求メッセージに対応するコンテンツをユーザ端末Umに送信する(ステップS5)。
【0106】
ステップS4において、CPU204は、コンテンツ送信要求メッセージを受信していない場合には(ステップS4:NO)、配信スケジュール情報に示される取得時刻が到来したか否かを判定する(ステップS6)。このとき、CPU204は、取得時刻が到来した場合には(ステップS6:YES)、取得時刻が到来したグループ以外のグループのうち、既にコンテンツ中継処理中のグループは存在しないか否かを判定する(ステップ7)。例えば、CPU204は、コンテンツを送受信する際のパケットヘッダに設定されている識別情報に基づいて判定する。この識別情報は、どのグループに対応するコンテンツであるかを示す情報である。また、この識別情報は、センターサーバ10が、コンテンツを送信する際の送信パケットのヘッダに設定する。そして、CPU204は、コンテンツをダウンロードする際には、受信パケットのヘッダから識別情報を読み取る。また、CPU204は、ダウンロードしたコンテンツを転送する際には、ダウンロード時に読み取った識別情報を送信パケットのヘッダに設定する。これにより、CPU204は、現在コンテンツを転送しているか否かと、どのグループのコンテンツを転送しているか否かを判断することができる。
【0107】
このとき、CPU204は、既にコンテンツ中継処理中のグループは存在しない場合には(ステップS7:YES)、配信スケジュール情報に示されるデータチャンクのコンテンツIDを含むコンテンツ所在問合わせメッセージ(検索クエリ)をルートノードに向けて送信する(ステップS8)。一方、CPU204は、既にコンテンツ中継処理中のグループが存在する場合には(ステップS7:NO)、自ノード装置のノードIDを含む配信スケジュール変更依頼メッセージをセンターサーバ10に送信する(ステップS9)。
【0108】
CPU204は、ステップS3、S5、S8又はS9の処理を終えたとき、或いは、ステップS6において取得時刻が到来していない場合には(ステップS6:NO)、拠点サーバとしてのサービスを終了させるか否かを判定する(ステップS10)。例えば、キーボード208やマウス209がオペレータにより操作されることによってシャットダウンが指示された場合には、サービスを終了させると判定される。このとき、CPU204は、サービスを終了させない場合には(ステップS10:NO)、ステップS2に移行する。一方、CPU204は、サービスを終了させる場合には(ステップS10:YES)、プログラムを終了させるための各種の終了処理を実行し(ステップS11)、当該処理を終了させる。
【0109】
図12は、本実施形態に係るセンターサーバ10におけるCPU104の処理例を示すフローチャートである。
【0110】
図12の処理は、例えばセンターサーバ10の電源がONとされた場合に開始される。先ず、CPU104は、センターサーバ10として機能するためのプログラムの各種の初期化処理を実行する(ステップS21)。次いで、CPU104は、新しい配信スケジュール情報が入力されたか又はハードディスク装置103に記憶されている何れかの配信スケジュール情報が変更されたか否かを判定する(ステップS22)。配信スケジュール情報の変更の判定は、例えば、RAMに変更フラグが設定されているか否かを判定することにより行われる。この変更フラグは、後述するステップS26において配信スケジュール情報が変更されたとき、変更された配信スケジュールに対応して設定される情報である。このとき、CPU104は、配信スケジュール情報が入力され又は変更された場合には(ステップS22:YES)、全てのノードNnに対して、入力又は変更された配信スケジュールをプッシュ式で配信する(ステップS23)。
【0111】
一方、CPU104は、配信スケジュール情報が入力も変更されていない場合には(ステップS22:NO)、ノードNnから配信スケジュール変更依頼メッセージを受信したか否かを判定する(ステップS24)。このとき、CPU104は、配信スケジュール変更依頼メッセージを受信した場合には(ステップS24:YES)、変更する配信スケジュール情報を特定し、変更依頼ノードと入れ替え可能なノードNn(入替ノード)を検索する(ステップS25)。例えば、CPU104は、最下位層に位置するノードNnのうちコンテンツの中継能力が所定値以上のノードNnを検索する。次いで、CPU104は、変更依頼ノードと、検索した入替ノードとの階層を互いに入れ替えることにより、配信スケジュール情報を変更する(ステップS26)。このとき、CPU104は、変更した配信スケジュール情報に対応する変更フラグをRAMに設定する。その後、ステップS27の判定を経由してステップS22に移行した場合、CPU104は、変更フラグが設定されていることを認識する。従って、ステップS22において、CPU104は、配信スケジュール情報が変更されたと判定する。そして、ステップS23において、その変更された配信スケジュール情報を全てのノードNnに配信する。そして、CPU104は、配信スケジュール情報の配信が完了すると、変更フラグをRAMから削除する。
【0112】
CPU104は、ステップS23又はS26の処理を終えたとき、或いは、ステップS24において配信スケジュール変更依頼メッセージを受信していない場合には(ステップS24:NO)、センターサーバ10としてのサービスを終了させるか否かを判定する(ステップS27)。例えば、キーボード108やマウス109がオペレータにより操作されることによってシャットダウンが指示された場合には、サービスを終了させると判定される。このとき、CPU104は、サービスを終了させない場合には(ステップS27:NO)、ステップS22に移行する。一方、CPU104は、サービスを終了させる場合には(ステップS27:YES)、プログラムを終了させるための各種の終了処理を実行し(ステップS28)、当該処理を終了させる。
【0113】
以上説明したように、本実施形態によれば、ノードNnは、自ノードが所属するグループに対応するコンテンツを、当該グループに所属する他のノードNnにコンテンツ送信要求メッセージを送信することによりダウンロードする。また、ノードNnは、ダウンロードされたコンテンツを当該コンテンツに対応するグループに所属する他のノードNnに転送する。また、センターサーバ10は、配信スケジュール情報を各ノードNnに配信する。ノードNnは、この配信スケジュール情報を受信する。また、ノードNnは、配信スケジュール情報に基づいてコンテンツの取得時刻が到来したか否かを判定し、取得時刻が到来した場合には、当該コンテンツに対応する取得時刻到来グループ以外のグループに対応するコンテンツを転送しているか否かを判定する。そして、ノードNnは、コンテンツを転送している場合には、配信スケジュール変更依頼メッセージをセンターサーバ10に送信する。配信スケジュール変更依頼メッセージを受信したセンターサーバ10は、当該変更依頼ノードが現在コンテンツを転送している中継中グループ以外のグループのうち当該転送中に変更依頼ノードによる取得時刻が到来したコンテンツに対応する取得時刻到来グループにおいて、変更依頼ノードと、取得時刻が変更依頼ノードよりも遅い何れか一つのノードNnと、の取得時刻を互いに入れ替えた配信スケジュール情報を生成する。
【0114】
従って、変更依頼ノードは、自ノードによるコンテンツの取得時刻が変更された配信スケジュール情報を受信し、この配信スケジュール情報に基づいて取得時刻到来グループに対応するコンテンツをダウンロードするので、コンテンツの取得時刻が遅らされる。これにより、変更依頼ノードにおいて、中継中グループに対応するコンテンツの転送と、取得時刻到来グループに対応するコンテンツの転送と、が同時に行われなくなる。よって、複数のグループに所属するノードNnにおけるコンテンツの転送遅延を防ぐことができる。
【0115】
また、センターサーバ10は、配信スケジュール情報を変更する際、変更依頼ノードと取得時刻を入れ替える入替ノードを、変更依頼ノードが現在コンテンツを転送しているグループには所属していないノードNnから選定する。
【0116】
従って、入替ノードにおいても、中継中グループに対応するコンテンツの転送と、取得時刻到来グループに対応するコンテンツの転送と、が同時に行われることを確実に防止することができる。
【0117】
また、センターサーバ10は、配信スケジュール情報を変更する際、取得時刻到来グループにおいて、変更依頼ノードと、当該変更依頼ノードよりも下位の階層に位置するノードNnと、の階層を入れ替える。
【0118】
従って、階層の入れ替えによりコンテンツの取得時期を入れ替えることができるので、よりスケジュールを調整するための処理を簡易にすることができる。
【0119】
また、センターサーバ10は、配信スケジュール情報を変更する際、取得時刻到来グループにおいて、変更依頼ノードと、最下位層に位置する何れかのノードNnと、の階層を入れ替える。
【0120】
従って、変更依頼ノードが最下位層に移動することにより当該変更依頼ノードは、コンテンツを中継する必要が無くなるので、中継中グループに対応するコンテンツの転送と、取得時刻到来グループに対応するコンテンツの転送と、が同時に行われることを確実に防止することができる。
【0121】
なお、上記実施形態において、センターサーバ10は、配信スケジュール情報を変更する際、変更依頼ノードを最下位層に移動させるようにしていたが、移動先としては最下位層に限られるものではない。具体的には、変更依頼ノードが元来位置していた階層よりも下位の階層であり、且つ、取得時刻到来グループにおける変更依頼ノードのコンテンツの転送と、中継中グループにおける変更依頼ノードのコンテンツの転送が同時に行われないような階層であれば良い。
【0122】
また、上記実施形態におけるコンテンツ分散保存システムSは、グループに所属する複数のノードNnにより複数の階層により形成し、上位階層のノード装置から下位階層のノード装置へコンテンツが順次転送されるようにしていたが、階層を形成するようなシステムに限られるものではない。例えば、グループに所属する各ノードNnのコンテンツの取得順序を決めて、その順序に従ってコンテンツが順次転送されるようなシステムでも良い。そして、配信スケジュール情報の変更する場合には、この順序を入れ替えれば良い。
【0123】
また、上記実施形態においては、配信スケジュールの変更をセンターサーバ10が行っていたが、ノードNn自身が行っても良い。例えば、ノードNnは、配信スケジュール情報を保持しているので、この配信スケジュール情報を参照することにより、取得時刻到来グループにおいて取得時刻を入れ替える入替ノードを検索する。そして、ノードNnは、検索した入替ノードと直接通信することにより、ノードNn及び入替ノードにおける配信スケジュール情報を変更するようにする。
【0124】
また、上記実施形態においては、コンテンツを複数のデータチャンクに分割して配信するようにしていたが、分割しないで配信するようにしても良い。
【0125】
また、上記実施形態においては、コンテンツを取得する側のノードNnから要求することによってコンテンツが送信されるようにしていた。つまり、コンテンツはPull送信されるようにしていたが、これに限られるものではない。Push送信する場合に本発明を適用しても良い。
【0126】
また、上記実施形態においては、配信スケジュールをセンターサーバ10が一括管理していたが、これに限られるものではない。例えば、所定のノードNnが配信スケジュールを一括して管理し、変更するようにしても良い。また、例えば、各ノードNnが配信スケジュールを管理し、変更するようにしても良い。
【符号の説明】
【0127】
3 IX
4a、4b ISP
5a、5b DSL回線業者
6 FTTH回線業者
7 通信回線
8 ネットワーク
9 オーバーレイネットワーク
10 センターサーバ
101,201 主電源
102,202 主記憶装置
103,203 ハードディスク装置
104,204 CPU
105,205 ネットワークインタフェース
106,206 周辺機器制御チップ
107,207 ビデオチップ
108,208 キーボード
109,209 マウス
110,210 ディスプレイ
111,211 システムバス
112,212 ルータ
Nn ノード(拠点サーバ)
S コンテンツ分散保存システム
【技術分野】
【0001】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の通信システムの技術分野に関する。
【背景技術】
【0002】
この種のシステムに関して、特許文献1には、分散ハッシュテーブル(以下、「DHT」(Distributed Hash Table)という)を利用したコンテンツのマルチキャスト配信を行う技術が開示されている。具体的には、DHTを用いてコンテンツが複数の拠点サーバに分散配置される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−53662号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、拠点サーバが複数存在する場合、複数の拠点サーバをグループ化することが考えられる。拠点サーバをグループ化することで、各グループ毎に夫々異なったコンテンツを配信することができる。複数の拠点サーバが、複数のグループにグループ化される場合、或る拠点サーバが異なる複数のグループに所属することが考えられる。このとき、複数のグループに所属する拠点サーバが、或るグループで配信されているコンテンツと、別のグループで配信されているコンテンツとを同時に受信又は送信する場合がある。この場合、複数のグループからコンテンツを受信又は送信するために、転送速度が低下する。この結果、その拠点サーバからコンテンツを受け取る拠点サーバへの配信遅延が生じてしまう。
【0005】
そこで、本発明は、以上の点等に鑑みてなされたものであり、複数のグループに所属するノード装置におけるコンテンツの転送遅延を防ぐことを可能とするコンテンツ配信システム、ノード装置、サーバ装置、コンテンツ配信方法、コンテンツ中継処理プログラム及びスケジュール生成処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムであって、所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得手段と、前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送手段と、前記コンテンツ取得手段によるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得手段と、前記スケジュール情報取得手段により取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定手段と、前記取得時期が到来したと前記取得時期判定手段により判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定手段と、を備え、前記スケジュール生成装置は、前記コンテンツ転送手段により前記他のグループに対応するコンテンツを転送していると前記転送判定手段により判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、を備えることを特徴とする。
【0007】
この発明によれば、配信スケジュール情報が示すコンテンツの取得時機が到来したときにコンテンツ取得手段によりコンテンツが取得され、取得されたコンテンツがコンテンツ転送手段により転送される。ここで、ノード装置が、或るグループ(他のグループ)に対応するコンテンツを転送しているときに別のグループ(第1のグループ)に対応するコンテンツを取得すると、その後この第1のグループに対応するコンテンツも転送することとなる。そうすると、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われてしまう。そこで、取得時期判定手段及び転送判定手段による判定の結果、スケジュール生成装置により第1のグループにおけるコンテンツの取得時期が、自ノード装置よりも取得時期が遅い他のノード装置と入れ替えられて、配信スケジュール情報が生成される。そして、ノード装置は、自ノード装置によるコンテンツの取得時期が変更された配信スケジュールに基づいて第1のグループに対応するコンテンツを取得するので、第1のグループに対応するコンテンツの転送時期が遅らされる。これにより、自ノード装置において、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われなくなり、複数のグループに属するノード装置におけるコンテンツの転送遅延を防ぐことができる。
【0008】
請求項2に記載の発明は、請求項1に記載のコンテンツ配信システムにおいて、前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅いノード装置のうち前記他のグループには所属しないノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とする。
【0009】
この発明によれば、他のグループに対応するコンテンツを転送しているノード装置とコンテンツの取得時期を入れ替えるノード装置は、第1のグループに属するノード装置のうち他のグループには属さないノード装置である。従って、当該ノード装置において、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われることを確実に防止することができる。
【0010】
請求項3に記載の発明は、請求項1又は請求項2に記載のコンテンツ配信システムにおいて、前記コンテンツ配信システムは、前記ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、当該複数のノード装置が複数の階層を形成し、上位階層のノード装置から下位階層のノード装置へコンテンツが順次転送されるようにしたものであって、前記配信スケジュール情報は、コンテンツの取得時間を階層毎に対応付けて示すものであり、前記コンテンツ取得手段は、所属するグループに対応するコンテンツを、当該グループにおいて上位階層側に位置するノード装置に要求することにより取得し、前記コンテンツ転送手段は、前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループにおいて下位階層側に位置するノード装置に転送し、前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記転送ノード装置よりも下位の階層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とする。
【0011】
この発明によれば、階層を入れ替えるだけでコンテンツの取得時期を入れ替えることができるので、スケジュールを調整するための処理を簡易にすることができる。
【0012】
請求項4に記載の発明は、請求項3に記載のコンテンツ配信システムにおいて、前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて最下位層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とする。
【0013】
この発明によれば、他のグループに対応するコンテンツを転送しているノード装置が第1のグループにおいて最下位層に移動することにより、当該ノード装置は、第1のグループに関してはコンテンツを取得するだけで転送する必要は無くなる。従って、第1のグループに対応するコンテンツの転送と他のグループに対応するコンテンツの転送とが同時に行われることを確実に防止することができる。
【0014】
請求項5に記載の発明は、請求項1乃至4の何れか1項に記載のコンテンツ配信システムに含まれるノード装置であって、前記ノード装置は、前記コンテンツ取得手段と、前記コンテンツ転送手段と、前記スケジュール情報取得手段と、前記取得時期判定手段と、前記転送判定手段と、前記第1のグループに対応するコンテンツを前記コンテンツ転送手段により転送していると前記転送判定手段により判定された場合、前記他のグループにおける前記配信スケジュール情報の変更を指示する変更指示情報を前記スケジュール生成装置に送信する変更指示情報送信手段と、を備え、前記スケジュール情報取得手段は、前記配信スケジュールを前記スケジュール生成装置から受信することを特徴とする。
【0015】
請求項6に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるサーバ装置であって、各グループを構成する複数のノード装置夫々のコンテンツの取得時期をグループ毎に示す配信スケジュール情報を、各ノード装置に送信するスケジュール情報送信手段と、前記ノード装置から前記配信スケジュール情報の変更の指示を示す変更指示情報を受信する変更指示情報受信手段と、前記変更指示情報受信手段により前記変更指示情報が受信された場合、当該変更指示情報を送信したノード装置である送信ノード装置と、当該転送中に前記送信ノード装置による前記取得時期が到来したコンテンツに対応する第1のグループにおいて前記取得時期が前記送信ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、を備えることを特徴とする。
【0016】
請求項7に記載の発明は、コンピュータを、請求項5に記載のノード装置として機能させることを特徴とする。
【0017】
請求項8に記載の発明は、コンピュータを、請求項6に記載のサーバ装置として機能させることを特徴とする。
【0018】
請求項9に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるコンテンツ配信方法であって、所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得工程と、前記ノード装置が、前記コンテンツ取得工程において取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送工程と、前記ノード装置が、前記コンテンツ取得工程におけるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得工程と、前記ノード装置が、前記スケジュール情報取得工程において取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定工程と、前記ノード装置が、前記取得時期が到来したと前記取得時期判定工程において判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定工程と、前記スケジュール生成装置が、前記コンテンツ転送工程において前記他のグループに対応するコンテンツを転送していると前記転送判定工程において判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、を備えることを特徴とする。
【発明の効果】
【0019】
本発明によれば、同一のノード装置において、複数のグループに対応するコンテンツの転送が同時に行われなくなるので、複数のグループに所属するノード装置におけるコンテンツの転送遅延を防ぐことができる。
【図面の簡単な説明】
【0020】
【図1】一実施形態に係るコンテンツ分散保存システムSの構成及び動作概要について説明する。
【図2】一実施形態に係るコンテンツ分散保存システムSにおける概要構成の一例を示す図である。
【図3】一実施形態において、グループAに所属する複数のノードNnによる形成された階層とコンテンツの配信経路の一例を示す図である。
【図4】各時刻において各階層に位置するノードNnによるデータチャンクの取得スケジュールの一例を示す図である。
【図5】一実施形態において、DHTによるID空間及びノードNnのグループ分けを概念的に示す図である。
【図6】(a)は、グループAに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図であり、(b)は、グループBに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図である。
【図7】一実施形態において、DHTによるID空間におけるコンテンツの配信経路の一例を示す図である。
【図8】一実施形態に係る配信スケジュールの入れ替えの様子の一例を示す図である。
【図9】一実施形態に係るセンターサーバ10の概要構成例を示す図である。
【図10】一実施形態に係るノードNnの概要構成例を示す図である。
【図11】一実施形態に係るノードNnにおけるCPU204の処理例を示すフローチャートである。
【図12】一実施形態に係るセンターサーバ10におけるCPU104の処理例を示すフローチャートである。
【発明を実施するための形態】
【0021】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【0022】
[1.コンテンツ分散保存システムの構成及び動作概要]
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムの構成及び動作概要について説明する。
【0023】
図1は、本実施形態に係るコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
【0024】
図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としては、例えば、電話回線や光ケーブル等が用いられる。
【0025】
このようなネットワーク8には、複数のノード装置(以下、「ノード」という)Nn(n=1,2,3・・・の何れか)が接続されている。また、各ノードNnには、固有の製造番号及びIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
【0026】
各ノードNnは、本実施形態においては複数の拠点に分散配置された拠点サーバである。また、各拠点サーバは所定の基準に基づいてグループ化されているが、これに関しての詳細は後述する。
【0027】
なお、なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9である。オーバーレイネットワーク9は、論理的なネットワークである。かかるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムS(言い換えれば、オーバーレイネットワーク9)に参加している各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。
【0028】
また、ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。ノードIDは、ID空間に偏りなく分散して配置されることになる。ハッシュ関数としては、例えば、SHA−1等が用いられる。また、ハッシュ化した値は、例えば、bit長が160bitとなる。
【0029】
なお、コンテンツ分散保存システムSへの参加は、参加していないノードNn(例えば、ノードN8)が、参加している任意のノードNnに対して参加要求を示す参加メッセージを送信することによって行われる。任意のノードNnは、例えば、当該システムSに常時参加しているコンタクトノードである。
【0030】
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定している。具体的には、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。
【0031】
コンテンツ分散保存システムSに参加している1台のノードは、必要最低限のノードNnのノード情報をルーティングテーブルにとして記憶している。各ノードNn間で互いに各種メッセージが転送されることで、ノード情報を知らない(記憶していない)ノードNnについてのノード情報が取得される。
【0032】
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0033】
コンテンツ分散保存システムS2は、内容の異なる様々なコンテンツのレプリカを所定のファイル形式で複数のノードNnに分散して保存(格納)する。レプリカを保存しているノードNnは、以下「コンテンツ保持ノード」という。コンテンツ分散保存システムS2は、各ノードNn間でレプリカを利用可能になっている。各コンテンツのオリジナルはセンターサーバ50に保存されている。例えば、ノードN5には、タイトルがXXXの映画のコンテンツのレプリカが保存されている。一方、ノードN3には、タイトルがYYYの映画のコンテンツのレプリカが保存される。このように、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存されている。
【0034】
上述のコンテンツのレプリカには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有の識別情報)等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される。或いは、システム管理者が、コンテンツ毎に一意のID値を付与しても良い。この場合は、コンテンツ名とそのコンテンツIDの対応が書かれたコンテンツカタログ情報が、全ノードNnに配布される。また、この場合のコンテンツIDは、ノードIDと同一ビット長である。
【0035】
分散保存されているコンテンツのレプリカの所在は、インデックス情報として、コンテンツのレプリカの所在を管理(記憶)しているノードNn(以下、「ルートノード」という)等により記憶される。インデックス情報は、レプリカを保存したノードNnのノード情報と、コンテンツのコンテンツIDと等の組を含む。
【0036】
例えば、タイトルがXXXの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN4により管理される。また、タイトルがYYYの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードNnであるように定められる。コンテンツIDと最も近いノードIDとは、例えば、例えば、コンテンツIDと上位桁がより多く一致するノードIDである。
【0037】
そして、あるノードNnのユーザが、所望するコンテンツのレプリカを取得したい場合、当該レプリカの取得を望むノードNn(以下、「ユーザノード」という)は、メッセージ(クエリ)を生成する。このメッセージ(クエリ)は、取得を望むコンテンツのコンテンツID及びユーザノードのIPアドレス等を含むコンテンツ所在問合せメッセージである。コンテンツ所在問合せメッセージは、コンテンツ保持ノードを検索するためのメッセージでもある。上述のコンテンツ所在問合せメッセージが、ユーザノードが取得するDHTのルーティングテーブルに従って、他のノードNnに対して送出される。つまり、ユーザノードは、コンテンツ所在問合せメッセージを、ルートノードに向けて送出する。これにより、コンテンツ所在問合せメッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
【0038】
なお、各ノードNnにおいてユーザにより選択されるべきコンテンツのコンテンツ名及びコンテンツID等の属性情報は、例えばセンターサーバ10から全てのノードNnに配信されるコンテンツカタログ情報に記述されている。
【0039】
また、上記コンテンツ所在問合せ(検索)メッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0040】
上記コンテンツ所在問合せメッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得(検索)する。取得されたインデックス情報は、コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてコンテンツのレプリカをダウンロード(取得)することができる。インデックス情報に含まれるコンテンツ保持ノードのIPアドレス等に基づいて、ユーザノードはコンテンツ保持ノードにアクセスする。アクセスしたコンテンツ保持ノードから、コンテンツのレプリカをダウンロード(取得)することが可能になる。なお、当該インデックス情報には、例えば複数のコンテンツ保持ノードのノード情報が含まれていることもある(同一のコンテンツのレプリカが複数のコンテンツ保持ノードに保存されている場合)。かかる場合、ユーザノードは、当該複数のコンテンツ保持ノードのうち一つのコンテンツ保持ノードを選択する。そして、ユーザノードは、選択したコンテンツ保持ノードに接続してコンテンツのレプリカをダウンロードすることができる。
【0041】
なお、ルートノードは、当該インデックス情報に含まれるIPアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカをダウンロードすることもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
【0042】
また、ユーザノードは、コンテンツ保持ノードからコンテンツのレプリカを取得して保存したとき、保存したユーザノードは、パブリッシュ(登録通知)メッセージを生成する。パブリッシュメッセージは、レプリカを保存したことをルートノードへ知らせるためのメッセージである。パブリッシュメッセージは、レプリカのコンテンツID及び自己のノード情報を含む。パブリッシュメッセージは、ルートノードに向けて(ルートノード宛に)送出される。これにより、パブリッシュメッセージは、コンテンツ所在問合せメッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、ルートノードは、パブリッシュメッセージを受信する。ルートノードは、パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)する。こうして、上記ユーザノードは、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
【0043】
[2.コンテンツのグループ配信の概要]
次に、コンテンツのグループ配信について、図2乃至図4を用いて説明する。なお、ここからの説明においては、各ノードNnが保存しているレプリカも、コンテンツと称する。
【0044】
図2は、本実施形態に係るコンテンツ分散保存システムSにおける概要構成の一例を示す図である。
【0045】
コンテンツ分散保存システムSにおいては、各拠点に、拠点サーバとしてのノードNnが分散して設置されている。また、各拠点には、夫々複数のユーザ端末Um(m=1,2,3・・・の何れか)が設置されている。ユーザ端末Umとしては、例えば、パーソナルコンピュータ等を適用することができる。そして、図2に示すように、各拠点のノードNnと複数のユーザ端末Umとは、例えば、LAN(Local Area Network)等のネットワークを介して接続されている。また、各ノードNnは、グリッド技術としてDHTを利用したオーバーレイネットワーク9により互いに接続されている。
【0046】
例えば、拠点にいるユーザが所望のコンテンツを利用したい場合には、ユーザ端末Umを操作することにより、ユーザ端末Umからその拠点のノードNnにコンテンツ送信要求メッセージを送信させる。このメッセージを受信したノードNnは、要求されたコンテンツを自身が保存している場合には、その保存しているコンテンツをユーザ端末Umに送信する。一方、ノードNnは、リクエストされたコンテンツを保存していない場合には、そのコンテンツを保存している別のノードNnから当該コンテンツをダウンロードし保存するとともに、ダウンロードしたコンテンツをユーザ端末Umに送信する。
【0047】
また、各ノードNnは、所定の条件に基づいてグループ分けされている。例えば、拠点が所在する地域や部門等でグループ分けされている。グループ分けをする条件としては一つのみであっても複数であっても良い。条件が複数である場合には、各基準に基づいて夫々グループ分けがなされる。
【0048】
このようにグループ分けした場合において、特定のグループに所属する全ノードNnに対して特定のコンテンツを予め保存させておきたい場合がある。特定のコンテンツとは、例えば、特定のグループのみに関連するコンテンツである。その場合、コンテンツ分散保存システムSにおいては、そのグループに所属するノードNnで複数の階層を形成し、上位階層のノードNnから下位階層のノードNnにコンテンツがツリー状の配信経路を経て順次転送されるようにしている。このように、特定のグループに所属するノードNnに対してコンテンツを配信することを、「グループ配信」という。
【0049】
図3は、グループAに所属する複数のノードNnによる形成された階層とコンテンツの配信経路の一例を示す図である。
【0050】
例えば、グループAは、図3に示すように、ノードN1〜N22の22台のノードNnが所属しており、これらのノードNnにより4階層が形成されている。第1階層にはノードN1のみが位置している。また、第2階層には、ノードN2〜N4の3台のノードNnが位置している。また、第3階層には、ノードN5〜N10の6台のノードNnが位置している。更に、第4階層には、ノードN11〜N22の12台のノードNnが位置している。
【0051】
このような構成のグループAにおいて、先ず或る時刻T1において、第1階層に位置するノードN1がコンテンツ所在問合せを送信することにより、ダウンロードすべきコンテンツの所在を検索する。ただし、このときは、他のグループも含めてそのコンテンツを保存しているノードNnは存在していない。従ってこの場合、ノードN1は、オリジナルのコンテンツを予め保存しているセンターサーバ10からコンテンツをダウンロードする。コンテンツをダウンロードしたノードN1が、当該コンテンツを保存しパブリッシュメッセージを送信することで、ルートノードが保持するインデックス情報にノードN1が登録される。
【0052】
ノードN1によるコンテンツの取得開始から所定時間が経過した時刻T2において、次に、第2階層に位置するノードN2〜N4が夫々コンテンツの所在を検索する。すると、ノードN1がコンテンツ保持ノードであることが判明するので、ノードN2〜N4は、夫々ノードN1からコンテンツをダウンロードする。
【0053】
そして、ノードN2〜N4によるコンテンツの取得開始から更に所定時間が経過した時刻T3において、第3階層に位置するノードN5〜N10が夫々コンテンツの所在を検索する。すると、ノードN2〜N4がコンテンツ保持ノードであることが判明するので、ノードN5〜N10は、夫々ノードN2〜N4の何れかからコンテンツをダウンロードする。このとき、ノードN5〜N10は、コンテンツの取得先を例えばランダムに選択するので、ノードN2〜N4は、夫々平均して2台のノードNnに対してコンテンツを配信することとなる。なおコンテンツの所在の検索においては、コンテンツ保持ノードとして、ノードN2〜N4以外にノードN1も検索されるので、ノードN1からもコンテンツがダウンロードされる可能性がある。そうなるとコンテンツの配信経路がきれいなツリー形状にならない。そこでこの場合には、例えばノードN1は、時刻T2が到来する前に自身のノードIDとコンテンツのコンテンツIDとを含むコンテンツ削除メッセージを、ルートノードに向けて送信すると良い。コンテンツ削除メッセージを受信したルートノードは、自身が保持するインデックスキャッシュ情報からノードN1を削除する。これによりノードN1はコンテンツ保持ノードとしては検索されないようになる。
【0054】
次に、ノードN5〜N10によるコンテンツの取得開始から更に所定時間が経過した時刻T4において、第4階層に位置するノードN11〜N22が夫々コンテンツの所在を検索し、ノードN5〜N10の何れかからコンテンツをダウンロードする。このようにしてグループAに所属する全ノードNnに対してコンテンツが配信される。
【0055】
基本的にはこのようにしてコンテンツが配信されるのであるが、コンテンツを丸ごとそのまま配信していたのでは配信効率が良くない。例えば、時刻T1〜T2の間にコンテンツの送受信を行っているノードNnは、第1階層のノードN1と第2階層のノードN2〜N4の4台のみであり、その他の階層のノードN5〜N22は、コンテンツの配信に関しては完全に未稼働の状態である。そこで、コンテンツ分散保存システムSにおいては、コンテンツを複数のデータ(以下、「データチャンク」という)に分割してデータチャンク単位で順次配信するようになっている。各データチャンクには、通常のコンテンツと同様に、夫々コンテンツIDが割り当てられている。従って、各ノードNnは、データチャンクをコンテンツの場合と同様にダウンロードすることができる。
【0056】
図4は、各時刻において各階層に位置するノードNnによるデータチャンクの取得スケジュールの一例を示す図である。
【0057】
各階層のノードNnにおいて、データチャンクは、例えば、図4に示すようなスケジュールでダウンロードされる。なお、図4においては、説明を簡単にするため、データチャンクを全部で4個とし、また、コンテンツIDの代わりに、シーケンス番号でそのデータチャンクを示している。
【0058】
先ず、時刻t1においては、第1階層のノードNnが、シーケンス番号1のデータチャンク(以下データチャンク1)をセンターサーバ10からダウンロードする。次に、1周期経過後の時刻t2において、第1階層のノードNnが、データチャンク2をセンターサーバ10からダウンロードする。それと同時に、第2階層のノードNnが、データチャンク1を第1階層のノードNnからダウンロードする。更に1周期経過後の時刻t3において、第1階層のノードNnによるセンターサーバ10からのデータチャンク3のダウンロード、第2階層のノードNnによる第1階層のノードNnからのデータチャンク2のダウンロード、及び第3階層のノードNnによる第2階層のノードNnからのデータチャンク1のダウンロードが同時に行われる。そして、更に1周期経過後の時刻t4において、第1階層のノードNnによるセンターサーバ10からのデータチャンク4のダウンロード、第2階層のノードNnによる第1階層のノードNnからのデータチャンク3のダウンロード、第3階層のノードNnによる第2階層のノードNnからのデータチャンク2のダウンロード、及び第4階層のノードNnによる第3階層のノードNnからのデータチャンク1のダウンロードが同時に行われる。
【0059】
以下同様にして4周期が経過すると、全ノードに対して全てのデータチャンク、つまり、1個のコンテンツの配信が完了する。このように、隣接する階層間でデータチャンクの取得タイミングを少なくとも1周期以上ずらされる。これにより、コンテンツ分散保存システムSにおいては、ノードNnの稼働率を上げて、コンテンツの配信開始から配信完了までに要する時間を短縮させるようになっている。そして、ユーザ端末Umからの要求に応じてコンテンツの送信が可能なように、例えば、ノードNnにおいて複数のデータチャンクからコンテンツが復元される。
【0060】
このようなコンテンツの配信スケジュールは、配信スケジュール情報として、センターサーバ10により管理される。配信スケジュール情報には、例えば、配信対象のコンテンツのコンテンツID、配信するグループに固有に割り当てられたグループID、データチャンクの総数、各データチャンクのコンテンツID、階層の総数、各階層に割り当てられたノードNnのノードID、各階層における各データチャンクの取得時刻等が含まれる。ここで、各階層における取得時刻の間隔は、データチャンク1個のダウンロードに要する時間以上の長さとされるが、この周期が長すぎると、グループ内の全ノードNnへの配信完了までに要する時間が長くなるので、適切な長さに調節される。なお、データチャンクを1個のパケットで構成し、1パケットあたりのデータ量が、転送効率が最大となるように適切に調節されるようにしても良い。また、各階層に割り当てられるノードNnの台数は、例えば、夫々その上位のノードNn1台あたり同時に何台に対してコンテンツを送信することができるかを示す同時送信可能台数から決定される。図3の例では、第1階層に割り当てられたノードNnは1台であり、同時送信可能台数が3台であるとすると、第2階層に割り当てられるノードNnの台数は3台となる。また、第2階層における同時送信可能台数が2台であるとすると第3階層に割り当てられるノードNnの台数は6台となる。この同時送信可能台数は、例えば、ノードNnの上り帯域幅(上り回線速度)や処理能力等に応じて決定される。
【0061】
配信スケジュール情報は、例えば、カタログ情報と同様にして全ノードNnに配布される。この配信スケジュール情報の配布は、例えば、特許文献1に記載のされているようなDHTを利用したマルチキャスト配信を利用しても良い。
【0062】
なお、これまでの説明で明らかなように、図3に示すツリー状の配信経路は、予め定められたものではなく、各ノードNnによるコンテンツ保持ノードの検索の結果形成されたものである。従って、各ノードNnが、データチャンク毎にその所在を検索するようにすると、データチャンク毎に異なる配信経路が形成されることとなる。
【0063】
また、上記説明においては、最初はセンターサーバ10からノードNnがコンテンツをダウンロードすることによりグループ配信が開始されるようにしていたが、これに限られるものではない。例えば、予め1又は複数のノードNnにコンテンツを保存させておいて、その状態からグループ配信を開始させるようにしても良い。
【0064】
[3.グループ配信におけるコンテンツの中継タイミングの衝突とその回避]
コンテンツ分散保存システムSにおいては、上述のようにしてグループ配信が行われる。ここで、グループの分け方によっては、1台のノードNnが複数のグループに所属する場合もあり得る。この複数のグループの間で、グループ配信のスケジュールが重なると、その1台のノードNnによる各グループにおけるコンテンツの中継タイミングが衝突する可能性がある。
【0065】
図5は、DHTによるID空間及びノードNnのグループ分けを概念的に示す図である。また、図6(a)は、グループAに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図である。また、図6(b)は、グループBに所属する複数のノードNnにより形成された階層とコンテンツの配信経路の一例を示す図である。
【0066】
各ノードNnに付与されたノードIDは、共通のハッシュ関数によって生成されたため、 図5に示すように、同一のリング状のID空間上にさほど偏ることなく散らばって存在するものと考えることができる。なお、図5においては、24ビットでノードIDを付与し、図示したものである。図中の白点及び黒点はノードIDを示し、反時計回りでIDが増加するものとする。
【0067】
各ノードNnは、或る条件に基づいて、例えばグループA及びBにグループ分けされる。ここで、例えばノードN1、N2、N3、N5、N7及びN15はグループAに所属し、ノードN7、N23、N24、N26、N28及びN36はグループBに所属している。この場合、ノードN7は、グループAとグループBの双方に所属しているため、図5においてはそのノードIDを黒点で示している。なお、図5においては、各グループに所属するノードNnのうち一部のノードNnについて示している。
【0068】
グループAに所属するノードNnにより形成された階層及びグループBに所属するノードNnにより形成された階層は、例えば、図6(a)及び図6(b)に示すようになっている。ノードN7は、グループAにおいて第3階層に位置している。その一方で、ノードN7は、グループBにおいて第2階層に位置している。
【0069】
ここで、例えば、グループAの方で先にコンテンツXの配信が開始される。コンテンツXは、データチャンクX1、データチャンクX2、データチャンクX3・・・に分割されており、コンテンツXの配信開始により、先ずデータチャンクX1を、グループAの第1階層に位置する例えばノードN1がダウンロードする。その後、3周期目において、グループAの第3階層に位置するノードN7が、データチャンクX1を第2階層に位置する例えばノードN3からダウンロードする。そして、4周期目において、ノードN7が、データチャンクX2をダウンロードしつつ、データチャンクX2を第4階層に位置する例えばノードN15及びノードN16に送信する。つまり、4周期目からノードN7による中継処理が開始される。
【0070】
一方で、グループBにおいては、グループAにおけるコンテンツXの配信開始から、例えば4周期目にコンテンツYの配信が開始される。コンテンツYは、データチャンクY1、データチャンクY2、データチャンクY3・・・に分割されている。この場合においては、コンテンツXの配信開始から5周期目において、グループBの第2階層に位置するノードN7が、データチャンクY1を第1階層に位置する例えばノードN23からダウンロードする。そして、6周期目において、ノードN7が、データチャンクY2をダウンロードしつつ、データチャンクY2を第3階層に位置する例えばノードN28及びノードN29に送信する。
【0071】
その結果、6周期目において、ノードN7による、グループAにおける中継処理と、グループBにおける中継処理とが同時に行われることとなる。これを中継タイミングの衝突という。そうすると、ノードN7は、同時に4台のノードNnに対してデータチャンクを送信することとなる。元来、グループAの配信スケジュールにおいても、グループBの配信スケジュールにおいても、夫々ノードN7の同時送信可能台数は2台として各階層に位置するノードNnの台数が設定されていたとすると、実際の送信数はそれを超えるものとなる。すると、ノードN7の中継負荷の増大や上り帯域の消費等により、コンテンツの中継遅延が生じる。つまり、グループAにおいては、第4階層に位置する、例えばノードN16及びN17によるデータチャンクのダウンロード時間が長くなる。
【0072】
また、グループBにおいては、第3階層に位置する、例えばノードN28及びN29によるデータチャンクのダウンロード時間が長くなる。そして、グループBにおいて、第4階層における取得時刻が到来してもノードN28及びN29によるダウンロードが終了していない場合には、第4階層に位置する12台のノードNnは、ノードN28及びN29以外の第3階層に位置するノードNn、つまり、ノードN26、N27、N30及び31の4台からデータチャンクをダウンロードすることとなる。そうすると、この4台のノードNnの同時送信数は平均して3台となるから、配信スケジュールにより予定されている同時送信可能台数の2台を超えることとなる。そうすると、この4台のノードNnのデータチャンクの中継も遅延する。これにより、第4階層に位置する12台のノードNnによるデータチャンクのダウンロード時間が長くなる。図6において、網掛け領域で囲まれているノードNnは、ダウンロード時間が長くなるノードNnである。
【0073】
このようにして中継遅延が生じることにより、コンテンツの配信がスケジュール通りに完了しない事態が生じる。そこで、コンテンツ分散保存システムSにおいては、各ノードNnが、或るグループ(以下、「中継中グループ」という)におけるコンテンツを中継しているときに別のグループ(以下、「取得時刻到来グループ」という)におけるコンテンツの取得時刻が到来した場合には、コンテンツの中継タイミングの衝突を回避すべく、後者の方の取得時刻到来グループにおける配信スケジュール(当該ノードNnのコンテンツの取得時刻)をセンターサーバ10により変更させることとした。つまり、自ノードにおいて中継中グループに対応するコンテンツの中継処理を行っているときに、更に取得時刻到来グループのコンテンツをダウンロードすると、その直後に当該コンテンツの中継処理も行わなければならなくなるので、取得時刻到来グループのコンテンツの取得時刻を遅らせるようセンターサーバ10に依頼するのである。
【0074】
図7は、DHTによるID空間におけるコンテンツの配信経路の一例を示す図である。また、図8は、配信スケジュールの入れ替えの様子の一例を示す図である。
【0075】
図6に示す配信経路を、DHTによるID空間上で示すと図7に示す通りとなる。グループAにおけるコンテンツを中継しているときにグループBにおけるコンテンツの取得時刻が到来したノードN7は、グループBにおいて、自身の取得時刻を変更させるための配信スケジュール変更依頼メッセージをセンターサーバ10に送信する。配信スケジュール変更依頼メッセージを受信したセンターサーバ10は、図8に示すように、対応する配信スケジュール情報において、依頼元となるノードN7の階層を最下位層である第4階層に移動させる。また、センターサーバ10は、ノードN7を第4階層に移動させる代わりに、現時点で第4階層に位置するノードNnのうち、グループAに属していない例えばノードN36を、ノードN7が位置していた第2階層に移動させる。センターサーバ10は、このように配信スケジュール情報を変更すると、当該配信スケジュール情報を全ノードに配布する。
【0076】
新しい配信スケジュールを受信したノードN7は、グループAにおけるコンテンツの中継処理は継続しつつ、グループBにおいては、第4階層に対応する取得タイミングでコンテンツをダウンロードする。最下位層である第4階層は、データチャンクをダウンロードするのみで、中継が行われない階層であるので、ノードN7に関する限り、グループAとグループBとの間で中継処理の衝突が発生することは決してない。
【0077】
一方、新しい配信スケジュールを受信したノードN36は、第2階層に対応する取得タイミングでデータチャンクをダウンロードする。そして、ノードN36は、データチャンクの中継処理を行う。ここで、ノードN36は、グループAには属していないので、ノードN36に関しても、グループAとグループBとの間で中継処理の衝突が発生することはない。
【0078】
[4.センターサーバ10の構成等]
次に、図9を参照して、センターサーバ10の構成及び機能について説明する。
【0079】
図9は、センターサーバ10の概要構成例を示す図である。
【0080】
センターサーバ10は、図9に示すように、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、ビデオチップ107、キーボード108、マウス109及びディスプレイ110等を備えて構成されている。また、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、及びビデオチップ107は、システムバス111を介して相互に接続されている。また、センターサーバ10は、ルータ112を介してネットワーク8に接続される。本実施形態に係るサーバ装置として機能するコンピュータは、CPU104及び主記憶装置102により構成される。
【0081】
主記憶装置102は、RAM及びROM等を備えて構成されており、オペレーティングシステム、運用管理プログラム、拠点サーバ管理プログラム、配信スケジュール管理プログラム及び配信スケジュール調節プログラム等が記憶されている。なお、各プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
【0082】
ハードディスク装置103には、各種コンテンツ、拠点サーバデータベース及び配信スケジュール情報等が記憶されている。ここで、各コンテンツは、そのコンテンツIDに対応付けて記憶されている。また、コンテンツがグループ配信の対象とされるコンテンツである場合には、これを分割した複数のデータチャンクとして夫々そのコンテンツIDに対応付けて記憶されている。拠点サーバデータベースには、拠点サーバとしてのノードNnのノードID及びネットワークアドレス情報等が登録されている。また、拠点サーバデータベースには、各グループのグループIDと各グループに所属するノードNnのノードIDとが対応付けて登録されている。配信スケジュール情報は、例えばグループ配信の対象とされるコンテンツ毎に登録されている。そして、配信スケジュール情報には、配信対象のコンテンツのコンテンツID、配信するグループのグループID、データチャンクの総数、各データチャンクのコンテンツID、階層の総数、各階層に割り当てられたノードNnのノードID及び各階層における各データチャンクの取得時刻等が含まれている。この配信スケジュール情報は、例えば、オペレータがキーボード108及びマウス109等を操作することにより生成されたり、所定の端末装置からルータ112を介して受信される。
【0083】
CPU104は、主記憶装置102に記憶された各種プログラム等を読み出して実行することにより、本発明におけるスケジュール情報送信手段、変更指示情報受信手段及びスケジュール情報生成手段等として機能する。また、CPU104は、スケジュール配信処理及びスケジュール変更処理等を行う。
【0084】
ここで、スケジュール配信処理において、CPU104は、配信スケジュール情報が入力されると、スケジュール情報送信手段として、入力された配信スケジュール情報を各ノードNnに配信する。配信スケジュール情報は、生成されたり受信されたりすること等により入力される。このとき、CPU104は、配信スケジュール情報を全てのノードNnに配信しても良いし、関係するグループに所属するノードNnに対してのみ配信しても良い。また、配信スケジュール情報の配信方法としては、例えば、特許文献1に記載されているようなDHTを利用したマルチキャスト配信が用いられる。また、例えば、各ノードNnが新しい、または変更された配信スケジュール情報の有無をセンターサーバ10に定期的に問い合わせ、これに応じてCPU104が送信するようにしても良い。
【0085】
そして、スケジュール変更処理において、CPU104は、変更指示情報受信手段としてノードNnから配信スケジュール変更依頼メッセージを受信すると、スケジュール情報生成手段として、配信スケジュール情報を変更する。具体的に、CPU104は、受信した配信スケジュール変更依頼メッセージからメッセージ送信元のノードNn(以下、「変更依頼ノード」という)のノードIDを取得する。次いで、CPU104は、取得したコンテンツIDが設定されている配信スケジュール情報を検索する。変更依頼ノードが複数のグループに所属している場合には、各グループに対応した配信スケジュール情報が夫々検索される。そこで、CPU104は、これらの配信スケジュール情報に基づいて、変更依頼ノードが或るグループ(中継中グループ)におけるコンテンツを現在中継している最中に当該変更依頼ノードによるコンテンツの取得開始時刻が到来している別のグループ(取得時刻到来グループ)の配信スケジュール情報を特定する。コンテンツの取得開始時刻とは、当該コンテンツの最初のデータチャンクの取得時刻である。
【0086】
そして、CPU104は、特定した配信スケジュール情報において、変更依頼ノードとの配信スケジュール(階層)の入れ替えが可能なノードNn(以下、「入替ノード」という)を検索する。具体的に、CPU104は、最下位層に位置しているノードNnの中から何れか一つを入替ノードとして選定する。次いで、CPU104は、特定した配信スケジュールにおいて、最下位層に対応付けられている入替ノードのノードIDを削除するとともに、当該入替ノードのノードIDを、変更依頼ノードのノードIDが対応付けられている階層に追加して対応付ける。また、CPU104は、特定した配信スケジュールにおいて、変更依頼ノードのノードIDを当該ノードIDが対応付けられている階層から削除するとともに、当該変更依頼ノードのノードIDを最下位層に追加して対応付ける。このようにして変更された配信スケジュール情報は、スケジュール配信処理において各ノードNnに配信される。
【0087】
入替ノードを検索するにあたっては、最下位層に位置するノードNnのうち、例えば、コンテンツの中継能力が最も高いノードNn、或いは、コンテンツを中継する能力があるノードNnを入替ノードとして検索しても良い。コンテンツを中継する能力があるノードNnとは、中継能力が所定値以上であるノードNnである。コンテンツの中継能力が高いノードNnが最下位層以外の階層に移動する、つまり、コンテンツを中継するノードNnとなることにより、コンテンツの配信効率を高めることができる。ここで、コンテンツの中継能力は、例えば、各ノードNnの上り帯域幅(上り回線速度)から判定することができる。例えば、各ノードNnは、コンテンツ分散保存システムSに参加する際、帯域測定を行い、その結果をセンターサーバ10に送信する。帯域測定の方法は公知の各種方法を用いることができるそして、CPU104は、帯域測定の結果をノードIDに対応付けて拠点サーバデータベースに登録しておけば良い。
【0088】
また、ノードNnが、配信スケジュール変更依頼メッセージを送信する際に、当該メッセージに変更対象となる配信スケジュール情報を示す情報を含めるようにすれば、CPU104にて、変更すべき配信スケジュール情報を検索する必要は無くなる。配信スケジュール情報を示す情報とは、例えば、コンテンツIDやグループID等である。
【0089】
なお、このようなセンターサーバ10として、専用のサーバの他、何れかのノードNn(拠点サーバ)が適用されても良い。
【0090】
[5.ノードNnの構成等]
次に、図10を参照して、ノードNnの構成及び機能について説明する。
【0091】
図10は、ノードNnの概要構成例を示す図である。
【0092】
ノードNnは、図10に示すように、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、ビデオチップ207、キーボード208、マウス209及びディスプレイ210等を備えて構成されている。また、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、及びビデオチップ207は、システムバス211を介して相互に接続されている。また、ノードNnは、ルータ212を介してネットワーク8及び拠点に構築されたネットワークに接続される。本実施形態に係るノード装置として機能するコンピュータは、CPU304及び主記憶装置302により構成される。
【0093】
主記憶装置202は、オペレーティングシステム、運用管理プログラム、HTTP(Hyper Text Transfer Protocol)サーバプログラム、ルーティングテーブル、ルート制御プログラム及び配信順序管理プログラム等が記憶されている。なお、各プログラムは、例えば、センターサーバ10からダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
【0094】
ハードディスク装置203には、ダウンロードされたコンテンツまたはコンテンツを分割したデータチャンクと配信スケジュール情報等が記憶されている。
【0095】
CPU204は、主記憶装置202に記憶された各種プログラム等を読み出して実行することにより、本発明におけるスケジュール情報取得手段、取得時期判定手段及び転送判定手段等として機能する。また、CPU204は、スケジュール受信処理、コンテンツ取得制御処理及びコンテンツ中継処理等を行う。
【0096】
ここで、スケジュール受信処理において、CPU204は、スケジュール情報取得手段として、センターサーバ10から送信されてきた配信スケジュール情報を受信しハードディスク装置203に記憶させる。
【0097】
コンテンツ取得制御処理において、CPU204は、取得時期判定手段として、自ノードが所属するグループのコンテンツの取得時刻が到来したか否かを判定する。具体的に、CPU104は、ハードディスク装置203に記憶されている自ノードが所属するグループの配信スケジュール情報を参照し、自ノードが位置する階層における各データチャンクの取得時刻が到来したか否かを判定する。また、CPU204は、コンテンツの取得時刻が到来したと判定した場合には、転送判定手段として、その取得時刻が到来したグループとは異なるグループにおけるコンテンツの転送をコンテンツ中継処理で行っているか否かを判定する。
【0098】
この判定は、例えば、コンテンツを送受信する際のパケットヘッダに設定されている情報に基づいて行っても良い。例えば、センターサーバ10が、ノードNnに対してコンテンツを送信する際、送信パケットのヘッダに、どのグループに対応するコンテンツであるかを示す情報を設定する。どのグループに対応するコンテンツであるかを示す情報は、例えば、グループID、コンテンツID等の識別情報である。そして、ノードNnにおいて、CPU204が、コンテンツをダウンロードする際には、受信パケットのヘッダから識別情報を読み取る。また、CPU204が、ダウンロードしたコンテンツを転送する際には、ダウンロード時に読み取った識別情報を送信パケットのヘッダに設定して、識別情報を引き継ぐ。このようにすれば、自ノードで現在転送しているコンテンツがどのグループのどのコンテンツであるかを識別することができる。
【0099】
CPU204は、上記判定により、コンテンツの取得時刻が到来したグループとは異なるグループにおけるコンテンツの転送が行われていない場合には、コンテンツ取得手段として、その取得時刻が到来したコンテンツをダウンロードする。具体的に、CPU204は、配信スケジュール情報に設定されているコンテンツIDを含むコンテンツ所在問合せメッセージをルートノードに向けて送信し、これに応じてルートノードから送信されてきたインデックス情報を受信する。次いで、CPU204は、受信したインデックス情報に示される任意のコンテンツ保持ノードにコンテンツ送信要求メッセージを送信してデータチャンクをダウンロードする。次いで、CPU204は、ダウンロードしたデータチャンクをコンテンツIDに対応付けてハードディスク装置203に記憶させる。そして、CPU204は、ルートノードに向けてパブリッシュメッセージを送信する。
【0100】
一方、CPU204は、コンテンツの取得時刻が到来したグループとは異なるグループにおけるコンテンツの転送が行われている場合には、変更指示情報送信手段として、自ノードのノードIDを含む配信スケジュール変更依頼メッセージをセンターサーバ10に送信する。CPU204は、この場合にはコンテンツのダウンロードを実行しないので、変更させたい配信スケジュール情報をこの時点でハードディスク装置203から削除しても良い。配信スケジュール変更依頼メッセージ送信によりセンターサーバ10により変更された配信スケジュール情報が送信されてくるので、CPU204は、この配信スケジュール情報をスケジュール受信処理により受信する。そして、受信された新しい配信スケジュール情報に基づいてコンテンツのダウンロードが行われる。
【0101】
コンテンツ中継処理において、CPU204は、コンテンツ取得制御処理によりダウンロードしたコンテンツを他のノードNnに転送する。具体的に、CPU204は、コンテンツ送信要求メッセージを受信すると、当該メッセージに含まれるコンテンツIDに対応するデータチャンクをハードディスク装置203から取得し、メッセージ送信元のノードNnに送信する。グループ配信されるコンテンツ(データチャンク)を要求してくるノードNnは、配信スケジュール情報により、自ノードと同一のグループに所属しているノードNnと定められている。
【0102】
[6.コンテンツ分散保存システムSの動作]
次に、図11及び図12を参照して、本実施形態に係るコンテンツ分散保存システムSの動作について説明する。なお、ここでは一部の動作の説明を省略している。
【0103】
図11は、本実施形態に係るノードNnにおけるCPU204の処理例を示すフローチャートである。
【0104】
図11の処理は、例えばノードNnの電源がONとされた場合に開始される。先ず、CPU204は、拠点サーバとして機能するためのプログラムの各種の初期化処理を実行する(ステップS1)。次いで、CPU204は、センターサーバ10から新しい配信スケジュール情報を受信したか否かを判定する(ステップS2)。このとき、CPU204は、新しい配信スケジュール情報を受信した場合には(ステップS2:YES)、ハードディスク装置203に記憶されている配信スケジュール情報を新しい配信スケジュール情報で更新する(ステップS3)。
【0105】
一方、ステップS2において、CPU204は、新しい配信スケジュール情報を受信していない場合には(ステップS2:NO)、ユーザ端末Umからのコンテンツ送信要求メッセージを受信したか否かを判定する(ステップS4)。このとき、CPU204は、コンテンツ送信要求メッセージを受信した場合には(ステップS4:YES)、受信したコンテンツ送信要求メッセージに対応するコンテンツをユーザ端末Umに送信する(ステップS5)。
【0106】
ステップS4において、CPU204は、コンテンツ送信要求メッセージを受信していない場合には(ステップS4:NO)、配信スケジュール情報に示される取得時刻が到来したか否かを判定する(ステップS6)。このとき、CPU204は、取得時刻が到来した場合には(ステップS6:YES)、取得時刻が到来したグループ以外のグループのうち、既にコンテンツ中継処理中のグループは存在しないか否かを判定する(ステップ7)。例えば、CPU204は、コンテンツを送受信する際のパケットヘッダに設定されている識別情報に基づいて判定する。この識別情報は、どのグループに対応するコンテンツであるかを示す情報である。また、この識別情報は、センターサーバ10が、コンテンツを送信する際の送信パケットのヘッダに設定する。そして、CPU204は、コンテンツをダウンロードする際には、受信パケットのヘッダから識別情報を読み取る。また、CPU204は、ダウンロードしたコンテンツを転送する際には、ダウンロード時に読み取った識別情報を送信パケットのヘッダに設定する。これにより、CPU204は、現在コンテンツを転送しているか否かと、どのグループのコンテンツを転送しているか否かを判断することができる。
【0107】
このとき、CPU204は、既にコンテンツ中継処理中のグループは存在しない場合には(ステップS7:YES)、配信スケジュール情報に示されるデータチャンクのコンテンツIDを含むコンテンツ所在問合わせメッセージ(検索クエリ)をルートノードに向けて送信する(ステップS8)。一方、CPU204は、既にコンテンツ中継処理中のグループが存在する場合には(ステップS7:NO)、自ノード装置のノードIDを含む配信スケジュール変更依頼メッセージをセンターサーバ10に送信する(ステップS9)。
【0108】
CPU204は、ステップS3、S5、S8又はS9の処理を終えたとき、或いは、ステップS6において取得時刻が到来していない場合には(ステップS6:NO)、拠点サーバとしてのサービスを終了させるか否かを判定する(ステップS10)。例えば、キーボード208やマウス209がオペレータにより操作されることによってシャットダウンが指示された場合には、サービスを終了させると判定される。このとき、CPU204は、サービスを終了させない場合には(ステップS10:NO)、ステップS2に移行する。一方、CPU204は、サービスを終了させる場合には(ステップS10:YES)、プログラムを終了させるための各種の終了処理を実行し(ステップS11)、当該処理を終了させる。
【0109】
図12は、本実施形態に係るセンターサーバ10におけるCPU104の処理例を示すフローチャートである。
【0110】
図12の処理は、例えばセンターサーバ10の電源がONとされた場合に開始される。先ず、CPU104は、センターサーバ10として機能するためのプログラムの各種の初期化処理を実行する(ステップS21)。次いで、CPU104は、新しい配信スケジュール情報が入力されたか又はハードディスク装置103に記憶されている何れかの配信スケジュール情報が変更されたか否かを判定する(ステップS22)。配信スケジュール情報の変更の判定は、例えば、RAMに変更フラグが設定されているか否かを判定することにより行われる。この変更フラグは、後述するステップS26において配信スケジュール情報が変更されたとき、変更された配信スケジュールに対応して設定される情報である。このとき、CPU104は、配信スケジュール情報が入力され又は変更された場合には(ステップS22:YES)、全てのノードNnに対して、入力又は変更された配信スケジュールをプッシュ式で配信する(ステップS23)。
【0111】
一方、CPU104は、配信スケジュール情報が入力も変更されていない場合には(ステップS22:NO)、ノードNnから配信スケジュール変更依頼メッセージを受信したか否かを判定する(ステップS24)。このとき、CPU104は、配信スケジュール変更依頼メッセージを受信した場合には(ステップS24:YES)、変更する配信スケジュール情報を特定し、変更依頼ノードと入れ替え可能なノードNn(入替ノード)を検索する(ステップS25)。例えば、CPU104は、最下位層に位置するノードNnのうちコンテンツの中継能力が所定値以上のノードNnを検索する。次いで、CPU104は、変更依頼ノードと、検索した入替ノードとの階層を互いに入れ替えることにより、配信スケジュール情報を変更する(ステップS26)。このとき、CPU104は、変更した配信スケジュール情報に対応する変更フラグをRAMに設定する。その後、ステップS27の判定を経由してステップS22に移行した場合、CPU104は、変更フラグが設定されていることを認識する。従って、ステップS22において、CPU104は、配信スケジュール情報が変更されたと判定する。そして、ステップS23において、その変更された配信スケジュール情報を全てのノードNnに配信する。そして、CPU104は、配信スケジュール情報の配信が完了すると、変更フラグをRAMから削除する。
【0112】
CPU104は、ステップS23又はS26の処理を終えたとき、或いは、ステップS24において配信スケジュール変更依頼メッセージを受信していない場合には(ステップS24:NO)、センターサーバ10としてのサービスを終了させるか否かを判定する(ステップS27)。例えば、キーボード108やマウス109がオペレータにより操作されることによってシャットダウンが指示された場合には、サービスを終了させると判定される。このとき、CPU104は、サービスを終了させない場合には(ステップS27:NO)、ステップS22に移行する。一方、CPU104は、サービスを終了させる場合には(ステップS27:YES)、プログラムを終了させるための各種の終了処理を実行し(ステップS28)、当該処理を終了させる。
【0113】
以上説明したように、本実施形態によれば、ノードNnは、自ノードが所属するグループに対応するコンテンツを、当該グループに所属する他のノードNnにコンテンツ送信要求メッセージを送信することによりダウンロードする。また、ノードNnは、ダウンロードされたコンテンツを当該コンテンツに対応するグループに所属する他のノードNnに転送する。また、センターサーバ10は、配信スケジュール情報を各ノードNnに配信する。ノードNnは、この配信スケジュール情報を受信する。また、ノードNnは、配信スケジュール情報に基づいてコンテンツの取得時刻が到来したか否かを判定し、取得時刻が到来した場合には、当該コンテンツに対応する取得時刻到来グループ以外のグループに対応するコンテンツを転送しているか否かを判定する。そして、ノードNnは、コンテンツを転送している場合には、配信スケジュール変更依頼メッセージをセンターサーバ10に送信する。配信スケジュール変更依頼メッセージを受信したセンターサーバ10は、当該変更依頼ノードが現在コンテンツを転送している中継中グループ以外のグループのうち当該転送中に変更依頼ノードによる取得時刻が到来したコンテンツに対応する取得時刻到来グループにおいて、変更依頼ノードと、取得時刻が変更依頼ノードよりも遅い何れか一つのノードNnと、の取得時刻を互いに入れ替えた配信スケジュール情報を生成する。
【0114】
従って、変更依頼ノードは、自ノードによるコンテンツの取得時刻が変更された配信スケジュール情報を受信し、この配信スケジュール情報に基づいて取得時刻到来グループに対応するコンテンツをダウンロードするので、コンテンツの取得時刻が遅らされる。これにより、変更依頼ノードにおいて、中継中グループに対応するコンテンツの転送と、取得時刻到来グループに対応するコンテンツの転送と、が同時に行われなくなる。よって、複数のグループに所属するノードNnにおけるコンテンツの転送遅延を防ぐことができる。
【0115】
また、センターサーバ10は、配信スケジュール情報を変更する際、変更依頼ノードと取得時刻を入れ替える入替ノードを、変更依頼ノードが現在コンテンツを転送しているグループには所属していないノードNnから選定する。
【0116】
従って、入替ノードにおいても、中継中グループに対応するコンテンツの転送と、取得時刻到来グループに対応するコンテンツの転送と、が同時に行われることを確実に防止することができる。
【0117】
また、センターサーバ10は、配信スケジュール情報を変更する際、取得時刻到来グループにおいて、変更依頼ノードと、当該変更依頼ノードよりも下位の階層に位置するノードNnと、の階層を入れ替える。
【0118】
従って、階層の入れ替えによりコンテンツの取得時期を入れ替えることができるので、よりスケジュールを調整するための処理を簡易にすることができる。
【0119】
また、センターサーバ10は、配信スケジュール情報を変更する際、取得時刻到来グループにおいて、変更依頼ノードと、最下位層に位置する何れかのノードNnと、の階層を入れ替える。
【0120】
従って、変更依頼ノードが最下位層に移動することにより当該変更依頼ノードは、コンテンツを中継する必要が無くなるので、中継中グループに対応するコンテンツの転送と、取得時刻到来グループに対応するコンテンツの転送と、が同時に行われることを確実に防止することができる。
【0121】
なお、上記実施形態において、センターサーバ10は、配信スケジュール情報を変更する際、変更依頼ノードを最下位層に移動させるようにしていたが、移動先としては最下位層に限られるものではない。具体的には、変更依頼ノードが元来位置していた階層よりも下位の階層であり、且つ、取得時刻到来グループにおける変更依頼ノードのコンテンツの転送と、中継中グループにおける変更依頼ノードのコンテンツの転送が同時に行われないような階層であれば良い。
【0122】
また、上記実施形態におけるコンテンツ分散保存システムSは、グループに所属する複数のノードNnにより複数の階層により形成し、上位階層のノード装置から下位階層のノード装置へコンテンツが順次転送されるようにしていたが、階層を形成するようなシステムに限られるものではない。例えば、グループに所属する各ノードNnのコンテンツの取得順序を決めて、その順序に従ってコンテンツが順次転送されるようなシステムでも良い。そして、配信スケジュール情報の変更する場合には、この順序を入れ替えれば良い。
【0123】
また、上記実施形態においては、配信スケジュールの変更をセンターサーバ10が行っていたが、ノードNn自身が行っても良い。例えば、ノードNnは、配信スケジュール情報を保持しているので、この配信スケジュール情報を参照することにより、取得時刻到来グループにおいて取得時刻を入れ替える入替ノードを検索する。そして、ノードNnは、検索した入替ノードと直接通信することにより、ノードNn及び入替ノードにおける配信スケジュール情報を変更するようにする。
【0124】
また、上記実施形態においては、コンテンツを複数のデータチャンクに分割して配信するようにしていたが、分割しないで配信するようにしても良い。
【0125】
また、上記実施形態においては、コンテンツを取得する側のノードNnから要求することによってコンテンツが送信されるようにしていた。つまり、コンテンツはPull送信されるようにしていたが、これに限られるものではない。Push送信する場合に本発明を適用しても良い。
【0126】
また、上記実施形態においては、配信スケジュールをセンターサーバ10が一括管理していたが、これに限られるものではない。例えば、所定のノードNnが配信スケジュールを一括して管理し、変更するようにしても良い。また、例えば、各ノードNnが配信スケジュールを管理し、変更するようにしても良い。
【符号の説明】
【0127】
3 IX
4a、4b ISP
5a、5b DSL回線業者
6 FTTH回線業者
7 通信回線
8 ネットワーク
9 オーバーレイネットワーク
10 センターサーバ
101,201 主電源
102,202 主記憶装置
103,203 ハードディスク装置
104,204 CPU
105,205 ネットワークインタフェース
106,206 周辺機器制御チップ
107,207 ビデオチップ
108,208 キーボード
109,209 マウス
110,210 ディスプレイ
111,211 システムバス
112,212 ルータ
Nn ノード(拠点サーバ)
S コンテンツ分散保存システム
【特許請求の範囲】
【請求項1】
ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムであって、
所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得手段と、
前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送手段と、
前記コンテンツ取得手段によるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得手段と、
前記スケジュール情報取得手段により取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定手段と、
前記取得時期が到来したと前記取得時期判定手段により判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定手段と、
を備え、
前記スケジュール生成装置は、
前記コンテンツ転送手段により前記他のグループに対応するコンテンツを転送していると前記転送判定手段により判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、
を備えることを特徴とするコンテンツ配信システム。
【請求項2】
請求項1に記載のコンテンツ配信システムにおいて、
前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅いノード装置のうち前記他のグループには所属しないノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とするコンテンツ配信システム。
【請求項3】
請求項1又は請求項2に記載のコンテンツ配信システムにおいて、
前記コンテンツ配信システムは、前記ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、当該複数のノード装置が複数の階層を形成し、上位階層のノード装置から下位階層のノード装置へコンテンツが順次転送されるようにしたものであって、
前記配信スケジュール情報は、コンテンツの取得時間を階層毎に対応付けて示すものであり、
前記コンテンツ取得手段は、所属するグループに対応するコンテンツを、当該グループにおいて上位階層側に位置するノード装置に要求することにより取得し、
前記コンテンツ転送手段は、前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループにおいて下位階層側に位置するノード装置に転送し、
前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記転送ノード装置よりも下位の階層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とするコンテンツ配信システム。
【請求項4】
請求項3に記載のコンテンツ配信システムにおいて、
前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて最下位層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とするコンテンツ配信システム。
【請求項5】
請求項1乃至4の何れか1項に記載のコンテンツ配信システムに含まれるノード装置であって、
前記ノード装置は、
前記コンテンツ取得手段と、
前記コンテンツ転送手段と、
前記スケジュール情報取得手段と、
前記取得時期判定手段と、
前記転送判定手段と、
前記他のグループに対応するコンテンツを前記コンテンツ転送手段により転送していると前記転送判定手段により判定された場合、前記第1のグループにおける前記配信スケジュール情報の変更を指示する変更指示情報を前記スケジュール生成装置に送信する変更指示情報送信手段と、
を備え、
前記スケジュール情報取得手段は、前記配信スケジュールを前記スケジュール生成装置から受信することを特徴とするノード装置。
【請求項6】
ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるサーバ装置であって、
各グループを構成する複数のノード装置夫々のコンテンツの取得時期をグループ毎に示す配信スケジュール情報を、各ノード装置に送信するスケジュール情報送信手段と、
前記ノード装置から前記配信スケジュール情報の変更の指示を示す変更指示情報を受信する変更指示情報受信手段と、
前記変更指示情報受信手段により前記変更指示情報が受信された場合、当該変更指示情報を送信したノード装置である送信ノード装置と、当該転送中に前記送信ノード装置による前記取得時期が到来したコンテンツに対応する第1のグループにおいて前記取得時期が前記送信ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、
を備えることを特徴とするサーバ装置。
【請求項7】
コンピュータを、
請求項5に記載のノード装置として機能させることを特徴とするコンテンツ中継処理プログラム。
【請求項8】
コンピュータを、
請求項6に記載のサーバ装置として機能させることを特徴とするスケジュール生成処理プログラム。
【請求項9】
ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるコンテンツ配信方法であって、
所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得工程と、
前記ノード装置が、前記コンテンツ取得工程において取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送工程と、
前記ノード装置が、前記コンテンツ取得工程におけるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得工程と、
前記ノード装置が、前記スケジュール情報取得工程において取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定工程と、
前記ノード装置が、前記取得時期が到来したと前記取得時期判定工程において判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定工程と、
前記スケジュール生成装置が、前記コンテンツ転送工程において前記他のグループに対応するコンテンツを転送していると前記転送判定工程において判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、
を備えることを特徴とするコンテンツ配信方法。
【請求項1】
ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムであって、
所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得手段と、
前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送手段と、
前記コンテンツ取得手段によるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得手段と、
前記スケジュール情報取得手段により取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定手段と、
前記取得時期が到来したと前記取得時期判定手段により判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定手段と、
を備え、
前記スケジュール生成装置は、
前記コンテンツ転送手段により前記他のグループに対応するコンテンツを転送していると前記転送判定手段により判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、
を備えることを特徴とするコンテンツ配信システム。
【請求項2】
請求項1に記載のコンテンツ配信システムにおいて、
前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅いノード装置のうち前記他のグループには所属しないノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とするコンテンツ配信システム。
【請求項3】
請求項1又は請求項2に記載のコンテンツ配信システムにおいて、
前記コンテンツ配信システムは、前記ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、当該複数のノード装置が複数の階層を形成し、上位階層のノード装置から下位階層のノード装置へコンテンツが順次転送されるようにしたものであって、
前記配信スケジュール情報は、コンテンツの取得時間を階層毎に対応付けて示すものであり、
前記コンテンツ取得手段は、所属するグループに対応するコンテンツを、当該グループにおいて上位階層側に位置するノード装置に要求することにより取得し、
前記コンテンツ転送手段は、前記コンテンツ取得手段により取得されたコンテンツを、当該コンテンツに対応するグループにおいて下位階層側に位置するノード装置に転送し、
前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて前記転送ノード装置よりも下位の階層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とするコンテンツ配信システム。
【請求項4】
請求項3に記載のコンテンツ配信システムにおいて、
前記配信スケジュール情報生成手段は、前記転送ノード装置と、前記第1のグループにおいて最下位層に位置するノード装置と、が前記第1グループにおいて位置する階層を互いに入れ替えた前記配信スケジュール情報を生成することを特徴とするコンテンツ配信システム。
【請求項5】
請求項1乃至4の何れか1項に記載のコンテンツ配信システムに含まれるノード装置であって、
前記ノード装置は、
前記コンテンツ取得手段と、
前記コンテンツ転送手段と、
前記スケジュール情報取得手段と、
前記取得時期判定手段と、
前記転送判定手段と、
前記他のグループに対応するコンテンツを前記コンテンツ転送手段により転送していると前記転送判定手段により判定された場合、前記第1のグループにおける前記配信スケジュール情報の変更を指示する変更指示情報を前記スケジュール生成装置に送信する変更指示情報送信手段と、
を備え、
前記スケジュール情報取得手段は、前記配信スケジュールを前記スケジュール生成装置から受信することを特徴とするノード装置。
【請求項6】
ネットワークを介して互いに通信可能な複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるサーバ装置であって、
各グループを構成する複数のノード装置夫々のコンテンツの取得時期をグループ毎に示す配信スケジュール情報を、各ノード装置に送信するスケジュール情報送信手段と、
前記ノード装置から前記配信スケジュール情報の変更の指示を示す変更指示情報を受信する変更指示情報受信手段と、
前記変更指示情報受信手段により前記変更指示情報が受信された場合、当該変更指示情報を送信したノード装置である送信ノード装置と、当該転送中に前記送信ノード装置による前記取得時期が到来したコンテンツに対応する第1のグループにおいて前記取得時期が前記送信ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、
を備えることを特徴とするサーバ装置。
【請求項7】
コンピュータを、
請求項5に記載のノード装置として機能させることを特徴とするコンテンツ中継処理プログラム。
【請求項8】
コンピュータを、
請求項6に記載のサーバ装置として機能させることを特徴とするスケジュール生成処理プログラム。
【請求項9】
ネットワークを介して互いに通信可能な複数のノード装置と、配信スケジュール情報を生成するスケジュール生成装置と、を備えるコンテンツ配信システムであり、前記複数のノード装置の何れか複数のノード装置により構成されるグループ毎に、何れかのノード装置から他のノード装置にコンテンツを転送するコンテンツ配信システムにおけるコンテンツ配信方法であって、
所属するグループに対応するコンテンツを、当該グループに所属するノード装置に要求することにより取得するコンテンツ取得工程と、
前記ノード装置が、前記コンテンツ取得工程において取得されたコンテンツを、当該コンテンツに対応するグループに所属し取得先のノード装置とは異なるノード装置に転送するコンテンツ転送工程と、
前記ノード装置が、前記コンテンツ取得工程におけるコンテンツの取得時期を示す前記配信スケジュール情報を取得するスケジュール情報取得工程と、
前記ノード装置が、前記スケジュール情報取得工程において取得された前記配信スケジュール情報に基づいて、前記取得時期が到来したか否かを判定する取得時期判定工程と、
前記ノード装置が、前記取得時期が到来したと前記取得時期判定工程において判定された場合、前記取得時期が到来したコンテンツに対応する第1のグループと異なる他のグループに対応するコンテンツを前記コンテンツ転送手段により転送しているか否かを判定する転送判定工程と、
前記スケジュール生成装置が、前記コンテンツ転送工程において前記他のグループに対応するコンテンツを転送していると前記転送判定工程において判定されたノード装置である転送ノード装置と、前記第1のグループにおいて前記取得時期が前記転送ノード装置よりも遅い何れか一つのノード装置と、の前記第1のグループにおける前記取得時期を互いに入れ替えた前記配信スケジュール情報を生成するスケジュール情報生成手段と、
を備えることを特徴とするコンテンツ配信方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2010−232782(P2010−232782A)
【公開日】平成22年10月14日(2010.10.14)
【国際特許分類】
【出願番号】特願2009−75778(P2009−75778)
【出願日】平成21年3月26日(2009.3.26)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
【公開日】平成22年10月14日(2010.10.14)
【国際特許分類】
【出願日】平成21年3月26日(2009.3.26)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
[ Back to top ]