[1.情報通信システムSの構成等]
まず始めに、図1を参照して、本発明の一実施形態に係る情報通信システムの概要について説明する。図1は、本実施形態に係る情報通信システムの情報処理装置及び複数のノード装置の接続態様の一例を示す図である。
図1の下部枠51内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4、DSL(Digital Subscriber Line)回線事業者の装置5、FTTH(Fiber To The Home)回線事業者の装置6、及び通信回線7等によって、インターネット等のネットワーク(現実世界のネットワーク)8が構築されている。通信回線7として、例えば、電話回線や光ケーブル等がある。
情報通信システムSは、コンテンツデータを配信するためのシステムである。図1の上部枠50内に示すように、情報処理装置1と、ネットワーク8を介して相互に接続された複数のノード装置2a,2b,2c,2d,・・・とを備えて、情報通信システムSは構成される。これらの装置には、各装置を示す情報としての固有の製造番号及びネットワークアドレスが割り当てられている。固有の製造番号とは、例えば、MACアドレスである。なお、製造番号及びネットワークアドレスは、複数の装置間で重複しないものである。ネットワーク8がインターネットの場合、ネットワークアドレスは、IP(Internet Protocol)アドレスなどである。また、以下の説明において、ノード装置2a,2b,2c,2d,・・のうちいずれかのノード装置又は全てのノード装置を示す場合には、便宜上、ノード装置2という場合がある。また、コンテンツデータは、例えば、映画データ(ビデオデータ)、音楽データ、文書データなどである。
本実施形態の情報通信システムSにおいては、図1の上部枠50内に示すような、オーバーレイネットワーク9が構築される。つまり、このオーバーレイネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するネットワークを意味している。オーバーレイネットワーク9は、複数のノード装置2a,2b,2c,2d,・・・から形成される、所謂P2Pネットワークである。各ノード装置2には固有の識別情報がそれぞれ割り当てられている。この識別情報は、例えば、ノード装置2のMACアドレス又はネットワークアドレスを所定のハッシュ関数でハッシュ化して生成される。以下、この識別情報を「ノードID」と呼ぶ。ノードIDは、例えば、16桁の4進数で表現される。
情報通信システムSでは、情報処理装置1からノード装置2にコンテンツデータが投入され、その後、ノード装置2間でコンテンツデータが送信される。なお、以下においては、投入されるコンテンツデータを「投入コンテンツデータ」とも呼ぶ。
情報処理装置1は、コンテンツデータをノード装置2へ投入するとき、この投入コンテンツデータのコンテンツIDを生成する。さらに、情報処理装置1は、投入コンテンツデータの名称などと関連づけて、これらの情報を含むメタ情報ファイルを生成する。投入コンテンツデータの名称を以下、「コンテンツ名」と呼ぶ。また、情報処理装置1は、コンテンツデータを所定のデータ量のセグメントに順次分割して複数の分割コンテンツデータを生成する。また、情報処理装置1は、これらの分割コンテンツデータをそれぞれ所定のハッシュ関数でハッシュ化してハッシュ値を求め、さらに、複数の分割コンテンツデータそれぞれの固有の識別情報であるキャッシュIDを生成する。情報処理装置1は、生成した複数のキャッシュIDを、それぞれ対応する分割コンテンツデータのヘッダ情報に追加する。また、情報処理装置1は、各分割コンテンツデータのキャッシュIDとそのハッシュ値とを関連づけてメタ情報ファイルに追加する。さらに、情報処理装置1は、投入コンテンツデータのコンテンツIDと各分割コンテンツデータのキャッシュIDとを含むコンテンツ構成情報を生成する。
情報処理装置1は、メタ情報ファイルに署名を入れてカタログ情報に追加する。さらに情報処理装置1は、各ノード装置2へカタログ情報を送信して配布する。これにより、各ノード装置2は、新たな投入コンテンツデータがあることを把握することができる。
投入コンテンツデータを取得しようとするノード装置2は、コンテンツIDに基づき、投入コンテンツデータのコンテンツ構成情報を記憶しているノード装置2を検索する。このようにコンテンツ構成情報を記憶しているノード装置2を以下、「第1ホルダノード」と呼ぶ。なお、このように投入コンテンツデータのコンテンツ構成情報を取得しようとするノード装置2を「第1リクエスタ」ともいう。また、本実施形態では、コンテンツIDと所定の関係を有するノードIDのノード装置2がそのコンテンツIDに対応する投入コンテンツデータのコンテンツ構成情報を記憶する第1ホルダノードのネットワークアドレスを記憶しているノード装置2とする。以下、このように第1ホルダノードのネットワークアドレスを記憶しているノード装置2を「第1ルートノード」と呼ぶ。なお、コンテンツIDと所定の関係を有するノードIDのノード装置2を、例えば、コンテンツIDに最も近いノードIDのノード装置2とすることができる。コンテンツIDに最も近いノードIDとは、例えば、その値がコンテンツIDを超えず、コンテンツIDと上位桁がより多く一致するノードIDである。
いずれのノード装置2も情報処理装置1から投入コンテンツデータのコンテンツ構成情報を取得していないとき、第1ホルダノードは存在しない。そのため、第1ルートノードも第1ホルダノードのネットワークアドレスを記憶していない。従って、投入コンテンツデータのコンテンツ構成情報を最初に検索したノード装置2は、他のノード装置2からコンテンツ構成情報を取得できない。このとき、コンテンツ構成情報を最初に検索したノード装置2は、情報処理装置1へコンテンツ構成情報の送信要求を行う。この送信要求は、投入コンテンツデータのコンテンツIDに基づいて行われる。
情報処理装置1は、第1リクエスタであるノード装置2から、コンテンツ構成情報の送信要求があると、要求に応じたコンテンツ構成情報を、第1リクエスタであるノード装置2へ送信する。第1リクエスタであるノード装置2は、コンテンツ構成情報を取得すると、第1ホルダノードとして、第1ルートノードに対して登録メッセージを送信する。この登録メッセージは、コンテンツIDとネットワークアドレスとを含む情報である。上記登録メッセージに含まれるコンテンツIDは、取得したコンテンツ構成情報に対応する投入コンテンツデータのコンテンツIDである。上記登録メッセージに含まれるネットワークアドレスは、第1ホルダノードであるノード装置2のネットワークアドレスである。これにより、第1ルートノードは、第1ホルダノードのネットワークアドレスを取得することができる。以後、第1ルートノードは、第1リクエスタから要求があると第1ホルダノードのネットワークアドレスを第1リクエスタへ送信する。従って、情報処理装置1からノード装置2がコンテンツ構成情報を取得した後は、ノード装置2同士でコンテンツ構成情報の送受信が行われる。但し、この場合であっても、第1リクエスタが第1ホルダノードからコンテンツ構成情報を取得できないようなときには、第1リクエスタが情報処理装置1へこのコンテンツ構成情報の送信要求を行う。
さらに、ノード装置2は、コンテンツ構成情報を取得すると、このコンテンツ構成情報に含まれる複数のキャッシュIDのうち最初の分割コンテンツデータのキャッシュIDを読み出す。そして、このノード装置2は、読み出したキャッシュIDに基づき、最初の分割コンテンツデータを記憶しているノード装置2を検索する。以下、このように投入コンテンツデータの分割コンテンツデータを取得しようとするノード装置2を、「第2リクエスタ」と呼ぶ。また、最初の分割コンテンツデータを記憶しているノード装置2を、「第2ホルダノード」と呼ぶ。なお、本実施形態では、キャッシュIDと所定の関係を有するノードIDのノード装置2がそのキャッシュIDの分割コンテンツデータを記憶する第2ホルダノードのネットワークアドレスを記憶しているノード装置2とする。このように第2ホルダノードのネットワークアドレスを記憶しているノード装置2を以下、「第2ルートノード」と呼ぶ。なお、キャッシュIDと所定の関係を有するノードIDのノード装置2を、例えば、キャッシュIDに最も近いノードIDのノード装置2とすることができる。キャッシュIDに最も近いノードIDとは、例えば、その値がキャッシュIDを超えず、キャッシュIDと上位桁がより多く一致するノードIDである。
いずれのノード装置2も情報処理装置1から最初の分割コンテンツデータを取得していないときには、最初の分割コンテンツデータを記憶する第2ホルダノードは存在していない。そのため、最初の分割コンテンツデータの第2ルートノードも第2ホルダノードのネットワークアドレスを記憶していない。従って、最初の分割コンテンツデータを最初に検索した第2リクエスタであるノード装置2は、他のノード装置2から最初の分割コンテンツデータを取得できない。このとき、第2リクエスタは、情報処理装置1へ最初の分割コンテンツデータの送信要求を行う。
情報処理装置1は、第2リクエスタであるノード装置2から、最初の分割コンテンツデータの送信要求があると、要求された最初の分割コンテンツデータを、第2リクエスタへ送信する。第2リクエスタであるノード装置2は、投入コンテンツデータの最初の分割コンテンツデータを取得すると、第2ホルダノードとして、第2ルートノードに対して登録メッセージを送信する。この登録メッセージは、最初の分割コンテンツデータのキャッシュIDと第2リクエスタであるノード装置2のネットワークアドレスを含む情報である。これにより、最初の分割コンテンツデータの第2ルートノードは、第2ホルダノードのネットワークアドレスを取得することができる。以後、第2ルートノードは、第2リクエスタから要求があると第2ホルダノードのネットワークアドレスを第2リクエスタへ送信する。従って、情報処理装置1からノード装置2が最初の分割コンテンツデータを取得した後は、ノード装置2同士で最初の分割コンテンツデータの送受信が行われる。但し、この場合であっても、第2リクエスタが第2ホルダノードから最初の分割コンテンツデータを取得できないようなときには、第2リクエスタが情報処理装置1へこの最初の分割コンテンツデータの送信要求を行う。
第2リクエスタであるノード装置2は、最初の分割コンテンツデータを取得すると、この分割コンテンツデータを情報処理装置1と同じハッシュ関数でハッシュ化する。そして、ノード装置2は、このように演算したハッシュ値と、カタログ情報に含まれる最初の分割コンテンツデータのキャッシュIDに対応するハッシュ値とが一致するか否かを確認する。ハッシュ値が一致すると、最初の分割コンテンツデータを正常に受信したと判定して、登録メッセージを送信する。一方、ハッシュ値が一致しないとき、最初の分割コンテンツデータが正常に受信できていないと判定して、再度最初の分割コンテンツデータを記憶する第2ホルダノードを検索する。
最初の分割コンテンツデータ以降の次のセグメントの分割コンテンツデータも同様に、キャッシュIDに基づいてノード装置2により情報処理装置1から取得される。ノード装置2で取得された分割コンテンツデータは、その後、ノード装置2同士で送受信される。また、最初の分割コンテンツデータ以降の次のセグメントの分割コンテンツデータのハッシュ値も同様に、各ノード装置2においてカタログ情報から取得して分割コンテンツデータが正常に受信できたか否かが判断される。
[2.ノード装置2によるコンテンツデータの投入]
情報処理装置1が投入するコンテンツデータは、任意のノード装置2から情報処理装置1へ送信される。すなわち、ノード装置2は、コンテンツデータの提供装置として、情報処理装置1へコンテンツデータの投入要求を行い、情報処理装置1は投入要求が行われたコンテンツデータの投入処理を上述のように行う。これにより、投入コンテンツデータはノード装置2間で送受信可能な状態となる。
さらに、本実施形態の情報通信システムSでは、コンテンツデータの投入処理を情報処理装置1のみならず、予め認定されたノード装置2でも行うことができるようにしている。以下、このように予め認定されたノード装置2を「認定ノード装置2」とも呼ぶ。
ノード装置2は、コンテンツデータを投入しようとするとき、まず、情報処理装置1に対して、コンテンツデータの投入要求を行う。
情報処理装置1は、ノード装置2からコンテンツデータの投入要求を受け付けたとき、上述したようにP2Pネットワークにコンテンツデータを投入する。しかし、情報処理装置1の稼働状況が所定以上あるとき、情報処理装置1は、ノード装置2に対してコンテンツデータの投入許可要求を行うように要求する。
情報処理装置1の稼働状況とは、情報処理装置1のCPUの稼働率である。具体的には、情報処理装置1の稼働状況は、コンテンツデータの投入処理に伴って稼働するCPUの負荷状態を意味する。情報処理装置1は、コンテンツデータの投入要求を受け付けたとき、CPUの負荷の大きさが所定閾値以下であれば、投入要求を受け付けたコンテンツデータの投入を許可する。その後、情報処理装置1は、ノード装置2からのコンテンツデータのアップロードを受け付ける。一方、情報処理装置1は、CPUの負荷の大きさが所定閾値を超えているとき、投入要求を受け付けたコンテンツデータの投入を許可しない。例えば、情報処理装置1は、すでにコンテンツ投入処理をしているときに、投入要求を受け付けたとき、投入処理の負荷の大きさが所定閾値を超えていると判定する。このとき、情報処理装置1は、ノード装置2に対してコンテンツデータの投入許可要求を行うように要求する。なお、情報処理装置1は、所定数のコンテンツデータに対するコンテンツ投入処理をしているときに、投入要求を受け付けたとき、投入処理の負荷の大きさが所定閾値を超えていると判定することもできる。また、情報処理装置1は、CPUの負荷状態が、例えば70%を超えているときに、投入要求を受け付けたとき、投入処理の負荷の大きさが所定閾値を超えていると判定することもできる。
ノード装置2は、コンテンツデータの投入許可要求を行うように要求されると、コンテンツ情報と、認証情報とを情報処理装置1へ送信する。上記コンテンツ情報は、投入したいコンテンツデータのコンテンツ情報である。上記認証情報は、認定されているノード装置2であることを証明する認証情報である。
ここで、コンテンツ情報には、コンテンツ名と、コンテンツデータのファイルサイズと、コンテンツデータのハッシュ値とが含まれる。また、認証情報には、ノード装置2の証明書情報、MACアドレス及びネットワークアドレスが含まれる。
情報処理装置1は、ノード装置2からコンテンツ情報と認証情報とを受信すると、認証情報をチェックする。情報処理装置1は認定ノード装置2の認証情報を記憶手段に記憶している。そして、情報処理装置1は、記憶手段に記憶されている認証情報の中に、ノード装置2から受信した認証情報があるか否かを確認する。記憶手段に記憶されている認証情報の中に受信した認証情報と一致するものがあると、情報処理装置1は、ノード装置2が認定ノード装置2であると判定する。そして、情報処理装置1は、ノード装置2が認定ノード装置2であるとき、ノード装置2によるコンテンツデータの投入を許可する。
ノード装置2は、情報処理装置1から当該ノード装置2によるコンテンツデータの投入が許可されたとき、当該ノード装置2がコンテンツデータの投入機能があるか否かを判定する。コンテンツデータの投入機能がない場合、ノード装置2は、情報処理装置1に対して投入機能があるノード装置2を問い合わせる。情報処理装置1は、投入機能があるノード装置2の情報を有しており、ノード装置2からの問い合わせに対して、投入機能があるノード装置2のネットワークアドレスを送信する。ノード装置2は、投入機能があるノード装置2のネットワークアドレスを受信すると、この投入機能があるノード装置2に対して、コンテンツデータを送信する。
投入機能があるノード装置2は、このように他のノード装置2が送信したコンテンツデータを受信すると、コンテンツ投入処理を行って、P2Pネットワークへコンテンツデータを投入する。また、情報処理装置1からノード装置によるコンテンツデータの投入が許可されたノード装置2において、コンテンツ投入機能がある場合も同様に、コンテンツデータの投入処理を行って、P2Pネットワークへコンテンツデータを投入する。
ここで、コンテンツデータの投入処理について具体的に説明する。コンテンツデータの投入処理は、情報処理装置1と認定ノード装置2とが協働して行う。そして、コンテンツデータの投入処理が完了するまで、情報処理装置1と認定ノード装置2とは1つのセッションを維持する。なお、コンテンツデータの投入要求を行った認定ノード装置2に投入機能があり、かつ、コンテンツデータの投入が許可されたときには、コンテンツデータの投入要求の時点から情報処理装置1と認定ノード装置2とは1つのセッションを維持する。
図2に示すように、コンテンツデータの投入処理を行うノード装置2は、投入コンテンツデータを所定のデータ量のセグメントに順次分割して複数の分割コンテンツデータを生成する。さらに、ノード装置2は、これらの分割コンテンツデータをそれぞれ所定のハッシュ関数でハッシュ化してハッシュ値を求める。ノード装置2は、このように求めたハッシュ値を情報処理装置1へ送信する。
投入コンテンツデータの分割コンテンツデータのハッシュ値を受信した情報処理装置1は、各ハッシュ値に対する固有の識別情報を生成する。以下、この識別情報を「キャッシュID」と呼ぶ。情報処理装置1は、予め投入コンテンツデータのコンテンツIDを含むメタ情報ファイルを生成している。情報処理装置1は、各分割コンテンツデータに対応するキャッシュIDとハッシュ値とを関連づけてメタ情報ファイルに追加する。また、情報処理装置1は、各分割コンテンツデータのキャッシュIDをコンテンツデータの投入処理を行っているノード装置2へ送信する。ノード装置2は、キャッシュIDを受信すると、このキャッシュIDを、それぞれ対応する分割コンテンツデータのヘッダ情報に追加する。ノード装置2は、すべての分割コンテンツデータのヘッダ情報にキャッシュIDを追加すると、投入準備完了メッセージを情報処理装置1へ送信する。
図3に示すように、情報処理装置1は、ノード装置2から投入準備完了メッセージを受信すると、投入コンテンツデータのコンテンツIDをコンテンツデータの投入処理を行ったノード装置2へ送信する。また、情報処理装置1は、投入コンテンツデータのコンテンツIDとメタ情報ファイルをカタログ情報に追加して、各ノード装置2へ送信して配布する。さらに、情報処理装置1は、コンテンツIDと各分割コンテンツデータのキャッシュIDとを含むコンテンツ構成情報を生成する。
ノード装置2は、投入コンテンツデータのコンテンツIDを受信すると、このコンテンツIDを含む登録メッセージをネットワーク8へ送信する。これにより、コンテンツ投入処理が終了する。
以上のように、本実施形態に係るノード装置2では、情報処理装置1による処理負荷が大きいときであっても、コンテンツデータを投入することができる。これにより、コンテンツデータの投入を迅速に行うことができる。以下、情報処理装置1及びノード装置2の具体的構成及び動作の一例について説明する。
[3.情報処理装置1の具体的構成及び動作の説明]
まず、情報処理装置1の具体的構成及び動作の一例について説明する。
(情報処理装置1の構成について)
まず、情報処理装置1の具体的構成について説明する。図4は、本実施形態の情報通信システムSに係る情報処理装置1の構成を示す図である。
情報処理装置1は、一般のサーバコンピュータを適用可能である。図4に示すように、情報処理装置1は、制御部11と、記憶部12と、通信部13と、操作部14とを備えている。制御部11と、記憶部12と、通信部13と、操作部14とは、システムバス15を介して相互に接続されている。制御部11は、情報処理装置1全体を制御する。記憶部12は、各種情報を記憶する記憶領域を有する書き換え可能な記憶装置である。通信部13は、ノード装置2と通信するための通信インターインターフェイスである。操作部14は、各種設定入力を行うための操作部である。
制御部11は、CPU(Central Processing Unit)、内部メモリなどから構成される。この内部メモリには、ノード装置2との間でのコンテンツデータやその他のメッセージを送受信するための情報処理プログラムが格納されている。CPUは内部メモリに記憶されている情報処理プログラムを読み出して実行することによって、取得手段と、加工手段、負荷検出手段、判定手段、許可手段、送信手段等として機能する。なお、この情報処理プログラムは、例えば、ネットワーク8に接続された他のサーバから、通信部13を介して、制御部11の内部メモリにダウンロードされるようにしてもよい。また、この情報処理プログラムは、CD−ROM等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部11の内部メモリに読み込まれるようにしてもよい。
記憶部12は、コンテンツデータをノード装置2からP2Pネットワークへ投入することができるノード装置2の認証情報や投入機能を有するノード装置2のネットワークアドレスなどを記憶する。
(情報処理装置1の具体的動作について)
以上のように構成された情報処理装置1の動作を図面を参照して具体的に説明する。なお、以下の各処理は、情報処理装置1の制御部11が上述した各手段等として機能することによって実行されるものである。
情報処理装置1においてメイン電源スイッチ(図示せず)がONされたときやリセットスイッチ(図示せず)が操作されたとき、情報処理装置としての処理を開始する。このとき、制御部11のCPUは、内部メモリに記憶した情報処理プログラムを実行状態として、制御部11としての機能を動作状態する。
まず、制御部11は、図5に示すように、通信部13を介してノード装置2からコンテンツデータの投入要求を受け付けたか否かを判定する(ステップS10)。コンテンツデータの投入要求を受け付けたと判定すると(ステップS10:YES)、制御部11は、投入要求処理を実行する(ステップS11)。この投入要求処理は、図6に示すステップS20〜S25の処理であり、後で詳述する。
ステップS11の処理が終了したとき、又は、コンテンツデータの投入要求を受け付けていないと判定したとき(ステップS10:NO)、制御部11は、通信部13を介してノード装置2からコンテンツデータの投入許可要求を受け付けたか否かを判定する(ステップS12)。
コンテンツデータの投入許可要求を受け付けたと判定すると(ステップS12:YES)、制御部11は、投入許可要求処理を実行する(ステップS13)。この投入許可要求処理は、図7に示すステップS30〜S44の処理であり、後で詳述する。コンテンツデータの投入許可要求には、認証情報とコンテンツ情報とが含まれており、制御部11は、この認証情報とコンテンツ情報を記憶部12に記憶する。
ステップS13の処理が終了したとき、又は、コンテンツデータの投入許可要求を受け付けていないと判定したとき(ステップS12:NO)、制御部11は、ノード装置2から、通信部13を介して投入機能があるノード装置の問い合わせを受け付けたか否かを判定する(ステップS14)。
投入機能があるノード装置の問い合わせを受け付けたと判定すると(ステップS14:YES)、制御部11は、各ノード装置2に対して、投入機能があるか否かの情報の送信を通信部13を介して要求する。ノード装置2は、投入機能があるときには、情報処理装置1に対してその旨の通知を行う。これにより、制御部11は、投入機能があるノード装置2のネットワークアドレスを通信部13を介して取得する。制御部11は、取得したネットワークアドレスの情報を問い合わせ元のノード装置2へ通信部13を介して送信する(ステップS15)。なお、予め投入機能を持つノード装置のネットワークアドレスの情報を記憶部12に記憶するようにしてもよい。この場合、制御部11は、投入機能があるノード装置の問い合わせを受けたと判定すると、投入機能があるノード装置のネットワークアドレスの情報を記憶部12から読み出し、このネットワークアドレスの情報を問い合わせ元のノード装置2へ通信部13を介して送信することになる。投入機能があるノード装置の問い合わせは、後述するように、情報処理装置1によりコンテンツデータの投入が許可されないノード装置2から行われるものである。このように、制御部11は、情報処理装置1によりコンテンツデータの投入が許可されないノード装置2から取得した認証情報が記憶部12に記憶した認証情報と一致するか否かを判定する。制御部11は、認証情報が一致するとき、このノード装置2へ投入機能を有するノード装置2の情報を通信部13を介して送信する送信手段として機能する。
ステップS15の処理が終了したとき、又は、投入機能があるノード装置の問い合わせを受け付けていないと判定したとき(ステップS14:NO)、制御部11は、メイン処理の終了指示を検出したか否かを判定する(ステップS16)。例えば、情報処理装置1の電源がOFF状態へ移行したとき、制御部11は、終了指示を検知する。制御部11は、終了指示を検知したと判定すると(ステップS16:Yes)、メイン処理を終了し、一方、終了指示を検知していないと判定すると(ステップS16:No)、ステップS10からの処理を繰り返す。
本実施形態では、投入機能を持たせるノード装置2を、情報通信システムSを構成する複数のノード装置2のうち予め認証された一部のノード装置2としている。これは、情報通信システムSを構成するノード装置2の全てに投入機能を持たせると、コンテンツデータを不正に投入するノード装置2がでてくる可能性が高くなるためである。このように、投入機能を持たせるノード装置2は、情報通信システムSを構成する複数のノード装置2のうち予め認証された一部のノード装置2に限定することにより、不正にコンテンツデータを投入することを防止している。
次に、図5に示すステップS11で実行される投入要求処理について図6のフローチャートを参照して具体的に説明する。
図6に示すように、投入要求処理を開始すると、制御部11は、稼働情報を取得する(ステップS20)。稼働情報とは、情報処理装置1の稼働状況の情報であり、コンテンツデータの投入処理を行うために稼働するCPUにかかる負荷状態の情報である。ここでは、コンテンツデータの投入処理により生じるCPUの稼働率を稼働情報としているが、コンテンツデータの投入処理状態に応じた情報であればよい。また、稼働情報は、コンツデータの投入処理により生じるもの以外を含めたCPUの稼働率としてもよい。また、CPUの稼働率ではなく、通信部13とネットワーク8との間の通信帯域に対する使用帯域の割合を、稼働情報としてもよい。
次に、制御部11は、稼働情報が予め設定した上限値(閾値)を超えているか否かを判定する(ステップS21)。このように、制御部11は、ネットワークを介してノード装置2から、コンテンツデータの投入要求を受け付けたとき、コンテンツデータ投入処理の負荷の大きさが所定閾値以下であるか否かを判定する判定手段として機能する。なお、本実施形態では、判定手段は、コンテンツデータ投入処理が実行されているときに、投入要求を受け付けたとき、投入処理の負荷の大きさが所定閾値以下ではないと判定する。
ステップS21の処理において、稼働情報が予め設定した上限値を超えていると判定すると(ステップS21:YES)、制御部11は、投入要求を行ったノード装置2に対して、通信部13を介し、コンテンツデータの投入許可要求を行うように要求して(ステップS22)、投入要求処理を終了する。
一方、稼働情報が予め設定した上限値以下であると判定すると(ステップS21:NO)、制御部11は、投入要求を行ったノード装置2へ通信部13を介してコンテンツデータのアップロード要求を行う(ステップS23)。その後、制御部11は、このアップロード要求に対して、ノード装置2から送信されるコンテンツデータ及びコンテンツ情報を通信部13を介して取得し、記憶部12に記憶して保存する(ステップS24)。制御部11は、取得したコンテンツデータを所定のハッシュ関数でハッシュ化して求めたコンテンツデータのハッシュ値とコンテンツ情報に含まれるハッシュ値とが一致するか否かを判定する。ハッシュ値が一致するとき、制御部11は、コンテンツデータを記憶部12に記憶して保存する。一方、ハッシュ値が一致しないと判定すると、制御部11は、ノード装置2に対して再度コンテンツデータをアップロードするように要求する。なお、このとき、制御部11は、ノード装置2アップロードを要求せずに、アップロードエラーをノード装置2へ通信部13を介して送信するようにしてもよい。このように、制御部11は、通信部13を介して、コンテンツデータを提供するノード装置2から、コンテンツデータを取得する取得手段として機能する。
ステップS24の処理が終了すると、制御部11は、記憶部12に記憶したコンテンツデータの投入処理を行う(ステップS25)。コンテンツデータの投入処理は、次のように行われる。なお、この処理を終了すると、制御部11は、投入要求処理を終了する。
まず、制御部11は、ノード装置2から取得した投入コンテンツデータを所定のデータ量のセグメントに順次分割して複数の分割コンテンツデータを生成する。次に、制御部11は、各分割コンテンツデータのキャッシュIDを生成する。制御部11は、この生成した複数のキャッシュIDを、それぞれ対応する分割コンテンツデータのヘッダ情報に追加する。このように制御部11は、取得したコンテンツデータを複数のノード装置2間で送受信可能に加工する加工手段として機能する。また、制御部11は、これらの分割コンテンツデータをそれぞれ所定のハッシュ関数でハッシュ化してハッシュ値を求める。さらに、制御部11は、投入コンテンツデータのコンテンツ名を含むメタ情報ファイルを生成し、その後、各分割コンテンツデータのキャッシュIDとそのハッシュ値とを関連づけたメタ情報ファイルに追加する。そして、このメタ情報ファイルに署名を入れてカタログ情報に追加する。そして、制御部11は、投入コンテンツデータのカタログ情報に各ノード装置2へ通信部13を介して送信して配布する。また、制御部11は、投入コンテンツデータのコンテンツIDと各分割コンテンツデータのキャッシュIDとを含むコンテンツ構成情報を生成する。
ステップS21において、稼働情報が予め設定した上限値を超えていると判定すると(ステップS21:YES)、制御部11は、投入要求を行ったノード装置2に対して、コンテンツデータの投入許可要求を行うように通信部13を介して要求する(ステップS22)。この処理を終了すると、制御部11は、投入要求処理を終了する。このように、制御部11は、コンテンツデータ投入処理の負荷の大きさが所定閾値以下であると判定されたとき、投入要求を受け付けたコンテンツデータの投入を許可する許可手段として機能する。一方、コンテンツデータ投入処理の負荷の大きさが所定閾値以下であると判定されなかったとき、制御部11は、投入要求を受け付けたコンテンツデータの投入を許可しない許可手段として機能する。
なお、本実施形態では、制御部11は、コンテンツ投入処理が実行されているときに、投入要求を受け付けたとき、投入処理の負荷の大きさが所定閾値以下ではないと判定することとしているが、これに限られず、CPUなどの性能に応じて適宜設定される。
次に、図5に示すステップS13で実行される投入許可要求処理について図7のフローチャートを参照して具体的に説明する。
図7に示すように、投入許可要求処理を開始すると、制御部11は、認証処理を開始する(ステップS30)。この認証処理は、図8に示すステップS50〜S53の処理であり、後で詳述する。
次に、制御部11は、ステップS30で行った認証処理において、認証が成功したか否かを判定する(ステップS31)。この処理において、制御部11は、内部メモリに認証失敗のフラグがたっているときには、認証成功していないと判定する。認証が成功したと判定すると(ステップS31:YES)、制御部11は、投入コンテンツデータのコンテンツIDを生成して記憶部12に記憶する。また、制御部11は、投入コンテンツデータのコンテンツIDを含むメタ情報ファイルを作成する(ステップS32)。次に、制御部11は、投入許可要求を行ったノード装置2に対して、通信部13を介して投入許可メッセージを送信して、投入許可要求を行ったノード装置2に投入許可を通知する(ステップS33)。以下、投入許可要求を行ったノード装置2を「要求ノード装置2」と呼ぶ。
その後、制御部11は、投入コンテンツデータにおける分割コンテンツデータのハッシュ値を要求ノード装置2から受信したか否かを判定する(ステップS34)。この処理において、ハッシュ値を受信したと判定すると(ステップS34:YES)、制御部11は、受信したハッシュ値を記憶部12に記憶し、このハッシュ値固有の識別情報であるキャッシュIDを生成する(ステップS35)。さらに、制御部11は、受信したハッシュ値と生成したキャッシュIDとを関連づけてメタ情報ファイルへ追加して、記憶部12に記憶する(ステップS36)。その後、制御部11は、生成したキャッシュIDを要求ノード装置2へ通信部13を介して送信する(ステップS37)。
ステップS37の処理が終了したとき、又は、ステップS34においてハッシュ値を受信しなかったと判定したとき(ステップS31:NO)、制御部11は、投入準備完了の通知があったか否か、すなわち要求ノード装置2から投入準備完了メッセージを通信部13を介して受信したか否かを判定する(ステップS38)。この処理において、投入準備完了の通知があったと判定すると(ステップS38:YES)、制御部11は、記憶部12に記憶しているメタ情報ファイルを読み出して、署名を入れてカタログ情報に追加する(ステップS39)。カタログ情報は、P2Pネットワークに投入されてノード装置2間で送受信可能となったコンテンツデータの情報であり、記憶部12に記憶されている。署名を入れてメタ情報ファイルをカタログ情報に追加すると、制御部11は、このカタログ情報を各ノード装置2へ通信部13を介して送信する(ステップS40)。そして、制御部11は、要求ノード装置2に投入完了メッセージを通信部13を介して送信して、要求ノード装置2に投入完了を通知し(ステップS41)、投入許可要求処理を終了する。
ステップS38において、投入準備完了の通知がないと判定すると(ステップS38:NO)、制御部11は、セッションタイムアウトになったか否かを判定する(ステップS42)。この処理において、制御部11は、要求ノード装置2との間での情報のやりとりが行われない時間が予め設定された時間になったとき、セッションタイムアウトになったと判定する。
セッションタイムアウトになったと判定すると(ステップS42:YES)、制御部11は、要求ノード装置2に投入失敗メッセージを通信部13を介して送信し、要求ノード装置2に投入失敗を通知し(ステップS43)、投入許可要求処理を終了する。また、同様に、ステップS31において、認証が成功しなかったと判定したとき(ステップS31:NO)、制御部11は、要求ノード装置2に投入失敗メッセージを通信部13を介して送信し、要求ノード装置2に投入失敗を通知し(ステップS44)、投入許可要求処理を終了する。
次に、図7に示すステップS30で実行される認証処理について図8のフローチャートを参照して具体的に説明する。
図8に示すように、認証処理を開始すると、制御部11は、要求ノード装置2に投入権限があるか否かを判定する(ステップS50)。記憶部12には、認定されたノード装置のノードIDが記憶されており、制御部11は、要求ノード装置2から送信されるノードIDの情報が記憶部12に記憶されているノードIDの一つと一致するとき、要求ノード装置2に投入権限があると判定する。なお、投入権限があるか否かは、ノードIDの他、特別に割り当てられたコードやその他のIDを用いるようにすることもできる。
この処理において、要求ノード装置2に投入権限があると判定すると(ステップS50:YES)、制御部11は、要求ノード装置2から送信されたコンテンツ情報に含まれる証明書が正しいか否かを判定する(ステップS51)。記憶部12には、各認定ノード装置2のノードIDに関連づけて証明書が記憶されており、要求ノード装置2から送信される証明書が、記憶部12に記憶した認定ノード装置2の証明書と一致するとき、要求ノード装置2から送信された証明書が正しいと判定する。
要求ノード装置2から送信された証明書が正しいと判定すると(ステップS51:YES)、制御部11は、要求ノード装置2のMACアドレスが登録情報と一致するか否かを判定する(ステップS52)。記憶部12には、各認定ノード装置2のノードIDに関連づけてMACアドレスが記憶されており、制御部11は、要求ノード装置2から送信されるMACアドレスが、記憶部12に記憶した認定ノード装置2のMACアドレスと一致するとき、登録情報と一致すると判定する。
ステップS52において、要求ノード装置2のMACアドレスが登録情報と一致すると判定すると(ステップS52:YES)、制御部11は、要求ノード装置2のネットワークアドレスが登録情報と一致するか否かを判定する(ステップS53)。記憶部12には、各認定ノード装置のノードIDに関連づけてネットワークアドレスが記憶されており、制御部11は、要求ノード装置2から送信されるネットワークアドレスが、記憶部12に記憶している認定ノード装置のネットワークアドレスと一致するとき、登録情報と一致すると判定する。
ステップS53において、要求ノード装置2から送信されたネットワークアドレスが正しいと判定すると(ステップS53:YES)、制御部11のCPUは、内部メモリに認証成功のフラグを立てて、認証処理を終了する。
また、要求ノード装置2に投入権限がない(ステップS50:NO)か、証明書がただしくない(ステップS51:NO)か、MACアドレスやネットワークアドレスが登録情報と一致しないか(ステップS52:NO,ステップS53:NO)か、いずれかの場合、制御部11のCPUは、内部メモリに認証失敗のフラグを立てて、認証処理を終了する。
なお、上述においては、証明書が正しく、MACアドレス及びネットワークアドレスが登録情報と一致したときに、認証成功のフラグを立てることしたが、これは一例に過ぎない。例えば、証明書、MACアドレス及びネットワークアドレスの全てについてではなく、いずれか1つ又は2つのみにより認証成功か認証失敗かを判断してもよい。
[4.ノード装置2の具体的構成及び動作の説明]
以下、図面を参照して、上述したノード装置2の具体的構成及び動作の一例について説明する。
(ノード装置2の構成について)
ノード装置2は、専用のコンピュータの他、一般のパーソナルコンピュータを適用可能であり、図9に示すように、制御部21、記憶部22、通信部23、操作部24を備えている。なお、制御部21、記憶部22、通信部23、操作部24は、システムバス25を介して相互に接続されている。なお、図示しないが通信部23を介して取得したコンテンツデータを再生する再生部も備えている。
制御部21は、CPU(Central Processing Unit)、内部メモリから構成される。この内部メモリには、情報処理プログラムが格納されており、CPUは内部メモリに記憶されている情報処理プログラムを読み出して実行することによって、要求手段、送信手段、取得手段、加工手段、通知手段等として機能する。また、制御部21は、情報処理装置1や他のノード装置2から取得した複数の分割コンテンツデータを合成して、分割されたコンテンツデータを復元する復元手段としても機能する。なお、この情報処理プログラムは、例えば、ネットワーク8に接続されたサーバ(例えば、情報処理装置1)から、通信部23を介して、制御部21の内部メモリにダウンロードされるようにしてもよい。また、例えば、この情報処理プログラムは、CD−ROM等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部21の内部メモリに読み込まれるようにしてもよい。
記憶部22は、情報処理装置1やノード装置2から取得した分割コンテンツデータや復元したコンテンツデータを記憶するコンテンツ記憶領域、コンテンツIDやキャッシュIDとコンテンツホルダのネットワークアドレスとを関連づけたインデックステーブルを記憶するテーブル記憶領域などを有している。
(ノード装置2の動作について)
以上のように構成されたノード装置2の動作を図面を参照して具体的に説明する。なお、理解を容易にするため、本実施形態の特徴的部分であるコンテンツデータの投入処理を主として説明し、その他の処理は一部省略している。また、以下の各処理は、ノード装置2の制御部21が上述した各手段等として機能することによって実行されるものである。
ノード装置2においてメイン電源スイッチ(図示せず)がONされたときやリセットスイッチ(図示せず)が操作されたとき、制御部21のCPUは内部メモリに記憶した情報処理プログラムを実行状態として、制御部21としての機能を動作状態にして、処理を開始する。
処理を開始すると、図10に示すように、制御部21は、コンテンツデータの投入指示があったか否かを判定する(ステップS60)。この処理において、制御部21は、操作部24への操作により、所定のコンテンツデータの投入指示操作があったときに、コンテンツデータの投入指示があったと判定する。
ステップS60においてコンテンツデータの投入指示があったと判定すると(ステップS60:YES)、制御部21は、情報処理装置1に対して通信部23を介してコンテンツデータの投入要求を行う(ステップS61)。このように、制御部21は、通信部23を介して情報処理装置にコンテンツデータの投入要求を行う要求手段として機能する。
その後、制御部21は、情報処理装置1から通信部23を介してコンテンツデータのアップロード要求があったか否かを判定する(ステップS62)。この処理において、アップロード要求があったと判定すると(ステップS62:YES)、制御部21は、記憶部22から投入指示のあったコンテンツデータを読み出し、読み出したコンテンツデータを通信部23を介して情報処理装置1へ送信する(ステップS63)。このように、制御部21は、前記許可手段によりコンテンツデータの投入が許可されたとき、通信部23を介してコンテンツデータを情報処理装置1へ送信する送信手段として機能する。
一方、ステップS62の処理において、アップロードが要求ないと判定すると(ステップS62:NO)、制御部21は、投入許可要求処理を行う(ステップS64)。この投入許可要求処理は、図11に示すステップS80〜S85の処理であり、後で詳述する。なお、制御部21は、情報処理装置1から情報処理装置1から投入許可要求を行うように要求があったときに、アップロードが要求ないとの判定を行う。
ステップS63の処理が終了したとき、又は、ステップS60においてコンテンツデータの投入指示がないと判定すると(ステップS60:NO)、制御部21は、他のノード装置2から通信部23を介してコンテンツデータのダウンロード要求があったか否かを判定する(ステップS65)。この処理において、ダウンロード要求があると判定すると(ステップS65:YES)、制御部21は、情報処理装置1に対して、通信部23を介し、コンテンツデータの投入許可要求を行う(ステップS66)。そして、制御部21は、情報処理装置1から投入許可があったか否かを判定する(ステップS67)。すなわち、ステップS66で行った投入許可要求に対する投入許可のメッセージを通信部23を介して受信したか否かを判定する。この処理において、投入許可があったと判定すると(ステップS67:YES)、制御部21は、ダウンロード要求を行った他のノード装置2からコンテンツデータを通信部23を介して受信し、記憶部22に記憶する(ステップS68)。そして、制御部21は、受信したコンテンツデータに対してコンテンツ加工処理を実行する(ステップS69)。このコンテンツ加工処理は、図12に示すステップS90〜S100の処理であり、後で詳述する。
また、ステップS67の処理において、情報処理装置1から投入許可がないと判定すると(ステップS67:NO)、制御部21は、ダウンロード要求を行った他のノード装置2に対してコンテンツデータのダウンロードを拒否する旨の応答を通信部23を介して行う(ステップS70)。
ステップS64,S69,S70の処理が終了したとき、又は、ステップS65においてダウンロード要求がないと判定したとき(ステップS65:NO)、制御部21は、終了指示を検出したかを判定する(ステップS71)。例えば、ノード装置2の電源がOFF状態へ移行したとき、制御部21は、終了指示を検知する。終了指示を検知したと判定すると(ステップS71:Yes)、制御部21は、メイン処理を終了し、一方、終了指示を検知していないと判定すると(ステップS71:No)、制御部21は、ステップS60からの処理を繰り返す。
次に、図10に示すステップS64で実行される投入許可要求処理について図11のフローチャートを参照して具体的に説明する。
図11に示すように、投入許可要求処理を開始すると、制御部21は、情報処理装置1に対して、通信部23を介し、投入許可要求を行う(ステップS80)。
次に、制御部21は、投入許可があるか否かを判定する(ステップS81)。この処理において、制御部21は、情報処理装置1から通信部23を介して投入許可メッセージを受信したときに、投入許可があると判定する。
投入許可があると判定すると(ステップS81:YES)、制御部21は、コンテンツデータの投入機能があるか否かを判定する(ステップS82)。情報通信システムSを構成する複数のノード装置2のうち少なくとも一部のノード装置2は、コンテンツデータの投入機能がある。コンテンツデータの投入機能があるノード装置2の制御部21は、コンテンツデータの投入機能があると判定する。一方、コンテンツデータの投入機能がないノード装置2の制御部21は、コンテンツデータの投入機能がないと判定する。
ステップS82において、コンテンツデータの投入機能があると判定すると(ステップS82:YES)、制御部21は、コンテンツ加工処理を行う(ステップS83)。このコンテンツ加工処理は、図12に示すステップS90〜S100の処理であり、後で詳述する。
一方、ステップS82において、コンテンツデータの投入機能がないと判定すると(ステップS82:NO)、制御部21は、情報処理装置1に対して、通信部23を介し、投入機能が有るノード装置2を問い合わせる。そして、上記問い合わせに対して情報処理装置1から投入機能があるノード装置2のネットワークアドレスを通信部23を介して取得する(ステップS84)。なお、情報処理装置1から取得する情報は、ノード装置2にアクセスすることができれば、ノード装置2のネットワークアドレスでなくてもよく、例えば、ノード装置2のノードIDであってもよい。このように、制御部21は、情報処理装置1によりコンテンツデータの投入が許可されないとき、複数のノード装置2間でコンテンツデータを送受信可能に加工できる他のノード装置2の情報を取得する取得手段として機能する。
ステップS84の処理が終了すると、ネットワークアドレスを取得した投入機能があるノード装置2に通信部23を介してアクセスし、このノード装置2に対して、通信部23を介し、投入指示のあったコンテンツデータをアップロードする(ステップS85)。このように、制御部21は、複数のノード装置2間でコンテンツデータを送受信可能に加工できる他のノード装置2の情報が取得されたとき、このノード装置2へ通信部23を介してコンテンツデータを送信する送信手段として機能する。
ステップS83,S85の処理が終了したとき、又は、ステップS81において投入許可がないと判定したとき(ステップS81:NO)、制御部21は、投入許可要求処理を終了する。
次に、図10に示すステップS69及び図11に示すステップS83で実行されるコンテンツ加工処理について図12のフローチャートを参照して具体的に説明する。
図12に示すように、コンテンツ加工処理を開始すると、制御部21は、投入コンテンツデータを所定のデータ量のセグメントに順次分割して複数の分割コンテンツデータを生成する(ステップS90)。
次に、制御部21は、分割コンテンツデータのハッシュ値を演算する(ステップS91)。この処理において、制御部21は、ステップS90で新たに生成した分割コンテンツデータを所定のハッシュ関数でハッシュ化してハッシュ値を求める。なお、分割コンテンツデータのハッシュ値は、分割コンテンツデータ全体をハッシュ化したものでも、分割コンテンツデータの一部分をハッシュ化したものであってもよい。
次に、制御部21は、ステップS91で演算したハッシュ値を、通信部23を介し、情報処理装置1へ送信する(ステップS92)。その後、制御部21は、ステップS92で送信したハッシュ値に対応する分割コンテンツデータ固有の識別情報であるキャッシュIDを通信部23を介して受信したか否かを判定する(ステップS93)。この処理において、キャッシュIDを受信したと判定すると(ステップS93:YES)、制御部21は、受信したキャッシュIDをこのキャッシュIDに対応する分割コンテンツデータのヘッダ情報に追加して埋め込み(ステップS94)、処理をステップS95に移行する。
ステップS95において、制御部21は、キャッシュIDのない分割コンテンツデータがあるか否かを判定する。すなわち、キャッシュIDがヘッダ情報に追加されていない分割コンテンツデータがあるか否かを判定する。そして、キャッシュIDのない分割コンテンツデータがあると判定すると(ステップS95:YES)、制御部21は、ステップS91〜S94の処理を行って、キャッシュIDのない分割コンテンツデータにキャッシュIDを埋め込む。
一方、キャッシュIDのない分割コンテンツデータがないと判定すると(ステップS95:NO)、制御部21は、情報処理装置1に対して、通信部23を介し、投入準備完了メッセージを送信し、情報処理装置1に投入準備完了を通知する(ステップS96)。なお、このとき、制御部21は、投入コンテンツデータのコンテンツIDと各分割コンテンツデータのキャッシュIDとを含むコンテンツ構成情報を生成する。
次に、制御部21は、投入完了の通知があったか否かを判定する(ステップS97)。この処理において、制御部21は、投入完了メッセージを情報処理装置1から通信部23を介して受信したときに、投入完了の通知があったと判定する。
ステップS97において、投入完了の通知があったと判定すると(ステップS97:YES)、制御部21は、投入処理を行ったコンテンツデータのコンテンツIDを含む登録メッセージ及び各キャッシュIDを含む登録メッセージを通信部23を介して送信する(ステップS98)。
このように、制御部11は、コンテンツデータを複数のノード装置2間で送受信可能に加工する加工手段と、加工したコンテンツデータを記憶部22に記憶していることを、他のノード装置2へ通信部23を介して通知する通知手段として機能する。また、制御部11は、他のノード装置2からコンテンツデータの送信要求があったとき、記憶部22に記憶したコンテンツデータを、送信要求を行った他のノード装置へ、通信部23を介して送信する送信手段として機能する。
一方、投入完了の通知がないと判定すると(ステップS97:NO)、制御部21は、セッションタイムアウトになったか否かを判定する(ステップS100)。また、ステップS93において、キャッシュIDを受信していないと判定すると(ステップS93:NO)、セッションタイムアウトになったか否かを判定する(ステップS99)。このステップS99,S100の処理において、制御部21は、情報処理装置1との間での情報のやりとりが行われない時間が予め設定された時間になったとき、セッションタイムアウトになったと判定する。ステップS100において、セッションタイムアウトになっていないと判定すると(ステップS100:NO)、制御部21は、処理をステップS97に戻す。また、セッションタイムアウトになっていないと判定すると(ステップS99:NO)、制御部21は、処理をステップS93に戻す。
ステップS98の処理が終了したとき、セッションタイムアウトになったと判定したとき(ステップS99:YES,S100:YES)、制御部21は、コンテンツ加工処理を終了する。
以上のように、本実施形態に係る情報通信システムSでは、コンテンツデータを提供する提供装置は、コンテンツデータの投入要求が情報処理装置により許可されないときでも、コンテンツデータをノード装置間で送受信可能にする加工を行うことができる他の提供装置によりコンテンツデータを投入することができる。そのため、従来の情報通信システムに比べ、コンテンツデータの投入を迅速に行うことができる。
[5.その他の実施形態]
上記実施形態においては、ノード装置2が提供装置として機能する例を説明したが、ノード装置2ではない装置が提供装置として機能するようにしてもよい。また、ノード装置2とノード装置2ではない別の装置が共に提供装置として機能するようにしてもよい。
例えば、図13に示すように、ノード装置2ではない装置を提供装置10a,10bとし、この提供装置10a,10bからコンテンツデータの提供を行うようにしてもよい。この場合、これらの提供装置10a,10bも、上述したノード装置2と同様に動作することになる。
提供装置10aから情報処理装置1へコンテンツデータの投入要求を行い(ステップS200)、情報処理装置1は、投入処理の負荷の大きさが所定閾値を超えているとき、提供装置10aにコンテンツデータの投入許可要求を行うように要求する(ステップS201)。これに対して、提供装置10aは、情報処理装置1に対してコンテンツデータの投入許可要求を行う。提供装置10aにコンテンツデータの投入機能がなく、提供装置10bにコンテンツデータの投入機能がある場合、提供装置10aは情報処理装置1から投入機能がある提供装置の情報を取得する(ステップS202)。そして、提供装置10aは提供装置10bにコンテンツデータをアップロードし(ステップS203)、提供装置10bは、提供装置10aから情報処理装置1へコンテンツデータの投入要求を行う(ステップS204)。情報処理装置1において投入処理の負荷の大きさが所定閾値を超えているとき、情報処理装置1は提供装置10bに対して提供装置10aから取得したコンテンツデータを投入するように要求する(ステップS205)。提供装置10bは、提供装置10aから取得したコンテンツデータを分割する等の加工を施し、P2Pネットワークへ加工したコンテンツデータを投入する(ステップS206)。
なお、上述した各実施形態の説明は本発明の一例であり、本発明は上述の実施形態に限定されることはない。このため、上述した各実施形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
例えば、上述の実施形態では、コンテンツデータの加工処理として、コンテンツデータを分割して分割コンテンツデータを生成し、この分割コンテンツデータのヘッダ情報にキャッシュIDを付加するようにしたがこれに限られず、コンテンツデータを複数のノード装置2間で送受信可能に加工するものであればどのような加工処理であってもよい。
また、上述の実施形態では、投入コンテンツデータのコンテンツIDを含むメタ情報ファイルを生成し、その後、分割コンテンツデータのキャッシュIDとハッシュ値とを関連づけてメタ情報ファイルに追加したが、その順番は逆でもよい。すなわち、分割コンテンツデータのキャッシュIDとハッシュ値とを関連づけてメタ情報ファイルを生成し、その後、メタ情報ファイルにコンテンツIDを含ませるようにしてもよい。
また、上述の実施形態では、投入コンテンツデータを取得したコンテンツデータのコンテンツIDを含む登録メッセージ及び各キャッシュIDを含む登録メッセージをそれぞれ送信するようにしたが、各分割コンテンツデータが取得できればどのような構成でもよい。たとえば、コンテンツホルダとなったノード装置2の制御部21は、投入コンテンツデータのキャッシュIDを含む登録メッセージを送信することなく、コンテンツIDを含む登録メッセージのみを送信するようにしてもよい。登録メッセージを送信するノード装置2は、投入コンテンツデータのコンテンツ構成情報や分割コンテンツデータをすべて記憶している。従って、コンテンツデータのコンテンツIDと所定の関係を有するノードIDのノード装置2をルートノードとし、リクエスタの制御部21が、コンテンツ構成情報や分割コンテンツデータを有するコンテンツホルダのネットワークアドレスを取得することができる。
また、上述の実施形態では、メタ情報ファイルを情報処理装置1で生成する例を説明したが、以下のように、コンテンツデータを投入するノード装置2でメタ情報ファイルを生成するようにしてもよい。
コンテンツデータを投入するノード装置2の制御部21は、分割コンテンツデータのハッシュ値とキャッシュIDとを関連づけてメタ情報ファイルとして生成する。このとき、制御部21は、投入コンテンツデータのコンテンツ名をメタ情報ファイルには含めない。
次に、制御部21は、メタ情報ファイルのハッシュ値を求める。制御部21は、このように求めたハッシュ値を情報処理装置1へ通信部23を介して送信する。情報処理装置1の制御部11はノード装置2からメタ情報ファイルのハッシュ値を受信すると、このメタ情報ファイルのIDを生成する。このIDがコンテンツIDとなる。
次に、情報処理装置1の制御部11は、コンテンツIDをノード装置2へ送信する。ノード装置2の制御部21は、情報処理装置1から受信したメタ情報ファイルのヘッダ情報にコンテンツIDを追加する。また、情報処理装置1の制御部11は、投入コンテンツデータのコンテンツIDと、メタ情報ファイルのハッシュ値と、コンテンツデータに関する情報とを、カタログ情報に入れて署名する。なお、コンテンツデータに関する情報には、コンテンツ名、コンテンツ公開期限などである。
コンテンツデータを取得しようとするノード装置2の制御部21は、カタログ情報から所望のコンテンツデータのコンテンツIDを含む問い合わせメッセージを通信部23を介して送信する。この問い合わせメッセージは、メタ情報ファイルを記憶しているノード装置2のネットワークアドレスを問い合わせるためのメッセージである。制御部21は、この問い合わせメッセージにより取得したネットワークアドレスのノード装置2からメタ情報ファイルを取得する。そして、制御部21は、取得したメタ情報ファイルを所定のハッシュ関数でハッシュ化してハッシュ値を求める。制御部21は、このハッシュ値がカタログ情報に含まれるハッシュ値と一致するかを判定する。ハッシュ値が一致するとき、制御部21は、メタ情報ファイルにあるキャッシュIDに対応する分割コンテンツデータを通信部23を介して取得する。制御部21は、取得した分割コンテンツデータを所定のハッシュ関数でハッシュ化して分割コンテンツデータのハッシュ値を求める。そして、制御部21は、求めたハッシュ値がメタ情報に含まれるハッシュ値と一致するか否かを判定する。なお、ハッシュ値が一致するときには、制御部21は、分割コンテンツデータを正常に受信できたと判定し、引き続き次ぎの分割コンテンツデータの取得を継続する。一方、ハッシュ値が一致しないとき、制御部21は、分割コンテンツデータを正常に受信できないと判定して、制御部21は、コンテンツデータの取得を中止する。