JP2009017069A - オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム - Google Patents

オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム Download PDF

Info

Publication number
JP2009017069A
JP2009017069A JP2007174735A JP2007174735A JP2009017069A JP 2009017069 A JP2009017069 A JP 2009017069A JP 2007174735 A JP2007174735 A JP 2007174735A JP 2007174735 A JP2007174735 A JP 2007174735A JP 2009017069 A JP2009017069 A JP 2009017069A
Authority
JP
Japan
Prior art keywords
node
participation request
node device
overlay network
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007174735A
Other languages
English (en)
Other versions
JP4770804B2 (ja
Inventor
Takafumi Sasaki
孝文 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2007174735A priority Critical patent/JP4770804B2/ja
Publication of JP2009017069A publication Critical patent/JP2009017069A/ja
Application granted granted Critical
Publication of JP4770804B2 publication Critical patent/JP4770804B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】複数のノード装置の参加によって構築されるオーバレイネットワーク上における各ノード装置の論理的位置を表すノードIDを各ノード装置が決定する技術を改良する。
【解決手段】各ノード装置は、自身が参加要求ノードである場合に、オーバレイネットワーク9への参加に先立ち、自身のノードIDを決定し、さらに、ルーティングテーブルの作成を目的として、参加メッセージをコンタクトノードに送信する。さらに、各ノード装置は、自身が参加要求ノードではないが、参加メッセージの最終転送先ノードである状態で、参加メッセージを受信した場合に、自身のノードIDを含む転送完了メッセージを参加要求ノードに送信する。さらに、各ノード装置は、転送完了メッセージを受信し、かつ、最終転送先のノードIDが自身のノードIDと一致する場合に、自ノード装置のノードIDを変更し、さらに、参加メッセージをコンタクトノードに再送する。
【選択図】図5

Description

本発明は、複数のノード装置の参加によって構築されるオーバレイネットワーク上で複数のノード装置が相互に通信を行うための技術に関するものであり、特に、各ノード装置のオーバレイネットワーク上における論理的位置を表すノードIDを各ノード装置が決定する技術に関するものである。
複数のノード装置(例えば、複数のパーソナルコンピュータ)間でコンテンツ(例えば、視聴覚コンテンツ)等の情報を共有するために、複数のノード装置の参加によってオーバレイネットワークを論理的に構築し、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うことを可能にする技術が既に実用化されている。
そのような通信システムの一例が特許文献1にピアツーピア型コンテンツ配信システムとして開示されている。このオーバレイネットワーク型通信システムにおいては、複数のノード装置に、オーバレイネットワーク上における複数の論理的位置がそれぞれ割り当てられる。複数のノード装置にそれぞれ割り当てられる複数の論理的位置を、オーバレイネットワーク上において分散して記憶させるために、例えば、分散ハッシュテーブルDHT(Distributed Hash Table)が用いられる。
各ノード装置のオーバレイネットワーク上における論理的位置を識別するためのデータは、一般に、ノードIDと称される。例えば、上述のDHTを用いる場合には、予め定められたハッシュ関数を各ノード装置ごとに固有な情報に適用し、その結果得られた値をノードIDとして採用する。
特開2006−197400号公報
一般に、各ノード装置は、オーバレイネットワークに参加するのに先立ち、各ノード装置に固有の情報(例えば、各ノード装置に割り当てられたIPアドレス、MACアドレス、各ノード装置の製造番号、オーバレイネットワークに参加するときの日付時刻等)に基づき、予め定められた規則(例えば、固有情報に対して、複数のノード装置に共通のハッシュ関数を適用する)に従って、自ノード装置のノードIDを決定するように設計される。
ノードIDは、それぞれのノード装置に固有であるように決定されるべきである。しかし、各ノード装置が前記予め定られた規則に従ってノードIDを決定する際、ハッシュ関数等の性質(2つの別々の値を同じハッシュ関数に与えても、2つの結果が同じになることがあり得る。)により、確率は非常に低いとはいえ、複数のノード装置に同一のノードIDが割り当てられてしまう可能性がある。
複数のノード装置が、それらノード装置に同一のノードIDが割り当てられたまま、オーバレイネットワークに参加してしまうと、あるノード装置が新しいコンテンツを他のノード装置にも見えるように公開するための公開メッセージ(publishメッセージ)を他のノード装置に配信しても、その公開メッセージが、同一のノードIDが割り当てられた複数のノード装置のうちのいずれに到達するのかが分からない。
このように、新しいコンテンツのための公開メッセージの到達先が不明であると、他のノード装置が、そのコンテンツをオーバレイネットワーク上において見つけようとしても、オーバレイネットワーク上において正しいルーティングが行われない。正しいルーティングが行われないと、各ノード装置は、目標のコンテンツがオーバレイネットワーク上に存在するにもかかわらず、目標のコンテンツを保有するコンテンツホルダに到達することができず、目標のコンテンツを見つけることができない。
一方、複数のノード装置に同一のノードIDが割り当てられてしまう可能性がある場合に、複数のノード装置に共通の管理サーバをオーバレイネットワークに設置してその管理サーバにノードIDを管理させれば、複数のノード装置に同一のノードIDが割り当てられてしまうことを防止することが容易である。しかし、そのような管理サーバを設置すると、新たなコストおよびメンテンナンスの必要性が発生するため、そのような管理サーバはできる限り省略することが望ましい。
以上説明した事情を背景とし、本発明は、ノード装置のオーバレイネットワーク上における論理的位置を表すノードIDを管理する管理サーバの介入を不可欠とすることなく、複数のノード装置に同一のノードIDが割り当てられてしまうことがないように自ノード装置のノードIDを決定する技術を提供することを課題としてなされたものである。
本発明によって下記の各態様が得られる。各態様は、項に区分し、各項には番号を付し、必要に応じて他の項の番号を引用する形式で記載する。これは、本発明が採用し得る技術的特徴の一部およびそれの組合せの理解を容易にするためであり、本発明が採用し得る技術的特徴およびそれの組合せが以下の態様に限定されると解釈すべきではない。すなわち、下記の態様には記載されていないが本明細書には記載されている技術的特徴を本発明の技術的特徴として適宜抽出して採用することは妨げられないと解釈すべきなのである。
さらに、各項を他の項の番号を引用する形式で記載することが必ずしも、各項に記載の技術的特徴を他の項に記載の技術的特徴から分離させて独立させることを妨げることを意味するわけではなく、各項に記載の技術的特徴をその性質に応じて適宜独立させることが可能であると解釈すべきである。
(1) 複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信システムであって、
各ノード装置は、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードIDを決定するノードID決定手段と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードIDとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードIDを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードIDのうち、前記受信された参加要求情報に含まれるノードIDに近いノードIDを有する他のノード装置に前記参加要求情報を転送する転送手段と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードIDより自ノード装置のノードIDの方が、前記受信された参加要求情報に含まれるノードIDに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定するノードID変更要否判定手段と、
そのノードID変更要否判定手段により自ノード装置のノードIDを変更すると判定された場合に、自ノード装置のノードIDを変更するノードID変更手段と、
自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
を含むオーバレイネットワーク型通信システム。
このオーバレイネットワーク型通信システムを構成する各ノード装置は、オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置のノードIDを決定する。
各ノード装置は、自ノード装置が、これからオーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、参加要求情報を複数のノード装置のうちのいずれかに送信する。そして、各ノード装置は、自ノード装置が参加要求ノード装置でも後述の最終転送先でもない状態で、他のノード装置から参加要求情報を受信した場合に、自ノード装置の記憶手段に記憶されている他のノード装置のノードIDのうち、受信された参加要求情報に含まれるノードID(参加要求ノード装置のノードID)に論理空間的に近いノードIDを有する他のノード装置に参加要求情報を転送する。
本項に係るオーバレイネットワーク型通信システムを構成する各ノード装置は、自ノード装置が参加要求ノード装置ではないが、最終転送先である状態で、他のノード装置から参加要求情報を受信した場合に、参加要求情報に対応する参加要求返信情報を参加要求ノード装置に送信する。
本項に係るオーバレイネットワーク型通信システムを構成する各ノード装置は、受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定し、変更すると判定した場合に、自ノード装置のノードIDを変更する。そして、各ノード装置は、自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む参加要求情報を複数のノード装置のうちのいずれかに再送する。
したがって、本項に係るオーバレイネットワーク型通信システムによれば、複数のノード装置に同一のノードIDが割り当てられてしまう事態が、管理サーバの設置を不可欠とすることなく、防止される。
(2) 複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信方法であって、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、各ノード装置が前記オーバレイネットワークに参加した場合に各ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードIDを決定するノードID決定工程と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードIDとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードIDを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信工程と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードIDのうち、前記受信された参加要求情報に含まれるノードIDに近いノードIDを有する他のノード装置に前記参加要求情報を転送する転送工程と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードIDより自ノード装置のノードIDの方が、前記受信された参加要求情報に含まれるノードIDに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信工程と、
受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定するノードID変更要否判定工程と、
そのノードID変更要否判定工程により自ノード装置のノードIDを変更すると判定された場合に、自ノード装置のノードIDを変更するノードID変更工程と、
自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送工程と
を含むオーバレイネットワーク型通信方法。
このオーバレイネットワーク型通信方法は、前記(1)項に係るオーバレイネットワーク型通信システムの動作方法として実行される。その動作方法は前記(1)項において説明されているため、以下、このオーバレイネットワーク型通信方法を簡単に説明する。
このオーバレイネットワーク型通信方法が実行されると、各ノード装置は、オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置のノードIDを決定する。
さらに、各ノード装置は、自ノード装置が参加要求ノード装置である場合に、参加要求情報を複数のノード装置のうちのいずれかに送信する。
さらに、各ノード装置は、自ノード装置が参加要求ノード装置でも後述の最終転送先でもない状態で、他のノード装置から参加要求情報を受信した場合に、自ノード装置の記憶手段に記憶されている他のノード装置のノードIDのうち、参加要求ノード装置のノードIDに論理空間的に近いノードIDを有する他のノード装置に参加要求情報を転送する。
さらに、各ノード装置は、自ノード装置が参加要求ノード装置ではないが、最終転送先である状態で、他のノード装置から参加要求情報を受信した場合に、参加要求情報に対応する参加要求返信情報を参加要求ノード装置に送信する。
さらに、各ノード装置は、受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定し、自ノード装置のノードIDを変更すると判定した場合に、自ノード装置のノードIDを変更する。
さらに、各ノード装置は、自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む参加要求情報を複数のノード装置のうちのいずれかに再送する。
したがって、本項に係るオーバレイネットワーク型通信方法によれば、複数のノード装置に同一のノードIDが割り当てられてしまう事態が、管理サーバの設置を不可欠とすることなく、防止される。
(3) 他のノード装置と共に参加することによってオーバレイネットワークを構築し、そのオーバレイネットワーク上で他のノード装置と通信を行うオーバレイネットワーク型ノード装置であって、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードIDを決定するノードID決定手段と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードIDとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードIDを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードIDのうち、前記受信された参加要求情報に含まれるノードIDに近いノードIDを有する他のノード装置に前記参加要求情報を転送する転送手段と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードIDより自ノード装置のノードIDの方が、前記受信された参加要求情報に含まれるノードIDに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定するノードID変更要否判定手段と、
そのノードID変更要否判定手段により自ノード装置のノードIDを変更すると判定された場合に、自ノード装置のノードIDを変更するノードID変更手段と、
自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
を含むオーバレイネットワーク型ノード装置。
このオーバレイネットワーク型ノード装置は、前記(1)項に係るオーバレイネットワーク型通信システムを構成する複数のノード装置のそれぞれに該当する。各ノード装置の構成および作用については、前記(1)項において説明されているため、ここでは、重複した説明を省略する。
(4) 前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、自ノード装置のノードIDを含み、かつ、前記参加要求情報に対応する前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
前記ノードID変更要否判定手段は、受信した参加要求返信情報に含まれるノードIDが自ノード装置のノードIDと一致する場合に、自ノード装置のノードIDを変更すると判定する手段を含む(3)項に記載のオーバレイネットワーク型ノード装置。
(5) 前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、前記参加要求情報に含まれる参加要求ノード装置のノードIDが自ノード装置のノードIDと一致するか否かを判定し、一致すると判定した場合に、ノードIDの変更を指示するノードID変更指示情報を含む前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
前記ノードID変更要否判定手段は、受信した参加要求返信情報に前記ノードID変更指示情報が含まれている場合に、自ノード装置のノードIDを変更すると判定する手段を含む(3)項に記載のオーバレイネットワーク型ノード装置。
(6) 前記ノードID変更手段は、前記ノードID決定手段によって決定されたもとのノードIDを参照することなく、そのもとのノードIDを決定するために用いられた前記所定情報および/または前記規則とは異なる情報および/または規則を用いて、前記もとのノードIDとは異なる新たなノードIDを取得する取得手段を含む(3)ないし(5)項のいずれかに記載のオーバレイネットワーク型ノード装置。
(7) 前記取得手段は、前記もとのノードIDを決定するために用いられた情報とは別の情報を追加的にまたは代替的に用いることにより、前記新たなノードIDを取得する手段を含む(6)項に記載のオーバレイネットワーク型ノード装置。
(8) 前記ノードID変更手段は、前記ノードID決定手段によって決定されたもとのノードIDを参照することにより、そのもとのノードIDとは異なる新たなノードIDを取得する取得手段を含む(3)ないし(5)項のいずれかに記載のオーバレイネットワーク型ノード装置。
(9) 前記取得手段は、前記もとのノードIDに対して予め定められた演算を行うことにより、前記新たなノードIDを取得する手段を含む(8)項に記載のオーバレイネットワーク型ノード装置。
(10) 前記オーバレイネットワークに参加した際に用いたノードIDを、自ノード装置の電源遮断後にも保存する保存手段と、
前記オーバレイネットワークに参加しようとする際に、前記保存手段からノードIDを読み出し、その読み出されたノードIDを、自ノード装置がこれから前記オーバレイネットワークに参加するために用いるノードIDの初期値として設定する設定手段と
を含み、
前記参加要求情報送信手段は、前記設定手段によって設定されたノードIDを含む前記参加要求情報を前記複数のノード装置のいずれかに送信する(3)ないし(9)項のいずれかに記載のオーバレイネットワーク型ノード装置。
このオーバレイネットワーク型ノード装置によれば、自ノード装置が、その電源が投入された後、自ノード装置が前回の電源オン中に、オーバレイネットワークに参加した際に用いたノードIDと同じノードIDを用いて、オーバレイネットワークに参加することが可能となる。
したがって、このオーバレイネットワーク型ノード装置によれば、自ノード装置が、その電源が投入された後、自ノード装置が前回の電源オン中に、オーバレイネットワークに参加した際にオーバレイネットワーク上に論理的に配置された位置と同じ位置に論理的に配置される。
よって、このオーバレイネットワーク型ノード装置によれば、自ノード装置が特定のコンテンツ等、情報を探索するために、オーバレイネットワークについてルーティングが、前回参加時と今回参加時とで同じ経路で行われる可能性が高くなり、情報の探索や転送が停滞せずに済む。
(11) 前記ノードID決定手段は、前記保存手段にノードIDが保存されていない場合に、前記所定情報に基づき、前記予め定められた規則に従って、ノードIDを決定する(10)項に記載のオーバレイネットワーク型ノード装置。
(12) 自ノード装置が前記参加要求ノード装置ではない状態で前記参加要求情報を受信した場合に、前記参加要求ノード装置が他のノード装置のノードIDと前記通信情報との関係を取得してその関係を前記参加要求ノード装置の前記記憶手段に記憶させることを可能とするために、前記参加要求情報に対応する処理を前記参加要求ノード装置に対して実行する参加要求情報対応処理実行手段を含む(3)ないし(11)項のいずれかに記載のオーバレイネットワーク型ノード装置。
このノード装置によれば、自ノード装置が参加要求ノード装置ではない状態で参加要求情報を受信した場合に、その参加要求情報に対応する処理が参加要求ノード装置に対して実行され、それにより、参加要求ノード装置が前述のルーティングテーブルを作成することが支援される。
その結果、参加要求ノード装置は、他のノード装置に参加要求情報を送信すると、それに応答して、他のノード装置から、ルーティングテーブルを作成するために必要な情報を受信することになる。すなわち、参加要求ノード装置は、ルーティングテーブルを作成するために、参加要求情報を他のノード装置に送信するのである。
(13) (3)ないし(12)項のいずれかに記載のオーバレイネットワーク型ノード装置を動作させるためにコンピュータによって実行されるプログラム。
このプログラムがコンピュータにより実行されれば、前記(3)ないし(12)項のいずれかに係るオーバレイネットワーク型ノード装置と基本的に同じ原理に従い、同様な作用効果が実現され得る。
本項に係るプログラムは、それの機能を果たすためにコンピュータにより実行される指令の組合せのみならず、各指令に従って処理されるファイルやデータをも含むように解釈することが可能である。
また、このプログラムは、それ単独でコンピュータにより実行されることにより、所期の目的を達するものとしたり、他のプログラムと共にコンピュータにより実行されることにより、所期の目的を達するものとすることができる。後者の場合、本項に係るプログラムは、データを主体とするものとすることができる。
(14) (13)項に記載のプログラムをコンピュータ読取り可能に記録した記録媒体。
この記録媒体に記録されているプログラムがコンピュータにより実行されれば、前記(3)ないし(12)項のいずれかに係るオーバレイネットワーク型ノード装置と基本的に同じ原理に従い、同様な作用効果が実現され得る。
この記録媒体は種々な形式を採用可能であり、例えば、フレキシブル・ディスク等の磁気記録媒体、CD、CD−ROM等の光記録媒体、MO等の光磁気記録媒体、ROM等のアンリムーバブル・ストレージ等のいずれかを採用し得る。
以下、本発明のさらに具体的な実施の形態のうちの一つを図面に基づいて詳細に説明する。本実施形態は、DHTを用いてオーバレイネットワークを構成して複数のノード装置間においてコンテンツ等の情報を共有しつつピアツーピア通信を行うことを可能にする情報通信システムSに本発明を適用する場合の一例である。
[全体的概略]
図1には、この情報通信システムSの接続構成が系統的に示されている。この情報通信システムSにおいては、各ノード装置が、時間的に変化する役割の種類に応じて種々の処理を選択的に行う。概略的には、各ノード装置(図1においては、白丸で表す。)は、次の処理を行う。
1.ノードIDの計算
自ノード装置は、オーバレイネットワークに参加するのに先立ち、所定情報(例えば、自ノード装置のIPアドレス、MACアドレス、製造番号等)に基づき、予め定められたハッシュ関数に従って、自ノード装置のノードIDを計算する。
2.ルーティングテーブルの作成
2−1.コンタクトノードへの参加(JOIN)メッセージの送信
自ノード装置は、自ノード装置が参加要求ノード装置(以下、「参加要求ノード」ともいう。)である場合に、自ノード装置用のルーティングテーブルを作成することを目的として、参加メッセージ(前述の「参加要求情報」の一例である。)を、複数のノード装置のうちのいずれかであるコンタクトノード装置(以下、「コンタクトノード」ともいう。)に送信する。
参加要求ノードは、コンタクトノードに対し、参加メッセージをそのコンタクトノードに送信する。その参加メッセージは、その送信が成功するか否かによって、コンタクトノードが現に同じオーバレイネットワークに存在しているか否かを確認する目的も有する。すなわち、参加メッセージは、存在確認メッセージとしての機能も有しているのである。
コンタクトノードは、自身が記憶しているルーティングテーブルから、参加メッセージに含まれる領域指定情報(ルーティングテーブルのレベルを指定するための情報)に該当する他のノード装置のノードIDを読み出す。このコンタクトノードは、さらに、その該当する他のノード装置に対し、そのノード装置が現に同じオーバレイネットワークに存在しているか否かに関する情報を参加要求ノードに返信することを要求するために、存在確認メッセージを、該当する他のノード装置に送信する。
2−2.参加メッセージの転送
自ノード装置は、自ノード装置が参加要求ノードでも、参加メッセージの最終転送先ノード(ルートノード)でもない状態で、他のノード装置から参加メッセージを受信した場合に、自ノード装置に記憶されている他のノード装置のノードIDのうち、参加要求ノードのノードIDに論理空間的に近い(同じID空間エリアに属する)ノードIDを有する他のノード装置に参加メッセージを転送する。
参加要求ノードではない自ノード装置は、参加メッセージの転送先に対し、その転送先が現に同じオーバレイネットワークに存在しているか否かに関する情報を参加要求ノードに返信することを要求するために、存在確認メッセージを、上述の参加メッセージと共に、その転送先に送信する。
参加要求ノードではない自ノード装置は、自身が記憶しているルーティングテーブルから、参加メッセージに含まれる領域指定情報(ルーティングテーブルのレベルを指定するための情報)に該当する他のノード装置のノードIDを読み出す。この自ノード装置は、さらに、その該当する他のノード装置に対し、そのノード装置が現に同じオーバレイネットワークに存在しているか否かに関する情報を参加要求ノードに返信することを要求するために、存在確認メッセージを、該当する他のノード装置に送信する。
2−3.応答メッセージの受信
参加要求ノードは、参加メッセージおよび存在確認メッセージの受信に応答して他の各ノード装置から送信された応答メッセージを受信し、その受信された応答メッセージを用いてルーティングテーブルを作成する。
3.参加要求ノードへの転送完了メッセージの送信
自ノード装置は、自ノード装置が参加要求ノードではないが、参加メッセージの最終転送先ノード(ルートノード)である状態で、他のノード装置から参加メッセージを受信した場合に、自ノード装置のノードIDを含み、かつ、参加メッセージの転送が完了したことを表す転送完了メッセージ(前述の「参加要求返信情報」の一例である。)を参加要求ノードに送信する。
4.ノードIDの選択的変更
参加要求ノードは、転送完了メッセージを受信し、かつ、最終転送先ノード(ルートノード)のノードIDが自ノード装置のノードIDと一致する場合に、参加要求ノードのノードIDを変更する。
5.参加メッセージの再送
参加要求ノードは、そのノードのノードIDが変更された場合に、その変更されたノードIDを含む参加メッセージを前記コンタクトノードに再送する。
[システム構成]
次に、図1を参照することにより、この情報通信システムの物理的構成および論理的構成を説明する。
図1において符号100が付された上枠内には、論理的存在としてのオーバレイネットワーク9が系統的に示され、一方、同図において符号101が付された下枠内には、物理的存在としてのネットワーク(例えば、インターネット,LAN,WAN)8が系統的に示されている。
下枠101内に示すように、物理的なネットワーク(現実世界のネットワーク)8を構築するために、IX(Internet eXchange)3、ISP(Internet Service Provider)4、DSL(Digital Subscriber Line)回線事業者用の装置5、FTTH(Fiber To The Home)回線事業者用の装置6、通信回線(例えば、電話回線や光ケーブル等)7等が用いられる。
情報通信システムSは、このようなネットワーク8を介して相互に接続された複数のノード装置1a,1b,1c,・・・,1x,1y,1z,・・・を含むように構成され、それにより、ピアツーピア方式のネットワークシステムが実現される。
各ノード装置1a,1b,1c,・・・,1x,1y,1z,・・・には、各ノード装置1の同一性を表す情報(デバイスID)として、各ノード装置1に固有の製造番号およびIP(Internet Protocol)アドレスが割り当てられている。各ノード装置1の製造番号およびIPアドレスは、複数のノード装置1間で重複しないように設定される。
以下、説明の便宜上、ノード装置1a,1b,1c,・・・,1x,1y,1z,・・・のうちいずれかに言及するために、単に、ノード装置1ということがある。
[DHTの作成]
次に、分散ハッシュテーブルDHT(Distributed Hash Table)を利用してノードIDを計算するためのアルゴリズムを説明する。情報通信システムSにおいて、2台のノード装置1同士が互いに情報をやり取りするためには、それぞれが相手のIPアドレスを知っていなければならない。例えば、同じコンテンツを互いに共有するために、ネットワーク8に参加している各ノード装置1が、ネットワーク8に参加しているすべてのノード装置1のIPアドレスを知っておくことが考えられる。
しかし、ネットワーク8に接続されるノード装置1の数が何万何十万というように膨大な数になると、それらすべてのノード装置1のIPアドレスを各ノード装置1に覚えさせることは現実的ではない。具体的には、例えば、いずれかのノード装置1の電源が投入または遮断されるごとに、他のすべてのノード装置1においてそのいずれかのノード装置1のIPアドレスを更新しなければならない。その結果、各ノード装置1における処理が頻繁になり、システム運用が困難となる。
このような不都合を回避するために、1台のノード装置1に、ネットワーク8に参加しているすべてのノード装置1のうち必要最低限の数のノード装置1のIPアドレスだけを覚えさせておき、IPアドレスを覚えていないノード装置1については、ノード装置1間における情報転送を利用して自ノード装置1に届けてもらうというシステムが既に実用化されている。
このようなシステムの一例がオーバレイネットワーク9であり、このオーバレイネットワーク9は、DHTを利用したアルゴリズムにより、図1の上部枠100内に示すように構築される。このオーバレイネットワーク9は、既存のネットワーク8を用いて形成された、仮想リンクより成るネットワークを意味する。
本実施形態は、DHTを利用したアルゴリズムによって構築されたオーバレイネットワーク9を前提としている。このオーバレイネットワーク9上に論理的に配置されているノード装置1を、情報通信システムSに参加しているノード装置1、すなわち、オーバレイネットワーク9に参加しているノード装置1という。
未だ参加していないノード装置(参加要求ノード)1が情報通信システムSに参加するために、その参加要求ノードは、その情報通信システムSに既に参加している他の任意のノード装置1(コンタクトノード)に対して参加メッセージを送信することが必要である。その参加メッセージは、参加要求ノードがオーバレイネットワーク9に参加したいという要求を示しており、参加要求ノードを特定するための情報を含むように作成される。
情報通信システムSに参加している各ノード装置1には、ノードID(識別情報)が、各ノード装置1ごとに固有な番号として付与される。その番号のbit数は、最大運用台数のノード装置1を収容できる数に設定される。例えば、128bitの番号を用いると、2128=340×1036台のノード装置を運用することができる。
より具体的には、各ノード装置1のノードIDは、各ノード装置1のIPアドレス(または製造番号)等、ノード装置1ごとに固有の値に対して、複数のノード装置1に共通のハッシュ関数(ハッシュアルゴリズム)を適用して得られたハッシュ値である。ハッシュ関数については、公知であるため、詳細な説明を省略する。そのハッシュ値の使用により、複数のノード装置1が、同じノードID論理空間に偏りなく分散して配置されることになる。このように共通のハッシュ関数により各ノード装置1ごとに求められたノードIDは、IPアドレス(または製造番号)が異なれば、同じハッシュ値に変換される確率が極めて低い。
なお付言するに、本実施形態においては、各ノード装置1のIPアドレス(グローバルIPアドレス)を複数のノード装置1に共通のハッシュ関数により変換した値が、各ノード装置1のノードIDとして定義される。
[ルーティングテーブルの作成]
次に、図2を参照することにより、DHTを用いるルーティングテーブルの作成手法の一例を説明する。図2には、DHTを用いてルーティングテーブルが作成される様子の一例が示されている。
複数のノード装置1にそれぞれ付与された複数のノードIDは、共通のハッシュ関数によって生成されたため、それら複数のノード装置1は、図2(A)ないし図2(C)に示すように、同一のリング状のID空間上にさほど偏ることなく、散らばって存在する。図中黒丸は、各ノード装置1の論理的位置を示す。
図2に示す例においては、各ノードIDを表す数字が8bit(4進数表示にすると、4桁)で構成されており、リング状のID空間においては、IDを表す数字が反時計回りに増加する。
ルーティングテーブルを作成するために、まず、図2(A)に示すように、ID空間が複数のエリアに等分割される。実際には、ID空間が16程度の数のエリアに分割されるのが一般的であるが、ここでは、説明を簡単にするため、ID空間が4分割され、ノードIDが、4進数で表記され、かつ、ビット長が8bitである数字で表される。
あるノード装置1、すなわち、ノードIDが「1023」であるノード装置1Nを例にとり、ルーティングテーブルの作成方法の一例を具体的に例について説明する。
<レベル1のルーティング>
まず、ID空間が4つのエリアに等分割される。各エリアは、4進数で表すと最大桁の数字がエリアの番号を表す数字列「0XXX」「1XXX」、「2XXX」および「3XXX」(Xは0から3の整数、以下同様。)で表される。ノード装置1Nは、それのノードIDが「1023」であるため、図2中、左下の「1XXX」のエリアに存在することになる。
さらに、ノード装置1Nは、自分の存在するエリア(すなわち、「1XXX」のエリア)以外の各エリアごとに、そこに存在する他のノード装置1を適当に選択し、その選択されたノード装置1のIPアドレスをレベル1のテーブルに登録する。
図3(A)には、レベル1のテーブルの一例が示されている。そのテーブル中、2列目はノード装置1N自身を示しているため、IPアドレスを登録する必要はない。
<レベル2のルーティング>
次に、図2(B)に示すように、上述のレベル1のルーティングによって分割された4つのエリアのうち、ノード装置1Nが存在するエリアがさらに4つのサブエリア「10XX」「11XX」、「12XX」および「13XX」に分割される。
さらに、ノード装置1Nは、上記と同様に、自分の存在するサブエリア以外の各サブエリアに存在するノード装置1を適当に選択し、選択されたノード装置1のIPアドレスをレベル2のテーブルに登録する。
図3(B)には、レベル2のテーブルの一例が示されている。1列目はノード装置1N自身を示しているため、IPアドレスを登録する必要はない。
<レベル3のルーティング>
さらに、図2(C)に示すように、上述のレベル2のルーティングによって分割された4つのサブエリアのうち、自分の存在するサブエリアがさらに4つのサブエリア「100X」「101X」、「102X」および「103X」に分割される。
さらに、ノード装置1Nは、上記と同様に、自分の存在するサブエリア以外の各サブエリアに存在するノード装置1を適当に選択し、その選択されたノード装置1のIPアドレスをレベル3のテーブルに登録する。
図3(C)には、レベル3のテーブルの一例が示されている。3列目はノード装置1N自身を示しているため、IPアドレスを登録する必要はなく、また、2列目および4列目は、それぞれのサブエリアにノード装置が存在していないため、空白となる。
<レベル4のルーティング>
ノード装置1Nは、それのノードIDが「1023」であるため、レベル4のテーブルにおいては、図3(D)に示すように、4列目はノード装置1N自身を示しているため、IPアドレスを登録する必要はなく、また、1列目から3列目は、それぞれのサブエリアにノード装置が存在していないため、空白となる。
このようにして、レベル1から4までルーティングテーブルが、図3(D)に示すように、作成される。レベル4までルーティングテーブルが作成されると、8bitで表記されるすべてのノードIDをカバーすることができる。レベルが上がると、テーブル中に空白が目立つようになる。
すべてのノード装置1は、それぞれが、以上説明した手法を用いてルーティングテーブルを作成して所有する。このように、各ノード装置1は、他のノード装置1のIPアドレスを記憶したルーティングテーブルを作成する。
本実施形態においては、各ノード装置1は、ノード情報としてのIPアドレスと、識別情報としてのノードIDと、そのノードIDがノードID空間に割り当てられる論理的位置(DHTのレベルと列位置との組合せによって定義される)とを互いに関連付けて記憶している。
ここで、自ノード装置1NのノードIDに近いノードIDを有するノード装置が、後述するルートノード(図2(C)および図3(D)においては、ノードIDが「1000」であるノード装置)であると仮定する。
図3(D)に示すように、ノードIDの桁数に応じてレベルの数が決まり、また、ノードIDを表記するために用いる進数の数に応じて、ルーティングテーブルの各レベルの注目桁(例えば、レベル1である場合には、第1桁、レベル2である場合には、第2桁)に出現し得る数字の数が決まる。
例えば、ノードIDが16桁16進数で表記される場合には、ノードIDは、bit数が64であり、レベルの数が16であり、注目桁に出現し得る(英)数字の数が16(「0」〜「f」)となる。ルーティングテーブルについての後の説明においては、各レベルの注目桁に出現する数字を表す部分を単に「列」ともいう。
[ノード装置の構成]
次に、図4を参照することにより、各ノード装置1の構成および機能を説明する。複数の各ノード装置1の構成は互いに共通するため、1つのノード装置1のみを代表的に説明する。図4は、その代表的なノード装置1の構成の一例を概略的に示している。
図4に示すように、ノード装置1は、制御部11と記憶部12とを備えている。制御部1は、演算機能を有するCPU,作業用RAM,各種データおよびプログラムを記憶するROM等から構成されたコンピュータを備えている。記憶部12は、コンテンツデータ、インデックス情報、上記DHT,プログラム等を記憶保存(格納)するためのHD等から構成されている。ただし、複数のノード装置1の中には、コンテンツデータを保存していないノード装置1もある。記憶部12は、前記「記憶手段」の一例を構成する。
ノード装置1は、さらに、受信されたコンテンツデータ等を一時蓄積するバッファメモリ13と、コンテンツデータに含まれるエンコードされたビデオデータ(映像情報)、オーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部14とを備えている。ノード装置1は、さらに、デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、その映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部16とを備えている。
ノード装置1は、さらに、デコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後、その信号をアンプにより増幅して出力する音声処理部17と、その音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18とを備えている。
ノード装置1は、さらに、ネットワーク8を通じて他のノード装置1との間の情報の通信制御を行うための通信部20と、ユーザからの指示を受け付けるとともにその指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス、操作パネル等)21とを備えている。
図4に示すように、制御部11、記憶部12、バッファメモリ13、デコーダ部14および通信部20はバス22を介して相互に接続されている。
ノード装置1においては、制御部11におけるCPUが記憶部12等に記憶された各種プログラムを実行し、それにより、ノード装置1全体が統括制御される。また、入力部21からの指示信号に応じて、コンテンツデータの登録処理等が行われる。
ノード装置1は、実行されるプログラムの種類に応じて、果たす役割が変化し、具体的には、情報を送信(転送)するノード装置として機能したり、情報を受信するノード装置として機能する。
[情報通信システムの概略]
情報通信システムSの概略を図5ないし図8を用いて説明する。図5は、情報通信システムS(オーバレイネットワーク9)に参加要求ノードが参加するために複数のノード装置1間において送受信される複数のメッセージの流れを説明するための概略図である。図6は、それらメッセージの流れを図5より詳細に説明するための概略図である。
ただし、図5には、ノードIDの衝突が発生するために、本実施形態に従って参加要求ノードのノードIDが変更される様子が示されているのに対し、図6には、その様子が省略されている。すなわち、図6には、説明の便宜上、参加要求ノードのノードIDを変更することが必要ではない例(ノードIDの衝突が発生しない例)が示されているのである。
オーバレイネットワーク9への参加を要求するノード装置1(参加要求ノード)は、オーバレイネットワーク9に参加するのに先立ち、所定情報(例えば、参加要求ノードのIPアドレス、MACアドレス、製造番号等)に基づき、予め定められたハッシュ関数に従って、参加要求ノードのノードIDを計算する。
次に、その参加要求ノードは、そのノードが初めに通信を行う、既にIPアドレスを知っている任意のノード装置(コンタクトノード)に、ルーティングテーブルを作成することを目的として、図5に示すように、参加(JOIN)メッセージ(図5において「JOIN」を付した実線で示す。)をコンタクトノードに送信する。
続いて、参加要求ノードは、図5に示すように、コンタクトノードから応答メッセージ(図5において破線で示す。)を受信し、その受信した応答メッセージを用いて、参加要求ノードのためのルーティングテーブルを作成する。その応答メッセージには、発信元のノードIDとIPアドレスとの組合せが含まれており、その組合せが発信先に転送される。
複数のノード装置1は、参加要求ノードでも、参加メッセージの最終転送先ノード(ルートノード)でもない役割を果たすときに、他のノード装置から参加メッセージを受信すると、図5に示すように、自ノード装置に記憶されている他のノード装置のノードIDのうち、参加要求ノードのノードIDに論理空間的に最も近いノードIDを有する他のノード装置に参加メッセージを転送する(図5において「JOINを転送」で示す。)。
続いて、参加要求ノードは、図5に示すように、他のノード装置からの応答メッセージ(図5において破線で示す。)を受信し、その受信した応答メッセージを用いて、参加要求ノードのためのルーティングテーブルを作成する。
自ノード装置は、自ノード装置が参加要求ノードではないが、参加メッセージの最終転送先ノード(ルートノード)である役割を果たすときに、他のノード装置から参加メッセージを受信した場合に、図5に示すように、自ノード装置のノードIDを含み、かつ、参加メッセージの転送が完了したことを表す転送完了メッセージを参加要求ノードに送信する。
参加要求ノードは、転送完了メッセージを受信し、かつ、参加メッセージの最終転送先ノード(ルートノード)のノードIDが参加要求ノードのノードIDと一致(衝突)する場合に、その参加要求ノードのノードIDを変更する。ノードIDを変更する場合には、それまでに作成されたルーティングテーブルが消去される。
参加要求ノードは、そのノードのノードIDを変更した場合に、その変更されたノードIDを含む参加メッセージを前記コンタクトノードに再送する。参加要求ノードは、以上説明した試行を、最終転送先ノードのノードIDが参加要求ノードのノードIDと一致(衝突)しなくなるまで行う。その結果、参加要求ノードのオーバレイネットワーク9への参加が完了する。
したがって、本実施形態によれば、同じノードIDが複数のノード装置1に重複して割り当てられてしまうことが確実に防止される。よって、本実施形態によれば、ノードIDの重複が原因で、ルーティングテーブルを用いた情報(各種メッセージおよび各種コンテンツデータを含む)の転送または送信が停滞してしまうという確率が低くなるという事態が回避される。
以上、図5を参照して本実施形態のうち本発明を理解するために重要な要素を概略的に説明したが、以下、図6を参照して本実施形態の全体を詳細に説明する。
情報通信システムSは、前述のように、一のノード装置がオーバレイネットワーク9に参加する際に、他のノード装置から応答メッセージを受信することにより、その応答メッセージの送信元のノード装置の情報(IPアドレスおよびノードID)を元にルーティングテーブルを作成していく。
以下、説明の便宜上、オーバレイネットワーク9への参加を要求する参加要求ノードを「ノードZ」として表記し、また、そのノードZが初めに通信を行う、既にIPアドレスを知っている任意のノード装置(コンタクトノード)を「ノードB」として表記する。
また、ルーティングテーブルを単に「テーブル」ともいう。また、他ノード装置のノード情報および識別情報の自ノード装置への記憶を、自ノード装置への「登録」ともいう。
図6は、参加要求ノードがルーティングテーブルを作成するために複数のノード装置1間において送受信される複数のメッセージの流れを示す概略図である。図7(A)ないし図7(C)はそれぞれ、ノードZの参加に先立って情報通信システムSに参加しているノードB、ノードEおよびノードGがそれぞれ記憶しているルーティングテーブルの一例を示す。図8は、ノードZがそれらノードB,EおよびGから応答メッセージを受信することにより作成するルーティングテーブルの一例である。
図6に示すように、ノードZ(参加要求ノード)は、オーバレイネットワーク9に参加しようとすると、コンタクトノードであるノードBに参加メッセージを送信する(矢印101)。すると、ノードZは、ノードBへの参加メッセージの送信が成功したという事実から、ノードBが存在していることを確認する(矢印102)。
次いで、ノードB(コンタクトノード)は、存在確認メッセージを、図7(A)に示すようにレベル1に登録しているノードA、ノードEおよびノードCに順次送信する(矢印103、105および107)。すると、ノードAは応答メッセージをノードZに送信し(矢印104)、ノードEは応答メッセージをノードZに送信し(矢印106)、ノードCは応答メッセージをノードZに送信する(矢印108)。
なお、図7(A)ないし図7(C)のそれぞれにおいて、複数のレベルのうちのいずれかの左に▲印が付してあるが、これは、自ノード装置が、▲印が付してあるレベルに登録された他のノード装置に存在確認メッセージを送信することを意味する。
また、図7(A)ないし図7(C)のそれぞれにおいて、複数のノード装置のうちのいずれかが四角枠で囲まれているが、これは、自ノード装置が、四角枠で囲まれている他のノード装置に参加メッセージを転送することを意味する。参加メッセージの転送先は、▲印が付してあるレベルに登録された他の複数のノード装置のうち、ノードZ(参加要求ノード)のノードIDに近い(同じID空間エリアに属する)ノードIDを有するものである。
ノードZ(参加要求ノード)は、ノードA、ノードB、ノードCおよびノードEからのそれぞれの応答メッセージを用いることにより、図8のテーブルにおけるノードA、ノードB、ノードCおよびノードEのIPアドレスを取得するため、ノードZは、IPアドレスとこれに対応するノードIDとを対応付けて記憶できる。
なお付言するに、本実施形態においては、図6に明瞭に示すように、参加要求ノードから参加メッセージを受信したかまたは参加要求ノードではないノード装置から参加メッセージが転送されたノード装置1(以下、「参加メッセージを中継するノード装置1」という。)のルーティングテーブルに記憶されている他の複数のノード装置のノード情報を、それら他のノード装置のうち現にオーバレイネットワーク9に参加しているものが、参加メッセージを中継するノード装置1を経由することなく直接、参加要求ノードに返信するようになっている。
これに対し、例えば、参加メッセージを中継するノード装置1が、そのノード装置1のルーティングテーブルに記憶されている他のすべてのノード装置のノード情報を、他のノード装置が現にオーバレイネットワーク9に参加しているか否かを問わず、参加要求ノードに返信する態様で本発明を実施することが可能である。
ノードB(コンタクトノード)は、参加メッセージを、最終的にノードZのルートノードに到達することを期待して、ノードEに転送する(矢印109)。このとき、ノードBは、存在確認メッセージの送信先が次のレベル2である旨の領域指定情報を参加メッセージに付加する。
次いで、ノードEは、図7(B)に示すように、存在確認メッセージを、次のレベル2に登録しているノードG、ノードDおよびノードFに順次送信する(矢印110、112および114)。すると、ノードGは応答メッセージをノードZ(参加要求ノード)に送信し(矢印111)、ノードDは応答メッセージをノードZに送信し(矢印113)、ノードFは応答メッセージをノードZに送信する(矢印115)。
このとき、ノードZ(参加要求ノード)は、ノードD、ノードFおよびノードGからのそれぞれの応答メッセージを用いることにより、図8のテーブルにおけるノードD、ノードFおよびノードGのIPアドレスおよびノードIDを記憶できる。そして、ノードEは、参加メッセージを、最終的にノードZのルートノードに到達することを期待して、ノードGに転送する(矢印116)。このとき、ノードEは、存在確認メッセージの送信先が次のレベル3である旨の領域指定情報を参加メッセージに付加する。
次いで、ノードGは、図7(C)に示すように、存在確認メッセージを、次のレベル3に登録しているノードHに送信する(矢印117)。すると、ノードHは応答メッセージをノードZに送信する(矢印118)。
参加要求ノードであるノードZのノードIDは「1013」であり、図7(C)に示すように、ノードGのルーティングテーブルに記憶されている複数のノード装置のうち、ノードZのノードID「1013」にエリア的に最も近いノードIDは「1023」であり、これは、ノードGのノードIDである。このことは、参加メッセージを次に転送すべきノード装置が存在しないことを意味し、同時に、ノードGが、ノードZにとってのルートノードであることを意味する。すなわち、ノードGは、ノードZから出された参加メッセージの最終転送先ノードなのである。このとき、ノードZ(参加要求ノード)は、ノードHからの転送完了メッセージを用いることにより、図8のテーブルにおけるノードHのIPアドレスおよびノードIDを記憶できる。この場合、参加要求ノードであるノードZのノードIDが「1013」であって、ノードHからの転送完了メッセージに含まれるノードHのノードIDが「1023」であるため、参加要求ノードであるノードZは自身のノードIDは衝突していないと判定し、これにより、情報通信システムSへの参加処理が完了する。
以上説明した処理により、ノードZ(参加要求ノード)は、図8に示すルーティングテーブルを作成することができる。このノードZのテーブルは、それぞれ現存する複数のノード装置1から受信した応答メッセージに基づいて作成されたものである。
よって、本実施形態によれば、ルーティングテーブルに、実際にはオーバレイネットワーク9から脱退している他のノード装置が記憶されていることが原因で、ルーティングテーブルを用いた情報(各種メッセージおよび各種コンテンツデータを含む)の転送または送信が停滞してしまうという確率が低くなるという事態が回避される。したがって、本実施形態によれば、情報通信システムSの通信効率が全体的に向上する。
ここで、参加要求ノードであるノードZのノードIDが「1023」であると仮定すると、ノードHからの転送完了メッセージに含まれるノードHのノードIDが「1023」であるため、参加要求ノードであるノードZのノードIDがノードHのノードIDと一定することになる。この場合には、ノードZは自身のノードIDを変更して、再度、コンタクトノードであるノードBに参加メッセージを送信する。
[情報通信システムの動作]
次に、本実施形態の情報通信システムSにおける各ノード装置1の動作を図5ないし図11を用いて説明する。各ノード装置1により、次の処理が行われる。
1.参加処理
自ノード装置1が参加要求ノードである場合に、その自ノード装置1が情報通信システムSにおけるオーバレイネットワーク9に参加するための処理(図9参照)
2.作成処理
自ノード装置1が参加要求ノードである場合に、その自ノード装置1がルーティングテーブルを作成するための処理(図6ないし図8および図9におけるステップS4)
3.転送処理
自ノード装置1が参加要求ノードではない場合に、参加メッセージを他のノード装置1に転送し、また、自ノード装置1が参加メッセージの最終転送先ノードである場合に、転送完了メッセージを参加要求ノードに送信するための処理
ただし、上述の3つの処理のうち作成処理は、既に、図6ないし図8を参照して詳細に説明されており、しかも、本発明を理解するために不可欠な処理ではないため、ここでは、簡単に説明する。
ノードZの制御部11は、自ノード装置1に電源が投入されたことを入力部11等により認識すると、ノードZの各種設定を初期化し、図9にフローチャートで概念的に表されている参加処理プログラムを起動させる。この参加処理プログラムは、記憶部12に不揮発的に記憶されているとともに、制御部11のCPUによって実行される。ただし、この参加処理プログラムの実行に先立ち、ノードZは、オーバレイネットワーク9に参加するために最初に通信を行うべきコンタクトノード(前述のノードB)のIPアドレスを予め保持していると仮定する。
参加処理プログラムが起動されると、まず、ステップS1において、参加要求ノードのノードIDが計算される。図10には、ステップS1の詳細がノードID計算ルーチンとしてフローチャートで概念的に表されている。
このノードID計算ルーチンにおいては、まず、ステップS101において、前回ノードID、すなわち、この参加要求ノードの前回電源オン中にこのノードID計算ルーチンの実行によって計算されたノードIDが、前回ノードIDとして記憶部12のうちの不揮発性メモリに記憶されているか否かが判定される。
今回は、前回ノードIDが記憶部12に記憶されていないと仮定すると、ステップS101の判定がNOとなり、ステップS102に移行する。このステップS102においては、参加要求ノードに固有のノードIDを、複数のノード装置1に共通のハッシュ関数を用いて計算するために参照すべき参照情報が記憶部12から取り込まれる。その参照情報は、例えば、参加要求ノードのIPアドレス、MACアドレスおよび製造番号(例えば、CPU_ID)のうちの少なくとも1つである。
次に、ステップS103において、その取り込まれた参照情報に対してハッシュ関数を適用することにより、参加要求ノードのノードIDが今回ノードIDとして計算される。以上で、このノードID計算ルーチンの一回の実行が終了する。
これに対し、今回は、前回ノードIDが記憶部12に記憶されていると仮定すると、ステップS101の判定がYESとなり、ステップS104に移行する。このステップS104においては、前回ノードIDが記憶部12から読み出され、続いて、ステップS105において、その読み出された前回ノードIDがそのまま今回ノードIDに設定される。以上で、このノードID計算ルーチンの一回の実行が終了する。
いずれの場合にも、その後、図9に示すステップS2において、参加要求ノードがコンタクトノードに送信すべき参加メッセージが作成される。具体的には、この参加メッセージは、参加要求ノードに割り当てられた今回ノードIDを含むように作成される。
続いて、ステップS3において、作成された参加メッセージが、記憶部12の不揮発性メモリに予め通信情報が記憶されたコンタクトノードに送信される。その後、ステップS4において、そのコンタクトノードから応答メッセージが受信される。その応答メッセージは、コンタクトノードのノードIDおよびIPアドレスを含んでいる。
このステップS4においては、さらに、前述のようにして、その受信された応答メッセージを用いて、参加要求ノードのルーティングテーブルが作成される。具体的には、応答メッセージまたは転送完了メッセージを受信するまで待って、対応するメッセージ中のノードIDが、DHTのルーティングテーブル中の適切な位置に記憶され、それにより、そのルーティングテーブルが作成される。
その後、ステップS5において、参加要求ノードが、ステップS4の実行中に、転送完了メッセージを受信したか否かが判定される。今回は、転送完了メッセージを未だ受信していないと仮定すると、ステップS5の判定がNOとなり、ステップS10において、参加要求ノードの電源が切断されたか否かが判定される。
今回は、参加要求ノードの電源がオンのままであると仮定すると、ステップS10の判定がNOとなり、ステップS4に戻る。通常、参加要求ノードの電源オン中、ステップS4,S5およびS10が繰り返し実行され、それにより、参加要求ノードが他の複数のノード装置から順次、応答メッセージを受信し、その受信した複数の応答メッセージを用いることにより、図8に示すように、参加要求ノード(ノードZ)のためのルーティングテーブルが作成される。
これに対し、今回は、参加要求ノードの電源が切断されたと仮定すると、ステップS10の判定がYESとなり、この参加処理プログラムの実行が終了する。
以上、参加要求ノードが未だ転送完了メッセージを受信していない場合を説明したが、受信した場合には、ステップS5の判定がYESとなり、ステップS6において、その受信された転送完了メッセージから、最終転送先ノード(ルートノード)のノードIDが抽出される。その後、ステップS7において、その抽出されたノードIDが、参加要求ノードの今回ノードIDと一致するか否かが判定される。
今回は、最終転送先ノードのノードIDが参加要求ノードのノードIDと一致しないと仮定すると、ステップS7の判定がNOとなり、ステップS9に移行する。この時点で、参加要求ノードのDHTシステムへの参加が完了したことになる。そのステップS9においては、今回ノードIDが記憶部12のうちの不揮発性メモリに保存される。
その後、ステップS20において、ユーザの操作があったか否かが判定される。操作があった場合には、そのステップS20の判定がYESとなり、ステップS21において、必要な処理が実行された後に、ステップS22に移行するが、操作がなかった場合には、ステップS20の判定がNOとなり、直ちにステップS22に移行する。
そのステップS22においては、メッセージを受信したか否かが判定される。メッセージを受信した場合には、そのステップS22の判定がYESとなり、ステップS23において、必要なメッセージ受信処理が実行された後に、ステップS24に移行するが、メッセージを受信しなかった場合には、ステップS22の判定がNOとなり、直ちにステップS24に移行する。そのステップS24においては、電源がオフにされたか否かが判定される。電源がオフにされた場合には、そのステップS24の判定がYESとなり、この参加処理プログラムの実行が終了するが、電源がオフにされなかった場合には、ステップS24の判定がNOとなり、ステップS20に戻る。
以上、最終転送先ノードのノードIDが参加要求ノードのノードIDと一致しない場合を説明したが、一致する場合には、ステップS7の判定がYESとなり、ステップS11において、参加要求ノードについて新たなノードIDを、同じハッシュ関数を用いて計算するために参照すべき参照情報が記憶部12から取り込まれる。この参照情報は、参加要求ノードの前回ノードIDを計算するために参照された参照情報(図10に示すステップS102参照)とは異なる情報である。
例えば、前回ノードIDを計算するために、参加要求ノードのIPアドレスとMACアドレスと製造番号との組合せが用いられた場合には、今回ノードIDを計算するために、それら情報とは別の情報、例えば、参加要求ノードのコンピュータの時間情報(例えば、現在時刻)が追加的に用いられる。
この例においては、ステップS13において取り込まれる参照情報は、参加要求ノードのIPアドレス、MACアドレスおよび製造番号と、コンピュータの時間情報との組合せである。
なお付言するに、ノードIDを変更するために、前回の参照情報の値に「1」(設定値の一例)に対して加算(演算の一例)を行ったり、前回ノードIDの値にさらに、前記ハッシュ関数と同じものまたは別のハッシュ関数を適用したりしてもよい。
その後、ステップS12において、ステップS11において取り込まれた参照情報に対して前記ハッシュ関数と同じ関数を適用することにより、今回ノードIDが、前回ノードIDとは異なるノードIDとして計算される。続いて、ステップS13において、これまでに作成されたルーティングテーブルが記憶部12において消去される。その後、ステップS2に戻り、新たな参加メッセージの作成およびその参加メッセージのコンタクトノードへの送信が行われる。その新たな参加メッセージは、ステップS12において計算された今回ノードIDを含むように作成される。
図11には、前述の転送処理を行うために制御部11のCPUによって実行されるメッセージ処理プログラムがフローチャートで概念的に表されている。図11のフローチャートは、図9に示すステップS23についての詳細なフローチャートである。
このメッセージ処理プログラムは、各ノード装置1が、前記オーバレイネットワークへの参加完了後に、他のノード装置1からメッセージを受信することに応答して実行される。
このメッセージ処理プログラムの実行時には、まず、ステップS201において、自ノード装置1が他のノード装置1から参加メッセージを受信したか否かが判定される。今回は、自ノード装置1が参加メッセージを未だ受信していないと仮定すると、ステップS201の判定がNOとなり、ステップS202において、受信したメッセージが存在確認メッセージであるか否かが判定される。今回は、存在確認メッセージであると仮定すると、ステップS202の判定がYESとなり、ステップS203において、応答メッセージが作成され、その作成された応答メッセージが参加要求ノードに送信される。これで、このメッセージ処理プログラムの実行が終了して、図9に示すステップS24に移行する。
これに対し、今回は、受信したメッセージが存在確認メッセージではないと仮定すると、ステップS202の判定がNOとなり、ステップS204において、受信したメッセージの種類に応じた処理が実行される。これで、このメッセージ処理プログラムの実行が終了して、図9に示すステップS24に移行する。
これに対し、今回は、自ノード装置1が参加メッセージを受信したと仮定すると、ステップS201の判定がYESとなり、ステップS205において、その受信した参加メッセージから必要な情報を抽出することにより、参加要求ノードのノードIDが特定される。
その後、ステップS206において、存在確認メッセージが作成され、その作成された存在確認メッセージが参加要求ノードに送信される。その存在確認メッセージは、それを発信するノードのノードIDとIPアドレスとを含んでいる。
続いて、ステップS207において、その特定された参加要求ノードのノードIDと、自ノード装置1に記憶されているルーティングテーブル(図8参照)とを照合させることにより、自ノード装置1が参加メッセージを次に転送すべき他のノード装置が存在しないか否か、すなわち、自ノード装置1が参加要求ノードにとってのルートノードであるか否かが判定される。
今回は、自ノード装置1が参加メッセージを次に転送すべき他のノード装置が存在すると仮定すると、ステップS207の判定がNOとなり、その後、ステップS208において、応答メッセージが作成され、その作成された応答メッセージが参加要求ノードに送信される。
続いて、ステップS209において、参加要求ノードのノードIDと、自ノード装置1に記憶されているルーティングテーブル(図8参照)とを照合させることにより、参加メッセージの転送先が決定される。続いて、ステップS210において、その決定された転送先に参加メッセージが自ノード装置1から転送される。以上で、このメッセージ処理プログラムの実行が終了し、続いて、図9に示すステップS24に移行する。
以上、自ノード装置1が参加メッセージを次に転送すべき他のノード装置が存在する場合を説明したが、存在しない場合には、ステップS207の判定がYESとなり、ステップS211に移行する。このステップS211においては、転送完了メッセージが作成される。具体的には、この転送完了メッセージは、参加メッセージの転送が完了したことを表すとともに、参加要求ノードのノードIDとIPアドレスとを含むように作成される。
その後、ステップS212において、その作成された転送完了メッセージが参加要求ノードに送信される。以上で、このメッセージ処理プログラムの実行が終了、続いて、図9に示すステップS24に移行する。
なお付言するに、本実施形態においては、参加要求ノードのノードIDが一旦計算された後にそのノードIDを変更するために、もとのノードIDを参照することなく、そのもとのノードIDを決定するために用いられた情報とは異なる情報を用いて、もとのノードIDとは異なる新たなノードIDが取得される。
この手法の一例によれば、もとのノードIDを決定するために用いられた情報とは別の情報(例えば、コンピュータの時間情報)を追加的にまたは代替的に用いることにより、新たなノードIDが取得される。
ノードIDを変更するために他の手法を採用することが可能である。例えば、もとのノードIDを参照することにより、そのもとのノードIDとは異なる新たなノードIDを取得する手法を採用することが可能である。この手法の一例によれば、もとのノードIDに対して予め定められた演算(例えば、一定値を加算したり減算したり、乗算したり除算したりする)を行うことにより、新たなノードIDが取得される。
以上の説明から明らかなように、本実施形態においては、説明の便宜上、各ノード装置1ごとに、記憶部12が前記(1)項における「記憶手段」の一例を構成し、制御部11のうち図9におけるステップS1を実行する部分が同項における「ノードID決定手段」の一例を構成し、制御部11のうち図9におけるステップS2およびS3を実行する部分が同項における「参加要求情報送信手段」の一例を構成していると考えることが可能である。
さらに、本実施形態においては、説明の便宜上、各ノード装置1ごとに、制御部11のうち図11におけるステップS201ないしS210を実行する部分が前記(1)項における「転送手段」の一例を構成し、制御部11のうち図11におけるステップS207,S211およびS212を実行する部分が同項における「参加要求返信情報送信手段」の一例を構成していると考えることが可能である。
さらに、本実施形態においては、説明の便宜上、各ノード装置1ごとに、制御部11のうち図9におけるステップS7を実行する部分が前記(1)項における「ノードID変更要否判定手段」の一例を構成し、制御部11のうち図9におけるS12を実行する部分が同項における「ノードID変更手段」の一例を構成し、制御部11のうち図9におけるステップS2を実行する部分が同項における「再送手段」の一例を構成していると考えることが可能である。
さらに、本実施形態においては、説明の便宜上、各ノード装置1ごとに、制御部11のうち図9におけるステップS12を実行する部分が前記(4)項における「取得手段」の一例を構成していると考えることが可能である。
さらに、本実施形態においては、説明の便宜上、各ノード装置1ごとに、記憶部12と制御部11のうち図9におけるステップS9を実行する部分とが互いに共同して、前記(8)項における「保存手段」の一例を構成し、制御部11のうち図11におけるステップ101,S104およびS105を実行する部分が同項における「設定手段」の一例を構成していると考えることが可能である。
さらに、本実施形態においては、説明の便宜上、各ノード装置1ごとに、制御部11のうち図11におけるステップS101ないしS103を実行する部分が前記(9)項における「ノードID決定手段」の一例を構成していると考えることが可能である。
さらに、本実施形態においては、説明の便宜上、各ノード装置1ごとに、制御部11のうち図9におけるステップS4のうち、応答メッセージを参加要求ノードに返信する部分を実行する部分が前記(10)項における「参加要求情報対応処理実行手段」の一例を構成していると考えることが可能である。
さらに、本実施形態においては、説明の便宜上、各ノード装置1ごとに、図9に示す参加処理プログラムおよび図11に示すメッセージ処理プログラムが互いに共同して、前記(11)項に係る「プログラム」の一例を構成していると考えることが可能である。
なお付言するに、本実施形態においては、参加要求ノードにおいて、そのノードIDとルートノード(メッセージの転送先がないノード)のノードIDとが互いに一致するか否かが判定され、一致すると判定された場合に、ノードIDの変更(再計算)が行われるようになっている。
これに対し、ルートノードにおいて、そのノードIDと参加要求ノードのノードIDとが互いに一致するか否かが判定され、一致すると判定された場合に、ノードIDの変更を指示するノードID変更指示情報を含む参加要求返信情報が参加要求ノードに転送され、一方、その参加要求ノードにおいて、前記ノードID変更指示情報に応答して、自身のノードIDが変更される態様で本発明を実施することが可能である。
この態様を実現するために、前述の実施形態を例えば、次のように変更すればよい。すなわち、図11におけるステップS207の判定がYESとなると、ルートノードのノードIDと参加要求ノードのノードIDとが互いに一致するか否かを判定し、一致すると判定した場合に、ノードIDの変更を指示するノードID変更指示情報を含む転送完了メッセージを作成し、一致していないと判定した場合に、ノードIDの変更不要を示すノードID変更不要情報を含む転送完了メッセージを作成するように変更すればよい。さらに、図9におけるステップS6を削除し、また、ステップS7を、参加要求ノードが受信した転送完了メッセージにノードID変更指示情報が含まれているか否かを判定するステップに変更すればよい。そのステップにおいて、転送完了メッセージにノードID変更指示情報が含まれていると判定されると、ステップS11へ移行し、一方、含まれてはいないと判定されると、ステップS9に移行する。
以上、本発明の実施形態のうちのいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記[発明の開示]の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
本発明の一実施形態に従う情報通信システムにおけるネットワークの物理的構成と論理的構成とを概念的に表す系統図である。 図2(A),(B)および(C)はそれぞれ、図1に示す情報通信システムにおいて、DHTによるID空間およびルーティングテーブルが作成される様子の一例を説明するための図である。 図3(A)は、レベル1のルーティングテーブルの一例を示す図であり、図3(B)は、レベル2のルーティングテーブルの一例を示す図であり、図3(C)は、レベル3のルーティングテーブルの一例を示す図であり、図3(D)は、完成したルーティングテーブルの一例を示す図である。 図1に示す各ノード装置の概略的なハードウエア構成の一例を概念的に表すブロック図である。 図1に示す情報通信システムにおいて、あるノード装置がオーバレイネットワークに参加するために行われる参加処理を説明するための図である。 図1に示す情報通信システムにおいて、ルーティングテーブルを作成する手法の一例を説明するための図である。 図7(A),(B)および(C)はそれぞれ、図1に示す情報通信システムにおいて、参加要求ノードではない複数のノード装置に記憶されているルーティングテーブルの一例を示す図である。 図1に示す情報通信システムにおいて、参加要求ノードであるノードZが作成するルーティングテーブルの一例を示す図である。 図1に示す各ノード装置のコンピュータによって実行される参加処理プログラムを概念的に表すフローチャートである。 図9におけるステップS1の詳細をノードID計算ルーチンとして概念的に表すフローチャートである。 図1に示す各ノード装置のコンピュータによって実行されるメッセージ処理プログラムを概念的に表すフローチャートである。
符号の説明
1 ノード装置
8 ネットワーク
9 オーバレイネットワーク
11 制御部
12 記憶部
13 バッファメモリ
14 デコーダ部
15 映像処理部
16 表示部
17 音声処理部
18 スピーカ
20 通信部
21 入力部
22 バス
S 情報通信システム

