Peer-to-peer collaboration system with edge routing
First Claim
1. A method of joining a computing device that is behind a Network Address Translation (NAT) device to a peer-to-peer collaboration session which includes a plurality of peers, the method comprising:
- communicating, by the computing device, with a home relay server to discover a type of the NAT device;
determining, by the computing device based on the type of the NAT device, an address vector of the computing device that can be used by the peers of the peer-to-peer collaboration session for traversing the NAT device and directly transmitting messages to the computing device without use of the home relay server;
communicating, by the computing device, the address vector of the computing device to the home relay server for sharing the address vector of the computing device with the peers of the peer-to-peer collaboration session;
receiving, by the computing device from the home relay server, address vectors of the peers of the peer-to-peer collaboration session;
receiving, by the computing device from the home relay server, a list of peers that have established direct connections to other peers of the peer-to-peer collaboration session; and
constructing, by the computing device, a routing table based on the address vectors of the peers of the peer-to-peer collaboration session and the list of peers that have established direct connections to other peers of the peer-to-peer collaboration session, the routing table comprising;
a first group representing peers of the peer-to-peer collaboration session to which the computing device can directly transmit messages without the use of the home relay server, the first group including at least one peer designated as a first super peer by the home relay server, wherein the first super peer is configured to;
receive messages comprising collaboration information from the computing device via direct peer-to-peer transmission; and
forward the messages to other peers in the first group with which the first super peer has established a direct connection; and
a second group representing peers of the peer-to-peer collaboration session to which the computing device can indirectly transmit messages through the home relay server, the second group including at least one peer designated as a second super peer by the home relay server, wherein the second super peer is configured to;
receive messages comprising collaboration information from the computing device via indirect transmission through the home relay server; and
forward the messages to other peers in the second group with which the second super peer has established a direct connection.
2 Assignments
0 Petitions
Accused Products
Abstract
A peer-to-peer collaboration system in which changes to a shared space may be broadcast to all of the peers in a collaboration session using messages sent with a combination of addressing techniques. Messages may be addressed for direct peer-to-peer transmission, indirect transmission through another peer or indirect transmission through a server. The type of addressing used to communicate with each peer is determined through the use of a routing table. The routing table defines interconnected groups of peers and may be used to select one or more peers in each group as the initial recipients of the message. The initial recipients may forward the message to other peers within their groups, such that all peers receive the message. For peers behind a NAT, one or more NAT traversal techniques may be used to obtain information to construct the routing table.
-
Citations
20 Claims
-
1. A method of joining a computing device that is behind a Network Address Translation (NAT) device to a peer-to-peer collaboration session which includes a plurality of peers, the method comprising:
-
communicating, by the computing device, with a home relay server to discover a type of the NAT device; determining, by the computing device based on the type of the NAT device, an address vector of the computing device that can be used by the peers of the peer-to-peer collaboration session for traversing the NAT device and directly transmitting messages to the computing device without use of the home relay server; communicating, by the computing device, the address vector of the computing device to the home relay server for sharing the address vector of the computing device with the peers of the peer-to-peer collaboration session; receiving, by the computing device from the home relay server, address vectors of the peers of the peer-to-peer collaboration session; receiving, by the computing device from the home relay server, a list of peers that have established direct connections to other peers of the peer-to-peer collaboration session; and constructing, by the computing device, a routing table based on the address vectors of the peers of the peer-to-peer collaboration session and the list of peers that have established direct connections to other peers of the peer-to-peer collaboration session, the routing table comprising; a first group representing peers of the peer-to-peer collaboration session to which the computing device can directly transmit messages without the use of the home relay server, the first group including at least one peer designated as a first super peer by the home relay server, wherein the first super peer is configured to; receive messages comprising collaboration information from the computing device via direct peer-to-peer transmission; and forward the messages to other peers in the first group with which the first super peer has established a direct connection; and a second group representing peers of the peer-to-peer collaboration session to which the computing device can indirectly transmit messages through the home relay server, the second group including at least one peer designated as a second super peer by the home relay server, wherein the second super peer is configured to; receive messages comprising collaboration information from the computing device via indirect transmission through the home relay server; and forward the messages to other peers in the second group with which the second super peer has established a direct connection. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer-readable storage device storing computer-executable instructions that, when executed by a computing device that is behind a Network Address Translation (NAT) device, cause the computing device to perform a method of joining a peer-to-peer collaboration session which includes a plurality of peers, the method comprising:
-
communicating with a home relay server to discover a type of the NAT device; determining, based on the type of the NAT device, an address vector of the computing device that can be used by the peers of the peer-to-peer collaboration session for traversing the NAT device and directly transmitting messages to the computing device without use of the home relay server; communicating the address vector of the computing device to the home relay server for sharing the address vector of the computing device with the peers of the peer-to-peer collaboration session; receiving, from the home relay server, address vectors of the peers of the peer-to-peer collaboration session; receiving, from the home relay server, a list of peers that have established direct connections to other peers of the peer-to-peer collaboration session; and constructing a routing table based on the address vectors of the peers of the peer-to-peer collaboration session and the list of peers that have established direct connections to other peers of the peer-to-peer collaboration session, the routing table comprising; a first group representing peers of the peer-to-peer collaboration session to which the computing device can directly transmit messages without the use of the home relay server, the first group including at least one peer designated as a first super peer by the home relay server, wherein the first super peer is configured to; receive messages comprising collaboration information from the computing device via direct peer-to-peer transmission; and forward the messages to other peers in the first group with which the first super peer has established a direct connection; and a second group representing peers of the peer-to-peer collaboration session to which the computing device can indirectly transmit messages through the home relay server, the second group including at least one peer designated as a second super peer by the home relay server, wherein the second super peer is configured to; receive messages comprising collaboration information from the computing device via indirect transmission through the home relay server; and forward the messages to other peers in the second group with which the second super peer has established a direct connection. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computing device comprising:
-
a processor for executing computer-executable instructions; and memory storing computer-executable instructions for joining the computing device to a peer-to-peer collaboration session that includes a plurality of peers when the computing device is behind a Network Address Translation (NAT) device, the computer-executable instructions comprising instructions for; communicating with a home relay server to discover a type of the NAT device; determining, based on the type of the NAT device, an address vector of the computing device that can be used by the peers of the peer-to-peer collaboration session for traversing the NAT device and directly transmitting messages to the computing device without use of the home relay server; communicating the address vector of the computing device to the home relay server for sharing the address vector of the computing device with the peers of the peer-to-peer collaboration session; receiving, from the home relay server, address vectors of the peers of the peer-to-peer collaboration session; receiving, from the home relay server, a list of peers that have established direct connections to other peers of the peer-to-peer collaboration session; and constructing a routing table based on the address vectors of the peers of the peer-to-peer collaboration session and the list of peers that have established direct connections to other peers of the peer-to-peer collaboration session, the routing table comprising; a first group representing peers of the peer-to-peer collaboration session to which the computing device can directly transmit messages without the use of the home relay server, the first group including at least one peer designated as a first super peer by the home relay server, wherein the first super peer is configured to; receive messages comprising collaboration information from the computing device via direct peer-to-peer transmission; and forward the messages to other peers in the first group with which the first super peer has established a direct connection; and a second group representing peers of the peer-to-peer collaboration session to which the computing device can indirectly transmit messages through the home relay server, the second group including at least one peer designated as a second super peer by the home relay server, wherein the second super peer is configured to; receive messages comprising collaboration information from the computing device via indirect transmission through the home relay server; and forward the messages to other peers in the second group with which the second super peer has established a direct connection. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification