Plaque It!
Sponsored by: Flash of Genius |
[0001] 1. Field of the Invention
[0002] This invention relates to peer-to-peer networking, and more particularly to distributed indexes in peer-to-peer networks.
[0003] 2. Description of the Related Art
[0004] The Internet has three valuable fundamental assets—information, bandwidth, and computing resources—all of which are vastly underutilized, partly due to the traditional client-server computing model. No single search engine or portal can locate and catalog the ever-increasing amount of information on the Web in a timely way. Moreover, a huge amount of information is transient and not subject to capture by techniques such as Web crawling. For example, research has estimated that the world produces two exabytes or about 2×10
[0005] Although miles of new fiber have been installed, the new bandwidth gets little use if everyone goes to one site for content and to another site for auctions. Instead, hot spots just get hotter while cold pipes remain cold. This is partly why most people still feel the congestion over the Internet while a single fiber's bandwidth has increased by a factor of 10{circumflex over ( )}6 since 1975, doubling every 16 months.
[0006] New processors and storage devices continue to break records in speed and capacity, supporting more powerful end devices throughout the network. However, computation continues to accumulate around data centers, which have to increase their workloads at a crippling pace, thus putting immense pressure on space and power consumption.
[0007] Finally, computer users in general are accustomed to computer systems that are deterministic and synchronous in nature, and think of such a structure as the norm. For example, when a browser issues a URL (Uniform Resource Locator) request for a Web page, the output is typically expected to appear shortly afterwards. It is also typically expected that everyone around the world will be able to retrieve the same page from the same Web server using the same URL.
[0008] The term peer-to-peer networking or computing (often referred to as P2P) may be applied to a wide range of technologies that greatly increase the utilization of information, bandwidth, and computing resources in the Internet. Frequently, these P2P technologies adopt a network-based computing style that neither excludes nor inherently depends on centralized control points. Apart from improving the performance of information discovery, content delivery, and information processing, such a style also can enhance the overall reliability and fault-tolerance of computing systems.
[0009]
[0010] An inverted index is an index into a set of documents using one or more of the terms or other content in the documents. An inverted index may be accessed by some search method. Each index entry gives a term and a list of texts, possibly with locations within the text, where the term occurs. A full inverted index is an inverted index that includes the exact location within documents, in addition to the document(s) in which the word appears.
[0011] XPath is a language that describes a way to locate and process items in Extensible Markup Language (XML) documents by using an addressing syntax based on a path through the document's logical structure or hierarchy. This makes writing programming expressions easier than if each expression had to understand typical XML markup and its sequence in a document. XPath also allows the programmer to deal with the document at a higher level of abstraction. The key difference between XPath and earlier languages is that XPath specifies a route, rather than pointing to a specific set or sequence of characters, words, or other elements.
[0012] A content-addressable network is a peer-to-peer network of nodes that implement a distributed hash table. Each node in the context-addressable network stores a piece (a zone) of the hash table, and routing information for one or more other nodes in the content-addressable network. Given a key, the key may be mapped to a node in the context-addressable network.
[0013] Typically, presence information is stored centrally on a single server or a cluster of servers. Prior art architectures for presence typically have the problems commonly associated with centralized architectures—lack of scalability and lack of reliability. Therefore, a mechanism for distributing presence information among a plurality of nodes in a network is desired.
[0014] Embodiments of a distributed index mechanism for indexing and searching for presence information in peer-to-peer networks are described. In one embodiment, a distributed index may be used to store presence information in a decentralized manner on a plurality of peer nodes. Presence information may be used in an Internet messaging system, for example. In one embodiment, a notification service may be implemented using the distributed index to notify peers of other peers joining a peer-to-peer session. In one embodiment, the distributed index may be a distributed hash table. Other embodiments may use other distributed indexing schemes. One embodiment of a distributed index of presence information may be implemented in peer-to-peer networks implemented according to a peer-to-peer platform including one or more peer-to-peer platform protocols for enabling peer nodes to discover each other, communicate with each other, and cooperate with each other to form peer groups and share network resources.
[0015] In one embodiment, participating peers may search or query the distributed index of presence information to discover the presence of other participating peers. For example, a first peer may send a query message including an identifier for a second peer. The identifier may be hashed and used to determine if the second peer is registered in the distributed index of presence information. If the second peer is registered, information including contact information for the second peer may be returned to the first peer. This mechanism may be used, for example, b a peer joining the distributed index as a participant to discover other participating peers which the joining peer may desire to communicate with.
[0016] One embodiment may provide a message to register for join notifications. Peer nodes may use the message to register to be notified when certain other peers join or insert themselves into the distributed index. When a peer joins a session, peers already present in the session who have registered to be notified if the peer joins the session may be notified of the peer joining the session. This embodiment may be used, for example, as a presence system for buddy list-type notifications in chat applications.
[0017] As an example, a first peer may join a chat session. Information corresponding to the first peer may be stored in the distributed index. The first peer may register to be notified if and when other specified peers join the chat session. The second peer's presence information is registered in the distributed index. Because the first peer has registered to be notified if the second peer joins, the first peer is notified of the second peer's presence in the chat session.
[0018] If a peer desires to be informed of the presence of another peer, the peer registers a query for the other peer (e.g. “look for peer X”) in the distributed index. Whenever the other peer joins, the peer that registered the query for the other peer may be notified by the notification service that the other peer has joined. In one embodiment, the notification service may provide information on how to contact the other peer to the peer that registered the query.
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063] While the invention is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the invention is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.
[0064] Embodiments of a distributed index mechanism for indexing and searching for content in peer-to-peer networks are described. In one embodiment, peers with sufficient storage and networking capacity may be able to participate in a distributed index. In one embodiment, content may include XML documents, and search queries may be formulated as XPath queries. In one embodiment, content may include text documents, and search queries may include one or more terms from the corresponding documents. In one embodiment, the distributed index may be a distributed hash table, with participating peers each responsible for a range (zone) of values of hashes that may be generated by a hash function. Other embodiments may use other distributed indexing schemes. For example, each participating peer may be responsible for a range (zone) of a given alphabet.
[0065] Embodiments of the distributed index mechanism may be used to implement content management services, presence services and notification services, among other applications and services. In one embodiment, a distributed index mechanism may be used to implement a notification service that indexes queries and routes content to query generators when an item of content that matches the query is published. Some embodiments may be implemented in peer-to-peer networks implemented according to a peer-to-peer platform such as the exemplary peer-to-peer platform described below.
[0066] In one embodiment, a distributed inverted index may be used to map each query item (e.g. keyword or XML path) to a list of postings. The posting definition may depend on the application of the distributed index. Posting objects may include information about corresponding document containing query items associated with the posting objects. In one embodiment, posting objects may include relevance information for query items in corresponding documents. For example, a posting may include one or more of, but is not limited to, a document identifier, document expiration information, location identifiers of the query item in the document, and frequency information of the query item inside the document. In one embodiment, a distributed index may be used to map query items to postings. In one embodiment, a content-addressable network may be used as an underlying distributed index infrastructure. In a content-addressable network, each keyword is transformed using a hash function into one (or possibly a multi-dimensional) number. Each peer in the distributed index is assigned a responsibility for indexing a range (zone) of numbers. In addition, a connection topology and a routing mechanism (e.g. a module such as an application or service) may be used for reaching any zone from any other zone.
[0067] Using the distributed index and connection topology and routing algorithm(s), there is no central identity or server. A first peer may initially handle all the space in the distributed index. When another peer joins the distributed index, the distributed index may be split between the two peers to create two spaces or zones of the distributed index. If another peer joins one of the peers, the zone on the peer may be split with the joining peer. Peers may continue to join and be allotted zones in the distributed index. The distributed index may be one or more dimensions, and may be thought of as an n-dimensional space. The topology generated by the various peers joining the distributed index determines how content are added and how queries are routed.
[0068] Queries and content may be routed through one or more intermediate nodes. Participating peers may include routing information and a routing service to route messages, including add content and query messages, to one or more other peers (i.e. other zones) in the distributed index.
[0069] When content is stored in the distributed index, e.g. a name or document, a hashing algorithm (e.g. MD5 or SHA-1) may be used to generate a hashing key from the content or one or more attributes or portions of the content (e.g. one or more terms from a text document, a document name, a peer identifier, etc.). Whatever content is to be stored is routed to and stored at the location (zone) indicated by the key value. There may be a range of zones (e.g. 0-10000) that may be split among two or more peers. Queries are hashed and routed to zones indicated by the key value generated by the hash to access the corresponding content.
[0070] If a peer receives a query with multiple terms, the terms may be split and routed to multiple peers (zones); results of the multiple term queries are returned to the peer that initially received, split and routed the query, which returns the results (content, or alternatively information on how to access the content) to the querying peer.
[0071]
[0072]
[0073] Returning to
[0074] As an example of routing queries, peer
[0075] Note that in one embodiment, a peer
[0076] In one embodiment, actual content (e.g. documents) may not be stored on the peers participating in the distributed index. Instead, one or more mechanisms for accessing the content may be stored. For example, information for accessing the content such as a URL or other location indicator may be stored in the distributed index. In response to a query, the information for accessing the content may be returned to the querying peer, which may then access the content using the provided information for accessing the content.
[0077] In one embodiment, to index resources addressable by a single attribute such as a file name or an identifier, an implementation of a distributed index based on a content-addressable network may be used. A keyword is transformed into a number using a global hash function. The keyword-value may then be routed to the peer responsible for the zone indicated by the number generated from the keyword. For example, the keyword may be a string such as a person's name or a file name, and the value may be the peer address of the peer responsible for the zone.
[0078] Documents may be formed of many attributes. For example, an XML document may be represented in general by a set of XML paths. A text document may be represented by a set of terms together with some measure of term strengths. Similarly, a query may be a logical expression of terms or XML paths. In one embodiment, to build a distributed index for documents, each piece of content (e.g. a document) may have a unique content identifier. The content identifier may be mapped to a peer assigned to a zone using a global hash function to map the content to the zone. This peer is responsible for parsing the document into its basic components and indexing the components (keywords or XML paths). In addition, the peer may map each basic component into a number using the global hash function, and send the component-posting pair to the peer responsible for the component zone. The posting may include a reference to the content identifier.
[0079] In one embodiment, a document or other content may be retrieved by sending a query to any peer participating in the distributed index. The peer receiving the query parses the query into its basic components and maps the components to the peers responsible for indexing those components. The peers that index the basic components retrieve the content identifier from the postings and send the complete query to the peer responsible for indexing the content identifier. The peer responsible for indexing the content identifier matches the full query with the full content.
[0080] Embodiments of the distributed index mechanism may provide functions including, but not limited to, functions for joining and leaving the network, inserting content in the distributed index, and querying the distributed index. One embodiment may provide one or more mechanisms for indexing and retrieving complex content, such as markup text, free text, XML documents, etc. In one embodiment, the distributed index mechanism may be used for more complex applications such as personalized content delivery (personalized news). In this embodiment, keywords and subjects of interest may be registered in a distributed index, and when a content including the registered metadata appears on the network, all nodes that have registered for that content may be notified.
[0081] In one embodiment, the insert content function may allow edge peers and “freeloaders” (peers not participating in the distributed index) to benefit from the distributed index without having to join the distributed index (i.e. without having to participate in the routing or having to maintain an index).
[0082] In one embodiment, each item of content may have an associated expiration time, at or after which the content will expire if not renewed. This approach may be tolerant to unreliable peers, and may simplify content propagation. In one embodiment, content may be renewed by republishing the content before it expires. Republishing content before expiration may help to ensure that new content is published at the right peer (i.e. in the correct zone and location of the distributed index). For example, the distributed index may become slightly inconsistent due to participating peers joining and/or leaving the distributed index. In another embodiment, to renew an item of content, a peer in the peer-to-peer network may send a renew content request message to a peer participating in the distributed index, and the message may be routed to the peer(s) indexing the content, which may then reset the expiration time.
[0083] Peer-to-Peer Distributed Index of Identity Information
[0084] In one embodiment, a distributed index may be used to store identity information in a decentralized manner on a plurality of peer nodes. Identity information may be used by websites that authenticate users, for example. Distributed indexes may allow identity information to be spread across multiple peer nodes so that the load is spread among the various peer nodes. In one embodiment, the spreading of identity information may be done redundantly so that peer node failures preferably do not affect the system adversely. Peer nodes may be added to the pool as the load grows to provide scalability. In one embodiment, the distributed index of identity information may be a distributed hash table. Other embodiments may use other distributed indexing schemes. One embodiment of a distributed index of identity information may be implemented in peer-to-peer networks implemented according to a peer-to-peer platform such as the exemplary peer-to-peer platform described below.
[0085] As an example, in a peer-to-peer network, a first peer may use an identity A, and a second peer may use an identity B. Each peer identity may have associated information such as a user name, peer identifier and/or name, a password, certificate, and other authentication information and usage information. Identity information such as user names, peer identifiers and/or names, passwords, certificates and associated information may be stored in a distributed index. When a peer is joining the network, the peer may request to use identity A. The mechanism may use the identity A to locate corresponding information in the distributed index. Identity A may be hashed to generate. a key to route the request to the corresponding zone as described above. If a peer is already using identity A, the peer may be asked for a password, or alternatively may be requested to submit a different identity. In one embodiment, if a peer attempts to join the peer-to-peer network using a particular identity, the mechanism may ask for authentication and/or other information to authenticate the peer.
[0086] In one embodiment, a distributed index of identity information may be implemented in a peer-to-peer network implemented according to a peer-to-peer platform such as the exemplary peer-to-peer platform described below and used by peer groups in authenticating peer nodes desiring to join the peer groups. In this embodiment, one or more members of a peer group may provide a peer group membership service using a distributed index of identity information. Peers desiring to join a peer group in the peer-to-peer network may submit identity information (e.g. one or more of a user name, peer name, password, certificate, etc.) to a member peer in the peer group. The peer group may be the peer group implementing the peer group membership service or, in one embodiment, a different peer group using the membership service provided by the peer group. The member peer of the peer group may then provide the identity information to the authentication service, which may hash the identity information to find corresponding identity information (e.g. a peer or user name and associated correct password) and use the corresponding information to determine if the peer may join the peer group, to request the peer to submit more information, and/or to perform other peer group membership tasks.
[0087]
[0088] As indicated at
[0089] As indicated at
[0090] As indicated at
[0091] While the distributed index of identity information is described above for identity information corresponding to peer nodes in a peer-to-peer networking environment, it is noted that identity information for other nodes in other networking environments may be stored in a distributed index of identity information on a plurality of peer nodes.
[0092] Peer-to-Peer Distributed Index of Presence Information
[0093] In one embodiment, a distributed index may be used to store presence information in a decentralized manner on a plurality of peer nodes. Presence information may be used in an Internet messaging system, for example. Distributed indexes allow presence information to be spread across multiple peer nodes so that the load is spread among the various peer nodes. In one embodiment, this spreading may be done redundantly so that a few peer node failures preferably do not affect the system adversely. In one embodiment, a notification service may be implemented using the distributed index to notify peers of other peers joining a peer-to-peer session. In one embodiment, the distributed index of presence information may be a distributed hash table. Other embodiments may use other distributed indexing schemes. One embodiment of a distributed index of presence information may be implemented in peer-to-peer networks implemented according to a peer-to-peer platform such as the exemplary peer-to-peer platform described below.
[0094] One embodiment may provide a message to register for join notifications. Peer nodes may use the message to register to be notified when certain other peers join or insert themselves into the distributed index. When a peer joins a session, peers already present in the session who have registered to be notified if the peer joins the session may be notified of the peer joining the session. This embodiment may be used, for example, as a presence system for buddy list-type notifications in chat applications.
[0095] As an example, a first peer may join a chat session. Information corresponding to the first peer may be stored in the distributed index. The first peer may register to be notified if and when other specified peers join the chat session. When a specified second peer joins the chat session, the second peer's presence information is registered in the distributed index. Because the first peer has registered to be notified if the second peer joins, the first peer is notified of the second peer's presence in the chat session.
[0096] If a peer desires to be informed of the presence of another peer, the peer registers a query for the other peer (e.g. “look for peer X”) in the distributed index. Whenever the other peer joins, the peer that registered the query for the other peer may be notified by the notification service that the other peer has joined. In one embodiment, the notification service may provide information on how to contact the other peer to the peer that registered the query.
[0097] In one embodiment, peer presence information may be an advertisement stored in the distributed has table similar to the advertisements described for the exemplary peer-to-peer platform described below. Peer presence information may be stored as markup language (e.g. XML) documents, text documents, binary documents, or in any other computer data format or combination of formats.
[0098] In one embodiment, participating peers may search or query the distributed index of presence information to discover the presence of other participating peers. In one embodiment, a first peer may send a query message including an identifier for a second peer. The identifier may be hashed and used to determine if the second peer is registered in the distributed index of presence information. If the second peer is registered, information including contact information for the second peer may be returned to the first peer. In one embodiment, a search mechanism may be provided to allow participating peers, including peers joining a session, to search the distributed index for registered peers that may be of interest to the searching peer.
[0099]
[0100] As indicated at
[0101] As indicated at
[0102]
[0103] While the distributed index of presence information is described above for presence information corresponding to peer nodes in a peer-to-peer networking environment, it is noted that presence information for other nodes in other networking environments may be stored in a distributed index of presence information on a plurality of peer nodes.
[0104] Peer-to-Peer Instant Messaging Using Distributed Indexes
[0105] In one embodiment, a distributed index may be used to implement a distributed instant messaging system in a peer-to-peer network. Embodiments may be decentralized, self-organizing, and self-healing. Embodiments of the distributed instant messaging system may allow personal computers or other computing devices on home broadband connections to self-organize, store information about portions of the identity space, and route messages among participating peers in a peer-to-peer fashion. In one embodiment, the distributed index of instant messaging information may be a distributed hash table. Other embodiments may use other distributed indexing schemes. One embodiment of a distributed instant messaging system using a distributed index may be implemented in peer-to-peer networks implemented according to a peer-to-peer platform such as the exemplary peer-to-peer platform described below.
[0106] In one embodiment, the distributed instant messaging system may be implemented as an application or service on top of distributed indexing. The distributed instant messaging system has no central server that may fail and disrupt participation. In the distributed instant messaging system, the participating peers may distribute the load (e.g. peer information storage, authentication, and message routing) among the participating peers. If one or more of the participating peers fail or leave the session, other participating peer nodes may take over the departing peers' “zones” in the distributed index. In one embodiment, one or more zones of the distributed index may be redundantly stored on other peers to provide additional reliability against peer departures. One embodiment may implement identity services and presence detection, for example as illustrated in
[0107] In one embodiment, message(s) may be routed to other participating peers using the distributed index. Instant messaging system messages may include one or more of, but are not limited to, text, binary, audio, video, images, network game information, software, and generally any data format that may be transported over a network.
[0108]
[0109] In one embodiment, the instant messaging distributed index may be used to route messages between peers
[0110] In one embodiment, the routing information may include an advertisement for the destination peer such as a peer advertisement and/or a pipe advertisement such as the advertisements described for the exemplary peer-to-peer platform described below. A pipe advertisement may be used to set up a pipe (i.e. a virtual communications channel) on the network between the source peer and the destination peer (e.g. peers
[0111] In one embodiment, the instant messaging distributed index may be used in adding new peers to the instant messaging group
[0112] If there is no instant messaging information corresponding to the node's identifier in the distributed index, then the node
[0113] When a peer
[0114] When a peer leaves an instant messaging group, the zone stored on the departing peer may be moved to another peer in the instant messaging group, and may be combined with a zone already on the peer. For example, if peer
[0115] When a peer joins an instant messaging group, one or more other peers in the instant messaging group may be notified that the peer has joined the instant messaging group. In one embodiment, peers in an instant messaging group may register to be informed if particular peers (identified by particular identifiers) join the instant messaging group. For example, prior to node
[0116] When a peer joins an instant messaging group, the peer may query for or otherwise be provided with information identifying one or more other peers currently in the instant messaging group and thus registered in the instant messaging distributed index. For example, if node
[0117] In one embodiment, joining peers (or any participating peer) may search or query the instant messaging distributed index of presence information to discover the presence of other participating peers. For example, a first peer may send a query message including an identifier for a second peer. The identifier may be hashed and used to determine if the second peer is registered in the distributed index of presence information. If the second peer is registered, information including contact information for the second peer may be returned to the first peer. This mechanism may be used, for example, b a peer joining the distributed index as a participant to discover other participating peers which the joining peer may desire to communicate with.
[0118]
[0119]
[0120]
[0121] Peer-to-Peer Platform
[0122] The following is a description of an open network computing platform designed for peer-to-peer computing in which embodiments of a distributed index mechanism for indexing and searching for content in peer-to-peer networks may be implemented. It is noted that this description is included for exemplary purposes and that embodiments of a distributed index mechanism for indexing and searching for content in peer-to-peer networks as described herein may be used with other peer-to-peer platforms and protocols.
[0123] Embodiments of an open network computing platform designed for peer-to-peer computing are described. The network computing platform may be referred to as a peer-to-peer platform. The peer-to-peer platform may be used to build a wide range of distributed services and applications in which every device is addressable as a peer, and where peers can bridge from one domain into another. The peer-to-peer platform may enable developers to focus on their own application development while easily creating distributed computing software that is flexible, interoperable, and available on any peer on the expanded Web. The peer-to-peer platform may enable software developers to deploy interoperable services and content, further spring-boarding the peer-to-peer revolution on the Internet. The peer-to-peer platform addresses the problems of prior art peer-to-peer systems by providing a generic and service-agnostic peer-to-peer platform that may be preferably defined by a small number of protocols. Each protocol is preferably easy to implement and easy to be adopted into peer-to-peer services and applications. Thus, service offerings from one vendor may be used, perhaps transparently, by the user community of another vendor's system.
[0124] The peer-to-peer platform extends P2P computing to enable a wide range of distributed computing applications and overcome the limitations typically found in prior art P2P applications. The peer-to-peer platform is a network computing technology that provides a set of simple, small, and flexible mechanisms that can support P2P computing on any platform, anywhere, and at any time. The peer-to-peer platform generalizes P2P functionality and provides core technology that addresses the limitations of prior art P2P computing technologies.
[0125] The peer-to-peer platform is a modular platform that provides simple and essential building blocks for developing a wide range of distributed services and applications. The peer-to-peer platform specifies a set of protocols rather than an API. Thus, the peer-to-peer platform can be implemented in any language on any Operating System to provide solutions ranging from providing a simple protocol-based wrapper that enables a small device to join a network of peers to developing a fully integrated application that supports metering, monitoring, high-level security and communication across server-class systems.
[0126] In one embodiment, the peer-to-peer platform architecture may include, but is not limited to, protocols, advertisements, and core services. Network protocol bindings may be used to preferably ensure interoperability with existing content transfer protocols, network transports, routers, and firewalls. The peer-to-peer platform may be used to combine network nodes (peers) into a simple and coherent peer-to-peer network computing platform. Embodiments the peer-to-peer platform may be directed at providing several benefits including one or more of, but not limited to, no single point of failure, asynchronous messaging, the ability for peers to adapt to their network environment, and moving content towards its consumers.
[0127]
[0128] A peer may be defined as any entity that runs some or all of one or more protocols provided by the peer-to-peer platform core layer. As such, a peer may manifest in the form of a processor, a process or a device. A peer may be anything with a digital heartbeat that supports the peer-to-peer platform core, including sensors, servers, PCs, computers up to and including supercomputers, PDAs, manufacturing and medical equipment, phones and cellular phones. In order to interact with other peers (e.g. to form or join peer groups), the peer needs to be connected to some kind of network (wired or wireless), such as IP, Bluetooth, or Havi, among others.
[0129] The peer-to-peer platform may provide mechanisms through which peers may discover each other, communicate with each other, and cooperate with each other to form peer groups. Peers may discover each other on the network to form transient or persistent relationships called peer groups. A peer group is a collection of peers connected by a network that share a common set of interests and that have agreed upon a common set of rules to publish, share and access any computer content (code, data, applications, or other collections of computer representable resources), and communicate among themselves. Peer groups may also be statically predefined. The peers in a peer group may cooperate to provide a common set of services. A peer group may be viewed as an abstract region of the network, and may act as a virtual subnet. The concept of a region virtualizes the notion of routers and firewalls, subdividing the network in a self-organizing fashion without respect to actual physical network boundaries. In one embodiment, peer groups implicitly define a region scope that may limit peer propagation requests. Conceptually, a peer group may be viewed as a virtual entity that speaks the set of peer group protocols.
[0130] The core layer
[0131] The core layer
[0132] The core components of the peer-to-peer protocol may be used to implement discovery mechanisms for searching, publishing and recovering of core abstractions (e.g. peers, peer group, pipes, endpoints, and advertisements). In one embodiment, these mechanisms may be simple, administration free, and may not require special peers to act as “master” peers. These mechanisms may allow processes in the peer-to-peer network, in absence of help from other applications and/or services, to bootstrap and find out the information necessary to access applications and services that can help. In addition, the core may “return” to this standalone behavior and still function if helper applications or services fail. In one embodiment, safety mechanisms may be put in place in order to avoid a major overflow of “web-crawling.” In one embodiment, applications and/or services that support the peer-to-peer protocol may access, control, and/or override the core components, even to the extreme of implementing a centralized, client-server model based on the core components.
[0133] At the highest abstraction level, the peer-to-peer platform may be viewed as a set of protocols provided at the core layer