JP4684534B2 - ピアツーピア環境においてキャッシュされた資源間における資源の相同性 - Google Patents

ピアツーピア環境においてキャッシュされた資源間における資源の相同性 Download PDF

Info

Publication number
JP4684534B2
JP4684534B2 JP2002545358A JP2002545358A JP4684534B2 JP 4684534 B2 JP4684534 B2 JP 4684534B2 JP 2002545358 A JP2002545358 A JP 2002545358A JP 2002545358 A JP2002545358 A JP 2002545358A JP 4684534 B2 JP4684534 B2 JP 4684534B2
Authority
JP
Japan
Prior art keywords
resource
peer
server
rns server
rns
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002545358A
Other languages
English (en)
Other versions
JP2004524602A5 (ja
JP2004524602A (ja
Inventor
テオドシウ ダン
エス.ビョールナー ニコラジ
エム.ブレウニグ マルカス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004524602A publication Critical patent/JP2004524602A/ja
Publication of JP2004524602A5 publication Critical patent/JP2004524602A5/ja
Application granted granted Critical
Publication of JP4684534B2 publication Critical patent/JP4684534B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4552Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1063Discovery through centralising entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1072Discovery involving ranked list compilation of candidate peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、ネットワーキングの分野に属し、より具体的にはピアツーピアネットワーキングに関する。
本出願は、2000年11月22日出願の米国仮出願第60/252,658号「A Locator and Tracking Service for Peer-to-Peer Resources」および2000年11月22日出願の米国仮出願第60/252,659号「A Universal Naming Scheme for Peer-to-Peer Resources」の双方の出願を基礎とする優先権を主張し、これらの各々の発明は、参照により本発明に組み込まれている。
本出願は、2001年9月13日出願の米国出願第09/952,652号「Locator and Tracking Service for Peer-to-Peer Resources」に関連する。
本出願は、2001年9月13日出願の米国出願第09/952,808号「Universal Naming Scheme for Peer-to-Peer Resources」に関連する。
データネットワークは、「クライアントとサーバ」との対話に基づいて行われる。サーバは、種々のネットワーク資源へのアクセスを提供し、あるいはサービスする。クライアントは、そのサーバから資源へのアクセスを要求する。インターネット接続業者(ISP)は、サーバの一例である。クライアントはISPからインターネットへのアクセスを要求し、ISPはアクセスを提供する。クライアントがISPを介してインターネットにアクセスすると、クライアントは、何百万という様々なインターネット上のサーバが提供する事実上無限の種類の更なる資源へのアクセスを要求することができる。
伝統的なクライアント−サーバ環境において、資源(resource)は、ずっと多くのクライアントからの要求(request)を受け持つ比較的少数の集中化されたサーバにしばしば集約される。この伝統的な手法で数個のサーバ上に資源を集約することには問題がある。例えば、このようなサーバは、膨大な量の要求を処理することが可能な非常に高速のマシン上で動作する必要がある。一度に数千あるいは数百万にもなるクライアントによるトランザクションを扱うことができるサーバ機およびネットワーク接続は、その購入や保守が非常に高価であると思われる。
さらに、例外的に高速のネットワークであった場合、最も高速の集中化されたサーバですらネットワークのボトルネックになる可能性がある。例えば、全国的なニュースがあったようなとき、ほとんどのニュースサイトにおいて最新の情報にアクセスする総時間数は、ネットワークトラフィックが増大するため劇的に増大する傾向がある。さらに、これらの大規模な集中化された装置が何らかの原因で障害となる場合、所望の資源へのアクセスを拒絶されるクライアントは数百万にも及ぶであろう。この弱点から集中化されたサーバはハッカーやサイバーテロリストたちの格好の標的となりうるのである。
伝統的でないネットワーキングの1つの手法は、ピアツーピア対話に基づくものである。ピアツーピア環境においては、トランザクションはエンドユーザ、あるいはピア(peer)、装置の間で行われる。各ピアは、資源の消費者および提供者の双方とすることができる。すなわち、ピアは、伝統的なクライアントのように動作して、他のいずれかに格納された資源へのアクセスを要求することもでき、その同じピアが、伝統的なサーバのように動作して、そこに格納された資源への要求に応答することもできる。
ピアツーピアネットワーキングには、理論的に言って伝統的な手法を越える多くの利点がある。巨大な数のクライアントトランザクションを集中化されたサーバに流し込まずに、複数のピアが協働してサーバ全体を置き換えることが可能となる。例えば、資源が多くのピア装置上にコピーおよびキャッシュされる場合、資源への要求は、これらのピアのいずれかの1つによって提供することができ、あるいは同時にいくつかのピアによっても、その資源のため総計のダウンロード帯域を最大にするため、複数のピアの各々に一部のみ提供させることによって提供することができる。資源を複数のピアに拡散させることによって、集中化されたサーバにおけるボトルネックは、改善させることができる。また、エンドユーザピア装置は比較的低価格の傾向にあり、ほとんどのネットワーキング環境に既に存在している。ピア装置の処理能力を累積させて、および可能な帯域を用いることによって、多くの高価な集中化されたサーバを減らして、実質上ネットワークの全体のコストを削減させることができる。
ピアツーピアネットワーキング手法の更なる利点は、コンテンツの発信(publishing)に衝突がないことである。ピアツーピアのシステムにおいて、すべてのピア装置が情報の消費者および発信者の双方でありうるなら、このようなシステムにおいて情報を発信することは、新しいファイルを作成するのと同じくらい容易となりうる。これによって、クライアント−サーバ環境におけるコンテンツの発信に関連する衝突は完全に(例えば、企業のインターネットポータル上で発信される際の関連するステップのように)除去され、したがって、ユーザがより多くのコンテンツを相互に共有することを促進させる。この種の共有は、通常、ユーザによって共有されることのない最新の企業にとって重要な情報を含む「情報の孤島」(例えば、ユーザのデスクトップやラップトップ)によってイントラネットが構成されるような状況において特に関連する。
残念なことに、ネットワークトラフィックおよび資源を管理するためのほとんどの伝統的手法は、ピアツーピアネットワーキングに適応させるのに適していない。例えば、サーバをワールドワイドウェブ(WWW)上に置くことは、そのドメイン名システム(DMS)に依存する。DNSは、インターネットホスト、あるいはサーバの名前を付けるために用いられる確立した階層的スキームである。DNSは、ホスト名を解決してインターネットプロトコル(IP)アドレスを得られるように設計される。すなわち、DNSは人間にとって意味のあるURL、例えばwww.USnews.comのホスト名の部分を解決して、インターネットルータやスイッチにとって意味のあるIPアドレス、例えば205.245.172.72.を得る。所与のホスト装置のIPアドレスおよび関連するホスト名は、インターネット全体を通して種々のDNSサーバに知らされ、ホスト名を用いて作成されたクライアントの(例えば、その所定のホスト名を含むURLを要求するといった)要求は、正確なIPアドレスに正規に経路付けられる。この情報の伝播や更新は、数時間あるいは数日のオーダの比較的長い時間間隔を取る可能性がある。
DNSは、所定のホストにおいてすべてが可能なネットワーク資源をロケーティングするため、および比較的変化のないIPアドレスを有するホストについては、うまく機能する。
しかし、ピアは動的にアロケートされるIPアドレスを持つことがしばしばある。すなわち、ピアがインターネット上に記録される度に、そのピアは異なるIPアドレスを持つ可能性がある。例えば、企業ユーザは、静的には割り当てられない(企業およびISPの双方がホストアドレスを割り当てるために動的ホスト構成プロトコル(DHCP)を用いると考える)異なるIPアドレスを用いて、ラップトップをインターネットにオフィスまたは自宅から切り替えて接続する場合がある。ピアのログオン時間の満了が、DNSシステムを介して新たなIPアドレスを伝播させるのに必要な時間間隔より短いことは稀なことではない。このような場合のほとんどの時間において、DNSホスト名を用いてピアを発見することは不可能か、あるいは信頼できないものである。
さらに、コピーおよびキャッシュされたピアツーピア資源は、多数のロケーションにおいて同時に使用することができる場合がある。企業のイントラネット環境において、このような場合としては、数ユーザによってアクセスされる市場レポートがある。資源をキャッシュすることは多くの理由から利点がある。最初に、それは資源の有効性を高める。例えば、ラップトップから発信された資源が企業のサーバ上に組織的にキャッシュされる場合、これらの資源は、発信者がその日のうちにラップトップを閉まって帰宅した後も継続して有効であろう。次に、キャッシュすることによって、資源をそれらが使用されるロケーションの(ネットワークトポロジの用語で)「より近傍(closer)」に維持することが認められる。例えば、地理的に分散した企業においては、各オフィスごとに「出来立ての」文書をキャッシュすることには、それらの文書にアクセスする際よりよいレスポンスを得ることから利点がある。
しかし、資源の新しいバージョンが生成されると、他のピアに格納された資源の古いコピーは時代遅れとなり、その新しいバージョンがピアの間を伝播すると無効とされる(すなわち、もはや使用されない)。これは、DNSのもう1つの欠点、すなわち(十分なきめ細かさに不足するため)個々の資源を追跡し、および動的に変化するIPアドレスを有し、同一の資源の異なるバージョンを潜在的に格納する複数のロケーションにおいて有効な資源を追跡することができないことを示している。
さらに、同じ資源について複数のピアのコピーが存在する場合、所望の要求にとって「最もよい」あるいは「最も近傍の」コピーの小集合を選択することができることが重要である。これを可能にするためには、キャッシュされた資源の最新のコピーを有し、その資源の提供が可能なすべての同等なピアのロケーションを追跡することが必要である。
以下、本発明の実施例を図面とともに示す。しかし、添付される図面は本出願の発明の範囲を限定するものではない。図面においては、同様の参照符号によって同様の構成が示される。
以下の詳細な説明において、本発明の完全な理解を提供するために多くの具体的な詳細が示される。しかし、本発明はこれらの具体的な詳細がなくても実施することができること、本発明は示された実施形態に制限されないこと、および本発明は種々の代替される形態で実施することができることは当業者が理解するところであろう。その他、周知の方法、手続き、コンポーネントおよび回路は細部までは説明しない。
説明の一部は、当業者が他の当業者に作業の概要を伝えるために通常用いられる用語を用いてなされるであろう。また、説明の一部は、プログラム命令の実行によって実装されるオペレーションの言語でなされるであろう。当業者にはよく理解されるように、これらのオペレーションは、しばしば例えば電気コンポーネントを介して格納し、転送し、組み合わせ、およびその他操作することができる電気、磁気または光信号の形態をとる。
種々のオペレーションは、本発明の理解を支援するような方法で順に実行される複数に分けられたステップとして説明されるであろう。しかし、説明の順序は、これらのオペレーションが示された順序で実行する必要があるように、あるいは順序に依存するように解釈すべきではない。最後に、繰り返し使用される「一実施形態において」は、同じ実施形態をさしていることは、実際そうであっても必須ではない。
概観
以下に示すように、多くの発明が、ピアツーピアネットワーク環境においてピア間で資源の追跡および配置を行う資源名前付けサービス(Resource Naming Service:RNS)に関連して説明される。RNSは、ピア資源が現在ピア間のいずれのロケーションで使用可能であったとしても、その資源を一意に識別する資源名前付けスキームに依存する。RNSは、既存のネットワーキングスキーム、例えばドメインネームシステム(DNS)の不十分さを、ピアツーピアネットワーキングの能力の利点をフルに生かして克服する。
図1は、本発明のピアツーピアの一実施形態を示す図である。例示された実施形態において、ピアツーピア領域(realm)150(本明細書では、単に「領域」と呼ぶ。)は、レジストラ110、ゲートサーバ120、多数のRNSサーバ130、および多数のピア140を含む。ピア140は、ピア資源(図示せず)を格納するか、さもなければ使用することができる。レジストラ110と、RNSサーバ130と、ゲートサーバ120とはともに、本領域において発信されたピア資源を追跡し、配置し、アクセスするためのロケータおよびアクセスサービスを提供する。レジストラおよびゲートサーバが各1つ、もしくはいくつかのRNSサーバおよびピアが図1に示されるが、本発明はこれらの構成がいずれの数であっても実施することができる。
本領域に参加するため、各ピア140は、まずレジストラ110に登録する。登録処理の一部として、レジストラ110は、各ピアに領域内で一意となる識別子を割り当て、および各ピアを所定のRNSサーバにも割り当てるが、本明細書ではこれをそのピアに対する「ホームRNSサーバ」と呼ぶ。所与のピア140のための一意の識別子は、そのピアの管理下にあるか、またはそのピアにより発信される領域150内のピア資源を識別するために用いられる。
ピア140をレジストラ110に登録するために、多くの手法を使用することができる。一実施形態においては、ピア140はウェブに基づく登録処理を用いて、識別情報(identity)を獲得しレジストラ110に登録することができる。登録の際は、ピア140とレジストラ110との間で一連の対話が備えられ、ユーザの識別情報、領域150内にある構成の間の通信を保護するための暗号キー、種々のピア資源にアクセスするための請求情報、ピア140がその割り当てられたRNSサーバと互換性を持つことを可能にするダウンロードおよびインストールソフトウェア、その他を伝える。
所定のピア140のためのホームRNSサーバを選択するためにもまた、レジストラ110は多くの手法を用いることができる。一実施形態において、レジストラ110は、ピア140が用いているソフトウェアの種類あるいはバージョンを識別し、そのソフトウェアと互換性があり、ネットワークトポロジの用語でその登録されているピア140の「近傍」にあるとレジストラ110に評価されるRNSサーバのリストを生成する。ついで、レジストラ110は、候補のRNSサーバのリストをそのピア140に提供して、ピア140がリストにあるRNSサーバの各々にネットワーク経路のテストをして、最もよい応答時間を有する1つまたは複数を特定することができるようにする。すなわち、ネットワークトポロジに基づいて、ピア140は、いくつかのRNSサーバについて他のサーバよりも、物理的距離またはネットワーク媒体の速度のいずれかにおいて「より近傍」にある可能性がある。一実施形態においては、ピアの選択は単に提案としてレジストラ110に返される。すなわち、レジストラ110は、RNSサーバの候補リストにおいて相対的なトラフィック負荷といった要因にしたがってピアが選択したRNSサーバ130にピア140を割り当てる場合もあり、割り当てない場合もある。このような場合、レジストラ110は、提案されたRNSサーバの相対的ネットワークトラフィック負荷が所定のレベルより低ければ、単にその提案されたRNSサーバを割り当ててピア140のためのホームRNSサーバとする。そうでなければ、レジストラは、例えば候補のRNSサーバにおいて最も低い相対的ネットワークトラフィック負荷を有する異なるRNSサーバを割り当てることができる。
レジストラ110は、同一の手法を何度も用いて領域150において新たなRNSサーバを登録し、および選択されたピア140を再割り当てして新たなRNSサーバをホームにすることもできる。すなわち、一実施形態において、レジストラ110は、RNSサーバのための一意な識別子を割り当て、互換性のあるピア140のセットを特定し、その新たなRNSサーバに好適なピアのセットを提案させ、ついでピアのセットを選択して他の要因に加えその提案に基づき新たなRNSサーバをそのホームとする。これに代わる実施形態において、新たなRNSサーバを登録し、ピアを割り当てるため、数多くの手法を用いることができる。例えば、新たなRNSサーバに、レジストラ110に登録する時間を越える新たなピアを蓄積することを認める場合もある。
各RNSサーバ130は、割り当てられたピアにおける資源のロケーションおよび使用可能性に加えて、(IPアドレスまたはIPポート番号で)現在のネットワークロケーションおよびそのRNSサーバに割り当てられたすべてのピアの状態(オンラインまたはオフライン)を追跡する。
一般的に、2つのステップの処理で資源はアクセスされる。まず、資源はロケータサービスを用いてロケーティングされなければならない。次に、その資源はロケータサービスによって返されるロケーションまたはロケーションのセットにおいて実際にアクセスする。
領域150内のピア140に対してピア資源をアクセスする際の第1のステップは、ピアが割り当てられたホームRNSサーバ130との通信を含む。ホームRNSサーバ130は、可能であればレジストラ110および他のRNSサーバ130と共同して、その資源が使用することができることを期待される領域150内の1つまた複数のロケーションを決定する。一実施形態においては、ホームRNSサーバ130によって要求するピア140に返されたロケーションのセットは、そのRNSサーバ130にとって既知の他の情報に加え、ピア140のその時点のネットワーク識別情報(特に、その時点のIPアドレスあるいはIPアドレス)、その領域におけるその時点のネットワークトラフィック負荷に依存する。ピア140によっては、与えられたロケーションにおいて資源を実際にアクセスするための第2のステップが取られる。ピアが資源をアクセスすると、ピアは任意で資源をキャッシュし、現在その資源をキャッシュしていることをホームRNSサーバに通知し、およびキャッシュされた資源を他のピアがアクセスすることができるようにすることができる。
クライアント装置は、本発明が適用されなかった場合、あるいはこの領域150のレジストラ110に登録されなかった場合、領域150の外に置かれることが考えられる。このような装置は、その時点の領域150からの情報をアクセスする場合があるが、通常、この領域において情報を発信することはできないであろう。
領域150外のクライアント装置のために、外部のネットワークトラフィック125はゲートサーバ120を介して領域150に向けられる。ゲートサーバ120は、可能であればレジストラ110および1つまたは複数のRNSサーバと共同して、その資源を使用できることが期待される領域150内の1つまたは複数のピア140のロケーションを、上述の資源のロケーションの処理に従って決定する。クライアント装置がこの資源をホスティングするピアと互換性があるか否かにより、ゲートサーバ120は、単に装置のロケーションを応答するだけで、クライアント装置に自身で直接資源をアクセスさせる場合がある。クライアント装置が互換でない場合、ゲートサーバ120は数多くの動作、例えばあたかも装置のゲートサーバが資源であるかのように、クライアント装置として資源をアクセスし応答するといったことを行うことができる。
本明細書で用いられるように、各資源は生来的に1つのピアに関連し、これはマスタ発信者と呼ばれ、各資源は別のピアにおいて使用することもでき、これはキャッシング発信者と呼ばれる。通常、マスタ発信者のみが、資源を発信し、変更し、および削除する権限を持つ。
ロケーティングサービスは、資源のマスタ発信者をその資源のアドレスで一意に識別するとともに、マスタ発信者に関連する資源のための相対的経路を含む資源アドレス付けスキームと考える。しかし、このアドレス付けスキームは、アドレスはマスタ発信者自身へ要求を方向付けする(direct)必要はなく、マスタ発信者に応答する資源ロケーティングサービスに方向付ける必要がある場合、一意である。
この「転換された」アドレス付けスキームを用いて、ロケーティングサービスは、多くのキャッシング発信者に加えてマスタ発信者へ要求を方向付けすることができる。資源のマスタ発信者がオンラインではない場合、障害の場合、他のトラフィックで手一杯の場合またはその他すぐには使用できない場合ですら、その資源はキャッシング発信者から継続して使用することができる。潜在的に多くのピアが資源をキャッシングすることができるため、また専用のピアは事前に(proactively)資源をキャッシングするため、ロケータサービスは、巨大な量の要求を継続して、および信頼性を持って提供することができる。
ロケータサービスは、動的に変化するアドレスを有するピアに格納される資源を追跡することもできる。例えば、一実施形態において、ピア140には、モデムを用いてインターネットサービスプロバイダ(ISP)を介してネットワークに接続する装置が含まれる。これらのピアの1つがインターネットに接続するたびに、ISPは、新しいIPアドレスを、例えば動的ホスト構成プロトコル(DHCP)を用いて割り当てる。さらに、これらのピアの1つが接続されるたびに、そのピアはホームRNSサーバに接触して、その時点のIPアドレスおよびポート番号が何であるかを知らせる。次に、ホームRNSサーバは、新たなロケーションを持つピアのために有するすべてのレコードを更新することができる。次いで、それがログオンされている間に、そのピアは定期的にそのホームRNSサーバに「PING」を送信して、サーバにまだログオンしていることを知らせる。PINGが停止すると、ホームRNSサーバは、そのレコードを更新してそのロケーションが不活性になったことを示す。これに代わる実施形態においては、その時点における一時的および/または移動型のピアのロケーションおよび使用可能性を追跡するため、数多くの手法を用いることができる。
資源のロケーティング
図2は、資源のロケーティングの一実施形態をより詳細に示す図である。例示される実施形態は、ゲートサーバが同様の機能を実施することができるが、RNSサーバの視点からのものである。図2は、多くの実装の具体的な詳細が含まれる。他の実施形態には、図2に例示する要素すべてが含まれない場合があり、また異なる順番で実行されたり、追加の要素が含まれたりする場合がある。
まず、RNSサーバ130は、210においてピア140から、またはゲートサーバ120から、所定の資源のロケーションに対する資源要求を受信する。この要求は、RNSサーバが属する領域内にある資源およびその資源のマスタ発信者を一意に特定する。この要求は、この所定のロケータサービスに特化したメッセージプロトコルからHTTPのように一般に受けいれられるプロトコルまで数多くの形態をとることができる。
220において、RNSサーバは、その固有のメモリをチェックして、それが要求された資源に対応する資源のレコードを有するか否かを決定する。一実施形態においては、資源レコードに、その資源がロケーティングされることを期待される1つまたは複数のロケーションに加えて、資源およびマスタ発信者のための一意の識別子が含まれる。このレコードはまた、所定のロケーションが活性化されることが期待されているか否か(ネットワークにログインするか否か)を示す場合がある。この場合、RNSサーバは、この要求からの一意の識別子と記録された一意の識別子のリストとを比較する。
このRNSサーバが合致するレコードを有する場合、RNSサーバはこのレコードが通用しているものとする。レコードがその資源について活性化されたロケーションをリストに載せている場合、RNSサーバは、230においてその資源情報およびロケーションのセットをもって応答する。このレコードは、資源がキャッシュされた0またはそれ以上の活性化されたロケーションをリストに載せる。レコードがその資源について複数の活性化されたロケーションをリストに載せている場合、そのRNSサーバは、要求者が選択する複数のロケーションをもって応答することができる。同一の資源について成功した要求に対し、RNSサーバは、複数のロケーションへのネットワークトラフィックのバランスを取るため、例えばラウンドロビン式でロケーションのセットを選択して、異なるロケーションのセットによって応答することができる。一実施形態において、RNSサーバは、要求者にネットワークトポロジの用語で「近く(proximal)」にあるアドレスをその要求者に提供し、したがってネットワークトラフィックを最適化するために、要求者のネットワーク(IP)アドレスに基づき230において返されるためのロケーションを選択することができる。
このRNSサーバが合致する資源のレコードを有する場合、あるいはRNSサーバが合致する資源のレコードを有するが、実際にはその資源について活性化されたロケーションがリストに載っていない場合、RNSサーバは、そのメモリをチェックして、それが240において要求される資源の発信者についての発信者レコードを有するか否かを決定する。一実施形態において、発信者レコードには、マスタ発信者に割り当てられたホームRNSサーバのための識別子に加え、マスタ発信者のための一意の識別子が含まれる。この場合、RNSサーバはこの要求からの一意の識別子と記録された発信者識別子とを比較する。
RNSサーバが、合致する発信者レコードを有しない場合、RNSサーバは、このレコードは通用しているとみなし、250においてマスタ発信者がローカルであるか否かを決定する。すなわち、RNSサーバは、それがマスタ発信者のホームRNSサーバであるか否かを決定する。
マスタ発信者がローカルの場合、RNSサーバは、260において、その資源についての状態情報をマスタ発信者から取得して(内部資源レコードを生成することによって)キャッシュし、230において、資源状態情報をその要求者に提供する。この状態情報は、マスタ発信者がその時点で活性化されているか否か(ネットワークにログインしているか否か)、およびまだ資源が存在するか否かの情報を含むことができる。活性化されたマスタ発信者に資源が存在するか否かを決定するため、RNSサーバは、マスタ発信者にクエリを出す。マスタ発信者が資源が存在することを示す場合、RNSサーバは、発信者のロケーションを含む資源のレコードを生成し、そのレコードをキャッシュして、発信者と再度通信することなくその資源についての続く要求を満たすことができるようにする。
RNSサーバは、その発信者レコードからローカルの発信者が活性化されているか否かを認識することができる。例えば、一実施形態において、ローカルの発信者は、ネットワーク上でオンラインになるたびにログインし、次いで規則に基づいてRNSサーバに「PING」を送信して、RNSサーバにローカルの発信者はまだ活性化されていることを知らせる。これに代わる実施形態において、マスタ発信者が活性化されているか否かを決定するために、RNSサーバからのクエリ、発信者のログアウト手続きなどを含む、数多くの手法を用いることができる。
ローカルの発信者が不活性化されていると決定される場合、RNSサーバは、その発信者に関連して有するレコードはすべて更新される。すなわち、所定の発信者を資源としてリストに載せているいずれの資源についてのいずれのレコードも更新して、その発信者が活性化されていないことを示すことができる。もちろん、資源が存在しないおよび/またはその資源の発信者が不活性である場合、230において、RNSサーバは正規のエラーメッセージを返すであろう。
250において、マスタ発信者がローカルの発信者ではないが、RNSサーバが240において発信者レコードを発見した場合、RNSサーバは、リモートのRNSサーバ(すなわり、マスタ発信者のために割り当てられたホームRNSサーバ)に、270においてその資源についてリモートRNSサーバによって返された状態情報を取得して(資源のレコードを生成することによって)キャッシュするためのマスタ発信者および資源の識別子によってクエリを出す。リモートのRNSサーバは、その所有するメモリのレコードに基づいてこのクエリに即座に応答することができる場合がある。例えば、リモートRNSサーバは、資源が使用されることが期待される追加の活性化されたロケーションを含むレコードを有することがある。リモートのRNSサーバがその資源について活性化されたロケーションのレコードを持たない場合、リモートRNSサーバは、そのマスタ発信者が現在活性化されているならば、そのマスタ発信者にクエリを出すことができる。リモートRNSサーバからの応答に基づいて、230においてローカルRNSサーバは応答を行う。また、その資源が存在するようには思われない場合、または現時点で使用できない場合、RNSサーバはそれに応じて応答するであろう。ローカルRNSサーバは、リモートRNSサーバから得たものは何でもキャッシュし、将来その資源に対する要求があった場合、リモートRNSサーバに頼ることなくサービスを提供することができるようにする。一実施形態において、一のリモートRNSサーバをホームとするマスタ発信者によって発信された資源に関する情報のキャッシングは、リースに基づいて実装される。すなわち、キャッシュされた情報は、それがリモートRNSサーバから取得された後は、特定の時間の間有効であると考えることができる。それで、その間におけるキャッシュされた情報に対する追加の要求は、リモートRNSサーバに接触することなくサービスすることができる。
240に戻って、RNSサーバがその資源に対する発信者のレコードを有していないと判断する場合、290において、そのRNSサーバは、マスタ発信者がローカルの発信者である(すなわち、このサーバがマスタ発信者にとってのホームRNSサーバである)か否かを決定する。マスタ発信者がこのRNSサーバをホームにしている場合、このアルゴリズムは、上述のようにブロック260における要求に対し応答し続ける。
ブロック290において、そのマスタ発信者がこのRNSサーバをホストとしていると判断される場合、280においてRNSサーバはレジストラ110に解決を求める。レジストラ110は、登録された各ピアおよび各ピアがホームとして割り当てられたRNSサーバのレコードを維持する。レジストラから、RNSサーバは、発信者が登録されているか否か、そうであれば、いずれのRNSサーバにその発信者が割り当てられたかを知る。また、RNSサーバはその情報を(発信者レコードを生成することによって)キャッシュして、将来同一のマスタ発信者に方向付けられた要求のためにレジストラに接触することを回避する。
もちろん、295において、その発信者が登録されない場合、270において接触すべきリモートRNSサーバはなく、230においてローカルのRNSサーバは、適切なメッセージを返すであろう。しかし、この発信者が登録される場合、上述したように270において、RNSサーバは先に進められ、リモートRNSサーバに接触し、したがってブロック230において、その要求に応答する。
上述のように、RNSサーバの一実施形態においては、そのRNSサーバをホームとするピアがオンラインまたはオフラインか否かが追跡される。ピアが使用可能かどうかは、発信者レコードの一部として追跡することができる。例えば、発信者レコードは次のフォームとすることができる:
Figure 0004684534
例示される実施形態において、ピアがそのホームRNSサーバにログインするたびに、RNSサーバはピアのレコードを更新して、ピアの状態がオンラインであることを表示し、ピアの現在のIPアドレスおよびポート番号を記録する。ピアがログアウトしたと判断すると、RNSサーバは再びピアのレコードを更新してピアの状態がオフラインであることを表示する。
これに代わる実施形態において、RNSサーバはまた、他のRNSサーバをホームとするピアの状態をも追跡する。例えば、リモートRNSサーバの状態情報は、現在のロケーション情報とともにリースに基づきキャッシュされ、その状態情報を特定の時間間隔の間有効とみなすようにすることができる。
ピアの状態を追跡することによって、RNSサーバは、ピアのロケーションが、例えばピアのログアウトや新しいIPアドレスによるログインのように変化するときでも継続して資源レコードを維持することができる。
例えば、資源レコードのエントリは次のようなフォームとすることができる:
Figure 0004684534
RNSサーバがその資源に対する要求を受信すると、RNSサーバは、一意の資源識別子に基づいて対応する資源レコードを特定し、それらのリストから発信者識別子のセットを選択する。次いで、RNSサーバは発信者レコードを調べて対応する発信者の現在の状態を決定し、およびオンラインにあることを示す状態の各選択された発信者に対する現在のIPアドレスおよびポート番号を返す。
他の実施形態においては、資源レコードのエントリは次のフォームである:
Figure 0004684534
この例において、その資源の発信者の一意の識別子をリストに載せるのではなく、資源レコードは、その資源についての実際のネットワークロケーションをリストに載せる。この場合、RNSサーバがその資源に対する要求を受信すると、RNSサーバはリストに載せられたロケーションのなかから選択し、その発信者を調査する中間のステップなしに選択されたロケーションを返して、その選択されたロケーションのいずれがオンラインであると期待されるかを判断する。それらのネットワークロケーションの変化に合わせ、その発信者についての現在のロケーションを維持するため、RNSサーバはその資源レコード全体をスキャンして、オフラインにあると判断される発信者に対応するロケーションにフラグを立てる。発信者がさらにログインすると、RNSサーバは再び資源レコードをスキャンし、フラグを除去して、その古いロケーションを現在のロケーションに置き換える。
もちろん、RNSサーバは、数多くの実施形態において、レコードを編成し利用する。例えば、資源レコードおよび発信者レコードは、2つのリストに分ける代わり、単一のリストにする場合がある。あるいはまた、発信者レコードはさらに、RNSサーバに割り当てられたピアのリストに加え、他のRNSサーバに割り当てられた別のリストに分割することができる。そして、もちろん、発信者の現時点の状態を追跡して発信者のネットワークロケーションを更新するために対応する種々の手法をとることができる。
ピアプラットフォーム
図3は、図1のピア140の一実施形態をより詳細に示す図である。ピア140は、ピアプラットフォーム370、ピアツーピアアプリケーション345、ウェブブラウザ365、並びに2つの永続的構造、発信者ディレクトリ380および資源キャッシュ385を含む。
ピアツーピアアプリケーション345は、種々のピアツーピアアプリケーションおよびウェブサービス、例えばすべての参加者がゲームソフトのコピーを実行する分散型ゲームアプリケーションのいずれかを示す。ブラウザ365は、多くのウェブブラウザ、例えばネットスケープナビゲータ、マイクロソフト(登録商標)インターネットエクスプローラなどのいずれかを表す。永続的構造380および385は、種々の永続的メモリ装置、例えば種々の方法のいずれかでアドレス付けされ、編成されたハードディスク、フラッシュメモリ、などのいずれかを表す。ピア140の他の実施形態は、追加の要素を含むことができ、別途調整された要素を持つことができ、例示される要素のすべてを含まない場合もある。
ピアプラットフォーム370は、ピア140についてのすべてのピアツーピアトラフィック320および資源ロケータトラフィック310を割り込みおよび方向付けを行う。ピアプラットフォーム370は、直接ロケータサービスにインタフェースするための資源ロケータ330、ピアツーピアアプリケーション345に直接インタフェースするためのアプリケーションプログラミングインタフェース(API)340、ピアツーピア要求320(以下により完全に説明する)を提供するためのサーバ350およびウェブブラウザ365およびピアツーピアアプリケーション345とインタフェースをとるためのプロキシコンポーネント360を含む。一実施形態において、ピアプラットフォーム370は、ピア140上のアプリケーションとして、入出力関数などを実行するためのピア140のオペレーティングシステムサービスを用いて動作する。一実施形態においては、ピアプラットフォーム370は、ピア140のオペレーティングシステムまたはファームウェアに組み込まれる。
図3を参照すると、ピアプラットフォーム370は、ピア資源を、その資源またはこれらの資源への参照を発信ディレクトリにおいて配置することにより「発信する」ことができる。一実施形態において、発信は、プラットフォーム370によって提供される適切なユーザインタフェースを介してユーザによって達成することができる(図3には示されない)。一実施形態においては、プラットフォーム370のAPI340において適切な関数をコールすることによって適切なピアツーピアアプリケーション345により実行することができる。
他の装置は、ピア140によって発信されたコンテンツを、ちょうど他の資源のようなこのピア140により発信されるトップレベルのディレクトリまたはディレクトリへのアクセスを要求することによって閲覧することができる。ピアツーピアトラフィック320としてピア140に入ってくるこのような要求は、結果として他のユーザがコンテンツを閲覧することとなる場合があり、またRNSサーバの要求において、例えばデータ復旧動作の一部でクラッシュした後送信される場合がある。
図4は、資源のロケーティングを行う別の実施形態をより詳細に示す図であり、この場合プラットフォーム370からの視点である。ゲートサーバは、同様の機能を実行する。他の実施形態は、図4に示す要素をすべてを含まない場合があり、異なる順序で要素を実行し、および追加の要素を含む場合がある。
図4を参照すると、ピア140がネットワークまたはピア資源に対する要求をピアツーピアアプリケーション370またはウェブブラウザ365のいずれかから生成されると、プラットフォーム370のプロキシコンポーネント360はブロック410において要求を受信する。
ブロック420において、プロキシコンポーネント360はピアツーピアコンテンツに対する要求か否かを検査する。この要求がウェブ上のまたはインターネット上で発信された正規のネットワーク資源に対するものであると判断される場合、プロキシコンポーネント360は、この要求に対し単にパススルー、すなわち要求を特定のウェブサーバに送信するか、またはピア140を用いて、もしくは必要な場合ピア140に専用の既存のプロキシで接続するといった動作をするだけである。一実施形態においては、プラットフォーム370は、ピア140によって提供されるURLのフォーマットに基づいてこの判断を行う。別の実施形態では、プラットフォーム370は、動的にこの判断を行うが、これは「動的ピアツーピア領域同一性(dynamic Peer-to-Peer Realm Identification)」の下に後述するであろう。この要求が正規のネットワーク資源、例えばワールドワイドウェブページについて「www」を含むURLを有すると仮定すると、425において、この要求は正規のネットワークトラフィック325として進められる。
しかし、この要求がピア資源に対するもの、例えば「ppp」または「rns」を含むURLを有する場合、プラットフォームは、430においてアドレス付けされたロケータサービスが既知であるか否かを判断する。すなわち、プラットフォーム370は、ピア資源が発信された領域についてロケータサービスを接触するための確実な接触情報を必要とする場合があるが、その領域はピア140が登録されたのと同じ領域の場合もあり異なる場合もある。たとえば、プラットフォーム370は、そのロケータサービスのためのIPアドレスおよびIPポート番号を知ることが必要な場合がある。
そのロケータサービスが既知の場合、440において、この要求は資源ロケータトラフィック310として、そのピア140は、既に述べたように登録処理の間そのホームとしてきたホームRNSサーバ130に方向付けられる。次いで、ホームRNSサーバは、図2において説明された以前のステップを実行してその領域で発信されるコンテンツのロケーティングを行い、またはロケータサービスに接触してリモートピア資源のロケーティングを行う。
そのロケータサービスが既知ではない場合、プラットフォーム370は、435において、まず必要とされる接触情報を取得してキャッシュする。一実施形態においては、プラットフォーム370は、その接触情報に対する要求をロケータサービスに正規のネットワークトラフィック325として送信する。ロケータサービスのゲートサーバ120は、この要求を受信して処理する。この要求は単にピア140によって要求される元のピア資源アドレスを含むのみとすることができる。あるいはまた、プラットフォーム370は、この要求において、それがピアツーピアプラットフォームであり、ロケータサービスに都合よく互換性を判断させるための種々の情報を含むことを表示する。ゲートサービスが必要とされる情報に応答する場合、プラットフォーム370はキャッシュ385にその情報をキャッシュして、将来再びその情報を問い合わせなければならなくなることを回避することができる。これに続いて、プラットフォーム370は、440において、要求をそのホームRNSサーバに、リモートロケータのための取得された接触情報を含め送信する。435において、ロケータサービスが存在しない、または応答しないと判断された場合、440において、プラットフォーム370はその要求を送信することができないが、これに代えて、440および445を飛ばして、450において正式なエラーメッセージを返す。
440において、この要求が送信される場合、445において、プラットフォーム370は、そのホームRNSサーバからの応答を待ち、その資源のための1つまたは複数のロケーションが受信されたか否かを見るため検査を行う。ロケーションが受信されない場合、プラットフォーム370は、450において正式なエラーメッセージを返す。1つまたは複数のロケーションが受信される場合、460において、プラットフォーム370は1つまたは複数のロケーションを選択して試行する。ついで、425において、その要求はピアツーピアトラフィック320として直接選択されたロケーションに送信される。一実施形態において、クライアントによって選択されたロケーションが使用できないか、または資源を含んでない場合、445において、プラットフォーム370は、ロケータサービスにより返された他のロケーションを試行し続けることができる。一実施形態においては、複数のロケーションが使用可能であり、資源を提供することができる場合、プラットフォーム370は、複数のロケーションを越えて資源を取得してくるか否かを決定することができる。プラットフォーム370は、まずいずれのロケーションを試行するかを決定するために数多くの手法を用いることができる。ロケーションが応答しないことを証明する場合、プラットフォーム370は、事前にキャッシュされたこれらのロケーションの中からその資源のためのロケーションを選択することができる。
コピーすることができる種々の資源について、その資源のアクセスが成功すると、プラットフォーム370は任意にそのキャッシュ385に資源のコピーをキャッシュし、したがってその資源のためにキャッシュする発信者となることができる。この場合、プラットフォーム370は、そのホームRNSサーバに資源ロケータインタフェース330を介して、それがその資源のためにキャッシュする発信者となったことを通知することもできる。次いで、ホームRNSサーバは、そのピアのロケーションをその資源のロケーションのリストに追加するであろう。このピアあるいは他のピアからのこの資源に対する将来の要求は、ホームRNSサーバによってピア140に方向付けされ、キャッシュ385からサービスを提供することができる。
ピア140からの要求の受信に加えて、プラットフォーム370はまた、資源ロケータトラフィック310および/またはピアツーピアトラフィック320のフォームでキャッシュされた資源に対する要求を受信する。これらの要求は、同様にキャッシュ385からサービスを提供することができる。
図3および4に示される実施形態においては、別のプロトコルが、一方ではピアツーピアトラフィック320と正規のネットワークトラフィック325とで用いられ、他方では、資源ロケータトラフィック310で用いられる。資源のロケーションの間を交換されるメッセージは、正規のネットワークトラフィック325またはピアツーピアトラフィック320よりも特定の性質を持っているので、その資源ロケータトラフィック310のためのプロトコルは、より簡潔にすることができる。例えば、HTTPのようなテキストベースのプロトコルを用いるのではなく、プラットフォーム370は、より帯域効率のいいメッセージのバイナリ復号化を用いることによって、そのホームRNSサーバと通信することができる。これらの帯域を節約することによって、同一のRNSサーバ130をホームとするピア140の数を都合よく増大させることができる。これに代わる実施形態において、すべてのタイプのトラフィックに対し単一のプロトコルを使用することができる。
ゲートサーバ
上述の通り、図1のゲートサーバ120は、図2において説明したRNSサーバ130および図3において説明したピアプラットフォーム370と同様の機能を実装する。すなわち、ゲートサーバ120がピア資源を資源アドレスのフォームでピアプラットフォーム370として受信する場合、ゲートサーバ120は、その資源へのアクセスを正式なピアツーピアフォームに変換するステップを実行する。
その資源を要求する互換のピア装置に対して、ゲートサーバ120は、接触情報を提供して、ピアのプラットフォームが直接ピアの要求を送信することができるようにする。この場合、ゲートサーバ120は、単にその要求者に、これはそのホームRNSサーバに接触するため要求者に必要とされるピア資源への要求であることを通知する。互換性のある要求者は、ゲートサーバからの応答をインタプリットすることができ、したがってそのホームRNSサーバを用いて資源のロケーションを解決して直接与えられたロケーションをアクセスするであろう。
互換性のない装置に対して、ゲートサーバ120は、その要求をピアフォームに変換して、プロキシとしてその要求している装置に代わって動作する。この場合、ゲートサーバはまず、プラットフォーム370がするのと同様にその要求を処理し、次いで、要求者に代わってその資源をアクセスするという特別なステップを行う。すなわち、要求者がファイルのコピーを要求している場合、ゲートサーバは、資源をアクセスし、ファイルをダウンロードし、およびそれを要求者に送る。この最後の点において、ゲートサーバ120は、ゲートサーバが実際に資源をアクセスするピア140と同様の機能を実装する。
ピアツーピア資源アドレス付けスキーム
上記で議論したように、RNSアドレス付けスキームは、RNSサーバロケータサービスの重要な部分である。一実施形態においては、RNSアドレス付けスキームは、現在ワールドワイドウェブの資源を名前付けするために用いられるURLスキームと全体的に互換性がある。すなわち、ウェブページとピアツーピア資源との間のリンクが可能であり、一の資源から他の資源への移行がユーザにとって完全に透過とすることができる。例えば、ウェブページ内のリンクは、同一の文法的構造を有し、そのリンクが伝統的なウェブページに接続されるか、ピアツーピア資源に接続するかにかかわりなく、変更されないウェブブラウザによって逆参照(de−reference)することができる。
RNSアドレス付けスキームの本実施形態は、URL(Universal Rsource Locator)と同様の階層的名前付けスキームを使用する。例えば、URLのように、ピア資源アドレスは次のフォームとすることができる:
Figure 0004684534
アクセスプロトコルの例としては、ハイパーテキスト転送プロトコル(HTTP)、ハイパーテキスト転送プロトコルオーバSSL(セキュアソケットレイヤ)接続(HTTPS)、ファイル転送プロトコル(FTP)その他がある。この領域は、ピア資源が発信されたピアツーピア領域150に対応しており、その領域150のゲートサーバ120のDNS(ドメインネームサーバ)ホスト名と同一になるよう選択される。したがって、領域名は、ちょうどドメイン名が一意であるように、ネットワーキング環境において一意である。
例示される実施形態において領域の次に来るのは、ピア識別子である。これは、所定の資源のマスタ発信者に対するピア識別子に対応する。前述のように、ピア識別子はレジストラ110によって割り当てられ、領域150内で一意となる。
資源はさらに、多くのレベルの階層、例えばピア内の資源に対する経路名に基づいて編集することができる。
動的ピアツーピア領域識別子
一実施形態において、ピアツーピア資源アドレスは、文法的に正規のウェブURLに従い、文法的な約束によってウェブURLと異なることはできない。代わって、資源アドレスは、例えばそのアドレスが逆参照されると、動的に認識される。これにより領域を名前付けする際、極めて柔軟な取り扱いが可能となる。例えば、図1の実施形態において上述したように、外部ネットワークトラフィック125はゲートサーバ120によって受信される。ゲートサーバ120は資源アドレスを解決して、送信者に資源ロケータへクエリをどのように送信するかを指示する。そうでなければ、ゲートサーバ120が資源アドレスを解決し、送信者の代わりに資源をアクセスする。
図6は、資源アドレスをゲートサーバの視点から解決する一実施形態を示す図である。
610において、ゲートサーバは、正規のウェブURLとして資源アドレスを受信する。
620において、要求者が互換性のあるピア装置の場合、630において、ゲートサーバは、要求者にその固有の資源ロケータサービスを用いて資源をアクセスするよう指示する。一実施形態においては、ゲートサーバは、要求者が要求者による要求に含まれる特殊なHTTPヘッダに基づくピア装置であることを認識することができる場合がある。例えば、これは、要求者のタイプを「互換性のあるピア装置」と特定する「Via」ヘッダとすることができる。あるいはまた、要求者とゲートサーバとが追加のメッセージを交換して、互換性を確認する場合もある。要求者が互換性あるピア装置の場合、その要求者は、領域名をキャッシュして、資源アドレスを将来ゲートサーバに送信することを回避することができる。
620において要求者がピア装置でない場合、640において、ゲートサーバは要求されたコンテンツを取得して要求者に返す。
資源相同性
複数のロケーションにキャッシュすることができ、時間を越えて変更することができる資源に対して、キャッシュ相同性(coherence)は重要となる可能性がある。すなわち、資源が複数のピアによってキャッシュされ、次いでマスタ発信者がその資源を更新する場合、期限切れのキャッシュされたデータを用いて要求にサービスを提供しないことが重要である。「相同性のあるキャッシュ」とは、資源の有効なキャッシュされたコピーがそのマスタ資源と同一であることを意味する。
資源の種類に依存して、期限切れのデータが問題となる場合もあれば、問題とならない場合もある。例えば、その資源が愛好家の「その日のジョーク」というウェブサイトの場合、ユーザは、キャッシュされたデータが2、3日古くても気にしないかもしれない。一方、その資源がディトレーダのウェブサイト上にある株式相場表示データの場合、ユーザは迅速な更新を要求するであろう。すなわち、そのデータの優先度が高ければ高いほどキャッシュ相同性の基準への要求はより厳しくなる可能性がある。
複数の同一の資源アドレスを維持する資源に対する複数の更新に対処するため、資源識別子が用いられる。所与の資源のための資源識別子は、資源のバージョン番号に加え資源アドレスを含む。一実施形態においては、資源識別子は次のようにプラットフォーム370によって生成される:資源アドレスは、ピア140が登録されていた領域、ピア識別子、およびピア発信者ディレクトリ380にある発信される資源の相対ファイルシステムパスの組み合わせとして生成される:資源のバージョン番号は、その発信ディレクトリ380を検査することによってピアツーピアプラットフォーム370により定められるように、その資源の最後の作成時または変更時に基づく。
マスタ発信者が資源を作成または変更するたびに、マスタ発信者は、資源の最新の作成または変更のデータおよび時刻に基づいて新たな資源バージョン番号を生成する。
一実施形態においては、資源バージョン番号がピア装置で設定される時計の違いに影響されないことを保証するため、ピアは中央の領域の時計に同期させる。時計の同期は、例えばピア装置がオンラインになり、そのRNSサーバにそのピアの現在のIPアドレスを通知するとき実行することができる。さらに、ピア装置での時計の狂いがバージョンの番号付けに影響しないことを保証するため、ピアは規則的に中央の時計に再同期することができる。これに代わる実施形態においては、バージョン番号をプラットフォーム370によって順次生成することができる。
相同性のあるデータを高次に保証する一方法としては、マスタ発信者のみに資源を変更させ、およびアクセス前に現在の資源識別子をマスタ発信者によって検査することをすべての要求に必要とさせることである。例えば、資源が要求されるたびにロケータサーバはマスタ発信者に資源の現バージョンについてのクエリを発行し、現バージョンが発見されることを期待されるロケーションのリストを有する現バージョンを返す。
ピアが資源をキャッシュし、続いてその資源を再び要求する場合、その資源のバージョンがピアのキャッシュ385にキャッシュされているとしても、ロケータがもっとも最新のバージョンを返し、ピアがそのキャッシュされたコピーが同一のバージョンであると検証するまで、ピアはその資源をアクセスしないであろう。バージョンが変更されていた場合、要求しているピアはそのキャッシュから時代遅れのバージョンを廃棄して、ロケータサービスによって供給されたそのリストから資源の新たなバージョンをアクセスする。
ピア140またはゲートサーバ120が、キャッシュしている発信者から資源を取り込む場合、資源識別子にあるバージョンの表示が資源ロケータの要求の結果返された期待されるバージョンと合致することを保証するため検査することができる。ピア140が期待されるのと異なるバージョンと認識する場合、これはその資源の古いバージョンをキャッシュしている発信者のせいかもしれない。この場合、ピア140はロケータの要求の結果RNSサーバによって返された他のいずれかのロケーションを試行しなければならないか、またはロケータ要求を一から繰り返すことを選択することができる。
事前に(proactively)マスタ発信者にクエリを発行することによって、マスタ発信者に対し途方もない量のデータトラフィックを生成することができる。例えば、数百万のピアを有する領域において、その資源についてのマスタ発信者が通常の56Kモデムでネットワークに結合するデスクトップコンピュータの場合、マスタ発信者は、ロケータサービストラフィックがストリームライン化されたフォーマットを用いたとしても、ロケータサービストラフィックに対して容易にボトルネックになる。
問題とはならないが、やや低いレベルの相同性は、現バージョンについて事前にマスタ発信者にクエリを発酵する以外に、変化および/または変更をレポートするマスタ発信者に依存する。例えば、マスタ発信者が更新されたバージョンを発信するたびに、マスタ発信者はそのホームRNSサーバに変化を通知する。すなわち、マスタ発信者は、ホームRNSサーバにその資源に関連する新たな資源識別子を通知する。RNSサーバがマスタ発信者からの通知しない場合、RNSサーバは要求された資源に対する現在のレコードは正しいと考える。これは図2の実施形態の場合である。
RNSサーバがマスタ発信者よりも、ロケータサービストラフィックに対してより高速の帯域幅のデータ接続を持つより強健な装置である可能性がある。この場合、ボトルネックになる可能性をずっとより低くするため、資源をアクセスする前にRNSサーバが要求のサービスを提供する。さらに、非常に大きいピアツーピア領域においては、単一のホームRNSサーバがボトルネックになる可能性がある。少なくとも、この手法によって本来別の目的で費やされるべき帯域が大量に消費される可能性がある。
ホームRNSサーバやマスタ発信者から種々のバージョン番号を常に要求するのではなく、時々キャッシュを単に流す(flush)という手法がある。RNSサーバが資源のレコードを現在有する場合、RNSサーバはそのレコードを使用する。ピアがキャッシュされた資源のコピーを有する場合、ピアはそのキャッシュされたコピーを使用する。キャッシュされた項目の生存期間は資源の優先度に基づいて調整することができる。その項目の優先度が高くなればなるほど、よりしばしば流される可能性がある。
資源を変更する権限が一のマスタユーザに限られない場合、キャッシュ相同性は可能であるが、より大きなオーバヘッドを扱う必要がある。例えば、多くのユーザが資源をキャッシュして、それを共同で変更する場合、各ユーザによって生成される新たなバージョンの各々は、資源がキャッシュされたすべてのロケーションをRNSサーバが追跡することを考慮して、すべての他のユーザに同報される可能性がある。
これに代わる多くの手法が、上述の手法の組み合わせを含めキャッシュ相同性のために使用することができる。特定の実施形態においては、ユーザは任意で種々の資源に対して要求されるキャッシュ相同性のレベルを選択することができる。
図5は、RNSサーバから見た所定のレコードに対するキャッシュ相同性スキームの一実施形態を示す図である。例示される実施形態において、このRNSサーバをホームとするピアは、資源を事前にアクセスしてキャッシュする。次いで、RNSサーバはそのピアをその資源についてキャッシュする発信者としてリストに載せ、およびそのピアによってキャッシュされた資源について資源識別子を(バージョン表示を含め)リストに載せている資源レコードをキャッシュする。ピアは、その資源が使用することができることを期待されるいくつかのロケーションのリストの中の一箇所とすることができる。
510において、RNSサーバはキャッシュされたレコードに対する要求を監視する。監視の間、RNSサーバは、520において、キャッシュされたレコードが時間切れかどうかを監視する。すなわち、レコードはRNSサーバがどの程度の時間それをキャッシュするかに関する時間制限を有する。時間切れになった場合、540において、レコードが流され処理は終了する。この時間制限は、所定の資源に対するすべてのロケーションを参照するすべてのレコードに適用される場合もあり、またそれはキャッシュする発信者のロケーションだけに適用される場合もある。540においてキャッシュする発信者のロケーションのみが流される場合、その資源についてより最近キャッシュされたロケーションは、RNSサーバにおいて資源レコードに継続して維持することができる。
キャッシュされたレコードに対する要求を待つ間、530においてRNSサーバはまた、ローカルのマスタが資源を更新したか否かを監視する。すなわち、その資源いついてのマスタ発信者はまた、このRNSサーバをホームとする場合、マスタ発信者はRNSサーバに、いつその資源がRNSサーバに新たな資源識別子を送信することによって更新されるかを通知するであろう。この場合、540において、RNSサーバはその資源の古いバージョンについてのロケーションのレコード全部を流す。
一実施形態においては、マスタ発信者は、そのホームRNSサーバに、予めそのホームRNSサーバによって調べられた(およびそのホームRNSサーバが、そのためにキャッシュされた資源レコードを有する)変更の資源についての情報を送信するだけで選択的にそのホームRNSサーバに資源の更新を通知することができる。
一実施形態において、ホームRNSサーバはまた、マスタ発信者に、ホームRNSサーバがキャッシュされた資源レコードを廃棄することを選択するときはいつでも通知することができる、このような通知に続いて行うことができる。
他の実施形態においては、ホームRNSサーバは、キャッシュされた資源レコードがマスタ発信者にマスタ発信者が、一時的にその資源についての変更通知のホームRNSサーバへの送信を、その資源が再びマスタ発信者に関しホームRNSサーバによって調べられるまで停止する場合があることを示す状態表示をマスタ発信者から受信した変更通知に返信することができる。
資源が時間切れになるか、またはマスタ発信者によって更新されるまで待つ間、RNSサーバはまた、535において、キャッシュしている発信者がその資源を流したか否かを監視する。ピアがもはやその資源をキャッシュしていない場合、その資源に関してそのピアのロケーションをキャッシュし続ける理由はない。一実施形態においては、ピアプラットフォームは、いつ新たな資源が生成されるか、いつ資源が変更されるか、およびいつ資源が削除されるかをそれらのRNSサーバに通知する。これによって、RNSサーバはそれらのレコードを更新する。
510にもどると、キャッシュされたレコードに対する要求が受信される場合、550においてそのRNSサーバは、キャッシュされた状態を提供する。RNSサーバは、別のRNSサーバをホームとするマスタ発信者からの資源変更は監視しないことに留意されたい。すなわち、例示される実施形態において、リモートRNSサーバをホームとするマスタ発信者によって発信された資源の状態の変化は図5のRNSサーバによって無視される。換言すれば、資源レコードが時間切れでない場合、そのレコードは有効と考えられる。この手法は、RNSサーバ内のトラフィックを非常に低減させることができる。リモートのマスタ発信者についてのレコードの生存時間を短く保つことによって、かなり高いレベルの相同性を維持することができる。
これに代わる実施形態において、レコードを流すため、多くの追加の基準を用いることができる。例えば、RNSサーバがメモリ空間が少なくなった場合、レコードを流すことができる。ついで、より多くのメモリが使用可能になると、RNSサーバは、発信された資源の現在の状態についてピアにクエリを発行することによってレコードを再生成することができる。
実装および代替の実施形態
図1のピア140のようなピアは、広範な種々の装置とすることができる。一実施形態においては、ピアはエンドユーザ装置、例えばデスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルド装置、などである。1つのピアは、ネットワーキング環境における他のいずれかのロケーションで使用可能な資源へのアクセスを要求するクライアントのように動作し、また同様にそのピアにおいて使用可能な資源についての要求に対しサービスを提供するサーバのようにも動作することができる。あるピアにおいて使用可能な資源は、ファイル、可能なファイルのディレクトリ、ピアに接続する機器、ウェブサービス、マイクロソフト(登録商標).NETサービス、アプリケーションインスタンス、所定のユーザ(チャットの参加者など)を含む場合がある。
RNSロケータサービストラフィックは、実際にほとんどの資源にアクセスする際に必要なデータ量に比較して、少ない量のデータトラフィックしか要求されない。換言すると、ピアは、単にRNSサーバに資源が見つかるロケーションを問い合わせ、実際にその資源をアクセスするためのロケーションまたは一連のロケーションに行くだけである。この2つのステップの処理によって、RNSネットワークは例外的に「スケーラブル」となるが、これは巨大な数のピアをサポートし、特に困難を受けることなく急速に成長することができることを意味する。たとえば、最初のステップは非常に小さいデータしか使用しないので、RNSサーバは時間当たり非常に大きな数の小さな要求を扱うことができる。データトラフィックの容量は、ピア間で直接交換される。容量を追加するのは、より多くのRNSサーバを追加してより多くのピアを登録するように容易である。
図1において、領域150の要素は、相互に種々のネットワーク転送プロトコル、例えばユーザダイアグラムプロトコル(UDP)または伝送制御プロトコル(TCP)のいずれか、および種々のアプリケーションプロトコル、例えば専用プロトコル、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)などのいずれかを用いて通信する。領域150を含むネットワーキング環境は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、私設ネットワーク、公開のインターネットなどを含む。これに代わる実施形態においては、領域150はスタンドアロンネットワークを含む。
RNSサーバは、暗号化、ファイヤウォールなどを含む数多くのセキュリティ手法を使用することができる。種々のプロトコルツールもまた、パケットが失われたり、受信が順序誤りになったり、重複して受信したりするなどの信頼性のないネットワーキング環境に適応するため使用することができる。例えば、要求および応答はパイプラインおよび/または複数回送信とすることができる。各トランザクションは「ノンス」を含むが、これは同一の要求に対し複数の応答が合ったときこれを区別するために、トランザクションを開始するものによって生成される一意の識別子である。
図7は、広範な分類のコンピュータシステム、例えばパーソナルコンピュータ、ワークステーション、および/または組み込みシステムを示すことを企図するハードウェアシステム700の一実施形態を示す図である。例示される実施形態において、ハードウェアシステム700は、高速バス705に結合したプロセッサ710を含み、高速バス705は、入出力(I/O)バス715にバスブリッジ730を介して結合する。一時メモリ720は、バス705に結合する。永久メモリ740は、バス715に結合する。I/O装置750は、ディスプレイ装置、キーボード、1つまたは複数の外部ネットワークインタフェースを含むことができる。
特定の実施形態は更なるコンポーネントを含み、上記のすべてを含むことを必要とせず、あるいは1つまたは複数のコンポーネントを組み合わせることができる。例えば、一時メモリ740は、プロセッサ710とともにオンチップとすることができる。あるいはまた、永久メモリ720は、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)とすることができ、その場合、ソフトウェアルーチンはEEPROMからとられて実行される。実施形態によっては、コンポーネントのすべてが結合する単一のバスを用いる場合もあり、あるいは1つまたは複数の追加のバスおよび種々の追加のコンポーネントを結合することができるバスブリッジを用いる場合がある。当業者は、これに代わる内部ネットワーク、例えばメモリコントローラハブおよびI/Oコントローラハブを持つ高速システムバスに基づく内部ネットワークに精通しているであろう。追加のコンポーネントとしては、追加のプロセッサ、CD ROMドライブ、追加のメモリ、その他の本技術分野で既知の周辺コンポーネントを含むことができる。
一実施形態において、上述の通り本発明は、1つまたは複数のハードウェアシステム、例えば図7のハードウェアシステム700を用いて実装される。複数のコンピュータが用いられる場合、それらのシステムは結合して、外部ネットワーク、例えばローカルエリアネットワーク(LAN)、インターネットプロトコル(IP)ネットワークなどを介して通信することができる。一実施形態において、本発明は、コンピュータ内の1つまたは複数の実行ユニットによって実行されるソフトウェアルーチンとして実装される。所与のコンピュータのために、ソフトウェアルーチンは、永久メモリ740のような記憶装置に格納することができる。
あるいはまた、図8に示すように、ソフトウェアルーチンは、機械読取可能な記憶媒体820、例えばディスケット、CD-ROM、磁気テープ、デジタルビデオまたは多用途ディスク(DVD)、レーザディスク、ROM、フラッシュメモリなどを用いて、格納される機械実行可能命令810とすることができる。一連の命令は、ローカルに格納する必要はなく、リモートの記憶装置、例えばネットワーク上のサーバ、CD ROM装置、フロッピ(登録商標)などから、例えば図7のI/O装置750を介して受信することができる。
いずれのソースによっても、命令を記憶装置から一時メモリ720にコピーし、プロセッサ710によってアクセスおよび実行することができる。一実施形態において、これらのソフトウェアルーチンはC言語で記述される。しかし、これらのルーチンが広範な種類のプログラム言語のいずれかで実装することができることが理解されるべきである。
これに代わる実施形態において、本発明は別々のハードウェアまたはファームウェアで実装される。例えば、アプリケーションスペシフィック統合回路(ASICs)は、上述の関数(function)の1つまたは複数によってプログラムすることができる。別の実施例において、本発明の1つまたは複数の関数は、追加の回路基板上の1つまたは複数のASICで実装することができ、この回路基板は上述のコンピュータに挿入される。別の実施例では、フィールドプログラマブルゲートアレイ(FPGAs)または静的プログラマブルゲートアレイ(SPGA)を用いて、本発明の1つまたは複数の関数を実装することができる。さらに別の実施形態では、ハードウェア及びソフトウェアの組み合わせが用いられて、本発明の1つまたは複数の関数を実装することができる。
以上によって、資源名前付けサービスが説明された。当業者は、本詳細な説明を読んだ後本発明の多くの代替および変更を理解するが、例示により説明した所定の実施形態は、いかなる方法でも、限定的に解釈することを意図するものではないことは理解されるであろう。したがって、所定の実施形態の詳細な参照は特許請求の範囲を制限することを意図したものではない。
ピアツーピアの領域の一実施形態を示す図である。 RNSサーバからみたピア資源をロケーティングする一実施形態を説明する図である。 ピアの一実施形態を示す図である。 図3で示されるピアプラットフォームから見たピア資源をロケーティングする一実施形態を示す図である。 キャッシュ相同性スキームの一実施形態を示す図である。 ピア資源アドレスを解決する一実施形態を示す図である。 本発明を実行するハードウェアシステムの一実施形態を示す図である。 本発明の機械読取可能命令を格納する機械読取可能な記憶媒体の一実施形態を示す図である。