Claims (13)

  1. 複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信システムであって、
    各ノード装置は、
    前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードIDを決定するノードID決定手段と、
    自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードIDとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードIDを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
    前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードIDのうち、前記受信された参加要求情報に含まれるノードIDに近いノードIDを有する他のノード装置に前記参加要求情報を転送する転送手段と、
    前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードIDより自ノード装置のノードIDの方が、前記受信された参加要求情報に含まれるノードIDに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
    受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定するノードID変更要否判定手段と、
    そのノードID変更要否判定手段により自ノード装置のノードIDを変更すると判定された場合に、自ノード装置のノードIDを変更するノードID変更手段と、
    自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
    を含むオーバレイネットワーク型通信システム。
  2. 複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信方法であって、
    前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、各ノード装置が前記オーバレイネットワークに参加した場合に各ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードIDを決定するノードID決定工程と、
    自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードIDとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードIDを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信工程と、
    前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードIDのうち、前記受信された参加要求情報に含まれるノードIDに近いノードIDを有する他のノード装置に前記参加要求情報を転送する転送工程と、
    前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードIDより自ノード装置のノードIDの方が、前記受信された参加要求情報に含まれるノードIDに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信工程と、
    受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定するノードID変更要否判定工程と、
    そのノードID変更要否判定工程により自ノード装置のノードIDを変更すると判定された場合に、自ノード装置のノードIDを変更するノードID変更工程と、
    自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送工程と
    を含むオーバレイネットワーク型通信方法。
  3. 他のノード装置と共に参加することによってオーバレイネットワークを構築し、そのオーバレイネットワーク上で他のノード装置と通信を行うオーバレイネットワーク型ノード装置であって、
    前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードIDを決定するノードID決定手段と、
    自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードIDとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードIDを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
    前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードIDのうち、前記受信された参加要求情報に含まれるノードIDに近いノードIDを有する他のノード装置に前記参加要求情報を転送する転送手段と、
    前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードIDより自ノード装置のノードIDの方が、前記受信された参加要求情報に含まれるノードIDに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
    受信した参加要求返信情報に基づき、自ノード装置のノードIDを変更するか否かを判定するノードID変更要否判定手段と、
    そのノードID変更要否判定手段により自ノード装置のノードIDを変更すると判定された場合に、自ノード装置のノードIDを変更するノードID変更手段と、
    自ノード装置のノードIDが変更された場合に、その変更されたノードIDを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
    を含むオーバレイネットワーク型ノード装置。
  4. 前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、自ノード装置のノードIDを含み、かつ、前記参加要求情報に対応する前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
    前記ノードID変更要否判定手段は、受信した参加要求返信情報に含まれるノードIDが自ノード装置のノードIDと一致する場合に、自ノード装置のノードIDを変更すると判定する手段を含む請求項3に記載のオーバレイネットワーク型ノード装置。
  5. 前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、前記参加要求情報に含まれる参加要求ノード装置のノードIDが自ノード装置のノードIDと一致するか否かを判定し、一致すると判定した場合に、ノードIDの変更を指示するノードID変更指示情報を含む前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
    前記ノードID変更要否判定手段は、受信した参加要求返信情報に前記ノードID変更指示情報が含まれている場合に、自ノード装置のノードIDを変更すると判定する手段を含む請求項3に記載のオーバレイネットワーク型ノード装置。
  6. 前記ノードID変更手段は、前記ノードID決定手段によって決定されたもとのノードIDを参照することなく、そのもとのノードIDを決定するために用いられた前記所定情報および/または前記規則とは異なる情報および/または規則を用いて、前記もとのノードIDとは異なる新たなノードIDを取得する取得手段を含む請求項3ないし5のいずれかに記載のオーバレイネットワーク型ノード装置。
  7. 前記取得手段は、前記もとのノードIDを決定するために用いられた情報とは別の情報を追加的にまたは代替的に用いることにより、前記新たなノードIDを取得する手段を含む請求項6に記載のオーバレイネットワーク型ノード装置。
  8. 前記ノードID変更手段は、前記ノードID決定手段によって決定されたもとのノードIDを参照することにより、そのもとのノードIDとは異なる新たなノードIDを取得する取得手段を含む請求項3ないし5のいずれかに記載のオーバレイネットワーク型ノード装置。
  9. 前記取得手段は、前記もとのノードIDに対して予め定められた演算を行うことにより、前記新たなノードIDを取得する手段を含む請求項8に記載のオーバレイネットワーク型ノード装置。
  10. 前記オーバレイネットワークに参加した際に用いたノードIDを、自ノード装置の電源遮断後にも保存する保存手段と、
    前記オーバレイネットワークに参加しようとする際に、前記保存手段からノードIDを読み出し、その読み出されたノードIDを、自ノード装置がこれから前記オーバレイネットワークに参加するために用いるノードIDの初期値として設定する設定手段と
    を含み、
    前記参加要求情報送信手段は、前記設定手段によって設定されたノードIDを含む前記参加要求情報を前記複数のノード装置のいずれかに送信する請求項3ないし9のいずれかに記載のオーバレイネットワーク型ノード装置。
  11. 前記ノードID決定手段は、前記保存手段にノードIDが保存されていない場合に、前記所定情報に基づき、前記予め定められた規則に従って、ノードIDを決定する請求項10に記載のオーバレイネットワーク型ノード装置。
  12. 自ノード装置が前記参加要求ノード装置ではない状態で前記参加要求情報を受信した場合に、前記参加要求ノード装置が他のノード装置のノードIDと前記通信情報との関係を取得してその関係を前記参加要求ノード装置の前記記憶手段に記憶させることを可能とするために、前記参加要求情報に対応する処理を前記参加要求ノード装置に対して実行する参加要求情報対応処理実行手段を含む請求項3ないし11のいずれかに記載のオーバレイネットワーク型ノード装置。
  13. 請求項3ないし12のいずれかに記載のオーバレイネットワーク型ノード装置を動作させるためにコンピュータによって実行されるプログラム。
