IP Library › Granted Patent US 12,348,422
Granted Patent B1
US 12,348,422 · App. 18/153,865 · Granted Jul 1, 2025

Load-aware hardware load balancer

Inventors: Zhiyuan Yao (Île-de-France, FR); Yoann Desmouceaux (Paris, FR); Mark Townsley (San Francisco, CA)
Assignee: CISCO TECHNOLOGY, INC.
H04L47/125
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 12,348,422
App. No.
18/153,865
Granted
Jul 1, 2025
Kind
B1
Abstract

Embodiments of the present disclosure provide a stateless, load-aware, hardware load balancer that can be implemented in networking environments such as Data Centers. Exemplary systems and apparatuses are able to fairly distribute connection requests while guaranteeing per-connection consistency (PCC) and minimizing processing latency.

Claims (67)

1. A computer-implemented method of directing data traffic among computerized network devices connected over a data transmission network, comprising:

receiving a data request;

identifying application tasks that are currently underway at a plurality of network devices;

calculating a current processing speed of the plurality of network devices based at least in part on the application tasks;

receiving feedback data embedded in packet headers corresponding to data traffic flows, wherein the feedback data comprises an instant server load state score, the current processing speed and a time stamp associated with each of the plurality of network devices;

upon receipt of the feedback data, using the feedback data to calculate weights for each of the plurality of network devices, wherein the weights correspond to load states of each respective network device of the plurality of network devices at respective times during data traffic flows;

using a weighted sampling mechanism for selecting candidate devices from the-plurality of network devices;

tabulating a load state score for each of the candidate devices that are available to complete the data request, wherein the load state score for a respective candidate device is a function of a previous load state score, the current processing speed of the respective candidate device, and a time value corresponding to an elapsed amount of time since the load state score was last updated;

identifying a selected candidate device based at least in part on the tabulated load state scores to complete the data request; and

encapsulating an identifier for the selected candidate device in the packet headers, wherein the encapsulating comprises selecting a partition method from modulo or range division based, at least in part, on a transmission protocol of a respective data traffic flow of the data traffic flows.

2. The computer implemented method of claim 1 , further comprising identifying the selected candidate device based at least in part on a lowest load state score among the candidate devices.

3. The computer implemented method of claim 1 , wherein receiving the data request comprises receiving the data request at an application server on the network.

4. The computer implemented method of claim 1 , further comprising receiving the feedback data at a load balancer used to calculate the weights for the plurality of network devices.

5. The computer implemented method of claim 1 , wherein the feedback data is embedded in at least one of TCP SYN-ACK packets, QUIC Hello packets, DTLS Hello Response, higher bits of a TCP timestamp, a key option field of a Generic Routing Encapsulation header, or least significant bits of 1Pv6 addresses.

6. The computer implemented method of claim 1 , wherein the tabulating comprises evaluating a queue length at each of the candidate devices with the time value.

7. The computer implemented method of claim 1 , wherein the using comprises:

generating probabilities of use and aliases for each of the plurality of network devices, wherein the probabilities distribute packets to network devices with higher weights that correspond to lower load states;

tabulating index values, threshold values, and the aliases in an alias table;

associating the index values with the candidate devices;

determining a quantity of candidate devices that should be considered for completing the respective data request or data flow;

using the quantity as a number of respective hash functions applied to the packet for selecting respective index values within the alias table;

responsive to identifying a new task, associating a random number with each selected respective index value;

for each selected respective index value of the alias table, determining the respective threshold value;

providing either the index value or the alias to a score table by comparing the random number to the threshold for a respective index value; and

identifying a selected candidate device to complete the respective data traffic flow as the candidate device having the lowest load state score.

8. The computer implemented method of claim 1 , further comprising calculating the load state score based at least in part on a formula:

g ′=max(0, g−v (Time( )− t )),

where g′ is a new score, g is the previous load state score, vis the processing speed, and time ( ) is a function that returns a current timestamp and tis a previous timestamp.

9. The computer implemented method of claim 8 ,

wherein: if g is 0, then assign g′=0;

if g is not 0, then compute g′; and

if g′≤0, assign g′=0, and update score g to 0.

10. The computer implemented method of claim 1 , further comprising calculating the load state scores for each of the candidate devices once at initiation of the data traffic flow.

11. The computer implemented method of claim 8 , wherein the previous load state score (g) is calculated based at least in part on the application tasks.