Claims (9)

  1. ロケータサービスを提供するレジストラ、少なくとも1つの資源名前付けサービス(RNS)サーバおよびゲートサーバ並びに各々が資源ロケータインタフェースを有するピアを含むピアツーピア領域ネットワーク環境において、ピア間で資源を追跡し、ロケーティングするコンピュータ実装方法であって、
    前記レジストラにピアを登録するステップと、
    前記レジストラにより、ピアに前記レジストラの領域内で一意となる識別子を提供するステップと、
    前記レジストラにより、前記ピアを所定のRNSサーバに割り当てるステップと、
    前記割り当てられたRNSサーバにより、IPアドレスまたはIPポート番号を含む、現在のネットワークロケーションを追跡するステップと、
    前記ピアにより、前記ロケータサービスを使用し、前記資源ロケータインタフェースを介して資源をロケーティングするステップと、
    前記ピアにより、前記ロケータサービスが提供するロケーションにおいて前記資源をアクセスするステップと、
    前記ピアにより、前記アクセスされた資源をキャッシュするステップと、
    前記ピアにより、前記ピアが前記キャッシュされた資源のためのキャッシュとして動作していることを前記RNSサーバに通知し、および前記登録処理の間に前記レジストラから取得した一意の識別子を使用して、前記キャッシュされた資源を他のピアがアクセスすることができるようにするステップと、
    前記ピアにより、定期的に前記割り当てられたRNSサーバにPINGを送信して、前記ピアがまだログオンしていることを知らせるステップと、
    前記割り当てられたRNSサーバが定期的なPINGを前記ピアから受信しない場合、前記割り当てられたRNSサーバが、そのレコードを更新して前記ロケーションが不活性になったことを示すステップと
    を備えたことを特徴とする方法。
  2. 前記資源ロケータサービスは、前記資源アドレスにおいて資源のマスタ発信者をその資源のアドレスで一意に識別するとともに、前記マスタ発信者に関連する資源のための相対的経路を含む資源アドレス付けスキームを推定することを特徴とする請求項1に記載の方法。
  3. 前記資源をロケーティングするステップは、前記RNSサーバにより所定のロケーションのための資源要求を前記ピアから受信するステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記資源をロケーティングするステップは、前記RNSサーバが、それが要求された資源に対応する資源のレコードを有するか否か、そのメモリをチェックし、有するときは前記資源の情報および前記資源のロケーションのセットをもって応答するステップをさらに含むことを特徴とする請求項3に記載の方法。
  5. 前記RNSサーバは、異なるロケーションのセットを含む同一の資源についての成功した要求に対し、複数のロケーションへのネットワークトラフィックのバランスを取るため、ラウンドロビン式を含む選択方式を用いてロケーションのセットを選択することを特徴とする請求項4に記載の方法。
  6. 前記RNSサーバは、合致するレコードを有しないときは、前記資源についての状態情報をマスタ発信者から取得してキャッシュし、該資源状態情報をその前記要求者に提供することを特徴とする請求項4に記載の方法。
  7. 前記要求は、メッセージプロトコルまたはHTTPのフォームをとることを特徴とする請求項3に記載の方法。
  8. 請求項1に記載の各ステップをコンピュータに実行させる命令を備えたコンピュータプログラム。
  9. 請求項2乃至7のいずれかに記載のステップをコンピュータに実行させる命令を備えたコンピュータプログラム。
JP2002545358A 2000-11-22 2001-10-25 ピアツーピア環境においてキャッシュされた資源間における資源の相同性 Expired - Fee Related JP4684534B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US25265900P 2000-11-22 2000-11-22
US25265800P 2000-11-22 2000-11-22
US09/952,367 US20020062336A1 (en) 2000-11-22 2001-09-13 Resource coherency among resources cached in a peer to peer environment
PCT/US2001/050889 WO2002042900A2 (en) 2000-11-22 2001-10-25 Cache coherent peer-to-peer computing architecture

Publications (3)

Publication Number Publication Date
JP2004524602A JP2004524602A (ja) 2004-08-12
JP2004524602A5 JP2004524602A5 (ja) 2005-12-22
JP4684534B2 true JP4684534B2 (ja) 2011-05-18

Family

ID=27400586

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002545358A Expired - Fee Related JP4684534B2 (ja) 2000-11-22 2001-10-25 ピアツーピア環境においてキャッシュされた資源間における資源の相同性

Country Status (7)

Country Link
US (1) US20020062336A1 (ja)
EP (1) EP1338133B1 (ja)
JP (1) JP4684534B2 (ja)
AT (1) ATE498273T1 (ja)
AU (1) AU2002235263A1 (ja)
DE (1) DE60144023D1 (ja)
WO (1) WO2002042900A2 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7188145B2 (en) 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
US20020138552A1 (en) * 2001-03-21 2002-09-26 Debruine Timothy S. Method and system for optimizing private network file transfers in a public peer-to-peer network
US7562112B2 (en) * 2001-07-06 2009-07-14 Intel Corporation Method and apparatus for peer-to-peer services for efficient transfer of information between networks
WO2003015341A2 (en) * 2001-08-04 2003-02-20 Kontiki, Inc. Method and apparatus for facilitating secure distributed content delivery across a computer network
EP1423796A1 (en) * 2001-08-09 2004-06-02 Gigamedia Access Corporation Hybrid system architecture for secure peer-to-peer-communication
GB2381154B (en) * 2001-10-15 2004-06-30 Jacobs Rimell Ltd Object distribution
US20050066219A1 (en) 2001-12-28 2005-03-24 James Hoffman Personal digital server pds
US6836825B2 (en) * 2002-07-01 2004-12-28 Sun Microsystems, Inc. Method and apparatus for synchronizing caches in a distributed computing system
CA2506168A1 (en) * 2002-11-15 2004-06-03 Bigchampagne, Llc Monitor file storage and transfer on a peer-to-peer network
EP1565839B1 (en) * 2002-11-29 2015-03-25 International Business Machines Corporation Index server support to file sharing applications
US7769881B2 (en) * 2003-01-24 2010-08-03 Hitachi, Ltd. Method and apparatus for peer-to peer access
GB2400200A (en) * 2003-04-05 2004-10-06 Hewlett Packard Development Co Use of nodes to monitor or manage peer to peer network
GB0315204D0 (en) * 2003-06-28 2003-08-06 Ibm A peer computer system
US20040267875A1 (en) * 2003-06-30 2004-12-30 Hennessey Wade L. Method and apparatus for establishing peering rules for distributed content delivery
US7450524B2 (en) * 2003-06-30 2008-11-11 Kontiki, Inc. Method and apparatus for determining network topology in a peer-to-peer network
US7440559B2 (en) * 2003-10-22 2008-10-21 Nokia Corporation System and associated terminal, method and computer program product for controlling the flow of content
JP4747733B2 (ja) * 2005-08-22 2011-08-17 ブラザー工業株式会社 ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
US7512943B2 (en) * 2005-08-30 2009-03-31 Microsoft Corporation Distributed caching of files in a network
US20070233879A1 (en) * 2005-10-07 2007-10-04 Steven Woods System and method for advertisement identification, selection, and distribution involving a peer-to-peer network
JP4862463B2 (ja) * 2006-04-11 2012-01-25 ブラザー工業株式会社 情報通信システム、コンテンツカタログ情報検索方法、及びノード装置等
JP2007280303A (ja) * 2006-04-11 2007-10-25 Brother Ind Ltd 情報通信システム、コンテンツカタログ情報配信方法、及びノード装置等
JP4655986B2 (ja) * 2006-04-12 2011-03-23 ブラザー工業株式会社 ノード装置、記憶制御プログラム及び情報記憶方法
GB2440761A (en) 2006-08-11 2008-02-13 Cachelogic Ltd Using a proxy server as a cache in a peer to peer network to speed up the multicast distribution of large files.
GB2440760A (en) 2006-08-11 2008-02-13 Cachelogic Ltd Network and method of transferring data over the network by nodes sending messages containing a subset of list of data available at the node
GB2440774B (en) 2006-08-11 2011-07-27 Cachelogic Ltd Content Delivery System For Digital Object
GB2440759A (en) 2006-08-11 2008-02-13 Cachelogic Ltd Selecting a download cache for digital data
WO2008050052A2 (fr) * 2006-10-24 2008-05-02 France Telecom Procede de communication d'ensembles de donnees multi-localises
US20080207328A1 (en) * 2007-02-23 2008-08-28 Neoedge Networks, Inc. Interstitial advertising in a gaming environment
US8015167B1 (en) * 2007-09-05 2011-09-06 Adobe Systems Incorporated Media players and download manager functionality
US20100011060A1 (en) * 2008-07-08 2010-01-14 Solid State Networks, Inc. Methods and apparatus for distributing content
US8832281B2 (en) 2010-01-08 2014-09-09 Tangome, Inc. Utilizing resources of a peer-to-peer computer environment
US9094527B2 (en) 2010-01-11 2015-07-28 Tangome, Inc. Seamlessly transferring a communication
US8560633B2 (en) 2010-01-11 2013-10-15 Tangome, Inc. Communicating in a peer-to-peer computer environment
CN102325301B (zh) * 2011-07-28 2013-12-25 同济大学 移动p2p网络资源定位与调度方法
US20130110920A1 (en) * 2011-10-27 2013-05-02 Alcatel-Lucent Usa Inc. Network-assisted peer-to-peer secure communication establishment
US11003687B2 (en) * 2012-05-15 2021-05-11 Splunk, Inc. Executing data searches using generation identifiers
US9130971B2 (en) 2012-05-15 2015-09-08 Splunk, Inc. Site-based search affinity
US8788459B2 (en) * 2012-05-15 2014-07-22 Splunk Inc. Clustering for high availability and disaster recovery
US10387448B2 (en) 2012-05-15 2019-08-20 Splunk Inc. Replication of summary data in a clustered computing environment
US11010390B2 (en) * 2012-05-15 2021-05-18 Splunk Inc. Using an electron process to determine a primary indexer for responding to search queries including generation identifiers
US9124612B2 (en) 2012-05-15 2015-09-01 Splunk Inc. Multi-site clustering
US10387331B2 (en) * 2012-06-05 2019-08-20 Vmware, Inc. Process for maintaining data write ordering through a cache
KR102063681B1 (ko) 2013-03-11 2020-01-08 삼성전자주식회사 컨텐츠 중심 네트워크에서 컨텐츠 폐기 리스트를 이용하여 유효하지 않은 컨텐츠를 삭제하는 관리 노드, 요청 노드 및 일반 노드의 통신 방법
EP3122124B1 (en) * 2014-04-16 2019-06-19 Huawei Technologies Co., Ltd. Information transmission method, device, and system
RU2610418C2 (ru) * 2014-08-29 2017-02-10 Общество С Ограниченной Ответственностью "Яндекс" Способ координации сетевого обмена данными
US10936674B2 (en) * 2015-08-20 2021-03-02 Airwatch Llc Policy-based trusted peer-to-peer connections
CN106658054B (zh) * 2016-10-13 2019-10-22 优酷网络技术(北京)有限公司 一种视频广告请求链路优化方法和装置
CN109104466B (zh) * 2018-07-24 2021-01-26 南京邮电大学 一种基于P2P的WoT资源管理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914571A (en) * 1987-06-15 1990-04-03 International Business Machines Corporation Locating resources in computer networks
US5224505A (en) * 1992-09-08 1993-07-06 Fu Tai Umbrella Works, Ltd. Automatic umbrella with upwardly and downwardly thrusted push button
US5675802A (en) * 1995-03-31 1997-10-07 Pure Atria Corporation Version control system for geographically distributed software development
US5729682A (en) * 1995-06-07 1998-03-17 International Business Machines Corporation System for prompting parameters required by a network application and using data structure to establish connections between local computer, application and resources required by application
US6098078A (en) * 1995-12-29 2000-08-01 Lucent Technologies Inc. Maintaining consistency of database replicas
US5787441A (en) * 1996-01-11 1998-07-28 International Business Machines Corporation Method of replicating data at a field level
JPH1196008A (ja) * 1997-09-19 1999-04-09 Sony Corp データ構造識別方法および記録媒体
US5946680A (en) * 1997-11-28 1999-08-31 International Business Machines Corporation Method of determining the unique ID of an object in a peer to peer configuration of object indexes
US6151624A (en) * 1998-02-03 2000-11-21 Realnames Corporation Navigating network resources based on metadata
EP0993163A1 (en) * 1998-10-05 2000-04-12 Backweb Technologies Ltd. Distributed client-based data caching system and method
US6304913B1 (en) * 1998-11-09 2001-10-16 Telefonaktiebolaget L M Ericsson (Publ) Internet system and method for selecting a closest server from a plurality of alternative servers
US6675205B2 (en) * 1999-10-14 2004-01-06 Arcessa, Inc. Peer-to-peer automated anonymous asynchronous file sharing
US6661799B1 (en) * 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication

Also Published As

Publication number Publication date
DE60144023D1 (de) 2011-03-24
ATE498273T1 (de) 2011-02-15
WO2002042900A3 (en) 2002-10-10
EP1338133A2 (en) 2003-08-27
EP1338133B1 (en) 2011-02-09
US20020062336A1 (en) 2002-05-23
JP2004524602A (ja) 2004-08-12
WO2002042900A2 (en) 2002-05-30
AU2002235263A1 (en) 2002-06-03

Similar Documents

Publication Publication Date Title
JP4684534B2 (ja) ピアツーピア環境においてキャッシュされた資源間における資源の相同性
US7734817B2 (en) Universal naming scheme for peer-to-peer resources
US7610378B2 (en) Locator and tracking service for peer-to-peer resources
US20240146796A1 (en) System providing faster and more efficient data communication
US20210021692A1 (en) Translation of resource identifiers using popularity information upon client request
EP1207668B1 (en) System and method for performing client-centric load balancing of multiple globally-dispersed servers
US7509428B2 (en) Method and system for communicating between clients in a computer network
US20040143579A1 (en) Address query response method, program, and apparatus, and address notification method, program, and apparatus
US8850056B2 (en) Method and system for managing client-server affinity
US20150334082A1 (en) Request routing management based on network components
US20030120680A1 (en) Method for directly providing content and services via a computer network
WO2004072798A2 (en) Methods and systems for providing dynamic domain name system for inbound route control
JP4180279B2 (ja) 名前解決を用いたルーティング方法およびそのシステム
JP2004240863A (ja) ドメイン名サーバおよびそのプログラム、アプリケーションサーバおよびそのプログラム、ならびに通信システム
JP3708085B2 (ja) Dns問い合わせ装置およびdns問い合わせ方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041025

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041025

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20041025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070501

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070530

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071214

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20080314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080414

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080610

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080808

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20100608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110209

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

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4684534

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees