(57)【特許請求の範囲】
【請求項１】
ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムであって、
前記複数のノード装置に含まれる第１ノード装置は、
複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定手段を備え、
前記複数のノード装置に含まれる第２ノード装置は、
前記第１判定手段により前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成手段と、
前記生成手段により生成された前記誤り検出符号を記憶する記憶手段と、
前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開手段と、
前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元手段と、
を備えることを特徴とする情報通信システム。
【請求項２】
前記第１ノード装置は、
前記誤り検出符号が生成された前記データ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第２の所定数以下であるかを所定のタイミングで判定する第２判定手段を更に備え、
前記復元手段は、前記第２判定手段により前記データを記憶する前記ノード装置の数が前記第２の所定数以下であると判定された場合、記憶する前記ノード装置の数が前記第２の数以下であると判定された前記データを復元することを特徴とする請求項１に記載の情報通信システム。
【請求項３】
前記第１ノード装置は、
生成された前記誤り検出符号を記憶する前記ノード装置の数が、第３の所定数以下であるかを、所定のタイミングで判定する第３判定手段を更に備え、
前記生成手段は、前記第３判定手段により前記誤り検出符号を記憶する前記ノード装置の数が前記第３の所定数以下であると判定された場合、前記生成手段は、記憶する前記ノード装置の数が前記第３の数以下であると判定された前記誤り検出符号を生成することを特徴とする請求項１または請求項２に記載の情報通信システム。
【請求項４】
前記第１ノード装置は、
前記生成手段により生成された前記誤り検出符号を用いて復元可能な前記データ群を構成する全ての前記データについて、前記データを記憶する前記ノード装置の数が第４の所定数以上であるかを判定する第４判定手段と、
前記第４判定手段により前記データ群を構成する全ての前記データについて、前記データを記憶する前記ノード装置の数が前記第４の所定数以上であると判定された場合、前記誤り検出符号を削除する指令を示す第１指令情報を、前記複数のノード装置のうち、前記誤り検出符号を記憶する第３ノード装置へ送信する送信手段と、
を更に備え、
前記第３ノード装置は、
前記第１ノード装置から送信された前記第１指令情報を受信する受信手段と、
前記受信手段により受信された前記第１指令情報により削除が指令された前記誤り検出符号を、前記記憶手段から削除する削除手段と、
を備えることを特徴とする請求項１乃至３の何れか１項に記載の情報通信システム。
【請求項５】
前記データ群が、前記ノード装置に記憶されると予め定められている前記データ群であるかを判定する第５判定手段を更に備え、
前記第１判定手段は、前記第５判定手段により前記ノード装置に記憶されると予め定められている前記データ群ではないと判定された前記データ群を構成する何れかの前記データを記憶する前記ノード装置の数が、前記第１の数以下であるかを判定し、
前記生成手段は、前記第５判定手段により前記ノード装置に記憶されると予め定められている前記データ群であると判定された前記データ群の復元に用いられる誤り検出符号を生成しないことを特徴とする請求項１乃至４の何れか１項に記載の情報通信システム。
【請求項６】
ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムにおいて、前記複数のノード装置に含まれるノード装置であって、
複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定手段と、
前記第１判定手段により前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成手段と、
前記生成手段により生成された前記誤り検出符号を記憶する記憶手段と、
前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開手段と、
前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元手段と、
を備えることを特徴とするノード装置。
【請求項７】
ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムにおける情報処理方法であって、
前記複数のノード装置に含まれる第１ノード装置が、複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定ステップと、
前記複数のノード装置に含まれる第２ノード装置が、前記第１判定ステップにおいて前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成ステップと、
前記第２ノード装置が、前記生成ステップにおいて生成された前記誤り検出符号を記憶手段に記憶させる記憶ステップと、
前記第２ノード装置が、前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開ステップと、
前記第２ノード装置が、前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元ステップと、
を含むことを特徴とする情報処理方法。
【請求項８】
ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムにおいて、前記複数のノード装置に含まれるノード装置に含まれるコンピュータに、
複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定ステップと、
前記第１判定ステップにおいて前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成ステップと、
前記生成ステップにおいて生成された前記誤り検出符号を記憶手段に記憶させる記憶する記憶ステップと、
前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開ステップと、
前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オーバーレイネットワークを利用する通信システムの技術分野に関する。
【背景技術】
【０００２】
近年、オーバーレイネットワークを用いた通信システムが注目されている。具体的には、ピアツーピア型の通信システムである。このピアツーピア方式の通信システムにおいては、オーバーレイネットワークから取得可能な複数のデータを１つのデータ群としてグループ化している技術が知られている。例えば、１つのコンテンツを複数のデータに分割して、複数のノード装置に分散して保存させる技術が知られている。この技術では、例えば、コンテンツから分割された複数のデータが、データ群を構成する。このような技術は、例えば、特許文献１に開示されている。ピアツーピア方式の通信システムにおいては、ノード装置がオーバーレイネットワークから離脱する場合がある。また、ノード装置が保存しているデータが壊れることがある。こうしたことにより、データがオーバーレイネットワークから失われてしまう場合がある。この場合、失われたデータは、オーバーレイネットワークから取得することができない。
【０００３】
この点に関連して、特許文献２には、データ群を構成するデータが失われた場合にも、データ群に相当する元のデータを復元する方法が開示されている。具体的に、サーバが、単一のデータを複数の分割データに分割する。また、サーバは、単一のデータを復元するための誤り検出符号であるパリティデータを生成する。そして、サーバは、生成した複数の分割データ及びパリティデータを、複数のクライアント端末に保存させる。単一のデータの読み出しの指令を受けたサーバは、単一のデータを構成する各分割データ及びパリティデータを、保存先のクライアント端末から取得する。ある分割データを保存するクライアント端末が使用不可能である場合、サーバは、パリティデータを用いることにより、単一のデータを復元する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１９３４６０号公報
【特許文献２】特開２００８−１９１８９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ群を構成するデータが失われた場合、特許文献２に開示されているような方法で復元されたデータをサーバ装置から取得することが考えられる。しかしながら、特許文献２に開示された方法を採用した場合、誤り検出符号の生成の処理や、データの復元の処理を、全てサーバ装置で行うことになる。そのため、誤り検出符号の生成やデータの復元の処理負荷が、サーバ装置に集中する。
【０００６】
そこで、本発明は、以上の点に鑑みてなされたものである。本発明は、特定のサーバ装置に負荷が集中しないようにしながら、データ群を構成するデータをオーバーレイネットワークから確実に取得することが可能な情報通信システム、ノード装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムであって、前記複数のノード装置に含まれる第１ノード装置は、複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定手段を備え、前記複数のノード装置に含まれる第２ノード装置は、前記第１判定手段により前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成手段と、前記生成手段により生成された前記誤り検出符号を記憶する記憶手段と、前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開手段と、前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元手段と、を備えることを特徴とする。
【０００８】
この発明によれば、第１ノード装置により、記憶するノード装置の数が第１の数以下である判定されたデータを復元するための誤り検出符号が、第２ノード装置により生成される。そして、生成された誤り検出符号はオーバーレイネットワークから取得可能になる。オーバーレイネットワークから失われたデータは、第２ノード装置により、誤り検出符号を用いて復元される。誤り検出符号は、オーバーレイネットワークからデータが失われる前に生成される。そのため、特定のサーバ装置に負荷が集中しないようにしながら、データ群を構成するデータをオーバーレイネットワークから確実に取得することができる。
【０００９】
請求項２に記載の発明は、前記第１ノード装置は、前記誤り検出符号が生成された前記データ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第２の所定数以下であるかを所定のタイミングで判定する第２判定手段を更に備え、前記復元手段は、前記第２判定手段により前記データを記憶する前記ノード装置の数が前記第２の所定数以下であると判定された場合、記憶する前記ノード装置の数が前記第２の数以下であると判定された前記データを復元することを特徴とする。
【００１０】
この発明によれば、第１ノード装置により、記憶するノード装置の数が第２の所定数以下であると判定されたデータが、第２ノード装置により復元される。すなわち、データ群を構成するデータを記憶するノード装置の数が所定数より多くなるように制御される。そのため、データ群を構成するデータをオーバーレイネットワークから確実に取得することができる。
【００１１】
請求項３に記載の発明は、前記第１ノード装置は、生成された前記誤り検出符号を記憶する前記ノード装置の数が、第３の所定数以下であるかを、所定のタイミングで判定する第３判定手段を更に備え、前記生成手段は、前記第３判定手段により前記誤り検出符号を記憶する前記ノード装置の数が前記第３の所定数以下であると判定された場合、前記生成手段は、記憶する前記ノード装置の数が前記第３の数以下であると判定された前記誤り検出符号を生成することを特徴とする。
【００１２】
この発明によれば、第１ノード装置により、記憶するノード装置の数が第３の所定数以下である判定された誤り検出符号が、第２ノード装置により生成される。すなわち、誤り検出符号を記憶するノード装置の数が所定数より多くなるように制御される。そのため、誤り検出符号をオーバーレイネットワークから確実に取得することができる。
【００１３】
請求項４に記載の発明は、前記第１ノード装置は、前記生成手段により生成された前記誤り検出符号を用いて復元可能な前記データ群を構成する全ての前記データについて、前記データを記憶する前記ノード装置の数が第４の所定数以上であるかを判定する第４判定手段と、前記第４判定手段により前記データ群を構成する全ての前記データについて、前記データを記憶する前記ノード装置の数が前記第４の所定数以上であると判定された場合、前記誤り検出符号を削除する指令を示す第１指令情報を、前記複数のノード装置のうち、前記誤り検出符号を記憶する第３ノード装置へ送信する送信手段と、を更に備え、前記第３ノード装置は、前記第１ノード装置から送信された前記第１指令情報を受信する受信手段と、前記受信手段により受信された前記第１指令情報により削除が指令された前記誤り検出符号を、前記記憶手段から削除する削除手段と、を備えることを特徴とする。
【００１４】
データを記憶するノード装置の数が多いほど、そのデータがオーバーレイネットワークから失われる可能性が低くなる。この発明によれば、データ群を構成する各データの数が、ある程度の数以上になった場合に、その誤り検出符号がオーバーレイネットワークから削除される。これにより、データ群を構成する各データをオーバーレイネットワークから取得することができるように担保しつつ、ノード装置の記憶手段の空き容量を増やすことができる。
【００１５】
請求項５に記載の発明は、前記データ群が、前記ノード装置に記憶されると予め定められている前記データ群であるかを判定する第５判定手段を更に備え、前記第１判定手段は、前記第５判定手段により前記ノード装置に記憶されると予め定められている前記データ群ではないと判定された前記データ群を構成する何れかの前記データを記憶する前記ノード装置の数が、前記第１の数以下であるかを判定し、前記生成手段は、前記第５判定手段により前記ノード装置に記憶されると予め定められている前記データ群であると判定された前記データ群の復元に用いられる誤り検出符号を生成しないことを特徴とする。
【００１６】
各前記ノード装置に記憶されると定められているデータ群は、各ノード装置に記憶されると定められていないデータ群に比べて、オーバーレイネットワークから失われる可能性が低い。この発明によれば、誤り検出符号の生成対象とするデータ群を、各ノード装置に記憶されると定められていないデータ群に限定する。これにより、データ群を構成する各データをオーバーレイネットワークから取得することができるように担保しつつ、ノード装置の記憶手段の空き容量を増やすことができる。
【００１７】
請求項６に記載の発明は、ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムにおいて、前記複数のノード装置に含まれるノード装置であって、複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定手段と、前記第１判定手段により前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成手段と、前記生成手段により生成された前記誤り検出符号を記憶する記憶手段と、前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開手段と、前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元手段と、を備えることを特徴とする。
【００１８】
請求項７に記載の発明は、ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムにおける情報処理方法であって、前記複数のノード装置に含まれる第１ノード装置が、複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定ステップと、前記複数のノード装置に含まれる第２ノード装置が、前記第１判定ステップにおいて前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成ステップと、前記第２ノード装置が、前記生成ステップにおいて生成された前記誤り検出符号を記憶手段に記憶させる記憶ステップと、前記第２ノード装置が、前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開ステップと、前記第２ノード装置が、前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元ステップと、を含むことを特徴とする。
【００１９】
請求項８に記載の発明は、ネットワークに接続する複数のノード装置により構成されるオーバーレイネットワークから取得可能なデータが前記複数のノード装置に分散して保存される情報通信システムにおいて、前記複数のノード装置に含まれるノード装置に含まれるコンピュータに、複数の前記データにより構成されるデータ群を構成する何れかの前記データを記憶する前記ノード装置の数が、第１の所定数以下であるかを所定のタイミングで判定する第１判定ステップと、前記第１判定ステップにおいて前記データを記憶する前記ノード装置の数が前記第１の数以下であると判定されたことに従って、前記データ群の復元に用いられる誤り検出符号を生成する生成ステップと、前記生成ステップにおいて生成された前記誤り検出符号を記憶手段に記憶させる記憶する記憶ステップと、前記記憶手段に記憶された前記誤り検出符号が前記オーバーレイネットワークから取得可能となるように、前記誤り検出符号を前記オーバーレイネットワークに公開する公開ステップと、前記データ群を構成する何れかの前記データを、前記誤り検出符号を用いて復元する復元ステップと、を実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、第１ノード装置により、記憶するノード装置の数が第１の数以下であると判定されたデータを復元するための誤り検出符号が、第２ノード装置により生成される。そして、生成された誤り検出符号はオーバーレイネットワークから取得可能になる。オーバーレイネットワークから失われたデータは、第２ノード装置により、誤り検出符号を用いて復元される。誤り検出符号は、オーバーレイネットワークからデータが失われる前に生成される。そのため、特定のサーバ装置に負荷が集中しないようにしながら、データ群を構成するデータをオーバーレイネットワークから確実に取得することができる。
【図面の簡単な説明】
【００２１】
【図１】一実施形態の配信システムの概要構成例を示す図である。
【図２】（Ａ）は、一実施形態の配信システムＳにおけるパリティデータの生成時の動作概要を示す図であり、（Ｂ）は、一実施形態の配信システムＳにおけるチャンクの復元時の動作概要を示す図である。
【図３】（Ａ）は、一実施形態の配信システムＳにおけるパリティデータの復元時の動作概要を示す図であり、（Ｂ）は、一実施形態の配信システムＳにおけるパリティデータの削除時の動作概要を示す図である。
【図４】ノードの概要構成例を示すブロック図である。
【図５】一実施形態におけるルートノードの制御部１１のチャンク監視処理における処理例を示すフローチャートである。
【図６】（Ａ）は、一実施形態におけるパリティノードの制御部１１のパリティ監視処理における処理例を示すフローチャートであり、（Ｂ）は、一実施形態におけるパリティノードの制御部１１のパリティ不要通知メッセージ受信処理における処理例を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、配信システムに本発明を適用した場合の実施形態である。
【００２３】
［１．配信システムの構成及び動作概要］
始めに、図１を参照して、本実施形態の配信システムの構成及び動作概要について説明する。図１は、本実施形態の配信システムの概要構成例を示す図である。図１に示すように、本実施形態の配信システムＳは、センターサーバＳＳ、及びノード装置Ｎｎ（ｎ＝１，２，３・・・ｋ）等により構成されている。なお、配信システムＳは、本発明の情報通信システムの一例である。ノード装置Ｎｎを、以下、「ノード」という。また、センターサーバＳＳ及びノードはネットワークＮＷに接続されている。ネットワークＮＷは、インターネット等からなる。なお、ノードは、本発明における第２ノード装置の一例である。
【００２４】
また、図１に示すように、配信システムＳには、複数の拠点Ｐｎごとに拠点ネットワークＮＬｎが構築されている。この拠点の例としては、例えばカラオケ店舗、学校、会社、住宅、またはその他の施設等が挙げられる。拠点ネットワークＮＬｎは、例えば、通信手段としてのＬＡＮ（Local Area Network）等のプライベートネットワークである。
【００２５】
また、各拠点ネットワークＮＬｎには、ノードと複数の拠点端末Ｔｎ−ｌ（ｌ＝１，２，３・・・ｊ）とが接続されている。ノードは、同じ拠点ネットワークＮＬｎに接続されている拠点端末Ｔｎ−ｌへコンテンツを提供するエッジサーバとしての機能を有する。一方、拠点端末Ｔｎ−ｌは、コンテンツを再生する機能を有する。例えば、拠点Ｐｎがカラオケ店舗の場合、拠点端末Ｔｎ−ｌは、カラオケ用のコンテンツを再生するコマンダである。また、例えば拠点Ｐｎが学校である場合、教材用のコンテンツを再生する視聴端末である。また、例えば拠点Ｐｎが会社である場合、研修用のコンテンツを再生する視聴端末である。また、例えば拠点Ｐｎが住宅である場合、放送番組用のコンテンツを再生するセットトップボックスである。
【００２６】
また、図１に示すように、配信システムＳには、ネットワークＮＷを介して互いに通信可能な複数のノードの参加によりオーバーレイネットワークＯＮが構成されている。オーバーレイネットワークＯＮは、仮想的なリンクを構成する論理的なネットワークである。オーバーレイネットワークＯＮは、特定のアルゴリズム、例えば、分散ハッシュテーブルを利用したアルゴリズムにより実現される。なお、分散ハッシュテーブルを、以下、「ＤＨＴ（Distributed Hash Table）」という。ここで、オーバーレイネットワークＯＮに参加するとは、ＤＨＴを用いたルーティングテーブルに基づいてオーバーレイネットワークＯＮを介して他のノードとの間で各種メッセージを送受信できる状態に稼動することをいう。なお、ＤＨＴを用いたルーティングテーブルについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００２７】
また、オーバーレイネットワークＯＮに参加している各ノードには、ノードＩＤが付与されている。このノードＩＤは、ノードを、オーバーレイネットワークＯＮに参加しているノードの中から識別する固有の識別情報である。
【００２８】
配信システムＳにおいては、様々なコンテンツが複数のノードに分散して保存される。各コンテンツには、それぞれコンテンツＩＤが付与されている。コンテンツＩＤは、コンテンツを、オーバーレイネットワークＯＮに保存されるコンテンツの中から識別する固有の識別情報である。センターサーバＳＳは、コンテンツをオーバーレイネットワークＯＮに投入する。コンテンツの投入とは、コンテンツを何れかのノードに保存させ、保存されたコンテンツを、各ノードがオーバーレイネットワークＯＮから取得可能にすることである。各コンテンツのコンテンツＩＤ等の属性情報は、コンテンツカタログ情報に記述されている。コンテンツカタログ情報は、センターサーバＳＳにより作成される。そして、センターサーバＳＳが、コンテンツカタログ情報を全てのノードに配信する。
【００２９】
また、各コンテンツは、複数のデータに分割されている。コンテンツから分割されたデータを、「チャンク」という。各チャンクは、例えば、センターサーバＳＳにより、コンテンツを所定のデータサイズで分割することにより生成される。各チャンクは、複数のノードに分散されて保存される。これにより、元となるコンテンツが複数のノードに分散して保存されることになる。各チャンクのオリジナルは、センターサーバＳＳに保存されている。各チャンクには、それぞれシーケンス番号及びチャンクＩＤが付与されている。シーケンス番号は、例えば、分割された複数のチャンクを、元となるコンテンツを構成するように並べたときの並び順に相当する。チャンクＩＤは、チャンクを、オーバーレイネットワークＯＮに保存されるチャンクの中から識別する固有の識別情報である。なお、チャンクは、本発明におけるデータの一例である。また、チャンクＩＤは、本発明における識別情報、第１識別情報の一例である。
【００３０】
コンテンツを構成する各チャンクのシーケンス番号及びチャンクＩＤは、コンテンツごとにメタファイルに記載されている。コンテンツのメタファイルは、そのコンテンツのコンテンツＩＤと対応付けられている。メタファイルは、チャンクと同様に、複数のノードに分散されて保存される。なお、チャンクを保存しているノードを、「チャンクの保持ノード」という。また、チャンクの所在を示す情報は、インデックス情報として、コンテンツの所在を管理しているノードに記憶される。チャンクの所在を管理しているノードを、以下、「ルートノード」という。インデックス情報には、チャンクを保存している保持ノードのノード情報と、チャンクのチャンクＩＤとの組が含まれる。ノード情報には、例えば、保持ノードのＩＰアドレス、ポート番号、及びノードＩＤが含まれる。ルートノードは、例えば、チャンクＩＤと最も近いノードＩＤが割り当てられたノードであるように定められる。チャンクＩＤと最も近いノードＩＤとは、例えば、ＩＤの上位桁が最も多く一致するノードＩＤである。なお、ルートノードは、本発明における第１ノード装置及び第２ノード装置の一例である。また、チャンクの保持ノードは、本発明における第２ノード装置の一例である。
【００３１】
ノードが、あるコンテンツをオーバーレイネットワークＯＮから取得する場合、ノードは、先ず、コンテンツのメタファイルを取得する。コンテンツを取得するノードを、以下、「ユーザノード」という。なお、メタファイルの取得方法は、基本的にこの後説明するチャンクの取得方法と同様である。そのため、メタファイルの取得方法の詳しい説明を省略する。なお、メタファイルの取得の場合、チャンクＩＤではなく、コンテンツＩＤが用いられる。
【００３２】
ユーザノードは、メタファイルを取得する。次いで、ユーザノードは、メタファイルに記載されている各チャンクＩＤに基づいて、取得するコンテンツを構成する各チャンクの保持ノードを検索する。具体的に、ユーザノードは、検索メッセージを送信する。検索メッセージは、取得対象のチャンクの所在をチャンクのルートノードに問い合わせるためのメッセージである。検索メッセージには、取得対象のチャンクのチャンクＩＤが含まれる。ルートノードは、受信した検索メッセージに含まれるチャンクＩＤに対応するインデックス情報をインデックス情報キャッシュから取得する。ルートノードは、取得したインデックス情報を、検索メッセージの送信元のユーザノードに返信する。これにより、ユーザノードは、ルートノードから保持ノードのＩＰアドレス等を受信する。そして、ユーザノードは、保持ノードにアクセスし、チャンクをダウンロードする。なお、チャンクの所在をルートノードに問い合わせる処理は、例えば特開２００７−０５３６６２号公報等で公知であるので、詳しい説明を省略する。
【００３３】
ユーザノードは、保持ノードからチャンクを取得したとき、チャンクを公開する。チャンクの公開とは、ユーザノードが取得したチャンクを、オーバーレイネットワークＯＮから取得可能にすることをいう。具体的に、ユーザノードは、取得したチャンクを保存する。そして、ユーザノードは、ルートノードへパブリッシュメッセージを送信する。パブリッシュメッセージは、チャンクを保存したことをルートノードへ通知するためのメッセージである。パブリッシュメッセージは、保存したチャンクのチャンクＩＤと、チャンクを保存したユーザノードのノード情報とを含む。ルートノードは、受信したパブリッシュメッセージに含まれるチャンクＩＤとノード情報との組を含むインデックス情報を、インデックス情報キャッシュに記憶する。このとき、ルートノードは、インデックス情報の受信時刻に対応付けて、インデックス情報を記憶する。こうして、ユーザノードは、新たに、チャンクを保存する保持ノードとなる。
【００３４】
保持ノードは、例えば、現在保存しているチャンクについて、定期的にパブリッシュメッセージを送信する。そのため、ルートノードが記憶しているインデックス情報に対応付けられている受信時刻が、定期的に更新される。保持ノードは、オーバーレイネットワークＯＮから離脱すると、パブリッシュメッセージを送信することができない。そのため、ルートノードが記憶しているインデックス情報に対応付けられている受信時刻が更新されない。そこで、ルートノードは、受信時刻が古くなったインデックス情報を、インデックス情報キャッシュから削除する。これにより、チャンクの保持ノードのうち、現時点でチャンクを取得可能な保持ノードの数を、ルートノードが記憶しているインデックス情報の数から特定することができる。なお、チャンクの保持ノードのうち、現時点でチャンクを取得可能な保持ノードの数を、「保持ノード数」という。
【００３５】
ところで、オーバーレイネットワークＯＮに参加したノードは、オーバーレイネットワークＯＮから離脱する場合がある。オーバーレイネットワークＯＮから離脱とは、参加していたノードが他のノードと通信することができない状態になったことをいう。ノードが他のノードと通信することができない状態になる場合としては、例えば、ノードの電源がＯＦＦになった場合がある。また、例えば、ノードが故障した場合がある。この場合、各ノードは、離脱したノードからチャンクを取得することができない。また、ノードが保存しているチャンクが、削除されたり、壊れたりする場合がある。この場合、削除または壊れたチャンクを、そのノードから取得することができない。例えば、あるチャンクを保存する全てのノードが、オーバーレイネットワークＯＮから離脱したとする。すると、そのチャンクは、オーバーレイネットワークＯＮから取得することができない。チャンクがオーバーレイネットワークＯＮから取得できなくなることを、「チャンクの消失」という。消失したチャンクが構成要素となっているコンテンツは、完全な状態ではオーバーレイネットワークＯＮから取得することができない。
【００３６】
配信システムＳにおいては、消失したチャンクを復元するため、パリティが利用される。具体的には、コンテンツを構成する複数のチャンクが、例えば、所定数のチャンクごとにグループ化される。このグループ化されたチャンクを、「チャンクグループ」という。そして、１つのチャンクグループに対して、１つ以上のパリティデータが生成される。パリティデータは、チャンクグループの復元に用いられる。各パリティデータには、それぞれパリティＩＤが付与されている。パリティＩＤは、パリティデータを、オーバーレイネットワークＯＮに保存されるパリティデータの中から識別する固有の識別情報である。なお、パリティデータは、本発明における誤り検出符号の一例である。また、パリティＩＤは、本発明における第２識別情報の一例である。また、チャンクグループは、本発明におけるデータ群の一例である。
【００３７】
センターサーバＳＳは、例えば、コンテンツの投入時に、投入するコンテンツを構成するチャンクをグループ化する。例えば、センターサーバＳＳは、コンテンツを複数のチャンクに分割する。次いで、センターサーバＳＳは、分割した各チャンクにチャンクＩＤを付与する。また、センターサーバＳＳは、分割した複数のチャンクを、予め設定された数のチャンクごとにグループ化する。チャンクグループを構成するチャンクの数は、例えば、システムの管理者により予め設定されている。また、センターサーバＳＳは、チャンクグループごとに、パリティデータのパリティＩＤを付与する。そして、センターサーバＳＳは、チャンクグループごとに、チャンクグループ定義情報を生成する。チャンクグループ定義情報は、チャンクグループを構成するチャンクのチャンクＩＤと、パリティデータのパリティＩＤと、を含む。センターサーバＳＳは、生成したチャンクグループ定義情報を記憶する。
【００３８】
パリティデータは、例えば、チャンクグループを構成する全てのチャンクの排他的論理和を計算することにより求められる。各ノードは、パリティデータを用いて、生成元のチャンクグループを復元することができる。つまり、ノードは、チャンクグループを構成する複数のチャンクのうち何れのチャンクが消失した場合であっても、パリティデータと、チャンクグループを構成する他のチャンクとを用いて、復元することができる。生成されたパリティデータは、複数のノードに分散して保存される。ノードに保存されたパリティデータも、オーバーレイネットワークＯＮから取得可能になる。パリティデータの取得方法は、チャンクの取得方法と同様である。なお、パリティデータを保存するノードを、「パリティデータの保持ノード」という。また、パリティデータの所在を管理しているノードを、「パリティノード」という。パリティノードは、パリティデータごとに定められるので、パリティデータの所在を管理の負荷を、複数のノードに分散することができる。なお、パリティノードは、本発明における第１ノード装置及び第２ノード装置の一例である。また、パリティデータの保持ノードは、本発明における第２ノード装置及び第３ノード装置の一例である。
【００３９】
センターサーバＳＳは、オーバーレイネットワークＯＮに投入されるコンテンツのうち、全てのノードが保存するべきであると定められていないコンテンツについてのみ、チャンクグループ定義情報を生成する。つまり、センターサーバＳＳは、全てのノードが保存するべきであると定められていないコンテンツを構成するチャンクについてのみ、パリティデータが生成されるようにする。ここで、全てのノードが保存するべきであると定められたコンテンツを、「定常配信コンテンツ」という。また、全てのノードが保存するべきであると定められていないコンテンツを、「非定常配信コンテンツ」という。例えば、定常配信コンテンツとしては、各ノードが配信システムＳに関する処理を実行する上で必要なコンテンツが挙げられる。また、例えば、拠点Ｐｎがカラオケ店舗の場合、定常配信コンテンツとしては、新着のカラオケデータが挙げられる。定常配信コンテンツは、例えば、センターサーバＳＳから全てのノードに配信される。定常配信コンテンツを構成するチャンクは、非定常配信コンテンツを構成するチャンクよりも、オーバーレイネットワークＯＮから消失しにくい。そのため、定常配信コンテンツは、非定常配信コンテンツと比較して、パリティデータの必要性が低い。そこで、定常配信コンテンツについては、パリティデータを生成しないことで、各ノードの記憶容量の空きを増やすことができる。なお、定常配信コンテンツであるか、非定常配信コンテンツであるかに関わらず、全てのコンテンツについて、パリティデータが生成されるようにしても良い。
【００４０】
配信システムＳにおいては、パリティデータを利用して、チャンクグループを構成するチャンクがオーバーレイネットワークＯＮから確実に取得することができるように制御される。すなわち、非定常配信コンテンツが、オーバーレイネットワークＯＮから確実に取得することができるように制御される。
【００４１】
具体的に、ルートノードが所在を管理するチャンクが、非定常配信コンテンツを構成するチャンクである場合、ルートノードは、そのチャンクを監視する。チャンクの監視とは、チャンクがオーバーレイネットワークＯＮから消失しないように監視することである。具体的に、チャンクの監視とは、チャンクの保持ノード数を条件として、パリティデータの生成、チャンクの復元等の処理を行うために、チャンクの保持ノード数を、例えば、定期的に確認することである。
【００４２】
ルートノードは、所在を管理しているチャンクが、非定常配信コンテンツであるか否かを、例えば、次の方法で判定する。ルートノードは、所在を管理しているチャンクが非定常配信コンテンツであるか否かを、センターサーバＳＳに問い合わせる。ルートノードは、パブリッシュメッセージを受信して、チャンクのインデックス情報を記憶する。このとき、ルートノードは、所在を管理するチャンクとして、オーバーレイネットワークＯＮに初めて保存されたチャンクのチャンクＩＤを含むインデックス情報を記憶したとする。この場合、ルートノードは、この新しいチャンクのチャンクＩＤを含む問い合わせメッセージを、センターサーバＳＳに送信する。センターサーバＳＳは、受信した問い合わせメッセージに含まれるチャンクＩＤで、記憶しているチャンクグループ定義情報を検索する。そして、センターサーバＳＳは、問い合わせメッセージに含まれるチャンクＩＤが設定されたチャンクグループ定義情報を、ルートノードに返信する。ルートノードは、受信したチャンクグループ定義情報と、新しいチャンクのチャンクＩＤと、を対応付けて記憶する。これにより、ルートノードは、所在を管理しているチャンクが非定常配信コンテンツであると判定することができる。一方、センターサーバＳＳは、問い合わせメッセージに含まれるチャンクＩＤが設定されたチャンクグループ定義情報が記憶されていない場合、チャンクグループ定義情報がない旨を示すメッセージを、ルートノードに返信する。
【００４３】
次に、配信システムＳにおけるパリティデータの生成時の動作概要について説明する。図２（Ａ）は、本実施形態の配信システムＳにおけるパリティデータの生成時の動作概要を示す図である。例えば、ある非定常配信コンテンツを構成するチャンクのうち、チャンクＡ、Ｂ及びＣがチャンクグループＸを構成するとする。また、このチャンクグループＸに対して、パリティデータＰが生成されるとする。図２（Ａ）に示すように、ノードＮ１は、パリティデータＰのパリティノードである。また、ノードＮ２は、チャンクＡのルートノードである。また、ノードＮ３は、チャンクＢのルートノードである。また、ノードＮ４は、チャンクＣのルートノードである。また、ノードＮ５は、チャンクＡの保持ノードである。また、ノードＮ６は、チャンクＢの保持ノードである。また、ノードＮ７は、チャンクＣの保持ノードである。
【００４４】
チャンクＡのルートノードであるノードＮ２は、チャンクＡの監視の際、チャンクＡの保持ノード数がパリティ生成閾値以下であるか否かを判定する。パリティ生成閾値は、パリティデータを生成するための条件を示す保持ノード数である。パリティ生成閾値は、例えば、システムの管理者により予め設定されている。なお、パリティ生成閾値は、本発明における第１の数の一例である。
【００４５】
例えば、チャンクＡを構成要素とするコンテンツの投入直後、チャンクＡの保持ノード数がパリティ生成閾値以下である場合がある。また、チャンクＡの保持ノードがオーバーレイネットワークＯＮから離脱することにより、チャンクＡの保持ノード数がパリティ生成閾値以下となる場合がある。すると、ノードＮ２は、チャンクＡの保持ノード数がパリティ生成閾値以下であると判定する（図２（Ａ）（１））。すると、ノードＮ２は、パリティ生成要求メッセージを送信する。パリティ生成要求メッセージは、パリティデータの生成の指令を示すメッセージである。具体的に、ノードＮ２は、パリティデータＰの生成元となるチャンクのチャンクＩＤを含むリストを生成する。パリティデータＰの生成元となるチャンクは、チャンクグループＸを構成するチャンクである。そして、ノードＮ２は、パリティ生成要求メッセージを生成する。パリティ生成要求メッセージは、生成したリストと、生成対象のパリティデータＰのパリティＩＤとを含む。また、ノードＮ２は、リストにチャンクＩＤが設定されているチャンクＡ、Ｂ及びＣのうち、少なくとも何れかの保持ノードを検索する。そして、ノードＮ２は、何れかの保持ノードに、パリティ生成要求メッセージを送信する。例えば、ノードＮ２は、ノードＮ５にパリティ生成要求メッセージを送信する（図２（Ａ）（２））。なお、パリティ生成要求メッセージは、本発明における第２指令情報の一例である。
【００４６】
ノードＮ５は、受信したパリティ生成要求メッセージに含まれるリストに設定された各チャンクＩＤに対応するチャンクを取得する。ここで、チャンクＡは、ノードＮ５が保存している。そのため、ノードＮ５は、チャンクＢの保持ノード及びチャンクＣの保持ノードを検索する。そして、ノードＮ５は、ノードＮ６からチャンクＢを取得する。また、ノードＮ５は、ノードＮ７からチャンクＣを取得する（図２（Ａ）（３））。そして、ノードＮ５は、パリティデータＰを生成する（図２（Ａ）（４））。つまり、ノードＮ５は、Ｐ＝Ａ＋Ｂ＋Ｃを計算する。なお、「＋」は排他的論理和である。次いで、ノードＮ５は、生成したパリティデータＰを公開する（図２（Ａ）（５））。具体的に、ノードＮ５は、パリティデータＰを記憶する。また、ノードＮ５は、パリティデータＰのパリティＩＤを含むパブリッシュメッセージを、ノードＮ１へ送信する。パリティノードは、受信したパブリッシュメッセージに基づいて、パリティデータＰのインデックス情報を記憶する。
【００４７】
このように、チャンクの保持ノード数がパリティ生成閾値以下になると、そのチャンクを復元するためのパリティデータが生成される。そして、生成されたパリティデータが、オーバーレイネットワークＯＮから取得可能になる。そのため、チャンクがオーバーレイネットワークＯＮから消失した場合であっても、消失したチャンクを復元することができる。従って、各ノードは、オーバーレイネットワークからチャンクを確実に取得することができる。
【００４８】
なお、パリティデータの生成に必要な処理を１台のノードが全て行うのではなく、パリティデータの生成に必要な処理を、複数のノードが分担して行っても良い。例えば、パリティ生成要求メッセージを受信した保持ノードは、パリティデータＰを生成する処理のうち、実行可能な処理を実行する。そして、保持ノードは、パリティ生成要求メッセージを、他のノードに転送する。具体的に、保持ノードは、パリティ生成要求メッセージに含まれるリストに設定されている各チャンクＩＤに対応するチャンクのうち、何れかのチャンクを記憶しているかを判定する。そして、保持ノードは、パリティデータを生成する処理のうち、記憶していると判定したチャンクを用いて実行可能な処理を実行する。そして、保持ノードは、実行した処理で得られた途中結果をパリティ生成要求メッセージに設定する。また、保持ノードは、実行した処理に用いたチャンクのチャンクＩＤを、パリティ生成要求メッセージに含まれるリストから削除する。そして、パリティ生成要求メッセージを転送する。
【００４９】
例えば、ノードＮ５は、チャンクＡをそのまま途中結果としてパリティ生成要求メッセージに設定する。そして、ノードＮ５は、パリティ生成要求メッセージをノードＮ６に転送する。ノードＮ６は、チャンクＢとパリティ生成要求メッセージに含まれる途中結果との排他的論理和を計算する。次いで、ノードＮ６は、計算結果を途中結果としてパリティ生成要求メッセージに上書きする。そして、ノードＮ６は、パリティ生成要求メッセージをノードＮ７に転送する。ノードＮ７は、チャンクＣとパリティ生成要求メッセージに含まれる途中結果との排他的論理和を計算する。この計算結果がパリティデータＰである。そこで、ノードＮ７は、パリティデータＰを公開する。また、ルートノードが、所在を管理するチャンクを復元するためのパリティデータを生成しても良い。
【００５０】
次に、チャンクの復元時の動作概要について説明する。図２（Ｂ）は、本実施形態の配信システムＳにおけるチャンクの復元時の動作概要を示す図である。チャンクＢのルートノードであるノードＮ３は、チャンクＢの監視の際、チャンクＢの保持ノード数がチャンク復元閾値以下であるか否かを判定する。チャンク復元閾値は、チャンクを復元するための条件を示す保持ノード数である。チャンク復元閾値は、チャンク復元閾値＜パリティ生成閾値を満たす。チャンク復元閾値は、例えば、システムの管理者により予め設定されている。チャンク復元閾値は、例えば、０であっても良い。なお、チャンク復元閾値は、本発明における第２の数の一例である。
【００５１】
例えば、チャンクＢの保持ノードであるノードＮ６が、オーバーレイネットワークＯＮから離脱する。これにより、ノードＮ３は、チャンクＢの保持ノード数がチャンク復元閾値以下となったと判定したとする（図２（Ｂ）（１））。すると、ノードＮ３は、チャンクＢの復元に必要なチャンクＡ、Ｃ及びパリティデータＰを取得する（図２（Ｂ）（２））。ここで、ノードＮ３は、ノードＮ５から、チャンクＡ及びパリティデータＰを取得する。また、ノードＮ３は、ノードＮ７から、チャンクＣを取得する。そして、ノードＮ３は、チャンクＢを復元する（図２（Ｂ）（３））。つまり、ノードＮ３は、Ｂ＝Ａ＋Ｃ＋Ｐを計算する。次いで、ノードＮ５は、復元したチャンクＢを公開する。ノードＮ３は、チャンクＢのルートノードである。そのため、ノードＮ３は、ノードＮ３のノード情報及びチャンクＢのチャンクＩＤを含むインデックス情報を記憶する。
【００５２】
なお、ルートノードは、パリティデータの生成時と同様に、他のノードにチャンクを復元させても良い。この場合、ルートノードは、チャンク復元要求メッセージを送信する。チャンク復元要求メッセージは、チャンクの復元の指令を示すメッセージである。具体的に、ルートノードは、リストを生成する。生成されるリストは、チャンクの復元に必要なチャンクのチャンクＩＤ及びパリティデータのパリティＩＤと、を含む。そして、ノードＮ１は、チャンク復元要求メッセージを生成する。チャンク復元要求メッセージは、生成したリストと、復元対象のチャンクのチャンクＩＤとを含む。チャンク復元要求メッセージを受信したノードの処理内容は、パリティ生成要求メッセージを受信した場合の処理内容と同様である。ここで、チャンクの復元に必要な処理を、複数のノードが分担して行っても良い。また、チャンク復元閾値が１以上である場合、チャンクの復元時において、１台以上のノードが復元対象のチャンクを保存している場合がある。この場合、ルートノードは、何れかのノードに、復元対象となるチャンクを保持ノードから取得させて、公開させても良い。チャンクの保持ノード数がチャンク復元閾値以下にならないように制御される。従って、各ノードは、オーバーレイネットワークからチャンクを確実に取得することができる。
【００５３】
次に、パリティデータの復元時の動作概要について説明する。図３（Ａ）は、本実施形態の配信システムＳにおけるパリティデータの復元時の動作概要を示す図である。図３（Ａ）に示すように、ノードＮ８は、チャンクＡの保持ノードである。
【００５４】
パリティノードは、パブリッシュメッセージを受信して、パリティデータのインデックス情報を記憶する。このとき、パリティノードは、所在を管理するパリティデータとして、オーバーレイネットワークＯＮに初めて保存されたパリティデータのパリティＩＤを含むインデックス情報を記憶したとする。この場合、パリティノードは、この新しいパリティデータのパリティＩＤを含むグループ定義情報を、センターサーバＳＳから取得する。そして、パリティノードは、取得したチャンクグループ定義情報と、新しいパリティのパリティＩＤと、を対応付けて記憶する。これにより、パリティノードは、所在を管理するパリティデータのうち、生成済みのパリティデータを特定することができる。生成済みのパリティデータとは、これまでに少なくとも１回以上生成されて、オーバーレイネットワークＯＮに保存されたことがあるパリティデータである。パリティノードは、生成済みのパリティデータの監視を行う。また、パリティノードは、パリティノードを保存する保持ノードがオーバーレイネットワークＯＮから離脱すること等により、生成済みのパリティデータがオーバーレイネットワークＯＮから削除された場合も、そのパリティデータを監視する。
【００５５】
ノードＮ１は、パリティデータＰの保持ノード数がパリティ復元閾値以下であるか否かを、定期的に判定する。パリティ復元閾値は、パリティデータを復元するための条件を示す保持ノード数である。また、パリティ復元閾値は、パリティ復元閾値＜パリティ生成閾値を満たす。パリティ復元閾値は、例えば、システムの管理者により予め設定されている。パリティ復元閾値は、例えば、０であっても良い。なお、パリティ復元閾値は、本発明における第３の数の一例である。
【００５６】
例えば、パリティデータＰの保持ノードであるノードＮ５が、オーバーレイネットワークＯＮから離脱する。これにより、ノードＮ１は、パリティデータＰの保持ノード数がパリティ復元閾値以下となったと判定する（図３（Ａ）（１））。すると、ノードＮ１は、パリティデータＰの復元に必要なチャンクＡ、Ｂ及びＣを取得する（図３（Ａ）（２））。ここで、ノードＮ１は、ノードＮ８からチャンクＡを取得する。また、ノードＮ１は、ノードＮ６から、チャンクＢを取得する。また、ノードＮ１は、ノードＮ７から、チャンクＣを取得する。そして、ノードＮ１は、パリティデータＰを復元する（図３（Ａ）（３））。つまり、ノードＮ１は、Ｐ＝Ａ＋Ｂ＋Ｃを計算する。次いで、ノードＮ１は、復元したパリティデータＰを公開する。
【００５７】
なお、パリティノードは、パリティデータの生成時と同様に、他のノードにパリティデータを復元させても良い。また、パリティデータの復元に必要な処理を、複数のノードが分担して行っても良い。また、パリティ復元閾値が１以上である場合、パリティデータの復元時において、１台以上のノードが復元対象のパリティデータを保存している場合がある。この場合、パリティノードは、何れかのノードに、復元対象となるパリティデータを保持ノードから取得させて、公開させても良い。このように、パリティデータの保持ノード数がパリティ復元閾値以下にならないように制御される。従って、各ノードは、オーバーレイネットワークからパリティデータを確実に取得することができる。よって、パリティデータを用いて確実にチャンクを復元することができる。
【００５８】
次に、パリティデータの削除時の動作概要について説明する。図３（Ｂ）は、本実施形態の配信システムＳにおけるパリティデータの削除時の動作概要を示す図である。チャンクＡのルートノードであるノードＮ２は、チャンクＡの監視の際、チャンクＡの保持ノード数がパリティ破棄閾値以上であるか否かを判定する。パリティ破棄閾値は、パリティデータをオーバーレイネットワークＯＮから削除するための条件を示す保持ノード数である。パリティ破棄閾値は、パリティ破棄閾値＞パリティ生成閾値を満たす。チャンク復元閾値は、例えば、システムの管理者により予め設定されている。なお、パリティ破棄閾値は、本発明における第４の数の一例である。
【００５９】
チャンクＡの保持ノードが増加することにより、ノードＮ２は、チャンクＡの保持ノード数がパリティ破棄閾値以上であると判定する（図３（Ｂ）（１））。すると、ノードＮ２は、チャンクＡの復元に用いられるパリティデータＰのパリティノードであるノードＮ１へ、パリティ不要通知メッセージを送信する（図３（Ｂ）（２））。パリティ不要通知メッセージは、パリティデータが不要である旨の通知するためのメッセージである。チャンクの保持ノード数が多いほど、チャンクがオーバーレイネットワークＯＮから消失する可能性は低い。そこで、ルートノードは、保持ノード数がパリティ破棄閾値以上になると、パリティノードに、パリティデータが不要である旨を通知する。チャンクＢのルートノードであるノードＮ３及びチャンクＣのルートノードであるノードＮ４も、同様の判定を行った結果、ノードＮ１へ、パリティ不要通知メッセージを送信する（図３（Ｂ）（３）、図３（Ｂ）（４））。
【００６０】
ノードＮ１は、パリティデータＰを用いて復元可能なチャンクグループＸに属する全てのチャンクについて、パリティ不要通知メッセージを受信する。これにより、ノードＮ１は、チャンクグループＸに属する全てのチャンクの保持ノード数が、パリティ破棄閾値以上であると判定する（図３（Ｂ）（５））。この場合、パリティデータＰは不要である。そこで、ノードＮ１は、パリティデータＰの保持ノードへ、パリティ削除要求メッセージを送信する。例えば、ノードＮ１は、ノードＮ５及びＮ８へパリティ削除要求メッセージを送信する（図３（Ｂ）（６））。パリティ削除要求メッセージは、パリティデータの削除の指令を示すメッセージである。パリティ削除要求メッセージには、削除対象となるパリティデータのパリティＩＤが設定される。なお、パリティ削除要求メッセージは、本発明における第１指令情報の一例である。ノードＮ５及びＮ８は、受信したパリティ削除要求メッセージに基づいて、記憶しているパリティデータＰを削除する（図３（Ｂ）（７））。
【００６１】
なお、この後、チャンクＡ〜Ｃのうち何れかのチャンクの保持ノード数がパリティ生成閾値以下となった場合には、パリティデータＰが再生成される。これにより、チャンクグループを構成する各チャンクをオーバーレイネットワークＯＮから取得することができるように担保しつつ、各ノードの記憶容量の空きを増やすことができる。
【００６２】
［２．ノードの構成］
次に、図４を参照して、ノードの構成及び機能について説明する。図４は、ノードの概要構成例を示すブロック図である。ノードは、図４に示すように、制御部１１、記憶部１２、通信部１３ａ、通信部１３ｂ、及びバッファメモリ１４等を備えて構成される。制御部１１、記憶部１２、通信部１３ａ、通信部１３ｂ、及びバッファメモリ１４はバス１５を介して相互に接続されている。
【００６３】
本実施形態において、ノードは、ネットワークＮＷと拠点ネットワークＮＬｎとの間でＩＰ（Internet Protocol）パケットを中継する中継機器である。この中継機器は、例えばルータまたはＬ３スイッチングハブ等である。なお、ノードは、ユーザが利用する端末装置であっても良い。また、ノードは、基本的にネットワークＮＷに定常的に接続されているゲートウェイ等の機器であっても良い。
【００６４】
記憶部１２は、例えばハードディスクドライブ等から構成される。記憶部１２には、オペレーティングシステム、Ｐ２Ｐプログラム等が記憶されている。Ｐ２Ｐプログラムは、ルーティングテーブルを用いて他のノードと通信を行うためのプログラムである。また、Ｐ２Ｐプログラムは、パリティデータの監視及び生成、チャンクの監視及び復元等の処理を行うためのプログラムである。なお、Ｐ２Ｐプログラム等は、例えば、ネットワークＮＷに接続された所定のサーバからダウンロードされるようにしても良い。或いは、Ｐ２Ｐプログラム等は、例えば、ＤＶＤ等の記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしても良い。
【００６５】
また、記憶部１２には、オーバーレイネットワークＯＮで使用されるＤＨＴを用いたルーティングテーブル等が記憶されている。また、記憶部１２には、センターサーバＳＳから配信されたコンテンツカタログ情報が記憶されている。また、記憶部１２には、オーバーレイネットワークＯＮから取得されたチャンクが、チャンクＩＤに対応付けて記憶されている。また、記憶部１２には、センターサーバＳＳからから送信されたチャンクグループ定義情報が記憶されている。また、記憶部１２には、センターサーバＳＳのＩＰアドレス及びポート番号が記憶されている。また、記憶部１２には、パリティ生成閾値、チャンク復元閾値、パリティ復元閾値、チャンク破棄閾値等の設定値が記憶されている。
【００６６】
通信部１３ａは、ネットワークＮＷを通じて、他のノードやセンターサーバＳＳ等との間の通信制御を行う。通信部１３ｂは、拠点ネットワークＮＬｎを通じて拠点端末Ｔｎ−ｌとの間の通信制御を行う。また、バッファメモリ１４は、通信部１３ａを介して受信されたチャンクを一時的に蓄積する。
【００６７】
制御部１１は、演算機能を有するＣＰＵ，作業用ＲＡＭ，及びＲＯＭ等から構成される。また、制御部１１は、時計機能及びタイマ機能を備える。そして、制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラムを読み出して実行することにより、第１判定手段、生成手段、公開手段、復元手段、第２判定手段、第３判定手段、第４判定手段、送信手段、受信手段、削除手段、第５判定手段及び処理手段として機能する。
【００６８】
［３．配信システムの動作］
次に、図５及び図６を参照して、本実施形態における配信システムＳの動作について説明する。図５は、本実施形態におけるルートノードの制御部１１のチャンク監視処理における処理例を示すフローチャートである。なお、以下においては、ルートノードが、パリティデータの生成及びチャンクの復元を行う場合を例として説明する。
【００６９】
チャンク監視処理は、例えば、定期的に実行される。図５に示すように、制御部１１は、所在の管理対象であるチャンクのうち１つのチャンクのチャンクＩＤを選択する（ステップＳ１）。
【００７０】
次いで、制御部１１は、選択したチャンクＩＤに対応するチャンクが、定常配信コンテンツを構成するチャンクであるか否かを判定する（ステップＳ２）。具体的に、制御部１１は、選択したチャンクＩＤに対応するグループ定義情報が記憶部１２に記憶されているか否かを判定する。
【００７１】
このとき、制御部１１は、選択したチャンクＩＤに対応するグループ定義情報が記憶されていないと判定した場合には、チャンクが定常配信コンテンツを構成するチャンクであると判定する（ステップＳ２：ＹＥＳ）。この場合、制御部１１は、ステップＳ１５に移行する。つまり、制御部１１は、パリティデータの生成やチャンクの復元を行わない。
【００７２】
一方、制御部１１は、選択したチャンクＩＤに対応するグループ定義情報が記憶されていると判定した場合には、チャンクが定常配信コンテンツを構成するチャンクではないと判定する（ステップＳ２：ＮＯ）。この場合、制御部１１は、選択したチャンクＩＤに対応するチャンクの保持ノード数がパリティ破棄閾値以上であるか否かを判定する（ステップＳ３）。このとき、制御部１１は、保持ノード数がパリティ破棄閾値以上であると判定した場合には（ステップＳ３：ＹＥＳ）、パリティ不要通知メッセージをパリティノードへ送信する（ステップＳ４）。このとき、制御部１１は、選択したチャンクＩＤに対応するグループ定義情報から、パリティＩＤを取得する。そして、制御部１１は、選択したチャンクＩＤと、取得したパリティＩＤとを、パリティ不要通知メッセージに設定する。制御部１１は、ステップＳ４の処理を終えると、ステップＳ１５に移行する。
【００７３】
一方、制御部１１は、保持ノード数がパリティ破棄閾値以上ではないと判定した場合には（ステップＳ３：ＮＯ）、選択したチャンクＩＤに対応するチャンクの保持ノード数がパリティ生成閾値以下であるか否かを判定する（ステップＳ５）。このとき、制御部１１は、保持ノード数がパリティ生成閾値以下ではないと判定した場合には（ステップＳ５：ＮＯ）、ステップＳ１１に移行する。つまり、制御部１１は、パリティデータを生成しない。
【００７４】
一方、制御部１１は、保持ノード数がパリティ生成閾値以下であると判定した場合には（ステップＳ５：ＹＥＳ）、パリティデータの生成の要否を確認する（ステップＳ６）。具体的に、制御部１１は、選択したチャンクＩＤに対応するグループ定義情報から、パリティＩＤを取得する。次いで、制御部１１は、取得したパリティＩＤを含む生成要否確認メッセージを、パリティノードへ送信する。パリティノードは、受信した生成要否確認メッセージに含まれるパリティＩＤに対応するパリティデータの保持ノード数を計算する。次いで、パリティノードは、保持ノード数がパリティ復元閾値以下であるか否かを判定する。このとき、パリティノードは、保持ノード数がパリティ復元閾値以下であると判定した場合には、パリティデータの生成が必要である旨を示す応答メッセージを送信する。一方、パリティノードは、保持ノード数がパリティ復元閾値以下ではないと判定した場合には、パリティデータの生成が不要である旨を示す応答メッセージを送信する。
【００７５】
制御部１１は、応答メッセージを受信すると、応答メッセージに基づいて、パリティデータの生成が必要であるか否かを判定する（ステップＳ７）。このとき、制御部１１は、パリティデータの生成が必要ではないと判定した場合には（ステップＳ７：ＮＯ）、ステップＳ１１に移行する。つまり、制御部１１は、パリティデータを生成しない。パリティデータの保持ノード数がパリティ復元閾値よりも多い場合には、チャンクを復元するためのパリティデータが十分保存されていると考えられる。従って、この場合は、保持ノード数がパリティ生成閾値以下であっても、パリティデータを生成しなくても良い。
【００７６】
一方、制御部１１は、パリティデータの生成が必要であると判定した場合には（ステップＳ７：ＹＥＳ）、パリティデータの生成に必要なチャンクを取得する（ステップＳ８）。具体的に、制御部１１は、選択したチャンクＩＤを含むグループ定義情報から、各チャンクＩＤを取得する。次いで、制御部１１は、取得したチャンクＩＤに基づいて、チャンクＩＤに対応するチャンクの保持ノードを検索する。そして、制御部１１は、検索された保持ノードからチャンクを取得する。
【００７７】
次いで、制御部１１は、パリティデータを生成する（ステップＳ９）。具体的に、制御部１１は、保持ノードから取得した各チャンクの排他的論理和を計算する。そして、制御部１１は、計算結果をパリティデータとする。
【００７８】
次いで、制御部１１は、生成したパリティデータを公開する（ステップＳ１０）。具体的に、制御部１１は、計算結果をパリティデータとして記憶部１２に記憶させる。そして、制御部１１は、記憶したパリティのパリティＩＤを含むパブリッシュメッセージを、パリティノードに送信する。
【００７９】
次いで、制御部１１は、選択したチャンクＩＤに対応するチャンクの保持ノード数がチャンク復元閾値以下であるか否かを判定する（ステップＳ１１）。このとき、制御部１１は、保持ノード数がチャンク復元閾値以下ではないと判定した場合には（ステップＳ１１：ＮＯ）、ステップＳ１５に移行する。つまり、制御部１１は、チャンクを復元しない。
【００８０】
一方、制御部１１は、保持ノード数がチャンク復元閾値以下であると判定した場合には（ステップＳ１１：ＹＥＳ）、チャンクの復元に必要なパリティデータ及びチャンクを取得する（ステップＳ１２）。次いで、制御部１１は、選択したチャンクＩＤに対応するチャンクを復元する（ステップＳ１３）。次いで、制御部１１は、復元したチャンクを公開する（ステップＳ１４）。なお、ステップＳ１２〜Ｓ１４の処理は、ステップＳ８〜Ｓ１０と基本的に同様である。
【００８１】
次いで、制御部１１は、所在の管理対象であるチャンクのチャンクＩＤの中にまだ選択していないチャンクＩＤがあるか否かを判定する（ステップＳ１５）。このとき、制御部１１は、まだ選択していないチャンクＩＤがあると判定した場合には（ステップＳ１５：ＹＥＳ）、まだ選択していないチャンクＩＤのうち１つを選択する（ステップＳ１６）。次いで、制御部１１は、ステップＳ２に移行する。一方、制御部１１は、まだ選択していないチャンクＩＤがないと判定した場合には（ステップＳ１５：ＮＯ）、チャンク監視処理を終了させる。
【００８２】
図６（Ａ）は、本実施形態におけるパリティノードの制御部１１のパリティ監視処理における処理例を示すフローチャートである。なお、以下においては、パリティノードが、パリティデータの復元を行う場合を例として説明する。
【００８３】
パリティ監視処理は、例えば、定期的に実行される。図６（Ａ）に示すように、制御部１１は、所在の管理対象として生成済みのパリティデータのうち１つのパリティデータのパリティＩＤを選択する（ステップＳ２１）。具体的には、記憶部１２に、生成済みのパリティデータのパリティＩＤが、グループ定義情報と対応付けて記憶されている。そこで、制御部１１は、記憶部１２に記憶されているグループ定義情報のうちの１つに対応付けられているパリティＩＤを取得する。
【００８４】
次いで、制御部１１は、選択したパリティＩＤに対応するパリティデータの保持ノード数がパリティ復元閾値以下であるか否かを判定する（ステップＳ２２）。このとき、制御部１１は、保持ノード数がパリティ復元閾値以下ではないと判定した場合には（ステップＳ２２：ＮＯ）、ステップＳ２６に移行する。つまり、制御部１１は、パリティデータを復元しない。
【００８５】
一方、制御部１１は、保持ノード数がパリティ復元閾値以下であると判定した場合には（ステップＳ２２：ＹＥＳ）、ステップＳ２３〜Ｓ２５の処理を、図５に示すステップＳ１２〜Ｓ１４と同様に行う。
【００８６】
次いで、制御部１１は、生成済みのパリティデータのパリティＩＤの中にまだ選択していないパリティＩＤがあるか否かを判定する（ステップＳ２６）。このとき、制御部１１は、まだ選択していないパリティＩＤがあると判定した場合には（ステップＳ２６：ＹＥＳ）、まだ選択していないパリティＩＤのうち１つを選択する（ステップＳ２７）。次いで、制御部１１は、ステップＳ２２に移行する。一方、制御部１１は、まだ選択していないパリティＩＤがないと判定した場合には（ステップＳ２６：ＮＯ）、パリティ監視処理を終了させる。
【００８７】
図６（Ｂ）は、本実施形態におけるパリティノードの制御部１１のパリティ不要通知メッセージ受信処理における処理例を示すフローチャートである。
【００８８】
パリティ不要通知メッセージ受信処理は、パリティノードがパリティ不要通知メッセージを受信したときに開始される。先ず、制御部１１は、受信したパリティ不要通知メッセージに含まれるパリティＩＤとチャンクＩＤとを対応付けて、不要通知リストに追加する（ステップＳ３１）。不要通知リストは、パリティ不要通知メッセージが送信されたチャンクのリストを、パリティデータごとに示す情報である。不要通知リストは、記憶部１２に記憶される。なお、パリティ不要通知メッセージに含まれているパリティＩＤを、以下、「不要パリティＩＤ」という。
【００８９】
次いで、制御部１１は、チャンクグループを構成する全てのチャンクについて、パリティ不要通知メッセージが受信されたか否かを判定する（ステップＳ３２）。つまり、制御部１１は、チャンクグループを構成する全てのチャンクの保持ノード数が、パリティ破棄閾値以上であるか否かを判定する。具体的には、不要パリティＩＤに対応するチャンクグループ定義情に含まれるチャンクＩＤと、不要パリティＩＤに対応する不要通知リストと、に基づいて、判定が行われる。
【００９０】
このとき、制御部１１は、チャンクグループを構成する少なくとも１つのチャンクについて、パリティ不要通知メッセージが受信されていないと判定した場合には（ステップＳ３２：ＮＯ）、パリティ不要通知メッセージ受信処理を終了させる。
【００９１】
一方、制御部１１は、チャンクグループを構成する全てのチャンクについて、パリティ不要通知メッセージが受信されたと判定した場合には（ステップＳ３２：ＹＥＳ）、パリティ削除要求メッセージを送信する（ステップＳ３３）。具体的に、制御部１１は、不要パリティＩＤに対応する全てのインデックス情報を、インデックス情報キャッシュから取得する。次いで、制御部１１は、取得した各インデックス情報から、パリティデータの保持ノードのＩＰアドレス及びポート番号を取得する。そして、制御部１１は、取得したＩＰアドレス及びポート番号に基づいて、削除対象のパリティデータの全ての保持ノードに、パリティ削除要求メッセージを送信する。このとき、制御部１１は、パリティ削除要求メッセージに、不要パリティＩＤを設定する。また、制御部１１は、不要パリティＩＤに対応する不要通知リストを記憶部１２から削除する。制御部１１は、ステップＳ３３の処理を終えると、パリティ不要通知メッセージ受信処理を終了させる。パリティ削除要求メッセージを受信した保持ノードは、パリティ削除要求メッセージに含まれるパリティＩＤに対応するパリティデータを、記憶部１２から削除する。
【００９２】
なお、上記実施形態においては、オーバーレイネットワークに、ＤＨＴを利用したピアツーピアネットワークが適用されていたが、これに限られるものではない。例えば、他のピアツーピアシステム、または、オーバーレイネットワークを用いたシステムが適用されても良い。ＤＨＴを利用しないオーバーレイネットワークとしては、例えば、ハイブリッド型のピアツーピアネットワーシステムがある。
【００９３】
また、上記実施形態においては、本発明における第１ノード装置が、ルートノードとパリティノードとに適用されていた。しかしながら、本発明における第１ノード装置が、例えば、予め定められたノードに適用されても良い。例えば、ネットワークＮＷに定常的に接続されているノードに適用されても良い。また、上記実施形態においては、本発明における誤り検出符号が、パリティデータに適用されていた。つまり、チャンクグループを構成する各チャンクの排他的論理和を計算することにより、誤り検出符号が生成されていた。しかしながら、本発明を、パリティデータ以外の誤り検出符号に適用されても良い。また、上記実施形態においては、コンテンツを構成するチャンクを復元するために、誤り検出符号が生成されていた。しかしながら、例えば、ある規則によりグループ化された複数のコンテンツを復元するために、誤り検出符号が生成されても良い。
【符号の説明】
【００９４】
１１  制御部
１２  記憶部
１３ａ，１３ｂ  通信部
ＳＳ  センターサーバ
Ｎｎ  ノード
ＮＷ  ネットワーク
ＯＮ  オーバーレイネットワーク
Ｓ  配信システム
【図１】
0005299448.tif 000002
【図２】
0005299448.tif 000003
【図３】
0005299448.tif 000004
【図４】
0005299448.tif 000005
【図５】
0005299448.tif 000006
【図６】
0005299448.tif 000007