IP Library Granted Patent US 12,395,377
Granted Patent B2
US 12,395,377 · App. 18/516,543 · Granted Aug 19, 2025

Traffic load balancing between a plurality of points of presence of a cloud computing infrastructure

Inventors: David Paul Wragg (London, GB); Ólafur GuÐmundsson (Chevy Chase, MD); Lorenz Mathias Bauer (London, GB); Arthur Fabre (London, GB); Marek Przemyslaw Majkowski (Warsaw, PL)
Assignee: CLOUDFLARE, INC.
H04L67/1008H04L45/22H04L47/122H04L67/1001
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,395,377
App. No.
18/516,543
Granted
Aug 19, 2025
Kind
B2
Abstract

Methods and system of traffic load balancing between a plurality of Points of Presence (PoP) of a cloud computing infrastructure are described. A first PoP of multiple PoPs of cloud computing infrastructure that provides a cloud computing service receives a packet. The packet includes as a destination address an anycast address advertised by the first PoP for reaching the cloud computing service. The first PoP identifies a network address of a second PoP that is different from the first PoP. The first PoP forwards the packets as an encapsulated packet to the second PoP to be processed in the second PoP according to the cloud computing service.

Claims (85)

1. A method of load balancing traffic between a plurality of Points of Presence (PoPs) of a cloud computing infrastructure that provides a cloud computing service to one or more users, the method comprising:

receiving feedback data from the plurality of PoPs, the feedback data related to states of compute servers in the plurality of PoPs;

identifying, based on the feedback data, a first POP of the plurality of PoPs from which traffic needs to be forwarded to another POP;

identifying, based on the feedback data, a second POP of the plurality of PoPs towards which traffic can be forwarded from another POP;

determining an inter-POP forwarding policy defining an amount of first traffic received by the first POP to forward to the second POP;

transmitting the inter-POP forwarding policy to the plurality of PoPs;

receiving, at the first POP, the inter-PoP forwarding policy;

converting, at the first PoP, the inter-POP forwarding policy to forwarding table entries of a forwarding table used in the first POP, wherein each forwarding table entry includes a packet identifier that corresponds to a packet flow and a network address associated with the second POP, wherein the forwarding table entries are configured to direct a proportion of packet flows that align with the defined amount of traffic received by the first POP to be forwarded to the second POP;

receiving, at the first POP, a first packet;

determining a first packet identifier of the first packet that identifies a first packet flow;

determining, based on a first forwarding table entry of the forwarding table for the first packet identifier, a first network address associated with the second PoP; and

transmitting the first packet to the first network address associated with the second PoP.

2. The method of claim 1 , wherein identifying, based on the feedback data, the first POP of the plurality of PoPs from which the traffic needs to be forwarded to another PoP comprises:

determining that a CPU load of at least one compute server at the first POP exceeds a threshold value.

3. The method of claim 1 , wherein identifying, based on the feedback data, the second POP of the of the plurality of PoPs towards which the traffic can be forwarded from another POP comprises:

determining that a CPU load of one or more compute servers at the second PoP is lower than a threshold value.

4. The method of claim 1 , wherein determining the inter-PoP forwarding policy defining the amount of the first traffic received by the first POP to forward to the second POP further comprises:

specifying a first amount of the first traffic of a first traffic type to be forwarded from the first POP to the second POP, wherein the first traffic type is associated with a first cloud computing service provided by the cloud computing infrastructure; and

specifying a second amount of the first traffic of a second traffic type to be forwarded from the first POP to the second POP, wherein the second traffic type is associated with a second cloud computing service provided by the cloud computing infrastructure.

5. The method of claim 4 , further comprising:

receiving updated feedback data from the plurality of PoPs; and

modifying the specified first amount of the first traffic of the first traffic type to be forwarded from the first POP to the second POP and the specified second amount of the first traffic of the second traffic type to be forwarded from the first POP to the second PoP based on the updated feedback data.

6. The method of claim 1 , further comprising:

identifying, based on the feedback data, a third POP of the plurality of PoPs towards which traffic can be forwarded from another PoP;

specifying a first amount of the first traffic of a first traffic type to be forwarded from the first POP to the second POP, wherein the first traffic type is associated with a first cloud computing service provided by the cloud computing infrastructure; and

specifying a second amount of the first traffic of a second traffic type to be forwarded from the first POP to the third POP, wherein the second traffic type is associated with a second cloud computing service provided by the cloud computing infrastructure.

7. The method of claim 1 , wherein the feedback data for a compute server in the plurality of PoPs includes one or more of a first parameter indicating a CPU load of the compute server, a second parameter measuring a Quality of Service provided by a service implemented on the compute server, and a measure of latency of the service.

8. A system, comprising:

a first non-transitory machine-readable storage medium that provides instructions that, if executed by a first processor of a central controller of a cloud computing infrastructure that provides a cloud computing service to one or more users, will cause said central controller to perform operations including:

receiving feedback data from a plurality of Point of Presences (PoPs) of the cloud computing infrastructure, the feedback data related to states of compute servers in the plurality of PoPs;

identifying, based on the feedback data, a first POP of the plurality of PoPs from which traffic needs to be forwarded to another POP;

identifying, based on the feedback data, a second POP of the plurality of PoPs towards which traffic can be forwarded from another POP;

determining an inter-POP forwarding policy defining an amount of first traffic received by the first POP to forward to the second POP; and

transmitting the inter-PoP forwarding policy to the plurality of PoPs;

a second non-transitory machine-readable storage medium that provides instructions that, if executed by one or more second processors of the first PoP will cause operations to be performed including:

receiving, at the first POP, the inter-POP forwarding policy;

converting, at the first POP, the inter-PoP forwarding policy to forwarding table entries of a forwarding table used in the first POP, wherein each forwarding table entry includes a packet identifier that corresponds to a packet flow and a network address associated with the second POP, wherein the forwarding table entries are configured to direct a proportion of packet flows that align with the defined amount of traffic received by the first POP to be forwarded to the second PoP;

receiving, at the first POP, a first packet;

determining a first packet identifier of the first packet that identifies a first packet flow;

determining, based on a first forwarding table entry of the forwarding table for the first packet identifier, a first network address associated with the second POP; and

transmitting the first packet to the first network address associated with the second POP.

9. The system of claim 8 , wherein identifying, based on the feedback data, the first POP of the plurality of PoPs from which the traffic needs to be forwarded to another POP further causes the central controller to perform operations including:

determining that a CPU load of at least one compute server at the first POP exceeds a threshold value.

10. The system of claim 8 , wherein identifying, based on the feedback data, the second POP of the plurality of PoPs towards which the traffic can be forwarded from another POP further causes the central controller to perform operations including:

determining that a CPU load of one or more compute servers at the second POP is lower than a threshold value.

11. The system of claim 8 , wherein determining the inter-POP forwarding policy defining the amount of the first traffic received by the first PoP to forward to the second POP further causes the central controller to perform operations including:

specifying a first amount of the first traffic of a first traffic type to be forwarded from the first PoP to the second POP, wherein the first traffic type is associated with a first cloud computing service provided by the cloud computing infrastructure; and

specifying a second amount of the first traffic of a second traffic type to be forwarded from the first POP to the second POP, wherein the second traffic type is associated with a second cloud computing service provided by the cloud computing infrastructure.

12. The system of claim 11 , wherein the instructions further cause the central controller to perform operations including:

receiving updated feedback data from the plurality of PoPs; and

modifying the specified first amount of the first traffic of the first traffic type to be forwarded from the first POP to the second PoP and the specified second amount of the first traffic of the second traffic type to be forwarded from the first PoP to the second PoP based on the updated feedback data.

13. The system of claim 8 , wherein the instructions further cause the central controller to perform operations including:

identifying, based on the feedback data, a third POP of the plurality of PoPs towards which traffic can be forwarded from another POP;

specifying a first amount of the first traffic of a first traffic type to be forwarded from the first PoP to the second POP, wherein the first traffic type is associated with a first cloud computing service provided by the cloud computing infrastructure; and

specifying a second amount of the first traffic of a second traffic type to be forwarded from the first POP to the third POP, wherein the second traffic type is associated with a second cloud computing service provided by the cloud computing infrastructure.

14. The system of claim 8 , wherein the feedback data for a compute server in the plurality of PoPs includes one or more of a first parameter indicating a CPU load of the compute server, a second parameter measuring a Quality of Service provided by a service implemented on the compute server, and a measure of latency of the service.

15. A system, comprising:

a central controller of a cloud computing infrastructure that includes a first processor; and a non-transitory machine-readable storage medium that provides instructions that, if executed by the first processor, will cause the central controller to perform operations including:

receiving feedback data from a plurality of Point of Presences (PoPs) of the cloud computing infrastructure, the feedback data related to states of compute servers in the plurality of PoPs;

identifying, based on the feedback data, a first POP of the plurality of PoPs from which traffic needs to be forwarded to another PoP;

identifying, based on the feedback data, a second POP of the plurality of PoPs towards which traffic can be forwarded from another POP;

determining an inter-POP forwarding policy defining an amount of first traffic received by the first POP to forward to the second POP; and

transmitting the inter-POP forwarding policy to the plurality of PoPs;

the first POP that includes a plurality of compute servers that each include a second non-transitory machine readable storage medium that provides instructions that, if executed by one or more second processors of the first POP will cause operations to be performed including:

receiving, at the first POP, the inter-PoP forwarding policy;

converting, at the first POP, the inter-POP forwarding policy to forwarding table entries of a forwarding table used in the first POP, wherein each forwarding table entry includes a packet identifier that corresponds to a packet flow and a network address associated with the second PoP, wherein the forwarding table entries are configured to direct a proportion of packet flows that align with the defined amount of traffic received by the first POP to be forwarded to the second POP;

receiving, at the first POP, a first packet;

determining a first packet identifier of the first packet that identifies a first packet flow;

determining, based on a first forwarding table entry of the forwarding table for the first packet identifier, a first network address associated with the second POP; and

transmitting the first packet to the first network address associated with the second PoP.

16. The system of claim 15 , wherein identifying, based on the feedback data, the first POP of the plurality of PoPs from which the traffic needs to be forwarded to another POP causes the central controller to perform operations comprising:

determining that a CPU load of at least one compute server at the first POP exceeds a threshold value.

17. The system of claim 15 , wherein identifying, based on the feedback data, the second POP of the plurality of PoPs towards which the traffic can be forwarded from another POP causes the central controller to perform operations comprising:

determining that a CPU load of one or more compute servers at the second POP is lower than a threshold value.

18. The system of claim 15 , wherein determining the inter-PoP forwarding policy defining the amount of the first traffic received by the first POP to forward to the second POP causes the central controller to perform operations comprising:

specifying a first amount of the first traffic of a first traffic type to be forwarded from the first PoP to the second POP, wherein the first traffic type is associated with a first cloud computing service provided by the cloud computing infrastructure; and

specifying a second amount of the first traffic of a second traffic type to be forwarded from the first POP to the second POP, wherein the second traffic type is associated with a second cloud computing service provided by the cloud computing infrastructure.

19. The system of claim 18 , wherein the operations performed by the central controller further comprise:

receiving updated feedback data from the plurality of PoPs; and

modifying the specified first amount of the first traffic of the first traffic type to be forwarded from the first POP to the second POP and the specified second amount of the first traffic of the second traffic type to be forwarded from the first POP to the second PoP based on the updated feedback data.

20. The system of claim 15 , wherein the operations performed by the central controller further comprise:

identifying, based on the feedback data, a third POP of the plurality of PoPs towards which traffic can be forwarded from another POP;

specifying a first amount of the first traffic of a first traffic type to be forwarded from the first PoP to the second POP, wherein the first traffic type is associated with a first cloud computing service provided by the cloud computing infrastructure; and

specifying a second amount of the first traffic of a second traffic type to be forwarded from the first POP to the third POP, wherein the second traffic type is associated with a second cloud computing service provided by the cloud computing infrastructure.

21. The system of claim 15 , wherein the feedback data for a compute server in the plurality of PoPs includes one or more of a first parameter indicating a CPU load of the compute server, a second parameter measuring a Quality of Service provided by a service implemented on the compute server, and a measure of latency of the service.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2023
From: WRAGG, DAVID PAUL; GUÐMUNDSSON, ÓLAFUR; BAUER, LORENZ MATHIAS; FABRE, ARTHUR; MAJKOWSKI, MAREK PRZEMYSLAW
To: CLOUDFLARE, INC.
Reel/Frame 065640/0159 →
Continuity (3)
Continuation 17481181 · Sep 21, 2021
Continuation 17023209 · Sep 16, 2020
Related Publication 20240089315A1 · Mar 14, 2024
References Cited (28)
US 7369557B1 · Sinha · 2008 [cited by applicant]
US 8843998B2 · Fu et al. · 2014 [cited by applicant]
US 9379981B1 · Zhou et al. · 2016 [cited by applicant]
US 9467378B1 · Stark et al. · 2016 [cited by applicant]
US 9584328B1 · Graham-Cumming · 2017 [cited by applicant]
US 9680951B1 · Graham-Cumming · 2017 [cited by examiner]
US 10567333B2 · Sawyer et al. · 2020 [cited by applicant]
US 10931743B1 · Chou et al. · 2021 [cited by applicant]
US 11621891B1 · Chou et al. · 2023 [cited by applicant]
US 20030198189A1 · Roberts et al. · 2003 [cited by applicant]
US 20140122698A1 · Batrouni · 2014 [cited by examiner]
US 20150215388A1 · Kontothanassis et al. · 2015 [cited by applicant]
US 20170366604A1 · McDuff · 2017 [cited by applicant]
US 20180006952A1 · Nakakura et al. · 2018 [cited by applicant]
US 20180367498A1 · Bliss · 2018 [cited by examiner]
US 20190208554A1 · Ruiz et al. · 2019 [cited by applicant]
US 20200213154A1 · Han et al. · 2020 [cited by applicant]
Eisenbud et al., “Maglev: A Fast and Reliable Software Network Load Balancer”, 13th USENIX Symposium on Networked Systems Design and Implementation (NSDI '16), Available Online at <https://www.usenix.org/system/files/co… [cited by applicant]
Github, “Glb-Director”, Available Online at <https://github.com/github/glb-director/tree/master/src/glb-redirect>, Jan. 2020, 1 page. [cited by applicant]
Herbert et al., “Generic UDP Encapsulation: Draft-ietf-intarea-gue-09”, Internet Draft, Available online at <https://datatracker.ietf.org/doc/draft-ietf-intarea-gue/?include_text=1>, Oct. 26, 2019, 24 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/481,181, Jan. 6, 2023, 18 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/023,209, May 19, 2021, 9 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/481,181, Jul. 19, 2023, 10 pages. [cited by applicant]
Olteanu et al., “Stateless Datacenter Load-balancing with Beamer”, 15th USENIX Symposium on Networked Systems Design and Implementation, Available Online at <https://www.usenix.org/system/files/conference/nsdi18/nsdi18-… [cited by applicant]
Olteanu et al., “Stateless Datacenter Load-balancing with Beamer”, Available Online at <https://www.usenix.org/conference/nsdi18/presentation/olteanu>, 2018, 40 slides. [cited by applicant]
Shirokov et al., “Open-sourcing Katran, a Scalable Network Load Balancer”, Open Source, Available Online at <https://engineering.fb.com/open-source/open-sourcing-katran-a-scalable-network-load-balancer/>, May 22, 2018, … [cited by applicant]
Unknown author, “What is tunneling or port forwarding”, Definition from TechTarget (Year: 2007). [cited by applicant]
Yong et al., “GRE-in-UDP Encapsulation”, RFC: 8086, Internet Engineering Task Force (IETF), Mar. 2017, pp. 1-27. [cited by applicant]