(57)【特許請求の範囲】
【請求項１】
ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、
前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、
前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、
前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、
前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、
メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムであって、
前記コンテンツデータ管理装置は、
前記コンテンツデータを記憶するコンテンツデータ記憶手段と、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定手段と、
前記コンテンツデータを記憶するコンテンツデータ記憶手段と、
前記コンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定手段と、
前記コンテンツ保持ノード装置決定手段によって決定したコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求手段と、を有し、
前記ノード装置は、
前記保持要求を受信する受信手段と、
前記受信手段により前記保持要求を受信したとき、前記コンテンツデータの保持要求に対応するコンテンツデータを記憶するコンテンツデータ記憶手段と、
前記コンテンツデータ記憶手段にコンテンツデータを記憶したときに、前記コンテンツデータを記憶した前記ノード装置の前記所在情報を含む登録メッセージを、記憶した前記コンテンツデータの前記ルートノード装置宛に送信する登録メッセージ送信手段と、
を有する
ことを特徴とするコンテンツ配信システム。
【請求項２】
ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、
前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、
前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、
前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、
前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムにおいて、
前記コンテンツデータ管理装置は、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定手段と、
前記コンテンツデータを記憶するコンテンツデータ記憶手段と、
前記コンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定手段と、
前記コンテンツ保持ノード装置決定手段によって決定されたコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求手段と、を有する
ことを特徴とするコンテンツデータ管理装置。
【請求項３】
前記コンテンツ保持ノード装置決定手段は、
保持させる前記コンテンツデータの識別情報に対して、上位一桁目の情報が異なる識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定する場合に、複数の前記コンテンツ保持ノード装置を決定するとき、前記上位一桁目がそれぞれ異なる識別情報を有するノード装置を前記コンテンツデータ保持ノード装置として決定する
ことを特徴とする請求項２に記載のコンテンツデータ管理装置。
【請求項４】
前記コンテンツ保持ノード装置決定手段は、
前記決定する前記コンテンツ保持ノード装置の数が前記上位一桁目の数以上であるとき、前記上位一桁目の数以上の前記コンテンツ保持ノード装置をランダムに決定する
ことを特徴とする請求項３に記載のコンテンツデータ管理装置。
【請求項５】
ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、
前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、
前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、
前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、
前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムにおいて、
前記コンテンツデータ管理装置に、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定ステップと、
前記コンテンツデータを記憶するコンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定ステップと、
前記コンテンツ保持ノード装置決定ステップによって決定したコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求ステップと、
を実行させるためのプログラム。
【請求項６】
ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、
前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、
前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、
前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、
前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、
メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムにおける情報処理方法であって、
前記コンテンツデータ管理装置は、
前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定ステップと、
前記コンテンツデータを記憶するコンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定ステップと、
前記コンテンツ保持ノード装置決定ステップによって決定したコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求ステップと、を有し、
前記ノード装置は、
前記保持要求を受信する受信ステップと、
前記受信手段により前記保持要求を受信したとき、前記コンテンツデータの保持要求に対応するコンテンツデータをコンテンツデータ記憶手段に記憶するコンテンツデータ記憶ステップと、
前記コンテンツデータ記憶手段にコンテンツデータを記憶したときに、前記コンテンツデータを記憶した前記ノード装置の前記所在情報を含む登録メッセージを、記憶した前記コンテンツデータの前記ルートノード装置宛に送信する登録メッセージ送信ステップと、を有する
ことを特徴とするコンテンツ配信システムの情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツ配信システム、コンテンツデータ管理装置及びその情報処理方法並びにそのプログラムの技術分野に属し、より詳細には、ネットワーク上に分散配置された複数のノード装置から構成され、これらのノード装置間でコンテンツデータの送受信を行うコンテンツ配信システム、コンテンツデータ管理装置及びその情報処理方法並びにそのプログラムの技術分野に属する。
【背景技術】
【０００２】
近年、インターネットなどのネットワークを介して、音楽、映画、トーク番組などコンテンツデータ（以下、「コンテンツ」ともいう。）を配信する、いわゆるコンテンツ配信システムの研究が盛んである。
【０００３】
従来の上記コンテンツ配信システムの基本的構成として、サーバークライアント型の配信システムがある。このサーバークライアント型の配信システムは、コンテンツを蓄積するサーバにクライアントである端末装置からアクセスし、コンテンツの配信を受ける構成である。
【０００４】
ところが、この種の配信システムでは、特定の人気コンテンツを有するサーバ装置に端末装置からのアクセスが集中し、コンテンツの配信を希望する複数のユーザの端末装置において、希望のコンテンツをストレスなく高品質に入手して視聴することが困難になるという不都合がある。
【０００５】
そこで、分散ハッシュテーブル（ＤＨＴ（Distributed Hash Table））を利用して論理的にオーバーレイネットワークを構築することにより、情報を効率的に分散配置して負荷分散を図る技術が提案されている。
【０００６】
このシステムにおいては、端末装置である各ノード装置が、当該オーバーレイネットワークに参加している全てのノード装置へのリンク情報（例えば、ＩＰアドレス）を認識しているわけではなく、参加の際などに得られる一部のノード装置へのリンク情報だけを保持しており、かかるリンク情報に基づき、コンテンツデータの検索等を行うようになっている。
【０００７】
このオーバーレイネットワークにおいては、ノード装置の参加及び脱退（離脱）が頻繁に行われても、負荷分散が適切に行われる必要があり、非特許文献１には、オーバーレイネットワークにおいて、参加及び脱退（離脱）が頻繁に行われる場合であっても、適切に負荷分散を行うための技術が開示されている。
【非特許文献１】「分散ハッシュテーブルの軽量な負荷分散手法の検討」  社団法人  電子情報通信学会  信学技報  ＩＮ２００３−１８９，２００４年２月
【発明の開示】
【発明が解決しようとする課題】
【０００８】
非特許文献１の技術を、コンテンツ配信システムに用いた、ピアツーピア(Ｐ２Ｐ)型のコンテンツ配信システムにおいては、各ノード装置がコンテンツデータを保持するコンテンツ配信サーバとなり、また、各ノード装置がコンテンツ配信要求クライアントにもなる。
【０００９】
また、このようなコンテンツ配信システムにおいて、コンテンツ配信サーバであるノード装置がコンテンツデータを保持しているだけでなく、ネットワーク上の他のノード装置もコンテンツデータの複製を保持しているものが知られている。以下、コンテンツデータの複製を保持しているノード装置をレプリカ保持ノード装置ともいう。コンテンツ配信要求クライアントであるノード装置は、要求するコンテンツをこのようなレプリカ保持ノード装置から入手することもできる。したがって、あるコンテンツに対する配信要求が増加した場合に、コンテンツ配信サーバであるノード装置だけでなく、その複製を保持しているレプリカ保持ノード装置からもコンテンツを配信できるため、コンテンツ配信サーバであるノード装置へのアクセスの集中を回避できるものである。以下、コンテンツ配信サーバ及びレプリカ保持ノード装置を含めてコンテンツ保持ノード装置と呼ぶ。
【００１０】
上述のようにピアツーピア型のコンテンツ配信システムにおいては、あるコンテンツに対して、そのコンテンツを保持する複数のコンテンツ保持ノード装置に関する情報を記憶するノード装置（以下、「ルートノード装置」と呼ぶ。）が決められており、前記コンテンツを要求するノード装置（以下、「リクエストノード装置」と呼ぶ。）は、当該要求するコンテンツを保持するコンテンツ保持ノード装置に関する情報を有するルートノード装置に向けてコンテンツ保持ノード要求情報（以下、「コンテンツ検索メッセージ」と呼ぶ。）の送信を行うことによって、コンテンツ保持ノード装置に関する情報を取得し、この情報に基づいてコンテンツ保持ノード装置へコンテンツデータの配信要求を行う構成をとる。
【００１１】
このようなコンテンツ配信システムにおいて、コンテンツを投入する際には、どのノード装置にコンテンツデータを記憶させるかは、コンテンツ投入サーバであるコンテンツデータ管理装置によってランダムに決められている。すなわち、コンテンツデータ管理装置は、ランダムに決定したノード装置に対して、コンテンツデータを送信し、記憶させることによってコンテンツ配信システム上にコンテンツ保持ノード装置を配置する。
【００１２】
コンテンツデータ管理装置からコンテンツデータを受信して記憶したコンテンツ保持ノード装置は、記憶したコンテンツデータに関する情報と自ノード装置に関する情報を含む登録メッセージを、ルーティングテーブルに基づき、ルートノード装置へ向けて送信する。そして、この登録メッセージは、他のノード装置で転送されながら、ルートノード装置で受信される。
【００１３】
ところで、コンテンツ保持ノード装置に関する情報をルートノード装置にのみ記憶させておく場合、リクエストノード装置の位置によっては、リクエストノード装置からのコンテンツ検索メッセージが転送される回数が多くなり、コンテンツ保持ノード装置に関する情報の検索時間が長くかかってしまう。また、ルートノード装置に近いノード装置は、コンテンツ検索メッセージを受信する機会が増える。
【００１４】
そこで、登録メッセージを転送するノード装置に、コンテンツ保持ノード装置に関する情報を保持させる（このようにコンテンツ保持ノード装置に関する情報を保持するノード装置を「キャッシュノード装置」と呼ぶ。）ことにより、リクエストノード装置からのコンテンツ検索メッセージに対してコンテンツ保持ノード装置に関する情報を返信させるようにしている。
【００１５】
ところが、上述のようにコンテンツ保持ノード装置は、コンテンツデータ管理装置によってランダムに決められているため、キャッシュノード装置の配置や数にバラツキが生じる。例えば、コンテンツ保持ノード装置の配置がルートノード装置の近くとなった場合には、登録メッセージの転送回数が少なくなり、キャッシュノード装置の数が少なくなる。その結果、コンテンツ検索メッセージがリクエストノード装置からルートノード装置に到達するまでにキャッシュノード装置に到達する可能性が低くなり、せっかくキャッシュノード装置を配置しても、コンテンツの検索にかかる時間は十分に低減できない。
【００１６】
本発明は、以上の不都合に鑑みてなされたものであり、ネットワーク上に分散配置された複数のノード装置を有するＰ２Ｐ型のコンテンツ配信システムにおいて、コンテンツの検索時間を低減することができるコンテンツ配信システム及び方法等を提供することを課題とする。
【課題を解決するための手段】
【００１７】
上記課題を解決するために、請求項１に記載の発明は、ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムであって、前記コンテンツデータ管理装置は、前記コンテンツデータを記憶するコンテンツデータ記憶手段と、前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定手段と、前記コンテンツデータを記憶するコンテンツデータ記憶手段と、前記コンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定手段と、前記コンテンツ保持ノード装置決定手段によって決定したコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求手段と、を有し、前記ノード装置は、前記保持要求を受信する受信手段と、前記受信手段により前記保持要求を受信したとき、前記コンテンツデータの保持要求に対応するコンテンツデータを記憶するコンテンツデータ記憶手段と、前記コンテンツデータ記憶手段にコンテンツデータを記憶したときに、前記コンテンツデータを記憶した前記ノード装置の前記所在情報を含む登録メッセージを、記憶した前記コンテンツデータの前記ルートノード装置宛に送信する登録メッセージ送信手段と、を有することを特徴とする。
【００１８】
また、請求項２に記載の発明は、ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムにおいて、前記コンテンツデータ管理装置は、前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定手段と、前記コンテンツデータを記憶するコンテンツデータ記憶手段と、前記コンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定手段と、前記コンテンツ保持ノード装置決定手段によって決定されたコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求手段と、を有することを特徴とする。
【００１９】
また、請求項３に記載の発明は、請求項２に記載の発明において、前記コンテンツ保持ノード装置決定手段は、保持させる前記コンテンツデータの識別情報に対して、上位一桁目の情報が異なる識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定する場合に、複数の前記コンテンツ保持ノード装置を決定するとき、前記上位一桁目がそれぞれ異なる識別情報を有するノード装置を前記コンテンツデータ保持ノード装置として決定することを特徴とする。
【００２０】
また、請求項４に記載の発明は、請求項３に記載の発明において、前記コンテンツ保持ノード装置決定手段は、前記決定する前記コンテンツ保持ノード装置の数が前記上位一桁目の数以上であるとき、前記上位一桁目の数以上の前記コンテンツ保持ノード装置をランダムに決定することを特徴とする。
【００２１】
また、請求項５に記載の発明は、ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムにおいて、前記コンテンツデータ管理装置に、前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定ステップと、前記コンテンツデータを記憶するコンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定ステップと、前記コンテンツ保持ノード装置決定ステップによって決定したコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求ステップと、を実行させるためのプログラムであることを特徴とする。
【００２２】
また、請求項６に記載の発明は、ネットワークを介して互いに接続された複数のノード装置と、前記複数のノード装置のうちの一部のノード装置を、前記複数のノード装置間で共用されるべきコンテンツデータを記憶するコンテンツ保持ノード装置とするために前記コンテンツデータを前記一部のノード装置に記憶させるコンテンツデータ管理装置とを備え、前記複数のノード装置には、前記複数のノード装置を識別するノード識別情報であって、所定桁数から構成される前記ノード識別情報が付与され、前記コンテンツ配信システムにおいて配信される前記コンテンツデータには、所定桁数から構成されて前記コンテンツデータを識別するコンテンツ識別情報が付与され、前記コンテンツデータを保持する前記コンテンツ保持ノード装置のネットワークにおける所在を示す所在情報を記憶するルートノード装置が、前記コンテンツデータごとに決定され、前記コンテンツ保持ノード装置が保持するコンテンツデータの前記コンテンツ識別情報との差が所定の範囲内である前記ノード識別情報が付与されたノード装置が、前記ルートノード装置と決定され、前記コンテンツ保持ノード装置から前記ルートノード装置に向けて送信されたメッセージであって、メッセージを送信した前記コンテンツ保持ノードの前記所在情報を含むメッセージを、前記複数のノード装置の少なくとも１つのノード装置が受信した場合、メッセージを受信したノード装置は、当該メッセージを、前記複数のノード装置の少なくとも１つのノード装置に転送するとともに、受信した前記メッセージが含む前記所在情報を記憶するコンテンツ配信システムにおける情報処理方法であって、前記コンテンツデータ管理装置は、前記コンテンツ配信システムにおいて配信される前記コンテンツデータを識別するコンテンツ識別情報であって、所定桁数から構成される前記コンテンツ識別情報を決定するコンテンツデータ識別情報決定ステップと、前記コンテンツデータを記憶するコンテンツデータ記憶手段に記憶したコンテンツデータを保持させるコンテンツ保持ノード装置であって、保持させる前記コンテンツデータの前記コンテンツ識別情報に対して、上位一桁目の情報が異なる前記ノード識別情報を有するノード装置、又は排他的論理和の最も大きくなる前記ノード識別情報を有するノード装置、又は数値的差異が最も大きくなる前記ノード識別情報を有するノード装置を前記コンテンツ保持ノード装置として決定するコンテンツ保持ノード装置決定ステップと、前記コンテンツ保持ノード装置決定ステップによって決定したコンテンツ保持ノード装置にコンテンツデータの保持要求を行うコンテンツ保持要求ステップと、を有し、前記ノード装置は、前記保持要求を受信する受信ステップと、前記受信手段により前記保持要求を受信したとき、前記コンテンツデータの保持要求に対応するコンテンツデータを記憶するコンテンツデータ記憶ステップと、前記コンテンツデータ記憶手段にコンテンツデータを記憶したときに、前記コンテンツデータを記憶した前記ノード装置の前記所在情報を含む登録メッセージを、記憶した前記コンテンツデータの前記ルートノード装置宛に送信する登録メッセージ送信ステップと、を有することを特徴とする。
【発明の効果】
【００３２】
請求項１、２、５、６に記載の発明によれば、コンテンツデータ管理装置は、コンテンツデータを保持させるコンテンツ保持ノード装置の識別情報を、前記コンテンツデータの識別情報に対して、上位一桁目の情報が異なる識別情報、又は排他的論理和の最も大きくなる識別情報、又は数値的差異が最も大きくなる識別情報に決定し、決定した識別情報を宛先識別情報としてコンテンツデータの保持要求を行うので、コンテンツ保持ノード装置から送信される登録メッセージが転送される回数が多くなり、キャッシュノード装置が多く配置されることになる。その結果、コンテンツを検索するリクエストノード装置からのコンテンツ検索メッセージは、ルートノード装置に到達するまでにキャッシュノード装置に到達する可能性が高くなるので、コンテンツの検索にかかる時間は全体的に減少する。また、ルートノード装置に近いノード装置はコンテンツを検索するためのコンテンツ検索メッセージを転送する機会が減少する。したがって、ルートノード装置に近いノード装置の負荷を低減することができる。
【００３３】
また、保持させるコンテンツデータの識別情報に対して、上位一桁目の情報が異なる識別情報を有するノード装置をコンテンツデータ保持ノード装置として決定する場合、例えば、Ｐａｓｔｒｙ型やｔａｐｅｓｔｒｙ型のコンテンツ配信システムにおいて、登録メッセージの転送回数を可及的に増加させることができる。したがって、コンテンツ保持ノード装置から送信される登録メッセージが転送される回数が多くなるので、コンテンツの検索にかかる時間を全体的に減少させることができ、また、ルートノード装置に近いノード装置の負荷を低減することができる。あるいは、保持させる前記コンテンツデータの識別情報に対して、排他的論理和の最も大きくなる識別情報を有するノード装置をコンテンツデータ保持ノード装置として決定する場合であれば、例えば、ｋｅｄｅｍｕｌｉａ型のコンテンツ配信システムにおいて、登録メッセージの転送回数を可及的に増加させることができる。したがって、コンテンツ保持ノード装置から送信される登録メッセージが転送される回数が多くなるので、コンテンツの検索にかかる時間を全体的に減少させることができ、また、ルートノード装置に近いノード装置の負荷を低減することができる。あるいは、保持させるコンテンツデータの識別情報に対して、数値的差異が最も大きくなる識別情報を有するノード装置をコンテンツデータ保持ノード装置として決定する場合であれば、例えばｃｈｏｒｄ型のコンテンツ配信システムにおいて、登録メッセージの転送回数を可及的に増加させることができる。したがって、コンテンツ保持ノード装置から送信される登録メッセージが転送される回数が大きくなるので、コンテンツの検索にかかる時間を全体的に減少させることができ、また、ルートノード装置に近いノード装置の負荷を低減することができる
【００３５】
また、請求項３に記載の発明によれば、複数のコンテンツ保持ノード装置を決定するとき、上位一桁目がそれぞれ異なる識別情報を有するノード装置をコンテンツデータ保持ノード装置として決定するので、コンテンツデータ管理装置が複数のコンテンツ保持ノード装置を配置する場合であっても、登録メッセージの転送回数を可及的に増加させることができる。したがって、コンテンツ保持ノード装置から送信される登録メッセージが転送される回数が多くなるので、コンテンツの検索にかかる時間を全体的に減少させることができ、また、ルートノード装置に近いノード装置の負荷を低減することができる。
【００３６】
また、請求項４に記載の発明によれば、決定する前記コンテンツ保持ノード装置の数が前記一桁目の数以上であるとき、上位一桁目の数以上のコンテンツ保持ノード装置をランダムに決定するので、多数のコンテンツ保持ノード装置をコンテンツ配信システムに配置するときであっても、コンテンツデータ管理装置の演算負荷を軽減することができる。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、配信する情報を音楽データや映像データなどのコンテンツデータとし、Ｐａｓｔｒｙ型やＴａｐｅｓｔｒｙ型のコンテンツ配信システムに対して本発明を適用した場合の実施形態である。
【００４０】
［１．コンテンツ配信システムの構成等］
まず始めに、図１を参照して、情報配信システムとしてのコンテンツ配信システムの概要構成等について説明する。図１は、本実施形態に係るコンテンツ配信システムにおける端末装置である各ノード装置の接続態様の一例を示す図である。このコンテンツ配信システムは、ネットワーク上に分散配置された複数のノード装置から構成され、ノード装置間でコンテンツデータの送受信を行うものである。
【００４１】
図１の下部枠101内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、及び通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界のネットワーク）８が構築されている。
【００４２】
コンテンツ配信システムＳは、図１の上部枠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」のコンテンツデータを保持するコンテンツ保持ノード装置に関する情報を受信して知ることになり、当該コンテンツ保持ノード装置から、そのコンテンツデータをダウンロードして取得することになる。
【００７１】
［１．４．インデックステーブルへの登録方法］
このような構成のコンテンツ配信システムＳの中で、例えば、あるノード装置１が新しいコンテンツデータを、コンテンツ配信システムＳ上の他のノード装置１から検索可能となるように公開する際の手法について述べる。このノード装置１がコンテンツデータを記憶し、保持するコンテンツ保持ノード装置となる。
【００７２】
コンテンツデータ管理装置１０から配布されたコンテンツデータを記憶するコンテンツ保持ノード装置は、記憶したコンテンツデータのコンテンツＩＤと同じノードＩＤを持つノード装置に向けて（このノード装置が実在するか否かはこの時点ではわからない。）登録メッセージを送信する。そして、この登録メッセージも、上記コンテンツ検索メッセージと同様にルーティングテーブルに従って、次々と転送されていき、当該登録メッセージに含まれるコンテンツＩＤに最も近いノードＩＤを有するノード装置１まで転送されたところで、そのノード装置１はもはや転送先のノード装置１が他にないと判断すると、当該ノード装置１自身がそのコンテンツのルートノード装置となるべきだと判断し、当該登録メッセージに含まれる当該コンテンツＩＤ及びコンテンツ保持ノードのノードＩＤやＩＰアドレス（以下、これらを「インデックス情報」と呼ぶ。）をインデックス情報として記憶する。
【００７３】
更にまた、本実施形態では、登録メッセージがルートノード装置へ転送される経路の途中のノード装置１でも、登録メッセージに含まれるインデックス情報をキャッシュとして保持するように構成されており、このようなノード装置をキャッシュノード装置という。これにより、ルートノード装置がコンテンツを検索するためのコンテンツ検索メッセージを受信するより前に、キャッシュノード装置にコンテンツ検索メッセージが転送された時点でキャッシュノード装置がコンテンツ保持ノード装置のＩＰアドレスやノードＩＤを、コンテンツの所在を検索したリクエストノード装置に返信することが可能になる。なお、本実施形態においては、コンテンツ検索メッセージに対して少なくともコンテンツ保持ノード装置のＩＰアドレスを返信することとするが、ノードＩＤをコンテンツ保持ノード装置のＩＰアドレスと共に返信するようにしてもよい。
【００７４】
登録メッセージを転送していく際には、通常、上述のようにキャッシュノード装置が登録メッセージに基づいたインデックス情報を保持していく。
【００７５】
ここで、図６（ａ）に示すように、ノードＩＤが「1301」であるノード装置１ＭをコンテンツＩＤ「3020」であるコンテンツを保持するコンテンツ保持ノード装置とし、ノードＩＤが「3011」であるノード装置１ＣをコンテンツＩＤ「3020」であるコンテンツのルートノード装置とした場合におけるインデックス情報の保持について図６（ａ）、（ｂ）を参照して説明する。
【００７６】
図６（ａ）、（ｂ）に示すように、コンテンツ保持ノード装置であるノード装置１Ｍがインデックス情報を含む登録メッセージを送信すると、これを受け取ったノード装置１Ａは、当該インデックス情報を保持することによりキャッシュノード装置（１）として機能する。キャッシュノード装置（１）は、当該登録メッセージを転送する。当該登録メッセージを受け取ったノード装置１Ｂは、当該インデックス情報を保持することによりキャッシュノード装置（２）として機能する。キャッシュノード装置（２）は、当該登録メッセージを転送する。当該登録メッセージを受け取ったノード装置１Ｃは、当該インデックス情報を保持することによりルートノード装置として機能する。このようにノード装置１Ａ，１Ｂ，１Ｃは登録メッセージに含まれるインデックス情報を保持することになる。
【００７７】
ところで、ルートノード装置やキャッシュノード装置におけるインデックス情報の保持は、図７に示すようなインデックステーブルにより行われる。図７はルートノード装置１Ｃにおけるインデックステーブルの例を示したものであり、自ノード装置が管理対象であるコンテンツＩＤ「3020」のコンテンツに関するコンテンツ保持ノード装置のノードＩＤやＩＰアドレスなどを記憶する他、キャッシュノード装置としてコンテンツＩＤ「2021」のコンテンツに関するコンテンツ保持ノード装置の識別情報を記憶している。なお、インデックステーブルには、コンテンツＩＤ、コンテンツ保持ノード装置のノードＩＤやＩＰアドレスの他、著作権情報なども記憶することができる。
【００７８】
［１．５．コンテンツ保持ノード装置の配置方法］
ここで、コンテンツ投入サーバであるコンテンツデータ管理装置におけるコンテンツ保持ノード装置の配置方法について、図面を参照して具体的に説明する。図８はコンテンツ保持ノード装置がランダムにコンテンツ保持ノード装置を配置した場合の例を示す図であり、図９及び図１０はコンテンツの検索時間を低減することができるようにコンテンツ保持ノード装置がコンテンツ保持ノード装置を配置した場合の例を示す図である。
【００７９】
従来のコンテンツデータ管理装置では、ランダムにコンテンツ保持ノード装置を配置していたために、コンテンツ保持ノード装置がルートノード装置の近くのＩＤ空間に配置されることがある。例えば、図８（ａ）に示すように、コンテンツデータ管理装置がコンテンツＩＤ「1231」のコンテンツを管理するルートノード装置１ＥのノードＩＤと最上位桁が同一のＩＤ空間のノード装置１Ｆ，１Ｇをコンテンツ保持ノード装置として選択してしまうことがある。このようにコンテンツ保持ノード装置の選択が行われると、コンテンツデータ管理装置は、ノード装置１Ｆ，１Ｇへコンテンツデータが配布される。コンテンツ保持ノード装置となったノード装置１Ｆ，１Ｇは、ルートノード装置１Ｅに対して、登録メッセージを送信する。図８（ａ）においては、コンテンツ保持ノード装置１Ｆは、自ノード装置のルーティングテーブルにルートノード装置１ＥのノードＩＤに対応するＩＰアドレスを有しており、したがって、コンテンツ保持ノード装置１Ｆからの登録メッセージは、直接ルートノード装置１Ｅに送信される。一方、コンテンツ保持ノード装置１Ｇは、自ノード装置のルーティングテーブルに従い、登録メッセージをノード装置１Ｈへ送信する。ノード装置１Ｈは登録メッセージを受信すると、当該登録メッセージに含まれるインデックス情報を取得してコンテンツ「1231」のキャッシュノード装置となる。また、ノード装置１Ｈは、自ノード装置のルーティングテーブルにルートノード装置１ＥのノードＩＤに対応するＩＰアドレスを有しており、コンテンツ保持ノード装置１Ｇから送信された登録メッセージをルートノード装置１Ｅへ転送する。
【００８０】
図８（ｂ）は、図８（ａ）をコンテンツ検索メッセージが転送される経路をツリー構造にて簡易的に表現したものである。この図８（ｂ）に示すように、ルートノード装置１Ｅの近くにキャッシュノード装置１Ｈやコンテンツ保持ノード装置１Ｆ，１Ｇが集中して配置されてしまう。したがって、例えば、ノード装置１Ｊがリクエストノード装置として機能する場合には、キャッシュノード装置１Ｈに到達するまでに時間がかかってしまい、せっかくキャッシュノード装置１Ｈを配置しても、コンテンツの検索にかかる時間は十分に低減できない。
【００８１】
そこで、本実施形態におけるコンテンツデータ管理装置１０では、コンテンツデータを配布して、保持させるコンテンツ保持ノード装置を決定するときに、コンテンツ保持ノード装置の識別情報であるノードＩＤとコンテンツデータの識別情報であるコンテンツＩＤとが所定の関係となるノードＩＤを有するノード装置をコンテンツデータ保持装置として決定するようにしている。
【００８２】
例えば、図９（ａ）に示すように、コンテンツデータ管理装置１０は、コンテンツＩＤ「1231」のコンテンツ（以下、「コンテンツ「1231」」と呼ぶ。）とＩＤの最上位桁が異なるノードＩＤ「2xxx」（xは０〜３までの任意の値）を有するノード装置１Ｋを選択し、コンテンツ保持ノード装置として決定する。なお、「1xxx」にノード装置が存在しておらず、コンテンツＩＤ「1231」のルートノード装置となるべきノード装置が「1xxx」に存在しないことも考えられるため、この図のようにはならず、ノードＩＤ「0xxx」がルートノード装置になることもあり得る。本来ならば、ルートノード装置とコンテンツ保持ノード装置は、違うエリアに存在するように選びたいところであるが、確実にそう出来るとは限らないので、コンテンツ保持ノード装置として決定するノード装置は、コンテンツＩＤ「1231」のルートノード装置となるノード装置が存在する可能性が低いエリアのノード装置とするのが望ましい。ここでは、ルートノード装置は、コンテンツＩＤに最も近いノードＩＤを有するノード装置としているため、コンテンツＩＤ「1231」のルートノード装置となるノード装置が存在する可能性が低いエリアは、「2xxx」となる。このようにノード装置１Ｋをコンテンツ保持ノード装置として決定すると、コンテンツデータ管理装置１０は、ノード装置１Ｋへコンテンツ「1231」のデータを配布する。コンテンツ保持ノード装置となったノード装置１Ｋは、ルートノード装置１Ｅに向けて、登録メッセージを送信する。図９（ａ）においては、コンテンツ保持ノード装置１Ｋは、自ノード装置のルーティングテーブルに従い、登録メッセージをノード装置１Ｐへ送信する。ノード装置１Ｐは登録メッセージを受信すると、当該登録メッセージに含まれるインデックス情報を取得してコンテンツ「1231」のキャッシュノード装置となる。また、ノード装置１Ｐは、自ノード装置のルーティングテーブルに従い、登録メッセージをノード装置１Ｒへ送信する。ノード装置１Ｒは登録メッセージを受信すると、当該登録メッセージに含まれるインデックス情報を取得してコンテンツ「1231」のキャッシュノード装置となる。更に、ノード装置１Ｐは、自ノード装置のルーティングテーブルに従い、登録メッセージをノード装置１Ｈへ送信する。ノード装置１Ｈは登録メッセージを受信すると、当該登録メッセージに含まれるインデックス情報を取得してコンテンツ「1231」のキャッシュノード装置となる。また、ノード装置１Ｈは、自ノード装置のルーティングテーブルにルートノード装置１Ｅの識別情報を有しており、コンテンツ保持ノード装置１Ｒから送信された登録メッセージをルートノード装置１Ｅへ転送する。
【００８３】
図９（ｂ）は、図９（ａ）をコンテンツ検索メッセージが転送される経路としてツリー構造にて表現したものである。このように、コンテンツデータ管理装置１０がルートノード装置１ＥのノードＩＤと最上位桁が異なるノードＩＤを有するノード装置１Ｋを選択し、コンテンツ保持ノード装置として決定することによって、登録メッセージが多くのノード装置を経由してルートノード装置へ転送されることになるため、キャッシュノード装置を多く配置することが可能となる。したがって、任意のリクエストノードがコンテンツ検索メッセージを送信したときに、コンテンツ検索メッセージが、ルートノード装置１Ｅに到達するまでに、キャッシュノード装置において受信される可能性を高くすることができ、コンテンツの検索にかかる時間を低減することができる。例えば、リクエストノード装置１Ｊが検索メッセージを発した場合、図８（ｂ）の例では、１Ｈが返答メッセージを返し、図９（ｂ）の例では、１Ｐがメッセージを返答するので、図９（ｂ）の例のほうが、応答時間が短くなる。
【００８４】
また、コンテンツ保持ノード装置を複数配置する場合には、上位一桁目がそれぞれ異なるノードＩＤを有するノード装置をコンテンツデータ保持ノード装置として決定する。図１０（ａ）は、コンテンツデータ管理装置１０がコンテンツ保持ノード装置として３つのノード装置１Ｋ，１Ｕ，１Ｔを決定したときに、これらのコンテンツ保持ノード装置が登録メッセージをルートノード装置に対して送信し、キャッシュノード装置が配置される様子を示している。
【００８５】
図１０（ａ）に示すように、コンテンツデータ管理装置１０は、コンテンツ「1231」とＩＤの最上位桁がそれぞれ異なるノードＩＤ「0xxx」，「2xxx」，「3xxx」を有するノード装置１Ｋ，１Ｓ，１Ｔをそれぞれ選択し、コンテンツ保持ノード装置として決定する。このようにコンテンツ保持ノード装置の決定を行うと、コンテンツデータ管理装置１０は、ノード装置１Ｋ，１Ｓ，１Ｔへそれぞれコンテンツ「1231」のデータを配布する。コンテンツデータ管理装置１０からコンテンツ「1231」のデータを受信して記憶することによりコンテンツ保持ノード装置となったノード装置１Ｋ，１Ｓ，１Ｔは、ルートノード装置１Ｅに向けて、登録メッセージを送信する。図１０（ｂ）においては、コンテンツ保持ノード装置１Ｋからの登録メッセージはノード装置１Ｐ，１Ｒ，１Ｈを経由して、コンテンツ保持ノード装置１Ｓからの登録メッセージはノード装置１Ｕ，１Ｗを経由して、コンテンツ保持ノード装置１Ｔからの登録メッセージはノード装置１Ｖ，１Ｈを経由して、ルートノード装置１Ｅへ到達しており、これにより、ノード装置１Ｐ，１Ｒ，１Ｈ，１Ｕ，１Ｗ，１Ｖがキャッシュノード装置として配置されることになる。
【００８６】
図１０（ｂ）は、図１０（ａ）をコンテンツ検索メッセージが転送される経路としてツリー構造にて表現したものである。このように、コンテンツデータ管理装置１０がコンテンツＩＤと最上位桁がそれぞれ異なるノードＩＤ「0xxx」，「2xxx」，「3xxx」を有するノード装置１Ｋ，１Ｓ，１Ｔを選択し、コンテンツ保持ノード装置として決定することによって、それぞれ登録メッセージが多くのノード装置を経由してルートノード装置へ転送され、キャッシュノード装置が多く配置される。したがって、ルートノード装置１Ｅに到達するまでにキャッシュノード装置においてコンテンツ検索メッセージを受信する可能性を高くすることができ、コンテンツの検索にかかる時間を低減することができる。また、ルートノード装置に近いノード装置はコンテンツ検索メッセージを転送する機会が減少する。したがって、ルートノード装置に近いノード装置の負荷を低減することができる。
【００８７】
尚、コンテンツデータ管理装置１０が、上位桁の値の数以上（例えば、本実施形態のように４進数でノード空間を生成する場合には、上位桁の値の数は４となる。）のコンテンツ保持ノード装置を配置する場合には、上位桁の値の数未満のコンテンツ保持ノード装置は上述のように配置し、上位桁の値の数以上のコンテンツ保持ノード装置はランダムに決定する。したがって、多数のコンテンツ保持ノード装置をコンテンツ配信システムに配置するときであっても、既に配置したコンテンツ保持ノード装置のノードＩＤを上位桁の値の数以上保持しておく必要がなく、したがって、コンテンツデータ管理装置１０の演算負荷を軽減することができる。
【００８８】
［２．コンテンツデータ管理装置１０の構成等の説明］
次に、図面を参照して、コンテンツデータ管理装置１０の構成及び動作について説明する。図１１は、本実施形態に係るコンテンツ配信システムＳにおけるコンテンツデータ管理装置１０の概略構成を示す図である。
【００８９】
コンテンツデータ管理装置１０は、専用のコンピュータの他、一般のサーバコンピュータを適用可能であり、図１１に示すように、ＣＰＵ（Central Processing Unit）１０２と、各種プログラム等を記憶（記憶）する書き換え可能な主記憶装置としての第１記憶部１０３と、各種データ等を記憶するＨＤＤ等から構成された第２記憶部１０４と、ルータ１２０を介してネットワーク８に参加している他のノード装置１との間で通信を行うためのネットワークインターフェイス１０５と、コンテンツ配信システムＳの管理者によってコンテンツデータ管理装置１０の制御を行うために情報を入力する入力手段であるマウス１０７ａやキーボード１０７ｂと、入力手段から入力された情報を処理するための周辺機器制御チップ１０６と、ＣＰＵ１０２の制御によりイメージデータを受け取り、内部のビデオメモリ（図示せず）に書き込み、このビデオメモリに書き込んだデータを後述のディスプレイ１０９に表示するビデオチップ１０８等を備えて構成され、これらの各種構成要素はシステムバス１０１を介して相互に接続されている。なお、本実施形態においては、ＣＰＵ１０２と第１記憶部１０３とで制御手段１１４を構成している。
【００９０】
（第１記憶部１０３について）
また、第１記憶部１０３には、ノード装置１のコンピュータとしての基本的な機能を提供するためのオペレーティングシステム（ＯＳ）プログラム１１０、ディスプレイ１０９の制御等を行うための画面制御プログラム１１１、コンテンツ配信システムＳにコンテンツを投入する毎にコンテンツの一覧表であるカタログリストを更新するためのカタログ更新プログラム１１２と、コンテンツ配信システムＳにコンテンツを新規に投入するための新規投入コンテンツプログラム１１３等を記憶しており、これらはＣＰＵ１０２によって読み出され、ＣＰＵ１０２によってこれらのプログラムに従った機能が実行される。なお、「コンテンツ配信システムＳにコンテンツを投入」とは、コンテンツデータ管理装置１０が、あるコンテンツに関してコンテンツ保持ノード装置となるノード装置１を決定し、当該決定したノード装置１にコンテンツデータを配布することを意味する。
【００９１】
ここで、ＯＳプログラム１１０は、ＣＰＵ１０２によって読み出されて実行されることにより、マウス１０７ａやキーボード１０７ｂに関する機能や、第１記憶部１０３や第２記憶部１０４などのメモリ管理等のコンテンツデータ管理装置１０であるコンピュータの基本的な機能を実行可能にするものである。そして、このＯＳプログラム１１０がＣＰＵ１０２によって実行された状態で、上述の画面制御プログラム１１１、カタログ更新プログラム１１２、新規投入コンテンツプログラム１１３等が第１記憶部１０３から読み出されて実行される。
【００９２】
なお、ＯＳプログラム１１０、画面制御プログラム１１１、カタログ更新プログラム１１２、新規投入コンテンツプログラム１１３等は、例えば、ネットワーク８に接続されたサーバ等から、ネットワークインターフェイス１０５を介して、第１記憶部１０３にダウンロードされるようにしてもよく、又ＣＤ−ＲＯＭ等の記録媒体に記録されてから当該記録媒体のドライブを介して、第１記憶部１０３に読み込まれるようにしてもよい。
【００９３】
（第２記憶部１０４について）
第２記憶部１０４には、カタログ更新プログラムによって生成され、コンテンツ配信システムＳ内にて提供されているコンテンツがリスト化されたカタログリストを記憶するカタログリスト記憶領域１１５と、コンテンツ配信システムＳにおいて提供されているコンテンツのデータを記憶する投入済コンテンツデータ記憶領域１１６と、コンテンツ配信システムＳにおいて新規に提供されるコンテンツのデータを記憶するコンテンツデータ記憶手段としての新規コンテンツデータ記憶領域１１７とを有している。
【００９４】
（制御手段１１４について）
制御手段１１４は、上述のようにＣＰＵ１０２と第１記憶部１０３とから構成され、ＣＰＵ１０２が第１記憶部１０３に記憶された各種プログラム１１０〜１１３を読み出して実行することにより、ノード装置１全体を統括制御し、かつ、後述する表示制御手段、コンテンツデータ識別情報決定手段、コンテンツ保持ノード装置決定手段、コンテンツ保持要求手段等として機能するようになっている。
【００９５】
なお、ＣＰＵ１０２が画面制御プログラム１１１を実行することによって表示制御手段等として、またＣＰＵ１０２がカタログ更新プログラム１１２を実行することによってカタログ更新手段等として、またＣＰＵ１０２が新規投入コンテンツプログラム１１３を実行することによって、コンテンツデータ識別情報決定手段、コンテンツ保持ノード装置決定手段、コンテンツ保持要求手段等として、それぞれ機能するようになっている。
【００９６】
（表示制御手段について）
表示制御手段は、ビデオチップ１０８及びディスプレイ１０９を制御して、各種の映像情報（画像情報）を表示させる機能を有している。すなわち、表示制御手段は、ディスプレイ１０９にどのように映像を表示させるかを制御する。
【００９７】
（コンテンツデータ識別情報決定手段について）
コンテンツデータ識別情報決定手段は、新規にコンテンツ配信システムＳに投入するコンテンツデータの識別情報であるコンテンツＩＤを決定する機能を有する。
【００９８】
より具体的には、コンテンツデータ識別情報決定手段は、ランダム演算によってランダムな値を算出し、このようにランダムに算出した値を、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化することによってコンテンツＩＤを決定する。
【００９９】
（コンテンツ保持ノード装置決定手段について）
コンテンツ保持ノード装置決定手段は、新規コンテンツデータ記憶領域１１７に記憶したコンテンツデータを保持させるノード装置、すなわちコンテンツ保持ノード装置を決定する機能を有している。
【０１００】
このコンテンツ保持ノード装置決定手段は、コンテンツ保持ノード装置を決定するにあたり、保持させようとするコンテンツデータの識別情報であるコンテンツＩＤとの所定の関係となるノードＩＤ（識別情報）を算出し、このように算出したノードＩＤを有するノード装置１をコンテンツ保持ノード装置とする。
【０１０１】
より具体的には、コンテンツ保持ノード装置決定手段は、保持させようとするコンテンツデータのコンテンツＩＤに対して、上位一桁目の情報が異なるノードＩＤを有するノード装置１をコンテンツデータ保持ノード装置として決定する。例えば、コンテンツＩＤが「1231」であるコンテンツデータを保持させる場合、当該コンテンツＩＤの一桁目の情報である「1」とは異なる一桁目の情報を有するノードＩＤ「0xxx」，「2xxx」，「3xxx」（xは０〜３の任意の値）を有するノード装置１のいずれかを選択し、コンテンツ保持ノード装置として決定する。
【０１０２】
また、複数のコンテンツ保持ノード装置を決定するとき、上位一桁目がそれぞれ異なるノードＩＤを有するノード装置１をコンテンツデータ保持ノード装置として決定する。例えば、コンテンツＩＤが「1231」であるコンテンツデータを３つのノード装置１に保持させる場合、当該コンテンツＩＤの一桁目の情報である「1」とはそれぞれ異なる一桁目の情報を有するノードＩＤ「0xxx」，「2xxx」，「3xxx」（xは０〜３の任意の値）を有する３つのノード装置１をコンテンツ保持ノード装置として決定する。
【０１０３】
また、決定すべきコンテンツ保持ノード装置の数が上位一桁目の値の数以上（例えば、本実施形態のように４進数でノード空間を生成する場合には、上位桁の値の数は４となる。）であるとき、上位一桁目の値の数以上のコンテンツ保持ノード装置の決定に関しては、ランダム演算によってランダムなノードＩＤを算出し、このようにランダムに算出したノードＩＤを有するノード装置１をコンテンツ保持ノード装置として決定する。
【０１０４】
（コンテンツ保持要求手段について）
コンテンツ保持要求手段は、コンテンツ保持ノード装置決定手段によって決定したコンテンツ保持ノード装置にコンテンツデータの保持要求を行う。このコンテンツデータの保持要求は、本実施形態においては、上記の如く決定したコンテンツ保持ノード装置とすべきノード装置に対してコンテンツデータを保持させるための要求であり、ＤＨＴルーティングによって送信される。この要求に対してコンテンツ保持ノード装置となるべきノード装置は、コンテンツデータ管理装置１０のＩＰアドレスをコンテンツデータの保持要求の中から取り出し、当該ＩＰアドレス宛に前記保持要求に対応するコンテンツデータの送信要求を送信する。コンテンツ保持要求手段は、コンテンツデータの送信要求を受信すると、保持させようとするコンテンツデータを送信要求元のノード装置へ送信する。このようにコンテンツデータ管理装置１０とノード装置１との通信においては、ＤＨＴルーティングによる通信や１対１の通信など複数種類の通信形態が適宜使い分けられる。
【０１０５】
［３．ノード装置１の構成等の説明］
次に、図面を参照して、ノード装置１の構成及び動作について説明する。図１２は、本実施形態に係るコンテンツ配信システムＳにおけるノード装置１の概略構成を示す図である。
【０１０６】
ノード装置１は、専用のコンピュータの他、一般のパーソナルコンピュータを適用可能であり、図１２に示すように、ＣＰＵ（Central Processing Unit）２０２と、各種プログラム等を記憶（記憶）する書き換え可能な主記憶装置としての第１記憶部２０３と、各種データ等を記憶するＨＤＤ等から構成された第２記憶部２０４と、ルータ２２４を介してネットワーク８に参加している他のノード装置１との間で通信を行うためのネットワークインターフェイス２０５と、ユーザによってノード装置１を遠隔操作するために所定の赤外線信号を送信及び受信するリモコン２０６と、このリモコン２０６と赤外線により通信を行うための赤外線ポート２０７と、赤外線ポート２０７を制御する周辺機器制御チップ２０８と、ＣＰＵ２０２の制御によりイメージデータを受け取り、内部のビデオメモリ（図示せず）に書き込み、このビデオメモリに書き込んだデータを後述のディスプレイ２１０に表示するビデオチップ２０９と、ＦＭ音源やＷａｖｅ  Ｔａｂｌｅ音源などの音源を有し、オーディオ信号をスピーカ２１２に出力することによってスピーカ２１２から音波を出力させる音源チップ２１１と、を備えて構成され、これらの各種構成要素はシステムバス２０１を介して相互に接続されている。なお、本実施形態においては、ＣＰＵ２０２と第１記憶部２０３とで制御手段２１３を構成している。
【０１０７】
（第１記憶部２０３について）
また、第１記憶部２０３には、ノード装置１のコンピュータとしての基本的な機能を提供するためのオペレーティングシステム（ＯＳ）プログラム２１４、ディスプレイ２１０の制御等を行うための画面制御プログラム２１５、コンテンツ保持ノード装置として機能する他のノード装置から送信されるコンテンツデータをストリーミング受信し、また自ノード装置がコンテンツ保持ノード装置として機能するときには第２記憶部２０４に記憶したコンテンツデータをストリーミング配信するためのストリーム制御プログラム２１６、他のノード装置とメッセージの送受信を行うためのメッセージ管理プログラム２１７、配信されたコンテンツデータの再生等を行うためのプレイヤプログラム２１８等を記憶しており、これらはＣＰＵ２０２によって読み出され、ＣＰＵ２０２によってこれらのプログラムに従った機能が実行される。また、第１記憶部２０３には、更にインデックステーブル（図７参照）を記憶するためのインデックステーブル記憶手段２１９やルーティングテーブル（図４参照）を記憶するためのルーティングテーブル記憶手段２２０が設けられている。
【０１０８】
ここで、ＯＳプログラム２１４は、ＣＰＵ２０２によって読み出されて実行されることにより、リモコン２０６の入出力に関する機能や、第１記憶部２０３や第２記憶部２０４などのメモリ管理等のノード装置１であるコンピュータの基本的な機能を実行可能にするものである。そして、このＯＳプログラム２１４がＣＰＵ２０２によって実行された状態で、上述の画面制御プログラム２１５、ストリーム制御プログラム２１６、メッセージ管理プログラム２１７、プレイヤプログラム２１８等が第１記憶部２０３から読み出されて実行される。
【０１０９】
なお、ＯＳプログラム２１４、画面制御プログラム２１５、ストリーム制御プログラム２１６、メッセージ管理プログラム２１７、プレイヤプログラム２１８等は、例えば、ネットワーク８に接続されたサーバ等から、ネットワークインターフェイス２０５を介して、第１記憶部２０３にダウンロードされるようにしてもよく、又ＣＤ−ＲＯＭ等の記録媒体に記録されてから当該記録媒体のドライブを介して、第１記憶部２０３に読み込まれるようにしてもよい。
【０１１０】
（第２記憶部２０４について）
第２記憶部２０４には、コンテンツデータ管理装置１０から投入され、コンテンツ配信システムＳ内にて提供されているコンテンツがリスト化されたカタログリストを記憶するカタログリスト記憶領域２２２と、コンテンツデータ管理装置１０等から配信されたコンテンツデータを記憶するコンテンツデータ記憶手段として機能するコンテンツデータ記憶領域２２３等を有している。
【０１１１】
（制御手段２１３について）
制御手段２１３は、上述のようにＣＰＵ２０２と第１記憶部２０３とから構成され、ＣＰＵ２０２が第１記憶部２０３に記憶された各種プログラム２１４〜２１８を読み出して実行することにより、ノード装置１全体を統括制御し、かつ、後述する表示制御手段、ストリーム制御手段、メッセージ宛先判定手段、メッセージ転送手段、コンテンツデータ取得手段、登録メッセージ生成手段、登録メッセージ送信手段、削除メッセージ生成手段、削除メッセージ送信手段、コンテンツ保持ノード情報取得手段、コンテンツ保持ノード要求情報生成手段、コンテンツ保持ノード要求情報送信手段、判断手段、ノード識別情報送信手段、デコード手段、コンテンツ再生手段等として機能するようになっている。
【０１１２】
なお、ＣＰＵ２０２が画面制御プログラム２１５を実行することによって、表示制御手段等として、またＣＰＵ２０２がストリーム制御プログラム２１６を実行することによって、ストリーム制御手段等として、またＣＰＵ２０２がメッセージ管理プログラム２１７を実行することによって、メッセージ宛先判定手段、メッセージ転送手段、コンテンツデータ取得手段、登録メッセージ生成手段、登録メッセージ送信手段、削除メッセージ生成手段、削除メッセージ送信手段、コンテンツ保持ノード情報取得手段、コンテンツ保持ノード要求情報生成手段、コンテンツ保持ノード要求情報送信手段、判断手段、ノード識別情報送信手段等として、またＣＰＵ２０２がプレイヤプログラム２１８を実行することによって、デコード手段及びコンテンツ再生制御手段等として、それぞれ機能するようになっている。
【０１１３】
（表示制御手段について）
表示制御手段は、ビデオチップ２０９及びディスプレイ２１０を制御して、各種の映像情報（画像情報）を表示させる機能を有している。すなわち、表示制御手段は、ディスプレイ２１０にどのように映像を表示させるかを制御する。
【０１１４】
（ストリーム制御手段）
ストリーム制御手段は、他のノード装置１からストリーミング配信されるコンテンツデータを受信するコンテンツデータ受信手段、及び第２記憶部２０４に記憶したコンテンツデータを他のノード装置１へストリーミング配信するコンテンツデータ配信手段等としての機能を有している。
【０１１５】
コンテンツデータ受信手段は、他のノード装置１から配信されるパケットがコンテンツパケットであると判定されたときに、そのコンテンツパケットを１パケットずつ受信し、図示しない第１記憶部２０３のリングバッファに一時的に記憶し、その後第２記憶部２０４に記憶する。また、コンテンツ配信手段は、第２記憶部２０４に記憶したコンテンツデータをコンテンツパケットに変換し、１パケットずつネットワークインターフェイス２０５を介して他のノード装置１へ送信する。なお、コンテンツデータ受信手段やコンテンツデータ配信手段は、公知のストリーミング配信用プロトコルを用いることができる他、独自の専用プロトコルを用いるようにすることもできる。
【０１１６】
（メッセージ宛先判定手段について）
メッセージ宛先判定手段は、ネットワーク８を介して受信したメッセージの宛先識別情報とルーティングテーブルとに基づいて、受信したメッセージが自ノード装置１宛であるか否かを判定する。このメッセージ宛先判定手段が判定するメッセージは、コンテンツ保持ノード装置の識別情報をルートノード装置に要求するためのコンテンツ検索メッセージ、ルートノード装置にコンテンツ保持ノード装置の識別情報を登録するための登録メッセージなどである。
【０１１７】
受信したメッセージが自ノード装置１宛であるか否かの判定は、メッセージに含まれる宛先ノードＩＤ（宛先識別情報）を取り出し、第１記憶部２０３に記憶したルーティングテーブルに基づいて後述の制御手段２１３が判定する。すなわち、各種のメッセージをネットワークインターフェイス２０５を介して受信したとき、メッセージ宛先判定手段は、受信したメッセージに含まれる宛先識別情報とルーティングテーブルに記憶したノードＩＤとを比較し、メッセージに含まれる宛先識別情報と一番近いルーティングテーブル上のノードＩＤが自ノード装置１のノードＩＤであると判定すると、自ノード装置１宛のメッセージであると判定する。
【０１１８】
（メッセージ転送手段について）
メッセージ転送手段は、メッセージ宛先判定手段によりネットワーク８を介して受信したメッセージが自ノード装置宛ではないと判定されると、受信したメッセージの宛先識別情報に基づいて、前記ルーティングテーブルに記憶されたノード装置の識別情報から送信先ノード装置を選択して、受信したメッセージを送信先ノード装置へ転送する。すなわち、メッセージ転送手段は、ルーティングテーブルに記憶されたノード装置のノードＩＤのうち、宛先識別情報に近いノードＩＤを選択し、このように選択したノードＩＤに対応するノード装置のＩＰアドレスを知り、そのＩＰアドレスをＩＰパケットの宛先として、メッセージを転送する。
【０１１９】
（コンテンツデータ取得手段について）
コンテンツデータ取得手段は、ネットワークインターフェイス２０５を介して受信したメッセージがコンテンツデータ管理装置１０からのコンテンツデータの保持要求であるときに、このコンテンツデータの保持要求に対応するコンテンツデータをコンテンツデータ管理装置１０から取得する。そして、取得したコンテンツデータをコンテンツデータ記憶手段である第２記憶部２０４に記憶する。なお、上述のように、コンテンツデータの保持要求はＤＨＴルーティングによって送受信され、コンテンツデータの送受信は１対１通信で行われる。
【０１２０】
（登録メッセージ生成手段について）
登録メッセージ生成手段は、コンテンツデータ管理装置１０から受信したコンテンツデータをコンテンツデータ記憶手段である第２記憶部２０４に記憶したとき、当該コンテンツデータの識別情報であるコンテンツＩＤを宛先識別情報とし、自ノード装置１の識別情報であるノードＩＤ及びＩＰアドレスとを含む登録メッセージを生成する。また、他のコンテンツ保持ノード装置からコンテンツデータを受信したときも同様に、受信したコンテンツデータをコンテンツデータ記憶手段である第２記憶部２０４に記憶し、登録メッセージを生成する。
【０１２１】
（登録メッセージ送信手段について）
登録メッセージ送信手段は、登録メッセージ生成手段によって生成した登録メッセージを、第２記憶部２０４に記憶したコンテンツデータのコンテンツＩＤに基づいて、ルーティングテーブルに記憶されたノード装置の識別情報から送信先ノード装置を選択して送信する。例えば、図４に示すようなルーティングテーブルを有しており、かつ第２記憶部２０４に記憶したコンテンツデータのコンテンツＩＤが「1231」である場合、登録メッセージ送信手段は、ルーティングテーブルからノードＩＤ「1221」を送信先ノード装置として選択し、当該ノードＩＤ「1221」のノード装置のＩＰアドレス「21.13.21.13」を取り出す。そして、当該ＩＰアドレス「21.13.21.13」を送信先ノード装置として登録メッセージを送信する。なお、この登録メッセージの宛先識別情報は「1231」となる。
【０１２２】
（削除メッセージ生成手段について）
削除メッセージ生成手段は、コンテンツデータ記憶手段である第２記憶部２０４に記憶したコンテンツデータを削除したとき、当該コンテンツデータの識別情報であるコンテンツＩＤと、自ノード装置１の識別情報であるノードＩＤ及びＩＰアドレスとを含む削除メッセージを生成する。
【０１２３】
（削除メッセージ送信手段について）
削除メッセージ送信手段は、削除メッセージ生成手段によって生成した削除メッセージを、第２記憶部２０４から削除したコンテンツデータのコンテンツＩＤに基づいて、ルーティングテーブルに記憶されたノード装置の識別情報から送信先ノード装置を選択して送信する。例えば、図４に示すようなルーティングテーブルを有しており、かつ第２記憶部２０４から削除したコンテンツデータのコンテンツＩＤが「1231」である場合、削除メッセージ送信手段は、ルーティングテーブルからノードＩＤ「1221」を送信先ノード装置として選択し、当該ノードＩＤ「1221」のノード装置のＩＰアドレス「21.13.21.13」を取り出す。そして、当該ＩＰアドレス「21.13.21.13」を送信先ノード装置として削除メッセージを送信する。なお、この削除メッセージの宛先識別情報は「1231」となる。
【０１２４】
（コンテンツ保持ノード情報取得手段について）
コンテンツ保持ノード情報取得手段は、自ノード装置１において、受信したメッセージが登録メッセージであるとき、登録メッセージに含まれるコンテンツ保持ノード装置の識別情報であるノードＩＤやＩＰアドレスなどと、同じく登録メッセージに含まれるコンテンツＩＤの組からなるインデックス情報を取得する。そして、このように取得したインデックス情報をコンテンツ保持ノード情報記憶手段であるインデックステーブル記憶手段２１９に記憶する。
【０１２５】
（コンテンツ保持ノード要求情報生成手段について）
コンテンツ保持ノード要求情報生成手段は、コンテンツ検索メッセージを生成する。例えば、コンテンツデータ管理装置１０から受信したカタログリストをディスプレイ２１０に表示した後、ノード装置１のユーザによるリモコン２０６の操作によって、カタログリストの中から所望のコンテンツが選択されると、コンテンツ保持ノード要求情報生成手段は、当該選択されたコンテンツを保持するコンテンツ保持ノード装置の所在情報を検索するためのコンテンツ保持ノード要求情報であるコンテンツ検索メッセージを生成する。コンテンツ検索メッセージは、要求するコンテンツデータの識別情報であるコンテンツＩＤを宛先識別情報とし、自ノード装置１の識別情報であるノードＩＤを要求元識別情報としたメッセージである。
【０１２６】
（コンテンツ保持ノード要求情報送信手段について）
コンテンツ保持ノード要求情報送信手段は、コンテンツ検索メッセージの宛先識別情報であるコンテンツデータの識別情報と所定条件とによってルーティングテーブルに記憶されたノード装置の識別情報であるノードＩＤから送信先ノード装置を選択して、コンテンツ保持ノード要求情報であるコンテンツ検索メッセージを送信する。ここで、「所定条件」とは、ルーティングテーブルに記憶されたノードＩＤのうち、コンテンツ検索メッセージの宛先識別情報であるコンテンツＩＤと上位桁がより多く一致するノードＩＤを選択するという条件である。例えば、図４に示すようなルーティングテーブルを有しており、かつ宛先識別情報としてのコンテンツＩＤが「1231」である場合、コンテンツ保持ノード要求情報送信手段は、ルーティングテーブルからノードＩＤ「1221」を送信先ノード装置として選択し、当該ノードＩＤ「1221」のノード装置のＩＰアドレス「21.13.21.13」を取り出す。そして、当該ＩＰアドレス「21.13.21.13」を送信先ノード装置としてコンテンツ検索メッセージを送信する。
【０１２７】
（判断手段について）
判断手段は、ノード装置１がネットワークインターフェイス２０５を介して、コンテンツ保持ノード要求情報であるコンテンツ検索メッセージを受信した際に、コンテンツ保持ノード情報記憶手段であるルーティングテーブルに記憶されたインデックス情報、すなわちコンテンツ保持ノード装置のノードＩＤの中に、要求されたコンテンツに対するコンテンツ保持ノード装置のノードＩＤと一致する情報があるか否かを判断する。
【０１２８】
（ノード識別情報送信手段について）
ノード識別情報送信手段は、コンテンツ検索メッセージによって要求されたコンテンツに対するコンテンツ保持ノード装置のノードＩＤが記憶されている場合、当該コンテンツ保持ノード装置のノードＩＤを、当該コンテンツ検索メッセージを送信したリクエストノード装置へ向けて送信する。このときの送信先ノード装置は、コンテンツ検索メッセージに含まれる送信元識別情報、すなわちリクエストノード装置の識別情報に基づいて、他のメッセージと同様にルーティングテーブルから選択したノード装置である。このように送信することによって、コンテンツ保持ノード装置のノードＩＤを当該コンテンツ検索メッセージの送信元ノード装置へ届ける。
【０１２９】
（デコード手段について）
デコード手段は、他のノード装置１から送信されるコンテンツデータ等をディスプレイ２１０に表示し、スピーカ２１２から出力するためにデコードする。すなわち、他のノード装置１から送信されるコンテンツデータは、ストリーミング配信用のデータ形式、例えばＡＳＦ、ＷＭＡ、ＷＭＶ等のデータ形式でエンコードされており、このようにエンコードされているコンテンツデータをディスプレイ２１０やスピーカ２１２から出力できるようにデコードする。
【０１３０】
（コンテンツ再生手段について）
コンテンツ再生手段は、第１記憶部２０３のリングバッファから成るバッファ領域に順次記憶されたコンテンツデータを、順次コンテンツ再生手段により再生するものであり、このとき制御手段２１３は、ストリーム制御プログラム２１６に基づいてビデオチップ２０９及び音源チップ２１１を動作させることによりコンテンツデータが再生される。
【０１３１】
［４．コンテンツデータ管理装置１０の処理の説明］
以下、コンテンツデータ管理装置１０の詳細動作について、図１３〜図１５のフローチャートを用いて更に具体的に説明する。図１３はコンテンツデータ管理装置におけるコンテンツ投入時のメイン処理を示すフローチャート、図１４は投入するコンテンツの数がＸ（上位桁の値の数）未満のときのコンテンツ投入処理を示すフローチャート、図１５は投入するコンテンツの数がＸ以上のときのコンテンツ投入処理を示すフローチャートである。
【０１３２】
まず、制御手段１１４は、コンテンツデータ管理装置１０の管理者の操作等によって、コンテンツ投入処理が選択されたか否かを判定する（ステップＳ１１）。例えば、コンテンツデータ管理装置１０の管理者が、マウス１０７ａやキーボード１０７ｂなどの入力手段を操作することによって、新規コンテンツデータ記憶領域１１７に記憶した新規コンテンツデータをコンテンツ配信システムＳ内に投入するために、新規コンテンツデータを指定し、当該指定したコンテンツデータを保持させるコンテンツ保持ノード装置の配置数を指定したとき、制御手段１１４はコンテンツ投入処理を選択したと判定する。
【０１３３】
コンテンツ投入処理が選択されたと判定すると（ステップＳ１１：Ｙｅｓ）、制御手段１１４は、投入する新規コンテンツデータのコンテンツＩＤをランダムに決定する（ステップＳ１２）。なお、このときのランダム性は、コンテンツＩＤ空間上で、偏りが無いことが望ましい。
【０１３４】
コンテンツ配信システムＳに投入する新規コンテンツのコンテンツＩＤを決定すると、制御手段１１４は、コンテンツの投入数、言い換えればコンテンツデータを保持させるコンテンツ保持ノード装置の配置数がＸ（上位桁の値の数）未満であるか否かを判定する（ステップＳ１３）。本実施形態においては、ノード装置１の識別情報であるノードＩＤが４進数で表現されているため、上位桁の値の数Ｘは４となる。
【０１３５】
ステップＳ１３において、制御手段１１４は、コンテンツの投入数がＸ未満であると判定すると（ステップＳ１３：Ｙｅｓ）、「投入数がＸ未満の処理」（ステップＳ１４）の処理を行う。一方、コンテンツの投入数がＸ以上であると判定すると（ステップＳ１３：Ｎｏ）、制御手段１１４は、「投入数がＸ以上の処理」（ステップＳ１５）を行う。
【０１３６】
また、ステップＳ１１において、コンテンツ投入処理が選択されていないと判定すると（ステップＳ１１：Ｎｏ）、制御手段１１４は、その他の処理を行う（ステップＳ１６）。なお、ステップＳ１４〜Ｓ１６の処理が終了すると、制御手段１１４は、ステップＳ１１からの処理を繰り返す。
【０１３７】
（投入数がＸ未満の処理について）
次に、図１４を参照して、コンテンツの投入数がＸ未満のときの処理（上述のステップＳ１４の処理）について説明する。
【０１３８】
まず、制御手段１１４は、投入数カウンタの値をクリアして０にセットし（ステップＳ２０）、次に、投入する新規コンテンツデータを保持させるコンテンツ保持ノード装置をランダムに選択する（ステップＳ２１）。
【０１３９】
そして、制御手段１１４は、このようにランダムに選択したコンテンツ保持ノード装置のノードＩＤと投入するコンテンツのコンテンツＩＤとを比較し、当該ノードＩＤの上位一桁目と当該コンテンツＩＤの上位一桁目とが異なるものであるか否かを判定する（ステップＳ２２）。ノードＩＤとコンテンツＩＤの上位一桁目が異なると判定すると（ステップＳ２２：Ｙｅｓ）、制御手段１１４は、投入する新規コンテンツデータを既に投入したコンテンツ保持ノード装置として現に配置したノード装置のノードＩＤの上位一桁目とステップＳ２１で選択したコンテンツ保持ノード装置のノードＩＤの上位一桁目とが異なるものであるか否かを判定する（ステップＳ２３）。
【０１４０】
ステップＳ２１で選択したコンテンツ保持ノード装置のノードＩＤの上位一桁目と既に投入したコンテンツ保持ノード装置のノードＩＤの上位一桁目とが異なるものであると判定すると（ステップＳ２３：Ｙｅｓ）、制御手段１１４は、ステップＳ２１において選択したコンテンツ保持ノード装置へ新規コンテンツデータの保持要求を行い、新規コンテンツデータをそのコンテンツＩＤと共に送信する（ステップＳ２４）。その後、制御手段１１４は、投入数カウンタの値を＋１だけインクリメントし（ステップＳ２５）、投入数カウンタの値がコンテンツの投入数よりも小さいか否かを判定する（ステップＳ２６）。
【０１４１】
ステップＳ２２においてノードＩＤとコンテンツＩＤの上位一桁目が同一であると判定したとき（ステップＳ２２：Ｎｏ）、またはステップＳ２１で選択したコンテンツ保持ノード装置と既に投入したコンテンツ保持ノード装置のノードＩＤの上位一桁目が同一であると判定したとき（ステップＳ２３：Ｎｏ）、または投入数カウンタの値がコンテンツの投入数よりも小さいとき（ステップＳ２６：Ｙｅｓ）、制御手段１１４は、ステップＳ２１からの処理を繰り返す。また、投入数カウンタの値がコンテンツの投入数と同等以上となったとき（ステップＳ２６：Ｎｏ）、制御手段１１４は、コンテンツの投入数がＸ未満のときの処理を終了する。
【０１４２】
（投入数がＸ以上の処理について）
次に、図１５を参照して、コンテンツの投入数がＸ以上のときの処理（上述のステップＳ１５の処理）について説明する。
【０１４３】
まず、制御手段１１４は、投入数カウンタの値をクリアして０にセットし（ステップＳ３０）、次に、投入数カウンタの値がＸよりも小さいか否かを判定する（ステップＳ３１）。
【０１４４】
投入数カウンタの値がＸよりも小さいとき（ステップＳ３１：Ｙｅｓ）、制御手段１１４は、１桁目が「カウンタ値」から始まるノードＩＤを有するノード装置をコンテンツ保持ノード装置として選択し（ステップＳ３２）、投入数カウンタの値がＸと同等以上のとき（ステップＳ３１：Ｎｏ）、制御手段１１４は、ランダムに算出したノードＩＤを有するノード装置をコンテンツ保持ノード装置として選択する（ステップＳ３３）。
【０１４５】
ステップＳ３２，Ｓ３３において、コンテンツ保持ノード装置の選択を行った後、制御手段１１４は、ステップＳ２１において選択したコンテンツ保持ノード装置へ新規コンテンツデータの保持要求を行い、当該コンテンツ保持ノード装置に新規コンテンツデータを送信する（ステップＳ３４）。その後、制御手段１１４は、投入数カウンタの値を＋１だけインクリメントし（ステップＳ３５）、投入数カウンタの値がコンテンツの投入数よりも小さいか否かを判定する（ステップＳ３６）。
【０１４６】
投入数カウンタの値がコンテンツの投入数よりも小さいとき（ステップＳ３６：Ｙｅｓ）、制御手段１１４は、ステップＳ３１からの処理を繰り返し、投入数カウンタの値がコンテンツの投入数と同等以上のとき（ステップＳ３６：Ｎｏ）、制御手段１１４は、コンテンツの投入数がＸ以上のときの処理を終了する。
【０１４７】
このように、本実施形態におけるコンテンツデータ管理装置１０は、コンテンツデータを保持させるコンテンツ保持ノード装置の識別情報であるノードＩＤを、コンテンツデータの識別情報であるコンテンツＩＤと所定の関係となるノードＩＤに決定し、決定したノードＩＤを宛先識別情報としてコンテンツデータの保持要求を行うことによって、コンテンツ保持ノード装置を配置するので、コンテンツ保持ノード装置から送信される登録メッセージが転送される回数が大きくなり、キャッシュノード装置が多く配置されることになる。その結果、コンテンツを検索するリクエストノード装置からのコンテンツ検索メッセージは、ルートノード装置に到達するまでにキャッシュノード装置に到達する可能性が高くなり、コンテンツの検索にかかる時間は全体的に減少することになる。また、ルートノード装置に近いノード装置はコンテンツを検索するためのコンテンツ検索メッセージを転送する機会が減少する。したがって、ルートノード装置に近いノード装置の負荷を低減することができる。
【０１４８】
［５．ノード装置１の処理の説明］
以下、ノード装置１の詳細動作について、図１６のフローチャートを用いて更に具体的に説明する。図１６はノード装置におけるメイン処理を示すフローチャートである。
【０１４９】
まず、制御手段２１３は、ノード装置１の電源がＯＦＦ状態へ移行したか否かを判定する（ステップＳ１００）。ノード装置１の電源がＯＦＦ状態へ移行していないと判定、すなわちＯＮ状態であると判定すると（ステップＳ１００：Ｎｏ）、制御手段２１３は、次に、登録メッセージ又は削除メッセージを受信したか否かを判定する（ステップＳ１０１）。一方、ノード装置１の電源がＯＦＦ状態へ移行したと判定すると（ステップＳ１００：Ｙｅｓ）、制御手段２１３は制御を中止する。
【０１５０】
登録メッセージ又は削除メッセージを受信したとき（ステップＳ１０１：Ｙｅｓ）、制御手段２１３は、更にそのメッセージが登録メッセージであるか否かを判定し（ステップＳ１０２）、受信したメッセージが登録メッセージである場合には（ステップＳ１０２：Ｙｅｓ）、登録メッセージに含まれるインデックス情報（コンテンツＩＤ、コンテンツ保持ノード装置の識別情報など）をキャッシュとしてインデックステーブルに登録する（ステップＳ１０３）。一方、受信したメッセージが削除メッセージである場合には（ステップＳ１０２：Ｎｏ）、制御手段２１３は、削除メッセージで削除要求されるインデックス情報に対応するキャッシュをルーティングテーブルから削除する（ステップＳ１０４）。
【０１５１】
登録メッセージ又は削除メッセージに対する処理（ステップＳ１０３，Ｓ１０４）が終了すると、制御手段２１３は、自ノード装置がそのメッセージに対応するルートノード装置であるか否かを判定する（ステップＳ１０５）。言い換えれば、そのメッセージが自ノード装置をルートノード装置としたメッセージであるか否かを判定する。そして、そのメッセージがルートノード装置宛ではないと判定すると（ステップＳ１０５：Ｎｏ）、制御手段２１３は、ルーティングテーブルから次の転送先ノード装置のノードＩＤ及びＩＰアドレスを取り出し、当該転送先ノード装置に対して受信した登録メッセージ又は削除メッセージを転送する（ステップＳ１０６）。
【０１５２】
また、ステップＳ１０１において、登録メッセージ又は削除メッセージを受信していないと判定すると（ステップＳ１０１：Ｎｏ）、制御手段２１３は、コンテンツ保持ノード装置に対して要求したコンテンツデータのパケットを受信したか否かを判定する（ステップＳ１０７）。コンテンツデータのパケットを受信したと判定すると（ステップＳ１０７：Ｙｅｓ）、受信したコンテンツデータを第２記憶部２０４に記憶する（ステップＳ１０８）。次に、制御手段２１３は、コンテンツデータのパケットを全て受信、すなわち１つのコンテンツのデータを全て受信したか否かを判定する（ステップＳ１０９）。コンテンツのデータを全て受信したと判定すると（ステップＳ１０９：Ｙｅｓ）、制御手段２１３は、受信したコンテンツのコンテンツＩＤを宛先識別情報とした登録メッセージを送信する。すなわち、受信したコンテンツのルートノード装置に対して登録メッセージを送信する（ステップＳ１１０）。
【０１５３】
ステップＳ１０７において、要求したコンテンツデータのパケットを受信していないと判定すると（ステップＳ１０７：Ｎｏ）、コンテンツデータ管理装置１０が投入したコンテンツデータのパケットを受信したか否かを判定する（ステップＳ１１１）。コンテンツデータ管理装置１０が投入したコンテンツデータのパケットを受信したと判定すると（ステップＳ１１１：Ｙｅｓ）、制御手段２１３は、ステップＳ１０８へ処理を移行する。一方、コンテンツデータ管理装置１０が投入したコンテンツデータのパケットを受信していないと判定すると（ステップＳ１１１：Ｎｏ）その他の処理を行う（ステップＳ１１２）。
【０１５４】
ステップＳ１０６，Ｓ１１０，Ｓ１１２の処理が終了した場合、またはステップＳ１０５において自ノード装置がルートノード装置であると判定した場合（ステップＳ１０５：Ｙｅｓ）、またはステップＳ１０９においてコンテンツのデータを全て受信していないと判定した場合（ステップＳ１０９：Ｎｏ）は、ステップＳ１００の処理に移行する。
【０１５５】
このように、本実施形態におけるノード装置１は、コンテンツデータを第２記憶部２０４に記憶したとき、登録メッセージを生成して送信し、また登録メッセージを受信すると自ノード装置がルートノード装置であるか否かにかかわらず受信した登録メッセージに含まれるインデックス情報をインデックステーブルに登録するようにしてキャッシュノード装置として機能するように構成している。したがって、コンテンツを検索するリクエストノード装置からのコンテンツ検索メッセージに対して、キャッシュノード装置としてコンテンツ保持ノード装置のノードＩＤやＩＰアドレスを返信することができ、コンテンツの検索にかかる時間を低減することができる。
【０１５６】
［６．他の種類のコンテンツ配信システムへの適用］
上記実施形態においては、Ｐａｓｔｒｙ型やＴａｐｅｓｔｒｙ型のコンテンツ配信システムへ本発明を適用したものであるが、メッセージの転送方法が異なるｋａｄｅｍｌｉａ型、ｃｈｏｒｄ型、Ｖｉｃｅｒｏｙ型、ＣＡＮ型などのコンテンツ配信システムにも本発明を適用可能である。
【０１５７】
以下、ｋａｄｅｍｌｉａ型のコンテンツ配信システムとｃｈｏｒｄ型のコンテンツ配信システムに本発明を適用した場合の例を説明する。
【０１５８】
ｋａｄｅｍｌｉａ型のコンテンツ配信システムでは、それぞれのノード装置１は、自ノード装置１からの距離に応じて所定数以下のコンタクト先であるノード装置の情報（ＩＰアドレスやノードＩＤ）をリストとして記憶手段に記憶している。例えば、図１７（ａ）において、３bitのＩＤ空間に配置されたノードＩＤ「101」のノード装置１ａ'は、図１７（ｂ）にしめすように距離［２i,２i+1−１]（０≦ｉ≦２）のノード装置の情報を最大２個まで有しており、これらはリストとして記憶されている。このリストでは、距離［１］であるノード装置としてノードＩＤ「100」の情報、距離［２〜３］であるノード装置としてノードＩＤ「110」,「111」の情報、距離［４〜７］であるノード装置としてノードＩＤ「000」,「011」の情報（例えば、ＩＰアドレス）がそれぞれノードＩＤと共に距離に関連付けられて登録されている。尚、図１７（ａ）は説明を容易にするためにＩＤ空間をツリー構造として表現している
【０１５９】
そして、ノード装置は、上記ルーティングテーブルに代えて、このリストを用いてメッセージの転送を行うようにしている。例えば、登録メッセージの場合、リストに登録したノード装置のノードＩＤのうち、登録メッセージの宛先識別情報であるコンテンツＩＤに最も近いノードＩＤ、すなわちコンテンツＩＤとの論理和が最も小さくなるノードＩＤを有するノード装置へメッセージを転送する。
【０１６０】
このように構成されるｋａｄｅｍｌｉａ型のコンテンツ配信システムに対して、本発明を適用する場合、コンテンツデータ管理装置１０の制御手段１１４は、保持させようとするコンテンツデータのコンテンツＩＤに対して所定の関係、すなわち排他的論理和が最も大きくなるノードＩＤを有するノード装置をコンテンツデータ保持ノード装置として決定する。例えば、図１７において、コンテンツＩＤを「010」とした場合、このＩＤ「010」からみて数値的差異が最も大きくなるＩＤ「101」に最も近いノードＩＤを有するノード装置をコンテンツ保持ノード装置として決定するのである。このようにコンテンツ保持ノード装置を決定することによって、キャッシュノード装置をより多く配置することができる。
【０１６１】
また、ｃｈｏｒｄ型のコンテンツ配信システムでは、各ノード装置１は、ＩＤ空間において自ノード装置からＩＤ空間の大きさの２の階乗分の１だけ離れたノード装置のノードＩＤ及びＩＰアドレスをfinger tableと呼ばれるテーブルに保持している。例えば、図１８に示すように、ＩＤ空間が６４（Ｎ１〜Ｎ６４のＩＤが存在）であり、ノードＩＤ「Ｎ８」のノード装置のfinger tableには、ＩＤ空間の大きさの１／２だけ離れたノードＩＤ「Ｎ４０」に最も近いノードＩＤ「Ｎ４２」を有するノード装置のＩＰアドレスを保持しており、同様に、ＩＤ空間の大きさの１／４だけ離れたノードＩＤ「Ｎ２４」に最も近いノードＩＤ「Ｎ２８」のノード装置のＩＰアドレス、ＩＤ空間の大きさの１／８だけ離れたノードＩＤ「Ｎ１６」に最も近いノードＩＤ「Ｎ２１」のノード装置のＩＰアドレス、ＩＤ空間の大きさの１／１６だけ離れたノードＩＤ「Ｎ１２」に最も近いノードＩＤ「Ｎ１４」のノード装置のＩＰアドレス、ＩＤ空間の大きさの１／３２だけ離れたノードＩＤ「Ｎ１０」に最も近いノードＩＤ「Ｎ１４」のノード装置のＩＰアドレス、ＩＤ空間の大きさの１／６４だけ離れたノードＩＤ「Ｎ９」に最も近いノードＩＤ「Ｎ１４」のノード装置のＩＰアドレスを保持している。
【０１６２】
そして、ノード装置は、上記ルーティングテーブルに代えて、このfinger tableを用いてメッセージの転送を行うようにしている。例えば、登録メッセージの場合、finger tableに登録したノード装置のノードＩＤのうち、登録メッセージの宛先識別情報であるコンテンツＩＤを超えない最も大きいノードＩＤを有するノード装置へメッセージを転送する。したがって、コンテンツＩＤへの残りのＩＤ空間を半分にするノード装置へメッセージを転送することができ、このようにして宛先のノード装置へメッセージが転送される。
【０１６３】
このように構成されるｃｈｏｒｄ型のコンテンツ配信システムに対して、本発明を適用する場合、コンテンツデータ管理装置１０の制御手段１１４は、保持させようとするコンテンツデータのコンテンツＩＤに対して所定の関係、すなわち数値的差異が最も大きくなるノードＩＤを有するノード装置をコンテンツデータ保持ノード装置として決定する。例えば、図１８において、コンテンツＩＤを「Ｎ８」とした場合、このＩＤ「Ｎ８」からみて数値的差異が最も大きくなるＩＤ「Ｎ４０」に最も近いノードＩＤ「Ｎ４２」を有するノード装置をコンテンツ保持ノード装置として決定するのである。このようにコンテンツ保持ノード装置を決定することによって、キャッシュノード装置をより多く配置することができる。
【０１６４】
尚、本実施形態においては、コンテンツデータ管理装置１０は投入する新規コンテンツデータのコンテンツＩＤをランダムに決定することにしたが、投入する新規コンテンツデータのコンテンツの名称（コンテンツタイトル）やコンテンツの概要情報（あらすじ）等のキーワードを、ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化することによって、コンテンツＩＤを決定するようにしてもよい。このようにすれば、カタログリストにコンテンツＩＤを掲載する必要がなくなり、カタログリストの情報を減らすことができる。なお、異なるコンテンツデータであっても、同一のキーワード（例えば、コンテンツの名称）になる場合が想定されるが、この場合、同じハッシュ値になってしまうので、これを避けるために、ハッシュ化するキーワードを、例えば、コンテンツの名称と著作権情報（例えば、出演者名、監督名、原作者名、歌手名、作曲者名、または作詞者名等）の組み合わせとすればよい。
【０１６５】
また、上述のようにコンテンツデータのコンテンツ名称等のキーワードを、ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化してコンテンツＩＤを決定するようにすれば、ノード装置は、このハッシュ関数による演算手段を設けることにより、コンテンツデータ管理装置からコンテンツＩＤを取得する必要がない。すなわち、コンテンツデータの固有情報をノードＩＤを算出するハッシュ関数と同一のハッシュ関数によって演算することによってコンテンツデータの識別情報であるコンテンツＩＤとするコンテンツ識別情報演算手段を設けるのである。
【０１６６】
また、本実施形態においては、コンテンツデータ管理装置１０がコンテンツ保持ノード装置を決定するようにしたが、コンテンツデータ管理装置１０の一部又は全部の機能をルートノード装置に内蔵するようにしてもよい。例えば、コンテンツデータ管理装置１０はルートノード装置へコンテンツデータを配布する機能を有し、一方、ルートノード装置はコンテンツデータ管理装置１０から受信した自ノード装置の管理対象であるコンテンツデータを記憶し、当該コンテンツデータのコンテンツＩＤと所定の関係となるノードＩＤを有するノード装置をコンテンツ保持ノード装置として、コンテンツデータ管理装置１０から受信したコンテンツデータを送信する。このように、コンテンツ保持ノード装置を配置するためのコンテンツデータ管理装置としての機能をノード装置に持たせるようにしてもよい。
【図面の簡単な説明】
【０１６７】
【図１】本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ＩＤ空間の説明図である。
【図３】ＤＨＴによってルーティングテーブルが作成される様子の一例を示す図である。
【図４】本実施形態に係るノード装置のルーティングテーブルの一例である。
【図５】ＤＨＴによりコンテンツデータの保持元であるノード装置１が検索される様子の一例を示す図である。
【図６】コンテンツ保持ノードの登録メッセージが転送される様子をスパニングツリー状に表した図である。
【図７】本実施形態に係るノード装置のインデックステーブルの一例である。
【図８】ランダムにコンテンツデータを配布する方法を示す図である。
【図９】本実施形態に係るコンテンツデータの配布方法を示す図である。
【図１０】本実施形態に係るコンテンツデータの配布方法を示す図である。
【図１１】本実施形態におけるコンテンツデータ管理装置の概略構成例を示す図である。
【図１２】本実施形態におけるノード装置の概略構成例を示す図である。
【図１３】コンテンツデータ管理装置におけるメイン処理を示すフローチャート。
【図１４】コンテンツデータ管理装置における投入数がＸ未満の処理を示すフローチャート。
【図１５】コンテンツデータ管理装置における投入数がＸ以上の処理を示すフローチャート。
【図１６】ノード装置におけるメイン処理を示すフローチャート。
【図１７】ｋａｄｅｍｌｉａ型のコンテンツ配信システムを説明するための図である。
【図１８】ｃｈｏｒｄ型のコンテンツ配信システムを説明するための図である。
【符号の説明】
【０１６８】
１  ノード装置
８  ネットワーク
１０  コンテンツデータ管理装置
１０２  ノード装置のＣＰＵ
１０３  ノード装置の第１記憶部
１０４  ノード装置の第２記憶部
１１４  ノード装置の制御手段
２０２  コンテンツデータ管理装置のＣＰＵ
１０３  コンテンツデータ管理装置の第１記憶部
１０４  コンテンツデータ管理装置の第２記憶部
１１３  コンテンツデータ管理装置の制御手段
Ｓ  コンテンツ配信システム
【図１】
0004797679.tif 000002
【図２】
0004797679.tif 000003
【図３】
0004797679.tif 000004
【図４】
0004797679.tif 000005
【図５】
0004797679.tif 000006
【図６】
0004797679.tif 000007
【図７】
0004797679.tif 000008
【図８】
0004797679.tif 000009
【図９】
0004797679.tif 000010
【図１０】
0004797679.tif 000011
【図１１】
0004797679.tif 000012
【図１２】
0004797679.tif 000013
【図１３】
0004797679.tif 000014
【図１４】
0004797679.tif 000015
【図１５】
0004797679.tif 000016
【図１６】
0004797679.tif 000017
【図１７】
0004797679.tif 000018
【図１８】
0004797679.tif 000019