(57)【要約】【課題】ＩＰアドレスが変更されても、各ノード装置間の情報伝達に支障が来たすことを防止することが可能なコンテンツ分散保存システム、ノード装置、ノード処理プログラム、及びアドレス情報変更通知方法を提供する。【解決手段】ノード装置は、自己のアドレス情報の変更を検出した場合には、アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定し、当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信し、当該アドレス変更通知メッセージを受信するノード装置は、前記受信されたアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新するように構成した。【選択図】図６
2010028551.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のノード装置の参加により構成されるコンテンツ分散保存システムであり、複数のコンテンツの複製データが複数のノード装置に分散して保存され、各ノード装置間で前記複製データを授受可能としたコンテンツ分散保存システムにおいて、
前記ノード装置は、
前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する記憶手段と、
自己のアドレス情報の変更を検出するアドレス変更検出手段と、
前記アドレス情報の変更が検出された場合には、前記アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定するノード選定手段と、
前記選定されたノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するアドレス変更通知手段と、
を備え、
前記アドレス変更通知メッセージを受信するノード装置は、
前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する記憶手段と、
前記受信されたアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新するアドレス情報更新手段と、
を備えることを特徴とするコンテンツ分散保存システム。
【請求項２】
請求項１に記載のコンテンツ分散保存システムにおいて、
前記記憶手段には、メッセージの送信先候補となる前記複数のノード装置であって前記コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報が登録された送信先テーブルが記憶されており、
前記ノード選定手段は、前記送信先テーブルにアドレス情報が登録されているノード装置を選定し、
前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信することを特徴とするコンテンツ分散保存システム。
【請求項３】
請求項２に記載のコンテンツ分散保存システムにおいて、
前記アドレス変更通知メッセージを受信したノード装置は、
前記受信されたアドレス変更通知メッセージに含まれるノード識別情報と、前記送信先テーブルに登録された他のノード装置のノード識別情報との比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段を
更に備えることを特徴とするコンテンツ分散保存システム。
【請求項４】
請求項２に記載のコンテンツ分散保存システムにおいて、
前記送信先テーブルは、アドレス情報を複数段に区別して登録し、
前記ノード選定手段は、前記送信先テーブルの所定段にアドレス情報が登録されているノード装置、及び当該所定段より下位の段にアドレス情報が登録されているノード装置を選定し、
前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するものであって、
前記アドレス変更通知メッセージを受信するノード装置は、
前記送信先テーブルの前記所定段より下位の段にアドレス情報が登録されているノード装置を選定し、当該選定した各ノード装置のアドレス情報を用いて当該各ノード装置に前記ネットワークを介して接続し当該各ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段を更に備え、
当該アドレス変更通知メッセージの転送は、その後に当該メッセージを受信した各ノード装置において同様に行われることを特徴とするコンテンツ分散保存システム。
【請求項５】
請求項１に記載のコンテンツ分散保存システムにおいて、
前記記憶手段には、何れかの前記コンテンツの複製データを保存している他のノード装置のアドレス情報と当該コンテンツのコンテンツ識別情報の組を含むインデックス情報が記憶されており、
前記ノード選定手段は、前記インデックス情報にアドレス情報が含まれているノード装置を選定し、
前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信することを特徴とするコンテンツ分散保存システム。
【請求項６】
請求項１に記載のコンテンツ分散保存システムにおいて、
前記記憶手段には、自己にメッセージを過去に送信した他のノード装置のアドレス情報を含むログ情報が記憶されており、
前記ノード選定手段は、前記ログ情報にアドレス情報が含まれているノード装置を選定し、
前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信することを特徴とするコンテンツ分散保存システム。
【請求項７】
請求項１に記載のコンテンツ分散保存システムにおいて、
前記記憶手段には、前記コンテンツ分散保存システムへの参加の際に送信するべき参加メッセージの送信先のノード装置のアドレス情報が記憶されており、
前記ノード選定手段は、前記参加メッセージの送信先のノード装置を選定し、
前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するものであって、
前記アドレス変更通知メッセージを受信したノード装置は、
前記受信されたアドレス変更通知メッセージに含まれるノード識別情報と、前記送信先テーブルに登録された他のノード装置のノード識別情報との比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段を
更に備えることを特徴とするコンテンツ分散保存システム。
【請求項８】
請求項１乃至７の何れか一項に記載のコンテンツ分散保存システムにおいて、
前記記憶手段には、メッセージの送信先候補となる前記複数のノード装置であって前記コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報が登録された送信先テーブルが記憶されており、
前記アドレス変更通知手段は、自己が保存している前記複製データに対応するコンテンツ識別情報と、前記送信先テーブルに登録されている他のノード装置のノード識別情報との比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記変更されたアドレス情報、当該コンテンツ識別情報及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するものであって、
前記アドレス変更通知メッセージを受信したノード装置は、
前記受信されたアドレス変更通知メッセージが自己宛てであるか否かを、前記アドレス変更通知メッセージに含まれるコンテンツ識別情報と、自己のノード識別情報及び前記送信先テーブルに登録されている他のノード装置のノード識別情報との比較結果に基づいて判別し、自己宛でない場合には、前記比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段と、
を更に備えることを特徴とするコンテンツ分散保存システム。
【請求項９】
ネットワークに接続された複数のノード装置の参加により構成されるコンテンツ分散保存システムであり、複数のコンテンツの複製データが複数のノード装置に分散して保存され、各ノード装置間で前記複製データを授受可能としたコンテンツ分散保存システムにおけるノード装置であって、
前記コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する記憶手段と、
自己のアドレス情報の変更を検出するアドレス変更検出手段と、
前記アドレス情報の変更が検出された場合には、前記アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定するノード選定手段と、
前記選定されたノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するアドレス変更通知手段と、
前記受信したアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新するアドレス情報更新手段と、
を備えることを特徴とするノード装置。
【請求項１０】
コンピュータを、請求項１乃至９の何れか一項に記載のコンテンツ分散保存システムにおけるノード装置として機能させることを特徴とするノード処理プログラム。
【請求項１１】
ネットワークに接続された複数のノード装置の参加により構成されるコンテンツ分散保存システムであり、複数のコンテンツの複製データが複数のノード装置に分散して保存され、各ノード装置間で前記複製データを授受可能としたコンテンツ分散保存システムにおけるアドレス情報変更通知方法であって、
前記ノード装置は、
前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する工程と、
自己のアドレス情報の変更を検出する工程と、
前記アドレス情報の変更が検出された場合には、前記アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定する工程と、
前記選定されたノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信する工程と、
を備え、
前記アドレス変更通知メッセージを受信するノード装置は、
前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する工程と、
前記受信されたアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新する工程と、
を備えることを特徴とするアドレス情報変更通知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の通信システムの技術分野に関する。
【背景技術】
【０００２】
この種のピアツーピア型の通信システムにおいて、複数のコンテンツデータ（映画及び音楽等のコンテンツのデータ）の複製データ（以下、「レプリカ」という）を複数のノード装置に分散して保存（配置）させ、ＩＰアドレス（Internet Protocol）が割り当てられている各ノード装置間でレプリカを授受可能としたコンテンツ分散保存システムが知られている。このように分散保存されたレプリカの所在は、例えば特許文献１に開示されるような分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用して効率良く検索可能になっている。
【特許文献１】特開２００６−１９７４００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、各ノード装置に割り当てられているＩＰアドレスは、固定でないこと場合がある。例えば、Internet Protocol version 4（以下、「IPv4」という）の場合、一般に、ＤＨＣＰ（Dynamic Host Configuration Protocol）サーバによりＩＰアドレスが割り当てられるが、当該ＩＰアドレスにリース期間（有効期間）が設定されていると、当該期間後にＩＰアドレスが変わることがある。また、Internet Protocol version 6（以下、「IPv6」という）の場合、ＤＨＣＰサーバがなくても、ルータのステートレス自動設定によりＩＰアドレスを割り当てることができるが、当該ＩＰアドレスを使用続けるとセキュリティ上の問題があるので、定期的に変更される一時アドレス（RFC3041）が使用される。
【０００４】
しかしながら、このようにＩＰアドレスが変更されると、各ノード装置間の情報伝達、例えば、上記ＤＨＴを用いたメッセージのルーティング等に支障を来たす可能性がある。
【０００５】
本発明は、以上の点等に鑑みてなされたものであり、ＩＰアドレスが変更されても、各ノード装置間の情報伝達に支障が来たすことを防止することが可能なコンテンツ分散保存システム、ノード装置、ノード処理プログラム、及びアドレス情報変更通知方法を提供することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、ネットワークに接続された複数のノード装置の参加により構成されるコンテンツ分散保存システムであり、複数のコンテンツの複製データが複数のノード装置に分散して保存され、各ノード装置間で前記複製データを授受可能としたコンテンツ分散保存システムにおいて、前記ノード装置は、前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する記憶手段と、自己のアドレス情報の変更を検出するアドレス変更検出手段と、前記アドレス情報の変更が検出された場合には、前記アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定するノード選定手段と、前記選定されたノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するアドレス変更通知手段と、を備え、前記アドレス変更通知メッセージを受信するノード装置は、前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する記憶手段と、前記受信されたアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新するアドレス情報更新手段と、を備えることを特徴とする。
【０００７】
この発明によれば、ノード装置は、自己のアドレス情報の変更を検出した場合には、アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定し、当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信し、当該アドレス変更通知メッセージを受信するノード装置は、前記受信されたアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新するように構成したので、アドレス情報が変更されても、各ノード装置間の情報伝達に支障が来たすことを防止することができる。
【０００８】
請求項２に記載の発明は、請求項１に記載のコンテンツ分散保存システムにおいて、前記記憶手段には、メッセージの送信先候補となる前記複数のノード装置であって前記コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報が登録された送信先テーブルが記憶されており、前記ノード選定手段は、前記送信先テーブルにアドレス情報が登録されているノード装置を選定し、前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信することを特徴とする。
【０００９】
この発明によれば、送信先テーブルを利用してアドレス変更通知メッセージを送信することができる。
【００１０】
請求項３に記載の発明は、請求項２に記載のコンテンツ分散保存システムにおいて、前記アドレス変更通知メッセージを受信したノード装置は、前記受信されたアドレス変更通知メッセージに含まれるノード識別情報と、前記送信先テーブルに登録された他のノード装置のノード識別情報との比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段を更に備えることを特徴とする。
【００１１】
この発明によれば、送信先テーブルを利用してアドレス変更通知メッセージを送信することができる。
【００１２】
請求項４に記載の発明は、請求項２に記載のコンテンツ分散保存システムにおいて、前記送信先テーブルは、アドレス情報を複数段に区別して登録し、前記ノード選定手段は、前記送信先テーブルの所定段にアドレス情報が登録されているノード装置、及び当該所定段より下位の段にアドレス情報が登録されているノード装置を選定し、前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するものであって、前記アドレス変更通知メッセージを受信するノード装置は、前記送信先テーブルの前記所定段より下位の段にアドレス情報が登録されているノード装置を選定し、当該選定した各ノード装置のアドレス情報を用いて当該各ノード装置に前記ネットワークを介して接続し当該各ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段を更に備え、当該アドレス変更通知メッセージの転送は、その後に当該メッセージを受信した各ノード装置において同様に行われることを特徴とする。
【００１３】
この発明によれば、送信先テーブルを利用してコンテンツ分散保存システムに参加している全ノード装置にアドレス変更通知メッセージを送信することができる。
【００１４】
請求項５に記載の発明は、請求項１に記載のコンテンツ分散保存システムにおいて、前記記憶手段には、何れかの前記コンテンツの複製データを保存している他のノード装置のアドレス情報と当該コンテンツのコンテンツ識別情報の組を含むインデックス情報が記憶されており、前記ノード選定手段は、前記インデックス情報にアドレス情報が含まれているノード装置を選定し、前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信することを特徴とする。
【００１５】
この発明によれば、インデックス情報を利用してアドレス変更通知メッセージを送信することができる。
【００１６】
請求項６に記載の発明は、請求項１に記載のコンテンツ分散保存システムにおいて、前記記憶手段には、自己にメッセージを過去に送信した他のノード装置のアドレス情報を含むログ情報が記憶されており、前記ノード選定手段は、前記ログ情報にアドレス情報が含まれているノード装置を選定し、前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信することを特徴とする。
【００１７】
この発明によれば、ログ情報を利用してアドレス変更通知メッセージを送信することができる。
【００１８】
請求項７に記載の発明は、請求項１に記載のコンテンツ分散保存システムにおいて、前記記憶手段には、前記コンテンツ分散保存システムへの参加の際に送信するべき参加メッセージの送信先のノード装置のアドレス情報が記憶されており、前記ノード選定手段は、前記参加メッセージの送信先のノード装置を選定し、前記アドレス変更通知手段は、前記選定されたノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するものであって、前記アドレス変更通知メッセージを受信したノード装置は、前記受信されたアドレス変更通知メッセージに含まれるノード識別情報と、前記送信先テーブルに登録された他のノード装置のノード識別情報との比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段を更に備えることを特徴とする。
【００１９】
この発明によれば、参加メッセージの転送経路を利用してアドレス変更通知メッセージを送信することができる。
【００２０】
請求項８に記載の発明は、請求項１乃至７の何れか一項に記載のコンテンツ分散保存システムにおいて、前記記憶手段には、メッセージの送信先候補となる前記複数のノード装置であって前記コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報が登録された送信先テーブルが記憶されており、前記アドレス変更通知手段は、自己が保存している前記複製データに対応するコンテンツ識別情報と、前記送信先テーブルに登録されている他のノード装置のノード識別情報との比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記変更されたアドレス情報、当該コンテンツ識別情報及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するものであって、前記アドレス変更通知メッセージを受信したノード装置は、前記受信されたアドレス変更通知メッセージが自己宛てであるか否かを、前記アドレス変更通知メッセージに含まれるコンテンツ識別情報と、自己のノード識別情報及び前記送信先テーブルに登録されている他のノード装置のノード識別情報との比較結果に基づいて判別し、自己宛でない場合には、前記比較結果に基づいて前記送信先テーブルから一つのノード装置を選定し、当該選定したノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して、前記アドレス変更通知メッセージを転送するメッセージ転送手段と、を更に備えることを特徴とする。
【００２１】
この発明によれば、送信先テーブルを利用してアドレス変更通知メッセージを送信することができる。
【００２２】
請求項９に記載の発明は、ネットワークに接続された複数のノード装置の参加により構成されるコンテンツ分散保存システムであり、複数のコンテンツの複製データが複数のノード装置に分散して保存され、各ノード装置間で前記複製データを授受可能としたコンテンツ分散保存システムにおけるノード装置であって、前記コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する記憶手段と、自己のアドレス情報の変更を検出するアドレス変更検出手段と、前記アドレス情報の変更が検出された場合には、前記アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定するノード選定手段と、前記選定されたノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信するアドレス変更通知手段と、前記受信したアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新するアドレス情報更新手段と、を備えることを特徴とする。
【００２３】
請求項１０に記載のノード処理プログラムの発明は、コンピュータを、請求項１乃至９の何れか一項に記載のコンテンツ分散保存システムにおけるノード装置として機能させることを特徴とする。
【００２４】
請求項１１に記載の発明は、ネットワークに接続された複数のノード装置の参加により構成されるコンテンツ分散保存システムであり、複数のコンテンツの複製データが複数のノード装置に分散して保存され、各ノード装置間で前記複製データを授受可能としたコンテンツ分散保存システムにおけるアドレス情報変更通知方法であって、前記ノード装置は、前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する工程と、自己のアドレス情報の変更を検出する工程と、前記アドレス情報の変更が検出された場合には、前記アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定する工程と、前記選定されたノード装置のアドレス情報を用いて当該ノード装置に前記ネットワークを介して接続し当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信する工程と、を備え、前記アドレス変更通知メッセージを受信するノード装置は、前記コンテンツ分散保存システムに参加している複数のノード装置であって当該コンテンツ分散保存システムに参加している全ノード装置の数より少ない数のノード装置のアドレス情報及びノード識別情報を記憶する工程と、前記受信されたアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新する工程と、を備えることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、ノード装置は、自己のアドレス情報の変更を検出した場合には、アドレス情報が記憶されているノード装置のうちから少なくとも一つのノード装置を選定し、当該ノード装置に対して前記変更されたアドレス情報、及び自己のノード識別情報を含むアドレス変更通知メッセージを送信し、当該アドレス変更通知メッセージを受信するノード装置は、前記受信されたアドレス変更通知メッセージに含まれるノード識別情報が過去に記憶されており、当該記憶されているノード識別情報に対応付けられて記憶されているアドレス情報が、前記メッセージに含まれるアドレス情報と異なる場合には、当該記憶されているアドレス情報に代えて当該メッセージに含まれるアドレス情報に更新するように構成したので、アドレス情報が変更されても、各ノード装置間の情報伝達に支障が来たすことを防止することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【００２７】
［１．コンテンツ分散保存システムの構成等］
始めに、図１等を参照して、本実施形態に係るコンテンツ分散保存システムの概要構成等について説明する。
【００２８】
図１は、本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
【００２９】
図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４ａ,４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５ａ,５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、及び通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界の通信ネットワーク）８が構築されている。なお、図１の例におけるネットワーク８には、データ（パケット）を転送するためのルータが、適宜挿入されているが図示を省略している。
【００３０】
このようなネットワーク８には、複数のノード装置（以下、「ノード」という）Ｎｎ（ｎ＝１，２，３・・・の何れか）がルータを介して接続されている。また、各ノードＮｎには、固有の製造番号およびＩＰ（Internet Protocol）アドレス（アドレス情報）が割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムＳは、これらのノードＮｎのうち、図１の上部枠１００内に示すように、何れか複数のノードＮｎの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
【００３１】
なお、図１の上部枠１００内に示すネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク９（論理的なネットワーク）である。かかるオーバーレイネットワーク９は、特定のアルゴリズム、例えば、ＤＨＴを利用したアルゴリズムにより実現される。
【００３２】
そして、コンテンツ分散保存システムＳ（言い換えれば、オーバーレイネットワーク９）に参加している各ノードＮｎには、所定桁数からなる固有のノード識別情報であるノードＩＤが割り当てられている。また、当該ノードＩＤは、例えば、各ノードＮｎに個別に割り当てられたＩＰアドレス或いは製造番号を共通のハッシュ関数（例えば、ＳＨＡ−１等）によりハッシュ化した値（例えば、ｂｉｔ長が１６０ｂｉｔ）であり、一つのＩＤ空間に偏りなく分散して配置されることになる。
【００３３】
なお、コンテンツ分散保存システムＳへの参加は、参加していないノードＮｎ（例えば、ノードＮ８）が、参加している任意のノードＮｎ（例えば、当該システムＳに常時参加しているコンタクトノード）に対して参加要求を示す参加メッセージを送信することによって行われる。
【００３４】
また、各ノードＮｎは、夫々、ＤＨＴを用いたルーティングテーブル（送信先テーブルの一例、以下、「ＤＨＴルーティングテーブル」という）を保持している。このルーティングテーブルは、コンテンツ分散保存システムＳ上における各種メッセージの転送先候補（送信先候補）先を規定しており、具体的には、ＩＤ空間内で適度に離れたノードＮｎのノードＩＤ、ＩＰアドレス及びポート番号を含むノード情報が複数登録されている。
【００３５】
コンテンツ分散保存システムＳに参加している１台のノードＮｎは、該システムＳに参加している全てのノードＮｎのうち、必要最低限のノードＮｎ（つまり、該システムＳに参加している全ノードＮｎの数より少ない数のノードＮｎ）のノード情報をルーティングテーブルに登録しておき、ノード情報を知らない（記憶していない）ノードＮｎについては、各ノードＮｎ間で互いに各種メッセージを転送し合って届けてもらうようになっている。
【００３６】
ここで、図２及び図３を参照して、ＤＨＴルーティングテーブルについて詳しく説明する。
【００３７】
図２は、ノードＮ２が保持するＤＨＴルーティングテーブルの一例を示す図であり、図３は、ＤＨＴのＩＤ空間の一例を示す概念図である。
【００３８】
なお、図２及び図３の例においては、説明の便宜上、ノードＩＤのｂｉｔ長を２ｂｉｔ×３桁＝６ｂｉｔとし、各桁を４進数（０〜３の整数）で表している（実際には、もっと長いｂｉｔ長を用い、各桁も例えば４ｂｉｔに区切って０〜ｆの１６進数で表現する）。
【００３９】
図２の例において、ＤＨＴルーティングテーブルは、レベル１（一段目）〜レベル３（三段目）の複数段のテーブルからなり、各レベルのテーブルエントリーには、エリア毎に、ノード情報として、ノードＩＤとこれに対応するノードＮｎのＩＰアドレス及びポート番号が対応付けられて登録されている。
【００４０】
つまり、各ノードＮｎのノード情報は、複数段に区別して登録されており、最上位段をレベル１として、当該レベル１より下位の段であるレベル２、レベル３が続くことになる（レベル２はレベル３の上位の段ということになる）。
【００４１】
各レベルのテーブルにおける各エリアは、ＤＨＴのノードＩＤ空間を分割することにより得られるエリアである。例えば、図３に示すように、レベル１では、ＤＨＴのＩＤ空間全体が４分割され、“０００”〜“０３３”のノードＩＤが存在するエリアを０ＸＸのエリア、“１００”〜“１３３” のノードＩＤが存在するエリアを１ＸＸのエリア、“２００”〜“２３３” のノードＩＤが存在するエリアを２ＸＸのエリア、“３００”〜“３３３” のノードＩＤが存在するエリアを３ＸＸのエリアとする。また、レベル２では、レベル１のエリア（つまり、０ＸＸ〜３ＸＸのエリア）が更に４分割、例えば１ＸＸのエリアが４分割され、“１００”〜“１０３” のノードＩＤが存在するエリアを１０Ｘのエリア、“１１０”〜“１１３” のノードＩＤが存在するエリアを１１Ｘのエリア、“１２０”〜“１２３” のノードＩＤが存在するエリアを１２Ｘのエリア、“１３０”〜“１３３” のノードＩＤが存在するエリアを１３Ｘのエリアとする。
【００４２】
そして、例えば、ノードＮ２のノードＩＤが“１２２”とすると、図２に示すように、かかるノードＮ２のレベル１における１ＸＸのエリア（自己（つまり、自ノード）が存在するエリア）のテーブルには、自己のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）等が登録され、自己が存在しないエリア（つまり、０ＸＸのエリア、２ＸＸのエリア、及び３ＸＸのエリア）には、夫々、他の任意のノードＮｎのノードＩＤ及びＩＰアドレス等が登録されている。
【００４３】
また、かかるノードＮ２のレベル２における１２Ｘのエリア（自己が存在するエリア）のテーブルには、図２に示すように、自己のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）等が登録され、自己が存在しないエリア（つまり、１０Ｘのエリア、１１Ｘのエリア、及び１３Ｘのエリア）等には、夫々、他の任意のノードＮｎのノードＩＤ及びＩＰアドレス等が登録されている。
【００４４】
更に、かかるノードＮ２のレベル３には、図２に示すように、ノードＩＤが“１２０”〜“１２２”のノードＩＤ及びＩＰアドレス（ＩＰアドレスは自分のものであるので、当該ルーティングテーブルに登録しなくても良い）等が登録されている。
【００４５】
なお、図２及び図３の例では、ノードＩＤのｂｉｔ長を３桁×２ｂｉｔとしたので、レベル１〜３の３レベル分のテーブルで網羅できるが、ノードＩＤのｂｉｔ長が増せば、その分のテーブルが必要となる（例えば、ノードＩＤのｂｉｔ長を１６桁×４ｂｉｔとした場合、１６レベル分のテーブルが必要となる）。
【００４６】
このように、本実施形態におけるＤＨＴルーティングテーブルでは、レベルの数値が大きくなるほど、言い換えれば、下位の段にいくほど、エリアが狭まっていくようになっている。
【００４７】
そして、このようなＤＨＴルーティングテーブルは、例えば、未参加のノードがコンテンツ分散保存システムＳに参加する際に生成される。
【００４８】
ここで、図４を参照して、コンテンツ分散保存システムＳへの参加時におけるＤＨＴルーティングテーブルの生成手順について詳しく説明する。
【００４９】
図４は、コンテンツ分散保存システムＳへの参加時におけるＤＨＴルーティングテーブルの生成手順の一例を示す概念図である。
【００５０】
図４に示すように、未参加のノードＮ８（例えば、ノードＩＤを“１２３”とする）がコンテンツ分散保存システムＳに参加する場合、例えば、コンタクトノードのＩＰアドレスを用いて当該コンタクトノードにネットワーク８を介して接続し当該コンタクトノードに対して参加メッセージ（ノードＮ８のノード情報を含む）を送信する。当該参加メッセージを受信したコンタクトノードは、自己のＤＨＴルーティングテーブルにおけるレベル１のテーブルに登録されているノード情報等を含む返信メッセージを、上記ノードＮ８に対して返信する。更に、コンタクトノードは、受信された参加メッセージに含まれるノードＩＤと、ＤＨＴルーティングテーブルに登録された他のノードＮｎのノードＩＤとの比較結果に基づいてＤＨＴルーティングテーブルから一つのノードＮｎを選定する。例えば、参加メッセージに含まれるノードＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮ３５が、ＤＨＴルーティングテーブルから選定され、当該ノードＮ３５に上記参加メッセージが転送される。このとき、当該参加メッセージには、次に返信させるべきテーブルの段数（ここでは、レベル２）を示す情報が含められる。
【００５１】
次に当該参加メッセージを受信したノードＮ３５は、自己のＤＨＴルーティングテーブルにおけるレベル２のテーブルに登録されているノード情報等を含む返信メッセージを、上記ノードＮ８に対して返信する。更に、ノードＮ３５は、受信された参加メッセージに含まれるノードＩＤと、ＤＨＴルーティングテーブルに登録された他のノードＮｎのノードＩＤとの比較結果に基づいてＤＨＴルーティングテーブルから一つのノードＮｎを選定する。例えば、参加メッセージに含まれるノードＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮ２が、ＤＨＴルーティングテーブルから選定され、当該ノードＮ２に上記参加メッセージが転送される。このとき、当該参加メッセージには、次に返信させるべきテーブルの段数（ここでは、レベル３）を示す情報が含められる。
【００５２】
次に当該参加メッセージを受信したノードＮ２は、自己のＤＨＴルーティングテーブルにおけるレベル３のテーブルに登録されているノード情報等を含む返信メッセージを、上記ノードＮ８に対して返信する。
【００５３】
以上のようにして参加メッセージは、ノードＩＤをキーとするＤＨＴルーティングにより、未参加のノードＮ８のノードＩＤに一番近いノードＩＤを有するノードＮｎまで転送される。
【００５４】
そして、ノードＮ８は、各ノードＮｎから受信した返信メッセージに含まれるノード情報等を用いて自己のＤＨＴルーティングテーブルを生成する。当該ＤＨＴルーティングテーブルを生成においては、例えば、コンタクトノードから受信されたノード情報が自己のＤＨＴルーティングテーブルのテーブル１に登録され、ノードＮ３５から受信されたノード情報が自己のＤＨＴルーティングテーブルのテーブル２に登録され、ノードＮ２から受信されたノード情報が自己のＤＨＴルーティングテーブルのテーブル３に登録される。
【００５５】
こうして、ノードＮ８は、コンテンツ分散保存システムＳへの参加が完了することになる。なお、図４に示すようなメッセージのやりとりは三角形になるので、このような参加の形態を「三角ＪＯＩＮ」と称する。
【００５６】
ところで、コンテンツ分散保存システムＳにおいては、内容の異なる様々なコンテンツ（例えば、映画や音楽等）のレプリカが所定のファイル形式で複数のノードＮｎに分散して保存（格納）されており、各ノードＮｎ間で当該レプリカを授受可能になっている。例えば、ノードＮ５には、タイトルがＸＸＸの映画のコンテンツのレプリカが保存されており、一方、ノードＮ３には、タイトルがＹＹＹの映画のコンテンツのレプリカが保存されるというように、複数のノードＮｎ（以下、「コンテンツ保持ノード」という）に分散されて保存されている。
【００５７】
また、これらのコンテンツのレプリカには、夫々、コンテンツ名（タイトル）、及びコンテンツＩＤ（コンテンツ毎に固有のコンテンツ識別情報）等の情報が付与されている。このコンテンツＩＤは、例えば、コンテンツ名＋任意の数値（或いは、コンテンツデータの先頭数バイトでも良い）が、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化されて生成される（ノードＩＤと同一のＩＤ空間に配置）。或いは、システム管理者が、コンテンツ毎に一意のＩＤ値（ノードＩＤと同一ビット長）を付与しても良い。この場合は、コンテンツ名とそのコンテンツＩＤの対応が書かれたコンテンツカタログ情報が、全ノードＮｎに配布される。
【００５８】
また、このように分散保存されているレプリカの所在、つまり、当該レプリカを保存したノードＮｎのノード情報と当該コンテンツのレプリカに対応するコンテンツＩＤ等の組が含まれるインデックス情報が、当該コンテンツのレプリカの所在を管理しているノードＮｎ（以下、「ルートノード」、又は「コンテンツデータ（コンテンツＩＤ）のルートノード」という）等により記憶（インデックスキャッシュに記憶）、管理されるようになっている。
【００５９】
つまり、コンテンツのレプリカを保存しているコンテンツ保持ノードのノード情報は、他のノードＮｎからの問い合わせに応じて提供可能なようにルートノードにより管理されている。
【００６０】
例えば、タイトルがＸＸＸの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ（コンテンツＩＤ）のルートノードであるノードＮ４により管理され、タイトルがＹＹＹの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ（コンテンツＩＤ）のルートノードであるノードＮ７により管理される。また、このようなルートノードは、例えば、コンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮｎであるように定められる。
【００６１】
そして、あるノードＮｎのユーザが、所望するコンテンツのレプリカを取得したい場合、当該レプリカの取得を望むノードＮｎ（以下、「ユーザノード」という）は、当該ユーザにより例えばコンテンツカタログ情報から選択されたコンテンツのコンテンツＩＤ及び自己のＩＰアドレス等を含むコンテンツ所在問合せ（検索）メッセージ（クエリ）を生成し、これを自己のＤＨＴルーティングテーブルにしたがって他のノードＮｎに対して送出する。つまり、ユーザノードは、コンテンツ所在問合せ（検索）メッセージを、ルートノードに向けて（ルートノード宛に）送出する（つまり、ルートノードにコンテンツのレプリカの所在を問い合わせる）。これにより、コンテンツ所在問合せ（検索）メッセージは、コンテンツＩＤをキーとするＤＨＴルーティングによって最終的にルートノードに到着することになる。なお、このＤＨＴルーティングについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００６２】
なお、各ノードＮｎにおいてユーザにより選択されるべきコンテンツのコンテンツ名、コンテンツＩＤ、公開日時等の属性情報は、例えばコンテンツ提供サーバから全てのノードＮｎに配信されるコンテンツカタログ情報に記述されている。また、上記コンテンツ所在問合せ（検索）メッセージに含まれるコンテンツＩＤは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。
【００６３】
上記コンテンツ所在問合せ（検索）メッセージを受信したルートノードは、これに含まれるコンテンツＩＤに対応するインデックス情報をインデックスキャッシュから取得して、当該インデックス情報を、該コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信する。こうしてインデックス情報を取得したユーザノードは、当該インデックス情報に含まれるあるコンテンツ保持ノードのＩＰアドレス等に基づいて当該コンテンツ保持ノードに接続して、コンテンツ送信要求メッセージを送信し、そこからコンテンツのレプリカを取得（ダウンロード）する。
【００６４】
なお、ルートノードは、当該インデックス情報に含まれるＩＰアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカを取得することもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
【００６５】
そして、コンテンツ保持ノードから取得したコンテンツのレプリカを保存（例えば、ハードディスクに記録）したユーザノードは、当該レプリカを保存したことをそのルートノードに知らせるために（言い換えれば、該システムＳに参加している他のノードＮｎに対して公開するために）、当該レプリカのコンテンツＩＤ及び自己のノード情報が含まれるパブリッシュ（登録通知）メッセージを生成し、該パブリッシュメッセージを、そのルートノードに向けて（ルートノード宛に）送出する。
【００６６】
これにより、パブリッシュメッセージは、コンテンツ所在問合せ（検索）メッセージと同じように、コンテンツＩＤをキーとするＤＨＴルーティングによってルートノードに到着することになる。そして、該ルートノードは、受信したパブリッシュメッセージに含まれるノード情報及びコンテンツＩＤの組を含むインデックス情報を登録（インデックスキャッシュ領域に記憶）することになる。こうして、上記ユーザノードは、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
【００６７】
なお、上記パブリッシュメッセージに含まれるノード情報及びコンテンツＩＤの組を含むインデックス情報は、ルートノードに至るまでの転送経路におけるキャッシュノードにおいても登録（キャッシュ）される。
【００６８】
［２．ノードＮｎの構成及び機能等］
次に、図５を参照して、ノードＮｎの構成及び機能について説明する。
【００６９】
図５は、ノードＮｎの概要構成例を示す図である。
【００７０】
各ノードＮｎは、図５に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データ及びプログラムを記憶するＲＯＭ等から構成されたコンピュータとしての制御部１１と、各種データ（例えば、コンテンツデータのレプリカ、インデックス情報、ＤＨＴルーティングテーブル等）及び各種プログラム等を記憶保存するためのＨＤ（ハードディスク）等から構成された記憶部１２と、受信されたコンテンツデータのレプリカ等を一時蓄積するバッファメモリ１３と、コンテンツデータのレプリカに含まれるエンコードされたビデオデータ（映像情報）およびオーディオデータ（音声情報）等をデコード（データ伸張や復号化等）するデコーダ部１４と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部１５と、当該映像処理部１５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部１６と、上記デコードされたオーディオデータをアナログオーディオ信号にＤ（Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する音声処理部１７と、当該音声処理部１７から出力されたオーディオ信号を音波として出力するスピーカ１８と、ネットワーク８を通じて他のノードＮｎ等間の情報の通信制御を行うための通信部１９と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部１１に対して与える入力部（例えば、キーボード、マウス、或いは、操作パネル等）２０と、を備えて構成され、制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４、通信部１９、及び入力部２０はバス２１を介して相互に接続されている。なお、ノードＮｎとしては、パーソナルコンピュータ、ＳＴＢ（Set Top Box）、或いは、ＴＶ受信機等を適用可能である。
【００７１】
また、記憶部１２には、コンテンツ分散保存システムＳに参加する際のアクセス先となるコンタクトノードのＩＰアドレス及びポート番号等が記憶されている。なお、上述したＤＨＴルーティングテーブル及びインデックスキャッシュに記憶されているノード情報の他にも、記憶部１２には、自ノードにメッセージを過去に送信した他のノードＮｎのＩＰアドレスを含むログ情報が記憶されるように構成しても良い。
【００７２】
このような構成において、制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラムを読み出して実行することにより、全体を統括制御し、コンテンツ分散保存システムＳへの参加により上述したユーザノード、中継ノード、ルートノード、キャッシュノード、及びコンテンツ保持ノードの少なくとも何れか一つのノードとしての処理を行い、更に、本発明におけるアドレス変更検出手段、ノード選定手段、アドレス変更通知手段、メッセージ転送手段、及びアドレス情報更新手段等として機能する。
【００７３】
具体的には、制御部１１は、自ノードのＩＰアドレスの変更を検出する。なお、ＩＰアドレスの変更は、例えば他のノードＮｎと接続できたときに検出することができる。制御部１１は、ＩＰアドレスの変更を検出した場合、当該ＩＰアドレスの変更を通知するために、ＩＰアドレスが記憶されている他のノードＮｎ（つまり、ＩＰアドレスを知っている他のノードＮｎ）のうちから少なくとも一つのノードＮｎを選定する。
【００７４】
そして、制御部１１は、選定したノードＮｎのＩＰアドレスを用いて当該ノードＮｎにネットワーク８を介して接続し当該ノードＮｎに対して、自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤを含むアドレス変更通知メッセージを送信する。
【００７５】
ところで、当該アドレス変更通知メッセージの送信対象として、例えば、ＤＨＴルーティングテーブルにノード情報が登録されている全てのノードＮｎ、及びインデックスキャッシュにＩＰアドレスが記憶されている全てのノードＮｎが選定されるように構成すれば、自ノードとメッセージのやり取りを行う可能性のある多くのノードＮｎに対して、ＩＰアドレスの変更を通知することができる。また、上述したログ情報が記憶されるのであれば、当該ログ情報中にＩＰアドレスが含まれている全てのノードＮｎがアドレス変更通知メッセージの送信対象として選定されるように構成すれば、自ノードとメッセージのやり取りを行う可能性のある、より多くのノードＮｎに対して、ＩＰアドレスの変更を通知することができる。
【００７６】
ただし、ＤＨＴルーティングテーブル、インデックスキャッシュ、及びログ情報におけるノードＮｎに対してアドレス変更通知メッセージを送信するだけでは、自ノードが把握していない他のノードＮｎに対してはＩＰアドレスの変更を通知することが困難である。そこで、ＩＰアドレスの変更通知（アドレス変更通知メッセージ）を上述したパブリッシュメッセージと同様の転送経路で転送させるように構成すると良い。例えば、制御部１１は、自ノードの記憶部１２に保存されているレプリカのコンテンツＩＤ、及び自ノードのノード情報（自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤを含む）が含まれるパブリッシュメッセージ（つまり、アドレス変更通知メッセージを含むパブリッシュメッセージ）を、当該コンテンツＩＤをキーとしてそのルートノードに向けて送出する。これにより、パブリッシュメッセージがルートノードに至るまでの転送経路におけるキャッシュノード（自ノードのＩＰアドレスを記憶しているであろうノードＮｎ）に対してもＩＰアドレスの変更を通知することができる。
【００７７】
更に、上述した三角ＪＯＩＮを利用して、ＩＰアドレスの変更通知（アドレス変更通知メッセージ）を参加メッセージと同様の転送経路で転送させるように構成すると良い。例えば、制御部１１は、自ノードのノード情報（自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤを含む）が含まれる再参加メッセージ（つまり、アドレス変更通知メッセージを含む再参加メッセージ）を、当該ノードＩＤをキーとしてそのルートノードに向けて送出する。これにより、再参加メッセージがルートノードに至るまでの転送経路におけるノードＮｎ（図４の例では、自ノードのＩＰアドレスを記憶しているであろうコンタクトノード及びノードＮ３５）に対してもＩＰアドレスの変更を通知することができる。
【００７８】
また、別の例として、特開２００７−０５３６６２号公報にて開示されたＤＨＴマルチキャスト（マルチキャストメッセージ転送処理）によりコンテンツ分散保存システムＳに参加している全てのノードＮｎに対してアドレス変更通知メッセージを送信することが、ＩＰアドレスの変更を通知する上で最も確実である。その反面、自ノードのＩＰアドレスを記憶していない多くのノードＮｎに対してアドレス変更通知メッセージが送信されることになるので、無駄が多く、トラフィック量の増大によりネットワーク８に負荷がかかる。
【００７９】
一方、アドレス変更通知メッセージを受信したノードＮｎの制御部１１は、当該受信されたアドレス変更通知メッセージに含まれるノードＩＤが、過去に記憶（例えば、例えばＤＨＴルーティングテーブル、インデックスキャッシュ、及びログ情報の少なくとも何れか一つに記憶）されており、当該記憶されているノードＩＤに対応付けられて記憶されているＩＰアドレスが、当該メッセージに含まれるＩＰアドレスと異なる場合には、当該記憶されているＩＰアドレスに代えて当該メッセージに含まれるＩＰアドレスに更新する。
【００８０】
［３．コンテンツ分散保存システムＳの動作］
次に、図６〜図１１等を参照して、コンテンツ分散保存システムＳの動作について説明する。
【００８１】
図６は、ノードＮｎにおける制御部１１のメイン処理を示すフローチャートである。また、図７は、図６に示すステップＳ２等のパブリッシュ処理の詳細を示すフローチャートであり、図８は、図６に示すステップＳ５のＩＰアドレス変更通知処理の詳細を示すフローチャートである。また、図９は、図６に示すステップＳ７のメッセージ受信処理の詳細を示すフローチャートであり、図１０は、図９に示すステップＳ７２及びＳ８６のＩＰアドレス更新処理の詳細を示すフローチャートである。また、図１１は、メッセージ送信処理の詳細を示すフローチャートである。
【００８２】
図６に示す処理は、ノードＮｎにおいて電源オンがなされると開始され、先ず、制御部１１は参加処理を行う（ステップＳ１）。当該参加処理においては、図４を用いて説明したように、制御部１１は、コンタクトノードにネットワーク８を介して接続し当該コンタクトノードに対して参加メッセージを送信する。そして、当該制御部１１は、コンタクトノードを含む各ノードＮｎから返信されてきた返信メッセージを受信すると、各返信メッセージに含まれるノード情報等を用いてＤＨＴルーティングテーブルを生成する。
【００８３】
次いで、制御部１１はパブリッシュ処理を行う（ステップＳ２）。当該パブリッシュ処理においては、図７に示すように、制御部１１は、記憶部１２にコンテンツのレプリカが保存されているか否かを判別し（ステップＳ２１）、保存されていない場合には（ステップＳ２１：ＮＯ）、図６の処理に戻り、保存されている場合には（ステップＳ２１：ＹＥＳ）、ステップＳ２２に進む。
【００８４】
ステップＳ２２では、制御部１１は、保存されているレプリカに対応するコンテンツＩＤ及び自ノードのノード情報が含まれるパブリッシュメッセージを、そのルートノードに向けて送出する。具体的には、制御部１１は、当該コンテンツＩＤと、ＤＨＴルーティングテーブルに登録されている他のノードＮｎのノードＩＤとの比較結果に基づいてＤＨＴルーティングテーブルから一つのノードＮｎを選定、例えば、当該コンテンツＩＤに最も近いノードＩＤを有するノードＮｎを選定する。そして、制御部１１は、当該選定したノードＮｎに対して、上記パブリッシュメッセージを送信する。なお、内容の異なる複数のコンテンツのレプリカが保存されている場合には、各コンテンツのコンテンツＩＤに対応するルートノードに向けてパブリッシュメッセージが送出される。
【００８５】
次いで、制御部１１は、電源オフ指令があったか否かを判別し（ステップＳ３）、電源オフ指令がない場合には（ステップＳ３：ＮＯ）、ステップＳ４に進み、電源オフ指令があった場合には（ステップＳ３：ＹＥＳ）、脱退処理を行った後、図６の処理を終了する。当該脱退処理においては、保存されているレプリカに対応するコンテンツＩＤ及び自ノードのノード情報が含まれる脱退通知メッセージがそのルートノードに向けて送出される。これにより、当該脱退通知メッセージを受信したルートノード、及び当該脱退通知メッセージの転送経路上に存在するキャッシュノードにおいて、脱退通知メッセージの送信元のノード情報がインデックス情報から削除されることになる。
【００８６】
ステップＳ４では、制御部１１は、自ノードのＩＰアドレスの変更を検出したか否かを判別し、ＩＰアドレスの変更を検出していない場合には（ステップＳ４：ＮＯ）、ステップＳ６に進み、ＩＰアドレスの変更を検出した場合には（ステップＳ４：ＹＥＳ）、ＩＰアドレス変更通知処理を行う（ステップＳ５）。当該ＩＰアドレス変更通知処理の例としては、図８（Ａ）〜（Ｅ）に示すように、実施例１〜実施例５が挙げられる。
【００８７】
図８（Ａ）に示す実施例１は、ＤＨＴルーティングテーブルを利用した例である。この場合、制御部１１は、先ず、自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤを含むアドレス変更通知メッセージを生成する（ステップＳ５１Ａ）。次いで、制御部１１は、ＤＨＴルーティングテーブルにノード情報が登録されている全てのノードＮｎを選定し、選定した各ノードＮｎに対して、上記生成したアドレス変更通知メッセージを送信する（ステップ５２Ａ）。次いで、制御部１１は、図７に示すパブリッシュ処理を行う（ステップＳ５３Ａ）。ここで送信されるパブリッシュメッセージには、自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤが含まれる。
【００８８】
図８（Ｂ）に示す実施例２は、インデックスキャッシュを利用した例である。この場合、制御部１１は、先ず、自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤを含むアドレス変更通知メッセージを生成する（ステップＳ５１Ｂ）。次いで、制御部１１は、インデックスキャッシュにＩＰアドレスが記憶されている全てのノードＮｎを選定し、選定した各ノードＮｎに対して、上記生成したアドレス変更通知メッセージを送信する（ステップ５２Ｂ）。次いで、制御部１１は、図７に示すパブリッシュ処理を行う（ステップＳ５３Ｂ）。なお、図８（Ｂ）に示す処理において、図８（Ａ）に示すステップＳ５２Ａの処理が行われるように構成しても良い。ただし、ＤＨＴルーティングテーブルとインデックスキャッシュとの双方にノード情報が記憶されているノードＮｎについては、当該処理において一度だけアドレス変更通知メッセージが送信される。
【００８９】
図８（Ｃ）に示す実施例３は、ログ情報を利用した例である。この場合、制御部１１は、先ず、自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤを含むアドレス変更通知メッセージを生成する（ステップＳ５１Ｃ）。次いで、制御部１１は、ログ情報にＩＰアドレスが記憶されている全てのノードＮｎを選定し、選定した各ノードＮｎに対して、上記生成したアドレス変更通知メッセージを送信する（ステップ５２Ｃ）。次いで、制御部１１は、図７に示すパブリッシュ処理を行う（ステップＳ５３Ｃ）。
【００９０】
図８（Ｄ）に示す実施例４は、三角ＪＯＩＮを利用した例である。この場合、制御部１１は、先ず、自ノードの変更されたＩＰアドレス及び自ノードのノードＩＤを含む再参加メッセージを生成する（ステップＳ５１Ｄ）。次いで、制御部１１は、ＤＨＴルーティングテーブルやインデックスキャッシュ等にノード情報が記憶されている一つのノードＮｎを選定し、選定したノードＮｎに対して、上記生成した再参加メッセージを送信する（ステップ５２Ｄ）。ここで、選定されるノードＮｎとしてコンタクトノードとすれば、当該再参加メッセージは、上記ステップＳ１の参加処理による参加メッセージの転送経路上に存在するノードＮｎにおけるＤＨＴルーティングテーブルの内容に変更がなければ、当該参加メッセージと同一の転送経路で転送されるのでより効果的である。次いで、制御部１１は、図７に示すパブリッシュ処理を行う（ステップＳ５３Ｄ）。
【００９１】
図８（Ｅ）に示す実施例５は、ＤＨＴマルチキャストを利用した例である。この場合、制御部１１は、先ず、自ノードの変更されたＩＰアドレス、自ノードのノードＩＤ、ＩＤマスク「０」を含むアドレス変更通知メッセージを生成し（ステップＳ５１Ｅ）、ＲＡＭに記憶しておく。なお、自ノードのノードＩＤは、ターゲットノードＩＤに設定される。
【００９２】
次いで、制御部１１は、当該アドレス変更通知メッセージにおけるＩＤマスクがＤＨＴルーティングテーブルの全レベル数（全段数）よりも小さいか否かを判別し（ステップＳ５２Ｅ）、ＩＤマスクが上記全レベル数より小さい場合には（ステップＳ５２Ｅ：ＹＥＳ）、ステップＳ５３Ｅに進み、ＩＤマスクが上記全レベル数より小さくない場合、つまり、一致した場合には（ステップＳ５２Ｅ：ＮＯ）、当該処理を終了する。例えば、ＩＤマスクが「０」の場合、図２に示すＤＨＴルーティングテーブルの全レベル数「３」よりも小さいため、ステップＳ５３Ｅに進む。
【００９３】
ステップＳ５３Ｅでは、制御部１１は、ＤＨＴルーティングテーブルのうち、「ＩＤマスク＋１」のレベル（例えば、レベル１）のテーブルにノード情報が登録されている全てのノードＮｎを選定し、選定した各ノードＮｎに対して、上記生成したアドレス変更通知メッセージを送信する。
【００９４】
次いで、制御部１１は、上記アドレス変更通知メッセージにおいて設定されているＩＤマスクに「１」を加算して得た値を、新たなＩＤマスクとしてアドレス変更通知メッセージに設定し（ステップＳ５４Ｅ）、ステップＳ５２Ｅに戻る。こうして、上記ステップＳ５２ＥにおいてＩＤマスクがＤＨＴルーティングテーブルの全レベル数と一致するまで、ステップＳ５３Ｅ及びＳ５４Ｅの処理は繰り返し実行され、ＤＨＴルーティングテーブルにノード情報が登録されている全てのノードＮｎに対してアドレス変更通知メッセージが送信されることになる。そして、当該アドレス変更通知メッセージは、これを受信した各ノードＮｎにより転送（図９のステップＳ７７）され、コンテンツ分散保存システムＳ全体に行き渡ることになる。また、上記処理により、例えば、ＤＨＴルーティングテーブルのレベル１のテーブルに登録されているノードＮｎに送信されるアドレス変更通知メッセージに設定されたＩＤマスクは「０」となり、ＤＨＴルーティングテーブルのレベル２のテーブルに登録されているノードＮｎに送信されるアドレス変更通知メッセージに設定されたＩＤマスクは「１」となる。つまり、レベルの数値が大きくなるほど、ＩＤマスクの値は大きくなっていく。
【００９５】
図６に示す処理に戻り、ステップＳ６では、制御部１１は、メッセージを受信したか否かを判別し、メッセージを受信していない場合には（ステップＳ６：ＮＯ）、ステップＳ９に進みその他の処理を行い、メッセージを受信した場合には（ステップＳ６：ＹＥＳ）、メッセージ受信処理を行う（ステップＳ７）。当該メッセージ受信処理においては、受信されたメッセージの種別に応じた処理が行われる。なお、メッセージの種別は、例えば、各メッセージのヘッダ内に記述されている。
【００９６】
図９に示すメッセージ受信処理では、制御部１１は、受信したメッセージがアドレス変更通知メッセージであるか否かを判別し（ステップＳ７１）、アドレス変更通知メッセージである場合には（ステップＳ７１：ＹＥＳ）、ステップＳ７２に進み、アドレス変更通知メッセージでない場合には（ステップＳ７１：ＮＯ）、ステップＳ７８に進む。
【００９７】
ステップＳ７２では、制御部１１は、ＩＰアドレス更新処理を行う。当該ＩＰアドレス更新処理においては、図１０に示すように、制御部１１は、受信されたアドレス変更通知メッセージに含まれるノードＩＤ（当該メッセージの送信元ノードＮｎのノードＩＤ）が、ＤＨＴルーティングテーブルに登録されているか否かを判別する（ステップＳ７２１）。そして、当該ノードＩＤがＤＨＴルーティングテーブルに登録されている場合（ステップＳ７２１：ＹＥＳ）、ステップＳ７２２に進み、当該ノードＩＤがＤＨＴルーティングテーブルに登録されていない場合には（ステップＳ７２１：ＮＯ）、ステップＳ７２４に進む。
【００９８】
ステップＳ７２２では、制御部１１は、上記ノードＩＤに対応付けられてＤＨＴルーティングテーブルに登録されているＩＰアドレスが、上記受信されたアドレス変更通知メッセージに含まれた変更通知に係るＩＰアドレスと同じであるか否かを判別し、同じである場合には（ステップＳ７２２：ＹＥＳ）、ステップＳ７２４に進み、異なる場合には（ステップＳ７２２：ＮＯ）、ステップＳ７２３に進む。
【００９９】
ステップＳ７２３では、制御部１１は、上記アドレス変更通知メッセージに含まれた変更通知に係るＩＰアドレスにより、当該ＩＰアドレスと同じノードＩＤが対応付けられてＤＨＴルーティングテーブルに登録されているＩＰアドレスを更新する。
【０１００】
ステップＳ７２４では、制御部１１は、受信されたアドレス変更通知メッセージに含まれるノードＩＤ（当該メッセージの送信元ノードＮｎのノードＩＤ）が、インデックスキャッシュに記憶されているか否かを判別する。そして、当該ノードＩＤがインデックスキャッシュに記憶されている場合（ステップＳ７２４：ＹＥＳ）、ステップＳ７２５に進み、当該ノードＩＤがインデックスキャッシュに記憶されていない場合には（ステップＳ７２４：ＮＯ）、図９に示す処理に戻る。
【０１０１】
ステップＳ７２５では、制御部１１は、上記ノードＩＤに対応付けられてインデックスキャッシュに記憶されているＩＰアドレスが、上記受信されたアドレス変更通知メッセージに含まれた変更通知に係るＩＰアドレスと同じであるか否かを判別し、同じである場合には（ステップＳ７２５：ＹＥＳ）、図９に示す処理に戻り、異なる場合には（ステップＳ７２５：ＮＯ）、ステップＳ７２６に進む。
【０１０２】
ステップＳ７２６では、制御部１１は、上記アドレス変更通知メッセージに含まれた変更通知に係るＩＰアドレスにより、当該ＩＰアドレスと同じノードＩＤが対応付けられてインデックスキャッシュに記憶されているＩＰアドレスを更新し、図９に示す処理に戻る。
【０１０３】
次に、図９に示すステップＳ７３では、制御部１１は、上記受信されたアドレス変更通知メッセージがＤＨＴマルチキャストにより送信されたメッセージであるか否かを判別（例えば、ＩＤマスクにより判別）し、ＤＨＴマルチキャストにより送信されたメッセージである場合には（ステップＳ７３：ＹＥＳ）、ステップＳ７４に進み、ＤＨＴマルチキャストにより送信されたメッセージでない場合には（ステップＳ７３：ＮＯ）、図６に示す処理に戻る。
【０１０４】
ステップＳ７４では、制御部１１は、上記受信されたアドレス変更通知メッセージに含まれるターゲットノードＩＤを自ノードのノードＩＤに変換する。
【０１０５】
次いで、制御部１１は、当該アドレス変更通知メッセージにおいて設定されているＩＤマスクに「１」を加算して得た値を、新たなＩＤマスクとしてアドレス変更通知メッセージに設定する（ステップＳ７５）。
【０１０６】
次いで、制御部１１は、当該アドレス変更通知メッセージにおけるＩＤマスクがＤＨＴルーティングテーブルの全レベル数（全段数）よりも小さいか否かを判別し（ステップＳ７６）、ＩＤマスクが上記全レベル数より小さい場合には（ステップＳ７６：ＹＥＳ）、ステップＳ７７に進み、ＩＤマスクが上記全レベル数より小さくない場合、つまり、一致した場合には（ステップＳ７６：ＮＯ）、図６に示す処理に戻る。
【０１０７】
ステップＳ７７では、制御部１１は、ＤＨＴルーティングテーブルのうち、ステップＳ７５で新たに設定されたＩＤマスク＋１のレベル（例えば、レベル２）のテーブルにノード情報が登録されている全てのノードＮｎを選定し、選定した各ノードＮｎに対して、上記ターゲットノードＩＤが変換され新たなＩＤマスクが設定されたアドレス変更通知メッセージを転送し、ステップＳ７５に戻る。
【０１０８】
こうして、上記ステップＳ７６においてＩＤマスクがＤＨＴルーティングテーブルの全レベル数と一致するまで、ステップＳ７５及びＳ７７の処理は繰り返し実行され、ＤＨＴルーティングテーブルにノード情報が登録されているノードＮｎのうち、所定レベル（所定段）より下位のレベルにノード情報が登録されている全てのノードＮｎに対してアドレス変更通知メッセージが送信されることになる。ここで、所定レベルとは、アドレス変更通知メッセージの受信時におけるＩＤマスク＋１のレベルに相当する。
【０１０９】
次に、図９に示すステップＳ７８では、制御部１１は、受信したメッセージがパブリッシュメッセージであるか否かを判別し、パブリッシュメッセージである場合には（ステップＳ７８：ＹＥＳ）、ステップＳ７９に進み、パブリッシュメッセージでない場合には（ステップＳ７８：ＮＯ）、ステップＳ８５に進む。
【０１１０】
ステップＳ７９では、制御部１１は、受信されたパブリッシュメッセージに含まれるノードＩＤ（当該メッセージの送信元ノードＮｎのノードＩＤ）が、インデックスキャッシュに記憶されているか否かを判別する。そして、当該ノードＩＤがインデックスキャッシュに記憶されている場合（ステップＳ７９：ＹＥＳ）、ステップＳ８０に進み、当該ノードＩＤがインデックスキャッシュに記憶されていない場合には（ステップＳ７９：ＮＯ）、ステップＳ８２に進む。
【０１１１】
ステップＳ８０では、制御部１１は、上記ノードＩＤに対応付けられてインデックスキャッシュに記憶されているＩＰアドレスが、上記受信されたパブリッシュメッセージに含まれた変更通知に係るＩＰアドレスと同じであるか否かを判別し、同じである場合には（ステップＳ８０：ＹＥＳ）、ステップＳ８３に進み、異なる場合には（ステップＳ８０：ＮＯ）、ステップＳ８１に進む。
【０１１２】
ステップＳ８１では、制御部１１は、上記パブリッシュメッセージに含まれた変更通知に係るＩＰアドレスにより、当該ＩＰアドレスと同じノードＩＤが対応付けられてインデックスキャッシュに記憶されているＩＰアドレスを更新する。
【０１１３】
ステップＳ８２では、制御部１１は、受信されたパブリッシュメッセージに含まれるコンテンツＩＤ及びノード情報の組をインデックス情報としてインデックスキャッシュに追加記憶する。
【０１１４】
ステップＳ８３では、制御部１１は、受信されたパブリッシュメッセージが自ノード宛てであるか（つまり、自ノードがコンテンツＩＤのルートノードであるか）否かを、パブリッシュメッセージに含まれるコンテンツＩＤと、自ノードのノードＩＤ及びＤＨＴルーティングテーブルに登録されている他のノードＮｎのノードＩＤとの比較結果に基づいて判別する。そして、自ノード宛である場合、例えば、パブリッシュメッセージに含まれるコンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮｎが自ノードである場合には、図６に示す処理に戻り、自ノード宛でない場合、ステップＳ８４に進む。
【０１１５】
ステップＳ８４では、制御部１１は、上記比較結果に基づいてＤＨＴルーティングテーブルから一つのノードＮｎを選定、例えば、上記コンテンツＩＤに最も近いノードＩＤを有するノードＮｎを選定し、当該選定したノードＮｎに対して、上記パブリッシュメッセージを転送し、図６に示す処理に戻る。
【０１１６】
次に、図９に示すステップＳ８５では、制御部１１は、受信したメッセージが再参加メッセージであるか否かを判別し、再参加メッセージである場合には（ステップＳ８５：ＹＥＳ）、ステップＳ８６に進み、再参加メッセージでない場合には（ステップＳ８５：ＮＯ）、ステップＳ８９に進む。
【０１１７】
ステップＳ８６では、制御部１１は、図１０に示すＩＰアドレス更新処理を行う。
【０１１８】
次いで、制御部１１は、受信された再参加メッセージが自ノード宛てであるか（つまり、自ノードが、再参加メッセージの送信元のノードＮｎのノードＩＤのルートノードであるか）否かを、再参加メッセージに含まれるノードＩＤと、自ノードのノードＩＤ及びＤＨＴルーティングテーブルに登録されている他のノードＮｎのノードＩＤとの比較結果に基づいて判別する（ステップＳ８７）。そして、自ノード宛である場合（ステップＳ８７：ＹＥＳ）、例えば、再参加メッセージに含まれるノードＩＤと最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノードＮｎが自ノードである場合には、図６に示す処理に戻り、自ノード宛でない場合（ステップＳ８７：ＮＯ）、ステップＳ８８に進む。
【０１１９】
ステップＳ８８では、制御部１１は、上記比較結果に基づいてＤＨＴルーティングテーブルから一つのノードＮｎを選定、例えば、上記再参加メッセージに含まれるノードＩＤに最も近いノードＩＤを有するノードＮｎを選定し、当該選定したノードＮｎに対して、上記再参加メッセージを転送し、図６に示す処理に戻る。
【０１２０】
なお、ステップＳ８９では、その他のメッセージ（例えば、参加メッセージ、コンテンツ所在問合せメッセージ、コンテンツ送信要求メッセージなど）に応じた処理が行われる。
【０１２１】
図６に示すステップＳ８では、例えば、受信されたアドレス変更通知メッセージに含まれた変更通知に係るＩＰアドレスにより、当該ＩＰアドレスと同じノードＩＤが対応付けられてログ情報中に含まれるＩＰアドレスが更新されるか、又は受信された参加メッセージに含まれるＩＰアドレス及びノードＩＤの組の新規追加が行われる。
【０１２２】
次に、以上の図６〜図１０の中で行われるメッセージの送信処理の詳細について、図１１を参照して説明する。
【０１２３】
図１１に示す処理は、送信すべきメッセージ（例えば、アドレス変更通知メッセージなど）及び当該メッセージの送信先のノードＮｎが確定した場合に開始され、制御部１１は、当該メッセージの送信先のノードＮｎとの接続がプールされているか否かを判別する（ステップＳ３１）。
【０１２４】
ここで、送信先のノードＮｎとの接続（セッション）は、例えば、３ウェイハンドシェイクと呼ばれる接続手順（ＳＳＬ（Secure Socket Layer）を使用している場合、認証が行われる）により確立されるが、コンテンツ分散保存システムＳでは、多くのノードＮｎとの接続がなされるので、メッセージの転送の度にハンドシェイクが行われると、転送に時間がかかる。よって、頻繁に接続が行われるノードＮｎとは、一度ハンドシェイクが行われたら、その接続を切断せずに、そのセッション情報をソケットテーブルに登録し保持（これをソケットプールという）しておく。例えば、ソケットテーブルには、最大５０程度のセッション情報を登録できる（５０程度のソケットをプールできる）ようになっている。なお、セッション情報には、例えば、自ノードのノード情報、接続相手のノード情報、及びソケット識別子が含まれる。そして、ソケットプールされていないノードＮｎとの新たな接続は、ソケットプールの中で最も使用されていないノードＮｎとの接続が切断された上で、ハンドシェイクにより行われる。
【０１２５】
上記ステップＳ３１において、当該メッセージの送信先のノードＮｎとの接続がプールされている場合（ステップＳ３１：ＹＥＳ）、制御部１１は、当該メッセージ（パケット）を、当該送信先のノードＮｎに通信部１９を通じて送信する（ステップＳ３２）。
【０１２６】
一方、当該メッセージの送信先のノードＮｎとの接続がプールされていない場合（ステップＳ３１：ＮＯ）、制御部１１は、当該送信先のノードＮｎのＩＰアドレス及びポート番号を宛先ＩＰアドレス及び宛先ポート番号として用いて上記ハンドシェイクにより当該送信先のノードＮｎとの接続確立を試みる。そして、上記送信先のノードＮｎとの接続確立できた場合には（ステップＳ３３：ＹＥＳ）、制御部１１は、当該送信先のノードＮｎとのセッション情報をソケットテーブルに追加登録（最大登録数に達している場合、例えば最も古いセッション情報を削除した上で追加登録）し（ステップＳ３４）、上記ステップＳ３２の処理を行う。一方、上記送信先のノードＮｎとの接続確立できない場合には（ステップＳ３３：ＮＯ）、制御部１１は、当該送信先のノードＮｎのノード情報をＤＨＴルーティングテーブル等から削除する（ステップＳ３５）。次いで、制御部１１は、上記送信すべきメッセージが他のノードＮｎへ転送すべきメッセージ（例えば、パブリッシュメッセージなど）であるか否かを判別し（ステップＳ３６）、転送すべきメッセージである場合には（ステップＳ３６：ＹＥＳ）、ステップＳ３７に進み、転送すべきメッセージでない場合には（ステップＳ３６：ＮＯ）、ステップＳ３８に進む。
【０１２７】
ステップＳ３７では、制御部１１は、当該メッセージの他の送信先（転送先）のノードＮｎの候補を例えばＤＨＴルーティングテーブルから検索し、検索できた場合には（ステップＳ３７：ＹＥＳ）、ステップＳ３１に戻り、当該検索できたノードＮｎについて上記と同様の処理を行う。一方、検索できなかった場合には（ステップＳ３７：ＮＯ）、制御部１１は、ステップＳ３８に進む。
【０１２８】
ステップＳ３８〜Ｓ４４は、ソケットプールのクリーニング処理である。先ず、制御部１１は、変数Ｉを「０」に設定し（ステップＳ３８）、当該Ｉがソケットテーブルへの最大登録数（例えば、５０）より小さいか否かを判別する（ステップＳ３９）。そして、Ｉがソケットテーブルへの最大登録数（例えば、５０）より小さい場合には（ステップＳ３９：ＹＥＳ）、ステップＳ４０に進み、Ｉがソケットテーブルへの最大登録数（例えば、５０）より小さくない場合には（ステップＳ３９：ＮＯ）、当該処理が終了する。
【０１２９】
ステップＳ４０では、制御部１１は、ソケットテーブルのＩ番目に登録されているノードＮｎとの接続が確立されているか否かを判別し、接続が確立されている場合には（ステップＳ４０：ＹＥＳ）、ステップＳ４１に進み、接続が確立されていない場合には（ステップＳ４０：ＮＯ）、ステップＳ４４に進む。
【０１３０】
ステップＳ４１では、制御部１１は、Ｉ番目に登録されているノードＮｎとの間で非推奨のＩＰアドレス（自ノードのＩＰアドレス）で接続しているか否かを判別し、非推奨のＩＰアドレスで接続している場合には（ステップＳ４１：ＹＥＳ）、ステップＳ４２に進み、推奨のＩＰアドレスで接続している場合には（ステップＳ４１：ＮＯ）、ステップＳ４４に進む。
【０１３１】
ここで、上記非推奨のＩＰアドレスは、IPv6の場合を考慮したものである。IPv6の場合、ＩＰアドレスの割り当てから一定時間までは推奨期間であるが、この推奨期間を過ぎると、当該ＩＰアドレスは非推奨になる。
【０１３２】
ステップＳ４２では、制御部１１は、Ｉ番目に登録されているノードＮｎに対して、現時点から過去所定時間（例えば、１０分）以内にメッセージを送信しているか否かを判別し、メッセージを送信している場合には（ステップＳ４２：ＹＥＳ）、ステップＳ４４に進み、メッセージを送信していない場合には（ステップＳ４２：ＮＯ）、ステップＳ４３に進む。
【０１３３】
ステップＳ４３では、制御部１１は、Ｉ番目に登録されているノードＮｎとの接続を切断し、ステップＳ４４に進む。
【０１３４】
ステップＳ４４では、制御部１１は、上記Ｉを１インクリメントしてステップＳ３９に戻り、次のノードＮｎについて上記と同様の処理を行う。
【０１３５】
以上説明したように、上記実施形態によれば、各ノードＮｎは、自己のＩＰアドレスの変更を検出した場合には、ＤＨＴルーティングテーブルやインデックスキャッシュ等から他のノードＮｎを選定し、当該選定したノードＮｎに対してアドレス変更通知メッセージを送信することにより、ＩＰアドレスの変更を通知して更新させるように構成したので、ＩＰアドレスが変更されても、各ノードＮｎ間の情報伝達（例えば、ＤＨＴルーティングテーブルを用いたメッセージのルーティング等）に支障が来たすことを防止することができる。
【０１３６】
また、ＩＰアドレスの変更通知をパブリッシュメッセージと同様の転送経路で行うように構成すれば、パブリッシュメッセージがルートノードに至るまでの転送経路において自ノードのＩＰアドレスを記憶しているであろうノードＮｎに対して、より効果的にＩＰアドレスの変更を通知することができる。
【０１３７】
また、ＩＰアドレスの変更通知を参加メッセージと同様の転送経路で行うように構成すれば、再参加メッセージがルートノードに至るまでの転送経路において自ノードのＩＰアドレスを記憶しているであろうノードＮｎに対して、より効果的にＩＰアドレスの変更を通知することができる。
【０１３８】
また、ＩＰアドレスの変更通知をＤＨＴマルチキャストにより行うように構成すれば、コンテンツ分散保存システムＳに参加している全てのノードＮｎに対してＩＰアドレスの変更を通知することができる。
【０１３９】
なお、上記実施形態においては、アドレス情報の一例としてＩＰアドレスとしたが、待ち受けポート（listen port）の変更の場合にも適用できる。
【０１４０】
なお、上記実施形態におけるコンテンツ分散保存システムＳは、ＤＨＴを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。
【図面の簡単な説明】
【０１４１】
【図１】本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ノードＮ２が保持するＤＨＴルーティングテーブルの一例を示す図である。
【図３】ＤＨＴのＩＤ空間の一例を示す概念図である。
【図４】コンテンツ分散保存システムＳへの参加時におけるＤＨＴルーティングテーブルの生成手順の一例を示す概念図である。
【図５】ノードＮｎの概要構成例を示す図である。
【図６】ノードＮｎにおける制御部１１のメイン処理を示すフローチャートである。
【図７】図６に示すステップＳ２等のパブリッシュ処理の詳細を示すフローチャートである。
【図８】図６に示すステップＳ５のＩＰアドレス変更通知処理の詳細を示すフローチャートである。
【図９】図６に示すステップＳ７のメッセージ受信処理の詳細を示すフローチャートである。
【図１０】図９に示すステップＳ７２及びＳ８５のＩＰアドレス更新処理の詳細を示すフローチャートである。
【図１１】メッセージ送信処理の詳細を示すフローチャートである。
【符号の説明】
【０１４２】
８  ネットワーク
９  オーバーレイネットワーク
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
１９  通信部
２０  入力部
２１  バス
Ｎｎ  ノード
Ｓ  コンテンツ分散保存システム
【図１】
2010028551.tif 000003
【図２】
2010028551.tif 000004
【図３】
2010028551.tif 000005
【図４】
2010028551.tif 000006
【図５】
2010028551.tif 000007
【図６】
2010028551.tif 000008
【図７】
2010028551.tif 000009
【図８】
2010028551.tif 000010
【図９】
2010028551.tif 000011
【図１０】
2010028551.tif 000012
【図１１】
2010028551.tif 000013