# US 10,375,011 B2 · Enhanced content route selection in content delivery networks

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

- Number: US 10,375,011 B2
- Document ID: US10375011B2
- Status: Granted
- Kind: B2
- Application number: 15/965,240
- Filed: 2018-04-27
- Published: 2018-08-30
- Granted: 2019-08-06
- Earliest claimed: 2015-11-11
- Assignees: Fastly, Inc.
- Applicants: Fastly, Inc.
- Inventors: João Diogo Taveira Araújo
- Web page: https://patentgrep.com/patent/US10375011B2

## CPC

- H04L 61/4511: using domain name system [DNS]
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 2101/659: Internet protocol version 6 [IPv6] addresses
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems, methods, apparatuses, and software for a content delivery network that caches content for delivery to end user devices is presented. In one example, a method includes establishing domain name relationships for use by a top-level DNS to recurse DNS queries to a DNS node associated with the CDN. The method also includes establishing address correlations between prefixed IPv6 network addresses and PQDNs that comprise indicators for at least a routing provider identifier and a cache node grouping. The method also includes receiving recursed DNS queries and responsively translating domain names in the recursed DNS queries into associated IPv6 network addresses to reach content indicated by the domain names, the associated IPv6 network addresses each determined by at least selecting one of the prefixed IPv6 network addresses according to a desired routing provider and a desired cache node grouping indicated in the PQDNs.

## Claims

### Claim 1

A method of operating a domain name system (DNS) node in a content delivery network (CDN), the method comprising:
establishing address correlations between prefixed Internet Protocol version 6 (IPv6) network addresses and partially qualified domain names (PQDNs), wherein each PQDN comprises indicators for a routing provider identifier and a cache node grouping;
receiving recursed DNS queries;
for each of the recursed DNS queries, selecting one of the prefixed IPv6 network addresses according to a desired routing provider and a desired cache node grouping indicated in the PQDN in a given DNS query;
replying to the given DNS query with the one of the prefixed IPv6 network addresses.

### Claim 2 (depends on 1)

The method of claim 1 further comprising:
establishing domain name relationships for use by a top-level domain name system (DNS) to recurse DNS queries to a DNS node associated with the CDN;
wherein the CDN comprises a plurality of sites each having cache nodes that cache content for delivery to end user devices; and
wherein the IPv6 network addresses reach the cache nodes.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
in the DNS node, selecting routing providers for each of the recursed DNS queries, wherein the routing providers route content indicated by the domain names and have associated routing provider indicators;
in the DNS node, selecting cache node groupings for each of the recursed DNS queries, wherein the cache node groupings serve content indicated by the domain names and have associated cache node grouping indicators.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
in the DNS node, forming composite PQDNs from at least the routing provider indicators and the cache node grouping indicators, determining correlated ones of the prefixed IPv6 addresses that correspond to the composite PQDNs using at least the address correlations, and transferring responses to the recursed DNS queries comprising IPv6 network addresses corresponding to the correlated ones of the prefixed IPv6 addresses.

### Claim 5 (depends on 4)

The method of claim 4, wherein forming the composite PQDNs comprises assembling the composite PQDNs with at least a base domain name associated with the content delivery network, the routing provider indicators, and the cache node grouping indicators.

### Claim 6 (depends on 4)

The method of claim 4, further comprising:
in the DNS node, determining the IPv6 network addresses based on the correlated ones of the prefixed IPv6 addresses and further network address bits to form the IPv6 network addresses.

### Claim 7 (depends on 6)

The method of claim 6, wherein bits of the IPv6 network addresses corresponding to the prefixed IPv6 addresses comprise IPv6 locator bits, and wherein the further network address bits comprise IPv6 identifier bits.

### Claim 8 (depends on 3)

The method of claim 3, wherein the routing provider indicators correspond to /36 prefixed IPv6 addresses, and wherein the cache node grouping indicators correspond to /48 prefixed IPv6 addresses.

### Claim 9 (depends on 2)

