System and method for traversing a NAT device for peer-to-peer hybrid communications
First Claim
Patent Images
1. A method for enabling a first endpoint to traverse a first network address translation (NAT) device associated with a second endpoint in a peer-to-peer communications system, wherein the first NAT device includes a pinhole maintained between the first NAT device and a server, and wherein a second NAT device is associated with the first endpoint, the method comprising:
- determining whether a message sent to the second endpoint from an external source will only pass through the first NAT device if the second endpoint has first sent a message to the external source;
if the determining indicates that the second endpoint must first send a message, sending a first message to a stateless reflector for reflection to the second endpoint, wherein the first message includes a message header identifying the stateless reflector as the message destination and the first endpoint as the message source;
modifying the message header by the stateless reflector, wherein the modifying inserts the second endpoint as the message destination and the server as the message source;
sending the modified first message to the second endpoint via the pinhole in the first NAT device;
determining whether a message sent to the first endpoint from an external source will only pass through the second NAT device if the first endpoint has first sent a message to the external source;
if the determining indicates that the first endpoint must first send a message, sending a second message from the second endpoint to the stateless reflector for reflection to the first endpoint, wherein the second message includes a message header identifying the stateless reflector as the message destination and the second endpoint as the message source;
modifying the message header by the stateless reflector, wherein the modifying inserts the first endpoint as the message destination and the server as the message source; and
sending the modified second message to the first endpoint via a pinhole maintained between the second NAT device and the server,wherein all signaling messages between the first and second endpoints are reflected via the stateless reflector and all media messages are transferred directly between the first and second endpoints if the first NAT device is a symmetric type and the second NAT device is a port restricted type or if the first NAT device is a port restricted type and the second NAT device is a symmetric type, and wherein all signaling and media messages between the first and second endpoints are reflected via the stateless reflector if the first and second NAT devices are both symmetric type.
1 Assignment
0 Petitions
Accused Products
Abstract
An improved system and method are disclosed for peer-to-peer communications. In one example, the method enables an endpoint to traverse a NAT device using a stateless reflector.
66 Citations
14 Claims
-
1. A method for enabling a first endpoint to traverse a first network address translation (NAT) device associated with a second endpoint in a peer-to-peer communications system, wherein the first NAT device includes a pinhole maintained between the first NAT device and a server, and wherein a second NAT device is associated with the first endpoint, the method comprising:
-
determining whether a message sent to the second endpoint from an external source will only pass through the first NAT device if the second endpoint has first sent a message to the external source; if the determining indicates that the second endpoint must first send a message, sending a first message to a stateless reflector for reflection to the second endpoint, wherein the first message includes a message header identifying the stateless reflector as the message destination and the first endpoint as the message source; modifying the message header by the stateless reflector, wherein the modifying inserts the second endpoint as the message destination and the server as the message source; sending the modified first message to the second endpoint via the pinhole in the first NAT device; determining whether a message sent to the first endpoint from an external source will only pass through the second NAT device if the first endpoint has first sent a message to the external source; if the determining indicates that the first endpoint must first send a message, sending a second message from the second endpoint to the stateless reflector for reflection to the first endpoint, wherein the second message includes a message header identifying the stateless reflector as the message destination and the second endpoint as the message source; modifying the message header by the stateless reflector, wherein the modifying inserts the first endpoint as the message destination and the server as the message source; and sending the modified second message to the first endpoint via a pinhole maintained between the second NAT device and the server, wherein all signaling messages between the first and second endpoints are reflected via the stateless reflector and all media messages are transferred directly between the first and second endpoints if the first NAT device is a symmetric type and the second NAT device is a port restricted type or if the first NAT device is a port restricted type and the second NAT device is a symmetric type, and wherein all signaling and media messages between the first and second endpoints are reflected via the stateless reflector if the first and second NAT devices are both symmetric type. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system for peer-to-peer communications, the system comprising:
-
a server storing profile information for a plurality of endpoints, wherein each of the plurality of endpoints is associated with a unique profile; a first endpoint of the plurality of endpoints coupled to the server via a packet-based communications network and separated from the network by a first network address translation (NAT) device having an internal address for communication with the first endpoint and an external address for communication with the network, wherein the first NAT device includes a pinhole maintained with the server on the network; a second endpoint of the plurality of endpoints coupled to the server via the network and separated from the network by a second NAT device having an internal address for communication with the second endpoint and an external address for communication with the network, the second endpoint configured to execute a plurality of instructions stored therein for establishing a communication session with the first endpoint, the instructions including; instructions for performing a login process with the server; instructions for receiving a profile from the server in response to the login process, wherein the profile includes a status of the first endpoint and routing information needed for communication with the first endpoint; instructions for determining whether the first NAT device is of a restricted type, port restricted type, or symmetric type; instructions for, if the first NAT device is of a restricted type, port restricted type, or symmetric type, sending a first message to a stateless reflector for reflection to the first endpoint, wherein the first message includes a first header identifying the stateless reflector as the destination and the second endpoint as the source, and a second header identifying the first endpoint as the destination and the server as the source; instructions for receiving a second message directly from the first endpoint in response to the first message; instructions for sending media messages directly to the first endpoint after receiving the second message unless the first and second NAT devices are both symmetric type; instructions for sending all media messages to the stateless reflector for reflection to the first endpoint if the first and second NAT devices are both symmetric type; instructions for sending all signaling messages directly to the first endpoint unless (1) the first NAT device is a symmetric type and the second NAT device is a port restricted type, (2) the first NAT device is a port restricted type and the second NAT device is a symmetric type, or (3) both the first and second NAT devices are symmetric type; and instructions for sending all signaling messages to the stateless reflector for reflection to the first endpoint if (1) the first NAT device is a symmetric type and the second NAT device is a port restricted type, (2) the first NAT device is a port restricted type and the second NAT device is a symmetric type, or (3) both the first and second NAT devices are symmetric type. - View Dependent Claims (11, 12, 13, 14)
-
Specification