(57)【要約】【課題】ネットワーク上にＤＨＴ（Distributed Hash Table）等により分散配置された複数の端末装置を有するＰ２Ｐ型のコンテンツ配信システムにおいて、セットトップボックスなどのように記憶容量が小さいノード装置であっても、ルートノード装置としての機能することができるコンテンツ配信システム及び方法等を提供すること【解決手段】管理対象のコンテンツデータを保持する管理対象コンテンツ保持ノード装置の位置情報である第１位置情報を記憶する管理情報記憶領域と、管理対象のコンテンツ保持ノード装置の位置情報を保持するノード装置の位置情報である第２位置情報を記憶する拡張管理情報記憶領域とを有する配信元情報記憶手段とを備えている。そして、ネットワークを介して受信したメッセージが自ノード装置宛のコンテンツデータ配信元情報の送信要求であると判定されると、配信元情報記憶手段から第１位置情報と第２位置情報のいずれかを選択する。【選択図】図８
2007193626.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に分散配置された複数のノード装置から構成され、前記ノード装置間でコンテンツデータの送受信を行うコンテンツ配信システムにおける前記ノード装置であって、
前記複数のノード装置のうち一部のノード装置の識別情報と位置情報とを関連付けたルーティングテーブルを記憶するルーティングテーブル記憶手段と、
前記ネットワークを介して受信したメッセージの宛先識別情報と前記ルーティングテーブルとに基づいて、前記受信したメッセージが自ノード装置宛であるか否かを判定するメッセージ宛先判定手段と、
前記メッセージ宛先判定手段により前記ネットワークを介して受信したメッセージが自ノード装置宛ではないと判定されると、受信したメッセージの宛先識別情報に基づいて、転送先のノード装置の位置情報を前記ルーティングテーブルから取り出し、前記転送先のノード装置へ前記受信したメッセージを転送するメッセージ転送手段と、
自ノード装置における管理対象のコンテンツデータを保持する管理対象コンテンツ保持ノード装置の位置情報である第１位置情報を記憶する管理情報記憶領域と、前記管理対象コンテンツ保持ノード装置の位置情報を保持するノード装置の位置情報である第２位置情報を記憶する拡張管理情報記憶領域とを有する配信元情報記憶手段と、
前記メッセージ宛先判定手段により前記ネットワークを介して受信したメッセージが自ノード装置宛であり、かつコンテンツデータ配信元情報の送信要求であると判定されると、前記配信元情報記憶手段から第１位置情報と第２位置情報のいずれかを選択する配信元情報選択手段と、
前記配信元情報選択手段によって前記第１位置情報を選択するとき、前記コンテンツデータ配信元情報を要求したノード装置へ前記第１位置情報を前記ネットワークを介して返信するコンテンツデータ配信元情報返信手段と、
前記配信元情報選択手段によって前記第２位置情報を選択するとき、前記第２位置情報のノード装置へ前記コンテンツデータ配信元情報の送信要求を、前記ネットワークを介して転送するコンテンツデータ配信元情報送信要求転送手段と、
を備えたことを特徴とするノード装置。
【請求項２】
新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報を前記配信元情報記憶手段に保持するか否かを選択する位置情報管理手段を備え、
前記位置情報管理手段は、
前記配信元情報記憶手段への保持を選択したとき、前記管理対象コンテンツ保持ノード装置の位置情報を前記管理情報記憶領域に記憶し、前記配信元情報記憶手段への保持を選択しないとき、前記管理対象コンテンツ保持ノード装置の位置情報を含む管理対象コンテンツデータ配信元情報の保持要求を、前記ネットワークを介して他のノード装置へ送信し、前記他のノード装置の位置情報を前記拡張管理情報記憶領域に記憶する
ことを特徴とする請求項１に記載のノード装置。
【請求項３】
前記管理対象コンテンツ保持ノード装置から、前記ネットワークを介して前記管理対象コンテンツ保持ノード装置の位置情報を含むコンテンツデータ配信元情報の登録要求を受信するコンテンツデータ配信元情報受信手段を有し、
前記位置情報管理手段は、
前記コンテンツデータ配信元情報受信手段がコンテンツデータ配信元情報の登録要求を受信したとき、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したと判定することを特徴とする請求項２に記載のノード装置。
【請求項４】
前記位置情報管理手段は、
前記配信元情報記憶手段への保持を選択しないとき、前記管理対象コンテンツデータ配信元情報の保持要求を送信する前記ノード装置をランダムに決定することを特徴とする請求項２又は請求項３に記載のノード装置。
【請求項５】
前記位置情報管理手段は、
前記管理情報記憶領域に所定数の前記第１位置情報が記憶された状態で、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報を前記配信元情報記憶手段へ保持する選択をしないことを特徴とする請求項２〜４のいずれか1項に記載のノード装置。
【請求項６】
前記位置情報管理手段は、
自ノード装置宛の前記コンテンツデータ配信元情報の送信要求を、前記メッセージ宛先判定手段により単位時間あたり第１所定量以上を受信した場合、前記管理対象コンテンツ保持ノード装置の位置情報を前記配信元情報記憶手段へ保持する選択をしないことを特徴とする請求項２〜５のいずれか１項に記載のノード装置。
【請求項７】
前記配信元情報記憶手段は、
外部ノード装置から転送されてきた前記管理対象コンテンツ保持ノード装置の位置情報である第３位置情報を記憶する非管理情報記憶領域と、外部ノード装置から転送されてきた前記管理対象コンテンツ保持ノード装置の位置情報を保持させたノード装置の位置情報である第４位置情報を記憶する拡張非管理情報記憶領域とを有し、
前記位置情報管理手段は、
前記管理対象コンテンツデータ配信元情報の保持要求を前記ネットワークを介して受信したときに、前記非管理情報記憶領域に所定数以上の第３位置情報が記憶されていると判定すると、前記管理対象コンテンツデータ配信元情報の保持要求を更に転送し、前記他のノード装置の位置情報を前記第４位置情報として前記拡張非管理記憶領域に記憶する
ことを特徴とする請求項２〜６のいずれか１項に記載のノード装置。
【請求項８】
前記位置情報管理手段は、
自ノード装置宛の前記コンテンツデータ配信元情報の送信要求を、前記メッセージ宛先判定手段により単位時間あたり第２所定量以上受信しない場合、前記拡張管理情報記憶領域に記憶された前記第２位置情報のうち少なくとも一つを削除するとともに、前記削除した第２位置情報に対応するノード装置へ前記コンテンツデータ配信元情報の保持取消の要求を行うことを特徴とする請求項２〜７のいずれか１項に記載のノード装置。
【請求項９】
前記メッセージ宛先判定手段により前記ネットワークを介して受信したメッセージが自ノード装置宛であり、かつ前記コンテンツデータ配信元情報の送信要求であると判定すると、前記送信要求の発行時刻と前記送信要求を受信した時刻との差分が所定値未満の値であるか否かを判定する到達時間判定手段と、
前記到達時間判定手段により前記差分が前記所定値未満の値であると判定すると、前記拡張管理情報記憶領域に記憶した前記第２位置情報を有するノード装置へ前記送信要求を転送し、前記到達時間判定手段により前記差分が前記所定値以上の値であると判定すると、前記管理情報記憶領域に記憶した前記第１位置情報を、前記送信要求を送信したノード装置へ返信する位置情報返信手段と、を
備えたことを特徴とする請求項２〜８のいずれか１項に記載のノード装置。
【請求項１０】
前記管理情報記憶領域と前記拡張管理情報記憶領域とに記憶する位置情報の割合を変更する管理情報割合変更手段を設けたことを特徴とする請求項１〜９のいずれか1項に記載のノード装置。
【請求項１１】
前記管理情報割合変更手段は、
自ノード装置宛の前記コンテンツデータ配信元情報の送信要求を、前記メッセージ宛先判定手段により単位時間あたり第３所定量以上を受信した場合に、前記拡張管理情報記憶領域に記憶する第２位置情報を増加させるように前記位置情報の割合を変更することを特徴とする請求項１０に記載のノード装置。
【請求項１２】
コンピュータに、請求項１〜１１のいずれか１項に記載のノード装置の各手段として機能させるためのプログラム。
【請求項１３】
ネットワーク上に分散配置された複数のノード装置から構成され、前記ノード装置間でコンテンツデータの送受信を行うコンテンツ配信システムにおける前記ノード装置における情報処理方法において、
前記ノード装置は、
前記複数のノード装置のうち一部のノード装置の識別情報と位置情報とを関連付けたルーティングテーブルを記憶するルーティングテーブル記憶手段と、
自ノード装置における管理対象のコンテンツデータを保持する管理対象コンテンツ保持ノード装置の位置情報である第１位置情報を記憶する管理情報記憶領域と、前記管理対象のコンテンツ保持ノード装置の位置情報を保持するノード装置の位置情報である第２位置情報を記憶する拡張管理情報記憶領域とを有する配信元情報記憶手段と、を備え、
前記ネットワークを介して受信したメッセージの宛先識別情報と前記ルーティングテーブルとに基づいて、前記受信したメッセージが自ノード装置宛であるか否かを判定するメッセージ宛先判定ステップと、
前記ネットワークを介して受信したメッセージが自ノード装置宛ではないと判定されると、受信したメッセージの宛先識別情報に基づいて、転送先のノード装置の位置情報を前記ルーティングテーブルから取り出し、前記転送先のノード装置へ前記受信したメッセージを転送するメッセージ転送ステップと、
前記ネットワークを介して受信したメッセージが自ノード装置宛であり、かつコンテンツデータ配信元情報の送信要求であると判定されると、前記配信元情報記憶手段から第１位置情報と第２位置情報のいずれかを選択する配信元情報選択ステップと、
前記配信元情報選択手段によって前記第１位置情報を選択するとき、前記コンテンツデータ配信元情報を要求したノード装置へ前記第１位置情報を返信するコンテンツデータ配信元情報返信ステップと、
前記配信元情報選択手段によって前記第２位置情報を選択するとき、前記第２位置情報のノード装置へ前記コンテンツデータ配信元情報の送信要求を転送するコンテンツデータ配信元情報送信要求転送ステップと、
を有することを特徴とするコンテンツ配信システムにおけるノード装置の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツ配信システム、ノード装置及びその情報処理方法並びにそのプログラムの技術分野に属し、より詳細には、ネットワーク上に分散配置された複数のノード装置から構成され、これらノード装置間でコンテンツデータの送受信を行うコンテンツ配信システム、ノード装置及びその情報処理方法並びにそのプログラムの技術分野に属する。
【背景技術】
【０００２】
近年、インターネットなどのネットワークを介して、音楽、映画、トーク番組などコンテンツデータ（以下、「コンテンツ」ともいう。）を配信する、いわゆるコンテンツ配信システムの研究が盛んである。
【０００３】
従来の上記コンテンツ配信システムの基本的構成として、サーバ−クライアント型の配信システムがある。このサーバ−クライアント型の配信システムは、コンテンツを蓄積するサーバにクライアントである端末装置からアクセスし、コンテンツの配信を受ける構成である。
【０００４】
ところが、この種の配信システムでは、特定の人気コンテンツを有するサーバ装置に端末装置からのアクセスが集中し、コンテンツの配信を希望する複数のユーザの端末装置において、希望のコンテンツをストレスなく高品質に入手して視聴することが困難になるという不都合がある。
【０００５】
そこで、分散ハッシュテーブル（ＤＨＴ（Distributed Hash Table））を利用して論理的にオーバーレイネットワークを構築することにより、情報を効率的に分散配置して負荷分散を図る技術が提案されている。
【０００６】
このシステムにおいては、端末装置である各ノード装置が、当該オーバーレイネットワークに参加している全てのノード装置へのリンク情報（例えば、ＩＰアドレス）を認識しているわけではなく、参加の際などに得られる一部のノード装置へのリンク情報だけを保持しており、かかるリンク情報に基づき、データの問い合わせ等を行うようになっている。
【０００７】
このオーバーレイネットワークにおいては、ノード装置の参加及び脱退（離脱）が頻繁に行われても、負荷分散が適切に行われる必要があり、非特許文献１には、オーバーレイネットワークにおいて、参加及び脱退（離脱）が頻繁に行われる場合であっても、適切に負荷分散を行うための技術が開示されている。
【非特許文献１】「分散ハッシュテーブルの軽量な負荷分散手法の検討」  社団法人  電子情報通信学会  信学技報  ＩＮ２００３−１８９，２００４年２月
【発明の開示】
【発明が解決しようとする課題】
【０００８】
非特許文献１の技術を、コンテンツ配信システムに用いた、ピアツーピア型のコンテンツ配信システムにおいては、各ノード装置がコンテンツデータを保持するコンテンツ配信サーバとなり、また、各ノード装置がコンテンツ配信要求クライアントにもなる。
【０００９】
また、このようなコンテンツ配信システムにおいて、コンテンツ配信サーバであるノード装置がコンテンツデータを保持しているだけでなく、ネットワーク上の他のノード装置もコンテンツデータの複製を保持しているものが知られている。以下、コンテンツデータの複製を保持しているノード装置をコンテンツ保持ノード装置ともいう。コンテンツ配信要求クライアントであるノード装置は、要求するコンテンツをこのようなコンテンツ保持ノード装置から入手することもできる。したがって、あるコンテンツに対する配信要求が増加した場合に、コンテンツ配信サーバであるノード装置だけでなく、その複製を保持しているコンテンツ保持ノード装置からもコンテンツを配信できるため、コンテンツ配信サーバであるノード装置へのアクセスの集中を回避できるものである。以下、コンテンツ配信サーバを含めてコンテンツ保持ノード装置と呼ぶ。
【００１０】
上述のようにピアツーピア型のコンテンツ配信システムにおいては、複数のコンテンツ保持ノード装置の位置情報を記憶するノード装置（以下、「ルートノード装置」と呼ぶ。）が決められており、リクエストノード装置は要求するコンテンツを保持するコンテンツ保持ノード装置の位置情報（以下、「インデックス情報」と呼ぶ。）をルートノード装置に対して要求することによって、インデックス情報を取得し、このインデックス情報に基づいてコンテンツ保持ノード装置へコンテンツデータの配信要求を行う構成をとる。
【００１１】
しかしながら、ルートノード装置として決定されるノード装置がセットトップボックスのような記憶容量に厳しい制約をもつ装置である場合、記憶できるインデックス情報には限界が生じる。特に、人気コンテンツに関するルートノード装置となる場合には問題が大きい。
【００１２】
すなわち、人気コンテンツの場合、多数のリクエストノード装置のアクセスに対応できる数のコンテンツ保持ノード装置の位置情報を記憶する必要があるが、人気コンテンツに関するルートノード装置の場合には多数のコンテンツ保持ノード装置の位置情報を保持することが困難になる。
【００１３】
その結果、多数のリクエストノード装置のアクセスに対して同時に紹介できるコンテンツ保持ノード装置の数が限られてしまい、その数を超えたアクセスに対しては「要求拒絶」或いは「要求待機」といったかたちで応答することになる。このような状態となった場合、リクエストノード装置のユーザに対して不快感を与えることになってしまう。つまり、記憶できるコンテンツ保持ノード装置の位置情報の数に制限がある場合、コンテンツ配信要求に対する十分なコンテンツ保持ノード装置の紹介ができないという問題が生じる。
【００１４】
本発明は、以上の不都合に鑑みてなされたものであり、ネットワーク上に分散配置された複数の端末装置を有するＰ２Ｐ型のコンテンツ配信システムにおいて、セットトップボックスなどのように記憶容量が小さいノード装置であっても、ルートノード装置としての機能することができるコンテンツ配信システム及び方法等を提供することを課題とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、請求項１に記載の発明は、ネットワーク上に分散配置された複数のノード装置から構成され、前記ノード装置間でコンテンツデータの送受信を行うコンテンツ配信システムにおける前記ノード装置であって、前記複数のノード装置のうち一部のノード装置の識別情報と位置情報とを関連付けたルーティングテーブルを記憶するルーティングテーブル記憶手段と、前記ネットワークを介して受信したメッセージの宛先識別情報と前記ルーティングテーブルとに基づいて、前記受信したメッセージが自ノード装置宛であるか否かを判定するメッセージ宛先判定手段と、前記メッセージ宛先判定手段により前記ネットワークを介して受信したメッセージが自ノード装置宛ではないと判定されると、受信したメッセージの宛先識別情報に基づいて、転送先のノード装置の位置情報を前記ルーティングテーブルから取り出し、前記転送先のノード装置へ前記受信したメッセージを転送するメッセージ転送手段と、自ノード装置における管理対象のコンテンツデータを保持する管理対象コンテンツ保持ノード装置の位置情報である第１位置情報を記憶する管理情報記憶領域と、前記管理対象コンテンツ保持ノード装置の位置情報を保持するノード装置の位置情報である第２位置情報を記憶する拡張管理情報記憶領域とを有する配信元情報記憶手段と、前記メッセージ宛先判定手段により前記ネットワークを介して受信したメッセージが自ノード装置宛であり、かつコンテンツデータ配信元情報の送信要求であると判定されると、前記配信元情報記憶手段から第１位置情報と第２位置情報のいずれかを選択する配信元情報選択手段と、前記配信元情報選択手段によって前記第１位置情報を選択するとき、前記コンテンツデータ配信元情報を要求したノード装置へ前記第１位置情報を前記ネットワークを介して返信するコンテンツデータ配信元情報返信手段と、前記配信元情報選択手段によって前記第２位置情報を選択するとき、前記第２位置情報のノード装置へ前記コンテンツデータ配信元情報の送信要求を、前記ネットワークを介して転送するコンテンツデータ配信元情報送信要求転送手段とを備えたことを特徴とする。
【００１６】
また、請求項２に記載の発明は、請求項１に記載の発明において、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報を前記配信元情報記憶手段に保持するか否かを選択する位置情報管理手段を備え、前記位置情報管理手段は、前記配信元情報記憶手段への保持を選択したとき、前記管理対象コンテンツ保持ノード装置の位置情報を前記管理情報記憶領域に記憶し、前記配信元情報記憶手段への保持を選択しないとき、前記管理対象コンテンツ保持ノード装置の位置情報を含む管理対象コンテンツデータ配信元情報の保持要求を、前記ネットワークを介して他のノード装置へ送信し、前記他のノード装置の位置情報を前記拡張管理情報記憶領域に記憶することを特徴とする。
【００１７】
また、請求項３に記載の発明は、請求項２に記載の発明において、前記管理対象コンテンツ保持ノード装置から、前記ネットワークを介して前記管理対象コンテンツ保持ノード装置の位置情報を含むコンテンツデータ配信元情報の登録要求を受信するコンテンツデータ配信元情報受信手段を有し、前記位置情報管理手段は、前記コンテンツデータ配信元情報受信手段がコンテンツデータ配信元情報の登録要求を受信したとき、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したと判定することを特徴とする。
【００１８】
また、請求項４に記載の発明は、請求項２又は請求項３に記載の発明において、前記位置情報管理手段は、前記配信元情報記憶手段への保持を選択しないとき、前記管理対象コンテンツデータ配信元情報の保持要求を送信する前記ノード装置をランダムに決定することを特徴とする。
【００１９】
また、請求項５に記載の発明は、請求項２〜４のいずれか１項に記載の発明において、前記位置情報管理手段は、前記管理情報記憶領域に所定数の前記第１位置情報が記憶された状態で、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報を前記配信元情報記憶手段へ保持する選択をしないことを特徴とする。
【００２０】
また、請求項６に記載の発明は、請求項２〜５のいずれか１項に記載の発明において、前記位置情報管理手段は、自ノード装置宛の前記コンテンツデータ配信元情報の送信要求を、前記メッセージ宛先判定手段により単位時間あたり第１所定量以上を受信した場合、前記管理対象コンテンツ保持ノード装置の位置情報を前記配信元情報記憶手段へ保持する選択をしないことを特徴とする。
【００２１】
また、請求項７に記載の発明は、請求項２〜６のいずれか1項に記載の発明において、前記配信元情報記憶手段は、外部ノード装置から転送されてきた前記管理対象コンテンツ保持ノード装置の位置情報である第３位置情報を記憶する非管理情報記憶領域と、外部ノード装置から転送されてきた前記管理対象コンテンツ保持ノード装置の位置情報を保持させたノード装置の位置情報である第４位置情報を記憶する拡張非管理情報記憶領域とを有し、前記位置情報管理手段は、前記管理対象コンテンツデータ配信元情報の保持要求を前記ネットワークを介して受信したときに、前記非管理情報記憶領域に所定数以上の第３位置情報が記憶されていると判定すると、前記管理対象コンテンツデータ配信元情報の保持要求を更に転送し、前記他のノード装置の位置情報を前記第４位置情報として前記拡張非管理記憶領域に記憶することを特徴とする。
【００２２】
また、請求項８に記載の発明は、請求項２〜７のいずれか１項に記載の発明において、前記位置情報管理手段は、自ノード装置宛の前記コンテンツデータ配信元情報の送信要求を、前記メッセージ宛先判定手段により単位時間あたり第２所定量以上受信しない場合、前記拡張管理情報記憶領域に記憶された前記第２位置情報のうち少なくとも一つを削除するとともに、前記削除した第２位置情報に対応するノード装置へ前記コンテンツデータ配信元情報の保持取消の要求を行うことを特徴とする。
【００２３】
また、請求項９に記載の発明は、請求項２〜８のいずれか１項に記載の発明において、前記メッセージ宛先判定手段により前記ネットワークを介して受信したメッセージが自ノード装置宛であり、かつ前記コンテンツデータ配信元情報の送信要求であると判定すると、前記送信要求の発行時刻と前記送信要求を受信した時刻との差分が所定値未満の値であるか否かを判定する到達時間判定手段と、前記到達時間判定手段により前記差分が前記所定値未満の値であると判定すると、前記拡張管理情報記憶領域に記憶した前記第２位置情報を有するノード装置へ前記送信要求を転送し、前記到達時間判定手段により前記差分が前記所定値以上の値であると判定すると、前記管理情報記憶領域に記憶した前記第１位置情報を、前記送信要求を送信したノード装置へ返信する位置情報返信手段とを備えたことを特徴とする。
【００２４】
また、請求項１０に記載の発明は、請求項１〜９のいずれか１項に記載の発明において、前記管理情報記憶領域と前記拡張管理情報記憶領域とに記憶する位置情報の割合を変更する管理情報割合変更手段を設けたことを特徴とする。
【００２５】
また、請求項１１に記載の発明は、請求項１０に記載の発明において、前記管理情報割合変更手段は、自ノード装置宛の前記コンテンツデータ配信元情報の送信要求を、前記メッセージ宛先判定手段により単位時間あたり第３所定量以上を受信した場合に、前記拡張管理情報記憶領域に記憶する第２位置情報を増加させるように前記位置情報の割合を変更することを特徴とする。
【００２６】
また、請求項１２に記載の発明は、コンピュータに、請求項１〜１１のいずれか１項に記載のノード装置の各手段として機能させるためのプログラムであることを特徴とする。
【００２７】
また、請求項１３に記載の発明は、ネットワーク上に分散配置された複数のノード装置から構成され、前記ノード装置間でコンテンツデータの送受信を行うコンテンツ配信システムにおける前記ノード装置における情報処理方法において、前記ノード装置は、前記複数のノード装置のうち一部のノード装置の識別情報と位置情報とを関連付けたルーティングテーブルを記憶するルーティングテーブル記憶手段と、自ノード装置における管理対象のコンテンツデータを保持する管理対象コンテンツ保持ノード装置の位置情報である第１位置情報を記憶する管理情報記憶領域と、前記管理対象のコンテンツ保持ノード装置の位置情報を保持するノード装置の位置情報である第２位置情報を記憶する拡張管理情報記憶領域とを有する配信元情報記憶手段とを備え、前記ネットワークを介して受信したメッセージの宛先識別情報と前記ルーティングテーブルとに基づいて、前記受信したメッセージが自ノード装置宛であるか否かを判定するメッセージ宛先判定ステップと、前記ネットワークを介して受信したメッセージが自ノード装置宛ではないと判定されると、受信したメッセージの宛先識別情報に基づいて、転送先のノード装置の位置情報を前記ルーティングテーブルから取り出し、前記転送先のノード装置へ前記受信したメッセージを転送するメッセージ転送ステップと、前記ネットワークを介して受信したメッセージが自ノード装置宛であり、かつコンテンツデータ配信元情報の送信要求であると判定されると、前記配信元情報記憶手段から第１位置情報と第２位置情報のいずれかを選択する配信元情報選択ステップと、前記配信元情報選択手段によって前記第１位置情報を選択するとき、前記コンテンツデータ配信元情報を要求したノード装置へ前記第１位置情報を返信するコンテンツデータ配信元情報返信ステップと、前記配信元情報選択手段によって前記第２位置情報を選択するとき、前記第２位置情報のノード装置へ前記コンテンツデータ配信元情報の送信要求を転送するコンテンツデータ配信元情報送信要求転送ステップとを有することを特徴とする。
【発明の効果】
【００２８】
請求項1，１２，１３に記載の発明によれば、ノード装置は、複数のノード装置のうち一部のノード装置の識別情報と位置情報とを関連付けたルーティングテーブルを記憶するルーティングテーブル記憶手段と、自ノード装置の管理対象のコンテンツデータを保持する管理対象コンテンツ保持ノード装置の位置情報である第１位置情報を記憶する管理情報記憶領域と、管理対象のコンテンツ保持ノード装置の位置情報を保持するノード装置の位置情報である第２位置情報を記憶する拡張管理情報記憶領域とを有する配信元情報記憶手段とを備えている。そして、ネットワークを介して受信したメッセージが自ノード装置宛であり、かつコンテンツデータ配信元情報の送信要求であると判定されると、配信元情報記憶手段から第１位置情報と第２位置情報のいずれかを選択する。第１位置情報を選択するとき、コンテンツデータ配信元情報を要求したノード装置へ第１位置情報を返信し、配信元情報選択手段によって前記第２位置情報を選択するとき、第２位置情報のノード装置へコンテンツデータ配信元情報の送信要求を転送する。したがって、他のノード装置の情報記憶領域を利用することができ、セットトップボックスなどのように記憶容量が小さいノード装置であっても、ルートノード装置として機能させることができる。
【００２９】
また、請求項２に記載の発明によれば、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報を配信元情報記憶手段に保持するか否かを選択する。位置情報管理手段は、配信元情報記憶手段への保持を選択したとき、前記管理対象コンテンツ保持ノード装置の位置情報を管理情報記憶領域に記憶し、配信元情報記憶手段への保持を選択しないとき、前記管理対象コンテンツ保持ノード装置の位置情報を含む管理対象コンテンツデータ配信元情報の保持要求を、ネットワークを介して他のノード装置へ送信し、当該他のノード装置の位置情報を拡張管理情報記憶領域に記憶するので、他のノード装置の情報記憶領域に管理対象コンテンツ保持ノード装置の位置情報を記憶させておくことができ、セットトップボックスなどのように記憶容量が小さいノード装置であっても、ルートノード装置として機能させることができる。
【００３０】
また、請求項３に記載の発明によれば、コンテンツデータ配信元情報受信手段がコンテンツデータ配信元情報の登録要求を受信したとき、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したと判定するので、請求項２に示すようにコンテンツ保持ノード装置の追加を自律的に行う仕組みを持たなくても管理対象コンテンツ保持ノード装置の位置情報の管理が可能となる。
【００３１】
また、請求項４に記載の発明によれば、配信元情報記憶手段への保持を選択しないとき、前記管理対象コンテンツデータ配信元情報の保持要求を送信するノード装置をランダムに決定するので、管理対象コンテンツ保持ノード装置の位置情報を記憶させる他のノードを紹介するような管理サーバ装置が不要となる。
【００３２】
また、請求項５に記載の発明によれば、管理情報記憶領域に所定数の前記第１位置情報が記憶された状態で、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報を前記配信元情報記憶手段へ保持する選択をしないようにしているので、管理対象コンテンツ保持ノード装置の位置情報を所定数記憶した後は、他のノード装置の情報記憶領域に管理対象コンテンツ保持ノード装置の位置情報を記憶させることができる。
【００３３】
また、請求項６に記載の発明によれば、位置情報管理手段は、自ノード装置宛のコンテンツデータ配信元情報の送信要求を、メッセージ宛先判定手段により単位時間あたり第１所定量以上を受信した場合、管理対象コンテンツ保持ノード装置の位置情報を配信元情報記憶手段へ保持する選択をしないので、多数のリクエストノード装置からアクセスがあるようなコンテンツのルートノード装置となった場合であっても、他のノード装置の情報記憶領域に管理対象コンテンツ保持ノード装置の位置情報を記憶させておき、この他のノード装置にリクエストノード装置からのコンテンツデータ配信元情報の送信要求に応答させることができる。したがって、ルートノード装置へ負荷が集中するのを回避することができると共に、セットトップボックスなどのように記憶容量が小さいノード装置であっても、ルートノード装置として機能させることができる。
【００３４】
また、請求項７に記載の発明によれば、配信元情報記憶手段には、さらに、他のノード装置から転送されてきた前記管理対象コンテンツ保持ノード装置（自ノード装置の管理対象ではないコンテンツデータを保持している非管理対象コンテンツ保持ノード装置）の位置情報である第３位置情報を記憶する非管理情報記憶領域と、他のノード装置から転送されてきた前記管理対象コンテンツ保持ノード装置の位置情報を保持させたノード装置の位置情報である第４位置情報を記憶する拡張非管理情報記憶領域とを有している。そして、前記管理対象コンテンツデータ配信元情報の保持要求をネットワークを介して受信したときに、非管理情報記憶領域に所定数以上の第３位置情報が記憶されていると判定すると、前記管理対象コンテンツデータ配信元情報の保持要求を更に転送し、前記他のノード装置の位置情報を第４位置情報として拡張非管理記憶領域に記憶するので、ルートノード装置から非管理対象コンテンツ保持ノード装置の位置情報の記憶を依頼された場合であっても、さらに別のノード装置に非管理対象コンテンツ保持ノード装置の位置情報を記憶させることができ、それを利用することができる。
【００３５】
また、請求項８に記載の発明によれば、自ノード装置宛のコンテンツデータ配信元情報の送信要求を単位時間あたり第２所定量以上受信しない場合、拡張管理情報記憶領域に記憶された第２位置情報のうち少なくとも一つを削除するとともに、削除した第２位置情報に対応するノード装置へコンテンツデータ配信元情報の保持取消の要求を行うので、他のノード装置の情報記憶領域に管理対象コンテンツ保持ノード装置の位置情報を記憶させている場合であっても、リクエストノード装置からのコンテンツデータ配信元情報の送信要求が少なければ、前記他のノード装置の情報記憶領域に記憶させた位置情報を削除することができる。すなわち、コンテンツデータ配信元情報の送信要求が自ルートノード装置の管理情報記憶領域で対応できる数となっている場合には、他のノード装置の情報記憶領域に記憶させた情報を削除することによって、他のノード装置に不必要な情報を記憶させないことができ、したがって、記憶領域を有効活用することができる。
【００３６】
また、請求項９に記載の発明によれば、ネットワークを介して受信したメッセージが自ノード装置宛であり、かつコンテンツデータ配信元情報の送信要求であると判定すると、当該送信要求の発行時刻と送信要求を受信した時刻との差分が所定値未満の値であるか否かを判定し、当該差分が所定値未満の値であると判定すると、拡張管理情報記憶領域に記憶した第２位置情報を有するノード装置へ前記送信要求を転送し、前記差分が所定値未満の値であると判定すると、管理情報記憶領域に記憶した第１位置情報を、送信要求を送信したノード装置へ返信する。すなわち、到達までの時間が短いコンテンツデータ配信元情報の送信要求に対しては、他のノードに応答させ、到達までの時間が長い送信要求に対しては、自ノード装置が応答することができるため、コンテンツデータ配信元情報の送信要求に対する応答時間を平準化することができる。
【００３７】
また、請求項１０に記載の発明によれば、管理情報記憶領域と拡張管理情報記憶領域とに記憶する位置情報の割合を変更する管理情報割合変更手段を設けたので、使用環境に応じて最適なルートノード装置を提供することができる。たとえば、人気のあるコンテンツを管理するルートノード装置の場合でも管理情報記憶領域に比べて拡張管理情報記憶領域を多くとることによって、他のノード装置により多くコンテンツデータ配信元情報の送信要求の返答をさせることができるため、「要求拒絶」或いは「要求待機」といった状態を可及的に回避することができる。
【００３８】
また、請求項１１に記載の発明によれば、自ノード装置宛の前記コンテンツデータ配信元情報の送信要求を、単位時間あたり第３所定量以上を受信した場合に、拡張管理情報記憶領域に記憶する第２位置情報を増加させるように位置情報の割合を変更するので、人気のあるコンテンツを管理するルートノード装置の場合でも他のノード装置により多くコンテンツデータ配信元情報の送信要求の返答をさせることができるため、「要求拒絶」或いは「要求待機」といった状態を可及的に回避することができる。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、配信する情報を音楽データや映像データなどのコンテンツデータとしたコンテンツ配信システムに対して本発明を適用した場合の実施形態である。
【００４０】
［１．コンテンツ配信システムの構成等］
まず始めに、図１を参照して、情報配信システムとしてのコンテンツ配信システムの概要構成等について説明する。図１は、本実施形態に係るコンテンツ配信システムにおける端末装置である各ノード装置の接続態様の一例を示す図である。このコンテンツ配信システムは、ネットワーク上に分散配置された複数のノード装置から構成され、ノード装置間でコンテンツデータの送受信を行うものである。
【００４１】
図１の下部枠101内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、および通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界のネットワーク）８が構築されている。なお、ＤＳＬ回線業者の装置には、ＲＡＤＳＬ（Rate adaptive Asymmetric Digital Subscriber Line）回線の装置も含まれる。
【００４２】
コンテンツ配信システムＳは、図１の上部枠100内に示すように、ネットワーク８を介して相互に接続された本発明の端末装置としての複数のノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・・を備えて構成され、ピアツーピア（Ｐ２Ｐ）方式のネットワークシステムとなっている。各ノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・には、ノード装置を示す情報としての固有の製造番号（たとえば、ＭＡＣアドレス）およびＩＰ（Internet Protocol）アドレス（本発明における位置情報）が割り当てられている。なお、製造番号およびＩＰアドレスは、複数のノード装置１間で重複しないものである。また、以下の説明において、ノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・・のうち何れかのノード装置を示す場合には、便宜上、ノード装置１という場合がある。
【００４３】
［１．１．ＤＨＴの概要］
以下に、本実施形態に係る分散ハッシュテーブル（以下、「ＤＨＴ」（Distributed Hash Table）と呼ぶ。）を利用したアルゴリズムについて説明する。
【００４４】
上述したコンテンツ配信システムＳにおいて、当該ノード装置１同士が、互いに情報をやり取りする際には、お互いの位置情報としてのＩＰアドレスを知っていなければならない。
【００４５】
例えば、コンテンツを互いに共有するシステムにおいては、ネットワーク８に参加している各ノード装置１が互いにネットワーク８に参加している全てのノード装置１のＩＰアドレスを知っておくのが単純な手法であるが、端末数が何万何十万と多数になると、その全てのノード装置１のＩＰアドレスを覚えておくのは現実的ではない。また、任意のノード装置の電源が頻繁にＯＮ或いはＯＦＦとすると、各ノード装置１において記憶している当該任意のノード装置のＩＰアドレスの更新が頻繁になり、運用上困難となる。
【００４６】
そこで、１台のノード装置１では、ネットワーク８に参加している全てのノード装置１のうち、必要最低限の一部のノード装置１のＩＰアドレスだけを記憶しておき、ＩＰアドレスを記憶していないノード装置１については、各ノード装置１間で互いに情報を転送し合うことによりコンテンツを届けるシステムが考案されている。
【００４７】
このようなシステムの一例として、ＤＨＴを利用したアルゴリズムによって、図１の上部枠100内に示すような、オーバーレイネットワーク９が構築されることになる。つまり、このオーバーレイネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するネットワークを意味する。
【００４８】
本実施形態においては、ＤＨＴを利用したアルゴリズムによって構築されたオーバーレイネットワーク９を前提としており、このオーバーレイネットワーク９上に配置されたノード装置１を、コンテンツ配信システムＳに参加（言い換えれば、オーバーレイネットワーク９に参加）しているノード装置１という。なお、コンテンツ配信システムＳへの参加は、未だ参加していないノード装置が、既に参加している任意のノード装置１に対して参加要求を送ることによって行われる。
【００４９】
コンテンツ配信システムＳに参加している各ノード装置１の識別番号であるノードＩＤとして、それぞれのノード装置１毎にユニークな番号（固有番号）を付与する。この番号は、ノード装置の最大運用台数を収容できるだけのbit数を持たせる必要がある。例えば、128bitの番号とすれば、２128＝340×1036台のノード装置を運用できる。
【００５０】
より具体的には、各ノード装置１のノードＩＤは、それぞれのノード装置１のＩＰアドレスあるいは製造番号等のノード装置１毎に固有の値を、共通のハッシュ関数（ハッシュアルゴリズム）によりハッシュ化して得たハッシュ値であり、一つのＩＤ空間に偏りなく分散して配置されることになる。このように共通のハッシュ関数によりハッシュ化されて求められたノードＩＤは、当該ＩＰアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。また、本実施形態では、ＩＰアドレス（グローバルＩＰアドレス）を共通のハッシュ関数によりハッシュ化した値をノードＩＤとする。
【００５１】
また、コンテンツ配信システムＳに参加している複数のノード装置１には、一のノード装置１から他のノード装置１に配信される共用情報としてのコンテンツデータ（例えば、音楽データ、映画データ、文書データ等）が分散して記憶されているが、当該コンテンツデータにも、それぞれのコンテンツデータ毎の固有の識別番号（以下、「コンテンツＩＤ」と呼ぶ。）を付与する。
【００５２】
そして、当該コンテンツＩＤは、ノードＩＤと同様の長さ（例えば、128bit等）とし、例えば、コンテンツの名称（コンテンツタイトル）やコンテンツの概要情報（あらすじ）等のキーワードが、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化され（つまり、ノード装置１のＩＰアドレスのハッシュ値と同一のＩＤ空間に配置）、そのハッシュ値と最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノード装置１が、コンテンツデータを保持するノード装置１（以下、「コンテンツ保持ノード装置」と呼ぶ。）へのリンク情報、すなわちコンテンツ保持ノード装置の位置情報であるＩＰアドレスを保持する。このコンテンツ保持ノード装置は、一定の規則の下（例えば、ルートノード装置がランダムに選択する規則の下）で決定される。これにより、コンテンツデータが偏りなくコンテンツ配信システムＳ上に分散して配置される。なお、異なるコンテンツデータであっても、同一のキーワード（例えば、コンテンツの名称）になる場合が想定されるが、この場合、同じハッシュ値になってしまうので、これを避けるために、ハッシュ化するキーワードを、例えば、コンテンツの名称と著作権情報（例えば、出演者名、監督名、原作者名、歌手名、作曲者名、または作詞者名等）の組み合わせとすればよい。
【００５３】
このように、各ノード装置１および各コンテンツデータに付与されたノードＩＤおよびコンテンツＩＤは、共通のハッシュ関数によって生成するため、図２に示す如く、同一のリング状のＩＤ空間上にさほど偏ることなく、散らばって存在するものとして考えることができる。同図は32bitでノードＩＤおよびコンテンツＩＤを付与し、図示したものである。図中丸点はノードＩＤを、四角形はコンテンツＩＤを示し、反時計回りでＩＤが増加するものとする。
【００５４】
次に、どのノード装置１に、どのコンテンツデータが保持されるかを、一定の規則の下に決定する。本実施形態においては、「あるコンテンツＩＤを有するコンテンツデータを管理するノード装置１は、そのコンテンツＩＤに近いノードＩＤを有するノード装置１である」という規則とする。ここで、「近い」ことの定義は、当該コンテンツＩＤを超えず、コンテンツＩＤとノードＩＤとの差が一番少ないものとするが、実際には、各コンテンツデータの管理を各ノード装置１に割り振る際に、一貫していればよい。図２に示す例では、この定義に基づいて、コンテンツＩＤａは、当該コンテンツＩＤａに近いノードＩＤ（以下、「ノードＩＤａ」と呼ぶ。）を有するノード装置１に管理され、コンテンツＩＤｂは、当該コンテンツＩＤｂに近いノードＩＤ（以下、「ノードＩＤｂ」と呼ぶ。）を有するノード装置１に管理され、コンテンツＩＤｃは、当該コンテンツＩＤｃに近いノードＩＤ（以下、「ノードＩＤｃ」と呼ぶ。）を有するノード装置１に管理される。
【００５５】
なお、ここで「管理」というのは、コンテンツデータを保持していることを意味するのではなく、「コンテンツデータが何れのノード装置１に保持されているかを知っている」ことを意味する。すなわち、図２において、ノードＩＤａを有するノード装置１は、コンテンツＩＤａを有するコンテンツデータが何れのノード装置１に保持されているかを知っており、ノードＩＤｂを有するノード装置１およびノードＩＤｃを有するノード装置１も同様にそれぞれコンテンツＩＤｂを有するコンテンツデータおよびコンテンツＩＤｃを有するコンテンツデータが何れのノード装置１に保持されているかを知っている、ということになる。このように、あるコンテンツデータが何れのノード装置１に保持されているかを知っているノード装置１を、そのコンテンツデータのルートノード装置と呼ぶ。つまり、ノードＩＤａを有するノード装置１は、コンテンツＩＤａを有するコンテンツデータのルートノード装置であって、ノードＩＤｂを有するノード装置１は、コンテンツＩＤｂを有するコンテンツデータのルートノード装置であって、ノードＩＤｃを有するノード装置１は、コンテンツＩＤｃを有するコンテンツデータのルートノード装置である。
【００５６】
また、コンテンツ配信システムＳには、コンテンツ配信システムＳ内のノード装置をコンテンツ保持ノード装置とするためにコンテンツデータをルートノード装置へ配布する機能と、カタログリストを生成してノード装置へ提供する機能を有するコンテンツ管理装置１０が設けられている。
【００５７】
［１．２．ルーティングテーブルの作成］
ここで、図３を参照して、ＤＨＴで用いるルーティングテーブルの作成手法の一例について説明する。図３は、ＤＨＴによってルーティングテーブルが作成される様子の一例を示す図である。
【００５８】
まず、図３（ａ）に示す如く、ＩＤ空間を幾つかのエリアに分割する。実際には、16分割程度が良く用いられるが、説明を簡単にするためここでは４分割とし、ＩＤをビット長８bitの４進数で表すことにする。そして、ノード装置１ＮのノードＩＤを「1133」とし、このノード装置１Ｎのルーティングテーブルを作る例について説明する。
【００５９】
（レベル１のルーティング）
まず、ＩＤ空間を４分割とした場合、それぞれのエリアは４進数で表すと最大桁が異なる４つのエリア「0XXX」「1XXX」、「2XXX」、「3XXX」（Ｘは０から３の自然数、以下同様。）で分けられる。ノード装置１Ｎは、当該ノード装置１Ｎ自身のノードＩＤが「1133」であるため、図３（ａ）中左下「1XXX」のエリアに存在することになる。そして、ノード装置１Ｎは、自分の存在するエリア（すなわち、「1XXX」のエリア）以外のエリア（すなわち、「0XXX」のエリア、「2XXX」のエリア、「3XXX」のエリア）に存在するノード装置１を適当に選択し、当該ノードＩＤの位置情報、すなわち、当該ノードＩＤのＩＰアドレスをレベル１のテーブルに記憶する。図４がレベル１のテーブルの一例である。このテーブルでは、「0XXX」のエリアのノードＩＤとして「0100」、「2XXX」のエリアのノードＩＤとして「2133」、「3XXX」のエリアのノードＩＤとして「3213」がそれぞれ選択されている状態を示している。なお、当該レベル１の２列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを記憶する必要は無い。
【００６０】
（レベル２のルーティング）
次に、図３（ｂ）に示す如く、上記ルーティングによって４分割したエリアのうち、自分の存在するエリア「11xx」を更に４分割し、更に４つのエリア「10XX」「11XX」、「12XX」、「13XX」と分ける。そして、上記と同様に自分の存在するエリア「11xx」以外のエリアに存在するノード装置１を適当に選択し、当該ノードＩＤの位置情報であるＩＰアドレスをレベル２のテーブルに記憶する。図４がレベル２のテーブルの一例である。このテーブルでは、「10XX」のエリアのノードＩＤとして「1003」、「12XX」のエリアのノードＩＤとして「1221」が、「13XX」のエリアのノードＩＤとして「1313」がそれぞれ選択されている状態を示している。なお、レベル２の２列目はノード装置１Ｎが存在するエリア「11XX」であり、後述するレベル３にてテーブル化されるためＩＰアドレスを記憶していない。また、上記エリアにノード装置が存在しない場合には、ノードＩＤ及びＩＰアドレスの欄は空白となる。
【００６１】
（レベル３のルーティング）
さらに、上記ルーティングによって４分割したエリアのうち、自分の存在するエリア「113X」を更に４分割し、更に４つのエリア「110X」「111X」、「112X」、「113X」と分ける。そして、上記と同様に自分の存在するエリア「113X」以外のエリアに存在するノード装置１を適当に選択し、当該ノードＩＤの位置情報であるＩＰアドレスをレベル３のテーブルに記憶する。図４がレベル３のテーブルの一例である。レベル３の４列目はノード装置１Ｎが存在するエリアであり、後述するレベル４にてテーブル化されるためＩＰアドレスを記憶していない。また、上記エリアにノード装置が存在しない場合には、ノードＩＤ及びＩＰアドレスの欄は空白となる。
【００６２】
このようにして、レベル４まで同様にルーティングテーブルを図４に示す如く作成することにより、８bitのＩＤ全てを網羅することができる。レベルが上がる毎にテーブルの中に空白が目立つようになる。
【００６３】
以上説明した手法に従って作成したルーティングテーブルを、全てのノード装置１が夫々作成して所有することになる。このように、各ノード装置１は、コンテンツ配信システムＳにおける複数のノード装置１のうち一部のノード装置１のノードＩＤ（識別情報）とＩＰアドレス（位置情報）とを関連付けたルーティングテーブルを有しており、このルーティングテーブルは後述のルーティングテーブル記憶手段に記憶される。
【００６４】
［１．３．コンテンツデータの検索方法］
次に、図５を参照して、コンテンツデータを保持しているノード装置１の検索方法の一例について説明する。図５は、ＤＨＴによりコンテンツデータを保持しているノード装置１が検索される様子の一例を示す図である。
【００６５】
ここでは、ノードＩＤ「1133」のノード装置１Ｎが、コンテンツＩＤ「3020」を有するコンテンツデータを探す際の手順について説明する。なお、以下このようにコンテンツデータを探し、コンテンツデータの受信を要求するノード装置を「リクエストノード装置」と呼ぶ。
【００６６】
リクエストノード装置１Ｎは、自己が保持しているルーティングテーブルのレベル１のテーブルを参照して、コンテンツＩＤ「3020」と同じエリアのノードＩＤを持つノード装置のノードＩＤを宛先識別情報としてコンテンツデータ配信元情報（コンテンツ保持ノード装置の位置情報を含む情報）の送信要求（以下、「コンテンツ検索メッセージ」と呼ぶ。）を送信する。すなわち、コンテンツＩＤ「3020」は「3XXX」のエリアであるため、当該「3XXX」のエリアに属すノード装置１のうち、ＩＰアドレスを知っている（すなわち、自己が保持しているルーティングテーブルにＩＰアドレスが記憶されている）ノード装置１Ａ（ノードＩＤ「3213」）に対してコンテンツ検索メッセージを送信する。このように、コンテンツ検索メッセージはコンテンツに対応する固有の識別情報であるコンテンツＩＤを含むものであり、このコンテンツＩＤはコンテンツ検索メッセージにおいて宛先識別情報として用いられる。
【００６７】
図５に示す例によれば、ノードＩＤが「3213」であるノード装置１ＡのＩＰアドレスがリクエストノード装置１Ｎのルーティングテーブル（図４参照。）に記憶されているので、リクエストノード装置１Ｎは、ノードＩＤが「3213」であるノード装置１Ａに対してコンテンツ検索メッセージを送信する。
【００６８】
次に、コンテンツ検索メッセージを受信したノード装置１Ａは、このコンテンツ検索メッセージが自ノード装置１Ａ宛のメッセージであるか否かを判定する。自ノード装置１Ａ宛のメッセージであるか否かは、宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、宛先識別情報が自ノード装置１Ａの識別情報と近いか否かが判定される。即ち、宛先識別情報に対して、ノード装置１Ａ自身が保持しているルーティングテーブルに記憶されているノード装置の識別情報から、一番近いノード装置の識別情報が、自身であるか他のノード装置であるかを判定する。ここでは、自ノード装置１Ａの識別情報よりも他のノード装置の識別情報の方が、宛先識別情報に近いため、ノード装置１Ａは、当該ノード装置１Ａ自身が保持しているルーティングテーブルのレベル２のテーブルを参照して、「30XX」のエリアに属すノード装置１のうち、ＩＰアドレスを知っているノード装置１Ｂ（ノードＩＤ「3031」）に対してコンテンツ検索メッセージを転送する。
【００６９】
このように、コンテンツＩＤの桁を上から順に適合していく要領でコンテンツ検索メッセージの転送が進み、最終的に当該コンテンツデータを管理するノード装置１Ｃ、すなわちルートノード装置に辿り着くと、当該ルートノード装置は、コンテンツ検索メッセージに含まれるコンテンツＩＤ「3020」を、自身が管理している後述のインデックス情報の中から検索し、当該コンテンツデータを所有しているコンテンツ保持ノード装置１のＩＰアドレス等をリクエストノード１Ｎに返信するようになっている。なお、コンテンツ検索メッセージなどのメッセージを目的のノード装置へ辿り着くまでに、上述のように転送する仕組みをＤＨＴルーティングと呼ぶ。
【００７０】
こうして、リクエストノード装置１Ｎは、上記ルートノード装置１Ｃから、コンテンツＩＤ「3020」のコンテンツデータの位置情報、即ち、コンテンツＩＤ「3020」のコンテンツデータを保持するコンテンツ保持ノード装置１のＩＰアドレスを受信して知ることになり、当該コンテンツ保持ノード装置１から、そのコンテンツデータをダウンロードして取得することになる。
【００７１】
［１．４．インデックステーブルへの登録方法］
このような構成のコンテンツ配信システムＳの中で、新しいコンテンツデータをコンテンツ配信システムＳ上の他のノード装置に見えるように公開する際の手法について述べる。
【００７２】
本実施形態におけるコンテンツ配信システムＳは、図２に示すように、コンテンツ管理装置１０が各ルートノード装置に対して、各ルートノード装置ごとに管理対象コンテンツのコンテンツデータを送信する。コンテンツ管理装置１０から管理対象のコンテンツデータを受信したルートノード装置は、後述の第２記憶部１０４に受信したコンテンツデータを記憶する。その後、当該コンテンツデータを保持すべきノード装置のノードＩＤを決定し、当該ノードＩＤを有するノード装置に対してコンテンツデータを保持するように要求する。当該コンテンツデータ保持要求を受信したノード装置は、コンテンツデータ保持要求と共に送られるコンテンツデータを保持してコンテンツ保持ノード装置として機能する。また、コンテンツデータ保持要求を受信したノード装置は、ルートノード装置に対して、登録メッセージを送信する。ルートノード装置は、コンテンツ保持ノード装置から送信される登録メッセージに含まれる当該コンテンツ保持ノード装置の位置情報であるＩＰアドレスを取得し、インデックステーブル１２０へ登録する。このようにルートノード装置のインデックステーブル１２０にコンテンツ保持ノード装置の位置情報であるＩＰアドレスが登録されると、以後リクエストノード装置からのコンテンツ検索メッセージに対してインデックステーブルに登録したコンテンツ保持ノード装置の位置情報をリクエストノード装置へ返信する。このようにして本実施形態では、コンテンツ管理装置から配布されたコンテンツをコンテンツ保持ノード装置に登録し、ルートノード装置を介して検索できる様にすることで、他のノード装置にコンテンツを公開する。
【００７３】
なお、ルートノード装置１がコンテンツ保持ノード装置となるべきノード装置を決定して管理対象コンテンツデータを配布するのではなく、たとえば、以下のように、コンテンツ管理装置１０がコンテンツ保持ノード装置となるべきノード装置を決定して管理対象コンテンツデータを配布するようにしてもよい。そして、当該コンテンツデータを配布されたコンテンツ保持ノード装置は、当該コンテンツ保持ノード装置の位置情報であるＩＰアドレスを含むコンテンツデータ配信元情報の登録要求メッセージ（以下、「登録メッセージ」と呼ぶ。）を、コンテンツのタイトル等から求めたコンテンツＩＤと同じノードＩＤを持つノード装置に向けて（このノード装置が実在するか否かはこの時点ではわからない。）送信する。そして、この登録メッセージも、上記コンテンツ検索メッセージと同様にルーティングテーブルに従って、次々と転送されていき、当該登録メッセージに含まれるコンテンツＩＤに最も近いノードＩＤを有するノード装置１まで転送されたところで、そのノード装置１がもはや送信先のノード装置が他にないと判断すると、当該ノード装置１自身がそのコンテンツのルートノード装置となるべきだと判断し、図６に示すように、当該登録メッセージに含まれるコンテンツデータ配信元情報である当該コンテンツＩＤ、コンテンツ保持ノード装置のＩＰアドレス、及び補助情報（タイトル、ジャンル、拡張情報等の属性情報や、監督名等の著作権情報やストリーミング時間等）をインデックス情報としてインデックステーブル１２０に記憶する。
【００７４】
インデックステーブル１２０は、図７に示すように、コンテンツ保持ノード装置の位置情報（所在情報）であるＩＰアドレスなどを含むコンテンツデータ配信元情報を記憶するためのテーブルであり、後述の配信元情報記憶手段に記憶されるテーブルである。このインデックステーブル１２０には、コンテンツ保持ノード装置のＩＰアドレスのほか、コンテンツＩＤと、コンテンツＩＤに対応するコンテンツデータをストリーミング配信するのに必要な時間（単位：秒。以下、「ストリーミング時間」と呼ぶ。）と、コンテンツ保持ノード装置を紹介した時刻とがコンテンツデータ配信元情報として１行（所定記憶エリア）ごとに記憶される。
【００７５】
さらに、このインデックステーブル１２０には、属性情報として、このインデックステーブル１２０内に直接コンテンツデータ配信元情報を保持するのか、或いは他のノード装置（以下、「外部ノード装置」と呼ぶ。）へインデックステーブル１２０を拡張しているのかを示すフラグが設けられている。すなわち、コンテンツデータ配信元情報を直接記憶しているのか外部ノードに記憶しているのかを示すフラグの情報が１行ごとに記憶される。なお、図７に示すインデックステーブル１２０は、図５中のノードＩＤ「3011」のノード装置１Ｃが有するものとする。すなわち、コンテンツＩＤ「3020」を有するコンテンツデータのルートノード装置１Ｃのインデックステーブル１２０である。
【００７６】
また、このインデックステーブル１２０は、自身が保持するコンテンツデータの所在情報（Ａ）、すなわち管理対象コンテンツデータを保持するコンテンツ保持ノード装置（以下、「管理対象コンテンツ保持ノード装置」と呼ぶ。）の位置情報である第１位置情報Ａを記憶する管理情報記憶領域を有している。ここでは、ルートノード装置が管理するコンテンツに関する記憶領域なので、コンテンツＩＤは「3020」となっている。また、外部ノード装置が保持する管理対象コンテンツの所在情報（Ｂ）、すなわち管理対象コンテンツ保持ノード装置の位置情報を保持するノード装置の位置情報である第２位置情報Ｂを記憶する拡張管理情報記憶領域と有している。ここにおいても、ルートノード装置が管理するコンテンツに関する記憶領域なので、コンテンツＩＤは「3020」となっている。
【００７７】
第１位置情報Ａにはフラグとして「Direct」を示す情報（自ルートノード装置が管理対象コンテンツ保持ノード装置の位置情報を記憶していることを示す情報）が、第２位置情報Ｂにはフラグとして「Extension」を示す情報（外部ノード装置が管理対象コンテンツ保持ノード装置の位置情報を記憶していることを示す情報）が関連付けられてインデックステーブル１２０に記憶される。
【００７８】
さらに、このインデックステーブル１２０には、自ルートノード装置１Ｃの管理対象ではないコンテンツデータであって、外部ノード装置から委託されたコンテンツデータ（以下、「非管理対象コンテンツデータ」と呼ぶ。ここでは、コンテンツＩＤ「2110」、「0130」を有するコンテンツであるものとする。）の所在情報（Ｃ）、すなわち外部ノード装置１から転送される非管理対象コンテンツデータを保持するコンテンツ保持ノード装置（以下、「非管理対象コンテンツ保持ノード装置」と呼ぶ。）の位置情報である第３位置情報Ｃを記憶する非管理情報記憶領域を有している。また、自ルートノード装置１Ｃが外部ノード装置から委託された非管理対象コンテンツ保持ノード装置の位置情報をさらに他の外部ノード装置へ保持させるときの当該他の外部ノード装置の所在情報（Ｄ）、すなわち、外部ノード装置１から転送される非管理対象コンテンツ保持ノード装置の位置情報をさらに転送して当該非管理対象コンテンツ保持ノード装置の位置情報を保持させたノード装置の位置情報である第４位置情報Ｄを記憶する拡張非管理情報記憶領域を有している。
【００７９】
そして、上記の如く構成されたインデックステーブルを用いることにより、セットトップボックスなどのように記憶容量が小さいノード装置であっても、ルートノード装置として機能させることができる。以下、図面を参照して具体的に説明する。図８はルートノード装置のインデックステーブルと外部ノード装置のインデックステーブルとの関連の一例を示す図である。
【００８０】
図８に示すように、ルートノード装置１Ｄのインデックステーブル１２０Ｄは、複数の外部ノード装置１Ｅ〜１Ｉのインデックステーブル１２０Ｅ〜１２０Ｉと関連付けられている。すなわち、ルートノード装置１Ｄのインデックステーブル１２０Ｄは、外部ノード装置１Ｅ及び外部ノード装置１Ｆの位置情報を第２位置情報Ｂとして記憶しており、一方、外部ノード装置１Ｅ及び外部ノード装置１Ｆは、ルートノード装置１Ｄの管理対象コンテンツであるコンテンツデータを保持するコンテンツ保持ノード装置（外部ノード装置１Ｅ及び外部ノード装置１Ｆからみて管理対象コンテンツ保持ノード装置でないコンテンツ保持ノード装置。以下、「非管理対象コンテンツ保持ノード装置」と呼ぶ。）の位置情報を拡張管理情報記憶領域に第３位置情報Ｃとして記憶している。したがって、ルートノード装置１Ｄは、管理対象コンテンツ保持ノード装置の位置情報を記憶するための管理情報記憶領域の容量が小さい場合であっても、外部ノード装置１Ｅ，１Ｆ等のインデックステーブルに管理対象コンテンツ保持ノード装置の位置情報を記憶することができることになる。
【００８１】
さらに、外部ノード装置１Ｆのインデックステーブル１２０Ｆには、外部ノード装置１Ｇ及び外部ノード１Ｈの位置情報を第４位置情報Ｄとして記憶しており、一方、外部ノード装置１Ｇ及び外部ノード１Ｈは、ルートノード装置１Ｄの管理対象コンテンツであるコンテンツデータを保持する非管理対象コンテンツ保持ノード装置の位置情報を拡張管理情報記憶領域に第３位置情報Ｃとして記憶している。したがって、外部ノード装置１Ｆは、コンテンツ保持ノード装置の位置情報を記憶するための非管理情報記憶領域の容量が小さい場合であっても、さらに外部ノード装置１Ｇ等のインデックステーブルに非管理対象コンテンツ保持ノード装置の位置情報を記憶することができることになる。
【００８２】
このように本実施形態におけるノード装置１には、第１位置情報〜第４位置情報を記憶する領域を設けており、これによりルートノード装置１Ｄや外部ノード装置１Ｅ等のインデックステーブルの容量が大きくできない場合であっても、増大するコンテンツ保持ノード装置の位置情報をリクエストノードへ返信することが可能となる。
【００８３】
また、ルートノード装置１Ｄに、配信元情報追加イベントが発生したとき、たとえば、後述のようにコンテンツ保持ノード装置の位置情報を追加すべきタイミングとなったとき、たとえば、次のようにインデックステーブル１２０Ｉを有する外部ノード装置１Ｉへコンテンツデータ配信元情報が記憶される。
【００８４】
すなわち、ルートノード装置１Ｄは、配信元情報追加イベントが発生、すなわち管理対象コンテンツ保持ノード装置の位置情報を記憶すべきタイミングになると、この記憶すべき管理対象コンテンツ保持ノード装置の位置情報を自ルートノード装置１Ｄのインデックステーブル１２０Ｄに記憶（保持）するか否かを選択する。
【００８５】
ルートノード装置１Ｄは、自ルートノード装置１Ｄのインデックステーブル１２０Ｄへ管理対象コンテンツ保持ノード装置の位置情報の保持することを選択したとき、管理対象コンテンツ保持ノード装置から受信したコンテンツデータ配信元情報に含まれる管理対象コンテンツ保持ノード装置の位置情報を管理記憶領域に第１位置情報として記憶する。
【００８６】
一方、ルートノード装置１Ｄは、自ルートノード装置１Ｄのインデックステーブル１２０Ｄへ管理対象コンテンツ保持ノード装置の位置情報を保持する選択をしないとき、すなわち外部ノード装置のインデックステーブルへ管理対象コンテンツ保持ノード装置の位置情報を保持させる選択をすると、他のノード装置としてインデックステーブル１２０Ｆを有するノード装置１Ｆを選択し、ノード装置１Ｆに対してインデックス拡張要求メッセージを送信する。このインデックス拡張要求メッセージに対して、ノード装置１Ｆから肯定的な応答が返信されると、このノード装置１Ｆに対して、管理対象コンテンツ保持ノード装置の位置情報及びコンテンツＩＤを含む配信元情報追加要求メッセージを送信すると共に、外部ノード装置１Ｆの位置情報を第２位置情報として拡張管理記憶領域へ記憶する。なお、図８においては、ルートノード装置１Ｄは、外部ノード装置１Ｆのインデックステーブルへ管理対象コンテンツ保持ノード装置の位置情報の保持を選択していることを示している。
【００８７】
ノード装置１Ｆは、ルートノード装置１Ｄから送信されるインデックス拡張要求メッセージを受信すると、ノード装置１Ｆにおける非管理対象のコンテンツデータ配信元情報を自ノード装置１Ｆのインデックステーブル１２０Ｆに記憶（保持）するか否かを選択する。自ノード装置１Ｆのインデックステーブル１２０Ｆに記憶することを選択したとき、ルートノード装置１Ｄから送信されたインデックス拡張要求メッセージに対して肯定応答を返信し、その後ルートノード装置１Ｄから送信される非管理対象コンテンツ保持ノード装置の位置情報を非管理記憶領域に第３位置情報として記憶する。一方、自ノード装置１Ｆのインデックステーブル１２０Ｆに記憶しないことを選択するとき、すなわち他の外部ノード装置のインデックステーブルへ非管理対象コンテンツ保持ノード装置の位置情報を保持させる選択をすると、ノード装置１Ｆは、受信したインデックス拡張要求メッセージをノード装置１Ｈへ転送し、転送したインデックス拡張要求メッセージに対して当該ノード装置１Ｈから肯定応答を受信すると、受信したインデックス拡張要求メッセージに対する肯定応答をルートノード装置１Ｄへ送信し、その後ルートノード装置１Ｄから送信される配信元情報追加メッセージを外部ノード装置１Ｈへ転送する。また、外部ノード装置１Ｈの位置情報を第４位置情報として拡張非管理記憶領域へ記憶する。なお、図８においては、ノード装置１Ｆは、他の外部ノード装置１Ｈのインデックステーブル１２０Ｈへ非管理対象コンテンツ保持ノード装置の位置情報の保持を選択していることを示している。
【００８８】
ノード装置１Ｈは、外部ノード装置１Ｆから送信されるインデックス拡張要求メッセージを受信すると、非管理対象のコンテンツデータ配信元情報を自ノード装置１Ｈのインデックステーブル１２０Ｈに記憶（保持）するか否かを選択する。自ノード装置１Ｈのインデックステーブル１２０Ｈに記憶することを選択したとき、受信したインデックス拡張要求メッセージに対する肯定応答をノード装置１Ｆに対して行い、その後ノード装置１Ｆから送信される非管理対象コンテンツ保持ノード装置の位置情報を非管理記憶領域に第３位置情報として記憶する。一方、自ノード装置１Ｈのインデックステーブル１２０Ｈに記憶しないことを選択するとき、すなわち他の外部ノード装置のインデックステーブルへ非管理対象コンテンツ保持ノード装置の位置情報を保持させる選択をすると、ノード装置１Ｈは、受信したインデックス拡張要求メッセージをノード装置１Ｉへ転送し、転送したインデックス拡張要求メッセージに対して当該ノード装置１Ｉから肯定応答を受信すると、受信したインデックス拡張要求メッセージに対する肯定応答をルートノード装置１Ｆへ送信し、その後ルートノード装置１Ｆから送信される配信元情報追加メッセージを外部ノード装置１Ｉへ転送する。また、外部ノード装置１Ｉの位置情報を第４位置情報として拡張非管理記憶領域へ記憶する。なお、図８においては、ノード装置１Ｈは、他の外部ノード装置１Ｉのインデックステーブル１２０Ｈへ非管理対象コンテンツ保持ノード装置の位置情報の保持を選択していることを示している。
【００８９】
ノード装置１Ｉは、外部ノード装置１Ｈから送信されるインデックス拡張要求メッセージを受信すると、非管理対象のコンテンツデータ配信元情報を自ノード装置１Ｉのインデックステーブル１２０Ｉに記憶（保持）するか否かを選択する。自ノード装置１Ｉのインデックステーブル１２０Ｉに記憶することを選択したとき、受信したインデックス拡張要求メッセージに対する肯定応答をノード装置１Ｈに対して行い、その後ノード装置１Ｈから送信される非管理対象コンテンツ保持ノード装置の位置情報を非管理記憶領域に第３位置情報として記憶する。図８においては、ノード装置１Ｉは、自ノード装置１Ｉのインデックステーブル１２０Ｉへ非管理対象コンテンツ保持ノード装置の位置情報の保持を選択していることを示している。
【００９０】
このように本実施形態における各ノード装置１には、インデックステーブルとして第１位置情報〜第４位置情報を記憶する領域を設けており、ノード装置１は自ノード装置１のインデックステーブルにコンテンツ保持ノード装置の位置情報を記憶させたり、他のノード装置１のインデックステーブルにコンテンツ保持ノード装置の位置情報を記憶させたりすることができる。
【００９１】
ところで、ノード装置１において、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生した場合に、この管理対象コンテンツ保持ノード装置の位置情報を自ルートノード装置１のインデックステーブル１２０に記憶するか否かの選択は、たとえば、次のように判断する。なお、以下、ルートノード装置をルートノード装置１Ｄとして説明する。
【００９２】
（１）管理情報記憶領域に所定数（たとえば、図７においては１３個）未満の第１位置情報Ａが記憶された状態で、新たに記憶すべきコンテンツ保持ノード装置の位置情報が発生すると、自ルートノード装置１Ｄのインデックステーブル１２０Ｄに記憶する選択をする。一方、管理情報記憶領域に所定数の第１位置情報Ａが記憶された状態で、新たに記憶すべきコンテンツ保持ノード装置の位置情報が発生すると、コンテンツ保持ノード装置の位置情報を自ルートノード装置１Ｄのインデックステーブル１２０Ｄに記憶しない選択をする。すなわち、管理対象コンテンツ保持ノード装置の位置情報を所定数記憶した後は、他のノード装置のインデックステーブル１２０に管理対象コンテンツ保持ノード装置の位置情報を記憶させる。このように外部ノード装置のインデックステーブルを利用して管理対象コンテンツ保持ノード装置の位置情報を記憶することができる。
【００９３】
（２）複数のリクエストノード装置から、自ルートノード装置１Ｄ宛のコンテンツ検索メッセージを単位時間あたり第１所定量未満で受信している状態（たとえば、コンテンツデータのストリーミング時間を単位時間として、当該単位時間に管理情報記憶領域に記憶された第１位置情報の数以上の送信要求がない状態）では、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報を、自ルートノード装置１Ｄのインデックステーブル１２０Ｄに記憶する選択をする。一方、複数のリクエストノード装置から、自ルートノード装置１Ｄ宛のコンテンツ検索メッセージを単位時間あたり第１所定量以上で受信している状態では、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報を、自ルートノード装置１Ｄのインデックステーブル１２０Ｄに記憶しない選択をする。
【００９４】
また、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報を自ルートノード装置１Ｄのインデックステーブル１２０Ｄに記憶しない選択をしたとき、ルートノード装置１Ｄはこのコンテンツ保持ノード装置の位置情報を保持させる外部ノード装置を決定する。コンテンツ保持ノード装置の位置情報を保持させる外部ノード装置の決定は、ランダムなノードＩＤを演算出力することによって行う。そして、このように決定したノードＩＤを宛先識別情報としてインデックス拡張要求メッセージを送信する。図９は、ノードＩＤ「0010」のルートノード装置１Ｄが新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報を外部ノード装置に保持させるために、その外部ノード装置をランダム演算により、ノードＩＤ「2301」、「3102」を有するノード装置に決定した様子を示している。そして、このように決定したノードＩＤ「2301」、「3102」を有するノード装置に対してインデックス拡張要求メッセージを送信する。
【００９５】
なお、コンテンツ保持ノード装置の位置情報を保持させる外部ノード装置を決定する方法として、ランダムに決定したノードＩＤを有するノード装置を外部ノード装置とするのではなく、ルートノード装置の近隣のノード装置を外部ノード装置として決定するようにしてもよい。このようにすることによって、コンテンツ配信システムＳ全体として捉えたときに均一にインデックス拡張を行うことができる。
【００９６】
ここで、「近隣のノード装置」とは、ルートノード装置とＤＨＴルーティングにおいてノードＩＤが近いノード装置、或いは、ルートノード装置と物理ネットワークにおいて近いノード装置を意味する。特に、近隣のノード装置をルートノード装置と物理ネットワークにおいて近いノード装置とする場合には、ルートノード装置から外部ノード装置へのコンテンツ検索メッセージの転送を短時間で行うことができる。なお、「物理ネットワークにおいて近い」とは、ルートノード装置からのメッセージ到達時間が短い、或いはルートノード装置からのポップ数（ルータを経由する数）が少ない等を意味する。ルートノード装置は、ランダムに算出したノードＩＤを有する複数のノード装置の中から最も近いノード装置を選択して、当該ノード装置を外部ノード装置とする。
【００９７】
また、コンテンツ保持ノード装置の位置情報を保持させる外部ノード装置を決定する方法として、コンテンツ配信システムＳに参加中のノード装置１の状態を集中的に監視する状態監視サーバ装置（たとえば、コンテンツ管理装置１０に当該機能をもたせるようにしてもよい。）を配置し、この状態監視サーバ装置から外部ノード装置を通知してもらうことにより外部ノード装置を決定するようにしてもよい。ただし、この方法では、状態監視サーバ装置へ種々の管理メッセージが集中することが考えられるため、本実施形態においては、ランダムに外部ノード装置を決定するようにし、ノード装置が自立的に外部ノード装置を決定することができるようにしている。
【００９８】
以上のようにして、ルートノード装置が外部ノード装置に対してインデックス拡張要求メッセージを送信して肯定応答を得た後は、該外部ノード装置に対して直接種々の要求を行えるようになる。たとえば、ルートノード装置は、外部ノード装置に対して、配信元情報追加要求メッセージ、配信元情報削除要求メッセージ、配信元情報取得要求メッセージなどを行うことができる。以下具体的にこれらの要求メッセージを説明する。
【００９９】
（配信元情報追加要求メッセージ）
配信元情報追加要求メッセージは、外部ノード装置に対して、コンテンツデータ配信元情報の追加要求を行うためのメッセージである。
【０１００】
ルートノード装置は、単位時間当たりのコンテンツ検索メッセージを常時監視し、一定の閾値Ｔｕ（たとえば、Ｔｕ＝０．８）以上になったらコンテンツ保持ノード装置を新たに追加する。ここで、閾値Ｔｕ＝（１ストリーミング時間のコンテンツ検索メッセージの数）／（管理情報記憶領域に記憶された位置情報の数）、であるとする。
【０１０１】
図１０に示すように、ルートノード装置（ここでは、ノードＩＤ「0010」を有するノード装置とする）は、現在コンテンツ保持ノード装置となっていないノード装置のノードＩＤのうち適当（たとえば、ランダム）なノードＩＤを算出し、当該ノードＩＤのノード装置に対して自ノード装置が管理するコンテンツデータを送信する。ルートノード装置からコンテンツデータを受信したノード装置は、コンテンツデータを記憶してコンテンツ保持ノード装置として、登録メッセージをルートノード装置へ向けて送信し、ルートノード装置はその登録メッセージを受信し、当該登録メッセージに含まれるコンテンツ保持ノード装置の位置情報を第１位置情報として管理情報記憶領域に記憶する。
【０１０２】
なお、ルートノード装置がコンテンツデータを送信することによってコンテンツ保持ノード装置を生成するのではなく、ルートノード装置がコンテンツ管理装置１０に対してコンテンツ保持ノード装置の生成を依頼するようにしてもよい。たとえば、図１１に示すように、ルートノード装置は、コンテンツ管理装置１０に対して、コンテンツ保持ノード装置生成要求を行う。コンテンツ管理装置１０は、ルートノード装置からのコンテンツ保持ノード装置生成要求に対して、現在コンテンツ保持ノード装置となっていないノード装置のノードＩＤのうち適当（たとえば、ランダム）なノードＩＤを算出し、当該ノードＩＤのノード装置に対してルートノード装置から要求があったコンテンツデータを送信する。コンテンツデータを受信したノード装置は、コンテンツデータを記憶してコンテンツ保持ノード装置として、登録メッセージをルートノード装置へ送信し、ルートノード装置はその登録メッセージを受信し、当該登録メッセージに含まれる管理対象コンテンツ保持ノード装置の位置情報を第１位置情報として管理情報記憶領域に記憶する。
【０１０３】
ただし、ルートノード装置における管理情報記憶領域がフル状態（図７においては、第１位置情報が１３個）となっているときには、前回、拡張インデックスを生成した外部ノード装置に対して管理対象コンテンツ保持ノード装置の位置情報を含むコンテンツデータ配信元情報を追加する。拡張インデックスへ管理対象コンテンツ保持ノード装置の位置情報を追加する際には、ＤＨＴルーティングを用いるのではなく、コンテンツ配信元追加要求メッセージを直接外部ノード装置へ送信する形態を用いる。このように外部ノード装置へ直接送信できるのは、上述のインデックス拡張要求メッセージによって外部ノード装置の位置情報が判明している為である。この拡張インデックスを保持する外部ノード装置において、非管理コンテンツの非管理記憶情報領域がフル状態となっていた場合には、この外部ノード装置からさらに別の外部ノード装置に対してインデックステーブルを拡張する処理が行われる。
【０１０４】
外部ノード装置は、コンテンツ配信元追加要求メッセージを受信すると、拡張管理情報記憶領域に第３位置情報として配信元情報を追加する。ただし、拡張管理情報記憶領域の第３位置情報がフル状態のときなど、自ノード装置で保持しないには、別の外部ノード装置に対して拡張インデックスを設定する。
【０１０５】
（配信元情報削除要求メッセージ）
配信元情報削除要求メッセージは、外部ノード装置に対して、その拡張したコンテンツデータ配信元情報の削除要求を行うためのメッセージである。
【０１０６】
ルートノード装置では単位時間当たりのコンテンツ検索メッセージを常時監視し、一定の閾値Ｔ１（たとえば、Ｔ１=０．５）以下になったとき、コンテンツデータ配信元情報を１つ削除する。コンテンツデータ配信元情報の削除は、インデックステーブル１２０の拡張管理情報記憶領域に第２位置情報が記憶されていない場合には、管理情報記憶領域に記憶しているコンテンツデータ配信元情報を１つ削除する。一方、拡張管理情報記憶領域に第２位置情報が記憶されている場合、この拡張管理情報記憶領域に記憶してあるコンテンツデータ配信元情報から優先的に削除していく。ここで、閾値Ｔ１＝（１ストリーミング時間のコンテンツ検索メッセージの数）／（管理情報記憶領域に記憶された位置情報の数）、であるとする。
【０１０７】
拡張インデックスがチェーン状に連結されている場合、たとえば、図１２に示すように、インデックステーブル１２０Ｄの第２位置情報Ｂに外部ノード装置１Ｅ及び外部ノード装置１Ｆの位置情報が、インデックステーブル１２０Ｆの第４位置情報Ｄに外部ノード装置１Ｇ及び外部ノード装置１Ｈの位置情報が、インデックステーブル１２０Ｈの第４位置情報Ｄに外部ノード装置１Ｉの位置情報が記憶され、インデックステーブル１２０Ｅ，１２０Ｇ，１２０Ｉの第３位置情報Ｃにコンテンツデータ配信元情報が記憶されている場合、このようにチェーン状に連結されたインデックステーブルの末端部であるインデックステーブル１２０Ｉから配信元情報が削除されていくかたちとなる。そして、外部ノード装置１Ｉにおいて、インデックス拡張された非管理情報記憶領域が空になったら、インデックス拡張委託元の関連するExtensionエントリを削除する。すなわち、外部ノード装置１Ｉは、インデックス拡張委託元である外部ノード装置１Ｈに対して、Extensionエントリの削除要求を行い、この削除要求に応じてノード装置１Ｈは、外部ノード装置１Ｉに関連する拡張非管理情報記憶領域の第４位置情報Ｄを削除する。そして、外部ノード装置１Ｈはインデックステーブル１２０Ｈの拡張非情報記憶領域の第４位置情報Ｄを削除した後、インデックス拡張委託元である外部ノード装置１Ｆに対して、Extensionエントリの削除要求を行い、外部ノード装置１Ｆのインデックステーブル１２０Ｆの拡張非管理情報記憶領域における外部ノード装置１Ｈの位置情報である第４位置情報Ｄを削除する。外部ノード装置に対してコンテンツデータ配信元情報の削除依頼をする場合は、コンテンツデータ配信元情報の追加処理と同様、直接外部ノードへコンテンツデータ配信元情報削除要求メッセージを送信する。
【０１０８】
（配信元情報取得要求メッセージ）
配信元情報取得要求メッセージは、自ノード装置がルートノード装置としてコンテンツ検索メッセージを受信したとき、このコンテンツ検索メッセージに対する応答を、拡張インデックスを有する外部ノード装置から返信させるために外部ノード装置へ要求するためのメッセージであり、コンテンツ検索メッセージの宛先ノード装置を外部ノード装置に変更して転送されるメッセージである。
【０１０９】
ルートノード装置は、任意の外部ノード装置からコンテンツ検索メッセージを受信する。コンテンツ検索メッセージを受信したルートノード装置では、まず、コンテンツ検索メッセージに含まれているコンテンツ検索メッセージ発行時刻からこのコンテンツ検索メッセージを受信するまでに経過した時間を計算する。そして、経過時間が閾値Ｔｓ（例:Ｔｓ＝２００ｍｓ）を下回っている場合には、図１３（ａ）に示すように、拡張インデックスからコンテンツデータ配信元情報を取得するため、拡張インデックスを保持している外部ノード装置へ当該コンテンツ検索メッセージの転送、すなわち配信元情報取得要求メッセージの送信を行う。当該配信元情報取得要求メッセージを受信した外部ノード装置において、コンテンツデータ配信元情報を第３位置情報として保持している場合には、当該第３位置情報を含むコンテンツデータ配信元情報をコンテンツ検索メッセージの送信元ノード装置へ送信し、一方、コンテンツデータ配信元情報を第３位置情報として保持していない場合には、さらに外部ノード装置の拡張インデックスからコンテンツデータ配信元情報を返信させる手続きをとる。逆に、ルートノード装置は、配信元情報取得要求メッセージを受信した時点で閾値Ｔｓを超過している場合は、図１３（ｂ）に示すように、自ノード装置のインデックステーブルからコンテンツデータ配信元情報を取得して配信元情報取得要求メッセージに応答する。
【０１１０】
また、図１３に示すように、拡張インデックスがチェーン状に連結されている場合、コンテンツ検索メッセージの到達時間によって、拡張インデックスを有するノード装置のうち、コンテンツ検索メッセージに応答させるノード装置を変更するようにしてもよい。たとえば、経過時間が０．５Ｔｓ以下の場合には、インデックステーブル１２０Ｉからコンテンツデータ配信元情報を返信させ、０．５＜Ｔｓ≦０．７の場合には、インデックステーブル１２０Ｇから返信させ、０．７＜Ｔｓ≦１．０の場合には、インデックステーブル１２０Ｅから返信させるのである。
【０１１１】
この処理方式は、ルートノード装置に早期に到達したコンテンツ検索メッセージに対しては拡張インデックスからコンテンツデータ配信元情報を取り出し、逆にルートノード装置に遅れて到達したコンテンツ検索メッセージに対してはルートノード装置のインデックスから直接コンテンツデータ配信元情報を取り出すように処理を行うことで、コンテンツ検索メッセージの応答時間を平準化することを目的とする。
【０１１２】
なお、上記の如くリクエストノード装置が送信したコンテンツ検索メッセージの到達時間に基づいて、自ノード装置のインデックステーブルと外部ノード装置のインデックステーブルとのいずれかを選択するようにしたが、コンテンツ検索メッセージの到達順番によりその選択をするようにしてもよい。すなわち、早く到着したコンテンツ検索メッセージに対してはルートノード装置のインデックステーブルを選択し、遅く到着したコンテンツ検索メッセージに対しては外部ノード装置のインデックステーブルを選択するのである。
【０１１３】
また、コンテンツ検索メッセージの到達時間や到達順番に関係なく、ランダムにその選択をするようにしてもよい。この場合、自ノード装置のインデックステーブルと外部ノード装置のインデックステーブルとを等確率で選択するようにする方法や、管理情報記憶領域と拡張管理情報記憶領域とに記憶する位置情報の割合に応じた確率で選択する方法などがある。
【０１１４】
［２．ノード装置１の構成等の説明］
次に、図面を参照して、ノード装置１の構成及び動作について説明する。図１４は、本実施形態に係るコンテンツ配信システムＳにおけるノード装置１の概略構成を示す図である。
【０１１５】
ノード装置１は、専用のコンピュータのほか、一般のパーソナルコンピュータを適用可能であり、図１４に示すように、ＣＰＵ（Central Processing Unit）１０２と、各種プログラム等を記憶（記憶）する書き換え可能な主記憶装置としての第１記憶部１０３と、各種データ等を記憶するＨＤＤ等から構成された第２記憶部１０４と、ルータ１２４を介してネットワーク８に参加している他のノード装置１との間で通信を行うためのネットワークインターフェイス１０５と、ユーザによってノード装置１を遠隔操作するために所定の赤外線信号を送信及び受信するリモコン１０６と、このリモコン１０６と赤外線により通信を行うための赤外線ポート１０７と、赤外線ポート１０７を制御する周辺機器制御チップ１０８と、ＣＰＵ１０２の制御によりイメージデータを受け取り、内部のビデオメモリ（図示せず）に書き込み、このビデオメモリに書き込んだデータを後述のディスプレイ１１０に表示するビデオチップ１０９と、ＦＭ音源やＷａｖｅ  Ｔａｂｌｅ音源などの音源を有し、オーディオ信号をスピーカ１１２に出力することによってスピーカ１１２から音波を出力させる音源チップ１１１と、を備えて構成され、これらの各種構成要素はシステムバス１０１を介して相互に接続されている。なお、本実施形態においては、ＣＰＵ１０２と第１記憶部１０３とで制御手段１１３を構成している。
【０１１６】
（第１記憶部１０３について）
また、第１記憶部１０３には、ノード装置１のコンピュータとしての基本的な機能を提供するためのオペレーティングシステム（ＯＳ）プログラム１１４、ディスプレイ１１０の制御等を行うための画面制御プログラム１１５、コンテンツ保持ノード装置として機能する外部ノード装置から送信されるコンテンツデータをストリーミング受信し、また自ノード装置がコンテンツ保持ノード装置として機能するときには第２記憶部１０４に記憶したコンテンツデータをストリーミング配信するためのストリーム制御プログラム１１６、外部ノード装置から送信されるメッセージをネットワークインターフェイス１０５を介して受信したか否かを判定し、受信したメッセージに応じた処理を行うためのメッセージ監視プログラム１１７、ネットワークインターフェイス１０５を介して受信したメッセージが自ノード装置１宛ではないと判定すると、受信したメッセージの宛先識別情報とルーティングテーブルとに基づいて、受信したメッセージを転送するためのルーティング制御プログラム１１８、配信されたコンテンツデータの再生等を行うためのプレイヤプログラム１１９等を記憶しており、これらはＣＰＵ１０２によって読み出され、ＣＰＵ１０２によってこれらのプログラムに従った機能が実行される。また、第１記憶部１０３には、さらにインデックステーブル１２０（図７参照）を記憶するためのインデックステーブル記憶領域やルーティングテーブル１２１（図４参照）を記憶するためのルーティングテーブル記憶領域が設けられている。また、インデックステーブル１２０には、上述のように管理情報記憶領域、拡張管理情報記憶領域、非管理情報記憶領域、拡張非管理情報記憶領域を有しており、状況に応じた記憶領域にコンテンツデータ配信元情報が格納される。
【０１１７】
ここで、ＯＳプログラム１１４は、ＣＰＵ１０２によって読み出されて実行されることにより、リモコン１０６の入出力に関する機能や、第１記憶部１０３や第２記憶部１０４などのメモリ管理などのノード装置１であるコンピュータの基本的な機能を実行可能にするものである。そして、このＯＳプログラム１１４がＣＰＵ１０２によって実行された状態で、上述の画面制御プログラム１１５、ストリーム制御プログラム１１６、メッセージ監視プログラム１１７、ルーティング制御プログラム１１８、プレイヤプログラム１１９等が第１記憶部１０３から読み出されて実行される。
【０１１８】
なお、ＯＳプログラム１１４、画面制御プログラム１１５、ストリーム制御プログラム１１６、メッセージ監視プログラム１１７、ルーティング制御プログラム１１８、プレイヤプログラム１１９等は、たとえば、ネットワーク８に接続されたサーバ等から、ネットワークインターフェイス１０５を介して、第１記憶部１０３にダウンロードされるようにしてもよく、又ＣＤ−ＲＯＭ等の記録媒体に記録されてから当該記録媒体のドライブを介して、第１記憶部１０３に読み込まれるようにしてもよい。
【０１１９】
（第２記憶部１０４について）
第２記憶部１０４には、コンテンツ管理装置１０から投入され、コンテンツ配信システムＳ内にて提供されているコンテンツがリスト化されたカタログリスト１２２と、コンテンツ管理装置１０等から配信されたコンテンツデータ１２３等を記憶する領域である。
【０１２０】
（制御手段１１３について）
制御手段１１３は、上述のようにＣＰＵ１０２と第１記憶部１０３とから構成され、ＣＰＵ１０２が第１記憶部１０３に記憶された各種プログラム１１４〜１１９を読み出して実行することにより、ノード装置１全体を統括制御し、かつ、後述する表示制御手段、ストリーム制御手段、メッセージ宛先判定手段、配信元情報選択手段、コンテンツデータ配信元情報返信手段、コンテンツデータ配信元情報送信要求転送手段、位置情報管理手段、到達時間判定手段、位置情報返信手段、管理情報割合変更手段、自ノード装置識別情報演算手段、コンテンツ識別情報演算手段、登録メッセージ生成手段、登録メッセージ送信手段、メッセージ転送手段、デコード手段、コンテンツ再生手段等として機能するようになっている。
【０１２１】
なお、ＣＰＵ１０２が画面制御プログラム１１５を実行することによって、表示制御手段等として、またＣＰＵ１０２がストリーム制御プログラム１１６を実行することによって、ストリーム制御手段等として、またＣＰＵ１０２がメッセージ監視プログラム１１７を実行することによって、メッセージ宛先判定手段、配信元情報選択手段、コンテンツデータ配信元情報返信手段、コンテンツデータ配信元情報送信要求転送手段、位置情報管理手段、到達時間判定手段、位置情報返信手段、管理情報割合変更手段、自ノード装置識別情報演算手段、コンテンツ識別情報演算手段、登録メッセージ生成手段、登録メッセージ送信手段等として、またＣＰＵ１０２がルーティング制御プログラム１１８を実行することによって、メッセージ転送手段等として、またＣＰＵ１０２がプレイヤプログラム１１９を実行することによってデコード手段及びコンテンツ再生制御手段等として、それぞれ機能するようになっている。
【０１２２】
（表示制御手段について）
表示制御手段は、ビデオチップ１０９及びディスプレイ１１０を制御して、各種の映像情報（画像情報）を表示させる機能を有している。すなわち、表示制御手段は、ディスプレイ１１０にどのように映像を表示させるかを制御する。
【０１２３】
（ストリーム制御手段について）
ストリーム制御手段は、他のノード装置１からストリーミング配信されるコンテンツデータを受信するコンテンツデータ受信手段、及び第２記憶部１０４に記憶したコンテンツデータを他のノード装置１へストリーミング配信するコンテンツデータ配信手段等としての機能を有している。
【０１２４】
コンテンツデータ受信手段は、他のノード装置１から配信されるパケットがコンテンツパケットであると判定されたときに、そのコンテンツパケットを１パケットずつ受信し、図示しない第１記憶部１０３のリングバッファに一時的に記憶する。また、コンテンツ配信手段は、第２記憶部１０４に記憶したコンテンツデータをコンテンツパケットに変換し、１パケットずつネットワークインターフェイス１０５を介して他のノード装置１へ送信する。なお、コンテンツデータ受信手段やコンテンツデータ配信手段は、公知のストリーミング配信用プロトコルを用いることができるほか、独自の専用プロトコルを用いるようにすることもできる。
【０１２５】
（メッセージ宛先判定手段について）
メッセージ宛先判定手段は、ネットワーク８を介して受信したメッセージの宛先識別情報とルーティングテーブルとに基づいて、受信したメッセージが自ノード装置１宛であるか否かを判定する。このメッセージ宛先判定手段が判定するメッセージは、上述のコンテンツ検索メッセージ、登録メッセージ、配信元情報追加要求メッセージ、配信元情報削除要求メッセージ、配信元情報取得要求メッセージなどである。
【０１２６】
受信したメッセージが自ノード装置１宛であるか否かの判定は、メッセージに含まれる宛先ノードＩＤ（宛先識別情報）を取り出し、第１記憶部１０３に記憶したルーティングテーブルに基づいて後述の制御手段１１３が判定する。すなわち、各種のメッセージをネットワークインターフェイス１０５を介して受信したとき、メッセージ宛先判定手段は、受信したメッセージに含まれる宛先識別情報とルーティングテーブルに記憶したノードＩＤとを比較し、メッセージに含まれる宛先識別情報と一番近いルーティングテーブル上のノードＩＤが自ノード装置１のノードＩＤであると判定すると、自ノード装置１宛のメッセージであると判定する。
【０１２７】
（配信元情報選択手段について）
配信元情報選択手段は、メッセージ宛先判定手段によりネットワーク８を介して受信したメッセージが自ノード装置１宛であり、かつコンテンツ検索メッセージであると判定すると、インデックステーブルから第１位置情報Ａと第２位置情報Ｂのいずれかを選択する。たとえば、上記の如くリクエストノード装置が送信したコンテンツ検索メッセージの到達時間に基づいて、自ノード装置のインデックステーブルと外部ノード装置のインデックステーブルとのいずれかを選択する。
【０１２８】
（コンテンツデータ配信元情報返信手段について）
コンテンツデータ配信元情報返信手段は、配信元情報選択手段によってインデックステーブル１２０の管理情報記憶領域の第１位置情報Ａが選択されるとき、コンテンツデータ配信元情報を要求したノード装置１へ第１位置情報Ａをネットワーク８を介して返信する。
【０１２９】
なお、コンテンツデータ配信元情報返信手段は、インデックステーブル１２０の管理情報記憶領域から第１位置情報Ａを選択するとき、インデックステーブル１２０の紹介時刻欄が一番古い或いは空白（まだ紹介されていないため紹介時刻がない）の第１位置情報Ａを選択する。このように紹介時刻の古いもの或いはまだ紹介していないコンテンツ保持ノード装置の位置情報を選択することによって、１つのコンテンツ保持ノード装置にコンテンツデータの要求が集中しないようにすることができる。
【０１３０】
（コンテンツデータ配信元情報送信要求転送手段について）
コンテンツデータ配信元情報送信要求転送手段は、配信元情報選択手段によって第２位置情報が選択されると、第２位置情報を所在位置とするノード装置１へコンテンツデータ配信元情報の送信要求を、ネットワーク８を介して転送する。このコンテンツデータ配信元情報の送信要求の転送は、上述の如く配信元情報取得要求メッセージを送信することによって行われる。
【０１３１】
（位置情報管理手段について）
位置情報管理手段は、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報を自ノード装置１のインデックステーブルに保持するか否かを選択する。
【０１３２】
また、位置情報管理手段は、インデックステーブル１２０への保持を選択したとき、前記管理対象コンテンツ保持ノード装置の位置情報をインデックステーブル１２０の管理情報記憶領域に記憶する。一方、自ノード装置１のインデックステーブルへの保持を選択しないとき、前記管理対象コンテンツ保持ノード装置の位置情報の含む管理対象コンテンツデータ配信元情報の保持要求をネットワーク８を介して他のノード装置１へ送信し、当該他のノード装置１の位置情報をインデックステーブル１２０の拡張管理情報記憶領域に記憶する。
【０１３３】
たとえば、位置情報管理手段は、インデックステーブル１２０の管理情報記憶領域に所定数の第１位置情報Ａが記憶された状態（たとえば、図７に示すインデックステーブルの場合には、１３個の第１位置情報Ａが記憶された状態）で、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したとき、当該管理対象コンテンツ保持ノード装置の位置情報をインデックステーブル１２０へ保持する選択をしない。
【０１３４】
また、位置情報管理手段は、自ノード装置１宛のコンテンツ検索メッセージを、メッセージ宛先判定手段により単位時間あたり第１所定量以上を受信した場合、前記管理対象コンテンツ保持ノード装置の位置情報をインデックステーブルへ保持する選択をしない。
【０１３５】
また、位置情報管理手段は、送信されたコンテンツデータ配信元情報の保持要求である配信元情報追加要求メッセージをネットワーク８を介して受信したときに、インデックステーブル１２０の非管理情報記憶領域に所定数以上の第３位置情報が記憶されていると判定すると、他のノード装置１へ転送されてきた配信元情報追加要求メッセージを更に転送し、他のノード装置１の位置情報を第４位置情報としてインデックステーブル１２０の拡張非管理記憶領域に記憶する。
【０１３６】
また、自ノード装置１宛のコンテンツ検索メッセージを、メッセージ宛先判定手段により単位時間あたり第２所定量以上受信しない場合、インデックステーブル１２０の拡張管理情報記憶領域に記憶された第２位置情報Ｂのうち少なくとも一つの第２位置情報Ｂを削除するとともに、削除した第２位置情報Ｂに対応するノード装置１へコンテンツデータ配信元情報の保持取消の要求を行う。
【０１３７】
（到達時間判定手段について）
到達時間判定手段は、メッセージ宛先判定手段によりネットワーク８を介して受信したメッセージが自ノード装置１宛であり、かつコンテンツ検索メッセージであると判定すると、送信要求の発行時刻と送信要求を受信した時刻との差分が所定値未満の値であるか否かを判定する。この判定は、コンテンツ検索メッセージに含まれる当該メッセージ発行時刻と図示しない時計手段によって計測された当該コンテンツ検索メッセージの受信時刻とに基づいて行われる。
【０１３８】
（位置情報返信手段について）
位置情報返信手段は、到達時間判定手段によりコンテンツ検索メッセージの発行時刻と送信要求を受信した時刻との差分が所定値未満の値であると判定すると、インデックステーブル１２０の非管理情報記憶領域に記憶した第２位置情報Ｂを有するノード装置１へコンテンツ検索メッセージを配信元情報取得要求メッセージとして転送し、到達時間判定手段によりコンテンツ検索メッセージの発行時刻と送信要求を受信した時刻との差分が所定値以上の値であると判定すると、前記管理情報記憶領域に記憶した前記第１位置情報Ａを、前記送信要求を送信したノード装置へ返信する。
【０１３９】
（管理情報割合変更手段について）
管理情報割合変更手段は、インデックステーブル１２０の管理情報記憶領域と拡張管理情報記憶領域とに記憶する位置情報の割合を変更する。たとえば、自ノード装置１宛のコンテンツ検索メッセージを、メッセージ宛先判定手段により単位時間あたり第３所定量以上を受信した場合に、インデックステーブル１２０の非管理情報記憶領域の容量を増加させ、管理情報記憶領域の容量を低減するように前記記憶領域の割合を変更する。
【０１４０】
（自ノード装置識別情報演算手段について）
自ノード装置識別情報演算手段は、自ノード装置固有の情報であるＩＰアドレスを所定のハッシュ関数によって演算することによって自ノード装置１の識別情報であるノードＩＤを算出する。
【０１４１】
（コンテンツ識別情報演算手段について）
コンテンツ識別情報演算手段は、コンテンツデータの固有情報を上記の如く自ノード装置識別情報演算手段に用いるものと同一の所定のハッシュ関数によって演算することによってコンテンツデータの識別情報であるコンテンツＩＤとする。
【０１４２】
（登録メッセージ生成手段について）
ルートノード装置からコンテンツデータを受信したとき、受信したコンテンツデータをコンテンツデータ記憶手段である第２記憶部１０４に記憶し、自ノード装置のノードＩＤ及びＩＰアドレスを含む登録メッセージを生成する。
【０１４３】
（登録メッセージ送信手段について）
登録メッセージ送信手段は、登録メッセージ生成手段によって生成した登録メッセージを、第２記憶部１０４に記憶したコンテンツデータのコンテンツＩＤに基づいて、ルーティングテーブルに記憶されたノード装置の識別情報から送信先ノード装置を選択して送信する。例えば、図４に示すようなルーティングテーブルを有しており、かつ第２記憶部１０４に記憶したコンテンツデータのコンテンツＩＤが「1231」である場合、登録メッセージ送信手段は、ルーティングテーブルからノードＩＤ「1221」を送信先ノード装置として選択し、当該ノードＩＤ「1221」のノード装置のＩＰアドレス「21.13.21.13」を取り出す。そして、当該ＩＰアドレス「21.13.21.13」を送信先ノード装置として登録メッセージを送信する。なお、この登録メッセージの宛先識別情報は「1231」となる。
【０１４４】
（メッセージ転送手段について）
メッセージ転送手段は、メッセージ宛先判定手段によりネットワーク８を介して受信したメッセージが自ノード装置宛ではないと判定されると、受信したメッセージの宛先識別情報に基づいて、転送先のノード装置の位置情報をルーティングテーブルから取り出し、転送先のノード装置へ前記受信したメッセージを転送する。
【０１４５】
（デコード手段について）
デコード手段は、他のノード装置１から送信されるコンテンツデータ等をディスプレイ１１０に表示し、スピーカ１１２から出力するためにデコードする。すなわち、他のノード装置１から送信されるコンテンツデータは、ストリーミング配信用のデータ形式、たとえばＡＳＦ、ＷＭＡ、ＷＭＶ等のデータ形式でエンコードされており、このようにエンコードされているコンテンツデータをディスプレイ１１０やスピーカ１１２から出力できるようにデコードする。
【０１４６】
（コンテンツ再生手段について）
コンテンツ再生手段は、第１記憶部１０３のリングバッファから成るバッファ領域に順次記憶されたコンテンツデータを、順次再生するものであり、このとき制御手段１１３は、ストリーム制御プログラム１１６に基づいてビデオチップ１０９及び音源チップ１１１を動作させることによりコンテンツデータが再生される。
【０１４７】
［２．１  各種処理の説明］
以下、ノード装置１の詳細動作について、図１５〜図１８のフローチャートを用いて更に具体的に説明する。図１５はノード装置１におけるメイン処理を示すフローチャート、図１６はノード装置１におけるメッセージ処理を示すフローチャート、図１７はコンテンツ保持ノード装置追加処理を示すフローチャート、図１８はインデックス拡張処理を示すフローチャートである。
【０１４８】
（ノード装置のメイン処理について）
図１５に示すように、ノード装置１の電源がオン状態となると、制御手段１１３は、各プログラム１１４〜１１９を実行することによってノード装置１内の初期設定を行う（ステップＳ１０）。
【０１４９】
そして、制御手段１１３は、自ノード装置１のユーザからコンテンツ配信システムＳへの参加要求があるか否かを判定する（ステップＳ１１）。たとえば、リモコン１０６にコンテンツ配信システムＳへの参加ボタンを設けておき、この参加ボタンをユーザが操作したか否かにより、コンテンツ配信システムＳの参加を要求したか否かを判定する。
【０１５０】
ステップＳ１１において、ユーザからコンテンツ配信システムＳへの参加要求があったと判定すると（ステップＳ１１：Ｙｅｓ）、制御手段１１３は、自ノード装置固有の情報であるＩＰアドレスを所定のハッシュ関数によって演算することによって自ノード装置１の識別情報であるノードＩＤを算出し、このノードＩＤと自ノード装置１のＩＰアドレスとを含む参加要求メッセージをコンテンツ管理装置１０へ送信する（ステップＳ１２）。コンテンツ管理装置１０は、ノード装置１から参加要求メッセージを受信すると、当該参加要求メッセージを送信したノード装置１のノードＩＤを登録し、コンテンツ配信システムＳに参加させる。
【０１５１】
また、ステップＳ１１において、ユーザからコンテンツ配信システムＳへの参加要求がないと判定すると（ステップＳ１１：Ｎｏ）、制御手段１１３は、コンテンツ管理装置１０からコンテンツ初期投入があったか否かを判定する（ステップＳ１３）。このコンテンツ初期投入とは、自ノード装置１がルートノード装置となるときに管理対象となるコンテンツ、すなわち管理対象コンテンツのデータをコンテンツ管理装置１０から受け取ることによって行われる。
【０１５２】
コンテンツ管理装置１０からコンテンツ初期投入があったと判定すると（ステップＳ１３：Ｙｅｓ）、制御手段１１３は、コンテンツ管理装置１０から受信した管理対象コンテンツのデータを第２記憶部１０４におけるコンテンツデータ記憶領域に記憶し、保持する（ステップＳ１４）。その後、制御手段１１３は、後述する「コンテンツ保持ノード装置の追加処理」（ステップＳ１５）を行う。
【０１５３】
ステップＳ１３において、コンテンツ管理装置１０からコンテンツ初期投入はないと判定すると（ステップＳ１３：Ｎｏ）、制御手段１１３は、コンテンツ管理装置１０からカタログリストを受信したかを判定する（ステップＳ１６）。このカタログリストは、コンテンツ配信システムＳ内で提供されているコンテンツをリスト化したものであり、ノード装置のユーザはこのカタログリストを用いて所望のコンテンツを選択することができる。
【０１５４】
コンテンツ管理装置１０からカタログリストを受信すると（ステップＳ１６：Ｙｅｓ）、制御手段１１３は、第２記憶部１０４のカタログリスト記憶領域に受信したカタログリストを記憶し、保持する（ステップＳ１７）。そして、制御手段１１３は、ステップＳ１７において記憶したカタログリストに基づいてディスプレイ１１０へ表示するためのコンテンツ選択用画面データを生成し、画面表示用データを更新する（ステップＳ１８）。
【０１５５】
一方、コンテンツ管理装置１０からカタログリストを受信しない（ステップＳ１６：Ｎｏ）とき、制御手段１１３は、外部ノード装置１からネットワークインターフェイス１０５を介してメッセージを受信したか否かを判定する（ステップＳ１９）。そして、外部ノード装置１からメッセージを受信したと判定すると（ステップＳ１９：Ｙｅｓ）、制御手段１１３は、後述の「メッセージ処理」（ステップＳ２０）を行う。
【０１５６】
また、ステップＳ１９において、外部ノード装置１からメッセージを受信しないと判定すると（ステップＳ１９：Ｎｏ）、インデックステーブル１２０の配信時刻欄に基づいて、コンテンツ保持ノード装置のうち、現在コンテンツデータを配信中のコンテンツ保持ノード装置が占める割合（以下、「配信率」と呼ぶ。）が８０％以上となっているか否かを判定する（ステップＳ２１）。配信率が８０％以上であると判定すると、制御手段１１３は、後述する「コンテンツ保持ノード装置の追加処理」（ステップＳ２２）を行う。
【０１５７】
一方、配信率が８０％以上でない場合（ステップＳ２１：Ｎｏ）、制御手段１１３は、さらに配信率が５０％以下であるか否かを判定する（ステップＳ２３）。配信率が５０％であると判定すると（ステップＳ２３：Ｙｅｓ）、制御手段１１３は、さらにインデックステーブル１２０の拡張管理情報記憶領域に第２位置情報Ｂが記憶されているか否か、すなわち拡張インデックスが有効か否かを判定する（ステップＳ２４）。拡張インデックスが有効である場合（ステップＳ２４：Ｙｅｓ）、配信元情報削除要求メッセージを自ノード装置１の拡張インデックスとして機能している外部ノード装置１へ送信する（ステップＳ２５）。一方、拡張インデックスが有効でないと判定する（ステップＳ２４：Ｎｏ）と、インデックステーブル１２０の管理情報記憶領域における第１位置情報Ａの登録数を調べ（ステップ２６）、第１位置情報Ａの登録数が２以上である場合（ステップ２６：Ｙｅｓ）自ノード装置１のインデックステーブル１２０のうち１つの第１位置情報Ａを削除する（ステップＳ２７）。登録数が２未満である場合（ステップ２６：Ｎｏ）は第１位置情報Ａを削除しない。なお、ステップ２６において、自ノード装置１のインデックステーブル１２０から第１位置情報Ａを削除する際、対応するコンテンツ保持ノード装置へコンテンツデータ削除要求を送信する。
【０１５８】
ステップＳ２３において、配信率が５０％以上であると判定する（ステップＳ２３：Ｎｏ）と、制御手段１１３は、ユーザからの検索要求があるか否かを判定する（ステップＳ２８）。たとえば、コンテンツ配信システムＳで利用可能なコンテンツを一覧にしたカタログリストをディスプレイ１１０に表示し、リモコン１０６の操作によってカタログリストからコンテンツが選択されたか否かにより、ユーザからの検索要求があるか否かを判定する。
【０１５９】
ユーザから検索要求があったと判定すると（ステップＳ２８：Ｙｅｓ）、制御手段１１３は、検索要求があったコンテンツのタイトルを所定のハッシュ関数によって演算することによってコンテンツデータの識別情報であるコンテンツＩＤを算出する（ステップＳ２９）。そして、制御手段１１３は、このように算出したコンテンツＩＤを宛先識別情報としたコンテンツ検索メッセージを生成し、ネットワークインターフェイス１０５を介して、生成したコンテンツ検索メッセージを送信する（ステップＳ３０）。コンテンツ検索メッセージの送信は、第１記憶部１０３に記憶しているルーティングテーブル１２１に基づいて、送信先ノード装置１のＩＰアドレスを取り出し、このＩＰアドレスに対してコンテンツ検索メッセージを送信する。その後、制御手段１１３は、このコンテンツ検索メッセージの宛先識別情報に対応するルートノード装置等からの応答を待つ（ステップＳ３１）。制御手段１１３は、ルートノード装置等からコンテンツデータ配信元情報を受信すると（ステップＳ３１：Ｙｅｓ）、受信したコンテンツデータ配信元情報に含まれるコンテンツ保持ノード装置の位置情報を宛先としてコンテンツ送信要求メッセージをネットワークインターフェイス１０５を介して行い、当該コンテンツ保持ノード装置からコンテンツパケットを受信するごとに、受信したコンテンツパケットからコンテンツデータを取り出して第１記憶部１０３のリングバッファから成るバッファ領域に順次記憶し、このようにリングバッファに一時記憶されたコンテンツデータを順次再生する（ステップＳ３２）。
【０１６０】
ステップＳ１２、Ｓ１５、Ｓ１８、Ｓ２０、Ｓ２２、Ｓ２５、Ｓ２７、Ｓ３２の処理が終了したとき、またはステップＳ２６において第１位置情報Ａの登録数が２以上ではないと判定したとき（ステップＳ２６：Ｎｏ）、またはステップＳ２８においてユーザからの検索要求がないと判定したとき（ステップＳ２８：Ｎｏ）、制御手段１１３は、自ノード装置１の電源がＯＦＦとなっているか否かを判定する（ステップＳ３３）。電源がＯＦＦとなっていないとき（ステップＳ３３：Ｎｏ）、ステップＳ１１の処理に移行し、電源がＯＦＦとなっているとき（ステップＳ３３：Ｙｅｓ）、処理を終了する。
【０１６１】
（メッセージ受信処理について）
次に、ステップＳ２０におけるメッセージ処理について図１６を参照して具体的に説明する。      
【０１６２】
制御手段１１３は、外部ノード装置１から受信したメッセージが所定のメッセージ、すなわちコンテンツ検索メッセージであるか、或いは配信元情報取得要求メッセージであるか否かを判定する（ステップＳ１０１）。
【０１６３】
所定のメッセージを受信すると（ステップＳ１０１：Ｙｅｓ）、制御手段１１３は、さらに、受信したメッセージの最終宛先が自ノード装置１であるか否かを判定する（ステップＳ１０２）。受信したメッセージの最終宛先が自ノード装置であるか否かは、受信したメッセージの宛先識別情報とルーティングテーブルとに基づいて判定される。すなわち、受信したメッセージに含まれる宛先識別情報とルーティングテーブルに記憶したノードＩＤとを比較し、メッセージに含まれる宛先識別情報と一番近いルーティングテーブル上のノードＩＤが自ノード装置１のノードＩＤであると判定すると、自ノード装置１宛のメッセージであると判定するのである。
【０１６４】
受信したメッセージの最終宛先が自ノード装置１であると判定すると（ステップＳ１０２：Ｙｅｓ）、制御手段１１３は、受信したメッセージの発行時刻と当該メッセージを受信した時刻との差分、すなわち到達時間Ｔｓを算出する（ステップＳ１０３）。受信したメッセージの発行時刻は、当該メッセージを送信したノード装置１がメッセージ中に挿入しており、制御手段１１３は受信したメッセージ中の発行時刻を参照することによりメッセージの発行時刻を検出する。
【０１６５】
次に、制御手段１１３は、受信したメッセージの到達時間Ｔｓが２００ｍｓ以上であるか否かを判定する（ステップＳ１０４）。到達時間Ｔｓが２００ｍｓ以上であると判定すると、制御手段１１３は、インデックステーブル１２０の管理情報記憶領域に記憶した第１位置情報Ａの１つを取り出して、この第１位置情報Ａを含むコンテンツデータ配信元情報を取得し（ステップＳ１０５）、このように取得したコンテンツデータ配信元情報を、前記所定メッセージを送信したノード装置１へ送信する（ステップＳ１０７）。一方、到達時間Ｔｓが２００ｍｓより小さいと判定すると、制御手段１１３は、インデックステーブル１２０の非管理情報記憶領域に記憶した第２位置情報Ｂを有する外部ノード装置１へ受信した所定メッセージを転送する（ステップＳ１０８）。但し、ステップＳ１０８において、非管理情報記憶領域に第２位置情報Ｂが記憶されていない場合には、インデックステーブル１２０の管理情報記憶領域に記憶した第１位置情報Ａの１つを取り出して、この第１位置情報Ａを含むコンテンツデータ配信元情報を取得し、このように取得したコンテンツデータ配信元情報を、前記所定メッセージを送信したノード装置１へ送信する。
【０１６６】
また、ステップＳ１０２において、受信したメッセージの最終宛先が自ノード装置ではないと判定すると、制御手段１１３は、第１記憶部１０３に記憶したルーティングテーブル１２１に基づいて、受信したメッセージの転送先を決定し（ステップＳ１０９）、当該メッセージを決定した転送先（中継先）ノード装置へ転送することによって当該メッセージを中継する（ステップＳ１１０）。
【０１６７】
ステップＳ１０１において、受信したメッセージが所定メッセージではないと判定すると（ステップＳ１０１：Ｎｏ）、制御手段１１３は、インデックス拡張要求メッセージを受信したか否かを判定する（ステップＳ１１１）。インデックス拡張要求メッセージを受信すると（ステップＳ１１１：Ｙｅｓ）、制御手段１１３は、インデックステーブル１２０の非管理情報記憶領域に空きがあるか否か、すなわち第３位置情報を新たに記憶する領域があるか否かを判定する（ステップＳ１１２）。
【０１６８】
インデックステーブル１２０の非管理情報記憶領域に空きがない場合（ステップＳ１１２：Ｙｅｓ）、制御手段１１３は、インデックス拡張メッセージを送信したノード装置へ否定応答、すなわちインデックス拡張ができない旨の返信をする（ステップＳ１１３）。
一方、インデックステーブル１２０の非管理情報記憶領域に空きがある場合（ステップＳ１１２：Ｎｏ）、制御手段１１３は、自ノード装置におけるインデックステーブル１２０の非管理情報記憶領域に保持するか否かを判定する（ステップＳ１１４）。自ノード装置の非管理情報記憶領域に保持すると判定すると（ステップＳ１１４：Ｙｅｓ）、制御手段１１３は、インデックス拡張メッセージを送信したノード装置へ肯定応答、すなわちインデックス拡張ができる旨の返信をする（ステップＳ１１５）。一方、自ノード装置の非管理情報記憶領域に保持しないと判定すると（ステップＳ１１４：Ｎｏ）、制御手段１１３は、受信したインデックス拡張要求メッセージを外部ノード装置へ転送する（ステップ１１６）。
【０１６９】
ステップＳ１１１において、インデックス拡張要求メッセージを受信していない場合（ステップＳ１１１：Ｎｏ）、制御手段１１３は、配信元情報追加要求メッセージを受信したか否かを判定する（ステップＳ１１７）。
【０１７０】
配信元情報追加要求メッセージを受信する（ステップＳ１１７：Ｙｅｓ）と、制御手段１１３は、自ノード装置におけるインデックステーブル１２０の非管理情報記憶領域に保持するか否かを判定する（ステップＳ１１８）。自ノード装置の非管理情報記憶領域に保持すると判定すると（ステップＳ１１８：Ｙｅｓ）、制御手段１１３は、受信した配信元情報追加要求メッセージに含まれるコンテンツデータ配信元情報を自ノード装置１のインデックステーブルに記憶する。たとえば、受信した配信元情報追加要求メッセージに含まれるコンテンツ保持ノード装置の位置情報を自ノード装置１のインデックステーブルの非管理情報記憶領域に記憶することによって第３位置情報を追加する（ステップＳ１１９）。一方、自ノード装置の非管理情報記憶領域に保持しないと判定すると（ステップＳ１１８：Ｎｏ）、制御手段１１３は、受信した配信元情報追加要求メッセージを外部ノード装置へ転送する（ステップ１２０）。
【０１７１】
また、配信元情報追加要求メッセージを受信しないとき（ステップＳ１１７：Ｎｏ）と、制御手段１１３は、配信元情報削除要求メッセージを受信したか否かを判定する（ステップＳ１２１）。
【０１７２】
配信元情報削除要求メッセージを受信する（ステップＳ１２１：Ｙｅｓ）と、制御手段１１３は、さらに、自ノード装置１のインデックステーブル１２０を拡張しているか否かを判定する（ステップＳ１２２）。そして、ノード装置１のインデックステーブル１２０を拡張していると判定すると（ステップＳ１２２：Ｙｅｓ）、制御手段１１３は、インデックス拡張した外部ノード装置１へ配信元情報削除要求メッセージを転送する（ステップＳ１２３）。ステップＳ１２３において、インデックス拡張した外部ノード装置１を複数記憶している場合には、制御手段１１３はランダムに１つの外部ノード装置１を選択して、選択した外部ノード装置１へ配信元情報削除要求メッセージを転送する。一方、ノード装置１のインデックステーブル１２０を拡張していないと判定すると（ステップＳ１２２：Ｎｏ）、制御手段１１３は、自ノード装置１のインデックステーブル１２０の非管理情報記憶領域から第３位置情報を一つ削除する（ステップＳ１２４）。ステップＳ１２４において、非管理情報記憶領域に第３位置情報を複数記憶している場合には、制御手段１１３はランダムに１つの第３位置情報を選択して、選択した第３位置情報を削除する。
【０１７３】
ステップＳ１０７、Ｓ１０８、Ｓ１１０、Ｓ１１３、Ｓ１１４、Ｓ１１６、Ｓ１１９、Ｓ１２０の処理が終了したとき、またはステップＳ１１７において配信元情報削除要求メッセージを受信していないと判定したとき（ステップＳ１１７：Ｎｏ）、制御手段１１３は、当該メッセージ処理を終了する。
【０１７４】
なお、ステップＳ１２１〜Ｓ１２４において、制御手段１１３は、自ノード装置のインデックステーブルを拡張しているか否かを判定し、インデックステーブルを拡張している場合には、配信元情報削除要求メッセージを転送し、インデックステーブルを拡張していない場合には、自ノード装置のインデックステーブルの非管理情報記憶領域から第３位置情報を一つ削除するようにしたが、以下のように制御するようにしてもよい。
【０１７５】
たとえば、ノード装置のインデックステーブルの非管理情報記憶領域に削除対象の第３位置情報が存在するか否かを判定し、非管理情報記憶領域に削除対象の第３位置情報が存在するときには、自ノード装置のインデックステーブルの非管理情報記憶領域から削除対象の第３位置情報を削除し、削除対象の第３位置情報がないと判定すると、インデックス拡張した外部ノード装置へ当該配信元情報削除要求メッセージを転送するように制御手段１１３によって制御する。
（コンテンツ保持ノード装置追加処理について）
次に、ステップＳ１５，Ｓ２２におけるコンテンツ保持ノード装置追加処理について図１７を参照して具体的に説明する。
【０１７６】
制御手段１１３は、まず第２記憶部１０４に記憶した管理対象コンテンツのデータを取り出し、コンテンツ保持ノード装置となるべきノード装置へ送信する。このコンテンツ保持ノード装置となるべきノード装置は、制御手段１１３によってランダムに決定される。すなわち、ランダム演算によってランダムな値を算出し、このランダムな値を所定のハッシュ関数によって演算し、これをコンテンツ保持ノード装置となるべきノード装置のノードＩＤとする。そして、制御手段１１３は、決定したノード装置に対してコンテンツデータ保持要求及びコンテンツデータを送信し、管理対象コンテンツのデータを保持させる。なお、制御手段１１３によって上記の如くコンテンツ保持ノード装置を生成する場合、制御手段１１３は、管理対象コンテンツのコンテンツＩＤや配信時刻、或いはコンテンツ保持ノード装置のノードＩＤを知っていることになるため、コンテンツ保持ノード装置の所在位置のみを登録メッセージとして当該コンテンツ保持ノード装置から送信させることによって、コンテンツデータ配信元情報を取得する。
【０１７７】
決定したノード装置から管理対象コンテンツのデータを保持したことを示す登録メッセージを受信すると、次に、インデックステーブル１２０の管理情報記憶領域に空きがあるか、すなわち第１位置情報を新たに記憶する領域があるか否かを判定する（ステップＳ２０１）。
【０１７８】
制御手段１１３は、自ノード装置１のインデックステーブル１２０の管理情報記憶領域に空きがないと判定すると（ステップＳ２０１：Ｙｅｓ）、後述の「インデックス拡張処理」を行う。一方、自ノード装置１のインデックステーブル１２０の管理情報記憶領域に空きがあると判定すると（ステップＳ２０１：Ｎｏ）、制御手段１１３は、インデックステーブル１２０の管理情報記憶領域に追加したコンテンツ保持ノード装置の位置情報を第１位置情報として記憶する（ステップＳ２０３）。ステップＳ２０２及びステップＳ２０３の処理が終了すると、コンテンツ保持ノード装置の追加処理を終了する。
【０１７９】
（インデックス拡張処理について）
次に、Ｓ２０２おけるインデックス拡張処理について図１８を参照して具体的に説明する。
【０１８０】
まず、制御手段１１３は、インデックステーブルを拡張するために、インデックステーブルを拡張するための外部ノード装置をランダムに決定する。すなわち、ランダム演算によってランダムな値を算出し、このランダムな値を所定のハッシュ関数によって演算し、これを送信先となるべきノード装置のノードＩＤとする（ステップＳ３０１）。次に、制御手段１１３は、インデックス拡張メッセージを、当該ノードＩＤを有するノード装置へ送信する。（ステップＳ３０２）。
【０１８１】
その後、制御手段１１３は、外部ノード装置から応答があるのを所定期間待つ（ステップＳ３０３）。所定期間内に外部ノード装置から応答があると、この応答が肯定応答、すなわちインデックステーブルの拡張ができる旨の返信を受信するか否かを判定する（ステップＳ３０４）。外部ノード装置から肯定応答を受信すると、制御手段１１３は、外部ノード装置へ配信元情報追加要求メッセージを送信し（ステップＳ３０５）、インデックス拡張処理を終了する。一方、外部ノード装置から否定応答、すなわちインデックステーブルの拡張ができない旨の返信を受信すると（ステップＳ３０４：Ｎｏ）、ステップＳ３０１の処理に戻り、再度別のノードＩＤを有する外部ノード装置へインデックス拡張メッセージを送信し、この処理をインデックステーブルの拡張ができるまで継続して行う。
【０１８２】
以上のように、本実施形態におけるコンテンツ配信システムＳにおけるノード装置は、ルートノード装置として機能するとき、すなわちネットワークを介して自ノード装置宛のコンテンツ検索メッセージを受信すると、ルーティングテーブルから第１位置情報と第２位置情報のいずれかを選択する。第１位置情報を選択するとき、コンテンツ検索メッセージを送信したノード装置へ第１位置情報を返信し、第２位置情報を選択するとき、第２位置情報のノード装置へ配信元情報取得要求メッセージを送信する。したがって、外部ノード装置の情報記憶領域を利用することができ、セットトップボックスなどのように記憶容量が小さいノード装置であっても、ルートノード装置としての機能することができる。
【０１８３】
なお、本実施形態においては、第２位置情報を選択するとき、第２位置情報のノード装置へ配信元情報取得要求メッセージを送信するようにしたが、これに限られず、たとえば、コンテンツ検索メッセージを転送するようにしてもよい。すなわち、ノード装置からの「コンテンツデータ配信元情報の送信要求」或いはその旨の情報が転送されるようにすれば、どのような形で送信されてもよい。
【０１８４】
更にまた、本実施形態においては、コンテンツ保持ノード装置の生成をルートノードが指示していたが、コンテンツ管理装置１０がコンテンツ保持ノード装置となるべきノード装置を決定して管理対象コンテンツデータを配布するような場合やコンテンツを視聴する際にコンテンツデータをダウンロードしてコンテンツ保持ノード装置となる場合など、ルートノード装置がコンテンツ保持ノード装置となるべきノード装置を決定しないような場合には、コンテンツ保持ノード装置となったノード装置から登録メッセージを受信したときを配信元情報追加イベントの発生としてもよい。この場合、ノード装置１は、ルートノード装置として機能する際に、管理対象コンテンツ保持ノード装置から、ネットワーク８を介して当該管理対象コンテンツ保持ノード装置の位置情報を含む登録メッセージ（コンテンツデータ配信元情報の登録要求）を受信するコンテンツデータ配信元情報受信手段を有し、コンテンツデータ配信元情報受信手段が登録メッセージを受信したとき、新たに記憶すべき管理対象コンテンツ保持ノード装置の位置情報が発生したと判定する。
【０１８５】
更にまた、配信元情報追加イベントの発生が登録メッセージを受信したときであったが、本実施形態のように、ルートノードがコンテンツ保持ノード装置を生成させる場合には、コンテンツ保持ノード装置の生成したときに配信元情報追加イベントを発生させてもよい。
【０１８６】
更にまた、本実施形態においては、インデックステーブルを拡張するためにルートノード装置から外部ノード装置に対して配信元情報追加要求メッセージを送信することとしたが、コンテンツ管理装置１０がコンテンツ保持ノード装置となるべきノード装置を決定して管理対象コンテンツデータを配布するような場合、コンテンツ保持ノード装置となったノード装置から登録メッセージをそのまま転送することで配信元情報追加要求メッセージとするようにしてもよい。
【０１８７】
更にまた、本実施形態においては、インデックステーブルに記憶するコンテンツデータ配信元情報における位置情報としてコンテンツ保持ノード装置のＩＰアドレスを例に説明したが、コンテンツ保持ノード装置の位置情報としてＩＰアドレスではなく、コンテンツ保持ノード装置におけるノードＩＤなどの識別情報を位置情報にするようにしてもよい。
【図面の簡単な説明】
【０１８８】
【図１】本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ＩＤ空間の説明図である。
【図３】ＤＨＴによってルーティングテーブルが作成される様子の一例を示す図である。
【図４】本実施形態に係るノード装置のルーティングテーブルの一例である。
【図５】ＤＨＴによりコンテンツデータの保持元であるノード装置１が検索される様子の一例を示す図である。
【図６】コンテンツ保持ノードの登録メッセージが転送される様子をスパニングツリー状に表した図である。
【図７】本実施形態に係るノード装置のインデックステーブルの一例である。
【図８】インデックスが外部ノード装置に拡張された一例である。
【図９】インデックス拡張動作の様子の一例を示す図である。
【図１０】コンテンツ保持ノード装置追加動作の様子の一例を示す図である。
【図１１】コンテンツ保持ノード装置追加動作の様子の他の例を示す図である。
【図１２】拡張されたインデックスを削除する動作の様子の一例を示す図である。
【図１３】コンテンツ検索メッセージに対する応答の様子の一例を示す図である。
【図１４】本実施形態におけるノード装置の概略構成例を示す図である。
【図１５】ノード装置におけるメイン処理を示すフローチャート。
【図１６】ノード装置におけるメッセージ処理を示すフローチャート。
【図１７】ノード装置におけるコンテンツ保持ノード装置追加処理を示すフローチャート。
【図１８】ノード装置におけるインデックス拡張処理を示すフローチャート。
【符号の説明】
【０１８９】
１  ノード装置
８  ネットワーク
１０２  ＣＰＵ
１０３  第１記憶部
１０４  第２記憶部
１１３  制御手段
Ｓ  コンテンツ配信システム
【図１】
2007193626.tif 000003
【図２】
2007193626.tif 000004
【図３】
2007193626.tif 000005
【図４】
2007193626.tif 000006
【図５】
2007193626.tif 000007
【図６】
2007193626.tif 000008
【図７】
2007193626.tif 000009
【図８】
2007193626.tif 000010
【図９】
2007193626.tif 000011
【図１０】
2007193626.tif 000012
【図１１】
2007193626.tif 000013
【図１２】
2007193626.tif 000014
【図１３】
2007193626.tif 000015
【図１４】
2007193626.tif 000016
【図１５】
2007193626.tif 000017
【図１６】
2007193626.tif 000018
【図１７】
2007193626.tif 000019
【図１８】
2007193626.tif 000020