(57)【特許請求の範囲】
【請求項１】
ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおいて、
前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置と、前記第１の情報処理装置とは異なる第２の情報処理装置とを含み、
前記情報処理装置は、
情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶する記憶手段と、
他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信する第１受信手段と、
前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定する決定手段と、を備えることを特徴とする通信システム。
【請求項２】
前記情報処理装置は、
前記ルーティングテーブルに登録された前記所在情報に基づいて、前記オーバーレイネットワークを介して他の情報処理装置へメッセージを送信する第１送信手段と、
前記第１送信手段によりメッセージを送信する前記情報処理装置が、設定された第１の情報処理装置の条件を満たすか否かを判定する判定手段と、
前記判定手段による判定結果に基づいて、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記第１の情報処理装置又は前記第２の情報処理装置であるかを決定する第２決定手段と、
を備え、
前記第１送信手段は、前記第１送信手段によりメッセージを送信する前記情報処理装置の前記所在情報と、前記第２決定手段により決定された前記第１の情報処理装置又は前記第２の情報処理装置であることを示す前記装置識別情報とを含む前記メッセージを前記他の情報処理装置へ送信し、
前記メッセージに含まれる前記装置識別情報に前記第１の情報処理装置が示される場合、前記決定手段は、前記メッセージに含まれる前記所在情報を登録することを決定し、
前記情報処理装置は、
前記決定手段により前記所在情報の登録が決定された場合に、前記所在情報を前記ルーティングテーブルに登録する登録手段を更に備えることを特徴とする請求項１に記載の通信システム。
【請求項３】
前記ルーティングテーブルは、前記所在情報を登録するための複数の登録領域であってＩＤ空間を分割することにより得られる複数のエリアの夫々に対応する複数の登録領域を有し、
前記メッセージに含まれる前記装置識別情報に前記第１の情報処理装置が示され、且つ、前記メッセージに含まれる前記装置識別情報が含まれるエリアに対応する前記登録領域に前記第２の情報処理装置の前記所在情報が既に登録されている場合に、前記決定手段は、前記メッセージに含まれる前記所在情報を、前記装置識別情報が含まれるエリアに対応する前記登録領域に登録されている前記所在情報より優先して登録することを決定することを特徴とする請求項２に記載の通信システム。
【請求項４】
前記判定手段は、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記設定された第１の情報処理装置の条件として前記オーバーレイネットワークへ参加していた時間が所定時間以上であるか否かを判定し、
前記第２決定手段は、前記判定手段により所定時間以上であると判定された場合には、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記第１の情報処理装置であると決定することを特徴とする請求項２に記載の通信システム。
【請求項５】
前記判定手段は、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記設定された第１の情報処理装置の条件として、
（１）前記情報処理装置が備える記憶部に設けられたコンテンツを保存するための保存領域の保存容量が所定容量以上であること
（２）前記情報処理装置が備える通信部に接続される通信回線のデータ通信速度が所定速度以上であること
（３）ネットワークに接続された他の装置から、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）またはＵＤＰ（User Datagram Protocol）／ＩＰの接続を受け付けることが可能であること
の条件を満たすか否かを判定し、
前記第２決定手段は、前記判定手段により前記（１）〜（３）の何れか１つ以上の条件を満たすと判定された場合には、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記第１の情報処理装置であると決定することを特徴とする請求項２に記載の通信システム。
【請求項６】
前記第１の情報処理装置は、前記オーバーレイネットワークに定常的に参加するノード装置であり、前記第２の情報処理装置は、任意のタイミングで、前記オーバーレイネットワークに参加または離脱するノード装置であることを特徴とする請求項１に記載の通信システム。
【請求項７】
前記オーバーレイネットワークへ参加する前記情報処理装置は、前記オーバーレイネットワークへの参加要求を示す参加メッセージを所定の前記第１の情報処理装置に送信する第２送信手段を更に備え、
前記第１の情報処理装置は、
前記情報処理装置から送信された参加メッセージを受信する第２受信手段と、
所定数の前記第１の情報処理装置の前記所在情報を登録するルーティングテーブルから、所定数の前記所在情報を取得する第４取得手段と、
前記取得された所定数の前記所在情報を、前記参加メッセージを送信した前記情報処理装置へ送信する第３送信手段と、
を備え、
前記オーバーレイネットワークへ参加する前記情報処理装置は、
前記第１の情報処理装置から送信された前記所定数の前記所在情報を受信する第３受信手段と、
前記第３受信手段により受信された前記所定数の前記所在情報に基づいて、前記記憶手段に記憶される前記ルーティングテーブルであって、前記第１の情報処理装置の前記所在情報を優先的に登録する前記ルーティングテーブルを取得する第５取得手段と、
を備えることを特徴とする請求項１乃至６の何れか一項に記載の通信システム。
【請求項８】
ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおいて、
前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置を含み、
前記情報処理装置は、
情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶する記憶手段と、
他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第１の情報処理装置と異なる第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信する第１受信手段と、
前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定する決定手段と、  
を備えることを特徴とする情報処理装置。
【請求項９】
ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおいて、
前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置を含み、
前記情報処理装置に含まれるコンピュータに、
情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶するステップと、
他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第１の情報処理装置と異なる第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信するステップと、
前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定するステップと、
を実行させるための情報処理プログラム。
【請求項１０】
ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおける所在情報登録方法であって、
前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置を含み、
前記所在情報登録方法は、
情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶するステップと、
他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第１の情報処理装置と異なる第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信するステップと、
前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定するステップと、
を含むことを特徴とする所在情報登録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の配信システムの技術分野に関する。
【背景技術】
【０００２】
近年、ピアツーピア型の配信システムが知られている。ピアツーピア型の配信システムでは、複数のノード装置により構成されるオーバーレイネットワークに複数のコンテンツデータが分散保存されている。そして、オーバーレイネットワークでノード装置は他のノード装置からコンテンツデータを取得することが可能になっている。コンテンツデータを、以下、「コンテンツ」という。また、ノード装置を、以下、「ノード」いう。このようなピアツーピア型の配信システムでは、クライアント・サーバ型の配信システムのようなサーバへの負荷集中を軽減することができる。また、オーバーレイネットワークに分散保存されたコンテンツの所在は、例えば特許文献１に開示されるような分散ハッシュテーブルを用いたルーティングテーブルを利用して効率良く検索可能になっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１９７４００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、オーバーレイネットワークに参加している複数のノードには、常駐ノードと、一般ノードとが混在する場合がある。ここで、常駐ノードは、オーバーレイネットワークに定常的に参加するノードである。一方、一般ノードは、オーバーレイネットワークに定常的に参加するとは限らないノードである。また、一般ノードは、オーバーレイネットワークから参加と離脱を繰り返すノードである。ここで、「離脱」は、「脱退」ともいう。
【０００５】
常駐ノードと一般ノードとが混在するオーバーレイネットワークの場合、基本的に、常駐ノードによりオーバーレイネットワークが構成されていれば、オーバーレイネットワーク上での通信は安定している。ここで、オーバーレイネットワーク上での通信としては、例えば、オーバーレイネットワークを介して行われるノード間のメッセージの送受信が挙げられる。
【０００６】
しかしながら、オーバーレイネットワークに参加する一般ノードの数が増えると、オーバーレイネットワーク上での通信が安定しなくなる場合があった。例えば、一般ノードがオーバーレイネットワークから離脱すると、この一般ノードのＩＰアドレス等を登録するルーティングテーブルを保持するノードは、離脱した一般ノードにメッセージを送信できなくなくなる。そのため、一般ノードのＩＰアドレス等を登録するルーティングテーブルを保持するノードは、再度、別のノードにメッセージを送信する処理を行わなくてはならない。このようにオーバーレイネットワーク上での通信が安定しなくなると、常駐ノードがオーバーレイネットワークに参加しているメリットを活かせなくなる。
【０００７】
そこで、本発明は、以上の点等に鑑みてなされたものであり、常駐ノードと一般ノードとが混在するオーバーレイネットワークであっても、常駐ノードがオーバーレイネットワークに参加しているメリットを活かすことが可能な通信システム、情報処理装置、情報処理プログラム、及び所在情報登録方法を提供すること等を課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおいて、前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置と、前記第１の情報処理装置とは異なる第２の情報処理装置とを含み、前記情報処理装置は、情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶する記憶手段と、他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信する第１受信手段と、前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定する決定手段と、を備えることを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載の通信システムにおいて、前記情報処理装置は、前記ルーティングテーブルに登録された前記所在情報に基づいて、前記オーバーレイネットワークを介して他の情報処理装置へメッセージを送信する第１送信手段と、前記第１送信手段によりメッセージを送信する前記情報処理装置が、設定された第１の情報処理装置の条件を満たすか否かを判定する判定手段と、前記判定手段による判定結果に基づいて、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記第１の情報処理装置又は前記第２の情報処理装置であるかを決定する第２決定手段と、を備え、前記第１送信手段は、前記第１送信手段によりメッセージを送信する前記情報処理装置の前記所在情報と、前記第２決定手段により決定された前記第１の情報処理装置又は前記第２の情報処理装置であることを示す前記装置識別情報とを含む前記メッセージを前記他の情報処理装置へ送信し、前記メッセージに含まれる前記装置識別情報に前記第１の情報処理装置が示される場合、前記決定手段は、前記メッセージに含まれる前記所在情報を登録することを決定し、前記情報処理装置は、前記決定手段により前記所在情報の登録が決定された場合に、前記所在情報を前記ルーティングテーブルに登録する登録手段を更に備えることを特徴とする。
【００１０】
請求項３に記載の発明は、請求項２に記載の通信システムにおいて、前記ルーティングテーブルは、前記所在情報を登録するための複数の登録領域であってＩＤ空間を分割することにより得られる複数のエリアの夫々に対応する複数の登録領域を有し、前記メッセージに含まれる前記装置識別情報に前記第１の情報処理装置が示され、且つ、前記メッセージに含まれる前記装置識別情報が含まれるエリアに対応する前記登録領域に前記第２の情報処理装置の前記所在情報が既に登録されている場合に、前記決定手段は、前記メッセージに含まれる前記所在情報を、前記装置識別情報が含まれるエリアに対応する前記登録領域に登録されている前記所在情報より優先して登録することを決定することを特徴とする。
【００１１】
請求項４に記載の発明は、請求項２に記載の通信システムにおいて、前記判定手段は、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記設定された第１の情報処理装置の条件として前記オーバーレイネットワークへ参加していた時間が所定時間以上であるか否かを判定し、前記第２決定手段は、前記判定手段により所定時間以上であると判定された場合には、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記第１の情報処理装置であると決定することを特徴とする。
【００１２】
請求項５に記載の発明は、請求項２に記載の通信システムにおいて、前記判定手段は、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記設定された第１の情報処理装置の条件として、（１）前記情報処理装置が備える記憶部に設けられたコンテンツを保存するための保存領域の保存容量が所定容量以上であること（２）前記情報処理装置が備える通信部に接続される通信回線のデータ通信速度が所定速度以上であること
（３）ネットワークに接続された他の装置からＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）またはＵＤＰ（User Datagram Protocol）／ＩＰの接続を受け付けることが可能であることの条件を満たすか否かを判定し、前記第２決定手段は、前記判定手段により前記（１）〜（３）の何れか１つ以上の条件を満たすと判定された場合には、前記第１送信手段によりメッセージを送信する前記情報処理装置が、前記第１の情報処理装置であると決定することを特徴とする。
【００１３】
請求項６に記載の発明は、請求項１に記載の通信システムにおいて、前記第１の情報処理装置は、前記オーバーレイネットワークに定常的に参加するノード装置であり、前記第２の情報処理装置は、任意のタイミングで、前記オーバーレイネットワークに参加または離脱するノード装置であることを特徴とする。
【００１４】
請求項７に記載の発明は、請求項１乃至６の何れか一項に記載の通信システムにおいて、前記オーバーレイネットワークへ参加する前記情報処理装置は、前記オーバーレイネットワークへの参加要求を示す参加メッセージを所定の前記第１の情報処理装置に送信する第２送信手段を更に備え、前記第１の情報処理装置は、前記情報処理装置から送信された参加メッセージを受信する第２受信手段と、所定数の前記第１の情報処理装置の前記所在情報を登録するルーティングテーブルから、所定数の前記所在情報を取得する第４取得手段と、前記取得された所定数の前記所在情報を、前記参加メッセージを送信した前記情報処理装置へ送信する第３送信手段と、を備え、前記オーバーレイネットワークへ参加する前記情報処理装置は、前記第１の情報処理装置から送信された前記所定数の前記所在情報を受信する第３受信手段と、前記第３受信手段により受信された前記所定数の前記所在情報に基づいて、前記記憶手段に記憶される前記ルーティングテーブルであって、前記第１の情報処理装置の前記所在情報を優先的に登録する前記ルーティングテーブルを取得する第５取得手段と、を備えることを特徴とする。
【００１５】
請求項８に記載の発明は、ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおいて、前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置を含み、前記情報処理装置は、情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶する記憶手段と、他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第１の情報処理装置と異なる第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信する第１受信手段と、前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定する決定手段と、を備えることを特徴とする。
【００１６】
請求項９に記載の発明は、ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおいて、前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置を含み、前記情報処理装置に含まれるコンピュータに、情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶するステップと、他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第１の情報処理装置と異なる第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信するステップと、前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定するステップと、を実行させるための情報処理プログラムである。
【００１７】
請求項１０に記載の発明は、ネットワークを介して互いに通信可能な複数の情報処理装置によりオーバーレイネットワークが構成される通信システムにおける所在情報登録方法であって、前記情報処理装置は、前記オーバーレイネットワークの運用に貢献する装置として設定された第１の情報処理装置を含み、前記所在情報登録方法は、情報処理装置のネットワーク上での所在を示す所在情報を登録するルーティングテーブルを記憶するステップと、他の情報処理装置から前記オーバーレイネットワークを介して送信されたメッセージであって、前記他の情報処理装置の前記所在情報と、前記他の情報処理装置が前記第１の情報処理装置又は前記第１の情報処理装置と異なる第２の情報処理装置であることを示す装置識別情報とを含む前記メッセージを受信するステップと、前記受信されたメッセージに含まれる前記装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージに含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定するステップと、を含むことを特徴とする。
【発明の効果】
【００１８】
請求項１、６、８乃至１０に記載の発明によれば、他の情報処理装置からメッセージを受信した情報処理装置は、このメッセージに含まれる、前記他の情報処理装置が第１の情報処理装置又は第２の情報処理装置であることを示す装置識別情報に基づいて、前記装置識別情報が前記第１の情報処理装置を示すときの前記メッセージ゛に含まれる所在情報を優先して、前記ルーティングテーブルに登録することを決定する。そのため、第１の情報処理装置と、第２の情報処理装置とが混在するオーバーレイネットワーク上での通信を安定させることが可能となる。したがって、第１の情報処理装置がオーバーレイネットワークに参加しているメリットを活かすことができる。
【００１９】
請求項２に記載の発明によれば、メッセージを受信した情報処理装置は、メッセージを送信した情報処理装置が第１の情報処理装置又は第２の情報処理装置であるかを迅速に確認することができる。また、情報処理装置が記憶するルーティングテーブルを、第１の情報処理装置の所在情報を登録するルーティングテーブルにすることができる。そのため、オーバーレイネットワーク上での通信を安定させることが可能となる。
【００２０】
請求項３に記載の発明によれば、情報処理装置が記憶するルーティングテーブルに第１の情報処理装置と第２の情報処理装置の所在情報が登録されている場合であっても、第１の情報処理装置の所在情報を登録するルーティングテーブルに更新することができる。
【００２１】
請求項４に記載の発明によれば、オーバーレイネットワークＯＮの運用に貢献する装置として適切な情報処理装置を自動的に決定することができる。
【００２２】
請求項５に記載の発明によれば、オーバーレイネットワークＯＮの運用に貢献する装置として適切な情報処理装置を自動的に決定することができる。
【００２３】
請求項７に記載の発明によれば、情報処理装置は、オーバーレイネットワークへ参加する際に、第１の情報処理装置の所在情報を優先して登録するルーティングテーブルを得ることができる。
【図面の簡単な説明】
【００２４】
【図１】本実施形態に係るコンテンツ配信システムの概要構成例を示す図である。
【図２】（Ａ）は、パブリッシュメッセージが、ＤＨＴルーティングにより、コンテンツ保持ノードからルートノードへ送信される例を示す図である。（Ｂ）は、定期パブリッシュメッセージが、ＤＨＴルーティングにより、コンテンツ保持ノードからルートノードへ送信される例を示す図である。（Ｃ）は、経路変更確認メッセージが、ＤＨＴルーティングにより、転送ノードＸからルートノードへ送信される例を示す図である。（Ｄ）は、ルータＲｍの概要構成例を示す図である。（Ｅ）は、ユーザ端末Ｔｏの概要構成例を示すブロック図である。
【図３】（Ａ）は、ノードＮｎにおけるメイン処理を示すフローチャートである。（Ｂ）は、（Ａ）のステップＳ８におけるメッセージ送信処理の詳細を示すフローチャートである。
【図４】（Ａ）は、図３（Ａ）のステップＳ１０におけるメッセージ受信処理の詳細を示すフローチャートである。（Ｂ）は、メッセージを受信したノードＮｎが記憶するルーティングテーブルの一例である。
【図５】図３（Ａ）のステップＳ１０におけるメッセージ受信処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに本発明を適用した場合の実施形態である。
【００２６】
［１．コンテンツ配信システムの構成及び動作概要］
始めに、図１を参照して、本実施形態に係るコンテンツ配信システムの構成及び動作概要について説明する。図１は、本実施形態に係るコンテンツ配信システムＳの概要構成例を示す図である。コンテンツ配信システムは、本発明の通信システムの一例である。図１に示すように、本実施形態に係るコンテンツ配信システムＳは、ルータＲｍ（ｍ＝１，２，３・・・ｊ）、及びユーザ端末ＵＴｏ（ｏ＝１，２，３・・・ｌ）等を備えて構成されている。ルータＲｍは、インターネット等からなるネットワークＮＷに接続されている。ユーザ端末ＵＴｏは、例えば、ユーザにより使用されるパーソナルコンピュータ又は携帯機器である。ユーザ端末ＵＴｏは、例えば、インターネットサービスプロバイタのサーバ（図示せず）により割り当てられたＩＰアドレスを用いてネットワークＮＷに接続可能になっている。
【００２７】
また、図１に示すように、コンテンツ配信システムＳには、複数の拠点Ｐｍ毎に拠点ネットワークＮＬｍが構築されている。この拠点の例としては、例えばカラオケ店舗、学校、会社、住宅、その他の施設等が挙げられる。拠点ネットワークＮＬｍは、例えば、ＬＡＮ（Local Area Network）等のプライベートネットワークである。また、各拠点ネットワークＮＬｍには、ルータＲｍと複数の拠点端末Ｔｍ−ｌ（ｌ＝１，２，３）とが接続されている。ルータＲｍは、ネットワークＮＷと拠点ネットワークＮＬｍと間でＩＰ（Internet Protocol）パケットを中継する中継機器である。拠点端末Ｔｍ−ｌは、ルータＲｍから配信されたコンテンツを再生することができる。なお、各拠点Ｐｍにおける拠点端末Ｔｍ−ｌは、同じ拠点ネットワークＮＬｍに接続されているルータＲｍだけと通信を行うことに限定されるものではない。例えば、拠点Ｐ１における視聴端末Ｔ１−１は、同じ拠点ネットワークＮＬ１に接続されているルータＲ１だけでなく、他の拠点Ｐ２等におけるルータＲ２等やＷｅｂサーバ等とも通信を行うことができる。また、図１に示すように、コンテンツ配信システムＳには、ネットワークＮＷを介して互いに通信可能な複数のノードＮｎ（ｎ＝１，２，３・・・ｋ）によりオーバーレイネットワークＯＮが構成されている。オーバーレイネットワークＯＮは、仮想的なリンクを構成する論理的なネットワークである。オーバーレイネットワークＯＮは、特定のアルゴリズム、例えば、分散ハッシュテーブルを利用したアルゴリズムにより実現される。なお、分散ハッシュテーブルを、以下、「ＤＨＴ（Distributed Hash Table）」という。ＤＨＴを用いたルーティングテーブルには、オーバーレイネットワークＯＮに参加している全ノードＮｎのうち、所定数のノードＮｎのノードＩＤ、ＩＰアドレス及びポート番号が登録されている。ここで、ノードＩＤは、ノードＮｎをオーバーレイネットワークＯＮに参加している複数のノードＮｎの中から識別する固有の識別情報である。また、ＩＰアドレスは、ノードＮｎのネットワークＮＷ上での所在を示す所在情報の一例である。また、オーバーレイネットワークＯＮに参加するとは、ＤＨＴを用いたルーティングテーブルに基づいて他のノードＮｎとの間で各種メッセージを送受信できる状態に稼動することをいう。これにより、各ノードＮｎは、他のノードＮｎとの間でオーバーレイネットワークＯＮを介してメッセージを送受信することが可能となる。ここで、オーバーレイネットワークＯＮを介したメッセージの送受信とは、オーバーレイネットワークＯＮに参加しているノードＮｎ間のメッセージの送受信を意味する。なお、ＤＨＴを用いたルーティングテーブルは、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００２８】
また、本実施形態においては、オーバーレイネットワークＯＮに参加しているノードＮｎには、常駐ノードと一般ノードとが含まれる。常駐ノードは、本発明における「第１の情報処理装置」の一例である。常駐ノードは、例えば、オーバーレイネットワークＯＮの運用に貢献する装置として設定される。ここで、「設定される」には、例えばシステム管理者等により任意に設定される場合と、ノードＮｎが常駐ノードの条件を満たすか否かを判定することにより設定される場合とが含まれる。なお、常駐ノードの条件については後述する。一方、一般ノードは、本発明における「第１の情報処理装置と異なる第２の情報処理装置」の一例である。そして、ルータＲｍは、常駐ノードとしてオーバーレイネットワークＯＮに定常的に参加する。ここで、「定常的に参加」とは、例えば、常駐ノードが故障時又はメンテナンス時以外の時には、オーバーレイネットワークＯＮから離脱せず参加していることを意味する。なお、本実施形態では、定常的に参加するノードＮｎは、例えば、ルータＲｍである。この場合、ルータＲｍに、ノードＮｎとして制御処理を実行させるプログラムがインストールされる。各拠点Ｐｍ以外にも、各家庭で常時ネットワークに接続される機器に、ノードＮｎとして制御処理を実行させるプログラムがインストールされても良い。一方、ユーザ端末ＵＴｏは、一般ノードとしてオーバーレイネットワークＯＮに必ずしも定常的に参加するとは限らないノード装置である。ここで、一般ノードは、例えば、ユーザがユーザ端末ＵＴｏを使用する時等の所定時間だけオーバーレイネットワークＯＮに参加するノード装置である。そのため、一般ノードは、オーバーレイネットワークＯＮから参加と離脱を繰り返す。つまり、一般ノードは、任意のタイミングで、オーバーレイネットワークＯＮに参加または離脱する。なお、ユーザ端末ＵＴｏであっても、常駐ノードの条件を満たす場合がある。この場合、ユーザ端末ＵＴｏは、常駐ノードとしてオーバーレイネットワークＯＮに参加することができる。
【００２９】
また、オーバーレイネットワークＯＮに参加している複数のノードＮｎには、内容の異なる様々なコンテンツが分散保存されている。また、ノードＮｎに保存されているコンテンツには、コンテンツＩＤが付与されている。コンテンツＩＤは、コンテンツを、オーバーレイネットワークＯＮでノードＮｎに保存される複数のコンテンツの中から識別する固有の識別情報である。なお、ノードＩＤ及びコンテンツＩＤは、例えば、オーバーレイネットワークＯＮで共通のハッシュ関数により生成される。
【００３０】
ここで、コンテンツを保存しているノードＮｎを、以下、「コンテンツ保持ノード」という。また、コンテンツの所在を示す情報は、インデックス情報として、コンテンツの所在を管理しているノードＮｎに記憶される。コンテンツの所在を管理しているノードＮｎを、以下、「ルートノード」という。インデックス情報には、コンテンツを保存しているコンテンツ保持ノードのノード情報と、コンテンツのコンテンツＩＤとの組が含まれる。ノード情報には、例えば、コンテンツ保持ノードのＩＰアドレス、ポート番号、及びノードＩＤが含まれる。ルートノードは、例えば、コンテンツＩＤと最も近いノードＩＤが割り当てられたノードＮｎであるように定められる。コンテンツＩＤと最も近いノードＩＤとは、例えば、ＩＤの上位桁が最も多く一致するノードＩＤである。
【００３１】
そして、あるノードＮｎが、オーバーレイネットワークＯＮを介してコンテンツ保持ノードから所定のコンテンツを取得する場合がある。この場合の例としては、拠点端末Ｔ１−１から所定のコンテンツの要求を受けたノードＮ１が、このコンテンツを保存していなかった場合が挙げられる。なお、図１に示す例では、ノードＮ１はルータＲ１である。この場合、ノードＮ１は、先ず、オーバーレイネットワークＯＮでコンテンツ保持ノードに保存される所定のコンテンツの所在を検索する検索処理を行う。ここで、所定のコンテンツとは、例えば、拠点端末Ｔ１−１のユーザにより取得対象として選択されたコンテンツである。この所定のコンテンツを、以下、「取得対象のコンテンツ」という。また、検索処理を行うノードＮ１を、以下、「ユーザノード」という。具体的には、ユーザノードは、検索処理において、コンテンツ所在問合せメッセージを、ＤＨＴルーティングによりルートノード宛に送信する。このコンテンツ所在問合せメッセージは、取得対象のコンテンツの所在をルートノードに問い合わせるためのメッセージである。また、コンテンツ所在問合せメッセージには、取得対象のコンテンツのコンテンツＩＤ等が含まれる。なお、ＤＨＴルーティングは、例えば特開２００７−０５３６６２号公報等で公知であるので、詳しい説明を省略する。
【００３２】
コンテンツ所在問合せメッセージを受信したルートノードは、コンテンツ所在問合せメッセージに含まれるコンテンツＩＤに対応するインデックス情報を記憶部から取得する。そして、ルートノードは、コンテンツ所在応答メッセージをユーザノードへ返信する。このコンテンツ所在応答メッセージは、取得対象のコンテンツの所在をユーザノードに応答するためのメッセージである。また、コンテンツ所在応答メッセージには、取得されたインデックス情報等が含まれる。こうして、ユーザノードは、コンテンツ所在応答メッセージを受信すると、このメッセージからインデックス情報を抽出する。ユーザノードは、抽出したインデックス情報に含まれるコンテンツ保持ノードのＩＰアドレス等に基づいてコンテンツ保持ノードにアクセスする。そして、ユーザノードは、コンテンツ要求メッセージをコンテンツ保持ノードへ返信する。このコンテンツ要求メッセージは、取得対象のコンテンツをコンテンツ保持ノードへ要求するためのメッセージである。このコンテンツ要求メッセージには、取得対象のコンテンツのコンテンツＩＤ等が含まれる。
【００３３】
コンテンツ要求メッセージを受信したコンテンツ保持ノードは、このメッセージに含まれるコンテンツＩＤに対応するコンテンツを記憶部から取得する。そして、コンテンツ保持ノードは、コンテンツ送信メッセージとともに、取得したコンテンツをユーザノードへ送信する。こうして取得されたコンテンツは、ユーザノードから拠点端末Ｔ１−１へ送信される。
【００３４】
なお、ルートノードは、コンテンツ所在応答メッセージをユーザノードへ送信することに代えて、コンテンツ送信要求メッセージをコンテンツ保持ノードへ送信するように構成してもよい。このコンテンツ送信要求メッセージは、取得対象のコンテンツをユーザノードへ送信することを要求するためのメッセージである。また、コンテンツ送信要求メッセージには、取得対象のコンテンツのコンテンツＩＤとユーザノードのＩＰアドレス等が含まれる。コンテンツ送信要求メッセージを受信したコンテンツ保持ノードは、このメッセージに含まれるコンテンツＩＤに対応するコンテンツを記憶部から取得する。コンテンツ保持ノードは、コンテンツ送信要求メッセージに含まれるユーザノードのＩＰアドレス等に基づいてユーザノードにアクセスする。そして、コンテンツ保持ノードは、コンテンツ送信メッセージとともに、取得したコンテンツをユーザノードへ送信する。
【００３５】
ユーザノードは、取得したコンテンツを記憶部に記憶すると、コンテンツ保持ノードとしてパブリッシュ処理を行う。このパブリッシュ処理は、コンテンツを保存していることを他のノードＮｎに公開するための処理である。このパブリッシュ処理において、コンテンツ保持ノードは、パブリッシュメッセージを、ＤＨＴルーティングによりルートノード宛に送信する。このパブリッシュメッセージには、コンテンツのコンテンツＩＤ、及びコンテンツ保持ノードのノード情報等が含まれる。こうしてパブリッシュメッセージを受信したルートノードは、パブリッシュメッセージに含まれるコンテンツのコンテンツＩＤとコンテンツ保持ノードのノード情報との組をインデックス情報として記憶する。なお、パブリッシュ処理は、常駐ノードと一般ノードの双方において行われる。そのため、あるコンテンツのルートノードからユーザノードに提供されるインデックス情報には、常駐ノードのノード情報と一般ノードのノード情報とが混在することになる。
【００３６】
図２（Ａ）は、パブリッシュメッセージが、ＤＨＴルーティングにより、コンテンツ保持ノードからルートノードへ送信される例を示す図である。なお、図２（Ａ）に示す例において、コンテンツ保持ノードは、パブリッシュメッセージの送信先のＩＰアドレスを、ＤＨＴを用いたルーティングテーブルから取得する。同様に、転送ノードＸ，Ｙも、パブリッシュメッセージの送信先のＩＰアドレスを、ＤＨＴを用いたルーティングテーブルから取得する。こうして、図２（Ａ）に示すように、コンテンツ保持ノードから送信されたパブリッシュメッセージは、２つの転送ノードＸ，Ｙにより転送され、ルートノードに到達する。ここで、転送ノードとは、メッセージを転送するノードＮｎをいう。転送ノードには、ルートノードと同様、パブリッシュメッセージに含まれるコンテンツＩＤとコンテンツ保持ノードのノード情報との組が記憶される。つまり、パブリッシュメッセージの転送経路上に存在する転送ノードにもインデックス情報が記憶される。転送ノードは、ユーザノードからルートノード宛に送信されたコンテンツ所在問合せメッセージを受信する場合がある。この場合、転送ノードは、取得対象のコンテンツに対応するインデックス情報を含むコンテンツ所在応答メッセージをユーザノードへ送信することができる。
【００３７】
また、コンテンツ保持ノードは、コンテンツを保存した時にパブリッシュメッセージをルートノード宛に送信した後も、定期的にパブリッシュメッセージをルートノード宛に送信する。この定期的なパブリッシュメッセージを、以下、「定期パブリッシュメッセージ」という。図２（Ｂ）は、定期パブリッシュメッセージが、ＤＨＴルーティングにより、コンテンツ保持ノードからルートノードへ送信される例を示す図である。図２（Ｂ）に示す例では、定期パブリッシュメッセージが送信される際には、転送ノードＹが既にオーバーレイネットワークＯＮから離脱している。そのため、図２（Ｂ）に示すように、転送ノードＸは、新たな転送ノードＺへ定期パブリッシュメッセージを転送することになる。なお、転送ノードＺのＩＰアドレスは、ＤＨＴを用いたルーティングテーブルから取得される。このようにメッセージの転送経路が変更されても、定期パブリッシュメッセージにより、変更後の転送経路上に存在する転送ノードにインデックス情報を記憶させることができる。なお、オーバーレイネットワークＯＮに新たなノードＮｎが参加する場合でも、メッセージの転送経路の変更はあり得る。
【００３８】
更に、転送ノードは、定期的にメッセージの転送経路の変更を確認するための経路変更確認メッセージをルートノード宛に送信する。経路変更確認メッセージには、転送ノードに記憶されたインデックス情報中のコンテンツＩＤが含まれる。図２（Ｃ）は、経路変更確認メッセージが、ＤＨＴルーティングにより、転送ノードＸからルートノードへ送信される例を示す図である。図２（Ｃ）に示す例では、経路変更確認メッセージが送信される際には、転送ノードＹが既にオーバーレイネットワークＯＮから離脱している。そのため、図２（Ｃ）に示すように、転送ノードＸは、新たな転送ノードＺへ経路変更確認メッセージを転送することになる。このようにメッセージの転送経路が変更されても、経路変更確認メッセージにより、変更後の転送経路上に存在する転送ノードにインデックス情報を記憶させることができる。
【００３９】
ところで、オーバーレイネットワークＯＮを介して送受信されるメッセージのヘッダには、このメッセージを送信するノードＮｎのノード情報と、このメッセージの送信先となるノードＮｎのノード情報が含まれる。メッセージを受信したノードＮｎは、このメッセージを送信したノードＮｎのノード情報に基づいて、ＤＨＴを用いたルーティングテーブルを更新するようになっている。更に、本実施形態においては、オーバーレイネットワークＯＮを介して送受信されるメッセージには、このメッセージを送信するノードＮｎが常駐ノード又は一般ノードであることを示す装置識別情報が含まれる。そして、後述するように、メッセージを受信したノードＮｎは、この装置識別情報に基づいて、装置識別情報が常駐ノードを示すときのメッセージ゛に含まれるノード情報を優先して、ＤＨＴを用いたルーティングテーブルに登録することを決定するようになっている。これにより、オーバーレイネットワークＯＮ上での通信を安定させることが可能となる。
【００４０】
なお、オーバーレイネットワークＯＮを介して送受信されるメッセージには、上述したコンテンツ所在問合せメッセージ、コンテンツ要求メッセージ等の他にも様々なメッセージがある。例えば、コンテンツ削除通知メッセージがある。このコンテンツ削除通知メッセージは、コンテンツを削除したことをルートノードに通知するためのメッセージである。コンテンツ削除通知メッセージは、コンテンツを削除したコンテンツ保持ノードから、ＤＨＴルーティングにより、このコンテンツのルートノード宛に送信される。
【００４１】
［２．ルータＲｍの構成及び機能等］
次に、図２（Ｄ）を参照して、ルータＲｍの構成及び機能について説明する。図２（Ｄ）は、ルータＲｍの概要構成例を示す図である。ルータＲｍは、図２（Ｄ）に示すように、制御部１、記憶部２、通信部３ａ、及び通信部３ｂ等を備えて構成される。制御部１、記憶部２、通信部３ａ、及び通信部３ｂはバス４を介して相互に接続されている。記憶部２は、本発明における記憶手段の一例である。なお、各ルータＲｍには、ＩＰアドレスが割り当てられている。  記憶部２は、例えばハードディスクドライブ等から構成される。記憶部２には、オペレーティングシステム、及びノード処理プログラム等が記憶されている。なお、ノード処理プログラム等は、例えば、ネットワークＮＷに接続された所定のサーバからダウンロードされるようにしてもよい。或いは、ノード処理プログラム等は、例えば、記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしてもよい。
【００４２】
また、記憶部２には、オーバーレイネットワークＯＮに参加したルータＲｍの記憶部２には、ＤＨＴを用いたルーティングテーブル等が記憶される。また、記憶部２に設けられたコンテンツ保存領域にはコンテンツが記憶される。コンテンツ保存領域は、コンテンツを保存するための保存領域である。
【００４３】
通信部３ａは、ネットワークＮＷを通じてユーザ端末ＵＴｏ等との間の通信制御を行う。また、通信部３ｂは、拠点ネットワークＮＬｍを通じて拠点端末Ｔｍ−ｌとの間の通信制御を行う。
【００４４】
制御部１は、演算機能を有するＣＰＵ，作業用ＲＡＭ，及びＲＯＭ等から構成される。制御部１は、本発明における第１〜第３受信手段、第１〜第３送信手段、第１〜第５取得手段、決定手段、判定手段、第２決定手段及び登録手段の一例である。また、制御部１は時計機能及びタイマ機能を備える。このタイマ機能により、後述する時間判定タイマの設定及びカウントが行われる。また、制御部１は、ＣＰＵが記憶部２等に記憶されたノード処理プログラムの実行により常駐ノードとして動作する。なお、制御部１は、ＯＳＩ（Open Systems Interconnection）参照モデルの第３層であるネットワーク層において、他のルータ又はホストからのＩＰパケットを中継する機能を有する。ＩＰパケットを中継する機能は、公知のルータ又はＬ３スイッチングハブ等と同様であるので、詳しい説明を省略する。更に、制御部１は、拠点ネットワークＮＬｍを介して接続される拠点端末Ｔｍ−ｌから要求されたコンテンツを、拠点端末Ｔｍ−ｌへ配信する機能を有する。
【００４５】
なお、拠点端末Ｔｍ−ｌがオーバーレイネットワークＯＮに参加するように構成してもよい。
【００４６】
［３．ユーザ端末ＵＴｏの構成及び機能等］
次に、図２（Ｅ）を参照して、ユーザ端末ＵＴｏの構成及び機能について説明する。図２（Ｅ）は、ユーザ端末ＵＴｏの概要構成例を示すブロック図である。ユーザ端末ＵＴｏは、図２（Ｅ）に示すように、制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４、映像処理部１５、表示部１６、音声処理部１７、スピーカ１８、通信部１９、及び入力部１９ａ等を備えて構成される。制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４、映像処理部１５、表示部１６、音声処理部１７、通信部１９、及び入力部１９ａは、バス１９ｂを介して相互に接続されている。記憶部１２は、本発明における記憶手段の一例である。
【００４７】
記憶部１２は、例えばハードディスクドライブ等から構成される。記憶部２には、オペレーティングシステム、及びノード処理プログラム等が記憶されている。なお、ノード処理プログラム等は、例えば、ネットワークＮＷに接続された所定のサーバからダウンロードされるようにしてもよい。或いは、ノード処理プログラム等は、例えば、記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしてもよい。
【００４８】
また、記憶部１２には、オーバーレイネットワークＯＮに参加したユーザ端末ＵＴｏの記憶部１２には、ＤＨＴを用いたルーティングテーブル等が記憶される。また、記憶部１２に設けられたコンテンツ保存領域にはコンテンツが記憶される。
【００４９】
バッファメモリ１３は、受信されたコンテンツをバッファリングする。デコーダ部１４は、コンテンツに含まれる映像データ及び音声データ等のデータ伸張や復号化等のデコード処理を行う。映像処理部１５は、デコーダ部１４によりデコードされた映像データ等に対して所定の描画処理を施し映像信号として再生出力する。表示部１６は、映像処理部１５から再生出力された映像信号に基づきディスプレイに映像等を表示する。また、表示部１６は、デコーダ部１４によりデコードされた画像を表示する。音声処理部１７は、デコーダ部１４によりデコードされた音声データをアナログ音声信号にＤ（Digital）／Ａ（Analog）変換した後これをアンプにより増幅して再生出力する。スピーカ１８は、音声処理部１７から再生出力された音声信号を音波として出力する。
【００５０】
通信部１９は、ネットワークＮＷを通じてルータＲｍ等との間の通信制御を行う。
【００５１】
制御部１１は、演算機能を有するＣＰＵ，作業用ＲＡＭ，及びＲＯＭ等から構成される。制御部１１は、本発明における本発明における第１〜第３受信手段、第１〜第３送信手段、第１〜第５取得手段、決定手段、判定手段、第２決定手段及び登録手段の一例である。また、制御部１１は時計機能及びタイマ機能を備える。このタイマ機能により、後述する時間判定タイマの設定及びカウントが行われる。また、制御部１１は、ＣＰＵが記憶部１２等に記憶されたノード処理プログラムの実行により常駐ノード又は一般ノードとして動作する。
【００５２】
［４．コンテンツ配信システムＳの動作］
次に、図３〜図５を参照して、コンテンツ配信システムＳの動作について説明する。なお、図３（Ａ）は、ノードＮｎにおけるメイン処理を示すフローチャートである。また、図３（Ｂ）は、図３（Ａ）のステップＳ８におけるメッセージ送信処理の詳細を示すフローチャートである。また、図４（Ａ），図５は、図３（Ａ）のステップＳ１０におけるメッセージ受信処理の詳細を示すフローチャートである。なお、図３〜図５に示す処理は、オーバーレイネットワークＯＮにノードＮｎとして参加したルータＲｍの制御部１、又はユーザ端末ＵＴｏの制御部１１により行われる。
【００５３】
図３（Ａ）に示す処理は、ルータＲｍ又はユーザ端末ＵＴｏにおいてノード処理プログラムが起動することにより開始される。なお、ノード処理プログラムの起動は、例えばルータＲｍ又はユーザ端末ＵＴｏの電源オンにより開始される。或いは、ノード処理プログラムの起動は、ユーザ端末ＵＴｏにおいてユーザから入力部１９ａを介してノード処理プログラムの起動指示があった場合に開始される。
【００５４】
図３（Ａ）に示す処理が開始されると、ノードＮｎは、設定ファイルが記憶部に記憶されているか否かを判定する（ステップＳ１）。この設定ファイルには、ステップＳ１の判定を行うノードＮｎが常駐ノード又は一般ノードであることを示す装置識別情報が格納されている。そして、設定ファイルが記憶されていると判定された場合には（ステップＳ１：ＹＥＳ）、ステップＳ２に進む。なお、ルータＲｍである場合、例えば、ルータＲｍの設置時等に設定ファイルが記憶される。この設定ファイルには、常駐ノードであることを示す装置識別情報が格納されている。
【００５５】
一方、設定ファイルが記憶されていないと判定された場合には（ステップＳ１：ＮＯ）、ステップＳ３に進む。
【００５６】
ステップＳ２では、ノードＮｎは、設定ファイルからこのノードＮｎの装置識別情報をＲＡＭの所定の記憶領域に読み込み、ステップＳ６に進む。この所定の記憶領域は、装置識別情報を設定するための領域である。
【００５７】
一方、ステップＳ３では、ノードＮｎは、このノードＮｎが、常駐ノードの条件を満たすか否かを判定する。ノードＮｎは、ステップＳ３の判定結果に基づいて、このノードＮｎが、常駐ノード又は一般ノードであるかを決定することになる。ここで、常駐ノードの条件は、例えばノード処理プログラム中に設定されている。
【００５８】
常駐ノードの条件の例としては、例えば、以下の（ａ）〜（ｄ）が挙げられる。
（ａ）オーバーレイネットワークＯＮへ参加していた継続時間が所定時間以上であること
（ｂ）記憶部に設けられたコンテンツ保存領域の保存容量が所定容量以上であること
（ｃ）通信部が接続される通信回線のデータ通信速度が所定速度以上であること
（ｄ）ＮＡＴ（Network Address Translation）越え可能であること
ここで、上記（ａ）の「オーバーレイネットワークＯＮへ参加していた継続時間」は、例えば、前回、ノードＮｎがオーバーレイネットワークＯＮから離脱する時に記憶部に記憶される。このように記憶された継続時間が条件判定時に参照される。また、上記（ｂ）の「コンテンツ保存領域の保存容量」は例えば、条件判定時にオペレーティングシステムを通じて参照される。また、上記（ｃ）の「通信回線のデータ通信速度」は、例えば、条件判定時に、条件判定を行うノードＮｎが、例えば所定の常駐ノードとの間でデータ通信を行うことで計測される。上記（ｃ）の「通信回線のデータ通信速度」は、言い換えれば、「通信回線の帯域(ｂｐｓ)」である。「通信回線の帯域(ｂｐｓ)」は、通信している通信相手とのセッション数をカウントすることにより求めてもよい。また、上記（ｄ）のＮＡＴ越え可能であるか否かは、例えば、条件判定時にオペレーティングシステムを通じて参照される。なお、ＮＡＴ越えの技術には、利用者がＮＡＴ対応ルータにおいて適切にポートフォワーディング設定をする方法や、「ＵＰｎＰ（Universal Plug and Play）」又は「ＵＤＰ（User Datagram Protocol ） ｈｏｌｅ ｐｕｎｃｈｉｎｇ」などの公知の技術がある。ただし、インターネット環境では、ＮＡＴ越えができても、パーソナルコンピュータのパーソナルファイアウォール等によってインターネット側から接続ができない場合がある。このようなことを考慮して、上記（ｄ）の条件に代えて、「ネットワークＮＷに接続された他の装置からＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）またはＵＤＰ（User Datagram Protocol）／ＩＰの接続を受け付けることが可能であること」を条件としてよい。ここで、「ネットワークＮＷに接続された他の装置」は、例えば、ネットワークＮＷに接続されている他のルータＲｍ又は他のユーザ端末ＵＴｏ等を示す。なお、上記（ａ）〜（ｄ）の条件は、オーバーレイネットワークＯＮの運用に貢献する装置とみなすことができる条件である。上記（ａ）〜（ｄ）の条件の他にも、オーバーレイネットワークＯＮの運用に貢献する装置とみなすことができる条件を用いてもよい。
【００５９】
そして、ノードＮｎは、常駐ノードの条件を満たすと判定した場合には（ステップＳ３：ＹＥＳ）、常駐ノードであると決定し、ステップＳ４に進む。例えば、上記（ａ）〜（ｄ）の全ての条件を満たす場合に、常駐ノードの条件を満たすと判定される。或いは、上記（ａ）の条件、且つ、上記（ｂ）〜（ｄ）の何れか１以上の条件を満たす場合に、常駐ノードの条件を満たすと判定される。或いは、上記（ａ）の条件のみを満たす場合に、常駐ノードの条件を満たすと判定されるように構成してもよい。  一方、ノードＮｎは、常駐ノードの条件を満たさないと判定した場合には（ステップＳ３：ＮＯ）、一般ノードであると決定し、ステップＳ５に進む。
【００６０】
ステップＳ４では、ノードＮｎは、常駐ノードであることを示す装置識別情報をＲＡＭの所定の記憶領域に記憶する。また、ノードＮｎは、常駐ノードであることを示す装置識別情報を格納する設定ファイルを作成して記憶部に記憶する。そして、処理はステップＳ６に進む。
【００６１】
一方、ステップＳ５では、ノードＮｎは、一般ノードであることを示す装置識別情報をＲＡＭの所定の記憶領域に記憶する。また、ノードＮｎは、一般ノードであることを示す装置識別情報を格納する設定ファイルを作成して記憶部に記憶する。そして、処理はステップＳ６に進む。
【００６２】
ステップＳ６では、ノードＮｎは、オーバーレイネットワークＯＮへの参加するための参加処理を行う。この参加処理では、ノードＮｎは、オーバーレイネットワークＯＮへの参加要求を示す参加メッセージを所定の常駐ノードに送信する。この常駐ノードは、オーバーレイネットワークＯＮに参加するノードＮｎが最初にアクセスするコンタクトノードである。このコンテントノードのＩＰアドレス及びポート番号は、例えば、ノード処理プログラムから読み出し可能に記憶部に記憶されている。一方、コンタクトノードは、参加メッセージを受信すると、ＤＨＴを用いたルーティングテーブルから所定数のノード情報を取得する。ここで、ＤＨＴを用いたルーティングテーブルからは常駐ノードのノード情報が優先して取得される。そして、コンタクトノードは、取得した所定数のノード情報を、参加メッセージを送信したノードＮｎへ送信する。なお、コンタクトノードは、ＤＨＴを用いたルーティングテーブルに登録された他の常駐ノードへ参加メッセージを転送するように構成してもよい。この場合、参加メッセージの転送を受けた常駐ノードは、ＤＨＴを用いたルーティングテーブルから所定数のノード情報を取得する。そして、この常駐ノードは、取得した所定数のノード情報を、参加メッセージを送信したノードＮｎへ送信する。一方、参加メッセージを送信したノードＮｎは、コンタクトノード等からの所定数のノード情報を受信する。そして、ノードＮｎは、受信された所定数のノード情報に基づいて、常駐ノードのノード情報を優先的に登録するＤＨＴを用いたルーティングテーブルを生成する。なお、「常駐ノードのノード情報を優先的に登録する」とは、例えば、ＤＨＴを用いたルーティングテーブルに登録されている一般ノードのノード情報を削除して、その代わりに常駐ノードのノード情報を登録することを意味する。或いは、「常駐ノードのノード情報を優先的に登録する」とは、例えば、ＤＨＴを用いたルーティングテーブルにおいて一般ノードのノード情報より常駐ノードのノード情報の数を多く登録することを意味する。或いは、ＤＨＴを用いたルーティングテーブルに登録する候補として、常駐ノードのノード情報と、一般ノードのノード情報があるとする。この場合、「常駐ノードのノード情報を優先的に登録する」とは、一般ノードのノード情報は登録せずに、常駐ノードのノード情報を登録することを意味する。
【００６３】
こうして、ノードＮｎは、常駐ノードのノード情報が優先的に登録されたルーティングテーブルを取得することでオーバーレイネットワークＯＮへの参加が完了する。そして、ノードＮｎはタイマ機能により時間判定タイマ（図示せず）のカウントを開始する。この時間判定タイマは、オーバーレイネットワークＯＮに参加してからの継続時間が、所定時間以上になったか否かを判定するためのものである。ここで、所定時間は例えば２４時間に設定される。また、オーバーレイネットワークＯＮに参加してからの継続時間を、以下、「参加継続時間」という。なお、コンタクトノードは、所定数のノード情報を送信するのではなく、ＤＨＴを用いたルーティングテーブル自体を、参加メッセージを送信したノードＮｎへ送信するように構成してもよい。この場合、ノードＮｎは、ＤＨＴを用いたルーティングテーブルを生成しなくてもよい。
【００６４】
次に、ノードＮｎは、メッセージを送信するか否かを判定する（ステップＳ７）。このメッセージには、上述したように、コンテンツ所在問合せメッセージ、コンテンツ所在応答メッセージ、コンテンツ要求メッセージ、コンテンツ送信メッセージ、パブリッシュメッセージ、及び経路変更確認メッセージなどの様々な種類のメッセージがある。メッセージを送信する条件は、メッセージの種別毎に異なるが、公知であるので詳しい説明を省略する。そして、ノードＮｎは、メッセージを送信すると判定した場合には（ステップＳ７：ＹＥＳ）、ステップＳ８に進む。一方、ノードＮｎは、メッセージを送信しないと判定した場合には（ステップＳ７：ＮＯ）、ステップＳ９に進む。
【００６５】
ステップＳ８では、ノードＮｎは、メッセージ送信処理を行う。このメッセージ送信処理では、図３（Ｂ）に示すように、ノードＮｎは、所定の記憶領域に記憶されている装置識別情報を取得する（ステップＳ８１）。次いで、ノードＮｎは、メッセージの送信先となるノードＮｎのノード情報を取得する（ステップＳ８２）。メッセージの送信先となるノードＮｎのノード情報は、例えば、ＤＨＴを用いたルーティングテーブル又は直前に受信されたメッセージから取得される。次いで、ノードＮｎは、ステップＳ８１で取得した装置識別情報及びステップＳ８２で取得した送信先のノード情報等を含むメッセージを生成する（ステップＳ８３）。なお、生成されるメッセージには、このメッセージを送信するノードＮｎのノード情報が含まれる。ここで、メッセージを送信するノードＮｎのノード情報を、以下、「送信側ノード情報」という。更に、生成されるメッセージによってはコンテンツＩＤ等が含まれる場合もある。そして、ノードＮｎは、生成したメッセージを、メッセージの送信先となるノードＮｎへ送信し（ステップＳ８４）、図３（Ａ）に示す処理に戻る。このように、送信されるメッセージに装置識別情報が含まれるように構成した。そのため、メッセージを受信したノードＮｎは、メッセージを送信したノードＮｎが常駐ノード又は一般ノードであるかを迅速に確認することができる。
【００６６】
ステップＳ９では、ノードＮｎは、メッセージを受信したか否かを判定する。そして、ノードＮｎは、メッセージを受信したと判定した場合には（ステップＳ９：ＹＥＳ）、ステップＳ１０に進む。一方、ノードＮｎは、メッセージを受信していないと判定した場合には（ステップＳ９：ＮＯ）、ステップＳ１１に進む。
【００６７】
ステップＳ１０では、ノードＮｎは、メッセージ受信処理を行う。このメッセージ受信処理の例としては、図４（Ａ）に示す処理と、図５に示す処理とがある。
【００６８】
先ず、図４（Ａ）に示す処理について説明する。図４（Ａ）に示す処理は、ＤＨＴを用いたルーティングテーブルに、常駐ノードのノード情報のみを登録する処理である。図４（Ａ）に示す処理において、ノードＮｎは、受信したメッセージの種類に応じた処理を行う（ステップＳ１０１）。例えば、ノードＮｎは、コンテンツ所在問合せメッセージを受信したとする。この場合、ノードＮｎは、コンテンツ所在問合せメッセージに含まれるコンテンツＩＤに対応するインデックス情報を記憶しているか否かを判定する。そして、ノードＮｎは、インデックス情報を記憶している場合、ステップＳ８に移行して、コンテンツ所在問合せメッセージの送信元のユーザノードへインデックス情報を送信しステップＳ１０１に戻ることになる。
【００６９】
次いで、ノードＮｎは、受信したメッセージから、装置識別情報及び送信側ノード情報を抽出する（ステップＳ１０２）。
【００７０】
次いで、ノードＮｎは、上記ステップＳ１０２で抽出した装置識別情報に基づいて、この装置識別情報に常駐ノードが示されているか否かを判定する（ステップＳ１０３）。つまり、メッセージを送信したノードＮｎが常駐ノードであるか否かが判定される。そして、ノードＮｎは、装置識別情報に常駐ノードが示されていないと判定した場合には（ステップＳ１０３：ＮＯ）、図３（Ａ）に示す処理に戻る。つまり、メッセージを送信したノードＮｎが一般ノードである場合、上記ステップＳ１０２で抽出した送信側ノード情報を、ＤＨＴを用いたルーティングテーブルに登録しないことが決定される。一方、ノードＮｎは、装置識別情報に常駐ノードが示されていると判定した場合には（ステップＳ１０３：ＹＥＳ）、ステップＳ１０４に進む。この場合、ステップＳ１０４以降の処理で、常駐ノードのノード情報を、ＤＨＴを用いたルーティングテーブルに登録されるか否かが決定される。
【００７１】
ここで、図４（Ｂ）に示すＤＨＴを用いたルーティングテーブルの概要について説明する。図４（Ｂ）に示すルーティングテーブルは、メッセージを受信したノードＮｎが記憶するルーティングテーブルの一例である。図４（Ｂ）に示す例においては、説明の便宜上、ノードＩＤのｂｉｔ長を２ｂｉｔ×３桁＝６ｂｉｔとし、各桁を４進数で表している。また、メッセージを受信したノードＮｎのノードＩＤは、“１２２”であるものとする。また、図４（Ｂ）に示すＤＨＴを用いたルーティングテーブルは、レベル１〜レベル３のテーブルからなる。各レベルのテーブルには、エリア毎に、ノード情報を登録するための登録領域を有する。この登録領域を、以下、「エントリー」という。このような複数のエントリーの中には、ノードＩＤが未登録のエントリーも含まれる。また、各エリアは、図１に示すＩＤ空間を分割することにより得られるエリアである。例えば、ＩＤ空間を４分割することにより、０ＸＸのエリア、１ＸＸのエリア、２ＸＸのエリア、及び３ＸＸのエリアが得られる。ここで、“Ｘ”は、０〜３の整数である。レベル１のテーブルは、０ＸＸのエリア、１ＸＸのエリア、２ＸＸのエリア、及び３ＸＸのエリアの夫々に対応するエントリーを有する。更に、ノードＩＤ“１２２”を含む１ＸＸのエリアを４分割することにより、１０Ｘのエリア、１１Ｘのエリア、１２Ｘのエリア、及び１３Ｘのエリアが得られる。レベル２のテーブルは、１０Ｘのエリア、１１Ｘのエリア、１２Ｘのエリア、及び１３Ｘのエリアの夫々に対応するエントリーを有する。更に、ノードＩＤ“１２２”を含む１２Ｘのエリアを４分割することにより、１２０のエリア、１２１のエリア、１２２のエリア、及び１２３のエリアが得られる。レベル３のテーブルは、１２０のエリア、１２１のエリア、１２２のエリア、及び１２３のエリアの夫々に対応するエントリーを有する。なお、ノードＩＤのｂｉｔ長を例えば１６桁×４ｂｉｔとした場合、１６レベル分のテーブルが必要となる。
【００７２】
ステップＳ１０４では、ノードＮｎは、上記ステップＳ１０２で抽出した送信側ノード情報に含まれるノードＩＤを登録可能なエントリーを決定する。ここで、ノードＩＤを登録可能なエントリーとは、ノードＩＤが含まれるエリアに対応するエントリーである。
【００７３】
ステップＳ１０５では、ノードＮｎは、上記ステップＳ１０４で決定したエントリーが未登録であるか否かを判定する。例えば、送信側ノード情報に含まれるノードＩＤが“１１２”であるとする。この場合、図４（Ｂ）に示す例では、上記ステップＳ１０４で決定されるエントリーＥ１は未登録になっている。或いは、例えば、送信側ノード情報に含まれるノードＩＤが“１３０”であるとする。この場合、図４（Ｂ）に示す例では、上記ステップＳ１０４で決定されるエントリーＥ２には、ノードＩＤ“１３１”が既に登録されている。そして、ノードＮｎは、上記ステップＳ１０４で決定したエントリーが未登録であると判定した場合には（ステップＳ１０５：ＹＥＳ）、ステップＳ１０６に進む。一方、ノードＮｎは、上記ステップＳ１０４で決定したエントリーが未登録でないと判定した場合には（ステップＳ１０５：ＮＯ）、ステップＳ１０７に進む。
【００７４】
ステップＳ１０６では、ノードＮｎは、上記ステップＳ１０２で抽出した送信側ノード情報を上記ステップＳ１０４で決定したエントリーに登録し、図３（Ａ）に示す処理に戻る。
【００７５】
一方、ステップＳ１０７では、ノードＮｎは、上記ステップＳ１０２で抽出した送信側ノード情報に含まれるノードＩＤと、上記ステップＳ１０４で決定したエントリーに既に登録されているノードＩＤとが同一であるか否かを判定する。そして、ノードＮｎは、２つのノードＩＤが同一であると判定した場合には（ステップＳ１０７：ＹＥＳ）、図３（Ａ）に示す処理に戻る。一方、ノードＮｎは、２つのノードＩＤが同一でないと判定した場合には（ステップＳ１０７：ＮＯ）、ステップＳ１０８に進む。
【００７６】
ステップＳ１０８では、ノードＮｎは、このノードＮｎと、上記ステップＳ１０２で抽出した送信側ノード情報に対応する常駐ノードとの間のホップ数を示す情報を取得する。なお、メッセージを受信したノードＮｎと、上記ステップＳ１０２で抽出した送信側ノード情報に対応する常駐ノードとの間のホップ数を、以下、「第１ホップ数」という。更に、ノードＮｎは、このノードＮｎと、上記ステップＳ１０４で決定したエントリーに既に登録されている他の常駐ノードとの間のホップ数を示す情報を取得する。なお、メッセージを受信したノードＮｎと、上記ステップＳ１０４で決定したエントリーに既に登録されている他の常駐ノードとの間のホップ数を、以下、「第２ホップ数」という。
【００７７】
ここで、ホップ数は、ルータ等の中継機器の数である。また、ホップ数は、２つのノードＮｎ間で送受信されるＩＰパケットのヘッダ中に設定されたＴＴＬ（Time To Live）を用いて計算することができる。ＩＰパケットの送信側のノードＮｎで設定されたＴＴＬの値は、中継機器を１回経由する度に値が１減少する。そのため、ＩＰパケットを受信したノードＮｎは、ＴＴＬの値の減少数を計算することでホップ数を示す情報を取得することができる。
【００７８】
次いで、ノードＮｎは、第１ホップ数が第２ホップ数より小さいか否か判定する（ステップＳ１０９）。この判定は、ホップ数が小さい方の常駐ノードのノード情報をＤＨＴを用いたルーティングテーブルに登録するために行われる。
【００７９】
そして、ノードＮｎは、第１ホップ数が第２ホップ数より小さくないと判定した場合には（ステップＳ１０９：ＮＯ）、図３（Ａ）に示す処理に戻る。つまり、上記ステップＳ１０４で決定したエントリーへの常駐ノードのノード情報の登録が維持される。一方、ノードＮｎは、第１ホップ数が第２ホップ数より小さいと判定した場合には（ステップＳ１０９：ＹＥＳ）、ステップＳ１１０に進む。
【００８０】
なお、上記ステップＳ１０８及びＳ１０９では、ＤＨＴを用いたルーティングテーブルに登録するノード情報を決定するに当たり、ノードＮｎ間のホップ数を用いるように構成した。別の例として、ノードＮｎのデータ通信速度を用いるように構成してもよい。データ通信速度は、言い換えれば、ノードＮｎ間の通信回線の帯域（ｂｐｓ）である。この場合、上記ステップＳ１０８において、ノードＮｎは、このノードＮｎと、上記ステップＳ１０２で抽出した送信側ノード情報に対応する常駐ノードとの間のデータ通信速度を示す情報を取得する。なお、メッセージを受信したノードＮｎと、上記ステップＳ１０２で抽出した送信側ノード情報に対応する常駐ノードとの間のデータ通信速度を、以下、「第１通信速度」という。また、ノードＮｎは、このノードＮｎと、上記ステップＳ１０４で決定したエントリーに既に登録されている他の常駐ノードとの間のデータ通信速度を示す情報を取得する。なお、メッセージを受信したノードＮｎと、上記ステップＳ１０４で決定したエントリーに既に登録されている他の常駐ノードとの間のデータ通信速度を、以下、「第２通信速度」という。ここで、データ通信速度は、ノードＮｎが、各々の常駐ノードとの間でデータ通信を行うことで計測される。また、上記ステップＳ１０９において、ノードＮｎは、第１通信速度が第２通信速度より速いか否か判定する。この判定は、データ通信速度が速い方の常駐ノードのノード情報をＤＨＴを用いたルーティングテーブルに登録するために行われる。そして、ノードＮｎは、第１通信速度が第２通信速度より速くないと判定した場合には（ステップＳ１０９：ＮＯ）、図３（Ａ）に示す処理に戻る。一方、ノードＮｎは、第１通信速度が第２通信速度より速いと判定した場合には（ステップＳ１０９：ＹＥＳ）、ステップＳ１１０に進む。
【００８１】
或いは、別の例として、ノードＮｎの通信部が接続される通信回線の帯域を用いるように構成してもよい。この場合、上記ステップＳ１０８において、ノードＮｎは、このノードＮｎと、上記ステップＳ１０２で抽出した送信側ノード情報に対応する常駐ノードとの間の通信回線の帯域を示す情報を取得する。なお、メッセージを受信したノードＮｎと、上記ステップＳ１０２で抽出した送信側ノード情報に対応する常駐ノードとの間の通信回線の帯域を、以下、「第１帯域」という。また、ノードＮｎは、このノードＮｎと、上記ステップＳ１０４で決定したエントリーに既に登録されている他の常駐ノードとの間の通信回線の帯域を示す情報を取得する。なお、メッセージを受信したノードＮｎと、上記ステップＳ１０４で決定したエントリーに既に登録されている他の常駐ノードとの間の通信回線の帯域を、以下、「第２帯域」という。ここで、帯域は、ノードＮｎが、各々の常駐ノードとの間のデータ通信速度を計測することで得られる。或いは、帯域は、各々の常駐ノードのセッション数を各々の常駐ノードから取得することで得られる。また、上記ステップＳ１０９において、ノードＮｎは、第１帯域が第２帯域より広いか否か判定する。この判定は、帯域が広い方の常駐ノードのノード情報をＤＨＴを用いたルーティングテーブルに登録するために行われる。帯域が広いとは、データ通信速度が速いことを意味する。また、帯域が広いとは、セッション数が少ないことを意味する。常駐ノードのセッション数が多いということは、常駐ノードがセッションを張っている通信相手の数が多いことを意味する。その結果、セッション数分、帯域が占有されるため、使用できる帯域が狭くなる。したがって、上記ステップＳ１０９において、ノードＮｎは、双方の常駐ノードのセッション数を比較判定してもよい。そして、ノードＮｎは、第１帯域が第２帯域より広くないと判定した場合には（ステップＳ１０９：ＮＯ）、図３（Ａ）に示す処理に戻る。一方、ノードＮｎは、第１帯域が第２帯域より広いと判定した場合には（ステップＳ１０９：ＹＥＳ）、ステップＳ１１０に進む。
【００８２】
ステップＳ１１０では、ノードＮｎは、上記ステップＳ１０２で抽出した送信側ノード情報を、上記ステップＳ１０４で決定したエントリーに登録されている常駐ノードのノード情報に代えて登録し、図３（Ａ）に示す処理に戻る。つまり、この場合、メッセージを送信した常駐ノードのノード情報が、エントリーに既に登録されている常駐ノードのノード情報より優先して登録される。これにより、ネットワークＮＷに与える負荷を低減することができる。そのため、メッセージの送信先としてより適切なノードＮｎのノード情報がエントリーに登録されるように更新することができる。
【００８３】
以上説明したように、図４（Ａ）に示す処理によれば、各ノードＮｎに記憶されるＤＨＴを用いたルーティングテーブルを、常駐ノードのノード情報のみが登録されるルーティングテーブルにすることができる。そのため、ＤＨＴを用いたルーティングテーブルに登録されたノードＮｎが離脱することに起因するメッセージの遅延を回避することができる。したがって、オーバーレイネットワークＯＮにおける通信を安定させることができる。
【００８４】
なお、上記図４（Ａ）に示す処理においてステップＳ１０７で“ＮＯ”となった場合に、ノードＮｎはステップＳ１０８〜Ｓ１０９の処理を行わずにステップＳ１１０に移行するように構成してもよい。つまり、ノードＮｎは、ホップ数等を比較することなく、常駐ノードのノード情報を優先して登録するように構成しても良い。このことは、後述する図５に示すステップＳ２０９、Ｓ２１０、Ｓ２１４、及びＳ２１５でも同様である。
【００８５】
次に、図５に示す処理について説明する。図５に示す処理は、ＤＨＴを用いたルーティングテーブルに、常駐ノードのノード情報と一般ノードのノード情報を登録する処理である。但し、図５に示す処理では、一般ノードよりも常駐ノードのノード情報の登録が優先される。また、図４（Ｂ）に示すＤＨＴを用いたルーティングテーブルには、図示しないが、各エントリーに登録されるノード情報には、常駐ノードであるか否かを示す情報が対応付けられて登録される。常駐ノードであるか否かを示す情報は、例えば、フラグで表わされる。例えばフラグが“１”の場合、常駐ノードを示す。一方、フラグが“０”の場合、一般ノードを示す。
【００８６】
図５に示す処理において、ステップＳ２０１、Ｓ２０２、Ｓ２０３、及び２０４の処理は、夫々、ステップＳ１０１、Ｓ１０２、Ｓ１０４、及びＳ１０５の処理と同様である。
【００８７】
ノードＮｎは、上記ステップＳ２０３で決定したエントリーが未登録であると判定した場合には（ステップＳ２０４：ＹＥＳ）、ステップＳ２０５に進む。一方、ノードＮｎは、上記ステップＳ２０３で決定したエントリーが未登録でないと判定した場合には（ステップＳ２０４：ＮＯ）、ステップＳ２０６に進む。
【００８８】
ステップＳ２０５では、ノードＮｎは、上記ステップＳ２０２で抽出した送信側ノード情報、及び常駐ノードであるか否かを示すフラグを上記ステップＳ２０３で決定したエントリーに登録し、図３（Ａ）に示す処理に戻る。ここで、上記ステップＳ２０２で抽出された装置識別情報に常駐ノードが示されている場合、常駐ノードであることを示すフラグがエントリーに登録される。
【００８９】
一方、ステップＳ２０６の処理は、上記ステップＳ１０７の処理と同様である。ステップＳ２０６において、ノードＮｎは、上記ステップＳ２０２で抽出した送信側ノード情報に含まれるノードＩＤと、上記ステップＳ２０３で決定したエントリーに既に登録されているノードＩＤとが同一でないと判定した場合には（ステップＳ２０６：ＮＯ）、ステップＳ２０７に進む。
【００９０】
ステップＳ２０７の処理は、上記ステップＳ１０３の処理と同様である。そして、ノードＮｎは、装置識別情報に常駐ノードが示されていると判定した場合には（ステップＳ２０７：ＹＥＳ）、ステップＳ２０８に進む。一方、ノードＮｎは、装置識別情報に常駐ノードが示されていないと判定した場合には（ステップＳ２０７：ＮＯ）、ステップＳ２１３に進む。
【００９１】
ステップＳ２０８では、ノードＮｎは、上記ステップＳ２０３で決定したエントリーに常駐ノードのノード情報が登録されているか否かを判定する。例えば、このエントリーにフラグ“１”が登録されていれば、常駐ノードのノード情報が登録されていると判定される。そして、ノードＮｎは、エントリーに常駐ノードのノード情報が登録されていると判定した場合には（ステップＳ２０８：ＹＥＳ）、ステップＳ２０９に進む。この場合、メッセージを送信したノードＮｎとメッセージを受信したノードＮｎの双方共、常駐ノードである。一方、ノードＮｎは、エントリーに常駐ノードのノード情報が登録されていないと判定した場合には（ステップＳ２０８：ＮＯ）、ステップＳ２１２に進む。
【００９２】
ステップＳ２０９〜Ｓ２１１の処理は、上記Ｓ１０８〜Ｓ１１０の処理と同様である。
【００９３】
ステップＳ２１２では、ノードＮｎは、ノードＮｎは、上記ステップＳ２０２で抽出した送信側ノード情報を、上記ステップＳ２０３で決定したエントリーに登録されている一般ノードのノード情報に代えて登録し、図３（Ａ）に示す処理に戻る。つまり、この場合、メッセージを送信した常駐ノードのノード情報が、エントリーに既に登録されている一般ノードのノード情報より優先して登録される。言い換えれば、一般ノードのノード情報は、ＤＨＴを用いたルーティングテーブルから削除される。そのため、常駐ノードの数の増加にしたがって、常駐ノードのノード情報が多く登録されるＤＨＴを用いたルーティングテーブルにしていくことができる。
【００９４】
ステップＳ２１３では、上記ステップＳ２０８と同様である。そして、ノードＮｎは、エントリーに常駐ノードのノード情報が登録されていると判定した場合には（ステップＳ２１３：ＹＥＳ）、図３（Ａ）に示す処理に戻る。つまり、上記ステップＳ２０３で決定したエントリーへの常駐ノードのノード情報の登録が維持される。一方、ノードＮｎは、エントリーに常駐ノードのノード情報が登録されていないと判定した場合には（ステップＳ２１３：ＮＯ）、ステップＳ２１４に進む。この場合、メッセージを送信したノードＮｎとメッセージを受信したノードＮｎの双方共、一般ノードである。
【００９５】
なお、ステップＳ２１４〜Ｓ２１６の処理は、ホップ数が小さい方又はデータ通信速度が速い方の一般ノードのノード情報をＤＨＴを用いたルーティングテーブルに登録するための処理である。ステップＳ２１４〜Ｓ２１６の処理は、上記Ｓ１０８〜Ｓ１１０の処理と同様の要領で行われる。
【００９６】
以上説明したように、図５に示す処理によれば、各ノードＮｎに記憶されるＤＨＴを用いたルーティングテーブルを、一般ノードより常駐ノードのノード情報が優先して登録されるルーティングテーブルにすることができる。そのため、ＤＨＴを用いたルーティングテーブルに登録されたノードＮｎが離脱することに起因するメッセージの遅延を少なくすることができる。したがって、オーバーレイネットワークＯＮにおける通信を安定させることができる。加えて、図５に示す処理によれば、各ノードＮｎに記憶されるＤＨＴを用いたルーティングテーブルにおける未登録のエントリーを少なくすることができる。そのため、オーバーレイネットワークＯＮにおける通信を円滑に行わせることができる。
【００９７】
図３（Ａ）に示す処理に戻り、ステップＳ１１では、ノードＮｎは、オーバーレイネットワークＯＮへの参加継続時間が所定時間以上になったか否かを判定する。例えば、時間判定タイマのカウント値が、所定時間以上になった場合には、参加継続時間が所定時間以上になったと判定される。そして、ノードＮｎは、参加継続時間が所定時間以上になったと判定した場合には（ステップＳ１１：ＹＥＳ）、ステップＳ１２に進む。なお、参加継続時間が所定時間以上になった場合、時間判定タイマのカウント値がリセットされ、その後のカウントが停止される。一方、ノードＮｎは、参加継続時間が所定時間以上になっていないと判定した場合には（ステップＳ１１：ＮＯ）、ステップＳ１５に進む。
【００９８】
ステップＳ１２では、ノードＮｎは、このノードＮｎの記憶部に記憶されている設定ファイルに格納された装置識別情報に常駐ノードが示されているか否かを判定する。つまり、この判定を行うノードＮｎが常駐ノードに設定されているか否かが判定される。そして、ノードＮｎは、装置識別情報に常駐ノードが示されていると判定した場合には（ステップＳ１２：ＹＥＳ）、ステップＳ１５に進む。一方、ノードＮｎは、装置識別情報に常駐ノードが示されていないと判定した場合には（ステップＳ１２：ＮＯ）、ステップＳ１３に進む。装置識別情報に常駐ノードが示されていないと判定した場合とは、この判定を行うノードＮｎが一般ノードとして設定されている場合である。
【００９９】
ステップＳ１３では、ノードＮｎは、このノードＮｎが、常駐ノードの条件を満たすか否かを判定する。このステップＳ１３の処理は、上記ステップＳ３の処理と基本的に同様である。ただし、ステップＳ１３では、ステップＳ３の場合の上記（ａ）の条件に代えて、今回の参加継続時間が所定時間以上であることが（ａ）の条件とされる。そして、ノードＮｎは、常駐ノードの条件を満たすと判定した場合には（ステップＳ１３：ＹＥＳ）、ステップＳ１４に進む。なお、ステップＳ１３において、上記（ａ）の条件のみが用いられる場合、この条件は上記ステップＳ１１で判断されている。そのため、この場合、ノードＮｎは、ステップＳ１３の判定を行わずに、ステップＳ１４へ移行することになる。一方、ノードＮｎは、常駐ノードの条件を満たさないと判定した場合には（ステップＳ１３：ＮＯ）、ステップＳ１５に進む。
【０１００】
ステップＳ１４では、ノードＮｎは、ＲＡＭの所定の記憶領域に記憶されている装置識別情報を、一般ノードから常駐ノードに書き換える。また、ノードＮｎは、記憶部に記憶されている設定ファイルに格納されている装置識別情報を、一般ノードから常駐ノードに書き換える。これにより、オーバーレイネットワークＯＮへの参加時には一般ノードであったノードＮｎを、その後に常駐ノードとして格上げすることができる。これ以降、ステップＳ８のメッセージ送信処理において送信されるメッセージ中の装置識別情報には常駐ノードであることが示されることになる。
【０１０１】
ステップＳ１５では、ノードＮｎは、処理終了指示があったか否かを判定する。例えば、例えばルータＲｍ又はユーザ端末ＵＴｏの電源オフ指示があった場合に処理終了指示があったと判定される。或いは、ノード処理プログラムの終了指示があった場合に処理終了指示があったと判定される。そして、ノードＮｎは、処理終了指示がないと判定した場合には（ステップＳ１５：ＮＯ）、ステップＳ７に戻る。一方、ノードＮｎは、処理終了指示があったと判定した場合には（ステップＳ１５：ＹＥＳ）、図３（Ａ）に示す処理を終了する。
【０１０２】
以上説明したように、上記実施形態によれば、メッセージを受信したノードＮｎは、このメッセージに含まれる、常駐ノード又は一般ノードであることを示す装置識別情報に基づいて、装置識別情報が常駐ノードを示すときのメッセージ゛に含まれるノード情報を優先して、ＤＨＴを用いたルーティングテーブルに登録することを決定する。この結果、ＤＨＴを用いたルーティングテーブルには、常駐ノードのノード情報のみが登録される。或いは、ＤＨＴを用いたルーティングテーブルには、一般ノードのノード情報より常駐ノードのノード情報が優先して登録される。そのため、常駐ノードと一般ノードとが混在するオーバーレイネットワークＯＮ上での通信を安定させることが可能となる。したがって、常駐ノードがオーバーレイネットワークＯＮに参加しているメリットを活かすことができる。
【０１０３】
また、上述したように、ＤＨＴを用いたルーティングテーブルに登録されたノードＮｎはオーバーレイネットワークＯＮから離脱する可能性が低くなるため、メッセージの転送経路が変更され難くなる。そのため、定期パブリッシュメッセージや経路変更確認メッセージを送信する時間間隔を従来に比べて短くすることができる。この結果、ネットワークＮＷの負荷を低減することができる。
【０１０４】
また、上記実施形態では、ＤＨＴを用いたルーティングテーブルに登録する対象を制限することで、一般ノードがメッセージを転送する頻度が低くなる。しかし、一般ノードも常駐ノードと同様、上記パブリッシュ処理を行う。そのため、ルートノードはコンテンツ保持ノードとして、一般ノードと常駐ノードのノード情報が混在するインデックス情報をユーザノードへ提供することができる。この結果、一般ノードのコンテンツ記憶領域を有効に活用することができる。また、ユーザノードは、一般ノードと常駐ノードのノード情報が混在するインデックス情報を用いることで効率良くコンテンツの分散ダウンロードを行うことができる。ここで、分散ダウンロードとは、一つのコンテンツを構成する各部分データを、それぞれ異なるコンテンツ保持ノードからダウンロードすることをいう。分散ダウンロードは取得の一例である。一般ノードと常駐ノードのノード情報が混在するインデックス情報を用いるユーザノードは、一般ノードと常駐ノードを所定の割合で利用することができる。例えば、一般ノードを１０台、常駐ノードを１０台というように半々で利用することができる。そして、ユーザノードは、一般ノードと常駐ノードとの夫々から部分データをダウンロードする。また、ユーザノードが一般ノードからの部分データのダウンロードする速度が所定速度より遅い場合がある。この場合、ユーザノードは、ダウンロード先を一般ノードから常駐ノードに切り換えるように構成すれば、より効率良くコンテンツのダウンロードを行うことができる。
【０１０５】
なお、ルートノードから、一般ノードのノード情報を含むインデックス情報がユーザノードへ提供された後に、この一般ノードがオーバーレイネットワークＯＮから離脱する場合がある。この場合、ユーザノードが一般ノードへアクセスする処理は無駄になってしまう。そのため、上記実施形態において、一般ノードがパブリッシュ処理を行わないように構成してもよい。これにより、一般ノードのノード情報はインデックス情報としてルートノード等に記憶されない。或いは、一般ノードはパブリッシュ処理を行うが、ルートノードは一般ノードからのパブリッシュメッセージを破棄するように構成してもよい。この場合、ルートノードは一般ノードのノード情報をインデックス情報として記憶しない。このような構成は、多くの常駐ノードが存在することで、公開される全てのコンテンツを保存するためのコンテンツ記憶領域を常駐ノードだけで確保できる場合に有効である。
【０１０６】
なお、上記実施形態においては、本発明の第１の情報処理装置の一例としてルータＲｍ又はユーザ端末ＵＴｏを例にとって説明したがこれに限定されるものではなく、第１の情報処理装置はネットワークＮＷに接続されているサーバ等であってもよい。また、第１の情報処理装置は、基本的にネットワークＮＷに定常的に接続されているゲートウェイ等の機器であっても良い。
【０１０７】
また、上記実施形態においては、オーバーレイネットワークＯＮに、ＤＨＴを利用したピアツーピアネットワークを適用したが、これに限られるものではない。例えば、他のオーバーレイネットワークを用いたシステムが適用されてもよい。ＤＨＴを利用しないピアツーピアシステムとしては、例えば、ハイブリッド型のピアツーピアシステムがある。
【符号の説明】
【０１０８】
１，１１  制御部
２，１２  記憶部
３ａ，３ｂ，１９  通信部
１３  バッファメモリ
Ｒｍ  ルータ
ＵＴｏ  ユーザ端末
Ｎｎ  ノード
ＮＷ  ネットワーク
ＯＮ  オーバーレイネットワーク
Ｓ  コンテンツ配信システム
【図１】
0005370315.tif 000002
【図２】
0005370315.tif 000003
【図３】
0005370315.tif 000004
【図４】
0005370315.tif 000005
【図５】
0005370315.tif 000006