説明

P2PネットワークシステムおよびP2Pネットワークにおけるグループ管理用プログラム

【課題】グループに属する複数のノード間でリソースをやり取りするP2Pネットワークシステムにおいて、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができるようにする。
【解決手段】ノードどうしの自律的な接続が発生した後、接続された両ノードが同一のグループに属するか否かについて判定し、同一のグループに属さないと判定した場合、両ノード間の接続を切断することにより、ノードが他ノードに対して自律的に接続したとしても、同一のグループに属するノード間の接続のみが維持され、同じグループに属さないノード間の接続は切断されるようにして、グループが拡大することを防止し、グループ内のネットワーク上に非常に多くのコマンド伝播が生じることを防止することができるようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、P2PネットワークシステムおよびP2Pネットワークにおけるグループ管理用プログラムに関し、特に、サーバを介さずにクライアント同士で直接リソースの交換を行うシステムのうち、グループに属する複数のノード間でリソースをやり取りするP2Pネットワークシステムに用いて好適なものである。
【背景技術】
【0002】
近年、インターネットの浸透とインターネットユーザ数の爆発的な増加という社会的背景、パーソナルコンピュータ(パソコン)の高性能化とネットワークの高速化という技術的背景をもとに、ピアツーピア(P2P)と呼ばれるネットワーク技術が注目を集めている。
【0003】
従来のネットワークシステムは、少数のサーバと多数のクライアントとをネットワークを介して接続したものが殆どであり、クライアントで生成されたリソースはサーバに集められて管理されていた。ところが、爆発的なユーザ数増加の中、クライアント上でユーザが生成したリソースをサーバに集めるコストは無視できないものになっている。
【0004】
すなわち、従来のWebアーキテクチャにおいてサーバにリソースを集める際に、インターネット上に散らばっているリソースを発見するメカニズムには、ディレクトリサービスとサーチエンジンの2つのタイプが存在する。前者は人海戦術と呼ぶべきアプローチで、人手の作業によってリソースを集めるものである。後者はエージェントロボットがインターネットを巡回することによってリソースを集めてまわるものである。何れのタイプも言わば力任せのアプローチであり、多数のクライアントからリソースをサーバに集めるには多くのコストがかかってしまう。
【0005】
また、サーバに集められたリソースは、サーバへのアクセスの集中を生む。この結果、クライアントとして用いられる高性能なパソコンは殆ど遊休状態となり、高速ネットワークもサーバ周辺だけがいびつに混雑する結果となっている。
【0006】
これに対し、P2Pによるネットワーク技術は、ユーザに近い部分でサーバを介さずに、クライアント同士がダイレクトにリソースをやり取りするアーキテクチャである。一般に、P2Pネットワークは、ノードの集合で定義される。ノードとは、P2Pプロトコルを実装したプログラムのプロセスのことを言う。したがって、例えば1つのクライアントの中にも、起動しているプログラムが複数あれば、複数のノードが存在することになる。
【0007】
ここで、図6を参照して、P2Pアーキテクチャを利用して所望のリソースを検索および取得する際の手順を説明する。まず、図6(a)のように、リソース110の取得を希望しているユーザのノード100は、どこにリソース110があるかを探し出すためのlookupコマンドを近接ノード(接続しているノード)101,102に発行する。
【0008】
lookupコマンド受け取ったノード101,102は、要求されているリソース110を自身が持っているかどうかを調べる。該当するリソース110が見つからない場合は、図6(b)のように、lookupコマンドを近接ノード(lookupコマンドの送信元以外で接続しているノード)103〜106に転送する。このlookupコマンドを受け取ったノード103〜106も、要求されているリソース110を自身が持っているかどうかを調べる。
【0009】
このようにコマンド伝播とリソース110の検索を繰り返していく中で、ノード103では、リソース110の検索にヒットする。検索にヒットした場合は、図6(c)に示すように、lookupコマンドの送信元であるノード101にhitリプライを返す。hitリプライを受け取ったノード101は、lookupコマンドの送信元であるユーザノード100にhitリプライを転送する。このようにhitリプライは、lookupコマンドを伝播した各ノードにより逆向きに伝播され、コマンド発行元のユーザノード100まで届けられる。
【0010】
hitリプライは、リソース110のアクセスインタフェースの名前と検索ヒットノード103の情報とを含むパケットである。以上の手順により、最初にlookupコマンドを発行したユーザノード100では、所望のリソース110がノード103に存在することを発見できる。hitリプライを受け取ったユーザノード100は次に、図6(d)のようにノード103にダイレクトにアクセスし、リソース110を取得する。
【0011】
このようなP2Pネットワーク技術によれば、多数のクライアントで生成されたリソースはそれぞれのクライアント自身で管理されるため、多数のリソースをサーバに集める必要もないし、リソース取得のためにアクセスの集中が生じることも殆どない。また、クライアントとして使用される高性能なパソコンが持つ遊休資源を有効に使うことも可能となる。
【0012】
しかしながら、P2Pネットワーク技術では、リソースを取得する前提として、所望のリソースがどこにあるかを発見するためにlookupコマンドを多数のノードに伝播していかなければならならない。そのため、ネットワーク上に非常に多くのコマンド伝播が生じ、それだけ通信トラフィックが増大するという問題があった。
【0013】
個々のコマンドについては、そのパケットにTTL(Time To Live)を設定してコマンドの増殖を防止する工夫はなされている。TTLとは、コマンド伝播回数を設定しておき、ノードがコマンドを受信する毎にこれを1つずつ減算していき、ゼロになったときにそのコマンドを消滅するようにしたものである。このTTLを用いれば、あるlookupコマンドが発行されたにも関わらず所望のリソースが発見されない場合に、そのlookupコマンドが無限に伝播されていくのを防止し、ネットワーク上に無駄なコマンドが飛び交うのを防ぐことができる。
【0014】
ところが、このようなTTLを用いたとしても、コマンド増殖を完全に防ぐことはできない。すなわち、lookupコマンドの発行元ノードの近くにリソースが存在すれば、コマンドの増殖はそれほど多くならない。しかし、コマンド発行元ノードから遠く離れたノードにしかリソースがない場合は、そのリソースを発見するまでに多数のノードを経由することになり、コマンドの増殖を生む。そのため、コマンドの増殖によってネットワーク上の通信トラフィックが増大するという問題を生じる。また、あるノードがlookupコマンドを発行してからhitリプライを受信するまでの時間が長くなり、ネットワークとしての応答性が悪くなるという問題も生じる。
【0015】
なお、複数のノードでグループを構成し、グループ内のノード間でのみリソースのやり取りを行うようにしたP2Pネットワーク技術も存在する(例えば、特許文献1、2を参照)。特許文献1では、ネットワークを介して相互に接続された複数のピアの各々が、新たなピアの接続を受けた際に、自分、既存グループの代表ピア及び新たなピアの3者間のネットワーク上の距離の比較に基づいてグループ分けを行い、各グループ内の代表ピアに対してのみデータを配信するようにしている。
【0016】
また、特許文献2では、専用ラベルを使用してグループのメンバを識別する。そして、ピアグループのストラクチャが変形されるとき(すなわち、1つまたは複数のピアが付加または除去されるとき)、当該ピアグループに対する専用ラベルが変更されるようになっている。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】国際公開W004/030273号公報
【特許文献2】特開2004−350297号公報
【発明の概要】
【発明が解決しようとする課題】
【0018】
P2Pネットワーク技術において、ノード同士は、複数のセッションを互いに張った状態でトポロジを形成する。この常態的なセッションを「接続」と呼ぶ。この接続のトポロジ形成は、サーバで一元管理されることなく、個々のノードによる協調動作によって行われる。そして、上述したlookupコマンドやhitリプライは、接続セッションが確立しているノード間を順次伝播していく。
【0019】
P2Pネットワーク技術には、ノードが他ノードに対して自律的に接続していくことにより、ネットワークが自律的に拡大していくタイプのものがある。このようなタイプのP2Pネットワーク技術に特許文献1、2に記載されているようなグループ化技術を適用すると、ノードの自律的な接続によって、グループが次第に拡大していく。
【0020】
このようにグループが拡大していくと、グループ内のノード間でのみリソースのやり取りを行うこととしていても、グループ内のネットワーク上に非常に多くのコマンド伝播が生じる。その結果、通信トラフィックが増大するとともに、ネットワークとしての応答性が悪くなるという問題を生じる。
【0021】
本発明は、このような問題を解決するために成されたものであり、グループに属する複数のノード間でリソースをやり取りするP2Pネットワークシステムにおいて、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができるようにすることを目的とする。
【課題を解決するための手段】
【0022】
上記した課題を解決するために、本発明では、グループに属する複数のノード間でリソースをやり取りするP2Pネットワークシステムにおいて、ノードどうしの自律的な接続が発生した後、接続された両ノードが同一のグループに属するか否かについて判定し、同一のグループに属さないと判定した場合、両ノード間の接続を切断するようにしている。
【発明の効果】
【0023】
上記のように構成した本発明によれば、ノードが他ノードに対して自律的に接続したとしても、同一のグループに属するノード間の接続のみが維持され、同じグループに属さないノード間の接続は切断されるため、グループが拡大することを防止することができる。これにより、グループ内のネットワーク上に非常に多くのコマンド伝播が生じることを防止することができる。したがって、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができる。
【図面の簡単な説明】
【0024】
【図1】本実施形態によるP2Pネットワークシステムの概略構成例を示す図である。
【図2】本実施形態によるP2Pネットワークシステムを構成するサーバ、ハブノード、通常ノードの機能構成例を示すブロック図である。
【図3】本実施形態による通常ノードの接続管理に関する動作例を示すフローチャートである。
【図4】本実施形態によるハブノードの接続管理に関する動作例を示すフローチャートである。
【図5】本実施形態によるハブノードによる発信グループ情報の送信動作例を示すフローチャートである。
【図6】P2Pアーキテクチャを利用して所望のリソースを検索および取得する際の手順を示す図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態(以下、「本実施形態」という)を図面に基づいて説明する。図1は、本実施形態によるP2Pネットワークシステム10の概略構成例を示す図である。図1に示すように、本実施形態のP2Pネットワークシステム10は、サーバ120、複数のハブノード140,160および複数の通常ノード200,220,240,260,280,300を備えている。本実施形態では、ハブノード140および通常ノード200,220,240によって論理的なグループAが構成されている。また、ハブノード160および通常ノード260,280,300によって論理的なグループBが構成されている。なお、図1では、サーバ120を1つ、ハブノード140,160を2つ、通常ノード200,220,240,260,280,300を6つ示しているが、この数には限定されない。
【0026】
サーバ120は、ハブノード140,160、通常ノード200,220,240,260,280,300のそれぞれについて、P2Pネットワークシステム10へのログインを管理する。すなわち、サーバ120は、ログインを希望する各ノードからログイン用の情報を受信し、当該受信したログイン用の情報の妥当性を判断することにより、当該ログインを希望するノードについてP2Pネットワークシステム10へのログインの許否を決定する。
【0027】
サーバ120は、P2Pネットワークシステム10へのログインを許可した通常ノードに対して、当該通常ノードが属するグループを示す自グループ情報を送信する。また、サーバ120は、P2Pネットワークシステム10へのログインを許可したハブノードに対して、当該ハブノードが属するグループを構成するノードの一覧リストを送信する。
【0028】
ハブノード140は、グループAを構成している複数のノードを代表するノードであり、サーバ120にアクセスすることによりP2Pネットワークシステム10へのログインを行う。P2Pネットワークシステム10へのログインに成功した場合、ハブノード140は、他ノードからの自律的な接続を受けることができる。
【0029】
他ノードからの自律的な接続を受けた場合、ハブノード140は、当該他ノードと接続した後、自ノードと他ノードとが同一のグループに属するか否かについて判定する。具体的には、ハブノード140は、グループAに属しているノードの一覧リストを表すノードリスト情報をサーバ120から取得しておき、その取得した一覧リストの中に、接続した他ノードが含まれているか否かを確認することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。ハブノード140は、同一のグループに属さないと判定した場合、いったん許可した他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、当該他ノードとの接続を維持する。
【0030】
例えば、ハブノード140は、グループAに属する通常ノード(例えば、通常ノード200)からの自律的な接続を受けた場合、ハブノード140が保持している一覧リストと、通常ノード200から送られてくるノード識別情報とを参照して、自ノード140と通常ノード200とが同一のグループAに属するか否かについて判定する。この場合、ハブノード140は、通常ノード200が自分と同一のグループAに属すると判定し、通常ノード200との接続を維持する。その後、ハブノード140は、接続を維持した通常ノード200との間でリソースのやり取りを行うことが可能である。
【0031】
また、ハブノード140は、グループBに属する通常ノード(例えば、通常ノード280)からの自律的な接続を受けた場合、ハブノード140が保持している一覧リストと、通常ノード280から送られてくるノード識別情報とを参照して、自ノード140と通常ノード280とが同一のグループAに属するか否かについて判定する。この場合、ハブノード140は、通常ノード280が自分と同一のグループAに属しないと判定し、いったん許可した通常ノード280との接続を切断する。
【0032】
以上のように、ハブノード140に対して他ノードが自律的に接続したとしても、ハブノード140と同一のグループAに属する通常ノード200,220,240とハブノード140との間の接続のみが維持され、同じグループAに属さない他ノード160,260,280,300とハブノード140との間の接続は切断されるため、ノード間の自律的な接続によってグループAが拡大することを防止することができる。
【0033】
ハブノード160は、グループBを構成している複数のノードを代表するノードであり、サーバ120にアクセスすることによりP2Pネットワークシステム10へのログインを行う。P2Pネットワークシステム10へのログインに成功した場合、ハブノード160は、他ノードからの自律的な接続を受けることができる。
【0034】
他ノードからの自律的な接続を受けた場合、ハブノード160は、当該他ノードと接続した後、自ノードと他ノードとが同一のグループに属するか否かについて判定する。具体的には、ハブノード160は、グループBに属しているノードの一覧リストを表すノードリスト情報をサーバ120から取得しておき、その取得した一覧リストの中に、接続した他ノードが含まれているか否かを確認することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。ハブノード160は、同一のグループに属さないと判定した場合、いったん許可した他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、当該他ノードとの接続を維持する。
【0035】
例えば、ハブノード160は、グループBに属する通常ノード(例えば、通常ノード280)からの自律的な接続を受けた場合、ハブノード160が保持している一覧リストと、通常ノード280から送られてくるノード識別情報とを参照して、自ノード160と通常ノード280とが同一のグループBに属するか否かについて判定する。この場合、ハブノード160は、通常ノード280が自分と同一のグループBに属すると判定し、通常ノード280との接続を維持する。その後、ハブノード160は、接続を維持した通常ノード280との間でリソースのやり取りを行うことが可能である。
【0036】
また、ハブノード160は、グループAに属する通常ノード(例えば、通常ノード200)からの自律的な接続を受けた場合、ハブノード160が保持している一覧リストと、通常ノード200から送られてくるノード識別情報とを参照して、自ノード160と通常ノード200とが同一のグループBに属するか否かについて判定する。この場合、ハブノード160は、通常ノード200が自分と同一のグループBに属しないと判定し、いったん許可した通常ノード200との接続を切断する。
【0037】
以上のように、ハブノード160に対して他ノードが自律的に接続したとしても、ハブノード160と同一のグループBに属する通常ノード260,280,300とハブノード160との間の接続のみが維持され、同じグループBに属さない他ノード140,200,220,240とハブノード160との間の接続は切断されるため、ノード間の自律的な接続によってグループBが拡大することを防止することができる。
【0038】
グループAに属する通常ノード200,220,240の各々は、サーバ120にアクセスすることによりP2Pネットワークシステム10へのログインを行う。P2Pネットワークシステム10へのログインに成功した場合、通常ノード200,220,240の各々は、自グループ情報をサーバ120から取得して記憶する。また、通常ノード200,220,240の各々は、ログイン成功後は、他ノード(ハブノード、通常ノード)に対して自律的に接続していくことができる。
【0039】
また、通常ノード200,220,240の各々は、ログイン成功後は、他ノードからの自律的な接続を受けることができる。また、通常ノード200,220,240の各々は、他ノードと接続した後、自ノードと他ノードとが同一のグループAに属するか否かについて判定する。
【0040】
具体的には、通常ノード200,220,240の各々は、自ノード以外の別ノード(自ノードと接続した他ノード)が属するグループ内のハブノードから発信された発信グループ情報(当該ハブノードが属するグループを示す情報)を他ノードから受信する。この発信グループ情報は、あるグループに属するハブノードから定期的にブロードキャスト形式で送信され、複数のノードを介してブロードキャスト形式で転送されていくものである。発信グループ情報を受信したノードがそれを転送するか否かについては条件がある。すなわち、発信グループ情報を受信したノードは、発信グループ情報を発信したハブノードと同じグループに属することを条件として、発信グループ情報を転送する。
【0041】
通常ノード200,220,240の各々は、接続した他ノードから送信された発信グループ情報により示されるグループと、自ノードが属するグループを示す自グループ情報により示されるグループとが一致するか否かを判定する。そして、一致しないと判定した場合、自ノードと他ノードとが同一のグループに属しないと判定する一方、一致すると判定した場合、自ノードと他ノードとが同一のグループに属すると判定する。通常ノード200,220,240の各々は、同一のグループに属さないと判定した場合、他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、他ノードとの接続を維持する。
【0042】
例えば、通常ノード200は、グループAに属する通常ノード(例えば、通常ノード240)と接続した場合、通常ノード240から受信した発信グループ情報(ハブノード140から発信され、通常ノード240を介して転送されてきたもので、グループAを示す)と、自身が記憶している自グループ情報(グループAを示す)とに基づいて、自ノード200と通常ノード240とが同一のグループAに属するか否かについて判定する。この場合、通常ノード200は、通常ノード240が自分と同一のグループAに属すると判定し、通常ノード240との接続を維持する。その後、通常ノード200は、接続を維持した通常ノード240との間でリソースのやり取りを行うことが可能である。
【0043】
また、通常ノード200は、グループBに属する通常ノード(例えば、通常ノード300)と接続した場合、通常ノード300から受信した発信グループ情報(ハブノード160から発信され通常ノード300を介して転送されてきたもので、グループBを示す)と、自身が記憶している自グループ情報(グループAを示す)とに基づいて、自ノード200と通常ノード300とが同一のグループAに属するか否かについて判定する。この場合、通常ノード200は、通常ノード300が自分と同一のグループAに属しないと判定し、通常ノード300との接続を切断する。
【0044】
グループBに属する通常ノード260,280,300の各々は、サーバ120にアクセスすることによりP2Pネットワークシステム10へのログインを行う。P2Pネットワークシステム10へのログインに成功した場合、通常ノード260,280,300の各々は、自グループ情報をサーバ120から取得して記憶する。また、通常ノード260,280,300の各々は、ログイン成功後は、他ノード(ハブノード、通常ノード)に対して自律的に接続していくことができる。
【0045】
また、通常ノード260,280,300の各々は、ログイン成功後は他ノードからの自律的な接続を受けることができる。また、通常ノード260,280,300の各々は、他ノードと接続した後、自ノードと他ノードとが同一のグループに属するか否かについて判定する。
【0046】
具体的には、通常ノード260,280,300の各々は、自ノード以外の別ノード(自ノードと接続した他ノード)が属するグループ内のハブノードから発信された発信グループ情報(当該ハブノードが属するグループを示す情報)を他ノードから受信する。この発信グループ情報は、あるグループに属するハブノードから定期的にブロードキャスト形式で送信され、複数のノードを介してブロードキャスト形式で転送されていくものである。発信グループ情報を受信したノードがそれを転送するか否かについては条件がある。すなわち、発信グループ情報を受信したノードは、発信グループ情報を発信したハブノードと同じグループに属することを条件として、発信グループ情報を転送する。
【0047】
通常ノード260,280,300の各々は、接続した他ノードから送信された発信グループ情報により示されるグループと、自ノードが属するグループを示す自グループ情報により示されるグループとが一致するか否かを判定する。そして、一致しないと判定した場合、自ノードと他ノードとが同一のグループに属しないと判定する一方、一致すると判定した場合、自ノードと他ノードとが同一のグループに属すると判定する。通常ノード260,280,300の各々は、同一のグループに属さないと判定した場合、他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、他ノードとの接続を維持する。
【0048】
例えば、通常ノード260は、グループBに属する通常ノード(例えば、通常ノード280)と接続した場合、通常ノード280から受信した発信グループ情報(ハブノード160から発信され、通常ノード280を介して転送されてきたもので、グループBを示す)と、自身が記憶している自グループ情報(グループBを示す)とに基づいて、自ノード260と通常ノード280とが同一のグループBに属するか否かについて判定する。この場合、通常ノード260は、通常ノード280が自分と同一のグループBに属すると判定し、通常ノード280との接続を維持する。その後、通常ノード260は、接続を維持した通常ノード280との間でリソースのやり取りを行うことが可能である。
【0049】
また、通常ノード260は、グループAに属する通常ノード(例えば、通常ノード220)と接続した場合、通常ノード220から受信した発信グループ情報(ハブノード140から発信され通常ノード220を介して転送されてきたもので、グループAを示す)と、自身が記憶している自グループ情報(グループBを示す)とに基づいて、自ノード260と通常ノード220とが同一のグループBに属するか否かについて判定する。この場合、通常ノード260は、通常ノード220が自分と同一のグループBに属しないと判定し、通常ノード220との接続を切断する。
【0050】
以上のように、グループA,Bに属する通常ノード200,220,240,260,280,300の間で自律的に接続したとしても、同一のグループに属する通常ノード間の接続のみが維持され、同じグループに属さない通常ノード間の接続は切断されるため、ノード間の自律的な接続によってグループA,Bが拡大することを防止することができる。
【0051】
次に、本実施形態によるP2Pネットワークシステム10を構成するサーバ120、ハブノード140,160、通常ノード200,220,240,260,280,300の機能構成について説明する。図2は、本実施形態によるP2Pネットワークシステム10を構成するサーバ120、ハブノード140,160、通常ノード200,220,240,260,280,300の機能構成例を示すブロック図である。なお、ハブノード140,160は同様の機能構成を有することから、図2では、ハブノード140,160のいずれかの機能構成例を示しているものとする。また、通常ノード200,220,240,260,280,300は同様の機能構成を有することから、図2では、通常ノード200,220,240,260,280,300のいずれかの機能構成例を示しているものとする。
【0052】
まず、サーバ120の機能構成について説明する。図2に示すように、サーバ120は、ノード管理情報記憶部400、ログイン認証部420、ノードリスト情報送信部440および自グループ情報送信部460を備えて構成されている。
【0053】
ノード管理情報記憶部400は、P2Pネットワークシステム10を構成する全てのノード(ハブノード140,160、通常ノード200,220,240,260,280,300)に関するノード管理情報を記憶する。本実施形態では、ノード管理情報記憶部400は、サーバ120に備えられた操作部(図示せず)に対するユーザの操作により入力されたノード管理情報を記憶している。
【0054】
ノード管理情報は、各ノードを識別するためのノード識別情報、各ノードが属するグループ(本実施形態では、グループAまたはグループB)を示すグループ情報、各ノードがハブノードであるか通常ノードであるかを示すノード種別情報、各ノードがP2Pネットワークシステム10へログインするために必要なパスワードを示すパスワード情報、および各ノードがP2Pネットワークシステム10へログインしている状態か否かを示すログイン状態情報を含む。もし、ノードがP2Pネットワークシステム10へログインしている状態の場合、対応するログイン状態情報の値には「ログイン状態」が記憶される。一方、ノードがP2Pネットワークシステム10へログインしていない状態の場合、対応するログイン状態情報の値には「未ログイン状態」が記憶される。
【0055】
ログイン認証部420は、P2Pネットワークシステム10へログインするためにアクセスしてきたノードから送信されたノード識別情報およびパスワード情報を受信する。ログイン認証部420は、受信したノード識別情報およびパスワード情報と値が一致するノード識別情報およびパスワード情報がノード管理情報記憶部400に記憶されているか否かについて判定する。もし、値が一致するノード識別情報およびパスワード情報が記憶されていないと判定した場合、ログイン認証部420は、アクセスしてきたノードについてP2Pネットワークシステム10へのログインを拒否する。
【0056】
一方、値が一致するノード識別情報およびパスワード情報が記憶されていると判定した場合、ログイン認証部420は、アクセスしてきたノードについてP2Pネットワークシステム10へのログインを許可する。その後、ログイン認証部420は、ノード管理情報記憶部400においてノード識別情報に対応して記憶されているノード種別情報を参照し、ログインを許可したノードがハブノードか通常ノードかを判定する。
【0057】
ログインを許可したノードがハブノードであれば、ログイン認証部420は、ログインしたノードのグループ情報をノード管理情報記憶部400から読み出してノードリスト情報送信部440に出力する。一方、ログインを許可したノードが通常ノードであれば、ログイン認証部420は、ログインした通常ノードのグループ情報をノード管理情報記憶部400から読み出して自グループ情報送信部460に出力するとともに、ノード管理情報記憶部400においてノード識別情報に対応して記憶されているログイン状態情報の値に「ログイン状態」を記憶させる。
【0058】
ノードリスト情報送信部440は、ログイン認証部420からグループ情報が出力された場合、ノード管理情報記憶部400を参照し、ログイン認証部420から出力されたグループ情報と値が一致するグループ情報および値として「ログイン状態」が記憶されているログイン状態情報を含むノード管理情報を抽出し、抽出したノード管理情報のグループ情報およびノード識別情報を、認証済みノードの一覧を表すノードリスト情報として、ログインしてきたハブノードに返信する。
【0059】
また、ノードリスト情報送信部440は、ハブノードからノードリスト情報の問い合わせを受けた場合、ノード管理情報記憶部400に記憶されているノード管理情報を参照し、当該ハブノードが属するグループが値として記憶されているグループ情報および値として「ログイン状態」が記憶されているログイン状態情報を含むノード管理情報を抽出し、抽出したノード管理情報のグループ情報およびノード識別情報をノードリスト情報として、問い合わせてきたハブノードに返信する。
【0060】
自グループ情報送信部460は、ログイン認証部420から出力されたグループ情報を自グループ情報として、ログインしてきた通常ノードに返信する。
【0061】
次に、ハブノードの機能構成について説明する。図2に示すように、ハブノードは、サーバ接続部500、ノードリスト情報受信部520、ノードリスト情報記憶部540、ノード接続部560、ノード識別情報受信部600、判定部620、ノード切断部640、タイマ660、発信グループ情報送信部680、発信グループ情報受信部700、ノードリスト情報問い合わせ部720、ノード識別情報記憶部740およびノード識別情報送信部760を備えて構成されている。
【0062】
サーバ接続部500は、ハブノードがP2Pネットワークシステム10へログインするため、サーバ120のログイン認証部420にアクセスし、自ノードを識別するノード識別情報およびパスワード情報を送信する。なお、ノード識別情報およびパスワード情報は、ノード識別情報記憶部740に記憶されている。
【0063】
ノードリスト情報受信部520は、サーバ120のノードリスト情報送信部440から送信されたノードリスト情報を受信する。ノードリスト情報記憶部540は、ノードリスト情報受信部520により受信されたノードリスト情報を記憶する。
【0064】
ノード接続部560は、他ノード(ハブノードまたは通常ノード)と接続する(自律的な接続)。例えば、ノード接続部560は、不特定多数の相手に向かってブロードキャストメッセージを送信し、その送信に対する応答により他ノードを発見し、当該発見した他ノードに接続要求を行い接続する。逆に、ノード接続部560は、他ノードから接続要求を受けて接続することもある。
【0065】
ノード識別情報受信部600は、他ノード(ハブノードまたは通常ノード)からブロードキャスト形式で送信されたノード識別情報を受信する。そして、ノード識別情報受信部600は、受信したノード識別情報を判定部620に出力する。
【0066】
判定部620は、ノード識別情報受信部600から出力されたノード識別情報が、ノードリスト情報記憶部540に記憶されているノードリスト情報に含まれているか否かについて判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。もし、自ノードと他ノードとが同一のグループに属すると判定した場合、判定部620は、自ノードと他ノードとが同一のグループに属する旨をノード接続部560に通知する。ノード接続部560は、自ノードと他ノードとが同一のグループに属する旨の通知を判定部620から受けた場合、ノード識別情報を送信してきた他ノードとの接続を維持する。
【0067】
一方、自ノードと他ノードとが同一のグループに属しないと判定した場合、判定部620は、その旨をノード切断部640に通知する。ノード切断部640は、ノード識別情報を送信してきた他ノードとの接続を切断する。
【0068】
タイマ660は、所定時間間隔(例えば、1分)毎に制御信号を発信グループ情報送信部680に出力する。また、タイマ660は、所定時間間隔(例えば、10分)毎に制御信号をノードリスト情報問い合わせ部720に出力する。また、タイマ660は、所定時間間隔(例えば、10秒)毎に制御信号をノード識別情報送信部760に出力する。発信グループ情報送信部680は、タイマ660から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、発信グループ情報送信部680は、発信グループ情報を送信しない。
【0069】
一方、所定時間が経過したと判定した場合、発信グループ情報送信部680は、自ノードが属するグループを示す発信グループ情報を生成する。発信グループ情報は、ノードリスト情報記憶部540に記憶されているノードリスト情報に含まれるグループ情報、および、発信グループ情報の有効期間を示すTTL(Time To Live)情報を含む。本実施形態では、発信グループ情報送信部680が発信グループ情報を生成する際に、発信グループ情報に含まれるTTL情報の値に例えば「5」が記憶される。発信グループ情報送信部680は、生成した発信グループ情報をブロードキャスト形式で他ノードに送信する。
【0070】
発信グループ情報受信部700は、他ノード(ハブノードまたは通常ノード)からブロードキャスト形式で送信された発信グループ情報を受信する。後述するように、通常ノードでは、他ノードから受信した発信グループ情報をその他ノードと自ノードとが同一のグループに属するか否かについての判定に使用する。しかし、ハブノードでは上述したように、他ノードから受信したノード識別情報とノードリスト情報とに基づき同一のグループに属するか否かについて判定する。つまり、発信グループ情報受信部700は、他ノードから受信した発信グループ情報を同一のグループに属するか否かについての判定に使用せず破棄する。
【0071】
ノードリスト情報問い合わせ部720は、タイマ660から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、ノードリスト情報問い合わせ部720は、サーバ120に対してノードリスト情報の問い合わせを行わない。一方、所定時間が経過したと判定した場合、ノードリスト情報問い合わせ部720は、サーバ120に対してノードリスト情報の問い合わせを行う。
【0072】
ノード識別情報記憶部740は、ノード識別情報およびパスワード情報を記憶する。本実施形態では、ノード識別情報記憶部740は、ハブノードに備えられた操作部(図示せず)に対するユーザの操作により入力されたノード識別情報およびパスワード情報を記憶している。
【0073】
ノード識別情報送信部760は、タイマ660から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、ノード識別情報送信部760は、ノード識別情報記憶部740に記憶されているノード識別情報を送信しない。一方、所定時間が経過したと判定した場合、ノード識別情報送信部760は、ノード識別情報記憶部740に記憶されているノード識別情報をブロードキャスト形式で他ノードに送信する。自ノード以外のハブノードでは、ノード識別情報送信部760により送信されたノード識別情報をノード識別情報受信部600で受信する。
【0074】
最後に、通常ノードの機能構成について説明する。図2に示すように、通常ノードは、サーバ接続部800、自グループ情報受信部820、自グループ情報記憶部840、ノード接続部860、ノード識別情報記憶部900、タイマ910、ノード識別情報送信部920、発信グループ情報受信部940、判定部960、ノード切断部980および発信グループ情報送信部1000を備えて構成されている。
【0075】
サーバ接続部800は、通常ノードがP2Pネットワークシステム10へログインするため、サーバ120のログイン認証部420にアクセスし、自ノードを識別するノード識別情報およびパスワード情報を送信する。なお、ノード識別情報およびパスワード情報は、ノード識別情報記憶部900に記憶されている。
【0076】
自グループ情報受信部820は、サーバ120の自グループ情報送信部460から送信された自グループ情報を受信する。自グループ情報記憶部840は、自グループ情報受信部820により受信された自グループ情報を記憶する。
【0077】
ノード接続部860は、他ノード(ハブノードまたは通常ノード)と接続する(自律的な接続)。例えば、ノード接続部860は、不特定多数の相手に向かってブロードキャストメッセージを送信し、その送信に対する応答により他ノードを発見し、当該発見した他ノードに接続要求を行い接続する。逆に、ノード接続部860は、他ノードから接続要求を受けて接続することもある。
【0078】
ノード識別情報記憶部900は、ノード識別情報およびパスワード情報を記憶する。本実施形態では、ノード識別情報記憶部900は、通常ノードに備えられた操作部(図示せず)に対するユーザの操作により入力されたノード識別情報およびパスワード情報を記憶している。タイマ910は、所定時間間隔(例えば、10秒)毎に制御信号をノード識別情報送信部920に出力する。
【0079】
ノード識別情報送信部920は、タイマ910から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、ノード識別情報送信部920は、ノード識別情報記憶部900に記憶されているノード識別情報を送信しない。一方、所定時間が経過したと判定した場合、ノード識別情報送信部920は、ノード識別情報記憶部900に記憶されているノード識別情報をブロードキャスト形式で他ノードに送信する。ハブノードでは、通常ノードのノード識別情報送信部920により送信されたノード識別情報をノード識別情報受信部600で受信する。
【0080】
発信グループ情報受信部940は、他ノードからブロードキャスト形式で送信された発信グループ情報(ハブノードの発信グループ情報送信部680から発信されたもの、または、通常ノードの発信グループ情報送信部1000から転送されたもの)を受信する。そして、発信グループ情報受信部940は、受信した発信グループ情報を判定部960および発信グループ情報送信部1000に出力する。
【0081】
判定部960は、発信グループ情報受信部940から出力された発信グループ情報により示されるグループが、自グループ情報記憶部840に記憶されている自グループ情報により示されるグループと一致するか否かを判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。もし、自ノードと他ノードとが同一のグループに属すると判定した場合、判定部960はその旨をノード接続部860および発信グループ情報送信部1000に通知する。ノード接続部860は、自ノードと他ノードとが同一のグループに属する旨の通知を受けた場合、発信グループ情報を送信してきた他ノードとの接続を維持する。
【0082】
一方、自ノードと他ノードとが同一のグループに属しないと判定した場合、判定部960は、その旨をノード切断部980に通知する。ノード切断部980は、自ノードと他ノードとが同一のグループに属しない旨の通知を判定部960から受けて、発信グループ情報を送信してきた他ノードとの接続を切断する。
【0083】
発信グループ情報送信部1000は、自ノードと他ノードとが同一のグループに属する旨の通知を判定部960から受けた場合、発信グループ情報受信部940から出力された発信グループ情報に含まれるTTLの値が0(ゼロ)になっているか否かについて判定する。もし、TTLの値が0(ゼロ)になっていると判定した場合、発信グループ情報送信部1000は、発信グループ情報を送信しない。一方、TTLの値が0(ゼロ)になっていないと判定した場合、発信グループ情報送信部1000は、発信グループ情報に含まれるTTLの値から1を減算した値を当該TTLの値として更新する。そして、発信グループ情報送信部1000は、TTLの値を更新した発信グループ情報を、他ノードにブロードキャスト形式で送信する。
【0084】
以上に説明した本実施形態によるハブノード140,160、通常ノード200,220,240,260,280,300の機能は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMに記憶されたプログラムが動作することによって実現できる。したがって、コンピュータが上記の機能を果たすように動作させるプログラムを例えばCD−ROMのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものである。
【0085】
上記プログラムを記録する記録媒体としては、CD−ROM以外に、フレキシブルディスク、ハードディスク、磁気テープ、光ディスク、光磁気ディスク、DVD、不揮発性メモリカード等を用いることができる。また、上記プログラムをインターネット等のネットワークを介してコンピュータにダウンロードすることによっても実現できる。
【0086】
次に、本実施形態における通常ノードの接続管理に関する動作について説明する。図3は、他ノード(ハブノードまたは通常ノード)と接続した後の通常ノードの接続管理に関する動作例を示すフローチャートである。
【0087】
まず、発信グループ情報受信部940は、他ノードからブロードキャスト形式で送信された発信グループ情報(ハブノードの発信グループ情報送信部680から発信されたもの、または、通常ノードの発信グループ情報送信部1000から転送されたもの)を受信したか否かについて判定する(ステップS200)。もし、発信グループ情報を受信していないと発信グループ情報受信部940にて判定した場合(ステップS200にてNO)、処理はステップS320に遷移する。
【0088】
一方、発信グループ情報を受信したと発信グループ情報受信部940にて判定した場合(ステップS200にてYES)、発信グループ情報受信部940は、受信した発信グループ情報を判定部960および発信グループ情報送信部1000に出力する。次に、判定部960は、発信グループ情報受信部940から出力された発信グループ情報により示されるグループが、自グループ情報記憶部840に記憶されている自グループ情報により示されるグループと一致するか否かを判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する(ステップS220)。
【0089】
もし、自ノードと他ノードとが同一のグループに属すると判定部960にて判定した場合(ステップS220にてYES)、判定部960はその旨を発信グループ情報送信部1000に通知する。次に、発信グループ情報送信部1000は、自ノードと他ノードとが同一のグループに属する旨の通知を判定部960から受けて、発信グループ情報受信部940から出力された発信グループ情報に含まれるTTLの値が0(ゼロ)になっているか否かについて判定する(ステップS240)。もし、TTLの値が0(ゼロ)になっていると発信グループ情報送信部1000にて判定した場合(ステップS240にてYES)、処理はステップS320に遷移する。
【0090】
一方、TTLの値が0(ゼロ)になっていないと発信グループ情報送信部1000にて判定した場合(ステップS240にてNO)、発信グループ情報送信部1000は、発信グループ情報に含まれるTTLの値から1を減算した値を当該TTLの値として更新する(ステップS260)。次に、発信グループ情報送信部1000は、TTLの値を更新した発信グループ情報を、他ノードにブロードキャスト形式で送信する(ステップS280)。その後、処理はステップS320に遷移する。
【0091】
自ノードと他ノードとが同一のグループに属しないと判定部960にて判定した場合(ステップS220にてNO)、判定部960はその旨をノード切断部980に通知する。次に、ノード切断部980は、自ノードと他ノードとが同一のグループに属しない旨の通知を判定部960から受けて、発信グループ情報を送信してきた他ノードとの接続を切断する(ステップS300)。その後、処理はステップS320に遷移する。
【0092】
ステップS320では、通常ノードは、当該通常ノードに備えられた操作部(図示せず)に対してユーザによる電源オフ操作が行なわれたか否かについて判定する。もし、電源オフ操作が行なわれていないと通常ノードにて判定した場合(ステップS320にてNO)、処理はステップS200に遷移する。一方、電源オフ操作が行なわれたと通常ノードにて判定した場合(ステップS320にてYES)、通常ノードは図3における処理を終了する。
【0093】
次に、本実施形態におけるハブノードの接続管理に関する動作について説明する。図4は、P2Pネットワークシステム10へログインした後のハブノードの接続管理に関する動作例を示すフローチャートである。
【0094】
まず、ノード接続部560は、他ノード(ハブノードまたは通常ノード)と接続したか否かについて判定する(ステップS400)。もし、他ノードと接続していないとノード接続部560にて判定した場合(ステップS400にてNO)、処理はステップS460に遷移する。
【0095】
一方、他ノードと接続したとノード接続部560にて判定した場合(ステップS400にてYES)、判定部620は、ノード識別情報受信部600から出力されたノード識別情報が、ノードリスト情報記憶部540に記憶されているノードリスト情報に含まれているか否かについて判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する(ステップS420)。もし、自ノードと他ノードとが同一のグループに属すると判定部620にて判定した場合(ステップS420にてYES)、処理はステップS460に遷移する。
【0096】
一方、自ノードと他ノードとが同一のグループに属しないと判定部620にて判定した場合(ステップS420にてNO)、判定部620は、その旨をノード切断部640に通知する。次に、ノード切断部640は、ノード識別情報を送信してきた他ノードとの接続を切断する(ステップS440)。その後、処理はステップS460に遷移する。
【0097】
ステップS460では、ハブノードは、当該ハブノードに備えられた操作部(図示せず)に対してユーザによる電源オフ操作が行なわれたか否かについて判定する。もし、電源オフ操作が行なわれていないとハブノードにて判定した場合(ステップS460にてNO)、処理はステップS400に遷移する。一方、電源オフ操作が行なわれたとハブノードにて判定した場合(ステップS460にてYES)、ハブノードは図4における処理を終了する。
【0098】
次に、本実施形態におけるハブノードによる発信グループ情報の送信動作について説明する。図5は、P2Pネットワークシステム10へログインした後のハブノードによる発信グループ情報の送信動作例を示すフローチャートである。
【0099】
まず、発信グループ情報送信部680は、タイマ660から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する(ステップS600)。もし、所定時間が経過していないと発信グループ情報送信部680にて判定した場合(ステップS600にてNO)、処理はステップS660に遷移する。
【0100】
一方、所定時間が経過したと発信グループ情報送信部680にて判定した場合(ステップS600にてYES)、発信グループ情報送信部680は、ノードリスト情報記憶部540に記憶されているノードリスト情報に基づいて、自ノードが属するグループを示す発信グループ情報を生成する(ステップS620)。次に、発信グループ情報送信部680は、生成した発信グループ情報をブロードキャスト形式で他ノードに送信する(ステップS640)。
【0101】
最後に、ハブノードは、当該ハブノードに備えられた操作部(図示せず)に対してユーザによる電源オフ操作が行なわれたか否かについて判定する(ステップS660)。もし、電源オフ操作が行なわれていないとハブノードにて判定した場合(ステップS660にてNO)、処理はステップS600に遷移する。一方、電源オフ操作が行なわれたとハブノードにて判定した場合(ステップS660にてYES)、ハブノードは図5における処理を終了する。
【0102】
以上詳しく説明したように、本実施形態では、グループに属する複数のノード間でリソースをやり取りするP2Pネットワークシステム10において、ノードどうしの自律的な接続が発生した後、接続された両ノードが同一のグループに属するか否かについて判定し、同一のグループに属さないと判定した場合、両ノード間の接続を切断するようにしている。
【0103】
具体的には、グループA,Bに属する通常ノード200,220,240,260,280,300とハブノード140とが自律的に接続したとしても、同一のグループAに属する通常ノード200,220,240とハブノード140との間の接続のみが維持され、同じグループAに属さない通常ノード260,280,300とハブノード140と間の接続は切断されるため、グループAが拡大することを防止することができる。
【0104】
また、グループA,Bに属する通常ノード200,220,240,260,280,300とハブノード160とが自律的に接続したとしても、同一のグループBに属する通常ノード260,280,300とハブノード160との間の接続のみが維持され、同じグループBに属さない通常ノード200,220,240とハブノード160との間の接続は切断されるため、グループBが拡大することを防止することができる。
【0105】
また、ハブノード140,160は、通常ノードと自律的に接続した場合、ハブノード140,160が保持しているノードリスト情報と、通常ノードから10秒という短い時間間隔で送られてくるノード識別情報とを参照して、自ノード140,160と通常ノードとが同一のグループに属するか否かについて判定することにより、迅速なグループ管理を実現することができる。
【0106】
上述したように、ハブノード140,160ではノードリスト情報という最小限の情報に基づき同一のグループに属するか否かについて判定することにより、ハブノード140,160において果たすべき処理を単純化することができる。また、通常ノード200,220,240,260,280,300では発信グループ情報という最小限の情報に基づき同一のグループに属するか否かについて判定することにより、通常ノード200,220,240,260,280,300において果たすべき処理を単純化することができる。
【0107】
また、グループA,Bに属する通常ノード200,220,240,260,280,300どうしが自律的に接続したとしても、同一のグループに属する通常ノード間の接続のみが維持され、同じグループに属さない通常ノード間の接続は切断されるため、グループA,Bが拡大することを防止することができる。
【0108】
上述したように、通常ノード200,220,240,260,280,300ではハブノード140,160から発信された発信グループ情報に基づき同一のグループに属するか否かについて判定することにより、各通常ノードどうしが接続を開始したときに相互認証するといった特別な機能を当該各通常ノードに組み込む必要をなくすことができる。
【0109】
以上のように、ノード間の自律的な接続によってグループA,Bが拡大していくことを防止することにより、グループA,B内のネットワーク上に非常に多くのコマンド伝播が生じることを防止することができる。したがって、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができる。
【0110】
また、P2Pネットワークシステム10では、各ノードが自律的に他ノードを発見して接続を開始するアーキテクチャを維持したままなので、各ノードによる自律的なネットワークの構築のスケーラビリティを活かしつつ、グループ管理を実現することができる。
【0111】
なお、上記実施形態のグループ管理機能は、様々なネットワークシステムに適用することが可能である。例えば、P2Pプロトコルをベースにしたグループウェアに適用することができる。このグループウェアの中では、例えば、個人またはグループのスケジュールやタスクの管理、文書等のファイル管理およびプロジェクトの進捗管理を行うことができる。
【0112】
また、上記実施形態では、ハブノード140,160についてはノードリスト情報に基づき同一のグループに属するか否かについて判定するようにしたが、ハブノード140,160についても発信グループ情報に基づいて同一のグループに属するか否かについて判定するようにしても良い。この場合、ハブノード140,160は、ノードリスト情報受信部520、ノードリスト情報記憶部540、ノード識別情報受信部600および判定部620に代えて、自グループ情報受信部820、自グループ情報記憶部840、発信グループ情報受信部940、判定部960および発信グループ情報送信部1000を備える。また、ハブノード140,160は、ノードリスト情報問い合わせ部720、ノード識別情報記憶部740およびノード識別情報送信部760を備える必要がない。通常ノード200,220,240,260,280,300は、タイマ910およびノード識別情報送信部920を備える必要がない。
【0113】
また、上記実施形態では、サーバ120とハブノード140,160とを別々にする例について説明したが、本発明はこれに限定されない。例えば、サーバ120があるグループに属するハブノードを兼ねても良い。この場合、サーバ120はあるグループに属するノードということになる。そして、サーバ120はあるグループの発信グループ情報を送信する。また、サーバ120が全グループのハブノードを兼ねても良い。この場合、サーバ120は全グループに属するノードということになる。そして、サーバ120は全グループの発信グループ情報を送信する。
【0114】
また、上記実施形態では、各グループにおいて、ハブノードが1つ存在する例について説明したが、複数存在するようにしても良い。例えば、ハブノードと通常ノードとの区別をなくし、全てのノードが発信グループ情報をブロードキャスト送信するとともに、全てのノードがノードリスト情報ではなく発信グループ情報に基づいて同一のグループに属するか否かを判定するようにしても良い。ただし、ハブノードの数が多数になると、ネットワーク上における発信グループ情報の伝播が増加する。そのため、ハブノードの数は多くなりすぎないようにすることが好ましい。
【0115】
また、上記実施形態では、ハブノードは、通常ノードと自律的に接続した場合、当該ハブノードが保持している一覧リストと、接続した通常ノードから所定時間(10秒)間隔毎に送られてくるノード識別情報とを参照して、自ノードと通常ノードとが同一のグループに属するか否かについて判定する例について説明した。しかしながら、ノード識別情報を受信するタイミングによっては、ハブノードは、自ノードと通常ノードとが同一のグループに属するか否かについて迅速に判定することができない。そのため、次のように処理を行っても良い。
【0116】
すなわち、ハブノードは、通常ノードとの間で自律的な接続が生じた場合、その通常ノードに対してノード識別情報の送信要求を行う。そして、送信要求に応答して通常ノードから送信されたノード識別情報を受信し、ハブノードが保持している一覧リストと当該受信したノード識別情報とを参照して、自ノードと通常ノードとが同一のグループに属するか否かについて判定する。このようにすれば、ハブノードは、通常ノードとの間で自律的な接続が生じた場合、同一のグループに属するか否かについてより迅速に判定することができる。
【0117】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0118】
10 P2Pネットワークシステム
120 サーバ
140,160 ハブノード
200,220,240,260,280,300 通常ノード
540 ノードリスト情報記憶部
560,860 ノード接続部
600 ノード識別情報受信部
620,960 判定部
640,980 ノード切断部
700,940 発信グループ情報受信部
760,920 ノード識別情報送信部
840 自グループ情報記憶部