JP2007174735A 2007-07-03 2007-07-03 オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム Expired - Fee Related JP4770804B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007174735A JP4770804B2 (ja) 2007-07-03 2007-07-03 オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007174735A JP4770804B2 (ja) 2007-07-03 2007-07-03 オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2009017069A true JP2009017069A (ja) 2009-01-22
JP4770804B2 JP4770804B2 (ja) 2011-09-14

Family

ID=40357441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007174735A Expired - Fee Related JP4770804B2 (ja) 2007-07-03 2007-07-03 オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム

Country Status (1)

Country Link
JP (1) JP4770804B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110271020A1 (en) * 2010-04-29 2011-11-03 Wilson Larry E Node Differentiation in Multi-Node Electronic Systems
JP2012512617A (ja) * 2008-12-22 2012-05-31 クアルコム,インコーポレイテッド ピアツーピア・ネットワークのための分散ハッシュテーブルにおけるセキュリティで保護されたノード識別子割当て

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266796A (ja) * 2002-09-11 2004-09-24 Microsoft Corp 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法
JP2005347969A (ja) * 2004-06-01 2005-12-15 Matsushita Electric Ind Co Ltd パケット転送装置およびパケット転送方法
JP2006319384A (ja) * 2005-05-10 2006-11-24 Brother Ind Ltd ネットワークシステム、接続確立方法、及びノード装置等
JP2007053452A (ja) * 2005-08-16 2007-03-01 Brother Ind Ltd 情報通信システム、情報通信方法、ノード装置、及びコンピュータプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266796A (ja) * 2002-09-11 2004-09-24 Microsoft Corp 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法
JP2005347969A (ja) * 2004-06-01 2005-12-15 Matsushita Electric Ind Co Ltd パケット転送装置およびパケット転送方法
JP2006319384A (ja) * 2005-05-10 2006-11-24 Brother Ind Ltd ネットワークシステム、接続確立方法、及びノード装置等
JP2007053452A (ja) * 2005-08-16 2007-03-01 Brother Ind Ltd 情報通信システム、情報通信方法、ノード装置、及びコンピュータプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012512617A (ja) * 2008-12-22 2012-05-31 クアルコム,インコーポレイテッド ピアツーピア・ネットワークのための分散ハッシュテーブルにおけるセキュリティで保護されたノード識別子割当て
US9344438B2 (en) 2008-12-22 2016-05-17 Qualcomm Incorporated Secure node identifier assignment in a distributed hash table for peer-to-peer networks
US20110271020A1 (en) * 2010-04-29 2011-11-03 Wilson Larry E Node Differentiation in Multi-Node Electronic Systems
US8335879B2 (en) * 2010-04-29 2012-12-18 Hewlett-Packard Development Company, L.P. Node differentiation in multi-node electronic systems

