説明

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

【課題】ノード装置が複数の分割データに分割されたコンテンツを取得するときにその分割データを早く公開することを可能とするとともに、コンテンツ全体の取得に要する時間を短縮することを可能とする。
【解決手段】要求されたコンテンツを構成する分割データを識別する第1識別情報と、コンテンツを要求するノード装置を識別する第2識別情報と、を含む要求情報を、他のノード装置から受信し、受信された要求情報に含まれる第2識別情報と、要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶し、記憶された時刻情報に基づいて、記憶された第2識別情報を含む要求情報が受信された時刻が早い順に、要求情報に含まれる第2識別情報が示すノード装置に、要求情報に含まれる第1識別情報が示す分割データの取得を許可し、コンテンツを要求したノード装置が分割データを取得することを、取得する順番が来るまで待たせる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))方式の通信システムの技術分野に関する。
【背景技術】
【0002】
近年、ピアツーピア方式の通信システムが注目されている。このピアツーピア方式の通信システムにおいて、1つのコンテンツを複数のデータに分割して、複数のノード装置に分散して保存させる技術が知られている。ここで、分割された各データを、「分割データ」と称する。例えば、特許文献1に記載の技術では、ノード装置がコンテンツを取得する場合、そのコンテンツを構成する分割データを他のノード装置に要求する。要求を受けたノード装置は、その都度、要求された分割データを要求元のノード装置にアップロードする。分割データをダウンロードして保存したノード装置は、その分割データを保存していることを公開する処理を行う。そうすると、コンテンツ全体の取得が完了する前であっても、他のノード装置は、分割データを保存したノード装置からこの分割データを取得することができる。このようにして、コンテンツをアップロードする負荷が複数のノード装置に分散される。また、コンテンツを構成する全ての分割データが取得されることにより、コンテンツ全体の取得が完了する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−193460号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、分割データを保存しているノード装置が、複数のノード装置から分割データの要求を受けることにより、複数のノード装置に対して並行して分割データをアップロードすることがある。このとき、アップロードするノード装置の負荷が高くなる場合がある。また、通信回線の帯域幅の制限により、各ノード装置へ分割データをアップロードするための帯域を十分に確保することができない場合がある。こうした場合、各ノード装置に対する分割データの転送速度がそれぞれ遅くなる。これによって、分割データを要求している各ノード装置において、分割データの取得の完了がそれぞれ遅延する。分割データの取得が完了するまでは、その分割データを保存していることは公開されないことから、コンテンツをアップロードする負荷を効率的に分散することができない。また、分割データの取得の遅延によって、コンテンツ全体の取得の完了が遅延する場合もある。
【0005】
そこで、本発明は、以上の点に鑑みてなされたものである。本発明は、ノード装置が複数の分割データに分割されたコンテンツを取得するときにその分割データを早く公開することを可能とするとともに、コンテンツ全体の取得に要する時間を短縮することを可能とする情報通信システム、ノード装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムであって、前記ノード装置は、要求する前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、前記第1識別情報が示す前記分割データを保存するノード装置である保存ノード装置へ前記分割データ毎に送信する送信手段と、前記送信手段により送信された前記要求情報に含まれる前記第1識別情報が示す前記分割データを前記保存ノード装置から取得する第1取得手段と、前記第1取得手段により取得された前記分割データを記憶する第1記憶手段と、前記第1記憶手段により記憶された前記分割データが他の前記ノード装置によって取得されることを可能にする公開手段と、を備え、少なくとも1つの前記保存ノード装置は、他の前記ノード装置から送信された前記要求情報を受信する第1受信手段と、前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶手段と、前記第2記憶手段により記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御手段と、を備えることを特徴とする。
【0007】
この発明によれば、コンテンツの要求が早かったノード装置の順に、保存ノード装置から分割データが取得されるように制御される。そのため、保存ノード装置の処理負荷を軽減することができる。また、各分割データのアップロードの帯域幅をそれぞれ広く確保することができる。よって、分割データの取得に要する時間が短くなるので、分割データを早く公開することができる。また、コンテンツの要求が早かったノード装置であるほど、コンテンツを構成する各分割データを先に取得することができる。よって、コンテンツ全体の取得に要する時間を短縮することができる。
【0008】
請求項2に記載の発明は、前記少なくとも1つの保存ノード装置は、前記第1受信手段により受信された前記要求情報に含まれる前記第1識別情報に基づいて、要求された前記コンテンツを識別する第3識別情報を取得する第2取得手段を更に備え、前記第2記憶手段は、前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報と、前記第2取得手段により取得された前記第3識別情報と、前記時刻情報とを対応付けて記憶し、前記制御手段は、前記第2識別情報に対応付けて前記第2記憶手段により記憶された前記第3識別情報が示す前記コンテンツを要求する前記要求情報が受信された時刻が早い順に、前記分割データの取得を許可することを特徴とする。
【0009】
この発明によれば、コンテンツの要求がコンテンツ単位で早かったノード装置の順に、保存ノード装置から分割データが取得されるように制御される。よって、ノード装置は、要求が早かったコンテンツであるほど、そのコンテンツ全体を早く取得することができる。
【0010】
請求項3に記載の発明は、前記送信手段は、前記第1識別情報と、前記第2識別情報と、要求する前記コンテンツを識別する第3識別情報と、を含む要求情報を、前記第1識別情報が示す前記分割データを保存する前記保存ノード装置へ前記分割データ毎に送信し、前記第2記憶手段は、前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報及び前記第3識別情報と、前記時刻情報とを対応付けて記憶し、前記制御手段は、前記第2記憶手段により対応付けて記憶された前記第2識別情報及び前記第3識別情報を含む前記要求情報が受信された時刻が早い順に、前記分割データの取得を許可することを特徴とする。
【0011】
この発明によれば、コンテンツの要求がコンテンツ単位で早かったノード装置の順に、保存ノード装置から分割データが取得されるように制御される。よって、ノード装置は、要求が早かったコンテンツであるほど、そのコンテンツ全体を早く取得することができる。
【0012】
請求項4に記載の発明は、前記少なくとも1つの保存ノード装置は、前記第1受信手段により受信された前記要求情報が格納されるキューとして、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報が取り出されるキューを記憶する第3記憶手段を更に備え、前記制御手段は、前記第3記憶手段により記憶された前記キューから前記要求情報を取り出して、取り出した前記要求情報に含まれる前記第2識別情報が示す前記ノード装置へ、取り出した前記要求情報に含まれる前記第1識別情報が示す前記分割データをアップロードする処理を、順次行うことを特徴とする。
【0013】
この発明によれば、キューを用いることによって、コンテンツを要求した時刻が早いノード装置の順に分割データをアップロードすることができる。
【0014】
請求項5に記載の発明は、前記制御手段は、前記第1受信手段により前記要求情報が受信されたときに、前記第2記憶手段により記憶された前記時刻情報が示す時刻に基づいて、受信された前記要求情報を前記キューから取り出す順番を決定し、決定した順番に基づいて前記要求情報を前記キューに格納することを特徴とする。
【0015】
この発明によれば、要求情報が受信されたときに、コンテンツを要求した時刻が早いノード装置の順に取り出されるように、要求情報をキューに格納させることができる。
【0016】
請求項6に記載の発明は、前記ノード装置は、要求する前記コンテンツを構成する前記分割データを保存する前記保存ノード装置を定期的に検索する検索手段を更に備え、前記送信手段は、前記検索手段により検索された前記保存ノード装置へ前記要求情報を送信し、前記公開手段は、前記第1取得手段により前記分割データが取得されたときに、前記分割データが他の前記ノード装置によって取得されることを可能にすることを特徴とする。
【0017】
保存ノード装置が、ノード装置に分割データの取得を待たせている間に、他のノード装置にアップロードを行うことで、取得を待たされている分割データを保存する保存ノード装置が増加する可能性がある。この発明によれば、ノード装置が、検索を定期的に行うことで前回までに検索されなかった新たな保存ノード装置が検索されれば、新たな保存ノード装置から分割データを取得することができる。よって、コンテンツのアップロードの負荷をより効率的に分散することができる。
【0018】
請求項7に記載の発明は、各前記分割データを配信する配信装置を更に備え、前記配信装置は、各前記分割データを記憶する第4記憶手段と、前記ノード装置から送信された前記要求情報を受信する第2受信手段と、前記第2受信手段により受信された前記要求情報に含まれる前記第1識別情報が示す前記分割データを、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置へアップロードするアップロード手段と、を備え、前記検索手段は、前記検索の結果、前記配信装置のみが前記分割データを保存していると判定した場合に、前記検索を定期的に行い、前記送信手段は、前記検索手段により検索された前記ノード装置または前記配信装置へ前記要求情報を送信し、前記第1取得手段は、前記要求情報の送信先である前記ノード装置または前記配信装置から前記分割データを取得することを特徴とする。
【0019】
この発明によれば、各分割データを配信することができる配信装置に対する要求の集中を早く解消することができる。
【0020】
請求項8に記載の発明は、前記制御手段は、前記分割データの取得を前記ノード装置に待たせている数が多い前記コンテンツから優先して前記分割データの取得を許可し、同一の前記コンテンツを構成する前記分割データを要求した複数の前記ノード装置について、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に前記分割データの取得を許可することを特徴とする。
【0021】
この発明によれば、分割データの取得をノード装置に待たせている数が多いコンテンツを構成する分割データが優先して取得されて保存される。よって、要求されることが多いコンテンツを構成する分割データを保存する保存ノード装置への要求の集中を早く解消することができる。
【0022】
請求項9に記載の発明は、前記複数のノード装置に含まれる各前記ノード装置が、前記第1受信手段、前記第2記憶手段、及び前記制御手段を備えることを特徴とする。
【0023】
この発明によれば、各ノード装置によって、コンテンツを要求した時刻が早いノード装置の順に、保存ノード装置から分割データが取得されるように制御される。よって、情報通信システム全体において、分割データを公開するまでに要する時間及びコンテンツ全体の取得に要する時間を短縮させることができる。
【0024】
請求項10に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける少なくとも1つの前記ノード装置であって、要求された前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、他の前記ノード装置から受信する第1受信手段と、前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶手段と、前記第2記憶手段により記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御手段と、を備えることを特徴とする。
【0025】
請求項11に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける情報処理方法であって、前記ノード装置が、要求する前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、前記第1識別情報が示す前記分割データを保存するノード装置である保存ノード装置へ前記分割データ毎に送信する送信ステップと、前記ノード装置が、前記送信ステップにおいて送信された前記要求情報に含まれる前記第1識別情報が示す前記分割データを前記保存ノード装置から取得する取得ステップと、前記ノード装置が、前記取得ステップにおいて取得された前記分割データを記憶する第1記憶ステップと、前記ノード装置が、前記第1記憶ステップにおいて記憶された前記分割データが他の前記ノード装置によって取得されることを可能にする公開ステップと、少なくとも1つの前記保存ノード装置が、他の前記ノード装置から送信された前記要求情報を受信する第1受信ステップと、前記少なくとも1つの保存ノード装置が、前記第1受信ステップにおいて受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶ステップと、前記少なくとも1つの保存ノード装置が、前記第2記憶ステップにおいて記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御ステップと、を含むことを特徴とする。
【0026】
請求項12に記載の発明は、ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける少なくとも1つの前記ノード装置に含まれるコンピュータに、要求された前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、他の前記ノード装置から受信する第1受信ステップと、前記第1受信ステップにおいて受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶ステップと、前記第2記憶ステップにおいて記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御ステップと、を実行させることを特徴とする。
【発明の効果】
【0027】
本発明によれば、分割データの取得に要する時間が短くなるので、分割データを早く公開することができる。また、コンテンツの要求が早かったノード装置であるほど、コンテンツを構成する各分割データを先に取得することができる。よって、コンテンツ全体の取得に要する時間を短縮することができる。
【図面の簡単な説明】
【0028】
【図1】一実施形態におけるコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
【図2】一実施形態におけるホルダノードにより、受信したチャンク要求メッセージに対するチャンクのアップロードが制御される様子の一例を示す図である。
【図3】一実施形態におけるホルダノードにより、受信したチャンク要求メッセージに対するチャンクのアップロードが制御される様子の一例を示す図である。
【図4】センターサーバSAの概要構成例を示す図である。
【図5】ノードNnの概要構成例を示す図である。
【図6】一実施形態におけるユーザノードの制御部21のコンテンツ要求処理における処理例を示すフローチャートである。
【図7】一実施形態におけるホルダノードの制御部21のチャンク要求受信処理における処理例を示すフローチャートである。
【図8】一実施形態におけるホルダノードの制御部21のチャンク送信処理における処理例を示すフローチャートである。
【発明を実施するための形態】
【0029】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【0030】
[1.コンテンツ分散保存システムの概要構成及び動作概要]
始めに、図1を参照して、本実施形態におけるコンテンツ分散保存システムの構成及び動作概要について説明する。図1は、本実施形態におけるコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。図1は、コンテンツ分散保存システムSの具体的構成図101と、概念的構成図100とから構成される。コンテンツ分散保存システムSの具体的構成図101が示すように、コンテンツ分散保存システムSは、多数のノード装置Nn(n=1,2,3・・・の何れか)から構成される。
【0031】
図1の具体的構成図101内に示すように、コンテンツ分散保存システムSは、複数のノード装置Nnがインターネットを介して接続されることで構成される。また、図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a,4b、DSL(Digital Subscriber Line)回線事業者の装置5a,5b、FTTH(Fiber To The Home)回線事業者の装置6、及び通信回線7等によって、インターネット等のネットワーク8が構築されている。ネットワーク8は、現実世界の通信ネットワークである。なお、図1の例におけるネットワーク8には、データパケットを転送するためのルータが適宜挿入されているが、図1では図示を省略している。また、通信回線7としては、例えば、電話回線や光ケーブル等が用いられる。
【0032】
このようなネットワーク8には、複数のノード装置Nn(n=1,2,3・・・の何れか)が接続されている。以下、ノード装置を、「ノード」という。また、各ノードNnには、固有の製造番号及びIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態におけるコンテンツ分散保存システムSは、これらのノードNnのうち、図1の概念的構成図100内に示すように、何れか複数のノードNnの接続により形成されるピアツーピア方式のネットワークシステムとなっている。
【0033】
なお、図1の概念的構成図100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9である。論理的なネットワークであるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムSに接続されている各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。
【0034】
各ノードNnは、夫々、DHT(Distributed Hash Table)を用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。コンテンツ分散保存システムSに接続している1台のノードは、必要最低限のノードNnのノード情報をルーティングテーブルとして記憶している。各ノードNn間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードNnについてのノード情報が取得される。
【0035】
コンテンツ分散保存システムSにおいては、内容の異なる様々なコンテンツが複数のノードNnに分散して保存される。各コンテンツには、それぞれコンテンツ名及びコンテンツ毎に固有の識別情報であるコンテンツIDが付与されている。各コンテンツのコンテンツ名及びコンテンツID等の属性情報は、コンテンツカタログ情報に記述されている。コンテンツカタログ情報は、センターサーバSAにより作成されて、全てのノードNnに配信される。
【0036】
また、各コンテンツは、複数のデータに分割されている。この分割されたデータを、「チャンク」という。各チャンクは、例えば、センターサーバSAにより、コンテンツを所定のデータサイズで分割することにより生成される。各チャンクは、複数のノードNnに分散されて保存される。これにより、元となるコンテンツが複数のノードNnに分散して保存されることになる。各チャンクのオリジナルは、センターサーバSAに保存されている。各チャンクには、それぞれシーケンス番号及びチャンクIDが付与されている。シーケンス番号は、例えば、分割された複数のチャンクを、元となるコンテンツを構成するように並べたときの並び順に相当する。チャンクIDは、チャンク毎に固有の識別情報である。なお、チャンクは、本発明における分割データの一例である。また、チャンクIDは、本発明における第1識別情報の一例である。また、ノードIDは、本発明における第2識別情報の一例である。また、コンテンツIDは、本発明における第3識別情報の一例である。また、センターサーバSAは、本発明における配信装置の一例である。
【0037】
各ノードNnは、或るコンテンツのコンテンツIDを取得すると、そのコンテンツを構成する各チャンクのチャンクIDを、そのシーケンス番号と対応付けて取得することができる。コンテンツを構成する各チャンクのチャンクIDは、例えば、コンテンツカタログ情報において、元となるコンテンツの属性情報中に、シーケンス番号と対応付けて記述されていても良い。
【0038】
チャンクを保存しているノードNnを、「ホルダノード」という。また、チャンクの所在は、インデックス情報として、チャンクの所在を管理(記憶)しているノードNnにより記憶される。以下、チャンクの所在を管理しているノードNnを、「ルートノード」という。インデックス情報は、チャンクを保存したノードNnのノード情報と、チャンクのチャンクIDと等の組を含む。このようなルートノードは、例えば、チャンクIDと最も近いノードIDを有するノードNnであるように定められる。チャンクIDと最も近いノードIDとは、例えば、IDの上位桁が最も多く一致するノードIDである。なお、ホルダノードは、本発明における保存ノード装置の一例である。
【0039】
或るノードNnのユーザが、所望のコンテンツを取得したい場合、ノードNnは、所望されたコンテンツを構成する各チャンクを保存するホルダノードをそれぞれ検索する。以下、ユーザによりチャンクの取得を望むノードNnを、「ユーザノード」という。具体的に、ユーザノードは、検索メッセージを送信する。この検索メッセージは、取得を望むチャンクのチャンクID及びユーザノードのノードIDを含む。この検索メッセージが、ユーザノードが記憶するDHTのルーティングテーブルに従って、他のノードNnに対して送信される。つまり、ユーザノードは、検索メッセージを、ルートノードに向けて送信する。これにより、検索メッセージは、チャンクIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0040】
検索メッセージを受信したルートノードは、これに含まれるチャンクIDに対応するインデックス情報をインデックス情報キャッシュから1または複数取得する。取得されたインデックス情報は、検索メッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてチャンクを取得(ダウンロード)する。具体的に、ユーザノードは、インデックス情報に含まれるホルダノードのIPアドレス及びポート番号等に基づいて、チャンク要求メッセージをホルダノードに送信する。チャンク要求メッセージには、ユーザノードのノード情報、所望するコンテンツのコンテンツID及び取得を望むチャンクのチャンクIDが含まれている。なお、チャンク要求メッセージに含まれるノード情報中のノードID、コンテンツID及びチャンクIDは、本発明における要求情報の一例である。
【0041】
チャンク要求メッセージを受信したホルダノードは、チャンク要求メッセージに含まれるチャンクIDに対応するチャンクをユーザノードに送信(アップロード)する。一方、所望するチャンクを保存するホルダノードが存在しないとき、ユーザノードは、ホルダノードのインデックス情報を取得することができない。この場合、ユーザノードは、センターサーバSAからチャンクを取得する。なお、ホルダノードがチャンク要求メッセージを受信したときのチャンクのアップロードの制御内容の詳細については後述する。
【0042】
ユーザノードは、ホルダノードからチャンクを取得して保存したとき、チャンクを公開する。チャンクの公開とは、ユーザノードがホルダノードとしてチャンクを保存したことをルートノードへ知らせることをいう。チャンクの公開により、公開したホルダノードから、公開されたチャンクを他のノードNnが取得可能になる。具体的に、チャンクを保存したユーザノードは、パブリッシュメッセージを送信する。パブリッシュメッセージは、チャンクのチャンクID及びチャンクを保存したユーザノードのノード情報を含む。パブリッシュメッセージは、ルートノードに向けて送出される。これにより、パブリッシュメッセージは、検索メッセージと同じように、チャンクIDをキーとするDHTルーティングによってルートノードに到着することになる。ルートノードは、受信したパブリッシュメッセージに含まれるノード情報及びチャンクIDの組を含むインデックス情報をインデックス情報キャッシュに記憶する。こうして、上記ユーザノードは、新たに、上記チャンクを保存するホルダノードとなる。
【0043】
[2.チャンクのアップロードの制御]
ホルダノードが、チャンク要求メッセージを受信する都度、即時にチャンクをユーザノードにアップロードするものと仮定する。この場合、ホルダノードが、複数のユーザノードから同時期にチャンク要求メッセージを受信すると、複数のユーザノードに対して同時並行してチャンクをアップロードしなければならなくなる。このとき、ホルダノードの負荷が高くなると、各ユーザノードに対するチャンクの転送速度が遅くなる。また、ホルダノードがネットワーク8に接続するための通信回線の帯域幅が狭いと、各ユーザノードに対してアップロードするための帯域が十分に確保することができない。この場合も、各ユーザノードに対するチャンクの転送速度が遅くなる。そこで、各ホルダノードは、所定のキューとテーブルを用いて、ユーザノードによるチャンクの取得を制御する。ユーザノードのチャンクの取得の制御は、ホルダノードがユーザノードに対するチャンクのアップロードを制御することによって行われる。この制御に用いられるキューを、「リクエストキュー」という。また、この制御に用いられるテーブルを、「リクエスト管理テーブル」という。リクエストキュー及びリクエスト管理テーブルは、各ノードNnにより保持される。
【0044】
リクエストキューは、受信されたチャンク要求メッセージが格納される。そして、格納されたチャンク要求メッセージが、優先順位が付けられて取り出される。具体的に、リクエストキューには、チャンク要求メッセージに含まれるノード情報と、コンテンツIDとチャンクIDとが夫々対応付けて格納される。リクエストキューは、コンテンツのリクエスト時刻の早い順にチャンク要求メッセージが取り出されるようになっている。リクエスト時刻の管理のため、リクエスト管理テーブルには、コンテンツを要求したノードのノードIDと、要求されたコンテンツのコンテンツIDと、リクエスト時刻とが対応付けて登録される。ユーザノードは、コンテンツを取得するため、このコンテンツを構成するチャンク毎にチャンク要求メッセージを受信する。そのため、ホルダノードは、チャンクIDは異なるが、ノードIDとコンテンツIDとの組み合わせが同一であるチャンク要求メッセージを複数受信する場合がある。リクエスト時刻は、リクエスト管理テーブルに登録されていないノードIDとコンテンツIDとの組み合わせを含むチャンク要求メッセージが受信された時刻である。なお、リクエスト時刻は、本発明における時刻情報の一例である。ホルダノードは、チャンク要求メッセージを受信すると、チャンク要求メッセージに含まれるノード情報中のノードIDとコンテンツIDとの組み合わせがリクエスト管理テーブルに既に登録されているか否かを判定する。そして、ホルダノードは、ノードIDとコンテンツIDとの組み合わせが登録されていない場合に、この組み合わせをリクエスト管理テーブルに登録する。また、ホルダノードは、現在時刻をリクエスト時刻として登録する。また、ホルダノードは、チャンク要求メッセージを受信すると、リクエスト管理テーブルに登録された情報に基づいて、チャンク要求メッセージが取り出される順番を決定する。そして、ホルダノードは、決定した順番でチャンク要求メッセージが取り出されるように、受信したチャンク要求メッセージをリクエストキューに格納する。なお、ホルダノードは、例えば、リクエスト時刻から所定時間が経過すると、リクエスト管理テーブルから、登録したノードID、コンテンツID及びリクエスト時刻を削除する。
【0045】
一方、ホルダノードは、リクエストキューからチャンク要求メッセージを取り出して、ユーザノードによるチャンクの取得を許可する。具体的に、ホルダノードは、取り出したチャンク要求メッセージに含まれるチャンクIDに対応するチャンクを取得する。そして、ホルダノードは、取り出したチャンク要求メッセージに含まれるノード情報中のノードIDに対応するユーザノードに、取得したチャンクをアップロードする。そして、ホルダノードは、アップロードが完了すると、リクエストキューから次のチャンク要求メッセージを取り出して、アップロードを行う。つまり、ホルダノードは、ユーザノードによるチャンクの取得を順次許可する。換言すると、ホルダノードは、リクエストキューからチャンク要求メッセージを取り出す順番が来るまで、そのチャンク要求メッセージを送信したユーザノードによるチャンクの取得を待たせる。これにより、同時並行してアップロードが行われる数が制限される。従って、ホルダノードの負荷が低くなる。また、各ユーザノードに対してアップロードするときの帯域を広く確保することができる。これにより、転送速度が速くなる。そして、コンテンツのリクエスト時刻が早いユーザノードであるほど、早くチャンクを取得することができる。
【0046】
以下に具体例を説明する。図2及び図3は、本実施形態におけるホルダノードにより、受信したチャンク要求メッセージに対するチャンクのアップロードが制御される様子の一例を示す図である。図2及び図3が示す具体例の前提として、コンテンツX、Y及びZが存在するものとする。コンテンツXは、チャンクXA及びXBにより構成されている。またコンテンツYは、チャンクYA及びYBにより構成されている。コンテンツZは、チャンクZA及びZBにより構成されている。ノードN10は、チャンクXA、XB、YA、YB、ZA及びZBを保存している。つまり、ノードN10は、これらのチャンクのホルダノードである。また、ノードN10が保持するリクエストキュー及びリクエスト管理テーブルには、まだ何らの情報も登録されていない。
【0047】
先ず、ノードN1が、ユーザノードとしてノードN10にチャンクXAを要求したとする(図2(1))。つまり、ノードN1は、ノードN1のノードID、コンテンツXのコンテンツID及びチャンクXAのチャンクIDを含むチャンク要求メッセージを、ノードN10に送信する。チャンク要求メッセージを受信したノードN10は、チャンク要求メッセージに含まれるノードN1のノードID、コンテンツXのコンテンツID及び現在時刻をリクエスト管理テーブルに登録する(図2(2))。また、ノードN10は、チャンク要求メッセージをリクエストキューに格納する(図2(3))。
【0048】
ノードN1からのチャンク要求メッセージは、1番目に取り出されるように、リクエストキューに格納される。従って、ノードN10は、リクエストキューからノードN1からのチャンク要求メッセージを取り出す。そして、ノードN10は、取り出したチャンク要求メッセージに基づいて、ノードN1に対するチャンクXAのアップロードを開始する(図2(4))。ノードN10がノードN1に対するアップロードを行っている間に、ノードN2、N3及びN4の順に、各ノードNnがノードN10にチャンク要求メッセージを送信したとする(図2(5))。例えば、ノードN2が送信したチャンク要求メッセージには、コンテンツYのコンテンツID及びチャンクYAのチャンクIDが含まれている。また、ノードN3が送信したチャンク要求メッセージには、コンテンツZのコンテンツID及びチャンクZAのチャンクIDが含まれている。また、ノードN4が送信したチャンク要求メッセージには、コンテンツXのコンテンツID及びチャンクXAのチャンクIDが含まれている。ノードN10は、チャンク要求メッセージを受信する度に、それぞれのチャンク要求メッセージに含まれるノードID及びコンテンツIDと、そのときの現在時刻とを、リクエスト管理テーブルに登録する(図2(6))。リクエスト管理テーブルに登録されたリクエスト時刻は、ノードN1、N2、N3、N4の順に早くなっている。従って、ノードN10は、ノードN2〜N4からのチャンク要求メッセージを、受信した順番で取り出されるように、順次リクエストキューに格納する(図2(7))。
【0049】
ノードN1へのアップロードが完了すると、ノードN10は、リクエストキューから、ノードN2からのチャンク要求メッセージを取り出す。そして、ノードN10は、ノードN2に対するチャンクYAのアップロードを開始する(図3(8))。ノードN10がノードN2に対するアップロードを行っている間に、ノードN1がノードN10にチャンク要求メッセージを送信したとする(図3(9))。このチャンク要求メッセージには、コンテンツXのコンテンツID及びチャンクXBのチャンクIDが含まれている。このチャンク要求メッセージに含まれているノードIDとコンテンツIDとの組み合わせは、リクエスト管理テーブルに既に登録されている。従って、チャンク要求メッセージを受信したノードN10は、リクエスト管理テーブルへの登録を行わない。次いで、ノードN10は、リクエストキューに対するチャンク要求メッセージの格納を行う。この時点でリクエストキューには、ノードN3がコンテンツZのチャンクZAを要求するチャンク要求メッセージと、ノードN4がコンテンツXのチャンクXAを要求するチャンク要求メッセージとが格納されている。そして、リクエスト管理テーブルにおいては、ノードN1のコンテンツXのリクエスト時刻の方が、ノードN3のコンテンツZのリクエスト時刻及びノードN4のコンテンツXのリクエスト時刻よりも早い。従って、ノードN10は、ノードN3及びN4のチャンク要求メッセージの順番を追い越して、ノードN1のチャンク要求メッセージが1番目となるように、リクエストキューに格納する(図3(10))。
【0050】
その後、ノードN2へのアップロードが完了すると、ノードN10は、リクエストキューから、ノードN1からのチャンク要求メッセージを取り出す。そして、ノードN10は、ノードN1に対するチャンクXBのアップロードを開始する(図3(11))。
【0051】
また、ホルダノードは、待機ノード数が多いコンテンツを構成するチャンクを要求しているユーザノードを優先して、チャンクをアップロードする。待機ノード数とは、チャンクの取得を待たせているユーザノードの数である。待機ノード数は、コンテンツ毎に計算される。例えば、図2及び図3に示す例において、ノードN10が、リクエストキューからノードN1のチャンク要求メッセージを取り出す前に、ノードN2〜N4からチャンク要求メッセージを受信したとする(図2(5))。この場合、コンテンツX、Y、Zの待機ノード数は、2、1、1である。つまり、コンテンツXの待機ノード数が、コンテンツY及びZそれぞれの待機ノード数よりも多い。この場合、ノードN10は、ノードN4からのチャンク要求メッセージが取り出される順番が、ノードN2及びN3からのチャンク要求メッセージよりも早く取り出されるように、メッセージキューへの格納を行う。なお、ノードN1とノードN4との間では、コンテンツが同一であり、待機ノード数が同一である。また、ノードN1のリクエスト時刻の方が、ノードN4のリクエスト時刻よりも早い。従って、この場合、ノードN1からのチャンク要求メッセージの方が優先される。以上の結果、チャンク要求メッセージは、ノードN1、N4、N2、N3の順で取り出されることになる。このようにすると、待機ノード数が多いコンテンツを構成するチャンクを保存するホルダノードが早く増加する。従って、例えば、人気が高いコンテンツを構成するチャンクの要求がホルダノードに集中することが、早い段階で解消される。
【0052】
なお、ノードNnのみならず、サーバSAにおいても、リクエストキュー及びリクエスト管理テーブルを保持し、上述したホルダノードと同様の処理を行うようにしても良い。また、各ホルダノードは、複数のアップロードを同時並行して行っても良い。チャンクをアップロードするときの転送速度が、システム上必要とされる速度以上となる限りにおいては、複数のアップロードが同時並行して行われても良いのである。この場合、例えば、同時並行してアップロードを行うことができる最大数が、ノードNn毎に予め設定される。またこの場合、ホルダノードは、例えば、複数のスレッドを生成し、各スレッドで、リクエストキューからのチャンク要求メッセージの取り出しと、チャンクのアップロードを行う。
【0053】
上述したチャンクのアップロードの制御は、計画的にコンテンツを配信する場合にも効果がある。計画的なコンテンツの配信とは、例えば、予め計画された時期に、コンテンツ分散保存システムSに参加する全てのノードNnまたは一部の複数のノードNnに対して、特定のコンテンツを配信することをいう。例えば、チャンクXA、XB、XC・・・により構成されるコンテンツXを計画的に配信するとする。各チャンクは、当初はセンターサーバSAが保存している。そして、コンテンツXの配信開始時期が到来すると、例えばノードN1及びN2が、センターサーバSAからチャンクXAの取得を開始する。そして、ノードN1及びN2は、チャンクXA、XB、XC・・・と、順次チャンクを取得する。なお、1番目にチャンクの取得を開始するノードN1及びN2を、グループ1とする。グループ1によるチャンクXAの取得の開始から所定時間経過後、例えばノードN3〜N6が、グループ1からチャンクXAの取得を開始し、チャンクXA、XB、XC・・・と、順次チャンクを取得する。なお、2番目にチャンクの取得を開始するノードN3〜N6を、グループ2とする。このようにして、例えば、チャンクを取得するノードNnの数を順次増やしていき、最終的に、配信の対象となる全てのノードNnが、コンテンツX全体の取得を完了させる。
【0054】
ここで、各ホルダノードが、リクエストキュー及びリクエスト管理テーブルを用いず、チャンク要求メッセージを受信する都度アップロードを行っていると、チャンク取得の追いつき現象が発生する。チャンク取得の追いつき現象とは、チャンクを取得する順番が遅いグループが、チャンクを取得する順番が早いグループと同じチャンクを取得することである。例えば、チャンクを取得する順番が遅いグループほど、グループに属するノードNnの数を多くすると、チャンクをアップロードするときの負荷分散の効果が高くなる。つまり、特定のノードNnに負荷が集中しにくい。ユーザノードは、取得するチャンクのホルダノードが複数存在する場合、取得先のホルダノードを、例えば、ランダムに選択する。上記例のグループ1は、2つのノードNnが属している。例えば、グループ2に属するノードN3及びN4がノードN1をホルダノードとして選択し、ノードN5及びN6がノードN2をホルダノードとして選択したとする。この場合は、ノードN1とN2とでアップロードの処理負荷は同じである。一方、ノードN3〜N6がノードN1をホルダノードとして選択したとする。すると、ノードN1によるアップロードの処理負荷が高くなる。アップロードの処理負荷が高くなると、チャンクの転送速度が遅くなる。この場合、グループ2に属する全てのノードによるチャンクの取得完了が遅くなる。グループに属するノードNnの数を多くしていくと、そのグループよりもチャンクを取得する順番が遅いグループに属するノードNnから、ホルダノードとして選択されるノードNnが分散されやすくなる。そうすると、チャンクを取得する順番が遅いグループほど、チャンクをアップロードするときの転送速度が速くなる傾向にある。或るグループに属するノードNnがチャンクをアップロードするときの転送速度は、そのグループよりもチャンクを取得する順番が1つ遅いグループに属するノードNnがチャンクをダウンロードするときの転送速度となる。従って、チャンクを取得する順番が遅いグループほど、チャンクを1つ取得するのに要する時間が短くなる傾向がある。そのため、チャンクの取得の追いつき現象が発生する。
【0055】
例えば、グループ1がセンターサーバSAからのチャンクXCの取得を完了する前に、グループ2がチャンクXBの取得を完了したとする。グループ1によってチャンクXCはまだ公開されていないので、グループ2は、グループ1からチャンクXCを取得することができない。そこで、グループ2は、グループ1よりも前のグループからチャンクを取得する。ただし、この時点では、センターサーバSAのみがチャンクXCを保存している。そのため、グループ2は、センターサーバSAからチャンクXCを取得する。そうすると、センターサーバSAは、グループ1とグループ2に対して同時にチャンクをアップロードしなければならない。従って、センターサーバSAによるチャンクの転送速度が遅くなる。これにより、グループ1によるチャンクの取得の遅延が増長される。また、グループ2によるチャンクの取得も遅延する。こうした遅延が、各グループにおいて発生する。そして、配信対象となる全てのノードNnによるコンテンツX全体の取得の完了が、計画よりも遅延する。
【0056】
これに対し、コンテンツ分散保存システムSにおいては、各ホルダノードが、リクエストキュー及びリクエスト管理テーブルを用いて、チャンクのアップロードを制御する。ここで、各ノードNnにおいて同時並行してアップロードを行うことができる最大数を、例えば2とする。すると、各ホルダノードは、同時並行してアップロードを行う数が2以下となるように、アップロードを制御する。そして、各ホルダノードは、コンテンツXのリクエスト時刻が早いノードNnほど、優先してアップロードを行う。上記の例においては、チャンクの取得の順番が早いグループほど、リクエスト時刻が早ことになる。従って、チャンクの取得の順番が早いグループは、チャンクの取得の順番が遅いグループが要求してくるチャンクを、先に取得することができる。よって、チャンク取得の追いつき現象の発生が抑止される。その結果、コンテンツの計画的な配信が円滑に行われる。
【0057】
[3.各装置の構成及び機能]
次に、図4及び図5を参照して、各装置の構成及び機能について説明する。図4は、センターサーバSAの概要構成例を示す図である。また、図5は、ノードNnの概要構成例を示す図である。
【0058】
[3.1 センターサーバSAの構成]
センターサーバSAは、図3に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成された制御部11を備えている。また、センターサーバSAは、各種データ及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部12を備えている。更に、センターサーバSAは、ネットワーク8等を通じてノードNnとの間の情報の通信制御を行うための通信部13を備えている。また更に、センターサーバSAは、各種情報を表示するCRT,液晶ディスプレイ等の表示部14を備えている。更にまた、センターサーバSAは、オペレータからの指示を受け付けこの指示に応じた指示信号を制御部11に対して与える入力部15(例えば、キーボード、マウス等)を備えている。そして、制御部11、記憶部12、通信部13、表示部14、及び入力部15はバス16を介して相互に接続されている。
【0059】
記憶部12は、本発明の第4記憶手段の一例を構成する。この記憶部12には、各ノードNnのノードID、IPアドレス及びポート番号等が記憶されている。また、記憶部12には、配信の対象である各チャンクが、チャンクIDに対応付けて記憶されている。また、記憶部12には、リクエストキュー及びリクエスト管理テーブルが記憶されている。更に、記憶部12には、オペレーティングシステム、制御プログラム等の各種プログラムが記憶されている。制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、第2受信手段及びアップロード手段として機能する。
【0060】
[3.2 ノードNnの構成]
各ノードNnは、図5に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部21を備えている。また、各ノードNnは、各種データ及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部22と、受信されたコンテンツのレプリカ等を一時蓄積するバッファメモリ23とを備えている。更に、各ノードNnは、コンテンツのレプリカに含まれるエンコードされたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコードするデコーダ部24を備えている。また更に、各ノードNnは、このデコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部25と、この映像処理部25から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部26と、を備えている。更にまた、各ノードNnは、上記デコードされたオーディオデータをアナログオーディオ信号にD (Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部27と、この音声処理部27から出力されたオーディオ信号を音波として出力するスピーカ28と、を備えている。また更に、各ノードNnは、ネットワーク8を通じて他のノードNn等間の情報の通信制御を行うための通信部29を備えている。更にまた、各ノードNnは、ユーザからの指示を受け付けこの指示に応じた指示信号を制御部21に対して与える入力部30(例えば、キーボード、マウス、或いは、リモコンや操作パネル等)を備えている。そして、制御部21、記憶部22、バッファメモリ23、デコーダ部24、通信部29、及び入力部30はバス31を介して相互に接続されている。
【0061】
記憶部22は、本発明における第1記憶手段、第2記憶手段、及び第3記憶手段の一例を構成する。この記憶部22には、DHTを用いたルーティングテーブル、インデックス情報、及びセンターサーバSAのアドレス情報等が記憶されている。また、記憶部22には、ダウンロードされたチャンクが、チャンクIDに対応付けて記憶されている。また、記憶部22には、リクエストキュー及びリクエスト管理テーブルが記憶されている。更に、記憶部22には、オペレーティングシステム、及び各種プログラム(本発明の情報処理プログラムを含む)が記憶されている。なお、各種プログラムは、例えば、センターサーバSA等からダウンロードされるようにしても良い。また、各種プログラムは、例えば、DVD(Digital Versatile Disc)等の記録媒体に記録されて当該記録媒体からドライブを介して読み込まれるようにしても良い。
【0062】
制御部21は、CPUが記憶部22等に記憶されたプログラムを読み出して実行することにより、送信手段、第1取得手段、公開手段、第1受信手段、制御手段、第2取得手段、及び検索手段として機能する。
【0063】
[4.コンテンツ分散保存システムの動作]
次に、図6乃至図8を参照して、本実施形態におけるコンテンツ分散保存システムSの動作について説明する。図6は、本実施形態におけるユーザノードの制御部21のコンテンツ要求処理における処理例を示すフローチャートである。コンテンツ要求処理は、例えば、ユーザが入力部30を操作して所望のコンテンツを指定し、指定されたコンテンツのコンテンツIDを制御部21が取得したときに開始される。なお、ユーザが所望したコンテンツを、コンテンツCとする。また、コンテンツCを構成する各チャンクをチャンクCi(i=1,2,3・・・Nの何れか)とする。ここで、iは、シーケンス番号である。また、Nは、コンテンツCを構成するチャンクの総数である。
【0064】
先ず、制御部21は、取得したコンテンツIDに対応するコンテンツを構成する各チャンクのシーケンス番号及びチャンクIDを、コンテンツIDに基づいて取得する(ステップS1)。また、制御部21は、取得したチャンクIDの数を計算することにより、チャンクの総数Nを算出する。次いで、制御部21は、シーケンス番号iに1を設定する(ステップS2)。次いで、制御部21は、シーケンス番号iが総数N以下であるか否かを判定する(ステップS3)。このとき、制御部21は、シーケンス番号iが総数N以下である場合には(ステップS3:YES)、チャンクCiのインデックス情報が作業用RAMに保持されているか否かを判定する(ステップS4)。このとき、制御部21は、チャンクCiのインデックス情報が作業用RAMに保持されている場合には(ステップS4:YES)、ステップS5に移行する。一方、制御部21は、チャンクCiのインデックス情報が作業用RAMに保持されていない場合には(ステップS4:NO)、ステップS6に移行する。ステップS5において、制御部21は、前回チャンクCiのホルダノードを検索してから一定時間が経過したか否かを判定する。このとき、制御部21は、前回チャンクCiのホルダノードを検索してから一定時間が経過した場合には(ステップS5:YES)、作業用RAMからインデックス情報を削除して、ステップS6に移行する。一方、制御部21は、一定時間が経過していない場合には(ステップS5:NO)、ステップS9に移行する。なお、ステップS4及びS5の判定処理が存在する理由については後述する。
【0065】
ステップS6において、制御部21は、チャンクCiのホルダノードを検索する。具体的に、制御部21は、チャンクCiのチャンクIDを含む検索メッセージを、ルートノードに向けて送信する。次いで、制御部21は、検索メッセージを送信してから一定時間内に、ルートノードからインデックス情報を受信したか否かを判定する(ステップS7)。このとき、制御部21は、一定時間内にインデックス情報を受信した場合には(ステップS7:YES)、インデックス情報を作業用RAMに保持して(ステップS8)、ステップS9に移行する。一方、制御部21は、一定時間が経過してもインデックス情報を受信しなかった場合には(ステップS7:NO)、ステップS10に移行する。
【0066】
ステップS9において、制御部21は、ホルダノードにチャンクCiを要求する。具体的に、制御部21は、作業用RAMに保持されているインデックス情報のうち任意のインデックス情報を選択する。次いで、制御部21は、選択したインデックス情報に含まれるノード情報が示すホルダノードに、チャンク要求メッセージを送信する。このとき、制御部21は、送信するチャンク要求メッセージに、ユーザノード自身のノード情報、コンテンツCのコンテンツID及びチャンクCiのチャンクIDを設定する。制御部21は、ステップS9の処理を終えると、ステップS12に移行する。
【0067】
一方、ステップS10において、制御部21は、センターサーバSAにチャンクCiを要求する。具体的に、制御部21は、センターサーバSAにチャンク要求メッセージを送信する。このとき、制御部21は、送信するチャンク要求メッセージに、ユーザノード自身のノード情報、コンテンツCのコンテンツID及びチャンクCiのチャンクIDを設定する。次いで、制御部21は、チャンクCiの受信を待っている間、チャンクCiのホルダノードの検索を、所定時間間隔で定期的に実行する(ステップS11)。このときの検索の処理自体は、ステップS6〜S8の処理と同様である。制御部21は、チャンクCiを受信した場合、または、チャンク要求メッセージを送信してから一定時間が経過すると、定期的な検索を終了させて、ステップS12に移行する。
【0068】
ユーザノードは、チャンクCiを保存するチャンク保存ノードが存在しない場合には、センターサーバSAにチャンク要求メッセージを送信する。そのため、センターサーバSAは、ノードNnと比べて、ユーザノードからの要求が集中しやすい。要求が集中すると、センターサーバSAによるチャンクのアップロードが遅くなり、センターサーバSAからのチャンクの取得に失敗する場合がある。ユーザノードがチャンクCiの受信を待っている間に、チャンクCiをセンターサーバSAが他のユーザノードにアップロードしている場合がある。そうすると、チャンクCiを保存するホルダノードが増加する。この場合には、センターサーバSAからのチャンクCiの取得に失敗したときに、ホルダノードからチャンクCiを取得することができる。そして、ユーザノードは、ホルダノードを事前に検索することができていれば、チャンクCiの取得に失敗した後に検索を行う必要がない。そこで、制御部21は、定期的に検索を実行する。なお、制御部21が、定期的な検索の実行によってホルダノードを検索した時点で、このホルダノードにチャンク要求メッセージを送信すると良い。そうすることにより、このままセンターサーバSAからのチャンクCiの受信を待つだけよりも、チャンクCiを早く取得することができる可能性が生じてくる。そして、ユーザノードがチャンクCiを早く取得することにより、ホルダノードが早く増加する。すると、センターサーバSAに対する要求の集中を早く解消することができる。
【0069】
ステップS12において、制御部21は、ホルダノードまたはセンターサーバSAにチャンク要求メッセージを送信してから一定時間内にチャンクCiを受信したか否かを判定する。このとき、制御部21は、一定時間内にチャンクCiを受信した場合には(ステップS12:YES)、受信したチャンクCiを記憶部22に記憶する。そして、制御部21は、パブリッシュメッセージをルートノードに向けて送信する(ステップS13)。これにより、チャンクCiが公開される。次いで、制御部21は、シーケンス番号iに1を加算して(ステップS14)、ステップS3に移行する。
【0070】
一方、制御部21は、一定時間が経過してもチャンクCiを受信しなかった場合には(ステップS12:NO)、チャンク要求メッセージを送信したときに選択したインデックス情報を、作業量RAMから削除する(ステップS15)。つまり、制御部21は、チャンクCiの取得に失敗したホルダノードのインデックス情報を削除する。制御部21は、ステップS15の処理を終えると、ステップS4に移行する。なお、制御部21は、センターサーバSAにチャンク要求メッセージを送信した場合には、ステップS15の処理を実行しないで、ステップS4に移行する。
【0071】
ここで、ステップS4及びS5の判定処理が存在する理由を説明する。ステップS6における検索により、ユーザノードは、複数のホルダノードのインデックス情報を取得することができる場合がある。ユーザノードは、ホルダノードからのチャンクの取得が失敗した場合、別のホルダノードからチャンクの取得を試みる。このとき、別のホルダノードのインデックス情報が作業用RAMに保持されているので、ユーザノードは、再度の検索を行う必要がない。ステップS4の判定は、このような場合を判定するために存在する。一方で、チャンクの取得が何度も失敗するような場合は、この後別のホルダノードに要求しても、チャンクの取得に失敗する可能性がある。この場合、今までに検索されたホルダノードとは異なるホルダノードからチャンクの取得を試みた方が良い場合がある。そのため、ユーザノードは、ホルダノードの検索を再度行う。このとき、前回の検索から或る程度の時間を置いた上で再度検索した方が、前回検索されたホルダノードとは異なるホルダノードが検索される可能性が高くなる。ステップS5の判定は、再度検索を行うまでに一定の時間を置くために存在する。
【0072】
制御部21は、ステップS3〜S15の処理を繰り返すことにより、チャンクC1〜CNを取得する。すると、ステップS3において、制御部21は、シーケンス番号iは総数N以下ではないと判定し(ステップS3:NO)、コンテンツ要求処理を終了させる。
【0073】
図7は、本実施形態におけるホルダノードの制御部21のチャンク要求受信処理における処理例を示すフローチャートである。チャンク要求受信処理は、ホルダノードがユーザノードからチャンク要求メッセージを受信したときに開始される。
【0074】
先ず、制御部21は、受信したチャンク要求メッセージに含まれるノードIDとコンテンツIDとの組をキーとし、これと同じ組を含む情報を、リクエスト管理テーブルから検索する(ステップS21)。次いで、制御部21は、チャンク要求メッセージに含まれるノードIDとコンテンツIDとの組と同じ組を含む情報が検索されたか否かを判定する(ステップS22)。このとき、制御部21は、同じ組を含む情報が検索された場合には(ステップS22:YES)、検索された情報に含まれるリクエスト時刻を、リクエスト時刻Tとしてリクエスト管理テーブルから取得する(ステップS23)。一方、制御部21は、同じ組を含む情報が検索されなかった場合には(ステップS22:NO)、CPUの計時機能から、現在時刻をリクエスト時刻Tとして取得する。そして、制御部21は、チャンク要求メッセージに含まれるノードID及びコンテンツIDと、リクエスト時刻Tとを対応付けて、リクエスト管理テーブルに登録する(ステップS24)。
【0075】
制御部21は、ステップS23またはS24の処理を終えると、ステップS25〜S35において、受信したチャンク要求メッセージが取り出される順番を決定し、リクエストキューにチャンク要求メッセージを格納する。先ず、制御部21は、コンテンツ毎の待機ノード数を計算する(ステップS25)。具体的に、制御部21は、リクエストキューに格納されているコンテンツIDの数を、コンテンツID毎に計算する。コンテンツIDは、実際にはリクエストキューに格納されている各チャンク要求メッセージに含まれている。ここで、制御部21は、今回受信したチャンク要求メッセージが仮にリクエストキューに格納されているものとして、計算を行う。つまり、制御部21は、今回受信したチャンク要求メッセージの分も、待機ノード数の計算に含める。
【0076】
次いで、制御部21は、計算された待機ノード数のうち、今回受信したチャンク要求メッセージに含まれるコンテンツIDに対応する待機ノード数を、待機ノード数Mに設定する(ステップS26)。次いで、制御部21は、順番jにL+1を設定する(ステップS27)。格納数Lは、今回受信したチャンク要求メッセージを除いて、現在リクエストキューに格納されているチャンク要求メッセージの数を示す。リクエストキューには、1番目からL番目までの順番が割り当てられたL個のチャンク要求メッセージが格納されている。1番目のチャンク要求メッセージが、最も先に取り出される。順番jは、今回受信したチャンク要求メッセージが取り出される順番である。今回受信したチャンク要求メッセージが取り出される順番jの初期値として、L+1、すなわち、最後の順番が設定される。
【0077】
次いで、制御部21は、順番jが1番目であるか否かを判定する(ステップS28)。このとき、制御部21は、順番jが1番目ではない場合には(ステップS28:NO)、リクエストキューに格納されているチャンク要求メッセージのうち、j−1番目のチャンク要求メッセージを取得する。j−1番目のチャンク要求メッセージは、取り出される順番が、今回受信したチャンク要求メッセージの順番jよりも1つ早いチャンク要求メッセージである。
【0078】
次いで、制御部21は、j−1番目のチャンク要求メッセージに含まれるコンテンツIDに対応する待機ノード数を、待機ノード数Mj−1に設定する(ステップS29)。待機ノード数Mj−1は、今回受信したチャンク要求メッセージよりも順番が1つ早いチャンク要求メッセージに対応する待機ノード数である。次いで、制御部21は、今回受信したチャンク要求メッセージに対応する待機ノード数Mが、今回受信したチャンク要求メッセージよりも順番が1つ早いチャンク要求メッセージに対応する待機ノード数Mj−1より多いか否かを判定する(ステップS30)。このとき、制御部21は、待機ノード数Mが待機ノード数Mj−1より多い場合には(ステップS30:YES)、順番jから1を減算して(ステップS31)、ステップS28に移行する。これにより、今回受信したチャンク要求メッセージが取得される順番jが1つ繰り上げられる。ステップS29〜S31の処理は、チャンク要求メッセージに対応する待機ノード数に基づいて、リクエストキューにおけるチャンク要求メッセージの順番を入れ替える処理である。
【0079】
一方、制御部21は、待機ノード数Mが待機ノード数Mj−1より多くはない場合には(ステップS30:NO)、待機ノード数Mと待機ノード数Mj−1とが等しいか否かを判定する(ステップS32)。このとき、制御部21は、待機ノード数Mと待機ノード数Mj−1とが等しい場合には(ステップS32:YES)、リクエスト時刻の比較を行う。先ず、制御部21は、j−1番目のチャンク要求メッセージに含まれるノードIDとコンテンツIDとの組と同じ組を含む情報を、リクエスト管理テーブルから検索する。そして、制御部21は、検索された情報に含まれるリクエスト時刻を、リクエスト時刻Tj−1としてリクエスト管理テーブルから取得する(ステップS33)。リクエスト時刻Tj−1は、今回受信したチャンク要求メッセージよりも順番が1つ早いチャンク要求メッセージに対応するリクエスト時刻である。次いで、制御部21は、今回受信したチャンク要求メッセージに対応するリクエスト時刻Tが、順番が1つ早いチャンク要求メッセージに対応するリクエスト時刻Tj−1よりも早いか否かを判定する(ステップS34)。このとき、制御部21は、リクエスト時刻Tがリクエスト時刻Tj−1よりも早い場合には(ステップS34:YES)、ステップS31に移行する。これにより、今回受信したチャンク要求メッセージが取得される順番jが1つ繰り上げられる。ステップS32〜34及びS31の処理は、チャンク要求メッセージに対応するコンテンツのリクエスト時刻に基づいて、リクエストキューにおけるチャンク要求メッセージの順番を入れ替える処理である。
【0080】
一方、制御部21は、リクエスト時刻Tがリクエスト時刻Tj−1よりも早くはない場合には(ステップS34:NO)、ステップS35に移行する。また、制御部21は、ステップS32において待機ノード数Mが待機ノード数Mj−1よりも少ない場合には(ステップS32:NO)、ステップS35に移行する。また、制御部21は、ステップS28において順番jが1番目である場合には(ステップS28:YES)、ステップS35に移行する。
【0081】
ステップS35において、制御部21は、今回受信したチャンク要求メッセージをリクエストキューのj番目に挿入する。具体的に、制御部21は、今回受信されたチャンク要求メッセージに順番が追い越された各チャンク要求メッセージの順番を、それぞれ1つ繰り下げる。また、制御部21は、今回受信したチャンク要求メッセージが取り出される順番が現時点でj番目となるように、このチャンク要求メッセージをリクエストキューに格納する。制御部21は、ステップS35の処理を終えると、チャンク要求受信処理を終了させる。
【0082】
図8は、本実施形態におけるホルダノードの制御部21のチャンク送信処理における処理例を示すフローチャートである。チャンク送信処理は、リクエストキューにチャンク要求メッセージが格納されていない状態で、リクエストキューにチャンク要求メッセージが格納されたときに開始される。
【0083】
先ず、制御部21は、リクエストキューにチャンク要求メッセージが格納されているか否かを判定する(ステップS41)。このとき、制御部21は、リクエストキューにチャンク要求メッセージが格納されている場合には(ステップS41:YES)、リクエストキューから、優先順位が最も高いチャンク要求メッセージを取り出す(ステップS42)。つまり、制御部21は、リクエストキューから、取り出す順番が最も早いチャンク要求メッセージを取り出す。そして、制御部21は、リクエストキューからは、取り出したチャンク要求メッセージを削除する。
【0084】
次いで、制御部21は、ユーザノードにチャンクをアップロードする(ステップS43)。具体的に、制御部21は、取り出したチャンク要求メッセージに含まれるチャンクIDに対応するチャンクを記憶部22から取得する。そして、制御部21は、取り出したチャンク要求メッセージに含まれるノード情報に基づいて、取得したチャンクをアップロードする。このとき、制御部21は、ノード情報に含まれるノードIDに対応するユーザノードにチャンクをアップロードする。制御部21は、アップロードが完了すると、ステップS41に移行する。ステップS41において、制御部21は、リクエストキューにチャンク要求メッセージが格納されていない場合には(ステップS41:NO)、チャンク送信処理を終了させる。
【0085】
以上説明したように、本実施形態によれば、ホルダノードが、受信されたチャンク要求メッセージに含まれるノードIDと、チャンク要求メッセージが受信された時刻を示すリクエスト時刻と、を対応付けて、リクエスト管理テーブルに登録する。ホルダノードは、登録されたリクエスト時刻に基づいて、登録されたノードIDを含むチャンク要求メッセージが受信された時刻が早い順に許可する。また、ユーザノードが、ホルダノードからチャンクを取得して記憶する。また、ユーザノードが、記憶したチャンクについてパブリッシュメッセージを送信する。従って、ホルダノードの処理負荷を軽減することができる。また、各チャンクのアップロードの帯域幅をそれぞれ広く確保することができる。よって、チャンクの取得に要する時間が短くなるので、ユーザノードがチャンクを早く公開することができる。また、コンテンツの要求が早かったユーザノードであるほど、コンテンツを構成する各チャンクを先に取得することができる。よって、コンテンツ全体の取得に要する時間を短縮することができる。また、コンテンツ分散保存システムS全体において、チャンクを公開するまでに要する時間及びコンテンツ全体の取得に要する時間を短縮させることができる。
【0086】
また、ユーザノードが、チャンクID、ノードID及びコンテンツIDを含むチャンク要求メッセージ送信する。また、ホルダノードが、対応付けて登録されたノードID及びコンテンツIDを含むチャンク要求メッセージが受信された時刻が早い順に、チャンクの取得を許可する。従って、ユーザノードが、要求が早かったコンテンツであるほど、そのコンテンツ全体を早く取得することができる。
【0087】
また、ホルダノードが、チャンク要求メッセージが受信されたときに、登録されたリクエスト時刻に基づいて、受信されたチャンク要求メッセージをキューから取り出す順番を決定し、決定した順番に基づいてチャンク要求メッセージをキューに格納する。ホルダノードが、取り出したチャンク要求メッセージに含まれるノードIDが示すユーザノードへ、取り出したチャンク要求メッセージに含まれるチャンクIDが示すチャンクをアップロードする。これらの処理をホルダノードが順次行う。従って、キューを用いることによって、コンテンツを要求した時刻が早いユーザノードの順にチャンクをアップロードすることができる。
【0088】
なお、上記実施形態においては、ユーザノードが、ホルダノードへ送信するチャンク要求メッセージにコンテンツIDを設定していた。しかしながら、チャンク要求メッセージにコンテンツIDを含めなくても良い。チャンク要求メッセージには、チャンクIDが含まれている。取得するチャンクのチャンクIDが特定されれば、そのチャンクを構成するコンテンツは一意に決定される。そこで、ホルダノードが、チャンクIDから、要求されたコンテンツのコンテンツIDを取得すれば良い。例えば、センターサーバSAにおいてコンテンツをチャンクに分割するとき、各チャンクのヘッダ情報中に、元となるコンテンツのコンテンツIDを設定しておく。そして、ヘッダ情報にコンテンツIDが設定された各チャンクが各ノードに分散して保存されていく。チャンク要求メッセージを受信したホルダノードは、チャンク要求メッセージに含まれているチャンクIDから、記憶部22に記憶されているチャンクを特定する。次いで、ホルダノードは、特定したチャンクのヘッダ情報に設定されているコンテンツIDを取得する。これにより、ホルダノードは、取得したコンテンツIDと、チャンク要求メッセージに含まれているノードIDと、リクエスト時刻とを対応付けてリクエスト管理テーブルに登録することができる。また、ホルダノードは、取得したコンテンツIDとチャンク要求メッセージに含まれているノードIDとの組み合わせに対応するリクエスト時刻を、リクエスト管理テーブルから取得することもできる。そして、ホルダノードは、リクエスト管理テーブルに登録されたノードIDに対応付けて登録されたコンテンツIDに対応するコンテンツを要求するチャンク要求メッセージを受信した時刻が早い順にチャンクの取得を許可する。
【0089】
また例えば、センターサーバSAが、コンテンツIDと、コンテンツIDに対応するコンテンツを構成する各チャンクのチャンクIDとを対応付けて示すリストを作成して記憶しても良い。この場合、ホルダノードは、例えば、チャンクIDに対応するコンテンツIDをセンターサーバSAに問い合わせる。具体的に、ホルダノードは、チャンク要求メッセージを受信したとき、チャンク要求メッセージからチャンクIDを取得する。そして、ホルダノードは、取得したチャンクIDを含む問い合わせメッセージをセンターサーバSAに送信する。センターサーバSAは、受信した問い合わせメッセージに含まれるチャンクIDに対応するコンテンツIDをリストから取得して、ホルダノードに送信する。また例えば、コンテンツIDとチャンクIDとを対応付けて示すリストを各ノードNnが記憶しても良い。この場合、例えば、センターサーバSAが、作成したリストを各ノードNnに配信する。
【0090】
また、ホルダノードは、リクエスト管理テーブルにノードIDとリクエスト時刻とを登録して、コンテンツIDは登録しなくても良い。この場合、チャンク要求メッセージを受信したホルダノードは、例えば、チャンク要求メッセージに含まれているノードIDを、リクエスト管理テーブルから検索する。そして、ホルダノードは、チャンク要求メッセージに含まれているノードIDがリクエスト管理テーブルに登録されていない場合に、このノードIDとリクエスト時刻とを対応付けてリクエスト管理テーブルに登録する。この場合、ユーザノードがどのコンテンツを要求したかに関係なく、ホルダノードがコンテンツの要求を受けた時刻が早いユーザノードの順に、チャンクがアップロードされる。
【0091】
また、上記実施形態においては、ユーザノードが、チャンクを取得する際に必要なノード情報、コンテンツID及びチャンクIDを、チャンク要求メッセージに含めてホルダノードに直接送信していた。しかしながら、チャンクを取得する際に必要な情報は、例えば、ルートノードを経由してホルダノードに送信されても良い。例えば、ユーザノードは、ノード情報、コンテンツID及びチャンクIDを含む検索メッセージをルートノードに向けて送信する。ルートノードは、検索メッセージに含まれているチャンクIDに対応するチャンクを保存するホルダノードを選択する。そして、ルートノードは、選択したホルダノードに、チャンクのアップロードを指示する。具体的に、ルートノードは、ホルダノードにチャンク送信指示メッセージを送信する。このとき、ルートノードは、検索メッセージに含まれているノード情報、コンテンツID及びチャンクIDを、チャンク送信指示メッセージに設定する。ホルダノードは、チャンク送信指示メッセージを受信した場合には、チャンク要求メッセージを受信したときと同様の処理を行えば良い。
【0092】
また、ホルダノードは、チャンク要求メッセージをリクエストキューに格納するとき、リクエストキューに格納されるチャンク要求メッセージが取り出される順番を、同一のコンテンツの待機ノード数でソートしても良い。また、ホルダノードは、同一のコンテンツの待機ノード数に基づいて、均等にチャンク要求メッセージが取り出されるようにしても良い。例えば、コンテンツXの待機ノード数が4、コンテンツYの待機ノード数が2、コンテンツZの待機ノード数が1であるとする。この場合、ホルダノードは、X、X、Y、X、X、Y、Zの順番でチャンク要求メッセージが取り出されるように、順番の並べ替えを行う。この場合、同一のコンテンツの間では、リクエスト時刻が早いユーザノードからのチャンク要求メッセージが、先に取り出されるようにする。また、ホルダノードは、同一のコンテンツの待機ノード数を考慮せず、リクエスト時刻のみに基づいて、リクエストキューに対するチャンク要求メッセージの格納を行っても良い。また、ホルダノードは、リクエスト管理テーブルにコンテンツIDが登録されている数が多いコンテンツから優先して、リクエストキューからチャンク要求メッセージが取り出されるようにしても良い。
【0093】
また、上記実施形態においては、ユーザノードは、センターサーバSAにチャンク要求メッセージを送信した場合にのみ、ホルダノードの検索を定期的に行っていた。しかしながら、ユーザノードは、ホルダノードにチャンク要求メッセージを送信した場合にも、検索を定期的に行っても良い。また、ホルダノードは、チャンク要求メッセージを送信したときの定期的な検索を行わなくても良い。また、上記実施形態においては、各ノードNnが、リクエストキュー及びリクエスト管理テーブルを保持し、チャンク要求メッセージに対する上記アップロードの制御を行っていた。しかしながら、一部のノードNnのみが、上記アップロードの制御を行うようにしても良い。
【0094】
また、上記実施形態においては、オーバーレイネットワークに、DHTを利用したピアツーピアネットワークが適用されていたが、これに限られるものではない。例えば、他のピアツーピアシステム、または、オーバーレイネットワークを用いたシステムが適用されても良い。DHTを利用しないピアツーピアシステムとしては、例えば、ハイブリッド型のピアツーピアシステムがある。
【符号の説明】
【0095】
8 ネットワーク
9 オーバーレイネットワーク
21 制御部
22 記憶部
23 バッファメモリ
29 通信部
Nn ノード
SA センターサーバ
S コンテンツ分散保存システム

【特許請求の範囲】
【請求項1】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムであって、
前記ノード装置は、
要求する前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、前記第1識別情報が示す前記分割データを保存するノード装置である保存ノード装置へ前記分割データ毎に送信する送信手段と、
前記送信手段により送信された前記要求情報に含まれる前記第1識別情報が示す前記分割データを前記保存ノード装置から取得する第1取得手段と、
前記第1取得手段により取得された前記分割データを記憶する第1記憶手段と、
前記第1記憶手段により記憶された前記分割データが他の前記ノード装置によって取得されることを可能にする公開手段と、
を備え、
少なくとも1つの前記保存ノード装置は、
他の前記ノード装置から送信された前記要求情報を受信する第1受信手段と、
前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶手段と、
前記第2記憶手段により記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御手段と、
を備えることを特徴とする情報通信システム。
【請求項2】
前記少なくとも1つの保存ノード装置は、
前記第1受信手段により受信された前記要求情報に含まれる前記第1識別情報に基づいて、要求された前記コンテンツを識別する第3識別情報を取得する第2取得手段を更に備え、
前記第2記憶手段は、前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報と、前記第2取得手段により取得された前記第3識別情報と、前記時刻情報とを対応付けて記憶し、
前記制御手段は、前記第2識別情報に対応付けて前記第2記憶手段により記憶された前記第3識別情報が示す前記コンテンツを要求する前記要求情報が受信された時刻が早い順に、前記分割データの取得を許可することを特徴とする請求項1に記載の情報通信システム。
【請求項3】
前記送信手段は、前記第1識別情報と、前記第2識別情報と、要求する前記コンテンツを識別する第3識別情報と、を含む要求情報を、前記第1識別情報が示す前記分割データを保存する前記保存ノード装置へ前記分割データ毎に送信し、
前記第2記憶手段は、前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報及び前記第3識別情報と、前記時刻情報とを対応付けて記憶し、
前記制御手段は、前記第2記憶手段により対応付けて記憶された前記第2識別情報及び前記第3識別情報を含む前記要求情報が受信された時刻が早い順に、前記分割データの取得を許可することを特徴とする請求項1または請求項2に記載の情報通信システム。
【請求項4】
前記少なくとも1つの保存ノード装置は、
前記第1受信手段により受信された前記要求情報が格納されるキューとして、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報が取り出されるキューを記憶する第3記憶手段を更に備え、
前記制御手段は、前記第3記憶手段により記憶された前記キューから前記要求情報を取り出して、取り出した前記要求情報に含まれる前記第2識別情報が示す前記ノード装置へ、取り出した前記要求情報に含まれる前記第1識別情報が示す前記分割データをアップロードする処理を、順次行うことを特徴とする請求項1乃至3の何れか1項に記載の情報通信システム。
【請求項5】
前記制御手段は、前記第1受信手段により前記要求情報が受信されたときに、前記第2記憶手段により記憶された前記時刻情報が示す時刻に基づいて、受信された前記要求情報を前記キューから取り出す順番を決定し、決定した順番に基づいて前記要求情報を前記キューに格納することを特徴とする請求項4に記載の情報通信システム。
【請求項6】
前記ノード装置は、
要求する前記コンテンツを構成する前記分割データを保存する前記保存ノード装置を定期的に検索する検索手段を更に備え、
前記送信手段は、前記検索手段により検索された前記保存ノード装置へ前記要求情報を送信し、
前記公開手段は、前記第1取得手段により前記分割データが取得されたときに、前記分割データが他の前記ノード装置によって取得されることを可能にすることを特徴とする請求項1乃至5の何れか1項に記載の情報通信システム。
【請求項7】
各前記分割データを配信する配信装置を更に備え、
前記配信装置は、
各前記分割データを記憶する第4記憶手段と、
前記ノード装置から送信された前記要求情報を受信する第2受信手段と、
前記第2受信手段により受信された前記要求情報に含まれる前記第1識別情報が示す前記分割データを、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置へアップロードするアップロード手段と、
を備え、
前記検索手段は、前記検索の結果、前記配信装置のみが前記分割データを保存していると判定した場合に、前記検索を定期的に行い、
前記送信手段は、前記検索手段により検索された前記ノード装置または前記配信装置へ前記要求情報を送信し、
前記第1取得手段は、前記要求情報の送信先である前記ノード装置または前記配信装置から前記分割データを取得することを特徴とする請求項6に記載の情報通信システム。
【請求項8】
前記制御手段は、前記分割データの取得を前記ノード装置に待たせている数が多い前記コンテンツから優先して前記分割データの取得を許可し、同一の前記コンテンツを構成する前記分割データを要求した複数の前記ノード装置について、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に前記分割データの取得を許可することを特徴とする請求項1乃至7の何れか1項に記載の情報通信システム。
【請求項9】
前記複数のノード装置に含まれる各前記ノード装置が、前記第1受信手段、前記第2記憶手段、及び前記制御手段を備えることを特徴とする請求項1乃至8の何れか1項に記載の情報通信システム。
【請求項10】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける少なくとも1つの前記ノード装置であって、
要求された前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、他の前記ノード装置から受信する第1受信手段と、
前記第1受信手段により受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶手段と、
前記第2記憶手段により記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御手段と、
を備えることを特徴とするノード装置。
【請求項11】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける情報処理方法であって、
前記ノード装置が、要求する前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、前記第1識別情報が示す前記分割データを保存するノード装置である保存ノード装置へ前記分割データ毎に送信する送信ステップと、
前記ノード装置が、前記送信ステップにおいて送信された前記要求情報に含まれる前記第1識別情報が示す前記分割データを前記保存ノード装置から取得する取得ステップと、
前記ノード装置が、前記取得ステップにおいて取得された前記分割データを記憶する第1記憶ステップと、
前記ノード装置が、前記第1記憶ステップにおいて記憶された前記分割データが他の前記ノード装置によって取得されることを可能にする公開ステップと、
少なくとも1つの前記保存ノード装置が、他の前記ノード装置から送信された前記要求情報を受信する第1受信ステップと、
前記少なくとも1つの保存ノード装置が、前記第1受信ステップにおいて受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶ステップと、
前記少なくとも1つの保存ノード装置が、前記第2記憶ステップにおいて記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御ステップと、
を含むことを特徴とする情報処理方法。
【請求項12】
ネットワークに接続する複数のノード装置を備え、前記複数のノード装置に分散保存されるコンテンツが複数の分割データに分割されており、前記分割データを保存した前記ノード装置から他の前記ノード装置が前記分割データを取得する情報通信システムにおける少なくとも1つの前記ノード装置に含まれるコンピュータに、
要求された前記コンテンツを構成する前記分割データを識別する第1識別情報と、前記コンテンツを要求する前記ノード装置を識別する第2識別情報と、を含む要求情報を、他の前記ノード装置から受信する第1受信ステップと、
前記第1受信ステップにおいて受信された前記要求情報に含まれる前記第2識別情報と、前記要求情報が受信された時刻を示す時刻情報と、を対応付けて記憶する第2記憶ステップと、
前記第2記憶ステップにおいて記憶された前記時刻情報に基づいて、前記第2記憶手段により記憶された前記第2識別情報を含む前記要求情報が受信された時刻が早い順に、前記要求情報に含まれる前記第2識別情報が示す前記ノード装置に、前記要求情報に含まれる前記第1識別情報が示す前記分割データの取得を許可し、前記コンテンツを要求した前記ノード装置が前記分割データを取得することを、取得する順番が来るまで待たせる制御ステップと、
を実行させることを特徴とする情報処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−233021(P2011−233021A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2010−104077(P2010−104077)
【出願日】平成22年4月28日(2010.4.28)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】