JP3899076B2 - 一時的ネットワーク - Google Patents

一時的ネットワーク Download PDF

Info

Publication number
JP3899076B2
JP3899076B2 JP2003581458A JP2003581458A JP3899076B2 JP 3899076 B2 JP3899076 B2 JP 3899076B2 JP 2003581458 A JP2003581458 A JP 2003581458A JP 2003581458 A JP2003581458 A JP 2003581458A JP 3899076 B2 JP3899076 B2 JP 3899076B2
Authority
JP
Japan
Prior art keywords
node
network
persistent
identifier
nodes
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
JP2003581458A
Other languages
English (en)
Other versions
JP2005522103A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Priority claimed from US10/109,373 external-priority patent/US7181536B2/en
Priority claimed from US10/108,088 external-priority patent/US7177929B2/en
Priority claimed from US10/107,960 external-priority patent/US7251689B2/en
Priority claimed from US10/107,696 external-priority patent/US7069318B2/en
Priority claimed from US10/107,842 external-priority patent/US7039701B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2005522103A publication Critical patent/JP2005522103A/ja
Application granted granted Critical
Publication of JP3899076B2 publication Critical patent/JP3899076B2/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
    • 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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5084Providing for device mobility
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/1044Group management mechanisms 
    • H04L67/1046Joining mechanisms
    • 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/1044Group management mechanisms 
    • H04L67/1048Departure or maintenance mechanisms
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
  • Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)

Description

