IP Library Granted Patent US 9,560,126
Granted Patent B2
US 9,560,126 · App. 13/887,523 · Granted Jan 31, 2017

Stateless load balancing of 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 9,560,126
App. No.
13/887,523
Granted
Jan 31, 2017
Kind
B2
Abstract

A capability is provided for statelessly load balancing Transmission Control Protocol (TCP) connections across a set of servers. A load balancer receives a TCP SYN packet from a client, selects a server for a TCP connection for the client, forms a modified TCP SYN packet including an address of the client, and propagates the modified TCP SYN packet toward the server. The server receives the modified TCP SYN packet, forms a TCP SYN+ACK packet including an identifier (e.g., n bits of an address, an n-bit server index based on mapping information of the load balancer, or the like) of the server, and propagates the modified TCP SYN+ACK packet toward the load balancer. The load balancer receives a TCP packet from the client on the TCP connection, determines a server associated with the TCP connection based on information included within the TCP packet, and propagates the TCP packet toward the server.

Claims (62)

1. An apparatus, comprising:

a processor and a memory communicatively connected to the processor, the processor configured to:

receive a Transmission Control Protocol (TCP) SYN packet comprising a source address field including an address of a client from which the TCP SYN packet is received and a destination address field including an address of a load balancer;

select a server to support a TCP connection for the client;

form, based on the TCP SYN packet, a modified TCP SYN packet comprising a source address field including the address of the load balancer, a destination address field including an address of the server, the address of the client, a server index of the server, and a value indicative of a size of the server index of the server; and

propagate the modified TCP SYN packet toward the selected server.

2. The apparatus of claim 1 , wherein the processor is configured to select the server based on at least one of:

a hash value computed based on one or more fields of the TCP SYN packet; or

server performance information associated with one or more servers of a set of servers available for selection as the selected server.

3. The apparatus of claim 1 , wherein the processor is configured to insert the address of the client into an ACK field of the modified TCP SYN packet, a TCP option header of the modified TCP SYN packet, or a trailer field of the modified TCP SYN packet.

4. The apparatus of claim 1 , wherein, to form the modified TCP SYN packet, the processor is configured to:

insert at least one timestamp into the modified TCP SYN packet.

5. The apparatus of claim 1 , wherein the processor is configured to insert the server index of the server into an upper n bits of a sequence number of the modified TCP SYN packet or n bits of a timestamp value of a TCP options header of the modified TCP SYN packet.

6. The apparatus of claim 1 , wherein the processor is configured to:

compute a hash value based on one or more fields of the TCP SYN packet; and

identify the server index of the server from a mapping of the hash value to the server index of the server.

7. An apparatus, comprising:

a processor and a memory communicatively connected to the processor, the processor configured to:

receive a synchronization message comprising a source address field including an address of a client from which the synchronization message is received and a destination address field including an address of a load balancer;

select a server to support a connection for the client;

form, based on the synchronization message, a modified synchronization message comprising a source address field including the address of the load balancer, a destination address field including an address of the server, the address of the client, a server index of the server, and a value indicative of a size of the server index of the server; and

propagate the modified synchronization message toward the selected server.

8. The apparatus of claim 7 , wherein the processor is configured to select the server based on at least one of:

a hash value computed based on one or more fields of the synchronization message; or

server performance information associated with one or more servers of a set of servers available for selection as the selected server.

9. The apparatus of claim 7 , wherein the processor is configured to insert the address of the client into an acknowledgment field of the modified synchronization message, an option header of the modified synchronization message, or a trailer field of the modified synchronization message.

10. The apparatus of claim 7 , wherein, to form the modified synchronization message, the processor is configured to:

insert at least one timestamp into the modified synchronization message.

11. The apparatus of claim 7 , wherein the processor is configured to insert the server index of the server into an upper n bits of a sequence number of the modified synchronization message or n bits of a timestamp value of an options header of the modified synchronization message.

12. The apparatus of claim 7 , wherein the processor is configured to:

compute a hash value based on one or more fields of the synchronization message; and

identify the server index of the server from a mapping of the hash value to the server index of the server.

13. A method, comprising:

receiving, by a processor, a Transmission Control Protocol (TCP) SYN packet comprising a source address field including an address of a client from which the TCP SYN packet is received and a destination address field including an address of a load balancer;

selecting, by the processor, a server to support a TCP connection for the client;

forming, by the processor based on the TCP SYN packet, a modified TCP SYN packet comprising a source address field including the address of the load balancer, a destination address field including an address of the server, the address of the client, a server index of the server, and a value indicative of a size of the server index of the server; and

propagating, by the processor, the modified TCP SYN packet toward the selected server.

14. The method of claim 13 , wherein the server is selected based on at least one of:

a hash value computed based on one or more fields of the TCP SYN packet; or

server performance information associated with one or more servers of a set of servers available for selection as the selected server.

15. The method of claim 13 , wherein the address of the client is inserted into an ACK field of the modified TCP SYN packet, a TCP option header of the modified TCP SYN packet, or a trailer field of the modified TCP SYN packet.

16. The method of claim 13 , wherein forming the modified TCP SYN packet comprises:

inserting at least one timestamp into the modified TCP SYN packet.

17. The method of claim 13 , wherein forming the modified TCP SYN packet comprises inserting the server index of the server into an upper n bits of a sequence number of the modified TCP SYN packet or n bits of a timestamp value of a TCP options header of the modified TCP SYN packet.

18. The method of claim 13 , further comprising:

computing a hash value based on one or more fields of the TCP SYN packet; and

identifying the server index of the server from a mapping of the hash value to the server index of the server.

19. A method, comprising:

receiving, by a processor, a synchronization message comprising a source address field including an address of a client from which the synchronization message is received and a destination address field including an address of a load balancer;

selecting, by the processor, a server to support a connection for the client;

forming, by the processor based on the synchronization message, a modified synchronization message comprising a source address field including the address of the load balancer, a destination address field including an address of the server, the address of the client, a server index of the server, and a value indicative of a size of the server index of the server; and

propagating, by the processor, the modified synchronization message toward the selected server.

20. The method of claim 19 , wherein the server is selected based on at least one of:

a hash value computed based on one or more fields of the synchronization message; or

server performance information associated with one or more servers of a set of servers available for selection as the selected server.

21. The method of claim 19 , wherein the address of the client is inserted into an acknowledgment field of the modified synchronization message, an option header of the modified synchronization message, or a trailer field of the modified synchronization message.

22. The method of claim 19 , wherein forming the modified synchronization message comprises:

inserting at least one timestamp into the modified synchronization message.

23. The method of claim 19 , wherein forming the modified synchronization message comprises inserting the server index of the server into an upper n bits of a sequence number of the modified synchronization message or n bits of a timestamp value of an options header of the modified synchronization message.

24. The method of claim 19 , further comprising:

computing a hash value based on one or more fields of the synchronization message; and

identifying the server index of the server from a mapping of the hash value to the server index of the server.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Sep 3, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT CANADA INC.
Reel/Frame 033683/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2014
From: ALCATEL-LUCENT CANADA INC.
To: ALCATEL LUCENT
Reel/Frame 033231/0434 →
SECURITY AGREEMENT Recorded Jul 22, 2013
From: ALCATEL LUCENT CANADA INC.
To: CREDIT SUISSE AG
Reel/Frame 030851/0623 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2013
From: VAN BEMMEL, JEROEN, MR.
To: ALCATEL-LUCENT CANADA INC.
Reel/Frame 030353/0911 →