(57)【特許請求の範囲】
【請求項１】
複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信する情報通信システムであって、
前記複数のノード装置のいずれかの前記ノード装置が、
ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段と、
前記複数のノード装置のいずれかであって、前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段と、
前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信手段と、
前記受信手段により受信された参加メッセージが含む前記プロトコル情報が、前記第１記憶手段により記憶されたルーティングテーブルのプロトコルと一致するかを判定する判定手段と、
前記判定手段により一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、
前記判定手段により一致すると判定されなかったとき、前記参加ノード装置へ、前記第２記憶手段に記憶された前記第１ノード装置の前記所在情報を送信する送信手段と、
を備えることを特徴とする情報通信システム。
【請求項２】
前記参加ノード装置は、
前記送信手段により送信された前記第１ノード装置の前記所在情報を取得する第１取得手段と、
前記第１取得手段により取得された前記所在情報が示す前記第１ノード装置へ、前記参加ノード装置で通信可能なプロトコルを用いてセッションを生成する第１生成手段と、
を備え、
前記第１ノード装置は、
前記第１生成手段によりセッションを生成された前記参加ノード装置から、所定の前記データの要求を受信する要求受信手段と、
前記要求受信手段により要求された前記データを、前記オーバーレイネットワークに接続されるノード装置のいずれかから取得する第２取得手段と、
前記第２取得手段により取得された前記データを、前記参加ノード装置へ中継する中継手段と、
を備えることを特徴とする請求項１に記載の情報通信システム。
【請求項３】
前記参加ノード装置は、
前記データを記憶する第３記憶手段と、
前記第３記憶手段に記憶されたデータを、前記オーバーレイネットワークで公開する公開手段と、
前記公開手段により前記データを公開する前に、前記公開手段により公開される前記データを、前記オーバーレイネットワークを用いて検索する検索手段と、
を備え、
前記検索手段により前記公開されるデータが検索されなかったとき、前記公開手段は、前記データを公開することを特徴とする請求項２に記載の情報通信システム。
【請求項４】
前記受信手段により受信された前記参加メッセージが含む前記プロトコル情報が、ＩＰｖ４とＩＰｖ６との両方で通信可能なことを示す場合、前記第２記憶手段は、前記参加ノード装置を前記第１ノード装置として、前記参加ノード装置の前記所在情報を記憶することを特徴とする請求項１から請求項３のいずれか一項に記載の情報通信システム。
【請求項５】
複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信する情報通信システムが含む前記複数のノード装置のいずれかの前記ノード装置であって、
ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段と、
前記複数のノード装置のいずれかであって、前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段と、
前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信手段と、
前記受信手段により受信された参加メッセージが含む前記プロトコル情報が、前記第１記憶手段により記憶されたルーティングテーブルのプロトコルと一致するかを判定する判定手段と、
前記判定手段により一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、
前記判定手段により一致すると判定されなかったとき、前記参加ノード装置へ、前記第２記憶手段に記憶された前記第１ノード装置の前記所在情報を送信する送信手段と、
を備えることを特徴とするノード装置。
【請求項６】
複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信し、前記複数のノード装置のいずれかの前記ノード装置により実行される情報通信方法であって、
前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信ステップと、
ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段により記憶されたルーティングテーブルのプロトコルと、前記受信ステップにより受信された参加メッセージが含む前記プロトコル情報とが一致するかを判定する判定ステップと、
前記判定ステップにより一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、
前記判定ステップにより一致すると判定されなかったとき、前記複数のノード装置のいずれかであって前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段に記憶された前記第１ノード装置の前記所在情報を、前記参加ノード装置へ送信する送信ステップと、
を含む情報通信方法。
【請求項７】
複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信し、前記複数のノード装置のいずれかの前記ノード装置のコンピュータに、
前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信ステップと、
ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段により記憶されたルーティングテーブルのプロトコルと、前記受信ステップにより受信された参加メッセージが含む前記プロトコル情報とが一致するかを判定する判定ステップと、
前記判定ステップにより一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、
前記判定ステップにより一致すると判定されなかったとき、前記複数のノード装置のいずれかであって前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段に記憶された前記第１ノード装置の前記所在情報を、前記参加ノード装置へ送信する送信ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））方式の通信システムの技術分野に関する。
【背景技術】
【０００２】
近年、特許文献１に開示されているようなピアツーピア方式の通信システムが注目されている。ピアツーピア方式の通信システムは、現在のコンテンツ配信における主流形態であるサーバクライアント方式に変わる新しい形態として注目されている。このピアツーピア方式の通信システムでは、センターのサーバ装置に対するコンテンツの要求が集中しない。そのため、サーバクライアント方式に比して、短時間でコンテンツを取得することが可能となる。具体的には、特許文献１には、ソフトウェアを単位としたグループごとに、複数のＤＨＴ（Distributed Hash Table）ルーティングテーブルが生成される技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２１７１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ４）のアドレス資源の枯渇に伴い、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ６）への移行が進みつつある。ＩＰｖ４からＩＰｖ６へ移行する過程において、ＩＰｖ４とＩＰｖ６との両方のプロトコルが、ネットワークに共存することが考えられる。ＩＰｖ４とＩＰｖ６とが共存するネットワーク環境でＰ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）型のシステムが動作する場合、Ｐ２Ｐシステムに接続するノード装置に、夫々異なるプロトコルが割り当てられる。例えば、あるノード装置ＡにＩＰｖ４が割り当てられ、ノード装置Ａと異なるノード装置ＢにＩＰｖ６が割り当てられる。この場合、ノード装置Ａとノード装置ＢとがＰ２Ｐによりデータ通信を行うと、プロトコルが異なるため通信できず、Ｐ２Ｐシステムを動作させることができなかった。
【０００５】
本発明は、以上の点に鑑みてなされたものである。本発明は、ＩＰｖ４とＩＰｖ６とが共存するネットワーク環境であっても、Ｐ２Ｐシステムを動作させることが可能な情報通信システム、ノード装置、情報通信方法及びプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
請求項１に記載の発明によれば、複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信する情報通信システムであって、前記複数のノード装置のいずれかの前記ノード装置が、ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段と、前記複数のノード装置のいずれかであって、前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段と、前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信手段と、前記情報通信システムに参加する参加ノード装置から、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信手段と、前記受信手段により受信された参加メッセージが含む前記プロトコル情報が、前記第１記憶手段により記憶されたルーティングテーブルのプロトコルと一致するかを判定する判定手段と、前記判定手段により一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、前記判定手段により一致すると判定されなかったとき、前記参加ノード装置へ、前記第２記憶手段に記憶された前記第１ノード装置の前記所在情報を送信する送信手段と、を備えることを特徴とする情報通信システムである。
【０００７】
請求項２に記載の発明によれば、前記参加ノード装置は、前記送信手段により送信された前記第１ノード装置の前記所在情報を取得する第１取得手段と、前記第１取得手段により取得された前記所在情報が示す前記第１ノード装置へ、前記参加ノード装置で通信可能なプロトコルを用いてセッションを生成する第１生成手段と、を備え、前記第１ノード装置は、前記第１生成手段によりセッションを生成された前記参加ノード装置から、所定の前記データの要求を受信する要求受信手段と、前記要求受信手段により要求された前記データを、前記第２記憶手段が記憶する前記オーバーレイネットワークへ要求する第２要求手段と、前記第２要求手段により要求された前記データを、前記オーバーレイネットワークに接続するノード装置のいずれかから取得する第２取得手段と、前記データ取得手段により取得された前記データを、前記参加ノード装置へ中継する中継手段と、を備えることを特徴とする。
【０００８】
請求項３に記載の発明によれば、前記参加ノード装置は、前記データを記憶する第３記憶手段と、前記第３記憶手段に記憶されたデータを、前記オーバーレイネットワークで公開する公開手段と、前記公開手段により前記データを公開する前に、前記公開手段により公開される前記データを、前記オーバーレイネットワークを用いて検索する検索手段と、
を備え、前記検索手段により前記公開されるデータが検索されなかったとき、前記公開手段は、前記データを公開することを特徴とする。
【０００９】
請求項４に記載の発明によれば、前記受信手段により受信された前記参加メッセージが含む前記プロトコル情報が、ＩＰｖ４とＩＰｖ６との両方で通信可能なことを示す場合、前記第２記憶手段は、前記参加ノード装置を前記第１ノード装置として、前記参加ノード装置の前記所在情報を記憶することを特徴とする。
【００１０】
請求項５に記載の発明によれば、複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信する情報通信システムが含む前記複数のノード装置のいずれかの前記ノード装置であって、ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段と、前記複数のノード装置のいずれかであって、前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段と、前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信手段と、前記情報通信システムに参加する参加ノード装置から、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信手段と、前記受信手段により受信された参加メッセージが含む前記プロトコル情報が、前記第１記憶手段により記憶されたルーティングテーブルのプロトコルと一致するかを判定する判定手段と、前記判定手段により一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、前記判定手段により一致すると判定されなかったとき、前記参加ノード装置へ、前記第２記憶手段に記憶された前記第１ノード装置の前記所在情報を送信する送信手段と、を備えることを特徴とするノード装置である。
【００１１】
請求項６に記載の発明によれば、複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信し、前記複数のノード装置のいずれかの前記ノード装置により実行される情報通信方法であって、前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信ステップと、ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段により記憶されたルーティングテーブルのプロトコルと、前記受信ステップにより受信された参加メッセージが含む前記プロトコル情報とが一致するかを判定する判定ステップと、前記判定ステップにより一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、前記判定ステップにより一致すると判定されなかったとき、前記複数のノード装置のいずれかであって前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段に記憶された前記第１ノード装置の前記所在情報を、前記参加ノード装置へ送信する送信ステップと、を含む情報通信方法である。
【００１２】
請求項７に記載の発明によれば、複数のノード装置により構成されるオーバーレイネットワークにより、分散して保存される複数のデータを送受信し、前記複数のノード装置のいずれかの前記ノード装置のコンピュータに、前記情報通信システムに参加する参加ノード装置から送信され、前記情報通信システムへの参加を示す参加メッセージであって、前記参加ノード装置が通信可能なプロトコルであるＩＰｖ４またはＩＰｖ６を示すプロトコル情報を含む前記参加メッセージを受信する受信ステップと、ＩＰｖ４で通信可能なノード装置の少なくとも一部のノード装置により構成される第１オーバーレイネットワークであって、前記第１オーバーレイネットワークに参加するノード装置の前記ネットワーク上での所在を示す所在情報が登録された第１ルーティングテーブル、または、ＩＰｖ６で通信可能なノード装置の少なくとも一部のノード装置により構成される第２オーバーレイネットワークであって、前記第２オーバーレイネットワークに参加するノード装置の前記所在情報が登録された第２ルーティングテーブルのいずれかのルーティングテーブルを記憶する第１記憶手段により記憶されたルーティングテーブルのプロトコルと、前記受信ステップにより受信された参加メッセージが含む前記プロトコル情報とが一致するかを判定する判定ステップと、前記判定ステップにより一致すると判定されたとき、前記参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信し、前記判定ステップにより一致すると判定されなかったとき、前記複数のノード装置のいずれかであって前記ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段に記憶された前記第１ノード装置の前記所在情報を、前記参加ノード装置へ送信する送信ステップと、を実行させることを特徴とするプログラムである。
【発明の効果】
【００１３】
請求項１に記載の発明によれば、判定手段は、受信手段により受信された参加メッセージが含むプロトコル情報が、第１記憶手段により記憶されたルーティングテーブルのプロトコルと一致するかを判定する。判定手段により一致すると判定されたとき、参加ノード装置へ、送信手段は、一致すると判定されたルーティングテーブルの少なくとも一部を送信する。そして、判定手段により一致すると判定されなかったとき、送信手段は、参加ノード装置へ、第２記憶手段に記憶された第１ノード装置の所在情報を送信する。従って、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致した場合、参加ノード装置は取得したルーティングテーブルでオーバーレイネットワークを用いて参加することができる。また、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致しなかった場合、ＩＰｖ４またはＩＰｖ６との両方で通信可能なノード装置の所在情報を取得することができる。この結果、ＩＰｖ４とＩＰｖ６のいずれかでしか通信できないノード装置であっても、ＩＰｖ４とＩＰｖ６とが共存するネットワーク環境で２Ｐシステムを動作させることが可能になる。
【００１４】
請求項２に記載の発明によれば、第１ノード装置は、第２要求手段により要求されたデータを、オーバーレイネットワークに接続するノード装置のいずれかから取得する第２取得手段を備える。また。第１ノード装置は、データ取得手段により取得されたデータを、参加ノード装置へ中継する中継手段を備える。従って、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致しなかった場合であっても、ＩＰｖ４またはＩＰｖ６との両方で通信可能なノード装置とセッションを生成して、通信を行うことができる。この結果、ＩＰｖ４とＩＰｖ６との両方で通信可能なノード装置が、ＩＰｖ４とＩＰｖ６のいずれかでしか通信できないノード装置にデータを中継することができる。そのため、ＩＰｖ４とＩＰｖ６とが共存するネットワーク環境で２Ｐシステムを動作させることが可能になる。
【００１５】
参加ノード装置は、ＩＰｖ４またはＩＰｖ６の何れかでしか通信できないノード装置である場合がある。そのため、参加ノード装置へデータを中継する必要がある。データを安定的に通信するために、参加ノード装置はできる限り、データのアップロードを控えた方が良い。請求項３に記載の発明によれば、参加ノード装置は、第３記憶手段に記憶されたデータを、オーバーレイネットワークで公開する公開手段を備える。また、検索手段により公開されるデータが検索されなかったとき、公開手段は、データを公開する。この結果、検索手段によりデータが検索できなかった場合に、データを公開するため、参加ノード装置は、できる限りデータのアップロードを控え、中継処理の発生を防ぎ、効率良く通信することができる。
【００１６】
請求項４に記載の発明によれば、受信手段により受信された参加メッセージが含むプロトコル情報が、ＩＰｖ４とＩＰｖ６との両方で通信可能なことを示す場合、第２記憶手段は、参加ノード装置を第１ノード装置として、参加ノード装置の所在情報を記憶する。この結果、ノード装置が情報通信システムに参加する時に、ＩＰｖ４とＩＰｖ６との両方で通信可能なノード装置を知ることができる。
【００１７】
請求項５に記載の発明によれば、判定手段は、受信手段により受信された参加メッセージが含むプロトコル情報が、第１記憶手段により記憶されたルーティングテーブルのプロトコルと一致するかを判定する。判定手段により一致すると判定されたとき、参加ノード装置へ、送信手段は、一致すると判定されたルーティングテーブルの少なくとも一部を送信する。そして、判定手段により一致すると判定されなかったとき、送信手段は、参加ノード装置へ、第２記憶手段に記憶された第１ノード装置の所在情報を送信する。従って、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致した場合、参加ノード装置は取得したルーティングテーブルでオーバーレイネットワークを用いて参加することができる。また、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致しなかった場合、ＩＰｖ４またはＩＰｖ６との両方で通信可能なノード装置の所在情報を取得することができる。この結果、ＩＰｖ４とＩＰｖ６のいずれかでしか通信できないノード装置であっても、ＩＰｖ４とＩＰｖ６とが共存するネットワーク環境で２Ｐシステムを動作させることが可能になる。
【００１８】
請求項６に記載の発明によれば、送信ステップは、判定ステップにより一致すると判定されたとき、参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信する。また、送信ステップは、判定ステップにより一致すると判定されなかったとき、複数のノード装置のいずれかであって、ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段に記憶された第１ノード装置の所在情報を、参加ノード装置へ送信する。従って、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致した場合、参加ノード装置は取得したルーティングテーブルでオーバーレイネットワークを用いて参加することができる。また、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致しなかった場合、ＩＰｖ４またはＩＰｖ６との両方で通信可能なノード装置の所在情報を取得することができる。この結果、ＩＰｖ４とＩＰｖ６のいずれかでしか通信できないノード装置であっても、ＩＰｖ４とＩＰｖ６とが共存するネットワーク環境で２Ｐシステムを動作させることが可能になる。
【００１９】
請求項７に記載の発明によれば、送信ステップは、判定ステップにより一致すると判定されたとき、参加ノード装置へ、一致すると判定されたルーティングテーブルの少なくとも一部を送信する。また、送信ステップは、判定ステップにより一致すると判定されなかったとき、複数のノード装置のいずれかであって、ノード装置が通信可能なプロトコルであるＩＰｖ４とＩＰｖ６との両方で通信可能な第１ノード装置のネットワークにおける所在を示す所在情報を記憶する第２記憶手段に記憶された第１ノード装置の所在情報を、参加ノード装置へ送信する。従って、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致した場合、参加ノード装置は取得したルーティングテーブルでオーバーレイネットワークを用いて参加することができる。また、ルーティングテーブルで通信可能なプロトコルと、参加ノード装置のプロトコルとが一致しなかった場合、ＩＰｖ４またはＩＰｖ６との両方で通信可能なノード装置の所在情報を取得することができる。この結果、ＩＰｖ４とＩＰｖ６のいずれかでしか通信できないノード装置であっても、ＩＰｖ４とＩＰｖ６とが共存するネットワーク環境で２Ｐシステムを動作させることが可能になる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態における情報通信システムＳにおける各ノード装置Ｔｍ−ｎの接続態様の一例を示す図である。
【図２】参加ノード装置Ａ及び参加ノード装置Ｂの参加処理の説明を示す説明図である。
【図３】参加ノード装置Ｃの参加処理の説明を示す説明図である。
【図４】本実施形態のコンタクトノードの電気的構成を示すブロック図である。
【図５】本実施形態のノード装置及び第１ノード装置の電気的構成を示すブロック図である。
【図６】コンタクトノードにおけるコンタクトノードメイン動作の処理手順を示すフローチャートである。
【図７】ノード装置及び第１ノード装置におけるノード装置メイン動作の処理手順を示すフローチャートである。
【図８】参加メッセージ処理の処理手順を示すフローチャートである。
【図９】パブリッシュ処理の処理手順を示すフローチャートである。
【発明を実施するための最良の形態】
【００２１】
［最良の実施形態］
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、ピアツーピア型の情報通信システムに本発明を適用した場合の実施形態である。
【００２２】
［情報通信システムの概要構成］
始めに、図１を参照して、本実施形態における情報通信システムＳの概要構成について説明する。図１は、本実施形態における情報通信システムＳにおける各ノード装置の接続態様の一例を示す図である。
【００２３】
図１に示すように、情報通信システムＳは、複数のノード装置Ｔｍ−ｎ（ｎ＝１，２，３・・・の何れか）から構成されている。複数のノード装置Ｔｍ−ｎは、ネットワークＮＷを介して互いに通信可能である。このネットワークＮＷは、現実世界の通信ネットワークである。例えば、インターネットである。
【００２４】
ネットワークＮＷは、各拠点ネットワークＮＬｍ（ｍ＝１，２，３・・・の何れか）を相互接続するためのネットワークである。このネットワークＮＷは、例えば、インターネットやＷＡＮ（Wide Area Network）等である。そして、ネットワークＮＷは、例えば、
ＩＸ（Internet Exchange）、ＩＳＰ（Internet Service Provider）、ＤＳＬ（Digital Subscriber Line）回線事業者の装置、ＦＴＴＨ（Fiber To The Home）回線事業者の装置、及び通信回線等によって構築されている。なお、ネットワークＮＷは、情報通信システムＳ専用のネットワークであっても良い。
【００２５】
本実施形態では、ネットワークＮＷ内に、１つ以上の各拠点ネットワークＮＬｍが形成される。また、各拠点ネットワークＮＬｍには、複数のノード装置Ｔｍ−ｎ（ｎ＝１，２，３・・・の何れか）が接続されている。各拠点ネットワークＮＬｍは、夫々拠点ｍの敷地内に構築されたネットワークである。拠点としては、例えば、会社、学校、病院、塾、カラオケボックス等がある。この拠点ネットワークＮＬｍは、例えば、ＬＡＮ等により構築されている。或いは、拠点ネットワークＮＬｍは、複数のＬＡＮが相互接続して構築されたネットワークであっても良い。この場合、複数のＬＡＮは、ルータ等のネットワーク機器を介して接続される。複数のＬＡＮが相互接続されたネットワークとしては、例えば、ＣＡＮ（Campus Area Network）等がある。各拠点ネットワークＮＬｍには、ファイアウォールＦＷ又はブロードバンドルータＢＲが接続されている。ファイアウォールＦＷ又はブロードバンドルータＢＲは、拠点内に接続されるノード装置Ｔｍ−ｎと、その拠点に接続されるノード装置Ｔｍ−ｎ以外のノード装置Ｔｍ−ｎとを通信可能にする通信機器である。ファイアウォールＦＷ又はブロードバンドルータＢＲは、公知であるので詳細な説明は省略する。ファイアウォールＦＷ又はブロードバンドルータＢＲの何れが拠点に設置されるかは、拠点毎に任意に決定される。本実施形態の拠点ネットワークＮＬｍは、例えば、ＬＡＮ（Local Area Network）である。
【００２６】
また、ネットワークＮＷには、センターサーバと投入サーバとが接続されている。センターサーバと投入サーバとは特に図示していない。センターサーバは、後述するオーバーレイネットワークＯＬで送受信されるコンテンツデータのオリジナルを記憶する。また、センターサーバは、コンテンツカタログ情報をノード装置Ｔｍ−ｎに送信する。コンテンツカタログ情報の詳細については後述する。投入サーバは、後述するオーバーレイネットワークＯＬにコンテンツデータを投入するサーバ装置である。ここで、コンテンツデータの投入とは、コンテンツデータをノード装置Ｔｍ−ｎから取得可能な状態におくことをいう。なお、コンテンツデータを、「コンテンツ」という。
【００２７】
各ノード装置Ｔｍ−ｎには、固有の製造番号及びＩＰ（Internet Protocol）アドレスが割り当てられている。本実施形態では、ノード装置Ｔｍ−ｎは、ＩＰｖ４のみで通信可能なノード装置と、ＩＰｖ６のみで通信可能なノード装置と、ＩＰｖ４とＩＰｖ６との双方で通信可能なノード装置とが存在する。
【００２８】
また、情報通信システムＳに接続されている各ノード装置Ｔｍ−ｎには、所定桁数からなる固有の識別情報であるノードＩＤが割り当てられている。本実施形態の情報通信システムＳでは、コンテンツ配信のためのオーバーレイネットワークＯＬが構築されている。オーバーレイネットワークＯＬは、ネットワークＮＷ上に構築されたオーバーレイネットワークである。言い換えれば、オーバーレイネットワークＯＬは、物理的なネットワーク上に生成される論理的なネットワークである。また、オーバーレイネットワークＯＬは、特定のアルゴリズム、例えば、分散ハッシュテーブルを利用したアルゴリズムにより実現される。分散ハッシュテーブルを、以下、「ＤＨＴ（Distributed Hash Table）」という。なお、ＤＨＴを用いたルーティングテーブルについては、特開２００６−１９７４００号公報等で公知である。
【００２９】
本実施形態では、各ノード装置Ｔｍ−ｎがピアツーピア方式で通信を行えるよう、ブロードバンドルータＢＲやファイアウォールＦＷにおいてポートフォワーディングの設定が行われる場合がある。例えば、ブロードバンドルータＢＲであれば、ＵＰｎＰ（Universal Plug and Play）機能等を利用して自動的にポートフォワーディングの設定が行われるようにしておくと良い。以下ノード装置Ｔｍ−ｎを、単にノード装置と呼ぶ。
【００３０】
［オーバーレイネットワークＯＬへの参加方法について］
オーバーレイに参加するノード装置は、夫々、ＤＨＴを用いたルーティングテーブルを記憶している。このルーティングテーブルは、情報通信システムＳ上における各種制御メッセージの転送先を規定している。制御メッセージは、Ｐ２Ｐの情報通信システムの運用を制御するメッセージである。言い換えれば、制御メッセージは、Ｐ２Ｐの情報通信システムで、コンテンツの検索又はコンテンツの取得に用いるためのメッセージである。また、制御メッセージは、ＤＨＴのルーティングテーブルに従って送受信されるメッセージである。具体的に、このルーティングテーブルには、ＩＤ空間内で適度に離れたノード装置のノードＩＤ、ＩＰアドレス及びポート番号を含むノード情報が複数登録されている。情報通信システムＳに接続している１台のノード装置は、必要最低限のノード装置のノード情報をルーティングテーブルとして記憶している。各ノード装置間で互いに制御メッセージが転送されることで、ノード情報を記憶していないノード装置についてのノード情報が取得される。また、制御メッセージが、各ノード装置により送受信されることで、情報通信システムＳは、ピアツーピア型の情報通信システムとして動作可能である。
【００３１】
本実施形態では、ＩＰｖ４で通信可能なノード装置の参加により、オーバーレイネットワークＯＬは形成される。そのため、ＩＰｖ６のみで通信可能なノード装置は、オーバーレイネットワークＯＬに参加することができない。本実施形態では、ＩＰｖ４で通信可能なノード装置でオーバーレイネットワークＯＬが形成されたが、これに限定されるものではない。例えば、ＩＰｖ６で通信可能なノード装置により、オーバーレイネットワークＯＬが形成されても良い。この場合、ＩＰｖ４のみで通信可能なノード装置は、オーバーレイネットワークＯＬに参加することができない。また、情報通信システムＳに参加するノード装置の中で、ＩＰｖ４よりもＩＰｖ６が付与されたノード装置が多い場合、ＩＰｖ６で通信可能なノード装置によりオーバーレイネットワークＯＬが形成されても良い。また、情報通信システムＳに参加するノード装置の中で、ＩＰｖ６よりもＩＰｖ４が付与されたノード装置が多い場合、ＩＰｖ４で通信可能なノード装置によりオーバーレイネットワークＯＬが形成されても良い。
【００３２】
なお情報通信システムＳへの接続は、情報通信システムＳへ接続していないノード装置が、接続している任意のノード装置に対して情報通信システムＳへの参加要求を示す参加メッセージを送信することによって行われる。情報通信システムＳへの参加とは、ノード装置が情報通信システムＳに接続され、情報通信システムＳからコンテンツデータを取得可能になることである。任意のノード装置は、例えば、情報通信システムＳに常時接続しているコンタクトノードである。情報通信システムＳへ参加するノード装置が、コンタクトノードへ参加メッセージを送信することで、ノード装置は、ＤＨＴのルーティングテーブルをコンタクトノードから取得することができる。以下、本実施形態の参加処理の概要について説明する。
【００３３】
［参加処理の概要について］
図２及び図３は、本実施形態の参加処理を説明する説明図である。本実施形態では、オーバーレイネットワークＯＬに新たに参加するノード装置を参加ノード装置と呼ぶ。本実施形態の参加ノード装置は、ＩＰｖ４のみで通信可能なノード装置と、ＩＰｖ６のみで通信可能なノード装置と、ＩＰｖ４とＩＰｖ６との双方で通信可能なノード装置とが存在する。まず、ＩＰｖ４のみで通信可能なノード装置の参加処理について説明する。以下、図２に示すように、ＩＰｖ４のみで通信可能な参加ノード装置を参加ノード装置Ａと呼ぶ。
【００３４】
（参加ノード装置Ａの参加処理）
まず、参加ノード装置ＡがオーバーレイネットワークＯＬに参加するために、参加ノード装置Ａは、コンタクトノードへ参加メッセージを送信する（図２：矢印（１））。本実施形態の参加メッセージには、参加ノード装置Ａのノード情報と、参加メッセージを送信したノード装置Ｔｍ−ｎのバージョン情報が含まれる。バージョン情報は、ノード装置のプロトコルを示す情報である。例えば、参加ノード装置Ａは、ＩＰｖ４のみで通信可能なノード装置である。この場合、参加ノード装置Ａのバージョン情報は、ＩＰｖ４を示す情報である。また、参加ノード装置Ｂは、ＩＰｖ６のみで通信可能なノード装置である。この場合、参加ノード装置Ｂのバージョン情報は、ＩＰｖ６を示す情報である。また、参加ノード装置Ｃは、ＩＰｖ４とＩＰｖ６との両方で通信可能なノード装置である。このため、参加ノード装置Ｃのバージョン情報は、ＩＰＶ４とＩＰｖ６とを示す情報である。これらバージョン情報が参加メッセージに含まれることで、コンタクトノードは、参加ノード装置が通信可能なプロトコルを把握することができる。参加ノード装置Ａのバージョン情報は、ＩＰｖ４を示す。そのため、コンタクトノード装置は、ＩＰｖ４を示すバージョン情報が含まれた参加メッセージを参加ノード装置Ａから受信する。なお、本実施形態のコンタクトノードは、ＩＰｖ４とＩＰｖ６との両方で通信可能なノード装置である。本実施形態のバージョン情報は、本発明のプロトコル情報の一例である。
【００３５】
そして、参加メッセージを受信したコンタクトノードは、参加メッセージが含むバージョン情報の中で、オーバーレイネットワークＯＬを形成するノード装置のバージョン情報と一致する情報があるかを判定する。具体的には、本実施形態では、オーバーレイネットワークＯＬは、ＩＰｖ４で通信可能なノード装置により形成されている。そのため、参加メッセージが含むバージョン情報の中で、ＩＰｖ４と一致する情報があるかが判定される。バージョン情報の中で、ＩＰｖ４と一致する情報があると判定されたとき、コンタクトノードが記憶するＤＨＴのルーティングテーブルが、参加ノード装置Ａに送信される。本実施形態では、参加ノード装置ＡはＩＰｖ４のみで通信可能なノード装置のため、コンタクトノード装置から参加ノード装置ＡへＤＨＴのルーティングテーブルが送信される（図２：矢印（２））。なお、本実施形態では、参加ノード装置Ａは、コンタクトノードからＤＨＴのルーティングテーブルを受信しているがこれに限定されるものではない。例えば、参加ノード装置Ａは、コンタクトノードからＤＨＴのルーティングテーブルの一部を受信しても良い。この場合、受信した一部のＤＨＴのルーティングテーブルに基づいて、参加ノード装置Ａは、他のノード装置から、残りのＤＨＴのルーティングテーブルを取得しても良い。
【００３６】
そして、ＤＨＴのルーティングテーブルに基づいて、参加ノード装置ＡはオーバーレイネットワークＯＬに参加する（図３：矢印（３））。なお、オーバーレイネットワークＯＬに参加するとは、ＤＨＴを用いたルーティングテーブルに基づいてオーバーレイネットワークＯＬを介して他のノード装置との間で各種メッセージを送受信できる状態に稼動することをいう。
【００３７】
（参加ノード装置Ｂの参加処理）
次に、参加ノード装置Ｂの参加処理の概要について説明する。図２に示す参加ノード装置ＢがオーバーレイネットワークＯＬに参加するために、参加ノード装置Ｂは、コンタクトノードへ参加メッセージを送信する（図２：矢印（４））。参加ノード装置Ｂのバージョン情報は、ＩＰｖ６を示す。そのため、コンタクトノードは、ＩＰｖ６を示すバージョン情報が含まれた参加メッセージを参加ノード装置Ｂから受信する。
【００３８】
そして、参加メッセージを受信したコンタクトノードは、参加メッセージが含むバージョン情報の中で、オーバーレイネットワークＯＬを形成するノード装置のバージョン情報と一致する情報があるかを判定する。具体的には、本実施形態では、オーバーレイネットワークＯＬは、ＩＰｖ４で通信可能なノード装置により形成されている。そのため、参加メッセージが含むバージョン情報の中に、ＩＰｖ４と一致する情報があるかが判定される。本実施形態では、参加ノード装置ＢはＩＰｖ６のみで通信可能なノード装置のため、参加ノード装置Ｂは、オーバーレイネットワークＯＬに参加することができない。このとき、コンタクトノードは、第１ノード装置のノード情報を参加ノード装置Ｂへ送信する。本実施形態の第１ノード装置は、ＩＰｖ４とＩＰｖ６との両方で通信可能なノード装置である。コンタクトノードは、第１ノード装置のノード情報を記憶している。参加ノード装置Ｂから参加メッセージを受信したコンタクトノードは、コンタクトノードが記憶する第１ノード装置のノード情報を参加ノード装置Ｂへ送信する。（図２：矢印（５））。
【００３９】
第１ノード装置のノード情報を受信した参加ノード装置Ｂは、第１ノードへ接続する（図２：矢印（６））。第１ノード装置のノード情報が含むＩＰアドレスに基づいて、参加ノード装置Ｂは第１ノード装置に接続する。このとき、参加ノード装置Ｂと、第１ノード装置との間にセッションを確立する（図２：矢印（７））。
【００４０】
以下、具体的に本実施形態のセッション確立について説明する。セッションを確立した参加ノード装置Ｂは、セッションが確立された第１ノード装置との間でＰ２Ｐの制御メッセージの送受信を行う。そして、一旦、セッションが確立された場合、制御メッセージの受信後又は送信後も、参加ノード装置Ｂと第１ノード装置とはセッションを保持するようになっている。セッションの保持は、第１ノード装置の所定の記憶領域に備えられたソケットテーブルに、セッション情報が登録されることにより行われる。セッション情報は、例えば、ソケットテーブルを記憶する第１ノード装置自身のノード情報と、接続先の参加ノード装置Ｂのノード情報と、ソケット識別子とが含まれても良い。なお、ここでの「ソケットテーブル」は公知のものではなく、本実施形態のために実装されたものである。ソケットテーブルは、ＩＰアドレスとノードＩＤとを対応付けた情報である。
【００４１】
また、ソケットテーブルには、複数のセッション情報を登録することができる。これにより、複数のノード装置とのセッションを保持することができる。但し、ソケットの数には限りがある。例えば、６０〜１２０程度である。そのため、ソケットテーブルに登録されたセッション情報の数が所定数以上になった場合、最も利用されていないセッション情報から削除される。例えば、ＬＲＵ（Ｌａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式により、セッション情報がソケットテーブルから削除される。
【００４２】
具体的には、第１ノード装置では、ソケットテーブルが設定される。第１ノード装置は、参加ノード装置Ｂが送信元のメッセージを受信した場合、送信元の参加ノード装置ＢのノードＩＤと、参加ノード装置ＢのＩＰアドレス及びポート番号とを対応付けてソケットテーブルに登録する。例えば、第１ノード装置が参加ノード装置Ｂからのセッション開始を受け付け、セッションが確立されたとする。このとき、参加ノード装置Ｂを送信元とする制御メッセージあって、第１ノード装置以外のノード装置宛ての制御メッセージが、第１ノード装置により受信されたとする。この場合、第１ノード装置は、参加ノード装置ＢのノードＩＤと、参加ノード装置ＢとのＩＰアドレス及びポート番号とを対応付けてソケットテーブルに登録する。
【００４３】
そして、第１ノード装置は、制御メッセージに含まれる送信元である参加ノード装置Ｂのノード情報が含むＩＰアドレスを、第１ノード装置のＩＰアドレスに書き換える。つまり、第１ノード装置は、制御メッセージに含まれる送信元のノード装置のＩＰアドレスを第１ノードのＩＰアドレスにする。このようにＩＰアドレスを書き換えることで、中継された制御メッセージを受信したノード装置は、第１ノード装置へ向けて制御メッセージを返信することができる。
【００４４】
また、オーバーレイネットワークＯＬに参加するノード装置のいずれかのノード装置を送信元とする制御メッセージを、第１ノード装置が受信する場合がある。このとき、第１ノードは、受信した制御メッセージが、第１ノード装置とセッション保持状態にある参加ノード装置Ｂに送信される制御メッセージであるか否かを判定する。まず、受信した制御メッセージの宛先を示すノードＩＤが、第１ノード装置のノードＩＤと一致するかが判定される。一致しなかった場合、受信した制御メッセージの宛先を示すノードＩＤが、ソケットテーブルに登録されているか否かが判定される。ソケットテーブルに登録されていた場合、受信したメッセージは、参加ノード装置Ｂ宛のメッセージであると判定される。そして、ソケットテーブルに登録されているＩＰアドレスが示す参加ノード装置Ｂへ、第１ノード装置は制御メッセージを中継する。一方、ソケットテーブルに登録されていなかった場合、ＤＨＴのルーティングテーブルに基づいて、受信した制御メッセージは、他のノード装置へ転送される。
【００４５】
このように、制御メッセージの宛先が、第１ノード装置により、参加ノード装置ＢのノードＩＤと対応付けられてソケットテーブルに登録されている参加ノード装置Ｂのノード情報に書き換えられる。これにより、参加ノード装置Ｂを宛先として送信された制御メッセージが、第１ノード装置により中継されて、参加ノード装置Ｂに送信される。
【００４６】
なお、このように登録された参加ノード装置ＢのノードＩＤと、ＩＰアドレス及びポート番号とは、参加ノード装置Ｂとのセッションが切断された場合、第１ノード装置は参加ノード装置Ｂとのセッション情報をソケットテーブルから削除する。セッションが切断されたとは、第１ノード装置の記憶部からセッション情報が削除されたことである。このように、オーバーレイネットワークＯＬで通信可能なＩＰｖ４では通信できないノード装置であっても、第１ノード装置とセッションを形成することで、オーバーレイネットワークＯＬと通信することができる。
【００４７】
（参加ノード装置Ｃの参加処理の概要）
図３は、参加ノード装置Ｃの参加処理の概要を示す説明図である。まず、参加ノード装置ＣがオーバーレイネットワークＯＬに参加するために、参加ノード装置Ｃは、コンタクトノードへ参加メッセージを送信する（図２：矢印（８））。本実施形態の参加メッセージには、参加ノード装置Ｃのノード情報と、参加メッセージを送信したノード装置のバージョン情報が含まれる。参加ノード装置Ｃのバージョン情報は、ＩＰｖ４とＩＰｖ６とを示す。そのため、コンタクトノード装置は、ＩＰｖ４とＩＰｖ６とを示すバージョン情報が含まれた参加メッセージを参加ノード装置Ｃから受信する。
【００４８】
そして、参加メッセージを受信したコンタクトノードは、参加メッセージが含むバージョン情報の中で、オーバーレイネットワークＯＬを形成するノード装置のバージョン情報と一致する情報があるかを判定する。具体的には、本実施形態では、オーバーレイネットワークＯＬは、ＩＰｖ４で通信可能なノード装置により形成されている。そのため、参加メッセージが含むバージョン情報の中で、ＩＰｖ４と一致する情報があるかが判定される。バージョン情報の中で、ＩＰｖ４と一致する情報があると判定されたとき、コンタクトノードが記憶するＤＨＴのルーティングテーブルが、参加ノード装置Ｃに送信される。本実施形態では、参加ノード装置ＣはＩＰｖ４とＩＰｖ６との両方で通信可能なノード装置のため、コンタクトノード装置から参加ノード装置ＣへＤＨＴのルーティングテーブルが送信される（図２：矢印（９））。また、参加メッセージを受信したコンタクトノードは、バージョン情報が、ＩＰｖ４とＩＰｖ６との両方を示すか否かを判定する。バージョン情報が、ＩＰｖ４とＩＰｖ６との両方を示すと判定された場合、コンタクトノードは、参加ノード装置Ｃを、第１ノード装置として登録する。具体的には、コンタクトノードが、参加メッセージに含まれる参加ノード装置Ｃのノード情報を第１ノード装置として記憶する。このようにして、コンタクトノード装置は第１ノード装置のノード情報を、参加ノード装置Ｂへ送信することができる。
【００４９】
そして、ＤＨＴのルーティングテーブルに基づいて、参加ノード装置ＣはオーバーレイネットワークＯＬに参加する（図３：矢印（１０））。
【００５０】
［コンテンツ取得動作の概要について］
情報通信システムＳにおいては、内容の異なる様々なコンテンツデータが複数のノード装置に分散して保存される。各コンテンツデータには、それぞれコンテンツ名及びコンテンツデータ毎に固有の識別情報であるコンテンツＩＤが付与されている。各コンテンツのコンテンツ名及びコンテンツＩＤ等の属性情報は、コンテンツカタログ情報に記述されている。コンテンツカタログ情報は、センターサーバにより作成されて、全てのノード装置に配信される。また、各コンテンツは、複数のデータに分割されている。この分割されたデータを、「チャンク」という。各チャンクは、例えば、センターサーバにより、コンテンツを所定のデータサイズで分割することにより生成される。本実施形態では、チャンクの最小データサイズは、２ＭＢ（Ｍｅｇａ  Ｂｙｔｅ）である。また、チャンクの最大データサイズは、１２８ＭＢである。ただし、チャンクに分割した結果、一部のチャンクが、２ＭＢよりも小さくなってしまう場合もある。また、チャンクに分割する前のデータサイズがもともと２ＭＢより小さい場合、２ＭＢ未満のデータサイズのチャンクとなる場合がある。本実施形態では、コンテンツデータが複数のチャンクに分割されている。本実施形態に記載のように、コンテンツデータが複数のチャンクに分割されなくても良い。分割されていないコンテンツデータが本実施形態に適用されても良い。
【００５１】
各チャンクは、複数のノード装置に分散されて保存される。これにより、元となるコン テンツが複数のノード装置に分散して保存されることになる。各チャンクのオリジナルは、センターサーバに保存されている。各チャンクには、それぞれシーケンス番号及びチャンクＩＤが付与されている。シーケンス番号は、例えば、分割された複数のチャンクを、元となるコンテンツを構成するように並べたときの並び順に相当する。チャンクＩＤは、チャンク毎に固有の識別情報である。
【００５２】
各ノード装置は、あるコンテンツのコンテンツＩＤを取得すると、そのコンテンツを構成する各チャンクのチャンクＩＤを、そのシーケンス番号と対応付けて取得することができる。コンテンツを構成する各チャンクのチャンクＩＤは、例えば、コンテンツカタログ情報において、元となるコンテンツの属性情報中に、シーケンス番号と対応付けて記述されていても良い。
【００５３】
チャンクを保存しているノード装置を、「コンテンツ保持ノード」という。また、チャンクの所在は、インデックス情報として、チャンクの所在を管理（記憶）しているノノード装置により記憶される。以下、チャンクの所在を管理しているノード装置を、「ルートノード」という。インデックス情報は、チャンクを保存したノード装置のノード情報と、チャンクのチャンクＩＤと等の組を含む。このようなルートノードは、例えば、チャンクＩＤと最も近いノードＩＤを有するノードＮｎであるように定められる。チャンクＩＤと最も近いノードＩＤとは、例えば、ＩＤの上位桁が最も多く一致するノードＩＤである。
【００５４】
あるノード装置のユーザが、所望のコンテンツを取得したい場合、ノード装置は、所望されたコンテンツを構成する各チャンクを保存するコンテンツ保持ノードをそれぞれ検索する。以下、ユーザによりチャンクの取得を望むノード装置を、「ユーザノード」という。具体的に、ユーザノードは、検索メッセージを送信する。この検索メッセージは、取得を望むチャンクのチャンクＩＤ及びユーザノードのノードＩＤを含む。この検索メッセージが、ユーザノードが記憶するＤＨＴのルーティングテーブルに従って、他のノード装置に対して送信される。つまり、ユーザノードは、検索メッセージを、ルートノードに向けて送信する。これにより、検索メッセージは、チャンクＩＤをキーとするＤＨＴルーティングによって最終的にルートノードに到着することになる。なお、ＤＨＴルーティングについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００５５】
検索メッセージを受信したルートノードは、これに含まれるチャンクＩＤに対応するインデックス情報をインデックス情報キャッシュから１または複数取得する。取得されたインデックス情報は、検索メッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてチャンクを取得（ダウンロード）する。具体的に、ユーザノードは、インデックス情報に含まれるコンテンツ保持ノードのＩＰアドレス及びポート番号等に基づいて、チャンク要求メッセージをコンテンツ保持ノードに送信する。チャンク要求メッセージには、ユーザノードのノード情報、所望するコンテンツのコンテンツＩＤ及び取得を望むチャンクのチャンクＩＤが含まれている。チャンク要求メッセージを受信したコンテンツ保持ノードは、チャンク要求メッセージに含まれるチャンクＩＤに対応するチャンクをユーザノードに送信（アップロード）する。一方、所望するチャンクを保存するコンテンツ保持ノードが存在しないとき、ユーザノードは、コンテンツ保持ノードのインデックス情報を取得することができない。この場合、ユーザノードは、センターサーバからチャンクを取得する。
【００５６】
あるいは、ルートノードは、インデックス情報に含まれるＩＰアドレス等に示されたコンテンツ保持ノードに対してチャンク送信要求メッセージを送信する。チャンク送信要求メッセージは、チャンク送信要求メッセージの送信元のノード情報を含む。チャンク送信要求メッセージを受信したコンテンツ保持ノードは、受信したチャンク送信要求メッセージが含むノード情報が示す ユーザノードへコンテンツデータの送信（アップロード）を開始する。これにより、ユーザノードは、コンテンツ保持ノードからコンテンツデータを取得することが可能になる。
【００５７】
そして、ユーザノードは、コンテンツ保持ノードからチャンクを取得して保存したとき、チャンクを公開する。チャンクの公開とは、ユーザノードがコンテンツ保持ノードとしてチャンクを保存したことをルートノードへ知らせることをいう。チャンクの公開により、公開したコンテンツ保持ノードから、公開されたチャンクを他のノード装置が取得可能になる。具体的に、チャンクを保存したユーザノードは、パブリッシュメッセージを送信する。パブリッシュメッセージは、チャンクのチャンクＩＤ及びチャンクを保存したユーザノードのノード情報を含む。パブリッシュメッセージは、ルートノードに向けて送出される。これにより、パブリッシュメッセージは、検索メッセージと同じように、チャンクＩＤをキーとするＤＨＴルーティングによってルートノードに到着することになる。ルートノードは、受信したパブリッシュメッセージに含まれるノード情報及びチャンクＩＤの組を含むインデックス情報をインデックス情報キャッシュに記憶する。こうして、上記ユーザノードは、新たに、上記チャンクを保存するコンテンツ保持ノードとなる。以上説明したように、本実施形態では、制御メッセージは、制御メッセージの送信元のノード情報を含む。
【００５８】
［コンテンツデータの中継方法について］
次に、参加ノード装置Ｂへのコンテンツデータ中継方法を説明する。本実施形態の参加ノード装置Ａ及び参加ノード装置Ｃは、上述したコンテンツ取得動作によりコンテンツを取得する。一方、参加ノード装置Ｂがコンテンツを取得するとき、参加ノード装置Ｂは検索メッセージを第１ノード装置宛に送信する。検索メッセージを受信した第１ノード装置は、第１ノード装置が記憶するＤＨＴのルーティングテーブルに基づいて、検索メッセージを転送する。第１ノード装置は、参加ノード装置ＢのノードＩＤと、参加ノード装置ＢとのＩＰアドレス及びポート番号とを対応付けてソケットテーブルに登録する。
【００５９】
そして、第１ノード装置は、検索メッセージに含まれる送信元である参加ノード装置Ｂのノード情報が含むＩＰアドレスを、第１ノード装置のＩＰアドレスに書き換える。つまり、第１ノード装置は、検索メッセージに含まれる送信元のノード装置のＩＰアドレスを第１ノードのＩＰアドレスにして、検索メッセージを送信する。そして、検索メッセージを受信したルートノードは、これに含まれるチャンクＩＤに対応するインデックス情報をインデックス情報キャッシュから１または複数取得する。取得されたインデックス情報は、検索メッセージの送信元に設定された第１ノード装置に対して返信される。返信されたインデックス情報を受け取った第１ノード装置は、まず、受信したインデックス情報の宛先を示すノードＩＤが、第１ノード装置のノードＩＤと一致するかが判定される。一致しなかった場合、受信したインデックス情報の宛先を示すノードＩＤが、ソケットテーブルに登録されているか否かが判定される。ソケットテーブルに登録されていた場合、受信したインデックス情報は、参加ノード装置Ｂ宛のインデックス情報であると判定される。そして、第１ノード装置が、ソケットテーブルに登録されている参加ノード装置Ｂへインデックス情報を中継する。これは、制御メッセージの中継と同様である。
【００６０】
そして、インデックス情報を取得した参加ノード装置Ｂは、インデックス情報に基づいてチャンクを取得（ダウンロード）する。ダウンロードの際も、制御メッセージや検索メッセージと同様に、第１ノード装置が中継することになる。参加ノード装置Ｂが、インデックス情報に基づいてチャンクを取得するとき、参加ノード装置Ｂはチャンク要求メッセージを第１ノード装置宛に送信する。チャンク要求メッセージを受信した第１ノード装置は、チャンク要求メッセージの送信先であるコンテンツ保持ノードへ、チャンク要求メッセージを転送する。第１ノード装置は、参加ノード装置ＢのノードＩＤと、参加ノード装置ＢのＩＰアドレス及びポート番号とを対応付けてソケットテーブルに登録する。そして、第１ノード装置は、チャンク要求メッセージに含まれる送信元である参加ノード装置Ｂのノード情報が含むＩＰアドレスを、第１ノード装置のＩＰアドレスに書き換える。つまり、第１ノード装置は、チャンク要求メッセージに含まれる送信元のノード装置のＩＰアドレスを第１ノードのＩＰアドレスにして、チャンク要求メッセージを送信する。そして、チャンク要求メッセージを受信したコンテンツ保持ノードは、これに含まれるチャンクＩＤに対応するチャンクを、チャンク要求メッセージの送信元に設定された第１ノード装置に対して返信する。返信されたチャンクを受け取った第１ノード装置は、まず、受信したチャンクの宛先を示すノードＩＤが、第１ノード装置のノードＩＤと一致するかが判定される。一致しなかった場合、受信したチャンクの宛先を示すノードＩＤが、ソケットテーブルに登録されているか否かが判定される。ソケットテーブルに登録されていた場合、受信したチャンクは、参加ノード装置Ｂ宛のチャンクであると判定される。そして、第１ノード装置が、ソケットテーブルに登録されているＩＰアドレスが示す参加ノード装置Ｂへチャンクを中継する。これは、制御メッセージ及び検索メッセージの中継と同様である。また、チャンク送信要求メッセージについても同様の中継を行う。なお、本実施形態で中継される制御メッセージは、上述した検索メッセージとインデックス情報とチャンク要求メッセージとチャンク送信要求メッセージとチャンクとを含む。
【００６１】
［ノード装置及び第１ノード装置の電気的構成］
次に、図４を参照して、ノード装置及び第１ノード装置の電気的構成ついて説明する。図４は、本実施形態のノード装置及び第１ノード装置の電気的構成を示すブロック図である。図４に示すように、本実施形態のノード装置及び第１ノード装置には、ノード装置及び第１ノード装置を制御するＣＰＵ１が備えられている。ＣＰＵ１には、ＨＤＤ２とＲＡＭ３とデコーダ部４と通信部９とがそれぞれ電気的に接続されている。ＨＤＤ２、ＲＡＭ３、などの記憶手段とＣＰＵ１とは、ノード装置及び第１ノード装置のコンピュータを構成している。ＣＰＵ１、ＨＤＤ２、ＲＡＭ３、デコーダ部４、及び通信部９はバスを介して相互に接続されている。なお、ノード装置及び第１ノード装置としては、パーソナルコンピュータ、又はＳＴＢ（Set  Top Box）等を適用可能である。
【００６２】
ＨＤＤ２は、プログラム記憶領域２１と、ルーティングテーブル記憶領域２５とを含む。プログラム記憶領域２１は、ノード装置メイン動作処理プログラム２２と、参加メッセージ処理プログラム記憶領域２３と、中継処理プログラム記憶領域２４とを含む。
【００６３】
ノード装置メイン動作処理プログラム記憶領域２２は、ノード装置メイン動作処理プログラムを記憶する。ノード装置メイン動作処理プログラムは、ノード装置にメイン動作処理を実行させるプログラムである。
【００６４】
参加メッセージ処理プログラム記憶領域２３は、参加メッセージ処理プログラムを記憶する。参加メッセージ処理プログラムは、ノード装置に参加処理を実行させるプログラムである。
【００６５】
中継処理プログラム記憶領域２４は、中継処理プログラムを記憶する。中継処理プログラムは、ノード装置に中継処理動作を実行させるプログラムである。なお、上記ノード装置メイン動作処理プログラムと参加処理プログラムと中継処理プログラムとは、例えば、ネットワークＮＷ上の所定のサーバからダウンロードされるようにしてもよいし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしても良い。
【００６６】
ルーティングテーブル記憶領域２５は、ＤＨＴのルーティングテーブルと、ＤＨＴのルーティングテーブルのバージョン情報とを記憶する。本実施形態では、ＩＰｖ４で通信可能なノード装置によりオーバーレイネットワークＯＬが構築されている。このため、ルーティングテーブル記憶領域２５には、ＤＨＴのルーティングテーブルとともに、ＩＰｖ４を示すバージョン情報が記憶される。本実施形態のルーティングテーブル記憶領域２５は、本発明の第１記憶手段の一例である。
【００６７】
ＲＡＭ３は、コンテンツデータ一時記憶領域３１と中継メッセージ一時記憶領域３２とソケットテーブル一時記憶領域３３と第１ノード装置情報一時記憶領域３４とバージョン情報一時記憶領域３５とアドレス情報一時記憶領域３６とを含む。
【００６８】
コンテンツデータ一時記憶領域３１は、オーバーレイネットワークＯＬで送受信されるコンテンツを一時記憶する。また、コンテンツデータ一時記憶領域３１は、参加ノード装置Ｂへ中継するコンテンツを一時記憶する。本実施形態のコンテンツデータ一時記憶領域３１は、第３記憶手段の一例である。
【００６９】
中継メッセージ一時記憶領域３２は、参加ノード装置Ｂへ中継する制御メッセージ、または、参加ノード装置Ｂから他のノード装置へ中継する制御メッセージを一時記憶する。
【００７０】
ソケットテーブル一時記憶領域３３は、ソケットテーブルを一時記憶する。情報通信システムＳに接続される複数のノード装置の中で、第１ノード装置に決定された場合、ソケットテーブル一時記憶領域３３にソケットテーブルを一時記憶する。
【００７１】
第１ノード装置情報一時記憶領域３４は、第１ノード装置のノード情報を一時記憶する。コンタクトノードから送信された第１ノード装置のノード情報が、第１ノード装置情報一時記憶領域３４に一時記憶される。本実施形態の第１ノード情報一時記憶領域３４は、本発明の第２記憶手段の一例である。
【００７２】
バージョン情報一時記憶領域３５は、バージョン情報を一時記憶する。バージョン情報は、ノード装置が通信可能なプロトコルである。ノード装置が、ＩＰｖ４とＩＰｖ６との両方で通信可能な場合、ＩＰｖ４とＩＰｖ６とを示すバージョン情報がバージョン情報一時記憶領域３５に一時記憶される。また、ノード装置が、ＩＰｖ４のみで通信可能な場合、ＩＰｖ４を示すバージョン情報がバージョン情報一時記憶領域３５に記憶される。また、ノード装置が、ＩＰｖ６のみで通信可能な場合、ＩＰｖ６を示すバージョン情報がバージョン情報一時記憶領域３５に記憶される。本実施形態のバージョン情報は、予め各ノード装置に設定されていても良いし、別機器から直接接続されて取得されても良い。また、別機器からネットワークＮＷを介してバージョン情報が取得されても良い。
【００７３】
アドレス情報一時記憶領域３６は、コンタクトノードのＩＰアドレスが記憶される。例えば、Ｐ２Ｐソフトウェアプログラムがノード装置によりダウンロードされたときに、コンタクトノードのＩＰアドレスは取得される。取得されたコンタクトノードのＩＰアドレスが、アドレス情報一時記憶領域３６に一時記憶される。
【００７４】
通信部９は、ネットワークＮＷを通じてノード装置または外部装置と情報の通信制御を行う。
【００７５】
ノード装置及び第１ノード装置は、通信部９を介して要求に応じて送信されてきたコンテンツを受信する受信処理を行う。本実施形態のコンテンツはパケット化されて送信されるようになっている。各パケットは、通信部９を通じて受信され、ＲＡＭ３に一時記憶される。このように一時記憶されたコンテンツは、ＲＡＭ３から読み出されてデコーダ部４と、映像処理部５と、音声処理部７と、ディスプレイ６と、スピーカ８とを通じて再生出力される。或いは、ＲＡＭ３に記憶されたコンテンツは、ＲＡＭ３から読み出されてＨＤＤ２に記憶されても良い。または、コンテンツがＲＡＭ３を介さず、直接ＨＤＤ２に記憶されても良い。その後、ユーザからの操作指示にしたがって、ＨＤＤ２からコンテンツが読み出される。読み出されたコンテンツは、デコーダ部４と、映像処理部５と、音声処理部７と、ディスプレイ６と、スピーカ８とを通じて再生出力される。これにより、ユーザはコンテンツの視聴を行うことができる。
【００７６】
［コンタクトノードの電気的構成］
次に、図５を参照して、コンタクトノードの電気的構成ついて説明する。図５は、本実施形態のコンタクトノードの電気的構成を示すブロック図である。基本的には、コンタクトノードの電気的構成は、ノード装置及び第１ノード装置の電気的構成と同じである。そのため、異なる点についてのみ説明する。
【００７７】
コンタクトノードのＨＤＤ２は、ノード装置及び第１ノード装置と同様に、プログラム記憶領域２１とルーティングテーブル記憶領域２５とを含む。コンタクトノードのプログラム記憶領域２１は、ノード装置及び第１ノード装置と異なり、コンタクトノードメイン動作処理プログラム記憶領域２６を含む。コンタクトノードメイン動作処理プログラム記憶領域２６は、コンタクトノードメイン動作処理プログラムを記憶する。コンタクトノードメイン動作処理プログラムは、コンタクトノード装置にメイン動作を実行させるプログラムである。なお、上記コンタクトノードメイン動作処理プログラムは、例えば、ネットワークＮＷ上の所定のサーバからダウンロードされるようにしてもよいし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしても良い。
【００７８】
コンタクトノードのＲＡＭ３は、参加メッセージ一時記憶領域３７と、第１ノード情報一時記憶領域３４とを含む。参加メッセージ一時記憶領域３７は、参加メッセージを一時記憶する。参加ノード装置により送信された参加メッセージが、コンタクトノードにより受信される。受信された参加メッセージが、参加メッセージ一時記憶領域３７に一時記憶される。なお、コンタクトノードの第１ノード装置情報一時記憶領域３４は、第１ノード装置のノード情報として、参加ノード装置から送信されたノード情報が一時記憶される。具体的には、コンタクトノード装置が受信した参加メッセージが含むバージョン情報が、ＩＰｖ４とＩＰｖ６との両方で通信可能であることを示す場合、その参加メッセージを送信した参加ノード装置のノード情報が、第１ノード装置のノード情報として、第１ノード装置情報一時記憶領域３４に一時記憶される。本実施形態の第１ノード情報一時記憶領域３４は、本発明の第２記憶手段の一例である。
【００７９】
[コンタクトノードメイン動作処理の説明]
以上説明した構成からなる本実施形態のコンタクトノードの動作及び作用について、添付図面を参照して説明する。図６は、コンタクトノードにおけるコンタクトノードメイン動作処理の処理手順を示すフローチャートである。コンタクトノード装置のコンタクトノードメイン動作処理は、電源またはコンセントを介して商用電源などの外部電源とノード装置とが接続され、コンタクトノード装置として決定されたことにより、遂行される。以下に示す処理は、ＣＰＵ１により処理される。
【００８０】
ステップＳ１０１では、参加ノード装置から、参加メッセージを受信したか否かが判定される。参加メッセージが受信されたと判定された場合（ステップＳ１０１：ＹＥＳ）、ステップＳ１０２が実行される。参加メッセージが受信されたと判定されなかった場合（ステップＳ１０１：ＮＯ）、ステップＳ１０７が実行される。なお、参加メッセージが受信された場合、受信された参加メッセージは、参加メッセージ情報一時記憶領域３７に一時記憶される。本実施形態のコンピュータとステップＳ１０１とは、本発明の受信手段の一例である。また、本実施形態のステップＳ１０１は、本発明の受信ステップの一例である。
【００８１】
ステップＳ１０２では、参加ノード装置のバージョン情報の中で、ルーティングテーブルのバージョン情報と一致する情報があるか否かが判定される。具体的には、ルーティングテーブル記憶領域２５に記憶されたバージョン情報と、参加メッセージが含むバージョン情報とが比較される。なお、参加メッセージのバージョン情報は、参加メッセージ一時記憶領域３７に一時記憶されている。比較した結果、参加ノード装置のバージョン情報の中で、ルーティングテーブルのバージョン情報と一致する情報があると判定された場合（ステップＳ１０２：ＹＥＳ）、ステップＳ１０３が実行される。参加ノード装置のバージョン情報の中で、ルーティングテーブルのバージョン情報と一致する情報がある判定されなかった場合（ステップＳ１０２：ＮＯ）、ステップＳ１０４が実行される。本実施形態のコンピュータとステップＳ１０２とは、本発明の判定手段の一例である。また、本実施形態のステップＳ１０２は、本発明の判定ステップの一例である。
【００８２】
ステップＳ１０３では、参加処理が実行される。具体的には、ルーティングテーブル記憶領域２５に記憶されているＤＨＴのルーティングテーブルが参加ノード装置へ送信される。本実施形態のコンピュータとステップＳ１０３とは、本発明の送信手段の一例である。また、本実施形態のステップＳ１０３は、本発明の送信ステップの一例である。
【００８３】
ステップＳ１０４では、第１ノード装置情報一時記憶領域３４に一時記憶された第１ノード装置のノード情報が、参加ノード装置へ送信される。本実施形態のコンピュータとステップＳ１０４とは、本発明の送信手段の一例である。また、本実施形態のステップＳ１０３は、本発明の送信ステップの一例である。
【００８４】
ステップＳ１０５では、参加ノード装置がＩＰｖ４とＩＰｖ６との両方で通信可能か否かが判定される。参加ノード装置がＩＰｖ４とＩＰｖ６との両方で通信可能かは、参加メッセージ情報一時記憶領域３２に記憶されるバージョン情報に基づいて判定される。バージョン情報がＩＰｖ４とＩＰｖ６とを示す場合、参加ノード装置がＩＰｖ４とＩＰｖ６との両方で通信可能と判定される。参加ノード装置がＩＰｖ４とＩＰｖ６との両方で通信可能と判定された場合（ステップＳ１０５：ＹＥＳ）、ステップＳ１０６が実行される。参加ノード装置がＩＰｖ４とＩＰｖ６との両方で通信可能と判定されなかった場合（ステップＳ１０５：ＮＯ）、ステップＳ１０７が実行される。
【００８５】
ステップＳ１０６では、参加メッセージ情報一時記憶領域３７に記憶された参加メッセージが含むノード情報が、第１ノード装置のノード情報として第１ノード装置情報一時記憶領域３４に一時記憶される。
【００８６】
ステップＳ１０７では、コンタクトノードの電源がオフにされたか否かが判定される。電源がオフにされたと判定された場合（ステップＳ１０７：ＹＥＳ）、コンタクトノードのコンタクトノードメイン動作処理は終了される。電源がオフにされたと判定されなかった場合（ステップＳ１０７：ＮＯ）、ステップＳ１０１が再度実行される。
【００８７】
[ノード装置メイン動作処理の説明]
図７を参照して、本実施形態のノード装置及び第１ノード装置の動作及び作用について、添付図面を参照して説明する。図７は、ノード装置及び第１ノード装置におけるノード装置メイン動作処理の処理手順を示すフローチャートである。ノード装置及び第１ノード装置のノード装置メイン動作処理は、電源またはコンセントを介して商用電源などの外部電源とノード装置及び第１ノード装置とが接続され、インストールされたＰ２ＰソフトウェアプログラムがＣＰＵ１により実行されたことにより、遂行される。
【００８８】
ステップＳ２０１では、参加メッセージが送信されるか否かが判定される。参加メッセージが送信されると判定された場合（ステップＳ２０１：ＹＥＳ）、ステップＳ２０２が実行される。参加メッセージが送信されると判定されなかった場合（ステップＳ２０１：ＮＯ）、ステップＳ２０３が実行される。
【００８９】
ステップＳ２０２では、参加メッセージ処理が実行される。参加メッセージ処理の詳細は後述する。
【００９０】
ステップＳ２０３では、制御メッセージが送信されるか否かが判定される。制御メッセージが送信されると判定された場合（ステップＳ２０３：ＹＥＳ）、ステップＳ２０４が実行される。制御メッセージが送信されると判定されなかった場合（ステップＳ２０３：ＮＯ）、ステップＳ２０７が実行される。
【００９１】
ステップＳ２０４では、ステップＳ２０４を実行するノード装置が、オーバーレイネットワークＯＬに参加しているか否かが判定される。オーバーレイネットワークに参加しているか否かは、例えば、ルーティングテーブル記憶領域２５にＤＨＴのルーティングテーブルが記憶されているか否かにより判定される。ルーティングテーブル記憶領域２５にＤＨＴのルーティングテーブルが記憶されている場合、オーバーレイネットワークＯＬに参加していると判定される。ルーティングテーブル記憶領域２５にＤＨＴのルーティングテーブルが記憶されていない場合、オーバーレイネットワークＯＬに参加していないと判定される。ステップＳ２０４を実行するノード装置が、オーバーレイネットワークＯＬに参加していると判定された場合（ステップＳ２０４：ＹＥＳ）、ステップＳ２０５が実行される。ステップＳ２０４を実行するノード装置が、オーバーレイネットワークＯＬに参加していると判定されなかった場合（ステップＳ２０４：ＮＯ）、ステップＳ２０６が実行される。
【００９２】
ステップＳ２０５では、ＤＨＴのルーティングテーブルに登録されたノード装置へ、制御メッセージが送信される。
【００９３】
ステップＳ２０６では、制御メッセージが、第１ノード装置へ送信される。具体的には、第１ノード装置情報一時記憶領域３４に記憶されたノード情報が含むＩＰアドレスに基づいて、制御メッセージが第１ノード装置へ送信される。
【００９４】
ステップＳ２０７では、制御メッセージを受信したか否かが判定される。ステップＳ２０７で受信される制御メッセージには、チャンク要求メッセージが含まれる。制御メッセージを受信したと判定された場合（ステップＳ２０７：ＹＥＳ）、ステップＳ２０８が実行される。制御メッセージを受信したと判定されなかった場合（ステップＳ２０７：ＮＯ）、ステップＳ２１５が実行される。チャンク要求メッセージを含む制御メッセージを受信するステップＳ２０７と、本実施形態のコンピュータとは、本発明の要求受信手段の一例である。
【００９５】
ステップＳ２０８では、ステップＳ２０８を実行するノード装置が、第１ノード装置であるか否かが判定される。具体的には、バージョン情報一時記憶領域３５に記憶されるバージョン情報に基づいて、ステップＳ２０８を実行するノード装置が、第１ノード装置であるか否かが判定される。バージョン情報一時記憶領域３５に一時記憶されるバージョン情報が、ＩＰｖ４とＩＰｖ６との両方で通信可能であることを示す場合、第１ノード装置であると判定される。ステップＳ２０８を実行するノード装置が第１ノード装置であると判定された場合（ステップＳ２０８：ＹＥＳ）、ステップＳ２０９が実行される。ステップＳ２０８を実行するノード装置が第１ノード装置であると判定されなかった場合（ステップＳ２０８：ＮＯ）、ステップＳ２１４が実行される。
【００９６】
ステップＳ２０９では、ステップＳ２０７で受信した制御メッセージの送信元が、中継が必要なノード装置であるか否かが判定される。具体的には、受信した制御メッセージがノード情報のノードＩＤが、ソケットテーブルに登録されているか否かが判定される。ソケットテーブルに登録されていると判定された場合、中継が必要なノード装置と判定される。一方、ソケットテーブルに登録されていると判定されなかった場合、中継が不要なノード装置と判定される。ステップＳ２０７で受信した制御メッセージの送信元が、中継が必要なノード装置であると判定された場合（ステップＳ２０９：ＹＥＳ）、ステップＳ２１０が実行される。ステップＳ２０７で受信した制御メッセージの送信元が、中継が必要なノード装置であると判定されなかった場合（ステップＳ２０９：ＮＯ）、ステップＳ２１１が実行される。
【００９７】
ステップＳ２１０では、中継処理が実行される。具体的には、ステップＳ２０７で受信された制御メッセージが含むノード情報のＩＰアドレスが、ステップＳ２１０を実行するノード装置のＩＰアドレスに書き換えられる。そして、制御メッセージの送信元のノード装置のノードＩＤと、制御メッセージの送信元のＩＰアドレス及びポート番号とが、対応付けられてソケットテーブルに登録される。
【００９８】
ステップＳ２１１では、ステップＳ２０７で受信した制御メッセージの宛先が、中継が必要なノード装置であるか否かが判定される。中継が必要なノード装置であるか否かは、制御メッセージが含むノードＩＤに基づいて決定される。参加メッセージが含むノードＩＤが、ソケットテーブル一時記憶領域３３に記憶されている場合、ステップＳ２０７で受信した制御メッセージが、中継が必要なノード装置宛のメッセージであると判定される。ステップＳ２０７で受信した制御メッセージの宛先が、中継が必要なノード装置であると判定された場合（ステップＳ２１１：ＹＥＳ）、ステップＳ２１２が実行される。ステップＳ２０７で受信した制御メッセージの宛先が、中継が必要なノード装置であると判定されなかった場合（ステップＳ２１１：ＮＯ）、ステップＳ２１３が実行される。ステップＳ２０７で受信した制御メッセージの宛先が、中継が必要なノード装置であると判定された場合、ステップＳ２０７で受信された制御メッセージが中継メッセージ一時記憶領域３２に一時記憶される。また、ステップＳ２０７で受信した制御メッセージがチャンクであった場合、ステップＳ２０７で受信されたチャンクが、コンテンツデータ一時記憶領域３１に一時記憶されても良い。本実施形態のコンピュータとステップＳ２１１とは、本発明の第２取得手段の一例である。
【００９９】
ステップＳ２１２では、ステップＳ２０７で受信した制御メッセージが、中継が必要なノード装置へ中継される。具体的には、ステップＳ２１１で、ソケットテーブルに登録されたノードＩＤの中で、ステップＳ２０７で受信した制御メッセージに付加されるノードＩＤと一致するノードＩＤが登録されているか否かが判定される。一致するノードＩＤが登録されていると判定された場合、ステップＳ２１２では、ソケットテーブルに登録されたノード情報の中から、一致すると判定されたノードＩＤに対応するＩＰアドレスが取得される。そして、取得されたＩＰアドレスが示すノード装置へ、制御メッセージが中継される。本実施形態のコンピュータとステップＳ２１２とは、本発明の中継手段の一例である。
【０１００】
ステップＳ２１３では、ＤＨＴのルーティングテーブルに登録されたノード装置へ、制御メッセージが送信される。
【０１０１】
ステップＳ２１４では、ステップＳ２０７で受信された制御メッセージに対応する処理が実行される。例えば、制御メッセージの宛先が、ステップＳ２０７で制御メッセージを受信したノード装置ではなかった場合、制御メッセージが転送される。また、制御メッセージの宛先が、ステップＳ２０７で制御メッセージを受信したノード装置である場合、制御メッセージに対応する処理が実行される。
【０１０２】
ステップＳ２１５では、ノード装置または第１ノード装置の電源がオフにされたか否か、または、離脱処理が実行されたか否かが判定される。離脱処理とは、オーバーレイネットワークＯＬからノード装置または第１ノード装置が離脱することである。具体的には、離脱処理は、ノード装置または第１ノード装置にインストールされたＰ２Ｐソフトウェアプログラムの起動が停止された場合である。電源がオフにされた、または、離脱処理が実行されたと判定された場合（ステップＳ２１５：ＹＥＳ）、ノード装置及び第１ノード装置のメイン動作処理は終了される。電源がオフにされた、または、離脱処理が実行されたと判定されなかった場合（ステップＳ２１５：ＮＯ）、ステップＳ２０１が再度実行される。
【０１０３】
[参加メッセージ処理の説明]
次に図８を用いて、本実施形態の参加メッセージ処理動作の処理手順について説明する。図８は、本実施形態の参加メッセージ処理動作を示すフローチャートである。まず、ステップＳ３０１では、コンタクトノードへの接続が実行される。アドレス情報一時記憶領域３６に記憶されたＩＰアドレスに基づいて、コンタクトノードへの接続が実行される。
【０１０４】
ステップＳ３０２では、コンタクトノードからＤＨＴのルーティングテーブルが受信されたか否かが判定される。ＤＨＴのルーティングテーブルが受信されたと判定された場合（ステップＳ３０２：ＹＥＳ）、ステップＳ３０３が実行される。ＤＨＴのルーティングテーブルが受信されたと判定されなかった場合（ステップＳ３０２：ＮＯ）、ステップＳ３０４が実行される。
【０１０５】
ステップＳ３０３では、オーバーレイネットワークＯＬへの参加処理が実行される。具体的には、ステップＳ３０２で受信したＤＨＴのルーティングテーブルをルーティングテーブル記憶領域２５に記憶する。そして、オーバーレイネットワークＯＬを用いて通信が可能な状態になる。ステップＳ３０２で、ＤＨＴのルーティングテーブルの一部が受信された場合、ステップＳ３０３で、受信した一部のＤＨＴのルーティングテーブルに基づいて、他のノード装置から、残りのＤＨＴのルーティングテーブルが取得されても良い。
【０１０６】
ステップＳ３０４では、第１ノード装置のノード情報が受信されたか否かが判定される。第１ノード装置のノード情報が受信されたと判定された場合（ステップＳ３０４：ＹＥＳ）、ステップＳ３０５が実行される。第１ノード装置のノード情報が受信されたと判定されなかった場合（ステップＳ３０４：ＮＯ）、ステップＳ３０２が実行される。なお、ステップＳ３０４で第１ノード装置のノード情報が受信された場合、第１ノード装置情報一時記憶領域３４に受信されたノード情報が一時記憶される。本実施形態のコンピュータとステップＳ３０４とは、本発明の第１取得手段の一例である。
【０１０７】
ステップＳ３０５では、第１ノード装置とのセッションが生成される。具体的には、ステップＳ３０４で受信したノード情報に基づいて、第１ノード装置とのセッションが生成される。本実施形態のコンピュータとステップＳ３０５とは、本発明の第１生成手段の一例である。
【０１０８】
以下、本実施形態の変形例について説明する。変形例として、本実施形態において、中継が必要なノード装置は、必ずしもパブリッシュメッセージを送信しなくても良い。図９は、本実施形態の変形例のパブリッシュ処理のフローチャートである。パブリッシュ処理は、本実施形態において、中継が必要なノード装置により定期的に実行される処理である。ノード装置が備えるタイマーにより所定の時刻ごとに、パブリッシュ処理は開始される。また、パブリッシュ処理は、ノード装置がコンテンツデータ一時記憶領域３１にコンテンツが記憶されたときに開始される。
【０１０９】
ステップＳ５０１では、コンテンツデータ一時記憶領域３１に記憶されたコンテンツの中で、パブリッシュする必要があるコンテンツＩＤを決定する。そして、決定されたコンテンツＩＤの検索メッセージが送信される。なお、パブリッシュする必要があるコンテンツＩＤとは、例えば、公開開始時期の近いコンテンツである。公開開始時期が近いとは、現在の時刻とコンテンツの公開開始時期との時刻差または日時差が、所定の期間以内になったことを示す。また、パブリッシュする必要があるコンテンツＩＤとは、コンテンツデータ一時記憶領域３１に新たにコンテンツが記憶されたコンテンツである。また、ステップＳ５０１では、ノード装置に備えられたタイマーにより計時動作が開始される。本実施形態のコンピュータとステップＳ５０１とは、本発明の検索手段の一例である。
【０１１０】
ステップＳ５０２では、ステップＳ５０１で送信された検索メッセージに対応するインデックスキャッシュが受信されたか否かが判定される。インデックスキャッシュが受信されたと判定された場合（ステップＳ５０２：ＹＥＳ）、パブリッシュ処理は終了される。インデックスキャッシュが受信されたと判定されなかった場合（ステップＳ５０２：ＮＯ）、ステップＳ５０３が実行される。
【０１１１】
ステップＳ５０３では、ステップＳ５０１で計時動作が開始されてから、所定の時間が経過したか否かが判定される。所定の時間が経過されたと判定された場合（ステップＳ５０３：ＹＥＳ）、ステップＳ５０４が実行される。所定の時間が経過されたと判定されなかった場合（ステップＳ５０３：ＮＯ）、ステップＳ５０２が実行される。
【０１１２】
ステップＳ５０４では、ステップＳ５０１で決定されたコンテンツＩＤを含むパブリッシュメッセージが送信される。本実施形態のコンピュータとステップＳ５０４とは、本発明の公開手段の一例である。
【０１１３】
本変形例では、中継が必要なノード装置へは、コンテンツを中継する必要がある。コンテンツを安定的に通信するために、中継が必要なノード装置はできる限り、データのアップロードを控えた方が良い。中継が必要なノード装置がコンテンツをパブリッシュするときに、オーバーレイネットワークＯＬによりコンテンツのインデックスキャッシュが検索される。検索できなかった場合に、パブリッシュメッセージが送信されるため、中継が必要なノード装置がコンテンツをアップロードすることができる限り控えることができる。この結果、中継処理の発生を防ぎ、効率良く通信することができる。なお、本変形例では、インデックスキャッシュが検索または受信できなかった場合に、パブリッシュメッセージを送信したがこれに限定されるものではない。インデックスキャッシュが検索または受信されても良い。検索または受信されたインデックスキャッシュが含むコンテンツ保持ノードの数が所定数以下の場合に、パブリッシュメッセージが送信されても良い。
【０１１４】
本実施形態においては、オーバーレイネットワークＯＬに、ＤＨＴのルーティングテーブルを利用したピアツーピアの通信システムが適用されていたが、これに限られるものではない。他のピアツーピアの通信システム、または、オーバーレイネットワークを用いたシステムに、本発明が適用されても良い。例えば、ＤＨＴ以外のルーティングテーブルが用いられる通信システムまたはピアツーピアの通信システムに本発明が適用されても良い。ＤＨＴを利用しないピアツーピアの通信システムとしては、例えば、ハイブリッド型のピアツーピアの通信システムがある。ハイブリッド型のピアツーピアの通信システム、または、ピュア型のピアツーピアの通信システムに本発明が適用されても良い。
【０１１５】
また、本実施形態では、オーバーレイネットワークＯＬが、ＩＰｖ４により通信可能なノード装置により構成されているが、これに限定されるものではない。例えば、オーバーレイネットワークＯＬが、ＩＰｖ６により通信可能なノード装置により構成されても良い。この場合、ＩＰｖ４でしか通信できないノード装置と、第１ノード装置との間で、セッションが生成されることになる。また、ＩＰｖ６で通信可能なノード装置のノード情報が登録されたＤＨＴのルーティングテーブルが生成され、ルーティングテーブル記憶領域に記憶される。
【符号の説明】
【０１１６】
１  ＣＰＵ
２  ＨＤＤ
３  ＲＡＭ
４  デコーダ部
５  映像処理部
６  ディスプレイ
７  音声処理部
８  スピーカ
９  通信部
Ｔｍ−ｎ  ノード装置
ＮＷ  ネットワーク
ＦＷ  ファイアウォール
ＢＲ  ブロードバンドルータ
Ｓ  情報通信システム
ＯＬ  オーバーレイネットワーク
ＮＬｍ  拠点ネットワーク
２１  プログラム記憶領域
２２  ノード装置メイン動作処理プログラム記憶領域
２３  参加メッセージ処理プログラム記憶領域
２５  ルーティングテーブル記憶領域
２６  コンタクトノードメイン動作処理プログラム記憶領域
３１  コンテンツデータ一時記憶領域
３２  中継メッセージ一時記憶領域
３３  ソケットテーブル一時記憶領域
３４  第１ノード装置情報一時記憶領域
３５  バージョン情報一時記憶領域
３６  アドレス情報一時記憶領域 
３７  参加メッセージ一時記憶領域
【図１】
0005338783.tif 000002
【図２】
0005338783.tif 000003
【図３】
0005338783.tif 000004
【図４】
0005338783.tif 000005
【図５】
0005338783.tif 000006
【図６】
0005338783.tif 000007
【図７】
0005338783.tif 000008
【図８】
0005338783.tif 000009
【図９】
0005338783.tif 000010