本発明は、コンピュータ・ネットワークに関し、より詳細には一時的ネットワーク環境で使用される方法、システム、およびコンピュータ・プログラム製品に関する。
ピアツーピア・ネットワークまたは「P2P」ネットワークでは、各通信ノードがネットワーク・プログラムを有しており、それによって各ノードはネットワーク・プログラムを有する他のノードと通信を始めることができる。ネットワークが非集中型であるので、各ノードは「ピア(peer)」とみなされ、各ノードは(P2P交換方式のための)同一の機能を有する。P2Pネットワークは、中央演算処理装置(「CPU」)サイクル、メモリ、ストレージ・デバイスなどのリソースの浪費が避けられる、より効率的なネットワークとして期待されている。こうしたネットワークは、各ノードが自由にネットワークに参加し離脱できるという意味でアド・ホック(adhoc)である。したがって、P2Pネットワークは、「一時的な(transient)」ネットワークと特徴づけることができる。
従来技術のP2Pネットワーク・プログラムは、動的クエリーおよびピア発見の機能を提供する。しかし、既存の技術にはいくつかの欠点がある。永続的なネットワーク・アドレスがないことが、そのような欠点の1つである。動的アドレッシング方式で各ノードにネットワーク・アドレスが割り当てられるので、個々のノードは、P2Pネットワークに参加するたびに、通常異なるインターネット・プロトコル(「IP」)アドレスを有することになる(ダイアルアップ・アカウントを有するユーザは、ログインのたびに異なるIPアドレスを持つ。ある種のデジタル加入者線(digital subscriber line)すなわち「DSL」など、一部の「常時接続」アカウントを有するユーザも、ログインの度に異なるIPアドレスを持つことがある)。このように永続的なアドレスがないために、各ノードは、どこで特定のサービスまたはコンテンツ・リソースが使用可能かを「記憶しておく(remember)」ことが困難になる。したがって、ノードがコンテンツまたはある種のサービスを必要とするときには、通常新たな発見要求を発行する必要があり、その上多数の応答の中からどのように選択するのかを決定しなければならないこともある。この通信は、膨大なトラフィックを発生することになる。
既存のP2Pネットワークのもう1つの欠点は、信頼モデル(trust model)がないこと、すなわちノードに永続的なネットワーク・アドレスがないので、どのノードが信頼でき、どのノードが信頼できないかを永続的に追跡する既存の方法がないことである。したがって、あるノード(またはそのノードのユーザ)がサービスまたはコンテンツをどのノードから得るかを選択する際に、動的クエリーに回答を寄せた1組のノードの中からどのように選択するのかを決定する上で使用できる「実績(trackrecord)」または履歴が存在しないことになる。このように信頼モデルがないことは、P2Pネットワークが、一時的コミュニティ(transientcommunity)のメンバ間の信頼できるトランザクションをサポートしないことを意味している。(サン・マイクロシステムズ社のJXTAプロジェクトは、「ピア・グループ」または「共用空間」の概念を提供するP2Pアーキテクチャであり、そこではピア・グループ内の各ノードがサービスを公開(publish)することができる。このサービスには、メンバーシップ、アクセス、リゾルバのサービスなど1組のコア・サービスが含まれる。そこで規定されたアプローチでは、認証、許可、およびネーミングについてクライアント/サーバ・モデルをピア・グループに適用するものである。すなわち、ピア・グループ・レベルだけではあるが、集中化の概念を維持している。このようなピア・グループを、一時的コミュニティとして特徴づけるのは適切ではない。同様に、グルーブ・ネットワークス社(GrooveNetworks, Inc.)のGroove(登録商標)製品もピア・コミュニティ内部の1組の「共用サービス」を提供する。また、このサービスの組には、セキュリティ、メンバ、およびアクセス・コントロールのサービスが含まれる。この場合のセキュリティ機構は、認証のための公開鍵インフラストラクチャ(「PKI」)、および機密保持のための共用秘密鍵による鍵交換である。したがって、デジタル署名、デジタル認証、および共用セキュリティ・サービスを含むことになるこの要件は、一時的コミュニティの概念を否定する。)
よく知られたP2Pネットワークの1つに、「GnutellaNet」と呼ばれるものがある。GnutellaNetでは、ユーザが初めに「ダウンロード」ウェブ・サイトに行くことなく、ユーザのコンピュータのストレージ・デバイス・リソース間で直接ファイル交換を行うことが可能なプロトコルを使用している。「ナプスター(Napster)」は、もう一つのよく知られたP2Pネットワーク実装である。ナプスターでは、ユーザは、集中管理されたウェブ・サイトに接続してMP3音楽ファイルを識別し、次いでそれらのファイルを他のユーザのコンピュータの1つからダウンロードすることができる。ナプスターは、特にMP3ファイルに適合されているが、GnutellaNetを使用すればどのようなタイプのファイル・コンテンツでもダウンロード可能である。他にいくつかのP2Pネットワーク実装も存在する。
P2Pネットワークは、潜在的にクライアント/サーバ・ネットワークより、より効率的なネットワークになる可能性がある。この効率向上の可能性は、P2Pネットワークが中央のサーバを含まないことから生ずる。クライアント/サーバ・モデルでは、ほとんどの処理機能が中央のサーバ上に存在し、したがって処理負荷がこのサーバに集中する傾向がある。P2Pネットワークでは、ネットワーク中のあらゆるノードにタスクを分配することが可能であり、それによりネットワーク・リソースをより効率的に使用することができる。P2Pシステムの動的な性質、およびその効率的な負荷分配の能力が増強され、P2Pシステムは「IT(情報技術)」アーキテクチャにおける次の変革になった。しかし、上記のような制限のため、既存のP2Pネットワークは消費者および「無料の(for-free)」のマーケットに委ねられてきた。このため、P2Pシステムは(eビジネス・トランザクションまたはビジネスツービジネス・トランザクションなどの)大容量ビジネスの実施にはうまく適合していない。(また、上記のように、既存のP2P実装は、一時的コミュニティ内でのセキュアなトランザクションにもうまく適合していない。セキュアなトランザクションは、一般にeビジネスにとって不可欠なものである。)
さらに、従来のP2Pシステムは無管理であり、また同質的(homogenous)である。そのため、様々な装置を管理可能な方法で相互運用できるようにする必要がある大規模で頑強なITアーキテクチャー内でP2Pを実装することは非現実的である。
米国特許出願第09/956,276号 http://www.research.ibm.com/autonomic/、「オートノミック・コンピューティング」に関する情報 「Simple Object Access Protocol(SOAP) 1.1, W3C Note 08 May 2000」http://www.w3.org/TR/2000/NOTE-SOAP-20000508、SOAPに関する詳細情報 http://www.w3.org/2000/xp、XMLプロトコルに関する詳細情報 「Web Services Description Language(WSDL) 1.1, W3C Note 15 March 2001」、http://www.w3.org/TR/2001/NOTE-wsdl-20010315、WSDLに関する詳細情報 http://www.uddi.org/specification.html、UDDIに関する詳細情報 IETF発行のRFC2616「Hypertext TransferProtcol--HTTP/1. 1」、June 1999、HTTPに関する詳細情報 Prof. Dr. F. Leymann、「Web ServicesFlow Language (WSFL 1. 0) 」(May 2001)、http://www-4.ibm.com/software/solutions/webservices/pdf/WSFL.pdf、WSFLの仕様書 http://XML.apache.org/axis/index.html、ApacheAXIS に関する詳細情報 XML Linking Language (XLink)Version 1.0、W3C Recommendation 27 June 2001、http://www.w3.org/TR/xlink/、XLinking言語の定義 Resource Description Framework,(RDF) Model and Syntax Specification, W3C Recommendation 22 February 1999、http://www.w3.org/TR/REC-rdf-syntax/、RDFに関する詳細情報 Keith Ballinger他、「Web ServicesInspection Language (WS-Inspection) 1. 0, (November 2001)」、http://www-106.ibm.com/developerworks/library/ws-wsilspec.html、WSILに関する詳細情報 「SOAP Messages with Attachments,W3C Note 11 December 2000」、 http://www.w3.org/TR/2000/NOTE-SOAP-attachments-20001211、添付ファイル付きSOAPメッセージに関する詳細情報
既存のアプローチの欠点および制限を回避しながら、P2Pネットワークの利点および潜在的な能力を活用するために使用できる技術を提供できれば望ましいであろう。
本発明は、ピアツーピア・コンピューティング・ネットワークを改良するための方法、システム、およびコンピュータ・プログラム製品を提供する。好ましい実施形態の一態様では、その改良点は、ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて、永続的にノードを識別することを含む。好ましくは、この技術は、このネットワークへの各ノードの最初のエントリ時に各ノードに最初のネットワーク・アドレスを割り当てること、このネットワークへの各ノードの最初のエントリ時に各ノードの永続的なノード識別子を生成すること、この最初のネットワーク・アドレスと永続的なノード識別子との間のマッピングを格納すること、および各ノードのこのネットワークへのその後のエントリに際し、たとえ異なるネットワーク・アドレスがそのノードに割り当てられたとしても、永続的なノード識別子を使用してその識別を解決することを含む。
特定のノードに関する格納されたマッピングは、そのノードがネットワークに異なるネットワーク・アドレスで再入するたびに改訂され、そのノードに関するマッピングのネットワーク・アドレスをその異なるネットワーク・アドレスで置き換える。
特定のノードの永続的なノード識別子は、好ましくは、そのノードの最初のネットワーク・アドレス、ネットワークへの最初のエントリが発生した日付、必要ならばネットワークへの最初のエントリが発生した時間、および最初のエントリが発生したドメインを基にして生成される。
次に、永続的なノード識別子を使用して、このネットワークにおける各ノードの挙動(例えば、特定のノードが他のノードからの要求にどの程度良く応答するかなど)を追跡することもできるし、またネットワークにおけるコンテンツ・リソースがたどったネットワーク横断パスを追跡することもできる。
本発明の他の態様は、添付の特許請求の範囲の中で定義される。
次に、本発明の実施形態について、例として添付の図面を参照しながら説明する。全図面を通して、同じ参照番号は同一の要素を示す。
以下で説明する実施形態では、P2Pネットワーク・オペレーションを改良する技術を定義する。各ネットワーク参加者すなわちノードには、そのノードがネットワークを離れ、ネットワークに再入したときにもそのノードを識別できるように永続的な識別子が割り当てられる。ネットワークを横断するコンテンツがたどったパスも追跡され永続される。本明細書で開示するように、コンテンツ・パスおよびノードのコンテキスト情報を永続させることにより、複数の呼出しにわたってピア関係を維持することが可能になる。開示の技術は従来技術の欠点に対処するものであり、それを用いると、たとえ参加者が通信を行うコミュニティがその名の通り一時的なコミュニティであったとしても、ピア装置間の関係を単一のセッションを越えて永続させることが可能になる。
開示の技術は、P2Pネットワークの特性に対処する固有の動的ネットワークをサポートし、さらに異機種のネットワーク・ノードのサポートも提供する。永続される情報は、ネットワーク管理、トランザクション、およびセキュリティ・ポリシーのアプリケーションなどを含む企業運営をサポートするために利用できる。
さらに、開示の技術により自己修復ネットワークの提供が容易になる。自己修復ネットワークは、人間との対話あるいは別のコンピューティング・システムによる管理とは無関係に、ネットワークがランタイムでタスクの管理/モニタリングを行うものである。本明細書で開示の技術により、ノードはピアとの関係を深め、その情報を永続させることが可能になり、その結果、悪意のあるノードあるいは性能および機能の完全性に関して十分に機能していないノードを識別することができる(さらに、それが検出されたときには、ネットワークへの悪影響を防ぐことができる)。(http://www.research.ibm.com/autonomic/を参照されたい。このページでは、「オートノミック・コンピューティング(autonomiccomputing)」という表現を使用して、一般的な自己修復ネットワークの概念について論じている。そこに記載された技術は、集中化された権限のない一時的ネットワーク・コミュニティにおける自己修復については教示していない。)
本明細書で開示の技術により、P2Pネットワーク運用における効率の向上も容易になる。従来技術のP2Pネットワークがクエリーをサブネット全体にブロードキャストする必要があったのに対し、本発明は、ネットワークのノードの永続的な知識を利用して、生成されるネットワーク・トラフィックの量を削減する階層的ブロードキャスト技術(tiered broadcast technique)を開示する。
典型的なP2Pネットワークには、様々なピア・ノードが共存することになる。ピア・ネットワークそれ自体が、(例えば、サブサービス間の有向グラフとして定義できるサービスを含む、一連の関連するビジネス活動の実施など、)コンシューマ/サプライヤ関係における互いに対話する1組の垂直ピアを表すことができる。あるいは、このネットワークは、共通機能を提供する1組の水平ピアを表すこともできる。本発明の技術を使用して、そのようなノードに自動化と管理の機能を提供するようにP2Pアーキテクチャを増強することができる。
一例として、一群のピア・ノードが、ストレージ・エリア・ネットワーク(StorageArea Network)すなわち「SAN」にストレージ・リソースを提供することもできる。ストレージ・サービス・プロバイダ(「SSP」)は、顧客のために予約料金制あるいは利用回数料金制でSANを維持する。また通常は、それらの顧客に対するSSPのサービス・コミットメントを指定するサービス・レベル契約(「SLAs」)が存在する。SLAコミットメントが満たされない場合には、顧客請求が悪影響を受けることもある。P2Pネットワークでは、ストレージを必要とするノードが動的ネットワーク・クエリーを発行して、その機能を提供する他のノードを見つけることができる。この種の動的クエリーやピアの発見は、従来技術のP2Pネットワークにおいても使用できる。しかし、前述のように、既存のP2Pネットワークには信頼モデルがなく、また「良好な(good)」ストレージを提供するノードをどのように選択するかを知る方法もない。本発明の技術を使用すると、SSPは、ストレージ要求が現在どの程度良く処理されているかを反映し、リアル・タイムで判断される評判を有するP2Pストレージ・ユーティリティとしてのオートノーマス・ストレージ・パーティション(autonomousstorage partitions)を管理することができる。この動的に計算される情報を使用すると、ストレージ要求に最も良く応答できるストレージ装置を決定することが可能になり、その結果、要求元(requester)へのストレージの動的割振りが容易になる。さらに、本発明の技術を使用して、特定のコンテンツ要求に応えることができる特定のストレージ・リソースをより容易に識別することができる。したがって、SLAの中での応答性と性能のコミットメントを、より一貫して実現することができる。(ストレージ・ノードがどれくらい良くストレージ要求を処理するかには、要求に対する応答の成功率、要求への応答に際しノードがどの程度効率的か、ノードの使用可能なストレージ容量、そのノードにおいてどのようなコンテンツが提供可能かなどを含めることができる。)
以下でより詳細に説明するが、たとえ1つまたは複数のノードがP2Pネットワークを離れ、その後そのネットワークに再入したとしても(この場合、P2Pネットワークでは、一般に再入するノードのネットワーク・アドレスが変わる)、コンテンツ・パスおよびノードのコンテキスト情報を永続させておくことによって、ピア・ノードは、それら相互の関係、およびそれら相互の知識を複数のセッションにわたって維持することができる。さらに、本明細書で開示の技術によれば、特定のノードに関するコンテキスト情報が得られるので、ノードは、本明細書で「評判(reputation)」と呼ばれるものを作成する。この評判は、さらに信頼モデルのベースとしても使用できる。評判については、以下でより詳細に説明する。(ノードの評判に使用するために永続させるのが好ましい情報の記述については、図5および図6の議論を参照されたい。)
図1に関連して説明するように、本発明の好ましい実施形態は、Webサービス・モデルおよびP2PネットワークへのWebサービス・アプローチを用いて展開されるが、開示の技術は他の環境においても同様に使用できるように適合させることができる。本発明の有利な技術は、この開示では主にファイル共用への適用(すなわち、どのコンテンツがどのノードから提供されるかを識別すること、特定のコンテンツがネットワークを横断するときたどったパスを記憶すること、ピアにコンテンツを要求すること、そのコンテンツを受信することなど)に関して論じる。しかし、これは例示のためであって、制限のためではない。開示の技術は、単純なファイル共用のための対話に加えてより複雑な対話にも使用できる。たとえば、当技術分野で知られているように、Webサービス・モデルを用いると複雑な対話の実施が容易になる。一般に「Webサービス」は、ネットワークにアクセス可能なオペレーションの集合体を記述するインタフェースである。Webサービスは、特定のタスクまたは1組のタスクを実施する。また、Webサービスは、1つまたは複数の他のWebサービスと相互運用可能な方式で連携して、Webサービスとして定義される複雑なワークフローまたはビジネス・トランザクションの担当部分を実施することもできる。一例として、複雑な購入オーダ・トランザクションを完成させるには、注文ビジネスにおける発注サービス(すなわち、発注ソフトウェア)とその1つまたは複数のビジネス・パートナーにおける注文調達サービスとの間の自動化された対話が必要になることがある。このプロセスがWebサービスとして記述されると、本発明の技術を使用するノードは、このサービスを実施できるピア・ノードを見つけ出し、特定のノードを選択する(例えば、ノードの評判に基づいて)。要求に応じて、見つけ出されたピア・ノードはサービス(通常、いくつかのサブサービスを含む)を実施し、次いでそのサービスの結果を要求ノードに返す。
Webサービス技術は、WWW(ワールド・ワイド・ウェブ)などのクライアント/サーバ・ネットワークにおける分散アプリケーション統合(distributed application integration)の技術分野で知られている機構であり、それにより分散ネットワークが、これらのネットワークにおいてプログラム間オペレーションのためのソフトウェアにアクセスすることが可能になる。Webサービスは、HTTP、SOAPまたはXMLあるいはその組合せのプロトコル、WSDL(WebServices Description Language)、UDDI(Universal Description, Discovery, andIntegration)などいくつかのオープンWebベース標準を使用する。HTTPは、一般にインターネットなどのTCP/IP(伝送制御プロトコル/インターネット・プロトコル)ネットワーク上でのメッセージ交換に使用される。SOAPは、分散環境においてメソッドを呼び出すために使用されるXMLベースのプロトコルである。XMLプロトコルは、W3C(WorldWide Web Consortium)により、アプリケーション間メッセージ交換を可能にするように設計されたアプリケーション層転送プロトコルの発展中の仕様である。XMLプロトコルはSOAPと一体化する可能性がある。WSDLは分散ネットワーク・サービスを記述するためのXMLフォーマットである。UDDIはXMLベースのレジストリ技術であり、それを用いて企業がサービスをリストすることができ、またそれを用いてサービスの要求元は特定のサービスを提供している企業を見つけることができる。
クライアント/サーバ・ネットワークにおける分散アプリケーション統合は、UDDI要求を発行してUDDIレジストリを介して分散サービスを見つけ、見つけたサービスに、サービス情報を使用して動的に要求元を結び付けることにより達成される。サービス情報は、SOAP/XMLプロトコルおよびHTTPメッセージを使用するプラットフォーム中立のWSDLフォーマットで伝えられる。(この場合のSOAPへの参照は、XMLプロトコルの意味的に類似したアスペクトを等価なものとして参照していると解釈すべきである。)これらのコンポーネントを使用することによって、たとえ要求されたプログラム・コンポーネントが要求元のものとは異なるオペレーティング・システム上で稼動していたとしても、また要求元のものとは異なるプログラミング言語で書かれていたとしても、Webサービスは、要求元に1つまたは複数の遠隔地に存在し得るそのプログラム・コンポーネントへの透過的なアクセスを供給する。(SOAPに関する詳細な情報は「Simple Object Access Protocol (SOAP) 1.1, W3C Note 08 May 2000」http://www.w3.org/TR/2000/NOTE-SOAP-20000508を、XMLプロトコルに関する詳細情報はhttp://www.w3.org/2000/xpを、WSDLに関する詳細情報は「WebServices Description Language (WSDL) 1.1, W3C Note 15 March 2001」、http://www.w3.org/TR/2001/NOTE-wsdl-20010315を、UDDIに関する詳細情報はhttp://www.uddi.org/specification.htmlをそれぞれ参照されたい。HTTPについては、IETF(InternetEngineering Task Force)発行のRFC(Request For Comments)2616「Hypertext TransferProtcol--HTTP/1. 1」、June 1999に記載されている。)
次に、図1を参照すると、本明細書に開示の技術の好ましい実施形態においては、P2Pネットワーク内のノード間通信の基本的なサポートを提供するために、IBMのWebサービス相互運用性スタック100が使用されている。しかし、これは例示のためのものであって、限定を意味するものではない。本明細書で開示される発明の概念から逸脱することなく、他のサポート機構を使用することもできる。次に、Webサービス相互運用性スタック100の各コンポーネントについて説明する。
好ましくは、有向グラフを使用して、従来技術による技法を使用し、複数のサブサービスを含むWebサービスの実行に含まれるオペレーションをモデル化する。例えば、同一出願人による「Dynamic, Real-Time Integration of Software Resources throughServices of a Content Framework」という名称の米国特許(出願第09/956,276号、2001年9月19日出願)を参照されたい。その特許に開示された技術では、グラフのノードがサービス実施時に実行されるオペレーションを表し(そこでは、これらのオペレーションがサブサービスと呼ばれることもある)、グラフのノードをリンクするエッジ(edge)は、あるサービス・オペレーションから別のサービス・オペレーションへの可能な移行を表す。これらのグラフ・エッジ、または「サービス・リンク」には、1つまたは複数の移行条件を与えることができる。また、適用可能な場合にはデータ・マッピング情報を与えることもできる。条件は、どのような条件の下で次にリンクされるサービスが呼び出されるかを指定する。これらの条件は、しばしば前のサービス呼出しの結果を使用して決定されることになる。データ・マッピングは、オペレーションをリンクし、あるオペレーションから別のオペレーションにデータを転送する有向グラフの能力を参照する。例えば、データ・マッピング情報は、あるサブサービスの出力パラメータが他のサブサービスの入力パラメータにマッピングされるように指示することができる。
「WSFL」(Web Services Flow Language)は、好ましくはこれらの有向グラフをサポートするために使用される。これは、図1にサービス・フロー・サポート110で示される。複雑なWebサービスを実施するために有向グラフがWSFLエンジンによってどのように処理されるかは本発明の理解には関係がなく、本明細書では詳細には説明しない。WSFLの詳細な議論は、Prof.Dr. F. Leymannによる「Web Services Flow Language (WSFL 1. 0) 」(2001年5月)と題するWSFL仕様書に出ている。この文書はIBMから入手可能であり、またインターネットのhttp://www-4.ibm.com/software/solutions/webservices/pdf/WSFL.pdfからも入手可能である。
Webサービス(例えば、P2Pネットワークの各種のノードから提供されるWebサービス)の自動発見120および公開130は、好ましくはUDDIメッセージを使用してUDDIレジストリにアクセスするために提供される。WSDL層140はサービス記述ドキュメントをサポートする。SOAPはXMLベースのメッセージング150を提供するために使用できる。HTTP、FTP(ファイル転送プロトコル)、電子メール、MQ(メッセージ・キューイング)などのプロトコルは、ネットワーク・サポート160のために使用できる。ランタイム時には、サービスは、UDDIサービス発見プロセスを使用してレジストリ内で見つけられ、それらサービスのWSDL定義からの情報を使用して確定される。次いで、WSFLランタイムがこれらの定義を使用してサービスを集約する。
本発明の好ましい実施形態によれば、UDDIレジストリから取り出された情報を使用することによって、ファイル共用オペレーションが容易になる。また、より複雑なWebサービスも、同じ方法でサポートできる。(レジストリの使用についての詳細な情報は、後の図2についての議論を参照されたい。)
本実施形態では、P2Pネットワークにおけるノードを、ピアとして厳密にモデル化するのではなく、クラスとしてモデル化できる技術を開示する。例えば、本実施形態では「システム」ノードについて記述する。本明細書では、「システム・ノード」という用語は、従来のクライアント/サーバ・ネットワークにおいてシステム管理者によって管理されるタイプの機能を提供する、P2Pネットワーク内のノードを意味する。これらの機能には、ネットワーク管理、ロード・バランシング、モニタリング、セキュリティなどのネットワーク・オペレーションが含まれる。本発明を実施するノードを有するP2Pネットワークは、ローカル・エリア・ネットワークおよびエンタープライズに及ぶことができ、ワールド・ワイド・ウェブの範囲によってのみ制限される。(例えば、「スパイ(spy)」メッセージについての議論を参照されたい。「スパイ」メッセージを用いると、あるノードが例えば他のサブネット上にあるノードについて知ることが可能になる。一方、従来技術のP2Pでは、IPアドレスを監視するフィルタの構成のために、一般にブロードキャスト・トラフィックはサブネット内のノードに制限される。)したがって、本明細書に開示の技術を使用すると、混乱なく(non-disruptive)様々なクラスのノードがネットワークに参加でき、新しいタイプのノードもネットワークに参加できる。
ノードのクラス、特にシステム・ノードについての概念は本発明のオプションの態様であり、P2Pネットワークのハイブリッド・フォームを生成するために使用できる。ハイブリッド・フォームでは、一部のノードが他のノードに指令を出し、あるいは他のノードが記憶する情報に影響を与える。システム・ノードが使用できる特別な機能については、本明細書中でより詳細に論じる。
好ましい実施形態によれば、本発明の1つまたは複数の態様を実装するノードは、「AXIS(Apache eXtensible Interaction System)」エンジンおよびAXISチェーニング・フレームワークを利用するハンドラのコンテキスト内で稼動するWebサービス・モデルを使用する。(ApacheAXIS に関する詳細な情報はhttp://xml.apache.org/axis/index.htmlを参照されたい。Apache AXISはアパッチ・ソフトウェア財団(ApacheSoftware Foundation)によるSOAPプロトコルの実装である。)
「AXIS」はSOAPサービスのランタイム環境であり、そこではWebサービスはコンテナ・モデルを使用して稼動する。「ルータ(router)」と呼ばれるサーブレットは、インバウンドSOAP要求メッセージ(inbound SOAP request message)を受信し、その要求を実施するためにどのコードが必要かを判断し、そのコードに必要なオブジェクトを非直列化(deserialize)し、そのコードを呼び出す。呼び出されたコードが実行を完了すると、ルータは結果を直列化(serialize)してアウトバウンドSOAP応答メッセージ(outboundSOAP response message)にする。
「AXISチェーニング」という用語は、インバウンドおよびアウトバウンド・メッセージの実行の順序を指示するメッセージ・ハンドラの構成可能な「チェーン」、またはシーケンスを意味する。「ハンドラ」は特定の機能を実装する実行可能なコードであり、(チェーニング機構によって)他のハンドラの機能とリンクさせることができる。それらのハンドラは、SOAPリクエストの前処理または後処理を実施する。デプロイメント記述子は、例えば特定のサービスで使用されるオブジェクトをどのように直列化/非直列化するか、またどのAXISハンドラ・チェーンを使用するかなどそのサービスがどのように展開されるかを指定するために使用される。例えば、SOAPメッセージ交換は暗号化されたデータを使用できる。暗号化されたデータを含むメッセージを受け取ると、復号ハンドラが(前処理ステップとして)データを復号し、それを適切なメッセージ処理コードに渡す。結果が返される場合には、他のSOAPメッセージの形で結果を送信する前に、暗号化ハンドラがその結果を(ポスト処理ステップとして)暗号化する。
AXISエンジンは3つのタイプのハンドラ・チェーンをサポートする。第1はトランスポート・チェーンであり、メッセージ移送機構(例えばHTTPなど)を指定する。第2はサービス依存チェーンである。例えば、特定のサービス「XYZ」に関して、サービスXYZのためのメッセージが受信されたか、またはサービスXYZによってメッセージが生成されたときに、サービス依存チェーンはどのハンドラを呼び出すかを指示する。第3のハンドラ・チェーンはグローバル・チェーンであり、あらゆるメッセージについて、呼び出すべきハンドラを指定する。
図2は、好ましい実施形態で使用されるコンポーネントを示す図であり、それらのコンポーネントがネットワーク環境中でどのように配置され、どのように相互接続されるかを抽象的に示している。次に、これらのコンポーネントについて説明する。
好ましい実施形態においてランタイム・エンジン220は、AXIS実行エンジン225;グローバル・ハンドラ・チェーン中の3つのAXISハンドラ230、235、240;リンクベース・リポジトリ245;メタデータ・リポジトリ250;およびデジタル証明書リポジトリ255を含む。このランタイム・エンジン220は、好ましくは、Webサービス200で示されるWebサービス内で実施される。Webサービスは、オプションでtModelインスタンス205を実装することを選択できる。当技術分野で知られているように、tModelはWebサービスによって実施される挙動または仕様を指示する。tModelはUDDIレジストリ内に記憶され、特定のサービスを実施するためのレジストリのスキャンを容易にする。tModelは、Webサービスがサポートするクエリーのタイプを指定するために本発明の好ましい実施形態のコンテキスト内で使用できる。例えばコンテンツ・リポジトリ210によって示される1つまたは複数のコンテンツ・リポジトリは、ノードのローカル・コンテンツまたはリモートにあるコンテンツへの参照あるいはその両方を記憶する。
より詳細に説明すると、好ましい実施形態では3つのAXISハンドラが使用され、それらを本明細書では「パス・インティメイタ(Path Intimater)」230、「ゴシップ・モンガ(Gossip Monger)」235、「デジタル署名(DSIG)」ハンドラ240と呼ぶ。
先に述べたように、本発明の1つまたは複数の態様は、ノードのコンテキスト情報およびP2Pネットワークのノードの間で共用されるコンテンツが横断したパスを永続させる技術を定義する。パス・インティメイタ230は永続コンテンツ・パスを管理する。永続コンテンツ・パスは、本明細書では有向グラフ・モデルを使用するものとして定義する。この有向グラフでは、グラフ・ノードが、コンテンツが通過したピア・ノードに相当し、グラフ・アーク(graph ark)が、各アークによって接続されたピア・ノード間を通過したコンテンツを表す。(これらの有向グラフは、先に論じた有向グラフと混同してはならない。先の有向グラフは、複雑なWebサービス対話を定義するために使用されるものであり、WSFLを使用してサポートされる。)
好ましい実施形態によれば、XMLリンク(「XLink」)言語は、永続コンテンツ・パスを定義する有向グラフを表す手段として使用される。XLink言語は、「XMLLinking Language (XLink) Version 1.0、W3C勧告2001年6月27日」で定義されている。この勧告は、例えばインターネットのロケーション、http://www.w3.org/TR/xlink/に出ている。当技術分野で知られているように、XLinkシンタックスは単純なマークアップ・スタイルのリンク(リモートのリソースを指示するアウトバウンド・リンクおよびローカル・ノードにリンクされたリソースを識別するインバウンド・リンクを含む)、またはより複雑な「拡張(extended)」リンクを定義するために使用できる。(しかし、当技術分野では、本明細書に開示のXLinkのリンクを使用することは知られていない。)拡張リンクは、ノードおよびノード間のアークからなるグラフを表すために使用される。拡張リンクの1つのタイプが「サード・パーティ(thirdparty)」リンクである。サード・パーティXLinkは、リモートのリソースを関連づける。このことは、リンク仕様がリンクが結び付けるコンテンツとは別に格納されていることを意味する。後で説明する図9には、コンテンツの横断パス定義(より一般的には、メッセージの横断パス定義)を永続させるために、本発明の好ましい実施形態でXLinkがどのように活用できるかが示される。
本明細書の好ましい実施形態では、コンテンツ・リソースが通過したパスを記憶するために永続パス定義を使用するものとして説明しているが、これは例示のためであって限定のためではないことに留意されたい。サービス実行の結果など、他の情報のためにパス定義を永続させることもできる。したがって、本明細書で使用する「コンテンツ」という用語は、ノード間で送信される任意のタイプの情報を表すものと解釈できる。また特に「コンテンツ」は、すでに生成済みのコンテンツ、またはノードにサービスの実行を要求することによって生成され得るコンテンツを意味する省略表現として使用される。さらに、永続パスは、そのメッセージが運ぶ情報のタイプとは無関係に、メッセージのパスを表すものと解釈できる。
サード・パーティXLinkの集合体が、まとめてXMLドキュメントに格納されるとき、その集合体は「リンクベース(linkbase)」または「リンクベース・ドキュメント」と呼ばれる。したがって、本明細書で使用する用語としてのリンクベースは、サード・パーティXLinkとして表された横断パス定義の集合体を意味する。リンクベース識別子は、P2Pネットワーク中のノードを一意に識別するために、本明細書で開示されるフォーマットを使用して定義される。(リンクベース識別子に関する詳細情報は、後に示される図5の議論を参照されたい。)
したがって、パス・インティメイタ230は、リンクベースとしての永続メッセージ・パスを管理する。これらのリンクベースはリンクセット(linkset)を含む。リンクセットは、特定のコンテンツ・リソースが通過するパスを定義するものである。これらのリンクベースについては、本明細書中でより詳細に論ずる。
パス・インティメイタ230は、コンテンツ通過情報を運ぶアウトバウンドSOAPメッセージに、図3に示した形式のSOAPヘッダを追加する役割を果たす。このヘッダ300は、<traversalPathRef>タグ305(図3の例では、これに「パス(path)」のための名前空間識別子「p」が前に付加されている)を含む。また、この<traversalPathRef>タグは、ピア・ネットワークにおける指定されたコンテンツの横断パスを記憶するリンクセットへの参照310を提供する。図3の例では、「href」属性310の値は、URL(UniformResource Locator)「http://9.56.34.12/linkbase/lb.xml」を使用してアクセス可能なリンクベース・ドキュメントに横断パス情報が格納されていることを示す。
受信側のパス・インティメイタ230は、<traversalPathRef>要素を有する着信SOAPヘッダの受信時に、それに従って受信側のリンクベースを更新する役割を担う。この処理は、参照310によって識別された横断パスの終端で、アークの中に受信ノードのLBuuidを追加することを含む。(したがって、受信ノードが横断パスに関連したコンテンツを続いて転送する場合、図3を参照して説明したSOAPヘッダで識別される更新済みの横断パスは、適切に転送ノードを識別する。)横断パスがどのようにノード間のパスを識別するかについての詳細情報は、下の図9を参照されたい。
ゴシップ・モンガ235は、ノードに関するメタデータとしての評判を管理する。さらに、ゴシップ・モンガは、ノードの評判を受信したとき、コンテンツ・メタデータを処理し、そのコンテンツ・メタデータを評価する。本発明の好ましい実施形態では、「RDF(Resource Description Framework)」表記を使用してコンテンツおよびノードを記述するメタデータを指定する。(RDFはWebベースのメタデータの指定のために設計された表記法である。RDFに関する詳細情報は、W3Cによってインターネット上のページ、http://www.w3.org/TR/REC-rdf-syntax/に提供された「ResourceDescription Framework, (RDF) Model and Syntax Specification、W3C勧告、1999年2月22日」を参照されたい。)ここまで説明したように、P2Pネットワークが高度に分散され、ノードのIPアドレスが時間とともに変わり得るので、本明細書に開示のゴシップ・モンガは、信頼が時間とともに発展する発展的信頼モデル(evolutionarytrust model)を提供する。最初に、ノードはそれ自体を信頼する。時間の経過とともに、ノードはピアとの対話によって受信するコンテンツおよびそのコンテンツがたどったパスについてのメタデータを集める。この集められたメタデータは、一種の履歴または証跡を提供しているものと見なせる。特定のピアからポジティブな結果のコンテンツを受信すればするほど、そのピアとの信頼関係は強化されることになる。オプションで、ノードは、そのピアから入手した関係情報から信頼を導き出すこともできる。この関係情報は、そのノードのピアが(そのノード自体は、対話しなかったかもしれない)他のピア・ノードと実施した対話を記述したものである。
次に、図5および図6を参照すると、評判データを指定する好ましい技術および代替技術が示されている。好ましい実施形態では、あるノードの評判は、そのノードが提供するサービスまたはそのノードが提供するコンテンツあるいはその両方の指示、ならびにそのノードが提供するサービスの品質を含む。あるノードの評判は、好ましくはそのノードから送信され(かつ受信側で記憶され)るメッセージのメタデータとして具体化される。好ましい実施形態では、サービスの質は数値(「評価(stature)」値と呼ばれる)で指定される。この数値は、この特定のノードが、ネットワーク中の他のノードから受信するクエリーに応えることにどれぐらい成功するかを表す。あるノードの評判についてのサービス・コンポーネントの品質が、ある場合には、悪意のあるノード(例えば、不正を働くエージェントまたはリソースの供給源である傾向を示すノードなど)であることを指示することがある。評判を動的にアドレスが指定されるノードに関連づけることができると、非集中のP2P世界における信頼を得やすくなる。また、評判情報が使用できると、セキュリティ・ポリシーを使用する信頼モデルをP2P対話に適用することができる。したがって、P2Pネットワークにおけるe-ビジネスへの主要な阻害因子が除去される。(本明細書では、好ましい実施形態を、動的に得られる評判に関連して説明しているが、特定の実装においては、1つまたは複数のノードの評判を初期化する、すなわちあらかじめ設定することによって、例えばシステム管理者がシステム管理を容易に行えるようにすることが望ましいこともある。このような実装は、本発明の範囲に含まれるものと見なされることに留意されたい。このアプローチを使用して、選択されたノードに比較的高い評価値を与え、事実上それらのノードをシステム・ノードに指定することができる。)
好ましい実施形態によると、P2Pネットワークにおける一時的ノードは、リンクベース識別子(「ID」)すなわち「LBuuid」を使用して識別される。このLBuuidは次の形式を取る。
[IP_Address-Date-Time-Domain]([IPアドレス−日付−時間−ドメイン])
また、LBuuidは一意に識別可能なIDすなわち「UUID(UniversalUnique Identifiers)」の概念に基づいてモデル化される。当技術分野では、UUIDはパブリックなインターネット上のオブジェクトまたはエンティティを一意に識別する技術として知られている。(しかし、LBuuidフォーマットについては知られていない。従来技術のUUIDは、一般にそのUUIDを生成したホストのIPアドレスへの参照、タイムスタンプ、および一意性を確保するためにランダムに生成されたコンポーネントを含む。)
本明細書で開示されるLBuuidの一例として、図5のドキュメント400の例では、評判が表すノードは次のLBuuidを有する。
9.37.43.2-05/04/01-12:02:05:37-Netzero.net
これは、<Description>タグ405の「about」属性410の値として示されている。この例では、IPアドレス・コンポーネントが「9.37.43.2」、日付コンポーネントが「05/04/01」、時間コンポーネントが「12:02:05:37」、そしてドメイン・コンポーネントが「Netzero.net」である。ここで定義された情報は、このノードのP2Pネットワークへの最初のエントリ時のオリジナルIPアドレスが「9.37.43.2」であり、このネットワークへの最初のエントリが、日付「05/04/01」、時間「12:02:05:37」にネットワーク・ドメイン「Netzero.net」で発生したことを示す。本明細書で開示するように、このLBuuidが今後この特定のノードを識別するために使用されるので、このノードの評判を永続させることが可能になり、またコンテンツ・パス横断定義中のこのノードの参照を解決することが可能になる。
所与の時点で、図5のLBuuidで表したノードの現在のIPアドレスが、LBuuidに示されたそのアドレスであることは保証されず、P2Pネットワークへの後のエントリに際して動的アドレス割当て機構から得られる別の値である可能性が高いことに留意されたい。あるノードを永続的に表すLBuuidは、リソース・セットに記憶されたマッピングによってノードの現在のIPアドレスと関連付けられる。(リソース・セットについては、後で図6に関連して説明する。)
<Description>タグ405は、このノードの評判情報をまとめて示したものである。この例では、<QuerySet>415という名称の子タグが指定され、「stature(評価値)」属性を有する。好ましい実施形態では、stature属性は、このノードがクエリーの実施にどの程度成功(または失敗)したかを示す数値を有する。stature属性値は、好ましくは−1から+1の範囲の非整数値で指定される。ここで、負のstature値は悪意のあるノードを示す。好ましくは、対応する「totalQueries」属性も指定され、その値は、そのノードによって処理されたクエリーの総数を示す整数である。したがって図5の例では、ノードは2,145のクエリーを受信し、そのクエリーの34パーセントの実施に成功したことになる。(この例には、オプションの「ID」属性が示されている。この属性は、従来のUUIDフォーマットを使用して、このクエリー・セット415を一意に識別するために使用できる値を提供する。)
代替実施形態においては、評価値(stature、すなわち成功率)情報を、クエリー・セット全体ではなく個々のクエリーに関連付けることができる。この代替実施形態は図6に示される。この場合、「stature」属性および「totalQueries」属性が、<QuerySet>タグではなく<Query>タグで指定される。明らかなことだが、本発明の概念から逸脱することなく評価値情報についての他の表現を使用することができる。例えば、「2145のうちの34パーセント」または「34,2145」の形の値を持つ単一の属性を使用してもよい。他の代替案として、−1から+1の範囲の評価値を使用するのではなく、別々の属性を使用して、不成功(または悪意のある)結果と成功結果を示すことができる。あるいは、パーセンテージの代わりにカウンタを使用することもできる。
図5の議論に戻って、好ましい実施形態で使用されるシンタックスでは、<QuerySet>タグ415は1つまたは複数の<Query>子要素を有する。<Query>要素のこの集合体は、このノードが応えられる(好ましくは、正規表現で表された)クエリーの組を列挙したものである。この例では、ノードは3つの異なるクエリー420、425、430に応えることができる。
第1の<Query>タグ420の正規表現シンタックスは、このノードが「purchase_order999-9999-999」の形のクエリーを処理できることを示す。すなわち、テキスト文字列「purchase_order」に続く3桁の数値、ハイフン、4桁の数値、ハイフン、3桁の数値の形式である。(本明細書で使用する例では、これらの数値フィールドは、顧客番号を指定するように意図される。)
例示のクエリー・セットの第2の<Query>タグ425は、このノードがテキスト文字列「partnerprofile list」で表されるクエリーを処理できることを示す。第3の<Query>タグ430は、「-NDA. tiff」の形で終わるテキスト文字列であるクエリーを表す。
ノードの評判を判断するために、異なるまたは追加の情報をオプションで使用することができる。したがって、図5および6によって示される情報は、例示のためのものであり、限定を意味するものではない。例えば、ノードの効率を追跡することが有用なこともあり、その目的に評判データを使用することもできる。例えば、効率がクエリーを処理する応答時間で測定される場合、応答時間属性をこのノードの評判に(図6のアプローチを使用してクエリー固有の値として、あるいは図5のアプローチを使用してより一般的なかたちで)追加することもできる。先に述べたように、ノードの評判はゴシップ・モンガ・ハンドラによって処理される。したがって、本明細書に記載の評判処理を、必要に応じてハンドラによって拡張して追加のまたは異なるタイプの評判データをサポートすることができる。
ノードの効率を追跡することによって、従来技術のP2Pネットワークで使用できる選択より、より慎重にコンテンツ/サービスの提供元を選択することができるようになる。先に論じたSSP環境で使用されるとき、ノードの効率情報を使用するSSPは、どのようにストレージ・リソースおよび供給ストレージ・リソース(provision storage resources)を選択するかについてランタイムで決定することができる。その結果、SSPはその顧客に対するサービスを改善し、SLAのコミットメントを満たす可能性を高める。
評判は、あるノードの能力に関するヒントをリモート・ノードに提供する。また、本明細書に記載したように、評判はノードのクエリーに応答する能力に関する情報を提供する。ファイル共用の目的で使用されるとき、あるノードに対してクエリーを発行することは「この記述(description)のファイルがありますか?」と尋ねることを意味する。応答ノードは、そのクエリーに応えられること(すなわち、要求されたファイルを供給できること)、ならびに過去にどのくらいファイルの供給に成功したか(図5のアプローチを使用)または過去にどのくらいその特定のファイルの供給に成功したか(図6のアプローチを使用)を要求元に知らせるために評判を提供する。
次に図7を参照すると、コンテンツ・メタデータ(すなわち、特定のコンテンツについての情報)を指定するための好ましい技術を示す例が示されている。この形式のメタデータ情報を使用すると、ノードはどのコンテンツ・クエリーに応答できるかをプログラムで決定することができる。好ましい実施形態では、評判メタデータに対して使用したのと同様の方法でRDFを使用してコンテンツ・メタデータを指定する(図5および図6参照)。図7の例に示したように、<Description>タグ505の「about」属性510は、ドキュメント500に記載されたコンテンツの識別子を指定している。好ましい実施形態によれば、「about」属性の値は、ファイル名を、あるいは特定のクエリーに応答するコンテンツが格納されている他のストレージのロケーションを指定する識別子である。したがってこの例では、このコンテンツは「purchase_order123-4567-890.xml」のロケーションに格納されることになる。この識別子は、コンテンツ・メタデータを実際のコンテンツと関連づけることができる永続的なコンテンツ・キーの役割を果たす。
例示のシンタックスにおける<Description>タグ505は、子タグである<Creator>515および<synopsis>520を有する。<Creator>タグは、好ましくはdate属性およびtime属性を有する。それらの値は記述されたコンテンツが生成された日付および時間を示す。(あるいは、日付と時間を組み合わせて「Date_Time」属性とすることもできる。)<Creator>タグ515の値は、(この例では)そのコンテンツを作成した人を識別する。あるいは、<Creator>タグの値として、コンテンツが発信されるP2PノードのLBuuidなどのプロセス識別子を使用することもできる。<synopsis>タグ520は、好ましくはフリー・テキスト値を有する。また、そのタグを使用して対応するコンテンツである人間可読の記述を提供できる。したがってこの例では、<synopsis>520は、「purchase_order123-4567-890.xml」に格納されたコンテンツがAMEX顧客#123−4567−890の注文書であることを示している。
<Description>要素またはその選択部分の情報を人間のユーザに提供して、例えば、そのユーザが複数の候補の中からコンテンツ/サービスの提供元を選択するのを支援することができる。より自動化された環境では、<Description>要素からの情報は、プログラムの選択プロセスで解析することもできる。当然のことながら、例に示したメタデータは、格納できる情報のタイプ、およびその情報が表現され得る形式の単なる例示に過ぎない。
ゴシップ・モンガは、アウトバウンドSOAPメッセージに図4に示された形式のSOAPヘッダを付加して受信ノードに評判情報を知らせる役割を担う。この付加された評判ヘッダ350は、(「href」属性360を使用して)評判レポジトリへの参照を提供する<reputationRef>タグ355を含む。評判レポジトリには、送信ノードの評判情報が格納される。(この格納された評判情報は、送信ノード自体に関するものであるが、好ましくはその送信ノードが知っているピア・ノードに関する評判情報も含む。)
受信側のゴシップ・モンガ235は、評判メタデータがインバウンドSOAPメッセージ内のヘッダ・フィールドであると識別し、その評判メタデータを処理する。評判メタデータについては本明細書中でさらに説明する。
デジタル署名ハンドラ240は、メッセージの完全性および送信者の認証を保証するために、メッセージのエンティティにデジタル処理で署名する。このハンドラは、好ましくはW3CのSOAPデジタル署名仕様に従い、PKIを使用して証明書を管理し、かつ署名を適用/検証する。SOAPデジタル署名およびPKI技術については当技術分野で知られているので、本明細書では詳細には説明しない。
適切なAXISハンドラまたはゴシップ・モンガの特権が与えらた場合、システム・ノードは実際にリモート・ピアのリンクベースおよびメタデータ・リポジトリを直接、読取り(read)/書込み(write)して、例えば強制的にそれらをピア・グループに加えたり、コンテンツ横断パス定義を挿入したり、ピアの評判を管理することができる。(例えば、ノードXに格納された評判情報を修正して、ノードXのピア・グループのメンバZを悪意のあるものと識別することができる)。好ましくは、このタイプのシステム管理機能は新しいAXISハンドラを使用して実装され、この場合、このシステム管理機能は他のゴシップ・モンガの機能をオーバライドできるという意味でスーパ・ゴシップ・モンガだと見なされる。あるいは、ノードの複数のクラスがサポートされるとき、クラスの識別子を認識し、かつ対応するノードがどのオペレーションにアクセスできるかを判断するように既存のAXISハンドラを適合させることができる。例えば、「クラス0」ノード(すなわち、デフォルトのピア・ノード)は、クエリーを発行するとともに、自らの評判、横断パスなどを主張できるが、他の「クラスN」のノード(例えば、本明細書に記載のシステム・ノードなど)は、リンクベースおよびリポジトリの読取りおよび書込みが許されることもあり、それによってノードが維持するネットワーク・ビューを実質的に管理する。(追加のAXISハンドラを使用してシステム管理機能を実装することに関する詳細情報は、図19〜22を参照されたい)
次に、リンクベースに格納されたコンテンツ・パスの議論に戻ると、本発明の好ましい実施形態によるリンクベースは、一時的コンポーネントと永続的なコンポーネントとからなる。一時的コンポーネントを本明細書では「リソース・セット(resource set)」と呼ぶ。また、永続的コンポーネントは横断パス定義の集合体である。リソース・セットは、図8のXMLドキュメント600によって例示される。このリソース・セットはXLinkロケータ・リンクの集合体として定義される。これらのリンクのうちのあるグループは、現在のノードが知っているあらゆるノードに対する、動的に割り当てられたネットワーク・アドレスと永続的LBuuid値との間のマッピングを定義するために使用される。これらのリンクは<node>要素として指定される。別のグループは、ダウンロードされたコンテンツの記述をそのコンテンツが現在存在するローカル・コンテンツ・リポジトリの中のロケーションにマッピングするリンクを定義するために使用される。これらのリンクは<content>要素として指定される。
リンクベース・リソース・セットは、好ましくはメモリ内テーブルとして記憶されマッピングの高速検索を可能にする。したがって、あるノードがあるピア・ノードと対話したい場合、そのノードはこのテーブルを調べてピア・ノードの現在のアドレスを見つけることができる。リソース・セットを格納するドキュメントのルート要素は<ResourceSet>であり、その要素は拡張XLinkとして定義される(605の「type」属性参照)。
図8に示したように、最初の3つの要素610、630、645は<node>要素であり、それらの要素は新しく解決されたネットワーク・エンドポイント(すなわちURL)と永続的リンクベースIDの間のマッピングを定義する。<node>要素の「href」属性は新しいエンドポイントを識別し、「role」属性は永続LBuuidを識別する。第4の要素660は<content>要素であり、コンテンツ・リソースを指定し、ピア・ネットワークからダウンロードしたローカル・コンテンツを識別する。<content>要素の「href」属性はコンテンツの現在のストレージ・ロケーションを識別し、「role」属性は永続ストレージ・ロケーション識別子を識別する。
各<node>要素はlocator XLink(例えば、615の「type」属性参照)であり、その「href」属性はリンクベースを維持するノードのネットワーク・エンドポイントを示す。またそのリンクベースは「role」属性の値に等しいIDを有する。例えば、「href」属性620は値「http://9.56.34.12/soap/rpcrouter」を有する。要素615のマッピングによると、このURLは、永続的LBuuid「9.37.43.2-05/04/01-12:02:05:37-NetZero.net」を有するリンクベースを管理するノードを表す。第1の要素610は(「local」属性を有し、その値が「true」に設定されている)ローカル・ノードに関する。一方、他の要素630、645は(「local」属性を有し、その値が「false」に設定されている)リモート・ノードに関する。
<content>要素660もまたlocator XLinkである。このマッピングの「href」属性665は、ストレージ・ロケーション「file://usr/awesley/etc/downloads/purchase_order123-4567-890.xml」が現在「purchase_order 123-4567-890.xml」で識別されるローカル・コンテンツを格納するために使用されていることを指示する(「role」属性670参照)。
リンクベース(すなわち、横断パス定義)の永続的コンポーネントは、リソース・セット内の、あるノードから他のノードへの特定のコンテンツ・リソースの横断パスを示すアークの集合体によって表される。そこでは、ノードはそれぞれのリンクベースID(すなわちLBuuid)値によって識別される。
次に図9を参照すると、横断パス定義700の例が示されている。この例は、コンテンツ・リソースがP2Pネットワークに入ってから通過したパスを追跡するために有向グラフがどのように使用されるかを示す。横断パスは<traversalPath>要素705を使用して指定される。例の中の要素710および735によって表される1つまたは複数の<arc>要素は、「type」属性として「arc」を有するXLink要素である。これらの「arc」属性値は、あるノードから他のノードへのコンテンツの動きを指定する。ArcXLink要素はリソースおよびロケータ・ノードの役割(role)を使用する。ロケータ・ノードは、図8に示したように、リソース・セット中で定義される。また、リソース・ノードは、図9の<arc>ノードの「resource」属性を使用して識別される。次に、これを<ark>リンク710で始まるパスを参照して説明する。この場合は、725で「purchase_order123-4567-890.xml」(図8の要素670によれば、ロケーション「file://usr/awesley/etc/downloads/purchase_order123-4567-890.xml」に現在格納されており、顧客123-4567-890の注文書を表す)として識別されるコンテンツが、「12.37.43.5-03/03/01-08:35:13:04-MindSpring.com」リンクベース(「from」属性720の値を参照のこと)を管理するノードによって生成された(または、少なくともそこでネットワークに入った)ことを指定する。次いで「total」属性725の値は、このコンテンツが
「12.37.43.5-03/02/01-03:45:23:02-MindSpring.com」リンクベースを管理するノードによってダウンロードされたことを示している。
<arc>ノード735に関して続けると、「resource」属性750の値は「resource」属性730の値と同じであり、「from」属性740は以前の<arc>要素710の「to」属性725と同じ値を有する。このことは、同じコンテンツの異なる横断であることを示している。したがって、最後の「to」属性750は、このコンテンツが現在のノードによってダウンロードされたことを示している。750で識別されたリンクベースを読み取るアプリケーションが、750で指定されたコンテンツにアクセスしようとする場合、リソース・セットで定義された<content>XLinkを活用してそれを実施できる。参照番号660を参照すると、対応する<content>要素が定義されている。「resource」属性750の値を「role」属性670の値に一致させることによって、この<content>要素660がリソース・セットから選択され、次いでその要素の「href」属性を使用することによってそのコンテンツの実際のロケーションが見つけられる。したがって、一般の場合には、横断パス定義中の<arc>要素によって表される永続アークは、リソース・セット中の<content>要素の「resource」属性値および「role」属性値によってリンクベースを接続する。ここで、この<content>要素は永続コンテンツ・リソースのロケーションを提供する。
本発明の好ましい実施形態では、ここでは7つのステージを有するものとして記述されているブートストラップ・フローを使用して、ロード時にネットワーク上のすべてのノード(システム・ノードが実装されているときは、それを含む)を初期化する。次に、図10を参照してこのフローを説明する。最初のステージ(ブロック800)では、対象となるノードがそれ自体のIPアドレスを解決する。このノードが静的IPアドレスを有していないと想定すると、好ましくはこのために従来技術の動的アドレス割当て技術(「DHCP(Dynamic Host Configuration Protocol)」、あるいはAuto IPプロトコルなど)が使用される(ノードが静的IPアドレスを有する場合は、このステージは省ける)。
第2ステージの前段階として、このノードがすでに本明細書で開示された形のLBuuidを有しているかどうかの判断が行われる(ブロック810)。この判断の結果がNoの場合は、第2ステージでノードのリンクベースのためのLBuuidが生成される(ブロック820)。このNoの結果は、ピア・ノードを最初に呼び出したときに発生する。このときは、リンクベースも初期化しなければならない。このステージで生成されるLBuuidは、そのノードのリンクベースのUUIDとなる。この場合、LBuuidは以下の形となる。
LBuuid = f (current_IP_Address,current_Date, current_Time, a)
好ましくは、パラメータ「a」は、先に説明したように、IPアドレスの提供元のインジケータ(例えば、そのドメイン・ネーム)である。あるいは、「a」は従来技術のUUIDで使用されるパラメータであってもよく、その場合は乱数が使用される。どのようなUUID生成アルゴリズムを使用してもよいが、上述のように責任能力およびトラッキングを考慮すると、生成された値はリンクベースをその所有者までたどり、それによってコンテンツ・リソースをその生成元(およびそれをダウンロードしたピア・ノード)まで追跡する能力を提供する形式のものであることが好ましい。
リンクベースを初期化するとき、そのノードのローカル・コンテンツがネットワークをどのように横断したかを表す1組のアークが生成される(図9参照。そこでは、いくつかの例が論じられている)。
ノードのリンクベースにLBuuidが使用できるようになると、第3のステージでそのノードから「アライブ(alive)」メッセージのブロードキャストが始まる(ブロック830)。アライブ・メッセージはネットワーク上でのノードの存在を知らせる。本発明の好ましい実施形態では、アライブ・メッセージはHTTMU上のSOAPを使用する。HTTMUはHTTPのUDPマルチキャストベース・バージョンであり、それを用いるとサブネット上のすべてのノードにアライブ・メッセージを送ることができる。アライブ・メッセージの例を図11に示す。この図では、<notification>要素905は、「alive」に設定された「type」属性910を有する。好ましい実施形態によれば、アライブ・メッセージはまた、そのノードのリンクベースのLBuuid値(925の<linkBaseID>要素参照)、およびそのノード自体の評判に関するそのノードのバージョンへの参照を指定する(930の<reputationRef>要素参照)。評判情報は、図9では「href」属性935によって識別される、ドキュメントへの単純なリンクによって提供されるものとして示されている。この属性の値は、ノードの評判情報を永続させるURLを提供する。したがって、アライブ・メッセージは、ピア・ノードに送信ノードの永続識別子およびその評判のロケーションをどのように見つけるかを知らせる。アライブ・メッセージはまた、好ましくは、応答メッセージのためのコールバック・アドレス(「callback」属性920参照)を指示する、相手ノードの現在のIPアドレスを提供するコール・バック情報、および以下の1つを指定する他の属性915を含む。
1)UDDIレジストリを指す照会(inquiry)URI(UniformResource Indicator)、およびこのノードから使用可能なファイル共用サービスについての結合キー。したがって、UDDIレジストリでWebサ−ビス・モデルを使用するとき、このオプションのアライブ・メッセージは、このサービスについての公開(publish)および照会API(ApplicationProgramming Interface)を保持するレジストリ、およびこのファイル共用システムについての結合キーを識別する。
2)WSIL(Web Services Inspection Language)参照など、ノードのファイル共用サービスを見つける何らかの非UDDI(NON-UDDI)による方法。WSILは、利用可能なサービスを提供するサイトを調査するのを助け、調査に関連した情報をどのように消費のために利用可能にすべきかを指示する1組のルールを指定するように設計された記法である。WSILは、IBMおよびマイクロソフトによって定義され、IBMの「ADS」およびマイクロソフトの「DISCO」と呼ばれる初期の活動で見つけられた概念を統合したものである。(WSILに関する詳細情報については、IBMがインターネット上のhttp://www-106.ibm.com/developerworks/library/ws-wsilspec.htmlに提供している、Keith Ballingerらによる「Web Services Inspection Language (WS-Inspection) 1.0, (November 2001)」を参照されたい。)
図11の例では、第2のオプションが選択されており、したがって属性915は、WSIL情報が格納されているURLを指定する「wsil」属性である。
(ブロック840で表される)第4ステージに続いて、ノードは、ブロック830で送信されたアライブ・メッセージを受信したピアによって送信されるはずの、HTTP応答上のSOAPをリスン(listen)する。好ましい実施形態によれば、これら各リモート・ノードからの応答メッセージもまたアライブ・メッセージであり、リモート・ピアのLBuuid、およびリモート・ノードの自己管理による評判情報をどこで見つけるかを識別するURLを指定する。先に述べたように、ノードの評判は、そのノードがクエリーの処理にどの程度成功するかを表す評価値を含む。(図5および6に関連して論じたように、評価値はそのノードのクエリーのすべてについて表すことも、クエリー固有の値を提供することもできる。)
ローカル(受信)・ノードが、リモート・ノードの評判についてのローカル・ノード自体のバージョンを有している場合、好ましくはこの2つの評判は併合され、ローカル・ノードが知っているリモート・ノード(すなわち、ローカル・ノードのリソース・セット内のリモート・ノード)を表すためにローカル・ノードが生成したローカル・レポジトリ(メモリ内テーブルなど)に記憶される。好ましい実施形態によれば、リモート・ノードに関するローカル・ノードのビューが、その評判に関するリモート・ノードのビューと異なっているときは、このマージ操作は、ローカル・ノードの情報の上にリモート・ノードからの入力をコピーすることを含む。(ローカル・ノードがある期間ネットワークを離れ、その間にリモート・ノードの評判が改訂されたとき、あるいは、ローカル・ノードが他の理由でリモート・ノードの活動の何らかの伝搬を逃し、そのリモート・ノードについての知識において遅れをとった可能性があるとき、この方法が適切なこともある)。しかし、ローカル・ノードがそのリモート・ノードを悪意のあるノードだと識別していた場合には、好ましくは、(通常)ローカル・ノードはリモート・ノードの評判に関する着信ビューを無視する。本発明の範囲を逸脱することなく、リモート・ノードに対するローカルの評価値を導き出す他の技術を使用することができる。例えば、ローカルのビューとリモート・ノードのビューを平均化する方法や、外捜(例えば、他のノードの対話について、ローカル・ノードが知っていること、および知らないことを組み込む)などである。
システムレベルのゴシップ・モンガが定義され、ピア・ノードが維持するレポジトリに評判情報を書き込む許可を有するとき、ローカルのゴシップ・モンガが有するリモート・ノードの評判に関するビューは、システムレベルのゴシップ・モンガによって上書きされていることがある。
(ブロック850で表される)ステージ5において、ローカル・ノードは本明細書で「スパイ」メッセージと呼ぶものを発行する。好ましくは、このスパイ・メッセージは、ローカル・ノードの最初の「アライブ」要求に(ブロック840で)応答したすべてのピアに直接送信され、基本的に、各ピアにそのピアが知っているネットワーク上の各ノードにアライブ要求を伝搬するよう要求する。このとき、マルチホーム・ピア(すなわち、複数のネットワーク接続をサポートするピア)は、現在のサブネットの外部にあるピアにアライブ要求を転送することがある。次いで、これらのピア・ノードはそのピア自体のアライブ応答メッセージで応答するので、ローカル・ノードは動的にP2Pネットワークのトポロジーを知ることができる。ローカル・ノードは、返ってきたアライブ・メッセージから集められた情報を使用してURLマッピングへのLBuuidを(ローカル・ノードのリソース・セットの中に)構築し、その結果、ピア・ノードのIDを解決できるようになる。
スパイ・メッセージがオプションだと考えられていること、およびスパイ・メッセージの伝達の深さ(depth)は、好ましくは必要とするアプリケーションによって決まることに留意されたい。スパイ・メッセージは、オプションで深さ属性を持つことができる。深さ属性は、連続する転送の最大数を決定するものである。スパイ・メッセージは、好ましくはスパイ・メッセージの再帰処理を避けるためにメッセージのUUIDを提供する。再帰処理は無限ループのきっかけとなる。
図12は、SOAPメッセージ1000内にどのようにスパイ・メッセージ1005を組み込めるかを示す例である。この例では、「UUID」属性1010は、再帰転送を避けるように指定されている。(例の中の「[LBuuid]」シンタックスは、ローカル・ノードの実際のLBuuidで置き換えられる。)
図10の議論に戻って、(ブロック860で表される)ステージ6において、ローカル・ノードは、それ自体のアライブ・メッセージの応答(および実装されているときには、スパイ・メッセージの応答)として受信したアライブ・メッセージを使用して、ネットワーク・エンドポイントをリモート・ノードのリンクベースIDにマッピングするメモリ内テーブル・エントリを更新する。これらのエントリの集合体は、図8の例に示したように、ローカルのリンクベースのリソース・セット中に<node>要素を含む。更新プロセスに、必要に応じてURLの更新が含まれるので、メモリ内テーブルで、各LBuuidに関するノードの現在のロケーションを識別できる。(リソース・セットはXMLドキュメントであり、好ましくは、それが「DOM(DocumentObject Model)」ツリーを使用して記憶されるので、新しいエントリの追加が新しいDOMツリー・ノードの作成に対応することに留意されたい。XMLシンタックス要素からDOMツリー・ノードを作成する技術は、当技術分野では周知である。)
ノードは、スパイ・メッセージに応答してアライブ・メッセージを返したリモート・ノードに関して、ローカルに格納された評判情報を更新することもできる。ブロック840の議論を参照されたい。そこでの議論では、この評判の更新が、このノード自体のアライブ・メッセージに応答したノードに関して説明してある。
最後に、ステージ7(ブロック870)で、ローカル・ノードは、好ましくは予約されたHTTPMUチャネル上で、他のピア・ノードからのアライブ・メッセージをリスンし、それに応答してアライブ・メッセージを送信する(これは、ブロック840に関して説明したアライブ応答メッセージに類似したものである)。このリスニング・プロセスは好ましくは常時オンであり、それによりノードは、P2Pネットワーク上のピアについての知識を維持することができ、そのノードの(LBuuidとURLsの相互関係をキャッシュする)リソース・セットを、したがってローカルに格納されたピアの評判情報を改訂することが可能になる。
図13は、ピアにコンテンツを要求したノードが使用できるフローを示すフローチャートである。このプロセスはブロック1100で始まり、そこでユーザは関心事についてのクエリーを作成する。クエリーは、好ましくはクエリー・ストリングとして表現される。それは例えば、ユーザが入力したもの、ユーザがメニューから選択したもの、ユーザが識別したファイルから読み込んだものなどである。一般にユーザは人間であるが、あるいはプログラムによる処理でクエリーを判断し、クエリー・ストリングを供給することもできる。例えば、顧客番号123-4567-890の注文書を要求するためには、前の例で示したように、クエリー・ストリングは「purchase_order123-4567-890」の形にフォーマットされる。
ブロック1110で、好ましくは最適化プロセスが実施される。このプロセスによって、ノードはピア・ノードの評判を評価して、本明細書で「ブロードキャスト層(broadcast tiers)」と呼ぶものを解決する。これらのブロードキャスト層はクエリー解決への階層的アプローチを指定し、各層におけるピア・ノードが、そのクエリーに答える永続的能力をベースに選択される。この階層的アプローチでは、ネットワークを横断するクエリー要求メッセージおよび応答メッセージの数を削減するよう努める。好ましくは、パターン・マッチング・アプローチを使用し、各ノードの評判に<QuerySet>を使用して、特定のクエリーにどのノードが答えることができるかを決定する。図5および6を参照されたい。例えば、特定のノードが420のシンタックスを使用して表される「purchase_order999-9999-999」クエリー・パターンに答えられない場合は、この特定のノードにその形のクエリーを送信するのは非効率的である。その代わりに、このクエリーをサポートすることを示す評判を有し、かつ比較的高い評価値を有するノードが、最初のブロードキャスト層として選択される。
このパターン・マッチング操作のオプションの機能強化として、サイト・サマリを活用できる。「サイト・サマリ」とはRDFを使用して提供されるコンテンツ・シンジケーション技術(content syndication technique)のことであり、当技術分野では「RSS」と呼ばれる。サイト・サマリは、特定のサイトから使用可能なコンテンツ/サービスについて記述した、1組のコンテンツ記述(すなわち、ノードのクエリー・セット)を含むことができる。例えば、サイトに新たなコンテンツを加えるために1組の記述を変更するとき、RSSを使用したコンテンツのシンジケータ(syndicator)に変更済みの記述を積極的にプッシュすることができる。ノードはまず、先に論じたように、アライブ・メッセージによって互いの評判について知る。ノードが他のノードとの対話に参加すると、通常(ノードの評価値やクエリー・セットの可能性など)ノードの評判は変わる。あるノードが他のノードと頻繁には対話しないため、互いの評判についてのそれらのノードのビューが期限切れになることが起こり得る。したがって、有利にはサイト・サマリを使用してネットワークのノード間で周期的に評判情報を伝える。
ブロック1120で、要求が、識別された「プライオリティ・プロバイダ(priorityproviders)」に送信される。好ましくは、クエリーは指示された(HTTP上の)「ブロードキャスト」アプローチで送信され、その場合、結果セット(resultset)を使用して各ターゲット・ノードの現在のIPアドレスが決定される。(ブロードキャスト層を使用しない場合には、クエリー・メッセージのターゲットは、例えばリソース・セットに示されるすべてのピアにメッセージを送信するなど他の方法で決定される)。SOAPメッセージ1200で実施されるクエリーの例を図14に示す。この例に示したように、<query>タグ1205は、その値1210としてクエリーのテキスト・ストリング表現を有しており、この場合入力パラメータ値として対象のアカウント番号(「123-4567-890」)が提供されている。(このクエリーが、受信ピアによって一種の調査と解釈されることに留意されたい。すなわち、それによって受信ピアが実際にこのクエリーをサポートするかどうか、およびそのクエリーに答えることについてのそれらの現在の評価値として何を主張するかを判断するために問合せを受けていることになる。1120で送信されるメッセージは、実際のコンテンツ要求ではない。)
第1の層でどのノードからも満足できる応答が受信できなかった場合(すなわち、問合せを受けたピアのどれもが受け入れられる評価値でそのクエリーに応えられない場合)は、制御はブロック1110に戻り、そこで次善のピアの組からなる第2の層が識別される。(好ましくは、時間間隔を使用して問合せを受けたピアが応答するのを待つための時間を制限する。時間間隔は設定可能なこともある。)この第2層は、好ましくは、やはりこのクエリーをサポートするが、第1層より低い評価値を有するピアを含む。次いで、ブロック1120で要求が再び送信される。
様々な層のピアにクエリー要求を送信するこのプロセスは、悪意がないピア・ノードのすべてに問合せを送るまで、あるいはそのクエリー要求についての満足できる応答を受信するまで続けられる。次いで、制御はブロック1130に至る。
場合によっては、そのクエリーに対するサポートを指示していないノードにもクエリー要求を送信することが結局は生産的となることがあることに留意されたい。ネットワークにアド・ホックな性質があるために、ローカルのノードは通常、そのすべてのピアの(そのクエリー・セットも含めた)評判についての最新情報を常に知っている訳ではないからである。したがって、たとえローカルのノードの情報で、そのピアがよい候補であると示されなくても、要求したクエリーへの応答をうまくやり遂げるピア・ノードが見つかる可能性がある。
再び図13に戻って、問合せを受けた1つまたは複数のピアが、実際にそのクエリーをサポートすると答えたと想定すると、ブロック1130で、ローカルのゴシップ・モンガ・ハンドラが応答したノードからのメタデータを処理する。すなわち、リモート・ピアからの応答メッセージは、リモート・ノードのコンテンツ・リポジトリ内で最も良くその要求を満たすコンテンツを記載するメタデータを含むことになる。また、この応答メッセージの情報は、好ましくはブロック1140での処理のためにローカルにキャッシュされる。図15の、SOAP応答メッセージ1300の例を参照すると、この場合はSOAPヘッダ中の<content-meta-data>タグ1305がコンテンツ・メタデータのロケーションを指すsimpleのXLink要素を提供する。この例では、「href」属性1310の値が、「purchase_order_123-4567-890.rdf」として識別される情報が<queryResponse>要素の第1の子要素としてここに組み込まれることを示している(1315のポインタ・シンタックスを参照のこと)。<queryResponse>要素は1320で示されており、応答ノードからのコンテンツ・メタデータ(1325参照)のRDF仕様を含む。この例に示したように、応答側は、それが返すことになるドキュメントの名前(1330の「about」属性値参照)、作成の日付と時間および作成者の名前(<Creator>要素1335参照)、ならびに指名されたドキュメントに関する概要(<synopsis>要素1340参照)を示す。
次に、応答ノードの集合体からのコンテンツ・メタデータがユーザによって評価される。先に述べたように、このユーザ評価は、人間またはプログラム処理によって実施される。ユーザが人間のとき、<synopsis>要素1340の値は、好ましくはGUI(graphical user interface)パネル上に表示される。また、必要なら、<Description>要素1325の他の値も表示できる。コンテンツ・メタデータを解析した後、ユーザは、どのピアがそのクエリーを最も良く満たすかのユーザ選択を識別し、次いでコンテンツの要求をSOAPPOST要求として発行する(ブロック1140)。
図16に、好ましい実施形態による、コンテンツ要求を送信するためのSOAP POST要求1400の例を示す。この例では、SOAPエンベロープは<getContent>要素1405を含み、この要素は「ID」属性1410の値として(図14のクエリー要求メッセージの形で送信された)ユーザのコンテンツ要求のテキストを有する。あるいは、応答メッセージの「about」属性1330で受信した値を、「ID」属性1410の値として使用することもできる。
ピア・ノードは、好ましくは「multipart MIME(multipartMulti-purpose Internet Mail Extensions)」構造でSOAP応答メッセージとしてエンコードされた要求コンテンツを返す。要求コンテンツを受信すると、受信ノードはそのコンテンツを処理する(ブロック1160)。W3Cによって公布された、「SOAPMessages with Attachments, W3C覚書2000年12月11日」と題する仕様書(http://www.w3.org/TR/2000/NOTE-SOAP-attachments-20001211を参照のこと)では、添付ファイルを送信するためにmultipart MIME構造を使用して、SOAPメッセージを1つまたは複数のネイティブ形式の添付に関連づける標準の方法を記載している。SOAP応答メッセージの例は図17の1500で示され、そこではコンテンツ要求への応答が、参照番号1520によって表されるような形でMIME添付が指定されている。好ましい実施形態によると、SOAP応答はまた、このコンテンツのピア・ネットワークに入ってからの横断パス(1505参照)および要求を満たすリモート・ピア(1510参照)を指示し、好ましくはそれ自体の評判についてのそれ自体の表示を識別するURLも提供するヘッダを有する。
ブロック1150で実施される処理は、(必要なら、最初に復号ハンドラを使用してメッセージを復号した後に)横断パスおよびリモートの評判情報を抽出することを含む。
次に、デジタル署名ハンドラはこのメッセージ上のすべてのデジタル署名を検証する(ブロック1160)。送信者の認証に失敗するか、あるいはメッセージの完全性チェックに失敗した場合、ピアの評判に悪影響が及び、好ましくはそのピア・ノードが主張する評判は無視される。(あるいは、特定の実装においては、このような状況下でのローカル・バージョンのそのピア・ノードに関する評判を下げるのが望ましいであろう。)
コンテンツ要求1400が発行されたすべてのピア・ノードに関するローカルに維持された評判は、そのクエリーに応えることに関する評判の成功率を反映するように更新される(ブロック1170)。好ましくは、この更新は「totalQueries」属性の値をインクリメントすること、成功カウントを特定の応答者に合わせて適宜インクリメントするまたはしないこと、続いて評価値を再計算することを含む。好ましい実施形態では、評価値は成功カウントをtotalQueries値で割ることによって計算される。次いで、これらの更新値はローカルに記憶される。代替実施形態では、評価値は他の方法で計算することができる。
ブロック1180において、このピアが認証に成功したと想定すると、そのピアの応答メッセージから得られた横断パス情報(図17のドキュメント1500の参照番号1505を参照のこと)はローカルに記憶され、新たに受信するコンテンツに関連づけられる。(一例として、図8のリソース・セット600の<content>要素660を参照のこと)。さらに、横断パスは、有向グラフ中の最新のターゲット・ノードとして現在のノードを含むように(すなわち、図9の735で示される形の新しい<arc>要素を生成することによって)拡張される。
最後に、受信したコンテンツがアプリケーションに提供され(ブロック1190)、次いでアプリケーションはそれ固有の方法でそのコンテンツを処理する。次いで、このコンテンツ要求についての、図13の要求元フローは終了する。
図13に示された処理のオプションの拡張として、ユーザは、そのコンテンツが最終的にユーザの要求を満足させたかどうかについてのフィードバックを提供できること、またそれを提供ノードの評価値に反映させることができることに留意されたい。
ここで図18に戻って、(リモートの)ピア・ノードがコンテンツ要求を評価し応答するための提供元フローについての好ましい実施形態について説明する。このプロセスはブロック1600で始まり、そこでピア・ノードはクエリーを受信し、受信したクエリーからクエリー・ストリングを抽出する。
ブロック1610において、ピア・ノードはパターン・マッチング操作を実施して抽出されたクエリー・ストリングをそれ自体のコンテンツ・メタデータとマッチさせ、このクエリーに答えることができるかどうかを判断する。(図5および6を参照のこと。この場合は、例示の<QuerySet>要素が、特定のノードがサポートできるクエリーを識別する)。先に、クエリー・メッセージのターゲット・ノード識別に関して説明したように、本発明の特定の実装では、サイト・サマリを使用してこのパターン・マッチング・プロセスを迅速に処理できることに留意されたい。
このピア・ノードが要求されたクエリーを実行できる場合には、そのノードは、(要求元ノードが潜在的コンテンツ提供元からの応答を受信することについて論じた)ブロック1130に関して先に説明した形式のSOAP応答メッセージを生成し、そのメッセージを要求元に返す(ブロック1620)。上で論じたように、この応答メッセージはSOAPエンベロープを含み、そのエンベロープは、このピア・ノードがクエリー要求を満たすために提供するコンテンツを記載するメタデータを有するRDFメッセージを含む。
ある場合には、ブロック1620で送信された応答メッセージが複数のRDFメッセージを含む可能性があることに留意されたい。これは、特定のノードがクエリーを複数の方法でサポートできるときに生じる。さらに、(ブロック1120に関連して説明したように送信された)SOAPヘッダ1200を使用して指定されたクエリー要求が、(例えば、複数の<query>タグ1205としてフォーマットされた)複数のクエリー・パターンを含むことも起こり得る。応答は、この場合も複数のRDFメッセージを含むことができる。
応答メッセージを発行した後、提供元ノードは要求元ノードからのコンテンツ要求の着信をリスンする(ブロック1630)。ブロック1610で受信した「このクエリーがサポートできますか」というメッセージではなく、ここで待つコンテンツ要求は「このクエリーを実施してください」という要求である。好ましい実施形態によれば、そのノードは設定された時間間隔の間、コンテンツ要求の着信をリスンする。待っている要求を受信することなく時間が経過した場合は、このコンテンツ要求についての処理は完了したものと見なされる。したがって制御はブロック1600に戻り、次の「このクエリーをサポートできますか」の要求メッセージを待つものとして示される。(明らかなことだが、好ましくはノードが着信要求を常時監視できるように別個のスレッドが使用される。)一方、待っている「このクエリーを実施してください」の要求メッセージを受信した場合には、処理はブロック1630から1640に移る。
ブロック1640では、要求されたクエリーについての処理を呼び出し、結果を(図17に関して先に説明したような)multipart MIME添付を使用したSOAP応答メッセージとしてフォーマットする。
ブロック1650で、提供元ノードのパス・インティメイタは、アウトバウンド・メッセージのSOAPヘッダとしてコンテンツ横断パスへの参照を先頭に付加する。図17を参照されたい。この場合は、SOAPヘッダ1505が、図3に示したような横断パス定義情報を提供する。(先に説明したように、ヘッダ・ドキュメント300の<traversalPathRef>タグ305が、ピア・ネットワーク内の指定されたコンテンツの横断パスを記憶するリンクセットへの参照310を提供する。)本発明は、(例えば、このノードによって特定の日付および時間に生成された、あるいはこのノードによって特定の日付および時間に転送されたなど、必要に応じて)ローカルに記憶されたコンテンツ横断パス定義を更新する。
次いで、提供元ノードのゴシップ・モンガはノードのローカルの評判を更新し(ブロック1660)、更新された情報を格納し、アウトバウンド・メッセージのSOAPヘッダに評判情報を組み込む。(再び図17を参照されたい。そこではSOAPヘッダ1510が、図4に示したような応答ノードのバージョンの評判を含む。)その評判を更新するとき、「このクエリーを実施してください」の要求を受信することなく時間間隔が切れた場合には、提供元ノードは、好ましくはその対話をそのコンテンツ要求を満たすことに失敗したものとしてカウントする。その要求を受信した場合には、提供元ノードは好ましくはこの対話を成功としてカウントする。成功または失敗の結果を考慮に入れ、先に図13のブロック1170に関して論じたように、「stature」属性が再計算される。(失敗の処理は、ブロック1630のNOの結果として実施されることに留意されたい。)
次いで、生成された応答メッセージは、(SOAPヘッダおよび添付も含めて)デジタル署名ハンドラによってデジタル署名される(ブロック1670)。次に、応答メッセージが要求元に返される。
図19〜21は、本明細書で説明してきたオプションのシステム管理機能で使用できるヘッダの例を示す。好ましくは、追加のAXISハンドラをノードに提供してそれを管理する。また、管理「権限」を有する1つまたは複数のノードが管理情報を伝え、受信ノードのAXISハンドラがそれを処理する。システム管理機能を提供する追加のAXISハンドラを本明細書では「管理ハンドラ(Management handler)」と呼ぶ。本発明の好ましい実施形態では、集中化された管理ノードがないので、管理ノード(例えば、何らかの方法で他のピア・ノードに指示を出すノード)として機能できるノードは、好ましくは比較的高い評価値レベルを有するノードである。
本明細書で開示する発展的信頼モデルにより、どのようなノードも潜在的に管理評価値を達成できる可能性があり、したがってシステム・ノードとして動作できる可能性がある。したがって、必要なら、ネットワーク上のすべてのノード、あるいは複数のノードがシステム管理機能を展開できる。システム・ノードの管理コードは、好ましくは認証局によって認証される。その結果、そのコードが発行したメッセージを他のノードが信頼できるようになる。すなわち、そのメッセージ上のデジタル署名により、受信ノードの管理ハンドラはメッセージのソースを確認することができるようになる。
好ましい実施形態では、管理ハンドラが2つの新たなヘッダ・タイプをサポートする。それらを、本明細書では「ピーク(peek)」および「アクセス(access)」と呼ぶ。ピーク・ヘッダを使用して、そのトラフィックがシステム・ノードに監視されていることをノードに知らせることができる。アクセス・ヘッダを使用して、ノードのリンクベース、評判リポジトリ、またはコンテンツ・リポジトリを読み書きすることができる。
図19はピーク・ヘッダの一例を示す。システム・ノードがピーク・メッセージを送信して、受信ノードの管理ハンドラにSOAPメッセージを指定したシステム・ノードに複写するよう知らせる。したがって、要素1700として示されるヘッダは、メッセージの送信元(すなわち、システム・ノード)を識別するアドレス1710を指定するsimpleのXLinkである。次に、受信ノードはこのアドレスを使用してそのSOAPトラフィックを複写する。オプションで、<peek>要素で属性を指定して、複写されるSOAPメッセージのカテゴリを受信側に知らせることもできる。デフォルトでは、好ましくはすべてのSOAPメッセージが複写されることになっている。
図20および21にアクセス・コマンドを示す。上記のように、アクセス・コマンドは、受信ノードのシステム・リソースにアクセスするために使用できる。コマンド・フォーマットは、「command」属性の対応する値によってwriteオペレーションまたはreadオペレーションのいずれかに指定できる。図20の<access>ヘッダ1730の例はwriteオペレーションを示しているが、ここでは、システム・ノードが受信ノードの管理ハンドラに、カプセル化された評判参照1750に新しい評判情報が提供されていることを教示している。次に、管理ハンドラは、同じ場所にあるゴシップ・モンガ・ハンドラにこの情報を転送することができる。この例では、評判参照1750で、主張された評判情報を見つけることができる評判レポジトリの位置を識別する。受信ノードは、評判のコピーを取り出し、ローカルに格納することを選択することも、あるいは、リンクを格納し、情報が必要なときにレポジトリの評判にアクセスすることを選択することもできる。あるいは、シンタックス・フォーム(図示せず)を使用することによって、評判そのものを(ピア・ノード、その主張された評価値、およびオプションでそのクエリー・セットのLBuuidを識別するための属性を含む)ヘッダ内にカプセル化することができる。「href」属性1740はシステム・ノードのアドレスを提供し、それによって受信ノードがヘッダの送信元を識別できるようにする。
図21の<access>ヘッダ1760の例は、readオペレーションを例示したものである。このコマンドは、システム・ノードがアクセスしようとするリンクベースを識別するための「linkBaseURI」属性1780を提供する。この例では、この属性の値がxpointer表記を使用して、<content>要素を<ResourceSet>ドキュメント内に置くべきであることを示す。この場合は、例示のドキュメントが「http://9.56.34.12/linkbase/lb.xml」に格納されている。その代わりとして、評判レポジトリまたはコンテンツ・レポジトリにアクセスするための、アクセス・コマンド上に属性を提供することもできる。「href」属性1770はシステム・ノードのアドレスを提供し、それによって受信ノードは、ヘッダの送信元を識別すること、およびreadコマンドの場合には、要求された情報を返すことが可能になる。
好ましくは、受信ノードは送信元を確認するプロセスでシステム・ノードの評価値を確認して、その送信システム・ノードが管理機能を実施するのに十分な信頼を得ているかどうかを判断する。管理ハンドラによって追加されるデジタル署名は、好ましくはヘッダ・メッセージが対応するシステム・ノードから発信されたものであることを保証するために検証される。オプションで、受信ノードは、送信元のIDを確認するためにチャレンジ(challenge)を送信元に発行することもできる。このことは、図19〜21の例に示したように、送信システム・ノードを識別する「href」属性を使用することによって容易に実施できる。
次に、図22を参照すると、システム・ノードがシステム管理機能(例えば、ピア・コミュニティの監視および管理)を実施するために実装できる管理フローが示されている。ブロック1800で、システム・ノードはピーク・オペレーションを呼び出す。好ましくは、ノードがネットワークに参加したとき(このことは、先に図10に関して説明したように、参加ノードの「alive」メッセージの発行によって検出される)、それらにピーク・ヘッダを送信する。
ピア・ノードがシステム・ノードにそれらのSOAPトラフィックを複写し始めると、システム・ノードはそのトラフィックを監視する(ブロック1810)。特に、システム・ノードは、好ましくは評判およびコンテンツのあらゆる送信を監視する。したがってシステム・ノードは、各ピア・ノードがそれ自体の評判を、それらの評判リポジトリへの参照を含めてどう主張しているかを観察することができる。また、システム・ノードは、特定のノードからのコンテンツが成功した対話を構成するものとして受け入れられているかどうかも観察できる。
ブロック1820では、システム・ノードは、セキュリティ・イベントを検出するための監視トラフィックを評価するものとして示されている。好ましくは、システム・ノードは、偽りの評判情報が主張されたとき、また汚染されたコンテンツが広められたときにもセキュリティ・イベントを起動する。例えば、あるノードが高い正の評価値を有すると主張しているが、多数のピアがこのノードからのコンテンツを拒否していることにシステム・ノードが気付いた場合、システム・ノードはその主張をしているノードを悪意のあるノードだと判断することができる。同様に、システム・ノードは、ピア・ノードが特定のコンテンツを拒否していることを検出し、そのコンテンツが汚染されていると判断することもできる。好ましくは、この場合も同様にセキュリティ・イベントが起動される。
検出されたセキュリティ・イベントが偽りの評判を含んでいる場合(ブロック1830参照)、システム・ノードでの管理フローはブロック1840に移り、そこで、システム・ノードはそのノードの評判にアクセスするためのアクセス・コマンドを発行する(好ましくは、writeオペレーションを使用して、受信ノードに評判についてのシステム・ノードのビューを上書きする)。システム・ノードがあるノードに、そのノード自体の評判を知らせることもできるし、他のピア・ノードの評判を知らせることもできることに留意されたい。評判リポジトリ内に予約領域を設けることができ(この予約領域に、悪意のあるノードが上書きすることはできない)、この予約領域にwriteオペレーションによって情報を書き込むこともできる。悪意のあるノードがリポジトリのこの領域に書き込んで、偽って高い評価値を設定するのを防ぐことができる。その後、あるノードがこの評判リポジトリにアクセスしたとき、好ましくは、そのノードは予約領域に記憶された情報を、その同じ評判に関する他のデータより優先するものと解釈する。あるいは、予約領域を使用しない場合には、システム・ノードがアクセス・ヘッダ上で送信する情報を、非予約ストレージに書き込むこともできる。(すでに説明したように、ピア・ノードが、評判参照の形で、あるいは評判情報を含むメッセージの形で、互いに評判情報を送り合うこともできることに留意されたい。)
ブロック1850でのテストによって、セキュリティ・イベントが汚染されたコンテンツに関係するものであったかどうかを判断する。関係していた場合には、処理はブロック1860に移り、そこでシステム・ノードは、あるピアに格納されているコンテンツが汚染されていると主張するアクセス・コマンドを発行する(例えば、横断パスを修正するために、リンクベース・データにアクセスし、上書きする)。リンクベースもまた予約領域を使用することができ、システム・ノードはそこにコンテンツ・パス横断情報を書き込むことができる。
アクセス・ヘッダ上の他の属性の使用に関して先に論じたように、特定の実装において必要なら、システム・ノードが、ノードのローカルに格納されたコンテンツを上書きするコマンドを発行できるようにすることもできる。コンテンツ・リポジトリに影響を与えるアクセス・コマンドの処理は、評判およびコンテンツ横断パスに影響を与えるコマンドについて説明した方法と類似の方法で実施できる。
セキュリティ・イベント処理が完了すると、制御はブロック1810に戻り、ピア・ノードのトラフィックのモニタを続行する。(明らかなことだが、セキュリティ処理は、好ましくは監視が中断されないように独立したスレッドで実施される。)
監視機能をセキュリティに関して説明してきたが、本発明の諸実装では、ピア・ノードのトラフィックを監視することによって集めた情報を他の目的に使用することもできる。他の使用の例には、フェイルオーバ(failover)および高可用性(high availability)のシナリオが含まれる。例えば、フェイルオーバ・シナリオでは、アクセス・コマンドを使用して、障害のあるノードへの参照をバックアップ・ノードへの参照で置き換えるか、あるいは障害を起こしたノードへの参照を削除することができる。これらの変更は、リソース・セットの障害ノードを識別し、そのノードのLBuuidを参照するエントリを置き換えるかまたは削除することによって行われる。高可用性シナリオでは、特定のピア・ノードが過負荷であること、あるいは他のノードのリソースが使用中であることをシステム・ノードが検出したとき、システム・ノードはアクセス・コマンドを使用して、そのコンテンツ(またはサービス)を参照するリンクベースを、そのコンテンツ(またはサービス)が代替の方法によって得られる別のノードにトラフィックがリダイレクトされるように修正することができる。
ここまで例証してきたように、本明細書に開示の技術により、管理されたピアツーピア・ネットワークのフレームワークが提供されるとともに、アド・ホック・コミュニティが形成されたとき、複数の呼出しに渡ってピア関係を維持し、その関係およびIDを再利用することが可能になる。上で論じたように、ピア・ノードは自由にネットワークに入り、出て行くことができる。また、本明細書に開示の技術を用いると、これらの一時的コミュニティのもとで、セキュリティ、管理、および他のシステムレベル機能を提供することが可能になる。開示の技術により、P2Pネットワークの一時的コミュニティを管理し、一時的コミュニティにおいてメッセージの完全性が保証できる、セキュアなトランザクションを交換することが可能になる。
マイクロソフト株式会社(Microsoft Corporation)のHailstormプロジェクト(「NetMy Services」とも呼ばれる)は、P2P技術と位置づけられてきた。しかし、そこでのP2Pサポートは、インスタント・メッセージに限られているようである。JXTAなど、他の既存のP2Pネットワーキング製品は、前に論じたように、本明細書に開示の一時的コミュニティで用いられる機能を提供しない。
当業者なら理解するであろうが、本発明の実施形態は方法、システム、あるいはコンピュータ・プログラム製品として提供できる。したがって本発明は、全くのハードウェアによる実施形態、全くのソフトウェアによる実施形態、またはハードウェアおよびソフトウェアの態様を組み合わせた実施形態の形をとることができる。さらに本発明は、コンピュータが使できるプログラム・コードが書き込まれた、1つまたは複数のコンピュータが使用できる記憶媒体(例えば、ディスク記憶装置、CD−ROM、光記憶装置などを含むが、これだけには限らない)で実施されたコンピュータ・プログラム製品の形をとることもできる。
好ましい実施形態を、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフロー・ダイアグラムまたはブロック・ダイアグラムあるいはその両方に即して説明した。フロー・ダイアグラムまたはブロック・ダイアグラムあるいはその両方の各フローまたはブロックあるいはその両方、ならびにフロー・ダイアグラムまたはブロック・ダイアグラムあるいはその両方におけるフローまたはブロックあるいはその両方の組合せは、コンピュータ・プログラム命令として実装できることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、ならびにマシンを製造するための組込みプロセッサまたは他のプログラマブル・データ処理装置のプロセッサに提供して、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フロー・ダイアグラムのフローまたはブロック・ダイアグラムのブロックあるいはその両方に指定された機能を実現する手段を生成するようにすることができる。
これらのコンピュータ・プログラム命令は、コンピュータ可読のメモリ中に記憶することもでき、コンピュータまたは他のプログラマブル・データ処理装置に指示を出して特定の方式で機能させることもできる。その結果、コンピュータ可読のメモリ中に記憶された命令により、フロー・ダイアグラムのフローまたはブロック・ダイアグラムのブロックあるいはその両方に指定された機能を実施する命令手段を含む製造品の形に製造される。
コンピュータ・プログラム命令をコンピュータまたは他のプログラマブル・データ処理装置にロードして、一連の操作ステップがコンピュータまたは他のプログラマブル装置上で実施されるようにし、その結果、コンピュータまたは他のプログラマブル装置上で実行される命令が、フロー・ダイアグラムのフローまたはブロック・ダイアグラムのブロックあるいはその両方に指定された機能を実現するための諸ステップを提供するような、コンピュータ実施方式を生成することもできる。
本発明の好ましい実施形態について説明してきたが、本発明の基本的概念を知れば、当業者ならそれらの実施形態における追加の変形形態および修正形態を思い浮かべることができるはずである。好ましい実施形態をWebサービス・アプリケーションに則して説明したが、開示の技術が他のP2Pネットワーク環境においても使用できることに留意されたい。さらに本明細書では、好ましい実施形態をSOAPメッセージ、およびメッセージ・ヘッダ、ドキュメントなどに関する特定のシンタックスに則して説明したが、これは例示のためであり限定のためではない。すなわち、本発明の範囲を逸脱することなく、代替のメッセージ・フォーマットおよび代替のシンタックスを用いることもできる。さらに、本明細書では一時的ネットワークについて記載したが、ネットワーク・トポロジーが時間とともに安定化することは起こり得る。したがって、「一時的ネットワーク」という用語は、一時的なトポロジーをサポートするアーキテクチャを有するネットワークを意味するものと解釈できる。したがって、添付の特許請求の範囲は、好ましい実施形態、ならびに本発明の範囲に含まれるあらゆる変形形態および修正形態のどちらもを含むものと解釈すべきであることが意図される。
本発明の実装で利用できる、従来技術のWebサービス・スタックを示す図である。 ネットワーク環境における構成要素の配置および相互接続の概略を含む、本発明の構成要素を示す図である。 好ましい実施形態で、特定のコンテンツ・リソースの横断パスをどのように識別するかを説明するための「SOAP」(Simple Object Access Protocol)ヘッダの一例を示す図である。 好ましい実施形態で、特定のノードの評判をどのように識別するかを説明するための「SOAP」ヘッダの一例を示す図である。 好ましい実施形態および代替実施形態で、ノードの評判をノードのメタデータとしてどのように指定するかを説明するための「XML」(Extensible Markup Language)ドキュメントの例を示す図である。 好ましい実施形態および代替実施形態で、ノードの評判をノードのメタデータとしてどのように指定するかを説明するための「XML」ドキュメントの例を示す図である。 好ましい実施形態で、コンテンツのメタデータを使用してコンテンツのリソースをどのように記述するかを説明するためのXMLドキュメントの一例を示す図である。 好ましい実施形態で、永続的ノード識別子と現在のネットワーク・エンドポイントの間のマッピング、および永続的コンテンツ識別子とそのコンテンツの現在のストレージ・ロケーションの間のマッピングを記録するために好ましい実施形態に従って生成されたリソース・セットをどのように指定するかを説明するためのXMLドキュメントの一例を示す図である。 好ましい実施形態で、どのようにコンテンツ横断パス定義を指定し、特定のコンテンツ・リソースがP2Pネットワークに入ってからたどったパスを識別するかを説明するためのXMLドキュメントの一例を示す図である。 好ましい実施形態に従って、P2Pネットワークのノードが初期設定時に実行するブートストラップ・フローを示す図である。 好ましい実施形態で、図10のブートストラップ・フローの間に発行される「アライブ(alive)」通知メッセージの中で、どのように評判情報を伝えるかを示すXMLドキュメントの一例を示す図である。 好ましい実施形態で、P2Pネットワーク内に「アライブ(alive)」メッセージを伝えるために使用できる「スパイ(spy)」メッセージを示すXMLドキュメントの一例を示す図である。 好ましい実施形態に従って、あるノードがコンテンツ提供元またはサービス提供元を見つけ出し、コンテンツ/サービスを要求するために使用する要求元フローを示す図である。 好ましい実施形態で、図13の要求元フローの間にどのようにクエリーをブロードキャストするかを示すSOAPエンベロープの一例を示す図である。 あるノードが図14のクエリーにどのように応答できるかを示すSOAPエンベロープの一例を示す図である。 好ましい実施形態で、図13の要求元フローの中で選択されたノードに、どのようにコンテンツ/サービスの送達を要求するかを示すSOAPエンベロープを具体化した「HTTP(HyperText Transfer Protocol)」要求メッセージの一例を示す図である。 要求されたコンテンツ、または要求されたサービスの結果が要求元にどのように送達できるかを示すHTTP応答メッセージの一例を示す図である。 好ましい実施形態に従って、あるノードが、要求元からのクエリーに応答し、その要求元によって選択された場合には、要求されたコンテンツまたは要求されたサービスの結果を返すために使用する提供元フローを示す図である。 本明細書で開示された、オプションのシステム管理機能で使用できるヘッダの例を示す図である。 本明細書で開示された、オプションのシステム管理機能で使用できるヘッダの例を示す図である。 本明細書で開示された、オプションのシステム管理機能で使用できるヘッダの例を示す図である。 オプションのシステム管理機能を提供するシステム・ノードが実施できる管理フローを示す図である。

Claims (114)

  1. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと
    特定のノードが異なるネットワーク・アドレスで前記ネットワークに再入するときはいつも、前記特定のノードに関する前記格納されたマッピングの前記ネットワーク・アドレスを前記異なるネットワーク・アドレスで置き換えるように、前記特定のノードに関する前記マッピングを改訂するステップと
    を含む方法。
  2. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    を含む方法であって、
    各ノードが使用するリンクベースを前記ノードの前記永続的ノード識別子によって一意に識別してリンクを格納する前記方法。
  3. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    を含む方法であって、
    特定のノードの前記永続的ノード識別子が、前記特定のノードの前記最初のネットワーク・アドレスと、前記ネットワークへの前記最初のエントリが発生した日付と、前記ネットワークへの前記最初のエントリが発生した時間と、前記最初のエントリが発生したドメインの識別子である前記方法。
  4. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    を含む方法であって、
    前記永続的ノード識別子がUUID(Universal Unique Identifier)に基づいて生成される前記方法。
  5. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    を含む方法であって、
    特定のノードに関する前記マッピングが、前記特定のノードが知っている他のノードを永続的に識別するマッピングを有するリソース・セットに記憶される前記方法。
  6. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    前記永続的ノード識別子を使用して前記ネットワークにおける各ノードの挙動を追跡するステップ
    を含む方法。
  7. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    前記永続的ノード識別子を使用して、コンテンツ・リソースが前記ネットワーク中でたどったネットワーク横断パスを追跡するステップ
    を含む方法。
  8. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    を含む方法であって、
    前記マッピングがXlink表記を使用して指定される前記方法。
  9. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいて前記ノードを永続的に識別する方法であって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てるステップと、
    前記各ノードの前記ネットワークへの前記最初のエントリに際し、前記ノードの永続的ノード識別子を生成するステップと、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子との間のマッピングを格納するステップと、
    前記各ノードのその後の前記ネットワークへのエントリに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記永続的ノード識別子を使用して各ノードの識別を解決するステップと
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になるステップと、
    を含む方法であって、
    前記ネットワークがピアツーピア・ネットワークである前記方法。
  10. 前記ノードのうちの特定の1つのノードについて、前記特定のノードの前記ネットワークへの前記その後のエントリに際し、前記特定のノードに前記異なるネットワーク・アドレスを割り当てるステップと、
    前記異なるネットワーク・アドレスが割り当てられた後、前記特定のノードの前記永続的ノード識別子を使用して前記特定のノードの識別を解決するステップと
    をさらに含む、請求項1乃至9のいずれかに記載の方法。
  11. 特定のノードについての前記挙動が、前記特定のノードが他のノードからの要求にどれぐらい良く応答できるかを含む、請求項に記載の方法。
  12. 前記追跡ステップが、
    特定のコンテンツ・リソースがどこで前記ネットワークに入ったか、あるいは前記ネットワークのどこで生成されたかを識別するステップと、
    選択されたネットワーク横断パス上で前記特定のコンテンツ・リソースが通過した各ノードを識別するステップであって、前記識別ステップで、対応するノードの永続的ネットワーク識別子を使用するステップと
    を含む、請求項に記載の方法。
  13. 前記特定のノードの挙動が、前記特定のノードから送信されるアウトバウンド・メッセージ上で示される、請求項11に記載の方法。
  14. 前記特定のコンテンツ・リソースの前記ネットワーク横断パスが、前記特定のコンテンツ・リソースを運ぶアウトバウンド・メッセージ上で示される、請求項12に記載の方法。
  15. 前記ネットワークへの再入に際し、各ノードが、前記ノードの永続的ネットワーク識別子および前記ノードのネットワーク・アドレスの現在のバージョンを使用して前記ノードを識別するメッセージをブロードキャストするステップと、
    前記ブロードキャスト・メッセージを前記ネットワーク中の他のノードが受信するステップと、
    前記受信ノードが、前記再入ノードのネットワーク・アドレスの前記現在のバージョンを反映するようにそのノードに格納されたマッピングを改訂するステップと
    をさらに含む、請求項10に記載の方法。
  16. 前記格納されたマッピングを調べて、選択されたノードの以前の挙動を識別するステップをさらに含む、請求項15に記載の方法。
  17. 前記格納されたマッピングを調べて、選択されたノードが生成した、または転送したコンテンツを追跡するステップをさらに含む、請求項15に記載の方法。
  18. ネットワークを構成するノードの集合体が時間とともに変化し得るアド・ホック・ネットワークにおいて前記ノードを永続的に識別するシステムであって、
    各ノードの前記ネットワークへの最初のエントリに際し、前記ノードに最初のネットワーク・アドレスを割り当てる手段と、
    前記ノードの前記ネットワークへの最初のエントリに際し、前記各ノードの永続的ノード識別子を生成する手段と、
    前記最初のネットワーク・アドレスと前記永続的ノード識別子の間のマッピングを格納する手段と、
    前記特定のノードが異なるネットワーク・アドレスで前記ネットワークに入った後、前記特定のノードの永続的ノード識別子を使用してそのノードの識別を解決する手段と
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録する手段であって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用すると前記挙動を前記ノードと関連づけることが可能になる手段と
    を含むシステムであって、
    各ノードが使用するリンクベースを前記ノードの前記永続的ノード識別子によって一意に識別してリンクを格納する前記システム。
  19. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    各ノードの前記記録結果が、他のノードからのクエリーへの応答に前記ノードがどの程度成功するかを示す前記方法
  20. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    各ノードの前記記録結果が、他のノードからのクエリーへの応答における前記ノードの効率を示す前記方法。
  21. 前記効率が、前記クエリーへの前記応答の消費時間で評価される、請求項20に記載の方法。
  22. 前記成功が、前記ノードが応答できる前記各クエリーごとに判断される、請求項19に記載の方法。
  23. 前記成功が、前記ノードが応答できる前記クエリーのすべてを一括に判断される、請求項19に記載の方法。
  24. 前記効率が、前記ノードが応答できる前記各クエリーごとに判断される、請求項20に記載の方法。
  25. 前記効率が、前記ノードが応答できる前記クエリーのすべてを一括に判断される、請求項20に記載の方法。
  26. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    前記ノードの評判が、前記ノードが応答できる1組のクエリー、および前記ノードがそれらのクエリーに応答したときの前記ノードの挙動の記録結果を含む前記方法。
  27. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    前記ノードの評判が、前記ノードから提供できる1組のサービス、および前記ノードがそれらのサービスを実施したときの前記ノードの挙動の記録結果を含む前記方法。
  28. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    特定のノードの記録結果への参照を、前記特定のノードが送信するメッセージとともに転送するステップ
    を含む方法。
  29. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    特定のノードが、その特定のノードから提供できるコンテンツを求める要求を受信するステップと、
    前記特定のノードが、前記要求されたコンテンツを前記特定のノードの評判を主張する情報とともに転送するステップであって、前記評判が前記特定のノードの記録結果を含むステップと
    を含む方法。
  30. 前記特定のノードが、前記要求を受信し前記要求されたコンテンツを転送したことに応答して前記ノードの記録結果を改訂するステップをさらに含む、請求項29に記載の方法。
  31. 前記転送されたコンテンツを受信ノードで受信するステップと、
    前記受信ステップに応答して、前記受信ノードが前記特定のノードに関する評判のローカル・バージョンを格納するステップであって、前記ローカル・バージョンが、前記受信したコンテンツが前記受信ノードにとって満足できるものかどうかを反映するステップと
    をさらに含む、請求項29に記載の方法。
  32. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    各ノードが前記ネットワークに入ったとき、前記ノードがメッセージをブロードキャストし、それによって前記ノードの評判の前記ノードのバージョンを通知するステップであって、前記評判が、前記ノードが前記ネットワーク中の他のノードとの対話にどの程度成功したかに関する前記ノードのビューを含むステップ
    を含む方法。
  33. 前記評判が、前記ブロードキャスト・ノードから提供できるコンテンツをさらに含む、請求項32に記載の方法。
  34. 前記評判が、前記ブロードキャスト・ノードから提供できるサービスをさらに含む、請求項32に記載の方法。
  35. 前記ネットワーク中の他のノードが、前記ブロードキャスト・メッセージを受信するステップと、
    前記受信ノードが前記ブロードキャスト・メッセージから前記ブロードキャスト・ノードの評判に関する前記ブロードキャスト・ノードのバージョンを取り出すステップと、
    前記取り出した評判のローカル・コピーを格納するステップと
    をさらに含む、請求項32に記載の方法。
  36. 前記通知された評判が前記ブロードキャスト・ノードの評判に関する前記ブロードキャスト・ノードのバージョンへの参照であり、かつ
    ネットワーク中の他のノードが、前記ブロードキャスト・メッセージを受信するステップと、
    前記受信ノードが、前記ブロードキャスト・ノードから前記参照を取り出すステップと、
    前記参照のローカル・コピーを格納するステップと
    をさらに含む、請求項32に記載の方法。
  37. 前記ローカル・コピーが、前記ブロードキャスト・ノードの評判に関する前記受信ノードのビューを反映する、請求項35に記載の方法。
  38. 前記受信ノードが前記ブロードキャスト・ノードを信用できないものと見なした場合、前記ローカル・コピーで、前記ブロードキャスト・ノードの評判に関する前記ブロードキャストのビューが無視される、請求項37に記載の方法。
  39. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    特定のノードで、他のノードのコンテンツまたはサービスが必要であると判断するステップと、
    前記ネットワーク中の他のノードのうちのどれが前記必要なコンテンツまたはサービスを提供できるかを判断するステップと、
    前記必要なコンテンツまたはサービスを提供できる前記ノードに関する前記記録結果を評価して、それらの前記ノードのうちから選択するステップと
    を含む方法。
  40. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    前記記録結果が、特定のノードが信頼できないと見なされたときその旨を指示する前記方法。
  41. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    前記記録結果が時間の経過とともに再計算され、それによってその記録結果が、前記ノードが前記ネットワーク中の他のノードの信頼を得ているかどうかを反映するようになる前記方法。
  42. 前記ネットワーク中の他のノードとの対話を望む特定のノードが、前記他のノードの記録結果を考慮して前記他のノードを信頼するかどうかを判断する、請求項41に記載の方法。
  43. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    前記記録結果が時間の経過とともに再計算され、それによって、前記ノードが効率的にクエリーに応答すると前記ネットワーク中の他のノードに見なされているかどうかを反映するようになる前記方法。
  44. 前記ネットワーク中の他のノードとの対話を望む特定のノードが、複数の他のノードの前記記録結果を考慮して前記他のノードのうちのどれが最も効率的に前記対話を実施できるかを判断する、請求項43に記載の方法。
  45. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させる方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    各ノードがネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録するステップであって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になるステップと
    を含む方法であって、
    特定のノードの記録結果が生成された後にたとえ前記特定のノードの前記現在のネットワーク・アドレスが変更されたとしても、各ノードの前記永続的ノード識別子を使用して前記特定のノードの前記記録結果が見つけられる前記方法。
  46. 前記ブロードキャスト・ノードが、前記ブロードキャスト・メッセージを受信した他のノードからの応答を受信するステップであって、前記応答が前記他のノードの評判に関する前記他のノードのバージョンを含むステップと、
    前記ブロードキャスト・ノードが、前記応答の前記受信バージョンを使用して、前記他のノードの評判に関するローカル・ビューを決定するステップと
    をさらに含む、請求項32に記載の方法。
  47. 前記ブロードキャスト・ノードが、前記応答を返してきた前記他のノードのそれぞれに後続のメッセージを送信するステップであって、前記後続のメッセージが、ノードの識別を求める要求を伝搬するよう前記他のノードに要求し、それによって前記ブロードキャスト・ノードが他のサブネットにあるノードを知ること、および他のサブネットにあるそれらのノードと評判情報を交換することが可能になるステップをさらに含む、請求項46に記載の方法。
  48. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいてノードの評判を永続させるシステムであって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用する手段と、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとのマッピングを生成する手段と、
    各ノードが前記ネットワーク中の他のノードと対話するときに、前記ノードの挙動の結果を記録する手段であって、たとえ前記ノードの現在のネットワーク・アドレスが変化したとしても、前記マッピングを使用することによって前記挙動を前記ノードと関連づけることが可能になる手段と
    を含むシステムであって、
    各ノードの前記記録結果が、他のノードからのクエリーへの応答における前記ノードの効率を示す前記システム。
  49. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてコンテンツを追跡する方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    前記永続的ノード識別子を前記ネットワーク中のノードのコンテンツ・リソースに関連づけるステップと
    有向グラフを使用して、前記コンテンツ・リソースのネットワーク横断パスを表すステップと
    を含む方法。
  50. 前記各有向グラフのノードが、前記コンテンツ・リソースの1つが通過した、前記ネットワークのノードを表し、前記有向グラフのアークが、前記コンテンツが前記ネットワークのあるノードから他のノードに移動することを表す、請求項49に記載の方法。
  51. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてコンテンツを追跡する方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    前記永続的ノード識別子を前記ネットワーク中のノードのコンテンツ・リソースに関連づけるステップと
    各コンテンツ・リソースごとにメタデータを格納するステップであって、前記メタデータが前記コンテンツ・リソースの永続的識別子を含むステップ
    を含む方法。
  52. 前記メタデータが前記コンテンツ・リソースの生成に関連する情報をさらに含む、請求項51に記載の方法。
  53. 前記情報が、前記コンテンツ・リソースの作成者ならびに作成の日付および時間をさらに含む、請求項52に記載の方法。
  54. 前記メタデータが、前記コンテンツ・リソースの前記ネットワークへのエントリと前記ネットワークへの前記エントリの日付および時間とに関連する情報をさらに含む、請求項50に記載の方法。
  55. 前記メタデータが、前記コンテンツ・リソースの記述(description)をさらに含む、請求項51に記載の方法。
  56. 前記記述が、前記コンテンツ・リソースが所望のものかどうかを評価するユーザに提供される、請求項55に記載の方法。
  57. 前記コンテンツ・リソースの前記有向グラフを横断リポジトリ中に格納するステップをさらに含む、請求項50に記載の方法。
  58. 前記コンテンツ・リソースの1つが前記ネットワークのあるノードから他のノードに転送されるたびに、前記有向グラフにノードとアークを追加するステップをさらに含む、請求項50に記載の方法。
  59. 構造化マークアップ言語表記を使用して各コンテンツ・リソースの前記有向グラフを指定する、請求項50に記載の方法。
  60. 前記有向グラフが、そのグラフのアークのエンドポイントを使用して指定される、請求項57に記載の方法。
  61. Xlink表記を使用して、各アークのエンドポイントを指定する請求項60に記載の方法。
  62. 特定のコンテンツ・リソースの現在のロケーションと前記コンテンツ・リソースの永続的識別子をマッピングするコンテンツ・マッピングを格納するステップをさらに含む、請求項50に記載の方法。
  63. 前記コンテンツ・リソースの前記永続的識別子が前記コンテンツ・リソースに関連するメタデータとして格納され、さらに前記関連するメタデータ中の前記永続的識別子を使用して前記コンテンツ・リソースの前記現在のロケーションを決定するステップを含む、請求項62に記載の方法。
  64. コンテンツ・リソースを転送する各メッセージ中に、前記転送されるコンテンツ・リソースの前記有向グラフへの参照を含めるステップをさらに含む、請求項60に記載の方法。
  65. 選択されたコンテンツ・リソース、およびそのリソースの有向グラフへの前記参照を要求ノードで受信するステップと、
    前記含められた参照を使用して前記有向グラフを見つけるステップと、
    前記選択されたコンテンツ・リソースを転送した前記ノードおよび前記選択されたコンテンツ・リソースを受信した前記ノードを表すファイナル・アーク(final arc)が含まれるように前記見つけられた有向グラフを拡張するステップと
    をさらに含む、請求項64に記載の方法。
  66. 前記ファイナル・アークが前記選択されたコンテンツ・リソースの永続的識別子をさらに含み、さらに前記受信したコンテンツ・リソースをローカル・コンテンツ・リポジトリ内に格納するステップを含む、請求項65に記載の方法。
  67. 前記受信したコンテンツ・リソースをローカル・コンテンツ・リポジトリ内に格納するステップをさらに含む、請求項65に記載の方法。
  68. 前記ファイナル・アークが前記選択されたコンテンツ・リソースの永続的識別子をさらに含んでおり、さらに
    前記受信したコンテンツ・リソースをローカル・コンテンツ・リポジトリに格納するステップと、
    前記受信したコンテンツ・リソースのコンテンツ・マッピングを格納するステップであって、前記コンテンツ・マッピングが、前記ローカル・コンテンツ・リポジトリ内で前記受信したコンテンツ・リソースが格納されたロケーションと前記コンテンツ・リソースの永続的識別子とをマッピングするステップと
    を含む、請求項65に記載の方法。
  69. ネットワークを構成するノードの集合体が時間とともに変化し得る、一時的ネットワーク・コミュニティを有するネットワークにおいてコンテンツを追跡する方法であって、
    各ノードが前記ネットワークに複数回入るに際し、たとえ前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の前記ノードの永続的ノード識別子を使用するステップと、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスとの間のマッピングを生成するステップと、
    前記永続的ノード識別子を前記ネットワーク中のノードのコンテンツ・リソースに関連づけるステップと含む方法であって、
    前記ネットワークがピアツーピア・ネットワークである前記方法。
  70. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいてコンテンツを追跡する方法であって、
    各コンテンツ・リソースのネットワーク横断パスを表す有向グラフを格納するステップであって、前記有向グラフの各アークが、前記コンテンツ・リソースが前記ネットワークのあるノードから他のノードへと横断することを表すステップと、
    各コンテンツ・リソースを保持するノードから前記コンテンツ・リソースを受信するノードへの前記コンテンツ・リソースの後続の横断を反映するように各コンテンツ・リソースの前記有向グラフを拡張するステップであって、永続的識別子が各コンテンツ・リソースと関連づけられ、特定のコンテンツ・リソースの前記有向グラフの各アークが前記関連づけられた永続的識別子を指定するステップと
    を含む方法。
  71. 各ノードにローカルに格納された各コンテンツ・リソースの前記永続的識別子と前記ローカルに格納されたコンテンツ・リソースの現在のロケーションとの間のマッピングを前記ノードが格納するステップをさらに含む、請求項70に記載の方法。
  72. 選択されたコンテンツ・リソースをその永続的識別子によって識別するステップと、
    前記選択されたコンテンツ・リソースに関する前記格納されたマッピングを使用して、特定のノードにおける前記リソースの現在のロケーションを決定するステップと
    をさらに含む、請求項71に記載の方法。
  73. 選択されたコンテンツ・リソースをその永続的識別子によって識別するステップと、
    前記選択されたコンテンツ・リソースに関する前記格納されたマッピングを使用して、前記リソースのネットワーク横断パスを決定するステップと
    をさらに含む請求項71に記載の方法。
  74. 前記ネットワーク中の各ノードが永続的ノード識別子を有しており、前記永続的ノード識別子を使用して、前記有向グラフの各アークに関する、特定のコンテンツ・リソースを保持する前記ノードおよび前記特定のコンテンツ・リソースを転送する前記ノードが識別される、請求項70に記載の方法。
  75. 各ノードが、前記ネットワークに入ったときにメッセージをブロードキャストし、それによって前記ノードがどのようなコンテンツを保持しているかを通知するステップをさらに含む、請求項70に記載の方法。
  76. 前記ブロードキャスト・メッセージを受信したノードが、前記ブロードキャスト・ノードに特定のコンテンツ・リソースを要求するステップと、
    前記要求ノードで、前記要求したコンテンツ・リソースを前記コンテンツ・リソースの前記保持ノードの有向グラフへの参照とともに受信するステップと、
    前記受信したコンテンツ・リソースをローカル・コンテンツ・リポジトリ内に格納するステップと、
    前記受信したコンテンツ・リソースの前記有向グラフのローカル・コピーを格納するステップであって、前記ローカル・コピーが、前記保持ノードから前記受信ノードへの横断に関する拡張部分を含むステップと
    をさらに含む、請求項75に記載の方法。
  77. 前記コンテンツ・リソースが、前記ネットワークの各ノードの間で共用で使用可能なファイルを含む、請求項70に記載の方法。
  78. 前記コンテンツ・リソースが、前記ネットワークのノードから提供できるサービスの結果を含む、請求項70に記載の方法。
  79. ネットワークを構成するノードの集合体が時間とともに変化し得る一時的ネットワーク・コミュニティを有するネットワークにおいてコンテンツを追跡するシステムであって、
    前記ネットワークに複数回入るに際し、前記ノードに異なるネットワーク・アドレスが割り当てられたとしても、前記ネットワーク中の各ノードの永続的ノード識別子を使用する手段と、
    各ノードの前記永続的ノード識別子と前記ノードが使用する現在のネットワーク・アドレスの間のマッピングを生成する手段と、
    前記永続的ノード識別子を前記ネットワーク中のノードのコンテンツ・リソースに関連づける手段と
    各コンテンツ・リソースごとにメタデータを格納する手段であって、前記メタデータが前記コンテンツ・リソースの永続的識別子を含む手段と
    を含むシステム。
  80. 非集中ネットワークにおいてストレージ・リソースを管理する方法であって、
    前記ネットワークに入るに際し、各ノードに割り当てられる現在のネットワーク・アドレスがたとえエントリごとに変化したとしても、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づけるステップと、
    複数のストレージ・ノードの挙動を動的に評価するステップであって、前記ストレージ・ノードが要求に応じてストレージ・リソースを提供するノードであるステップと、
    前記ネットワークにおける各ノードの前記現在のネットワーク・アドレスを前記ノードに関する永続的ノード識別子に関連づけるマッピングを使用して前記各ストレージ・ノードの識別を解決することによって、前記ストレージ・ノードの前記動的に評価される挙動の継続した知識を維持するステップと、
    前記維持された知識を使用して、前記ストレージ・ノードの前記ストレージ・リソースを管理するステップとを含む方法であって、
    前記各ストレージ・ノードの前記動的に評価される挙動が、前記ストレージ・ノードがどの程度効率的にストレージ要求を処理するかを含む前記方法。
    を含む方法。
  81. 非集中ネットワークにおいてストレージ・リソースを管理する方法であって、
    前記ネットワークに入るに際し、各ノードに割り当てられる現在のネットワーク・アドレスがたとえエントリごとに変化したとしても、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づけるステップと、
    複数のストレージ・ノードの挙動を動的に評価するステップであって、前記ストレージ・ノードが要求に応じてストレージ・リソースを提供するノードであるステップと、
    前記ネットワークにおける各ノードの前記現在のネットワーク・アドレスを前記ノードに関する永続的ノード識別子に関連づけるマッピングを使用して前記各ストレージ・ノードの識別を解決することによって、前記ストレージ・ノードの前記動的に評価される挙動の継続した知識を維持するステップと、
    前記維持された知識を使用して、前記ストレージ・ノードの前記ストレージ・リソースを管理するステップとを含む方法であって、
    前記各ストレージ・ノードの前記動的に評価される挙動が、前記ストレージ・ノードがどれぐらい良くトレージ要求に応答するかを含む前記方法。
  82. 非集中ネットワークにおいてストレージ・リソースを管理する方法であって、
    前記ネットワークに入るに際し、各ノードに割り当てられる現在のネットワーク・アドレスがたとえエントリごとに変化したとしても、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づけるステップと、
    複数のストレージ・ノードの挙動を動的に評価するステップであって、前記ストレージ・ノードが要求に応じてストレージ・リソースを提供するノードであるステップと、
    前記ネットワークにおける各ノードの前記現在のネットワーク・アドレスを前記ノードに関する永続的ノード識別子に関連づけるマッピングを使用して前記各ストレージ・ノードの識別を解決することによって、前記ストレージ・ノードの前記動的に評価される挙動の継続した知識を維持するステップと、
    前記維持された知識を使用して、前記ストレージ・ノードの前記ストレージ・リソースを管理するステップとを含む方法であって、
    前記ストレージ・ノードがどれぐらい良くストレージ要求に応答するかが、前記ノードのストレージ・リソースの現在使用可能なストレージ容量を表す前記方法。
  83. 非集中ネットワークにおいてストレージ・リソースを管理する方法であって、
    前記ネットワークに入るに際し、各ノードに割り当てられる現在のネットワーク・アドレスがたとえエントリごとに変化したとしても、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づけるステップと、
    複数のストレージ・ノードの挙動を動的に評価するステップであって、前記ストレージ・ノードが要求に応じてストレージ・リソースを提供するノードであるステップと、
    前記ネットワークにおける各ノードの前記現在のネットワーク・アドレスを前記ノードに関する永続的ノード識別子に関連づけるマッピングを使用して前記各ストレージ・ノードの識別を解決することによって、前記ストレージ・ノードの前記動的に評価される挙動の継続した知識を維持するステップと、
    前記維持された知識を使用して、前記ストレージ・ノードの前記ストレージ・リソースを管理するステップとを含む方法であって、
    前記各ストレージ・ノードの前記動的に評価される挙動が、前記ストレージ・ノードが以前のストレージ要求に満足に応答したかどうかを示す成功指標を含む前記方法。
  84. 非集中ネットワークにおいてストレージ・リソースを管理する方法であって、
    前記ネットワークに入るに際し、各ノードに割り当てられる現在のネットワーク・アドレスがたとえエントリごとに変化したとしても、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づけるステップと、
    複数のストレージ・ノードの挙動を動的に評価するステップであって、前記ストレージ・ノードが要求に応じてストレージ・リソースを提供するノードであるステップと、
    前記ネットワークにおける各ノードの前記現在のネットワーク・アドレスを前記ノードに関する永続的ノード識別子に関連づけるマッピングを使用して前記各ストレージ・ノードの識別を解決することによって、前記ストレージ・ノードの前記動的に評価される挙動の継続した知識を維持するステップと、
    前記維持された知識を使用して、前記ストレージ・ノードの前記ストレージ・リソースを管理するステップとを含む方法であって、
    前記各ストレージ・ノードの前記動的に評価される挙動が、前記ストレージ・ノードから現在提供できるコンテンツの明細を含む前記方法。
  85. 非集中ネットワークにおいてストレージ・リソースを管理する方法であって、
    前記ネットワークに入るに際し、各ノードに割り当てられる現在のネットワーク・アドレスがたとえエントリごとに変化したとしても、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づけるステップと、
    複数のストレージ・ノードの挙動を動的に評価するステップであって、前記ストレージ・ノードが要求に応じてストレージ・リソースを提供するノードであるステップと、
    前記ネットワークにおける各ノードの前記現在のネットワーク・アドレスを前記ノードに関する永続的ノード識別子に関連づけるマッピングを使用して前記各ストレージ・ノードの識別を解決することによって、前記ストレージ・ノードの前記動的に評価される挙動の継続した知識を維持するステップと、
    前記維持された知識を使用して、前記ストレージ・ノードの前記ストレージ・リソースを管理するステップと、
    前記ネットワーク中のノードの1つが、ストレージ・リソースが必要であると判断するステップと、
    前記ストレージ・ノードの前記挙動に関する前記継続した知識を使用して、前記必要なストレージ・リソースを現在提供できる前記ストレージ・ノードの1つを選択するステップと
    を含む方法。
  86. ストレージを必要とするノードが、コンテンツをストレージ・リソースに格納する必要があると判断するステップと、
    前記ストレージ・ノードの前記挙動に関する前記継続した知識を使用して、前記ストレージを必要とするノードの前記コンテンツを格納するために現在使用可能な十分なストレージ容量をストレージ・リソースが有する前記ストレージ・ノードのうちの1つを選択するステップと
    をさらに含む、請求項82に記載の方法。
  87. 前記ストレージを必要とするノードが、前記選択されたストレージ・ノードに前記コンテンツの格納を求める要求を発行するステップをさらに含む、請求項86に記載の方法。
  88. 前記ネットワーク中の前記ノードの1つが、ストレージ・リソースが必要であると判断するステップと、
    前記ストレージ・ノードの前記挙動に関する前記継続した知識を使用して、前記必要とされるストレージ・リソースを効率的に提供できる前記ストレージ・ノードのうちの1つを選択するステップと
    をさらに含む、請求項80に記載の方法。
  89. 前記ネットワーク中の前記ノードの1つが、ストレージ・リソースが必要であると判断するステップと、
    前記ストレージ・ノードの前記挙動に関する前記継続した知識を使用して、以前のストレージ要求に満足に応答したことを表す比較的高い成功指標を有する前記ストレージ・ノードのうちの1つを選択するステップと
    をさらに含む、請求項83に記載の方法。
  90. コンテンツを必要とするノードが、ストレージ・リソースからコンテンツを取り出す必要があると判断するステップと、
    前記ストレージ・ノードの前記挙動に関する前記継続した知識を使用して、前記コンテンツを必要とするノードが取り出す必要がある前記コンテンツを現在使用可能なコンテンツの明細が含むストレージ・ノードのうちの1つを選択するステップと
    を含む、請求項84に記載の方法。
  91. アド・ホック・ネットワークにおいてストレージ・リソースを管理するシステムであって、
    前記ネットワークに入るに際し、各ノードに割り当てられる現在のネットワーク・アドレスがたとえエントリごとに変化したとしても、永続的ノード識別子を前記ネットワーク中の各ノードに関連づける手段と、
    ネットワーク中の各ノードの前記現在のネットワーク・アドレスを前記ノードの永続的ノード識別子に関連づけるマッピングを使用して前記各ストレージ・ノードの識別を解決することによって、複数のストレージ・ノードの動的に評価される挙動の継続した知識を維持する手段であって、前記ストレージ・ノードが必要に応じてストレージ・リソースを提供するノードである手段と、
    前記維持された知識を使用して、前記ストレージ・ノードの前記ストレージ・リソースを管理する手段とを含むシステムであって、
    前記各ストレージ・ノードの前記動的に評価される挙動が、前記ストレージ・ノードがどの程度効率的にストレージ要求を処理するかを含む前記システム
  92. 非集中ネットワークにおいて管理機能を提供する方法であって、
    前記ネットワークに入るに際し、たとえ各ノードに割り当てられる現在のネットワーク・アドレスがエントリごとに変化したとしても前記ノードの識別が解決できるように、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づけるステップと、
    特定のノードが管理機能を実施できると主張するステップと、
    前記特定のノードの前記永続的識別子を使用して、前記特定のノードが前記管理機能を実施してもよいかどうかを検証するステップと
    を含む方法。
  93. 前記各ノードに評判を関連づけるステップであって、各ノードの前記評判が前記ノードの永続的ノード識別子を使用して見つけられるステップをさらに含み、前記永続的ノード識別子を使用するステップが、
    前記特定のノードの前記評判を前記ノードの永続的ノード識別子を使用して見つけるステップと、
    前記特定のノードが適切な評判を有する場合には、前記特定のノードが管理機能を実施してもよいと結論づけるステップと
    をさらに含む、請求項92に記載の方法。
  94. 前記評判の前記適切性が、前記特定のノードのある期間にわたる挙動に基づいて判断される、請求項93に記載の方法。
  95. 前記評判の前記適切性が、前記評判に格納された値が前記ネットワーク中の他のノードに比べて相対的に高いことに基づいて判断される、請求項93に記載の方法。
  96. 前記値が外部的に決定された値で初期化され、次いで、その値が前記特定のノードと前記ネットワーク中の他のノードとの対話に基づいて動的に改訂される、請求項95に記載の方法。
  97. 前記管理機能が、前記主張を受信した前記ノードに、トラフィックを前記特定のノードに複写するよう求める、請求項92に記載の方法。
  98. 前記受信ノードが、前記特定のノードが前記管理機能を実施してもよいと結論づけた場合には、前記受信ノードのトラフィックを複写するステップをさらに含む、請求項97に記載の方法。
  99. 前記管理機能が、前記主張を受信した前記ノードに、前記ノードのトラフィックの1つまたは複数のカテゴリを前記特定のノードに複写するよう求める、請求項92に記載の方法。
  100. 前記管理機能が、前記主張を受信した前記ノードに、ノードの評判を含むあらゆるトラフィック、あるいはノード間のコンテンツを送信するあらゆるトラフィックを前記特定のノードに複写するよう求める、請求項92に記載の方法。
  101. 前記管理機能が、前記主張を受信した前記ノードに、前記受信ノードに関する情報を前記特定のノードに返すよう求める請求項92に記載の方法。
  102. 前記受信ノードが、前記特定のノードが前記管理機能を実施してもよいと結論づけた場合にのみ、前記要求された情報を返す、請求項101に記載の方法。
  103. 前記要求された情報が前記受信ノードに格納された評判である、請求項101に記載の方法。
  104. 前記要求された情報が前記受信ノードに格納されたコンテンツである、請求項101に記載の方法。
  105. 前記要求された情報が前記受信ノードに格納されたコンテンツの横断パスである、請求項101に記載の方法。
  106. 前記特定のノードが前記管理機能を実施してもよいと前記受信ノードが結論づけ、かつ前記受信ノードが発行したチャレンジに前記特定のノードが正常に応答した場合にのみ、前記受信ノードが前記要求された情報を返送する、請求項101に記載の方法。
  107. 前記特定のノードが前記管理機能を実施してもよいと前記受信ノードが結論づけ、かつ前記要求のデジタル署名で前記特定のノードが前記要求を送信したことが検証された場合にのみ、前記受信ノードが前記要求された情報を返送する、請求項101に記載の方法。
  108. 前記管理機能が、前記主張を受信した前記ノードに、前記受信ノードに格納された情報を変更するよう求める、請求項92に記載の方法。
  109. 前記特定のノードが前記管理機能を実施してもよいと前記受信ノードが結論づけた場合にのみ、前記受信ノードが前記要求された変更を実施する、請求項108に記載の方法。
  110. 前記要求された変更が、前記受信ノードに格納された評判情報を上書きすることである、請求項108に記載の方法。
  111. 前記要求された変更が、前記受信ノードに格納されたコンテンツを上書きすることである、請求項108に記載の方法。
  112. 前記要求された変更が、前記受信ノードに格納されたコンテンツ横断パスを上書きすることである、請求項108に記載の方法。
  113. 非集中ネットワークにおいて管理機能を提供するシステムであって、
    前記ネットワークに入るに際し、たとえ各ノードに割り当てられる現在のネットワーク・アドレスがエントリごとに変化したとしても前記ノードの識別が解決できるように、永続的ノード識別子を前記ネットワーク中の前記ノードに関連づける手段と、
    評判を前記各ノードに関連づける手段であって、前記ノードの永続的ノード識別子を使用して各ノードの前記評判を見つける手段と、
    特定のノードが、管理機能を実施できると主張する手段と、
    前記特定のノード永続的ノード識別子を使用して前記ノードの前記評判を見つける手段と、
    前記特定のノードが適切な評判を有する場合には、前記特定のノードが管理機能を実施してもよいと結論づける手段と
    を含むシステム。
  114. 請求項1乃至17、19乃至47、49乃至78、80乃至89、または、91乃至112のいずれか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
JP2003581458A 2002-03-27 2003-02-14 一時的ネットワーク Expired - Fee Related JP3899076B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/109,373 US7181536B2 (en) 2002-03-27 2002-03-27 Interminable peer relationships in transient communities
US10/108,088 US7177929B2 (en) 2002-03-27 2002-03-27 Persisting node reputations in transient network communities
US10/107,960 US7251689B2 (en) 2002-03-27 2002-03-27 Managing storage resources in decentralized networks
US10/107,696 US7069318B2 (en) 2002-03-27 2002-03-27 Content tracking in transient network communities
US10/107,842 US7039701B2 (en) 2002-03-27 2002-03-27 Providing management functions in decentralized networks
PCT/GB2003/000647 WO2003084186A1 (en) 2002-03-27 2003-02-14 Dynamic addressing in transient networks

Publications (2)

Publication Number Publication Date
JP2005522103A JP2005522103A (ja) 2005-07-21
JP3899076B2 true JP3899076B2 (ja) 2007-03-28

Family

ID=28679145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003581458A Expired - Fee Related JP3899076B2 (ja) 2002-03-27 2003-02-14 一時的ネットワーク

Country Status (8)

Country Link
EP (1) EP1491026B1 (ja)
JP (1) JP3899076B2 (ja)
KR (1) KR100656222B1 (ja)
CN (1) CN100539602C (ja)
AT (1) ATE524914T1 (ja)
AU (1) AU2003258902A1 (ja)
TW (1) TWI243569B (ja)
WO (1) WO2003084186A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716290B2 (en) * 2003-11-20 2010-05-11 Microsoft Corporation Send by reference in a customizable, tag-based protocol
KR100601667B1 (ko) 2004-03-02 2006-07-14 삼성전자주식회사 디지털 권한 관리의 상태 보고 장치 및 방법
KR100486984B1 (ko) * 2004-12-20 2005-05-03 (주)엔알시스템스 개인간의 전자상거래 중개방법 및 그 시스템
KR100620622B1 (ko) * 2005-02-04 2006-09-13 (주)엔알시스템스 개인 웹사이트를 이용한 개인간 전자상거래 중개방법 및시스템
JP2008532378A (ja) * 2005-02-24 2008-08-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 放送システムでrssコンテンツを提供するシステム及び方法
US7958120B2 (en) * 2005-05-10 2011-06-07 Netseer, Inc. Method and apparatus for distributed community finding
US20060274753A1 (en) * 2005-06-07 2006-12-07 Samsung Electronics Co., Ltd. Method and system for maintaining persistent unique identifiers for devices in a network
EP1802070B1 (en) * 2005-12-21 2008-06-18 NTT DoCoMo, Inc. Method and apparatus for mobility churn handling for peer-to-peer lookup systems
KR100692918B1 (ko) * 2006-03-07 2007-03-12 한국표준과학연구원 유비쿼터스 센서 네트워크 시스템의 운용방법
KR101718971B1 (ko) * 2006-10-06 2017-03-23 로비 가이드스, 인크. 인터랙티브 미디어 안내 어플리케이션들에서 미디어를 획득, 카테고리화 및 전달하기 위한 시스템 및 방법
US8484663B2 (en) 2007-04-27 2013-07-09 Microsoft Corporation Method of deriving web service interfaces from form and table metadata
US20080288654A1 (en) * 2007-05-17 2008-11-20 Nokia Corporation Node and method to provide and keep real-time up-to-date data in a distributed hash table
CN108377257B (zh) * 2017-01-30 2020-12-25 慧与发展有限责任合伙企业 基于服务水平协议创建存储区域网络区的方法、系统和存储介质
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
CN110430064B (zh) * 2017-03-30 2020-12-04 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
CN111095212B (zh) * 2017-07-20 2024-02-20 思科技术公司 管理功能执行环境的分布式网络
CN113259499B (zh) * 2021-03-31 2022-10-28 航天东方红卫星有限公司 一种面向跨域网络的编址方法
US11729588B1 (en) 2021-09-30 2023-08-15 T-Mobile Usa, Inc. Stateless charging and message handling
CN118138570B (zh) * 2024-05-07 2024-08-13 榆林金马巴巴网络科技有限公司 一种can总线下的皮带机系统结构重构自动化方法及系统

Also Published As

Publication number Publication date
CN100539602C (zh) 2009-09-09
AU2003258902A1 (en) 2003-10-13
TW200307440A (en) 2003-12-01
EP1491026B1 (en) 2011-09-14
EP1491026A1 (en) 2004-12-29
JP2005522103A (ja) 2005-07-21
CN1643880A (zh) 2005-07-20
TWI243569B (en) 2005-11-11
KR100656222B1 (ko) 2006-12-12
KR20040091675A (ko) 2004-10-28
ATE524914T1 (de) 2011-09-15
WO2003084186A1 (en) 2003-10-09

Similar Documents

Publication Publication Date Title
US7143139B2 (en) Broadcast tiers in decentralized networks
US7177929B2 (en) Persisting node reputations in transient network communities
US7251689B2 (en) Managing storage resources in decentralized networks
US7039701B2 (en) Providing management functions in decentralized networks
US7069318B2 (en) Content tracking in transient network communities
US7181536B2 (en) Interminable peer relationships in transient communities
JP3899076B2 (ja) 一時的ネットワーク
US8108455B2 (en) Mobile agents in peer-to-peer networks
US7254608B2 (en) Managing distribution of content using mobile agents in peer-topeer networks
US7213047B2 (en) Peer trust evaluation using mobile agents in peer-to-peer networks
US7328243B2 (en) Collaborative content coherence using mobile agents in peer-to-peer networks
US8037202B2 (en) Presence detection using mobile agents in peer-to-peer networks
RU2409846C2 (ru) Организация ресурсов в коллекции, способствующая более эффективному и надежному доступу к ресурсам
US8204992B2 (en) Presence detection using distributed indexes in peer-to-peer networks
US7263560B2 (en) Decentralized peer-to-peer advertisement
US7783777B1 (en) Peer-to-peer content sharing/distribution networks
US7657597B2 (en) Instant messaging using distributed indexes
US20040064693A1 (en) Distributed indexing of identity information in a peer-to-peer network

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060411

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060622

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061222

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100105

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110105

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120105

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130105

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140105

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees