(57)【要約】【課題】各コンテンツデータ又は各ノード装置へ識別情報を割り当てる際の処理負荷を低減することができるコンテンツ配信システム及び同システムにおける識別情報割当方法及び同システムにおける識別情報割当装置及び同装置のプログラムを提供する。【解決手段】各ノード装置又は各コンテンツデータに割り当てる識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、使用していない情報が最も多く配列されている最大未使用領域を判別し、その最大未使用領域を２つの未使用領域に分割する情報を識別情報候補として選択すると共に、選択した識別情報候補を、未だ識別情報を割り当てていない割当対象に割り当てることとした。【選択図】図３
2008090564.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してそれぞれ接続された複数のノード装置間で、各ノード装置が保持しているコンテンツデータを互いに送受信することにより、前記ノード装置へ前記コンテンツデータの配信を可能としたコンテンツ配信システムにおける前記ノード装置又は前記コンテンツデータを対象として、識別情報を割り当てる識別情報割当装置において、
前記識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、前記識別情報として使用していない前記情報が最も多く配列されている最大未使用領域を判別する最大未使用領域判別手段と、
前記最大未使用領域判別手段により判別した前記最大未使用領域の前記情報のうち、前記識別情報として使用することにより、前記最大未使用領域における前記情報の配列を２つの未使用領域に分割する前記情報を前記識別情報候補として選択する識別情報候補選択手段と、
前記識別情報候補選択手段により選択した前記識別情報候補を、未だ前記識別情報を割り当てていない割当対象に割り当てる識別情報割当手段と、
を有することを特徴とする識別情報割当装置。
【請求項２】
前記識別情報候補選択手段が選択する前記識別情報候補は、前記最大未使用領域判別手段により判別した前記最大未使用領域における前記情報の配列を２つの未使用領域に等分する情報であることを特徴とする請求項１に記載の識別情報割当装置。
【請求項３】
前記識別情報候補選択手段は、
前記情報領域の中で、前記識別情報として使用している前記情報がない場合に、前記情報領域の中から、前記識別情報候補としてランダムに１つの前記情報を選択することを特徴とする請求項１又は請求項２に記載の識別情報割当装置。
【請求項４】
前記最大未使用領域判別手段は、前記最大未使用領域が複数存在した場合に、複数の前記最大未使用領域からランダムに１つの最大未使用領域を選択することを特徴とする請求項１〜３のいずれか１項に記載の識別情報割当装置。
【請求項５】
前記情報領域の中で、前記識別情報として既に使用した前記情報のリストである使用済情報リストを記憶する使用済情報リスト記憶手段を有し、
前記最大未使用領域判別手段は、前記使用済情報リストを用いて、前記最大未使用領域を判別することを特徴とする請求項１〜４のいずれか１項に記載の識別情報割当装置。
【請求項６】
前記情報領域における未使用領域を判別する未使用領域判別手段と、
前記未使用領域判別手段により判別した前記未使用領域のリストである未使用領域リストを記憶する未使用領域リスト記憶手段とを有し、
前記最大未使用領域判別手段は、前記未使用領域リストを用いて、前記最大未使用領域を判別することを特徴とする請求項１〜４のいずれか１項に記載の識別情報割当装置。
【請求項７】
コンピュータを、請求項１〜６のいずれかに記載の識別情報割当装置における各手段として機能させるためのプログラム。
【請求項８】
ネットワークを介してそれぞれ接続された複数のノード装置と、前記複数のノード装置又は複数種類のコンテンツデータを対象として、識別情報を割り当てる識別情報割当装置とを有し、前記複数のノード装置間で互いに前記コンテンツデータを送受信することにより、前記ノード装置に前記コンテンツデータが配信されるコンテンツ配信システムにおいて、
前記識別情報割当装置は、
前記識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、前記識別情報として使用していない前記情報が最も多く配列されている最大未使用領域を判別する最大未使用領域判別手段と、
前記最大未使用領域判別手段により判別した前記最大未使用領域の前記情報のうち、前記識別情報として使用することにより、前記最大未使用領域における前記情報の配列を２つの未使用領域に分割する前記情報を前記識別情報候補として選択する識別情報候補選択手段と、
前記識別情報候補選択手段により選択した前記識別情報候補を、未だ前記識別情報を割り当てていない割当対象に割り当てる識別情報割当手段と、
を有することを特徴とするコンテンツ配信システム。
【請求項９】
ネットワークを介してそれぞれ接続された複数のノード装置と、前記複数のノード装置又は複数種類のコンテンツデータを対象として識別情報を割り当てる識別情報割当装置とを有し、前記複数のノード装置間で互いに前記コンテンツデータを送受信することにより、前記ノード装置に前記コンテンツデータが配信されるコンテンツ配信システムにおける前記識別情報の割当方法において、
前記識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、前記識別情報として使用していない前記情報が最も多く配列されている最大未使用領域を判別するステップと、
前記最大未使用領域の前記情報のうち、前記識別情報として使用することにより、前記最大未使用領域における前記情報の配列を２つの未使用領域に分割する前記情報を前記識別情報候補として選択するステップと、
前記識別情報候補を、未だ前記識別情報を割り当てていない割当対象に割り当てるステップと、
を有することを特徴とする識別情報割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツ配信システム及び同システムにおける識別情報割当方法及び同システムにおける識別情報割当装置及び同装置のプログラムに関するものである。
【背景技術】
【０００２】
近年、インターネットを始めとする情報通信ネットワーク（以下、単に「ネットワーク」という。）にパーソナルコンピュータ等の端末装置を接続して、所望する音楽や映画等のコンテンツに相当するコンテンツデータを受信し、受信したコンテンツデータを各端末装置で視聴することができるコンテンツ配信システムが広く利用されている。
【０００３】
このようなコンテンツ配信システムの一例として、分散ハッシュテーブル（ＤＨＴ「Distributed Hash Table」）を用いて論理的にオーバーレイネットワークを構築することにより、コンテンツデータ等の情報を効率的にそれぞれの端末装置に分散配置して負荷分散を図るシステムが提案されている（たとえば、特許文献１参照。）。
【０００４】
この分散ハッシュテーブルを用いたコンテンツ配信システムでは、あるコンテンツに対して、そのコンテンツのコンテンツ保持ノード装置に関する情報を管理するノード装置（以下、「ルートノード装置」という。）が決められており、コンテンツを要求するノード装置（以下、「リクエストノード装置」という。）は、所望のコンテンツに関するルートノード装置へ向けて、所望のコンテンツに対応するコンテンツ保持ノード装置に関する情報を要求するメッセージを送信して、コンテンツ保持ノード装置に関する情報を取得し、この取得した情報に基づいてコンテンツ保持ノード装置へアクセスして、コンテンツデータの配信要求を行い、コンテンツ保持ノード装置から所望のコンテンツデータの配信を受けるようにしていた。
【０００５】
また、このコンテンツ配信システムでは、リクエストノード装置がコンテンツデータの配信を受けるためには、所望のコンテンツデータを他のコンテンツデータから識別しなければならず、しかも、コンテンツ保持ノード装置を他の端末装置から識別しなければならないため、全てのコンテンツデータにそれぞれ固有の識別情報（以下、「コンテンツＩＤ」という。）が割り当てられ、また、コンテンツ配信システムに参加している全てのノード装置にそれぞれ固有の識別情報（以下「ノードＩＤ」という。）が割り当てられていた。
【特許文献１】特開２００６−１９７４００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のコンテンツ配信システムでは、当該コンテンツ配信システムを管理する装置（例えば、コンテンツ配信システムにコンテンツを投入するコンテンツ投入装置等。）が識別情報割当装置として機能して、コンテンツ配信システムに新たなコンテンツを投入するときに、そのコンテンツに相当するコンテンツデータに対してランダムに決定したコンテンツＩＤを割り当てていると、新たなコンテンツデータに対して、既に他のコンテンツデータに割り当てたものと同じコンテンツＩＤを割り当ててしまうという重複割当が生じるおそれがあった。
【０００７】
このようコンテンツＩＤの重複割当を防止するためには、既に割り当てた全てのコンテンツＩＤを記憶した上で、新たに割り当てるコンテンツＩＤと、既に割り当てたコンテンツＩＤとを比較する重複確認処理を行わなければならず、コンテンツＩＤを割り当てる際の処理負荷が増大するおそれがあった。
【課題を解決するための手段】
【０００８】
請求項１に係る本発明では、ネットワークを介してそれぞれ接続された複数のノード装置間で、各ノード装置が保持しているコンテンツデータを互いに送受信することにより、ノード装置へコンテンツデータの配信を可能としたコンテンツ配信システムにおけるノード装置又はコンテンツデータを対象として、識別情報を割り当てる識別情報割当装置において、識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、識別情報として使用していない情報が最も多く配列されている最大未使用領域を判別する最大未使用領域判別手段と、最大未使用領域判別手段により判別した最大未使用領域の情報のうち、識別情報として使用することにより、最大未使用領域における情報の配列を２つの未使用領域に分割する情報を識別情報候補として選択する識別情報候補選択手段と、識別情報候補選択手段により選択した識別情報候補を、未だ識別情報を割り当てていない割当対象に割り当てる識別情報割当手段とを有することを特徴とする識別情報割当装置。
【０００９】
また、請求項２に係る本発明では、請求項１に記載の識別情報割当装置において、識別情報候補選択手段が選択する識別情報候補は、最大未使用領域判別手段により判別した最大未使用領域における情報の配列を２つの未使用領域に等分する情報であることを特徴とする。
【００１０】
また、請求項３に係る本発明では、請求項１又は請求項２に記載の識別情報割当装置において、識別情報候補選択手段は、情報領域の中で、識別情報として使用している情報がない場合に、情報領域の中から、識別情報候補としてランダムに１つの情報を選択することを特徴とする。
【００１１】
また、請求項４に係る本発明では、請求項１〜請求項３のいずれか１項に記載の識別情報割当装置において、最大未使用領域判別手段は、最大未使用領域が複数存在した場合に、複数の最大未使用領域からランダムに１つの最大未使用領域を選択することを特徴とする。
【００１２】
また、請求項５に係る本発明では、請求項１〜４のいずれか１項に記載の識別情報割当装置において、情報領域の中で、識別情報として既に使用した情報のリストである使用済情報リストを記憶する使用済情報リスト記憶手段を有し、最大未使用領域判別手段は、使用済情報リストを用いて、最大未使用領域を判別することを特徴とする。
【００１３】
また、請求項６に係る本発明では、請求項１〜４のいずれか１項に記載の識別情報割当装置において、情報領域における未使用領域を判別する未使用領域判別手段と、未使用領域判別手段により判別した未使用領域のリストである未使用領域リストを記憶する未使用領域リスト記憶手段とを有し、最大未使用領域判別手段は、未使用領域リストを用いて、最大未使用領域を判別することを特徴とする。
【００１４】
また、請求項７に係る本発明では、コンピュータを、請求項１〜６のいずれかに記載の識別情報割当装置における各手段として機能させるためのプログラムを提供することとした。
【００１５】
また、請求項８に係る本発明では、ネットワークを介してそれぞれ接続された複数のノード装置と、複数のノード装置又は複数種類のコンテンツデータを対象として、識別情報を割り当てる識別情報割当装置とを有し、複数のノード装置間で互いにコンテンツデータを送受信することにより、ノード装置にコンテンツデータが配信されるコンテンツ配信システムにおいて、識別情報割当装置は、識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、識別情報として使用していない情報が最も多く配列されている最大未使用領域を判別する最大未使用領域判別手段と、最大未使用領域判別手段により判別した最大未使用領域の情報のうち、識別情報として使用することにより、最大未使用領域における情報の配列を２つの未使用領域に分割する情報を識別情報候補として選択する識別情報候補選択手段と、識別情報候補選択手段により選択した識別情報候補を、未だ識別情報を割り当てていない割当対象に割り当てる識別情報割当手段とを有することを特徴とする。
【００１６】
また、請求項９に係る本発明では、ネットワークを介してそれぞれ接続された複数のノード装置と、複数のノード装置又は複数種類のコンテンツデータを対象として識別情報を割り当てる識別情報割当装置とを有し、複数のノード装置間で互いにコンテンツデータを送受信することにより、ノード装置にコンテンツデータが配信されるコンテンツ配信システムにおける識別情報の割当方法において、識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、識別情報として使用していない情報が最も多く配列されている最大未使用領域を判別するステップと、最大未使用領域の情報のうち、識別情報として使用することにより、最大未使用領域における情報の配列を２つの未使用領域に分割する情報を識別情報候補として選択するステップと、識別情報候補を、未だ識別情報を割り当てていない割当対象に割り当てるステップとを有することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、新たに割り当てる識別情報と既に割り当てている識別情報との重複確認をすることなくコンテンツデータやノード装置に識別情報を割り当てることができ、コンテンツデータやノード装置へ識別情報を割り当てるときの処理負荷を低減することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の一実施形態について説明する。なお、以下に説明する実施形態は、配信する情報を音楽データや映像データ等のコンテンツデータとしたコンテンツ配信システムに対して本発明を適用した場合の実施形態である。
【００１９】
[１．１．コンテンツ配信システムの構成等]
本実施形態におけるコンテンツ配信システムは、インターネットを始めとする情報通信ネットワーク（以下、単に「ネットワーク」という。）を介してそれぞれ接続されたパーソナルコンピュータ等の端末装置（以下、「ノード装置」という。）間で、各ノード装置が保持しているコンテンツデータを互いに送受信することにより、当該コンテンツ配信システムに参加している各ノード装置へコンテンツデータの配信を可能としたコンテンツ配信システムである。
【００２０】
また、このコンテンツ配信システムは、上記複数のノード装置の他に、当該コンテンツ配信システムに、各種コンテンツに相当するコンテンツデータを投入するコンテンツ投入装置と、新たに当該コンテンツ配信システムに参加するノード装置へ、ネットワークにおける接続先となるノード装置を紹介するコンタクト先紹介装置とを備えている。
【００２１】
また、このコンテンツ配信システムにおいて、あるコンテンツデータの配信を受けようとするノード装置（以下、「リクエストノード装置」という。）は、コンテンツデータを検索する際に、所望のコンテンツデータを他のコンテンツデータから識別する必要があると共に、所望のコンテンツを保持しているノード装置（以下、「コンテンツ保持ノード装置」という。）を他のノード装置から識別する必要がある。
【００２２】
そのため、このコンテンツ配信システムでは、上記コンテンツ投入装置が、コンテンツ配信システムに新たなコンテンツデータを投入するときに、そのコンテンツデータに対して固有の識別情報（以下、「コンテンツＩＤ」という。）を割り当てるようにしている。
【００２３】
すなわち、本実施形態において、コンテンツ投入装置は、複数種類のコンテンツデータのそれぞれにコンテンツＩＤを割り当てるコンテンツＩＤ割当装置としても機能する。
【００２４】
また、このコンテンツ配信システムでは、上記コンタクト先紹介装置が、当該コンテンツ配信システムに新たに参加したノード装置に対して固有の識別情報（以下、「ノードＩＤ」という。）を割り当てるようにしている。
【００２５】
すなわち、本実施形態において、このコンタクト先紹介装置は、複数のノード装置にノードＩＤを割り当てるノードＩＤ割当装置としても機能する。
【００２６】
また、本実施形態において、コンテンツ投入装置が各コンテンツデータにコンテンツＩＤを割り当てる識別情報割当方法と、コンタクト先紹介装置が各ノード装置にノードＩＤを割り当てる識別情報割当方法とは、同様の識別割当方法を用いるようにしている。なお、以下の説明において、コンテンツ投入装置がコンテンツデータを割り当てる場合や、コンタクト先紹介装置がノードＩＤを割り当てる場合には、コンテンツ投入装置とコンタクト先紹介装置とを総称して識別情報割当装置と称し、割り当てるコンテンツＩＤとノードＩＤとを総称して識別情報と称することがある。
【００２７】
特に、本実施形態の識別情報割当装置は、後に詳述するが、コンテンツデータやノード装置に割り当てる識別情報として使用可能な複数の情報（番号）が所定の規則に従って配設された情報領域の中で、識別情報として使用していない情報が最も多く配列されている最大未使用領域を判別する最大未使用領域判別手段と、この最大未使用領域判別手段により判別した最大未使用領域のうち、識別情報として使用することにより、最大未使用領域における情報の配列を２つの未使用領域に分割する情報を、次に割り当てる識別情報候補として選択する識別情報候補選択手段と、この識別情報候補選択手段により選択した識別情報候補を、未だ識別情報を割り当てていない割当対象であるコンテンツデータ又はノード装置へ割り当てる識別情報割当手段とを備えている。
【００２８】
ここで、識別情報候補選択手段が選択する識別情報候補としては、最大未使用領域判別手段により判別した最大未使用領域における情報の配列を２つの未使用領域に等分する情報であることが望ましい。
【００２９】
また、このコンテンツ配信システムは、特定のコンテンツデータにおけるコンテンツ保持ノード装置へリクエストノード装置からの配信要求が集中することを抑制するために、分散ストレージシステムを採用している。
【００３０】
この分散ストレージシステムを用いた本実施形態のコンテンツ配信システムでは、ネットワークに接続して当該コンテンツ配信システムを利用している全てのノード装置がそれぞれ備える記憶領域（ストレージ）の空き領域を、仮想的に一つの大きな記憶領域（以下、「共有ストレージ」という。）として機能させ、この共有ストレージに複数のコンテンツデータを保持させておき、リクエストノード装置は、この共有ストレージから所望のコンテンツデータの配信を受けるようにしている。
【００３１】
すなわち、このコンテンツ配信システムのコンテンツ投入装置は、このコンテンツ配信システムに新たなコンテンツに相当するコンテンツデータを投入する際、一つのノード装置に投入するのではなく、当該コンテンツ配信システムに係るネットワークに接続しているいくつかのノード装置に同一のコンテンツデータを分散させて保持させるようにしている。
【００３２】
そして、そのコンテンツデータの配信を要求するリクエストノード装置は、所望のコンテンツデータを保持している複数のコンテンツ保持ノード装置のうちのいずれかのコンテンツ保持ノード装置からコンテンツデータの配信を受けるようにしている。
【００３３】
このように構成することにより、このコンテンツ配信システムでは、コンテンツデータを保持している全てのノード装置を、コンテンツデータを配信するサーバーとして機能させることができると共に、当該コンテンツ配信システムに参加している全てのノード装置が、リクエストノード装置のなりうるのである。
【００３４】
図１は、本実施形態に係るコンテンツ配信システムＳの概要構成例を示す図である。図１に示す物理接続形態のように、コンテンツ配信システムＳを構成するノード装置２ａ１，２ａ２，２ｂ１〜２ｂ４，２ｃ１〜２ｃ８、コンテンツ投入装置４、コンタクト先紹介装置５は、インターネットに代表されるネットワーク６上に分散配置されている。
【００３５】
これらノード装置２ａ１，２ａ２，２ｂ１〜２ｂ４，２ｃ１〜２ｃ８、コンテンツ投入装置４、コンタクト先紹介装置５には、各装置を識別する固有の製造番号（たとえば、ＭＡＣアドレス）及びＩＰ（Internet Protocol）アドレス（所在情報）が割り当てられており、これら装置は、ネットワーク６にルータ１０等を介して接続されている。そして、目的の接続先装置のＩＰアドレスを宛先ＩＰアドレス、自装置のＩＰアドレスを送信元ＩＰアドレスとしたヘッダを含むパケットを送信することによって通信接続が可能となっている。
【００３６】
また、各ノード装置２ａ１，２ａ２，２ｂ１〜２ｂ４，２ｃ１〜２ｃ８のそれぞれには、このコンテンツ配信システムＳに参加する際に、識別情報割当装置であるコンタクト先紹介装置５により、上記製造番号及びＩＰアドレスとは別に、固有のノード情報が割当られている。なお、ここでコンテンツ配信システムＳに直接関係ない装置もネットワーク６に接続されるが、ここでは省略している。また、ノード装置２ａ１，２ａ２，２ｂ１〜２ｂ４，２ｃ１〜２ｃ８のいずれかのノード装置又は全てのノード装置を示す場合には、便宜上、ノード装置２という場合がある。
【００３７】
また、本実施形態では、コンテンツ配信システムＳに参加している各ノード装置２を識別するためのノードＩＤとして、それぞれのノード装置２毎にユニークな番号（固有番号）を割り当てるようにしている。この番号は、ノード装置の最大運用台数を収容できるだけのbit数を持たせる必要がある。例えば、128bitの番号とすれば、２128≒340×1036台のノード装置を運用できる。
【００３８】
そして、このノードＩＤは、ノードＩＤ割当装置であるコンタクト先紹介装置５が後に詳述する識別情報割当方法に従って各ノード装置２に割り当てることにより、一つのＩＤ空間に偏りなく分散して配置されることとなる。
【００３９】
また、このコンテンツ配信システムＳは、各ノード装置２に割り当てた固有のノードＩＤに基づいて、図１に示す物理接続形態の上層に当該コンテンツ配信システムＳによるコンテンツデータの授受を実現するための仮想的なリンク（オーバーレイネットワーク）を構築している。
【００４０】
本実施形態において、このオーバーレイネットワーク上に配置されたノード装置２を、コンテンツ配信システムＳに参加しているノード装置２という。
【００４１】
なお、図１に示す例では、コンテンツ投入装置４、コンタクト先紹介装置５は、それぞれ独立した装置としているが、一つの装置においてこれらの装置の機能を実現するようにしてもよい。この場合にはこれらの装置のＩＰアドレスは同一のものとなり、ポート番号などで区別されることになる。
【００４２】
また、この場合、コンテンツ投入装置４及びコンタクト先紹介装置５として機能する一つの装置が、各コンテンツデータにコンテンツＩＤを割り当てると共に、各ノード装置にノードＩＤを割り当てることになる。
【００４３】
また、コンテンツ配信システムＳに参加している複数のノード装置２には、図２に示すように、一のノード装置２から他のノード装置２に配信されるコンテンツデータがコンテンツ投入装置４によって分散してノード装置２に投入される。そして、上記したように、これらのコンテンツデータにも、各コンテンツデータを識別するために、それぞれのコンテンツデータ毎に固有のコンテンツＩＤが割り当てられる。
【００４４】
そして、このコンテンツＩＤは、ノードＩＤと同様の長さ（例えば、128bit等）とし、コンテンツＩＤ割当装置であるコンテンツ投入装置４によって、後述の識別情報割当方法に従って各コンテンツデータが割り当てられる。
【００４５】
このコンテンツＩＤは、上記ノードＩＤと同一のＩＤ空間に配置され、そのコンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノード装置２が、当該コンテンツＩＤを割り当てたコンテンツデータにおけるコンテンツ保持ノード装置へのリンク情報、すなわちコンテンツ保持ノード装置のノードＩＤや所在情報であるＩＰアドレス等を管理する。
【００４６】
また、コンテンツ保持ノード装置は、コンテンツ投入装置４によってランダムに決定される。すなわち、コンテンツ投入装置４は、コンテンツデータを保持すべき１以上のノード装置２をランダムに決定し、このように決定したノード装置２にコンテンツデータを送信する。コンテンツ投入装置４からコンテンツデータを受信したノード装置２は、コンテンツデータを記憶部に保持することによってコンテンツ保持ノード装置として機能する。これにより、コンテンツデータが偏りなくコンテンツ配信システムＳのオーバーレイネットワーク上に分散して配置される。
【００４７】
そして、次に説明する識別情報割当方法に従って、識別情報割当装置（コンタクト先紹介装置５又はコンテンツ投入装置４）が各ノード装置２及び各コンテンツデータにノードＩＤ及びコンテンツＩＤを割り当てることにより、ノードＩＤ及びコンテンツＩＤを、図２に示す如く、同一のリング状のＩＤ空間上にさほど偏ることなく、散らばって存在させるようにしている。同図は８bit４進数で各ノードＩＤ及びコンテンツＩＤを図示したものである。図中丸点はノードＩＤを、四角形はコンテンツＩＤを示し、反時計回りでＩＤが増加するものとする。
【００４８】
ここで、識別情報割当装置（コンタクト先紹介装置５及びコンテンツ投入装置４）による識別情報割当方法について、図３を参照して具体的に説明する。なお、コンタクト先紹介装置５が各ノード装置２へノードＩＤを割り当てる際の識別情報割当方法と、コンテンツ投入装置４が各コンテンツデータにコンテンツＩＤを割り当てる際の識別情報割当方法とは同様であるので、ここでは、コンテンツ投入装置４が行う識別情報割当方法について説明することにより、コンタクト先紹介装置５による識別割当方法については、その説明を省略する。
【００４９】
コンテンツ投入装置４は、コンテンツＩＤとして使用可能な情報（番号）であって、コンテンツ配信システムＳへ投入予定のコンテンツ数の最大数に対応できるだけの複数のコンテンツＩＤが所定の規則に従って配列された情報領域を備えている。
【００５０】
この情報領域は、図３（ａ）に示すように、８bit４進数の0000〜3333までのコンテンツＩＤが反時計回りに順に配列された領域であり、上記ＩＤ空間に対応するものである。
【００５１】
そして、コンテンツ投入装置４は、この情報領域の中で、コンテンツＩＤとして使用している情報（番号）がない場合、すなわち、初めて当該コンテンツ配信システムＳへコンテンツデータを投入する際に、まず、情報領域の中からコンテンツＩＤ候補としてランダムに一つのコンテンツＩＤを選択して、初めて投入するコンテンツデータに対して割り当てる。なお、ここでは、図３（ａ）に示すように、初めて投入するコンテンツデータに割り当てる１番目のコンテンツＩＤとして「1132」を選択するようにしている。
【００５２】
次に、コンテンツ投入装置４は、情報領域の中で、コンテンツＩＤとして使用していない情報（番号）が最も多く配列されている最大未使用領域を判別する。ここでは、図３（ａ）に符号（１）で示す領域（1133〜1131）が最大未使用領域（１）として判別される。
【００５３】
次に、コンテンツ投入装置４は、２番目のコンテンツデータをコンテンツ配信システムＳに投入する際、図３（ａ）に示す最大未使用領域（１）のうち、最大未使用領域（１）における未使用のコンテンツＩＤの配列を二つの未使用領域に等分するコンテンツＩＤをコンテンツＩＤ候補として選択する。
【００５４】
ここでコンテンツ投入装置４は、２番目のコンテンツＩＤとして「3132」を選択して、未だコンテンツＩＤを割り当てていないコンテンツＩＤの割当対象である２番目のコンテンツデータに割り当てることにより、図３（ａ）に示した最大未使用領域（１）を、図３（ｂ）に示すように、二つの最大未使用領域（１）（２）に等分する。
【００５５】
次に、コンテンツ投入装置４は、３番目のコンテンツデータをコンテンツ配信システムＳに投入する際、情報領域のなかの最大未使用領域を判別し、その最大未使用領域を等分するコンテンツＩＤ候補を選択する。
【００５６】
ただし、ここでは、図３（ｂ）に示すように、未使用のコンテンツＩＤが同じ数だけ配列された二つの最大未使用領域（１）,（２）が存在する。
【００５７】
このように、二つの最大未使用領域（１）,（２）が存在すると判別した場合には、これら二つの最大未使用領域（１）,（２）からランダムに一つの最大未使用領域を選択する。
【００５８】
ここでコンテンツ投入装置４は、最大未使用領域（１）を選択し、この最大未使用領域（１）のうちコンテンツＩＤとして使用することにより、最大未使用領域（１）におけるコンテンツＩＤの配列を二つに等分するコンテンツＩＤをコンテンツＩＤ候補として選択する。
【００５９】
そして、コンテンツ投入装置４は、３番目のコンテンツＩＤとして「0132」を選択して、未だコンテンツＩＤを割り当てていないコンテンツＩＤの割当対象である３番目のコンテンツデータに割り当てることにより、図３（ｂ）に示した最大未使用領域（１）を、図３（ｃ）に示すように、二つの最大未使用領域（0133〜1131、3133〜0131）に等分する。
【００６０】
次に、コンテンツ投入装置４は、４番目のコンテンツデータをコンテンツ配信システムＳに投入する際、図３（ｃ）に示したように、３番目のコンテンツＩＤ「0132」を選択したときに選択しなかった方の最大未使用領域（２）を選択して、この最大未使用領域（２）のうちコンテンツＩＤとして使用することにより、最大未使用領域（２）におけるコンテンツＩＤの配列を二つに等分するコンテンツＩＤをコンテンツＩＤ候補として選択する。
【００６１】
ここでコンテンツ投入装置４は、図３（ｄ）に示すように、４番目のコンテンツＩＤとして「2132」を選択して、未だコンテンツＩＤを割り当てていないコンテンツＩＤの割り当て対象である４番目のコンテンツデータに割り当てることにより、図３（ｃ）に示した最大未使用領域（２）を二つの未使用領域に等分して、情報領域を四つの最大未使用領域（１）,（２）,（３）,（４）に等分する。
【００６２】
このように、コンテンツ投入装置４は、コンテンツ配信システムＳに新たなコンテンツデータを投入する際、図３（ａ）〜（ｄ）に示したように、まず、情報領域からランダムに１番目のコンテンツＩＤを選択して１番目にコンテンツ配信システムＳへ投入するコンテンツデータに割当て、その後は、順次最大未使用領域を判別し、その最大未使用領域を順次二つに等分する位置に配列されているコンテンツＩＤとして使用可能な情報（番号）をコンテンツＩＤ候補として選択して、各コンテンツデータに割り当てるようにしている。
【００６３】
そのため、この識別情報割当方法によれば、既にコンテンツデータに割り当てたコンテンツＩＤと、これからコンテンツデータに割り当てるコンテンツＩＤとの重複確認をすることなく、各コンテンツデータ毎にユニークなコンテンツＩＤを割り当てることができ、しかも、リング状のＩＤ空間上に、割当済みのコンテンツＩＤをさほど偏ることなく、散らばらせて存在させることができる。
【００６４】
また、この識別情報割当方法を用いて、コンテンツ配信システムＳに新たに参加してくる各ノード装置２へ順次ノードＩＤを割り当てることにより、リング状のＩＤ空間上にノード装置２をさほど偏ることなく、散らばらせて配置させることができる。
【００６５】
なお、ここでは、最大未使用領域を判別し、その最大未使用領域を順次二つに等分する位置に配置されているコンテンツＩＤをコンテンツＩＤ候補として選択するようにしているが、本発明におけるコンテンツＩＤ候補は、これに限定するものではなく、判別した最大未使用領域内に配列されているコンテンツＩＤとして使用可能な情報（番号）の中で、この最大未使用領域を二つの未使用領域に分割する情報（番号）であれば、任意の情報（番号）をコンテンツＩＤ候補として選択してもよい。
【００６６】
たとえば、判別した最大未使用領域を６対４や７対３に分割する位置に配列されている情報（番号）をコンテンツＩＤ候補として選択して、各コンテンツデータに割り当てるようにしても、リング状のＩＤ空間上に、割当済みのコンテンツＩＤをさほど偏ることなく、散らばらせて存在させることができる。
【００６７】
次に、どのノード装置２に、どのコンテンツデータが管理されるかを、一定の規則の下に決定する。本実施形態においては、「あるコンテンツＩＤを有するコンテンツデータを管理するノード装置２は、そのコンテンツＩＤに最も近いノードＩＤを有するノード装置２である」という規則とする。
【００６８】
ここで、「近い」ことの定義は、当該コンテンツＩＤを超えず、コンテンツＩＤとノードＩＤとの差が一番少ないものとするが、実際には、各コンテンツデータの管理を各ノード装置２に割り振る際に、一貫していればよい。図２に示す例では、この定義に基づいて、コンテンツＩＤａは、当該コンテンツＩＤａに近いノードＩＤ（以下、「ノードＩＤａ」と呼ぶ。）を有するノード装置２に管理され、コンテンツＩＤｂは、当該コンテンツＩＤｂに近いノードＩＤ（以下、「ノードＩＤｂ」と呼ぶ。）を有するノード装置２に管理され、コンテンツＩＤｃは、当該コンテンツＩＤｃに近いノードＩＤ（以下、「ノードＩＤｃ」と呼ぶ。）を有するノード装置２に管理される。
【００６９】
なお、ここで「管理」というのは、コンテンツデータを保持していることを意味するのではなく、「コンテンツデータがいずれのノード装置２に保持されているかを知っている」ことを意味する。すなわち、図２において、ノードＩＤａを有するノード装置２は、コンテンツＩＤａを有するコンテンツデータがいずれのノード装置２に保持されているかを知っており、ノードＩＤｂを有するノード装置２及びノードＩＤｃを有するノード装置２も同様にそれぞれコンテンツＩＤｂを有するコンテンツデータ及びコンテンツＩＤｃを有するコンテンツデータがいずれのノード装置２に保持されているかを知っているということになる。
【００７０】
このように、あるコンテンツデータがいずれのノード装置２に保持されているかを知っているノード装置２を、そのコンテンツデータのルートノード装置と呼び、このルートノード装置は、自身がルートノード装置となっているコンテンツデータのコンテンツＩＤと、そのコンテンツデータを保持しているコンテンツ保持ノード装置のノードＩＤ及びＩＰアドレスとを関連付けたコンテンツ保持ノード情報を他のノード装置２より最も多く保持している。
【００７１】
そして、図２においては、ノードＩＤａを有するノード装置２が、コンテンツＩＤａを有するコンテンツデータのルートノード装置であって、ノードＩＤｂを有するノード装置２が、コンテンツＩＤｂを有するコンテンツデータのルートノード装置であって、ノードＩＤｃを有するノード装置２が、コンテンツＩＤｃを有するコンテンツデータのルートノード装置である。
【００７２】
ここで、コンテンツ投入装置４は、コンテンツ配信システムＳ内のノード装置２をコンテンツ保持ノード装置とするためにコンテンツデータをノード装置２へ配布する機能のほか、このコンテンツ配信システムＳにおいて、リクエストノード装置が現在配信を受けることが可能な複数のコンテンツデータ（言い換えれば、コンテンツ保持ノード装置が保持しているコンテンツデータ）をそのコンテンツのタイトルとコンテンツＩＤとを関連付けたリスト情報が含まれたカタログ情報を生成してノード装置２へ提供する機能を有している。
【００７３】
上記したように、本実施形態では、あるコンテンツデータに関して、ルートノード装置となるノード装置２は、当該コンテンツデータに割り当てられたコンテンツＩＤと、ノードＩＤとが最も近い装置となるように定められている。
【００７４】
そのため、リクエストノード装置が、コンテンツ投入装置４から提供されるカタログ情報に含まれるコンテンツＩＤと同一のノードＩＤのノード装置２へ向けてメッセージを送信することにより、所望のコンテンツデータのルートノード装置へメッセージが届く。
【００７５】
また、上記したように、このコンテンツ配信システムＳにおいては、コンタクト先紹介装置５が配置されており、このコンタクト先紹介装置５は、コンテンツ配信システムＳに参加していないノード装置２からこのコンテンツ配信システムＳへの参加要求があったときに、未参加のノード装置２が参加メッセージを送信する既参加のノード装置２（以下、「コンタクト先ノード装置」と呼ぶ。）の所在情報を通知する機能を有している。
【００７６】
また、このコンタクト先紹介装置５は、このコンテンツ配信システムＳに新たに参加するノード装置２へ、上記した識別情報割当方法に従ってそれぞれ固有のノードＩＤを割り当てる機能を有している。
【００７７】
また、このコンテンツ配信システムＳにおいて、新規参加ノード装置は、まず、コンタクト先紹介装置５からネットワークにおける接続先となるノード装置２のＩＰアドレス等が含まれたメッセージを受信し、そのＩＰアドレスに対応するノード装置２に接続することにより、当該コンテンツ配信システムＳのオーバーレイネットワークに参加する。
【００７８】
その後、ノード装置２は、コンテンツ投入装置４から提供されるカタログ情報に含まれている所望のコンテンツデータに対応するコンテンツＩＤに基づいて、そのコンテンツＩＤのルートノード装置へ向けて所望のコンテンツデータの配信要求を示すメッセージを送信する。
【００７９】
そして、ノード装置２は、ルートノード装置から所望のコンテンツデータを保持しているコンテンツ保持ノード装置のＩＰアドレスを示すメッセージを受信し、受信したＩＰアドレスに対応するコンテンツ保持ノード装置と接続することによって、そのコンテンツ保持ノード装置から所望のコンテンツデータの配信を受けるのである。
【００８０】
ここで、このコンテンツ配信システムＳにおいて、各ノード装置２の間で授受される上記した各種メッセージ等は、各ノード装置２がそれぞれ保持しているルーティングテーブルに基づいてメッセージ等の転送を行うことにより、ネットワーク６に接続しているいくつかのノード装置２に転送されながら、メッセージ等の送信元のノード装置２から宛先のノード装置２まで到達することとなる。
【００８１】
[１．２．ルーティングテーブルの作成]
ここで、図４及び図５を参照して、本実施形態のコンテンツ配信システムＳに参加している各ノード装置２が各種メッセージ等を送信する際に参照するルーティングテーブルの作成方法の一例、及び、作成したルーティングテーブルの構成について説明する。
【００８２】
図４は、ルーティングテーブルが作成される様子の一例を示す図であり、図５は、ルーティングテーブルの構成を示す説明図である。
【００８３】
本実施形態のノード装置２では、図４（ａ）に示す如く、ＩＤ空間を幾つかのエリアに分割する。実際には、16分割程度が良く用いられるが、説明を簡単にするためここでは４分割とし、ＩＤをビット長８bitの４進数で表すことにする。そして、ここでは、ノード装置２ＮのノードＩＤを「1133」とし、このノード装置２Ｎのルーティングテーブルを作る例について説明する。
【００８４】
（レベル１のルーティング）
まず、ＩＤ空間を４分割とした場合、それぞれのエリアは４進数で表すと最大桁が異なる４つのエリア「0XXX」「1XXX」、「2XXX」、「3XXX」（Ｘは０から３の自然数、以下同様。）で分けられる。ノード装置２Ｎは、当該ノード装置２Ｎ自身のノードＩＤが「1133」であるため、図４（ａ）中左下「1XXX」のエリアに存在することになる。そして、ノード装置２Ｎは、自分の存在するエリア（すなわち、「1XXX」のエリア）以外のエリア（すなわち、「0XXX」のエリア、「2XXX」のエリア、「3XXX」のエリア）に存在するノード装置２のノードＩＤの所在情報、すなわち、当該ノードＩＤのＩＰアドレスをレベル１のテーブルに記憶する。
【００８５】
具体的には、図５のレベル１の欄に示すように、「0XXX」のエリアのノードＩＤとして「0100」、「2XXX」のエリアのノードＩＤとして「2133」、「3XXX」のエリアのノードＩＤとして「3213」がそれぞれ選択されている状態を示している。なお、当該レベル１の２列目はノード装置２Ｎ自身を示しているため、ＩＰアドレスを記憶する必要はない。
【００８６】
（レベル２のルーティング）
次に、図４（ｂ）に示す如く、上記ルーティングによって４分割したエリアのうち、自分の存在するエリア「1XXX」を更に４分割し、更に４つのエリア「10XX」「11XX」、「12XX」、「13XX」と分ける。そして、上記と同様に自分の存在するエリア「11XX」以外のエリアに存在するノード装置２の当該ノードＩＤの所在情報であるＩＰアドレスをレベル２のテーブルに記憶する。
【００８７】
具体的には、図５のレベル２の欄に示すように、「10XX」のエリアのノードＩＤとして「1003」、「12XX」のエリアのノードＩＤとして「1221」が、「13XX」のエリアのノードＩＤとして「1313」がそれぞれ選択されている状態を示している。なお、レベル２の２列目はノード装置２Ｎが存在するエリア「11XX」であり、後述するレベル３にてテーブル化されるためＩＰアドレスを記憶していない。また、上記エリアにノード装置２が存在しない場合には、ノードＩＤ及びＩＰアドレスの欄は空白となる。
【００８８】
（レベル３のルーティング）
更に、上記ルーティングによって４分割したエリアのうち、自分の存在するエリア「11XX」を更に４分割し、更に４つのエリア「110X」「111X」、「112X」、「113X」と分ける。そして、上記と同様に自分の存在するエリア「113X」以外のエリアに存在するノード装置２の当該ノードＩＤの所在情報であるＩＰアドレスをレベル３のテーブルに記憶する。
【００８９】
具体的には、図５のレベル３の欄に示すように、レベル３の４列目はノード装置２Ｎが存在するエリアであり、後述するレベル４にてテーブル化されるためＩＰアドレスを記憶していない。また、上記エリアにノード装置が存在しない場合には、ノードＩＤ及びＩＰアドレスの欄は空白となる。
【００９０】
このようにして、レベル４まで同様にルーティングテーブルを図５に示す如く作成することにより、８bitのＩＤ全てを網羅することができる。
【００９１】
そして、ノード装置２は、図５に示す構成のルーティングテーブルを作成する。
【００９２】
[１．３．コンテンツ配信システムへの参加]
次に、図６を参照して、コンテンツ配信システムＳに未参加のノード装置２が当該コンテンツ配信システムＳへ参加する方法の一例について説明する。図６は、コンテンツ配信システムＳに未参加のノード装置２（以下、「新規参加ノード装置２Ｍ」という。）が当該コンテンツ配信システムＳへ参加する様子の一例を示す図である。ここでは、新規参加ノード装置２Ｍがコンテンツ配信システムＳに参加する手順について説明する。
【００９３】
まず、コンテンツ配信システムＳに未参加である新規参加ノード装置２Ｍは、コンテンツ配信システムＳに参加するために、コンタクト先紹介装置５に対して、参加メッセージを送信すべきノード装置２（以下、「コンタクト先ノード装置」という。）の所在情報を要求（以下、「コンタクト先ノード装置の問い合わせ」という。）する。
【００９４】
その後、新規参加ノード装置２Ｍは、このコンタクト先ノード装置の問い合わせの返信として、コンタクト先ノード装置の所在情報を受信することとなり、このとき同時に、コンタクト先紹介装置５からノードＩＤを割り当てられる。
【００９５】
そして、新規参加ノード装置２Ｍは、コンタクト先紹介装置５から参加メッセージを送信すべきコンタクト先ノード装置の所在情報を受信すると、コンタクト先ノード装置に対して参加メッセージを送信する。ここで、参加メッセージのあて先識別情報は、新規参加ノード装置２ＭのノードＩＤとなっている。すなわち、新規参加ノード装置２Ｍは、コンテンツ配信システムＳに参加する際に、自ノード装置２のノードＩＤ「2133」を宛先識別情報とした参加メッセージを生成する。
【００９６】
コンタクト先ノード装置は、新規参加ノード装置２Ｍから送信された参加メッセージを受信すると、この参加メッセージがコンタクト先ノード装置宛のメッセージであるか否かを判定する。
【００９７】
ここで、コンタクト先ノード装置宛のメッセージであるか否かは、宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、宛先識別情報がコンタクト先ノード装置宛の識別情報と近いか否かが判定される。即ち、宛先識別情報に対して、コンタクト先ノード装置自身が保持しているルーティングテーブルに記憶されているノード装置２のノードＩＤから、一番近いノード装置２のノードＩＤが、自身であるか他のノード装置２であるかを判定する。
【００９８】
そして、コンタクト先ノード装置のノードＩＤよりも他のノード装置のノードＩＤの方が宛先識別情報に近いとき、参加メッセージを受信したコンタクト先ノード装置は、コンタクト先ノード装置自身が保持しているルーティングテーブルのレベル２を参照して、「2XXX」のエリアに属すノード装置２のうち、ＩＰアドレスを知っているノード装置２Ｂに対して参加メッセージを転送するとともに自ノード装置２が保持しているルーティングテーブルのレベル１のテーブルの情報を、新規参加ノード装置２Ｍへ送信する。
【００９９】
このように、コンテンツＩＤの桁を上から順に適合していく要領で参加メッセージの転送を行い、順次ルーティングテーブルの各レベルの情報を送信する。最終的に宛先識別情報に最も近いノード装置２に辿り着いたところで参加メッセージの転送は終了する。なお、参加メッセージなどのメッセージを目的のノード装置２へ辿り着くまでに、上述のように転送する仕組みをルーティングと呼ぶ。
【０１００】
こうして、新規参加ノード装置２Ｍは、参加メッセージを受信したノード装置２からルーティングテーブルの各レベルの情報を上位レベルの情報から順に取得するようにしている。新規参加ノード装置２Ｍはこのようにして、コンテンツ配信システムＳに参加するために必要なルーティングテーブルを生成する。
【０１０１】
［１．４．コンテンツデータの検索方法］
次に、図７を参照して、所望のコンテンツデータを保持しているコンテンツ保持ノード装置の検索方法の一例について説明する。図７は、上記ルーティングにより所望のコンテンツデータを保持しているコンテンツ保持ノード装置が検索される様子の一例を示す図である。
【０１０２】
ここでは、ノードＩＤ「1133」のノード装置２Ｎ（リクエストノード装置）が、コンテンツＩＤ「3020」を有するコンテンツデータを探す際の手順について説明する。
【０１０３】
リクエストノード装置２Ｎは、自己が保持しているルーティングテーブルのレベル１のテーブルを参照して、コンテンツＩＤ「3020」と同じエリアのノードＩＤを持つノード装置２のノードＩＤを宛先識別情報としてコンテンツ保持ノード情報（コンテンツ保持ノード装置の所在情報を含む情報）の送信要求（以下、「コンテンツ検索メッセージ」と呼ぶ。）を送信する。
【０１０４】
すなわち、コンテンツＩＤ「3020」は「3XXX」のエリアであるため、当該「3XXX」のエリアに属すノード装置２のうち、ＩＰアドレスを知っている（すなわち、自己が保持しているルーティングテーブルにＩＰアドレスが記憶されている）ノード装置２Ａ（ノードＩＤ「3213」）に対してリクエストノード装置２Ｎは、コンテンツ検索メッセージを送信する。
【０１０５】
このように、コンテンツ検索メッセージはコンテンツに対応する固有の識別情報であるコンテンツＩＤを含むものであり、このコンテンツＩＤはコンテンツ検索メッセージにおいて宛先識別情報として用いられる。
【０１０６】
図７に示す例によれば、ノードＩＤが「3213」であるノード装置２ＡのＩＰアドレスがリクエストノード装置２Ｎのルーティングテーブル（図５参照。）に記憶されているので、リクエストノード装置２Ｎは、ノードＩＤが「3213」であるノード装置２Ａに対してコンテンツ検索メッセージを送信する。
【０１０７】
次に、コンテンツ検索メッセージを受信したノード装置２Ａは、このコンテンツ検索メッセージが自ノード装置２Ａ宛のメッセージであるか否かを判定する。自ノード装置２Ａ宛のメッセージであるか否かは、宛先識別情報とルーティングテーブルとに基づいて行われる。
【０１０８】
具体的には、宛先識別情報が自ノード装置２ＡのノードＩＤと近いか否かが判定される。即ち、宛先識別情報に対して、ノード装置２Ａ自身が保持しているルーティングテーブルに記憶されているノード装置２のノードＩＤから、一番近いノード装置２のノードＩＤが、自身であるか他のノード装置２であるかを判定する。
【０１０９】
ここでは、自ノード装置２ＡのノードＩＤよりも他のノード装置２のノードＩＤの方が、宛先識別情報に近いため、ノード装置２Ａは、当該ノード装置２Ａ自身が保持しているルーティングテーブルのレベル２のテーブルを参照して、「30XX」のエリアに属すノード装置２のうち、ＩＰアドレスを知っているノード装置２Ｂ（ノードＩＤ「3031」）に対してコンテンツ検索メッセージを転送する。
【０１１０】
このように、コンテンツＩＤの桁を上から順に適合していく要領でコンテンツ検索メッセージの転送が進み、最終的に当該コンテンツデータを管理するノード装置２Ｃ（ノードＩＤ「3011」）、すなわちルートノード装置に辿り着くと、当該ルートノード装置は、コンテンツ検索メッセージに含まれるコンテンツＩＤ「3020」を、自身が管理している後述のインデックス情報の中から検索し、当該コンテンツデータを所有しているコンテンツ保持ノード装置のＩＰアドレス等をリクエストノード装置２Ｎに返信するようになっている。
【０１１１】
こうして、リクエストノード装置２Ｎは、上記ルートノード装置２Ｃから、コンテンツ保持ノード情報（コンテンツＩＤ「3020」のコンテンツデータの所在情報、即ち、コンテンツＩＤ「3020」のコンテンツデータを保持するコンテンツ保持ノード装置のＩＰアドレス）を受信して知ることになり、当該コンテンツ保持ノード装置へ所望のコンテンツに関するダウンロード要求を送信することにより、このダウンロード要求を受信したコンテンツ保持ノード装置から、そのコンテンツデータをダウンロードして取得することになる。
【０１１２】
［１．５．インデックステーブルへの登録方法］
次に、コンテンツ配信システムＳの中で、新しいコンテンツデータをネットワーク６上において他のノード装置２に見えるように公開する際の手法について述べる。
【０１１３】
本実施形態におけるコンテンツ配信システムＳでは、図８に示すように、コンテンツ投入装置４が各コンテンツ保持ノード装置となるノード装置２に対して、各コンテンツ保持ノード装置毎の管理対象コンテンツとなるコンテンツデータを送信する。
【０１１４】
このとき、コンテンツ投入装置４は、上記した識別情報割当方法に従って、各コンテンツデータにそれぞれコンテンツＩＤを割り当てて、そのコンテンツデータを各コンテンツ保持ノード装置へ送信する。
【０１１５】
コンテンツ投入装置４から管理対象のコンテンツデータを受信したコンテンツ保持ノード装置は、自身が備えるハードディスク装置等の情報記憶手段に受信したコンテンツデータを記憶する。
【０１１６】
当該コンテンツデータを配布されたコンテンツ保持ノード装置は、図８及び図９に示すように、当該コンテンツ保持ノード装置のＩＰアドレス及びノードＩＤを含むコンテンツ保持ノード情報の登録要求メッセージ（以下、「コンテンツ登録メッセージ」と呼ぶ。）を、コンテンツＩＤと同じノードＩＤを持つノード装置２に向けて（このノード装置２が実在するか否かはこの時点ではわからない。）送信する。
【０１１７】
そして、このコンテンツ登録メッセージも、上記コンテンツ検索メッセージと同様にルーティングテーブルに従って、次々と転送されていき、当該コンテンツ登録メッセージに含まれるコンテンツＩＤに最も近いノードＩＤを有するノード装置２まで転送されたところで、そのノード装置２がもはや送信先のノード装置２が他にないと判断すると、当該ノード装置２自身がそのコンテンツのルートノード装置となるべきだと判断し、図９に示すように、当該コンテンツ登録メッセージに含まれるコンテンツ保持ノード情報である当該コンテンツＩＤ、コンテンツ保持ノード装置のＩＰアドレス等の情報を自身が備える所定の情報記憶手段内に設けたインデックステーブルに記憶する。
【０１１８】
このようにルートノード装置のインデックステーブルにコンテンツ保持ノード装置の所在情報であるＩＰアドレスが登録されると、以後リクエストノード装置からのコンテンツ検索メッセージに対してインデックステーブルに登録したコンテンツ保持ノード装置の所在情報をリクエストノード装置へ返信する。このようにして本実施形態では、コンテンツ投入装置４から配布されたコンテンツデータをコンテンツ保持ノード装置に登録し、ルートノード装置を介して検索できるようにすることで、他のノード装置２にコンテンツを公開する。
【０１１９】
また、本実施形態において、このコンテンツ保持ノード情報は、コンテンツ保持ノード装置からルートノード装置へ転送される際に、その転送経路上に存在する各ノード装置２（コンテンツ保持ノード情報を転送したノード装置２）のインデックステーブルにも記憶される。
【０１２０】
[２．識別情報割当装置の構成等]
次に、本実施形態のコンテンツ配信システムＳにおける識別情報割当装置の構成等について、図１０を参照して具体的に説明する。図１０は、識別情報割当装置の構成を示すブロック図である。
【０１２１】
なお、本実施形態では、コンテンツ投入装置４がコンテンツデータへコンテンツＩＤを割り当てる際にコンテンツＩＤ（識別情報）割当装置として機能し、コンタクト先紹介装置５が各ノード装置２へノードＩＤを割り当てる際にノードＩＤ（識別情報）割当装置として機能するため、ここでは、コンテンツ投入装置４とコンタクト先紹介装置５とにおいて、識別情報割当装置として機能する共通部分に関してのみ説明することとし、他の部分に関しては、その具体的説明を省略する。
【０１２２】
本実施形態の識別情報割当装置は、一般のパーソナルコンピュータ或いは専用端末を適用することができ、ノード装置２又はコンテンツデータを対象として、ノードＩＤ又はコンテンツＩＤといった識別情報を割り当てるものであり、具体的には、図１０に示すように構成している。
【０１２３】
すなわち、この識別情報割当装置は、図１０に示すように、ＣＰＵ（Central Processing Unit）２０２と、各種プログラム等を記憶（格納）する書き換え可能な主記憶装置２０５と、割当対象であるノード装置２又はコンテンツデータに割り当てるための複数の識別情報等の各種データ等を記憶するハードディスク装置２０３と、ネットワーク６を介してネットワーク上のノード装置２との間で有線通信による通信を行うためのネットワークインタフェース２０４と、ユーザの操作により所定の情報を入力可能なキーボード２０７やマウス２０８等の入力手段を制御する周辺機器制御チップ２０６と、ＣＰＵ２０２からイメージデータを受け取り、内部のビデオメモリ（図示せず）に書き込むと共にこのビデオメモリに書き込んだデータを後述の内蔵ディスプレイ２１０に表示するビデオチップ２０９と、ビデオチップ２０９から送信される信号に応じた表示を行う内蔵ディスプレイ２１０と、ＦＭ音源（Frequency Modulation）やＷａｖｅ  Ｔａｂｌｅ音源などの音源を有する音源チップ２１１と、音源チップ２１１から出力されるオーディオ信号を音波に変換する内蔵スピーカ２１２とを備えて構成され、これらの各種構成要素はシステムバス２０１を介して相互に接続されている。
【０１２４】
なお、本実施形態においては、ＣＰＵ２０２と主記憶装置２０５とで制御部２３０を構成している。また、ネットワークインタフェース２０４は、ルータ１０ｂを介して、ネットワーク６に接続されている。このルータ１０ｂは、図１に示すルータ１０に相当するものである。
【０１２５】
（主記憶装置２０５について）  また、主記憶装置２０５は、識別情報割当装置のコンピュータとしての基本的な機能を提供するためのＯＳ（オペレーティングシステム）プログラム２１７、内蔵ディスプレイ２１０を制御するための画面制御プログラム２１８、各ノード装置２又は各コンテンツデータに識別情報を割り当てるための識別情報割当プログラム２１９等が記憶されている。
【０１２６】
また、この主記憶装置２０５は、制御部２３０が各コンテンツデータ又は各ノード装置２へ識別情報（コンテンツＩＤ又はノードＩＤ）を割り当てる処理を行う際に、ハードディスク装置２０３から読み出した識別情報を一時的に記憶すると共に、識別情報として使用するための情報の配列である情報領域の中で、識別情報として既に使用した情報のリストである使用済情報リストを記憶する使用済情報リスト記憶手段として機能する。
【０１２７】
また、この主記憶装置２０５は、主記憶装置２０５に記憶している識別情報として使用するための情報の配列である情報領域のうち、識別情報として未だ使用していない情報の配列のリストである未使用領域リストを記憶する未使用領域リスト記憶手段として機能させることもできる。
【０１２８】
ここで、ＯＳプログラム２１７は、ＣＰＵ２０２によって読み出されて実行されることにより、キーボード２０７やマウス２０８の入出力に関する機能や、主記憶装置２０５やハードディスク装置２０３などのメモリ管理などのノード装置２であるコンピュータの基本的な機能を実行可能にするものである。そして、このＯＳプログラム２１７がＣＰＵ２０２によって実行された状態で、上述の画面制御プログラム２１８、識別情報割当プログラム２１９等が実行される。
【０１２９】
なお、ＯＳプログラム２１７、画面制御プログラム２１８、識別情報割当プログラム２１９等は、例えば、ネットワーク６に接続されたサーバ等から主記憶装置２０５にダウンロードされるようにしてもよく、また、ＣＤ−ＲＯＭ等の記憶媒体に記録されてから当該記憶媒体を介して、主記憶装置２０５に読み込まれるようにしてもよい。
【０１３０】
（制御部２３０について）
制御部２３０は、上述のようにＣＰＵ２０２と主記憶装置２０５とから構成され、ＣＰＵ２０２が主記憶装置２０５に記憶された各種プログラム２１７〜２１９を読み出して実行することにより、識別情報割当装置全体を統括制御し、かつ、後述する未使用領域判別手段、最大未使用領域判別手段、識別情報候補選択手段、識別情報割当手段等として機能する。
【０１３１】
（未使用領域判別手段について）
未使用領域判別手段は、識別情報として使用可能な情報（番号）が所定の規則に従って配列された情報領域において、識別情報として使用していない連続する情報（番号）の列を一つの未使用領域として判別し、この未使用領域を示す情報を主記憶装置２０５に記憶させることにより、主記憶装置２０５を未使用領域リスト記憶手段として機能させるものである。
【０１３２】
具体的に説明すると、この未使用領域判別手段は、図３（ｃ）に示すように、ＩＤ空間の中で、「0132」、「1132」、「3132」という三つの情報（番号）が識別情報として既に使用されている場合に、「0133」〜「1131」、「1133」〜「3131」、「3133」〜「0131」という三つの未使用領域を判別して、各未使用領域毎に、その未使用領域において識別情報として使用していない情報の個数が未使用領域リストとして主記憶装置２０５の所定領域に記憶させる。
【０１３３】
（最大未使用領域判別手段について）
最大未使用領域判別手段は、識別情報として使用可能な複数の情報が所定の規則に従って配列された情報領域の中で、識別情報として使用していない情報が最も多く連続して配列されている最大未使用領域を判別するものである。
【０１３４】
そして、この最大未使用領域判別手段は、主記憶装置２０５に記憶している未使用領域リスト、又は、使用済情報リストを参照して、最大未使用領域を判別するようにしている。
【０１３５】
すなわち、この最大未使用領域判別手段は、主記憶装置２０５を使用済情報リスト記憶手段として機能させている場合に、使用済情報リストを参照して最大未使用領域を判別する。
【０１３６】
具体的に説明すると、この最大未使用領域判別手段は、使用済情報リストを参照して、識別情報として使用している情報（番号）と、その情報（番号）に最も近い識別情報として使用している他の情報（番号）とを読み出し、これら二つの情報（番号）の大きい方の情報から小さい方の情報を減算することにより、一つの未使用領域に含まれる識別情報として使用されていない連続した情報の個数を算出する。
【０１３７】
そして、最大未使用領域判別手段は、ＩＤ空間における全ての未使用領域に関してこの演算を行い、ＩＤ空間に存在する全ての未使用領域の中で識別情報として使用していない連続した情報の個数が最も多い未使用領域を最大未使用領域として判別するのである。
【０１３８】
また、最大未使用領域判別手段は、主記憶装置２０５を未使用領域リスト記憶手段として機能させている場合に、未使用領域リストを参照して最大未使用領域を判別する。
【０１３９】
この場合、未使用領域リスト記憶手段には、上記したように、各未使用領域毎に、その未使用領域において識別情報として使用していない連続した情報の個数が未使用領域リストとして既に記憶されているので、この最大未使用領域判別手段は、この未使用領域リストを参照することによって最大未使用領域を判別することができるのである。
【０１４０】
（識別情報候補選択手段について）
識別情報候補選択手段は、上記最大未使用領域判別手段により判別した最大未使用領域に配列されている識別情報として未だ使用していない情報配列の中で、識別情報として使用することにより、その最大未使用領域における情報の配列を略等しい個数の情報（番号）により構成された二つの未使用領域に等分する情報を識別情報候補として選択するものである。
【０１４１】
すなわち、この識別情報候補選択手段は、最大未使用領域を構成する情報（番号）のうち、最も小さな情報（番号）と最も大きな情報（番号）とを加算した後、この加算結果を二分の一する演算を行い、その演算結果に対応する情報（番号）を識別情報候補として選択するのである。なお、上記加算結果が偶数であり、その加算結果を完全に二分の一にすることができない場合には、上記加算結果を二分の一にする演算結果に最も近い情報（番号）を識別情報候補として選択する。
【０１４２】
（識別情報割当手段について）
識別情報割当手段は、上記識別情報候補選択手段によって選択した情報（番号）を、割当対象となるコンテンツデータ又はノード装置２に割り当てるものである。
【０１４３】
すなわち、この識別情報割当手段は、割当対象がコンテンツデータである場合、新たにコンテンツ配信システムＳに投入するコンテンツデータに、識別情報候補選択手段が選択した識別情報候補をコンテンツＩＤとして付与して、コンテンツ保持ノード装置としてランダムに選択したノード装置２へ送信する。
【０１４４】
また、割当対象がノード装置２である場合、この識別情報割当手段は、コンテンツ配信システムＳに参加していないノード装置２からこのコンテンツ配信システムＳへの参加要求があったときに、その参加要求を送信してきたノード装置２へ送信するコンタクト先ノード装置の所在情報に、上記識別情報候補選択手段が選択した識別情報をノードＩＤとして付与して送信する。
【０１４５】
[３．識別情報割当装置の制御部が行う処理]
次に、識別情報割当装置の制御部２３０が、割当対象に対して識別情報を割り当てる際に行う識別情報決定処理について、図１１〜図１５を参照すると共に、図３と対応させながら具体的に説明する。
【０１４６】
なお、以下の説明では、識別情報割当処理の一例として、識別情報割当装置として機能するコンテンツ投入装置４がコンテンツ配信システムＳに新たなコンテンツデータを投入する際に、識別情報割当装置の制御部２３０がそのコンテンツデータに割り当てるコンテンツＩＤを決定するために行う処理について説明する。
【０１４７】
ここでは、主記憶装置２０５を未使用領域リスト記憶手段として機能させた場合に制御部２３０が行う第１コンテンツＩＤ決定処理と、主記憶装置２０５を使用済情報リスト記憶手段として機能させた場合に制御部２３０が行う第２コンテンツＩＤ決定処理と、上記最大未使用領域が複数ある場合にシャッフル配列を用いて一つの最大未使用領域を選択してコンテンツデータに割り当てるコンテンツＩＤを決定する第３コンテンツＩＤ決定処理とについて説明する。
【０１４８】
図１１は、第１コンテンツＩＤ決定処理を示すフローチャートであり、図１２は、第２コンテンツＩＤ決定処理を示すフローチャートであり、図１３及び図１４は、第３コンテンツＩＤ決定処理を示すフローチャートであり、図１５は、シャッフル配列を示す説明図である。
【０１４９】
（第１コンテンツＩＤ決定処理）
まず、主記憶装置２０５を未使用領域リスト記憶手段として機能させた場合に、制御部２３０が行う第１コンテンツＩＤ決定処理について説明する。
【０１５０】
この第１コンテンツＩＤ決定処理において、制御部２３０は、図１１に示すように、まず、今回コンテンツ配信システムＳに投入するコンテンツが最初のコンテンツであるか否かの判断を行う（ステップＳ１）。
【０１５１】
このステップＳ１において制御部２３０は、最初のコンテンツであると判断した場合に（ステップＳ１：Ｙｅｓ）、処理をステップＳ６へ移し、最初のコンテンツでないと判断した場合に（ステップＳ１：Ｎｏ）、処理をステップＳ２へ移す。
【０１５２】
ステップＳ６において制御部２３０は、図３（ａ）に示すように、ＩＤ空間（ここでは、コンテンツＩＤ空間となる。）からランダムにコンテンツＩＤ「1132」を決定し、その後、処理をステップＳ７へ移す。
【０１５３】
また、ステップＳ２において制御部２３０は、使用済情報リストに基づいて一番大きな空き空間である最大未使用領域を求める処理を行う。
【０１５４】
ここで、制御部２３０は、最大未使用領域判別手段として機能して、使用済情報リストを参照し、コンテンツＩＤとして使用している情報（番号）と、その情報（番号）より大きく、その情報（番号）に最も近いコンテンツＩＤとして使用している他の情報（番号）とを読み出し、これら二つの情報（番号）の大きい方の情報から小さい方の情報を減算することにより、一つの未使用領域に含まれる識別情報として使用されていない連続した情報（番号）の個数を算出する。
【０１５５】
そして、最大未使用領域判別手段は、コンテンツＩＤ空間における全ての未使用領域に関してこの演算を行い、コンテンツＩＤ空間に存在する全ての未使用領域の中で識別情報として使用していない連続した情報の個数が最も多い空き領域である最大未使用領域を求める。
【０１５６】
次に制御部２３０は、ステップＳ２で求めた最大未使用領域が複数あるか否かの判断を行い（ステップＳ３）、最大未使用領域が一つしかないと判断した場合に（ステップＳ３：Ｎｏ）、処理をステップＳ５へ移し、最大未使用領域が複数あると判断した場合に（ステップＳ３：Ｙｅｓ）、処理をステップＳ４へ移す。
【０１５７】
ステップＳ５において、制御部２３０は、ステップＳ２で求めた最大未使用領域を半分にする情報（番号）をコンテンツデータに割り当てるコンテンツＩＤとして決定する。
【０１５８】
たとえば、図３（ｂ）に示すように、情報「3132」をコンテンツＩＤとして決定することにより、図３（ａ）に示す一つしかない最大未使用領域（１）を図３（ｂ）に示す大きさの等しい二つの未使用領域（１）（２）に等分する。なお、ここで、未使用領域の大きさとは、コンテンツＩＤ空間において、その未使用領域を構成するコンテンツＩＤとして使用していない連続する情報（番号）の個数の多さのことである。
【０１５９】
一方、ステップＳ４において、制御部２３０は、ステップＳ２で求めた大きさの等しい複数の最大未使用領域の中からランダムに一つの最大未使用領域を選択する処理を行い、その後、処理をステップＳ５へ移し、ステップＳ４でランダムに選択した一つの最大未使用領域を半分にする情報（番号）をコンテンツデータに割り当てるコンテンツＩＤとして決定するのである。
【０１６０】
たとえば、図３（ｂ）に示すように、大きさの等しい二つの最大未使用領域（１）（２）がある場合に、制御部２３０は、図３（ｂ）に示す二つの最大未使用領域（１）（２）の中から一つの最大未使用領域（１）をランダムに選択する。
【０１６１】
そして、制御部２３０は、図３（ｃ）に示すように、コンテンツデータに割り当てるコンテンツＩＤとして情報「0132」を決定することにより、図３（ｂ）に示すランダムに選択した最大未使用領域（１）を大きさの等しい二つの未使用領域に等分する。
【０１６２】
ステップＳ５又はステップＳ６の後、制御部２３０は、ステップＳ７において使用済情報リストの更新処理を行った後、この第１コンテンツＩＤ決定処理を終了し、次に新たなコンテンツをコンテンツ配信システムＳへ投入する際に、再度ステップＳ１から処理を開始する。
【０１６３】
（第２コンテンツＩＤ決定処理）
次に、主記憶装置２０５を使用済情報リスト記憶手段として機能させた場合に、制御部２３０が行う第２コンテンツＩＤ決定処理について説明する。
【０１６４】
この第２コンテンツＩＤ決定処理において、制御部２３０は、図１２に示すように、まず、今回コンテンツ配信システムＳに投入するコンテンツが最初のコンテンツであるか否かの判断を行う（ステップＳ１１）。
【０１６５】
このステップＳ１１において制御部２３０は、最初のコンテンツであると判断した場合に（ステップＳ１１：Ｙｅｓ）、処理をステップＳ１６へ移し、最初のコンテンツでないと判断した場合に（ステップＳ１１：Ｎｏ）、処理をステップＳ１２へ移す。
【０１６６】
ステップＳ１６において制御部２３０は、図３（ａ）に示すように、ＩＤ空間（ここでは、コンテンツＩＤ空間となる。）からランダムにコンテンツＩＤ「1132」を決定し、その後、処理をステップＳ１７へ移す。
【０１６７】
また、ステップＳ１２において制御部２３０は、最大未使用領域判別手段として機能して未使用領域リストを参照し、未使用領域リストの中で一番大きな空き空間である最大未使用領域を判別する処理を行う。
【０１６８】
次に制御部２３０は、ステップＳ１２で判別した最大未使用領域が複数あるか否かの判断を行い（ステップＳ１３）、最大未使用領域が一つしかないと判断した場合に（ステップＳ１３：Ｎｏ）、処理をステップＳ１５へ移し、最大未使用領域が複数あると判断した場合に（ステップＳ１３：Ｙｅｓ）、処理をステップＳ１４へ移す。
【０１６９】
ステップＳ１５において、制御部２３０は、ステップＳ１２で判別した最大未使用領域を半分にする情報（番号）をコンテンツデータに割り当てるコンテンツＩＤとして決定する。
【０１７０】
たとえば、図３（ｂ）に示すように、情報「3132」をコンテンツＩＤとして決定することにより、図３（ａ）に示す一つしかない最大未使用領域（１）を図３（ｂ）に示す大きさの等しい二つの未使用領域（１）（２）に等分する。
【０１７１】
一方、ステップＳ１４において、制御部２３０は、ステップＳ１２で判別した大きさの等しい複数の最大未使用領域の中からランダムに一つの最大未使用領域を選択する処理を行い、その後、処理をステップＳ１５へ移し、ステップＳ１４でランダムに選択した一つの最大未使用領域を半分にする情報（番号）をコンテンツデータに割り当てるコンテンツＩＤとして決定するのである。
【０１７２】
たとえば、図３（ｂ）に示すように、大きさの等しい二つの最大未使用領域（１）（２）がある場合に、制御部２３０は、図３（ｂ）に示す二つの最大未使用領域（１）（２）の中から一つの最大未使用領域（１）をランダムに選択する。
【０１７３】
そして、制御部２３０は、図３（ｃ）に示すように、コンテンツデータに割り当てるコンテンツＩＤとして情報「0132」を決定することにより、図３（ｂ）に示すランダムに選択した最大未使用領域（１）を大きさの等しい二つの未使用領域に等分する。
【０１７４】
次に、ステップＳ１７において制御部２３０は、未使用領域リストを修正する処理を行う。ここで、制御部２３０は、既にコンテンツＩＤとして使用している情報（番号）の中で、ステップＳ１５又はステップＳ１６で決定したコンテンツＩＤよりも大きく、ステップＳ１５又はステップＳ１６で決定したコンテンツＩＤに最も近い情報（番号）と、ステップＳ１５又はステップＳ１６で決定したコンテンツＩＤとの間に配列されているコンテンツＩＤとして使用していない情報（番号）の個数を、新たに未使用領域リストに追加する処理を行う。
【０１７５】
そして、制御部２３０は、ステップＳ１７の処理を終了すると、この第２コンテンツＩＤ決定処理を終了し、次に新たなコンテンツをコンテンツ配信システムＳへ投入する際に、再度ステップＳ１１から処理を開始する。
【０１７６】
（第３コンテンツＩＤ決定処理）
次に、制御部２３０が行う第３コンテンツＩＤ決定処理について、図３と対応させながら具体的に説明する。
【０１７７】
上記第１及び第２コンテンツＩＤ決定処理では、最大未使用領域が複数ある場合に、複数の最大未使用領域の中からランダムに一つの最大未使用領域を選択するような処理を行ったが、この第３コンテンツＩＤ決定処理では、最大未使用領域が複数ある場合に、単に一つの最大未使用領域を選択するのではなく、後述のシャッフル配列を用いて一つの最大未使用領域を選択するようにしている。
【０１７８】
なお、この第３コンテンツＩＤ決定処理では、コンテンツ配信システムＳに最初に投入するコンテンツデータに割り当てるコンテンツＩＤを決定するところから説明を始めることとする。
【０１７９】
この第３コンテンツＩＤ決定処理において、制御部２３０は、図１３に示すように、まず、主記憶装置２０５の所定領域に初期設定として変数Ｎ＝０、変数Ｌ＝０という二つの変数を設定し（ステップＳ２１）、その後、処理をステップＳ２２へ移す（Ｎ＝０、Ｌ＝０）。
【０１８０】
ここで、変数Ｎは、コンテンツデータに対して割り当てたコンテンツＩＤの個数を示す値であり、コンテンツＩＤを一つ決定する毎に１インクリメントされる。また、変数Ｌは、コンテンツＩＤ空間を等分する際のレベルを示す値であり、変数Ｎが２のＬ乗（Ｎ＝２Ｌ）となる毎に１インクリメントされる。
【０１８１】
次に、ステップＳ２２において、制御部２３０は、図３（ａ）に示すように、コンテンツＩＤ空間の中からランダムに一つの情報「1132」を最初のコンテンツデータに割り当てるコンテンツＩＤ（基本ＩＤ）として決定し、その後、処理をステップＳ２３へ移す。
【０１８２】
次に、ステップＳ２３において、制御部２３０は、ステップＳ２２で１番目のコンテンツＩＤを決定したので、変数Ｎを１インクリメント（Ｎ＝Ｎ+１）する処理を行い、その後処理をステップＳ２４へ移す（Ｎ＝１、Ｌ＝０）。
【０１８３】
次に、ステップＳ２４において、制御部２３０は、図１４に示すレベル確認処理を行い、その後、処理をステップＳ２５へ移す。
【０１８４】
このレベル確認処理において、制御部２３０は、図１４に示すように、Ｎ＝２Ｌであるか否かの判断を行い（ステップＳ４１）、Ｎ＝２Ｌであると判断した場合に（ステップＳ４１：Ｙｅｓ）処理をステップＳ４２へ移し、Ｎ＝２Ｌでないと判断した場合に（ステップＳ４１：Ｎｏ）、主記憶装置２０５の所定領域に返り値としてＦ（false）を記憶させ、その後、処理を図１３に示すステップＳ２５へ移す。
【０１８５】
ステップＳ４２において、制御部２３０は、Ｌを１インクリメント（Ｌ＝Ｌ+１）する処理を行い、その後、主記憶装置２０５の所定領域に返り値としてＴ（True）を記憶させ、その後、処理を図１３に示すステップＳ２５へ移す。
【０１８６】
ここでは、Ｎ＝１、Ｌ＝０であるため、Ｎ＝２Ｌとなり、Ｌが１インクリメントされた後、処理が図１３に示すステップＳ２５へ移行する（Ｎ＝１、Ｌ＝１）。
【０１８７】
次に、ステップＳ２５において、制御部２３０は、主記憶装置２０５の所定領域に変数Ｉ＝０という値を設定する処理を行い、その後、処理をステップＳ２６へ移す（Ｎ＝１、Ｌ＝１、Ｉ＝０）。ここで、変数Ｉは、後述するシャッフル配列の列番を示す値である。
【０１８８】
次に、ステップＳ２６において、制御部２３０は、レベルを示す変数ＬからコンテンツＩＤの空き空間である最大未使用領域を求める処理を行い、その後、処理をステップＳ２７へ移す。
【０１８９】
次に、ステップＳ２７において、制御部２３０は、２（Ｌ-１）個のシャッフル配列を用意すると共に、このシャッフル配列をシャッフルする処理を行い、その後、処理をステップＳ２８へ移す。ここでは、Ｌ＝１であるため、シャッフル配列の個数は１個となり、シャッフル必要がない。
【０１９０】
次に、ステップＳ２８において、制御部２３０は、電源をＯＦＦにする操作が為されたか否かの判断を行い、電源をＯＦＦにする操作が為されたと判断した場合に（ステップＳ２８：Ｙｅｓ）、この第３コンテンツＩＤ決定処理を終了する。
【０１９１】
一方、制御部２３０は、電源をＯＦＦにする操作が為されていないと判断した場合に（ステップＳ２８：Ｎｏ）、処理をステップＳ２９へ移す。
【０１９２】
次に、ステップＳ２９において、制御部２３０は、コンテンツＩＤの決定依頼があるか否かの判断を行う。すなわち、ここで制御部２３０は、本実施形態のコンテンツ配信システムＳに、新たなコンテンツデータを投入するか否かの判断を行うのである。
【０１９３】
そして、制御部２３０は、コンテンツＩＤの決定依頼があると判断した場合に（ステップＳ２９：Ｙｅｓ）、処理をステップＳ３０へ移し、コンテンツＩＤの決定依頼がないと判断した場合に（ステップＳ２９：Ｎｏ）、処理をステップＳ２８へ移し、次にコンテンツＩＤの決定依頼があるまでの間、ステップＳ２８とステップＳ２９の処理を繰り返し行う。
【０１９４】
次に、ステップＳ３０において、制御部２３０は、Ｎを１インクリメント（Ｎ＝Ｎ+１）すると共に、Ｉを１インクリメント（Ｉ＝Ｉ+１）する処理を行い、その後、処理をステップＳ３１へ移す（Ｎ＝２、Ｌ＝１、Ｉ＝１）。
【０１９５】
次に、ステップＳ３１において、制御部２３０は、シャッフル配列のＩ番目の最大未使用領域を半分に分ける情報（番号）をコンテンツＩＤとして決定する処理を行い、その後、処理を図１４に示すレベル確認処理へ移す。
【０１９６】
ここでは、先に説明したようにシャッフル配列の個数が１個であり、Ｉ＝１であるため、必然的に一つの最大未使用領域が決定されることになる。具体的には、図３（ａ）に示すように、ステップＳ２２で１番目のコンテンツＩＤ「1132」をランダムに決定した結果、必然的に一つの最大未使用領域（１）が決定されることになる。
【０１９７】
そして、制御部２３０は、決定した最大未使用領域を半分に分ける情報（番号）を、ステップＳ２９でコンテンツＩＤの決定依頼のあったコンテンツデータに割り当てるコンテンツＩＤとして決定する。具体的には、図３（ｂ）に示すように、２番目のコンテンツＩＤとして情報「3132」を決定することにより、図３（ａ）に示す必然的に決定された一つの最大未使用領域（１）を、図３（ｂ）に示すように、大きさの等しい二つの未使用領域（１）（２）に等分するのである。
【０１９８】
次に、ステップＳ３２におけるレベル確認処理において、制御部２３０は、図１４に示すように、Ｎ＝２Ｌであるか否かの判断を行い（ステップＳ４１）、Ｎ＝２Ｌであると判断した場合に（ステップＳ４１：Ｙｅｓ）、処理をステップＳ４２へ移し、Ｎ＝２Ｌでないと判断した場合に（ステップＳ４１：Ｎｏ）、主記憶装置２０５の所定領域に返り値としてＦを記憶させ、その後、処理を図１３に示すステップＳ３３へ移す。
【０１９９】
ステップＳ４２において、制御部２３０は、Ｌを１インクリメント（Ｌ＝Ｌ+１）する処理を行い、その後、主記憶装置２０５の所定領域に返り値としてＴを記憶させ、その後、処理を図１３に示すステップＳ３３へ移す。
【０２００】
ここでは、Ｎ＝２、Ｌ＝１であるため、Ｎ＝２Ｌとなり、Ｌが１インクリメントされて、制御部２３０は、返り値としてＴを記憶させた後、処理が図１３に示すステップＳ３３へ移行する（Ｎ＝２、Ｌ＝２、Ｉ＝１）。
【０２０１】
次に、ステップＳ３３において、制御部２３０は、返り値がＴであるか否かの判断を行い、返り値がＴであると判断した場合に（ステップＳ３３：Ｙｅｓ）、処理をステップＳ３４へ移して、シャッフル配列を削除する処理を行い、その後、処理をステップＳ２５へ移す。
【０２０２】
一方、返り値がＴでない（Ｆである）と判断した場合に（ステップＳ３３：Ｎｏ）、処理をステップＳ２８へ移す。
【０２０３】
その後、制御部２３０は、識別情報割当装置に電源が投入されている間、これらステップＳ２５〜Ｓ３４の処理を繰り返し行う。
【０２０４】
以下、識別情報割当装置の電源をＯＦＦにする操作が為されずに、順次コンテンツＩＤの割当依頼があり、コンテンツデータに割り当てるコンテンツＩＤを順次決定していく場合に、識別情報割当装置の制御部２３０が行う処理を説明する。
【０２０５】
上記したように、ステップＳ３１において、２番目のコンテンツＩＤを決定した後には、ステップＳ３２において返り値としてＴが記憶されることとなるので、処理がステップＳ３３からステップＳ２５へ移行することとなる。
【０２０６】
このステップＳ２５において、制御部は、変数Ｉをリセット（Ｉ＝０とする）処理を行い、その後、処理をステップＳ２６へ移す（Ｎ＝２、Ｌ＝２、Ｉ＝０）。
【０２０７】
次に、ステップＳ２６において、制御部２３０は、レベルを示す変数ＬからコンテンツＩＤの空き空間である最大未使用領域を求める処理を行い、その後、処理をステップＳ２７へ移す。
【０２０８】
具体的には、ここで、図３（ｂ）に示すように、大きさの等しい二つの最大未使用領域(１)(２)が求められることとなる。
【０２０９】
次に、ステップＳ２７において制御部２３０は、２（Ｌ-１）個のシャッフル配列を用意すると共に、このシャッフル配列をシャッフルする処理を行い、その後、処理をステップＳ２８へ移す。ここでは、Ｌ＝２であるため、シャッフル配列の個数は２個となり、このシャッフル配列をシャッフルする処理を行う。
【０２１０】
具体的には、ここでのシャッフル配列のシャッフル結果は、図１５（ａ）に示す二通りのシャッフル結果のうちのいずれか一方となる。なお、ここでは、シャッフル結果が図１５（ａ）の１段目の結果（（１）、（２））であったものとする。
【０２１１】
ここで、電源をＯＦＦにする操作が為されず、コンテンツＩＤの決定依頼があった場合に、制御部２３０は、処理をステップＳ２８からＳ２９を経てステップＳ３０へ移す。
【０２１２】
ここでのステップＳ３０において、制御部２３０は、Ｎを１インクリメント（Ｎ＝Ｎ+１）すると共に、Ｉを１インクリメント（Ｉ＝Ｉ+１）する処理を行い、その後、処理をステップＳ３１へ移す（Ｎ＝３、Ｌ＝２、Ｉ＝１）。
【０２１３】
次に、ここでのステップＳ３１において、制御部２３０は、シャッフル配列のＩ番目の最大未使用領域を半分に分ける情報（番号）をコンテンツＩＤとして決定する処理を行い、その後、処理を図１４に示すレベル確認処理へ移す。
【０２１４】
ここでは、Ｉ＝１であるため、図１５（ａ）の１段目のシャッフル結果における１番目の最大未使用領域（１）が選択され、この最大未使用領域（１）を半分に分ける情報（番号）をコンテンツＩＤとして決定する。
【０２１５】
具体的には、図３（ｃ）に示すように、３番目のコンテンツＩＤとして情報「0132」を決定することにより、図３（ｂ）における最大未使用領域（１）を図３（ｃ）に示すように、大きさの等しい二つの最大未使用領域に等分する。
【０２１６】
次に、ステップＳ３２において、制御部２３０は、レベル確認処理を行う。ここでのレベル確認処理では、Ｎ＝３、Ｌ＝３であるため、図１４に示すステップＳ４１の処理において、Ｎ＝２Ｌとならず（ステップＳ４１：Ｎｏ）、その後、返り値としてＦを記憶させて処理を図１３に示すＳ３３へ移す（Ｎ＝３、Ｌ＝２、Ｉ＝１）。
【０２１７】
次に、ステップＳ３３において制御部２３０は、返り値の判断を行うが、ここでは返り値がＦ（ステップＳ３３：Ｎｏ）であるため、処理がステップＳ２８へ移行することとなる。
【０２１８】
ここで、電源をＯＦＦにする操作が為されず、コンテンツＩＤの決定依頼があった場合に、制御部２３０は、処理をステップＳ２８からＳ２９を経てステップＳ３０へ移す。
【０２１９】
ここでのステップＳ３０において、制御部２３０は、Ｎを１インクリメント（Ｎ＝Ｎ+１）すると共に、Ｉを１インクリメント（Ｉ＝Ｉ+１）する処理を行い、その後、処理をステップＳ３１へ移す（Ｎ＝４、Ｌ＝２、Ｉ＝２）。
【０２２０】
次に、ここでのステップＳ３１において、制御部２３０は、シャッフル配列のＩ番目の最大未使用領域を半分に分ける情報（番号）をコンテンツＩＤとして決定する処理を行い、その後、処理を図１４に示すレベル確認処理へ移す。
【０２２１】
ここでは、Ｉ＝２であるため、図１５（ａ）の１段目のシャッフル結果における２番目の最大未使用領域（２）が選択され、この最大未使用領域（２）を半分に分ける情報（番号）をコンテンツＩＤとして決定する。
【０２２２】
具体的には、図３（ｄ）に示すように、４番目のコンテンツＩＤとして、情報「2132」を決定することにより、図３（ｃ）における最大未使用領域（２）を図３（ｄ）に示すように、大きさの等しい二つの最大未使用領域に等分する。
【０２２３】
その結果、図３（ｄ）に示すように、コンテンツＩＤ空間が大きさの等しい四つの最大未使用領域（１）（２）（３）（４）に等分されることとなる。
【０２２４】
次に、ステップＳ３２において、制御部２３０は、レベル確認処理を行う。ここでのレベル確認処理では、Ｎ＝４、Ｌ＝２であるため、図１４に示すステップ４１の処理において、Ｎ＝２Ｌとなり（ステップＳ４１：Ｙｅｓ）、その後、処理をステップＳ４２へ移し、変数Ｌを１インクリメント（Ｌ＝Ｌ+１）する処理を行って、
返り値としてＴを記憶させた後、処理を図１３に示すＳ３３へ移す（Ｎ＝４、Ｌ＝３、Ｉ＝２）。
【０２２５】
次に、ステップＳ３３において制御部２３０は、返り値の判断を行うが、ここでは返り値がＴ（ステップＳ３３：Ｙｅｓ）であるため、処理がステップＳ２５へ移行することとなる。
【０２２６】
そして、このステップＳ２５において、制御部２３０は、変数Ｉをリセット（Ｉ＝０とする）処理を行い、その後、処理をステップＳ２６へ移す（Ｎ＝４、Ｌ＝３、Ｉ＝０）。
【０２２７】
次に、ステップＳ２６において、制御部２３０は、レベルを示す変数ＬからコンテンツＩＤの空き空間である最大未使用領域を求める処理を行い、その後、処理をステップＳ２７へ移す。
【０２２８】
具体的には、ここで、図３（ｄ）に示すように、大きさの等しい四つの最大未使用領域(１)(２)（３）（４）が求められることとなる。
【０２２９】
次に、ステップＳ２７において制御部２３０は、２（Ｌ-１）個のシャッフル配列を用意すると共に、このシャッフル配列をシャッフルする処理を行い、その後、処理をステップＳ２８へ移す。ここでは、Ｌ＝３であるため、シャッフル配列の個数は４個となり、このシャッフル配列をシャッフルする処理を行う。
【０２３０】
具体的には、ここでのシャッフル配列のシャッフル結果は、図１５（ｂ）に示す２４通りのシャッフル結果のうちのいずれか一方となる。なお、ここでは、シャッフル結果が図１５（ａ）の１段目の結果（（１）、（２）、（３）、（４））であったものとする。
【０２３１】
その後、制御部２３０は、このシャッフル結果を参照しながら、図３（ｄ）に示す最大未使用領域（１）〜（４）をそれぞれ大きさの等しい二つの未使用領域にする情報をコンテンツＩＤとして順次決定する。
【０２３２】
このようにして、制御部２３０は、第３コンテンツＩＤ割当処理を実行するので、図３に示すように、コンテンツＩＤを順次決定していくにつれて、コンテンツＩＤ領域が２のＬ乗等分されていき、コンテンツＩＤ空間にさほど偏りが生じることなくコンテンツＩＤを分散させることができる。
【０２３３】
なお、本実施形態では、識別情報割当装置の制御部２３０が行う識別情報割当処理として、制御部２３０が、コンテンツデータに割り当てるコンテンツＩＤを決定する処理を例に挙げて説明したが、各ノード装置２に割り当てるノードＩＤを決定する場合も同様の処理によって決定することができる。
【図面の簡単な説明】
【０２３４】
【図１】本実施形態に係るコンテンツ配信システムＳの概要構成例を示す図である。
【図２】コンテンツ投入装置から複数のノード装置へコンテンツデータが投入される様子の一例を示す説明図である。
【図３】本実施形態の識別情報割当方法を示す説明図である。
【図４】ルーティングテーブルが作成される様子の一例を示す説明図である。
【図５】ルーティングテーブルの構成を示す説明図である。
【図６】コンテンツ配信システムＳに未参加のノード装置が参加する様子の一例を示す説明図である。
【図７】ルーティングにより所望のコンテンツデータを保持しているコンテンツ保持ノード装置が検索される様子の一例を示す説明図である。
【図８】インデックステーブルへの登録方法を示す説明図である。
【図９】インデックス情報及びインデックス情報が転送される様子の一例を示す説明図である。
【図１０】識別情報割当装置の構成を示すブロック図である。
【図１１】第１コンテンツＩＤ決定処理を示すフローチャートである。
【図１２】第２コンテンツＩＤ決定処理を示すフローチャートである。
【図１３】第３コンテンツＩＤ決定処理を示すフローチャートである。
【図１４】第３コンテンツＩＤ決定処理を示すフローチャートである。
【図１５】シャッフル配列を示す説明図である。
【符号の説明】
【０２３５】
Ｓ  コンテンツ配信システム
２  ノード装置
４  コンテンツ投入装置
５  コンタクト先紹介装置
２３０  制御部
２０５  主記憶装置
【図１】
2008090564.tif 000003
【図２】
2008090564.tif 000004
【図３】
2008090564.tif 000005
【図４】
2008090564.tif 000006
【図５】
2008090564.tif 000007
【図６】
2008090564.tif 000008
【図７】
2008090564.tif 000009
【図８】
2008090564.tif 000010
【図９】
2008090564.tif 000011
【図１０】
2008090564.tif 000012
【図１１】
2008090564.tif 000013
【図１２】
2008090564.tif 000014
【図１３】
2008090564.tif 000015
【図１４】
2008090564.tif 000016
【図１５】
2008090564.tif 000017