IP Library Granted Patent US 11,949,647
Granted Patent B2
US 11,949,647 · App. 17/728,407 · Granted Apr 2, 2024

Establishing and using a tunnel from an origin server in a distributed edge compute and routing service

Inventors: Dane Orion Knecht (Austin, TX); John Graham-Cumming (London, GB); Dani Grant (San Francisco, CA); Christopher Philip Branch (Romford, GB); Tom Paseka (San Francisco, CA)
Assignee: CLOUDFLARE, INC.
H04L61/2592H04L12/4633H04L12/4641H04L61/4511H04L67/01H04L67/02H04L67/10H04L67/1017H04L67/1031H04L61/5007
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 11,949,647
App. No.
17/728,407
Granted
Apr 2, 2024
Kind
B2
Abstract

A tunnel is established between a first edge server of a distributed edge compute and routing service and a tunnel client residing on an origin server. Routing rules are installed in the edge servers of the distributed edge compute and routing service to reach the first edge server. The routing rules are based at least in part on traffic information gathered from processing other traffic that traverses the distributed edge compute and routing service. A request for content served by the origin server through the tunnel is received at a second edge server of the distributed edge compute and routing service. A path from the second edge server to the first edge server is determined based on the routing rules. The request is transmitted on the determined path. The first edge server receives the request and transmits the request to the origin server over the tunnel.

Claims (73)

1. A method, comprising:

establishing, with a first tunnel client residing on a first origin server, a first tunnel between a first one of a plurality of edge servers of a distributed edge compute and routing service and the first tunnel client;

installing routing rules in the plurality of edge servers to reach the first one of the plurality of edge servers, wherein the routing rules are based at least in part on traffic information gathered from processing other traffic that traverses the distributed edge compute and routing service;

receiving, at a second one of the plurality of edge servers, a request for content served by the first origin server through the first tunnel;

determining, based on the routing rules, a path from the second one of the plurality of edge servers to the first one of the plurality of edge servers;

transmitting the request on the path from the second one of the plurality of edge servers to the first one of the plurality of edge servers;

receiving, at the first one of the plurality of edge servers, the request; and

transmitting the request from the first one of the plurality of edge servers to the first origin server over the first tunnel.

2. The method of claim 1 , wherein the determined path is determined to be a fastest path to the first origin server through the distributed edge compute and routing service.

3. The method of claim 1 , wherein the determined path is determined to be a most reliable path to the first origin server through the distributed edge compute and routing service.

4. The method of claim 1 , wherein the first tunnel is established between the first one of the plurality of edge servers and the first origin server due to the first one of the plurality of edge servers being closest to the first origin server as determined by an implementation of an anycast protocol.

5. The method of claim 1 , wherein establishing the first tunnel includes:

receiving, at the first one of the plurality of edge servers, a first tunnel connection request that requests the first tunnel be established;

assigning a first IP address for the first tunnel; and

causing a first Domain Name System (DNS) record to be added or changed that associates a hostname with the assigned first IP address for the first tunnel.

6. The method of claim 5 , further comprising:

receiving, at a third one of the plurality of edge servers from a second tunnel client residing on a second origin server, a second tunnel connection request that requests a second tunnel be established between the third one of the plurality of edge servers and the second tunnel client, wherein the second tunnel connection request identifies the hostname;

determining that the first tunnel exists that connects the first one of the plurality of edge servers to the first origin server;

assigning a second IP address for the second tunnel;

causing a second DNS record to be added or changed that associates the hostname with the assigned third IP address for the second tunnel; and

creating a load balancer to balance traffic across the first tunnel and the second tunnel.

7. The method of claim 6 , further comprising:

receiving, from the first tunnel client and the second tunnel client, statistics of the first origin server and the second origin server respectively, wherein the load balancer balances traffic across the first tunnel and the second tunnel using the statistics received from the first tunnel client and the second tunnel client.

8. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor, cause said processor to perform operations comprising:

establishing, with a first tunnel client residing on a first origin server, a first tunnel between a first one of a plurality of edge servers of a distributed edge compute and routing service and the first tunnel client;

installing routing rules in the plurality of edge servers to reach the first one of the plurality of edge servers, wherein the routing rules are based at least in part on traffic information gathered from processing other traffic that traverses the distributed edge compute and routing service;

receiving, at a second one of the plurality of edge servers, a request for content served by the first origin server through the first tunnel;

determining, based on the routing rules, a path from the second one of the plurality of edge servers to the first one of the plurality of edge servers;

transmitting the request on the path from the second one of the plurality of edge servers to the first one of the plurality of edge servers;

receiving, at the first one of the plurality of edge servers, the request; and

transmitting the request from the first one of the plurality of edge servers to the first origin server over the first tunnel.

9. The non-transitory machine-readable storage medium of claim 8 , wherein prior to transmitting the request over the first tunnel, converting the request to an HTTP/2 request.

10. The non-transitory machine-readable storage medium of claim 8 , wherein the operations further comprise:

acquiring a certificate for a hostname to secure an internal connection between a web server running on the first one of the plurality of edge servers and a tunnel service on the first one of the plurality of edge servers that services the first tunnel.

11. The non-transitory machine-readable storage medium of claim 8 , wherein the first tunnel is established between the first one of the plurality of edge servers and the first origin server due to the first one of the plurality of edge servers being closest to the first origin server as determined by an implementation of an anycast protocol.

12. The non-transitory machine-readable storage medium of claim 8 , wherein establishing the first tunnel includes:

receiving, at the first one of the plurality of edge servers, a first tunnel connection request that requests the first tunnel be established;

assigning a first IP address for the first tunnel; and

causing a first Domain Name System (DNS) record to be added or changed that associates a hostname with the assigned first IP address for the first tunnel.

13. The non-transitory machine-readable storage medium of claim 12 , wherein the operations further comprise:

receiving, at a third one of the plurality of edge servers from a second tunnel client residing on a second origin server, a second tunnel connection request that requests a second tunnel be established between the third one of the plurality of edge servers and the second tunnel client, wherein the second tunnel connection request identifies the hostname;

determining that the first tunnel exists that connects the first one of the plurality of edge servers to the first origin server;

assigning a second IP address for the second tunnel;

causing a second DNS record to be added or changed that associates the hostname with the assigned third IP address for the second tunnel; and

creating a load balancer to balance traffic across the first tunnel and the second tunnel.

14. The non-transitory machine-readable storage medium of claim 13 , wherein the operations further comprise:

receiving, from the first tunnel client and the second tunnel client, statistics of the first origin server and the second origin server respectively, wherein the load balancer balances traffic across the first tunnel and the second tunnel using the statistics received from the first tunnel client and the second tunnel client.

15. A distributed edge compute and routing service, comprising:

a plurality of processors; and

a plurality of non-transitory machine-readable storage mediums that store instructions that, when executed by the plurality of processors, causes the distributed edge compute and routing service to perform operations including:

establishing, with a first tunnel client residing on a first origin server, a first tunnel between a first one of a plurality of edge servers of the distributed edge compute and routing service and the first tunnel client;

installing routing rules in the plurality of edge servers to reach the first one of the plurality of edge servers, wherein the routing rules are based at least in part on traffic information gathered from processing other traffic that traverses the distributed edge compute and routing service;

receiving, at a second one of the plurality of edge servers, a request for content served by the first origin server through the first tunnel;

determining, based on the routing rules, a path from the second one of the plurality of edge servers to the first one of the plurality of edge servers;

transmitting the request on the path from the second one of the plurality of edge servers to the first one of the plurality of edge servers;

receiving, at the first one of the plurality of edge servers, the request; and

transmitting the request from the first one of the plurality of edge servers to the first origin server over the first tunnel.

16. The distributed edge compute and routing service of claim 15 , wherein prior to transmitting the request over the first tunnel, converting the request to an HTTP/2 request.

17. The distributed edge compute and routing service of claim 15 , wherein the operations further comprise:

acquiring a certificate for a hostname to secure an internal connection between a web server running on the first one of the plurality of edge servers and a tunnel service on the first one of the plurality of edge servers that services the first tunnel.

18. The distributed edge compute and routing service of claim 15 , wherein the first tunnel is established between the first one of the plurality of edge servers and the first origin server due to the first one of the plurality of edge servers being closest to the first origin server as determined by an implementation of an anycast protocol.

19. The distributed edge compute and routing service of claim 15 , wherein establishing the first tunnel includes:

receiving, at the first one of the plurality of edge servers, a first tunnel connection request that requests the first tunnel be established;

assigning a first IP address for the first tunnel; and

causing a first Domain Name System (DNS) record to be added or changed that associates a hostname with the assigned first IP address for the first tunnel.

20. The distributed edge compute and routing service of claim 19 , wherein the operations further comprise:

receiving, at a third one of the plurality of edge servers from a second tunnel client residing on a second origin server, a second tunnel connection request that requests a second tunnel be established between the third one of the plurality of edge servers and the second tunnel client, wherein the second tunnel connection request identifies the hostname;

determining that the first tunnel exists that connects the first one of the plurality of edge servers to the first origin server;

assigning a second IP address for the second tunnel;

causing a second DNS record to be added or changed that associates the hostname with the assigned third IP address for the second tunnel; and

creating a load balancer to balance traffic across the first tunnel and the second tunnel.

21. The distributed edge compute and routing service of claim 20 , wherein the operations further comprise:

receiving, from the first tunnel client and the second tunnel client, statistics of the first origin server and the second origin server respectively, wherein the load balancer balances traffic across the first tunnel and the second tunnel using the statistics received from the first tunnel client and the second tunnel client.

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 Feb 23, 2024
From: KNECHT, DANE ORION; GRAHAM-CUMMING, JOHN; GRANT, DANI; BRANCH, CHRISTOPHER PHILIP; PASEKA, TOM
To: CLOUDFLARE, INC.
Reel/Frame 066549/0837 →
Continuity (4)
Continuation 16883116 · May 26, 2020
Continuation 16160294 · Oct 15, 2018
Continuation 15719537 · Sep 28, 2017
Related Publication 20230045757A1 · Feb 9, 2023
Cited By (1)
US 12,621,631