US10511534B2ActiveUtilityA1

Stateless distributed load-balancing

90
Assignee: CISCO TECH INCPriority: Apr 6, 2018Filed: Apr 6, 2018Granted: Dec 17, 2019
Est. expiryApr 6, 2038(~11.7 yrs left)· nominal 20-yr term from priority
H04L 47/125H04L 47/19H04L 47/34H04L 47/726
90
PatentIndex Score
6
Cited by
475
References
17
Claims

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

exact text as granted — not AI-modified
What is claimed is: 
     
       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.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.