IP Library Granted Patent US 10,069,787
Granted Patent B2
US 10,069,787 · App. 14/676,631 · Granted Sep 4, 2018

Domain name system CNAME record management

Inventors: Lee Hahn Holloway (Santa Cruz, CA); Ray Raymond Bejjani (San Francisco, CA); Dane Orion Knecht (San Francisco, CA); Matthew Browning Prince (San Francisco, CA); John Graham-Cumming (London, GB)
Assignee: CLOUDFLARE, INC.
H04L61/1511H04L61/1552
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 10,069,787
App. No.
14/676,631
Granted
Sep 4, 2018
Kind
B2
Abstract

A method and apparatus for managing CNAME records such that CNAME records at the root domain are supported while complying with the RFC specification (an IP address is returned for any Address query for the root record). The authoritative DNS infrastructure acts as a DNS resolver where if there is a CNAME at the root record, rather than returning that record directly, a recursive lookup is used to follow the CNAME chain until an A record is located. The address associated with the A record is then returned. This effectively “flattens” the CNAME chain. This complies with the requirements of the DNS specification and is invisible to any service that interacts with the DNS server.

Claims (64)

1. A method in a Domain Name System (DNS) name server for managing Canonical Name (CNAME) records, comprising:

receiving a first query for a first Address record for a fully qualified domain name from a requester;

determining that the fully qualified domain name has a first CNAME record, wherein the fully qualified domain name is a root domain;

traversing a chain according to the first CNAME record to locate a second Address record that includes a first IP address;

generating a first response to the first query that includes a third Address record for the fully qualified domain name that includes at least the IP address of the located second Address record;

transmitting the generated first response to the requester;

receiving an ANY query for the fully qualified domain name from the requester;

determining that the fully qualified domain name has at least one record that points to a second CNAME record;

traversing a chain according to the second CNAME record to locate a fourth Address record that includes a second IP address;

generating a second response to the received ANY query that includes the fourth Address record; and

transmitting the generated second response to the requester.

2. An apparatus, comprising:

a Domain Name System (DNS) name server including a set of one or more processors and a set of one or more non-transitory computer-readable storage mediums storing instructions that, when executed by the set of processors, cause the set of processors to perform the following operations:

receive a first query for a first Address record for a fully qualified domain name from a requester;

determine that the fully qualified domain name has a first Canonical Name (CNAME) record, wherein the fully qualified domain name is a root domain;

traverse a chain according to the first CNAME record to locate a second Address record that includes a first IP address;

generate a first response to the first query that includes a third Address record for the fully qualified domain name that includes at least the IP address of the located second Address record;

transmit the generated first response to the requester;

receive an ANY query for the fully qualified domain name from the requester;

determine that the fully qualified domain name has at least one record that points to a second CNAME record;

traverse a chain according to the second CNAME record to locate a fourth Address record that includes a second IP address;

generate a second response to the received ANY query that includes the fourth Address record; and

transmit the generated second response to the requester.

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

receiving a first query for a first Address record for a fully qualified domain name from a requester;

determining that the fully qualified domain name has a first Canonical Name (CNAME) record, wherein the fully qualified domain name is a root domain;

traversing a chain according to the first CNAME record to locate a second Address record that includes a first IP address;

generating a first response to the first query that includes a third Address record for the fully qualified domain name that includes at least the IP address of the located second Address record;

transmitting the generated first response to the requester;

receiving an ANY query for the fully qualified domain name from the requester;

determining that the fully qualified domain name has at least one record that points to a second CNAME record;

traversing a chain according to the second CNAME record to locate a fourth Address record that includes a second IP address;

generating a second response to the received ANY query that includes the fourth Address record; and

transmitting the generated second response to the requester.

4. The method of claim 1 , wherein the generated first response further includes a first Time to Live (TTL) value that is equivalent to a second TTL value of the located second Address record.

5. The method of claim 1 , wherein the generated first response further includes a Time to Live (TTL) value that is equivalent to a longest TTL value in the CNAME chain.

6. The method of claim 1 , wherein the generated first response further includes a Time to Live (TTL) value that is smaller than each other TTL value in the CNAME chain.

7. The method of claim 1 , further comprising:

receiving a second query for an MX record for the fully qualified domain name from the requester;

determining that the fully qualified domain name has an MX record that points to a second CNAME record;

traversing a chain according to the second CNAME record to locate an end record of that chain, wherein the end record of that chain includes type specific data;

generating a second response to the second query that includes the MX record pointed to the type specific data of the end record of that chain; and

transmitting the generated second response to the requester.

8. The method of claim 1 , further comprising caching the generated first response.

9. The apparatus of claim 2 , wherein the generated first response is further to include a first Time to Live (TTL) value that is equivalent to a second TTL value of the located second Address record.

10. The apparatus of claim 2 , wherein the generated first response is further to include a Time to Live (TTL) value that is equivalent to a longest TTL value in the CNAME chain.

11. The apparatus of claim 2 , wherein the generated first response is further to include a Time to Live (TTL) value that is smaller than each other TTL value in the CNAME chain.

12. The apparatus of claim 2 , wherein the set of one or more non-transitory computer-readable storage mediums further storing instructions that, when executed by the set of processors, cause the set of processors to perform the following operations:

receive a second query for an MX record for the fully qualified domain name from the requester;

determine that the fully qualified domain name has an MX record that points to a second CNAME record;

traverse a chain according to the second CNAME record to locate an end record of that chain, wherein the end record of that chain includes type specific data;

generate a second response to the second query that includes the MX record pointed to the type specific data of the end record of that chain; and

transmit the generated second response to the requester.

13. The apparatus of claim 2 , wherein the set of one or more non-transitory computer-readable storage mediums further storing instructions that, when executed by the set of processors, cause the set of processors to cache the generated first response.

14. The non-transitory machine-readable storage medium of claim 3 , wherein the generated first response further is to include a first Time to Live (TTL) value that is equivalent to a second TTL value of the located second Address record.

15. The non-transitory machine-readable storage medium of claim 3 , wherein the generated first response further is to include a Time to Live (TTL) value that is equivalent to a longest TTL value in the CNAME chain.

16. The non-transitory machine-readable storage medium of claim 3 , wherein the generated first response further is to include a Time to Live (TTL) value that is smaller than each other TTL value in the CNAME chain.

17. The non-transitory machine-readable storage medium of claim 3 , further storing instructions that, when executed by the processor, cause the processor to perform the following operations:

receiving a second query for an MX record for the fully qualified domain name from the requester;

determining that the fully qualified domain name has an MX record that points to a second CNAME record;

traversing a chain according to the second CNAME record to locate an end record of that chain, wherein the end record of that chain includes type specific data;

generating a second response to the second query that includes the MX record pointed to the type specific data of the end record of that chain; and

transmitting the generated second response to the requester.

18. The non-transitory machine-readable storage medium of claim 3 , further storing instructions that, when executed by the processor, cause the processor to perform the following operation: caching the generated first response.

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 Apr 25, 2018
From: HOLLOWAY, LEE HAHN; BEJJANI, RAY RAYMOND; KNECHT, DANE ORION; PRINCE, MATTHEW BROWNING; GRAHAM-CUMMING, JOHN
To: CLOUDFLARE, INC.
Reel/Frame 045637/0646 →
Continuity (2)
Provisional Application 61973811 · Apr 1, 2014
Related Publication 20150281168A1 · Oct 1, 2015
Cited By (1)
US 12,341,746