The method of claim 2, wherein the desired cache node grouping corresponds to a plurality of cache nodes that span one or more physical sites housing the plurality of cache nodes, wherein each of the one or more physical sites are configured to load balance among an associated set of the plurality of cache nodes for received content requests that are associated with the recursed DNS queries.

### Claim 10 (depends on 2)

The method of claim 2, further comprising:
in the DNS node, selecting the desired cache node grouping for each of the recursed DNS queries based on at least estimated network latency for the end user devices to receive content from the desired cache node grouping.

### Claim 11

A method of operating a content delivery network (CDN) comprising a plurality of sites each having cache nodes that cache content for delivery to end user devices, the method comprising:
establishing domain name relationships for use by a top-level domain name system (DNS) to resolve DNS queries to a DNS node associated with the CDN;
in the DNS node, establishing address correlations between prefixed Internet Protocol version 6 (IPv6) network addresses and partially qualified domain names (PQDNs) that comprise indicators for at least a routing provider identifier and a cache node grouping;
in the DNS node, receiving DNS queries and responsively translating domain names in the DNS queries into associated IPv6 network addresses to reach content indicated by the domain names, the associated IPv6 network addresses each determined by at least selecting one of the prefixed IPv6 network addresses according to a desired routing provider and a desired cache node grouping indicated in the PQDNs.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
in the DNS node, selecting routing providers for each of the DNS queries, wherein the routing providers route content indicated by the domain names and have associated routing provider indicators;
in the DNS node, selecting cache node groupings for each of the DNS queries, wherein the cache node groupings serve content indicated by the domain names and have associated cache node grouping indicators.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
in the DNS node, forming composite PQDNs from at least the routing provider indicators and the cache node grouping indicators, determining correlated ones of the prefixed IPv6 addresses that correspond to the composite PQDNs using at least the address correlations, and transferring responses to the DNS queries comprising IPv6 network addresses corresponding to the correlated ones of the prefixed IPv6 addresses.

### Claim 14 (depends on 13)

The method of claim 13, wherein forming the composite PQDNs comprises assembling the composite PQDNs with at least a base domain name associated with the content delivery network, the routing provider indicators, and the cache node grouping indicators.

### Claim 15 (depends on 13)

The method of claim 13, further comprising:
in the DNS node, determining the IPv6 network addresses based on the correlated ones of the prefixed IPv6 addresses and further network address bits to form the IPv6 network addresses.

### Claim 16 (depends on 15)

The method of claim 15, wherein bits of the IPv6 network addresses corresponding to the prefixed IPv6 addresses comprise IPv6 locator bits, and wherein the further network address bits comprise IPv6 identifier bits.

### Claim 17 (depends on 12)

The method of claim 12, wherein the routing provider indicators correspond to /36 prefixed IPv6 addresses, and wherein the cache node grouping indicators correspond to /48 prefixed IPv6 addresses.

### Claim 18 (depends on 11)

The method of claim 11, wherein the desired cache node grouping corresponds to a plurality of cache nodes that span one or more physical sites housing the plurality of cache nodes, wherein each of the one or more physical sites are configured to load balance among an associated set of the plurality of cache nodes for received content requests that are associated with the DNS queries.

### Claim 19 (depends on 11)

The method of claim 11, further comprising:
in the DNS node, selecting the desired cache node grouping for each of the DNS queries based on at least estimated network latency for the end user devices to receive content from the desired cache node grouping.

### Claim 20

A method of operating a domain name system (DNS) node that services a content delivery network (CDN):
receiving recursive DNS queries;
accessing address correlations established between prefixed Internet Protocol version 6 (IPv6) network addresses and partially qualified domain names (PQDNs) that comprise indicators for at least a routing provider identifier and a cache node grouping; and
translating domain names in the recursive DNS queries into associated IPv6 network addresses to reach content indicated by the domain names by at least selecting one of the prefixed IPv6 network addresses according to a desired routing provider and a desired cache node grouping indicated in the PQDNs.
