Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent Application
20020188657
Kind Code
A1
Traversat, Bernard A. ; et al.
December 12, 2002
Resource identifiers for a peer-to-peer environment
Abstract
A system and method for uniquely identifying peers and other resources in a peer-to-peer networking environment. In one embodiment, every peer in the peer-to-peer network may have a unique peer identifier. Other peer-to-peer network resources may also have unique identifiers, including peer groups, services, applications, pipes, endpoints, content and resource advertisements. Identifiers may serve to canonically refer to resources. Identifiers may be embedded in advertisements for resources. In one embodiment, a peer identifier may identify a peer group in which the peer is a member peer. In one embodiment, a peer may have a different peer identifier for each group in which it is a member peer. In one embodiment, an identifier may be bound to a network address of the resource. If the resource changes network addresses, the identifier may be bound to the new network address. Thus, identifiers provide dynamic addressing for resources in the peer-to-peer environment.
Inventors:
Traversat; Bernard A.
(San Francisco, CA)
, Abdelaziz; Mohamed M.
(Santa Clara, CA
)
, Duigou; Michael J.
(Fremont, CA
)
, Pouyoul; Eric
(San Francisco, CA
)
, Hugly; Jean-Christophe
(Palo Alto, CA
)
, Gong; Li
(Los Altos, CA
)
, Joy; William N.
(Aspen, CO
)
, Clary; Michael J.
(Monte Sereno, CA
)
Correspondence Name and Address:
Conley, Rose, & Tayon, P.C. P.O. Box 398
Robert C. Kowert
Austin
TX
78767
US
Series Code:
055666
Filed:
January 22, 2002
U.S. Current Class:
709/201;
709/245; 709/250
U.S. Class at Publication:
709/201;
709/245; 709/250
Intern'l Class:
G06F 015/16
Claims
What is claimed is:
1. A peer computing system comprising: a plurality of peer nodes operable to couple to a network; wherein the plurality of peer nodes are configured to implement a peer-to-peer environment on the network according to a peer-to-peer platform comprising: a core layer comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and cooperate with each other to form peer groups and share content in the peer-to-peer environment; a service layer comprising one or more services each provided by one or more of the plurality of peer nodes in the peer-to-peer environment, wherein at least a subset of the services are operable to be used by the plurality of peer nodes in forming the peer groups and participating in the peer groups, and wherein each of the one or more services are configured to be accessed by the plurality of peer nodes in accordance with at least one of the one or more peer-to-peer platform protocols; and a unique peer identifier, wherein the peer identifier is configured for use in distinguishing the particular peer node from others of the plurality of peer nodes in the peer-to-peer environment.
2. The peer computing system as recited in claim 1, wherein each of the plurality of peer nodes is further configured to bind a peer identifier corresponding to the particular peer node to a network address of the particular peer node.
3. The peer computing system as recited in claim 1, wherein each of the plurality of peer nodes is further configured to access another of the plurality of peer nodes on the network using the unique peer identifier of the other peer node, wherein the peer node does not use a network address of the other peer node to access the other peer node.
4. The peer computing system as recited in claim 3, wherein, to access the other peer node, the unique peer identifier of the other peer node is configured to be mapped to a network address of the other peer node.
5. The peer computing system as recited in claim 3, wherein, to access the other peer node, the unique peer identifier of the other peer node is configured to be mapped to one of one or more network interfaces of the other peer node.
6. The peer computing system as recited in claim 2, wherein each of the plurality of peer nodes is further configured to: unbind the peer identifier corresponding to the peer node from the network address; obtain a new network address; and bind the peer identifier corresponding to the peer node to the new network address.
7. The peer computing system as recited in claim 1, wherein each peer identifier is further configured for use in determining a particular peer group in which a particular peer node corresponding to the peer identifier is a member peer.
8. The peer computing system as recited in claim 1, wherein each of the plurality of peer nodes is further configured to participate as a member peer in one or more peer groups in the peer-to-peer environment, and wherein each of the plurality of peer nodes is assigned a different unique peer identifier in accordance with the peer-to-peer platform for each of the one or more peer groups in which the peer node is a member peer.
9. The peer computing system as recited in claim 1, wherein each of the plurality of peer nodes is further configured to: participate as a member peer in a plurality of peer groups in the peer-to-peer environment; receive a message from another of the plurality of peer nodes, wherein the other peer node is a member peer in a particular one of the plurality of peer groups in which the peer node is a member peer, and wherein the message includes a peer identifier of the other peer; and determine the particular one of the plurality of peer groups in which the other peer is a member peer from the peer identifier of the other peer.
10. The peer computing system as recited in claim 9, wherein the message specifies a resource hosted by the peer node, wherein the peer node hosts a plurality of instances of the resource, wherein each of the instances of the resource is hosted for a different one of the plurality of peer groups, and wherein the peer node is further configured to access in accordance with the message a particular one of the instances of the resource hosted for the particular one of the plurality of peer groups in which the other peer node is a member peer.
11. The peer computing system as recited in claim 10, wherein the resource is a service, and wherein the instance of the resource is an instance of the service implemented on the peer node.
12. The peer computing system as recited in claim 1, wherein the peer-to-peer platform defines a peer advertisement format for describing and publishing advertisements for peer nodes in the peer-to-peer environment, wherein each of the plurality of peer nodes is further configured to generate a peer advertisement for the particular peer node, wherein the peer advertisement includes a peer identifier for the peer node.
13. The peer computing system as recited in claim 1, further comprising a plurality of resources accessible by the plurality of peer nodes in the peer-to-peer environment, wherein each resource corresponds to a unique resource identifier configured for use in distinguishing the particular resource from other resources of the plurality of resources in the peer-to-peer environment.
14. The peer computing system as recited in claim 13, wherein the plurality of resources include one or more of peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels.
15. The peer computing system as recited in claim 1, wherein each of the one or more peer-to-peer platform protocols defines one or more advertisement formats for describing and publishing advertisements for resources in the peer-to-peer environment, wherein each of the plurality of peer nodes is further configured to: host a plurality of resources accessible by the plurality of peer nodes in the peer-to-peer environment; and generate a resource advertisement for each resource corresponding to the particular peer node in accordance with the peer-to-peer platform, wherein at least a subset of the resource advertisements each include a peer identifier of the peer node.
16. The peer computing system as recited in claim 15, wherein the resources include one or more of peer nodes, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein the pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels.
17. The peer computing system as recited in claim 15, wherein each resource is assigned a unique resource identifier configured for use in distinguishing the particular resource from other resources in the peer-to-peer environment, and wherein each resource advertisement further includes a resource identifier assigned to a particular resource corresponding to the resource advertisement.
18. The peer computing system as recited in claim 1, wherein the one or more peer-to-peer platform protocols includes one or more of: a peer discovery protocol for discovering resources in the peer-to-peer environment, wherein the resources include one or more of peer nodes, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels; a peer membership protocol for use by the peer nodes in applying for membership in the peer groups; a peer resolver protocol for use in sending search queries from one peer group member to another peer group member; a peer information protocol for enabling the peer nodes to obtain information about capabilities and status of other peer nodes in the peer-to-peer environment; a pipe binding protocol for use in finding the physical location of pipe endpoints and binding the pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels; and an endpoint routing protocol for enabling the peer nodes to request peer routing information to reach the other peer nodes.
19. The peer computing system as recited in claim 1, wherein the unique peer identifier of one of the plurality of peer nodes is formatted in accordance with a canonical representation scheme, and wherein the unique peer identifier of a different one of the plurality of peer nodes is formatted in accordance with a different canonical representation scheme.
20. The peer computing system as recited in claim 1, wherein the one of the plurality of peer nodes is a member peer in a peer group, wherein member peers in the peer group are configured to use the canonical representation scheme to format unique peer identifiers within the peer group, wherein the different one of the plurality of peer nodes is a member peer in a different peer group, and wherein member peers in the different peer group are configured to use the different canonical representation scheme to format unique peer identifiers within the different peer group.
21. A peer computing system comprising: a plurality of peer nodes operable to couple to a network, wherein the plurality of peer nodes are configured to implement a peer-to-peer environment on the network according to a peer-to-peer platform; wherein at least a subset of the peer nodes are configured to participate in a peer discovery protocol of the peer-to-peer-platform for discovering resources in the peer-to-peer environment; wherein at least a subset of the peer nodes are configured to participate in a peer membership protocol of the peer-to-peer-platform for joining or forming a peer group with other peer nodes, wherein the peer group is a collection of cooperating peer nodes that provide a common set of services in the peer-to-peer environment; and wherein the plurality of peer nodes are each assigned a unique peer identifier configured for use in distinguishing each peer node from the other peer nodes in the peer-to-peer environment.
22. The peer computing system as recited in claim 21, wherein each of the plurality of peer nodes is further configured to bind a peer identifier corresponding to the particular peer node to a network address of the particular peer node.
23. The peer computing system as recited in claim 22, wherein each of the plurality of peer nodes is further configured to: unbind the peer identifier corresponding to the peer node from the network address; obtain a new network address; and bind the peer identifier corresponding to the peer node to the new network address.
24. The peer computing system as recited in claim 21, wherein each of the at least a subset of the plurality of peer nodes is further operable to: participate as a member peer in a plurality of peer groups in the peer-to-peer environment; receive a message from another of the at least a subset of the plurality of peer nodes, wherein the other peer node is a member peer in a particular one of the plurality of peer groups in which the peer node is a member peer, and wherein the message includes a peer identifier of the other peer; and determine the particular one of the plurality of peer groups in which the other peer is a member peer from the peer identifier of the other peer.
25. The peer computing system as recited in claim 24, wherein the message specifies a service hosted by the peer node, wherein the peer node hosts a plurality of instances of the service, wherein each of the instances of the service is hosted for a different one of the plurality of peer groups, and wherein the peer node is further operable to provide the message to a particular one of the instances of the service hosted for the particular one of the plurality of peer groups in which the other peer node is a member peer.
26. The peer computing system as recited in claim 21, wherein the peer-to-peer platform defines a peer advertisement format for describing and publishing advertisements for peer nodes in the peer-to-peer environment, wherein a peer advertisement for one of the plurality of peer nodes includes a peer identifier for the peer node corresponding to the peer advertisement.
27. The peer computing system as recited in claim 21, further comprising a plurality of resources accessible by the plurality of peer nodes in the peer-to-peer environment, wherein each resource corresponds to a unique resource identifier configured for use in distinguishing the particular resource from other resources of the plurality of resources in the peer-to-peer environment.
28. The peer computing system as recited in claim 27, wherein the plurality of resources include one or more of peers, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on peer nodes that are configured to be bound to the pipes to establish the communications channels.
29. The peer computing system as recited in claim 27, wherein the peer-to-peer platform defines one or more advertisement formats for describing and publishing advertisements for resources in the peer-to-peer environment, wherein each of the plurality of peer nodes is further configured to: generate a resource advertisement for each resource corresponding to the particular peer node in accordance with the peer-to-peer platform; and wherein at least a subset of the resource advertisements each include one or more resource identifiers each corresponding to one of the plurality of resources.
30. A peer node comprising: a network interface for coupling to a network; a memory comprising program instructions, wherein the program instructions are executable within the peer node to implement, according to a peer-to-peer platform: a core layer comprising one or more peer-to-peer platform protocols for enabling the peer node to discover other peer nodes, communicate with the other peer nodes, and cooperate with the other peer nodes to form peer groups and share content in a peer-to-peer environment on the network; a service layer comprising one or more services in the peer-to-peer environment, wherein at least a subset of the services are operable to be used by the peer node and the other peer nodes in forming the peer groups and participating in the peer groups, and wherein each of the one or more services are configured to be accessed in accordance with at least one of the one or more peer-to-peer platform protocols; and a unique peer identifier in accordance with the peer-to-peer platform, wherein the peer identifier is configured for use in distinguishing the peer node from other peer nodes in the peer-to-peer environment.
31. The peer node as recited in claim 30, wherein the peer node is further configured to bind the peer identifier to a network address of the peer node.
32. The peer node as recited in claim 31, wherein the peer node is further configured to: unbind the peer identifier from the network address; obtain a new network address; and bind the peer identifier to the new network address.
33. The peer node as recited in claim 30, wherein the peer node is further configured to: participate as a member peer in a plurality of peer groups in the peer-to-peer environment; receive a message from another peer node, wherein the other peer node is a member peer in a particular one of the plurality of peer groups in which the peer node is a member peer, and wherein the message includes a peer identifier of the other peer; and determine the particular one of the plurality of peer groups in which the other peer is a member peer from the peer identifier of the other peer.
34. The peer node as recited in claim 30, wherein the peer node is further configured to: obtain a unique peer identifier of a different peer node on the network; and access the different peer node on the network using the unique peer identifier of the other peer node; wherein the peer node is not aware of a network address of the different peer node.
35. The peer node as recited in claim 31, wherein the message specifies a service hosted by the peer node, wherein the peer node hosts a plurality of instances of the service, wherein each of the instances of the service is hosted for a different one of the plurality of peer groups, and wherein the peer node is further configured to provide the message to a particular one of the instances of the service hosted for the particular one of the plurality of peer groups in which the other peer node is a member peer.
36. The peer node as recited in claim 30, wherein the peer-to-peer platform defines a peer advertisement format for describing and publishing advertisements for peer nodes in the peer-to-peer environment, wherein the peer node is further configured to generate a peer advertisement in accordance with the peer advertisement format, wherein the peer advertisement includes a peer identifier for the peer node.
37. The peer node as recited in claim 30, further comprising a plurality of resources accessible by peer nodes in the peer-to-peer environment, wherein the peer node is further configured to assign each of the plurality of peer nodes a unique resource identifier configured for use in distinguishing the particular resource from other resources in the peer-to-peer environment.
38. The peer node as recited in claim 37, wherein the plurality of resources include one or more of content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer node configured to be bound to the pipes to establish the communications channels.
39. The peer node as recited in claim 30, wherein each of the one or more peer-to-peer platform protocols defines one or more advertisement formats for describing and publishing advertisements for resources in the peer-to-peer environment, wherein the peer node is further configured to generate a resource advertisement for at least a subset of a plurality of resources on the peer node, wherein the resource advertisements each include the peer identifier for the peer node.
40. The peer node as recited in claim 39, wherein the plurality of resources include one or more of content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer node configured to be bound to the pipes to establish the communications channels.
41. The peer node as recited in claim 30, wherein the one or more peer-to-peer platform protocols includes a peer discovery protocol for discovering resources in the peer-to-peer environment, wherein the resources include one or more of peer nodes, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on peer nodes that are configured to be bound to the pipes to establish the communications channels.
42. A peer computing system comprising: a plurality of peer nodes operable to couple to a network; means for the peer nodes to discover each other, communicate with each other, and cooperate with each other to form peer groups and share content in a peer-to-peer environment on the network; means for the peer nodes to provide, discover and access one or more services in the peer-to-peer environment, wherein at least a subset of the services are core services operable to be used by the plurality of peer nodes in forming and participating in the peer groups; and means for uniquely identifying each of the plurality of peer nodes for use in distinguishing each peer node from others of the plurality of peer nodes in the peer-to-peer environment.
43. The peer computing system as recited in claim 42, further comprising means for determining a particular peer group in which a particular peer node is a member peer.
44. The peer computing system as recited in claim 42, further comprising: means for each of the plurality of peer nodes to participate as a member peer in one or more peer groups in the peer-to-peer environment; and means for uniquely identifying each of the one or more peers in each peer group of which the peer node is a member peer.
45. The peer computing system as recited in claim 42, further comprising: means for each peer node to participate as a member peer in a plurality of peer groups in the peer-to-peer environment; means for each peer node to receive a message from another of the plurality of peer nodes, wherein the other peer node is a member peer in a particular one of the plurality of peer groups in which the peer node is a member peer; and means for each peer node to determine the particular one of the plurality of peer groups in which the other peer is a member peer from the message.
46. The peer computing system as recited in claim 42, further comprising: means for describing and publishing resources in the peer-to-peer environment; and means for uniquely identifying each published resource in the peer-to-peer environment for use in distinguishing the particular published resource from other resources in the peer-to-peer environment.
47. The peer computing system as recited in claim 46, further comprising means for uniquely identifying a particular one of the plurality of peer nodes associated with each published resource.
48. A method for implementing a peer-to-peer environment on a network, the method comprising: a plurality of peer nodes coupled to a network each implementing a core layer of a peer-to-peer platform, wherein the core layer comprises one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and cooperate with each other to form peer groups and share content in the peer-to-peer environment; the plurality of peer nodes each implementing a service layer comprising one or more services each provided by one or more of the plurality of peer nodes in the peer-to-peer environment, wherein each of the one or more services are configured to be accessed by peer nodes in the peer-to-peer environment in accordance with at least a subset of the one or more peer-to-peer platform protocols; and assigning a unique peer identifier to each of the plurality of peer nodes, wherein each unique peer identifier is configured for use in distinguishing the particular peer node from others of the plurality of peer nodes in the peer-to-peer environment.
49. The method as recited in claim 48, further comprising binding the peer identifier of each of the plurality of peer nodes to a network address of the particular peer node.
50. The method as recited in claim 48, further comprising one of the plurality of peer nodes accessing another of the plurality of peer nodes on the network using the unique peer identifier of the other peer node, wherein the peer node does not use a network address of the other peer node to access the other peer node.
51. The method as recited in claim 49, wherein, in said accessing the other peer node, the method further comprises mapping the unique peer identifier of the other peer node to a network address of the other peer node.
52. The method as recited in claim 49, wherein, in said accessing the other peer node, the method further comprises mapping the unique peer identifier of the other peer node to one of one or more network interfaces of the other peer node.
53. The method as recited in claim 49, further comprising: one of the plurality of peer nodes unbinding the peer identifier corresponding to the peer node from the network address of the peer node; the peer node obtaining a new network address; and the peer node binding the peer identifier corresponding to the peer node to the new network address.
54. The method as recited in claim 48, further comprising: at least a subset of the plurality of peer nodes accessing at least a subset of the core services in accordance with at least one of the one or more peer-to-peer platform protocols to form one or more peer groups in the peer-to-peer environment; wherein each peer identifier is further configured for use in determining a particular one of the one or more peer groups in which a particular peer node corresponding to the peer identifier is a member peer.
55. The method as recited in claim 48, further comprising: at least a subset of the plurality of peer nodes accessing at least a subset of the core services in accordance with at least one of the one or more peer-to-peer platform protocols to form one or more peer groups in the peer-to-peer environment; and wherein each of the plurality of peer nodes is assigned a different unique peer identifier in accordance with the peer-to-peer platform for each of the one or more peer groups in which the peer node is a member peer.
56. The method as recited in claim 48, further comprising: at least a subset of the plurality of peer nodes accessing at least a subset of the core services in accordance with at least one of the one or more peer-to-peer platform protocols to form one or more peer groups in the peer-to-peer environment; and; one of the at least a subset of the plurality of peer nodes receiving a message from another of the at least a subset of the plurality of peer nodes, wherein the other peer node is a member peer in a particular one of the one or more peer groups in which the peer node is a member peer, and wherein the message includes a peer identifier of the other peer; and determining the particular one of the plurality of peer groups in which the other peer is a member peer from the peer identifier of the other peer.
57. The method as recited in claim 56, wherein the message specifies a service hosted by the peer node, wherein the peer node hosts a plurality of instances of the service, wherein each of the instances of the service is hosted for a different one of the one or more peer groups of which the peer node is a member peer, and wherein the method further comprises the peer node providing the message to a particular one of the instances of the service hosted for the determined particular one of the one or more peer groups in which the other peer node is a member peer.
58. The method as recited in claim 48, wherein the peer-to-peer platform defines a peer advertisement format for describing and publishing advertisements for peer nodes in the peer-to-peer environment, wherein the method further comprises generating a peer advertisement for one of the plurality of peer nodes, wherein the peer advertisement includes a peer identifier for the peer node.
59. The method as recited in claim 48, further comprising at least a subset of the plurality of peer nodes hosting a plurality of resources accessible by the plurality of peer nodes in the peer-to-peer environment, wherein each resource is assigned a unique resource identifier configured for use in distinguishing the particular resource from other resources in the peer-to-peer environment.
60. The method as recited in claim 59, wherein the plurality of resources include one or more of peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels.
61. The method as recited in claim 48, wherein the one or more peer-to-peer platform protocols define one or more advertisement formats for describing and publishing advertisements for resources in the peer-to-peer environment, the method further comprising: at least a subset of the plurality of peer nodes hosting a plurality of resources accessible by the plurality of peer nodes in the peer-to-peer environment; and generating a resource advertisement for each of the plurality of resources in accordance with the one or more peer-to-peer platform protocols, wherein at least a subset of the resource advertisements each include one or more peer identifiers each corresponding to one of the plurality of peer nodes associated with the particular resource corresponding to the particular resource advertisement.
62. The method as recited in claim 61, wherein the resources include one or more of peer nodes, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein the pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels.
63. The method as recited in claim 61, wherein each resource is assigned a unique resource identifier configured for use in distinguishing the particular resource from other resources in the peer-to-peer environment, and wherein each resource advertisement further includes a resource identifier assigned to a particular resource corresponding to the resource advertisement.
64. The method as recited in claim 48, wherein the one or more peer-to-peer platform protocols include one or more of: a peer discovery protocol for discovering resources in the peer-to-peer environment, wherein the resources include one or more of peer nodes, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels; and a peer membership protocol for use by the peer nodes in applying for membership in the peer groups.
65. The method as recited in claim 48, wherein, in said assigning a unique peer identifier to each of the plurality of peer nodes, the method further comprises: formatting the unique peer identifiers of a subset of the plurality of peer nodes according to a canonical representation scheme; and formatting the unique peer identifiers of a different subset of the plurality of peer nodes according to a different canonical representation scheme.
66. An article of manufacture comprising software instructions executable to implement: a plurality of peer nodes coupled to a network each implementing a core layer of a peer-to-peer platform, wherein the core layer comprises one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and cooperate with each other to form peer groups and share content in a peer-to-peer environment; the plurality of peer nodes each implementing a service layer comprising one or more services each provided by one or more of the plurality of peer nodes in the peer-to-peer environment, wherein each of the one or more services are configured to be accessed by peer nodes in the peer-to-peer environment in accordance with at least a subset of the one or more peer-to-peer platform protocols; and assigning a unique peer identifier to each of the plurality of peer nodes, wherein each peer identifier is configured for use in distinguishing the particular peer node from others of the plurality of peer nodes in the peer-to-peer environment.
67. The article of manufacture as recited in claim 66, wherein the software instructions are further executable to implement binding a peer identifier corresponding to a particular peer node to a network address of the particular peer node.
68. The article of manufacture as recited in claim 67, wherein the software instructions are further executable to implement: unbinding the peer identifier corresponding to the peer node from the network address; obtaining a new network address for the peer node; and binding the peer identifier corresponding to the peer node to the new network address.
69. The article of manufacture as recited in claim 66, wherein the software instructions are further executable to implement: at least a subset of the plurality of peer nodes accessing at least a subset of the core services in accordance with at least one of the one or more peer-to-peer platform protocols to form one or more peer groups in the peer-to-peer environment; wherein each peer identifier is further configured for use in determining a particular one of the one or more peer groups in which a particular peer node corresponding to the peer identifier is a member peer.
70. The article of manufacture as recited in claim 66, wherein the software instructions are further executable to implement: at least a subset of the plurality of peer nodes accessing at least a subset of the core services in accordance with at least one of the one or more peer-to-peer platform protocols to form one or more peer groups in the peer-to-peer environment; and wherein each of the plurality of peer nodes is assigned a different unique peer identifier in accordance with the peer-to-peer platform for each of the one or more peer groups in which the peer node is a member peer.
71. The article of manufacture as recited in claim 66, wherein the software instructions are further executable to implement: at least a subset of the plurality of peer nodes accessing at least a subset of the core services in accordance with at least one of the one or more peer-to-peer platform protocols to form one or more peer groups in the peer-to-peer environment; and; one of the at least a subset of the plurality of peer nodes receiving a message from another of the at least a subset of the plurality of peer nodes, wherein the other peer node is a member peer in a particular one of the one or more peer groups in which the peer node is a member peer, and wherein the message includes a peer identifier of the other peer; and determining the particular one of the plurality of peer groups in which the other peer is a member peer from the peer identifier of the other peer.
72. The article of manufacture as recited in claim 71, wherein the message specifies a service hosted by the peer node, wherein the peer node hosts a plurality of instances of the service, wherein each of the instances of the service is hosted for a different one of the one or more peer groups of which the peer node is a member peer, and wherein the software instructions are further executable to implement the peer node providing the message to a particular one of the instances of the service hosted for the determined particular one of the one or more peer groups in which the other peer node is a member peer.
73. The article of manufacture as recited in claim 66, wherein the peer-to-peer platform defines a peer advertisement format for describing and publishing advertisements for peer nodes in the peer-to-peer environment, wherein the software instructions are further executable to implement generating a peer advertisement for one of the plurality of peer nodes, wherein the peer advertisement includes a peer identifier for the peer node.
74. The article of manufacture as recited in claim 66, further comprising at least a subset of the plurality of peer nodes hosting a plurality of resources accessible by the plurality of peer nodes in the peer-to-peer environment, wherein each resource is assigned a unique resource identifier configured for use in distinguishing the particular resource from other resources in the peer-to-peer environment.
75. The article of manufacture as recited in claim 74, wherein the plurality of resources include one or more of peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels.
76. The article of manufacture as recited in claim 66, wherein the one or more peer-to-peer platform protocols define one or more advertisement formats for describing and publishing advertisements for resources in the peer-to-peer environment, wherein the software instructions are further executable to implement: at least a subset of the plurality of peer nodes hosting a plurality of resources accessible by the plurality of peer nodes in the peer-to-peer environment; and generating a resource advertisement for each of the plurality of resources in accordance with the one or more peer-to-peer platform protocols, wherein at least a subset of the resource advertisements each include one or more peer identifiers each corresponding to one of the plurality of peer nodes associated with the particular resource corresponding to the particular resource advertisement.
77. The article of manufacture as recited in claim 76, wherein the resources include one or more of peer nodes, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein the pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels.
78. The article of manufacture as recited in claim 76, wherein each resource is assigned a unique resource identifier configured for use in distinguishing the particular resource from other resources in the peer-to-peer environment, and wherein each resource advertisement further includes a resource identifier assigned to a particular resource corresponding to the resource advertisement.
79. The article of manufacture as recited in claim 66, wherein the one or more peer-to-peer platform protocols include one or more of: a peer discovery protocol for discovering resources in the peer-to-peer environment, wherein the resources include one or more of peer nodes, peer groups, content, services, applications, pipes, and pipe endpoints, wherein pipes are communications channels between two or more peer nodes in the peer-to-peer environment, and wherein pipe endpoints are network interfaces on the peer nodes that are configured to be bound to the pipes to establish the communications channels; and a peer membership protocol for use by the peer nodes in applying for membership in the peer groups.
Description
PRIORITY INFORMATION
[0001] This application claims benefit of priority to the following provisional applications, each of which is hereby incorporated by reference in its entirety:
[0002] Serial No. 60/263,573 filed Jan. 22, 2001 titled Peer-to-Peer Network Computing Platform;
[0003] Serial No. 60/268,893 filed Feb. 14, 2001 titled Peer-to-Peer Network Computing Platform;
[0004] Serial No. 60/286,225 filed Apr. 24, 2001 titled Peer-to-Peer Network Computing Platform; and
[0005] Serial No. 60/308,932 filed Jul. 31, 2001 titled Trust Mechanism For A Peer-To-Peer Network Computing Platform.
[0006] BACKGROUND OF THE INVENTION
[0007] 1. Field of the Invention
[0008] This invention relates to peer-to-peer networking, and more particularly to for uniquely identifying peers and other resources in a peer-to-peer networking environment.
[0009] 2. Description of the Related Art
[0010] 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.times.10.sup.18
bytes of information every year, but only publishes about 300 terabytes or about 3.times.10.sup.12 bytes. In other words, for every megabyte of information produced, only one byte gets published. Moreover, Google claims that it searches about only 1.3.times.10 8 web pages. Thus, finding useful information in real time is increasingly difficult.
[0011] 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 6 since 1975, doubling every 16 months.
[0012] 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.
[0013] 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 request for a Web page, the output is typically expected to appear shortly afterwards. It is also typically expected that everyone around by a the world will be able to retrieve the same page from the same Web server using the same URL.
[0014] 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.
[0015] Peer-to-peer (P2P)computing, embodied by applications like Napster, Gnutella, and Freenet, has offered a compelling and intuitive way for Internet users to find and share resources directly with each other, often without requiring a central authority or server. As much as these diverse applications have broken new ground, they typically address only a single function, run primarily only on a single platform, and are unable to directly share data with other, similar applications.
[0016] Many peer-to-peer systems are built for delivering a single type of service. For example, Napster provides music file sharing, Gnutella provides generic file sharing, and AIM provides instant messaging. Given the diverse characteristics of these services and the lack of a common underlying P2P infrastructure, each P2P software vendor tends to create incompatible systems--none of them able to interoperate with one another. This means each vendor creates its on P2P user community, duplicating efforts in creating software and system primitives commonly used by all P2P systems. Moreover, for a peer to participate in multiple communities organized by different P2P implementations, the peer must support multiple implementations, each for a distinct P2P system or community, and serve as the aggregation point.
[0017] Many P2P systems today offer their features or services through a set of APIs that are delivered on a particular operating system using a specific networking protocol. For example, one system might offer a set of C++ APIs, with the system initially running only on Windows, over TCP/IP, while another system offers a combination and C and Java APIs, running on a variety of UNIX systems, over TCP/IP but also requiring HTTP. A P2P developer is then forced to chose which set of APIs to program to, and consequently, which set of P2P customers to target. Because there is little hope that the two systems will interoperate, if the developer wants to offer the same service to both communities, they have to develop the same service twice for two P2P platforms or develop a bridge system between them. Both approaches are inefficient and impractical considering the dozens of P2P platforms in existence.
[0018] Many P2P systems, especially those being offered by upstart companies, tend to choose one operating system as their target deployment platform. The cited reason for this choice is to target the largest installed base and the fastest path to profit. The inevitable result is that many dependencies on platform-specific features are designed into (or just creep into) the system. This is often not the consequence of technical desire but of engineering reality with its tight schedules and limited resources.
[0019] This approach is clearly shortsighted. Even though the earliest demonstration of P2P capabilities are on platforms in the middle of the computing hardware spectrum, it is very likely that the greatest proliferation of P2P technology will occur at the two ends of the spetrum--large systems in the enterprise and consumer-oriented small systems. In fact, betting on any particular segment of the hardware or software system is not future proof.
[0020] FIGS. 1A and 1B are examples illustrating the peer-to-peer model. FIG 1A shows two peer devices 104A and 104B that are currently connected. Either of the two peer devices 104 may serve as a client of or a server to the other device. FIG. 1B shows several peer devices 104 connected over the network 106 in a peer group. In the peer group, any of the peer devices 104 may serve as a client of or a server to any of the other devices.
[0021] Prior art peer-to-peer systems are generally built for delivering a single type of service, for example a music file sharing service, a generic file sharing service, or an instant messaging service. Given the diverse characteristics of these services and given the lack of a common underlying peer-to-peer infrastructure, each vendor tends to form various peer-to-peer "silos". In other words, the prior art peer-to-peer systems typically do not interoperate with each other. This means each vendor has to create its own peer-to-peer user community, duplicating efforts in creating primitives commonly used by peer-to-peer systems such as peer discovery and peer communication.
[0022] Discovery in a peer-to-peer environment may be based on centralized discovery with a centralized index. This method is used by such peer-to-peer applications as Napster and AIM. Discovery based on a centralized index may be efficient, deterministic, and well suited for a static environment. Such a method of discovery may also provide centralized control, provide a central point of failure, and provide easy denial of services. However, such a method of discovery may be expensive to scale and may degrade with aging.
[0023] Discover in a peer-to-peer environment may also be based on net crawling. This method is used by such peer-to-peer applications as Gnutella and FreeNet. Discovery based on net crawling may be simple, adaptive, deterministic, inexpensive to scale, wee suited for dynamic environment, and may be difficult to attack. Such a method of discovery may also improve with aging. However, such a method of discovery may provide slower discovery than centralized control.
[0024] In a peer-to-peer environment, assume there is a peer-to-peer community offering a search capability for its members, where one member can post a query and other members can hear and respond to the query. One member is a Napster used and has implemented a feature so that, whenever a query is received seeking an MP3 file, this member will look up the Napster directory and then respond to the query with information returned by the Napster system. Here, a member without any knowledge of Napster may benefit because another member implemented a bridge to connect their peer-to-peer system to Napster. This type of bridging is very useful, but when the number of services is large, pair-wise bridging becomes more difficult and undesirable. Thus, it may be desirable to provide a platform bridge that may be used to connect various peer-to-peer systems together.
[0025] In another example, one engineering group requires a sizable storage capability, but also with redundancy to protect data from sudden loss. A common solution is to purchase a storage system with a large capacity and mirrored disks. Another engineering group later decides to purchase the same system. Both groups end up with a lot of extra capacity, and have to pay higher prices for the mirroring feature. Thus, it may be desirable to provide a mechanism by which each group may buy a simple storage system without the mirroring feature, where the disks can then discover each other automatically, form a storage peer group, and offer mirroring facilities using their spare capacity.
[0026] As yet another example, many devices such as cell phones, pagers, wireless email divices, Personal Digital Assistants (PDAs), and Personal Computers (PCs) may carry directory and calendar information. Currently, synchronization among the directory and calendar information on these devices is very tedious, if not impossible. Often, a PC becomes the central synchronization point, where every other device has to figure out a way to connect to the PC (using serial port, parallel port, IrDA, or other method) and the PC must have the device driver for every device that wishes to connect. Thus, it may be desirable to provide a mechanism by which these devices may interact with each other, without extra networking interfaces except those needed by the devices themselves, utilizing a common layer of communication and data exchange.
SUMMARY OF THE INVENTION
[0027] A system and method for uniquely identifying peers and other resources in a peer-to-peer networking environment is described. In one embodiment, the peer-to-peer platform may support and/or provide sophisticated naming and binding services. In one embodiment, the peer-to-peer platform may use a universal unique identifier (UUID), for example, a 64- or 128-bit datum, to refer to an entity or resource (e.g. a peer, peer group, service, application, pipe, advertisement, endpoint, content, etc.). For example, UUIDs may be embedded in advertisements for internal use. UUIDs preferable may be used to guarantee that each resource or entity has a unique UUID within a local runtime environment and serves as a cononical way of referring to an entity.
[0028] The UUID is an abstract data structure, and thus virtually any canonical method may be implemented for the canonical representation of UUIDs for use in peer-to-peer environments. In one embodiment, different peer groups may implement different canonical representations of UUIDs in the same peer-to-peer environment. For example, one peer group may use URN format for UUIDs, and another peer group may use a proprietary alphanumeric naming scheme.
[0029] UUIDs provide unique identifiers for resources in the peer-to-peer environment, and preferably identify the resource independently of the resource's location on the network. A UUID may be bound to other information, such as a network address of the corresponding resource and/or a resource name of the resource. Thus, UUIDs help to provide peers, services and other peer-to-peer environment entities with access to resources in the peer-to-peer environment independent of the resources' locations.
[0030] In one embodiment, every peer in the peer-to-peer network may have a unique peer identifier (e.g. UUID). Other peer-to-peer network resources may also have unique identifiers, including peer groups, services, applications, pipes, endpoint, content and resource advertisements. In one embodiment, the peer identifier may identify a peer group in which the peer is a member peer. In one embodiment, a peer may have a different peer identifier for each group in which it is a member peer. A peer identifier that also identifies a peer group in which the peer is a member peer is a member peer may be used to differentiate peers that seek access to a service or content on a peer within the peer group.
[0031] The peer identifiers may be included in resource advertisements of resources associated with the peers. For example, the peer identifiers may be included in peer advertisements, peer group advertisements, service advertisements, pipe advertisements and endpoint advertisements, among others. In one embodiment, a peer identifier may be bound to a network address (e.g. IP address URI (Uniform Resource Identifier), URN (Uniform Resource Name) or URL (Uniform Resource Locator) of the peer. If the peer changes network addresses (e.g. is moved to a new network location), the peer identifier ma be unbound from the network address and bound to the new network address. Thus, the peer identifier provides a dynamic identification and addressing mechanism for peers in the peer-to-peer network rather than a static mechanism, allowing peers to change network locations and still be identifiable (e.g. in peer groups the peer is a member peer of) using the same peer identifier.
[0032] In one embodiment, the peer identifier may include information identifying a particular peer group the peer is a member peer of. In one embodiment, a peer may be assigned a different, unique peer identifier for each peer group the peer is a member peer of. In one embodiment, peer identifiers may be included in messages received from other peers. If the receiving peer is a member in more than one peer group, the receiving peer may use the peer identifiers received in the messages to identify particular implementations of resources (e.g. services, pipes, endpoints and content) that are available for access by the sending peers.
[0033] Peers in the peer-to-peer environment may each host one or more resources in the peer-to-peer environment. At least a portion of the resources may each be assigned a unique resource identifier (e.g. UUID). A peer wishing to access a resource may specify the resource using the resource's identifier. The resource identifiers may be included in resource advertisements for the resources. At least a portion of the resource identifiers may be bound to a network address (e.g. IP address, URI, URN or URL) corresponding to the resource. At least a portion of the resource identifiers may also specify a particular peer and/or peer group that hosts the resource. Resources may include, but are not limited to, peers, peer groups, services, applications, advertisements, content, pipes and pipe endpoints.
BRIEF DESCRIPTION OF THE DRAWINGS
[0034] FIG. 1A illustrates a prior art example of two devices that are currently connected as peers;
[0035] FIG. 1B illustrates a prior art example of several peer devices connected over the network in a peer group;
[0036] FIG. 2 illustrates one embodiment of peer-to-peer platform software architecture at the conceptual level;
[0037] FIG. 3 illustrates an exemplary content identifier according to one embodiment;
[0038] FIG. 4 illustrates a point-to-point pipe connection between peers according to one embodiment;
[0039] FIG. 5 illustrates a peer-to-peer platform message format according to one embodiment;
[0040] FIG. 6 illustrates the content of a peer advertisement according to one embodiment;
[0041] FIG. 7 illustrates the content of a peer group advertisement according to one embodiment;
[0042] FIG. 8 illustrates the content of a pipe advertisement according to one embodiment;
[0043] FIG. 9 illustrates the content of a service advertisement according to one embodiment;
[0044] FIG. 10 illustrates the content of a content advertisement according to one embodiment;
[0045] FIG. 11 illustrates the content of an endpoint advertisement according to one embodiment;
[0046] FIG. 12 illustrates protocols and bindings in a peer-to-peer platform according to one embodiment;
[0047] FIG. 13 illustrates discovery through a rendezvous proxy according to one embodiment;
[0048] FIG. 14 illustrates discovery through propagate proxies according to one embodiment;
[0049] FIG. 15 illustrates using messages to discover advertisements according to one embodiment;
[0050] FIG. 16 illustrates one embodiment of using peer resolver protocol messages between a requesting peer and a responding peer;
[0051] FIG. 17 illustrates one embodiment of using peer information protocol messages between a requesting peer and a responding peer;
[0052] FIG. 18 illustrates several core components and how they interact for discovery and routing according to one embodiment;
[0053] FIG. 19 illustrates one embodiment of message routing in a peer-to-peer network that uses the peer-to-peer platform;
[0054] FIG. 20 illustrates traversing a firewall in a virtual private network when access is initiated from outside only according to one embodiment;
[0055] FIG. 21 illustrates email exchange through an email gateway according to one embodiment;
[0056] FIG. 22 illustrates traversing a firewall when access is initiated from the inside according to one embodiment;
[0057] FIG. 23 illustrates embodiments of a peer-to-peer platform proxy service, and shows various aspects of the operation of the proxy service;
[0058] FIG. 24 illustrates a method of using a proxy service for peer group registration according to one embodiment;
[0059] FIG. 25 illustrates peer group registration across a firewall according to one embodiment;
[0060] FIG. 26 illustrates a method of providing peer group membership through a proxy service according to one embodiment;
[0061] FIGS. 27A and 27B illustrate a method of providing privacy in the peer-to-peer platform according to one embodiment;
[0062] FIGS. 28A and 28B illustrate on embodiment of a method for using a peer-to-peer platform proxy service as a certificate authority;
[0063] FIG. 29 illustrates a peer providing implementations of a service in two or more different peer groups in which the peer is a member peer according to one embodiment;
[0064] FIG. 30 is a flowchart illustrating a method for assigning unique identifiers to peers in a peer-to-peer networking environment according to one embodiment; and
[0065] FIG. 31 is a flowchart illustrating a method for assigning unique identifiers to resources in a peer-to-peer networking environment according to one embodiment.
[0066] 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 purposed 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.
DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
[0067] Embodiments of an open network computing platform designed for peer-to-peer computing are described. The network computing platform may be referred to as 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 are 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.
[0068] 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.
[0069] 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.
[0070] 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. The platform is preferably directed at providing several benefits including, 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.
[0071] FIG. 2 illustrates one embodiment of peer-to-peer platform software architecture at the conceptual level. The peer-to-peer platform may include several layers. In one embodiment, the software stack may be described using three layers; a peer-to-peer platform (core) layer 120, a service layer 140 and an application layer 150. In one embodiment, the peer-to-peer platform may include a core layer 120 that defines and encapsulates minimal primitives that are common to peer-to-peer networking, including, but not limited to, peers 110, peer groups 122, peer discovery 124, peer communication (e.g. pipes) 126, peer monitoring 128, and associated security primitives 130. This layer may be shared by all peer-to-peer devices so that interoperability becomes possible.
[0072] 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.
[0073] 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 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.
[0074] A peer group may theoretically be as large as the entire connected universe. Naming anything uniquely is a challenge in such a large namespace. In one embodiment, the peer-to-peer platform may support and/or provide sophisticated naming and binding services. In one embodiment, the peer-to-peer platform may use a universal unique identifier (UUID), for example, a 64- or 128-bit datum, to refer to an entity or resource (e.g. a peer, peer group, service, application, pipe, advertisement, endpoint, content, etc.). For example, UUIDs may be embedded in advertisements for internal use.
[0075] UUIDs provide unique identifiers for resources in the peer-to-peer environment, and preferably identify the resource independently of the resource's location on the network. A UUID may be bound to other information, such as a network address of the corresponding resource and/or a resource name of the resource. Thus, UUIDs help to provide peers, services and other peer-to-peer environment entities with access to resources in the peer-to-peer environment independent of the resources' locations.
[0076] UUIDs preferably may be used to guarantee that each resource or entity has a unique UUID within a local runtime environment and serves as a canonical way of referring to an entity, but because a global state is not assumed, it may not be possible to provide a guarantee of uniqueness across an entire community that may consist of millions of peers. This may not be a problem because a UUID may be used within the peer-to-peer platform as an internal identifier. This may become significant only after the UUID is securely bound to other information such as a name and a network address.
[0077] The UUID is an abstract data structure, and thus virtually any canonical method may be used for representing UUIDs for use in peer-to-peer environments. In one embodiment, different peer groups may implement different canonical representations of UUIDs in the same peer-to-peer environment. In one embodiment, Uniform Resource Name (URN) format may be used for the representation of UUIDs. In one embodiment, Uniform Resource Identifier (URI) format may be used. In one embodiment, Uniform Resource Locator (URL) format may be used. In one embodiment, custom and/or proprietary methods of representing UUIDs may be used. For example, one peer group may use URN format for UUIDs, and another peer group may use a proprietary alphanumeric naming scheme.
[0078] The core layer 120 provides core support for peer-to-peer services and applications. In a multi-platform, secure execution environment, the core mechanisms of peer groups, peer pipes and peer monitoring may be provided. Peer groups 122 may establish a set of peers and naming within a peer group with mechanisms to create policies for creation and deletion, membership, advertising and discovery of other peer groups and peer nodes, communication, security, and content sharing. Pipes provide virtual communication channels among peers. Messages sent in pipes may support transfer of data, content, and code in a protocol-independent manner, allowing a range of security, integrity, and privacy options. In one embodiment, messages may be structured with a markup language such as XML. Peer monitoring 128 enables control of the behavior and activity of peers in a peer group and can be used to implement peer management functions including access control, priority setting, traffic metering, and bandwidth balancing.
[0079] The core layer 120 may include protocols and building blocks to enable key mechanisms for peer to peer networking, including discovery, transport (including firewall handling and limited security), and the creation of peers and peer groups. The core layer 120 is preferably thin and small, and preferably provides interesting and powerful primitives for use by services and applications in the other layers. The core layer 120 may support choices such as anonymous vs. registered users and encrypted vs. clear text content without imposing specific policies on developers. Policy choices may be made, or when necessary, implemented, at the service layer 140 and/or application layer 150. For example, administration services such as accepting or rejecting a peer's membership in a peer group may be implemented using the functionality provided by the core layer 120.
[0080] 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). These mechanisms are preferably simple, administration free, and do 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. Also, 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.
[0081] At the highest abstraction level, the peer-to-peer platform may be viewed as a set of protocols provided at the core layer 120. In one embodiment, a common thread among peer-to-peer platform peers is protocols, not APIs or software implementations. The peer-to-peer platform protocols preferably guarantee interoperability between compliant software components executing on potentially heterogeneous peer runtimes. Thus the peer-to-peer platform is preferably agnostic to programming languages. The term compliant may refer to a single protocol only. That is some peers may not implement all the core protocols. Furthermore, some peers may only use a portion (client-side or server-side only) of a protocol.
[0082] Each protocol may be defined by one or more messages exchanged among participants of the protocol. Each message may have a predefined format, and may include various data fields. In one embodiment the protocols may utilize messaging such as XML messages. The peer-to-peer platform connects peer nodes with each other. The peer-to-peer platform is preferably platform-independent by virtue of being a set of protocols. As such, the peer-to-peer platform may not require APIs and remains independent of programming languages, so that it can be implemented in C/C++, Java, Java 2ME, Perl, Python or other languages. This means heterogeneous devices with completely different software stacks can preferably interoperate through the peer-to-peer platform protocols. To underpin this set of protocols, the peer-to-peer platform may define a number of concepts including peer, peer group, advertisement, message, pipe, and more.
[0083] In one embodiment, peer-to-peer protocols may be embodied as markup language (e.g. XML) messages that may be sent between two peers. In one embodiment, the peer-to-peer platform messages may define the protocols used to discover and connect peers and peer groups, and to access resources offered by peers and peer groups, among others. The use of markup language (e.g. XML) messages to define protocols may allow many different kinds of peers to participate in a protocol. Each peer may be free to implement the protocol in a manner best suited to its abilities and role. For example, not all peers are capable of supporting a Java runtime environment. In one embodiment, the protocol definition does not require nor imply the use of Java on a peer.
[0084] Several peer-to-peer platform protocols that may be provided by embodiments of the peer-to-peer platform are described later in this document. The protocols defined in this document may be realized over networks including, but not limited to, the Internet, a corporate intranet, a dynamic proximity network, a home networking environment, LANs, and WANs. The protocols defined in this document may also be realized within a single computer. Thus, the peer-to-peer platform is preferably transport protocol independent. The size and complexity of the network peers that may support these protocols preferably includes a wide range of peer implementations including peers implemented on, but not limited to, simple light switches, PDAs, cell phones, pagers, laptop and notebook computers, smart appliances, personal computers, workstations, complex, highly-available servers, mainframe computers and even supercomputers.
[0085] The peer-to-peer platform may further include a peer-to-peer services layer 140. This layer may provide capabilities that may not be absolutely necessary for a peer-to-peer network to operate but that may be desirable to provided added functionality beyond the core layer 120 in the peer-to-peer environment. The service layer 140 may deal with higher-level concepts such as search and indexing, directory, storage systems, file sharing, distributed file systems, resource aggregation and renting, protocol translation, authentication and PKI (public key infrastructure) systems. These services, which may make use of the protocols and building blocks provided by the core layer 120, may be useful by themselves but also may be included as components in an overall P2P system. Thus, services may include one or more services 144 provided by the peer-to-peer platform. These platform-provided services 144 may include indexing, searching and file sharing services, for example. The services layer 140 may provide hooks for supporting generic services (such as searching, sharing and added security) that are used in many P2P applications. Thus, services may also include one or more services 142
not provided as part of the peer-to-peer platform but rather provided by the peer-to-peer platform community. These services 142 may be user-defined and may be provided, for example, to member peers in a peer group as a peer group service.
[0086] Services may expand upon the capabilities of the core layer 120 and may be used to facilitate application development. Facilities provided as services in the service layer 140 may include mechanisms for search and indexing, directory, storage systems, file sharing, distributed file systems, resource aggregation and renting, protocol translation, authentication, PKI services, and caching code and content to enable cross-application bridging and translation of files, among others. Searching capabilities may include distributed, parallel searches across peer groups that are facilitated by matching an XML representation of a query to be processed with representations of the responses that can be provided by each peer. These facilities may be used for simple searches, for example searching a peer's repository, or more complex searches of dynamically generated content that is unreachable by conventional search engines. P2P searches may be conducted across a company's intranet, for example, to quickly locate relevant information within a secure environment. By exercising tight control over peer group membership and enabling encrypted communication between peers, a company may extend this capability to its extranet, including business partners, consultants, and suppliers as peers. The same mechanisms that facilitate searches across the peer group may be used as a bridge to incorporate Internet search results, and to include data outside of the peer's own repository, for example searching a peer's disk. The peer services layer 140 may be used to support other custom, application-specific functions. For example, a secure peer messaging system may be built to allow anonymous authorship and a persistent message store. The peer services layer 140 provides the mechanisms to create such secure tools; the application developers themselves may determine specific tool policies.
[0087] The peer-to-peer platform may also include a peer-to-peer application layer 150. The application layer 140 may support the implementation of integrated applications such as file sharing, resource sharing, monetary systems, distributed storage, peer-to-peer instant messaging, entertainment, content management and delivery, peer-to-peer email systems, distributed auction systems, among others. Applications may be "vertical" or they may be developed to interoperate with other distributed applications. One or more applications 154 may be provided as part of the peer-to-peer platform. For example, one embodiment of the peer-to-peer platform may include a shell application 160 as a development environment built on top of the platform. The shell application may provide interactive access to the peer-to-peer platform via a simple command line interface 162.
[0088] Applications may also include community applications 152 not provided by the peer-to-peer platform. These community applications 152
may be user-defined and may be provided, for example, to member peers in a peer group as a peer group application.
[0089] In one embodiment, the boundary between services and applications is not rigid. An application to one customer can be viewed as a service to another customer. An application may use services. Services may serve as protocols that may be shared among various applications. An application may provide a user interface, a way to define a set of files to share, a way to initiate a search, a way to display the results, and a way to initiate a file transfer, for example. Such an application may make use of a set of services, for example a reliable point-to-point file transfer service, a distributed search service, a discovery service to locate other peers, among others.
[0090] Applications may be built using peer services as well as the core layer 120. The peer-to-peer platform may support the fundamental levels broadly, and rely on the P2P development community to provide additional peer services and applications. Peer applications enabled by both the core layer 120 and peer services layer 140 may include P2P auctions that link buyers and sellers directly, with buyers able to program their bidding strategies using a simple scripting language, for example. Resource-sharing applications, such as SETI@home, may be built more quickly and easily, with heterogeneous, worldwide peer groups supported from day one. Instant messaging, mail, and calendaring services may facilitate communication and collaboration within peer groups that are secure and independent of service provider-hosted facilities. Virtually any other type of application may be build on top of the core layer 120
and services layer 140.
[0091] Some features, such as security, may manifest in all three layers and throughout a P2P system, albeit in different forms according to the location in the software architecture. The system is preferably modular, and allows developers to pick and choose a collection of services and applications that suits their needs.
[0092] A typical peer-to-peer platform network may provide an inherently nondeterministic topology/response structure. In a peer-to-peer platform network, a specific resource request may not return for minutes, hours, or even days; in fact, it may never return at all. In addition, people from different parts of the world requesting the same resource are likely to get different copies of the resource from completely different locations. Peers may obtain content from multiple servers, ideally reaching a nearby one that is up and running. The original source peer need not service every resource request; in fact, it does not even have to be up and running. The nondeterministic structure may also help provide the optimized use of network bandwidth. The concentrated localized traffic congestion typical of today's Web doesn't affect P2P networking. The nondeterministic structure may also help provide a lowered cost of content distribution. The P2P network can absorb contents and replicate it for easy access. The nondeterministic structure may also help provide leveraged computing power from every node in the network. With asynchronous operations, a user may issue many requests for many resources or services simultaneously and have the network do the work. The nondeterministic structure may also help provide unlimited scalability. A properly designed P2P application may span the entire known connected universe without hitting scalability limits; this is typically not possible with centralized schemes. Note, however, that the peer-to-peer platform also may support deterministic, synchronous applications.
[0093] As an example of a nondeterministic, asynchronous application, consider a network-based music request service that operates over a peer-to-peer platform-based P2P network. A peer submits multiple requests for music files and then checks back later to see if the music request service in the peer group has found them. A few requested files have been found, but others cannot be located. The service's response in regards to the files that cannot be located may be something like "Music selection and availability changes continuously; please retry your request later." This is an acceptable nondeterministic outcome. Even though the service couldn't find a file, the same file may be available later if the same request is resubmitted, because peers that host the desired files may have come online in the meantime.
[0094] The peer-to-peer platform provides the ability to replicate information toward end users. Popular content tends to be replicated more often, making it easier to find as more copies are available. Peers do not have to always go back to the same peer to obtain the information they want, as is typical in the client/server model. Peers may obtain information from neighboring peers that have already cached the information. Each peer may become a provider to all other peers.
[0095] In one embodiment the peer-to-peer platform may enable peers to find content that is closest to them. This content may include data (e.g. files) or even services and applications. For example, if a peer node in an office peer-to-peer network using the peer-to-peer platform is moved, the peer-to-peer platform may allow the peer to automatically locate content (e.g. using a discovery service that participates in the discovery protocol) including services (e.g. a printer service and an email service) hosted by other peers closest to the peer's new location, without requiring any manual reconfiguration. Further, at least some content may be copied or moved to the peer in its new location and/or to other peers proximate to the new location.
[0096] In one embodiment, the UUIDs may be used in providing flexible configuration and seamless relocation of peer nodes on a peer-to-peer network, and may assist in locating and accessing content including services nearest to a peer node when the peer node is moved. For example, a businessperson based in New York may participate in a peer-to-peer network based on the peer-to-peer protocols using a notebook computer or other portable computing device connected to a LAN as a peer node. The businessperson may access an instance of an email and/or other services locally hosted by other peer nodes in a peer group on the LAN. If the businessperson travels to Paris, for example, and takes the notebook computer, the notebook computer may be connected to a different LAN at the Paris location and participate in the peer-to-peer network. Because the peer node has a unique identifier in the peer-to-peer network (e.g. a UUID) rather than just a static network address (the unique identifier may be bound to the static network address), the peer node may seamlessly access instances of an email service and other services locally hosted on the LAN, or alternatively hosted on a peer node at the peer node's original location or elsewhere, using the UUID to establish its identity. The peer node may rejoin the peer group in New York to access one or more instances of services and other content hosted on the peer group, and may also join a peer group at the Paris location to access one or more other instances of services and content. Thus, the peer-to-peer protocols and UUIDs may provide the ability for peer nodes to move to different peer groups and/or peer regions and access services and other content independent of network addresses and without requiring reconfiguration of the peer node. For example, when the exemplary peer node moves to Paris, connects to the network (at a different network address) and accesses an instance of an email service (either locally or remotely hosted, for example in the New York peer group), the email service may identify the peer node by its unique identifier and route the peer's email to the peer node at the new network address without requiring reconfiguration of the peer node. Thus, peer nodes may be relocated and access services and other content that are locally hosted or services and other content hosted in their original peer group if the services and other content are not required to be locally hosted.
[0097] The peer-to-peer platform preferably provides a decentralized environment that minimizes single points of failure and is not dependent on any centralized services. Both centralized and decentralized services may be developed on top of the peer-to-peer platform. With the addition of each new network peer, the network platform preferably becomes more robust as it expands. In the environment, services may be implemented to interoperate with other services giving rise to new P2P applications. For example, a P2P communications service like instant messaging may easily be added to a resource-sharing P2P application if both support at least the necessary peer-to-peer platform protocols.
[0098] The peer-to-peer platform may provide interoperability. The peer-to-peer platform may be used by developers independent of preferred programming languages, development environments, or deployment platforms. Embodiments of the peer-to-peer platform may enable interconnected peers to easily locate each other, communicate with each other, participate in community-based activities, and offer services to each other seamlessly across different P2P systems and different communities. The peer-to-peer platform may also provide platform independence. Embodiments of the peer-to-peer platform may be independent of programming languages (such as C/C++, Java, Perl, and KVM), system platforms (such as the Microsoft Windows, UNIX.RTM., Solaris, Linux and Macintosh platforms), and networking platforms (such as TCP/IP, Bluetooth and Havi). Thus, heterogeneous devices with completely different software stacks may interoperate through the peer-to-peer platform protocols. Embodiments of the peer-to-peer platform may be implementable on any device with a digital heartbeat, including, but not limited to, sensors, consumer electronics, Personal Digital Assistants (PDAs), appliances, network routers, desktop computers, data-center servers, and storage systems. Embodiments of the peer-to-peer platform may enable peers, independent of software and hardware platform, to benefit and profit from being connected to millions of other peers.
[0099] In one embodiment, the peer-to-peer platform may run on any of various operating systems including embedded operating systems (with the appropriate level of Java runtime support, if required) such as Windows95, 98, 2000, ME, and NT, Solaris, Unix, Macintosh, Linux, Java 2
Platform, Micro Edition (J2ME) and PersonalJava Technology. The peer-to-peer platform may be implemented in any of a variety of development environments using any of a variety of programming languages, or combinations of programming languages, including, but not limited to, Java, Java 2ME, C/C++, Perl, Python and KVM. In one embodiment, the peer-to-peer platform may be implemented in Java. In one embodiment, a peer-to-peer platform may be implemented in C/C++ on some devices, for example, to support devices without Java support. In one embodiment, a peer-to-peer platform may be implemented in KVM on some devices, for example, so that all KVM capable devices such as PDAs and cell phones can be peer-to-peer platform peers. Programming languages other than those listed may also be used in various embodiments.
[0100] A minimal device with the ability to generate a text string may theoretically participate in a peer-to-peer platform network (though not necessarily in every P2P application). The simplistic device may need a surrogate peer on the P2P network. This surrogate peer may perform discovery, advertisement, and communications on behalf of the simplistic device (or many simplistic devices). The location of the surrogate may be hard-wired into the simplistic device. In this way, the simplistic device with the help of the surrogate can be a full-fledged peer on the peer-to-peer platform network. For example, a GPS locator, strapped to a sea turtle and sending out peer-to-peer platform messages wirelessly with location information, may become a peer on a peer-to-peer platform network.
[0101] The peer-to-peer platform is preferably independent of transport protocols. For example, the peer-to-peer platform may be implemented on top of TCP/IP, HTTP, Bluetooth, HomePNA, and other protocols. Thus, a system built on top of the peer-to-peer platform preferably functions in the same or similar fashion when the system is expanded to a new networking environment or to a new class of devices, as long as there is a correct transport protocol handler for the new networking protocol.
[0102] In one embodiment, the peer-to-peer platform may use XML as the encoding format. XML may provide convenience in parsing and extensibility. Other embodiments of the peer-to-peer platform may use other encoding formats. The use of XML does not imply that all peer-to-peer platform peer nodes must be able to parse and to create XML documents. For example, a cell phone with limited resources may be programmed to recognize and to create certain canned XML messages and can still participate in a peer-to-peer platform network of peers. In one embodiment, a lightweight XML parser may be used that supports a subset of XML. This may help reduce the size of the peer-to-peer platform.
[0103] There may be areas in a peer-to-peer environment where there is not one correct way to do something or where what should be done depends on the nature and context of the overriding application. For example, in the area of security, every P2P application may choose a different authentication scheme, a different way to ensure communication security, a different encryption algorithm for data security, a different signature scheme for authenticity, and a different access control policy. Therefore, for these areas, the peer-to-peer platform may preferably focus on mechanisms instead of policy, so that application developers can have the maximum freedom to innovate and offer competitive solutions.
[0104] Implementations of the peer-to-peer platform may be illustrated with a few application or usage scenarios. For example, assume there is a peer-to-peer community offering a search capability for its members, where one member can post a query and other members can hear and respond to the query. One member is a Napster user and has implemented a feature so that, whenever a query is received seeking an MP3 file, this member will look up the Napster directory and then respond to the query with information returned by the Napster system. Here, a member without any knowledge of Napster may benefit because another member implemented a bridge to connect their peer-to-peer system to Napster. The peer-to-peer platform may provide a platform bridge that may be used to connect the various peer-to-peer systems together.
[0105] In another example, one engineering group requires a sizable storage capability, but also with redundancy to protect data from sudden loss. Using the peer-to-peer platform, each group may buy a simple storage system without a mirroring feature, where the disks can then discover each other automatically, form a storage peer group, and offer mirroring facilities using their spare capacity.
[0106] As yet another example, many devices such as cell phones, pagers, wireless email devices, Personal Digital Assistants (PDAs), and Personal Computers (PCs) may carry directory and calendar information. Using the peer-to-peer platform, these devices may be able to interact with each other, without extra networking interfaces except those needed by the devices themselves, using the peer-to-peer platform as the common layer of communication and data exchange.
[0107] Peers
[0108] Network nodes (peers) of various kinds may join the peer-to-peer networking platform by implementing one or more of the platform's protocols. Each peer operates independently and asynchronously of any other peer, providing a degree of reliability and scalability not typically found in current distributed systems. Some peers may have more dependencies with other peers due to special relationships (e.g. gateways or routers). In one embodiment, a peer does not need to understand all of the protocols of the peer-to-peer platform. The peer can still perform at a reduced level if it does not support one or more of the protocols.
[0109] Peers may publish and provide network resources (e.g. CPU, storage and routing resources) that may be used by other peers. Peers typically interact with a small number of other peers (network neighbors or buddy peers). Peers that provide the same set of services tend to be inter-changeable. Thus, it may not matter which peers a peer interacts with. Generally, assumptions should not be made about peer reliability or connectivity, as a peer may appear or leave the network at any time. Peers may have persistent storage. A peer may optionally cache information.
[0110] Peers may have multiple network interfaces, though preferably a peer does not need to publish all of its interfaces for use with the peer-to-peer protocols. Each published interface may be advertised as a peer endpoint. In one embodiment, a peer endpoint is an identifier (e.g. a URN or URI) that uniquely identifies a peer network interface. Peer endpoints may be used by peers to establish direct point-to-point connection between two peers. Peers may not have direct point-to-point network connection between themselves, either due to lack of physical network connections, or network configuration (NATs, firewalls, proxies, etc.), and thus a peer may have to use one or more intermediary peers to route a message from an endpoint to another peer endpoint.
[0111] The term rendezvous peer may be used to designate a peer that is designated to be a rendezvous point for discovering information about other peers, peer groups, services and pipes. Rendezvous peers preferably cache information that may be useful to peers including new peers. Rendezvous peers may provide an efficient mechanism for peers that are far away to find (e.g. discover) each other. Rendezvous peers may make peer discovery more practical and efficient. Preferably, a peer group is not required to have a rendezvous peer. In one embodiment, any or even all members of a peer group may become rendezvous peers in a peer group. In one embodiment, each peer group may have different policies to authorize a peer to become a rendezvous peer.
[0112] The term router peer may be used to describe a peer that crosses one or more regions and is designated to be a router between the regions. Router peers may be used to route messages between different network protocols (e.g. TCP/IP, IrDA) or to peers that are behind firewalls. In one embodiment, any or all peer members may become routers. In one embodiment, peer groups may have different policies to authorize a peer to become a router peer for other peers.
[0113] In one embodiment, every peer in the peer-to-peer network may have a unique peer identifier (e.g. UUID). Other peer-to-peer network resources may also have unique identifiers, including peer groups, services, applications, pipes, endpoints, content and resource advertisements. In one embodiment, the peer identifier may identify a peer group in which the peer is a member peer. In one embodiment, a peer may have a different peer identifier for each group in which it is a member peer. A peer identifier that also identifies a peer group in which the peer is a member peer may be used to differentiate peers that seek access to a service or content on a peer within the peer group. For example, as illustrated in FIG. 29, a peer 200A may provide implementations of a service in two or more different peer groups in which it is a member peer. In this illustration, peer 200A is a member peer in peer groups 210A and 210B. The peer 200A may advertise a different peer identifier within each peer group, and may differentiate between messages received from peers in the different peer groups by examining their respective peer identifiers to identify the particular peer group in which the peers that sent the messages are member peers to determine which service implementation to provide to the requesting peers. In this example, peer 200A provides service implementation 400A for peers in peer group 210A and service implementation 400B for peers in peer group 210B. When peer 200A receives a message for the service from peer 200C, which is a member peer in peer group 210B, peer 200A may examine the peer identifier of peer 200C, included in the message, to determine which peer group peer 200C is in. After determining, peer 200A may route the message to the correct service implementation, in this example service implementation 400B.
[0114] Peers may be identified by their unique identifier (UUID) rather than by a fixed address. When a peer boots, it attempts to contact other peers. In one embodiment, contacted peers may include variable-sized caches that map nearby peers' UUID to their current addresses. This allows embodiments of the peer-to-peer platform to be run over a dialup connection, for example.
[0115] FIG. 30 is a flowchart illustrating a method for assigning unique identifiers to peers in a peer-to-peer networking environment according to one embodiment. A plurality of peers may cooperate to form a peer-to-peer environment in accordance with the peer-to-peer platform as described herein as indicated at 420. Each of the peers may be assigned a unique peer identifier that may be used to distinguish the peer from other peers in the peer-to-peer environment as indicated at 422. One of the peers may identify and access another one of the peers using the other peer's unique peer identifier as indicated at 424.
[0116] The peer identifiers may be included in resource advertisements of resources associated with the peers. For example, the peer identifiers may be included in peer advertisements, peer group advertisements, service advertisements, pipe advertisements and endpoint advertisements, among others. In one embodiment, a peer identifier may be bound to a network address (e.g. IP address, URI, URN or URL) of the peer. If the peer changes network addresses (e.g. is moved to a new network location), the peer identifier may be unbound from the network address and bound to the new network address. Thus, the peer identifier provides a dynamic identification and addressing mechanism for peers in the peer-to-peer network, rather than a static mechanism, allowing peers to change network locations and still be identifiable (e.g. in peer groups the peer is a member peer of) using the same peer identifier.
[0117] In one embodiment, the peer identifier may include information identifying a particular peer group the peer is a member peer of. In one embodiment, a peer may be assigned a different, unique peer identifier for each peer group the peer is a member peer of. In one embodiment, peer identifiers may be included in messages received from other peers. If the receiving peer is a member in more than one peer group, the receiving peer may use the peer identifiers received in the messages to identify particular implementations of resources (e.g. services, pipes, endpoints and content) that are available for access by the sending peers.
[0118] FIG. 31 is a flowchart illustrating a method for assigning unique identifiers to resources in a peer-to-peer networking environment according to one embodiment. A plurality of peers may each host one or more resources in the peer-to-peer environment as indicated at 430. At least a portion of the resources may each be assigned a unique resource identifier as indicated at 432. A peer wishing to access a resource may specify the resource using the resource's identifier as indicated at 434.
[0119] The resource identifiers may be included in resource advertisements for the resources. At least a portion of the resource identifiers may be bound to a network address (e.g. IP address, URI, URN or URL) corresponding to the resource. At least a portion of the resource identifiers may also specify a particular peer and/or peer group that hosts the resource. Resources may include, but are not limited to, peers, peer groups, services, applications, advertisements, content, pipes and pipe endpoints.
[0120] Note that the methods described in FIGS. 30 and 31 are exemplary and not intended to be limiting. The methods may be implemented in software, hardware, or a combination thereof. The order of method may be changed, and various elements may be added, reordered, combined, omitted, modified, etc.
[0121] In one embodiment, a peer may be assigned a unique string as a name. Any naming scheme may be used. In one embodiment, names are not unique unless a coordinated naming service is used to guarantee name uniqueness. A naming service is typically a centralized service that guarantees the uniqueness of name and can be used to register name mapping. Examples of naming services are DNS and LDAP. Use of a naming service is preferably optional.
[0122] Peer Groups
[0123] Preferably, the peer-to-peer platform describes how to create and discover peer groups, but does not dictate when, where, or why to create a peer group, the type of the group, or the membership of the group. A peer group may provide a common membership definition. Each peer group may establish its own membership policy in a range from open (any peer can join) up to highly secure and protected (a peer may join only if it possesses sufficient credentials).
[0124] In one embodiment, peers wishing to join a peer group may first locate a current member, and then request to join the peer group. The peer-to-peer platform may define how to discover peer groups, e.g. using a peer discovery protocol. The application to join may be rejected or accepted by the collective set of current members in accordance with the peer group's membership policy. In one embodiment, a peer group core membership service may be used to enforce a vote among one or more group members. Alternatively, one or more group representative member peers may be elected or appointed to accept or reject new membership applications.
[0125] In one embodiment, the peer-to-peer platform is not concerned with what sequence of events a peer or a peer group comes into existence. Moreover, in one embodiment, the peer-to-peer platform does not limit how many groups a peer can belong to. In one embodiment, nested and/or overlapping peer groups may be formed. In one embodiment, there may be a special group, called the World Peer Group, which may include all peer-to-peer platform peers. The world peer group preferably provides the minimum seed for every peer to potentially find each other and form new groups. In one embodiment, the world peer group has an open membership policy (e.g. has a null membership authenticator service). Some peers inside the world peer group may not be able to discover or communicate with each other--e.g., they may be separated by a network partition. In one embodiment, participation in the World Peer Group is by default.
[0126] The peer-to-peer platform may use the concept of a peer group as an implicit scope of all messages originated from within the group. Peer groups may serve to subdivide the network into abstract regions providing an implicit scoping mechanism. Peer groups may provide a limited scoping environment to ensure scalability. Peer groups may be formed and self organized based upon the mutual interest of peers. In one embodiment, no particular rules are imposed on the way peer groups are formed, but peers with the same interests may tend to join the same peer groups.
[0127] In one embodiment, a scope may be realized with the formation of a corresponding peer group. Peer group boundaries may define the search scope when searching for a group's content. For example, a peer in San Francisco looking to buy a used car is normally not interested in cars available outside of the Bay Area. In this case, the peer may want to multicast a message to a subset of the current worldwide peer group, and a subgroup may be formed especially for this purpose. In one embodiment, the multicast may be done without the formation of a new peer group. In one embodiment, all messages may carry a special scope field, which may indicate the scope for which the message is intended. Any peer who receives this message may propagate the message based on the scope indicator. Using this approach, it is preferable that a sending peer is bootstrapped with some well-defined scopes and also has the ability to discover additional scopes.
[0128] Peer groups may also be formed based upon the proximity of the member peers. Proximity-based peer groups may serve to subdivide the network into abstract regions. Regions may serve as a placeholder for