IP Library Granted Patent US 12,363,190
Granted Patent B1
US 12,363,190 · App. 17/376,826 · Granted Jul 15, 2025

Weighted load balancing using scaled parallel hashing

Inventors: Abdul Kabbani (San Francisco, CA); Amin Vahdat (Los Altos, CA)
Assignee: Google LLC
H04L67/1023H04L45/24H04L45/7453H04L47/125H04L47/623
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,363,190
App. No.
17/376,826
Granted
Jul 15, 2025
Kind
B1
Abstract

A method for weighted data traffic routing can include receiving a data packet at data switch, where the data switch includes a plurality of egress ports. The method can also include, for each of the egress ports, generating an independent hash value based on one or more fields of the data packet and generating a weighted hash value by scaling the hash value using a scaling factor. The scaling factor can be based on at least two traffic routing weights of a plurality of respective traffic routing weights associated with the plurality of egress ports. The method can further include selecting an egress port of the plurality of egress ports based on the weighted hash value for each of the egress ports and transmitting the data packet using the selected egress port.

Claims (32)

1. A method comprising:

receiving, at a data switch, a data packet;

generating, by the data switch, a plurality of hash values based on one or more fields of the data packet;

generating a plurality of weighted hash values by scaling respective ones of the plurality of hash values using respective ones of a plurality of scaling factors, each scaling factor being based on at least two traffic routing weights of a plurality of respective traffic routing weights, wherein the plurality of hash values are generated using a plurality of independent hash functions;

selecting a weighted hash value from the among the plurality of weighted hash values, and

transmitting, by the data switch, the data packet based on the selected weighted hash value.

2. The method of claim 1 , wherein the one or more fields of the data packet include one or more fields of a header of the data packet, the one or more fields of the header of the data packet having fixed values for each received data packet of a data flow associated with the data packet.

3. The method of claim 1 , wherein the one or more fields of the data packet include source address, destination address, and protocol.

4. The method of claim 1 , wherein each of the plurality of scaling factors is a ratio of a probability in a joint probability distribution.

5. The method of claim 4 , wherein the joint probability distribution uses values iteratively solved to determine a given scaling factor.

6. The method of claim 1 , wherein each scaling factor of the plurality of scaling factors is associated with a given egress port of a plurality of egress ports.

7. The method of claim 6 , wherein a scaling factor for a first egress port is determined based on a probability of an egress port with a lowest routing weight of the respective traffic routing weights being selected in a joint probability distribution, the probability of the given egress port being selected in the joint probability distribution being proportional with a routing weight associated with the first egress port.

8. The method of claim 1 , wherein the plurality of respective traffic routing weights are normalized such that a smallest routing weight of the plurality of respective traffic routing weights has a normalized value of 1.

9. The method of claim 1 , wherein generating, for the data packet, the plurality of hash values includes normalizing a plurality of respective hash values to respective values in a range of 0 to 1.

10. The method of claim 1 , further comprising selecting, for the data packet, an egress port of the switch based on the selected weighted hash values.

11. The method of claim 10 , wherein selecting, for the data packet, the egress port includes selecting an egress port of a plurality of egress ports having a highest respective scaled hash value.

12. A data switch, comprising:

at least one memory that is configured to store instructions; and

at least one processor that is operably coupled to the at least one memory and that is configured to process the instructions to cause the data switch to:

receive a data packet;

generate a plurality of hash values based on one or more fields of the received data packet;

generate a plurality of weighted hash values by scaling respective ones of the plurality of hash values using respective ones of a plurality of scaling factors, each scaling factor being based on at least two traffic routing weights of a plurality of respective traffic routing weights, wherein the plurality of hash values are generated using a plurality of independent hash functions;

selecting a weighted hash value from the among the plurality of weighted hash values;

and

transmit the received data packet based on the weighted hash value.

