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