ノード装置、コンピュータプログラム、情報配信システム、及びネットワーク参加方法
【課題】 ローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能で、実際のネットワークへの余分な負荷を軽減することが可能なネットワーク参加方法を提供する。
【解決手段】 オーバーレイネットワークに参加するノード装置は、参加要求情報を送信すべき複数のノード装置の装置情報を取得し、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定し、設定した到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、取得した各前記装置情報により特定される各前記ノード装置に対して送信する。そして、受信した返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する。
【解決手段】 オーバーレイネットワークに参加するノード装置は、参加要求情報を送信すべき複数のノード装置の装置情報を取得し、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定し、設定した到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、取得した各前記装置情報により特定される各前記ノード装置に対して送信する。そして、受信した返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信ネットワークを介して互いに接続された複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の情報配信システム及び方法等に関し、特に、上記複数のノード装置のうちの全部又は一部のノード装置の参加により形成されているオーバーレイネットワークに未参加のノード装置が参加するための技術分野に関する。
【背景技術】
【0002】
ピアツーピア型の情報配信システムにおいて、例えば、分散ハッシュテーブル(以下、DHT(Distributed Hash Table)という)を利用して論理的に構築されたオーバーレイネットワークでは、各ノード装置が、当該オーバーレイネットワークに参加している全てのノード装置へのリンク情報(例えば、IPアドレス)を認識しているわけではなく、参加の際などに得られる一部のノード装置へのリンク情報だけを保持しており、かかるリンク情報に基づき、データの問い合わせ等を行うようになっている。
【0003】
このようなオーバーレイネットワークにおいては、ノード装置の参加及び脱退(離脱)が頻繁に行われても、負荷分散が適切に行われる必要があり、非特許文献1には、オーバーレイネットワークにおいて、参加及び脱退(離脱)が頻繁に行われる場合であっても、適切に負荷分散を行うための技術が開示されている。
【非特許文献1】「分散ハッシュテーブルの軽量な負荷分散手法の検討」 社団法人 電子情報通信学会 信学技報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記従来の技術においては、各ノード装置のリンク情報は、ローカリティ(地域性)、言い換えれば、実際のネットワーク(実ネットワーク)上の近さが考慮されていないため、実際のネットワークに対して余分な負荷を与えることが考えられる。
【0005】
本発明は、以上の問題等に鑑みてなされたものであり、ローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能で、実際のネットワークへの余分な負荷を軽減することが可能なノード装置、コンピュータプログラム、情報配信システム、及びネットワーク参加方法を提供することを課題とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークに参加するノード装置であって、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、前記参加要求情報を受信したノード装置から送信された返信情報であって、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を受信する返信情報受信手段と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を備えることを特徴とする。
【0007】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、上記参加要求情報の到達可能範囲を表す情報を設定し、当該設定した情報を参加要求情報に付加して、複数のノード装置に対して送信し、上記参加要求情報を受信することができたノード装置から送信されてきた返信情報に含まれる転送先テーブルに基づいて自己が使用するべき転送先テーブルを生成して、オーバーレイネットワークに参加するようにしたので、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となり、通信ネットワークへの余分な負荷を軽減することができる。
【0008】
請求項2に記載の発明は、請求項1に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記参加要求情報送信手段は、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とする。
【0009】
この発明によれば、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0010】
請求項3に記載の発明は、請求項1に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記到達可能範囲設定手段は、前記参加要求情報の到達可能範囲を表す情報を変更設定し、前記参加要求情報送信手段は、前記変更設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とする。
【0011】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、参加要求情報を送信してから所定時間以内に返信情報を受信しない場合には、当該参加要求情報の到達可能範囲を表す情報を変更設定し、当該変更設定された情報を参加要求情報に付加して、再度、各ノード装置に対して送信するようにしたので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0012】
請求項4に記載の発明は、請求項4に記載のノード装置において、前記到達可能範囲設定手段は、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を表す情報を変更設定することを特徴とする。
【0013】
この発明によれば、上記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を広げていけるので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0014】
請求項5に記載の発明は、請求項1乃至4の何れか一項に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記装置情報取得手段は、前回取得した前記ノード装置の装置情報とは異なる装置情報を複数取得し、前記参加要求情報送信手段は、前記参加要求情報を当該取得された各前記装置情報により特定される各前記ノード装置に対して送信することを特徴とする。
【0015】
この発明によれば、返信情報が届かないときに、前回取得したノード装置の装置情報とは異なる装置情報を取得してこれらのノード装置に参加要求情報を送信するようにしたので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0016】
請求項6に記載の発明は、請求項1乃至5の何れか一項に記載のノード装置において、前記転送先テーブルは、複数のレベルに区分されており、前記返信情報受信手段が、複数の前記ノード装置から前記返信情報を受信した場合に、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの前記複数の転送先テーブルのうち、前記参加要求情報の到達可能範囲が最も狭い設定で受信可能な1の前記ノード装置における前記転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とする。
【0017】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、複数のノード装置からの返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの複数の転送先テーブルのうち、参加要求情報の到達可能範囲が最も狭い設定で受信可能なノード装置における転送先テーブルに基づいて、自己が使用するべき転送先テーブルが生成するようにしたので、よりネットワーク的に近い(例えば、HOP数が少ない)ノード装置の転送先テーブルが優先して登録されることになり、転送先テーブルもローカリティ(地域性)が考慮され、より一層、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0018】
請求項7に記載の発明は、請求項1乃至6何れか一項に記載のノード装置において、前記参加要求情報送信手段は、自己に固有の識別情報を前記参加要求情報に付加して当該参加要求情報を送信し、前記参加要求情報は、当該参加要求情報を受信した前記ノード装置から、前記固有の識別情報の管理元であるノード装置に至るまで前記固有の識別情報に従って転送され、前記返信情報受信手段は、前記参加要求情報を転送する夫々のノード装置から送信された前記返信情報を受信し、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とする。
【0019】
この発明によれば、参加要求情報は、複数のノード装置に転送されるので、より多くのノード装置の転送先テーブルを取得することができる。
【0020】
請求項8に記載にコンピュータプログラムは、コンピュータを、請求項1乃至7何れか一項に記載のノード装置として機能させることを特徴とする。
【0021】
請求項9に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置を備えた情報配信システムであって、当該複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークを有する情報配信システムにおいて、前記オーバーレイネットワークに参加するノード装置は、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、を備え、前記参加要求情報を受信したノード装置は、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する返信情報送信手段を備え、前記オーバーレイネットワークに参加するノード装置は、前記転送先テーブルを含む返信情報を受信する返信情報受信手段と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を更に備えることを特徴とする。
【0022】
請求項10に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークへのネットワーク参加方法であって、前記オーバーレイネットワークに参加するノード装置は、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する工程と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する工程と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する工程と、を備え、前記参加要求情報を受信したノード装置は、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する工程を備え、前記オーバーレイネットワークに参加するノード装置は、前記転送先テーブルを含む返信情報を受信する工程と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する工程と、を更に備えることを特徴とする。
【発明の効果】
【0023】
本発明によれば、オーバーレイネットワークにこれから参加するノード装置は、上記参加要求情報の到達可能範囲を表す情報を設定し、当該設定した情報を参加要求情報に付加して、複数のノード装置に対して送信し、上記参加要求情報を受信することができたノード装置から送信されてきた返信情報に含まれる転送先テーブルに基づいて自己が使用するべき転送先テーブルを生成して、オーバーレイネットワークに参加するようにしたので、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となり、通信ネットワークへの余分な負荷を軽減することができる。
【発明を実施するための最良の形態】
【0024】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに対して本発明を適用した場合の実施形態である。
【0025】
[1.コンテンツ配信システムの構成等]
始めに、図1を参照して、コンテンツ配信システムの概要構成等について説明する。
【0026】
図1は、本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【0027】
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a,4b、DSL(Digital Subscriber Line)回線事業者(の装置)5a,5b、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界の通信ネットワーク)8が構築されている。なお、図1の例におけるネットワーク(通信ネットワーク)8には、データ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
【0028】
コンテンツ配信システムSは、このようなネットワーク8を介して相互に接続された複数のノード装置n1,n2・・・n21を備えて構成されることになり、ピアツーピア方式のネットワークシステムとなっている(なお、実際には、これ以上のノード装置が存在することになる)。また、各ノード装置n1〜n21には、固有の製造番号及びIP(Internet Protocol)アドレス(グローバルIPアドレス)が割り当てられている。なお、製造番号及びIPアドレスは、複数のノード装置間で重複しないものである。
【0029】
そして、このコンテンツ配信システムSにおいては、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムによって、図1の上部枠100内に示すような、オーバーレイネットワーク9が構築されることになる。つまり、このオーバーレイネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するネットワーク(論理的なネットワーク)を意味する。
【0030】
本実施形態においては、DHTを利用したアルゴリズムによって構築されたオーバーレイネットワーク9を前提としており、このオーバーレイネットワーク9(図1の上部枠100内)に配置されたノード装置n1〜n15を、オーバーレイネットワーク9に参加しているノード装置(以下、このようなノード装置n1〜n15を「参加ノードnn」と総称する)という。言い換えれば、オーバーレイネットワーク9は、参加ノードnnの参加により形成されている。このようなオーバーレイネットワーク9への参加は、参加していないノード装置n16〜n21(以下、「未参加ノードnm」と総称する)が、任意の参加ノードnnに対して参加要求を示す参加要求情報を送信することによって行われる。
【0031】
また、各参加ノードnnは、自己に固有の識別情報としてのノードIDを有しており、当該ノードIDは、例えば、IPアドレスあるいは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化した値(例えば、bit長が160bit)であり、一つのID空間に偏りなく分散して配置されることになる。
【0032】
なお、本実施形態では、IPアドレスを共通のハッシュ関数によりハッシュ化した値をノードIDとする。また、図1の例に示すコンテンツ配信システムSには、全ての参加ノードnnの装置情報(例えば、ノードID、IPアドレス、ポート番号等)を管理する管理サーバSAが存在しているが、このような管理サーバSAが存在せずとも、オーバーレイネットワーク9の形成は可能である。
【0033】
このように共通のハッシュ関数により求められた(ハッシュ化された)ノードIDは、当該IPアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。
【0034】
また、各参加ノードnnは、夫々、DHTを保持している。このDHTは、オーバーレイネットワーク上における情報の転送先を規定しており、具体的には、ノードID空間内で適度に離れた参加ノードnnのノードIDとそのIPアドレス等の組が複数登録されたルーティングテーブル(転送先テーブル)が含まれている。
【0035】
このようなDHTは、未参加ノードnmがオーバーレイネットワーク9に参加する際に与えられることになる。
【0036】
また、コンテンツ配信システムSにおいては、未参加ノードnmによるオーバーレイネットワーク9への参加、若しくは参加ノードnnによるオーバーレイネットワーク9からの脱退が頻繁に行われるため、定期的に(例えば数十分から数時間間隔で)DHTの更新が必要かどうかが確認されると共に、その更新情報がDHTのルーティングテーブルに従って他の参加ノードnnに伝達されるようになっている。これにより、DHTを最新の状態に保つことが可能となる。
【0037】
更に、オーバーレイネットワーク9においては、様々なコンテンツ(例えば、映画や音楽等)データが複数の参加ノードnnに分散して保存(格納)されている。例えば、参加ノードn1には、タイトルがXXXの映画のコンテンツデータが保存されており、一方、参加ノードn2には、タイトルがYYYの映画のコンテンツデータが保存されるというように、互いに異なるコンテンツデータが、複数の参加ノードnnに分散されて保存される。
【0038】
また、あるコンテンツデータは、1つの参加ノードnnに保存されているとは限らず、複数の参加ノードnnに同じコンテンツデータが保存されうる。これらのコンテンツデータには、夫々、コンテンツ名(タイトル)等が付与されている。
【0039】
そして、このように分散保存されているコンテンツデータの所在を示す所在情報(例えば、コンテンツデータが保存されている参加ノードnnのIPアドレス等)もまた、複数の参加ノードnnに分散して保存されている。例えば、あるコンテンツデータのコンテンツ名(或いは、当該コンテンツデータの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化され(つまり、参加ノードnnのIPアドレスのハッシュ値と同一のID空間に配置)、そのハッシュ値(当該ハッシュ値がコンテンツIDとなる)と最も近い(例えば、上位桁がより多く一致する)ノードIDを有する参加ノードnn(当該ハッシュ値の管理元となる)に、当該コンテンツデータの所在情報が保存されることになる。つまり、同一のコンテンツデータ(コンテンツIDが同一)が、夫々、複数の参加ノードnnに保存されている場合であっても、かかるコンテンツデータの所在を示す所在情報(複数の参加ノードnnのIPアドレス等)は、1つの参加ノードnnで管理することができる(このようにコンテンツデータの所在を管理する参加ノードを、以下、「ルートノード」という)。なお、本実施形態においては、1のルートノードでは、1のコンテンツIDに対応するコンテンツデータの所在情報が保存される(つまり、ルートノードと上記所在情報とは1対1の関係にある)が、これに限定されるものではない)。
【0040】
これにより、あるコンテンツデータを取得(ダウンロード)したいユーザが使用する例えば参加ノードn4は、当該コンテンツデータのコンテンツIDが付加されたクエリ(問合せ情報)を他の参加ノードnnに対して送出することにより、当該コンテンツIDが付加されたクエリは、いくつかの参加ノードnnを経由されて(各中継ノードにおいて、上記DHTのルーティングテーブルが参照されてコンテンツIDが転送される)そのコンテンツデータの所在を示す所在情報を保存しているルートノードn10に辿り着き、当該ルートノードn10から当該所在情報を取得(受信)することが可能となり、取得した所在情報に基づいて上記コンテンツデータを保存している例えば参加ノードn5に接続し、そこから当該コンテンツデータを取得(受信)することが可能になる。
【0041】
なお、コンテンツIDがルートノードn10に辿り着くまでの間に当該ルートノードn10と同じ所在情報をキャッシュしている参加ノードnnから当該所在情報を取得(受信)されるようにしてもよい。
【0042】
図2は、DHTのノードID空間において、参加ノードn4から送出されたクエリがルートノードn10まで転送される様子の一例を示す図である。図2の例において、各中継ノードは、受信したクエリに付加されたコンテンツIDと、DHTのルーティングテーブルに登録されているノードIDとを比較して、次に転送すべき参加ノードnnを特定(例えば、コンテンツIDの上位数桁が一致するノードIDに対応する参加ノードnnのIPアドレスを特定)し、そこにクエリを転送することになる。
【0043】
ここで、上記DHTのルーティングテーブルの一般的な考え方の一例について以下に説明する。
【0044】
図3は、参加ノードn1が保持するDHTのルーティングテーブルの一例を示す図であり、図4は、DHTのノードID空間の一例を示す概念図である。なお、図3及び図4の例においては、説明の便宜上、ノードIDのbit長を2bit×3桁=6bitとし、各桁を4進数(0〜3の整数)で表している(実際には、もっと長いbit長を用い、各桁も例えば4bitに区切って0〜fの16進数で表現する)。
【0045】
図3の例において、DHTのルーティングテーブルは、レベル1〜レベル3のテーブルからなり(複数のレベルに区分されており)、各レベルのテーブルエントリーには、エリア毎に、ノードIDとこれに対応する参加ノードnnのIPアドレスが対応付けられて登録されている。各レベルのテーブルにおける各エリアは、DHTのノードID空間を分割することにより得られるエリアである。例えば、図4に示すように、レベル1では、DHTのノードID空間全体が4分割され、“000”〜“033”のノードIDが存在するエリアを0XXのエリア、“100”〜“133” のノードIDが存在するエリアを1XXのエリア、“200”〜“233” のノードIDが存在するエリアを2XXのエリア、“300”〜“333” のノードIDが存在するエリアを3XXのエリアとする。また、レベル2では、レベル1のエリア(つまり、0XX〜3XXのエリア)が更に4分割、例えば1XXのエリアが4分割され、“100”〜“103” のノードIDが存在するエリアを10Xのエリア、“110”〜“113” のノードIDが存在するエリアを11Xのエリア、“120”〜“123” のノードIDが存在するエリアを12Xのエリア、“130”〜“133” のノードIDが存在するエリアを13Xのエリアとする。
【0046】
そして、例えば、参加ノードn1のノードIDが“123”とすると、図3に示すように、かかる参加ノードn1のレベル1における1XXのエリア(自己が存在するエリア)のテーブルエントリーには、自己のノードID及びIPアドレス(IPアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い)が登録され、自己が存在しないエリア(つまり、0XXのエリア、2XXのエリア、及び3XXのエリア)には、夫々、他の任意の参加ノードnnのノードID及びIPアドレスが登録されている。
【0047】
また、かかる参加ノードn1のレベル2における12Xのエリア(自己が存在するエリア)のテーブルエントリーには、図3に示すように、自己のノードID及びIPアドレス(IPアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い)が登録され、自己が存在しないエリア(つまり、10Xのエリア、11Xのエリア、及び13Xのエリア)には、夫々、他の任意の参加ノードnnのノードID及びIPアドレスが登録されている。
【0048】
更に、かかる参加ノードn1のレベル3には、図3に示すように、12Xのエリアに存在する全ての参加ノードnnのノードID及びIPアドレスが登録される。
【0049】
なお、図3及び図4の例では、ノードIDのbit長を3桁×2bitとしたので、レベル1〜3の3レベル分のテーブルで網羅できるが、ノードIDのbit長が増せば、その分のテーブルが必要となる(例えば、ノードIDのbit長を16桁×4bitとした場合、16レベル分のテーブルが必要となる)。
【0050】
このように、本実施形態におけるDHTのルーティングテーブルでは、レベルが上がるほど、エリアが狭まっていくようになっており、このように構成されたルーティングテーブルにより、例えば参加ノードn1から送出されたクエリがルートノードまで効率良く転送されることになる。
【0051】
そして、このようなDHTのルーティングテーブルは、未参加ノードnmが、オーバーレイネットワーク9に参加するために、任意の参加ノードnnに対して、自己のノードIDを付加した参加要求情報を送信することによって生成されることになる。
【0052】
このようなDHTのルーティングテーブルが生成されるまでの流れについて以下に説明する。
【0053】
図5は、DHTのルーティングテーブルが生成されるまでの流れの一例を示す概念図である。
【0054】
例えば、図5に示すように、未参加ノードn16は、自己のIPアドレスを上記ハッシュ関数によりハッシュ化してノードID(例えば、“333”とする)を生成し、当該ノードID及び自己(未参加ノードn16)のIPアドレスが付加された参加要求情報を参加ノードn1に送信する。
【0055】
これに対して、参加ノードn1は、当該参加要求情報を受信し、DHTのルーティングテーブル51を参照して、参加要求情報に付加されたノードID“333”と最も近いノードID“301”を有する参加ノードn11のIPアドレスを取得し、これに基づき、ノードID“333” 及び未参加ノードn16のIPアドレス が付加された参加要求情報を参加ノードn11に転送する。
【0056】
これに対して、参加ノードn11は、当該参加要求情報を受信し、DHTのルーティングテーブル52を参照して、参加要求情報に付加されたノードID“333”と最も近いノードID“332”を有する参加ノードn9のIPアドレスを取得し、これに基づき、ノードID“333”及び未参加ノードn16のIPアドレスが付加された参加要求情報を参加ノードn9に転送する。
【0057】
これに対して、参加ノードn9は、当該参加要求情報を受信し、DHTのルーティングテーブル53におけるレベル3のテーブルにおけるノードID“333”に対応付けて、未参加ノードn16のIPアドレスを登録する。つまり、参加ノードn9は、当該ノードID“333”の管理元となる。
【0058】
以上の流れの過程において、図5に示すように、当該参加要求情報を受信した参加ノードn1、参加ノードn11、及び参加ノードn9は、未参加ノードn16に対して、DHTのルーティングテーブルの一部を(参加ノードn1はレベル1のテーブルを、参加ノードn11はレベル2のテーブルを、参加ノードn9はレベル3のテーブルを)含む返信情報を、夫々送信する。
【0059】
これに対して、未参加ノードn16は、送信されてきた各DHTのルーティングテーブルを含む返信情報を受信して、当該返信情報に含まれる各ルーティングテーブルに基づいて、自己が使用するべきDHTのルーティングテーブル54を生成する。このとき、各エントリーに対して、別の既知のノード情報を登録できる場合は、エントリーを書き換えても良い。図5の例では、参加ノードn1におけるレベル1のテーブルエントリー51a(ノードID“301”及びこれに対応するIPアドレス)については、自己のノードID“333”及びこれに対応するIPアドレスと入れ替えている。なお、図5の例では、各参加ノードnnが別々のレベルのテーブルを返しているが、どの参加ノードnnからも全レベルのテーブル(すなわちルーティングテーブル全体)を返すようにして、未参加ノードnmがそれぞれのテーブルからテーブルエントリーを適宜、取捨選択して自己の新たなテーブルを作り上げても良い。
【0060】
こうして生成されたDHTのルーティングテーブル54を得た未参加ノードn16は、参加ノードn16としてオーバーレイネットワーク9に加わるのである。
【0061】
ところで、このように生成されるDHTのルーティングテーブルは、極力、ネットワーク8への負荷(ノードIDを含む情報がネットワーク8上を伝送されることによる負荷)を軽減するものであることが望ましい。本実施形態においては、ネットワーク8への負荷の軽減可能なDHTのルーティングテーブルを生成するために、任意の複数の参加ノードnnに向けて参加要求情報が送信し、そのうち、ネットワーク8上のローカリティ(地域性)が考慮された参加ノードnnから上記返信情報が返信されることを特徴とする。
【0062】
例えば、図1の下部枠101内において、同一の回線事業者(例えば、回線事業者5a)に属する(符号101a内の)参加ノードn1と未参加ノードn16は、ローカリティ(地域性)が高いということができ、一方、当該参加ノードn1と、異なる回線業者(例えば、回線事業者5b)に属する(符号101b内の)未参加ノードn21は、ローカリティ(地域性)が低い(つまり、一旦、ISP4a、IX3、及びISP4bを経由することになる)ということができる。なお、図1の例では、同一の回線事業者に属する参加ノードn1と未参加ノードn16には同一の地域番号(A1,A2,A3)が付されている。
【0063】
そして、ネットワーク8上のローカリティ(地域性)が考慮された参加ノードnnとは、未参加ノードnmとローカリティ(地域性)が高い参加ノードnnを意味し、つまり、未参加ノードnmとネットワーク的に近い(言い換えれば、未参加ノードnmとの間の通信経路上における通信負荷が相対的に小さい)参加ノードnnを意味することなる。
【0064】
未参加ノードnmが、ネットワーク8上のローカリティ(地域性)が考慮された参加ノードnnからの返信情報を受信し、これに含まれるDHTのルーティングテーブルに基づき、自己が使用するべきDHTのルーティングテーブル54を生成していけば、例えばネットワーク的に互いに近い関係にある参加ノードnn間でコンテンツID及びノードIDが転送されるようになり、その結果、ネットワーク8全体に与える負荷を低減することが可能となる。
【0065】
なお、上記流れは、未参加ノードn16が、新たにオーバーレイネットワーク9に参加する場合ばかりでなく、一度脱退した後、再度参加する場合にも適用することができる。
【0066】
次に、図6を参照して、参加ノードnn及び未参加ノードnmの構成及び機能について説明する。
【0067】
図6は、参加ノードnn及び未参加ノードnmの概要構成例を示す図である。
【0068】
参加ノードnn及び未参加ノードnmは、夫々、図6に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部11と、各種データ(例えば、コンテンツデータ、所在情報、DHT)及びプログラム等を記憶保存(格納)するためのHDD等から構成された記憶部12と、受信されたコンテンツデータを一時蓄積するバッファメモリ13と、コンテンツデータに含まれるエンコードされたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部14と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、当該映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部16と、上記デコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部17と、当該音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18と、ネットワーク8を通じて他の参加ノードnn又は未参加ノードnmとの間の情報の通信制御を行うための通信部20と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス、或いは、操作パネル等)21と、を備えて構成され、制御部11、記憶部12、バッファメモリ13、デコーダ部14、及び通信部20は、バス22を介して相互に接続されている。
【0069】
このような構成において、未参加ノードnmにおける制御部11は、CPUが記憶部12等に記憶されたプログラム(本発明のコンピュータプログラムを含む)を読み出して実行することにより、全体を統括制御すると共に、本発明の装置情報取得手段、到達可能範囲設定手段、参加要求情報送信手段、返信情報受信手段、及び転送先テーブル生成手段等として機能し、後述する各種処理を行うようになっている。
【0070】
また、参加ノードnnにおける制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、全体を統括制御すると共に、オーバーレイネットワーク9においてノードID及びコンテンツIDの送受信、コンテンツデータの送受信、所在情報の送受信等の各種処理を行い、更には、未参加ノードnm等からの検索情報、参加要求情報等を受信し、後述する各種処理を行うようになっている。
【0071】
なお、上記コンピュータプログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしてもよい。
【0072】
[2.コンテンツ配信システムの動作]
次に、未参加ノードnmがオーバーレイネットワーク9に新たに参加する場合におけるコンテンツ配信システムSの動作について、実施例1乃至3に分けて夫々説明する。
【0073】
(実施例1)
先ず、図7乃至図12を参照して、実施例1におけるコンテンツ配信システムSの動作について説明する。
【0074】
この実施例1は、全ての参加ノードnnへの装置情報(リンク情報)が記述された参加ノードリストを管理する管理サーバSAがネットワーク8に接続されている場合の動作例である。
【0075】
図7(A)は、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、図7(B)は、管理サーバSAのメインルーチンを示すフローチャートである。
【0076】
また、図8(A)は、実施例1において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、図8(B)は、実施例1において、装置情報要求メッセージを受信した場合における管理サーバSAの処理(ステップS104におけるメッセージ毎の処理)を示すフローチャートであり、図8(C)は、実施例1において、装置情報メッセージを受信した場合における未参加ノードnmの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図8(D)は、実施例1において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図8(E)は、実施例1において、返信メッセージを受信した場合における未参加ノードnmの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図8(F)は、実施例1において、登録メッセージを受信した場合における管理サーバSAの処理(ステップS104におけるメッセージ毎の処理)を示すフローチャートである。
【0077】
また、図9(A)は、図8(E)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートであり、図9(B)は、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【0078】
また、図10乃至図12は、実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【0079】
図7(A)の処理は、例えば未参加ノードnmの電源が投入(電源ON)された場合に開始され、先ず、制御部11は、オーバーレイネットワーク9へ参加するための参加処理(詳細は後述)を行う(ステップS1)。次いで、制御部11は、電源OFFになったか否かを判別し(ステップS2)、電源OFFになった場合には(ステップS2:Y)、当該処理を終了する。一方、電源OFFでない場合には(ステップS2:N)、制御部11は、ユーザによる入力部21からの操作があるか否かを判別し(ステップS3)、操作がある場合には(ステップS3:Y)、当該操作毎の処理(操作信号に応じた処理)を実行する(ステップS4)。一方、入力部21からの操作がない場合には(ステップS3:N)、制御部11は、メッセージ(例えば、後述する装置情報メッセージ、参加要求メッセージ、返信メッセージ等)の受信があるか否かを判別し(ステップS5)、当該受信がある場合には(ステップS5:Y)、当該メッセージ毎の処理(詳細は後述)を行う(ステップS6)。一方、メッセージの受信がない場合には(ステップS5:N)、ステップS2の処理に戻る。こうして上記処理は、未参加ノードnm(処理の途中から参加ノードnnになる)において、電源OFFとなるまで繰り返し実行される。
【0080】
一方、図7(B)の処理は、例えば管理サーバSAの電源が投入(電源ON)された場合に開始され、先ず、管理サーバSAは、参加ノードリストを初期化し(ステップS101)、電源OFFになったか否かを判別し(ステップS102)、電源OFFになった場合には(ステップS102:Y)、当該処理を終了する。一方、電源OFFでない場合には(ステップS102:N)、管理サーバSAは、メッセージ(例えば、後述する装置情報要求メッセージ等)の受信があるか否かを判別し(ステップS103)、当該受信がある場合には(ステップS103:Y)、当該メッセージ毎の処理(詳細は後述)を行う(ステップS104)。一方、メッセージの受信がない場合には(ステップS103:N)、ステップS102の処理に戻る。こうして上記処理は、管理サーバSAにおいて、電源OFFとなるまで繰り返し実行される。
【0081】
次に、上記ステップS1における参加処理においては、図8(A)に示すように、未参加ノードnm(ここでは、図10に示す未参加ノードn16とする)の制御部11は、先ず、初期化を行い、登録フラグを“false”に、“ttl”(変数)を例えば“2”に、夫々設定する(ステップS11)。次いで、制御部11は、管理サーバSAのIPアドレス等(例えば、製品出荷時に記憶部12に記憶しておく)を取得し(ステップS12)、オーバーレイネットワーク9への参加要求を示す参加要求情報としての参加要求メッセージを送信すべき複数の参加ノードnnの装置情報を要求する装置情報要求メッセージ(例えば、自己(未参加ノードn16)のIPアドレスを送り元アドレスとし、管理サーバSAのIPアドレスを宛先アドレスとした装置情報要求パケット)を、通信部20及びネットワーク8を介して管理サーバSAに対して送信する(ステップS13:図10(A))。
【0082】
一方、管理サーバSAは、未参加ノードn16から送信されてきた装置情報要求メッセージを受信すると、図8(B)に示す処理を開始し、先ず、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報を選択する(ステップS110)。例えば、参加ノードリストからランダムに所定数の参加ノードnnが選択される。なお、オーバーレイネットワーク9への参加期間(登録期間)に応じた重み付けランダムにより所定数の参加ノードnnが選択されるようにしても良い。例えば、オーバーレイネットワーク9への参加期間(登録期間)が長いほど信頼性が高いといえるため、当該参加期間(登録期間)が長いほど選択される確率を高くする。こうすると、システム全体で見た安定性は向上するが、各参加ノードnnが持つDHT中に、参加期間が長い参加ノードnnへのリンクが多くなり、そのノードが脱退したときの悪影響が大きくなる。或いは逆に、未だ選択されていない参加ノードnnを優先的に選択させるために、参加期間(登録期間)が短いほど選択される確率を高くしても良い。こうすると、特定の参加ノードnnへのリンク集中は防げるが、DHT上に登録された情報の更新は頻繁になる。一長一短があるので、システムの用途、参加ノードnnの使われ方(特に電源ON・OFFの頻度分布)に応じて、制御方法を変更すると良い。また、過去に選択された回数(上記選択された回数を、各参加ノードnn毎にカウントしておく)に応じた重み付けランダムにより所定数の参加ノードnnが選択されるようにしても良い。例えば、過去に選択された回数が多いほど信頼性が高いといえるため、過去に選択された回数が多いほど選択される確率を高くする。或いは、未だ選択されていない参加ノードnnを優先的に選択させるために、過去に選択された回数が少ないほど選択される確率を高くしても良い。
【0083】
次いで、管理サーバSAは、上記選択した複数の参加ノードnnの装置情報を付加した装置情報メッセージ(例えば、自己(管理サーバSA)のIPアドレスを送り元アドレスとし、未参加ノードn16のIPアドレスを宛先アドレスとした装置情報パケット)を、ネットワーク8を介して未参加ノードn16に対して送信する(ステップS111:図10(B))。
【0084】
一方、未参加ノードn16は、管理サーバSAから送信されてきた装置情報メッセージを受信すると、図8(C)に示す処理を開始し、先ず、未参加ノードn16の制御部11は、装置情報取得手段として、装置情報メッセージに付加された複数の参加ノードnnの装置情報を取得する(ステップS61)。
【0085】
次いで、未参加ノードn16の制御部11は、到達可能範囲設定手段として、TTL(Time To Live)値を上記“ttl(例えば、2)”に設定し、オーバーレイネットワーク9への参加要求を示す参加要求メッセージに対して当該TTL値を設定(付加)して自己(未参加ノードn16)のノードIDを付加し、参加要求情報送信手段として、当該参加要求メッセージ(例えば、自己(未参加ノードn16)のIPアドレスを送り元アドレスとし、上記取得された各装置情報により特定される各参加ノードnnのIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して各参加ノードnnに対して送信する(ステップS62:図10(C))。次いで、未参加ノードn16の制御部11は、所定時間後(例えば、1〜10秒後)に起動する返信メッセージ受信タイマーをセット(カウント開始)する(ステップS63)。かかる返信メッセージ受信タイマーは、後述する処理で解除(リセット)されなければ、図9(A)に示す処理が開始されることになる。
【0086】
ここで、TTLは、ネットワーク8上を伝送される参加要求メッセージの到達可能範囲を表す情報の一例であり、最大“255”までの整数値で表され、メッセージ(パケット)がルータ等を1回経由(転送)する度に1減少するようになっている。なお、TTL値が“0”になったパケットはその時点で廃棄され、廃棄通知がパケットの送信元に届くようになっている。従って、受信されたメッセージ(パケット)のTTL値が大きいほど、それだけ転送回数(HOP数)が少ないということになるので、ネットワーク8の通信経路における通信負荷に与える影響も少なくなる。
【0087】
図10(C)は、参加要求メッセージが参加ノードn2、参加ノードn4、参加ノードn5、及び参加ノードn9に向かって送出されるが、参加ノードn4、参加ノードn5、及び参加ノードn9への参加要求メッセージは経路の途中でTTL値が“0”になったことにより届かず、結局、参加ノードn2にのみに参加要求メッセージが届いている例を示している。
【0088】
こうして、参加ノードn2は、未参加ノードn16から送信されてきた参加要求メッセージを受信すると、図8(D)に示す処理を開始し、先ず、参加ノードn2の制御部11は、参加要求メッセージ中の転送回数を基に、返信すべきルーティングテーブルのレベル(レベル番号)を決定する(ステップS65)。
【0089】
ここで、参加要求メッセージには、当該メッセージの転送回数をカウントするための転送カウンタが付加されており、当該メッセージが、DHTルーティングにより参加ノードnnにより転送される度に、当該転送カウンタが1カウントアップ(1増加)されるようになっている。参加ノードn2が受信した参加要求メッセージの転送カウンタは、未だ転送されていないので“0”となっているが、その後、転送される度に1ずつ増すことになる(例えば、図11(D)に示す参加ノードn6が受信した参加要求メッセージの転送カウンタは、“1”である。
【0090】
そして、例えば、このような転送カウンタにて示される転送回数が“0”の場合には、レベル1のテーブル(1行分)が、転送回数が“1”の場合にはレベル2のテーブルが、転送回数が“2”の場合にはレベル3のテーブルが、夫々、返信されるテーブルとして決定されることになる。
【0091】
次いで、参加ノードn2の制御部11は、自己のDHTのルーティングテーブルから、上記決定したレベル(レベル番号)のテーブルを取得し、返信情報としての返信メッセージに対して当該取得したレベル(レベル番号)のテーブルを付加し(添付し)、この返信メッセージ(例えば、自己(参加ノードn2)のIPアドレスを送り元アドレスとし、未参加ノードn16のIPアドレスを宛先アドレスとした返信パケット)を、通信部20及びネットワーク8を介して未参加ノードn16に対して送信(返信)する(ステップS66:図11(E))。
【0092】
次いで、参加ノードn2の制御部11は、DHTのルーティングテーブルを参照して、受信した参加要求メッセージに付加されている未参加ノードn16のノードIDに基づき、転送先を検索し(ステップS67)、転送先があるか否かを判別する(ステップS68)。例えば、自己(参加ノードn2)が、上記参加要求メッセージに付加されたノードIDと最も近いノードIDを有する場合には、ルーティングテーブル中で上記参加要求メッセージに付加されたノードIDに最も近いテーブルエントリーを検索すると、その転送先は自分自身を指すことになり(つまり、自己が参加要求メッセージに付加されたノードIDの管理元である)転送先がないと判別され(ステップS68:N)、図7(A)に示す処理に戻る。一方、最も近いノードIDを有しない(つまり、最も近いノードIDを有する参加ノードnnが他にある)場合には、検索したテーブルエントリーには他の参加ノードnnのIPアドレスが見つかり、転送先があると判別され(ステップS68:Y)、ステップS69に移行する。
【0093】
ステップS69では、参加ノードn2の制御部11は、参加要求メッセージ中の転送カウンタを1カウントアップ(1増加)させ、当該参加要求メッセージに付加されたノードIDと最も近いノードIDに対応するIPアドレスをDHTのルーティングテーブルから取得し、上記ノードIDが付加された参加要求メッセージに対して未参加ノードn16のIPアドレスを付加し、当該参加要求メッセージ(自己(参加ノードn2)のIPアドレスを送り元アドレス及び当該ルーティングテーブルから取得されたIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して、上記ルーティングテーブルから取得したIPアドレスに対応する参加ノードn6に対して送信(転送)し(図11(D))、図7(A)に示す処理に戻る。
【0094】
こうして、転送された参加要求メッセージを受信した参加ノードnnにおいても、図8(D)に示す処理が行われ、参加要求メッセージに付加されたノードIDの管理元である参加ノードn14に至るまで順次転送され、当該参加要求メッセージを受信した夫々の参加ノードn6,n13及びn14は、転送カウンタの値に応じたレベル(レベル番号)のテーブルを付加した返信メッセージを、未参加ノードn16に対して送信(返信)することになる(図11(E))。
【0095】
一方、未参加ノードn16は、返信情報受信手段として、各参加ノードnn(例えば、参加ノードn2)から送信されてきた返信メッセージを受信すると、図8(E)に示す処理を開始し、先ず、未参加ノードn16の制御部11は、転送先テーブル生成手段として、上記受信された返信メッセージに付加されたルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルを生成するルーティングテーブルの生成処理を行う(ステップS71)。
【0096】
このルーティングテーブルの生成処理では、図9(A)に示すように、未参加ノードn16の制御部11は、先ず、受信した返信メッセージに付加されたテーブルのレベル(レベル番号)を読み取り(ステップS711)、読み取ったレベル(レベル番号)のテーブルは、自己のルーティングテーブルに登録されているか否かを判別し(ステップS712)、登録されていない場合には(ステップS712:N)、当該レベル(レベル番号)のテーブルを自己のルーティングテーブルの対応箇所に登録し(ステップS713)、当該処理を終了し、図8(E)に示す処理に戻る。
【0097】
上記ルーティングテーブルの生成処理が終了し、図8(E)に示すステップS72では、未参加ノードn16の制御部11は、登録フラグが“false”であるか否かを判別し、登録フラグが“false”でない、つまり、“true”である場合には(ステップS72:N)、図7(A)に示す処理に戻る。一方、登録フラグが“false”である場合には(ステップS72:Y)、当該制御部11は、自己(未参加ノードn16)のノードIDが付加された登録メッセージ(自己(参加ノードn2)のIPアドレスを送り元アドレス及び管理サーバSAのIPアドレスを宛先アドレスとした登録パケット)を、通信部20及びネットワーク8を介して管理サーバSAに対して送信する(ステップS73)。
【0098】
次いで、未参加ノードn16の制御部11は、登録フラグを“true”に設定し(ステップS74)、返信メッセージ受信タイマーを解除する(ステップS75)。登録フラグは、未参加ノードがテーブルを(部分的にでも)生成してオーバーレイネットワーク9に参加したことを意味するフラグで、これが“true”になると、後述のタイマーによるリトライ処理(ttlを増やして参加要求メッセージを再送信する処理:S634)が止まるようになっている。
【0099】
一方、管理サーバSAは、未参加ノードn16から送信されてきた登録メッセージを受信すると、図8(F)に示す処理を開始し、当該登録メッセージの送信元の未参加ノードn16のノードID及びIPアドレス等を装置情報として参加ノードリストに登録する(ステップS115)する。こうして、未参加ノードn16のオーバーレイネットワーク9への参加が完了する。
【0100】
ところで、上記返信メッセージは、例えば図12(A)に示すように、参加要求メッセージが複数の参加ノードnn(図12(A)の例では、参加ノードn2及びn9)に届き、夫々の参加ノードnn及び当該参加ノードnnから転送された参加要求メッセージを受信した参加ノードnnから複数の返信メッセージが送信される(図12(B)、(C))場合が想定される。この場合、同じ転送回数である参加要求メッセージを受信した複数の参加ノードnn(例えば、図12(B)に示す参加ノードn2及びn9)から、同一レベルのテーブルが付加された返信メッセージが返信されることになるが、図9(A)に示すルーティングテーブルの生成処理において、ステップS712にて後から受信されたレベルのテーブルは廃棄される(つまり、先着優先で、そのレベルのテーブルが登録される)。
【0101】
一方、参加要求メッセージが何れの参加ノードに届かず(経路の途中でTTL値が“0”になったことより)、返信メッセージが受信されない場合も想定されるが、この場合、上記ステップS63においてセットされた返信メッセージ受信タイマーが起動し、図9(B)に示す処理が開始される。先ず、未参加ノードn16の制御部11は、登録フラグが“false”であるか否かを判別し(ステップS631)、登録フラグが“false”でない場合(ステップS631:N)、既に参加登録が完了しているので、当該処理を終了する。
【0102】
一方、登録フラグが“false”である場合(ステップS631:Y)、当該制御部11は、“ttl”を1カウントアップ(1増加)し(ステップS632)、上記ステップS62において設定したTTL値が255以下であるか否かを判別する(ステップS633)。そして、TTL値が255以下でない場合には(ステップS633:N)、当該処理を終了する。一方、TTL値が255以下である場合には(ステップS633:Y)、当該制御部11は、TTL値を、上記1カウントアップされた“ttl(例えば、3)”に変更設定し、参加要求メッセージに対して当該TTL値を設定して自己(未参加ノードn16)のノードIDを付加し、当該参加要求メッセージを、通信部20及びネットワーク8を介して各参加ノードnn(上記ステップS61にて取得された装置情報に対応する参加ノードnn)に対して再送信する(ステップS634)。つまり、未参加ノードn16は、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合には、当該参加要求メッセージの到達可能範囲を表す情報(TTL値)を変更設定(ここでは、前回設定したTTL値に基づく到達可能範囲よりも広くなるようにTTL値を変更設定する)し、当該変更設定されたTTL値を参加要求メッセージに設定(付加)し、当該参加要求メッセージを、再度、同じ各参加ノードnnに対して送信することになる。これにより、返信メッセージが受信されない場合、参加要求メッセージの到達可能範囲を少しずつ広げて(TTL値を少しずつ増加させて)、参加要求メッセージを再送信できるので、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することができる。
【0103】
なお、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合、未参加ノードn16は、TTL値を増加させずに、参加要求メッセージを、再度、同じ各参加ノードnnに対して送信するように構成しても良い。
【0104】
次いで、当該制御部11は、所定時間後(例えば、1〜10秒後)に起動する返信メッセージ受信タイマーをセット(カウント開始)する(ステップS635)。かかる返信メッセージ受信タイマーは、上記ステップS63と同様、解除(リセット)されなければ、図9(A)に示す処理が開始されることになる。
【0105】
以上説明したように、上記実施例1によれば、未参加ノードnmが、参加要求メッセージの到達可能範囲を表す情報としてのTTL値を低く設定し、当該設定したTTL値を参加要求メッセージに付加して、管理サーバSAから通知された複数の参加ノードnnに対して送信し、上記参加要求メッセージを受信することができた(つまり、よりネットワーク的に近い(例えば、HOP数が少ない))参加ノードnnから送信されてきた返信メッセージに含まれるルーティングテーブルに基づいて自己が使用するべきルーティングテーブルを生成して、オーバーレイネットワーク9に参加するようにしたので、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となり、ネットワーク8への余分な負荷を軽減することができる(第1の効果)。
【0106】
また、未参加ノードn16は、複数の参加ノードnnからの返信メッセージに含まれる夫々のルーティングテーブルのうち、同一レベルのルーティングテーブルが複数あるとき、当該同一レベルの複数のルーティングテーブルのうち、先着優先で受信されたルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成するようにしたので、自分自身から見てよりネットワーク負荷の少ないところに位置する参加ノードnnのルーティングテーブルが優先して登録されることになり、ルーティングテーブルもローカリティ(地域性)が考慮され、より一層、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる(第2の効果)。
【0107】
また、未参加ノードn16は、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合には、当該参加要求メッセージの到達可能範囲を表す情報(TTL値)を変更設定(ここでは、前回設定したTTL値に基づく到達可能範囲よりも広くなるようにTTL値を変更設定する)し、当該変更設定されたTTL値を参加要求メッセージに設定(付加)して、再度、同じ各参加ノードnnに対して送信するようにしたので、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することができ、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる(第3の効果)。
【0108】
また、管理サーバSAは、全ての参加ノードnnの装置情報が記述された参加ノードリストだけを管理し、複数の参加ノードnnを選定して未参加ノードn16に通知するだけでよいので、管理サーバSAが未参加ノードnmにネットワーク的に近い参加ノードnnを認識しておく必要がなく、したがって、管理サーバSAの管理コストを低減することができる(第4の効果)。
【0109】
(実施例2)
次に、図13等を参照して、実施例2におけるコンテンツ配信システムSの動作について説明する。
【0110】
この実施例2は、実施例1とは異なり、全ての参加ノードnnへの装置情報を管理する管理サーバがネットワーク8に接続されていない場合の例である。
【0111】
なお、この実施例2において、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンは、図7(A)に示す通りであり、実施例1と同様である。
【0112】
図13(A)は、実施例2において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、図13(B)は、実施例2において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図13(C)は、実施例2において、返信メッセージを受信した場合における未参加ノードnmの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートである。なお、図13(A)乃至(C)において、図8(A)乃至(E)における同一の処理については、同一の符号を付している。
【0113】
図13(A)に示す参加処理おいては、実施例1と同様、未参加ノードnmの制御部11は、先ず、初期化を行い、登録フラグを“false”に、“ttl”(変数)を例えば“2”に、夫々設定する(ステップS21)。
【0114】
次いで、当該制御部11は、複数の専用参加ノードnnの装置情報(IPアドレス等を含む)を取得する(ステップS22)。当該専用参加ノードnnとは、例えば常時電源が入っており、オーバーレイネットワーク9に参加している信頼性の高い参加ノードnnであり、かかる複数の専用参加ノードnnの装置情報は、例えば、予め未参加ノードnm内に記憶されている(例えば、製品出荷時に設定しておく)。
【0115】
次いで、当該制御部11は、TTL値を上記“ttl(例えば、2)”に設定し、参加要求メッセージに対して当該TTL値を設定(付加)して自己(未参加ノードn16)のノードIDを付加し、当該参加要求メッセージ(例えば、自己(未参加ノードn16)のIPアドレスを送り元アドレスとし、上記取得された各装置情報により特定される各専用参加ノードnnのIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して各専用参加ノードnnに対して送信する(ステップS23)。
【0116】
次いで、未参加ノードn16の制御部11は、実施例1と同様、所定時間後(例えば、1〜10秒後)に起動する返信メッセージ受信タイマーをセット(カウント開始)する(ステップS24)。
【0117】
こうして、実施例1と同様、経路の途中でTTL値が“0”にならずに参加要求メッセージを受信することができた専用参加ノードnnは、未参加ノードnmから送信されてきた参加要求メッセージを受信すると、図13(B)に示す処理を開始することになる。なお、図13(B)に示す処理は、図8(D)に示す処理と同様であるので、重複する説明は省略する。
【0118】
そして、未参加ノードnmが、各専用参加ノードnnから送信されてきた返信メッセージを受信すると、図13(C)に示す処理を開始することになる。なお、図13(C)に示すステップS71におけるルーティングテーブル生成処理は、図9(A)に示す処理の通りであり、実施例1と同様であるので、重複する説明は省略する。また、実施例2においても、参加要求メッセージが何れの参加ノードに届かなかった場合、上記ステップS24においてセットされた返信メッセージ受信タイマーが起動し、図9(B)に示す処理が開始される。
【0119】
以上説明したように、上記実施例2によれば、実施例1における第1〜第3の効果を奏することに加えて、管理サーバSAを設けなくとも、未参加ノードnmとネットワーク的に近い参加ノードnnを選定することができるので、管理サーバSAに対して多数の未参加ノードnmからの装置情報要求メッセージが集中(負荷集中)することを回避できると共に、管理サーバSAの設置コストを低減することができる。
【0120】
(実施例3)
次に、図14等を参照して、実施例3におけるコンテンツ配信システムSの動作について説明する。
【0121】
この実施例3は、実施例1と同様に、全ての参加ノードnnへの装置情報を管理する管理サーバSAが存在する場合の動作例であるが、返信メッセージが届かないときに、再度、管理サーバSAが、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報を選択して未参加ノードnmに通知する場合の例である。
【0122】
なお、この実施例3において、管理サーバSAのメインルーチンは、図7(B)に示す通りであり、実施例1と同様である。
【0123】
図14(A)は、実施例3において、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、図14(B)は、実施例3において、図14(A)に示すステップS1bにおける参加処理の詳細を示すフローチャートであり、図14(C)は、実施例3において、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【0124】
図14(A)の処理は、例えば未参加ノードnmの電源が投入(電源ON)された場合に開始され、制御部11は、先ず、初期化を行い、登録フラグを“false”に、“count”(変数)を例えば“0”に、“ttl”(変数)を例えば“2”に、夫々設定する(ステップS1a)。
【0125】
次いで、当該制御部11は、オーバーレイネットワーク9への参加するための参加処理(詳細は後述)を行う(ステップS1b)。なお、ステップS1〜S6までの処理は、図7(A)と同様である。
【0126】
上記ステップS1bにおける参加処理おいては、図14(B)に示すように、未参加ノードnmの制御部11は、先ず、“count”を1カウントアップ(1増加)し(ステップS31)、管理サーバSAのIPアドレス等(例えば、製品出荷時に記憶部12に記憶しておく)を取得し(ステップS32)、装置情報要求メッセージを、通信部20及びネットワーク8を介して管理サーバSAに対して送信する(ステップS33)。
【0127】
一方、管理サーバSAは、未参加ノードn16から送信されてきた装置情報要求メッセージを受信すると、実施例1と同様、図8(B)に示す処理を開始し、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報をランダム又は上述した重み付けランダムで選択し、当該選択した参加ノードnnの装置情報を未参加ノードnmに送信することになる。以降、実施例3においても、実施例1と同様、図8(C)〜図8(F)、及び図9(A)の処理が行われる。
【0128】
そして、参加要求メッセージが何れの参加ノードに届かず(経路の途中でTTL値が“0”になったことより)、返信メッセージが送信されない場合、上記ステップS63においてセットされた返信メッセージ受信タイマーが起動し、図14(C)に示す処理が開始される。
【0129】
先ず、未参加ノードnmの制御部11は、登録フラグが“false”であるか否かを判別し(ステップS637)、登録フラグが“false”でない場合(ステップS637:N)、既に参加登録が完了しているので、当該処理を終了する。
【0130】
一方、登録フラグが“false”である場合(ステップS637:Y)、当該制御部11は、上記“count”が、閾値(例えば、5)より小さいか否かを判別し(ステップS638)、小さくない場合には(ステップS638:N)、当該処理を終了する。
【0131】
一方、上記“count”が、閾値(例えば、5)より小さい場合(ステップS638:Y)、制御部11は、上記ステップS1bと同様の参加処理を行う(ステップS639)。こうして、返信メッセージが受信されずに所定時間が経過する度に、“count”が閾値に達するまで、参加処理のリトライが行われる。
【0132】
以上説明したように、上記実施例3によれば、実施例1における第1、第2及び第4の効果を奏することに加えて、返信メッセージが届かないときに、再度、管理サーバSAが、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報(例えば、前回取得した参加ノードnnの装置情報とは異なる装置情報)を重み付けランダム等により再度選択して未参加ノードnmに通知し、これらの参加ノードnnに対して参加要求メッセージを送信するようにしたので、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することができ、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる。
【0133】
(変形例)
次に、上記実施例1乃至実施例3における、参加要求メッセージを受信した場合における参加ノードnnの処理(図8(D)及び図13(B)))及びルーティングテーブルの生成処理(図9(A))の変形例を、図15を参照して説明する。
【0134】
図15(A)は、変形例において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図15(B)は、変形例において、図8(E)及び図13(C)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートである。
【0135】
図15(A)の処理は、参加ノードn2が未参加ノードn16から送信されてきた参加要求メッセージを受信すると開始され、先ず、参加ノードn2の制御部11は、自己のDHTのルーティングテーブル(例えば、全レベル)を取得し、返信情報としての返信メッセージに対して当該取得したルーティングテーブルを付加し、この返信メッセージ(例えば、自己(参加ノードn2)のIPアドレスを送り元アドレスとし、未参加ノードn16のIPアドレスを宛先アドレスとした返信パケット)を、通信部20及びネットワーク8を介して未参加ノードn16に対して送信(返信)する(ステップS65a:図11(E))。
【0136】
次いで、参加ノードn2の制御部11は、DHTのルーティングテーブルを参照して、受信した参加要求メッセージに付加されている未参加ノードn16のノードIDに基づき、転送先を検索し(ステップS66a)、転送先があるか否かを判別する(ステップS67a)。例えば、自己(参加ノードn2)が、上記参加要求メッセージに付加されたノードIDと最も近いノードIDを有する場合には、ルーティングテーブル中で上記参加要求メッセージに付加されたノードIDに最も近いテーブルエントリーを検索すると、その転送先は自分自身を指すことになり(つまり、自己が参加要求メッセージに付加されたノードIDの管理元である)転送先がないと判別され(ステップS67a:N)、図7(A)に示す処理に戻る。一方、最も近いノードIDを有しない(つまり、最も近いノードIDを有する参加ノードnnが他にある)場合には、検索したテーブルエントリーには他の参加ノードnnのIPアドレスが見つかり、転送先があると判別され(ステップS67a:Y)、ステップS68aに移行する。
【0137】
ステップS68aでは、参加ノードn2の制御部11は、参加要求メッセージに付加されたノードIDと最も近いノードIDに対応するIPアドレスをDHTのルーティングテーブルから取得し、上記ノードIDが付加された参加要求メッセージに対して未参加ノードn16のIPアドレスを付加し、当該参加要求メッセージ(自己(参加ノードn2)のIPアドレスを送り元アドレス及び当該ルーティングテーブルから取得されたIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して、上記ルーティングテーブルから取得したIPアドレスに対応する参加ノードn6に対して送信(転送)し(図11(D))、図7(A)に示す処理に戻る。
【0138】
次に、図15(B)に示すルーティングテーブルの生成処理では、未参加ノードn16の制御部11は、先ず、初期化処理を行い、レベルを示す変数“i”を1に設定する(ステップS721)。
【0139】
次いで、制御部11は、ルーティングテーブルの全レベル数(図3の例では、3)より“i”が小さいか否かを判別し(ステップS722)、“i”が小さい場合(ステップS722:Y)、つまり、未だ、全てのレベルにおけるルーティングテーブルが登録されていない場合には、ステップS723に移行し、“i”が小さくない場合(ステップS722:N)、つまり、全てのレベルにおけるルーティングテーブルが登録された場合には、図8(E)等に示す処理に戻る。
【0140】
ステップS723では、制御部11は、上記返信メッセージの送信元の参加ノードnnまでのTTL値を取得する(かかるTTL値は、参加要求メッセージのTTL値をいくつで出したときに返信されたか、から取得できる)。
【0141】
次いで、制御部11は、レベルi(例えば、レベル1)のルーティングテーブルは既に登録済か否かを判別し(ステップS724)、既に登録済でない場合(ステップS724:N)、ステップS725に移行し、既に登録済である場合(ステップS724:Y)、ステップS726に移行する。
【0142】
ステップS725では、制御部11は、返信メッセージの送信元の参加ノードnnにおけるレベルiのルーティングテーブルを自己のルーティングテーブルに登録し、ステップS728に移行する。
【0143】
一方、ステップS726では、制御部11は、登録済のルーティングテーブルを送信した参加ノードnnまでのTTL値が、上記ステップS723で取得されたTTL値(当該処理開始の要因となった返信メッセージを送信した参加ノードnnまでのTTL値)より小さいか否かを判別する。
【0144】
登録済のルーティングテーブルを送信した参加ノードnnまでのTTL値が、上記ステップS723で取得されたTTL値より小さい場合には(ステップS726:Y)、上記受信した返信メッセージに付加されたレベルiのルーティングテーブルで、登録済のレベルiのルーティングテーブルを上書き更新し(ステップS727)、ステップS728に移行する。つまり、未参加ノードn16の制御部11は、夫々の参加ノードnnからの返信メッセージに含まれる夫々のルーティングテーブルのうち、同一レベルのルーティングテーブルが複数あるとき、当該同一レベルの複数のルーティングテーブルのうち、参加要求メッセージの到達可能範囲が最も狭い設定(TTL値がより小さい設定)で受信可能な参加ノードnnにおけるルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成することになる。これにより、転送回数(HOP数)が少ない参加ノードnnのルーティングテーブルが優先して登録されることになるので、ルーティングテーブルもローカリティ(地域性)が考慮されることになる。
【0145】
一方、登録済のルーティングテーブルを送信した参加ノードnnまでのTTL値が、上記ステップS723で取得されたTTL値より小さくない場合には(ステップS726:N)、ステップS728に移行する。
【0146】
ステップS728では、レベルを示す変数“i”を1インクリメントし、ステップS722に戻る。こうして、ステップS722〜S728の処理は、全てのレベルにおけるルーティングテーブルが登録されるまで繰り返し行われる。
【0147】
以上説明したように変形例によれば、参加要求メッセージの到達可能範囲が最も狭い設定(TTL値がより小さい設定)で受信可能な参加ノードnnにおけるルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成するようにしたので、よりネットワーク的に近い(例えば、HOP数が少ない)参加ノードnnのルーティングテーブルが優先して登録されることになり、ルーティングテーブルもローカリティ(地域性)が考慮され、より一層、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる。
【0148】
なお、上記実施例1におけるTTL値の変更設定と、上記実施例3における参加ノードnnの再選択とを組み合わせるように構成しても良い。例えば、返信メッセージが受信されないことによるTTL値の変更設定を一定回数、例えば、TTL値が“10”になるまで繰り返したら、TTL値を減少させて(例えば、2に設定)、上記ステップS1bの参加処理を呼び出し、当該参加処理において、“count”が、閾値に達するまで繰り返すように構成する。逆に、TTL値を固定で上記ステップS1bの参加処理を繰り返し、これでも、返信メッセージを受信できなければ、TTL値を増加して上限(255)に到達するまで繰り返すように構成する。このように構成すれば、より一層、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することが可能となる。
【0149】
また、上記実施形態においては、DHTを利用したアルゴリズムによって構築されたオーバーレイネットワーク9を前提として説明したが、本発明はこれに限定されるものではない。
【0150】
また、上記実施形態においては、到達可能範囲を表す情報として、TTLを例にとったがこれに限定されるものではなく、その他の情報を適用しても良い。
【図面の簡単な説明】
【0151】
【図1】本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【図2】DHTのノードID空間において、参加ノードn1から送出されたクエリがルートノードn10まで転送される様子の一例を示す図である。
【図3】参加ノードn1が保持するDHTのルーティングテーブルの一例を示す図である。
【図4】DHTのノードID空間の一例を示す概念図である。
【図5】DHTのルーティングテーブルが生成されるまでの流れの一例を示す概念図である。
【図6】参加ノードnn及び未参加ノードnmの概要構成例を示す図である。
【図7】(A)は、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、(B)は、管理サーバSAのメインルーチンを示すフローチャートである。
【図8】(A)は、実施例1において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、(B)は、実施例1において、装置情報要求メッセージを受信した場合における管理サーバSAの処理を示すフローチャートであり、(C)は、実施例1において、装置情報メッセージを受信した場合における未参加ノードnmの処理を示すフローチャートであり、(D)は、実施例1において、参加要求メッセージを受信した場合における参加ノードnnの処理を示すフローチャートであり、(E)は、実施例1において、返信メッセージを受信した場合における未参加ノードnmの処理を示すフローチャートであり、(F)は、実施例1において、登録メッセージを受信した場合における管理サーバSAの処理を示すフローチャートである。
【図9】(A)は、図8(E)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートであり、(B)は、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【図10】実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【図11】実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【図12】実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【図13】(A)は、実施例2において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、(B)は、実施例2において、参加要求メッセージを受信した場合における参加ノードnnの処理を示すフローチャートであり、(C)は、実施例2において、返信メッセージを受信した場合における未参加ノードnmの処理を示すフローチャートである。
【図14】(A)は、実施例3において、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、(B)は、実施例3において、14(A)に示すステップS1bにおける参加処理の詳細を示すフローチャートであり、(C)は、実施例3において、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【図15】(A)は、変形例において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、(B)は、変形例において、図8(E)及び図13(C)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートである。
【符号の説明】
【0152】
1 ノード装置
8 ネットワーク
11 制御部
12 記憶部
13 バッファメモリ
14 デコーダ部
15 映像処理部
16 表示部
17 音声処理部
18 スピーカ
20 通信部
21 入力部
22 バス
SA 管理サーバ
S コンテンツ配信システム
【技術分野】
【0001】
本発明は、通信ネットワークを介して互いに接続された複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の情報配信システム及び方法等に関し、特に、上記複数のノード装置のうちの全部又は一部のノード装置の参加により形成されているオーバーレイネットワークに未参加のノード装置が参加するための技術分野に関する。
【背景技術】
【0002】
ピアツーピア型の情報配信システムにおいて、例えば、分散ハッシュテーブル(以下、DHT(Distributed Hash Table)という)を利用して論理的に構築されたオーバーレイネットワークでは、各ノード装置が、当該オーバーレイネットワークに参加している全てのノード装置へのリンク情報(例えば、IPアドレス)を認識しているわけではなく、参加の際などに得られる一部のノード装置へのリンク情報だけを保持しており、かかるリンク情報に基づき、データの問い合わせ等を行うようになっている。
【0003】
このようなオーバーレイネットワークにおいては、ノード装置の参加及び脱退(離脱)が頻繁に行われても、負荷分散が適切に行われる必要があり、非特許文献1には、オーバーレイネットワークにおいて、参加及び脱退(離脱)が頻繁に行われる場合であっても、適切に負荷分散を行うための技術が開示されている。
【非特許文献1】「分散ハッシュテーブルの軽量な負荷分散手法の検討」 社団法人 電子情報通信学会 信学技報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記従来の技術においては、各ノード装置のリンク情報は、ローカリティ(地域性)、言い換えれば、実際のネットワーク(実ネットワーク)上の近さが考慮されていないため、実際のネットワークに対して余分な負荷を与えることが考えられる。
【0005】
本発明は、以上の問題等に鑑みてなされたものであり、ローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能で、実際のネットワークへの余分な負荷を軽減することが可能なノード装置、コンピュータプログラム、情報配信システム、及びネットワーク参加方法を提供することを課題とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークに参加するノード装置であって、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、前記参加要求情報を受信したノード装置から送信された返信情報であって、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を受信する返信情報受信手段と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を備えることを特徴とする。
【0007】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、上記参加要求情報の到達可能範囲を表す情報を設定し、当該設定した情報を参加要求情報に付加して、複数のノード装置に対して送信し、上記参加要求情報を受信することができたノード装置から送信されてきた返信情報に含まれる転送先テーブルに基づいて自己が使用するべき転送先テーブルを生成して、オーバーレイネットワークに参加するようにしたので、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となり、通信ネットワークへの余分な負荷を軽減することができる。
【0008】
請求項2に記載の発明は、請求項1に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記参加要求情報送信手段は、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とする。
【0009】
この発明によれば、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0010】
請求項3に記載の発明は、請求項1に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記到達可能範囲設定手段は、前記参加要求情報の到達可能範囲を表す情報を変更設定し、前記参加要求情報送信手段は、前記変更設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とする。
【0011】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、参加要求情報を送信してから所定時間以内に返信情報を受信しない場合には、当該参加要求情報の到達可能範囲を表す情報を変更設定し、当該変更設定された情報を参加要求情報に付加して、再度、各ノード装置に対して送信するようにしたので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0012】
請求項4に記載の発明は、請求項4に記載のノード装置において、前記到達可能範囲設定手段は、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を表す情報を変更設定することを特徴とする。
【0013】
この発明によれば、上記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を広げていけるので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0014】
請求項5に記載の発明は、請求項1乃至4の何れか一項に記載のノード装置において、前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記装置情報取得手段は、前回取得した前記ノード装置の装置情報とは異なる装置情報を複数取得し、前記参加要求情報送信手段は、前記参加要求情報を当該取得された各前記装置情報により特定される各前記ノード装置に対して送信することを特徴とする。
【0015】
この発明によれば、返信情報が届かないときに、前回取得したノード装置の装置情報とは異なる装置情報を取得してこれらのノード装置に参加要求情報を送信するようにしたので、確実に、かつ、最適なノード装置の転送先テーブルを取得することができ、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0016】
請求項6に記載の発明は、請求項1乃至5の何れか一項に記載のノード装置において、前記転送先テーブルは、複数のレベルに区分されており、前記返信情報受信手段が、複数の前記ノード装置から前記返信情報を受信した場合に、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの前記複数の転送先テーブルのうち、前記参加要求情報の到達可能範囲が最も狭い設定で受信可能な1の前記ノード装置における前記転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とする。
【0017】
この発明によれば、オーバーレイネットワークにこれから参加するノード装置は、複数のノード装置からの返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの複数の転送先テーブルのうち、参加要求情報の到達可能範囲が最も狭い設定で受信可能なノード装置における転送先テーブルに基づいて、自己が使用するべき転送先テーブルが生成するようにしたので、よりネットワーク的に近い(例えば、HOP数が少ない)ノード装置の転送先テーブルが優先して登録されることになり、転送先テーブルもローカリティ(地域性)が考慮され、より一層、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となる。
【0018】
請求項7に記載の発明は、請求項1乃至6何れか一項に記載のノード装置において、前記参加要求情報送信手段は、自己に固有の識別情報を前記参加要求情報に付加して当該参加要求情報を送信し、前記参加要求情報は、当該参加要求情報を受信した前記ノード装置から、前記固有の識別情報の管理元であるノード装置に至るまで前記固有の識別情報に従って転送され、前記返信情報受信手段は、前記参加要求情報を転送する夫々のノード装置から送信された前記返信情報を受信し、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とする。
【0019】
この発明によれば、参加要求情報は、複数のノード装置に転送されるので、より多くのノード装置の転送先テーブルを取得することができる。
【0020】
請求項8に記載にコンピュータプログラムは、コンピュータを、請求項1乃至7何れか一項に記載のノード装置として機能させることを特徴とする。
【0021】
請求項9に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置を備えた情報配信システムであって、当該複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークを有する情報配信システムにおいて、前記オーバーレイネットワークに参加するノード装置は、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、を備え、前記参加要求情報を受信したノード装置は、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する返信情報送信手段を備え、前記オーバーレイネットワークに参加するノード装置は、前記転送先テーブルを含む返信情報を受信する返信情報受信手段と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を更に備えることを特徴とする。
【0022】
請求項10に記載の発明は、通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークへのネットワーク参加方法であって、前記オーバーレイネットワークに参加するノード装置は、前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する工程と、前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する工程と、前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する工程と、を備え、前記参加要求情報を受信したノード装置は、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する工程を備え、前記オーバーレイネットワークに参加するノード装置は、前記転送先テーブルを含む返信情報を受信する工程と、前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する工程と、を更に備えることを特徴とする。
【発明の効果】
【0023】
本発明によれば、オーバーレイネットワークにこれから参加するノード装置は、上記参加要求情報の到達可能範囲を表す情報を設定し、当該設定した情報を参加要求情報に付加して、複数のノード装置に対して送信し、上記参加要求情報を受信することができたノード装置から送信されてきた返信情報に含まれる転送先テーブルに基づいて自己が使用するべき転送先テーブルを生成して、オーバーレイネットワークに参加するようにしたので、通信ネットワーク上のローカリティ(地域性)が考慮されたオーバーレイネットワークを構築することが可能となり、通信ネットワークへの余分な負荷を軽減することができる。
【発明を実施するための最良の形態】
【0024】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに対して本発明を適用した場合の実施形態である。
【0025】
[1.コンテンツ配信システムの構成等]
始めに、図1を参照して、コンテンツ配信システムの概要構成等について説明する。
【0026】
図1は、本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【0027】
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a,4b、DSL(Digital Subscriber Line)回線事業者(の装置)5a,5b、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界の通信ネットワーク)8が構築されている。なお、図1の例におけるネットワーク(通信ネットワーク)8には、データ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
【0028】
コンテンツ配信システムSは、このようなネットワーク8を介して相互に接続された複数のノード装置n1,n2・・・n21を備えて構成されることになり、ピアツーピア方式のネットワークシステムとなっている(なお、実際には、これ以上のノード装置が存在することになる)。また、各ノード装置n1〜n21には、固有の製造番号及びIP(Internet Protocol)アドレス(グローバルIPアドレス)が割り当てられている。なお、製造番号及びIPアドレスは、複数のノード装置間で重複しないものである。
【0029】
そして、このコンテンツ配信システムSにおいては、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムによって、図1の上部枠100内に示すような、オーバーレイネットワーク9が構築されることになる。つまり、このオーバーレイネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するネットワーク(論理的なネットワーク)を意味する。
【0030】
本実施形態においては、DHTを利用したアルゴリズムによって構築されたオーバーレイネットワーク9を前提としており、このオーバーレイネットワーク9(図1の上部枠100内)に配置されたノード装置n1〜n15を、オーバーレイネットワーク9に参加しているノード装置(以下、このようなノード装置n1〜n15を「参加ノードnn」と総称する)という。言い換えれば、オーバーレイネットワーク9は、参加ノードnnの参加により形成されている。このようなオーバーレイネットワーク9への参加は、参加していないノード装置n16〜n21(以下、「未参加ノードnm」と総称する)が、任意の参加ノードnnに対して参加要求を示す参加要求情報を送信することによって行われる。
【0031】
また、各参加ノードnnは、自己に固有の識別情報としてのノードIDを有しており、当該ノードIDは、例えば、IPアドレスあるいは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化した値(例えば、bit長が160bit)であり、一つのID空間に偏りなく分散して配置されることになる。
【0032】
なお、本実施形態では、IPアドレスを共通のハッシュ関数によりハッシュ化した値をノードIDとする。また、図1の例に示すコンテンツ配信システムSには、全ての参加ノードnnの装置情報(例えば、ノードID、IPアドレス、ポート番号等)を管理する管理サーバSAが存在しているが、このような管理サーバSAが存在せずとも、オーバーレイネットワーク9の形成は可能である。
【0033】
このように共通のハッシュ関数により求められた(ハッシュ化された)ノードIDは、当該IPアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。
【0034】
また、各参加ノードnnは、夫々、DHTを保持している。このDHTは、オーバーレイネットワーク上における情報の転送先を規定しており、具体的には、ノードID空間内で適度に離れた参加ノードnnのノードIDとそのIPアドレス等の組が複数登録されたルーティングテーブル(転送先テーブル)が含まれている。
【0035】
このようなDHTは、未参加ノードnmがオーバーレイネットワーク9に参加する際に与えられることになる。
【0036】
また、コンテンツ配信システムSにおいては、未参加ノードnmによるオーバーレイネットワーク9への参加、若しくは参加ノードnnによるオーバーレイネットワーク9からの脱退が頻繁に行われるため、定期的に(例えば数十分から数時間間隔で)DHTの更新が必要かどうかが確認されると共に、その更新情報がDHTのルーティングテーブルに従って他の参加ノードnnに伝達されるようになっている。これにより、DHTを最新の状態に保つことが可能となる。
【0037】
更に、オーバーレイネットワーク9においては、様々なコンテンツ(例えば、映画や音楽等)データが複数の参加ノードnnに分散して保存(格納)されている。例えば、参加ノードn1には、タイトルがXXXの映画のコンテンツデータが保存されており、一方、参加ノードn2には、タイトルがYYYの映画のコンテンツデータが保存されるというように、互いに異なるコンテンツデータが、複数の参加ノードnnに分散されて保存される。
【0038】
また、あるコンテンツデータは、1つの参加ノードnnに保存されているとは限らず、複数の参加ノードnnに同じコンテンツデータが保存されうる。これらのコンテンツデータには、夫々、コンテンツ名(タイトル)等が付与されている。
【0039】
そして、このように分散保存されているコンテンツデータの所在を示す所在情報(例えば、コンテンツデータが保存されている参加ノードnnのIPアドレス等)もまた、複数の参加ノードnnに分散して保存されている。例えば、あるコンテンツデータのコンテンツ名(或いは、当該コンテンツデータの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化され(つまり、参加ノードnnのIPアドレスのハッシュ値と同一のID空間に配置)、そのハッシュ値(当該ハッシュ値がコンテンツIDとなる)と最も近い(例えば、上位桁がより多く一致する)ノードIDを有する参加ノードnn(当該ハッシュ値の管理元となる)に、当該コンテンツデータの所在情報が保存されることになる。つまり、同一のコンテンツデータ(コンテンツIDが同一)が、夫々、複数の参加ノードnnに保存されている場合であっても、かかるコンテンツデータの所在を示す所在情報(複数の参加ノードnnのIPアドレス等)は、1つの参加ノードnnで管理することができる(このようにコンテンツデータの所在を管理する参加ノードを、以下、「ルートノード」という)。なお、本実施形態においては、1のルートノードでは、1のコンテンツIDに対応するコンテンツデータの所在情報が保存される(つまり、ルートノードと上記所在情報とは1対1の関係にある)が、これに限定されるものではない)。
【0040】
これにより、あるコンテンツデータを取得(ダウンロード)したいユーザが使用する例えば参加ノードn4は、当該コンテンツデータのコンテンツIDが付加されたクエリ(問合せ情報)を他の参加ノードnnに対して送出することにより、当該コンテンツIDが付加されたクエリは、いくつかの参加ノードnnを経由されて(各中継ノードにおいて、上記DHTのルーティングテーブルが参照されてコンテンツIDが転送される)そのコンテンツデータの所在を示す所在情報を保存しているルートノードn10に辿り着き、当該ルートノードn10から当該所在情報を取得(受信)することが可能となり、取得した所在情報に基づいて上記コンテンツデータを保存している例えば参加ノードn5に接続し、そこから当該コンテンツデータを取得(受信)することが可能になる。
【0041】
なお、コンテンツIDがルートノードn10に辿り着くまでの間に当該ルートノードn10と同じ所在情報をキャッシュしている参加ノードnnから当該所在情報を取得(受信)されるようにしてもよい。
【0042】
図2は、DHTのノードID空間において、参加ノードn4から送出されたクエリがルートノードn10まで転送される様子の一例を示す図である。図2の例において、各中継ノードは、受信したクエリに付加されたコンテンツIDと、DHTのルーティングテーブルに登録されているノードIDとを比較して、次に転送すべき参加ノードnnを特定(例えば、コンテンツIDの上位数桁が一致するノードIDに対応する参加ノードnnのIPアドレスを特定)し、そこにクエリを転送することになる。
【0043】
ここで、上記DHTのルーティングテーブルの一般的な考え方の一例について以下に説明する。
【0044】
図3は、参加ノードn1が保持するDHTのルーティングテーブルの一例を示す図であり、図4は、DHTのノードID空間の一例を示す概念図である。なお、図3及び図4の例においては、説明の便宜上、ノードIDのbit長を2bit×3桁=6bitとし、各桁を4進数(0〜3の整数)で表している(実際には、もっと長いbit長を用い、各桁も例えば4bitに区切って0〜fの16進数で表現する)。
【0045】
図3の例において、DHTのルーティングテーブルは、レベル1〜レベル3のテーブルからなり(複数のレベルに区分されており)、各レベルのテーブルエントリーには、エリア毎に、ノードIDとこれに対応する参加ノードnnのIPアドレスが対応付けられて登録されている。各レベルのテーブルにおける各エリアは、DHTのノードID空間を分割することにより得られるエリアである。例えば、図4に示すように、レベル1では、DHTのノードID空間全体が4分割され、“000”〜“033”のノードIDが存在するエリアを0XXのエリア、“100”〜“133” のノードIDが存在するエリアを1XXのエリア、“200”〜“233” のノードIDが存在するエリアを2XXのエリア、“300”〜“333” のノードIDが存在するエリアを3XXのエリアとする。また、レベル2では、レベル1のエリア(つまり、0XX〜3XXのエリア)が更に4分割、例えば1XXのエリアが4分割され、“100”〜“103” のノードIDが存在するエリアを10Xのエリア、“110”〜“113” のノードIDが存在するエリアを11Xのエリア、“120”〜“123” のノードIDが存在するエリアを12Xのエリア、“130”〜“133” のノードIDが存在するエリアを13Xのエリアとする。
【0046】
そして、例えば、参加ノードn1のノードIDが“123”とすると、図3に示すように、かかる参加ノードn1のレベル1における1XXのエリア(自己が存在するエリア)のテーブルエントリーには、自己のノードID及びIPアドレス(IPアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い)が登録され、自己が存在しないエリア(つまり、0XXのエリア、2XXのエリア、及び3XXのエリア)には、夫々、他の任意の参加ノードnnのノードID及びIPアドレスが登録されている。
【0047】
また、かかる参加ノードn1のレベル2における12Xのエリア(自己が存在するエリア)のテーブルエントリーには、図3に示すように、自己のノードID及びIPアドレス(IPアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い)が登録され、自己が存在しないエリア(つまり、10Xのエリア、11Xのエリア、及び13Xのエリア)には、夫々、他の任意の参加ノードnnのノードID及びIPアドレスが登録されている。
【0048】
更に、かかる参加ノードn1のレベル3には、図3に示すように、12Xのエリアに存在する全ての参加ノードnnのノードID及びIPアドレスが登録される。
【0049】
なお、図3及び図4の例では、ノードIDのbit長を3桁×2bitとしたので、レベル1〜3の3レベル分のテーブルで網羅できるが、ノードIDのbit長が増せば、その分のテーブルが必要となる(例えば、ノードIDのbit長を16桁×4bitとした場合、16レベル分のテーブルが必要となる)。
【0050】
このように、本実施形態におけるDHTのルーティングテーブルでは、レベルが上がるほど、エリアが狭まっていくようになっており、このように構成されたルーティングテーブルにより、例えば参加ノードn1から送出されたクエリがルートノードまで効率良く転送されることになる。
【0051】
そして、このようなDHTのルーティングテーブルは、未参加ノードnmが、オーバーレイネットワーク9に参加するために、任意の参加ノードnnに対して、自己のノードIDを付加した参加要求情報を送信することによって生成されることになる。
【0052】
このようなDHTのルーティングテーブルが生成されるまでの流れについて以下に説明する。
【0053】
図5は、DHTのルーティングテーブルが生成されるまでの流れの一例を示す概念図である。
【0054】
例えば、図5に示すように、未参加ノードn16は、自己のIPアドレスを上記ハッシュ関数によりハッシュ化してノードID(例えば、“333”とする)を生成し、当該ノードID及び自己(未参加ノードn16)のIPアドレスが付加された参加要求情報を参加ノードn1に送信する。
【0055】
これに対して、参加ノードn1は、当該参加要求情報を受信し、DHTのルーティングテーブル51を参照して、参加要求情報に付加されたノードID“333”と最も近いノードID“301”を有する参加ノードn11のIPアドレスを取得し、これに基づき、ノードID“333” 及び未参加ノードn16のIPアドレス が付加された参加要求情報を参加ノードn11に転送する。
【0056】
これに対して、参加ノードn11は、当該参加要求情報を受信し、DHTのルーティングテーブル52を参照して、参加要求情報に付加されたノードID“333”と最も近いノードID“332”を有する参加ノードn9のIPアドレスを取得し、これに基づき、ノードID“333”及び未参加ノードn16のIPアドレスが付加された参加要求情報を参加ノードn9に転送する。
【0057】
これに対して、参加ノードn9は、当該参加要求情報を受信し、DHTのルーティングテーブル53におけるレベル3のテーブルにおけるノードID“333”に対応付けて、未参加ノードn16のIPアドレスを登録する。つまり、参加ノードn9は、当該ノードID“333”の管理元となる。
【0058】
以上の流れの過程において、図5に示すように、当該参加要求情報を受信した参加ノードn1、参加ノードn11、及び参加ノードn9は、未参加ノードn16に対して、DHTのルーティングテーブルの一部を(参加ノードn1はレベル1のテーブルを、参加ノードn11はレベル2のテーブルを、参加ノードn9はレベル3のテーブルを)含む返信情報を、夫々送信する。
【0059】
これに対して、未参加ノードn16は、送信されてきた各DHTのルーティングテーブルを含む返信情報を受信して、当該返信情報に含まれる各ルーティングテーブルに基づいて、自己が使用するべきDHTのルーティングテーブル54を生成する。このとき、各エントリーに対して、別の既知のノード情報を登録できる場合は、エントリーを書き換えても良い。図5の例では、参加ノードn1におけるレベル1のテーブルエントリー51a(ノードID“301”及びこれに対応するIPアドレス)については、自己のノードID“333”及びこれに対応するIPアドレスと入れ替えている。なお、図5の例では、各参加ノードnnが別々のレベルのテーブルを返しているが、どの参加ノードnnからも全レベルのテーブル(すなわちルーティングテーブル全体)を返すようにして、未参加ノードnmがそれぞれのテーブルからテーブルエントリーを適宜、取捨選択して自己の新たなテーブルを作り上げても良い。
【0060】
こうして生成されたDHTのルーティングテーブル54を得た未参加ノードn16は、参加ノードn16としてオーバーレイネットワーク9に加わるのである。
【0061】
ところで、このように生成されるDHTのルーティングテーブルは、極力、ネットワーク8への負荷(ノードIDを含む情報がネットワーク8上を伝送されることによる負荷)を軽減するものであることが望ましい。本実施形態においては、ネットワーク8への負荷の軽減可能なDHTのルーティングテーブルを生成するために、任意の複数の参加ノードnnに向けて参加要求情報が送信し、そのうち、ネットワーク8上のローカリティ(地域性)が考慮された参加ノードnnから上記返信情報が返信されることを特徴とする。
【0062】
例えば、図1の下部枠101内において、同一の回線事業者(例えば、回線事業者5a)に属する(符号101a内の)参加ノードn1と未参加ノードn16は、ローカリティ(地域性)が高いということができ、一方、当該参加ノードn1と、異なる回線業者(例えば、回線事業者5b)に属する(符号101b内の)未参加ノードn21は、ローカリティ(地域性)が低い(つまり、一旦、ISP4a、IX3、及びISP4bを経由することになる)ということができる。なお、図1の例では、同一の回線事業者に属する参加ノードn1と未参加ノードn16には同一の地域番号(A1,A2,A3)が付されている。
【0063】
そして、ネットワーク8上のローカリティ(地域性)が考慮された参加ノードnnとは、未参加ノードnmとローカリティ(地域性)が高い参加ノードnnを意味し、つまり、未参加ノードnmとネットワーク的に近い(言い換えれば、未参加ノードnmとの間の通信経路上における通信負荷が相対的に小さい)参加ノードnnを意味することなる。
【0064】
未参加ノードnmが、ネットワーク8上のローカリティ(地域性)が考慮された参加ノードnnからの返信情報を受信し、これに含まれるDHTのルーティングテーブルに基づき、自己が使用するべきDHTのルーティングテーブル54を生成していけば、例えばネットワーク的に互いに近い関係にある参加ノードnn間でコンテンツID及びノードIDが転送されるようになり、その結果、ネットワーク8全体に与える負荷を低減することが可能となる。
【0065】
なお、上記流れは、未参加ノードn16が、新たにオーバーレイネットワーク9に参加する場合ばかりでなく、一度脱退した後、再度参加する場合にも適用することができる。
【0066】
次に、図6を参照して、参加ノードnn及び未参加ノードnmの構成及び機能について説明する。
【0067】
図6は、参加ノードnn及び未参加ノードnmの概要構成例を示す図である。
【0068】
参加ノードnn及び未参加ノードnmは、夫々、図6に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部11と、各種データ(例えば、コンテンツデータ、所在情報、DHT)及びプログラム等を記憶保存(格納)するためのHDD等から構成された記憶部12と、受信されたコンテンツデータを一時蓄積するバッファメモリ13と、コンテンツデータに含まれるエンコードされたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部14と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、当該映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部16と、上記デコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部17と、当該音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18と、ネットワーク8を通じて他の参加ノードnn又は未参加ノードnmとの間の情報の通信制御を行うための通信部20と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス、或いは、操作パネル等)21と、を備えて構成され、制御部11、記憶部12、バッファメモリ13、デコーダ部14、及び通信部20は、バス22を介して相互に接続されている。
【0069】
このような構成において、未参加ノードnmにおける制御部11は、CPUが記憶部12等に記憶されたプログラム(本発明のコンピュータプログラムを含む)を読み出して実行することにより、全体を統括制御すると共に、本発明の装置情報取得手段、到達可能範囲設定手段、参加要求情報送信手段、返信情報受信手段、及び転送先テーブル生成手段等として機能し、後述する各種処理を行うようになっている。
【0070】
また、参加ノードnnにおける制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、全体を統括制御すると共に、オーバーレイネットワーク9においてノードID及びコンテンツIDの送受信、コンテンツデータの送受信、所在情報の送受信等の各種処理を行い、更には、未参加ノードnm等からの検索情報、参加要求情報等を受信し、後述する各種処理を行うようになっている。
【0071】
なお、上記コンピュータプログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしてもよい。
【0072】
[2.コンテンツ配信システムの動作]
次に、未参加ノードnmがオーバーレイネットワーク9に新たに参加する場合におけるコンテンツ配信システムSの動作について、実施例1乃至3に分けて夫々説明する。
【0073】
(実施例1)
先ず、図7乃至図12を参照して、実施例1におけるコンテンツ配信システムSの動作について説明する。
【0074】
この実施例1は、全ての参加ノードnnへの装置情報(リンク情報)が記述された参加ノードリストを管理する管理サーバSAがネットワーク8に接続されている場合の動作例である。
【0075】
図7(A)は、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、図7(B)は、管理サーバSAのメインルーチンを示すフローチャートである。
【0076】
また、図8(A)は、実施例1において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、図8(B)は、実施例1において、装置情報要求メッセージを受信した場合における管理サーバSAの処理(ステップS104におけるメッセージ毎の処理)を示すフローチャートであり、図8(C)は、実施例1において、装置情報メッセージを受信した場合における未参加ノードnmの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図8(D)は、実施例1において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図8(E)は、実施例1において、返信メッセージを受信した場合における未参加ノードnmの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図8(F)は、実施例1において、登録メッセージを受信した場合における管理サーバSAの処理(ステップS104におけるメッセージ毎の処理)を示すフローチャートである。
【0077】
また、図9(A)は、図8(E)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートであり、図9(B)は、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【0078】
また、図10乃至図12は、実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【0079】
図7(A)の処理は、例えば未参加ノードnmの電源が投入(電源ON)された場合に開始され、先ず、制御部11は、オーバーレイネットワーク9へ参加するための参加処理(詳細は後述)を行う(ステップS1)。次いで、制御部11は、電源OFFになったか否かを判別し(ステップS2)、電源OFFになった場合には(ステップS2:Y)、当該処理を終了する。一方、電源OFFでない場合には(ステップS2:N)、制御部11は、ユーザによる入力部21からの操作があるか否かを判別し(ステップS3)、操作がある場合には(ステップS3:Y)、当該操作毎の処理(操作信号に応じた処理)を実行する(ステップS4)。一方、入力部21からの操作がない場合には(ステップS3:N)、制御部11は、メッセージ(例えば、後述する装置情報メッセージ、参加要求メッセージ、返信メッセージ等)の受信があるか否かを判別し(ステップS5)、当該受信がある場合には(ステップS5:Y)、当該メッセージ毎の処理(詳細は後述)を行う(ステップS6)。一方、メッセージの受信がない場合には(ステップS5:N)、ステップS2の処理に戻る。こうして上記処理は、未参加ノードnm(処理の途中から参加ノードnnになる)において、電源OFFとなるまで繰り返し実行される。
【0080】
一方、図7(B)の処理は、例えば管理サーバSAの電源が投入(電源ON)された場合に開始され、先ず、管理サーバSAは、参加ノードリストを初期化し(ステップS101)、電源OFFになったか否かを判別し(ステップS102)、電源OFFになった場合には(ステップS102:Y)、当該処理を終了する。一方、電源OFFでない場合には(ステップS102:N)、管理サーバSAは、メッセージ(例えば、後述する装置情報要求メッセージ等)の受信があるか否かを判別し(ステップS103)、当該受信がある場合には(ステップS103:Y)、当該メッセージ毎の処理(詳細は後述)を行う(ステップS104)。一方、メッセージの受信がない場合には(ステップS103:N)、ステップS102の処理に戻る。こうして上記処理は、管理サーバSAにおいて、電源OFFとなるまで繰り返し実行される。
【0081】
次に、上記ステップS1における参加処理においては、図8(A)に示すように、未参加ノードnm(ここでは、図10に示す未参加ノードn16とする)の制御部11は、先ず、初期化を行い、登録フラグを“false”に、“ttl”(変数)を例えば“2”に、夫々設定する(ステップS11)。次いで、制御部11は、管理サーバSAのIPアドレス等(例えば、製品出荷時に記憶部12に記憶しておく)を取得し(ステップS12)、オーバーレイネットワーク9への参加要求を示す参加要求情報としての参加要求メッセージを送信すべき複数の参加ノードnnの装置情報を要求する装置情報要求メッセージ(例えば、自己(未参加ノードn16)のIPアドレスを送り元アドレスとし、管理サーバSAのIPアドレスを宛先アドレスとした装置情報要求パケット)を、通信部20及びネットワーク8を介して管理サーバSAに対して送信する(ステップS13:図10(A))。
【0082】
一方、管理サーバSAは、未参加ノードn16から送信されてきた装置情報要求メッセージを受信すると、図8(B)に示す処理を開始し、先ず、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報を選択する(ステップS110)。例えば、参加ノードリストからランダムに所定数の参加ノードnnが選択される。なお、オーバーレイネットワーク9への参加期間(登録期間)に応じた重み付けランダムにより所定数の参加ノードnnが選択されるようにしても良い。例えば、オーバーレイネットワーク9への参加期間(登録期間)が長いほど信頼性が高いといえるため、当該参加期間(登録期間)が長いほど選択される確率を高くする。こうすると、システム全体で見た安定性は向上するが、各参加ノードnnが持つDHT中に、参加期間が長い参加ノードnnへのリンクが多くなり、そのノードが脱退したときの悪影響が大きくなる。或いは逆に、未だ選択されていない参加ノードnnを優先的に選択させるために、参加期間(登録期間)が短いほど選択される確率を高くしても良い。こうすると、特定の参加ノードnnへのリンク集中は防げるが、DHT上に登録された情報の更新は頻繁になる。一長一短があるので、システムの用途、参加ノードnnの使われ方(特に電源ON・OFFの頻度分布)に応じて、制御方法を変更すると良い。また、過去に選択された回数(上記選択された回数を、各参加ノードnn毎にカウントしておく)に応じた重み付けランダムにより所定数の参加ノードnnが選択されるようにしても良い。例えば、過去に選択された回数が多いほど信頼性が高いといえるため、過去に選択された回数が多いほど選択される確率を高くする。或いは、未だ選択されていない参加ノードnnを優先的に選択させるために、過去に選択された回数が少ないほど選択される確率を高くしても良い。
【0083】
次いで、管理サーバSAは、上記選択した複数の参加ノードnnの装置情報を付加した装置情報メッセージ(例えば、自己(管理サーバSA)のIPアドレスを送り元アドレスとし、未参加ノードn16のIPアドレスを宛先アドレスとした装置情報パケット)を、ネットワーク8を介して未参加ノードn16に対して送信する(ステップS111:図10(B))。
【0084】
一方、未参加ノードn16は、管理サーバSAから送信されてきた装置情報メッセージを受信すると、図8(C)に示す処理を開始し、先ず、未参加ノードn16の制御部11は、装置情報取得手段として、装置情報メッセージに付加された複数の参加ノードnnの装置情報を取得する(ステップS61)。
【0085】
次いで、未参加ノードn16の制御部11は、到達可能範囲設定手段として、TTL(Time To Live)値を上記“ttl(例えば、2)”に設定し、オーバーレイネットワーク9への参加要求を示す参加要求メッセージに対して当該TTL値を設定(付加)して自己(未参加ノードn16)のノードIDを付加し、参加要求情報送信手段として、当該参加要求メッセージ(例えば、自己(未参加ノードn16)のIPアドレスを送り元アドレスとし、上記取得された各装置情報により特定される各参加ノードnnのIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して各参加ノードnnに対して送信する(ステップS62:図10(C))。次いで、未参加ノードn16の制御部11は、所定時間後(例えば、1〜10秒後)に起動する返信メッセージ受信タイマーをセット(カウント開始)する(ステップS63)。かかる返信メッセージ受信タイマーは、後述する処理で解除(リセット)されなければ、図9(A)に示す処理が開始されることになる。
【0086】
ここで、TTLは、ネットワーク8上を伝送される参加要求メッセージの到達可能範囲を表す情報の一例であり、最大“255”までの整数値で表され、メッセージ(パケット)がルータ等を1回経由(転送)する度に1減少するようになっている。なお、TTL値が“0”になったパケットはその時点で廃棄され、廃棄通知がパケットの送信元に届くようになっている。従って、受信されたメッセージ(パケット)のTTL値が大きいほど、それだけ転送回数(HOP数)が少ないということになるので、ネットワーク8の通信経路における通信負荷に与える影響も少なくなる。
【0087】
図10(C)は、参加要求メッセージが参加ノードn2、参加ノードn4、参加ノードn5、及び参加ノードn9に向かって送出されるが、参加ノードn4、参加ノードn5、及び参加ノードn9への参加要求メッセージは経路の途中でTTL値が“0”になったことにより届かず、結局、参加ノードn2にのみに参加要求メッセージが届いている例を示している。
【0088】
こうして、参加ノードn2は、未参加ノードn16から送信されてきた参加要求メッセージを受信すると、図8(D)に示す処理を開始し、先ず、参加ノードn2の制御部11は、参加要求メッセージ中の転送回数を基に、返信すべきルーティングテーブルのレベル(レベル番号)を決定する(ステップS65)。
【0089】
ここで、参加要求メッセージには、当該メッセージの転送回数をカウントするための転送カウンタが付加されており、当該メッセージが、DHTルーティングにより参加ノードnnにより転送される度に、当該転送カウンタが1カウントアップ(1増加)されるようになっている。参加ノードn2が受信した参加要求メッセージの転送カウンタは、未だ転送されていないので“0”となっているが、その後、転送される度に1ずつ増すことになる(例えば、図11(D)に示す参加ノードn6が受信した参加要求メッセージの転送カウンタは、“1”である。
【0090】
そして、例えば、このような転送カウンタにて示される転送回数が“0”の場合には、レベル1のテーブル(1行分)が、転送回数が“1”の場合にはレベル2のテーブルが、転送回数が“2”の場合にはレベル3のテーブルが、夫々、返信されるテーブルとして決定されることになる。
【0091】
次いで、参加ノードn2の制御部11は、自己のDHTのルーティングテーブルから、上記決定したレベル(レベル番号)のテーブルを取得し、返信情報としての返信メッセージに対して当該取得したレベル(レベル番号)のテーブルを付加し(添付し)、この返信メッセージ(例えば、自己(参加ノードn2)のIPアドレスを送り元アドレスとし、未参加ノードn16のIPアドレスを宛先アドレスとした返信パケット)を、通信部20及びネットワーク8を介して未参加ノードn16に対して送信(返信)する(ステップS66:図11(E))。
【0092】
次いで、参加ノードn2の制御部11は、DHTのルーティングテーブルを参照して、受信した参加要求メッセージに付加されている未参加ノードn16のノードIDに基づき、転送先を検索し(ステップS67)、転送先があるか否かを判別する(ステップS68)。例えば、自己(参加ノードn2)が、上記参加要求メッセージに付加されたノードIDと最も近いノードIDを有する場合には、ルーティングテーブル中で上記参加要求メッセージに付加されたノードIDに最も近いテーブルエントリーを検索すると、その転送先は自分自身を指すことになり(つまり、自己が参加要求メッセージに付加されたノードIDの管理元である)転送先がないと判別され(ステップS68:N)、図7(A)に示す処理に戻る。一方、最も近いノードIDを有しない(つまり、最も近いノードIDを有する参加ノードnnが他にある)場合には、検索したテーブルエントリーには他の参加ノードnnのIPアドレスが見つかり、転送先があると判別され(ステップS68:Y)、ステップS69に移行する。
【0093】
ステップS69では、参加ノードn2の制御部11は、参加要求メッセージ中の転送カウンタを1カウントアップ(1増加)させ、当該参加要求メッセージに付加されたノードIDと最も近いノードIDに対応するIPアドレスをDHTのルーティングテーブルから取得し、上記ノードIDが付加された参加要求メッセージに対して未参加ノードn16のIPアドレスを付加し、当該参加要求メッセージ(自己(参加ノードn2)のIPアドレスを送り元アドレス及び当該ルーティングテーブルから取得されたIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して、上記ルーティングテーブルから取得したIPアドレスに対応する参加ノードn6に対して送信(転送)し(図11(D))、図7(A)に示す処理に戻る。
【0094】
こうして、転送された参加要求メッセージを受信した参加ノードnnにおいても、図8(D)に示す処理が行われ、参加要求メッセージに付加されたノードIDの管理元である参加ノードn14に至るまで順次転送され、当該参加要求メッセージを受信した夫々の参加ノードn6,n13及びn14は、転送カウンタの値に応じたレベル(レベル番号)のテーブルを付加した返信メッセージを、未参加ノードn16に対して送信(返信)することになる(図11(E))。
【0095】
一方、未参加ノードn16は、返信情報受信手段として、各参加ノードnn(例えば、参加ノードn2)から送信されてきた返信メッセージを受信すると、図8(E)に示す処理を開始し、先ず、未参加ノードn16の制御部11は、転送先テーブル生成手段として、上記受信された返信メッセージに付加されたルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルを生成するルーティングテーブルの生成処理を行う(ステップS71)。
【0096】
このルーティングテーブルの生成処理では、図9(A)に示すように、未参加ノードn16の制御部11は、先ず、受信した返信メッセージに付加されたテーブルのレベル(レベル番号)を読み取り(ステップS711)、読み取ったレベル(レベル番号)のテーブルは、自己のルーティングテーブルに登録されているか否かを判別し(ステップS712)、登録されていない場合には(ステップS712:N)、当該レベル(レベル番号)のテーブルを自己のルーティングテーブルの対応箇所に登録し(ステップS713)、当該処理を終了し、図8(E)に示す処理に戻る。
【0097】
上記ルーティングテーブルの生成処理が終了し、図8(E)に示すステップS72では、未参加ノードn16の制御部11は、登録フラグが“false”であるか否かを判別し、登録フラグが“false”でない、つまり、“true”である場合には(ステップS72:N)、図7(A)に示す処理に戻る。一方、登録フラグが“false”である場合には(ステップS72:Y)、当該制御部11は、自己(未参加ノードn16)のノードIDが付加された登録メッセージ(自己(参加ノードn2)のIPアドレスを送り元アドレス及び管理サーバSAのIPアドレスを宛先アドレスとした登録パケット)を、通信部20及びネットワーク8を介して管理サーバSAに対して送信する(ステップS73)。
【0098】
次いで、未参加ノードn16の制御部11は、登録フラグを“true”に設定し(ステップS74)、返信メッセージ受信タイマーを解除する(ステップS75)。登録フラグは、未参加ノードがテーブルを(部分的にでも)生成してオーバーレイネットワーク9に参加したことを意味するフラグで、これが“true”になると、後述のタイマーによるリトライ処理(ttlを増やして参加要求メッセージを再送信する処理:S634)が止まるようになっている。
【0099】
一方、管理サーバSAは、未参加ノードn16から送信されてきた登録メッセージを受信すると、図8(F)に示す処理を開始し、当該登録メッセージの送信元の未参加ノードn16のノードID及びIPアドレス等を装置情報として参加ノードリストに登録する(ステップS115)する。こうして、未参加ノードn16のオーバーレイネットワーク9への参加が完了する。
【0100】
ところで、上記返信メッセージは、例えば図12(A)に示すように、参加要求メッセージが複数の参加ノードnn(図12(A)の例では、参加ノードn2及びn9)に届き、夫々の参加ノードnn及び当該参加ノードnnから転送された参加要求メッセージを受信した参加ノードnnから複数の返信メッセージが送信される(図12(B)、(C))場合が想定される。この場合、同じ転送回数である参加要求メッセージを受信した複数の参加ノードnn(例えば、図12(B)に示す参加ノードn2及びn9)から、同一レベルのテーブルが付加された返信メッセージが返信されることになるが、図9(A)に示すルーティングテーブルの生成処理において、ステップS712にて後から受信されたレベルのテーブルは廃棄される(つまり、先着優先で、そのレベルのテーブルが登録される)。
【0101】
一方、参加要求メッセージが何れの参加ノードに届かず(経路の途中でTTL値が“0”になったことより)、返信メッセージが受信されない場合も想定されるが、この場合、上記ステップS63においてセットされた返信メッセージ受信タイマーが起動し、図9(B)に示す処理が開始される。先ず、未参加ノードn16の制御部11は、登録フラグが“false”であるか否かを判別し(ステップS631)、登録フラグが“false”でない場合(ステップS631:N)、既に参加登録が完了しているので、当該処理を終了する。
【0102】
一方、登録フラグが“false”である場合(ステップS631:Y)、当該制御部11は、“ttl”を1カウントアップ(1増加)し(ステップS632)、上記ステップS62において設定したTTL値が255以下であるか否かを判別する(ステップS633)。そして、TTL値が255以下でない場合には(ステップS633:N)、当該処理を終了する。一方、TTL値が255以下である場合には(ステップS633:Y)、当該制御部11は、TTL値を、上記1カウントアップされた“ttl(例えば、3)”に変更設定し、参加要求メッセージに対して当該TTL値を設定して自己(未参加ノードn16)のノードIDを付加し、当該参加要求メッセージを、通信部20及びネットワーク8を介して各参加ノードnn(上記ステップS61にて取得された装置情報に対応する参加ノードnn)に対して再送信する(ステップS634)。つまり、未参加ノードn16は、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合には、当該参加要求メッセージの到達可能範囲を表す情報(TTL値)を変更設定(ここでは、前回設定したTTL値に基づく到達可能範囲よりも広くなるようにTTL値を変更設定する)し、当該変更設定されたTTL値を参加要求メッセージに設定(付加)し、当該参加要求メッセージを、再度、同じ各参加ノードnnに対して送信することになる。これにより、返信メッセージが受信されない場合、参加要求メッセージの到達可能範囲を少しずつ広げて(TTL値を少しずつ増加させて)、参加要求メッセージを再送信できるので、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することができる。
【0103】
なお、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合、未参加ノードn16は、TTL値を増加させずに、参加要求メッセージを、再度、同じ各参加ノードnnに対して送信するように構成しても良い。
【0104】
次いで、当該制御部11は、所定時間後(例えば、1〜10秒後)に起動する返信メッセージ受信タイマーをセット(カウント開始)する(ステップS635)。かかる返信メッセージ受信タイマーは、上記ステップS63と同様、解除(リセット)されなければ、図9(A)に示す処理が開始されることになる。
【0105】
以上説明したように、上記実施例1によれば、未参加ノードnmが、参加要求メッセージの到達可能範囲を表す情報としてのTTL値を低く設定し、当該設定したTTL値を参加要求メッセージに付加して、管理サーバSAから通知された複数の参加ノードnnに対して送信し、上記参加要求メッセージを受信することができた(つまり、よりネットワーク的に近い(例えば、HOP数が少ない))参加ノードnnから送信されてきた返信メッセージに含まれるルーティングテーブルに基づいて自己が使用するべきルーティングテーブルを生成して、オーバーレイネットワーク9に参加するようにしたので、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となり、ネットワーク8への余分な負荷を軽減することができる(第1の効果)。
【0106】
また、未参加ノードn16は、複数の参加ノードnnからの返信メッセージに含まれる夫々のルーティングテーブルのうち、同一レベルのルーティングテーブルが複数あるとき、当該同一レベルの複数のルーティングテーブルのうち、先着優先で受信されたルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成するようにしたので、自分自身から見てよりネットワーク負荷の少ないところに位置する参加ノードnnのルーティングテーブルが優先して登録されることになり、ルーティングテーブルもローカリティ(地域性)が考慮され、より一層、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる(第2の効果)。
【0107】
また、未参加ノードn16は、参加要求メッセージを送信してから所定時間以内に返信メッセージを受信しない場合には、当該参加要求メッセージの到達可能範囲を表す情報(TTL値)を変更設定(ここでは、前回設定したTTL値に基づく到達可能範囲よりも広くなるようにTTL値を変更設定する)し、当該変更設定されたTTL値を参加要求メッセージに設定(付加)して、再度、同じ各参加ノードnnに対して送信するようにしたので、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することができ、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる(第3の効果)。
【0108】
また、管理サーバSAは、全ての参加ノードnnの装置情報が記述された参加ノードリストだけを管理し、複数の参加ノードnnを選定して未参加ノードn16に通知するだけでよいので、管理サーバSAが未参加ノードnmにネットワーク的に近い参加ノードnnを認識しておく必要がなく、したがって、管理サーバSAの管理コストを低減することができる(第4の効果)。
【0109】
(実施例2)
次に、図13等を参照して、実施例2におけるコンテンツ配信システムSの動作について説明する。
【0110】
この実施例2は、実施例1とは異なり、全ての参加ノードnnへの装置情報を管理する管理サーバがネットワーク8に接続されていない場合の例である。
【0111】
なお、この実施例2において、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンは、図7(A)に示す通りであり、実施例1と同様である。
【0112】
図13(A)は、実施例2において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、図13(B)は、実施例2において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図13(C)は、実施例2において、返信メッセージを受信した場合における未参加ノードnmの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートである。なお、図13(A)乃至(C)において、図8(A)乃至(E)における同一の処理については、同一の符号を付している。
【0113】
図13(A)に示す参加処理おいては、実施例1と同様、未参加ノードnmの制御部11は、先ず、初期化を行い、登録フラグを“false”に、“ttl”(変数)を例えば“2”に、夫々設定する(ステップS21)。
【0114】
次いで、当該制御部11は、複数の専用参加ノードnnの装置情報(IPアドレス等を含む)を取得する(ステップS22)。当該専用参加ノードnnとは、例えば常時電源が入っており、オーバーレイネットワーク9に参加している信頼性の高い参加ノードnnであり、かかる複数の専用参加ノードnnの装置情報は、例えば、予め未参加ノードnm内に記憶されている(例えば、製品出荷時に設定しておく)。
【0115】
次いで、当該制御部11は、TTL値を上記“ttl(例えば、2)”に設定し、参加要求メッセージに対して当該TTL値を設定(付加)して自己(未参加ノードn16)のノードIDを付加し、当該参加要求メッセージ(例えば、自己(未参加ノードn16)のIPアドレスを送り元アドレスとし、上記取得された各装置情報により特定される各専用参加ノードnnのIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して各専用参加ノードnnに対して送信する(ステップS23)。
【0116】
次いで、未参加ノードn16の制御部11は、実施例1と同様、所定時間後(例えば、1〜10秒後)に起動する返信メッセージ受信タイマーをセット(カウント開始)する(ステップS24)。
【0117】
こうして、実施例1と同様、経路の途中でTTL値が“0”にならずに参加要求メッセージを受信することができた専用参加ノードnnは、未参加ノードnmから送信されてきた参加要求メッセージを受信すると、図13(B)に示す処理を開始することになる。なお、図13(B)に示す処理は、図8(D)に示す処理と同様であるので、重複する説明は省略する。
【0118】
そして、未参加ノードnmが、各専用参加ノードnnから送信されてきた返信メッセージを受信すると、図13(C)に示す処理を開始することになる。なお、図13(C)に示すステップS71におけるルーティングテーブル生成処理は、図9(A)に示す処理の通りであり、実施例1と同様であるので、重複する説明は省略する。また、実施例2においても、参加要求メッセージが何れの参加ノードに届かなかった場合、上記ステップS24においてセットされた返信メッセージ受信タイマーが起動し、図9(B)に示す処理が開始される。
【0119】
以上説明したように、上記実施例2によれば、実施例1における第1〜第3の効果を奏することに加えて、管理サーバSAを設けなくとも、未参加ノードnmとネットワーク的に近い参加ノードnnを選定することができるので、管理サーバSAに対して多数の未参加ノードnmからの装置情報要求メッセージが集中(負荷集中)することを回避できると共に、管理サーバSAの設置コストを低減することができる。
【0120】
(実施例3)
次に、図14等を参照して、実施例3におけるコンテンツ配信システムSの動作について説明する。
【0121】
この実施例3は、実施例1と同様に、全ての参加ノードnnへの装置情報を管理する管理サーバSAが存在する場合の動作例であるが、返信メッセージが届かないときに、再度、管理サーバSAが、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報を選択して未参加ノードnmに通知する場合の例である。
【0122】
なお、この実施例3において、管理サーバSAのメインルーチンは、図7(B)に示す通りであり、実施例1と同様である。
【0123】
図14(A)は、実施例3において、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、図14(B)は、実施例3において、図14(A)に示すステップS1bにおける参加処理の詳細を示すフローチャートであり、図14(C)は、実施例3において、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【0124】
図14(A)の処理は、例えば未参加ノードnmの電源が投入(電源ON)された場合に開始され、制御部11は、先ず、初期化を行い、登録フラグを“false”に、“count”(変数)を例えば“0”に、“ttl”(変数)を例えば“2”に、夫々設定する(ステップS1a)。
【0125】
次いで、当該制御部11は、オーバーレイネットワーク9への参加するための参加処理(詳細は後述)を行う(ステップS1b)。なお、ステップS1〜S6までの処理は、図7(A)と同様である。
【0126】
上記ステップS1bにおける参加処理おいては、図14(B)に示すように、未参加ノードnmの制御部11は、先ず、“count”を1カウントアップ(1増加)し(ステップS31)、管理サーバSAのIPアドレス等(例えば、製品出荷時に記憶部12に記憶しておく)を取得し(ステップS32)、装置情報要求メッセージを、通信部20及びネットワーク8を介して管理サーバSAに対して送信する(ステップS33)。
【0127】
一方、管理サーバSAは、未参加ノードn16から送信されてきた装置情報要求メッセージを受信すると、実施例1と同様、図8(B)に示す処理を開始し、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報をランダム又は上述した重み付けランダムで選択し、当該選択した参加ノードnnの装置情報を未参加ノードnmに送信することになる。以降、実施例3においても、実施例1と同様、図8(C)〜図8(F)、及び図9(A)の処理が行われる。
【0128】
そして、参加要求メッセージが何れの参加ノードに届かず(経路の途中でTTL値が“0”になったことより)、返信メッセージが送信されない場合、上記ステップS63においてセットされた返信メッセージ受信タイマーが起動し、図14(C)に示す処理が開始される。
【0129】
先ず、未参加ノードnmの制御部11は、登録フラグが“false”であるか否かを判別し(ステップS637)、登録フラグが“false”でない場合(ステップS637:N)、既に参加登録が完了しているので、当該処理を終了する。
【0130】
一方、登録フラグが“false”である場合(ステップS637:Y)、当該制御部11は、上記“count”が、閾値(例えば、5)より小さいか否かを判別し(ステップS638)、小さくない場合には(ステップS638:N)、当該処理を終了する。
【0131】
一方、上記“count”が、閾値(例えば、5)より小さい場合(ステップS638:Y)、制御部11は、上記ステップS1bと同様の参加処理を行う(ステップS639)。こうして、返信メッセージが受信されずに所定時間が経過する度に、“count”が閾値に達するまで、参加処理のリトライが行われる。
【0132】
以上説明したように、上記実施例3によれば、実施例1における第1、第2及び第4の効果を奏することに加えて、返信メッセージが届かないときに、再度、管理サーバSAが、参加ノードリストから所定数(例えば、10個)の参加ノードnnの装置情報(例えば、前回取得した参加ノードnnの装置情報とは異なる装置情報)を重み付けランダム等により再度選択して未参加ノードnmに通知し、これらの参加ノードnnに対して参加要求メッセージを送信するようにしたので、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することができ、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる。
【0133】
(変形例)
次に、上記実施例1乃至実施例3における、参加要求メッセージを受信した場合における参加ノードnnの処理(図8(D)及び図13(B)))及びルーティングテーブルの生成処理(図9(A))の変形例を、図15を参照して説明する。
【0134】
図15(A)は、変形例において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、図15(B)は、変形例において、図8(E)及び図13(C)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートである。
【0135】
図15(A)の処理は、参加ノードn2が未参加ノードn16から送信されてきた参加要求メッセージを受信すると開始され、先ず、参加ノードn2の制御部11は、自己のDHTのルーティングテーブル(例えば、全レベル)を取得し、返信情報としての返信メッセージに対して当該取得したルーティングテーブルを付加し、この返信メッセージ(例えば、自己(参加ノードn2)のIPアドレスを送り元アドレスとし、未参加ノードn16のIPアドレスを宛先アドレスとした返信パケット)を、通信部20及びネットワーク8を介して未参加ノードn16に対して送信(返信)する(ステップS65a:図11(E))。
【0136】
次いで、参加ノードn2の制御部11は、DHTのルーティングテーブルを参照して、受信した参加要求メッセージに付加されている未参加ノードn16のノードIDに基づき、転送先を検索し(ステップS66a)、転送先があるか否かを判別する(ステップS67a)。例えば、自己(参加ノードn2)が、上記参加要求メッセージに付加されたノードIDと最も近いノードIDを有する場合には、ルーティングテーブル中で上記参加要求メッセージに付加されたノードIDに最も近いテーブルエントリーを検索すると、その転送先は自分自身を指すことになり(つまり、自己が参加要求メッセージに付加されたノードIDの管理元である)転送先がないと判別され(ステップS67a:N)、図7(A)に示す処理に戻る。一方、最も近いノードIDを有しない(つまり、最も近いノードIDを有する参加ノードnnが他にある)場合には、検索したテーブルエントリーには他の参加ノードnnのIPアドレスが見つかり、転送先があると判別され(ステップS67a:Y)、ステップS68aに移行する。
【0137】
ステップS68aでは、参加ノードn2の制御部11は、参加要求メッセージに付加されたノードIDと最も近いノードIDに対応するIPアドレスをDHTのルーティングテーブルから取得し、上記ノードIDが付加された参加要求メッセージに対して未参加ノードn16のIPアドレスを付加し、当該参加要求メッセージ(自己(参加ノードn2)のIPアドレスを送り元アドレス及び当該ルーティングテーブルから取得されたIPアドレスを宛先アドレスとした参加要求パケット)を、通信部20及びネットワーク8を介して、上記ルーティングテーブルから取得したIPアドレスに対応する参加ノードn6に対して送信(転送)し(図11(D))、図7(A)に示す処理に戻る。
【0138】
次に、図15(B)に示すルーティングテーブルの生成処理では、未参加ノードn16の制御部11は、先ず、初期化処理を行い、レベルを示す変数“i”を1に設定する(ステップS721)。
【0139】
次いで、制御部11は、ルーティングテーブルの全レベル数(図3の例では、3)より“i”が小さいか否かを判別し(ステップS722)、“i”が小さい場合(ステップS722:Y)、つまり、未だ、全てのレベルにおけるルーティングテーブルが登録されていない場合には、ステップS723に移行し、“i”が小さくない場合(ステップS722:N)、つまり、全てのレベルにおけるルーティングテーブルが登録された場合には、図8(E)等に示す処理に戻る。
【0140】
ステップS723では、制御部11は、上記返信メッセージの送信元の参加ノードnnまでのTTL値を取得する(かかるTTL値は、参加要求メッセージのTTL値をいくつで出したときに返信されたか、から取得できる)。
【0141】
次いで、制御部11は、レベルi(例えば、レベル1)のルーティングテーブルは既に登録済か否かを判別し(ステップS724)、既に登録済でない場合(ステップS724:N)、ステップS725に移行し、既に登録済である場合(ステップS724:Y)、ステップS726に移行する。
【0142】
ステップS725では、制御部11は、返信メッセージの送信元の参加ノードnnにおけるレベルiのルーティングテーブルを自己のルーティングテーブルに登録し、ステップS728に移行する。
【0143】
一方、ステップS726では、制御部11は、登録済のルーティングテーブルを送信した参加ノードnnまでのTTL値が、上記ステップS723で取得されたTTL値(当該処理開始の要因となった返信メッセージを送信した参加ノードnnまでのTTL値)より小さいか否かを判別する。
【0144】
登録済のルーティングテーブルを送信した参加ノードnnまでのTTL値が、上記ステップS723で取得されたTTL値より小さい場合には(ステップS726:Y)、上記受信した返信メッセージに付加されたレベルiのルーティングテーブルで、登録済のレベルiのルーティングテーブルを上書き更新し(ステップS727)、ステップS728に移行する。つまり、未参加ノードn16の制御部11は、夫々の参加ノードnnからの返信メッセージに含まれる夫々のルーティングテーブルのうち、同一レベルのルーティングテーブルが複数あるとき、当該同一レベルの複数のルーティングテーブルのうち、参加要求メッセージの到達可能範囲が最も狭い設定(TTL値がより小さい設定)で受信可能な参加ノードnnにおけるルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成することになる。これにより、転送回数(HOP数)が少ない参加ノードnnのルーティングテーブルが優先して登録されることになるので、ルーティングテーブルもローカリティ(地域性)が考慮されることになる。
【0145】
一方、登録済のルーティングテーブルを送信した参加ノードnnまでのTTL値が、上記ステップS723で取得されたTTL値より小さくない場合には(ステップS726:N)、ステップS728に移行する。
【0146】
ステップS728では、レベルを示す変数“i”を1インクリメントし、ステップS722に戻る。こうして、ステップS722〜S728の処理は、全てのレベルにおけるルーティングテーブルが登録されるまで繰り返し行われる。
【0147】
以上説明したように変形例によれば、参加要求メッセージの到達可能範囲が最も狭い設定(TTL値がより小さい設定)で受信可能な参加ノードnnにおけるルーティングテーブルに基づいて、自己が使用するべきルーティングテーブルが生成するようにしたので、よりネットワーク的に近い(例えば、HOP数が少ない)参加ノードnnのルーティングテーブルが優先して登録されることになり、ルーティングテーブルもローカリティ(地域性)が考慮され、より一層、ネットワーク8上のローカリティ(地域性)が考慮されたオーバーレイネットワーク9を構築することが可能となる。
【0148】
なお、上記実施例1におけるTTL値の変更設定と、上記実施例3における参加ノードnnの再選択とを組み合わせるように構成しても良い。例えば、返信メッセージが受信されないことによるTTL値の変更設定を一定回数、例えば、TTL値が“10”になるまで繰り返したら、TTL値を減少させて(例えば、2に設定)、上記ステップS1bの参加処理を呼び出し、当該参加処理において、“count”が、閾値に達するまで繰り返すように構成する。逆に、TTL値を固定で上記ステップS1bの参加処理を繰り返し、これでも、返信メッセージを受信できなければ、TTL値を増加して上限(255)に到達するまで繰り返すように構成する。このように構成すれば、より一層、確実に、かつ、最適な参加ノードnnのルーティングテーブルを取得することが可能となる。
【0149】
また、上記実施形態においては、DHTを利用したアルゴリズムによって構築されたオーバーレイネットワーク9を前提として説明したが、本発明はこれに限定されるものではない。
【0150】
また、上記実施形態においては、到達可能範囲を表す情報として、TTLを例にとったがこれに限定されるものではなく、その他の情報を適用しても良い。
【図面の簡単な説明】
【0151】
【図1】本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【図2】DHTのノードID空間において、参加ノードn1から送出されたクエリがルートノードn10まで転送される様子の一例を示す図である。
【図3】参加ノードn1が保持するDHTのルーティングテーブルの一例を示す図である。
【図4】DHTのノードID空間の一例を示す概念図である。
【図5】DHTのルーティングテーブルが生成されるまでの流れの一例を示す概念図である。
【図6】参加ノードnn及び未参加ノードnmの概要構成例を示す図である。
【図7】(A)は、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、(B)は、管理サーバSAのメインルーチンを示すフローチャートである。
【図8】(A)は、実施例1において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、(B)は、実施例1において、装置情報要求メッセージを受信した場合における管理サーバSAの処理を示すフローチャートであり、(C)は、実施例1において、装置情報メッセージを受信した場合における未参加ノードnmの処理を示すフローチャートであり、(D)は、実施例1において、参加要求メッセージを受信した場合における参加ノードnnの処理を示すフローチャートであり、(E)は、実施例1において、返信メッセージを受信した場合における未参加ノードnmの処理を示すフローチャートであり、(F)は、実施例1において、登録メッセージを受信した場合における管理サーバSAの処理を示すフローチャートである。
【図9】(A)は、図8(E)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートであり、(B)は、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【図10】実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【図11】実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【図12】実施例1において、未参加ノード16がオーバーレイネットワーク9に新たに参加する場合の様子の一例を示す概念図である。
【図13】(A)は、実施例2において、図7(A)に示すステップS1における参加処理の詳細を示すフローチャートであり、(B)は、実施例2において、参加要求メッセージを受信した場合における参加ノードnnの処理を示すフローチャートであり、(C)は、実施例2において、返信メッセージを受信した場合における未参加ノードnmの処理を示すフローチャートである。
【図14】(A)は、実施例3において、ノード(参加ノードnnと未参加ノードnmとで共通)のメインルーチンを示すフローチャートであり、(B)は、実施例3において、14(A)に示すステップS1bにおける参加処理の詳細を示すフローチャートであり、(C)は、実施例3において、返信メッセージ受信タイマーが起動した場合における未参加ノードnmの処理を示すフローチャートである。
【図15】(A)は、変形例において、参加要求メッセージを受信した場合における参加ノードnnの処理(ステップS6におけるメッセージ毎の処理)を示すフローチャートであり、(B)は、変形例において、図8(E)及び図13(C)に示すステップS71におけるルーティングテーブルの生成処理の詳細を示すフローチャートである。
【符号の説明】
【0152】
1 ノード装置
8 ネットワーク
11 制御部
12 記憶部
13 バッファメモリ
14 デコーダ部
15 映像処理部
16 表示部
17 音声処理部
18 スピーカ
20 通信部
21 入力部
22 バス
SA 管理サーバ
S コンテンツ配信システム
【特許請求の範囲】
【請求項1】
通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークに参加するノード装置であって、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、
前記参加要求情報を受信したノード装置から送信された返信情報であって、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を受信する返信情報受信手段と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、
を備えることを特徴とするノード装置。
【請求項2】
請求項1に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記参加要求情報送信手段は、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とするノード装置。
【請求項3】
請求項1に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記到達可能範囲設定手段は、前記参加要求情報の到達可能範囲を表す情報を変更設定し、前記参加要求情報送信手段は、前記変更設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とするノード装置。
【請求項4】
請求項4に記載のノード装置において、
前記到達可能範囲設定手段は、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を表す情報を変更設定することを特徴とするノード装置。
【請求項5】
請求項1乃至4の何れか一項に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記装置情報取得手段は、前回取得した前記ノード装置の装置情報とは異なる装置情報を複数取得し、前記参加要求情報送信手段は、前記参加要求情報を当該取得された各前記装置情報により特定される各前記ノード装置に対して送信することを特徴とするノード装置。
【請求項6】
請求項1乃至5の何れか一項に記載のノード装置において、
前記転送先テーブルは、複数のレベルに区分されており、
前記返信情報受信手段が、複数の前記ノード装置から前記返信情報を受信した場合に、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの前記複数の転送先テーブルのうち、前記参加要求情報の到達可能範囲が最も狭い設定で受信可能な1の前記ノード装置における前記転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とするノード装置。
【請求項7】
請求項1乃至6何れか一項に記載のノード装置において、
前記参加要求情報送信手段は、自己に固有の識別情報を前記参加要求情報に付加して当該参加要求情報を送信し、
前記参加要求情報は、当該参加要求情報を受信した前記ノード装置から、前記固有の識別情報の管理元であるノード装置に至るまで前記固有の識別情報に従って転送され、
前記返信情報受信手段は、前記参加要求情報を転送する夫々のノード装置から送信された前記返信情報を受信し、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とするノード装置。
【請求項8】
コンピュータを、請求項1乃至7何れか一項に記載のノード装置として機能させることを特徴とするコンピュータプログラム。
【請求項9】
通信ネットワークを介して互いに接続された複数のノード装置を備えた情報配信システムであって、当該複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークを有する情報配信システムにおいて、
前記オーバーレイネットワークに参加するノード装置は、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、を備え、
前記参加要求情報を受信したノード装置は、
前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する返信情報送信手段を備え、
前記オーバーレイネットワークに参加するノード装置は、
前記転送先テーブルを含む返信情報を受信する返信情報受信手段と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を更に備えることを特徴とする情報配信システム。
【請求項10】
通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークへのネットワーク参加方法であって、
前記オーバーレイネットワークに参加するノード装置は、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する工程と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する工程と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する工程と、を備え、
前記参加要求情報を受信したノード装置は、
前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する工程を備え、
前記オーバーレイネットワークに参加するノード装置は、
前記転送先テーブルを含む返信情報を受信する工程と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する工程と、を更に備えることを特徴とするネットワーク参加方法。
【請求項1】
通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークに参加するノード装置であって、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、
前記参加要求情報を受信したノード装置から送信された返信情報であって、前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を受信する返信情報受信手段と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、
を備えることを特徴とするノード装置。
【請求項2】
請求項1に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記参加要求情報送信手段は、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とするノード装置。
【請求項3】
請求項1に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記到達可能範囲設定手段は、前記参加要求情報の到達可能範囲を表す情報を変更設定し、前記参加要求情報送信手段は、前記変更設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を、再度、前記各ノード装置に対して送信することを特徴とするノード装置。
【請求項4】
請求項4に記載のノード装置において、
前記到達可能範囲設定手段は、前回設定した前記到達可能範囲よりも広くなるように前記到達可能範囲を表す情報を変更設定することを特徴とするノード装置。
【請求項5】
請求項1乃至4の何れか一項に記載のノード装置において、
前記参加要求情報を送信してから所定時間以内に前記返信情報を受信しない場合には、前記装置情報取得手段は、前回取得した前記ノード装置の装置情報とは異なる装置情報を複数取得し、前記参加要求情報送信手段は、前記参加要求情報を当該取得された各前記装置情報により特定される各前記ノード装置に対して送信することを特徴とするノード装置。
【請求項6】
請求項1乃至5の何れか一項に記載のノード装置において、
前記転送先テーブルは、複数のレベルに区分されており、
前記返信情報受信手段が、複数の前記ノード装置から前記返信情報を受信した場合に、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる夫々の転送先テーブルのうち、同一レベルの転送先テーブルが複数あるとき、当該同一レベルの前記複数の転送先テーブルのうち、前記参加要求情報の到達可能範囲が最も狭い設定で受信可能な1の前記ノード装置における前記転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とするノード装置。
【請求項7】
請求項1乃至6何れか一項に記載のノード装置において、
前記参加要求情報送信手段は、自己に固有の識別情報を前記参加要求情報に付加して当該参加要求情報を送信し、
前記参加要求情報は、当該参加要求情報を受信した前記ノード装置から、前記固有の識別情報の管理元であるノード装置に至るまで前記固有の識別情報に従って転送され、
前記返信情報受信手段は、前記参加要求情報を転送する夫々のノード装置から送信された前記返信情報を受信し、前記転送先テーブル生成手段は、夫々の前記返信情報に含まれる転送先テーブルに基づいて、前記自己が使用するべき転送先テーブルを生成することを特徴とするノード装置。
【請求項8】
コンピュータを、請求項1乃至7何れか一項に記載のノード装置として機能させることを特徴とするコンピュータプログラム。
【請求項9】
通信ネットワークを介して互いに接続された複数のノード装置を備えた情報配信システムであって、当該複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークを有する情報配信システムにおいて、
前記オーバーレイネットワークに参加するノード装置は、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する装置情報取得手段と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する到達可能範囲設定手段と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する参加要求情報送信手段と、を備え、
前記参加要求情報を受信したノード装置は、
前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する返信情報送信手段を備え、
前記オーバーレイネットワークに参加するノード装置は、
前記転送先テーブルを含む返信情報を受信する返信情報受信手段と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する転送先テーブル生成手段と、を更に備えることを特徴とする情報配信システム。
【請求項10】
通信ネットワークを介して互いに接続された複数のノード装置のうちの全部又は一部の前記ノード装置の参加により形成されているオーバーレイネットワークへのネットワーク参加方法であって、
前記オーバーレイネットワークに参加するノード装置は、
前記オーバーレイネットワークへの参加要求を示す参加要求情報を送信すべき複数のノード装置の装置情報を取得する工程と、
前記通信ネットワーク上を伝送される前記参加要求情報の到達可能範囲を表す情報を設定する工程と、
前記設定された到達可能範囲を表す情報を前記参加要求情報に付加し、当該参加要求情報を前記取得された各前記装置情報により特定される各前記ノード装置に対して送信する工程と、を備え、
前記参加要求情報を受信したノード装置は、
前記オーバーレイネットワーク上における情報の転送先を規定する転送先テーブルを含む返信情報を、前記参加要求情報の送信元である前記ノード装置に対して送信する工程を備え、
前記オーバーレイネットワークに参加するノード装置は、
前記転送先テーブルを含む返信情報を受信する工程と、
前記受信された返信情報に含まれる転送先テーブルに基づいて、自己が使用するべき前記転送先テーブルを生成する工程と、を更に備えることを特徴とするネットワーク参加方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2007−28400(P2007−28400A)
【公開日】平成19年2月1日(2007.2.1)
【国際特許分類】
【出願番号】特願2005−210077(P2005−210077)
【出願日】平成17年7月20日(2005.7.20)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【出願人】(396004833)株式会社エクシング (394)
【Fターム(参考)】
【公開日】平成19年2月1日(2007.2.1)
【国際特許分類】
【出願日】平成17年7月20日(2005.7.20)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【出願人】(396004833)株式会社エクシング (394)
【Fターム(参考)】
[ Back to top ]