特許文献2では、生存確認メッセージを受信した各ノード装置は、生存している旨を表す生存情報を、分散保存システムを管理する管理装置へ送信する。しかしながら、分散保存システムを構成する各ノード装置から一斉に生存情報が管理装置へ送信されると、管理装置の情報処理負荷及び通信負荷が増大し、管理装置の負担が大きくなる問題があった。
本発明は、上述した問題点を解決するためになされたものである。本発明の目的は、分散保存システムで管理装置が生存情報を受信する際、管理装置への情報処理負荷を増大することを防ぐ情報通信システム、ノード装置、ノード装置確認方法を提供することである。
請求項1記載の発明によれば、ネットワークを介して互いに通信可能な複数のノード装置から構成され、前記複数のノード装置の何れかのノード装置から他のノード装置へ情報を送受信する前記複数ノード装置の間で、情報の送受信が可能であるか否かを確認する確認メッセージを、各種メッセージの送信先を示すルーティングテーブルに基づいて前記複数のノード装置の少なくとも一部のノード装置へ送信するメッセージ送信手段と、前記確認メッセージを受信したノード装置が、前記情報の送受信が可能であることを示す接続情報を、前記確認メッセージの送信元へ送信する接続情報送信手段と、前記確認メッセージの送信先から受信した接続情報と、前記接続情報の送信元のノード装置を表すノード情報とを対応付けて前記ルーティングテーブルに記憶させる制御手段と、前記制御手段により前記ルーティングテーブルに記憶された接続情報を、前記接続情報を管理する管理装置へ送信する管理送信手段と、を備えることを特徴とする情報通信システムである。
請求項2記載の発明によれば、前記メッセージ送信手段と、前記制御手段と、前記管理送信手段と、前記確認メッセージを受信したノード装置から、前記接続情報を受信する接続情報受信手段と、を備える第1ノード装置と、前記確認メッセージを受信するメッセージ受信手段と、前記接続情報送信手段と、を備える第2ノード装置と、を少なくとも備えることを特徴とする。
請求項3記載の発明によれば、前記第1ノード装置は、前記ルーティングテーブルに記載された送信先へ確認メッセージを送信してから所定の時間以内に前記接続情報を受信したか否かを判定する接続判定手段と、を備え、前記接続判定手段により、所定の時間以内に前記接続情報を受信しなかったと判定されたとき、前記記憶手段が記憶するルーティングテーブルに、前記接続情報を受信しなかったと判定された送信先のノード装置と前記情報通信システムとの間で、情報の送受信が不可能であることを示す非接続情報を、前記接続情報を受信しなかったと判定された送信先のノード装置のノード情報と対応付けて記憶することを特徴とする。
請求項4記載の発明によれば、前記第1ノード装置に備えられた前記管理送信手段は、送信するタイミングをランダムに決められた所定の待機時間経過後に前記管理装置へ、前記ルーティングテーブルに記憶された接続情報を送信することを特徴とする。
請求項5記載の発明によれば、前記第2ノード装置は、前記接続情報を記憶する接続情報記憶手段と、前記接続情報送信手段により前記接続情報が送信されたとき、前記接続情報記憶手段から前記接続情報を削除する接続情報削除手段と、を備え、前記接続情報記憶手段に前記接続情報が記憶されているとき、前記接続情報送信手段は、前記接続情報を送信することを特徴とする。
請求項6記載の発明によれば、前記接続情報削除手段により前記接続情報が削除されてから所定の時間が経過した後に、前記接続情報を再度前記接続情報記憶手段に記憶させる記憶制御手段と、を備えることを特徴とする。
請求項7記載の発明によれば、前記メッセージ受信手段により前記確認メッセージを受信したときに、前記接続情報記憶手段に前記接続情報が記憶されていないとき、前記接続情報送信手段は、前記第2ノード装置が前記接続情報を既に送信した旨を示す完了メッセージを前記第1ノード装置へ送信することを特徴とする。
請求項8記載の発明によれば、請求項5から請求項7のいずれかに記載の情報通信システムを構成する第2ノード装置である。
請求項9に記載の発明によれば、ネットワークを介して互いに通信可能な複数のノード装置から構成され、前記複数のノード装置の何れかのノード装置から他のノード装置へ情報を送受信する前記複数ノード装置の間で、情報の送受信が可能であるか否かを確認する確認メッセージを、各種メッセージの送信先を示すルーティングテーブルに基づいて前記複数のノード装置の少なくとも一部のノード装置へ送信するメッセージ送信手段と、前記メッセージ送信手段により送信されたメッセージを受信したノード装置が、前記確認メッセージの送信元へ送信した前記情報の送受信が可能であることを示す接続情報を受信する接続情報受信手段と、前記確認メッセージの送信先から受信した接続情報と、前記接続情報の送信元のノード装置を表すノード情報とを対応付けて前記ルーティングテーブルに記憶させる制御手段と、前記制御手段により前記ルーティングテーブルに記憶された接続情報を、前記接続情報を管理する管理装置へ送信する管理送信手段と、を備えることを特徴とするノード装置である。
請求項10に記載の発明によれば、前記記憶手段に記憶された前記ルーティングテーブルに記載された送信先へ確認メッセージの送信が完了したか否かを判定する完了判定手段と、前記ルーティングテーブルに記載された送信先へ確認メッセージの送信が完了してから所定の時間以内に前記接続情報を受信したか否かを判定する接続判定手段と、を備え、前記接続判定手段により、所定の時間以内に前記接続情報を受信しなかったと判定されたとき、前記記憶手段が記憶するルーティングテーブルに、前記接続情報を受信しなかったと判定された送信先のノード装置と前記情報通信システムとの間で情報の送受信が不可能であることを示す非接続情報を、前記接続情報を受信しなかったと判定された送信先のノード装置のノード情報と対応付けて記憶することを特徴とする。
請求項11に記載の発明によれば、前記管理送信手段は、送信するタイミングをランダムに決められた所定の待機時間経過後に前記管理装置へ、前記ルーティングテーブルに記憶された接続情報を送信することを特徴とする。
請求項12に記載の発明によれば、ネットワークを介して互いに通信可能な複数のノード装置から構成され、前記複数のノード装置の何れかのノード装置から他のノード装置へ情報を送受信する前記複数ノード装置の間で、情報の送受信が可能であるか否かを確認する確認メッセージを、各種メッセージの送信先を示すルーティングテーブルに基づいて前記複数のノード装置の少なくとも一部のノード装置へ送信するメッセージ送信ステップと、前記メッセージ送信ステップにより送信されたメッセージを受信したノード装置が、前記確認メッセージの送信元へ送信した前記情報の送受信が可能であることを示す接続情報を受信する接続情報受信ステップと、前記確認メッセージの送信先から受信した接続情報と、前記接続情報の送信元のノード装置を表すノード情報とを対応付けて前記ルーティングテーブルに記憶させる制御ステップと、前記制御ステップにより前記ルーティングテーブルに記憶された接続情報を、前記接続情報を管理する管理装置へ送信する管理送信ステップと、をコンピュータに実現させるためのプログラムである。
請求項13に記載の発明によれば、ネットワークを介して互いに通信可能な複数のノード装置から構成され、前記複数のノード装置の何れかのノード装置から他のノード装置へ情報を送受信する前記複数ノード装置の間で、情報の送受信が可能であるか否かを確認する確認メッセージを、各種メッセージの送信先を示すルーティングテーブルに基づいて前記複数のノード装置の少なくとも一部のノード装置へ送信するメッセージ送信ステップと、前記確認メッセージを受信したノード装置が、前記情報の送受信が可能であることを示す接続情報を、前記確認メッセージの送信元へ送信する接続情報送信ステップと、前記確認メッセージの送信先から受信した接続情報と、前記接続情報の送信元のノード装置を表すノード情報とを対応付けて前記ルーティングテーブルに記憶させる制御ステップと、前記制御ステップにより前記ルーティングテーブルに記憶された接続情報を、前記接続情報を管理する管理装置へ送信する管理送信ステップと、を備えることを特徴とするノード装置確認方法である。
請求項1記載の発明によれば、制御手段は、確認メッセージの送信先から受信した接続情報と、接続情報の送信元のノード装置を表すノード情報とを対応付けてルーティングテーブルに記憶させる。管理送信手段は、制御手段によりルーティングテーブルに記憶された接続情報を、接続情報を管理する管理装置へ送信する。従って、確認メッセージを受信した各ノード装置が、接続情報を管理する管理装置へ確認メッセージを送信するのではなく、ルーティングテーブルを記憶するノード装置へ送信する。そして、ルーティングテーブルに集約された接続情報が、管理装置へ送信される。この結果、ルーティングテーブルを記憶するノード装置が、各ノード装置の確認メッセージをルーティングテーブルに集約して送信管理装置へ送信することができる。情報通信システムを構成するノード装置から一斉に接続情報が送信されることがなく、管理装置の情報処理負荷の増大を軽減することができる。
請求項2に記載の発明によれば、第1ノード装置は、メッセージ送信手段と、制御手段と、管理送信手段と、確認メッセージを受信したノード装置から接続情報を受信する接続情報受信手段と、を備える。第2ノード装置は、確認メッセージを受信するメッセージ受信手段と、接続情報送信手段と、を備える。従って、情報通信システムを構成する各ノード装置が、第1ノード装置または第2ノード装置として機能することができる。この結果、情報通信システムに特別な情報処理装置等を構築することなく、管理装置の情報処理負荷の増大を軽減することができる。
請求項3に記載の発明によれば、接続判定手段により、所定の時間以内に接続情報を受信しなかったと判定されたとき、記憶手段が記憶するルーティングテーブルに、接続情報を受信しなかったと判定された送信先のノード装置と情報通信システムとの間で、情報の送受信が不可能であることを示す非接続情報を、接続情報を受信しなかったと判定された送信先のノード装置のノード情報と対応付けて記憶する。従って、ルーティングテーブルに記載されたノード装置の接続情報及び非接続情報を、ルーティングテーブルに集約して管理装置へ送信することができる。この結果、接続情報及び非接続情報が管理装置へ一斉に送信することを防ぎ、管理装置の情報処理負荷の増大を軽減することができる。
請求項4に記載の発明によれば、前記第1ノード装置に備えられた前記管理送信手段は、送信するタイミングをランダムに決められた所定の待機時間経過後に前記管理装置へ、前記ルーティングテーブルに記憶された接続情報を送信する。この結果、各ノード装置が、同じタイミングで接続情報を管理装置へ送信することがないため、管理装置の情報処理負荷の増大を低減することができる。
請求項5に記載の発明によれば、接続情報削除手段は、接続情報送信手段により接続情報が送信されたとき、接続情報記憶手段から接続情報を削除する。この結果、一度接続情報を送信したノード装置は、接続情報を送信することができないため、接続情報を重複して送信することを防ぐことができる。
請求項6に記載の発明によれば、記憶制御手段は、接続情報削除手段により接続情報が削除されてから所定の時間が経過した後に、接続情報を再度接続情報記憶手段に記憶させる。この結果、所定の時間が経過した後に接続情報を再度送信可能になる。従って、所定の時間の間、接続情報を重複して送信することを防ぎながら、接続情報を集約して管理装置へ送信する動作を繰り返し実行することができる。
請求項7に記載の発明によれば、メッセージ受信手段により確認メッセージを受信したときに、接続情報記憶手段に接続情報が記憶されていないとき、接続情報送信手段は、第2ノード装置が接続情報を既に送信した旨を示す完了メッセージを第1ノード装置へ送信する。この結果、完了メッセージが送信されることで、第1ノード装置は、既に接続情報を送信済みであるか否かを確認することができる。
請求項8に記載の発明によれば、請求項5から請求項7のいずれかに記載の情報通信システムを構成する第2ノード装置である。
請求項9に記載の発明によれば、接続情報受信手段は、メッセージ送信手段により送信されたメッセージを受信したノード装置が、確認メッセージの送信元へ送信した情報の送受信が可能であることを示す接続情報を受信する。制御手段は、確認メッセージの送信先から受信した接続情報と、接続情報の送信元のノード装置を表すノード情報とを対応付けてルーティングテーブルに記憶させる。管理送信手段は、制御手段によりルーティングテーブルに記憶された接続情報を、接続情報を管理する管理装置へ送信する。従って、確認メッセージを受信した各ノード装置が、接続情報を管理する管理装置へ確認メッセージを送信するのではなく、ルーティングテーブルを記憶するノード装置へ送信する。この結果、ルーティングテーブルを記憶するノード装置が、各ノード装置の確認メッセージをルーティングテーブルに集約して送信管理装置へ送信することができる。情報通信システムを構成するノード装置から一斉に接続情報が送信されることがなく、管理装置の情報処理負荷の増大を軽減することができる。
請求項10に記載の発明によれば、接続判定手段により、所定の時間以内に接続情報を受信しなかったと判定されたとき、記憶手段が記憶するルーティングテーブルに、接続情報を受信しなかったと判定された送信先のノード装置と情報通信システムとの間で、情報の送受信が不可能であることを示す非接続情報を、接続情報を受信しなかったと判定された送信先のノード装置のノード情報と対応付けて記憶する。従って、ルーティングテーブルに記載されたノード装置の接続情報及び非接続情報を、ルーティングテーブルに集約して管理装置へ送信することができる。この結果、接続情報及び非接続情報が管理装置へ一斉に送信することを防ぎ、管理装置の情報処理負荷の増大を軽減することができる。
請求項11に記載の発明によれば、管理送信手段は、送信するタイミングをランダムに決められた所定の待機時間経過後に管理装置へ送信する。この結果、各ノード装置が、同じタイミングで接続情報を管理装置へ、前記ルーティングテーブルに記憶された接続情報を送信することがないため、管理装置の情報処理負荷の増大を低減することができる。
請求項12に記載の発明によれば、接続情報受信ステップは、メッセージ送信ステップにより送信されたメッセージを受信したノード装置が、確認メッセージの送信元へ送信した情報の送受信が可能であることを示す接続情報を受信する。制御ステップは、確認メッセージの送信先から受信した接続情報と、接続情報の送信元のノード装置を表すノード情報とを対応付けてルーティングテーブルに記憶させる。管理送信ステップは、制御ステップによりルーティングテーブルに記憶された接続情報を、接続情報を管理する管理装置へ送信する。従って、確認メッセージを受信した各ノード装置が、接続情報を管理する管理装置へ確認メッセージを送信するのではなく、ルーティングテーブルを記憶するノード装置へ送信する。この結果、ルーティングテーブルを記憶するノード装置が、各ノード装置の確認メッセージをルーティングテーブルに集約して送信管理装置へ送信することができる。情報通信システムを構成するノード装置から一斉に接続情報が送信されることがなく、管理装置の情報処理負荷の増大を軽減することができる。
請求項13に記載の発明によれば、制御ステップは、確認メッセージの送信先から受信した接続情報と、接続情報の送信元のノード装置を表すノード情報とを対応付けてルーティングテーブルに記憶させる。管理送信ステップは、制御ステップによりルーティングテーブルに記憶された接続情報を、接続情報を管理する管理装置へ送信する。従って、確認メッセージを受信した各ノード装置が、接続情報を管理する管理装置へ確認メッセージを送信するのではなく、ルーティングテーブルを記憶するノード装置へ送信する。この結果、ルーティングテーブルを記憶するノード装置が、各ノード装置の確認メッセージをルーティングテーブルに集約して送信管理装置へ送信することができる。情報通信システムを構成するノード装置から一斉に接続情報が送信されることがなく、管理装置の情報処理負荷の増大を軽減することができる
以下、本発明の最良の実施形態を図面に基づいて説明する。
[分散保存システムの構成]
図1は、本実施形態の分散保存システムSの概念図を示す。図1は、分散保存システムSの具体的構成図101と、概念的構成図100とから構成される。分散保存システムSの具体的構成図101が示すように、分散保存システムSは、多数ノード装置Nn(n=1,2,3・・・の何れか)から構成される。
図1の下部枠の具体的構成図101内に示すように、一般的なインターネット等のネットワーク8は、IX(Internet eXchange)3、ISP(Internet Service Provider)4a及び4b、DSL(Digital Subscriber Line)回線事業者の装置5a及び5b、FTTH(Fiber To The Home)回線事業者の装置6、通信回線7等によって構築されている。例えば、通信回線7は、電話回線や光ケーブル等である。なお、図1の例におけるネットワーク8には、データ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
図1の具体的構成図101が示すように、ネットワーク8は、多数のノード装置Nn(n=1,2,3・・・の何れか)から構成される。多数のノード装置Nnは、ルータ等を介してインターネットで接続されている。また、各ノード装置Nnには、固有の製造番号およびIP(Internet Protocol)アドレスが割り当てられている。本実施形態の分散保存システムSは、ピアツーピア方式のネットワークシステムである。図1の上部枠の概念的構成図100内に示すように、ピアツーピア方式のネットワークシステムは、これらのノード装置Nnのうち、何れか複数のノード装置Nnの参加により形成される。本実施形態における参加とは、ノード装置Nnが分散保存システムSと接続し、コンテンツデータの送受信をすることを意味している。
なお、図1の上部枠の概念的構成図100内に示すP2Pネットワーク9は、既存のネットワーク8を用いて形成されたP2Pネットワークである。P2Pネットワークは、図1の上部枠の概念的構成図100内の複数のノード装置を仮想的にリンクさせることで構築される。P2Pネットワーク9は、オーバーレイネットワーク、または、論理的なネットワークである。P2Pネットワーク9は、特定のアルゴリズム、により構築される。例えば、特許文献1の特開2006−197400に記載されたDHTを利用したアルゴリズムにより、P2Pネットワーク9は構築される。
そして、P2Pネットワーク9を構成している各ノード装置Nnには、ノードIDが割り当てられている。ノードIDは、所定桁数からなる固有の識別情報である。また、具体的には、各ノード装置Nnに個別に割り当てられたIPアドレス或いは製造番号を基に、ノードIDは生成される。ノードIDは、上述のIPアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。例えば、SHA−1等のハッシュ関数により、bit長が160bitのハッシュ値が生成される。各ノードIDは、ある一つのID空間に偏りなく分散して配置されることになる。
図1に示すように、分散保存システムSは、コンテンツ投入サーバ16を備える。コンテンツ投入サーバ16は、新しいコンテンツデータを分散保存システムS内に投入するためのサーバである。コンテンツ投入サーバ16は、コンテンツデータを複製したレプリカを、分散保存システムSに投入する。また、分散保存システムSは、センターサーバ17を備える。センターサーバ17は、各ノード装置Nnのログ情報等を管理する。具体的には、P2Pネットワーク9を構成している各ノード装置Nnの接続状況を管理する。P2Pネットワーク9を構成する各ノード装置Nnは、基本的には常に起動している状態である。ノード装置Nnが起動していることを確認するために、センターサーバ17で各ノード装置Nnの生存確認を行う必要がある。生存確認とは、各ノード装置NnがP2Pネットワーク9に接続されており、起動しているかの確認である。本実施形態では、各ノード装置NnがP2Pネットワーク9に接続されており、起動しているかの確認を行うために、Alive情報が送受信される。Alive情報は、ノード装置NnがP2Pネットワーク9に接続し、起動していることを示す情報であれば特に限定されない。P2Pネットワーク9に接続していないノード装置Nnには、マルチキャストにより送信されたメッセージを受信することができない。従って、P2Pネットワーク9に接続していないノード装置Nnは、Alive情報を送信することができない。
分散保存システムSへの参加は、現在P2Pネットワーク9に参加していないノード装置Nnが、現在参加している任意のノード装置Nnへ参加要求を示す参加メッセージを送信する。参加メッセージを受信するノード装置は、分散保存システムSに常時参加しているノード装置である。本実施形態では、常時参加しているノード装置をコンタクトノードと称する。例えば、P2Pネットワーク9に参加していないノード装置から、分散保存システムSのコンタクトノードへ送信要求メッセージが送信される。コンタクトノードは、参加メッセージの送信元であるノード装置へP2Pネットワーク9に参加するために必要な情報を送信する。上述の必要な情報の詳細は後述する。
[分散保存システムのコンテンツ取得動作説明]
図1に示す各ノード装置Nnは、夫々、DHTを用いたルーティングテーブルを記憶している。このルーティングテーブルは、分散保存システムS上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。本実施形態では、ノード情報は、メッセージ送信先候補の「ノードID」と「IPアドレス及びポート番号」と「Alive情報」とを含む。
分散保存システムSに接続している1台のノード装置Nnは、必要最低限のノード装置Nnのノード情報をルーティングテーブルとして記憶している。各ノード装置Nn間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノード装置Nnについてのノード情報が取得される。本実施形態では、ルーティングテーブルを用いて、上述した他のノード装置Nnへ各種メッセージを送信、または転送するとき、メッセージの送信元、または転送元のノード装置Nnのノード情報が含まれて送信される。このメッセージを受信した各ノード装置Nnは、各ノード装置Nnが記憶するルーティングテーブルに、受信したノード情報の登録および更新を行う。このような構成により、各ノード装置Nnは、他のノード装置のノード情報を把握することができる。ルーティングテーブルの登録及び更新を行う方法の詳細は後述する。
[ルーティングテーブルの概要]
以下、分散保存システムSにおける各ノード装置Nnの機能を説明する。各ノード装置Nnが記憶するルーティングテーブルについて詳細に説明する。ここで、図2及び図3を参照して、ルーティングテーブルについて詳しく説明する。
図2は、ノードN2が記憶するルーティングテーブルの一例である。図3は、DHTのID空間の一例を示す概念図である。なお、図2及び図3の例においては、説明の便宜上、ノードIDのbit長を2bit×3桁=6bitとしている。そのため、各桁は、2bitで表された4進数(0〜3の整数)で表されている。各桁を2bitよりも長いbit長を用いても良い。例えば、各桁を4bitで表して、0〜fの16進数で表現しても良い。
図2に示すように、ルーティングテーブルは、レベル1(一段目)〜レベル3(三段目)の複数レベルから構成される。各エリアには、ノード情報が登録される。ノード情報として、ノードIDと、ノードIDに対応するノード装置N2のIPアドレス及びポート番号と、ノード装置N2のAlive情報とが対応付けられて登録される。
各レベルにおける各エリアは、ノードID空間を分割することにより決定されるエリアである。図3は、ノードIDを用いて各エリアが決定される概念図である。ノードID空間は、各桁が4進数(0〜3の整数)で表される3桁の数字により構成される。図3に示すように、レベル1のエリアとして、ノードID空間が4つ(4進数のため)に分割される。具体的にレベル1のエリアは、0XXのエリアと、1XXのエリアと、2XXのエリアと、3XXとに分割される。0XXのエリアは、'000'〜‘100’の範囲で、'000'〜'033'のノードIDが存在するエリアである。1XXのエリアは、'100'〜‘200’の範囲で、'100'〜'133'のノードIDが存在するエリアである。2XXのエリアは、'200'〜‘300’の範囲で、'200'〜'233'のノードIDが存在するエリアである。3XXのエリアは、'300'〜‘000’の範囲で、'300'〜'333'のノードIDが存在するエリアである。
また、レベル2では、レベル1のエリアが更に4つ(4進数のため)に分割される。つまり、0XX〜3XXの各エリアが更に4つに分割される。0XXのエリアと1XXのエリアと2XXのエリアと3XXのエリアとが夫々4分割される。例えば、1XXのエリアの場合、'100'〜'103'のノードIDが存在するエリアが10Xのエリアとして分割される。また、'110'〜'113'のノードIDが存在するエリアが11Xのエリアとして分割される。'120'〜'123'のノードIDが存在するエリアが12Xのエリアとして分割される。'130'〜'133'のノードIDが存在するエリアが13Xのエリアとして分割される。
以降、ノードN2のノードIDが'122'の場合を例として説明する。図2に示すように、ルーティングテーブルのレベル1における1XXのエリアは、ノードN2のノードIDが存在するエリアである。そのため、レベル1の1XXのエリアには、図2の列でノードN2自身のノードIDと、IPアドレスまたはポート番号と、Alive情報とが登録される。本実施形態では、ノードN2自身のノードIDとIPアドレスまたはポート番号とAlive情報とを登録したが、ノードIDとIPアドレスまたはポート番号とAlive情報とはノードN2自身のものであるので登録されなくてもよい。ノードN2のノードIDが存在しないエリアには、夫々、他の任意のノード装置NnのノードIDと、IPアドレスまたはポート番号とAlive情報とが登録されている。ノードN2のノードIDが「122」の場合、ノードN2のノードIDが存在しないエリアは、0XXのエリアと、2XXのエリアと、3XXのエリアとである。
また、ルーティングテーブルのレベル2における12Xのエリアは、ノードN2のノードIDが存在するエリアである。そのため、レベル2の12Xのエリアには、ノードN2自身のノードIDと、IPアドレスまたはポート番号と、Alive情報とが登録される。ノードN2のノードIDが存在しないエリアには、レベル1と同様に、他の任意のノード装置NnのノードIDと、IPアドレスまたはポート番号と、Alive情報とが登録されている。
更に、ルーティングテーブルのレベル3には、図2に示すように、ノードIDが'120'〜'122'である。そのため、レベル3の122のエリアには、ノードN2自身のノードIDと、IPアドレスまたはポート番号と、Alive情報とが登録される。本実施形態では、ノードN2自身のノードIDとIPアドレスまたはポート番号とAlive情報とを登録したが、IPアドレスまたはポート番号、Alive情報はノードN2自身のものであるので、登録されなくても良い。
なお、図2及び図3の例では、ノードIDのbit長を3桁×2bitである。例えば、ノードIDのbit長を16桁×4bitとした場合、16レベル分のテーブルが必要となる。図2および図3に示すように、本実施形態におけるルーティングテーブルでは、レベルの数値が大きくなるほど、エリアが狭くなっていく。そして、このようなルーティングテーブルは、例えば、未参加のノード装置が分散保存システムSに参加する際に生成される。ここで、図4を参照して、分散保存システムSへの参加時におけるルーティングテーブルの生成手順について詳しく説明する。
図4は、分散保存システムSへの参加時におけるルーティングテーブルの生成手順の一例を示す概念図である。以降、未参加のノードN8が分散保存システムSに参加する例を用いて説明する。図4のノードN8のノードIDは、'123'が割当てられていることとする。
図4に示すように、未参加のノードN8が分散保存システムSに参加する場合、コンタクトノードN31のIPアドレスを用いてコンタクトノードに参加メッセージが送信される。参加メッセージは、ノードN8のノード情報を含む。コンタクトノードにメッセージを送信するためのIPアドレスを、ノード装置N8が事前に知っているものとする。例えば、P2Pネットワークに参加するために必要なソフトウェアをダウンロードするときに、コンタクトノードのIPアドレスは配布される。参加メッセージを受信したコンタクトノードは、コンタクトノードのルーティングテーブルを参照する。具体的には、ルーティングテーブルにおけるレベル1のテーブルに登録されているノード情報が参照される。レベル1に登録されているノード情報を含む返信メッセージを、コンタクトノードN31はノードN8へ返信する。さらにコンタクトノードは、受信された参加メッセージに含まれるノードIDと、ルーティングテーブルに登録された他のノードNnのノードIDと比較する。比較結果に基づいてルーティングテーブルから、一つのノードNnが選定される。例えば、参加メッセージに含まれるノードIDと最も近いノードIDであるノードN35が選定される。ノードN8のノードIDと最も近いノードIDが、ノードN35であった場合を例に説明する。本実施形態では、最も近いノードIDは、上位桁がより多く一致するID、または、比較されるノードIDとの差が最も小さいノードIDである。このとき、参加メッセージには、次に返信させるテーブルの段数を示す情報が含められる。上記例では、レベル2が参加メッセージに含められる。
参加メッセージを受信したノードN35は、ノードN35のルーティングテーブルのレベル2に登録されているノード情報を含む返信メッセージを、ノードN8に対して返信する。さらに、ノードN35は、ルーティングテーブルから選定されたノードN2へ、上記参加メッセージを転送する。このとき、参加メッセージには、次に返信させるべきテーブルの段数として、レベル3を示す情報が含められる。
参加メッセージを受信したノードN2は、ノードN2のルーティングテーブルにおけるレベル3に登録されているノード情報を含む返信メッセージを、ノードN8に対して返信する。以上のようにして参加メッセージは、ノードIDをキーとしてルーティングに基づいて転送される。そのため、未参加のノードN8のノードIDに最も近いノードIDを有するノードNnまで転送される。本実施形態では、最も近いノードIDは、上位桁がより多く一致するID、または、比較されるノードIDとの差が最も小さいノードIDである。
そして、ノードN8は、各ノード装置Nnから受信した返信メッセージに含まれるノード情報を用いてルーティングテーブルを生成する。具体的には、コンタクトノードから送信されたノード情報が、ノードN8のルーティングテーブルのレベル1に登録される。ノードN35から送信されたノード情報が、ノードN8のルーティングテーブルのレベル2に登録される。ノードN2から送信されたノード情報が、ノードN8のルーティングテーブルのレベル3に登録される。
こうして、ノードN8は、分散システムSへの参加が完了することになる。本実施形態では、上述したような参加メッセージや、後述するクエリ等の各種メッセージは、メッセージの送信元、または、転送元のノード装置Nnのノード情報を含む。そのため、メッセージを受信したノード装置Nnは、ノード装置Nnのルーティングテーブルに、ノード情報を登録及び更新する。
図5は、各ノード装置Nn間を転送するメッセージの様子を示す概念図である。具体的には、図5は、ノード装置Nnからの参加メッセージがノードN31、ノードN35、ノードN2間を転送する概念図である。
各ノード装置Nn間を転送するメッセージは、メッセージ送信元のノードIDと、メッセージの内容と、送信元または転送元のノード情報とを含む。メッセージ送信元のノードIDは、メッセージを送信した送信元のノード装置NnのノードIDである。メッセージの内容は、メッセージの目的を表す「参加(JOIN)」、「パブリッシュ」、「クエリ」等である。ノード情報は、送信元または転送元のノードNnのノードIDと、IPアドレスまたはポート番号と、Alive情報とを含んで構成される。なお、'メッセージの内容'は、参加メッセージの場合、テーブルの登録情報の返信を要求する旨の情報等が含まれている。また、パブリッシュ(登録)メッセージまたはクエリの場合、パブリッシュ(登録)やクエリ(要求)の対象となるコンテンツのコンテンツIDが含まれている。
図5に示す例の場合、ノードN35は、コンタクトノードのノードN31から参加メッセージを受信する。そして、ノードN35は、参加メッセージに含まれる送信元または転送元のノードN31のノード情報をノードN35のルーティングテーブルに登録する。このとき、ノードN35のルーティングテーブルにノードN31のノード情報が既に登録されている場合、登録済みノードN31のノード情報は、受信したノード情報に基づいて更新される。
同様に、ノードN35から参加メッセージを受信したノードN2は、参加メッセージに含まれる送信元または転送元のノードN35のノード情報をノードN2のルーティングテーブルに登録、或いは更新する。以上の手順に従い、ルーティングテーブルは、ノード情報を登録、または、更新される。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
また、図5は、ルーティングテーブルを用いて各種メッセージをマルチキャストにより送信した図である。各種メッセージは、参加メッセージとクエリメッセージとパブリッシュメッセージ等である。本実施形態では、まず、図2に示すレベル1に記載されるノード情報あてにメッセージが送信される。レベル1に記載されるノードN3とノードN2とノード21とノード31とへメッセージが送信される。そして、ノードN31はメッセージをノードN35へ転送する。例えば、図5に示すように、メッセージを受信したノード装置はN35は、受信したノード装置のノード情報とAlive情報とをメッセージの送信元のノードN31へ送信する。Alive情報は、メッセージを受信したノード装置NnがP2Pネットワーク9に接続していることを示す情報である。Alive情報は、ノード装置NnがP2Pネットワーク9に接続し、起動していることを示す情報であれば特に限定されない。P2Pネットワーク9に接続していないノード装置Nnには、マルチキャストにより送信されたメッセージを受信することができない。従って、P2Pネットワーク9に接続していないノード装置Nnは、Alive情報を送信することができない。メッセージの送信元であるノード装置Nnは、受信したノード情報とAlive情報とを、受信したノード情報のノードIDと一致するルーティングテーブルに登録する。一方、各種メッセージを送信してから一定期間経過した後に、Alive情報を受信しなかったノード装置Nnについては、Alive情報の代わりに異常情報が登録される。異常情報は、ノード装置NnがP2Pネットワーク9に接続していないことを示す情報である。
同様に、レベル2に記載されたノード情報あてにメッセージが送信される。メッセージの送信元へ送信されたAlive情報が、ルーティングテーブルに登録される。このように、各レベルに記載されたノード情報のAlive情報がルーティングテーブルに登録される。ルーティングテーブルに登録されたAlive情報は、各ノード装置でランダムなタイミングでセンターサーバ17へ送信される。尚、本実施形態では、一度Alive情報を送った端末は、一定期間の間、Alive情報が送れなくなるように設定される。具体的には、Alive情報を他のノード装置へ送信したことを示す情報がノード装置Nnの記憶部に記憶される。この内容の詳細については、後述する。
[ノード装置の電気的構成]
次に、図6を参照して、ノード装置Nnの電気的構成ついて説明する。
図6は、本実施形態のノード装置Nnの電気的構成を示すブロック図である。図6に示すように、本実施形態のノード装置Nnには、ノード装置Nnを制御するCPU31が備えられている。CPU31には、RAM32とHDD33とデコーダ部34と通信部39と入力部40とがそれぞれ電気的に接続されている。RAM32、HDD33などの記憶手段とCPU31とは、ノード装置Nnのコンピュータを構成している。そのコンピュータは、ノード装置Nnの動作を制御処理する。CPU31は、タイマー311を備える。タイマー311は、計時動作を行う。
RAM32は、各種メッセージ一時記憶領域321と、Alive情報一時記憶領域322と、IDマスク情報一時記憶領域323と最大IDマスク情報一時記憶領域324とタイマー開始情報一時記憶領域325と送信先情報一時記憶領域326とを含む。各種メッセージ一時記憶領域321は、ノード装置Nnが受信した各種メッセージを一時記憶する。例えば、参加メッセージやクエリやパブリッシュメッセージ等である。Alive情報一時記憶領域322は、ノード装置Nnが他のノード装置へ送信するAlive情報を一時記憶する。ノード装置NnがAlive情報を送信した後に、Alive情報一時記憶領域322には、「Null」が一時記憶される。「Null」は、既にAlive情報が他のノード装置へ送信されたことを示す。Alive情報一時記憶領域322は、本発明の接続情報記憶手段の一例である。また、本発明の接続情報記憶手段の一例であるAlive情報一時記憶領域は、HDD33の所定の記憶領域に記憶されても良い。IDマスク情報一時記憶領域323は、ルーティングテーブルのレベルを表すIDマスクが一時記憶される。最大IDマスク情報一時記憶領域324は、ルーティングテーブル記憶領域に記憶されるルーティングテーブルの最大レベルが一時記憶される。例えば、図2に示すテーブルの最大レベルは「レベル3」である。従って、最大IDマスク情報一時記憶領域324には、「レベル3」が一時記憶される。タイマー開始情報一時記憶領域325は、後述するステップS105でAlive情報が送信された時間を一時記憶する。送信先情報一時記憶領域326は、メッセージの送信先を示すノード装置のノード情報と、時間情報とを一時記憶する。時間情報は、送信先情報一時記憶領域326に記憶されたノード装置へメッセージが送信された時間を示す。
HDD33は、プログラム記憶領域331と、ルーティングテーブル記憶領域334とを含む。プログラム記憶領域331は、メイン動作プログラム記憶領域332と転送処理プログラム記憶領域333とを含む。メイン動作プログラム記憶領域332は、ノード装置Nnを制御するためのメイン動作プログラム情報を記憶する。転送処理プログラム記憶領域333は、マルチキャストメッセージを転送するための転送処理プログラム情報を記憶する。
デコーダ部34は、映像情報と音声情報とをデコードする。本実施形態のデコードは、エンコード化された映像情報と音声情報とを、データ伸張または復号化することである。映像情報と音声情報とは、コンテンツデータのレプリカに含まれる。
映像処理部35は、デコードされた映像情報に所定の描画処理を施して映像信号を出力する。
ディスプレイ36は、映像処理部15から出力された映像信号に基づいて映像表示する。ディスプレイ36は、CRTディスプレイ、または、液晶ディスプレイにより構成される。
音声処理部37は、上記デコードされた音声情報をアナログオーディオ信号にD(Digital)/A(Analog)変換する。スピーカ38は、変化されたアナログオーディオ信号を、アンプにより増幅して出力する。
通信部39は、ノード装置Nnをインターネットと接続する。通信部39は、ネットワーク8を介して他のノード装置Nnまたはコンテンツ投入サーバ16またはセンターサーバ17と情報の送受信を行う。
入力部40は、ユーザからの指示を受け付ける。入力部40は、キーボード、マウス、或いは、操作パネル等から構成される。なお、ノード装置Nnとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
また、分散保存システムSが、分散保存システムSに参加する際のアクセス先となるコンタクトノードを備えている場合、各ノード装置NnのHDD33にはコンタクトノードのIPアドレスまたはポート番号等が記憶されている。更に、HDD33には、コンテンツカタログリストが記憶されている。なお、HDD33に記憶されるプログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよい。また、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
[ノード装置Nnのメイン処理動作]
以上説明した構成からなる本実施形態のノード装置Nnの動作及び作用について、添付図面を参照して説明する。図7は、ノード装置Nnにおけるメイン動作の処理手順を示すフローチャートである。ノード装置Nnにより上述したP2Pネットワークへの参加処理の要求が行われたとき、ノード装置Nnのメイン動作処理が実行される。CPU31がメイン動作プログラムを実行することにより、遂行される。以下に示す処理は、CPU31により処理される。メイン動作処理が実行されるとき、初期値として、IDマスク情報一時記憶領域323には、「0」が記憶される。また、メイン動作処理が実行されるとき、初期値として、最大IDマスク情報一時記憶領域324には、図2に示すルーティングテーブルの「レベル3」が一時記憶される。最大IDマスク情報一時記憶領域324に一時記憶される「レベル3」は、ルーティングテーブルの最大レベル数を示す。
ステップS101では、メイン動作を実行するノード装置NnからP2Pネットワーク脱退指示を受け付けたか否かが判定される。P2Pネットワーク脱退指示は、ノード装置Nnから視聴終了が行われたこと、または、ノード装置Nnがインターネットとの接続を切断したこと、または、P2Pネットワーク9との接続を切断したことを示す。P2Pネットワーク脱退指示があったと判定したとき、メイン動作処理は終了される。P2Pネットワーク脱退指示があったと判定しなかったとき、ステップS102が実行される。
ステップS102では、各種メッセージを受信したか否かが判定される。各種メッセージとは、例えば上述した参加(JOIN)メッセージ、クエリ、パブリッシュメッセージである。各種メッセージを受信したと判定されたとき、ステップS103が実行される。各種メッセージを受信しなかったと判定されたとき、ステップS101が実行される。本実施形態のコンピュータと、ステップS102とは、本発明のメッセージ受信手段の一例である。また、本実施形態のステップS102は、本発明のメッセージ受信ステップの一例である。
ステップS103では、Alive情報を他のノード装置へ送信済みか否かが判定される。Alive情報一時記憶領域322に、「Null」が記憶されている場合、本実施形態では、Alive情報が他のノード装置へ送信済みであると判定される。Alive情報一時記憶領域322に、「Null」が記憶されていない場合、本実施形態では、Alive情報が他のノード装置へ送信済みでないと判定される。ステップS103でAlive情報が他のノード装置へ送信済みであると判定されたとき、ステップS104が実行される。ステップS103でAlive情報が他のノード装置へ送信済みであると判定されなかったとき、ステップS105が実行される。
ステップS104では、メッセージの送信元へ、完了メッセージが送信される。完了メッセージは、Alive情報一時記憶領域322に記憶されたAlive情報が既に他のノード装置へ送信されたことを示すメッセージである。
ステップS105では、メッセージの送信元へ、Alive情報が送信される。ステップS105では、Alive情報は、Alive情報を送信したノード装置のノード情報と共に送信される。本実施形態のコンピュータと、ステップS105とは、本発明の接続情報送信手段の一例である。また、本実施形態のステップS105は、本発明の接続情報送信ステップの一例である。
ステップS106では、タイマー311によるタイマーのカウントがスタートされる。ステップS105でAlive情報が送信されたときの時間がタイマー開始情報一時記憶領域325に一時記憶される。
ステップS107では、Alive情報が削除される。具体的には、ステップS105でAlive情報が送信されたのち、Alive情報一時記憶領域322に「Null」が記憶される。
ステップS108では、IDマスク情報一時記憶領域323に記憶されている値に、「1」が加算される。例えば、IDマスク情報一時記憶領域323に「1」が記憶されている場合、「1」加算された「2」が一時記憶される。
ステップS109では、記憶されているルーティングテーブルの最大レベルに登録されるノード装置Nnまで転送が終わったか否かが判定される。具体的には、IDマスク情報一時記憶領域323に一時記憶された値と、最大IDマスク情報一時記憶領域324に一時記憶された値とが一致するか否かが判定される。上記値が一致するとき、テーブルの最大レベルに登録されるノード装置Nnまで、メッセージの転送が終わったと判定される。最大レベルに登録されるノード装置Nnまで、メッセージの転送が終わったと判定されたとき、ステップS111が実行される。最大レベルに登録されるノード装置Nnまで、メッセージの転送が終わったと判定されなかったとき、ステップS110が実行される。
ステップS110では、転送処理が実行される。転送処理の詳細は、後述で説明する。
ステップS111では、ルーティングテーブルにAlive情報が登録されたか否かが判定される。具体的には、ルーティングテーブル記憶領域334に記憶されたルーティングテーブルに、Alive情報が登録されているかが判定される。Alive情報が登録されていると判定されたとき、ステップS112が実行される。Alive情報が登録されていないと判定されたとき、ステップS114が実行される。
ステップS112では、ランダムに設定された時間が経過したか否かが判定される。本実施形態では、各ノード装置でランダムに時間が設定される。ランダムに設定された時間が経過したと判定されたとき、ステップS113が実行される。ランダムに設定された時間が経過したと判定されなかったとき、ステップS112が再度実行される。ステップS111で「Yes」と判定されたときから、タイマー311によるカウントがスタートされる。カウントがスタートされた時間が、RAM32の所定の記憶領域に一時記憶される。ランダムに設定された時間が経過したか否かは、ステップS112が実行された時間と、上述したRAM32の所定の記憶領域に一時記憶された時間との差が設定された時間を経過したか否かにより判定される。
ステップS113では、ルーティングテーブルに記憶されたAlive情報が、センターサーバ17へアップロードされる。具体的には、ルーティングテーブルに記憶されたノード情報として少なくともノードIDと、Alive情報とが、センターサーバ17にアップロードされる。アップロードされた後に、ルーティングテーブルに登録されたAlive情報は、ルーティングテーブルから削除される。本実施形態のコンピュータと、ステップS113とは、本発明の管理送信手段の一例である。また、本実施形態のステップS113は、本発明の管理送信ステップの一例である。ステップS113が実行されることで、ルーティングテーブルを記憶するノード装置が、ルーティングテーブルに集約したAlive情報をセンターサーバ17へ送信することができる。
ステップS114では、ステップS105でAlive情報が送信されてから、所定の時間が経過したか否かが判定される。タイマー311によりカウントされている現在の時間と、タイマー開始情報一時記憶領域325に記憶された時間との差が、所定の時間以上であるか否かにより、所定の時間が経過したか否かが判定される。所定の時間が経過したと判定されたとき、ステップS115が実行される。所定の時間が経過したと判定されなかったとき、ステップS114が再度実行される。
ステップS115では、Alive情報が、Alive情報一時記憶領域322に再度一時記憶される。具体的には、Alive情報一時記憶領域322に「Null」が記憶されていたとき、Alive情報がAlive情報一時記憶領域322に記憶される。本実施形態のコンピュータとステップS115とは、本発明の記憶制御手段の一例である。
(転送処理)
ステップS110の転送処理では、図8に示されているように、ステップS201で、メッセージの送信先として決定されていないノード装置が存在するか否かが決定される。具体的には、IDマスク情報記憶領域323に記憶されている値と一致するレベルのルーティングテーブルに、メッセージの送信先として決定されていないノード装置が存在するか否かが決定される。本実施形態では、図示はしないが、送信フラグが各ノードIDに対応付けられてルーティングテーブルに登録される。送信フラグは、ルーティングテーブルに登録されたノード装置がメッセージの送信先として決定されたか、または、決定されていないかを示す。フラグが「ON」にされている場合、既にメッセージの送信先として決定されたノード装置であることを示す。フラグが「OFF」にされている場合、メッセージの送信先として決定されていないノード装置であることを示す。メッセージの送信先として決定されていないノード装置が存在すると判定されたとき、ステップS202が実行される。メッセージの送信先として決定されていないノード装置が存在すると判定されなかったとき、転送処理は終了される。
ステップS202では、ステップS201で存在すると判定されたテーブルのノード装置の中から、メッセージの送信先が決定される。具体的には、IDマスク情報記憶領域323に記憶されている値と一致するレベルのルーティングテーブルに記憶されているノード情報の中から、メッセージの送信先として決定されていないノード装置が送信先として決定される。メッセージの送信先として決定されていないノード装置は、上述したフラグのON、OFFにより判定される。決定された送信先を示すノード情報が、送信先情報一時記憶領域326に一時記憶される。ステップS202で決定されたノード情報のフラグがONにされてルーティングテーブルに記憶される。
ステップS203では、ステップS202で決定された送信先へメッセージが送信される。具体的には、ステップS102で受信したメッセージが、ステップS202で決定された送信先へマルチキャスト配信される。タイマー311により、ステップS203でメッセージが送信された時間が時間情報としてRAM32の所定の記憶領域に一時記憶される。本実施形態のコンピュータとステップS203とは、本発明のメッセージ送信手段の一例である。また、本実施形態のステップS203とは、本発明のメッセージ送信ステップの一例である。
ステップS204では、ステップS203でメッセージを送信した送信先から、Alive情報を受信したか否かが判定される。ステップS204で受信されるAlive情報は、Alive情報を送信してきたノード装置のノード情報を含む。送信先からAlive情報を受信したか否かは、送信先情報一時記憶領域326に記憶されたノード情報が示すノード装置と、Alive情報が送信されたノード装置とが一致するかにより判定される。Alive情報を受信したと判定したとき、ステップS205が実行される。Alive情報を受信したと判定されなかったとき、ステップS206が実行される。
ステップS205では、ステップS204で受信したAlive情報がルーティングテーブルに記憶される。送信先情報一時記憶領域326に記憶されたノード情報に対応するルーティングテーブルに、受信したAlive情報が記憶される。本実施形態コンピュータとステップS205とは、本発明の制御手段の一例である。また、本実施形態のステップS205は、本発明の制御ステップの一例である。
ステップS206では、ステップS203でメッセージを送信した送信先から、完了メッセージを受信したか否かが判定される。具体的には、送信先情報一時記憶領域326に記憶されたノード情報が示すノード装置から完了メッセージを受信したか否かが判定される。送信先から完了メッセージを受信したか否かは、送信先情報一時記憶領域326に記憶されたノード情報が示すノード装置と、完了メッセージが送信されたノード装置とが一致するかにより判定される。完了メッセージを受信したと判定されたとき、ステップS201が実行される。完了メッセージを受信したと判定されなかったとき、ステップS207が実行される。
ステップS207では、ステップS203でメッセージが送信されてから所定の時間が経過したか否かが判定される。具体的には、タイマー311によりカウントされる現在の時間と、ステップS203でRAM32の所定の記憶領域に記憶された時間情報との差が、所定の時間以上になったか否かにより判定される。所定の時間が経過したと判定されたとき、ステップS208が実行される。所定の時間が経過したと判定されなかったとき、ステップS204が再度実行される。本実施形態のコンピュータとステップS207とは、本発明の接続判定手段の一例である。
ステップS208では、ルーティングテーブルに異常情報が記憶される。送信先情報一時記憶領域326に記憶されたノード情報に対応するルーティングテーブルに、異常情報が記憶される。
上記実施形態における分散保存システムSは、DHTを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。DHTを利用したルーティングテーブル以外にも適用可能である。本実施形態は、P2Pネットワーク9を構成するノード装置の一部のノード情報が登録されたルーティングテーブルに、本発明を適用した例である。メッセージの送信先が登録されたルーティングテーブルを用いる分散保存システム全てに適用可能である。メッセージの送信先が全て登録されたルーティングテーブルを用いる分散保存システムにも適用可能である。また、本実施形態では、所在情報としてIPアドレスを用いたが、IPアドレスに限定されるものではない。MACアドレス等が用いられても良い。