(57)【要約】【課題】大量のノードからなるＰ２Ｐネットワークにコンテンツが一斉に投入された場合に、輻輳を軽減しながら、コンテンツ管理情報の更新を迅速に管理ノードへ要求する。【解決手段】コンテンツ分散管理システムでは、コンテンツＩＤのハッシュ値に基づいて、各ノード装置を論理的に複数の群に分割する。中継集約ノードのノード装置は、コンテンツを蓄積した複数のノード装置からコンテンツ蓄積更新情報を受信すると、これらを集約したコンテンツ蓄積更新集約情報を生成し、隣接する群のノード装置へ送信する。コンテンツ蓄積更新集約情報を受信したノード装置は、自身が属する群のノード装置から受信した複数のコンテンツ蓄積更新情報と集約してコンテンツ蓄積更新集約情報を生成し、隣接する群のノード装置へ送信する。これを繰り返し、管理ノードであるノード装置がコンテンツ蓄積更新集約情報を受信すると、自身の保持するコンテンツリストを更新する。【選択図】図６
2010097570.tif 000002
【特許請求の範囲】
【請求項１】
所定の規則により複数の群に分けられる複数のノード装置と当該複数のノード装置間を接続するネットワークとからなるコンテンツ分散管理システムを構成し、前記所定の規則により前記複数の群のうちコンテンツの所在を管理する前記群を判断する前記ノード装置であって、
前記ネットワークを介して接続される他のノード装置の通信アドレスを設定したノードリストを記憶するノードリスト記憶部と、
前記ネットワークを介して接続され且つ自ノード装置が属する群と同じ群に属する他のノード装置のうち、コンテンツを蓄積している前記他のノード装置から、当該コンテンツの識別情報と当該コンテンツを記憶している当該他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新情報を受信する通信入力部と、
前記通信入力部により受信した前記コンテンツ蓄積更新情報のうち、同一のコンテンツの識別情報を含む複数の前記コンテンツ蓄積更新情報を特定し、特定された前記コンテンツ蓄積更新情報から前記他のノード装置の通信アドレスをそれぞれ読み出し、前記同一のコンテンツの識別情報と、読み出された複数の前記他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新集約情報を生成するコンテンツ蓄積更新集約情報生成部と、
前記ノードリスト記憶部に記憶されている前記ノードリストから、前記コンテンツ蓄積更新集約情報を送信する宛先として、自ノード装置が属する前記群とは異なる群に属する前記他のノード装置の通信アドレスを読み出すデータ転送先決定部と、
前記コンテンツ蓄積更新集約情報生成部が生成した前記コンテンツ蓄積更新集約情報を、前記データ転送先決定部が前記コンテンツ蓄積更新集約情報を送信する宛先として読み出した前記通信アドレスに対して送信する通信出力部と、
を備えることを特徴とするノード装置。
【請求項２】
前記通信入力部は、さらに、前記ネットワークを介して接続され且つ自ノード装置が属する前記群とは異なる群に属する他のノード装置からコンテンツ蓄積更新集約情報を受信し、
前記コンテンツ蓄積更新集約情報生成部は、前記通信入力部により受信した前記コンテンツ蓄積更新情報及び前記コンテンツ蓄積更新集約情報のうち、前記同一のコンテンツの識別情報が設定されている前記コンテンツ蓄積更新情報及び前記コンテンツ蓄積更新集約情報を特定し、特定した前記コンテンツ蓄積更新情報及び前記コンテンツ更新集約情報から前記他のノード装置の通信アドレスをそれぞれ読み出し、前記同一のコンテンツの識別情報と、読み出された複数の前記他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新集約情報を生成する、
ことを特徴とする請求項１に記載のノード装置。
【請求項３】
前記コンテンツの識別情報と当該コンテンツのデータとを対応づけて記憶するコンテンツ蓄積部と、
前記コンテンツの識別情報と当該コンテンツのデータとを対応づけて前記コンテンツ蓄積部に書き込む蓄積コンテンツ管理部と、
前記蓄積コンテンツ管理部が前記コンテンツのデータを前記コンテンツ蓄積部に書き込んだときに、当該コンテンツの識別情報と、自ノード装置のアドレス情報とを関連付けてなるコンテンツ蓄積更新情報を生成するコンテンツ蓄積更新情報生成部と、
をさらに備え、
前記データ転送先決定部は、前記ノードリスト記憶部に記憶されている前記ノードリストから、自ノード装置が属する前記群と同じ群に属する前記他のノード装置の通信アドレスを前記コンテンツ蓄積更新情報の送信先として読み出し、
前記通信出力部は、前記コンテンツ蓄積更新情報生成部が生成した前記コンテンツ蓄積更新情報を、前記データ転送先決定部が前記コンテンツ蓄積更新情報の送信先として読み出した通信アドレスに対して送信する、
ことを特徴とする請求項１または請求項２に記載のノード装置。
【請求項４】
前記データ転送先決定部は、前記ノードリスト記憶部に記憶されている前記ノードリストから、自ノード装置が属する前記群と同じ群に属する前記他のノード装置の通信アドレスを複数、前記コンテンツ蓄積更新情報の送信先として読み出し、
前記通信出力部は、前記コンテンツ蓄積更新情報生成部が生成した前記コンテンツ蓄積更新情報を、前記データ転送先決定部が前記コンテンツ蓄積更新情報の送信先として読み出した前記複数の通信アドレスに対して送信する、
ことを特徴とする請求項３に記載のノード装置。
【請求項５】
前記コンテンツの識別情報と、当該コンテンツを記憶している前記他のノード装置のアドレス情報との対応付けを示すコンテンツリストを記憶するコンテンツリスト記憶部と、
自ノード装置が属する前記群とは異なる群に属する前記他のノード装置から受信したコンテンツ蓄積更新集約情報に含まれる前記コンテンツの識別情報から前記所定の規則に基づいて、当該コンテンツに対応する管理ノード装置が自ノード装置であると判断した場合に、当該コンテンツ蓄積更新集約情報に含まれる前記コンテンツの識別情報と当該コンテンツを蓄積している複数の他のノード装置毎の前記通信アドレスの情報とを関連付けてなるコンテンツリストを前記コンテンツリスト記憶部に書き込むコンテンツリスト管理部と、
をさらに備えることを特徴とする請求項１から請求項４のいずれかの項に記載のノード装置。
【請求項６】
前記他のノード装置及び自身のノード装置それぞれの識別情報を所定の関数により算出した演算結果を、前記コンテンツ蓄積更新情報に含まれる前記コンテンツの識別情報を前記所定の関数により算出した演算結果に近い順から複数の群に分割する所定の条件である情報を記憶する範囲規定情報記憶部と、
前記所定の関数の演算を行なう関数計算部と、
をさらに備え、
前記ノードリストは、前記他のノード装置の識別情報を変数として前記所定の関数により算出した演算結果と、当該ノード装置の通信アドレスとの関連付けを示し、
前記関数計算部は、前記通信入力部が受信した前記コンテンツ蓄積更新情報に含まれる前記コンテンツの識別情報を変数として前記所定の関数により演算を行い、
前記データ転送先決定部は、前記範囲規定情報記憶部に記憶されている前記条件の情報に基づいて、前記他のノード装置及び自ノード装置を、前記関数計算部により演算された演算結果に近い順から複数の群に分割し、前記コンテンツ蓄積更新集約情報を送信する宛先として、前記ノードリスト記憶部に記憶されている前記ノードリストから、自ノード装置が属する群よりも近い群に属する前記他のノード装置の通信アドレスを読み出す、
ことを特徴とする請求項１または請求項２に記載のノード装置。
【請求項７】
所定の規則により複数の群に分けられる複数のノード装置と当該複数のノード装置間を接続するネットワークとからなるコンテンツ分散管理システムを構成し、前記所定の規則により前記複数の群のうちコンテンツの所在を管理する前記群を判断する前記ノード装置として用いられるコンピュータを、
前記ネットワークを介して接続される他のノード装置の通信アドレスを設定したノードリストを記憶するノードリスト記憶部、
前記ネットワークを介して接続され且つ自ノード装置が属する群と同じ群に属する他のノード装置のうち、コンテンツを蓄積している前記他のノード装置から、当該コンテンツの識別情報と当該コンテンツを記憶している当該他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新情報を受信する通信入力部、
前記通信入力部により受信した前記コンテンツ蓄積更新情報のうち、同一のコンテンツの識別情報を含む複数の前記コンテンツ蓄積更新情報を特定し、特定された前記コンテンツ蓄積更新情報から前記他のノード装置の通信アドレスをそれぞれ読み出し、前記同一のコンテンツの識別情報と、読み出された複数の前記他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新集約情報を生成するコンテンツ蓄積更新集約情報生成部、
前記ノードリスト記憶部に記憶されている前記ノードリストから、前記コンテンツ蓄積更新集約情報を送信する宛先として、自ノード装置が属する群とは異なる群に属する前記他のノード装置の通信アドレスを読み出すデータ転送先決定部、
前記コンテンツ蓄積更新集約情報生成部が生成した前記コンテンツ蓄積更新集約情報を、前記データ転送先決定部が前記コンテンツ蓄積更新集約情報を送信する宛先として読み出した前記通信アドレスに対して送信する通信出力部、
として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｐ２Ｐ（ピア・トゥ・ピア、peer-to-peer）ネットワークを構成する各ノードにおいてコンテンツを分散管理するノード装置及びコンピュータプログラムに関する。
【背景技術】
【０００２】
＜Ｐ２ＰとＤＨＴ（分散ハッシュテーブル）を用いたコンテンツの分散管理＞
近年、日本においては、インターネットの普及が急速に進んでおり、２００７年末でのインターネットの人口普及率は６９．０％に達した。中でもＦＴＴＨ（Fiber to the home）やｘＤＳＬ（Digital Subscriber Line）のようなブロードバンド回線の利用者数がインターネット利用者数に占める割合は６６．１％となっており、ブロードバンドインターネットを利用した通信が当たり前となりつつある。このようなブロードバンド環境においては、ＨＤ（High Definition）映像をはじめとする大容量のコンテンツの配信が可能となる。これまでは、映像をはじめとするコンテンツ配信サービスといえば、パーソナルコンピュータ向けのサービスが中心であったが、２００７年１１月のアクトビラによる対応受信機向けの有料映像配信サービスの開始、２００８年６月のＩＰＴＶフォーラムの設立、等に代表されるように、デジタル放送受信機向けの通信を利用したコンテンツ配信サービス（ＩＰＴＶ(Internet Protocol TeleVision)サービス）も盛んになりつつある。
【０００３】
このようなコンテンツ配信サービスでは、クライアント−サーバ型のシステム構築が一般的となっているが、コンテンツ配信事業者のように、大規模なサービスやユーザ数を想定した場合、アクセスの集中によるサーバやネットワークの負荷増大などの問題が発生する。しかし、このような問題を解決するためには、大規模なシステム構築やネットワークインフラ整備などに、莫大なコストが必要となってしまう。例えば、２００８年４月現在の地上デジタル放送対応受信機の累計出荷台数は約３５００万台であり、受信機の普及規模を想定すると、コストの問題を解決する必要がある。
【０００４】
これらの問題の解決策として、Ｐ２Ｐネットワークを用いたコンテンツ配信技術が注目されてきており、世界では、Ｐ２Ｐ技術を用いた電話サービスや、ストリーミング型、ダウンロード型のコンテンツ配信を行うサービスなどが行われている。また、日本でもＰ２Ｐ技術を用いたエンドユーザ向けのいくつかのコンテンツ配信サービスが行われている。このＰ２Ｐ技術は、サーバからの情報トラフィック量を極力減らすとともに端末間でコンテンツのやり取りなどを行うため、システムやネットワークインフラの構築の規模を抑えられるだけでなく、輻輳に生じるサーバ負荷やネットワーク負荷を大幅に軽減することが出来るという特徴をもつ。
【０００５】
このようなＰ２Ｐ技術を用いたコンテンツ配信サービスのシステムを構築するためには、Ｐ２Ｐネットワークにおけるコンテンツの所在を検索し発見できる機能が必須となるが、コンテンツの情報をサービスに参加している複数のノードで分散管理することにより、コンテンツの検索と発見を可能にする手法が一般的に知られている。そのような手法を実現するための要素技術として、ＤＨＴ（分散ハッシュテーブル、Distributed Hash Table）が代表的であり、ChordやKademliaをはじめとする様々なアルゴリズムが開発されている。
【０００６】
ＤＨＴを用いたコンテンツの分散管理では、コンテンツとノードは同一のハッシュ空間上に存在する。それぞれのノードは、システム全体に存在するコンテンツの所在（コンテンツを保持しているノード）の情報のうち、ハッシュ空間上で近傍に存在するコンテンツの情報（以下、「コンテンツリスト」と呼ぶ）を保持、管理する。また、それぞれのノードは、ハッシュ空間上で近傍に存在するノードのＩＰアドレスやポートといった転送先の情報（以下、「ノードリスト」と呼ぶ）を保持、管理する。このようなコンテンツ分散管理が行なわれているネットワークにおいて、あるノードが、所望のコンテンツの所在を検索する場合、ノードリストを用いて他のノードに検索のメッセージを送信し、検索のメッセージは、複数のノードを経由して、所望のコンテンツを管理する管理ノードに到達する。そして、コンテンツの管理ノードから当該ノードに、いずれのノードにコンテンツが蓄積されているか、すなわち、コンテンツの所在を通知する。検索を要求したノードは、通知されたコンテンツの所在に基づいて、コンテンツを蓄積しているノードへアクセスし、コンテンツを取得する。
【０００７】
代表的なＤＨＴのアルゴリズムであるChordは、ノードやコンテンツをハッシュ値の順に円環状に並べ、時計回りで測った長さをハッシュ空間上の距離と定義する。一方のKademliaは、ノードやコンテンツをハッシュ値に基づいて二分木のような構造上に配置し、ハッシュ値のハミング距離をハッシュ空間上の距離と定義する。
【０００８】
このような、ＤＨＴを用いたコンテンツの分散管理においては、コンテンツのＩＤによってコンテンツを管理するノードは分散される。そして、新しいコンテンツがシステムに投入されるたびに、そのコンテンツを管理するノードが決定され、コンテンツリストが作成される。特許文献１では、新しいコンテンツが投入されても、アクセス集中によるノードやネットワークの負荷を抑えることが可能な手法が開示されている。
【０００９】
＜高度ＢＳダウンロードサービスとＰ２Ｐ＞
また、現在、日本においてデジタル放送の普及が進んでおり、２０１１年の地上およびＢＳアナログ放送の終了とともにテレビ放送のデジタル化が完了する。完全デジタル化に伴い、空いたアナログ放送の周波数帯を利用したサービスとして、リアルタイム型だけでなく、蓄積型の放送方式が検討されている。地上放送ではＩＳＤＢ−Ｔｍｍ方式によるモバイル端末向けのサーバ型放送が、衛星放送では高度ＢＳデジタル放送によるダウンロードサービスが検討されている。また、通信の分野においてはアクトビラが２００８年度中にダウンロード型の番組コンテンツの配信サービスを開始する予定である。このように、放送と通信の両方の分野において、受信機でのダウンロード型のサービスが検討されている。
【００１０】
高度ＢＳデジタル放送のダウンロードサービスにおいては、予約蓄積できなかったコンテンツや、降雨減衰など受信側の事情により欠損の生じたコンテンツに対して、何らかの補償・補完のサービスを提供することが想定される。クライアント−サーバ型のシステムにより、受信機が放送事業者のサーバからコンテンツをダウンロードする方法も考えられるが、受信機数と運用コストを考慮するとＰ２Ｐ型のシステムを構築することが有効であると検討されている（非特許文献１参照）。
【特許文献１】特開２００８−１２９６９４号公報
【非特許文献１】石川  清彦、藤井  亜里砂、大亦  寿之，「デジタルコンテンツのＤＨＴによるＰ２Ｐネットワーク内流通制御方式」，電子情報通信学会，２００８年  暗号と情報セキュリティシンポジウム（SCIS2008（Symposium on Cryptography and Information Security 2008）），平成２０年１月２２日
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述したように、Ｐ２Ｐネットワーク上のコンテンツの分散管理においては、新しいコンテンツがシステムに投入されるたびに、そのコンテンツを管理するノードが決定され、その管理ノードにおいてコンテンツリストが作成される。コンテンツを蓄積したノードは、そのコンテンツの管理ノードに対して、自ノードのＩＰアドレスやポートといった転送先の情報を通知することで、管理ノードのコンテンツリストにコンテンツの所在を記述する。逆に、コンテンツを削除した場合は、同様にして管理ノードに通知し、コンテンツリストから自ノードの情報を削除する。
【００１２】
しかし、大量のノードにコンテンツが一斉に投入された場合または一斉に削除された場合、大量のノードからそのコンテンツの管理ノードに対してコンテンツリストの更新要求が発信され、管理ノードへのアクセスおよび管理ノード周辺のネットワークに対する負荷が急増するという問題がある。高度ＢＳデジタル放送のダウンロードサービスなど、放送でのダウンロード型のコンテンツ配信においては、大量の受信機に一斉にコンテンツが蓄積される。現行の地上デジタル放送において、視聴率１％の番組というのは、受信機の累計出荷台数約３５００万台で試算すると、約３５万台の受信機でその番組を受信したことを意味し、大量の受信機を想定した大規模なシステム設計が必要となる。
そのため、放送によるダウンロードコンテンツの分散管理に、非特許文献１が示すようなＤＨＴを適用した場合、管理ノードとなる受信機およびその周辺のネットワークに対する負荷を低減する手法が不可欠である。
【００１３】
特許文献１では、複数のノードにより構成されるグループごとにタイミングをずらして管理ノードにコンテンツリストの更新要求を出すことによって、アクセス集中によるノードやネットワークの負荷を抑える手法が開示されている。しかし、更新要求の発信に待ち時間が必要となるため、管理ノードのコンテンツリストの更新が終了するまでに時間が必要である点、コンテンツごとに待ち時間が異なるためコンテンツが短時間に連続的に投入された場合に更新要求を出すノード装置の処理が輻輳する可能性がある点、が課題である。
【００１４】
本発明は、このような事情を考慮してなされたもので、その目的は、コンテンツを分散管理するＰ２Ｐネットワークを構成する大量のノードに対して、無線放送等により当該Ｐ２Ｐネットワークを経由せずにコンテンツがダウンロードされるなどして、コンテンツが一斉に投入された場合に、輻輳を軽減しながら、コンテンツ管理情報の更新を迅速に管理ノードへ要求することができるノード装置及びコンピュータプログラムを提供することある。
【課題を解決するための手段】
【００１５】
［１］  本発明の一態様は、所定の規則により複数の群に分けられる複数のノード装置と当該複数のノード装置間を接続するネットワークとからなるコンテンツ分散管理システムを構成し、前記所定の規則により前記複数の群のうちコンテンツの所在を管理する前記群を判断する前記ノード装置であって、前記ネットワークを介して接続される他のノード装置の通信アドレスを設定したノードリストを記憶するノードリスト記憶部と、前記ネットワークを介して接続され且つ自ノード装置が属する群と同じ群に属する他のノード装置のうち、コンテンツを蓄積している前記他のノード装置から、当該コンテンツの識別情報と当該コンテンツを記憶している当該他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新情報を受信する通信入力部と、前記通信入力部により受信した前記コンテンツ蓄積更新情報のうち、同一のコンテンツの識別情報を含む複数の前記コンテンツ蓄積更新情報を特定し、特定された前記コンテンツ蓄積更新情報から前記他のノード装置の通信アドレスをそれぞれ読み出し、前記同一のコンテンツの識別情報と、読み出された複数の前記他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新集約情報を生成するコンテンツ蓄積更新集約情報生成部と、前記ノードリスト記憶部に記憶されている前記ノードリストから、前記コンテンツ蓄積更新集約情報を送信する宛先として、自ノード装置が属する前記群とは異なる群に属する前記他のノード装置の通信アドレスを読み出すデータ転送先決定部と、前記コンテンツ蓄積更新集約情報生成部が生成した前記コンテンツ蓄積更新集約情報を、前記データ転送先決定部が前記コンテンツ蓄積更新集約情報を送信する宛先として読み出した前記通信アドレスに対して送信する通信出力部と、を備えることを特徴とするノード装置である。
上記発明によれば、Ｐ２Ｐネットワーク上で放送型配信コンテンツの分散管理する場合に、コンテンツを蓄積したノードから、そのコンテンツの管理ノードに対してコンテンツリストを更新するための更新要求を通知する際に、複数のノードから発生した更新要求としてのコンテンツ蓄積更新情報を、管理ノードまでの経路に存在するノードにおいて集約しながら通知を行う。これにより、管理ノードに到達する、コンテンツリストの更新要求の数を減らすことができ、アクセス集中による管理ノードへの負荷、および、管理ノード周辺のネットワークの負荷を抑制することができる。
【００１６】
［２］  また、本発明の一態様は、上述するノード装置であって、前記通信入力部は、さらに、前記ネットワークを介して接続され且つ自ノード装置が属する前記群とは異なる群に属する他のノード装置からコンテンツ蓄積更新集約情報を受信し、前記コンテンツ蓄積更新集約情報生成部は、前記通信入力部により受信した前記コンテンツ蓄積更新情報及び前記コンテンツ蓄積更新集約情報のうち、前記同一のコンテンツの識別情報が設定されている前記コンテンツ蓄積更新情報及び前記コンテンツ蓄積更新集約情報を特定し、特定した前記コンテンツ蓄積更新情報及び前記コンテンツ更新集約情報から前記他のノード装置の通信アドレスをそれぞれ読み出し、前記同一のコンテンツの識別情報と、読み出された複数の前記他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新集約情報を生成する、ことを特徴とする。
上記発明によれば、コンテンツ蓄積更新情報だけでなく、他のノード装置において生成されたコンテンツ蓄積更新集約情報も集約してコンテンツ蓄積更新集約情報を生成するため、さらに管理ノードへの負荷、および、管理ノード周辺のネットワークの負荷を抑制することができる。
【００１７】
［３］  また、本発明の一態様は、上述するノード装置であって、前記コンテンツの識別情報と当該コンテンツのデータとを対応づけて記憶するコンテンツ蓄積部と、前記コンテンツの識別情報と当該コンテンツのデータとを対応づけて前記コンテンツ蓄積部に書き込む蓄積コンテンツ管理部と、前記蓄積コンテンツ管理部が前記コンテンツのデータを前記コンテンツ蓄積部に書き込んだときに、当該コンテンツの識別情報と、自ノード装置のアドレス情報とを関連付けてなるコンテンツ蓄積更新情報を生成するコンテンツ蓄積更新情報生成部と、をさらに備え、前記データ転送先決定部は、前記ノードリスト記憶部に記憶されている前記ノードリストから、自ノード装置が属する前記群と同じ群に属する前記他のノード装置の通信アドレスを前記コンテンツ蓄積更新情報の送信先として読み出し、前記通信出力部は、前記コンテンツ蓄積更新情報生成部が生成した前記コンテンツ蓄積更新情報を、前記データ転送先決定部が前記コンテンツ蓄積更新情報の送信先として読み出した通信アドレスに対して送信する、ことを特徴とする。
上記発明によれば、コンテンツの蓄積完了とともにコンテンツ蓄積更新情報を発信するため、コンテンツが短時間に連続的に投入された場合であっても、コンテンツの投入順序どおりに処理を行われ、輻輳を回避することが可能となる。加えて、コンテンツ蓄積更新情報を同じ群に属する他のノード装置へ送信するため、ノードリストには自身の近傍のノード装置のアドレス情報のみを保持することでよく、また、群毎にコンテンツ蓄積更新情報を集約してコンテンツ蓄積更新集約情報を生成することができる。
【００１８】
［４］  また、本発明の一態様は、上述するノード装置であって、前記データ転送先決定部は、前記ノードリスト記憶部に記憶されている前記ノードリストから、自ノード装置が属する前記群と同じ群に属する前記他のノード装置の通信アドレスを複数、前記コンテンツ蓄積更新情報の送信先として読み出し、前記通信出力部は、前記コンテンツ蓄積更新情報生成部が生成した前記コンテンツ蓄積更新情報を、前記データ転送先決定部が前記コンテンツ蓄積更新情報の送信先として読み出した前記複数の通信アドレスに対して送信する、ことを特徴とする。
上記発明によれば、コンテンツ蓄積更新情報の適切な送信先を複数個決定することにより、コンテンツ蓄積更新情報を発信したノードから管理ノードまでの経路において、中継ノードの障害などによる転送の失敗が発生する確率を減少させることができる。
【００１９】
［５］  また、本発明の一態様は、上述するノード装置であって、前記コンテンツの識別情報と、当該コンテンツを記憶している前記他のノード装置のアドレス情報との対応付けを示すコンテンツリストを記憶するコンテンツリスト記憶部と、自ノード装置が属する前記群とは異なる群に属する前記他のノード装置から受信したコンテンツ蓄積更新集約情報に含まれる前記コンテンツの識別情報から前記所定の規則に基づいて、当該コンテンツに対応する管理ノード装置が自ノード装置であると判断した場合に、当該コンテンツ蓄積更新集約情報に含まれる前記コンテンツの識別情報と当該コンテンツを蓄積している複数の他のノード装置毎の前記通信アドレスの情報とを関連付けてなるコンテンツリストを前記コンテンツリスト記憶部に書き込むコンテンツリスト管理部と、をさらに備えることを特徴とする。
上記発明によれば、管理ノードとして振舞うノード装置は、コンテンツ蓄積更新情報を集約したコンテンツ蓄積更新集約情報によりコンテンツリストを随時更新するため、個別にコンテンツ蓄積更新情報を受信してコンテンツリストの更新を行なう場合に比較して、コンテンツリストの更新完了までの時間を抑制することができる。
【００２０】
［６］  また、本発明の一態様は、上述するノード装置であって、前記他のノード装置及び自身のノード装置それぞれの識別情報を所定の関数により算出した演算結果を、前記コンテンツ蓄積更新情報に含まれる前記コンテンツの識別情報を前記所定の関数により算出した演算結果に近い順から複数の群に分割する所定の条件である情報を記憶する範囲規定情報記憶部と、前記所定の関数の演算を行なう関数計算部と、をさらに備え、前記ノードリストは、前記他のノード装置の識別情報を変数として前記所定の関数により算出した演算結果と、当該ノード装置の通信アドレスとの関連付けを示し、前記関数計算部は、前記通信入力部が受信した前記コンテンツ蓄積更新情報に含まれる前記コンテンツの識別情報を変数として前記所定の関数により演算を行い、前記データ転送先決定部は、前記範囲規定情報記憶部に記憶されている前記条件の情報に基づいて、前記他のノード装置及び自ノード装置を、前記関数計算部により演算された演算結果に近い順から複数の群に分割し、前記コンテンツ蓄積更新集約情報を送信する宛先として、前記ノードリスト記憶部に記憶されている前記ノードリストから、自ノード装置が属する群よりも近い群に属する前記他のノード装置の通信アドレスを読み出す、ことを特徴とする。
上記発明によれば、各ノードがハッシュ関数のような共通の関数を持ち、この関数とコンテンツ及びノードの識別情報から、コンテンツリストの更新要求の適切な送信先を各ノードが自律的に決定することができる。これにより、サーバを介さずにコンテンツの分散管理を実現することができる。
【００２１】
［７］  また、本発明の一態様は、所定の規則により複数の群に分けられる複数のノード装置と当該複数のノード装置間を接続するネットワークとからなるコンテンツ分散管理システムを構成し、前記所定の規則により前記複数の群のうちコンテンツの所在を管理する前記群を判断する前記ノード装置として用いられるコンピュータを、前記ネットワークを介して接続される他のノード装置の通信アドレスを設定したノードリストを記憶するノードリスト記憶部、前記ネットワークを介して接続され且つ自ノード装置が属する群と同じ群に属する他のノード装置のうち、コンテンツを蓄積している前記他のノード装置から、当該コンテンツの識別情報と当該コンテンツを記憶している当該他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新情報を受信する通信入力部、前記通信入力部により受信した前記コンテンツ蓄積更新情報のうち、同一のコンテンツの識別情報を含む複数の前記コンテンツ蓄積更新情報を特定し、特定された前記コンテンツ蓄積更新情報から前記他のノード装置の通信アドレスをそれぞれ読み出し、前記同一のコンテンツの識別情報と、読み出された複数の前記他のノード装置の通信アドレスとを関連付けてなるコンテンツ蓄積更新集約情報を生成するコンテンツ蓄積更新集約情報生成部、前記ノードリスト記憶部に記憶されている前記ノードリストから、前記コンテンツ蓄積更新集約情報を送信する宛先として、自ノード装置が属する群とは異なる群に属する前記他のノード装置の通信アドレスを読み出すデータ転送先決定部、前記コンテンツ蓄積更新集約情報生成部が生成した前記コンテンツ蓄積更新集約情報を、前記データ転送先決定部が前記コンテンツ蓄積更新集約情報を送信する宛先として読み出した前記通信アドレスに対して送信する通信出力部、として機能させることを特徴とするコンピュータプログラムである。
【発明の効果】
【００２２】
本発明によれば、コンテンツを分散管理するＰ２Ｐネットワークを構成する大量のノードに対して、コンテンツが一斉に投入された場合でも、輻輳を軽減しながら、コンテンツ管理情報の更新を迅速に管理ノードへ要求し、サーバを用いることなく、大規模なコンテンツ配信システムの設計が可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施形態を、図面を参照して説明する。
【００２４】
［１．全体構成］
図１に、本発明を適用可能な、Ｐ２Ｐネットワークを用いたコンテンツ分散管理システムの全体構成図を示す。ここでは、高度ＢＳデジタル放送のダウンロードサービスにおける例を示す。
同図において、複数のノード装置１は、通信ネットワークＮにより相互に接続されている。高度ＢＳデジタル放送では、放送衛星２を使ってコンテンツデータ（以下、単に「コンテンツ」と記載する）の配信を行う。そのため、日本全国のような地理的に広いエリアに存在する複数のノード装置１に対して一斉にコンテンツが配信される。そこで、コンテンツ配信事業者は、配信装置２から放送衛星３にコンテンツの配信を指示することにより、放送波を使ってコンテンツをノード装置１へ送信する。また、逆に、コンテンツの削除要求を一斉に配信することも考えられる。つまり、配信装置２から指示を受けた放送衛星３は、複数のノード装置１に対して一斉にコンテンツの削除要求を送信する。
各ノード装置１は通信機能を備えており、他のノード装置１とネットワークＮを介して情報の送受信をすることが可能である。各コンテンツには識別子（ＩＤ）の情報が付与されており、ノード装置１は当該識別子によりコンテンツを識別する。また、同様に各ノード装置１にも識別子が付与されており、自ノード装置において、他ノード装置を認識できるようにする。
【００２５】
［２．コンテンツ分散管理のためのデータ］
図２、図３は、従来技術のＤＨＴ（分散ハッシュテーブル、Distributed Hash Table）を用いてコンテンツを分散管理するためにノード装置１が記憶するリストの例を示す図である。以降、代表的なＤＨＴのアルゴリズムであるChordを用いた分散管理を例に説明する。Chordでは、ノードとコンテンツをハッシュ値の順に円環状に並べ、時計回りで測った長さをハッシュ空間上の距離と定義する。
【００２６】
図２は、ハッシュ空間上で自ノード装置の“近傍”に存在するコンテンツが、どのノード装置に蓄積されているかという所在情報を示すリストであるコンテンツリストを示す。また、図３はハッシュ空間上で自ノード装置の“近傍”に存在する他ノード装置のＩＰアドレスやポートなどの、通信を行うために必要な情報を示すリストであるノードリストを示す。
【００２７】
図２において、コンテンツリストには、ノード装置１において所在情報を管理する対象のコンテンツを特定するコンテンツＩＤ及び当該コンテンツＩＤのハッシュ値と、当該コンテンツが蓄積されているノード装置１のノードＩＤ及び当該ノード装置１のＩＰアドレスやポート番号といった通信のために必要な情報と、当該コンテンツが削除されたかを示す情報と、当該コンテンツが蓄積または削除された時刻を示すタイムスタンプの情報とが記述される。
【００２８】
一方、図３に示すノードリストには、ハッシュ空間上の近傍に存在するノード装置１のノードＩＤ及び当該ノードＩＤのハッシュ値、当該ノード装置１のＩＰアドレスやポート番号といった通信のために必要な情報が記述される。ノードリストは、ＤＨＴにおけるルーティングテーブルと同様のものと考えてよい。また、ＤＨＴによる分散管理を円滑に行うためには、各ノード装置１が管理すべきコンテンツ、および、把握すべき転送先のノード装置１のハッシュ空間上の“近傍”の範囲を規定する必要がある。なお、すべてのノード装置１においてコンテンツＩＤおよびノードＩＤからハッシュ値を算出できるため、必ずしもリストにハッシュ値を記述しなくてもよい。
【００２９】
図２および図３では、ノード装置１に付与されたノードＩＤのハッシュ値が「５００」、“近傍”の範囲を「２０」とした例を示している。つまり、コンテンツリストでは、コンテンツＩＤのハッシュ値が５００〜５２０の範囲に存在するコンテンツの所在を管理し、ノードリストでは、ノードＩＤのハッシュ値が５００〜５２０の範囲に存在するノード装置１の転送先の情報を保持する。
【００３０】
［３．従来技術を使用したコンテンツ配信］
図４は、一般的なＤＨＴを用いてコンテンツの分散管理を行っているＰ２Ｐシステムにおいて、ノード装置１がコンテンツを新たに蓄積し、管理ノードに蓄積したことを通知する、従来の手順を示す。
同図は、ノードＩＤが「ＬＭＮＯＰＱ」、当該ノードＩＤのハッシュ値が「４００」であるノード装置１が、コンテンツＩＤが「ＡＡＡＡＡＡ」、当該コンテンツＩＤのハッシュ値が「５０１」であるコンテンツを蓄積した場合の例である。ここでは、近傍の範囲は２０とする。以下、ノードＩＤのハッシュ値がＸのノード装置１を「ノード装置（Ｘ）」、コンテンツＩＤのハッシュ値がＹのコンテンツを「コンテンツ（Ｙ）」と記載する。
【００３１】
（手順Ａ−１）ノード装置（４００）は、自身が蓄積したコンテンツのコンテンツＩＤ「ＡＡＡＡＡＡ」からハッシュ値「５０１」を算出する。
【００３２】
（手順Ａ−２）ノード装置（４００）は、ノードＩＤのハッシュ値が「４０２」、「４１０」、「４２０」となるノード装置１についての情報が記述されたノードリストを記憶している。ノード装置（４００）は、自身が記憶しているノードリストから、（手順Ａ−１）において算出したハッシュ値「５０１」に最も近いハッシュ値となるノードＩＤにより特定されるノード装置（４２０）を検出し、当該ノード装置（４２０）のアドレス情報、すなわち、ＩＰアドレス及びポート番号を読み出す。
【００３３】
（手順Ａ−３）ノード装置（４００）は、自身が蓄積したコンテンツのコンテンツＩＤ「ＡＡＡＡＡＡ」、自身のノードＩＤ「ＬＭＮＯＰＱ」、自身のＩＰアドレス「１００．１．２．３」、ポート番号「５０００」を設定したコンテンツ蓄積更新情報を、（手順Ａ−２）において読み出したＩＰアドレス及びポート番号を宛先に設定して送信し、ノード装置（４２０）に通知する。
【００３４】
（手順Ａ−４）ノード装置（４２０）は、コンテンツ蓄積更新情報を受信すると、当該コンテンツ蓄積更新情報に設定されているコンテンツＩＤ「ＡＡＡＡＡＡ」からハッシュ値「５０１」を算出する。
【００３５】
（手順Ａ−５）以下、同様に、（手順Ａ−２）〜（手順Ａ−４）の操作を繰り返してコンテンツ蓄積更新情報を中継する。つまり、ノード装置１は、自身が記憶しているノードリストから、ノードＩＤのハッシュ値が、コンテンツＩＤより算出したハッシュ値に最も近い他のノード装置１を検出し、受信したコンテンツ蓄積更新情報をこの検出した他のノード装置１に通知し、コンテンツ蓄積更新情報を受信したノード装置１は、当該コンテンツ蓄積更新情報に設定されているコンテンツＩＤからハッシュ値を算出する。（手順Ａ−２）〜（手順Ａ−４）の操作を繰り返すことにより、ノードＩＤのハッシュ値がコンテンツ（５０１）の管理範囲である４８２〜５０１の範囲内になるノード装置１についての情報を記述したノードリストを保持するノード装置（４８０）に、コンテンツ蓄積更新情報が通知される。
【００３６】
（手順Ａ−６）ノード装置（４８０）は、ノードリストに、ノードＩＤのハッシュ値が「４８５」、「４９５」、「５００」となるノード装置の情報を保持している。ノード装置（４８０）は、当該コンテンツ蓄積更新情報に設定されているコンテンツＩＤ「ＡＡＡＡＡＡ」のハッシュ値「５０１」を算出し、ノードリストよりコンテンツ（５０１）の管理範囲内に含まれる、ノード装置（４８５）、ノード装置（４９５）、ノード装置（５００）を検出すると、管理ノードであるそれら全てのノード装置に対して、受信したコンテンツ蓄積更新情報を通知する。
【００３７】
（手順Ａ−７）ノード装置（４８５）、ノード装置（４９５）、ノード装置（５００）は、受信したコンテンツ蓄積更新情報からコンテンツＩＤ「ＡＡＡＡＡＡ」、ノード装置（４００）のノードＩＤ「ＬＭＮＯＰＱ」、ＩＰアドレス「１００．１．２．３」、ポート番号「５０００」を読み出すと、自身の保持するコンテンツリストのコンテンツＩＤ＝ＡＡＡＡＡＡのレコードに、読み出したノード装置（４００）のノードＩＤ、ＩＰアドレス、ポート番号を追記する。
【００３８】
［４．従来技術を使用したコンテンツ検索］
図５に、一般的なＤＨＴを用いてコンテンツの分散管理を行っているシステムにおいて、所望のコンテンツがどのノード装置１に蓄積されているのかを検索する従来の手順について示す。同図においては、ノードＩＤが「ＮＮＮＮＮＮ」、当該ノードＩＤのハッシュ値が「４５０」であるノード装置１が、コンテンツＩＤが「ＡＡＡＡＡＡ」、当該コンテンツＩＤのハッシュ値が「５０１」であるコンテンツを蓄積しているノード装置を検索する例を示している。また、ここでは、近傍の範囲は「２０」とする。
【００３９】
（手順Ｂ−１）ノード装置（４５０）は、所望のコンテンツのコンテンツＩＤ「ＡＡＡＡＡＡ」からハッシュ値「５０１」を算出する。
【００４０】
（手順Ｂ−２）ノード装置（４５０）は、ノードＩＤのハッシュ値が「４５１」、「４５５」、「４６５」となるノード装置１についての情報が記述されたノードリストを記憶している。ノード装置（４５０）は、自身が記憶しているノードリストから、コンテンツＩＤ「ＡＡＡＡＡＡ」より算出したハッシュ値「５０１」に最も近いハッシュ値となるノードＩＤで特定されるノード装置（４６５）を検出し、当該ノード装置（４６５）のアドレス情報、すなわち、ＩＰアドレス及びポート番号を読み出す。
【００４１】
（手順Ｂ−３）ノード装置（４５０）は、検索したいコンテンツのコンテンツＩＤ「ＡＡＡＡＡＡ」、自身のノードＩＤ「ＮＮＮＮＮＮ」、ＩＰアドレス「１０．２．３．４」、ポート番号「５０００」を設定したコンテンツ検索要求情報を、（手順Ｂ−２）において読み出したＩＰアドレス及びポート番号を宛先に設定して送信し、ノード装置（４６５）に通知する。
【００４２】
（手順Ｂ−４）ノード装置（４６５）は、コンテンツ検索要求情報を受信すると、当該コンテンツ蓄積更新情報に設定されているコンテンツＩＤ「ＡＡＡＡＡＡ」からハッシュ値「５０１」を算出する。
【００４３】
（手順Ｂ−５）以下、同様に、（手順Ｂ−２）〜（手順Ｂ−４）の操作を繰り返してコンテンツ検索要求情報を中継する。つまり、ノード装置１は、自身が記憶しているノードリストから、ノードＩＤのハッシュ値が、コンテンツＩＤより算出したハッシュ値に最も近い他のノード装置１を検出し、受信したコンテンツ検索要求情報をこの検出した他のノード装置１に通知し、コンテンツ検索要求情報を受信したノード装置１は、当該コンテンツ検索要求情報に設定されているコンテンツＩＤからハッシュ値を算出する。（手順Ｂ−２）〜（手順Ｂ−４）の操作を繰り返すことにより、ノードＩＤのハッシュ値がコンテンツ（５０１）の管理範囲である４８２〜５０１の範囲内になるノード装置１にコンテンツ検索要求情報が通知される。なお、図５においては、ノード装置（５００）に通知する例を示しているが、管理範囲内であればノード装置（４８５）、ノード装置（４９５）のような他のノード装置１に通知することでも構わない。
【００４４】
（手順Ｂ−６）ノード装置（５００）は、自身が記憶しているコンテンツリスト内のコンテンツＩＤと、コンテンツ検索要求情報に設定されているコンテンツＩＤとを照合し、要求されたコンテンツを蓄積しているノード装置１のノードＩＤ、ＩＰアドレス及びポート番号の組を全て読み出すと、読み出した全ての組を設定したコンテンツ検索回答情報を作成する。同図においては、コンテンツ検索要求情報に設定されていた、検索対象のコンテンツのコンテンツＩＤ「ＡＡＡＡＡＡ」と、コンテンツリストから読み出した、ノードＩＤ「０００００１」、ＩＰアドレス「１２３．１２３．１２３．１２３」及びポート番号「５０００」の組、ノードＩＤ「００００１５」、ＩＰアドレス「１１１．１１１．００１．００２」及びポート番号「５０００」の組、…が設定されたコンテンツ検索回答情報を作成している。
【００４５】
（手順Ｂ−７）ノード装置（５００）は、コンテンツ検索要求情報に記述されているノード装置（４５０）のＩＰアドレスとポート番号を宛先として、（手順Ｂ−６）において作成したコンテンツ検索回答情報をノード装置（４５０）に通知する。
なお、ノード装置（４５０）は、受信したコンテンツ検索回答情報に設定されているいずれかのノード装置１のＩＰアドレス及びポート番号を用いてアクセスし、コンテンツ（５０１）を取得する。
【００４６】
［５．第１の実施形態］
次に、本発明の第１の実施形態について説明する。
【００４７】
［５．１  コンテンツ配信時のシステム全体の処理手順］
図６は、本発明の第１の実施形態によるコンテンツ分散管理システムにおける、情報の集約機能を用いたコンテンツ蓄積更新情報の通知手順について示す。図４に示したような一般的なＤＨＴによる従来の通知手順の場合、コンテンツを蓄積したノード装置１それぞれが管理ノードへコンテンツ蓄積更新情報を通知することになる。つまり、Ｎ台のノード装置１に同時に同一のコンテンツが蓄積されると、そのコンテンツの管理ノードとなるノード装置１にはＮ個のコンテンツ蓄積更新情報が到達することになり、管理ノードへのアクセスが集中してしまう。しかし、本実施形態では、以下のような手順をとることにより、コンテンツ蓄積更新情報を、中継ノードとなるノード装置１で集約しながら管理ノードとなるノード装置へ通知するため、アクセス集中を抑制することができる。以下、このような集約機能を持つ中継ノードを中継集約ノードと記載する。ここでは、ハッシュ値が４００〜５００の範囲に存在するノード装置１のうちのいくつかが、ハッシュ値が「５０１」となるコンテンツＩＤで特定されるコンテンツを受信し、自身に蓄積した際の例における手順を以下に示す。なお、近傍の範囲は２０とする。
【００４８】
（手順Ｃ−１）ノード装置１はコンテンツを受信して蓄積し、このコンテンツを蓄積したノード装置１（ノード装置（４０２）、（４１０）など）は、蓄積したコンテンツのコンテンツＩＤからハッシュ値「５０１」を算出する。
【００４９】
（手順Ｃ−２）ノード装置１は、コンテンツＩＤのハッシュ値が５０１、近傍の範囲が２０であることから、５０１を基準に２０ごとの空間（群）にハッシュ空間を分割する。そして、コンテンツを蓄積した全てのノード装置１は、その分割した各空間（群）の範囲と、自身がどの範囲の空間（群）に属するのかを認識する。ここでは、コンテンツＩＤのハッシュ値「５０１」、近傍の範囲「２０」であることから、ノード装置１は、４０２〜４２１、４２２〜４４１、…、４８２〜５０１、のようにハッシュ空間を分割する。ノード装置（４０２）、（４１０）は、自身が４０２〜４２１の範囲に属することを認識する。
【００５０】
（手順Ｃ−３）それぞれのノード装置１は、自身が属する範囲内で、ノードＩＤのハッシュ値が最も「５０１」に近い他のノード装置１を、自身が記憶しているノードリストから検索し、コンテンツ蓄積更新情報の通知先のノード装置１として認識する。ノード装置（４０２）は、ノードＩＤのハッシュ値が「４０５」、「４０７」、「４１０」、「４１６」、「４２０」となるノード装置１についての情報が記述されたノードリストを記憶しており、ノード装置（４１０）は、ノードＩＤのハッシュ値が「４１０」、「４１６」、「４２０」となるノード装置１についての情報が記述されたノードリストを記憶している。そこで、コンテンツを蓄積したノード装置（４０２）、（４１０）は、自身の属する範囲が４０２〜４２１であることから、自身の保持するノードリストに登録されている中からノード装置（４２０）を通知先として検出し、そのアドレス情報、すなわち、ＩＰアドレス及びポート番号を読み出す。ノード装置（４２０）がコンテンツを蓄積したノード装置であるかどうかは関係がない。
【００５１】
（手順Ｃ−４）コンテンツを蓄積したノード装置１は、（手順Ｃ−３）において検出した通知先のノード装置１にコンテンツ蓄積更新情報として、蓄積したコンテンツのコンテンツＩＤ、自身のノードＩＤ及びアドレス情報を送信する。従って、ノード装置（４０２）、（４１０）は、生成したコンテンツ蓄積更新情報をノード装置（４２０）に送信する。
【００５２】
（手順Ｃ−５）コンテンツ蓄積更新情報を受信したノード装置１、すなわち、中継集約ノードは、一定時間待って、自身の属する範囲内の他のノード装置１から送信される複数のコンテンツ蓄積更新情報を収集する。範囲内のすべての他のノード装置１よりコンテンツ蓄積更新情報を受信した場合は、その時点で収集を終了しても構わない。
（手順Ｃ−６）中継集約ノードとなるノード装置１は、（手順Ｃ−５）において受信した複数のコンテンツ蓄積更新情報に記載されている送信元のノード装置１のノードＩＤ及びアドレス情報を集約して、コンテンツ蓄積更新集約情報を生成する。
【００５３】
（手順Ｃ−７）中継集約ノードとなるノード装置１は、コンテンツ蓄積更新情報に記述されているコンテンツＩＤからハッシュ値「５０１」を算出し、自身が属する範囲に隣接する範囲内で、ノードＩＤのハッシュ値が最も５０１に近い他のノード装置１を、自身が記憶しているノードリストから検索し、コンテンツ蓄積更新集約情報の通知先のノード装置１として認識する。例えば、４０２〜４２１の範囲に属するノード装置（４２０）であれば、ノードＩＤのハッシュ値が「４２２」、「４２５」、「４２７」、「４３２」、「４３４」、「４３８」となるノード装置１についての情報が記述されたノードリストを記憶している。そこで、ノード装置（４２０）は、自身が属する範囲に隣接する範囲である４２２〜４４１であることから、自身の保持するノードリストに登録されている中からコンテンツＩＤのハッシュ値「５０１」に最も近いノード装置（４３８）を通知先として検出し、そのアドレス情報を読み出して、生成したコンテンツ蓄積更新集約情報を送信する。
【００５４】
（手順Ｃ−８）以下、上記の（手順Ｃ−５）〜（手順Ｃ−７）と同様の操作を行い、コンテンツ蓄積更新集約情報がコンテンツ（５０１）の管理範囲に最も近い範囲に属するノード装置（４８０）に転送される。
このとき、中継集約ノードは、コンテンツ蓄積更新情報とコンテンツ蓄積更新集約情報の二種類の情報を集約する場合がある。このような中継集約ノードにおいては、一定時間待って両方の情報を収集して集約することで、コンテンツ蓄積更新集約情報を生成する。つまり、コンテンツ蓄積更新情報とコンテンツ蓄積更新集約情報を受信したノード装置１は、コンテンツ蓄積更新情報とコンテンツ蓄積更新集約情報に記述されているコンテンツＩＤからハッシュ値を算出し、自身の保持するノードリストに登録されている中から、自身の属する範囲に隣接する範囲に含まれ、かつ、ノードＩＤのハッシュ値が最もコンテンツＩＤのハッシュ値に近い他のノード装置１を検出して、生成したコンテンツ蓄積更新集約情報を送信する。例えば、ノード装置（４２０）からコンテンツ蓄積更新集約情報を、ノード装置（４２５）及びノード装置（４３４）からコンテンツ蓄積更新情報を受信したノード装置（４３８）は、ノードＩＤのハッシュ値が「４２２」、「４５５」、「４４７」、「４５０」、「４５２」、「４５６」となるノード装置１についての情報が記述されたノードリストを記憶している。ノード装置（４３８）は、自身が属する範囲４２２〜４４１に隣接する範囲である４４２〜４６１の中で、コンテンツＩＤのハッシュ値「５０１」に最も近いノード装置（４５６）を自身のノードリストから送信先として検出し、そのアドレス情報を読み出してコンテンツ蓄積更新集約情報を送信する。
【００５５】
（手順Ｃ−９）コンテンツの管理範囲に隣接した範囲に属する中継集約ノードであるノード装置１は、コンテンツの管理範囲内の他のノード装置１にコンテンツ蓄積更新集約情報を送信する。ここでの例の場合、ハッシュ値４６２〜４８１の範囲に属するノード装置（４８０）は、コンテンツ蓄積更新集約情報に記述されているコンテンツＩＤからハッシュ値「５０１」を算出する。ノード装置（４８０）は、自身の保持するノードリストに登録されている中から、自身が属する範囲に隣接する範囲、すなわち、コンテンツ（５０１）の管理範囲である４８２〜５０１をノードＩＤのハッシュ値とするノード装置（４８５）、（４９０）、（４９５）、（５００）を送信先として検出してそれらのアドレス情報を読み出し、検出した全てのノード装置１へコンテンツ蓄積更新集約情報を送信する。
【００５６】
（手順Ｃ−１０）管理ノードであるノード装置１は、受信したコンテンツ蓄積更新集約情報に記述されているコンテンツＩＤと、ノード装置１のノードＩＤ及びアドレス情報の複数の組とを読み出すと、自身の保持するコンテンツリストに追記する。また、管理範囲内のノード装置１がコンテンツを蓄積することも考えられる。例えば、ノード装置（４９０）は、（手順Ｃ−１）〜（手順Ｃ−４）に従って、自身が属する範囲内で最もハッシュ値が５０１に近いノード装置（５００）をノードリストから検出し、コンテンツ蓄積更新情報を送信する。ノード装置（５００）は、受信したコンテンツ蓄積更新情報に記述されているコンテンツＩＤと、ノード装置１のノードＩＤ及びアドレス情報を読み出すと、自身の保持するコンテンツリストに追記する。そのため、４８２〜５０１の管理範囲に属するノード装置１の間でお互いのコンテンツリストの交換を行い、ノード装置間でコンテンツリスト中のコンテンツ（５０１）についての蓄積情報に不一致が生じることを防止する。
【００５７】
なお、ここでは、コンテンツのハッシュ値とシステム上で規定している近傍の範囲を用いて中継集約ノードを決定し、中継集約ノード間で更新情報の転送を行い、管理ノードにコンテンツ蓄積更新情報を通知する手順について説明したが、中継集約ノードの決定方法については、あらかじめ固定的に決めておく、近傍のノード装置１との間で自律的な処理を行って決定するなど、他の手段を用いても構わない。また、ハッシュ空間上の距離や近傍の定義において、Chordのようなハッシュ値の差を用いる方法だけでなく、Kademliaのようにハッシュ値のハミング距離を用いる方法など、他の方法を用いても構わない。
【００５８】
［５．２  ノード装置の構成］
図７は、第１の実施形態によるノード装置１の内部機能を示すブロック図であり、本発明に関係する機能ブロックのみ抽出してある。同図に示すノード装置１は、例えば、パーソナルコンピュータや携帯電話などのコンピュータ装置により実現され、放送受信部１１、コンテンツ蓄積部１２、関数計算部１３、蓄積コンテンツ管理部１４、近傍範囲規定部１５、範囲規定情報記憶部１６、コンテンツ蓄積更新情報生成部１７、データ転送先決定部１８、ノードリスト管理部１９、ノードリスト記憶部２０、通信出力部２１、通信入力部２２、情報集約制御部２３、コンテンツ蓄積更新集約情報生成部２４、コンテンツリスト管理部２５、コンテンツリスト記憶部２６、入力部２７、制御部２８、表示部２９を含む。なお、本実施形態においては、高度ＢＳデジタル放送におけるダウンロードサービスを想定するため、コンテンツは放送において受信するものとする。
【００５９】
放送受信部１１は、具体的には、高度ＢＳデジタル放送を受信することができるチューナであり、受信した放送波からコンテンツをデコードする。コンテンツ蓄積部１２は、放送受信部１１がデコードしたコンテンツを記憶する。蓄積コンテンツ管理部１４は、コンテンツ蓄積部１２に記憶されているコンテンツの管理を行う。入力部２７は、当該ノード装置とユーザとのインタフェースであり、ユーザからの指示を制御部２８に伝える。入力部２７は、例えば、リモートコントローラやボタンなどのデバイスである。制御部２８は、入力部２７からの指示を受け、コンテンツ蓄積部１２や蓄積コンテンツ管理部１４に当該指示を出力する。これにより、制御部２８は、ユーザの指示による蓄積コンテンツの削除の指示に対する制御を行う。表示部２９は、具体的にはディスプレイであり、コンテンツ蓄積部１２に記憶され、蓄積されているコンテンツの状況を表示する。
【００６０】
関数計算部１３は、ＳＨＡ−１（Secure Hash Algorithm 1）やＭＤ５（Message Digest 5）などのハッシュ関数を用いて、コンテンツＩＤやノードＩＤのハッシュ値を算出する。なお、同一のＰ２Ｐシステム上に存在する全てのノード装置１は共通のハッシュ関数を使用する。近傍範囲規定部１５近傍の範囲を規定し、範囲規定情報記憶部１６に書き込む。同一のＰ２Ｐシステム上に存在する全てのノード装置１は共通の近傍の範囲の値を使用する。ノードリスト管理部１９は、ノードリスト記憶部２０記憶されているノードリストの管理を行う。ノードリストは、図３と同様のデータ構成である。
【００６１】
コンテンツ蓄積更新情報生成部１７は、自ノード装置のコンテンツ蓄積部１２にコンテンツが蓄積された際、自ノード装置のコンテンツ蓄積部１２からコンテンツが削除された際に、コンテンツ蓄積更新情報を生成する。コンテンツ蓄積更新集約情報生成部２４は、自ノード装置が中継集約ノードとして機能する場合、他のノード装置１より受信した複数のコンテンツ蓄積更新情報を集約して、コンテンツ蓄積更新集約情報を生成する。また、コンテンツ蓄積更新集約情報生成部２４は、コンテンツ蓄積更新集約情報とコンテンツ蓄積更新情報の集約も行う。さらに、自ノード装置においても同一のコンテンツを受信している場合は、コンテンツ蓄積更新情報生成部１７が生成したコンテンツ蓄積更新情報とも集約する。
【００６２】
データ転送先決定部１８は、通信出力部２１により送信するデータの転送先を決定する。転送先を決定する際、データ転送先決定部１８は、関数計算部１３により算出されたコンテンツＩＤやノードＩＤのハッシュ値、ノードリスト記憶部２０に記憶されているノードリスト、範囲規定情報記憶部１６に記憶されている規定された近傍範囲の値を用いる。通信出力部２１は、インターネットなど通信により情報を出力し、データ転送先決定部１８により決定された転送先へ、コンテンツ蓄積更新情報、コンテンツ蓄積更新集約情報、コンテンツリストを送信する。通信入力部２２は、インターネットなど通信によって送信された情報を入力し、他のノード装置１から送信されたコンテンツ蓄積更新情報、コンテンツ蓄積更新集約情報、コンテンツリストを受信する。
【００６３】
情報集約制御部２３は、通信入力部２２を監視することで、コンテンツ蓄積更新集約情報とコンテンツ蓄積更新情報の到着状況を把握する。また、情報集約制御部２３は、時間とこれらの情報の到着状況をもとに、コンテンツ蓄積更新集約情報生成部２４におけるコンテンツ蓄積更新集約情報の生成のタイミングを制御する。コンテンツリスト管理部２５は、自ノード装置がコンテンツの管理ノードとして機能する場合、他のノード装置１より受信したコンテンツ蓄積更新情報およびコンテンツ蓄積更新集約情報を基に、コンテンツリスト記憶部２６に記憶されているコンテンツリストの更新を行い、コンテンツリストを管理する。また、コンテンツリスト管理部２５は近傍のノード装置１と定期的にコンテンツリストの交換による照合を行い、リストを最新の状態に保つ。なお、コンテンツリストは、図２と同様のデータ構成である。
【００６４】
［５．３  データ記述例］
図８は、第１の実施形態によるコンテンツ蓄積更新情報の記述例を示す。複数のノード装置１におけるデータの解釈の統一を図るために、コンテンツ蓄積更新情報には共通のフォーマットを用い、汎用的な言語であるＸＭＬ（extensible markup language）形式により記述する。
同図において、データの種類を区別するため、コンテンツ蓄積更新情報のデータの先頭には、コンテンツ蓄積更新情報である旨の種別が記述されている。さらに、コンテンツ蓄積更新情報の本体には、更新の対象となるコンテンツのコンテンツＩＤと、当該コンテンツ蓄積更新情報を発信するノード装置１のノードＩＤ、ＩＰアドレス及びポート番号、ならびに、当該コンテンツ蓄積更新情報を発信した時刻のタイムスタンプを含む発信ノード情報とが記述される。
【００６５】
図９は、第１の実施形態によるコンテンツ蓄積更新集約情報の記述例を示す。コンテンツ蓄積更新集約情報は、図８において示したコンテンツ蓄積更新情報をもとに生成され、コンテンツ蓄積更新情報から取得した発信ノード情報を集約して記述する。コンテンツ蓄積更新情報と同様、コンテンツ蓄積更新集約情報には共通のフォーマットを用い、ＸＭＬ形式により記述する。
同図において、コンテンツ蓄積更新集約情報のデータの先頭には、コンテンツ蓄積更新集約情報である旨の種別が記述されている。さらに、コンテンツ蓄積更新集約情報の本体には、更新の対象となるコンテンツのコンテンツＩＤと、当該コンテンツＩＤが記載されたコンテンツ蓄積更新情報から取得した発信ノード情報のリストである発信ノードリスト情報とが記述される。
なお、コンテンツ蓄積更新集約情報は、他のコンテンツ蓄積更新集約情報も集約して生成されうる。この場合、新たに生成されるコンテンツ蓄積更新集約情報の発信ノードリスト情報には、集約対象のコンテンツ蓄積更新情報から取得した発信ノードリスト情報が設定される。
【００６６】
［５．４  コンテンツの配信］
図１０〜１２は、第１の実施形態によるコンテンツ分散管理システムにおける各ノード装置１の処理フローを示す図である。
図１０において、ノード装置１の放送受信部１１は、放送衛星３からの放送を受信する（ステップＳ１０５）。放送受信部１１が放送波からデコードしたコンテンツ及びコンテンツＩＤは、コンテンツ蓄積部１２または図示しない記憶手段に一時的に蓄積される。そして、コンテンツ配信時間が終了すると、ノード装置１の関数計算部１３は、放送受信部１１が放送波からデコードしたコンテンツに付与されているコンテンツＩＤを取得し、このコンテンツＩＤのハッシュ値を算出する（ステップＳ１１０）。
【００６７】
蓄積コンテンツ管理部１４は、ステップＳ１１０において算出されたコンテンツＩＤのハッシュ値と、近傍範囲規定部１５が範囲規定情報記憶部１６から読み出した近傍範囲とから、ハッシュ空間を分割し、自ノード装置が管理ノードか、中継集約ノードか、あるいは、それ以外のノードであるかを判断する（ステップＳ１１５）。
例えば、コンテンツＩＤのハッシュ値をＸ、近傍範囲をＹとした場合、Ｘを基準にＹごとの空間に分割して、ハッシュ空間を（Ｘ）〜（Ｘ−Ｙ＋１）、（Ｘ−Ｙ）〜（Ｘ−２Ｙ＋１）、（Ｘ−２Ｙ）〜（Ｘ−２Ｙ＋１）、…とする。ここで、ノードＩＤのハッシュ値が、（Ｘ）〜（Ｘ−Ｙ＋１）の範囲内になる他のノード装置１、つまり、ノード装置（Ｘ）〜（Ｘ−Ｙ＋１）がコンテンツ（Ｘ）を管理する管理ノードである。蓄積コンテンツ管理部１４は、自ノードＩＤのハッシュ値が（Ｘ）〜（Ｘ−Ｙ＋１）の範囲内に含まれていれば、自身が管理ノードであると判断する。
また、自身が管理ノードではない場合、蓄積コンテンツ管理部１４は、自身が含まれる分割範囲内（Ｘ−ｉＹ）〜（Ｘ−（ｉ＋１）Ｙ＋１）（ｉは１以上の整数）を特定する。そして、自ノードＩＤのハッシュ値がその範囲の中で最もＸに近い、すなわち、（Ｘ−ｉＹ）である場合は、自身が中継集約ノードであると判断する。また、自身が含まれる分割範囲内に、自ノードＩＤのハッシュ値よりＸに近いハッシュ値が含まれており、そのハッシュ値になるノードＩＤにより特定される他のノード装置１が、ノードリストに登録されていない場合は、自身が中継集約ノードであると判断し、登録されている場合は、管理ノードでも中継集約ノードでもないと判断する。
【００６８】
自身が管理ノードではなく（ステップＳ１２０：いいえ）、中継集約ノードでもない場合（ステップＳ１２５：いいえ）、ノード装置１の蓄積コンテンツ管理部１４は、ステップＳ１０５において受信したコンテンツを、冒頭から終了までコンテンツ蓄積部１２または図示しない記憶手段に一時的に蓄積したかを判断する（ステップＳ１３０）。コンテンツを蓄積していない場合には（ステップＳ１３０：いいえ）、処理を終了する。
【００６９】
一方、コンテンツを冒頭から終了までコンテンツ蓄積部１２に蓄積した場合（ステップＳ１３０：はい）、蓄積コンテンツ管理部１４は、一時的に蓄積していたコンテンツを、コンテンツ蓄積部１２内のコンテンツ蓄積用の領域に書き込むとともに、コンテンツ蓄積部１２に書き込んだコンテンツからコンテンツＩＤを読み出す（ステップＳ１３５）。
【００７０】
コンテンツ蓄積更新情報生成部１７は、コンテンツ蓄積更新情報である旨を示す種別と、コンテンツ蓄積部１２に蓄積したコンテンツのコンテンツＩＤと、自ノード装置のノードＩＤ、ＩＰアドレス及びポート番号、現在の時刻を設定したタイムスタンプからなる発信ノード情報とを記述したコンテンツ蓄積更新情報を生成する（ステップＳ１４０）。
【００７１】
データ転送先決定部１８は、ノードリスト記憶部２０に記憶されているノードリストを参照し、ステップＳ１４０においてコンテンツ蓄積更新情報生成部１７が生成したコンテンツ蓄積更新情報の転送先を決定する（ステップＳ１４５）。つまり、データ転送先決定部１８は、ステップＳ１１５において、自身が含まれるとして特定した分割範囲内（Ｘ−ｉＹ）〜（Ｘ−（ｉ＋１）Ｙ＋１）の中で、自身のノードＩＤのハッシュ値よりもＸに近く、かつ、ノードリストに登録されているハッシュ値のうち、最もＸに近いハッシュ値を１つ選択する。データ転送先決定部１８は、この選択したハッシュ値になるノードＩＤにより特定されるノード装置１のＩＰアドレスとポート番号を読み出す。
【００７２】
通信出力部２１は、コンテンツ蓄積更新情報転送先のノード装置１がオンライン状態か否かを確認する（ステップＳ１５０）。これは、例えば、ステップＳ１４５において取得したＩＰアドレスとポート番号を使用して、コンテンツ蓄積更新情報転送先のノード装置１へ通信の開始要求を送信し、その返答があるか否かによって確認することができる。通信出力部２１は、コンテンツ蓄積更新情報転送先のノード装置１がオンラインではない場合（ステップＳ１５０：いいえ）、再びステップＳ１４５を実行して、現在選択されているコンテンツ蓄積更新情報の転送先のノード装置１を除いて、再び、コンテンツ蓄積更新情報の転送先のノード装置１を選択し、選択したノード装置１がオンライン状態か否かを確認する（ステップＳ１４５、Ｓ１５０）。
【００７３】
コンテンツ蓄積更新情報転送先のノード装置１がオンラインの場合（ステップＳ１５０：はい）、通信出力部２１は、ステップＳ１４０において生成したコンテンツ蓄積更新情報を、転送先のノード装置１へ送信する（ステップＳ１５５）。
【００７４】
図１１は、中継集約ノードの場合の処理である。
図１０のステップＳ１２５において、自身が中継集約ノードであると判断した場合（ステップＳ１２５：はい）、ノード装置１の蓄積コンテンツ管理部１４は、図１０のステップＳ１０５において受信したコンテンツを、冒頭から終了までコンテンツ蓄積部１２または図示しない記憶手段に一時的に蓄積したかを判断する（ステップＳ２０５）。コンテンツを冒頭から終了までコンテンツ蓄積部１２に蓄積した場合（ステップＳ２０５：はい）、図１０のステップＳ１３５及びステップＳ１４０と同様の処理を行い、蓄積コンテンツ管理部１４は、コンテンツをコンテンツ蓄積部１２内のコンテンツ蓄積用の領域に書き込んでコンテンツＩＤを取得し、コンテンツ蓄積更新情報生成部１７は、コンテンツ蓄積更新情報を生成する（ステップＳ２１０、Ｓ２１５）。
【００７５】
情報集約制御部２３は、自ノード装置のノードＩＤのハッシュ値と、コンテンツＩＤのハッシュ値とから、他のノード装置１から送信されるコンテンツ蓄積更新情報やコンテンツ蓄積更新集約情報を受信するための待ち時間を算出する（ステップＳ２２０）。これは、例えば、自ノード装置のノードＩＤのハッシュ値と、コンテンツＩＤのハッシュ値の差分と、その差分に対応した待ち時間との関連を示す情報を予め保持しておき、当該情報を参照して待ち時間を決定する。あるいは、自ノード装置のノードＩＤのハッシュ値と、コンテンツＩＤのハッシュ値の差分とをパラメータとして用いた所定の算出式により、待ち時間を算出する。なお、自ノード装置のノードＩＤのハッシュ値と、コンテンツＩＤのハッシュ値の差分が小さいほど、待ち時間を長くする。
【００７６】
情報集約制御部２３は、この待ち時間が終了するまで、他のノード装置１からコンテンツ蓄積更新情報またはコンテンツ蓄積更新集約情報、あるいは、その両情報を受信する（ステップＳ２２５、ステップＳ２３０：いいえ）。そして、待ち時間が経過すると、情報集約制御部２３にコンテンツ蓄積更新集約情報の生成を指示する（ステップＳ２３０：はい）。指示を受けたコンテンツ蓄積更新集約情報生成部２４は、ステップＳ２２５において受信したコンテンツ蓄積更新情報、コンテンツ蓄積更新集約情報と、ステップＳ２１５においてコンテンツ蓄積更新情報を生成している場合は、さらに、この生成したコンテンツ蓄積更新情報とを集約して、コンテンツ蓄積更新集約情報を生成する（ステップＳ２３５）。具体的には、コンテンツ蓄積更新集約情報生成部２４は、同じコンテンツＩＤが設定されたコンテンツ蓄積更新情報から発信ノード情報を、コンテンツ蓄積更新集約情報から発信ノードリスト情報を読み出して、これらを設定した新たな発信ノードリスト情報を生成する。コンテンツ蓄積更新集約情報生成部２４は、コンテンツ蓄積更新集約情報である旨を示す種別と、コンテンツＩＤと、新たな発信ノードリスト情報とを記述したコンテンツ蓄積更新集約情報を生成する。
【００７７】
データ転送先決定部１８は、ノードリスト記憶部２０に記憶されているノードリストを参照し、ステップＳ２３５においてコンテンツ蓄積更新集約情報生成部２４が生成したコンテンツ蓄積更新集約情報の転送先を決定する（ステップＳ２４０）。つまり、データ転送先決定部１８は、ノードリストに登録されているハッシュ値の中で、ステップＳ１１５において、自身が含まれるとして特定した分割範囲内に隣接した分割範囲（Ｘ−ｉ’Ｙ）〜（Ｘ−（ｉ’＋１）Ｙ＋１）（ｉ’＝ｉ−１）内であり、かつ、最もＸに近いハッシュ値を１つ選択する。データ転送先決定部１８は、この選択したハッシュ値になるノードＩＤにより特定される他のノード装置１のＩＰアドレスとポート番号をノードリストから読み出す。
【００７８】
通信出力部２１は、コンテンツ蓄積更新集約情報の転送先のノード装置１がオンライン状態か否かを確認する（ステップＳ２４５）。通信出力部２１は、コンテンツ蓄積更新集約情報の転送先のノード装置１がオンラインではない場合（ステップＳ２４５：いいえ）、再びステップＳ２４０を実行して、現在選択されているコンテンツ蓄積更新集約情報の転送先のノード装置１を除き、再び、コンテンツ蓄積更新集約情報の転送先のノード装置１を選択し、選択したノード装置１がオンライン状態か否かを確認する（ステップＳ２４０、Ｓ２４５）。
【００７９】
コンテンツ蓄積更新情報転送先のノード装置１がオンラインの場合（ステップＳ２４５：はい）、通信出力部２１は、ステップＳ２３５において生成したコンテンツ蓄積更新集約情報を、転送先のノード装置１へ送信する（ステップＳ２５０）。
【００８０】
図１２は、管理ノードの場合の処理である。
図１０のステップＳ１２０において、自身が管理ノードであると判断した場合（ステップＳ１２０：はい）、ノード装置１の蓄積コンテンツ管理部１４は、図１０のステップＳ１０５において受信したコンテンツを、冒頭から終了までコンテンツ蓄積部１２または図示しない記憶手段に一時的に蓄積したかを判断する（ステップＳ３０５）。コンテンツを冒頭から終了までコンテンツ蓄積部１２に蓄積した場合（ステップＳ３０５：はい）、ステップＳ１３５及びステップＳ１４０と同様の処理を行い、蓄積コンテンツ管理部１４は、コンテンツをコンテンツ蓄積部１２内のコンテンツ蓄積用の領域に書き込んでコンテンツＩＤを取得し、コンテンツ蓄積更新情報生成部１７は、コンテンツ蓄積更新情報を生成する（ステップＳ３１０、Ｓ３１５）。
【００８１】
ノード装置１の通信入力部２２は、他のノード装置１からコンテンツ蓄積更新集約情報を受信する（ステップＳ３２０）。また、コンテンツ蓄積更新情報を受信する場合もある。コンテンツリスト管理部２５は、ステップＳ３２０において受信した全てのコンテンツ蓄積更新集約情報、コンテンツ蓄積更新情報と、ステップＳ３１５においてコンテンツ蓄積更新情報を生成している場合は、さらに、この生成したコンテンツ蓄積更新情報とに基づいて、コンテンツリスト記憶部２６に記憶されているコンテンツリストを更新する。つまり、コンテンツリスト管理部２５は、コンテンツ蓄積更新集約情報に設定されているコンテンツＩＤがコンテンツリストにまだ登録されていなければ、そのコンテンツＩＤと、関数計算部１３により算出された当該コンテンツＩＤのハッシュ値を登録する。さらに、コンテンツリスト管理部２５は、当該コンテンツＩＤに対応づけて、コンテンツ蓄積更新集約情報の発信ノードリスト情報から読み出したノードＩＤ、ＩＰアドレス、ポート番号、タイムスタンプの組、コンテンツ蓄積更新情報の発信ノードリスト情報から読み出したノードＩＤ、ＩＰアドレス、ポート番号、タイムスタンプの組をコンテンツリストに登録する（ステップＳ３２５）。
【００８２】
コンテンツリストの更新後は、上述した従来の検索手順と同様に、コンテンツの検索が行われ、検索元のノード装置１は、コンテンツ検索回答情報を取得し、当該コンテンツ検索回答情報のリストに記載されたＩＰアドレス及びポート番号を用いて、コンテンツを蓄積しているノード装置１にアクセスし、当該コンテンツを取得する。
【００８３】
［５．５  コンテンツの削除］
コンテンツを削除する場合は、図４に示す従来のコンテンツの配信手順、あるいは、図６及び図１０〜１２に示すコンテンツの配信手順と同様の転送手順により、コンテンツ削除を示す情報を含むコンテンツ蓄積更新情報、または、コンテンツ蓄積更新集約情報を送信する。以下、コンテンツ削除を示す情報を含むコンテンツ蓄積更新情報を「コンテンツ削除情報」、コンテンツ削除を示す情報を含むコンテンツ蓄積更新集約情報を「コンテンツ削除集約情報」と記載する。
【００８４】
コンテンツ削除情報は、図８に示すコンテンツ蓄積更新情報と同様のフォーマットを用いるが、さらに、コンテンツ削除を示す情報が含まれる。例えば、データの種類自体を「コンテンツ削除情報」としたり、コンテンツ削除を示す要素を追加したり、「タイムスタンプ」を「削除タイムスタンプ」にするなどタグ名を変更したりすることで表すことができる。
【００８５】
コンテンツ削除集約情報は、図９に示すコンテンツ蓄積更新集約情報と同様のフォーマットを用いるが、さらに、コンテンツ削除を示す情報が含まれる。例えば、データの種類自体を「コンテンツ削除集約情報」としたり、コンテンツ削除を示す要素を追加したり、「タイムスタンプ」を「削除タイムスタンプ」にするなどタグ名を変更したりすることで表すことができる。
【００８６】
そして、従来のコンテンツの配信手順によりコンテンツ削除情報を送信する場合は、以下のように動作する。
あるノード装置１において、ユーザが、入力部２７により現在のコンテンツ蓄積状況の表示指示を入力すると、制御部２８は、蓄積コンテンツ管理部１４がコンテンツ蓄積部１２から読み出したコンテンツの情報を表示部２９により表示させる。そして、この表示された中から、ユーザが、入力部２７により削除対象のコンテンツの情報を入力する。制御部２８は、削除対象のコンテンツのコンテンツＩＤと、コンテンツ削除指示を蓄積コンテンツ管理部１４に出力し、蓄積コンテンツ管理部１４は削除対象のコンテンツをコンテンツ蓄積部１２から削除する。これにより、ノード装置１は、コンテンツ蓄積更新情報の代わりに、削除対象のコンテンツのコンテンツＩＤと、自ノード装置のＩＰアドレス及びポート番号、現在の時刻を設定したタイムスタンプからなる発信ノード情報とを記述したコンテンツ削除情報を生成する。そして、図４に示す従来のコンテンツ配信手順と同様の手順により、コンテンツ蓄積更新情報の代わりに、コンテンツ削除情報が管理ノードへ転送される。管理ノードとしてのノード装置１は、受信したコンテンツ削除情報に設定されているコンテンツＩＤ、ノード装置のノードＩＤ、ＩＰアドレス、ポート番号に対応させて、削除を示す情報と、当該コンテンツ削除情報に設定されているタイムスタンプとを、自身の保持するコンテンツリストに書き込む。
【００８７】
一方、一斉削除指示が複数のノード装置１へ配信された場合は、図６、図１０〜１１に示すコンテンツの配信手順と同様の手順により、コンテンツ削除情報、または、コンテンツ削除集約情報が管理ノードへ転送される。この場合、削除指示を受信したノード装置１は、コンテンツ蓄積更新情報の代わりに、削除対象のコンテンツのコンテンツＩＤと、自ノード装置のノードＩＤ、ＩＰアドレス及びポート番号、現在の時刻を設定したタイムスタンプからなる発信ノード情報とを記述したコンテンツ削除情報を生成する。そして、従来のコンテンツ配信手順と同様の転送手順により、コンテンツ蓄積更新情報の代わりに、コンテンツ削除情報が管理ノードへ転送される。
【００８８】
中継集約ノードとしてのノード装置１は、受信したコンテンツ削除情報、コンテンツ削除集約情報と、自身が生成したコンテンツ削除情報とを集約して、コンテンツ削除集約情報を生成する。具体的には、同じコンテンツＩＤが設定されたコンテンツ削除情報から発信ノード情報を、コンテンツ削除集約情報から発信ノードリスト情報を読み出して、これらを設定した新たな発信ノードリスト情報を生成すると、コンテンツＩＤと、新たな発信ノードリスト情報とを記述したコンテンツ削除集約情報を生成する。
【００８９】
そして、管理ノードとしてのノード装置１は、受信したコンテンツ削除集約情報に設定されているコンテンツＩＤ、発信ノードリスト内の他のノード装置１のノードＩＤ、ＩＰアドレス、ポート番号の組に対応させて削除を示す情報と、発信ノードリスト内に記述されている当該組に対応したタイムスタンプとを、自身の保持するコンテンツリストに書き込む。また、自身でコンテンツ削除情報を生成した場合は、さらに、生成したコンテンツ削除情報に設定されている自身のコンテンツＩＤ、ノードＩＤ、ＩＰアドレス、ポート番号に対応させて、削除を示す情報と、当該コンテンツ削除情報に設定されているタイムスタンプとを、コンテンツリストに書き込む。
【００９０】
［５．６  コンテンツリストの同期更新］
各ノード装置１は、自身と同じ管理範囲に属する他のノード装置１と、自身が保持しているコンテンツリストとを交換し、コンテンツリストを同期更新する。
図６、図１０〜１２に示すコンテンツの配信手順や、上述する削除手順によって、ノードリストを更新したノード装置１の関数計算部１３は、コンテンツリストの更新対象となったコンテンツＩＤのハッシュ値を算出し、データ転送先決定部１８は、算出されたハッシュ値と、範囲規定情報記憶部１６から読み出した近傍範囲とから、管理範囲を得る。例えば、コンテンツＩＤのハッシュ値をＸ、近傍範囲をＹとした場合、（Ｘ）〜（Ｘ−Ｙ＋１）が管理範囲となる。データ転送先決定部１８は、ノードリスト記憶部２０に記憶されているノードリストから、ノードＩＤのハッシュ値が（Ｘ）〜（Ｘ−Ｙ＋１）となる他のノード装置１のＩＰアドレスとポート番号を読み出す。通信出力部２１は、コンテンツリスト管理部２５がコンテンツリスト記憶部２６から読み出したコンテンツ管理リストを、データ転送先決定部１８が読み出したＩＰアドレスとポート番号を宛先とし、同期先のノード装置１へ送信する。
同期先のノード装置１のコンテンツリスト管理部２５がコンテンツ管理リストを受信すると、通信出力部２１は、コンテンツリスト管理部２５がコンテンツリスト記憶部２６から読み出したコンテンツ管理リストを、受信したコンテンツ管理リストの送信元のノード装置１へ返送する。
【００９１】
コンテンツ管理リストを受信した各ノード装置１のコンテンツリスト管理部２５は、受信したコンテンツ管理リストと、コンテンツリスト記憶部２６に記憶されているコンテンツ管理リストとを比較して差分を抽出する。コンテンツリスト管理部２５は、抽出した差分のうち、受信したコンテンツ管理リストのほうがタイムスタンプの新しいもの、あるいは、受信したコンテンツリストのみに記述されているものについて、自身のコンテンツ管理リストを更新する。
【００９２】
［６．  第２の実施形態］
ここでは、第１の実施形態との差分のみを説明する。第１の実施形態では、通知経路が一つの場合のコンテンツ蓄積更新情報の通知手順であるが、通知経路が一つということで、中継集約ノードでの情報処理中に、そのノード装置１の電源が落ちる、ネットワーク接続が不能になる、処理の不具合が生じる、など障害が発生した場合、管理ノードにコンテンツ蓄積更新情報が通知されない可能性がある。そこで、第２の実施形態では、情報伝達における信頼性を向上させることを目的に、複数経路を経由して管理ノードに通知する。
【００９３】
図１３は、第２の実施形態によるコンテンツ蓄積更新情報の通知手順について示す。なお、例として経路数＝２の場合を示す。第２の実施形態では、図６の説明における（手順Ｃ−３）、（手順Ｃ−４）の代わりに、以下の（手順Ｄ−１）〜（手順Ｄ−３）を実行する。
【００９４】
（手順Ｄ−１）それぞれのノード装置１は、自身が属する範囲内で最もハッシュ値が５０１に近い他のノード装置１を、自身が記憶しているノードリストから検索し、コンテンツ蓄積更新情報の通知先のノード装置１として認識する。ノード装置（４０２）は、ハッシュ値が「４０５」、「４０７」、「４１０」、「４１６」、「４２０」、…となるノードＩＤで特定されるノード装置についての情報が記述されたノードリストを記憶しており、ノード装置（４１０）は、ハッシュ値が「４１０」、「４１６」、「４２０」、…となるノードＩＤで特定されるノード装置についての情報が記述されたノードリストを記憶している。そこで、自身の属する範囲が４０２〜４２１の範囲である、コンテンツを蓄積したノード装置（４０２）、（４１０）は、ノードリストより、ノード装置（４２０）を検出する。ノード装置（４２０）はコンテンツを蓄積したノード装置であるかどうかは関係ない。
【００９５】
（手順Ｄ−２）それぞれのノード装置１は、自ノード装置と同じ範囲に属し、かつ、（手順Ｄ−１）において検出した他のノード装置１にハッシュ空間上で隣接するさらに他のノード装置１をノードリストより検索し、もう一つのコンテンツ蓄積更新情報の通知先のノード装置１として認識する。自身の属する範囲が４０２〜４２１の範囲である、コンテンツを蓄積したノード装置（４０２）、（４１０）の場合、（手順Ｄ−１）において検出したノード装置（４２０）に隣接するノード装置（４１６）が該当する。このノード装置１においてもコンテンツを蓄積したノード装置であるかどうかは関係ない。
【００９６】
（手順Ｄ−３）コンテンツを蓄積したノード装置１は、（手順Ｄ−１）及び（手順Ｄ−２）において検出した通知先のノード装置１にコンテンツ蓄積更新情報として、蓄積したコンテンツのコンテンツＩＤ、自身のノードＩＤ、ＩＰアドレス、ポート番号を送信する。自身の属する範囲が４０２〜４２１の範囲である、ノード装置（４０２）、（４１０）からは、コンテンツ蓄積更新情報をノード装置（４１６）、（４２０）に送信する。
【００９７】
以下、図６の例と同様に、中継集約ノードを経由して、管理ノードにコンテンツ蓄積更新集約情報を通知する。この方式によると、中継集約ノードを増やすことで障害耐性が強まり、情報の転送に対する信頼性は向上する。ただし、ネットワーク上のトラフィックが増加するので、適切な数の中継集約ノードおよび経路数を設定することが望ましい。
【００９８】
第２の実施形態によるノード装置１の処理フローは、図１０〜１２と同様であるが、図１０のステップＳ１４５において、データ転送先決定部１８は、コンテンツ蓄積更新情報の送信先として、自身が含まれるとして特定した分割範囲内（Ｘ−ｉＹ）〜（Ｘ−（ｉ＋１）Ｙ＋１）の中で、自身のノードＩＤのハッシュ値よりもＸに近く、かつ、ノードリストに登録されているハッシュ値の中で、最もＸに近いハッシュ値から所定数を選択し、ステップＳ１５５において、通信出力部２１は、生成したコンテンツ蓄積更新情報を、選択された複数の転送先のノード装置１へ送信する。
【００９９】
なお、中継集約ノードが複数の送信先へコンテンツ蓄積更新集約情報を送信するようにしてもよい。この場合、図１１のステップＳ２４０において、データ転送先決定部１８は、ノードリストに登録されているハッシュ値の中で、自身が含まれるとして特定した分割範囲内に隣接した分割範囲（Ｘ−ｉ’Ｙ）〜（Ｘ−（ｉ’＋１）Ｙ＋１）（ｉ’＝ｉ−１）内であり、かつ、最もＸに近いハッシュ値から所定数を選択し、ステップＳ２５０において、通信出力部２１は、生成したコンテンツ蓄積更新集約情報を、選択された複数の転送先のノード装置１へ送信する。
他の処理は、第１の実施形態と同様である。
【０１００】
［７．  効果］
上述した実施形態によれば、Ｐ２Ｐネットワーク上での放送型配信コンテンツの分散管理において、コンテンツを蓄積したノード装置１からそのコンテンツの管理ノードに対してコンテンツリストの更新要求を通知する際に、複数のノード装置１から発生した更新要求を、管理ノードまでの経路に存在するノード装置１（中継集約ノード）において集約しながら通知を行う。これにより、管理ノードに到達する更新要求の数を減らすことができ、アクセス集中による管理ノードへの負荷、および、管理ノード周辺のネットワークの負荷を抑制することができる。さらに、ノード装置１はコンテンツの蓄積完了とともに更新要求を発信することで、コンテンツが短時間に連続的に投入されても投入順序どおりに処理を行え、輻輳を回避できると同時に、管理ノードにおけるコンテンツリストの更新完了までの時間を抑制することができる。
【０１０１】
また、各ノード装置１が共通のハッシュ関数を実行し、このハッシュ関数とコンテンツやノード装置１のノードＩＤから、コンテンツリストの更新要求の適切な送信先を各ノード装置１が自律的に決定することができる。これにより、サーバを介さずにコンテンツの分散管理を実現することができる。また、ノード装置１において、管理ノードとして振舞うノード装置１において、受信した集約されたコンテンツリストの更新要求を随時処理することで、コンテンツリストの更新完了までの時間を抑制することができる。また、第２の実施形態のように、コンテンツリストの更新要求の適切な送信先を複数個決定することにより、更新要求を発信したノード装置１から管理ノードまでの経路において、中継集約ノードの障害などによる転送の失敗が発生する確率を低減することができる。
このように、本実施形態のノード装置１を用いて、Ｐ２Ｐネットワーク上のコンテンツの分散管理を実現することで、サーバを必要としない大規模なコンテンツ配信システムの設計が可能になる。
【０１０２】
以上、実施形態として、高度ＢＳデジタル放送のダウンロードサービスにおけるＰ２Ｐネットワーク上のコンテンツの分散管理の例を示したが、放送だけでなく、有線あるいは無線の通信によるコンテンツ配信においても、ノード装置１およびシステムが同様の構成をとることで、同様の機能を実現することができる。
【０１０３】
なお、上述のノード装置１は、内部にコンピュータシステムを有している。そして、ノード装置の動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、ＣＰＵ及び各種メモリやＯＳ、周辺機器等のハードウェアを含むものである。
【０１０４】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【図面の簡単な説明】
【０１０５】
【図１】本発明を適用可能なＰ２Ｐネットワークを用いたコンテンツ分散管理システムの全体構成図である。
【図２】コンテンツリストの設定例を示す図である。の例を示す図である。
【図３】ノードリストの設定例を示す図である。
【図４】従来技術を用いたコンテンツ蓄積とその通知手順を示す図である。
【図５】従来技術を用いたコンテンツ検索手順を示す図である。
【図６】第１の実施形態によるコンテンツ蓄積更新情報の通知手順を示す図である。
【図７】同実施形態によるノード装置の内部機能を示すブロック図である。
【図８】同実施形態によるコンテンツ蓄積更新情報の記述例を示す。
【図９】同実施形態によるコンテンツ蓄積更新集約情報の記述例を示す。
【図１０】同実施形態によるコンテンツ分散管理システムにおける各ノード装置の処理フローを示す図である。
【図１１】同実施形態によるコンテンツ分散管理システムにおける各ノード装置の処理フローを示す図である。
【図１２】同実施形態によるコンテンツ分散管理システムにおける各ノード装置の処理フローを示す図である。
【図１３】第２の実施形態によるコンテンツ蓄積更新情報の通知手順を示す図である。
【符号の説明】
【０１０６】
１…ノード装置
１１…放送受信部
１２…コンテンツ蓄積部
１３…関数計算部
１４…蓄積コンテンツ管理部
１５…近傍範囲規定部
１６…範囲規定情報記憶部
１７…コンテンツ蓄積更新情報生成部
１８…データ転送先決定部
１９…ノードリスト管理部
２０…ノードリスト記憶部
２１…通信出力部
２２…通信入力部
２３…情報集約制御部
２４…コンテンツ蓄積更新集約情報生成部
２５…コンテンツリスト管理部
２６…コンテンツリスト記憶部
２７…入力部
２８…制御部
２９…表示部
【図１】
2010097570.tif 000003
【図２】
2010097570.tif 000004
【図３】
2010097570.tif 000005
【図４】
2010097570.tif 000006
【図５】
2010097570.tif 000007
【図６】
2010097570.tif 000008
【図７】
2010097570.tif 000009
【図８】
2010097570.tif 000010
【図９】
2010097570.tif 000011
【図１０】
2010097570.tif 000012
【図１１】
2010097570.tif 000013
【図１２】
2010097570.tif 000014
【図１３】
2010097570.tif 000015