Patent ID: 8656017

Claim:
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.