12. The computer implemented method of claim 11 , wherein the previous load state score (g) is selected based at least in part on a variance threshold factor corresponding to a degree to which the application tasks on the respective network device vary in a time domain, wherein:

if the application tasks on a server side are lower than the variance threshold factor, in terms of workload, g can be defined as a current number of active connections; and

if the application tasks on the server side are greater than the variance threshold factor in terms of workload, g can be computed as a sum of expected remaining computations for CPU-bound applications or storage use for IO-bound applications.

13. The computer implemented method of claim 1 , wherein the current processing speed is calculated based at least in part on the application tasks as follows:

if the application tasks are CPU-bound, the current processing speed corresponds to provisioned CPU numbers of the respective network device;

if the application tasks is pure IO-bound, the current processing speed corresponds to provisioned throughput of the respective network device;

if the application tasks are profiled in computer memory at the respective network device, the current processing speed corresponds to a previously calculated score according for available resources at the respective network device; and

if the application tasks are profiled in computer memory at the respective network device, and the application tasks are profiled as complex, the current processing speed corresponds to a moving average of sampled processing times.

14. The computer implemented method of claim 11 , wherein sampled processing times comprise a time interval between outbound reply and the data request.

15. The computer implemented method of claim 1 , wherein:

for connection-id of QUIC connections, assigning connection-id rand ( ) k for a connection for server k (using modulo partition);

for an IPV6 header, predefine 20-bit flow label field for each respective network device by using a different range division based on ranges [k*2{circumflex over ( )}20/N, (k+1)*2{circumflex over ( )}20/N−1],

where N is a number of respective network devices of the plurality of network devices and k is an identifier for the selected candidate device; and

for highest bits of TCP timestamp options, encode the identifiers for each of the respective network devices.

16. The computer implemented method of claim 1 , further comprising, identifying the selected candidate device with a load balancer having a processor and computer memory storing software running the computer implemented method in P4 programming language.

17. A system for directing data traffic among computerized network devices connected over a data transmission network, comprising:

a first network device of a plurality of network devices connected to the data transmission network, the first network device having a computer processor, computer memory and software stored in the computer memory, the first network device configured to implement steps comprising:

receiving a data request;

identifying application tasks that are currently underway at the first network device;

calculating a current processing speed of the first network device based at least in part on the application tasks;

embedding feedback data in packet headers corresponding to data traffic flows from the first network device back to other network devices included in the plurality of network devices, wherein the feedback data comprises an instant server load state score, the current processing speed and a time stamp;

a second network device of the plurality of network devices connected to the data transmission network, the second network device comprising a respective computer processor, a respective computer memory and respective software stored in the respective computer memory, wherein the second network device is configured to implement respective steps comprising:

receiving the feedback data;

using the feedback data to calculate weights for respective network devices of the plurality of network devices, wherein the weights correspond to load states of each respective network device at respective times during the data traffic flows;

using a weighted sampling mechanism for randomly selecting candidate devices from the respective network devices;

tabulating a load state score for each of the candidate devices that are available to complete a respective data traffic flow, wherein the load state score for a respective candidate device is a function of a previous load state score for the respective candidate device, the current processing speed of the respective candidate device, and a time value corresponding to an elapsed amount of time since the load state score was last updated;

identifying a selected candidate device to complete a respective data traffic flow of the data traffic flows; and

encapsulating an identifier for the selected candidate device in the packet headers, wherein the encapsulating comprises selectin a partition method from modulo or range division based, at least in part, on a transmission protocol of a respective data traffic flow of the data traffic flows.

18. The system of claim 17 , wherein the current processing speed is calculated based at least in part on the application tasks as follows:

if the application tasks are CPU-bound, the current processing speed corresponds to provisioned CPU numbers of the first network device;

if the application tasks are pure IO-bound, the current processing speed corresponds to provisioned throughput of the first network device;

if the application tasks are profiled in the computer memory at the first network device, the current processing speed corresponds to a previously calculated score according for available resources at the first network device; and