【特許請求の範囲】
【請求項1】
グループに属する複数のノード間でリソースをやり取りするP2Pネットワークシステムにおいて、
前記ノードは、自ノードと他ノードとを接続する接続部と、
前記接続部により前記他ノードと接続した後、前記自ノードと前記他ノードとが同一のグループに属するか否かについて判定する判定部と、
前記判定部により同一のグループに属さないと判定された場合、当該他ノードとの接続を切断する切断部とを備えたことを特徴とするP2Pネットワークシステム。
【請求項2】
請求項1に記載のP2Pネットワークシステムにおいて、
前記ノードは、前記自ノードが属するグループを示す自グループ情報を記憶する自グループ情報記憶部と、
前記接続部により前記他ノードと接続した後、前記自ノード以外の別ノードから発信されたグループ情報であって前記別ノードが属するグループを示す発信グループ情報を前記他ノードから受信する発信グループ情報受信部とを更に備え、
前記判定部は、前記発信グループ情報受信部により前記他ノードから受信された前記発信グループ情報により示されるグループと前記自グループ情報記憶部に記憶されている前記自グループ情報により示されるグループとが一致するか否かを判定し、一致しないと判定した場合、前記自ノードと前記他ノードとが同一のグループに属しないと判定することを特徴とするP2Pネットワークシステム。
【請求項3】
請求項2に記載のP2Pネットワークシステムにおいて、
前記別ノードは、グループ内の複数のノードを代表するハブノードであり、
前記発信グループ情報受信部は、前記ハブノードが属するグループを示す発信グループ情報を前記他ノードから受信することを特徴とするP2Pネットワークシステム。
【請求項4】
請求項2に記載のP2Pネットワークシステムにおいて、
前記ノードには、グループ内の複数のノードを代表するハブノードとそれ以外の通常ノードとがあり、
前記通常ノードは、当該通常ノードを識別するノード識別情報を前記ハブノードに送信するノード識別情報送信部を更に備え、
前記ハブノードは、前記自グループ情報記憶部に代えて、当該ハブノードが属するグループに含まれる全てのノードをそれぞれ識別するノード識別情報を含むノードリスト情報を記憶するノードリスト情報記憶部を備えるとともに、
前記接続部により前記通常ノードと接続した後、当該通常ノードを識別するノード識別情報を前記通常ノードから受信するノード識別情報受信部を備え、
前記判定部は、請求項2に記載の判定に代えて、前記ノード識別情報受信部により受信された前記ノード識別情報が前記ノードリスト情報記憶部に記憶されている前記ノードリスト情報に含まれるか否かを判定し、含まれないと判定した場合、前記ハブノードと前記通常ノードとが同一のグループに属しないと判定することを特徴とするP2Pネットワークシステム。
【請求項5】
グループに属する複数のノード間でリソースをやり取りするP2Pネットワークシステムにおいて前記グループの管理を行うためのグループ管理用プログラムであって、
自ノードが他ノードと接続した後、前記自ノードと前記他ノードとが同一のグループに属するか否かについて判定する判定手段、および、
前記判定手段により同一のグループに属さないと判定された場合、当該他ノードとの接続を切断する切断手段として機能させるためのコンピュータ読み取り可能なP2Pネットワークにおけるグループ管理用プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−78067(P2011−78067A)
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願番号】特願2009−230392(P2009−230392)
【出願日】平成21年10月2日(2009.10.2)
【出願人】(502220160)アリエル・ネットワーク株式会社 (3)
【Fターム(参考)】