# US 10,375,016 B1 · Managing domain name system (DNS) record cache across multiple DNS servers using multicast communication

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

- Number: US 10,375,016 B1
- Document ID: US10375016B1
- Status: Granted
- Kind: B1
- Application number: 16/208,438
- Filed: 2018-12-03
- Granted: 2019-08-06
- Earliest claimed: 2018-04-02
- Assignees: Cloudflare, Inc.
- Applicants: Cloudflare, Inc.
- Inventors: Marek Vavrusa; Anbang Wen
- Web page: https://patentgrep.com/patent/US10375016B1

## CPC

- H04L 12/1881: {with schedule organisation, e.g. priority, sequence management}
- H04L 61/5046: Resolving address allocation conflicts; Testing of addresses (testing when self-assigning an address H04L61/5092)
- H04L 12/18: for broadcast or conference {, e.g. multicast}
- H04L 61/4511: using domain name system [DNS]
- H04L 61/4552: Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
- H04L 61/5069: for group communication, multicast communication or broadcast communication
- H04L 61/58: Caching of addresses or names
- H04L 67/1036: Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A Domain Name System (DNS) resolver node receives a first DNS query from a first client device. The resolver node determines that it cannot answer the query using its local cache so it performs a recursive query to obtain the answer. The answer is sent to the first client and stored in its local cache. The resolver node further transmits the answer to multiple other resolver nodes that are part of the same cluster so they can update their respective local cache with the information. Upon receiving a message from another resolver node that includes a set of resource record(s) not in its local cache, the resolver node stores that set of resource record(s) in its local cache so that it can locally answer subsequent requests for those resource record(s) locally.

## Claims

### Claim 1

A method in a Domain Name System (DNS) resolver node, comprising:
receiving a first DNS query from a first client device;
determining that an answer to the first DNS query cannot be currently generated using a cache local to the resolver node, wherein the resolver node is one of a plurality of resolver nodes that each are part of a same multicast group;
performing a recursive query with a set of one or more other authoritative nameservers to obtain a first answer to the first DNS query, wherein the first answer includes a first set of one or more DNS resource records;
storing the first set of DNS resource records in the cache local to the resolver node;
transmitting the first answer to the first client device;
transmitting a first message to a multicast interface in which each of the plurality of resolver nodes are listening, the first message including the first set of DNS resource records;
receiving a second message on the multicast interface from one of the other of plurality of resolver nodes, the second message including a second set of DNS resource records;
determining that the second set of DNS resource records included in the second message is not included in the cache local to the resolver node;
storing the second set of DNS resource records in the cache local to the resolver node;
receiving a second DNS query from a second client device;
determining that the stored second set of DNS resource records in the cache local to the resolver node answers the second DNS query;
generating a second answer to the second DNS query using the stored second set of DNS resource records in the cache local to the resolver node; and
transmitting the generated second answer to the second DNS query to the second client device.

### Claim 2 (depends on 1)

The method of claim 1, wherein each of the plurality of resolver nodes are anycasted to a same IP address.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
wherein the first set of DNS resource records includes a signature record that corresponds with another resource record; and
responsive to determining that the first message exceeds a maximum transmission unit (MTU) size, ensuring that the signature record and corresponding resource record are sent in a same packet.

### Claim 4 (depends on 1)

The method of claim 1, wherein determining that the answer to the first DNS query cannot be currently generated using the cache local to the resolver node includes determining that a requested resource record is not in the cache or that a TTL value of the requested resource record has expired.

### Claim 5 (depends on 1)

The method of claim 1, wherein the plurality of resolver nodes is part of a same data center.

### Claim 6 (depends on 1)

The method of claim 1, wherein the plurality of resolver nodes is part of different data centers.

### Claim 7 (depends on 6)

The method of claim 6, wherein the first message and the second message are over a secure tunnel and protected with transaction signature (TSIG).

### Claim 8

