本発明は通信方法、通信装置、プログラム及び通信システムに係り、特に通信端末としての通信装置が相互に方向ごとにリンクを張り当該リンクを通じてメッセージを授受する通信方法或いは通信システム、同方法を実現するための通信装置、同通信装置を制御するコンピュータを動作させるためのプログラムに関する。
いわゆるピュアP2Pシステムと称される、各通信端末が相互に方向ごとにリンクを張り当該リンクを通じてメッセージを授受する通信システムでは、各通信端末(以下「ピア」と称する)のグループを構成し、コンテンツの流通・配信等を効率よく行うようにする方式が採られる場合がある。
このピュアP2Pシステムは特定の中央サーバを必要とせずピア同士がメッセージを中継しあうことでネットワークを構成する。
ピアは他の複数のピアと定常的な接続を張り(以下接続リンクと称する)、データを必要とするときは接続リンクを直接張っているピア(以下隣接ピアと称する)同士でメッセージをバケツリレー式に中継し合う。
ここで中継されるメッセージとして、データの問い合わせに利用する「検索要求メッセージ」(同メッセージ中の問い合わせ内容を「検索クエリ」と称する)、「検索応答メッセージ」等が使用される。
検索要求メッセージを受け取ったピアはそのピア自身が該当するデータを持っていれば検索応答メッセージを返信し、持っていなければ更に隣接ピアに当該検索要求メッセージを中継する。そしてこの検索応答メッセージは検索要求メッセージが辿った経路と逆の経路を中継されて検索要求元ピアに返信される。
各メッセージはTTL(Time To Live:ピアをホップして中継可能な回数の上限値)値(「メッセージライフ値」に対応)を持ち、中継回数はこのTTL値で限定される。
又各ピアは、一度中継したメッセージと同一のメッセージを再度受け取った場合、これを破棄する。
このようなP2P技術は周知のファイル共有ソフトウェアであるWinnyやGnutella等で利用されている(非特許文献1参照)。
またピュアP2Pシステム内で趣味や目的に応じてグループを構成する技術はJXTA(URL:http://www.jxta.org/)などで提案されている(非特許文献2参照)。
特開2005−70987号公報
特開2004−246786号公報
特開2004−102531号公報
「Winnyの技術」、ISBN4-7561-4548-5、金子勇著、アスキー書籍出版編集部編
「JXTAプロトコル」、URL:http://spec.jxta.org/nonav/v1.0/docbook/JXTAProtocols.html
本発明はこのようなピュアP2Pシステムに適用可能な通信システムに係るものであり、トラフィックの効果的な低減を可能にする構成を提供することを目的とする。
本発明では、通信システムに含まれる各通信端末が、受信したメッセージが有するグループ識別子を参照するとともにそのメッセージライフ値とメッセージライフ値の初期値とを比較することで当該メッセージを発信した通信端末が属するグループおよび自己との距離を把握し、もってリンク(上記「接続リンク」に対応)を通じて自己と所定距離内に接続された通信端末が属するグループおよび自己との距離を方向ごとに得て接続リンク管理情報として保有し、各通信端末は当該接続リンク管理情報に基づき、方向ごとの、所定距離内にある特定のグループに属する通信端末の数および自己との距離を、当該特定のグループに係る優先度情報として提供するようにした。
この構成では各通信端末が接続リンク管理情報に基づき、方向ごとの、所定距離内にある特定のグループに属する通信端末の数および自己との距離を、当該特定のグループに係る優先度情報として提供するようにしたため、どの方向が検索要求メッセージを転送するためにより効率的かを判断することによって転送方向を限定でき、もって受信された方向を除く全方向に転送する場合に比し、トラフィックを効果的に低減可能である。
本発明によればピュアP2Pに適用可能な通信システムとして、効果的にトラフィックを低減可能な構成を提供することができる。
本発明の実施例による通信システムを構成する通信装置の機能を説明するための動作フローチャートである。
本発明の実施例による通信システムに参加するための参加要求メッセージが伝播される様子を説明するためのリンク接続図である。
本発明の実施例による通信システムを構成する通信装置が有する接続リンク管理情報の内容を説明するためのリンク接続図(その1)である。
図2の場合の動作シーケンス図である。
本発明の実施例による通信システムを構成する通信装置が有する接続リンク管理情報の内容を説明するためのリンク接続図(その2)である。
図5の状態において検索要求が受信され、これを転送する場合の状況を説明するためのリンク接続図である。
図6の場合の動作シーケンス図である。
本発明の他の実施例による通信システムを構成する通信装置の機能を説明するための動作フローチャートである。
図8の実施例による通信システムにおいて検索要求が転送され、これに対する検索応答が返信される場合の状況を説明するためのリンク接続図(その1)である。
図9に示される検索成功時の検索成功経路記憶機能を説明するためのリンク接続図(その1)である。
図9に示される検索成功時の検索成功経路記憶機能を説明するためのリンク接続図(その2)である。
図9に示される検索成功時の検索成功経路記憶機能を説明するためのリンク接続図(その3)である。
本発明の更に他の実施例による通信システムの特徴を説明するためのリンク接続図である(その1)。
本発明の更に他の実施例による通信システムの特徴を説明するためのリンク接続図である(その2)。
本発明の更に他の実施例による通信システムの特徴を説明するためのリンク接続図である(その3)。
本発明の更に他の実施例による通信システムの特徴を説明するためのリンク接続図である(その4)。
本発明の更に他の実施例による通信システムの特徴を説明するためのリンク接続図である(その5)。
本発明の更に他の実施例による通信システムの特徴を説明するためのリンク接続図である(その6)。
本発明の更に他の実施例による通信システムの特徴を説明するためのリンク接続図である(その7)。
本発明の実施例に適用可能な参加要求メッセージ(a)及び離脱要求メッセージ(b)のそれぞれの構成例を示す図である。
本発明の実施例に適用可能な検索要求メッセージ(a)、検索応答メッセージ(b)及び推薦情報メッセージ(c)のそれぞれの構成例を示す図である。
本発明の各実施例による通信システムを構成する各通信装置をコンピュータで実現する場合について説明するためのコンピュータのハードウェア構成例を示すブロック図である。
符号の説明
500、A1,A2,A3,A4,B1,B2,C1,C2,C3,C4,C5,D1、D2 通信装置(ピア)
d1,d2,d3,d4 接続方向
Ss 検索要求記憶部
Tc,Tc1,Tc2,Tc3,Tc3 接続リンク管理テーブル
Ts,Ts1,Ts2,Ts3,Ts3 検索成功経路管理テーブル
本発明の実施例を説明する前に、同実施例による作用効果の説明の前提としての、従来の構成における問題点を詳細に説明する。
上記ピュアP2Pシステムでは、ピア数が増大した場合上記検索要求メッセージによりネットワーク帯域が圧迫されて効率が悪い等の問題点が想定される。
またこのピュアP2Pシステムをコンテンツ配信サービスなどに利用する場合、購読サービスや地域区別などのためのピアのグループ化、データのグループ内での限定共有、グループ内ピアの通信をグループ外ピアから秘匿するなどの機能が必要となる。しかしながら上記JXTA技術ではグループ内での通信方法などの具体的な言及はなされていない。
また検索内容・データを中経路上のピアがキャッシュして検索効率を上げる手法(特許文献1、特許文献2参照)、ピアのグループ化により検索効率を向上する手法(特許文献3参照)等が提案されているが、ピアのグループ内でのデータの限定共有や通信内容の秘匿に関する適用についての記載はみられない。
本発明の実施例によればこれら問題点を解決することが可能である。
すなわち本発明の実施例によれば、ピュアP2Pシステム内で上記課題を解決し、ピアをグループ化してグループ内でのデータの限定共有と、グループ外ピアからの通信内容秘匿とを行った上で、検索トラフィック等を低減して効率的な通信を行うことが可能となる。
本発明の実施例(後述の実施例1、2に対応)による通信システムは、ピアがグループ識別子で一意に特定されるグループに属し、ピア間で相互に授受する検索要求メッセージに検索要求元ピアがグループ識別子を付与するピュアP2Pシステムであって、ピアが発信、または受信し隣接ピアに転送した検索要求メッセージに付与されたグループ識別子とその応答メッセージの受信経路を一定期間記憶する記憶手段と、この記憶された検索要求メッセージと検索応答メッセージの送受信経路とグループ識別子とから、検索要求メッセージを発信または転送する経路に点数を算出する手段と、受信した検索要求メッセージに付与されたグループ識別子と前記算出された点数とに応じて検索要求メッセージを転送する経路を決定する手段とを有する。
すなわちこの通信システムではピアはあらかじめ一意なグループ識別子で識別されるグループに属しており、P2Pシステム内のピア同士で中継する検索要求メッセージ(後述する図21(a)参照)には、検索要求元のピアの属するグループ識別子が付与されている。検索要求メッセージを受信したピアは、その検索要求メッセージのグループ識別子と自己が属するグループ識別子とが一致する場合にのみその検索クエリ内容を確認し、自己が該当するデータを持っていれば該当するURL等を記述した検索応答メッセージ(後述する図21(b)参照)を返信する。他方検索要求メッセージに付与されたグループ識別子と自己が属するグループ識別子とが一致しない場合はそのまま隣接ピアへ検索要求メッセージを中継する。これにより検索クエリ内容を解析するピアを同一グループ内に限定することができる。
この構成では、ピアが発信し、または他ピアから受信し中継した検索要求メッセージに付与されたグループ識別子とその検索応答メッセージの受信経路とを一定時間記憶する記憶手段を持ち、この記憶された検索要求/検索応答メッセージの送受信経路とそのグループ識別子から、検索要求メッセージを発信または転送する経路の点数を算出し、受信した検索要求メッセージに付与されたグループ識別子と前記算出された点数とから、当該検索要求メッセージを転送する経路を決定する。この構成によれば、検索要求メッセージを全接続リンクに転送するのではなく、そのグループに係る検索要求メッセージとこれに対応する検索応答メッセージとが送受信されている(すなわち検索が成功している)接続リンクを優先的に選択して転送することが可能となり、もって無駄なネットワークトラフィック(すなわち検索要求メッセージが到達しない、または検索が失敗する接続リンクにメッセージを転送する場合のトラフィック)を効果的に低減し得る。
又本発明の他の実施例(後述の実施例1、2に対応)による通信システムは、ピアがグループ識別子で一意に特定されるグループに属し、ピア間で相互に授受する検索要求メッセージに検索要求元ピアがグループ識別子を付与するピュアP2Pシステムであって、ピアが新たなピアとの接続リンクを確立する際、自己の属するグループ識別子を含む参加要求メッセージ(後述する図20(a)参照)をP2Pシステム内に伝播させる手段を有し、またこの参加要求メッセージの受信によりピアが前記検索要求メッセージの転送経路に点数を算出する手段と、受信した検索要求メッセージに付与されたグループ識別子と前記算出された点数とに応じて検索要求メッセージを転送する経路を決定する手段を有する。
この構成ではピアが新たなピアとの接続リンクを確立する際、自己の属するグループ識別子を含む参加要求メッセージを、検索要求メッセージ同様に、あるTTL値を設定しその新たな接続リンクからピュアP2Pシステム内に発信する手段を設ける。この参加要求メッセージを受信したピアはこれを隣接ピアへ転送し、その結果参加要求メッセージはピュアP2Pシステム内のピアに伝播される。この参加要求メッセージを受信したピアは、当該参加要求メッセージを受信した接続リンクと同参加要求メッセージに含まれるグループ識別子とから、当該接続リンクに係る点数を算出する。そしてその後受信した検索要求メッセージに付与されたグループ識別子と前記算出された点数とから、当該検索要求メッセージを転送する経路を決定する。
すなわちこの構成によれば、各ピアはピュアP2Pシステム内の、参加要求メッセージが到達し得る範囲のピアについて、どの接続リンク方向にどのグループのピアが存在するか、その個数及びホップ数(TTL値より求めることが可能)を認識することができ、この情報に基づいて、その後受信した検索要求メッセージを転送すべき接続リンクを選択することができる。
又上記いずれかの実施例による通信システムでは、ピアが接続リンクを切断する際、自己の属するグループ識別子を含む離脱要求メッセージ(後述する図21(b)参照)をP2Pシステム内に伝播させる手段を有し、またこの離脱要求メッセージの受信によりピアが前記検索要求メッセージの転送経路に点数を算出(この場合減算)する手段を有するようにすることが可能である(後述の実施例1,2に対応)。
この構成によれば、ピアが接続リンクを切断する際、自己の属するグループ識別子を含む離脱要求メッセージを、上記参加要求メッセージの場合と同様にして、切断する予定の接続リンクから、当該ピュアP2Pシステム内に発信する手段を設けることにより、離脱要求メッセージを受信したピアは、離脱要求メッセージを受信した接続リンクと離脱要求メッセージに含まれるグループ識別子とから、この接続リンクの点数を更新する。この場合、上記参加要求メッセージの場合と逆に、参加要求メッセージによって一旦加算された点数を減算させることにより、一旦参加しその後切断により離脱したピアの分の点数をキャンセルし、前記参加の前の状態に戻すことが可能となる。
又ピアが新たなピアとの接続リンクを確立する際、自己が有する、その他の接続リンクに係る点数に基づき、複数のグループ識別子を含む参加要求メッセージを接続先のP2Pシステム内に伝播させる手段を設けることが可能である(後述する実施例5に対応)。
この構成によれば新たに接続リンクを確立するピアが、すでに確立しているその他の接続リンクに係る点数に基づき、自己の参加要求メッセージだけでなく、上記すでに確立しているその他の接続リンク側のピアの参加要求メッセージを併せて発信する機能を設ける。この機能によれば、当該ピアが、上記すでに確立しているその他の接続リンクに係る点数に基づき、自己の参加要求メッセージに加え、上記すでに確立しているその他の接続リンク側の他のピアの参加要求メッセージを併せて発信することにより、上記すでに確立しているその他の接続リンク側のピアの各々が個別に参加要求メッセージを発信する場合と同様の効果が得られる。
又ピアが接続リンクを切断する際、自己の持つその他の接続リンクに係る点数に基づき、複数の離脱要求メッセージを切断先のP2Pシステム内に伝播させる手段を設けても良い(後述する実施例6に対応)。
この場合、上記の新たな接続を確立する場合同様、ピアが接続リンクを切断する際、その他の接続リンクに係る点数に基づき、自己の離脱要求メッセージだけでなく、その他の接続リンク側のピアの離脱要求メッセージを併せて発信する機能を付け加える。この機能によれば、当該ピアが、上記その他の接続リンクに係る点数に基づき、自己の離脱要求メッセージに加え、上記その他の接続リンク側の他のピアの離脱要求メッセージを併せて発信することにより、上記その他の接続リンク側のピアの各々が個別に離脱要求メッセージを発信する場合と同様の効果が得られる。
又ピアが隣接ピアとの接続リンクの切断を検出する手段を有し、当該手段により切断を検出した際には、当該切断に係る接続リンクに係る点数に基づき、複数の離脱要求メッセージを切断先のP2Pシステム内に伝播させる手段を設けるようにしても良い(後述する実施例7に対応)。
この場合ピアは隣接ピアとの接続リンクを監視し、不意のネットワーク停止や隣接ピアの通信不能状態などによる、接続リンクの切断を検出する手段を有し、そのようにして切断を検出した際、その切断された接続リンクに係る点数に基づき、複数の離脱要求メッセージを、切断されていない側の接続リンクに対して発信する機能を有する。この構成によれば、上記離脱要求メッセージを送信せずに切断されてしまったような場合であっても、これに隣接するピアが当該切断に係るピアの代わりに離脱要求メッセージを送信することが可能となり、ピュアP2Pシステム内のピアの接続リンクに係る点数の不整合が生ずることを防止可能となる。
又ピアが受信した検索要求メッセージに含まれるグループ識別子、そのTTL値、前記接続リンクごとの点数に基づき、自己または隣接ピアを、新たな接続リンクとして検索要求元ピアに推薦する推薦情報メッセージ(後述する図21(c)参照)を応答する手段を設け、この推薦情報メッセージを受信した検索要求元ピアが推薦されたピアとの接続リンクを確立することを可能にするように構成しても良い(後述する実施例3に対応)。
この構成によれば、ピアが受信した検索要求メッセージに含まれるグループ識別子、そのTTL値、接続リンクに係る点数に基づき、自己または隣接ピアを、検索要求元ピアが新たに接続すべき接続リンクとして、検索要求元ピアにこれを推薦する推薦情報メッセージを応答する手段を設け、この推薦情報メッセージを受信した検索要求元ピアが推薦されたピアとの接続リンクを確立することを可能にする。その結果、検索要求元ピアが発信した検索要求メッセージに付与されたグループ識別子と同じグループに自己が属するような場合、或いは同じグループ識別子についての点数を有する接続リンクを有する場合、当該検索要求元ピアに対し、自己または隣接するピアとの接続リンクを確立するよう促すことで、そのグループに係る検索効率の向上を図ることができる。
又ピアが受信した参加要求メッセージに含まれるグループ識別子、そのTTL値、接続リンクごとの点数に基づき、自己または隣接するピアを新たな接続リンクとして推薦する推薦情報メッセージを返信する手段を設けても良い(後述する実施例4に対応)。
この構成によれば、ピアが受信した参加要求メッセージに含まれるグループ識別子、そのTTL値、接続リンクに係る点数に基づき、自己または隣接するピアを、参加要求メッセージ送信元ピアの新たな接続先のピアとして推薦する推薦情報メッセージを応答する手段を設け、この推薦情報メッセージを受信した当該参加要求メッセージ送信元ピアが、当該新たな接続先として推薦されたピアとの接続リンクを確立することを促す。その結果、当該参加要求メッセージ送信元のピアが、既存の接続リンクによる転送経路よりも、自己の属するグループのピアへ検索要求メッセージを到達させやすいピアと新たな接続リンクを張るように促すことが可能となり、そのグループに係る検索効率を向上させることができる。
又ピアが属するグループに固有の暗号鍵を設け当該暗号鍵によって検索要求メッセージ内の検索クエリ内容を暗号化し、検索クエリ内容を同じグループに属するピアのみが解読可能な構成を設けるようにすることが望ましい。
この構成によれば、ピアはグループ固有の暗号鍵をそれぞれが保持し、それによって検索クエリ内容を暗号化して検索要求メッセージを送信する。検索要求メッセージを受信したピアは、当該検索要求メッセージに付与されたグループ識別子に基づいてメッセージを転送するが、検索要求元ピアと自己が同じグループに属し該当する暗号鍵を保持している場合にのみ当該検索クエリ内容を解読し、検索応答メッセージや推薦情報メッセージの返信を行うことが可能となる。このグループの暗号鍵については、共通鍵方式や非対称鍵に基づく方式等、同一グループに属するピアのみがその検索クエリ内容を解読可能とし得る構成であればいずれの方式も適用可能である。
以上、説明したように本発明の実施例によれば、ピュアP2Pシステムにおいてピアをグループ化し、通信内容の解読を同じグループ内のピアに限定しつつ、少ないトラフィックで同じグループのピアに検索を到達させることができる。
又本発明の実施例では、上記検索要求・応答内容やデータを経路中のピアがキャッシュする等の従来技術をも、同じグループのピア同士について併せて適用することが可能となる。
以下に図とともに本発明の実施例の構成をより詳細に説明する。
本発明の実施例による、コンテンツ流通インフラとして構成されるピュアP2Pシステムでは、ピアが契約サービスごとに一意なグループ識別子で区別されるグループに属し、同じグループのピア間でのみコンテンツ交換可能とされている。
図1は本発明の実施例1によるピュアP2Pシステムに用いる各ピアの構成例を示すブロック図である。
図1に示されるように、各ピア500は参加要求メッセージ又は離脱要求メッセージを受信するとそのメッセージに含まれるグループ識別子、ホップ数(すなわちTTL値、以下同様)、メッセージを受信した接続リンクの情報を参照し(ステップS1)、図2〜7とともに後述するごとくに接続リンクの点数を算出して接続リンク管理テーブルTcに追加またはここから削除し(ステップS3)、ホップ数を一つ減算し(ステップS2)、さらにホップ数が残っている(すなわちゼロでない)場合は、当該参加要求メッセージ/離脱要求メッセージを隣接ピアに転送する。
又500ピアは検索要求メッセージを受信すると、そのメッセージに含まれる情報を参照し(ステップS11)、そのグループ識別子が自己と一致するかどうかを確認し(ステップS12)、グループ識別子が一致する場合(Yes)、自己の保持するコンテンツに、当該検索要求メッセージが要求するものと一致するコンテンツがあるかどうかを検索し(ステップS14)、検索に成功した場合、該当するコンテンツのURL等を記述した検索応答メッセージを返信する。
又、グループ識別子が不一致(ステップS12の「不一致」)、または自己が有するコンテンツの検索に失敗した場合、当該ピアはそのメッセージが有するホップ数を一つ減算し、さらにホップ数が残っている場合(すなわち未だゼロに至っていない場合)、接続リンク管理テーブルTcに各接続リンクの点数を問い合わせ(ステップS17)、検索要求メッセージを転送する接続リンクを決定し(ステップS16)、その接続リンクを介して隣接ピアに当該検索要求メッセージを転送する。
以下図2とともに、上述の構成を有するピア500によるメッセージの転送動作及び転送経路計算動作の一例を説明する。
図2の例ではピアA1がピュアP2Pシステムに参加するときの参加要求メッセージの伝播の例をしめす。
図2の例では、各ピアA1,A2,A3,B1,C1,C2は、それぞれグループA/B/Cに属する。ここではピアを示す記号がその属するグループを示すものとする(以下同様)。すなわちA1,A2,A3はグループAに属し、B1はグループBに属し、C1,C2はグループCに属する。
まずピアA1がピアC1と、方向d1の接続リンクを新規に確立し、その接続リンク方向d1に参加要求メッセージを送信する(ステップS101)。
ここで各ピアの接続リンクの方向(d1、d2,d3,d4)は、例えば同ピアが有する外部接続用のそれぞれの「ポート」に対応し、互いに独立して個々に設定される(以下同様)。
例えば当該参加要求メッセージのホップ数を3とすると、このメッセージは図2中、ピア(C1/B1/D1/C2/A2/A3)に転送される。
すなわち、ピュアP2Pシステムでは一般にメッセージ(参加要求メッセージ、離脱要求メッセージ、検索要求メッセージ等)が有するホップ数はピアを経由するごとに1ずつ減算され、ホップ数がゼロに至るとそれ以上転送されない。したがってその時点(すなわちホップ数がゼロとなった時点)で当該メッセージの目的が達成されない場合、当該メッセージは破棄される(以下同様)。
図2の例の場合、新たに参加するピアA1から発信された参加要求メッセージは発信当初、上記の如くホップ数が3(すなわち所定の初期値)とされている。
これが接続方向d1に発信され(ステップS101)、これがピアC1に受信された時点でそのホップ数が1減算されて2となる。この時点で未だホップ数はゼロに至っていないため、更にピアC1から、受信方向d3以外の方向d1,d2のそれぞれの接続リンクに当該参加要求メッセージが転送される(ステップS102,S103)。
このうちピアB1で受信された参加要求メッセージは、ここでそのホップ数が1減算されて1となり、この時点で未だホップ数はゼロに至っていないため、更にピアB1から、その受信方向d3以外の方向d1,d2,d4の接続リンクに対し、当該参加要求メッセージが転送される(ステップS104,S105,S106)。
それらがそれぞれピアA3,A2,C2で受信され、これら各ピアでは、受信しメッセージのホップ数を1減算する。その結果ホップ数は各々ゼロとなる。その結果、それ以上当該参加要求メッセージが転送されることはない。
その結果、例えばピアB1は左下の方向d3に存在するピアC1との接続リンク方向のホップ数2の距離にグループAのピア、すなわちA1が存在することを認識する。
これは、上記の如く各メッセージのホップ数はその初期値として3が設定され、ピアを経由するごとにその値が1ずつ減算される。したがってメッセージを受信したピアでは、「そのホップ数を参照し、これを上記所定の初期値3から減算して1を加算する」ことにより、当該メッセージが発信されたピアから何番目のピアであるかを認識可能であるからである。
具体的には、ピアC1はピアA1からホップ数3の参加要求メッセージを受信しているため、3−3+1=1のホップ数計算により、自己が一番目のピアであると認識でき、すなわち発信元のピアA1が自己からホップ数1の距離にあることを認識できる。
同様に上記ピアB1ではピアC1を経由してピアA1からの参加要求メッセージ(ホップ数=2)を受信しているため、3−2+1=2のホップ数計算により、自己が2番目のピアであると認識でき、すなわち発信元のピアA1が、自己からホップ数2の距離にあることを認識できる。他のピアについても同様である。
図3は、図2のピアA1の参加要求メッセージを受信した結果得られる、図2のピアB1の持つ各接続リンクに係る点数の一例を示す。
ここでピアが持つ接続リンクに係る点数とは、各ピアにおいて図1とともに上述の接続リンク管理テーブルTcにて管理される情報であり、当該ピアの方向ごとの、当該ピアの周辺に存在するピアについての、その属するグループごとの、当該ピアとの距離(ホップ数)及びその個数の情報を意味する。
ここではピアB1において、例えばその左下の方向d3の接続リンクについて、上記グループAのピア(この例の場合ピアA1のみ)について、「A:2ホップ×1」として、そのホップ数「2」と個数「1」とが管理される。
これは上記の如く、ピアA1からの参加要求メッセージを受信してその情報を参照することにより、グループAに属するピアが、ホップ数2の距離に存在することを認識した結果である。
尚図20,15とともに後述するごとく、各メッセージには、当該メッセージの発信元のピアが属するグループを示す「グループ識別子」が含まれており、もってメッセージを受信した各ピアは、当該メッセージを発信したピアが属するグループを認識可能である。
又このピアB1の、同上方向d3の接続リンクについては、図2に示すごとく、ホップ数「1」の距離にグループ「C」に属するピアC1が「1」個存在し、同ピアC1を経由して更にホップ数1の距離(合計ホップ数:「2」)にグループ「D」に属するピアD1が「1」個存在する。
これらのピアについても、それぞれが当該ピュアP2Pシステムに参加した際の参加要求メッセージにより、その属するグループ及び距離がピアB1に認識されており、その結果、それらの情報が図3に示すごとく、ピアC1について「C:1ホップ×1」として、ピアD1について「D:2ホップ×1」として管理されている。当該ピアB1のそれ以外の方向d1,d2,d4、更に他のピアC1,D1,C2,A2,A3の、各々の全ての方向についても同様である。
図4は、図2とともに上述の、参加要求メッセージの転送動作の流れを説明するためのシーケンス図である。
図4中、ピアA1は隣接するピアC1に対し接続リンクを張り(ステップS51)、当該ピアC1から当該接続リンクを張ったことに対する了解を示すメッセージを受信する(ステップS52)。
これに応じてピアA1はここで張られた接続リンクを通して参加要求メッセージを発信する(ステップS53)。
当該メッセージには図示のごとく、「参加要求メッセージ」であることを示すJOINの記述、グループ識別子である「Group A」、ホップ数「3」が含まれている。
これを受信したピアC1は当該メッセージのホップ数を減算するホップ数計算を行い、当該メッセージのJOINの記述から、自己が有する接続リンク管理テーブルTc(図1とともに上述)に対して新たなピアに関する情報を追加する動作を起動し、当該メッセージのグループ識別子から当該新たなピアがグループ「A」に属することを認識し、当該メッセージのホップ数「3」から当該新たなピアまでの距離がホップ数「1」であると認識し、これらの情報を上記接続リンク管理テーブルTcに記載してこれを更新する(ステップS54;図1のステップS3)
そして上記の如くホップ数が1減算されて2とされた参加要求メッセージを隣接するピアB1に転送する(ステップS56)。
これを受信したピアB1は当該メッセージのホップ数を減算するホップ数計算を行い、当該メッセージのJOINの記述から、自己が有する接続リンク管理テーブルTcに対して新たなピアに関する情報を追加する動作を起動し、当該メッセージのグループ識別子から当該新たなピアがグループ「A」に属することを認識し、当該メッセージのホップ数「2」から当該新たなピアまでの距離がホップ数「2」であると認識し、これらの情報を上記接続リンク管理テーブルTcに記載してこれを更新する(ステップS56;図1のステップS3)。その結果、図3とともに上述のごとく、ピアB1の接続リンク管理テーブルTcにおいて「A:2ホップ×1」の情報が追加される。
以上の説明は新たにピア(この例ではピアA1)が当該ピュアP2Pシステムに加わる際、当該ピアからの参加要求メッセージの伝搬によって、一定の距離(ホップ数)に存在する各ピアが、当該新たなピアに関する情報により、その接続リンク管理テーブルTcを更新する動作について説明した。
ここでは具体的には、当該新たなピアからホップ数3以内の距離で接続された各ピアの接続リンク管理テーブルTcにおいて、当該新たなピアに関する情報が加算されることになる。
例えば図3の例では、ピアB1の接続リンク管理テーブルTcにおいて、その方向d3について、当該新たなピア(この例ではA1)の情報、すなわち「A:2ホップ×1」が追加されている。このような新たなピアに係る情報の追加を、以下「点数の加算」とも称する。
又この動作と逆方向の動作が、すでに当該ピュアP2Pシステムに参加中のピアが、当該ピアから離脱する際に実行される。
この場合、離脱するピアは当該ピュアP2Pシステムにおいて離脱要求メッセージを伝搬させ、一定の距離(ホップ数)に存在する各ピアが、当該離脱要求メッセージに含まれる、当該離脱するピアに関する情報により、その接続リンク管理テーブルTcを更新する。
例えば、当該離脱するピアが上記A1であったと仮定すると、当該離脱するピアからホップ数3以内の距離で接続された各ピアの接続リンク管理テーブルTcにおいて、当該離脱するピアに関する情報が減算されることになる。
例えば図3の例では、ピアB1の接続リンク管理テーブルTcにおいて、その方向d3について、当該離脱するピア(この例ではA1)の情報、すなわち「A:2ホップ×1」が削除されることになる。このような、離脱するピアに係る情報の削除を、以下「点数の減算」とも称する。
図5は、図2〜4とともに上述のように、新たに参加したピアA1に関する点数を各ピアがその接続リンク管理テーブルTcにおいて加算した後の、ある時点におけるピュアP2Pシステムの構成と、ピアB1がその接続リンクごとに保持している点数とを示す。
すなわちピアB1の接続リンク管理テーブルTcにおいて管理された、方向d1〜d4ごとの接続リンクの点数において、方向d1の接続リンクでは、図5のテーブルTc1に示すごとく、グループ「A」に属するピア(この例ではA3)が「1」つ、ホップ数1の距離で存在する旨が記録されている。
同様に方向d2の接続リンクでは、図5のテーブルTc2に示すごとく、グループ「A」に属するピア(図示せず)が「3」個、ホップ数「3」の距離で存在し、グループ「D」に属するピア(図中、D2)が「1」個、ホップ数「1」の距離で存在する旨が記録されている。
同様に方向d3の接続リンクでは、図5のテーブルTc3に示すごとく、グループ「A」に属するピア(図中、A1,A2)が「2」個、ホップ数「2」の距離で存在し、グループ「C」に属するピア(図中、C2)が「1」個、ホップ数1の距離で存在し、グループ「D」に属するピア(図中、D1)が「1」個、ホップ数「2」の距離で存在する旨が記録されている。
同様に方向d4の接続リンクでは、図5のテーブルTc4に示すごとく、グループ「C」に属するピア(図中、C1)が「1」個、ホップ数「1」の距離で存在する旨が記録されている。
この例では上記方向d1〜d4ごとのテーブルTc1〜Tc4により、ピアB1の接続リンク管理テーブルTcが構成されている。
図6は図5の状態における、ピアB1による検索要求メッセージの転送動作の例を示す。
図6の例ではピアB1の左上の方向d4の接続リンクからグループAの識別子が付与された検索要求メッセージが、TTL値(ホップ数)3(但しピアB1で1減算されるため残りホップ数は2)として受信された場合を想定する。
この場合、ピアB1が当該検索要求メッセージを転送する際の可能な選択肢は、上記当該検索要求メッセージが受信された方向d4を除いた、右上の方向d1、右下の方向d2及び左下の方向d3の計3つの方向の接続リンクが考えられる。
このとき、当該検索要求メッセージの上記残りホップ数(2)、そのグループ識別子(A)及び各接続リンクに係る点数(すなわち上記接続リンク管理テーブルT1〜T4において管理されている情報)から、当該検索要求メッセージの転送先として、以下のごとくの方法によって、その優先度付けを行う。
まず、ピアB1では当該検索要求メッセージが有するホップ数3から1を減算し(図1のステップS2)する結果、上記の如く残りホップ数は「2」となる。
そしてピアB1が図1中、ステップS16により、その接続リンクごとに、上記残りのホップ数「2」との関連で、この検索要求メッセージを転送した場合に当該検索要求メッセージが到達することができる、グループAに属するピアの個数、すなわち「到達ピア数」を調べる。
右上の方向d1の接続リンクに係る図示のテーブルTc1に示された点数「A:1ホップ×1」より、この接続リンクには1ホップ先にグループAに属する1つのピアが存在することが分かり、その結果1つのピアへの到達が可能、すなわち「到達ピア数:1」と得られる。
右下の方向d2の接続リンクに係る図示のテーブルTc2に示された点数「A:3ホップ×3」より、この接続リンクには3ホップ先にグループAに属する3個のピアが存在することが分かる。しかしながら当該検索要求メッセージの残りホップ数は上記の如く2であり、3ホップ先には到達し得ない。したがってこの接続リンクでは「到達ピア数:0」と得られる。
同様に左下の方向d3の接続リンクに係る図示のテーブルTc3に示された点数「A:2ホップ×2」より、この接続リンクには2ホップ先にグループAに属する2個のピアが存在することが分かり、その結果2個のピアへの到達が可能、すなわち「到達ピア数:2」と得られる。
すなわち、ステップS16によって得られる到達ピア数は、右上方向d1:1点、右下方向d2:0点、左下方向d3:2点となる。
そしてこのようにして各方向の接続リンクごとに得られた点数の大きさを用い、例えば受信された検索要求メッセージを広く伝播させる観点で最適化する場合には、この点数の高い順、すなわち左下の方向d3の接続リンク、右上の方向d1の接続リンクの順で優先度を与える。
又このステップS16では、当該検索要求メッセージの残りホップ数(2)から、グループAに属するピア迄のホップ数、すなわち右上方法d1:1ホップ、右下方向d2:3ホップ、左下方向d2:2ホップをそれぞれ差し引くことで、右上方向d1:2−1=1[点]、右下方向d2:2−3=−1[点]、左下方向d3:2−2=0[点]のように点数付けがなされる。
すなわち検索要求メッセージがより早く伝播する観点で最適化する場合にはこの点数を使い、点数の高い順で、右上の方向d1、左下の方向d3の順で優先度付けを行う。
尚いずれの場合も右下の方向d2では残りホップ数が2の当該検索要求メッセージはグループAに属するピアに到達し得ないため、当該接続リンクには当該検索要求メッセージを転送しない。
そして最終的には、例えば所定の出力可能最大接続リンク数の閾値以内の数の接続リンクをこの優先度順に選んで決定し、該当する接続リンクに当該検索要求メッセージを転送する。
その結果、受信した検索要求メッセージを、そのグループに属するピアに効率よく到達させ、無駄なトラフィックを発生させないよう制御することできる。
図7はこの検索要求メッセージを転送する動作の流れを説明するためのシーケンス図である。
図7中、上記ピアB1に対し、例えばピアC1から、検索要求を意味する「SEARCH」が記述され、グループ識別子が「A」(図中「Group A」)の検索要求メッセージを転送する(ステップS61)。
尚図7ではピアC1が当該検索要求メッセージを発信していることになっており、したがって原則的にはそのメッセージのグループ識別子は当該ピアC1が属するグループCのもの「C」となるはずであるが、ここでは説明の便宜上、当該検索要求メッセージのグループ識別子は「A」として説明を行う。
ピアB1では当該検索要求メッセージを受信し、そのメッセージ種別(この場合上記「SEARCH」)を確認し(ステップS62)、グループ識別子(この場合A)を確認し(ステップS63)、ホップ数を減算し(ステップS64)、接続リンク管理テーブルTcを参照して上記の如くの方法によって当該検索要求メッセージを転送する接続リンクを決定する(ステップS66)。
そしてこのようにして決定された接続リンクに対し、当該検索要求メッセージを送出する(ステップS67)。
次に本発明の実施例2によるピュアP2Pシステムについて説明する。
この場合、各ピアは、上述の実施例1のピュアP2Pシステムを構成する各ピアに、図8のブロック図で示される機能を追加した構成を有する。
すなわち、図8に示されるごとく、ピア500は図7とともに上記の如くの動作にて受信した検索要求メッセージを転送する場合(図8のステップS11,S12,S13,S14,S15は、それぞれ図1のステップS11,S12,S13,S14,S15に対応する)、その検索要求メッセージに付与されたグループ識別子、入力元接続リンク、転送した出力先接続リンク、残りホップ数を検索要求記憶部Ssに記憶する(ステップS17)。
又ピア500は検索応答メッセージを受信した際、その検索応答メッセージを対応する検索要求メッセージの発信元に転送するだけでなく、前記検索要求記憶部Ssに対し、当該検索応答メッセージと、そのメッセージ固有ID(図21とともに後述する)が一致する、上記転送済みの対応する検索要求メッセージがあるか否かを確認する(ステップS31)。
その結果一致する検索要求メッセージの記録が見いだされた場合(ステップS31の「一致する」)、当該検索要求メッセージに付与されたグループ識別子、検索要求メッセージの入力元接続リンク、検索要求メッセージの残りホップ数、検索応答メッセージの入力元接続リンクの各情報を、検索成功経路管理テーブルTsに一定期間記憶する。
又その場合、検索要求メッセージに対する検索応答メッセージを転送した経路(そのグループのピア間で検索が成功した経路)に対し、点数付けしておく(ステップS33、S34)。
この状態で当該ピア500が次の検索要求メッセージを受信した場合、ピア500はその検索要求メッセージに付与されたグループ識別子とホップ数とを確認し、当該検索要求メッセージを転送する場合、前記検索成功経路管理テーブルTsを参照し(ステップS21)、当該検索要求メッセージのグループについて、上記の如く点数付けされた、検索要求メッセージに対する検索応答メッセージを転送した経路を見いだし、その点数に基づいてその優先度を判断することで当該検索要求メッセージの出力接続リンクを選択する(ステップS16)。
図9はこの実施例2によるピュアP2Pシステムを構成する各ピアによるメッセージの転送動作及び転送経路計算動作について説明するための図である。
図9では、このピュアP2Pシステムにおいて、検索要求メッセージが転送され、その検索が成功し、該当する検索応答メッセージが返信される際の、ピアの検索要求メッセージ及び検索応答メッセージの転送の例を示す。
ここではピアA1が検索要求メッセージを送信し、ピアC1、ピアB1を経由してピアA2において当該検索が成功し、ピアA2から対応する検索応答メッセージが返信される。
すなわち図9において、ステップS111にてピアA1が検索要求メッセージを送信し、これを受信したピアC2が当該検索要求メッセージをピアB1及びピアD1に転送し(ステップS112,S113),更にこれを受けたピアC1が当該検索要求メッセージをピアA2,ピアA3、ピアC1のそれぞれ転送する(ステップS113,S114,S115)。
これに対し、ピアA2に検索対象のコンテンツが存在したため、ピアA2が検索応答メッセージを返信する(ステップS121)。
ここで各ピアは検索要求メッセージを転送した際にはその入力元接続リンクを当該検索要求メッセージのメッセージ固有IDに関連つけて記憶しており、かつ対応する検索応答メッセージにも同じメッセージ固有IDが含まれている(図21(a)、(b)参照)ため、対応する検索応答メッセージを受信した場合には、該当する検索要求メッセージが受信された接続リンクを得ることができ、当該接続リンクに対し、受信した検索応答メッセージを転送する。
このようにして返信された検索応答メッセージは、対応する検索要求メッセージの経路と逆の経路を辿り(ステップS122,S123)、検索要求メッセージの発信元のピアA1に到達する。
この検索成功の結果、図10に示すように、ピアB1は、その右上の方向d1の接続リンクについてホップ数1の距離にある、グループAのピアが検索に応答したこと及び、その結果左下の方向d3の接続リンクについてホップ数2の距離に有る、グループAのピアが検索に成功したことを認識する。
尚上記の如く、図8のステップS17では検索要求メッセージを受信した際、その残りのホップ数を記憶する。そしてこの残りのホップ数を、検索要求メッセージに対する検索要求メッセージを返信したピア迄の距離であると見做し、検索成功経路管理テーブルTsに記録する。
すなわち図9の例の場合、ピアB1はステップS112で検索要求メッセージを受信した際、すでに2ホップしてきている(ステップS111,S112)ため、残りのホップ数は3−2=1である。したがってそのような検索要求メッセージに対する検索応答メッセージが返信されたことは、当該返信元のピアとの距離は1ホップということになる。
尚この方法の場合、残りのホップ数が2以上の場合には必ずしも返信元のピアとの距離自体を示さず、返信元のピアとの最大ホップ数を示すことになる。
このようにして、ピアB1は、図8とともに上述した検索要求記憶部Ssにおいて、ステップS112で検索要求メッセージを受信した際、図8のステップS17にて当該検索要求メッセージに係る各情報を検索要求記憶部Ssに記憶しており、これに対する検索応答メッセージがステップS121で受信された際、図8のステップS31でこれを検出し、該当する経路をグループAのピアの検索成功経路として検索成功経路管理テーブルTsに記憶する(ステップS33,S34)。
検索に成功した検索要求メッセージ送信元ピアA1は検索成功後、検索クエリに対する該当データを、該当する検索応答ピアA2から、該当するURLからのダウンロード等により取得する。
またある時点で頻繁に検索されるデータは、例えば人気のあるコンテンツや新規配布中のコンテンツ等に偏る可能性が高いと考えられる。このような場合、各ピアが検索要求メッセージを転送する際、頻繁に検索に成功している経路を選択するように構成することにより、その新たな検索も又成功する可能性が高まると考えられる。
図11は、図9,図10とともに上述の動作の結果、ある時点でピアB1がグループAの検索について、接続リンクごとに成功した回数と検索応答メッセージの返信元のピアとの間のホップ数を記憶している状態の例を示す。
図11中、ピアB1の右上の方向d1の接続リンクでは、そのテーブルTs1に示されるごとく、ホップ数1の距離で3回成功、右下の方向d2の接続リンクでは、そのテーブルTs2に示されるごとく、ホップ数1の距離で2回成功及びホップ数3の距離で1回成功、左下の方向d3の接続リンクでは、そのテーブルTs3に示されるごとく、ホップ数2の距離で1回成功していることが記録されている。
図12は、図11の状態で、ピアB1が左上の方向d4の接続リンクから、残りホップ数2のグループAの検索要求メッセージを受信した場合の転送例について説明するための図である。
この場合、まずここでピアB1の接続リンクごとに検索要求メッセージを転送した際に到達する範囲の検索成功回数を点数として考えてみる。
すなわち右上の方向d1の接続リンクではホップ数1(<2)の距離での成功が3回なので3点、右下の方向d2の接続リンクではホップ数1(<2)の距離での成功が2回、ホップ数3での成功が1回なので合計3回で3点、左下の方向d3の接続リンクはホップ数2(=2)の成功が1回なので1点となる。
或いは検索成功回数だけでなく、検索成功ピア(すなわち検索応答メッセージを返信したピア)までのホップ数をも考慮し、
(「残りホップ数」+1−「検索成功ピアまでのホップ数」)×「検索成功回数」
を計算するようにしても良い。
ここではその計算結果がゼロ未満の場合にはゼロとする。
この場合、右上の方向d1の接続リンクでは、検索要求メッセージの残りホップ数が2,検索成功ピアまでのホップ数が1,成功回数が3であるため、(2+1−1)×3=6[点]として点数が得られる。
右下の方向d2の接続リンクでは、検索要求メッセージの残りホップ数が2,検索成功ピアまでのホップ数が1、成功回数が2,及び検索成功ピアまでのホップ数が3、成功回数が1であるため、(2+1−1)×2+(2+1−3)×1=4+0=4[点]として点数が得られる。
左下の方向d3の接続リンクでは、検索要求メッセージの残りホップ数が2,検索成功ピアまでのホップ数が2,成功回数が1であるため、(2+1−2)×1=1[点]として点数が得られる。
これらの点数を用い、検索要求メッセージを広く伝播させる観点で最適化する場合には、上記成功回数のみによる点数、すなわち右上の方向d1の接続リンクが3点、右下の方向d2の接続リンクが3点、及び左下の方向d3の接続リンクが1点であるため、右上の方向d1の接続リンクと右下の方向d2の接続リンクとが同点で最優先とされ、左下の方向d3の接続リンクがその次の優先度となる。
他方、検索要求メッセージ伝播の広さと速さとの双方を考慮する場合、検索成功回数及び検索成功ピアまでのホップ数の双方を考慮した上記計算式
(「残りホップ数」+1−「検索成功ピアまでのホップ数」)×「検索成功回数」
による点数は、右上の方向d1の接続リンクが6点、右下の方向d2の接続リンクが4点、左下の方向d3の接続リンクが1点なので、右上の方向d1の接続リンク、右下の方向d2の接続リンク、左下の方向d3の接続リンクの順で優先度付けを行う。
そして最終的には所定の出力可能な最大接続リンク数の閾値以内の数の接続リンクを、優先度の高い順で選択して決定し、このようにして決定された接続リンクに対し、検索要求メッセージを転送する。
その結果、検索要求メッセージの伝播の広さ或いはこれとともに検索要求メッセージの伝播の速さを追求するという、その目的に応じた最適な接続リンクが選択されるため、効率的なデータ検索を図り得る。
次に図13とともに本発明の実施例3によるピュアP2Pシステムの構成について説明する。
実施例3では、上述の実施例1或いは実施例2によるピュアP2Pシステムに対し、図21(c)とともに後述する推薦情報メッセージによる接続リンク変更の機能を加えた構成を有する。
例えば図13に、ピュアP2Pシステムの他の例として、最大ホップ数、すなわちホップ数の初期値を4として検索要求メッセージを伝播させるシステムを示す。
ここでピアD1(この場合図13中、右下のD1)が検索要求メッセージを送信した際、当該ピアD1からホップ数4の範囲、すなわちピアC4、ピアC3、ピアA2、ピアC1,ピアA3、ピアC2、ピアB2の範囲へ当該検索要求メッセージが伝達される(ステップS131,S132,S133,S134,S135,S136,S137,S138)。しかしながらこの範囲内には当該ピアD1と同じグループDに属するピアが存在しないため、この検索は失敗する。
すなわちグループDに属する他のピアD2は当該検索要求メッセージの発信元のピアD1からホップ数が5の位置にあるため、上記の如く最大ホップ数が4と設定されているシステムでは、当該検索要求メッセージはピアD2には到達しないからである。
この場合、例えばピアC1が、上記実施例1の接続リンク管理テーブルTc(図1)または実施例2の検索成功経路管理テーブルTs(図8)に記録された情報により、当該ピアC1の左上の方向d2の接続リンクにホップ数1の距離でグループDに属するピア(この例の場合ピアD2)が存在することを認識している可能性が高い。
ピアC1がこのようにその接続リンク管理テーブルTc或いは検索成功経路管理テーブルTsに記録されている情報としてグループDに属するピア(D2)の存在を認識していることを想定した場合、以下のごとくの動作が可能となる。
すなわちピアC1がステップS134或いはS137にてピアD1からの検索要求メッセージを受信した際、当該検索要求メッセージのグループ識別子及びそのホップ数から、発信元のピアD1が当該ピアC1から検索要求メッセージが到達する最長距離、すなわちホップ数4の位置にあることを認識し得る。更に、仮に当該検索要求メッセージの発信元のピアD1が自己の隣接ピアとなった場合には、当該検索要求メッセージに対する応答をし得る立場にある、グループDに属するピアD2に対する検索要求メッセージが到達可能になることをも認識し得る。
このような場合当該ピアC1は、所定の閾値により、そのホップ数がその上限値(この場合4)に近い検索要求メッセージを受信した際、当該検索要求メッセージの発信元のピア(この場合ピアD1)に対し、自己への接続を促す推薦情報メッセージを返信する。
そして当該検索要求元ピアD1が当該検索に失敗し、かつ、その接続リンクを変更した方が検索成功率が上がると判断した場合、上記推薦情報メッセージに基づき、図13の波線で示されるごとく、ピアC1との接続リンクを確立する。
その結果、ピアD1が再度検索要求メッセージを送信した場合、ピアC1を介して2ホップでピアD2に到達し、同じグループDに属するピア間で検索要求メッセージの授受が可能となる。
次に本発明の実施例4によるピュアP2Pシステムについて説明する。
実施例4によるピュアP2Pシステムでは、上記実施例3によるピュアP2Pシステムの構成に対し、以下の機能を追加的に有する。
すなわち、検索要求メッセージのみではなく、参加要求メッセージに対しても上記推薦情報メッセージを返信し、それによる接続リンクの変更を促すことを可能にする機能を設ける。
この場合ピアはピュアP2Pシステム参加時に推薦情報メッセージを受け取ることが可能となり、検索要求メッセージによって実際に検索動作を行う前に、より検索成功率の高い接続リンクへと接続変更することが可能となる。
また、ピアの匿名性保護(どのようなデータを検索或いは保持しているかについて他のピアから秘匿する構成)を考えた場合、上記の如く同じグループに属するピア同士が隣接ピアとなるように接続リンクが変更された場合、隣接ピアの検索要求或いは応答内容とこれを送受信したピアとが特定されてしまうことになり問題となる。
このような状況を避けるため、新たな接続リンク確立時、新たな隣接ピアの参加要求メッセージに含まれるグループ識別子が自己が属するグループと一致する場合には切断を促す推薦情報メッセージを送信したり、自己と同じグループに属する他のピアに推薦情報メッセージを返信する際には新たな接続先として自己以外の、その属するグループの異なる隣接ピアを推薦する推薦情報メッセージを返信する等の制御を行うことによって匿名性保護を確保することが可能となる。
以下に図14,15とともに、本発明の実施例5の構成について説明する。
実施例5によるピュアP2Pシステムは上記実施例1〜4のいずれかの実施例の構成において、更に、各々が複数のピアを含む、一のピュアP2Pシステムが他のピュアP2Pシステムに接続する際、当該一のピュアP2Pシステムに属し、他のピュアP2Pシステムと直接接続する一のピアが、一のピュアP2Pシステムに属する他のピアの分の参加要求メッセージを一括して発信する機能を追加的に有する。
図14の場合、ピアA1が既に方向d3,d4の2つの接続リンクを持っており、その接続リンク管理テーブルTcには図示のテーブルTc3,Tc4に示されるごとくの点数を持っているものとする。
この点数は図1〜7とともに上述の実施例1における接続リンク管理テーブルTcのものと同様である。
すなわち例えば図示のテーブルTc3に示された点数「C:1ホップ×1」、「D:2ホップ×1」は、ピアA1の方向d3の接続リンクに1ホップの距離でグループCに属するピア(この場合ピアC1)が接続され、2ホップの距離でグループDに属するピア(この場合ピアD1)が接続されていることを意味する。
このようなピュアP2Pシステムが、図15に示すごとく、新たに他のピュアP2Pシステム(ピアD2,C2,A3,C3,B2を含む)に接続する場合を想定する。
この場合図15に示すごとく、最初のピュアP2PシステムのピアA1が、次のピュアP2PシステムのピアD2に接続することにより、双方のピュアP2Pシステムが相互に接続するものとする。
この場合、ピアA1は、新たにピアD2と確立するリンクの方向(すなわち元々ピアD2が属していたピュアP2Pシステム)に対し、元々ピアA1が属していた側のピュアP2Pシステムに属するピアB1,C1,A2の分の参加要求メッセージを、これらピアB1,C1,A2が個別に発信する場合と同様に、ピアA1がまとめて発信する。その結果、ピアA1、B1,C1,D1が順に個別に参加要求メッセージを発信した場合と同様の効果が得られる。
すなわちピアA1は接続リンク管理テーブルTcの情報に基づき、自己以外のピアC1,D1,B1の参加要求メッセージを作成し、これらのピアに代わって元々ピアD2が属していたピュアP2Pシステムに属するピアC2,C3,A3,B2に対し、参加要求メッセージを発信する。
具体的にはピアA1は、例えば上記テーブルTc3の内容に基づいてピアC1の参加要求メッセージを作成することができる。
すなわち当該テーブルTc3の内容「C:1ホップ×1」により、当該参加要求メッセージに記述するグループ識別子はCであることが分かる。
また当該参加要求メッセージに記述するTTL値につき、ピアA1は上記テーブルTc3の内容によって、当該グループCのピアが自己から1ホップの距離にあることが分かるため、TTL値の初期値3から1を減算した値である2を設定すればよいことが分かる。
同様にピアA1は、上記テーブルTc3の内容に基づいてピアD1の参加要求メッセージも作成することができる。
すなわち当該テーブルTc3の内容「D:2ホップ×1」により、当該参加要求メッセージに記述するグループ識別子はDであることが分かる。
また当該参加要求メッセージに記述するTTL値につき、ピアA1は上記テーブルTc3の内容によって、当該グループDのピアが自己から2ホップの距離にあることが分かるため、TTL値の初期値3から2を減算した値である1を設定すればよいことが分かる。
ピアB1についての同様である。
その結果、例えばピアC1に対応する参加要求メッセージは、そのTTL値を上記の如く2としたため、ピアA1から発信された当該参加要求メッセージは、図示のごとく、1ホップ先のピアD2及び2ホップ先のピアC2,C3,A3迄到達する。これはピアC1が自ら参加要求メッセージを発信した場合(すなわちTTL値として初期値の3が設定されてピアC1から発信された場合)と同様の動作である。
他のピアD1,B1についても同様である。
このようにピアA1は、自己が元々有する接続リンク管理テーブルTcの情報により、同情報の対象ピアの分の参加要求メッセージを、それらのピアに代わって発信することが可能となる。
その結果、ピュアP2Pシステム内のトラフィックを効果的に低減可能である。
以下に図16,17とともに、本発明の実施例6の構成について説明する。
実施例6によるピュアP2Pシステムは上記実施例1〜5のいずれかの実施例において、更に、実施例5の場合と逆に、各々が複数のピアを含む、一のピュアP2Pシステムと他のピュアP2Pシステムとの接続を切断する際、当該一のピュアP2Pシステムに属し、他のピュアP2Pシステムと直接接続していた一のピアが、一のピュアP2Pシステムに属する他のピアの分の離脱要求メッセージを一括して発信する機能を追加的に有する。
図16の例では、上述の図15の状態、すなわちピアA1とピアD1とが接続した状態から、ピアC1がピアA1との接続リンクを切断し、離脱要求メッセージを送る場合を想定する。
ここでピアC1は左下の方向d3の接続リンクに関し、図示のテーブルTc3に示すごとく、グループDについての点数、すなわち「D:1ホップ×1」を持っている。
この点数も図1〜7とともに上述の実施例1における接続リンク管理テーブルTcのものと同様である。
このような状態で上記の如くピアC1がピアA1との接続リンクを切断した際、ピアC1はピアA1に対し、自己の、グループCに係る離脱要求メッセージをTTL値:3で発信し、切断後のピュアP2Pシステムに属する他のピアD1に対応する、グループDに係る離脱要求メッセージをTTL値:2で発信する。その結果、ピアD1,C1自らが順に自己の離脱要求メッセージを発信した場合と同様の効果が得られる。
すなわちピアC1は自己の接続リンク管理テーブルTcの情報に基づき、自己以外のピアD1の離脱要求メッセージを作成し、このピアに代わって、当該切断後にピアA1が属するピュアP2Pシステムに属する他のピアB1,D2,C2,C3,A3に対し、離脱要求メッセージを発信する。
具体的にピアC1は、上記テーブルTc3の内容に基づいてピアD1の分の離脱要求メッセージを作成することができる。
すなわち当該テーブルTc3の内容「D:1ホップ×1」により、当該離脱要求メッセージに記述するグループ識別子はDであることが分かる。
また当該離脱要求メッセージに記述するTTL値につき、ピアC1は上記テーブルTc3の内容によって、当該グループDのピアが自己から1ホップの距離にあることが分かるため、TTL値の初期値3から1を減算した値である2を設定すればよいことが分かる。
その結果、ピアD1の分の離脱要求メッセージは、そのTTL値を上記の如く2としたため、ピアC1から発信された当該離脱要求メッセージは、図示のごとく、1ホップ先のピアA1及び2ホップ先のピアD2、B1迄到達する。これはピアD1が自ら離脱要求メッセージを発信した場合(すなわちTTL値として初期値の3が設定されてピアD1から発信された場合)と同様の動作である。
このようにピアC1は、自己が元々有する接続リンク管理テーブルTcの情報により、同情報の対象ピアの分の離脱要求メッセージを、そのピアに代わって発信することが可能となる。
その結果、ピュアP2Pシステム内のトラフィックを効果的に低減可能である。
以下に図18,19とともに、本発明の実施例7の構成について説明する。
実施例7によるピュアP2Pシステムは上記実施例1〜6のいずれかの実施例において、更に、隣接ピアの切断を検知し、切断によってピュアP2Pシステムから離脱されたピアが、本来離脱の際に発信するべきであった離脱要求メッセージを、当該切断を検知したピアが自己の接続リンク管理テーブルTcの情報に基づき、上記切断によってピュアP2Pシステムから離脱されたピアに代わって発信する機能を追加的に有する。
この実施例ではピアが隣接するピアとの間で一定時間毎に周知のPingにより応答があることを確認し、このPing応答が得られなかった場合は、その隣接するピアがハングアップやネットワーク不良により切断したと見なす機能を設ける。
図18の例では、ピアA1からピアC1へのPingに対してピアC1の応答がなくなり、その結果ピアA1はピアC1が切断されたと見なした場合を想定する。
この場合ピアA1はC1との接続リンクを切断し、ピアA1がピアC1との接続リンクについて持っていた点数(すなわち図示のテーブルTc3に示される「C:1ホップ×1」)に基づき、ピアC1がピアA1との接続リンクを切断した場合に発信するはずであった離脱要求メッセージを、ピアC1に代わって発信する。
同様にピアA1はピアC1との接続リンクについて持っていた点数(すなわち図示のテーブルTc3に示される「D:2ホップ×1」)に基づき、ピアD1が、ピアC1がピアA1との接続リンクを切断した場合に発信するはずであった離脱要求メッセージを、ピアD1に代わって発信する。
この場合ピアA1による、これらピアC1,D1の分の離脱要求メッセージの作成方法は、上記実施例6の説明においてピアC1がピアD1の分の離脱要求メッセージを作成する場合の方法と同様である。
図20,図21は上記実施例1〜7の各実施例に適用される各種メッセージのデータ構造の例を説明するための図である。
図20(a)は参加要求メッセージのデータ構成例を示す。
同データ構成は、メッセージ種別、グループ識別子、TTL値、メッセージ固有IDよりなる。
参加要求メッセージの場合、メッセージ種別として「参加要求」を意味するJOINが記述される。
図20(b)は離脱要求メッセージのデータ構成例を示す。
当該離脱要求メッセージの場合、メッセージ種別として「離脱要求」を意味するBYEが記述される。
これら参加要求メッセージ及び離脱要求メッセージは、メッセージのループを防止する等の目的から、メッセージ固有IDを持つ。
図21(a)は検索要求メッセージのデータ構成例を示す。
同データ構成は、メッセージ種別、グループ識別子、TTL値、メッセージ固有ID、ペイロードよりなる。
検索要求メッセージの場合、メッセージ種別として「検索要求」を意味するSEARCHが記述される。
又ペイロードには検索対象ファイル名等(すなわち上記検索クエリ)が記述される。
図21(b)は検索応答メッセージのデータ構成例を示す。
同データ構成は、メッセージ種別、グループ識別子、メッセージ固有ID、ペイロードよりなる。
検索応答メッセージの場合、メッセージ種別として「検索応答」を意味するRESPONSEが記述される。
又そのペイロードには検索対象ファイルのURL等が記述される。
図21(c)は推薦情報メッセージのデータ構成例を示す。
同データ構成は、メッセージ種別、メッセージ固有ID、ペイロードよりなる。
推薦情報メッセージの場合、メッセージ種別として「推薦」を意味するRECOMMENDが記述される。
又そのペイロードには、推薦に係る新たな接続リンクの接続先の情報が記述される。
ここで上記検索要求メッセージ或いは検索応答メッセージのペイロードは暗号化される場合もある。
又検索要求メッセージはメッセージ固有IDを持ち、これに対応する検索応答メッセージ或いは推薦情報メッセージは同じ固有IDを持つ。これはメッセージのループを防ぎ、どの検索要求メッセージに対する返信のメッセージかを識別するためである。
図22は上述の本発明の各実施例によるピュアP2Pシステムを構成する各ピア500をコンピュータで実現する場合について説明するための、コンピュータの構成例を示すブロック図である。
図22に示すごとく、同コンピュータ500は、与えられたプログラムを構成する命令を実行することによって様々な動作を実行するためのCPU501と、キーボード、マウス等よりなりユーザが操作内容又はデータを入力するための操作部502と、ユーザにCPU101による処理経過、処理結果等を表示するCRT、液晶表示器等よりなる表示部503と、ROM、RAM等よりなりCPU504が実行するプログラム、データ等を記憶したり作業領域として使用されるメモリ504と,プログラム、データ等を格納するハードディスク装置505と、CD−ROM507を媒介として外部からプログラムをロードしたりデータをロードするためのCD−ROMドライブ506と、インターネット、LAN等の通信網509を介して外部サーバからプログラムをダウンロード等するためのモデム508とを有する。
同コンピュータ500はCD−ROM507を媒介として、あるいは通信ネットワーク509を媒介として、図1〜19とともに上述の各ピア500が実行する処理をCPU501に実行させるための命令よりなるプログラムをロードあるいはダウンロードする。そしてこれをハードディスク装置505にインストールし、適宜メモリ504にロードしてCPU501が実行する。その結果、同コンピュータ500により各ピア500が実現される。
本発明は上記実施の形態に限られず、以下に記載する請求の範囲に記載の技術的範囲内で他の様々な実施の形態をとることが可能である。