IP Library Granted Patent US 7,856,506
Granted Patent B2
US 7,856,506 · App. 12/043,080 · Granted Dec 21, 2010

Traversal of symmetric network address translator for multiple simultaneous connections

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,856,506
App. No.
12/043,080
Granted
Dec 21, 2010
Kind
B2
Abstract

Handling of multiple connections during NAT traversal for a node behind a symmetric NAT is disclosed. The likelihood of connection failure during symmetric NAT traversal may be reduced by serializing critical time windows after port prediction. Once port prediction has begun for a first connection, port prediction for a subsequent connection may be delayed until a connectivity check has begun for the first connection. This process may be repeated to handle NAT traversal for multiple simultaneous connections to different nodes.

Claims (53)

1. A method for peer-to-peer connection over a network between a first node behind a first symmetric network address translator (NAT) and two or more other nodes, the method comprising:

a) performing a port prediction for initiating a communication session between the first node and a second node with first node and constructing a list of predicted transport addresses on the first NAT with the first node;

b) sending a CONNECTION REQUEST message containing the list of predicted transport addresses from the first node to a second node;

c) receiving a provisional response to the CONNECTION REQUEST message at the first node;

d) performing a check of connectivity between the first node and the second node using the predicted transport addresses; and

e) delaying port prediction for communication between the first node and a third node until after d) has begun.

2. The method of claim 1 , further comprising:

f) after e), performing the port prediction for communication between the first node and a third node, wherein the first node constructs a list of predicted transport addresses on the first NAT;

g) sending a CONNECTION REQUEST message containing the list of predicted transport addresses from the first node to a third node;

h) performing a check of connectivity between the first node and the third node using the predicted transport addresses.

3. The method of claim 2 , further comprising: i) delaying port prediction for communication between the first node and a fourth node until after g).

4. The method of claim 1 wherein performing the connectivity check includes sending Session Traversal Utility for NAT (STUN) packets from the second node to the one or more predicted transport addresses provided by the first node in the CONNECTION REQUEST message.

5. The method of claim 4 wherein performing the connectivity check further includes sending a STUN packet response from the first node to the second node, wherein the STUN packet response includes a transport address of an external port on the first NAT through which one of the STUN packets sent from the second node reached the first node.

6. The method of claim 1 wherein a) includes determining a port increment Δp for the first NAT and generating the list of predicted transport addresses using the port increment Δp.

7. The method of claim 1 wherein a) includes determining a port increment Δp for the first NAT and generating the list of predicted transport addresses using the port increment Δp and one or more different additional port increments, wherein each additional port increment differs from Δp by a depth M, wherein M is a positive integer greater than 1.

8. The method of claim 7 wherein M is equal to 3.

9. The method of claim 1 , further comprising:

waiting for a period of time T w after b), but before c) in response to a message from the second node indicating that the second node is queued for connection to another node;

canceling the communication session between the first node and the second node; and

repeating a), b), c), d) and e),

wherein the amount of time T w is greater than or equal to zero and less than a timeout for connectivity failure between the first and second nodes.

10. The method of claim 1 , wherein d) includes sending one or more test packets from the first node to the second node using a transport address from the list of predicted transport addresses.

11. The method of claim 10 wherein e) includes delaying port prediction for communication between the first node and the third node until after a first of the one or more test packets has been sent.

12. A method for peer-to-peer connection over a network between a first node behind a first symmetric network address translator (NAT) and two or more other nodes behind, the method comprising:

a) receiving a CONNECTION REQUEST message from a second node at the first node, wherein the CONNECTION REQUEST message contains a first list of predicted transport addresses;

b) performing a port prediction for initiating a communication session between the first node and the second node with first node and constructing a list of predicted transport addresses on the first NAT with the first node;

c) sending a provisional response to the CONNECTION REQUEST message to the second node from the first node;

d) performing a check of connectivity between the first node and the second node using the predicted transport addresses in the CONNECTION REQUEST message; and

e) delaying port prediction for communication between the first node and a third node until after d) has begun.

13. The method of claim 12 wherein performing the connectivity check includes sending STUN packets from the second node to the one or more predicted transport addresses provided by the first node in the CONNECTION REQUEST message.

14. The method of claim 13 wherein performing the connectivity check further includes sending a STUN packet response from the first node to the second node, wherein the STUN packet response includes a transport address of an external port on the first NAT through which one of the STUN packets sent from the second node reached the first node.

15. The method of claim 12 wherein b) includes determining a port increment Δp for the first NAT and generating the list of predicted transport addresses using the port increment Δp.

16. The method of claim 12 wherein b) includes determining a port increment Δp for the first NAT and generating the list of predicted transport addresses using the port increment Δp and one or more different additional port increments, wherein each additional port increment differs from Δp by a depth M, wherein M is a positive integer greater than 1.

17. The method of claim 16 wherein M is equal to 3.

18. The method of claim 12 , wherein d) includes sending one or more test packets from the first node to the second node using a transport address from the list of predicted transport addresses.

19. The method of claim 18 wherein e) includes delaying port prediction for communication between the first node and the third node until after a first of the one or more test packets has been sent.

20. A node, comprising:

a processor;

a memory;

a network interface; and

instructions embodiment in the memory and configured for execution on the processor, the instructions comprising either:

A) a set of instructions that, when executed, cause the node to:

i) perform a port prediction for initiating a communication session between the node and a second node with the node and construct a list of predicted transport addresses on a first NAT with the node;

ii) send a CONNECTION REQUEST message containing the list of predicted transport addresses from the node to the second node;

iii) receive a provisional response to the CONNECTION REQUEST message at the node;

iv) perform a check of connectivity between the node and the second node using the predicted transport addresses; and

v) delay port prediction for communication between the node and a third node until after iv) has begun, or

B) a set of instructions that, when executed, cause the node to

i) receive a CONNECTION REQUEST message from a second node at the node, wherein the CONNECTION REQUEST message contains a first list of predicted transport addresses;

ii) perform a port prediction for initiating a communication session between the node and the second node with the node and construct a list of predicted transport addresses on the first NAT with the node;

iii) send a provisional response to the CONNECTION REQUEST message to the second node from the node;

iv) perform a check of connectivity between the node and the second node using the predicted transport addresses in the CONNECTION REQUEST message; and

v) delay port prediction for communication between the node and a third node until after iv) has begun.

Assignments (4)
CHANGE OF NAME Recorded Jul 1, 2016
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY INTERACTIVE ENTERTAINMENT INC.
Reel/Frame 039239/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2011
From: SONY NETWORK ENTERTAINMENT PLATFORM INC.
To: SONY COMPUTER ENTERTAINMENT INC.
Reel/Frame 027449/0380 →
CHANGE OF NAME Recorded Dec 26, 2011
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY NETWORK ENTERTAINMENT PLATFORM INC.
Reel/Frame 027445/0773 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2008
From: TAKEDA, YUTAKA
To: SONY COMPUTER ENTERTAINMENT INC.
Reel/Frame 020637/0647 →