A non-transitory machine-readable storage medium that stores instructions, that when executed by a processor of a Domain Name System (DNS) resolver node causes said processor to perform the operations comprising:
receiving a first DNS query from a first client device;
determining that an answer to the first DNS query cannot be currently generated using a cache local to the resolver node, wherein the resolver node is one of a plurality of resolver nodes that each are part of a same multicast group;
performing a recursive query with a set of one or more other authoritative nameservers to obtain a first answer to the first DNS query, wherein the first answer includes a first set of one or more DNS resource records;
storing the first set of DNS resource records in the cache local to the resolver node;
transmitting the first answer to the first client device;
transmitting a first message to a multicast interface in which each of the plurality of resolver nodes are listening, the first message including the first set of DNS resource records;
receiving a second message on the multicast interface from one of the other of plurality of resolver nodes, the second message including a second set of DNS resource records;
determining that the second set of DNS resource records included in the second message is not included in the cache local to the resolver node;
storing the second set of DNS resource records in the cache local to the resolver node;
receiving a second DNS query from a second client device;
determining that the stored second set of DNS resource records in the cache local to the resolver node answers the second DNS query;
generating a second answer to the second DNS query using the stored second set of DNS resource records in the cache local to the resolver node; and
transmitting the generated second answer to the second DNS query to the second client device.

### Claim 9 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein each of the plurality of resolver nodes are anycasted to a same IP address.

### Claim 10 (depends on 8)

The non-transitory machine-readable storage medium of claim 8 that further stores instructions that, when executed by the processor of the resolver node causes said processor to further perform the operations comprising:
wherein the first set of DNS resource records includes a signature record that corresponds with another resource record; and
responsive to determining that the first message exceeds a maximum transmission unit (MTU) size, ensuring that the signature record and corresponding resource record are sent in a same packet.

### Claim 11 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein determining that the answer to the first DNS query cannot be currently generated using the cache local to the resolver node includes determining that a requested resource record is not in the cache or that a TTL value of the requested resource record has expired.

### Claim 12 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein the plurality of resolver nodes is part of a same data center.

### Claim 13 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein the plurality of resolver nodes is part of different data centers.

### Claim 14 (depends on 13)

The non-transitory machine-readable storage medium of claim 13, wherein the first message and the second message are over a secure tunnel and protected with transaction signature (TSIG).

### Claim 15

A Domain Name System (DNS) resolver node, comprising:
a processor; and
a non-transitory machine-readable storage medium that provides instructions that, when executed by the processor, causes the resolver node to perform operations comprising:
receive a first DNS query from a first client device;
determine that an answer to the first DNS query cannot be currently generated using a cache local to the resolver node, wherein the resolver node is one of a plurality of resolver nodes that each are part of a same multicast group;
perform a recursive query with a set of one or more other authoritative nameservers to obtain a first answer to the first DNS query, wherein the first answer is to include a first set of one or more DNS resource records;
store the first set of DNS resource records in the cache local to the resolver node;
transmit the first answer to the first client device;
transmit a first message to a multicast interface in which each of the plurality of resolver nodes are listening, the first message to include the first set of DNS resource records;
receive a second message on the multicast interface from one of the other of plurality of resolver nodes, the second message to include a second set of DNS resource records;
determine that the second set of DNS resource records included in the second message is not included in the cache local to the resolver node;
store the second set of DNS resource records in the cache local to the resolver node;
receive a second DNS query from a second client device;
determine that the stored second set of DNS resource records in the cache local to the resolver node answers the second DNS query;
generate a second answer to the second DNS query using the stored second set of DNS resource records in the cache local to the resolver node; and
transmit the generated second answer to the second DNS query to the second client device.

### Claim 16 (depends on 15)

The resolver node of claim 15, wherein each of the plurality of resolver nodes are to be anycasted to a same IP address.

### Claim 17 (depends on 15)

The resolver node of claim 15, wherein the non-transitory machine-readable storage medium further stores instructions that, when executed by the processor of the resolver node causes said processor to further perform the operations comprising:
wherein the first set of DNS resource records is to include a signature record that corresponds with another resource record; and
responsive to a determination that the first message exceeds a maximum transmission unit (MTU) size, ensure that the signature record and corresponding resource record are sent in a same packet.

### Claim 18 (depends on 15)

The resolver node of claim 15, wherein a determination that the answer to the first DNS query cannot be currently generated using the cache local to the resolver node includes a determination that a requested resource record is not in the cache or that a TTL value of the requested resource record has expired.

### Claim 19 (depends on 15)

The resolver node of claim 15, wherein the plurality of resolver nodes is part of a same data center.

### Claim 20 (depends on 15)

The resolver node of claim 15 wherein the plurality of resolver nodes is part of different data centers.

### Claim 21 (depends on 20)

The resolver node of claim 20, wherein the first message and the second message are over a secure tunnel and protected with transaction signature (TSIG).