Also Published As

Publication number Publication date
JP4770804B2 (ja) 2011-09-14

Similar Documents

Publication Publication Date Title
JP4375303B2 (ja) 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置、情報処理プログラムおよびノード装置のプログラム
US8321586B2 (en) Distributed storage system, node device, recording medium in which node processing program is recorded, and address information change notifying method
JP2008234445A (ja) コンテンツ分散保存システム、複製データ取得方法、ノード装置、及びノード処理プログラム
JP2008059399A (ja) コンテンツ配信システム、コンテンツ配信システムにおける情報処理方法、端末装置及びそのプログラム
JP2006191489A (ja) ノード装置、ネットワーク参加処理プログラム、及びネットワーク参加処理方法等
US8619631B2 (en) Information communication system, information communication method, node device included in information communication system and recording medium recording information processing program
JP4539603B2 (ja) 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP5136585B2 (ja) 情報通信システム、ノード装置、情報処理方法、及び情報処理プログラム
JP4655986B2 (ja) ノード装置、記憶制御プログラム及び情報記憶方法
US8332463B2 (en) Distributed storage system, connection information notifying method, and recording medium in which distributed storage program is recorded
JP4622755B2 (ja) 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP4770804B2 (ja) オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム
JP4765876B2 (ja) コンテンツ配信システムにおける端末装置及びその情報処理方法並びにプログラム
JP4877107B2 (ja) 情報配信システムにおける端末装置及び情報処理プログラム、並びに端末装置の情報処理方法
JP4692278B2 (ja) コンテンツ配信システム、端末装置及びその情報処理方法並びにそのプログラム
JP4797679B2 (ja) コンテンツ配信システム、コンテンツデータ管理装置及びその情報処理方法並びにそのプログラム
JP2009232272A (ja) コンテンツ分散保存システム、コンテンツ再生方法、ノード装置、管理装置、ノード処理プログラム、及び管理処理プログラム
JP4935734B2 (ja) コンテンツ分散保存システム、ノード装置及びノード処理プログラム並びにノード処理方法
JP4674504B2 (ja) 管理装置、ノード装置、コンテンツ情報管理処理プログラム、確認要求処理プログラム、情報配信システム、及び情報配信方法
JP4947106B2 (ja) 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置、情報処理プログラムおよびノード装置のプログラム
JP2008250571A (ja) 情報通信システムに含まれるノード装置及びその情報処理プログラム
CN105321097A (zh) 使消费者状态与内容中心网络中的兴趣相关联
JP2008242990A (ja) 情報通信システム、情報通信システムに含まれる端末装置及びその情報処理方法並びに情報処理プログラム
JP5007624B2 (ja) コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
JP2010067073A (ja) 保存指示装置、ノード装置、及び保存指示処理プログラム、ノード処理プログラム及び保存指示方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110606

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4770804

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees