# US 10,375,159 B2 · Load balancing origin server requests

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,375,159 B2
- Document ID: US10375159B2
- Status: Granted
- Kind: B2
- Application number: 15/581,109
- Filed: 2017-04-28
- Published: 2017-11-02
- Granted: 2019-08-06
- Earliest claimed: 2016-04-28
- Assignees: Fastly, Inc.
- Applicants: Fastly, Inc.
- Inventors: Tyler B. McMullen
- Web page: https://patentgrep.com/patent/US10375159B2

## CPC

- H04L 67/1023: based on a hash applied to IP addresses or costs
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Disclosed herein are enhancements for operating a content delivery network to load balance origin requests to origin servers. In one implementation, a method of operating a content delivery network comprising a plurality of cache nodes that cache content between end user devices and origin servers includes, in a first cache node of the plurality of cache nodes, obtaining distribution information indicative of how each cache node in the plurality of cache nodes has distributed content requests to the origin servers. The method further provides, in the first cache node maintaining a load balancing profile for the plurality of origin servers based on the distribution information, and distributing a content request to an origin server in the plurality of origin servers based at least in part on the load balancing profile for the plurality of origin servers.

## Claims

### Claim 1

A method of operating a content delivery network comprising a plurality of cache nodes that cache content between end user devices and a plurality of origin servers, the method comprising:
in a first cache node of the plurality of cache nodes, obtaining distribution information indicative of how each cache node in the plurality of cache nodes has distributed content requests to the plurality of origin servers;
in the first cache node, maintaining a load balancing profile for the plurality of origin servers based on the distribution information; and
in the first cache node, distributing a content request to an origin server in the plurality of origin servers based at least in part on the load balancing profile for the plurality of origin servers.

### Claim 2 (depends on 1)

The method of claim 1 wherein the distribution information comprises quantities of the content requests distributed to each origin server in the plurality of origin servers.

### Claim 3 (depends on 1)

The method of claim 1 wherein obtaining the distribution information comprises:
receiving a first portion of the distribution information from other cache nodes in the plurality of cache nodes; and
identifying a second portion of the distribution information for the first cache node.

### Claim 4 (depends on 3)

The method of claim 3 wherein receiving the first portion of the distribution information from the other cache nodes in the plurality of cache nodes comprises receiving the first portion of the distribution information as a plurality of reports from the other cache nodes in the plurality of cache nodes.

### Claim 5 (depends on 4)

The method of claim 4 further comprising identifying a timestamp for when each report in the plurality of reports is received by the first cache node, and wherein maintaining the load balancing profile for the plurality of origin servers based on the distribution information comprises maintaining the load balancing profile for the plurality of origin servers based on the distribution information and the timestamps.

### Claim 6 (depends on 1)

The method of claim 1 further comprising, in the first cache node, receiving the content request from an end user device, wherein the content request comprises a request for content that is not yet cached by the cache node.

### Claim 7 (depends on 6)

The method of claim 6 further comprising receiving new content from the origin server in the plurality of origin servers in response to the content request and distributing the new content to the end user device.

### Claim 8 (depends on 7)

The method of claim 7 further comprising caching at least a portion of the new content.

### Claim 9 (depends on 1)

The method of claim 1 wherein the distribution information comprises quantities of data received from each origin server in the plurality of origin servers by the plurality of cache nodes.

### Claim 10

A content delivery network to distribute requests to a plurality of origin servers, the content delivery network comprising:
a plurality of cache nodes that cache content between end user devices and the plurality of origin servers;
a first cache node in the plurality of cache nodes configured to:
obtain distribution information indicative of how each cache node in the plurality of cache nodes has distributed content requests to the origin servers;
maintain a load balancing profile for the plurality of origin servers based on the distribution information; and
distribute a content request to an origin server in the plurality of origin servers based at least in part on the load balancing profile for the plurality of origin servers.

### Claim 11 (depends on 10)

The content delivery network of claim 10 wherein the distribution information comprises quantities of the content requests distributed to each origin server in the plurality of origin servers.

### Claim 12 (depends on 10)

The content delivery network of claim 10 wherein the first cache node configured to obtain the distribution information is configured to receive a first portion of the distribution information from other cache nodes in the plurality of cache nodes and identify a second portion of the distribution information for the first cache node.

### Claim 13 (depends on 12)

The content delivery network of claim 12 wherein the first cache node configured to receive the first portion of the distribution information from the other cache nodes in the plurality of cache nodes is configured to receive the first portion of the distribution information as a plurality of reports from the other cache nodes in the plurality of cache nodes.

### Claim 14 (depends on 13)

The content delivery network of claim 13 wherein the first cache nodes if further configured to identify a timestamp for when each report in the plurality of reports is received by the first cache node and wherein the first cache node configured to maintain the load balancing profile for the plurality of origin servers based on the distribution information is configured to maintain the load balancing profile for the plurality of origin servers based on the distribution information and the timestamps.

### Claim 15 (depends on 10)

The content delivery network of claim 10 wherein the first cache node is further configured to receive the content request from an end user device, wherein the content request comprises a request for content that is not yet cached by the cache node.

### Claim 16 (depends on 15)

The content delivery network of claim 15 wherein the first cache node is further configured to receive new content from the origin server in the plurality of origin servers in response to the content request and distribute the new content to the end user device.

### Claim 17 (depends on 16)

The content delivery network of claim 16 wherein the first cache node is further configured to cache at least a portion of the new content.

### Claim 18

A method of operating a cache node in a content delivery network, the content delivery network comprising a plurality of cache nodes that cache content between end user devices and a plurality of origin servers, the method comprising:
tracking a distribution of content requests sent by the plurality of cache nodes in the content delivery network to the plurality of origin servers;
receiving a request from an end user device for content that is not yet cached by the cache node;
selecting an origin server in the plurality of origin servers to retrieve the requested content based at least in part on the distribution of content requests; and
sending a content request to the selected origin server.

### Claim 19 (depends on 18)

The method of claim 18 wherein the distribution of content requests comprises quantities of the content requests distributed to each origin server in the plurality of origin servers.

### Claim 20 (depends on 18)

The method of claim 18 wherein tracking the distribution of content requests sent by the plurality of cache nodes to the plurality of origin servers comprises receiving first distribution information as a plurality of reports from other cache nodes in the plurality of cache nodes and identifying second distribution information for the cache node, wherein the method further comprises identifying a timestamp for when each report in the plurality of reports is received by the cache node, and wherein selecting the origin server in the plurality of origin servers to retrieve the requested content based at least in part on the distribution of content requests comprises selecting the origin server in the plurality of origin servers to retrieve the requested content based on the distribution of content requests and the timestamps.