13. The data switch of claim 12 , wherein the one or more fields of the data packet include one or more fields of a header of the data packet, the one or more fields of the header of the data packet having fixed values for each received data packet of a data flow associated with the data packet.

14. The data switch of claim 12 , wherein the one or more fields of the data packet include source address, destination address, and protocol.

15. The data switch of claim 12 , wherein each of the plurality of scaling factors is a ratio of a probability in a joint probability distribution.

16. The data switch of claim 15 , wherein the joint probability distribution uses values iteratively solved to determine the scaling factor.

17. The data switch of claim 12 , wherein each scaling factor of the plurality of scaling factors is associated with a given egress port of a plurality of egress ports.

18. The data switch of claim 17 , wherein a scaling factor for a first egress port is determined based on a probability of an egress port with a lowest routing weight of the respective traffic routing weights being selected in a joint probability distribution, the probability of the given egress port being selected in the joint probability distribution being proportional with a routing weight associated with the first egress port.

19. The data switch of claim 12 , wherein the plurality of respective traffic routing weights are normalized such that a smallest routing weight of the plurality of respective traffic routing weights has a normalized value of 1.

Assignments (2)
CHANGE OF NAME Recorded Jul 26, 2021
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 057044/0497 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2021
From: KABBANI, ABDUL; VAHDAT, AMIN
To: GOOGLE INC.
Reel/Frame 056882/0773 →
Continuity (3)
Continuation 15396512 · Dec 31, 2016
Continuation 14217921 · Mar 18, 2014
Provisional Application 61950024 · Mar 8, 2014
References Cited (80)
US 6356546B1 · Beshai · 2002 [cited by examiner]
US 6580721B1 · Beshai · 2003 [cited by examiner]
US 6721800B1 · Basso · 2004 [cited by examiner]
US 6757742B1 · Viswanath · 2004 [cited by applicant]
US 6765866B1 · Wyatt · 2004 [cited by examiner]
US 6888797B1 · Cao et al. · 2005 [cited by applicant]
US 7246148B1 · Phillips et al. · 2007 [cited by applicant]
US 7523218B1 · Sahni · 2009 [cited by examiner]
US 7697432B2 · Yu · 2010 [cited by examiner]
US 7818303B2 · Buehrer et al. · 2010 [cited by applicant]
US 7843926B1 · Muller · 2010 [cited by examiner]
US 7898959B1 · Arad · 2011 [cited by examiner]
US 8111649B1 · Agarwall · 2012 [cited by examiner]
US 8259585B1 · S P et al. · 2012 [cited by applicant]
US 8344853B1 · Warner et al. · 2013 [cited by applicant]
US 8589688B2 · Minematsu · 2013 [cited by applicant]
US 8982700B1 · Zhou · 2015 [cited by examiner]
US 9143449B2 · Valenza et al. · 2015 [cited by applicant]
US 9565114B1 · Kabbani · 2017 [cited by examiner]
US 9717011B2 · Huang et al. · 2017 [cited by applicant]
US 20030016666A1 · Okamoto · 2003 [cited by examiner]
US 20030105976A1 · Copeland, III · 2003 [cited by examiner]
US 20050013300A1 · Akahane et al. · 2005 [cited by applicant]
US 20050229254A1 · Singh · 2005 [cited by examiner]
US 20060018262A1 · Boulanger et al. · 2006 [cited by applicant]
US 20060178153A1 · Tenny · 2006 [cited by examiner]
US 20060198393A1 · Lamy et al. · 2006 [cited by applicant]
US 20070230489A1 · Cornett · 2007 [cited by examiner]
US 20070288760A1 · Euchner · 2007 [cited by examiner]
US 20080307524A1 · Singh · 2008 [cited by examiner]
US 20090022321A1 · Saito et al. · 2009 [cited by applicant]
US 20090026867A1 · Haruno et al. · 2009 [cited by applicant]
US 20090116488A1 · Schollmeier · 2009 [cited by examiner]
US 20090268674A1 · Liu · 2009 [cited by examiner]
US 20100275028A1 · Takashima · 2010 [cited by applicant]
US 20100302935A1 · Zhang · 2010 [cited by examiner]
US 20110013638A1 · Matthews · 2011 [cited by examiner]
US 20110013639A1 · Matthews · 2011 [cited by examiner]
US 20110075559A1 · Katsura et al. · 2011 [cited by applicant]
US 20110145260A1 · Ichino · 2011 [cited by applicant]
US 20110161657A1 · So · 2011 [cited by examiner]
US 20110188503A1 · Hewson · 2011 [cited by examiner]
US 20110202612A1 · Craig · 2011 [cited by examiner]
US 20110310739A1 · Aybay · 2011 [cited by examiner]
US 20120093158A1 · Chiba · 2012 [cited by applicant]
US 20120170575A1 · Mehra · 2012 [cited by examiner]
US 20120263048A1 · Chen et al. · 2012 [cited by applicant]
US 20130155985A1 · Skoric et al. · 2013 [cited by applicant]
US 20130201989A1 · Hu · 2013 [cited by examiner]
US 20130232104A1 · Goyal · 2013 [cited by examiner]
US 20130308455A1 · Kapadia · 2013 [cited by examiner]
US 20130329584A1 · Ghose · 2013 [cited by examiner]
US 20140032156A1 · Sanyal · 2014 [cited by examiner]
US 20140040433A1 · Russell, Jr. · 2014 [cited by examiner]
US 20140040514A1 · Li · 2014 [cited by examiner]
US 20140122743A1 · Di Benedetto et al. · 2014 [cited by applicant]
US 20140181298A1 · Wang · 2014 [cited by examiner]
US 20140188893A1 · Kobayashi · 2014 [cited by examiner]
US 20140198656A1 · Venkatesh · 2014 [cited by examiner]
US 20140237097A1 · Riikonen · 2014 [cited by examiner]
US 20140293978A1 · Yang et al. · 2014 [cited by applicant]
US 20140301394A1 · Arad · 2014 [cited by examiner]
US 20150078375A1 · Hendel · 2015 [cited by examiner]
US 20150163140A1 · Rovner · 2015 [cited by examiner]
US 20150180782A1 · Rimmer · 2015 [cited by examiner]
US 20150180790A1 · Rimmer · 2015 [cited by examiner]
US 20150222533A1 · Birrittella · 2015 [cited by examiner]
US 20150244617A1 · Nakil · 2015 [cited by examiner]
US 20150248458A1 · Sakamoto · 2015 [cited by applicant]
US 20150296399A1 · Huang et al. · 2015 [cited by applicant]
US 20150326476A1 · Ye · 2015 [cited by examiner]
US 20150358284A1 · Arkko et al. · 2015 [cited by applicant]
US 20160050272A1 · Raduchel · 2016 [cited by examiner]
US 20160191421A1 · Tsuji et al. · 2016 [cited by applicant]
Liu, et al, “zUpdate: Updating Data Center Networks with Zero Loss”, SIGCOMM'13, Aug. 12-16, 2013, 12 pages. [cited by applicant]
Al-Fares, Mohammad, et al. A Scalable, Commodity Data Center Network Architecture, ACM SIGCOMM Computer Communication Review, vol. 38. No. 4, pp. 63-74, ACM, 2008. [cited by applicant]
Zhou, Junlan, et al. WCMP: Weighted Cost Multipathing for Improved Fairness in Data Centers, Proceedings of the Ninth European Conference on Computer Systems. ACM, Apr. 13-16, 2014. [cited by applicant]
Office Action issued Dec. 21, 2015 in U.S. Appl. No. 14/217,921. [cited by applicant]
Office Action issued Jun. 8, 2016 in U.S. Appl. No. 14/217,921. [cited by applicant]
Notice of Allowance issued Oct. 31, 2016 in U.S. Appl. No. 14/217,921. [cited by applicant]