if the application tasks are profiled in the computer memory at the first network device, and the application tasks are profiled as complex, the current processing speed corresponds to a moving average of sampled processing times.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2023
From: YAO, ZHIYUAN; DESMOUCEAUX, YOANN; TOWNSLEY, MARK
To: CISCO TECHNOLOGY, INC.
Reel/Frame 062431/0860 →
References Cited (30)
US 10320683B2 · Pfister et al. · 2019 [cited by applicant]
US 10452436B2 · Kumar et al. · 2019 [cited by applicant]
US 10523568B2 · Cherukuri et al. · 2019 [cited by applicant]
US 10680955B2 · Pfister et al. · 2020 [cited by applicant]
US 10951691B2 · Mishra et al. · 2021 [cited by applicant]
US 20160080505A1 · Sahin et al. · 2016 [cited by applicant]
US 20170149935A1 · van Bemmel · 2017 [cited by applicant]
US 20170163724A1 · Puri · 2017 [cited by examiner]
US 20180375928A1 · Serenson, III et al. · 2018 [cited by applicant]
US 20190394131A1 · Pfster et al. · 2019 [cited by applicant]
US 20200021528A1 · Sharma et al. · 2020 [cited by applicant]
US 20200120031A1 · Pfister · 2020 [cited by examiner]
US 20200287962A1 · Mishra · 2020 [cited by examiner]
US 20200328977A1 · Pfister et al. · 2020 [cited by applicant]
US 20210058453A1 · Balasubramanian et al. · 2021 [cited by applicant]
Rizzi et al., “Charon: Load-Aware Load-Balancing in P4”, 2021 1st Joint International Workshop on Network Programmability and Automation. (Year: 2021). [cited by examiner]
Borman et al., “TCP Extensions for High Performance”, RFC 7323, Sep. 2014. (Year: 2014). [cited by examiner]
Carmine Rizzi, et al., “Charon: Load-Aware Load-Balancing in P4”, 2021 1st Joint International Workshop on Network Programmability and Automation. 7 pages. [cited by applicant]
Cole J. Smith, “An Analysis of the Alias Method for Discrete Random-Variate Generation”, INFORMS Journal on Computing vol. 17, No. 3, Summer 2005, pp. 321-327. [cited by applicant]
Desmouceaux, Yoann, et al. “6lb: Scalable and application-aware load balancing with segment routing.” IEEE/ACM Transactions on Networking 26.2 (2018): 819-834. 10.1109/TNET.2018.2799242ff. ffhal-02263364f https://ieeexp… [cited by applicant]
Pit-Claudel, Benoît, et al. “Stateless load-aware load balancing in p4.” 2018 IEEE 26th International Conference on Network Protocols (ICNP). IEEE, Sep. 2018, Cambridge, United Kingdom. pp. 418-423, https://ieeexplore.i… [cited by applicant]
Patel, Parveen, et al. “Ananta: Cloud scale load balancing.” ACM SIGCOMM Computer Communication Review 43.4 (2013): 207-218. https://www.ndsl.kaist.edu/˜kyoungsoo/ee807_2014/papers/ananta.pdf. [cited by applicant]
Eisenbud, Daniel E., et al. “Maglev: A fast and reliable software network load balancer.” 13th {USENIX} Symposium on Networked Systems Design and Implementation ({NSDI} 16). 2016:523-535. https://www.usenix.org/system/f… [cited by applicant]
Handigol, Nikhil, et al. “Plug-n-Serve: Load-balancing web traffic using OpenFlow.” ACM Sigcomm Demo 4.5 (2009): 6 https://www.cct.lsu.edu/˜xuelin/openflow/sigcomm09-demo-loadbalancer.pdf. [cited by applicant]
Wang, Richard, Dana Butnariu, and Jennifer Rexford. “OpenFlow-Based Server Load Balancing Gone Wild.” Hot-ICE 11 (2011): 12-12. [cited by applicant]
IPVS (IP Virtual Server) dated Aug. 8, 2012 available on-lie at: http://kb.linuxvirtualserver.org/wiki/IPVS. [cited by applicant]
Aghdai, Ashkan, et al. “Spotlight: Scalable transport layer load balancing for data center networks.” IEEE Transactions on Cloud Computing 10.3 (2020): 2131-2145. https://arxiv.org/abs/1806.08455. [cited by applicant]
Zhang, Jiao, et al. “Fast switch-based load balancer considering application server states.” IEEE/ACM Transactions on Networking 28.3 (2020): 1391-1404. https://ieeexplore.ieee.org/abstract/document/9061132. [cited by applicant]
Aghdai, Ashkan, et al. “In-network congestion-aware load balancing at transport layer.” 2019 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN). IEEE, 2019. https://arxiv.org/pdf/… [cited by applicant]
Miao, Rui, et al. “Silkroad: Making stateful layer-4 load balancing fast and cheap using switching asics.” Proceedings of the Conference of the ACM Special Interest Group on Data Communication. 2017. https://dl.acm.org/… [cited by applicant]