(57)【特許請求の範囲】
【請求項１】
通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークに参加するノード装置であって、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、
前記参加要求情報を受信したノード装置から送信された返信情報であって、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を受信する返信情報受信手段と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、
を備えることを特徴とするノード装置。
【請求項２】
請求項１に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記参加要求情報送信手段は、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とするノード装置。
【請求項３】
請求項１に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記到達可能範囲設定手段は、前記参加要求情報の到達可能範囲を表す情報を変更設定し、前記参加要求情報送信手段は、前記変更設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とするノード装置。
【請求項４】
請求項４に記載のノード装置において、
前記到達可能範囲設定手段は、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を表す情報を変更設定することを特徴とするノード装置。
【請求項５】
請求項１乃至４の何れか一項に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記装置情報取得手段は、前回取得した前記ノード装置の装置情報とは異なる装置情報を複数取得し、前記参加要求情報送信手段は、前記参加要求情報を当該取得された各前記装置情報により特定される各前記ノード装置に対して送信することを特徴とするノード装置。
【請求項６】
請求項１乃至５の何れか一項に記載のノード装置において、
前記転送先テーブルは、複数のレベルに区分されており、
前記返信情報受信手段が、複数の前記ノード装置から前記返信情報を受信した場合に、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの前記複数の転送先テーブルのうち、前記参加要求情報の到達可能範囲が最も狭い設定で受信可能な１の前記ノード装置における前記転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とするノード装置。
【請求項７】
請求項１乃至６何れか一項に記載のノード装置において、
前記参加要求情報送信手段は、自己に固有の識別情報を前記参加要求情報に付加して当該参加要求情報を送信し、
前記参加要求情報は、当該参加要求情報を受信した前記ノード装置から、前記固有の識別情報の管理元であるノード装置に至るまで前記固有の識別情報に従って転送され、
前記返信情報受信手段は、前記参加要求情報を転送する夫々のノード装置から送信された前記返信情報を受信し、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とするノード装置。
【請求項８】
コンピュータを、請求項１乃至７何れか一項に記載のノード装置として機能させることを特徴とするコンピュータプログラム。
【請求項９】
通信ネットワークを介して互いに接続された複数のノード装置を備えた情報配信システムであって、当該複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークを有する情報配信システムにおいて、
前記オーバーレイネットワークに参加するノード装置は、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、を備え、
前記参加要求情報を受信したノード装置は、
前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する返信情報送信手段を備え、
前記オーバーレイネットワークに参加するノード装置は、
前記転送先テーブルを含む返信情報を受信する返信情報受信手段と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を更に備えることを特徴とする情報配信システム。
【請求項１０】
通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークへのネットワーク参加方法であって、
前記オーバーレイネットワークに参加するノード装置は、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する工程と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する工程と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する工程と、を備え、
前記参加要求情報を受信したノード装置は、
前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する工程を備え、
前記オーバーレイネットワークに参加するノード装置は、
前記転送先テーブルを含む返信情報を受信する工程と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する工程と、を更に備えることを特徴とするネットワーク参加方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークを介して互いに接続された複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の情報配信システム及び方法等に関し、特に、上記複数のノード装置のうちの全部又は一部のノード装置の参加により形成されているオーバーレイネットワークに未参加のノード装置が参加するための技術分野に関する。
【背景技術】
【０００２】
ピアツーピア型の情報配信システムにおいて、例えば、分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用して論理的に構築されたオーバーレイネットワークでは、各ノード装置が、当該オーバーレイネットワークに参加している全てのノード装置へのリンク情報（例えば、ＩＰアドレス）を認識しているわけではなく、参加の際などに得られる一部のノード装置へのリンク情報だけを保持しており、かかるリンク情報に基づき、データの問い合わせ等を行うようになっている。
【０００３】
このようなオーバーレイネットワークにおいては、ノード装置の参加及び脱退（離脱）が頻繁に行われても、負荷分散が適切に行われる必要があり、非特許文献１には、オーバーレイネットワークにおいて、参加及び脱退（離脱）が頻繁に行われる場合であっても、適切に負荷分散を行うための技術が開示されている。
【非特許文献１】「分散ハッシュテーブルの軽量な負荷分散手法の検討」  社団法人  電子情報通信学会  信学技報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術においては、各ノード装置のリンク情報は、ローカリティ（地域性）、言い換えれば、実際のネットワーク（実ネットワーク）上の近さが考慮されていないため、実際のネットワークに対して余分な負荷を与えることが考えられる。
【０００５】
本発明は、以上の問題等に鑑みてなされたものであり、ローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能で、実際のネットワークへの余分な負荷を軽減することが可能なノード装置、コンピュータプログラム、情報配信システム、及びネットワーク参加方法を提供することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークに参加するノード装置であって、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、前記参加要求情報を受信したノード装置から送信された返信情報であって、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を受信する返信情報受信手段と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を備えることを特徴とする。
【０００７】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、上記参加要求情報の到達可能範囲を表す情報を設定し、当該設定した情報を参加要求情報に付加して、複数のノード装置に対して送信し、上記参加要求情報を受信することができたノード装置から送信されてきた返信情報に含まれる転送先テーブルに基づいて自己が使用するべき転送先テーブルを生成して、オーバーレイネットワークに参加するようにしたので、通信ネットワーク上のローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能となり、通信ネットワークへの余分な負荷を軽減することができる。
【０００８】
請求項２に記載の発明は、請求項１に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記参加要求情報送信手段は、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とする。
【０００９】
この発明によれば、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能となる。
【００１０】
請求項３に記載の発明は、請求項１に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記到達可能範囲設定手段は、前記参加要求情報の到達可能範囲を表す情報を変更設定し、前記参加要求情報送信手段は、前記変更設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とする。
【００１１】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、参加要求情報を送信してから所定時間以内に返信情報を受信しない場合には、当該参加要求情報の到達可能範囲を表す情報を変更設定し、当該変更設定された情報を参加要求情報に付加して、再度、各ノード装置に対して送信するようにしたので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能となる。
【００１２】
請求項４に記載の発明は、請求項４に記載のノード装置において、前記到達可能範囲設定手段は、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を表す情報を変更設定することを特徴とする。
【００１３】
この発明によれば、上記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を広げていけるので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能となる。
【００１４】
請求項５に記載の発明は、請求項１乃至４の何れか一項に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記装置情報取得手段は、前回取得した前記ノード装置の装置情報とは異なる装置情報を複数取得し、前記参加要求情報送信手段は、前記参加要求情報を当該取得された各前記装置情報により特定される各前記ノード装置に対して送信することを特徴とする。
【００１５】
この発明によれば、返信情報が届かないときに、前回取得したノード装置の装置情報とは異なる装置情報を取得してこれらのノード装置に参加要求情報を送信するようにしたので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能となる。
【００１６】
請求項６に記載の発明は、請求項１乃至５の何れか一項に記載のノード装置において、前記転送先テーブルは、複数のレベルに区分されており、前記返信情報受信手段が、複数の前記ノード装置から前記返信情報を受信した場合に、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの前記複数の転送先テーブルのうち、前記参加要求情報の到達可能範囲が最も狭い設定で受信可能な１の前記ノード装置における前記転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とする。
【００１７】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、複数のノード装置からの返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの複数の転送先テーブルのうち、参加要求情報の到達可能範囲が最も狭い設定で受信可能なノード装置における転送先テーブルに基づいて、自己が使用するべき転送先テーブルが生成するようにしたので、よりネットワーク的に近い（例えば、ＨＯＰ数が少ない）ノード装置の転送先テーブルが優先して登録されることになり、転送先テーブルもローカリティ（地域性）が考慮され、より一層、通信ネットワーク上のローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能となる。
【００１８】
請求項７に記載の発明は、請求項１乃至６何れか一項に記載のノード装置において、前記参加要求情報送信手段は、自己に固有の識別情報を前記参加要求情報に付加して当該参加要求情報を送信し、前記参加要求情報は、当該参加要求情報を受信した前記ノード装置から、前記固有の識別情報の管理元であるノード装置に至るまで前記固有の識別情報に従って転送され、前記返信情報受信手段は、前記参加要求情報を転送する夫々のノード装置から送信された前記返信情報を受信し、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とする。
【００１９】
この発明によれば、参加要求情報は、複数のノード装置に転送されるので、より多くのノード装置の転送先テーブルを取得することができる。
【００２０】
請求項８に記載にコンピュータプログラムは、コンピュータを、請求項１乃至７何れか一項に記載のノード装置として機能させることを特徴とする。
【００２１】
請求項９に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置を備えた情報配信システムであって、当該複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークを有する情報配信システムにおいて、前記オーバーレイネットワークに参加するノード装置は、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、を備え、前記参加要求情報を受信したノード装置は、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する返信情報送信手段を備え、前記オーバーレイネットワークに参加するノード装置は、前記転送先テーブルを含む返信情報を受信する返信情報受信手段と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を更に備えることを特徴とする。
【００２２】
請求項１０に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークへのネットワーク参加方法であって、前記オーバーレイネットワークに参加するノード装置は、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する工程と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する工程と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する工程と、を備え、前記参加要求情報を受信したノード装置は、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する工程を備え、前記オーバーレイネットワークに参加するノード装置は、前記転送先テーブルを含む返信情報を受信する工程と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する工程と、を更に備えることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、オーバーレイネットワークにこれから参加するノード装置は、上記参加要求情報の到達可能範囲を表す情報を設定し、当該設定した情報を参加要求情報に付加して、複数のノード装置に対して送信し、上記参加要求情報を受信することができたノード装置から送信されてきた返信情報に含まれる転送先テーブルに基づいて自己が使用するべき転送先テーブルを生成して、オーバーレイネットワークに参加するようにしたので、通信ネットワーク上のローカリティ（地域性）が考慮されたオーバーレイネットワークを構築することが可能となり、通信ネットワークへの余分な負荷を軽減することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに対して本発明を適用した場合の実施形態である。
【００２５】
［１．コンテンツ配信システムの構成等］
始めに、図１を参照して、コンテンツ配信システムの概要構成等について説明する。
【００２６】
図１は、本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【００２７】
図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４ａ,４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５ａ,５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、及び通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界の通信ネットワーク）８が構築されている。なお、図１の例におけるネットワーク（通信ネットワーク）８には、データ（パケット）を転送するためのルータが、適宜挿入されているが図示を省略している。
【００２８】
コンテンツ配信システムＳは、このようなネットワーク８を介して相互に接続された複数のノード装置ｎ１，ｎ２・・・ｎ２１を備えて構成されることになり、ピアツーピア方式のネットワークシステムとなっている（なお、実際には、これ以上のノード装置が存在することになる）。また、各ノード装置ｎ１〜ｎ２１には、固有の製造番号及びＩＰ（Internet Protocol）アドレス（グローバルＩＰアドレス）が割り当てられている。なお、製造番号及びＩＰアドレスは、複数のノード装置間で重複しないものである。
【００２９】
そして、このコンテンツ配信システムＳにおいては、特定のアルゴリズム、例えば、ＤＨＴを利用したアルゴリズムによって、図１の上部枠１００内に示すような、オーバーレイネットワーク９が構築されることになる。つまり、このオーバーレイネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するネットワーク（論理的なネットワーク）を意味する。
【００３０】
本実施形態においては、ＤＨＴを利用したアルゴリズムによって構築されたオーバーレイネットワーク９を前提としており、このオーバーレイネットワーク９（図１の上部枠１００内）に配置されたノード装置ｎ１〜ｎ１５を、オーバーレイネットワーク９に参加しているノード装置（以下、このようなノード装置ｎ１〜ｎ１５を「参加ノードｎｎ」と総称する）という。言い換えれば、オーバーレイネットワーク９は、参加ノードｎｎの参加により形成されている。このようなオーバーレイネットワーク９への参加は、参加していないノード装置ｎ１６〜ｎ２１（以下、「未参加ノードｎｍ」と総称する）が、任意の参加ノードｎｎに対して参加要求を示す参加要求情報を送信することによって行われる。
【００３１】
また、各参加ノードｎｎは、自己に固有の識別情報としてのノードＩＤを有しており、当該ノードＩＤは、例えば、ＩＰアドレスあるいは製造番号を共通のハッシュ関数（例えば、ＳＨＡ−１等）によりハッシュ化した値（例えば、ｂｉｔ長が１６０ｂｉｔ）であり、一つのＩＤ空間に偏りなく分散して配置されることになる。
【００３２】
なお、本実施形態では、ＩＰアドレスを共通のハッシュ関数によりハッシュ化した値をノードＩＤとする。また、図１の例に示すコンテンツ配信システムＳには、全ての参加ノードｎｎの装置情報（例えば、ノードＩＤ、ＩＰアドレス、ポート番号等）を管理する管理サーバＳＡが存在しているが、このような管理サーバＳＡが存在せずとも、オーバーレイネットワーク９の形成は可能である。
【００３３】
このように共通のハッシュ関数により求められた（ハッシュ化された）ノードＩＤは、当該ＩＰアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。
【００３４】
また、各参加ノードｎｎは、夫々、ＤＨＴを保持している。このＤＨＴは、オーバーレイネットワーク上における情報の転送先を規定しており、具体的には、ノードＩＤ空間内で適度に離れた参加ノードｎｎのノードＩＤとそのＩＰアドレス等の組が複数登録されたルーティングテーブル（転送先テーブル）が含まれている。
【００３５】
このようなＤＨＴは、未参加ノードｎｍがオーバーレイネットワーク９に参加する際に与えられることになる。
【００３６】
また、コンテンツ配信システムＳにおいては、未参加ノードｎｍによるオーバーレイネットワーク９への参加、若しくは参加ノードｎｎによるオーバーレイネットワーク９からの脱退が頻繁に行われるため、定期的に（例えば数十分から数時間間隔で）ＤＨＴの更新が必要かどうかが確認されると共に、その更新情報がＤＨＴのルーティングテーブルに従って他の参加ノードｎｎに伝達されるようになっている。これにより、ＤＨＴを最新の状態に保つことが可能となる。
【００３７】
更に、オーバーレイネットワーク９においては、様々なコンテンツ（例えば、映画や音楽等）データが複数の参加ノードｎｎに分散して保存（格納）されている。例えば、参加ノードｎ１には、タイトルがＸＸＸの映画のコンテンツデータが保存されており、一方、参加ノードｎ２には、タイトルがＹＹＹの映画のコンテンツデータが保存されるというように、互いに異なるコンテンツデータが、複数の参加ノードｎｎに分散されて保存される。
【００３８】
また、あるコンテンツデータは、１つの参加ノードｎｎに保存されているとは限らず、複数の参加ノードｎｎに同じコンテンツデータが保存されうる。これらのコンテンツデータには、夫々、コンテンツ名（タイトル）等が付与されている。
【００３９】
そして、このように分散保存されているコンテンツデータの所在を示す所在情報（例えば、コンテンツデータが保存されている参加ノードｎｎのＩＰアドレス等）もまた、複数の参加ノードｎｎに分散して保存されている。例えば、あるコンテンツデータのコンテンツ名（或いは、当該コンテンツデータの先頭数バイトでも良い）が、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化され（つまり、参加ノードｎｎのＩＰアドレスのハッシュ値と同一のＩＤ空間に配置）、そのハッシュ値（当該ハッシュ値がコンテンツＩＤとなる）と最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有する参加ノードｎｎ（当該ハッシュ値の管理元となる）に、当該コンテンツデータの所在情報が保存されることになる。つまり、同一のコンテンツデータ（コンテンツＩＤが同一）が、夫々、複数の参加ノードｎｎに保存されている場合であっても、かかるコンテンツデータの所在を示す所在情報（複数の参加ノードｎｎのＩＰアドレス等）は、１つの参加ノードｎｎで管理することができる（このようにコンテンツデータの所在を管理する参加ノードを、以下、「ルートノード」という）。なお、本実施形態においては、１のルートノードでは、１のコンテンツＩＤに対応するコンテンツデータの所在情報が保存される（つまり、ルートノードと上記所在情報とは１対１の関係にある）が、これに限定されるものではない）。
【００４０】
これにより、あるコンテンツデータを取得（ダウンロード）したいユーザが使用する例えば参加ノードｎ４は、当該コンテンツデータのコンテンツＩＤが付加されたクエリ（問合せ情報）を他の参加ノードｎｎに対して送出することにより、当該コンテンツＩＤが付加されたクエリは、いくつかの参加ノードｎｎを経由されて（各中継ノードにおいて、上記ＤＨＴのルーティングテーブルが参照されてコンテンツＩＤが転送される）そのコンテンツデータの所在を示す所在情報を保存しているルートノードｎ１０に辿り着き、当該ルートノードｎ１０から当該所在情報を取得（受信）することが可能となり、取得した所在情報に基づいて上記コンテンツデータを保存している例えば参加ノードｎ５に接続し、そこから当該コンテンツデータを取得（受信）することが可能になる。
【００４１】
なお、コンテンツＩＤがルートノードｎ１０に辿り着くまでの間に当該ルートノードｎ１０と同じ所在情報をキャッシュしている参加ノードｎｎから当該所在情報を取得（受信）されるようにしてもよい。
【００４２】
図２は、ＤＨＴのノードＩＤ空間において、参加ノードｎ４から送出されたクエリがルートノードｎ１０まで転送される様子の一例を示す図である。図２の例において、各中継ノードは、受信したクエリに付加されたコンテンツＩＤと、ＤＨＴのルーティングテーブルに登録されているノードＩＤとを比較して、次に転送すべき参加ノードｎｎを特定（例えば、コンテンツＩＤの上位数桁が一致するノードＩＤに対応する参加ノードｎｎのＩＰアドレスを特定）し、そこにクエリを転送することになる。
【００４３】
ここで、上記ＤＨＴのルーティングテーブルの一般的な考え方の一例について以下に説明する。
【００４４】
図３は、参加ノードｎ１が保持するＤＨＴのルーティングテーブルの一例を示す図であり、図４は、ＤＨＴのノードＩＤ空間の一例を示す概念図である。なお、図３及び図４の例においては、説明の便宜上、ノードＩＤのｂｉｔ長を２ｂｉｔ×３桁＝６ｂｉｔとし、各桁を４進数（０〜３の整数）で表している（実際には、もっと長いｂｉｔ長を用い、各桁も例えば４ｂｉｔに区切って０〜ｆの１６進数で表現する）。
【００４５】
図３の例において、ＤＨＴのルーティングテーブルは、レベル１〜レベル３のテーブルからなり（複数のレベルに区分されており）、各レベルのテーブルエントリーには、エリア毎に、ノードＩＤとこれに対応する参加ノードｎｎのＩＰアドレスが対応付けられて登録されている。各レベルのテーブルにおける各エリアは、ＤＨＴのノードＩＤ空間を分割することにより得られるエリアである。例えば、図４に示すように、レベル１では、ＤＨＴのノードＩＤ空間全体が４分割され、“０００”〜“０３３”のノードＩＤが存在するエリアを０ＸＸのエリア、“１００”〜“１３３” のノードＩＤが存在するエリアを１ＸＸのエリア、“２００”〜“２３３” のノードＩＤが存在するエリアを２ＸＸのエリア、“３００”〜“３３３” のノードＩＤが存在するエリアを３ＸＸのエリアとする。また、レベル２では、レベル１のエリア（つまり、０ＸＸ〜３ＸＸのエリア）が更に４分割、例えば１ＸＸのエリアが４分割され、“１００”〜“１０３” のノードＩＤが存在するエリアを１０Ｘのエリア、“１１０”〜“１１３” のノードＩＤが存在するエリアを１１Ｘのエリア、“１２０”〜“１２３” のノードＩＤが存在するエリアを１２Ｘのエリア、“１３０”〜“１３３” のノードＩＤが存在するエリアを１３Ｘのエリアとする。
【００４６】
そして、例えば、参加ノードｎ１のノードＩＤが“１２３”とすると、図３に示すように、かかる参加ノードｎ１のレベル１における１ＸＸのエリア（自己が存在するエリア）のテーブルエントリーには、自己のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）が登録され、自己が存在しないエリア（つまり、０ＸＸのエリア、２ＸＸのエリア、及び３ＸＸのエリア）には、夫々、他の任意の参加ノードｎｎのノードＩＤ及びＩＰアドレスが登録されている。
【００４７】
また、かかる参加ノードｎ１のレベル２における１２Ｘのエリア（自己が存在するエリア）のテーブルエントリーには、図３に示すように、自己のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）が登録され、自己が存在しないエリア（つまり、１０Ｘのエリア、１１Ｘのエリア、及び１３Ｘのエリア）には、夫々、他の任意の参加ノードｎｎのノードＩＤ及びＩＰアドレスが登録されている。
【００４８】
更に、かかる参加ノードｎ１のレベル３には、図３に示すように、１２Ｘのエリアに存在する全ての参加ノードｎｎのノードＩＤ及びＩＰアドレスが登録される。
【００４９】
なお、図３及び図４の例では、ノードＩＤのｂｉｔ長を３桁×２ｂｉｔとしたので、レベル１〜３の３レベル分のテーブルで網羅できるが、ノードＩＤのｂｉｔ長が増せば、その分のテーブルが必要となる（例えば、ノードＩＤのｂｉｔ長を１６桁×４ｂｉｔとした場合、１６レベル分のテーブルが必要となる）。
【００５０】
このように、本実施形態におけるＤＨＴのルーティングテーブルでは、レベルが上がるほど、エリアが狭まっていくようになっており、このように構成されたルーティングテーブルにより、例えば参加ノードｎ１から送出されたクエリがルートノードまで効率良く転送されることになる。
【００５１】
そして、このようなＤＨＴのルーティングテーブルは、未参加ノードｎｍが、オーバーレイネットワーク９に参加するために、任意の参加ノードｎｎに対して、自己のノードＩＤを付加した参加要求情報を送信することによって生成されることになる。
【００５２】
このようなＤＨＴのルーティングテーブルが生成されるまでの流れについて以下に説明する。
【００５３】
図５は、ＤＨＴのルーティングテーブルが生成されるまでの流れの一例を示す概念図である。
【００５４】
例えば、図５に示すように、未参加ノードｎ１６は、自己のＩＰアドレスを上記ハッシュ関数によりハッシュ化してノードＩＤ（例えば、“３３３”とする）を生成し、当該ノードＩＤ及び自己（未参加ノードｎ１６）のＩＰアドレスが付加された参加要求情報を参加ノードｎ１に送信する。
【００５５】
これに対して、参加ノードｎ１は、当該参加要求情報を受信し、ＤＨＴのルーティングテーブル５１を参照して、参加要求情報に付加されたノードＩＤ“３３３”と最も近いノードＩＤ“３０１”を有する参加ノードｎ１１のＩＰアドレスを取得し、これに基づき、ノードＩＤ“３３３” 及び未参加ノードｎ１６のＩＰアドレス が付加された参加要求情報を参加ノードｎ１１に転送する。
【００５６】
これに対して、参加ノードｎ１１は、当該参加要求情報を受信し、ＤＨＴのルーティングテーブル５２を参照して、参加要求情報に付加されたノードＩＤ“３３３”と最も近いノードＩＤ“３３２”を有する参加ノードｎ９のＩＰアドレスを取得し、これに基づき、ノードＩＤ“３３３”及び未参加ノードｎ１６のＩＰアドレスが付加された参加要求情報を参加ノードｎ９に転送する。
【００５７】
これに対して、参加ノードｎ９は、当該参加要求情報を受信し、ＤＨＴのルーティングテーブル５３におけるレベル３のテーブルにおけるノードＩＤ“３３３”に対応付けて、未参加ノードｎ１６のＩＰアドレスを登録する。つまり、参加ノードｎ９は、当該ノードＩＤ“３３３”の管理元となる。
【００５８】
以上の流れの過程において、図５に示すように、当該参加要求情報を受信した参加ノードｎ１、参加ノードｎ１１、及び参加ノードｎ９は、未参加ノードｎ１６に対して、ＤＨＴのルーティングテーブルの一部を（参加ノードｎ１はレベル１のテーブルを、参加ノードｎ１１はレベル２のテーブルを、参加ノードｎ９はレベル３のテーブルを）含む返信情報を、夫々送信する。
【００５９】
これに対して、未参加ノードｎ１６は、送信されてきた各ＤＨＴのルーティングテーブルを含む返信情報を受信して、当該返信情報に含まれる各ルーティングテーブルに基づいて、自己が使用するべきＤＨＴのルーティングテーブル５４を生成する。このとき、各エントリーに対して、別の既知のノード情報を登録できる場合は、エントリーを書き換えても良い。図５の例では、参加ノードｎ１におけるレベル１のテーブルエントリー５１ａ（ノードＩＤ“３０１”及びこれに対応するＩＰアドレス）については、自己のノードＩＤ“３３３”及びこれに対応するＩＰアドレスと入れ替えている。なお、図５の例では、各参加ノードｎｎが別々のレベルのテーブルを返しているが、どの参加ノードｎｎからも全レベルのテーブル（すなわちルーティングテーブル全体）を返すようにして、未参加ノードｎｍがそれぞれのテーブルからテーブルエントリーを適宜、取捨選択して自己の新たなテーブルを作り上げても良い。
【００６０】
こうして生成されたＤＨＴのルーティングテーブル５４を得た未参加ノードｎ１６は、参加ノードｎ１６としてオーバーレイネットワーク９に加わるのである。
【００６１】
ところで、このように生成されるＤＨＴのルーティングテーブルは、極力、ネットワーク８への負荷（ノードＩＤを含む情報がネットワーク８上を伝送されることによる負荷）を軽減するものであることが望ましい。本実施形態においては、ネットワーク８への負荷の軽減可能なＤＨＴのルーティングテーブルを生成するために、任意の複数の参加ノードｎｎに向けて参加要求情報が送信し、そのうち、ネットワーク８上のローカリティ（地域性）が考慮された参加ノードｎｎから上記返信情報が返信されることを特徴とする。
【００６２】
例えば、図１の下部枠１０１内において、同一の回線事業者（例えば、回線事業者５ａ）に属する（符号１０１ａ内の）参加ノードｎ１と未参加ノードｎ１６は、ローカリティ（地域性）が高いということができ、一方、当該参加ノードｎ１と、異なる回線業者（例えば、回線事業者５ｂ）に属する（符号１０１ｂ内の）未参加ノードｎ２１は、ローカリティ（地域性）が低い（つまり、一旦、ＩＳＰ４ａ、ＩＸ３、及びＩＳＰ４ｂを経由することになる）ということができる。なお、図１の例では、同一の回線事業者に属する参加ノードｎ１と未参加ノードｎ１６には同一の地域番号（Ａ１，Ａ２，Ａ３）が付されている。
【００６３】
そして、ネットワーク８上のローカリティ（地域性）が考慮された参加ノードｎｎとは、未参加ノードｎｍとローカリティ（地域性）が高い参加ノードｎｎを意味し、つまり、未参加ノードｎｍとネットワーク的に近い（言い換えれば、未参加ノードｎｍとの間の通信経路上における通信負荷が相対的に小さい）参加ノードｎｎを意味することなる。
【００６４】
未参加ノードｎｍが、ネットワーク８上のローカリティ（地域性）が考慮された参加ノードｎｎからの返信情報を受信し、これに含まれるＤＨＴのルーティングテーブルに基づき、自己が使用するべきＤＨＴのルーティングテーブル５４を生成していけば、例えばネットワーク的に互いに近い関係にある参加ノードｎｎ間でコンテンツＩＤ及びノードＩＤが転送されるようになり、その結果、ネットワーク８全体に与える負荷を低減することが可能となる。
【００６５】
なお、上記流れは、未参加ノードｎ１６が、新たにオーバーレイネットワーク９に参加する場合ばかりでなく、一度脱退した後、再度参加する場合にも適用することができる。
【００６６】
次に、図６を参照して、参加ノードｎｎ及び未参加ノードｎｍの構成及び機能について説明する。
【００６７】
図６は、参加ノードｎｎ及び未参加ノードｎｍの概要構成例を示す図である。
【００６８】
参加ノードｎｎ及び未参加ノードｎｍは、夫々、図６に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データ及びプログラムを記憶するＲＯＭ等から構成されたコンピュータとしての制御部１１と、各種データ（例えば、コンテンツデータ、所在情報、ＤＨＴ）及びプログラム等を記憶保存（格納）するためのＨＤＤ等から構成された記憶部１２と、受信されたコンテンツデータを一時蓄積するバッファメモリ１３と、コンテンツデータに含まれるエンコードされたビデオデータ（映像情報）及びオーディオデータ（音声情報）等をデコード（データ伸張や復号化等）するデコーダ部１４と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部１５と、当該映像処理部１５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部１６と、上記デコードされたオーディオデータをアナログオーディオ信号にＤ（Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する音声処理部１７と、当該音声処理部１７から出力されたオーディオ信号を音波として出力するスピーカ１８と、ネットワーク８を通じて他の参加ノードｎｎ又は未参加ノードｎｍとの間の情報の通信制御を行うための通信部２０と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部１１に対して与える入力部（例えば、キーボード、マウス、或いは、操作パネル等）２１と、を備えて構成され、制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４、及び通信部２０は、バス２２を介して相互に接続されている。
【００６９】
このような構成において、未参加ノードｎｍにおける制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラム（本発明のコンピュータプログラムを含む）を読み出して実行することにより、全体を統括制御すると共に、本発明の装置情報取得手段、到達可能範囲設定手段、参加要求情報送信手段、返信情報受信手段、及び転送先テーブル生成手段等として機能し、後述する各種処理を行うようになっている。
【００７０】
また、参加ノードｎｎにおける制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラムを読み出して実行することにより、全体を統括制御すると共に、オーバーレイネットワーク９においてノードＩＤ及びコンテンツＩＤの送受信、コンテンツデータの送受信、所在情報の送受信等の各種処理を行い、更には、未参加ノードｎｍ等からの検索情報、参加要求情報等を受信し、後述する各種処理を行うようになっている。
【００７１】
なお、上記コンピュータプログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしてもよいし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしてもよい。
【００７２】
［２．コンテンツ配信システムの動作］
次に、未参加ノードｎｍがオーバーレイネットワーク９に新たに参加する場合におけるコンテンツ配信システムＳの動作について、実施例１乃至３に分けて夫々説明する。
【００７３】
（実施例１）
先ず、図７乃至図１２を参照して、実施例１におけるコンテンツ配信システムＳの動作について説明する。
【００７４】
この実施例１は、全ての参加ノードｎｎへの装置情報（リンク情報）が記述された参加ノードリストを管理する管理サーバＳＡがネットワーク８に接続されている場合の動作例である。
【００７５】
図７（Ａ）は、ノード（参加ノードｎｎと未参加ノードｎｍとで共通）のメインルーチンを示すフローチャートであり、図７（Ｂ）は、管理サーバＳＡのメインルーチンを示すフローチャートである。
【００７６】
また、図８（Ａ）は、実施例１において、図７（Ａ）に示すステップＳ１における参加処理の詳細を示すフローチャートであり、図８（Ｂ）は、実施例１において、装置情報要求メッセージを受信した場合における管理サーバＳＡの処理（ステップＳ１０４におけるメッセージ毎の処理）を示すフローチャートであり、図８（Ｃ）は、実施例１において、装置情報メッセージを受信した場合における未参加ノードｎｍの処理（ステップＳ６におけるメッセージ毎の処理）を示すフローチャートであり、図８（Ｄ）は、実施例１において、参加要求メッセージを受信した場合における参加ノードｎｎの処理（ステップＳ６におけるメッセージ毎の処理）を示すフローチャートであり、図８（Ｅ）は、実施例１において、返信メッセージを受信した場合における未参加ノードｎｍの処理（ステップＳ６におけるメッセージ毎の処理）を示すフローチャートであり、図８（Ｆ）は、実施例１において、登録メッセージを受信した場合における管理サーバＳＡの処理（ステップＳ１０４におけるメッセージ毎の処理）を示すフローチャートである。
【００７７】
また、図９（Ａ）は、図８（Ｅ）に示すステップＳ７１におけるルーティングテーブルの生成処理の詳細を示すフローチャートであり、図９（Ｂ）は、返信メッセージ受信タイマーが起動した場合における未参加ノードｎｍの処理を示すフローチャートである。
【００７８】
また、図１０乃至図１２は、実施例１において、未参加ノード１６がオーバーレイネットワーク９に新たに参加する場合の様子の一例を示す概念図である。
【００７９】
図７（Ａ）の処理は、例えば未参加ノードｎｍの電源が投入（電源ＯＮ）された場合に開始され、先ず、制御部１１は、オーバーレイネットワーク９へ参加するための参加処理（詳細は後述）を行う（ステップＳ１）。次いで、制御部１１は、電源ＯＦＦになったか否かを判別し（ステップＳ２）、電源ＯＦＦになった場合には（ステップＳ２：Ｙ）、当該処理を終了する。一方、電源ＯＦＦでない場合には（ステップＳ２：Ｎ）、制御部１１は、ユーザによる入力部２１からの操作があるか否かを判別し（ステップＳ３）、操作がある場合には（ステップＳ３：Ｙ）、当該操作毎の処理（操作信号に応じた処理）を実行する（ステップＳ４）。一方、入力部２１からの操作がない場合には（ステップＳ３：Ｎ）、制御部１１は、メッセージ（例えば、後述する装置情報メッセージ、参加要求メッセージ、返信メッセージ等）の受信があるか否かを判別し（ステップＳ５）、当該受信がある場合には（ステップＳ５：Ｙ）、当該メッセージ毎の処理（詳細は後述）を行う（ステップＳ６）。一方、メッセージの受信がない場合には（ステップＳ５：Ｎ）、ステップＳ２の処理に戻る。こうして上記処理は、未参加ノードｎｍ（処理の途中から参加ノードｎｎになる）において、電源ＯＦＦとなるまで繰り返し実行される。
【００８０】
一方、図７（Ｂ）の処理は、例えば管理サーバＳＡの電源が投入（電源ＯＮ）された場合に開始され、先ず、管理サーバＳＡは、参加ノードリストを初期化し（ステップＳ１０１）、電源ＯＦＦになったか否かを判別し（ステップＳ１０２）、電源ＯＦＦになった場合には（ステップＳ１０２：Ｙ）、当該処理を終了する。一方、電源ＯＦＦでない場合には（ステップＳ１０２：Ｎ）、管理サーバＳＡは、メッセージ（例えば、後述する装置情報要求メッセージ等）の受信があるか否かを判別し（ステップＳ１０３）、当該受信がある場合には（ステップＳ１０３：Ｙ）、当該メッセージ毎の処理（詳細は後述）を行う（ステップＳ１０４）。一方、メッセージの受信がない場合には（ステップＳ１０３：Ｎ）、ステップＳ１０２の処理に戻る。こうして上記処理は、管理サーバＳＡにおいて、電源ＯＦＦとなるまで繰り返し実行される。
【００８１】
次に、上記ステップＳ１における参加処理においては、図８（Ａ）に示すように、未参加ノードｎｍ（ここでは、図１０に示す未参加ノードｎ１６とする）の制御部１１は、先ず、初期化を行い、登録フラグを“ｆａｌｓｅ”に、“ｔｔｌ”（変数）を例えば“２”に、夫々設定する（ステップＳ１１）。次いで、制御部１１は、管理サーバＳＡのＩＰアドレス等（例えば、製品出荷時に記憶部１２に記憶しておく）を取得し（ステップＳ１２）、オーバーレイネットワーク９への参加要求を示す参加要求情報としての参加要求メッセージを送信すべき複数の参加ノードｎｎの装置情報を要求する装置情報要求メッセージ（例えば、自己（未参加ノードｎ１６）のＩＰアドレスを送り元アドレスとし、管理サーバＳＡのＩＰアドレスを宛先アドレスとした装置情報要求パケット）を、通信部２０及びネットワーク８を介して管理サーバＳＡに対して送信する（ステップＳ１３：図１０（Ａ））。
【００８２】
一方、管理サーバＳＡは、未参加ノードｎ１６から送信されてきた装置情報要求メッセージを受信すると、図８（Ｂ）に示す処理を開始し、先ず、参加ノードリストから所定数（例えば、１０個）の参加ノードｎｎの装置情報を選択する（ステップＳ１１０）。例えば、参加ノードリストからランダムに所定数の参加ノードｎｎが選択される。なお、オーバーレイネットワーク９への参加期間（登録期間）に応じた重み付けランダムにより所定数の参加ノードｎｎが選択されるようにしても良い。例えば、オーバーレイネットワーク９への参加期間（登録期間）が長いほど信頼性が高いといえるため、当該参加期間（登録期間）が長いほど選択される確率を高くする。こうすると、システム全体で見た安定性は向上するが、各参加ノードｎｎが持つＤＨＴ中に、参加期間が長い参加ノードｎｎへのリンクが多くなり、そのノードが脱退したときの悪影響が大きくなる。或いは逆に、未だ選択されていない参加ノードｎｎを優先的に選択させるために、参加期間（登録期間）が短いほど選択される確率を高くしても良い。こうすると、特定の参加ノードｎｎへのリンク集中は防げるが、ＤＨＴ上に登録された情報の更新は頻繁になる。一長一短があるので、システムの用途、参加ノードｎｎの使われ方（特に電源ＯＮ・ＯＦＦの頻度分布）に応じて、制御方法を変更すると良い。また、過去に選択された回数（上記選択された回数を、各参加ノードｎｎ毎にカウントしておく）に応じた重み付けランダムにより所定数の参加ノードｎｎが選択されるようにしても良い。例えば、過去に選択された回数が多いほど信頼性が高いといえるため、過去に選択された回数が多いほど選択される確率を高くする。或いは、未だ選択されていない参加ノードｎｎを優先的に選択させるために、過去に選択された回数が少ないほど選択される確率を高くしても良い。
【００８３】
次いで、管理サーバＳＡは、上記選択した複数の参加ノードｎｎの装置情報を付加した装置情報メッセージ（例えば、自己（管理サーバＳＡ）のＩＰアドレスを送り元アドレスとし、未参加ノードｎ１６のＩＰアドレスを宛先アドレスとした装置情報パケット）を、ネットワーク８を介して未参加ノードｎ１６に対して送信する（ステップＳ１１１：図１０（Ｂ））。
【００８４】
一方、未参加ノードｎ１６は、管理サーバＳＡから送信されてきた装置情報メッセージを受信すると、図８（Ｃ）に示す処理を開始し、先ず、未参加ノードｎ１６の制御部１１は、装置情報取得手段として、装置情報メッセージに付加された複数の参加ノードｎｎの装置情報を取得する（ステップＳ６１）。
【００８５】
次いで、未参加ノードｎ１６の制御部１１は、到達可能範囲設定手段として、ＴＴＬ（Time To Live）値を上記“ｔｔｌ（例えば、２）”に設定し、オーバーレイネットワーク９への参加要求を示す参加要求メッセージに対して当該ＴＴＬ値を設定（付加）して自己（未参加ノードｎ１６）のノードＩＤを付加し、参加要求情報送信手段として、当該参加要求メッセージ（例えば、自己（未参加ノードｎ１６）のＩＰアドレスを送り元アドレスとし、上記取得された各装置情報により特定される各参加ノードｎｎのＩＰアドレスを宛先アドレスとした参加要求パケット）を、通信部２０及びネットワーク８を介して各参加ノードｎｎに対して送信する（ステップＳ６２：図１０（Ｃ））。次いで、未参加ノードｎ１６の制御部１１は、所定時間後（例えば、１〜１０秒後）に起動する返信メッセージ受信タイマーをセット（カウント開始）する（ステップＳ６３）。かかる返信メッセージ受信タイマーは、後述する処理で解除（リセット）されなければ、図９(Ａ)に示す処理が開始されることになる。
【００８６】
ここで、ＴＴＬは、ネットワーク８上を伝送される参加要求メッセージの到達可能範囲を表す情報の一例であり、最大“２５５”までの整数値で表され、メッセージ（パケット）がルータ等を１回経由（転送）する度に１減少するようになっている。なお、ＴＴＬ値が“０”になったパケットはその時点で廃棄され、廃棄通知がパケットの送信元に届くようになっている。従って、受信されたメッセージ（パケット）のＴＴＬ値が大きいほど、それだけ転送回数（ＨＯＰ数）が少ないということになるので、ネットワーク８の通信経路における通信負荷に与える影響も少なくなる。
【００８７】
図１０（Ｃ）は、参加要求メッセージが参加ノードｎ２、参加ノードｎ４、参加ノードｎ５、及び参加ノードｎ９に向かって送出されるが、参加ノードｎ４、参加ノードｎ５、及び参加ノードｎ９への参加要求メッセージは経路の途中でＴＴＬ値が“０”になったことにより届かず、結局、参加ノードｎ２にのみに参加要求メッセージが届いている例を示している。
【００８８】
こうして、参加ノードｎ２は、未参加ノードｎ１６から送信されてきた参加要求メッセージを受信すると、図８（Ｄ）に示す処理を開始し、先ず、参加ノードｎ２の制御部１１は、参加要求メッセージ中の転送回数を基に、返信すべきルーティングテーブルのレベル（レベル番号）を決定する（ステップＳ６５）。
【００８９】
ここで、参加要求メッセージには、当該メッセージの転送回数をカウントするための転送カウンタが付加されており、当該メッセージが、ＤＨＴルーティングにより参加ノードｎｎにより転送される度に、当該転送カウンタが１カウントアップ（１増加）されるようになっている。参加ノードｎ２が受信した参加要求メッセージの転送カウンタは、未だ転送されていないので“０”となっているが、その後、転送される度に１ずつ増すことになる（例えば、図１１（Ｄ）に示す参加ノードｎ６が受信した参加要求メッセージの転送カウンタは、“１”である。
【００９０】
そして、例えば、このような転送カウンタにて示される転送回数が“０”の場合には、レベル１のテーブル（１行分）が、転送回数が“１”の場合にはレベル２のテーブルが、転送回数が“２”の場合にはレベル３のテーブルが、夫々、返信されるテーブルとして決定されることになる。
【００９１】
次いで、参加ノードｎ２の制御部１１は、自己のＤＨＴのルーティングテーブルから、上記決定したレベル（レベル番号）のテーブルを取得し、返信情報としての返信メッセージに対して当該取得したレベル（レベル番号）のテーブルを付加し（添付し）、この返信メッセージ（例えば、自己（参加ノードｎ２）のＩＰアドレスを送り元アドレスとし、未参加ノードｎ１６のＩＰアドレスを宛先アドレスとした返信パケット）を、通信部２０及びネットワーク８を介して未参加ノードｎ１６に対して送信（返信）する（ステップＳ６６：図１１（Ｅ））。
【００９２】
次いで、参加ノードｎ２の制御部１１は、ＤＨＴのルーティングテーブルを参照して、受信した参加要求メッセージに付加されている未参加ノードｎ１６のノードＩＤに基づき、転送先を検索し（ステップＳ６７）、転送先があるか否かを判別する（ステップＳ６８）。例えば、自己（参加ノードｎ２）が、上記参加要求メッセージに付加されたノードＩＤと最も近いノードＩＤを有する場合には、ルーティングテーブル中で上記参加要求メッセージに付加されたノードＩＤに最も近いテーブルエントリーを検索すると、その転送先は自分自身を指すことになり（つまり、自己が参加要求メッセージに付加されたノードＩＤの管理元である）転送先がないと判別され（ステップＳ６８：Ｎ）、図７（Ａ）に示す処理に戻る。一方、最も近いノードＩＤを有しない（つまり、最も近いノードＩＤを有する参加ノードｎｎが他にある）場合には、検索したテーブルエントリーには他の参加ノードｎｎのＩＰアドレスが見つかり、転送先があると判別され（ステップＳ６８：Ｙ）、ステップＳ６９に移行する。
【００９３】
ステップＳ６９では、参加ノードｎ２の制御部１１は、参加要求メッセージ中の転送カウンタを１カウントアップ（１増加）させ、当該参加要求メッセージに付加されたノードＩＤと最も近いノードＩＤに対応するＩＰアドレスをＤＨＴのルーティングテーブルから取得し、上記ノードＩＤが付加された参加要求メッセージに対して未参加ノードｎ１６のＩＰアドレスを付加し、当該参加要求メッセージ（自己（参加ノードｎ２）のＩＰアドレスを送り元アドレス及び当該ルーティングテーブルから取得されたＩＰアドレスを宛先アドレスとした参加要求パケット）を、通信部２０及びネットワーク８を介して、上記ルーティングテーブルから取得したＩＰアドレスに対応する参加ノードｎ６に対して送信（転送）し（図１１（Ｄ））、図７（Ａ）に示す処理に戻る。
【００９４】
こうして、転送された参加要求メッセージを受信した参加ノードｎｎにおいても、図８（Ｄ）に示す処理が行われ、参加要求メッセージに付加されたノードＩＤの管理元である参加ノードｎ１４に至るまで順次転送され、当該参加要求メッセージを受信した夫々の参加ノードｎ６，ｎ１３及びｎ１４は、転送カウンタの値に応じたレベル（レベル番号）のテーブルを付加した返信メッセージを、未参加ノードｎ１６に対して送信（返信）することになる（図１１（Ｅ））。
【００９５】
一方、未参加ノードｎ１６は、返信情報受信手段として、各参加ノードｎｎ（例えば、参加ノードｎ２）から送信されてきた返信メッセージを受信すると、図８（Ｅ）に示す処理を開始し、先ず、未参加ノードｎ１６の制御部１１は、転送先テーブル生成手段として、上記受信された返信メッセージに付加されたルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルを生成するルーティングテーブルの生成処理を行う（ステップＳ７１）。
【００９６】
このルーティングテーブルの生成処理では、図９（Ａ）に示すように、未参加ノードｎ１６の制御部１１は、先ず、受信した返信メッセージに付加されたテーブルのレベル（レベル番号）を読み取り（ステップＳ７１１）、読み取ったレベル（レベル番号）のテーブルは、自己のルーティングテーブルに登録されているか否かを判別し（ステップＳ７１２）、登録されていない場合には（ステップＳ７１２：Ｎ）、当該レベル（レベル番号）のテーブルを自己のルーティングテーブルの対応箇所に登録し（ステップＳ７１３）、当該処理を終了し、図８（Ｅ）に示す処理に戻る。
【００９７】
上記ルーティングテーブルの生成処理が終了し、図８（Ｅ）に示すステップＳ７２では、未参加ノードｎ１６の制御部１１は、登録フラグが“ｆａｌｓｅ”であるか否かを判別し、登録フラグが“ｆａｌｓｅ”でない、つまり、“ｔｒｕｅ”である場合には（ステップＳ７２：Ｎ）、図７（Ａ）に示す処理に戻る。一方、登録フラグが“ｆａｌｓｅ”である場合には（ステップＳ７２：Ｙ）、当該制御部１１は、自己（未参加ノードｎ１６）のノードＩＤが付加された登録メッセージ（自己（参加ノードｎ２）のＩＰアドレスを送り元アドレス及び管理サーバＳＡのＩＰアドレスを宛先アドレスとした登録パケット）を、通信部２０及びネットワーク８を介して管理サーバＳＡに対して送信する（ステップＳ７３）。
【００９８】
次いで、未参加ノードｎ１６の制御部１１は、登録フラグを“ｔｒｕｅ”に設定し（ステップＳ７４）、返信メッセージ受信タイマーを解除する（ステップＳ７５）。登録フラグは、未参加ノードがテーブルを（部分的にでも）生成してオーバーレイネットワーク９に参加したことを意味するフラグで、これが“ｔｒｕｅ”になると、後述のタイマーによるリトライ処理（ｔｔｌを増やして参加要求メッセージを再送信する処理：Ｓ６３４）が止まるようになっている。
【００９９】
一方、管理サーバＳＡは、未参加ノードｎ１６から送信されてきた登録メッセージを受信すると、図８（Ｆ）に示す処理を開始し、当該登録メッセージの送信元の未参加ノードｎ１６のノードＩＤ及びＩＰアドレス等を装置情報として参加ノードリストに登録する（ステップＳ１１５）する。こうして、未参加ノードｎ１６のオーバーレイネットワーク９への参加が完了する。
【０１００】
ところで、上記返信メッセージは、例えば図１２（Ａ）に示すように、参加要求メッセージが複数の参加ノードｎｎ（図１２（Ａ）の例では、参加ノードｎ２及びｎ９）に届き、夫々の参加ノードｎｎ及び当該参加ノードｎｎから転送された参加要求メッセージを受信した参加ノードｎｎから複数の返信メッセージが送信される（図１２（Ｂ）、（Ｃ））場合が想定される。この場合、同じ転送回数である参加要求メッセージを受信した複数の参加ノードｎｎ（例えば、図１２（Ｂ）に示す参加ノードｎ２及びｎ９）から、同一レベルのテーブルが付加された返信メッセージが返信されることになるが、図９（Ａ）に示すルーティングテーブルの生成処理において、ステップＳ７１２にて後から受信されたレベルのテーブルは廃棄される（つまり、先着優先で、そのレベルのテーブルが登録される）。
【０１０１】
一方、参加要求メッセージが何れの参加ノードに届かず（経路の途中でＴＴＬ値が“０”になったことより）、返信メッセージが受信されない場合も想定されるが、この場合、上記ステップＳ６３においてセットされた返信メッセージ受信タイマーが起動し、図９（Ｂ）に示す処理が開始される。先ず、未参加ノードｎ１６の制御部１１は、登録フラグが“ｆａｌｓｅ”であるか否かを判別し（ステップＳ６３１）、登録フラグが“ｆａｌｓｅ”でない場合（ステップＳ６３１：Ｎ）、既に参加登録が完了しているので、当該処理を終了する。
【０１０２】
一方、登録フラグが“ｆａｌｓｅ”である場合（ステップＳ６３１：Ｙ）、当該制御部１１は、“ｔｔｌ”を１カウントアップ（１増加）し（ステップＳ６３２）、上記ステップＳ６２において設定したＴＴＬ値が２５５以下であるか否かを判別する（ステップＳ６３３）。そして、ＴＴＬ値が２５５以下でない場合には（ステップＳ６３３：Ｎ）、当該処理を終了する。一方、ＴＴＬ値が２５５以下である場合には（ステップＳ６３３：Ｙ）、当該制御部１１は、ＴＴＬ値を、上記１カウントアップされた“ｔｔｌ（例えば、３）”に変更設定し、参加要求メッセージに対して当該ＴＴＬ値を設定して自己（未参加ノードｎ１６）のノードＩＤを付加し、当該参加要求メッセージを、通信部２０及びネットワーク８を介して各参加ノードｎｎ（上記ステップＳ６１にて取得された装置情報に対応する参加ノードｎｎ）に対して再送信する（ステップＳ６３４）。つまり、未参加ノードｎ１６は、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合には、当該参加要求メッセージの到達可能範囲を表す情報（ＴＴＬ値）を変更設定（ここでは、前回設定したＴＴＬ値に基づく到達可能範囲よりも広くなるようにＴＴＬ値を変更設定する）し、当該変更設定されたＴＴＬ値を参加要求メッセージに設定（付加）し、当該参加要求メッセージを、再度、同じ各参加ノードｎｎに対して送信することになる。これにより、返信メッセージが受信されない場合、参加要求メッセージの到達可能範囲を少しずつ広げて（ＴＴＬ値を少しずつ増加させて）、参加要求メッセージを再送信できるので、確実に、かつ、最適な参加ノードｎｎのルーティングテーブルを取得することができる。
【０１０３】
なお、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合、未参加ノードｎ１６は、ＴＴＬ値を増加させずに、参加要求メッセージを、再度、同じ各参加ノードｎｎに対して送信するように構成しても良い。
【０１０４】
次いで、当該制御部１１は、所定時間後（例えば、１〜１０秒後）に起動する返信メッセージ受信タイマーをセット（カウント開始）する（ステップＳ６３５）。かかる返信メッセージ受信タイマーは、上記ステップＳ６３と同様、解除（リセット）されなければ、図９（Ａ）に示す処理が開始されることになる。
【０１０５】
以上説明したように、上記実施例１によれば、未参加ノードｎｍが、参加要求メッセージの到達可能範囲を表す情報としてのＴＴＬ値を低く設定し、当該設定したＴＴＬ値を参加要求メッセージに付加して、管理サーバＳＡから通知された複数の参加ノードｎｎに対して送信し、上記参加要求メッセージを受信することができた（つまり、よりネットワーク的に近い（例えば、ＨＯＰ数が少ない））参加ノードｎｎから送信されてきた返信メッセージに含まれるルーティングテーブルに基づいて自己が使用するべきルーティングテーブルを生成して、オーバーレイネットワーク９に参加するようにしたので、ネットワーク８上のローカリティ（地域性）が考慮されたオーバーレイネットワーク９を構築することが可能となり、ネットワーク８への余分な負荷を軽減することができる（第１の効果）。
【０１０６】
また、未参加ノードｎ１６は、複数の参加ノードｎｎからの返信メッセージに含まれる夫々のルーティングテーブルのうち、同一レベルのルーティングテーブルが複数あるとき、当該同一レベルの複数のルーティングテーブルのうち、先着優先で受信されたルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成するようにしたので、自分自身から見てよりネットワーク負荷の少ないところに位置する参加ノードｎｎのルーティングテーブルが優先して登録されることになり、ルーティングテーブルもローカリティ（地域性）が考慮され、より一層、ネットワーク８上のローカリティ（地域性）が考慮されたオーバーレイネットワーク９を構築することが可能となる（第２の効果）。
【０１０７】
また、未参加ノードｎ１６は、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合には、当該参加要求メッセージの到達可能範囲を表す情報（ＴＴＬ値）を変更設定（ここでは、前回設定したＴＴＬ値に基づく到達可能範囲よりも広くなるようにＴＴＬ値を変更設定する）し、当該変更設定されたＴＴＬ値を参加要求メッセージに設定（付加）して、再度、同じ各参加ノードｎｎに対して送信するようにしたので、確実に、かつ、最適な参加ノードｎｎのルーティングテーブルを取得することができ、ネットワーク８上のローカリティ（地域性）が考慮されたオーバーレイネットワーク９を構築することが可能となる（第３の効果）。
【０１０８】
また、管理サーバＳＡは、全ての参加ノードｎｎの装置情報が記述された参加ノードリストだけを管理し、複数の参加ノードｎｎを選定して未参加ノードｎ１６に通知するだけでよいので、管理サーバＳＡが未参加ノードｎｍにネットワーク的に近い参加ノードｎｎを認識しておく必要がなく、したがって、管理サーバＳＡの管理コストを低減することができる（第４の効果）。
【０１０９】
（実施例２）
次に、図１３等を参照して、実施例２におけるコンテンツ配信システムＳの動作について説明する。
【０１１０】
この実施例２は、実施例１とは異なり、全ての参加ノードｎｎへの装置情報を管理する管理サーバがネットワーク８に接続されていない場合の例である。
【０１１１】
なお、この実施例２において、ノード（参加ノードｎｎと未参加ノードｎｍとで共通）のメインルーチンは、図７（Ａ）に示す通りであり、実施例１と同様である。
【０１１２】
図１３（Ａ）は、実施例２において、図７（Ａ）に示すステップＳ１における参加処理の詳細を示すフローチャートであり、図１３（Ｂ）は、実施例２において、参加要求メッセージを受信した場合における参加ノードｎｎの処理（ステップＳ６におけるメッセージ毎の処理）を示すフローチャートであり、図１３（Ｃ）は、実施例２において、返信メッセージを受信した場合における未参加ノードｎｍの処理（ステップＳ６におけるメッセージ毎の処理）を示すフローチャートである。なお、図１３（Ａ）乃至（Ｃ）において、図８（Ａ）乃至（Ｅ）における同一の処理については、同一の符号を付している。
【０１１３】
図１３（Ａ）に示す参加処理おいては、実施例１と同様、未参加ノードｎｍの制御部１１は、先ず、初期化を行い、登録フラグを“ｆａｌｓｅ”に、“ｔｔｌ”（変数）を例えば“２”に、夫々設定する（ステップＳ２１）。
【０１１４】
次いで、当該制御部１１は、複数の専用参加ノードｎｎの装置情報（ＩＰアドレス等を含む）を取得する（ステップＳ２２）。当該専用参加ノードｎｎとは、例えば常時電源が入っており、オーバーレイネットワーク９に参加している信頼性の高い参加ノードｎｎであり、かかる複数の専用参加ノードｎｎの装置情報は、例えば、予め未参加ノードｎｍ内に記憶されている（例えば、製品出荷時に設定しておく）。
【０１１５】
次いで、当該制御部１１は、ＴＴＬ値を上記“ｔｔｌ（例えば、２）”に設定し、参加要求メッセージに対して当該ＴＴＬ値を設定（付加）して自己（未参加ノードｎ１６）のノードＩＤを付加し、当該参加要求メッセージ（例えば、自己（未参加ノードｎ１６）のＩＰアドレスを送り元アドレスとし、上記取得された各装置情報により特定される各専用参加ノードｎｎのＩＰアドレスを宛先アドレスとした参加要求パケット）を、通信部２０及びネットワーク８を介して各専用参加ノードｎｎに対して送信する（ステップＳ２３）。
【０１１６】
次いで、未参加ノードｎ１６の制御部１１は、実施例１と同様、所定時間後（例えば、１〜１０秒後）に起動する返信メッセージ受信タイマーをセット（カウント開始）する（ステップＳ２４）。
【０１１７】
こうして、実施例１と同様、経路の途中でＴＴＬ値が“０”にならずに参加要求メッセージを受信することができた専用参加ノードｎｎは、未参加ノードｎｍから送信されてきた参加要求メッセージを受信すると、図１３（Ｂ）に示す処理を開始することになる。なお、図１３（Ｂ）に示す処理は、図８（Ｄ）に示す処理と同様であるので、重複する説明は省略する。
【０１１８】
そして、未参加ノードｎｍが、各専用参加ノードｎｎから送信されてきた返信メッセージを受信すると、図１３（Ｃ）に示す処理を開始することになる。なお、図１３（Ｃ）に示すステップＳ７１におけるルーティングテーブル生成処理は、図９（Ａ）に示す処理の通りであり、実施例１と同様であるので、重複する説明は省略する。また、実施例２においても、参加要求メッセージが何れの参加ノードに届かなかった場合、上記ステップＳ２４においてセットされた返信メッセージ受信タイマーが起動し、図９（Ｂ）に示す処理が開始される。
【０１１９】
以上説明したように、上記実施例２によれば、実施例１における第１〜第３の効果を奏することに加えて、管理サーバＳＡを設けなくとも、未参加ノードｎｍとネットワーク的に近い参加ノードｎｎを選定することができるので、管理サーバＳＡに対して多数の未参加ノードｎｍからの装置情報要求メッセージが集中（負荷集中）することを回避できると共に、管理サーバＳＡの設置コストを低減することができる。
【０１２０】
（実施例３）
次に、図１４等を参照して、実施例３におけるコンテンツ配信システムＳの動作について説明する。
【０１２１】
この実施例３は、実施例１と同様に、全ての参加ノードｎｎへの装置情報を管理する管理サーバＳＡが存在する場合の動作例であるが、返信メッセージが届かないときに、再度、管理サーバＳＡが、参加ノードリストから所定数（例えば、１０個）の参加ノードｎｎの装置情報を選択して未参加ノードｎｍに通知する場合の例である。
【０１２２】
なお、この実施例３において、管理サーバＳＡのメインルーチンは、図７（Ｂ）に示す通りであり、実施例１と同様である。
【０１２３】
図１４（Ａ）は、実施例３において、ノード（参加ノードｎｎと未参加ノードｎｍとで共通）のメインルーチンを示すフローチャートであり、図１４（Ｂ）は、実施例３において、図１４（Ａ）に示すステップＳ１ｂにおける参加処理の詳細を示すフローチャートであり、図１４（Ｃ）は、実施例３において、返信メッセージ受信タイマーが起動した場合における未参加ノードｎｍの処理を示すフローチャートである。
【０１２４】
図１４（Ａ）の処理は、例えば未参加ノードｎｍの電源が投入（電源ＯＮ）された場合に開始され、制御部１１は、先ず、初期化を行い、登録フラグを“ｆａｌｓｅ”に、“ｃｏｕｎｔ”（変数）を例えば“０”に、“ｔｔｌ”（変数）を例えば“２”に、夫々設定する（ステップＳ１ａ）。
【０１２５】
次いで、当該制御部１１は、オーバーレイネットワーク９への参加するための参加処理（詳細は後述）を行う（ステップＳ１ｂ）。なお、ステップＳ１〜Ｓ６までの処理は、図７（Ａ）と同様である。
【０１２６】
上記ステップＳ１ｂにおける参加処理おいては、図１４（Ｂ）に示すように、未参加ノードｎｍの制御部１１は、先ず、“ｃｏｕｎｔ”を１カウントアップ（１増加）し（ステップＳ３１）、管理サーバＳＡのＩＰアドレス等（例えば、製品出荷時に記憶部１２に記憶しておく）を取得し（ステップＳ３２）、装置情報要求メッセージを、通信部２０及びネットワーク８を介して管理サーバＳＡに対して送信する（ステップＳ３３）。
【０１２７】
一方、管理サーバＳＡは、未参加ノードｎ１６から送信されてきた装置情報要求メッセージを受信すると、実施例１と同様、図８（Ｂ）に示す処理を開始し、参加ノードリストから所定数（例えば、１０個）の参加ノードｎｎの装置情報をランダム又は上述した重み付けランダムで選択し、当該選択した参加ノードｎｎの装置情報を未参加ノードｎｍに送信することになる。以降、実施例３においても、実施例１と同様、図８（Ｃ）〜図８（Ｆ）、及び図９（Ａ）の処理が行われる。
【０１２８】
そして、参加要求メッセージが何れの参加ノードに届かず（経路の途中でＴＴＬ値が“０”になったことより）、返信メッセージが送信されない場合、上記ステップＳ６３においてセットされた返信メッセージ受信タイマーが起動し、図１４（Ｃ）に示す処理が開始される。
【０１２９】
先ず、未参加ノードｎｍの制御部１１は、登録フラグが“ｆａｌｓｅ”であるか否かを判別し（ステップＳ６３７）、登録フラグが“ｆａｌｓｅ”でない場合（ステップＳ６３７：Ｎ）、既に参加登録が完了しているので、当該処理を終了する。
【０１３０】
一方、登録フラグが“ｆａｌｓｅ”である場合（ステップＳ６３７：Ｙ）、当該制御部１１は、上記“ｃｏｕｎｔ”が、閾値（例えば、５）より小さいか否かを判別し（ステップＳ６３８）、小さくない場合には（ステップＳ６３８：Ｎ）、当該処理を終了する。
【０１３１】
一方、上記“ｃｏｕｎｔ”が、閾値（例えば、５）より小さい場合（ステップＳ６３８：Ｙ）、制御部１１は、上記ステップＳ１ｂと同様の参加処理を行う（ステップＳ６３９）。こうして、返信メッセージが受信されずに所定時間が経過する度に、“ｃｏｕｎｔ”が閾値に達するまで、参加処理のリトライが行われる。
【０１３２】
以上説明したように、上記実施例３によれば、実施例１における第１、第２及び第４の効果を奏することに加えて、返信メッセージが届かないときに、再度、管理サーバＳＡが、参加ノードリストから所定数（例えば、１０個）の参加ノードｎｎの装置情報（例えば、前回取得した参加ノードｎｎの装置情報とは異なる装置情報）を重み付けランダム等により再度選択して未参加ノードｎｍに通知し、これらの参加ノードｎｎに対して参加要求メッセージを送信するようにしたので、確実に、かつ、最適な参加ノードｎｎのルーティングテーブルを取得することができ、ネットワーク８上のローカリティ（地域性）が考慮されたオーバーレイネットワーク９を構築することが可能となる。
【０１３３】
（変形例）
次に、上記実施例１乃至実施例３における、参加要求メッセージを受信した場合における参加ノードｎｎの処理（図８（Ｄ）及び図１３（Ｂ）））及びルーティングテーブルの生成処理（図９（Ａ））の変形例を、図１５を参照して説明する。
【０１３４】
図１５（Ａ）は、変形例において、参加要求メッセージを受信した場合における参加ノードｎｎの処理（ステップＳ６におけるメッセージ毎の処理）を示すフローチャートであり、図１５（Ｂ）は、変形例において、図８（Ｅ）及び図１３（Ｃ）に示すステップＳ７１におけるルーティングテーブルの生成処理の詳細を示すフローチャートである。
【０１３５】
図１５（Ａ）の処理は、参加ノードｎ２が未参加ノードｎ１６から送信されてきた参加要求メッセージを受信すると開始され、先ず、参加ノードｎ２の制御部１１は、自己のＤＨＴのルーティングテーブル（例えば、全レベル）を取得し、返信情報としての返信メッセージに対して当該取得したルーティングテーブルを付加し、この返信メッセージ（例えば、自己（参加ノードｎ２）のＩＰアドレスを送り元アドレスとし、未参加ノードｎ１６のＩＰアドレスを宛先アドレスとした返信パケット）を、通信部２０及びネットワーク８を介して未参加ノードｎ１６に対して送信（返信）する（ステップＳ６５ａ：図１１（Ｅ））。
【０１３６】
次いで、参加ノードｎ２の制御部１１は、ＤＨＴのルーティングテーブルを参照して、受信した参加要求メッセージに付加されている未参加ノードｎ１６のノードＩＤに基づき、転送先を検索し（ステップＳ６６ａ）、転送先があるか否かを判別する（ステップＳ６７ａ）。例えば、自己（参加ノードｎ２）が、上記参加要求メッセージに付加されたノードＩＤと最も近いノードＩＤを有する場合には、ルーティングテーブル中で上記参加要求メッセージに付加されたノードＩＤに最も近いテーブルエントリーを検索すると、その転送先は自分自身を指すことになり（つまり、自己が参加要求メッセージに付加されたノードＩＤの管理元である）転送先がないと判別され（ステップＳ６７ａ：Ｎ）、図７（Ａ）に示す処理に戻る。一方、最も近いノードＩＤを有しない（つまり、最も近いノードＩＤを有する参加ノードｎｎが他にある）場合には、検索したテーブルエントリーには他の参加ノードｎｎのＩＰアドレスが見つかり、転送先があると判別され（ステップＳ６７ａ：Ｙ）、ステップＳ６８ａに移行する。
【０１３７】
ステップＳ６８ａでは、参加ノードｎ２の制御部１１は、参加要求メッセージに付加されたノードＩＤと最も近いノードＩＤに対応するＩＰアドレスをＤＨＴのルーティングテーブルから取得し、上記ノードＩＤが付加された参加要求メッセージに対して未参加ノードｎ１６のＩＰアドレスを付加し、当該参加要求メッセージ（自己（参加ノードｎ２）のＩＰアドレスを送り元アドレス及び当該ルーティングテーブルから取得されたＩＰアドレスを宛先アドレスとした参加要求パケット）を、通信部２０及びネットワーク８を介して、上記ルーティングテーブルから取得したＩＰアドレスに対応する参加ノードｎ６に対して送信（転送）し（図１１（Ｄ））、図７（Ａ）に示す処理に戻る。
【０１３８】
次に、図１５（Ｂ）に示すルーティングテーブルの生成処理では、未参加ノードｎ１６の制御部１１は、先ず、初期化処理を行い、レベルを示す変数“ｉ”を１に設定する（ステップＳ７２１）。
【０１３９】
次いで、制御部１１は、ルーティングテーブルの全レベル数（図３の例では、３）より“ｉ”が小さいか否かを判別し（ステップＳ７２２）、“ｉ”が小さい場合（ステップＳ７２２：Ｙ）、つまり、未だ、全てのレベルにおけるルーティングテーブルが登録されていない場合には、ステップＳ７２３に移行し、“ｉ”が小さくない場合（ステップＳ７２２：Ｎ）、つまり、全てのレベルにおけるルーティングテーブルが登録された場合には、図８（Ｅ）等に示す処理に戻る。
【０１４０】
ステップＳ７２３では、制御部１１は、上記返信メッセージの送信元の参加ノードｎｎまでのＴＴＬ値を取得する（かかるＴＴＬ値は、参加要求メッセージのＴＴＬ値をいくつで出したときに返信されたか、から取得できる）。
【０１４１】
次いで、制御部１１は、レベルｉ（例えば、レベル１）のルーティングテーブルは既に登録済か否かを判別し（ステップＳ７２４）、既に登録済でない場合（ステップＳ７２４：Ｎ）、ステップＳ７２５に移行し、既に登録済である場合（ステップＳ７２４：Ｙ）、ステップＳ７２６に移行する。
【０１４２】
ステップＳ７２５では、制御部１１は、返信メッセージの送信元の参加ノードｎｎにおけるレベルｉのルーティングテーブルを自己のルーティングテーブルに登録し、ステップＳ７２８に移行する。
【０１４３】
一方、ステップＳ７２６では、制御部１１は、登録済のルーティングテーブルを送信した参加ノードｎｎまでのＴＴＬ値が、上記ステップＳ７２３で取得されたＴＴＬ値（当該処理開始の要因となった返信メッセージを送信した参加ノードｎｎまでのＴＴＬ値）より小さいか否かを判別する。
【０１４４】
登録済のルーティングテーブルを送信した参加ノードｎｎまでのＴＴＬ値が、上記ステップＳ７２３で取得されたＴＴＬ値より小さい場合には（ステップＳ７２６：Ｙ）、上記受信した返信メッセージに付加されたレベルｉのルーティングテーブルで、登録済のレベルｉのルーティングテーブルを上書き更新し（ステップＳ７２７）、ステップＳ７２８に移行する。つまり、未参加ノードｎ１６の制御部１１は、夫々の参加ノードｎｎからの返信メッセージに含まれる夫々のルーティングテーブルのうち、同一レベルのルーティングテーブルが複数あるとき、当該同一レベルの複数のルーティングテーブルのうち、参加要求メッセージの到達可能範囲が最も狭い設定（ＴＴＬ値がより小さい設定）で受信可能な参加ノードｎｎにおけるルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成することになる。これにより、転送回数（ＨＯＰ数）が少ない参加ノードｎｎのルーティングテーブルが優先して登録されることになるので、ルーティングテーブルもローカリティ（地域性）が考慮されることになる。
【０１４５】
一方、登録済のルーティングテーブルを送信した参加ノードｎｎまでのＴＴＬ値が、上記ステップＳ７２３で取得されたＴＴＬ値より小さくない場合には（ステップＳ７２６：Ｎ）、ステップＳ７２８に移行する。
【０１４６】
ステップＳ７２８では、レベルを示す変数“ｉ”を１インクリメントし、ステップＳ７２２に戻る。こうして、ステップＳ７２２〜Ｓ７２８の処理は、全てのレベルにおけるルーティングテーブルが登録されるまで繰り返し行われる。
【０１４７】
以上説明したように変形例によれば、参加要求メッセージの到達可能範囲が最も狭い設定（ＴＴＬ値がより小さい設定）で受信可能な参加ノードｎｎにおけるルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成するようにしたので、よりネットワーク的に近い（例えば、ＨＯＰ数が少ない）参加ノードｎｎのルーティングテーブルが優先して登録されることになり、ルーティングテーブルもローカリティ（地域性）が考慮され、より一層、ネットワーク８上のローカリティ（地域性）が考慮されたオーバーレイネットワーク９を構築することが可能となる。
【０１４８】
なお、上記実施例１におけるＴＴＬ値の変更設定と、上記実施例３における参加ノードｎｎの再選択とを組み合わせるように構成しても良い。例えば、返信メッセージが受信されないことによるＴＴＬ値の変更設定を一定回数、例えば、ＴＴＬ値が“１０”になるまで繰り返したら、ＴＴＬ値を減少させて（例えば、２に設定）、上記ステップＳ１ｂの参加処理を呼び出し、当該参加処理において、“ｃｏｕｎｔ”が、閾値に達するまで繰り返すように構成する。逆に、ＴＴＬ値を固定で上記ステップＳ１ｂの参加処理を繰り返し、これでも、返信メッセージを受信できなければ、ＴＴＬ値を増加して上限（２５５）に到達するまで繰り返すように構成する。このように構成すれば、より一層、確実に、かつ、最適な参加ノードｎｎのルーティングテーブルを取得することが可能となる。
【０１４９】
また、上記実施形態においては、ＤＨＴを利用したアルゴリズムによって構築されたオーバーレイネットワーク９を前提として説明したが、本発明はこれに限定されるものではない。
【０１５０】
また、上記実施形態においては、到達可能範囲を表す情報として、ＴＴＬを例にとったがこれに限定されるものではなく、その他の情報を適用しても良い。
【図面の簡単な説明】
【０１５１】
【図１】本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ＤＨＴのノードＩＤ空間において、参加ノードｎ１から送出されたクエリがルートノードｎ１０まで転送される様子の一例を示す図である。
【図３】参加ノードｎ１が保持するＤＨＴのルーティングテーブルの一例を示す図である。
【図４】ＤＨＴのノードＩＤ空間の一例を示す概念図である。
【図５】ＤＨＴのルーティングテーブルが生成されるまでの流れの一例を示す概念図である。
【図６】参加ノードｎｎ及び未参加ノードｎｍの概要構成例を示す図である。
【図７】（Ａ）は、ノード（参加ノードｎｎと未参加ノードｎｍとで共通）のメインルーチンを示すフローチャートであり、（Ｂ）は、管理サーバＳＡのメインルーチンを示すフローチャートである。
【図８】（Ａ）は、実施例１において、図７（Ａ）に示すステップＳ１における参加処理の詳細を示すフローチャートであり、（Ｂ）は、実施例１において、装置情報要求メッセージを受信した場合における管理サーバＳＡの処理を示すフローチャートであり、（Ｃ）は、実施例１において、装置情報メッセージを受信した場合における未参加ノードｎｍの処理を示すフローチャートであり、（Ｄ）は、実施例１において、参加要求メッセージを受信した場合における参加ノードｎｎの処理を示すフローチャートであり、（Ｅ）は、実施例１において、返信メッセージを受信した場合における未参加ノードｎｍの処理を示すフローチャートであり、（Ｆ）は、実施例１において、登録メッセージを受信した場合における管理サーバＳＡの処理を示すフローチャートである。
【図９】（Ａ）は、図８（Ｅ）に示すステップＳ７１におけるルーティングテーブルの生成処理の詳細を示すフローチャートであり、（Ｂ）は、返信メッセージ受信タイマーが起動した場合における未参加ノードｎｍの処理を示すフローチャートである。
【図１０】実施例１において、未参加ノード１６がオーバーレイネットワーク９に新たに参加する場合の様子の一例を示す概念図である。
【図１１】実施例１において、未参加ノード１６がオーバーレイネットワーク９に新たに参加する場合の様子の一例を示す概念図である。
【図１２】実施例１において、未参加ノード１６がオーバーレイネットワーク９に新たに参加する場合の様子の一例を示す概念図である。
【図１３】（Ａ）は、実施例２において、図７（Ａ）に示すステップＳ１における参加処理の詳細を示すフローチャートであり、（Ｂ）は、実施例２において、参加要求メッセージを受信した場合における参加ノードｎｎの処理を示すフローチャートであり、（Ｃ）は、実施例２において、返信メッセージを受信した場合における未参加ノードｎｍの処理を示すフローチャートである。
【図１４】（Ａ）は、実施例３において、ノード（参加ノードｎｎと未参加ノードｎｍとで共通）のメインルーチンを示すフローチャートであり、（Ｂ）は、実施例３において、１４（Ａ）に示すステップＳ１ｂにおける参加処理の詳細を示すフローチャートであり、（Ｃ）は、実施例３において、返信メッセージ受信タイマーが起動した場合における未参加ノードｎｍの処理を示すフローチャートである。
【図１５】（Ａ）は、変形例において、参加要求メッセージを受信した場合における参加ノードｎｎの処理（ステップＳ６におけるメッセージ毎の処理）を示すフローチャートであり、（Ｂ）は、変形例において、図８（Ｅ）及び図１３（Ｃ）に示すステップＳ７１におけるルーティングテーブルの生成処理の詳細を示すフローチャートである。
【符号の説明】
【０１５２】
１  ノード装置
８  ネットワーク
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
２０  通信部
２１  入力部
２２  バス
ＳＡ  管理サーバ
Ｓ  コンテンツ配信システム
【図１】
0004544072.tif 000002
【図２】
0004544072.tif 000003
【図３】
0004544072.tif 000004
【図４】
0004544072.tif 000005
【図５】
0004544072.tif 000006
【図６】
0004544072.tif 000007
【図７】
0004544072.tif 000008
【図８】
0004544072.tif 000009
【図９】
0004544072.tif 000010
【図１０】
0004544072.tif 000011
【図１１】
0004544072.tif 000012
【図１２】
0004544072.tif 000013
【図１３】
0004544072.tif 000014
【図１４】
0004544072.tif 000015
【図１５】
0004544072.tif 000016