IP Library › Granted Patent US 10,511,534
Granted Patent B2
US 10,511,534 · App. 15/947,425 · Granted Dec 17, 2019

Stateless distributed load-balancing

Inventors: Pierre Pfister (Angers, FR); Yoann Desmouceaux (Paris, FR); William Mark Townsley (Paris, FR)
Assignee: CISCO TECHNOLOGY, INC.
H04L47/125H04L47/34H04L47/726
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 10,511,534
App. No.
15/947,425
Granted
Dec 17, 2019
Kind
B2
Abstract

Aspects of the subject technology provide state-less load-balancing using sequence numbers to identify traffic flows. In some implementations, a process of the technology can include steps for receiving, by a load-balancer, a first packet from a source device including a request to access the service provided by a server coupled to the load-balancer, determining a load for each of the servers, wherein each server is associated with a unique set of sequence numbers, and forwarding the request to a target server selected based on its corresponding load, and wherein the request is configured to cause the target server to issue a reply to the source device. Systems and machine-readable media are also provided.

Claims (47)

1. A computer-implemented method comprising:

receiving, by a load-balancer, a first packet from a source device, the first packet comprising a request to access a service provided by a server coupled to the load-balancer;

determining, by the load-balancer, a load for each of a plurality of servers, each of the plurality of servers is associated with a unique set of sequence numbers; and

forwarding the request to a target server selected from among the plurality of servers based on the load for each of the plurality of servers, the request configured to cause the target server to issue a reply to the source device, the reply comprising a sequence number selected from the unique set of sequence numbers corresponding with the target server,

wherein

the load-balancer includes a table associating each of the plurality of servers with its corresponding unique set of sequence numbers.

2. The computer-implemented method of claim 1 , further comprising:

receiving, by the load-balancer, a second packet from the source device, wherein a header of the second packet contains the sequence number; and

routing, by the load-balancer, the second packet to the target server based on the sequence number in the header.

3. The computer-implemented method of claim 2 , wherein routing the second packet to the target server includes:

identifying the target server as a destination for the second packet based on the sequence number; and

forwarding the second packet to the target server.

4. The computer-implemented method of claim 1 , wherein the unique set of sequence numbers corresponding with the target server are Transmission Control Protocol (TCP) sequence numbers.

5. The computer-implemented method of claim 1 , wherein the reply comprises at least one packet for which a packet header contains the sequence number.

6. The computer-implemented method of claim 1 , wherein the load-balancer is configured to disregard state information for servers associated with active traffic flows.

7. A system comprising:

one or more processors;

a network interface coupled to the one or more processors, the network interface configured to transact data with a computer network; and

a non-transitory computer-readable storage medium coupled to the one or more processors, the non-transitory computer-readable storage medium containing instructions which, when executed by the one or more processors, cause the system to:

receive, by a load-balancer, a first packet from a source device, the first packet comprising a request to access a service provided by a server coupled to the load-balancer;

determine, by the load-balancer, a load for each of a plurality of servers, each of the plurality of servers is associated with a unique set of sequence numbers; and

forward the request to a target server selected from among the plurality of servers based on the load for each of the plurality of servers, the request configured to cause the target server to issue a reply to the source device, the reply comprising a sequence number selected from the unique set of sequence numbers corresponding with the target server,

wherein

the load-balancer includes a table associating each of the plurality of servers with its corresponding unique set of sequence numbers.

8. The system of claim 7 , wherein the operations include:

receiving, by the load-balancer, a second packet from the source device, wherein a header of the second packet contains the sequence number; and

routing, by the load-balancer, the second packet to the target server based on the sequence number in the header of the second packet.

9. The system of claim 8 , wherein routing the second packet to the target server includes:

identifying the target server as a destination for the second packet based on the sequence number; and

forwarding the second packet to the target server.

10. The system of claim 7 , wherein the unique set of sequence numbers corresponding with the target server are Transmission Control Protocol (TCP) sequence numbers.

11. The system of claim 7 , wherein the reply comprises at least one packet for which a packet header contains the sequence number.

12. The system of claim 7 , wherein the load-balancer is configured to disregard state information for servers associated with active traffic flows.

13. A non-transitory computer-readable storage medium comprising instructions stored therein, which when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving, by a load-balancer, a first packet from a source device, the first packet comprising a request to access a service provided by a server coupled to the load-balancer;

determining, by the load-balancer, a load for each of a plurality of servers, each of the plurality of servers is associated with a unique set of sequence numbers; and

forwarding the request to a target server selected from among the plurality of servers based on the load for each of the plurality of servers, the request configured to cause the target server to issue a reply to the source device, the reply comprising a sequence number selected from the unique set of sequence numbers corresponding with the target server,

wherein

the load-balancer includes a table associating each of the plurality of servers with its corresponding unique set of sequence numbers.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the operations include:

receiving, by the load-balancer, a second packet from the source device, wherein a header of the second packet contains the sequence number; and

routing, by the load-balancer, the second packet to the target server based on the sequence number in the header of the second packet.

15. The non-transitory computer-readable storage medium of claim 14 , wherein routing the second packet to the target server includes:

identifying the target server as a destination for the second packet based on the sequence number; and

forwarding the second packet to the target server.

16. The non-transitory computer-readable storage medium of claim 13 , wherein the unique set of sequence numbers corresponding with the target server are Transmission Control Protocol (TCP) sequence numbers.

17. The non-transitory computer-readable storage medium of claim 13 , wherein the reply comprises at least one packet for which a packet header contains the sequence number.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2018
From: PFISTER, PIERRE; DESMOUCEAUX, YOANN; TOWNSLEY, WILLIAM MARK
To: CISCO TECHNOLOGY, INC.
Reel/Frame 045464/0455 →
Continuity (1)
Related Publication 20190312811A1 · Oct 10, 2019