以下、本発明の一実施形態について図面を参照して説明する。なお、以下に説明する実施の形態はピアツーピア型の情報通信システムに本発明を適用した場合の実施形態である。
[情報通信システムの概要構成]
まず、図1を参照して、本実施形態における情報通信システムSの概要構成について説明する。図1は、本実施形態の情報通信システムSにおける各ノード装置の接続態様の一例を示す図である。図1に示すように、情報通信システムSは、複数のノード装置Tm−n(m=1,2,3・・・のいずれか、n=1,2,3のいずれか)から構成されている。複数のノード装置Tm−nは、ネットワークNWを介して互いに通信可能である。このネットワークNWは、現実世界の通信ネットワークである。例えば、インターネットである。
このネットワークNWは、各拠点ネットワークNLmを相互接続するためのネットワークである。このネットワークNWは、例えば、インターネットやWAN(Wide Area Network)である。そしてネットワークNWは、例えばIX(Internet Exchange)、IS(Internet Service Provider)、DSL(Disital Subscriber Line)回線事業者の装置、FTTH(Fiber To The Home)回線事業者の装置、及び通信回線等によって構築されている。なお、ネットワークNWは、情報通信システムS専用のネットワークであっても良い。
本実施形態では、ネットワークNW内に、1つ以上の各拠点ネットワークNLmが形成される。また、各拠点ネットワークNLmには、複数のノード装置Tm−n(n=1,2,3・・・のいずれか)が接続されている、各拠点ネットワークNLmは、それぞれ拠点mの敷地内に構築されたネットワークである。拠点としては、例えば、会社、学校、病院、塾等がある。この拠点ネットワークNLmは、例えば、LAN等により構築されている。あるいは、拠点ネットワークNLmは、複数のLANが相互接続して構築されたネットワークであっても良い。この場合、複数のLANは、ルータ等のネットワーク機器を介して接続される。複数のLANが相互接続されたネットワークとしては、例えば、CAN(Campus Area Network)等がある。各拠点ネットワークNLmには、ファイアウォールFWまたはブロードバンドルータBRが接続されている。ファイアウォールFWまたはブロードバンドルータBRが接続されている。ファイアウォールFWまたはブロードバンドルータBRは、拠点内に接続されるノード装置Tm−nと、その拠点に接続されるノード装置Tm−n以外のノード装置Tm−nと、を通信可能にする通信機器である。ファイアウォールFWまたはブロードバンドルータBRは、公知であるので詳細な説明は省略する。ファイアウォールFWまたはブロードバンドルータBRのいずれかが拠点に設置されるかは、拠点ごとに任意に決定される。本実施形態の拠点ネットワークNLmは、例えば、LAN(Local Area Network)である。
また、ネットワークNWには、DNSサーバSVが接続されている。DNSサーバSVは、ドメイン名を解決するDNSサーバである。DNSサーバSVは、クライアントとなるユーザノードからドメイン名の解決の要求を受ける。DNSサーバSVは、ドメイン名の解決の要求として、IPアドレスの問い合わせを受けると、受信したドメイン名に対応して、例えば、コンテンツを保存するノード装置のIP(Internet Protocol)アドレスを返信する。
各ノード装置Tm−nには、固有の製造番号及びIP(Internet Protocol)アドレスが割り当てられている。また、情報通信システムSに接続されている各ノード装置Tm−nには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。本実施形態の情報通信システムSでは,コンテンツ配信のためのオーバーレイネットワークOLが構築されている。オーバーレイネットワークOLは、ネットワークNW上に構築されたオーバーレイネットワークである。言い換えれば、オーバーレイネットワークOLは、物理的なネットワーク上に生成される論理的なネットワークである。また、オーバーレイネットワークOLは、特定のアルゴリズム、例えば、分散ハッシュテーブルを利用したアルゴリズムにより実現される。分散ハッシュテーブルを、以下「DHT(Distributed Hush Table)」という。なお、DHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知である。
本実施形態では、各ノード装置Tm−nがピアツーピア方式で通信を行えるよう、ブロードバンドルータBRやファイアウォールFWにおいてポートフォワーディングの設定が行われる場合がある。例えば、ブロードバンドルータBRであれば、UPnP(Universal Plug and Play)機能等を利用して自動的にポートフォワーディングの設定が行われるようにしておくと良い。以下ノード装置Tm―nを、単にノード装置と呼ぶ。
[オーバーレイネットワークOLへの参加方法について]
各ノード装置は、それぞれDHT(Distributed Hash Table)を用いたルーティングテーブルを保持している。このルーティングテーブルは、情報通信システムS上における制御メッセージの転送先を規定している。制御メッセージは、ピアツーピア型の制御メッセージは、ピアツーピア型の情報通信システムの運用を制御するメッセージである。言い換えれば、制御メッセージは、ピアツーピア型の情報通信システムで、コンテンツの検索又はコンテンツの取得に用いるためのメッセージである。また、制御メッセージは、DHTのルーティングテーブルに従って送受信されるメッセージである。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノード装置のノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。情報通信システムSに接続している1台のノード装置は、必要最低限のノード装置のノード情報をルーティングテーブルとして記憶している。各ノード装置間で互いに制御メッセージが転送されることで、ノード情報を記憶していないノード装置についてのノード情報が取得される。また、制御メッセージが、各ノード装置により送受信されることで、情報通信システムSは、ピアツーピア型の情報通信システムとして動作可能である。
なお情報通信システムSへの接続は、情報通信システムSへ接続していないノード装置が、接続している任意のノード装置に対して参加メッセージを送信することによって行われる。参加メッセージは、情報通信システムSへの参加要求を示すメッセージである。情報通信システムSへの参加とは、ノード装置が情報通信システムSに接続され、情報通信システムSからコンテンツを取得可能になることである。つまり、オーバーレイネットワークOLに参加するとは、DHTを用いたルーティングテーブルに基づいてオーバーレイネットワークOLを介して他のノード装置との間で各種メッセージを送受信できる状態に稼動することをいう。任意のノード装置は、例えば、情報通信システムSに常時接続しているコンタクトノードである。情報通信システムSへ参加するノード装置が、コンタクトノードへ参加メッセージを送信することで、ノード装置は、DHTのルーティングテーブルをコンタクトノードから取得することができる。
複数のノード装置に分散保存されているコンテンツの所在は、インデックス情報として、コンテンツの所在を管理するノード装置に記憶される。一般的に、コンテンツの所在を管理するノードを、「ルートノード」という。なお、本実施形態では、後述において、「ルートノード」を、ノード装置のコンテンツの取得要求数を管理するノードとして用いる場合を説明する。ノード装置が記憶するインデックス情報は、コンテンツを保存したノードのノード情報と、コンテンツのコンテンツIDと等の組を含む。このようなルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードであるように定められる。コンテンツIDと最も近いノードIDとは、例えば、IDの上位桁が最も多く一致するノードIDである。なお、インデックス情報は、本発明における結果情報の一例である。また、インデックス情報に含まれるルータRmのIPアドレスは、本発明における所在情報の一例である。
あるノード装置のユーザが、所望のコンテンツを取得したい場合、ノード装置は、所望されたコンテンツを保存するコンテンツ保持ノード装置をそれぞれ検索する。以下、ユーザによりコンテンツの取得を望むノード装置を、「ユーザノード」という。なお、「ユーザノード」は、オーバーレイネットワークOLに参加してなくても良い。具体的に、ユーザノードは、DNSサーバSVにドメイン名の解決を要求する検索メッセージを送信する。この検索メッセージは、取得を望むコンテンツのコンテンツID及びユーザノードのノード情報を含む。
検索メッセージを受信したDNSサーバSVは、検索メッセージに含まれるコンテンツIDに対応するインデックス情報を、過去に検索した名前解決の検索結果キャッシュから1または複数取得する。取得されたインデックス情報は、ユーザノードのノード情報に基づいて、検索メッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてコンテンツIDに対応するメタ情報ファイルを取得またはダウンロードする。メタ情報ファイルには、コンテンツを検索するためのコンテンツIDが付与される。具体的に、ユーザノードは、インデックス情報に含まれるコンテンツ保持ノード装置のIPアドレス及びポート番号等に基づいて、コンテンツ要求メッセージをコンテンツ保持ノード装置に送信する。コンテンツ要求メッセージには、ユーザノードのノード情報、所望するコンテンツのコンテンツIDが含まれている。コンテンツ保持ノード装置は、コンテンツ要求メッセージを受信すると、コンテンツ要求メッセージに含まれるコンテンツIDに対応するメタ情報ファイルをユーザノードに送信またはアップロードする。
[暇ノード装置管理処理について]
次に図2を用いて、本実施形態の暇ノード装置管理処理について説明する。図2は、本実施形態の暇ノード装置管理処理の一例を示す説明図である。暇ノード装置管理処理は、ルートノードT3−1が行う。ルートノードT3−1は、管理するノード装置が、暇ノード装置であるか否かを判定する。尚、ルートノードT3−1は、所在を記憶するノード装置Tm−nが、ルートノードT3−1が管理するノード装置に対応する。まず、ルートノードT3−1は、管理するノード装置にパブリッシュ指示をする(図2(1))。パブリッシュ指示には、指示の発信元であるルートノードT3−1の所在情報を示すIPアドレスが付加されている。また、パブリッシュ指示は、パブリッシュ指示を受信したノード装置の稼動状況を、管理するルートノードに送信させる指示である。
オーバーレイネットワークOLに参加する各ノード装置は、所定時間ごとに、他のノード装置やユーザノードからのコンテンツの取得要求数を検知可能な構成である。本実施形態では、ルートノードT3−1が、管理する各ノード装置に、他のノード装置やユーザノードから「暇ノード装置」であることを示す情報と、ノード装置のノード情報を、を、パブリッシュメッセージとして送信させる指示をする。
なお、本実施形態においては、他のノード装置から一定時間コンテンツの取得要求がない、または現在、取得要求がされておらず、コンテンツの取得要求数が「0」であるノード装置Tm−nを、ルートノードT3−1にパブリッシュメッセージを送信する「暇ノード装置」と定義して以下を説明する。「暇ノード装置」は、コンテンツの取得要求数が「0」であるノード装置のほか、ルートノードT3−1が管理するノード装置のCPUの負荷や、ルートノードT3−1が管理するノード装置に接続されるネットワークの負荷により判定してもよい。
ルートノードT3−1からパブリッシュ指示を受け取ったノード装置Tm−nは、自身がパブリッシュ可能であるかを判定する。ノード装置Tm−nは、他のノード装置から一定時間コンテンツの取得要求がない、または現在、取得要求がされておらず、「暇ノード装置」であるとき、パブリッシュ可能であると判断する。例えば、図2において、ノード装置T5−1は、自身の取得要求数が「0」でないとき、ルートノードT3−1へパブリッシュメッセージを送信しないと判断し、ルートノードT3−1から受信したパブリッシュ指示を、他のノード装置へ転送する。(図2(2))。すなわち、このときノード装置T5−1は、「暇ノード装置」でない。
一方、ノード装置Tm−nは、ルートノードT3−1、またはノード装置Tm−nからパブリッシュ指示を受信したとき、自身の取得要求数が「0」であれば、パブリッシュ可能であると判断する。ノード装置Tm−nは、ルートノードから発信されたパブリッシュ指示を受信する。そして、ノード装置Tm−nは、「暇ノード装置」であり、パブリッシュ可能であるとき、パブリッシュ指示の発信元であるルートノードのIPアドレス宛へ、パブリッシュメッセージを送信する。例えば、図2において、ノード装置T5−1から転送されたパブリッシュ指示を受信したノード装置T2−1は、コンテンツの取得要求数から、自身が「暇ノード装置」であるかを判定する。ノード装置T5−1は、「暇ノード装置」である場合には、パブリッシュメッセージをルートノードT3−1へ送信する(図2(3))。
ルートノードT3−1は、ノード装置Tm−nから、「暇ノード装置」であることを示すパブリッシュメッセージを受信する。そして、DNSサーバSVに、受信した「暇ノード装置」であるノード装置のノード情報を、「暇ノード装置」を示す情報と共に送信する(図2(4))。例えば、図2において、ルートノードT3−1が、パブリッシュメッセージの発信元であるノード装置T2−1からパブリッシュメッセージを受信した場合は、ノード装置T2−1のノード情報と、「暇ノード装置」であることを示す情報とを、DNSサーバSVに送信する。
DNSサーバSVは、パブリッシュメッセージを受信すると、暇ノード装置のノード情報を、暇ノードリスト記憶領域に記憶する(図2(5))。これにより、図2において、DNSサーバSVは、ルートノードT3−1が管理する各ノード装置のうち、パブリッシュメッセージが送信されたノード装置T2−1を、「暇ノード装置」として管理することができる。
[取得要求集中ノード装置管理処理について]
次に図3を用いて本実施形態の取得要求集中ノード装置管理処理について説明する。図3は、本実施形態の取得要求集中ノード装置管理処理の一例を示す概念図である。図3では、ルートノードT3−1の例を用いて説明する。ルートノードが管理する各ノード装置のそれぞれは、定期的に自身のノード装置が取得要求されている数を確認する。そして、ノード装置は、自身の取得要求数が所定数以上であるとき、「取得要求集中ノード装置」として、「取得要求集中ノード装置」であることを示す情報と共に、ノード情報をルートノードに送信する。「取得要求集中ノード装置」を判断するための取得要求数の閾値は、例えば、「3」以上である。なお、取得要求数の閾値は、ノード装置のコンテンツを送信する能力に応じて変更されてもよい。例えば、図3において、ルートノードT3−1に管理されているノード装置T5−1は、自身の取得要求数が所定数「3」以上のノード装置であるとき、「取得要求集中ノード装置」である。ノード装置T5−1は、「取得要求集中ノード装置」であることを示す情報と、ノード情報とを、ルートノードT3−1に送信する(図3(6))。
なお、このとき、ルートノードT3−1により管理されるノード装置のそれぞれは、「取得要求集中ノード装置」であるノード情報を、ルートノードT3−1に送信せず、DNSサーバSVへ直接送信してもよい。また、ルートノードは、「暇ノード装置」を管理するためのパブリッシュ指示と同様に、管理するノード装置Tm−n宛に、「取得要求集中ノード装置」を管理するためのパブリッシュ指示を送信してもよい。このとき、取得要求数が所定数以上のノード装置が、「取得要求集中ノード装置」を管理するパブリッシュ指示を受信すると、「取得要求集中ノード装置」であるノード情報を、ルートノードに返信する。
ルートノードT3−1は、ノード装置から、「取得要求集中ノード装置」である情報を受信すると、「取得要求集中ノード装置」のノード情報を、DNSサーバSVへ送信する(図3(7))。図3では、ルートノードT3−1は、ノード装置T5−1から受信した「取得要求集中ノード装置」であるノード情報を、DNSサーバSVへ送信する。
なお、ノード装置が「取得要求集中ノード装置」であるかの判断は、各ノード装置Tm−nが行う代わりに、ルートノードが、管理するノード装置の取得要求数を管理することにより、「取得要求集中ノード装置」であるノード装置を判断してもよい。例えば、図3において、「取得要求集中ノード装置」であるノード装置のノード情報を、ルートノードT3−1がDNSサーバSVへ送信する場合には、ルートノードT3−1が、管理するノード装置の取得要求数から、「取得要求集中ノード装置」であるノード装置を判定してもよい。
DNSサーバSVは、送信される「取得要求集中ノード装置」であるノード装置のノード情報を受信する。DNSサーバSVは、ノード装置から受信した「取得要求集中ノード装置」であるノード装置のノード情報を、取得要求集中ノードリスト記憶領域に記憶する処理を行う。図3においては、DNSサーバSVは、ルートノードT3−1から受信した「取得要求集中ノード装置」であるノード装置T5−1のノード情報を、取得要求集中ノードリスト記憶領域に記憶する(図3(8))。
[ユーザノードのコンテンツ要求処理]
次に、図4A及び図4Bを参照して、情報通信システムSにおけるユーザノードへのコンテンツの配信について説明する。図4A及び図4Bは、本実施形態に係る情報通信システムSにおける動作概要の一例を示す図である。図4Aは、ユーザノードが、DNSサーバSVにドメイン解決要求をし、DNSサーバSVからIPアドレスを受信する処理の動作概要を説明する図である。図4Bは、ユーザノードが、DNSサーバSVから受信したIPアドレスが示すノード装置へ、コンテンツを要求し、取得する処理の動作概要を説明する図である。図4Bでは、さらに、ユーザノードからコンテンツの取得が要求されたノード装置のノード情報を、DNSサーバSVの暇ノードリスト記憶領域から削除する処理の動作概要を示す。
まず、ユーザノードは、ユーザによる操作等に基づいて、ダウンロードしようとするコンテンツのURLを取得する。URLを取得したユーザノードは、先ず、ドメイン名を含む名前解決リクエストを、DNSサーバへ送信する(図4A(11))。なお、名前解決リクエストに含まれるドメイン名を、「要求ドメイン名」という。要求ドメイン名は、本発明におけるドメイン情報の一例である。
DNSサーバSVは、ドメイン名と、コンテンツIDを対応付けて登録したドメインリストと、コンテンツIDが示すコンテンツを保持するノード装置のIPアドレスを検索した結果が検索キャッシュとして記憶されたデータベースを保持している。DNSサーバSVは、名前解決リクエストを受信すると、ドメインリストと、検索キャッシュとを用いて、要求ドメイン名に対応するコンテンツ保持ノードを検索する。まず、DNSサーバSVは、ドメインリストに従って、ユーザノードから受信した名前解決リクエストに含まれる要求ドメイン名に対応するコンテンツIDを特定する。そして、検索キャッシュを用いて、要求ドメイン名に対応するコンテンツIDを保持するコンテンツ保持ノードのIPアドレスを特定する。要求ドメイン名に対応するコンテンツIDのコンテンツを保持するコンテンツ保持ノードのIPアドレスが特定されると、ドメイン解決がされる(図4A(12))。
次に、DNSサーバSVは、ユーザノードから名前解決を要求された要求ドメイン名に対応するIPアドレスが示すノード装置が、「取得要求集中ノード装置」であるかを判定する(図4A(13))。DNSサーバSVは、要求ドメイン名に対応するコンテンツIDのコンテンツを保持するノード装置のノード情報が、取得要求集中ノード記憶領域に記憶されたノード情報と一致するかを判定する。要求ドメイン名に対応するコンテンツIDのコンテンツを保持するノード装置のノード情報が、取得要求集中ノード記憶領域に記憶されたノード情報と一致するとき、要求ドメイン名に対応するIPアドレスのノード装置は、「取得要求集中ノード装置」であると判定される。
DNSサーバSVは、要求ドメイン名に対応するコンテンツIDのコンテンツを保持するノード装置のノード情報が、取得要求集中ノードリスト記憶領域に記憶されたノード情報と一致すると判定したとき、取得要求集中ノード装置の代用ノード装置を決定する。代用ノード装置は、暇ノードリスト記憶領域に記憶されたノード情報が示すノード装置から決定される。DNSサーバSVは、暇ノードリスト記憶領域にノード情報が記憶された暇ノード装置を、要求ドメイン名に対応するコンテンツIDを保持するコンテンツ保持ノード装置の代わりにユーザノードに送信するノード装置と決定する(図4A(14))。
一方、DNSサーバSVは、要求ドメイン名に対応するコンテンツIDのコンテンツを保持するノード装置のノード情報が、取得要求集中ノードリスト記憶領域に記憶されたノード情報と一致すると判定しないとき、要求ドメイン名に対応するコンテンツIDのコンテンツを保持するノード装置のIPアドレスを、ユーザノードに送信するIPアドレスと決定する。
DNSサーバSVは、ユーザノードに送信すると決定したIPアドレスを、名前解決リクエストを要求したユーザノードへ送信する。例えば、図4Aにおいて、要求ドメイン名に対応するコンテンツIDのコンテンツを保持するノード装置は、ノード装置T5−1であり、取得要求集中ノード装置であったとする。このとき、DNSサーバSVは、暇ノードリスト記憶領域に記憶されたノード情報に含まれるノード装置T2−1を示すIPアドレスを、代用ノード装置のIPアドレスとして、ユーザノードへ送信する(図4A(15))。ユーザノードは、DNSサーバSVからIPアドレスを受信する。
ユーザノードは、DNSサーバSVから受信したIPアドレスが示すノード装置へ、HTTP(HyperText Transfer Protocol)リクエストであるコンテンツの取得を要求する要求メッセージを送信する。要求メッセージには、ユーザノードが名前解決を要求した要求ドメイン名に対応するコンテンツIDが含まれる。図4Bにおいて、ユーザノードは、DNSサーバから、暇ノード装置であるノード装置T2−1のIPアドレスを受信すると、ノード装置T2−1に要求メッセージを送信する(図4B(16))。
ノード装置T2−1は、ユーザノードからコンテンツの要求を受信すると、コンテンツIDに従って、要求されたコンテンツを保存するノード装置Tm−nに、コンテンツの送信を要求する要求メッセージを転送する(図4(17))。そして、要求メッセージに含まれるコンテンツIDのコンテンツを保存しているノード装置Tm−nは、要求メッセージを受信すると、要求メッセージの転送元であるノード装置T2−1へ、コンテンツを送信する。要求メッセージを転送したノード装置T2−1は、ノード装置Tm−nから、コンテンツを受信する(図4(18))。ノード装置T2−1は、ノード装置Tm−nから受信したコンテンツを、コンテンツデータ一時記憶領域に保存する。
ノード装置T2−1により、ノード装置Tm−nからコンテンツが受信され、保存されると、ユーザノードは、ノード装置T2−1からコンテンツのダウンロードが可能となる。図4Bにおいて、ユーザノードは、ノード装置T2−1に保存された要求ドメイン名に対応するコンテンツIDのコンテンツをダウンロードする(図4(19))。
また、ノード装置T2−1は、ユーザノードから要求メッセージを受信することにより、ユーザノードから、コンテンツの取得要求がされる。即ち、ノード装置T2−1は、ユーザノードから要求メッセージが送信されたとき、他のノード装置やユーザノードから取得要求がされていない「暇ノード装置」ではなくなる。そのため、ノード装置T2−1は、ユーザノードから要求メッセージが送信されたとき(図4B(16))、DNSサーバSVの暇ノードリスト記憶領域から、自身のノード情報を削除させる必要がある。
そこで、図4Bにおいて、ノード装置T2−1は、ユーザノードから要求メッセージを受信した後、ノード装置Tm−nにコンテンツの取得要求をするとともに、DNSサーバSVの暇ノードリスト記憶領域から、ノード装置T2−1のノード情報を削除する指示を示すリトラクトメッセージを、オーバーレイネットワークOLに参加する他のノード装置に送信する(図4B(20))。このとき、リトラクトメッセージは、オーバーレイネットワークOLに参加する他のノード装置を介して、ルートノードT3−1に送信される。尚、ノード装置T2−1から、リトラクトメッセージが直接ルートノードT3−1に送信されてもよい。
そして、ルートノードT3−1は、ノード装置T2−1から送信されたリトラクトメッセージを受信すると、DNSサーバSVにリトラクトメッセージを転送する(図4(21))。
DNSサーバSVは、ユーザノードからコンテンツ要求がされ、新たに「暇ノード装置」ではなくなったノード装置が発信元のリトラクトメッセージを受信すると、暇ノードリスト記憶領域から、リトラクトメッセージの発信元のノード装置のノード情報を削除する。図4Bにおいては、DNSサーバSVは、発信元がノード装置T2−1のリトラクトメッセージを受信する。そして、DNSサーバSVは、暇ノードリスト記憶領域から、リトラクトメッセージの発信元であるノード装置T2−1のノード情報を削除する(図4(22))。これにより、DNSサーバSVの暇ノードリスト記憶領域には、取得要求数が「0」のノード装置のノード情報が管理されることとなる。
次に、図5及び図6を参照して、各装置の構成及び機能について説明する。図5は、DNSサーバSVの概要構成例を示す図である。図6は、ノード装置Tm−nの概要構成例を示す図である。
[ノード装置の電気的構成]
次に、図6を参照して、ノード装置の電気的構成について説明する。図4は、本実施形態のノード装置の電気的構成を示すブロック図である。図4に示すように、本実施形態のノード装置には、ノード装置を制御するCPU1が備えられている。CPU1には、HDD2とRAM3とデコーダ部4と通信部9とがそれぞれ電気的に接続されている。HDD2、RAM3、などの記憶手段とCPU1とは、ノード装置のコンピュータを構成している。CPU1、HDD2、RAM3、デコーダ部4、及び通信部9はバスを介して相互に接続されている。通信部9は、ネットワークNWを通じてノード装置または外部装置と情報の通信制御を行う。なお、ノード装置としては、パーソナルコンピュータ、又はSTB(Set Top Box)等を適用可能である。
HDD2は、プログラム記憶領域21と、ルーティングテーブル記憶領域23と、取得要求ノード数記憶領域24と、インデックス情報記憶領域25とを含む。プログラム記憶領域21は、メイン動作処理プログラム記憶領域22を含む。メイン動作処理プログラム記憶領域22は、メイン動作処理プログラムを記憶する。メイン動作処理プログラムは、ノード装置にメイン動作処理を実行させるプログラムである。ノード装置のメイン動作処理プログラムは、例えば、ネットワークNW上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしても良い。
ルーティングテーブル記憶領域23は、DHTのルーティングテーブルを記憶する。取得要求ノード数記憶領域24は、取得要求ノード数を記憶する。取得要求ノード数は、そのノード装置が、ネットワークNW等を通じて通信している他のノード装置Tm―nや、他のユーザノード等のノード装置の数を記憶する。インデックス情報記憶領域25は、暇ノードであるノード装置を示すノード情報を、インデックス情報として記憶する。
RAM3は、コンテンツデータ一時記憶領域31と、パブリッシュ成功通知一時記憶領域32とを含む。コンテンツデータ一時記憶領域31は、オーバーレイネットワークOLで送受信されるコンテンツデータを一時記憶する。パブリッシュ成功通知一時記憶領域32は、オーバーレイネットワークOLで送受信されるパブリッシュ成功通知を一時記憶する。
デコーダ部4には、映像処理部41と音声処理部42とが電気的に接続される。映像処理部41には、ディスプレイ43が接続される。音声処理部42には、スピーカ44が接続される。
ノード装置は、通信部9を介して要求に応じて送信されてきたコンテンツまたはメタ情報ファイルを受信する受信処理を行う。コンテンツまたはメタ情報ファイルは、例えばパケット化されて送信される。各パケットは、通信部9を通じて受信され、RAM3に一時記憶される。一時記憶されたコンテンツは、RAM3から読み出されてデコーダ部4と、映像処理部41と、音声処理部42と、ディスプレイ6と、スピーカ44とを通じて再生出力される。或いは、RAM3に記憶されたコンテンツは、RAM3から読み出されてHDD2に記憶されても良い。または、コンテンツデータがRAM3を介さず、直接HDD2に記憶されても良い。その後、ユーザからの操作指示にしたがって、HDD2からコンテンツが読み出される。読み出されたコンテンツは、デコーダ部4と、映像処理部41と、音声処理部42と、ディスプレイ6と、スピーカ44とを通じて再生出力される。
[DNSサーバの電気的構成]
DNSサーバSVは、図5に示すように、DNSサーバSVを制御するCPU11、作業用のRAM12、各種データ及びプログラムを記憶するROM13等を備えている。また、DNSサーバSVは、各種データ及び各種プログラム等を記憶保存するためのHD等から構成されたHDD14を備えている。さらに、DNSサーバSVは、ネットワークNW等を通じてノード装置Tm―nや、ユーザノード等との間の情報の通信制御を行うための通信部15を備えている。CPU11には、RAM12、ROM13、HDD14、通信部15はバス16を介して相互に接続されている。ここで、HDD14は、本発明における第1記憶手段及び第2記憶手段の一例である。
HDD部14は、プログラム記憶領域121と、取得要求集中ノードリスト記憶領域123と、暇ノードリスト記憶領域124と、ドメインリスト記憶領域125と、検索結果キャッシュ記憶領域126とを備えている。プログラム記憶領域121は、メイン動作処理プログラム記憶領域122を含む。メイン動作処理プログラム記憶領域122は、メイン動作処理プログラムを記憶する。メイン動作処理プログラムは、DNSサーバSVにメイン動作処理を実行させるプログラムである。取得要求集中ノードリスト記憶領域123は、取得要求集中ノードリストを記憶する。取得要求集中ノードリストとして、所定数以上のノード装置Tm−nやユーザノード等との間で通信を行っているノード装置のIPアドレスを記憶する。暇ノードリスト記憶領域124は、暇ノードリストを記憶する。暇ノードリストとして、ノード装置Tm−nやユーザノードと通信を行っているノード装置のIPアドレスを記憶する。ドメインリスト記憶領域125はドメインリストを記憶する。ドメインリストは、ドメイン名と、コンテンツIDとを対応付けて示す情報である。各ノード装置は、ドメイン名に対応するコンテンツIDを用いることにより、そのドメイン名に対応するノード装置のコンテンツIDと同一のコンテンツIDを保存するコンテンツ保持ノードを検索することができる。検索結果キャッシュ記憶領域126は、検索結果キャッシュを記憶する。検索結果キャッシュとして、要求ドメイン名のドメインIDに対応するインデックス情報の検索結果を記憶する。
[ノード装置のメイン動作]
以上説明した構成からなる本実施形態のノード装置の動作及び作用について、添付図面を参照して説明する。まず、ノード装置の動作及び作用について、添付図面を参照して説明する。図7は、ノード装置におけるメイン動作の処理手順を示すフローチャートである。ノード装置のメイン動作は、電源またはコンセントを介して商用電源などの外部電源とノード装置とが接続されたことにより、遂行される。以下に示す処理は、CPU1により処理される。
本実施形態のノード装置は、主にパブリッシュメッセージ及びリトラクトメッセージの送受信を行う。パブリッシュメッセージは、DNSサーバSVに記憶される暇ノードリスト記憶領域に記憶させるノード情報を含むメッセージである。ノード装置は、取得要求がされていないノード装置であるとき、後述する処理により行われるパブリッシュ指示に応じて、パブリッシュを発信する。リトラクトメッセージは、DNSサーバSVが記憶する暇ノードリスト記憶領域から削除するノード情報を含むメッセージである。パブリッシュメッセージ及びリトラクトメッセージは、ノード装置と、DNSサーバSVとの間で、ルートノードを介して送受信される。ルートノードは、ルーティングテーブルにより管理する各ノード装置から発信されるパブリッシュメッセージ及びリトラクトメッセージに応じて、DNSサーバSVに暇ノードリスト記憶領域のノード情報の記憶及び削除の指示を行う。
ステップS98では、DNSサーバSVから送信されるコンテンツ取得指示を受信したかが判定される。コンテンツ取得指示は、指定されたコンテンツをノード装置に取得させる指示を示す情報である。コンテンツ取得指示を受信したと判定されると(ステップS98:YES)、ステップS99の処理が行われる。コンテンツ取得指示を受信したと判定されないと(ステップS98:NO)、ステップS101の処理が行われる。
ステップS99では、受信したコンテンツ取得指示に応じたコンテンツを、オーバーレイネットワークOLに参加するコンテンツ保持ノード装置から取得する。コンテンツ取得支持を受信したノード装置は、コンテンツ保持ノード装置から直接コンテンツを取得する方法のほか、オーバーレイネットワークOLに参加する複数ノード装置を経由して転送されたコンテンツを取得するものであってもよい。
ステップS100では、コンテンツ保持ノード装置から取得されたコンテンツ取得要求に指定されたコンテンツが、コンテンツデータ一時記憶領域31に記憶される。
ステップS101では、パブリッシュメッセージを受信したかが判定される。パブリッシュメッセージは、オーバーレイネットワークOLに参加する他のノード装置から受信する。パブリッシュメッセージの発信元のノード装置は、自身のノード情報をルートノードのインデックス情報記憶領域に登録するため、パブリッシュメッセージを発信する。オーバーレイネットワークOLに参加するノード装置がパブリッシュメッセージを受信したことが判定されると(ステップS101:YES)、ステップ102の処理が行われる。ノード装置がパブリッシュメッセージを受信したことが判定されないと(ステップS101:NO)、ステップ111の処理が行われる。
ステップS102では、自身がルートノードであるかが判定される。ルートノードであると判定されると(ステップS102:YES)、ステップS103の処理が行われる。ルートノードであると判定されないと(ステップS102:NO)、ステップS106の処理が行われる。
ステップS103では、ルートノードであるノード装置が記憶するインデックス情報が上限値未満であるかが判定される。インデックス情報記憶領域25に記憶されるインデックス情報の量が、上限値未満であると判定されると(ステップS103:YES)、ステップS104の処理が行われる。インデックス情報記憶領域の記憶量が上限値以上であるとき(ステップS103:NO)、ステップS160の処理が行われる。
ステップS104では、インデックス情報記憶領域25に、受信したパブリッシュメッセージに含まれるパブリッシュメッセージの発信元のノード情報を記憶する。
ステップS105では、パブリッシュメッセージの発信元のノード装置に、パブリッシュメッセージ成功通知を送信する。パブリッシュメッセージ成功通知は、受信したパブリッシュメッセージに応じて、インデックス情報記憶領域25に、パブリッシュメッセージの発信元のノード情報が記憶されたことを示す通知である。パブリッシュメッセージ成功通知は、通知の宛先に、パブリッシュメッセージの発信元のノード情報のIPアドレスが設定されている。なお、パブリッシュメッセージ成功通知は、ルートノードからパブリッシュメッセージの発信元のノード装置に直接送信する場合のほか、オーバーレイネットワークOLに参加する他のノード装置へ転送される処理を経て、パブリッシュメッセージの発信元のノード装置に送信されるものであってもよい。ステップS105の処理が行われると、ステップS160の処理が行われる。
ステップS106では、受信したパブリッシュメッセージをオーバーレイネットワークOLに参加する他のノード装置へ転送する。ステップS102において自身がルートノードではないと判定されたノード装置は、ルートノードにパブリッシュメッセージの発信元のノード情報を記憶させるため、受信したパブリッシュメッセージを他のノード装置へ転送する。ステップS106の処理が行われると、ステップS160の処理が行われる。
ステップS111では、リトラクトメッセージを受信したかが判定される。リトラクトメッセージは、オーバーレイネットワークOLに参加する他のノード装置から受信する。リトラクトメッセージの発信元のノード装置は、自身のノード情報をルートノードのインデックス情報記憶領域から削除するため、リトラクトメッセージを発信する。ノード装置がリトラクトメッセージを受信したことが判定されると(ステップS111:YES)、ステップ112の処理が行われる。ノード装置がリトラクトメッセージを受信したことが判定されないと(ステップS111:NO)、ステップ121の処理が行われる。
ステップS112では、自身がルートノードであるかが判定される。ルートノードであると判定されると(ステップS112:YES)、ステップS113の処理が行われる。ルートノードであると判定されないと(ステップS112:NO)、ステップS114の処理が行われる。
ステップS113では、DNSサーバSVに、暇ノードリスト記憶領域からリトラクトメッセージの発信元のノード情報を削除させるリトラクトメッセージを転送する。そして、DNSサーバSVに、暇ノードリスト記憶領域から、受信したリクトラクトメッセージに含まれるリトラクトメッセージの発信元のノード情報を削除させる指示をする。ステップS113の処理が行われると、ステップS160の処理が行われる。
ステップS114では、受信したリトラクトメッセージをオーバーレイネットワークOLに参加する他のノード装置へ転送する。ステップS112において自身がルートノードではないと判定されたノード装置は、ルートノードにリトラクトメッセージの発信元のノード情報を記憶させるため、受信したリトラクトメッセージを他のノード装置へ転送する。ステップS114の処理が行われると、ステップS160の処理が行われる。
ステップS121では、パブリッシュメッセージ成功通知を受信したかが判定される。パブリッシュメッセージ成功通知は、ルートノードまたはオーバーレイネットワークOLに参加する他のノード装置から受信する。ノード装置がパブリッシュメッセージ成功通知を受信したことが判定されると(ステップS121:YES)、ステップ122の処理が行われる。ノード装置がパブリッシュメッセージ成功通知を受信したことが判定されないと(ステップS121:NO)、ステップ131の処理が行われる。
ステップ122では、ノード装置が受信したパブリッシュメッセージ成功通知が、自身のノード装置宛てであるかが判定される。ノード装置は、受信したパブリッシュメッセージ成功通知の宛先に設定されているノード情報のIPアドレスが、自身のIPアドレスと一致するとき、パブリッシュメッセージ成功通知が自身のノード装置宛であると判定する。パブリッシュメッセージ成功通知が、自身のノード装置宛であると判定されると(ステップS122:YES)、ステップS123の処理が行われる。パブリッシュメッセージ成功通知が、自身のノード装置宛であると判定されないと(ステップS122:NO)、ステップS124の処理が行われる。
ステップS123では、受信したパブリッシュメッセージ成功通知が、パブリッシュメッセージ成功通知一時記憶領域32に記憶される。ステップS123の処理が行われると、ステップS160の処理が行われる。
ステップS124では、パブリッシュメッセージ成功通知が、オーバーレイネットワークOLに参加する他のノード装置または宛先に設定されているノード装置に転送される。ステップS124の処理が行われると、ステップS160の処理が行われる。
ステップS131では、パブリッシュメッセージ指示通知を受信したかが判定される。パブリッシュメッセージ指示通知は、ルートノードを発信元として、ルートノードまたはオーバーレイネットワークOLに参加する他のノード装置から受信する。パブリッシュメッセージ指示通知は、後述のようにルートノードが、管理するノード装置にパブリッシュメッセージを送信させる指示を行うものである。また、パブリッシュメッセージ指示通知は、通知する宛先として、パブリッシュメッセージを送信させるノード装置を指定するノード情報を含んでもよい。ノード装置がパブリッシュメッセージ指示通知を受信したことが判定されると(ステップS131:YES)、ステップ132の処理が行われる。ノード装置がパブリッシュメッセージ指示通知を受信したことが判定されないと(ステップS131:NO)、ステップ141の処理が行われる。
ステップ132では、パブリッシュメッセージ指示通知を受信すると、パブリッシュメッセージが送信可能であるかが判定される。ノード装置は、自身が、取得要求がない暇ノードであるとき、パブリッシュメッセージが可能であると判定される。ノード装置がパブリッシュメッセージを送信可能であると判定されると(ステップS132:YES)、ステップ133の処理が行われる。ノード装置がパブリッシュメッセージを送信可能であると判定されないと(ステップS132:NO)、ステップ134の処理が行われる。
ステップS133では、パブリッシュメッセージ指示通知を受けたノード装置が発信元となって、パブリッシュメッセージが送信される。パブリッシュメッセージの送信先は、オーバーレイネットワークOLに参加する他のノード装置やルートノードである。ステップS133の処理が行われると、ステップS160の処理が行われる。
ステップS134では、受信したパブリッシュメッセージ指示通知が、自身のノード装置宛であるか判定される。パブリッシュメッセージ指示通知の宛先に、自身のノード装置のノード情報が含まれているとき、パブリッシュメッセージ指示通知が、自身のノード装置宛であると判定される。パブリッシュメッセージ指示通知が、自身のノード装置宛であると判定されると(ステップS134:YES)、ステップS135の処理が行われる。パブリッシュメッセージ指示通知の宛先に、自身のノード装置のノード情報が含まれておらず、パブリッシュメッセージ指示通知が、自身のノード装置宛であると判定されないと(ステップS134:NO)、ステップS136の処理が行われる。
ステップS135では、オーバーレイネットワークOLに参加しているノード装置のうち、ランダムに選択したいずれかのノード装置へ、パブリッシュメッセージ指示通知が転送される。ステップS135が行われるとき、パブリッシュメッセージ指示通知を受信したが、ステップS132においてパブリッシュメッセージが送信可能でないと判定されている。しかしながら、ステップS134においてパブリッシュメッセージ指示通知が自身のノード装置宛であると判定される。パブリッシュメッセージ指示通知を受信したノード装置は、自身のノード装置がパブリッシュメッセージが送信可能ではないため、他のノード装置にパブリッシュメッセージを送信させるためのパブリッシュメッセージ指示通知を転送する。
ステップ135では、オーバーレイネットワークOLに参加する他のノード装置から、ノード装置がランダムに選択される。パブリッシュメッセージ指示通知の宛先を、設定されている自身のノード装置のノード情報から、ランダムに選択されたノード装置のノード情報へ変更する。そして、宛先が変更されたパブリッシュメッセージ指示通知を、オーバーレイネットワークOLに参加するノード装置へ転送する。ステップS135の処理が行われると、ステップS160の処理が行われる。
ステップS136では、パブリッシュメッセージ指示通知が、宛先に設定されているノード装置に送信するため、オーバーレイネットワークOLに参加する他のノード装置へ転送される。ステップS136の処理が行われると、ステップS160の処理が行われる。
ステップS141では、パブリッシュメッセージ指示を通知するタイミングであるかが判定される。パブリッシュメッセージ指示は、ルートノードにおいて、オーバーレイネットワークOLに参加する他のノード装置から、パブリッシュメッセージ指示を送信させる指示が送信されたとき、若しくは、インデックス情報記憶領域に空き領域があるとき、通知するタイミングであると判定される。パブリッシュメッセージ指示を通知するタイミングであると判定されると(ステップS141:YES)、ステップS142の処理が行われる。パブリッシュメッセージ指示を通知するタイミングであると判定されると(ステップS141:NO)、ステップS151の処理が行われる。
ステップS142では、パブリッシュメッセージ指示通知を、オーバーレイネットワークOLに参加する他のノード装置へ送信する。ステップS142の処理が行われると、ステップS160の処理が行われる。
ステップS151では、リトラクトメッセージのタイミングであるかが判定される。ノード装置において、取得要求ノード数記憶領域24に記憶されたノード数が1以上であるとき、リトラクトメッセージのタイミングであると判定される。リトラクトメッセージのタイミングであると判定されるとき(ステップS151:YES)、ステップS152の処理が行われる。リトラクトメッセージのタイミングであると判定されないとき(ステップS151:NO)、ステップS160の処理が行われる。なお、ステップS151では、ユーザノードまたは、他のノード装置からコンテンツの取得要求がされ、取得要求ノード数記憶領域24に記憶されたノード数が、「1」以上であるとき、リトラクトメッセージのタイミングであると判定される。また、取得要求ノード数記憶領域24に記憶されたノード数が、「1」以上の予め定められた数以上であるとき、リトラクトメッセージのタイミングであると判定されてもよい。
ステップS152では、パブリッシュメッセージ成功通知を受信しているか否かが判定される。パブリッシュメッセージ成功通知一時記憶領域32に、パブリッシュメッセージ成功通知が記憶されているとき、パブリッシュメッセージ成功通知を受信していると判定される。パブリッシュメッセージ成功通知が記憶されていれば、ノード装置とDNSサーバSVとは、オーバーレイネットワークOLにより接続され、通信可能な状態が確立されている状態である。パブリッシュメッセージ成功通知を受信していると判定されるとき(ステップS152:YES)、ステップS153の処理が行われる。パブリッシュメッセージ成功通知を受信していると判定されないとき(ステップS152:NO)、ステップS160の処理が行われる。
ステップS153では、リトラクトメッセージが、ルートノードへ送信される。リトラクトメッセージは、ルートノードのインデックス情報記憶領域に記憶されたノード情報を削除させる指示を示す情報である。取得要求ノード数記憶領域24に1以上のノード数が記憶されたノード装置は、暇ノードではない。そのため、ルートノードのインデックス情報記憶領域25に記憶されるインデックス情報から、自身のノード情報を削除させる通知を示すリトラクトメッセージが行われる。なお、リトラクトメッセージは、宛先がルートノードに設定されていればよい。たとえば、リトラクトメッセージは、発信するノード装置から、ルートノードへ直接送信されるほか、オーバーレイネットワークOLに参加する他のノード装置へ送信され、他のノード装置から転送されて、ルートノードへ送信されるものであってもよい。
また、ステップS153では、ノード装置がコンテンツを他のノード装置Tm−nから取得しているときは、新たにコンテンツを保持したことを示すコンテンツ保持パブリッシュメッセージが、リトラクトメッセージとともに送信される。ユーザノードからコンテンツの取得要求がされたノード装置は、他のノード装置Tm−nからコンテンツを取得し、新たにコンテンツ保持ノード装置となっている。ここで、コンテンツの所在を管理するルートノードは、新たにコンテンツ保持ノード装置となったノード装置から送信されるコンテンツ保持パブリッシュメッセージを受信する。そして、コンテンツの所在を管理するルートノードは、新たにコンテンツ保持ノード装置となったノード装置の所在を、インデックス情報に追加する。これにより、コンテンツの所在を管理するルートノードは、新たにコンテンツ保持ノード装置となったノード装置の所在を管理することができる。
ステップS154では、パブリッシュメッセージ指令がルートノードに送信される。ステップS153においては、リトラクトメッセージがルートノードへ送信される。ルートノードが、リトラクトメッセージを受信すると、インデックス情報記憶領域25からリトラクトメッセージを発信したノード装置のノード情報が削除される。そのため、インデックス情報記憶領域25に、空き領域が発生すると考えられる。そこで、インデックス情報記憶領域25に、暇ノードを示すノード装置のノード情報を新たに記憶させるため、ノード装置は、ルートノードにパブリッシュメッセージ指示通知を発信させるパブリッシュメッセージ指令を行う。ステップS154が行われると、ステップS160の処理が行われる。なお、パブリッシュメッセージ指令を発信するノード装置は、ルートノードへ直接送信するほか、オーバーレイネットワークOLに参加する他のノード装置へ送信し、他のノード装置から転送されて、ルートノードへ送信されるものであってもよい。
ステップS160では、ユーザノードからコンテンツ送信要求を受信したかが判定される。コンテンツ送信要求は、ユーザノードに指定したコンテンツを送信することを要求する情報である。コンテンツ送信要求を受信したと判定されると(ステップS160:YES)、ステップS161の処理が行われる。コンテンツ送信要求を受信したと判定されないと(ステップS160:NO)、ステップS98の処理が行われる。
ステップS161では、受信したコンテンツ送信要求に応じて、コンテンツデータ一時記憶領域31から、コンテンツをユーザノードに送信する。
ステップS162では、電源オフを指示されたか否かが判断される。電源オフを指示されたと判断されると(ステップS162:YES)、ノード装置メイン動作処理が終了される。電源オフを指示されたと判断されないと(ステップS162:NO)、ステップS98の処理が行われる。
[DNSサーバSVのメイン動作]
以下、図8を参照して本実施形態のDNSサーバSVの動作及び作用について説明する。図8は、DNSサーバSVにおけるメイン動作の処理手順を示すフローチャートである。DNSサーバSVのメイン動作は、電源またはコンセントを介して商用電源などの外部電源とノード装置とが接続されたことにより、遂行される。以下に示す処理は、CPU11により処理される。なお、本実施形態のDNSサーバSVは、本発明の情報処理装置の一例である。なお、本発明の情報処理装置として、DNSサーバSV以外の装置が用いられても良い。この場合、オーバーレイネットワークに接続されているノード装置が、本発明の情報処理装置として用いられても良い。
ステップS199では、暇ノードリスト記憶領域124に空き領域があるかが判断される。暇ノードリスト記憶領域124に空き領域があると判断されると(ステップS199:YES)、ステップS200の処理が行われる。暇ノードリスト記憶領域124に空き領域があると判断されないと(ステップS199:NO)、ステップS203の処理が行われる。
ステップS200では、暇ノード装置であることを示す情報を含むノード情報を、オーバーレイネットワークに参加するノード装置Tm−nに要求する。
ステップS201では、ノード装置Tm−nから、暇ノード装置として送信されるノード情報を受信したかが判定される。暇ノード装置であることを示す情報を含むノード情報を受信したと判定されると(ステップS201:YES)、ステップS202の処理が行われる。暇ノード装置であることを示す情報を含むノード情報を受信したと判定されないと(ステップS201:NO)、ステップS203の処理が行われる。
ステップS202では、ノード装置Tm−nから受信した暇ノード装置であることを示す情報を含むノード情報を、暇ノードリスト記憶領域に記憶する。
ステップS203では、ノード装置Tm−nから、取得要求集中ノード装置として送信されるノード情報を受信したかが判定される。取得要求集中ノード装置であることを示す情報を含むノード情報を受信したと判定されると(ステップS203:YES)、ステップS204の処理が行われる。取得要求集中ノード装置であることを示す情報を含むノード情報を受信したと判定されないと(ステップS203:NO)、ステップS205の処理が行われる。
ステップS204では、ノード装置Tm−nから受信した取得要求集中ノード装置であることを示す情報を含むノード情報を、取得要求集中ノードリスト記憶領域に記憶する。
ステップS205では、ユーザノードから、名前解決リクエストを受信したか否かが判定される。名前解決リクエストを受信したと判定された場合には(ステップS205:YES)、ステップS206の処理が行われる。名前解決リクエストを受信したと判定されない場合には(ステップS205:NO)、ステップS218の処理が行われる。
ステップS206では、受信した名前解決リクエストに含まれる要求ドメインのインデックス情報が検索結果キャッシュに記憶されているかが判定される。要求ドメインのインデックス情報が検索結果キャッシュにあると判定されると(ステップS206:YES)、ステップS213の処理が行われる。要求ドメインのインデックス情報が検索結果キャッシュにあると判定されないと(ステップS207:NO)、ステップS207の処理が行われる。
ステップS207では、ドメインリストから、引数として渡されたドメイン名に対応するドメインIDが検索される。
ステップS208では、ドメインIDを検索することができたかが判定される。ドメインIDを検索することができたと判定した場合には(ステップS208:YES)、ステップS209の処理が行われる。ドメインIDを検索することができなかったと判定した場合には(ステップS208:NO)、ステップS211の処理が行われる。
ステップS209では、検索されたドメインIDを含む検索メッセージを送信することにより、コンテンツ保持ノードを検索する。
ステップS210では、コンテンツ保持ノードを検索することができたか否かが判定される。このとき、送信した検索メッセージに応じてルートノードからコンテンツ保持ノードのインデックス情報を受信した場合には、コンテンツ保持ノードを検索することができたと判定される(ステップS210:YES)。この場合、コンテンツ保持ノード検索処理が終了され、処理結果として検索成功が返却される。コンテンツ保持ノードを検索することができたと判定されるとき(ステップS210:YES)、ステップS212の処理が行われる。一方、ルートノードからコンテンツ保持ノードのインデックス情報を受信することができなかった場合には、コンテンツ保持ノードを検索することができなかったと判定する(ステップS210:NO)。この場合、コンテンツ保持ノード検索処理が終了させて、処理結果として検索失敗が返却される。コンテンツ保持ノードを検索することができなかったと判定されるとき(ステップS210:NO)、ステップS211の処理が行われる。
ステップS211では、エラーメッセージがユーザノードに返信される。エラーメッセージは、ドメインIDを検索することができなかったとき(ステップS208:NO)、またはコンテンツ保持ノードを検索することができなかったとき(ステップS210:YES)に返信される。ステップS211の処理が行われると、ステップS218の処理が行われる。
ステップS212では、ユーザノードの名前解決要求に従って検索したドメインIDに対応するコンテンツ保持ノードのインデックス情報が検索結果キャッシュに記憶される。
ステップS213では、ユーザノードの名前解決要求に従って、検索結果キャッシュからドメインIDに対応するコンテンツ保持ノードのIPアドレスが、取得要求先として特定される。IPアドレスは、ユーザノードから受信する名前解決要求のドメイン名から、ドメインリストと検索結果キャッシュとを用いて特定される。
ステップS214では、ステップS213において特定された取得要求先のIPアドレスが、取得要求集中ノードであるかが判定される。具体的には、取得要求集中ノードリストに、特定された取得要求先のIPアドレスと一致するIPアドレスを含むノード情報が記憶されているかが判定される。取得要求先のIPアドレスが、取得要求集中ノードであると判定されると(ステップS214:YES)、ステップS215の処理が行われる。取得要求先のIPアドレスが、取得要求集中ノードであると判定されないと(ステップS214:NO)、ステップS220の処理が行われる。
ステップS215では、取得要求先と特定されたIPアドレスのノード装置の代用ノード装置として、暇ノードリストから或るノード装置のノード情報が選択される。代用ノード装置は、ステップS213において取得要求先と特定されたIPアドレスのノード装置でなく、且つ、暇ノードリストに記憶されたノード情報が示すノード装置である。
ステップS216では、代用ノード装置として選択されたノード情報に従って、代用ノード装置のIPアドレスが、取得要求先とされたノード装置に変わるノード装置としてユーザノードに送信される。また、ステップS216は、ユーザノードに、代用ノード装置のIPアドレスとともに、そのIPアドレスが示す代用ノード装置からコンテンツを受信させる指示を示すコンテンツ要求指示情報を送信する。
ステップS217では、ステップS215において選択された代用ノード装置へ、コンテンツを取得させる指示を送信する。また、代用ノード装置のノード情報は、コンテンツを保持するノード装置として、ドメインリスト記憶領域に追加記憶される。
ステップS218では、リトラクトメッセージを受信したかが判断される。リトラクトメッセージは、DNSサーバSVの暇ノード記憶領域から、ステップ216においてIPアドレスが送信された代用ノードのノード情報を削除する指示を示す情報、または他のノード装置からアクセスがされているノード装置を示すノード情報を削除する指示を示す情報である。リトラクトメッセージは、例えばルートノードから送信される。リトラクトメッセージを受信したと判定されたとき(ステップS218:YES)、ステップS219の処理が行われる。リトラクトメッセージを受信したと判定されないとき(ステップS218:NO)、ステップS221の処理が行われる。
ステップS219では、受信したリトラクトメッセージに含まれるリトラクトメッセージの発信元を示すノード情報が、暇ノードリスト記憶領域から削除される。
ステップS220では、取得要求先のノード装置のIPアドレスが、ユーザノードに送信される。取得要求先のノード装置のIPアドレスは、ステップS214において取得要求集中ノードと判定されなかったノード装置のIPアドレスである。
ステップS221では、管理者からの終了指示があったか否かが判定される。管理者からの終了指示があったと判定されたとき(ステップS221:YES)、DNSサーバSVのメイン動作処理が終了される。管理者からの終了指示があったと判定されないとき(ステップS221:NO)、ステップS199からの処理が繰り返される。
(変形例)
本実施形態においては、DNSサーバSVの暇ノードリスト記憶領域により、暇ノード装置のノード情報が管理され、取得要求集中ノードリスト記憶領域により、取得要求集中ノード装置のノード情報が管理されていたが、これに限らない。例えば、オーバーレイネットワークOLに参加するノード装置のひとつを、暇ノード装置を管理するルートノードと設定し、暇ノード装置を管理するルートノードのインデックス情報より、暇ノード装置の所在情報を管理してもよい。この場合、DNSサーバSVは、暇ノード装置を管理するルートノードのインデックス情報に従って、ユーザノードから名前解決を要求される要求ドメイン名に対応するノード装置のIPアドレスを決定する。また、オーバーレイネットワークOLに参加するノード装置のひとつを、取得要求集中ノード装置を管理するルートノードと設定し、取得要求集中ノード装置を管理するルートノードのインデックス情報より、取得要求集中ノード装置の所在情報を管理してもよい。
(実施形態の構成関係)
本実施形態のCPU11及びステップS201の処理が、取得手段及び取得ステップの一例である。本実施形態において、DNSサーバSVのHDD12の暇ノードリスト記憶領域124が、本発明の第1記憶部の一例であり、暇ノードリスト記憶領域124にノード情報を記憶する処理が本発明及び第1記憶ステップの一例である。本実施形態において、DNSサーバSVのHDD12の取得要求集中ノードリスト記憶領域123が、本発明の第2記憶部の一例であり、取得要求集中ノードリスト記憶領域123にノード情報を記憶する処理が本発明及び第2記憶ステップの一例である。
本実施形態のCPU11及びステップS205の処理が、第1受信手段及び第1受信ステップの一例である。本実施形態のCPU11及びステップS214の処理が、判定手段及び判定ステップの一例である。本実施形態のCPU11及びステップS215の処理が、決定手段及び決定ステップの一例である。本実施形態のCPU11及びステップS216の処理が、第1送信手段及び第1送信ステップの一例である。
本実施形態のCPU11及びステップS217の処理が、取得指示手段の一例である。本実施形態のCPU11及びステップS216の処理が、要求指示手段の一例である。本実施形態のCPU11及びステップS219の処理が、削除手段の一例である。本実施形態のCPU11及びステップS199の処理が、第2判定手段の一例である。本実施形態のCPU11及びステップS200の処理が、要求手段の一例である。本実施形態のCPU11及びステップS212の処理が、制御手段の一例である。
本実施形態のCPU1及びステップS99の処理が、取得手段の一例である。本実施形態のCPU1及びステップS100の処理が、記憶手段の一例である。本実施形態のCPU1及びステップS161の処理が、第3送信手段の一例である。