# US 2014/0195692 A1 · Robust Domain Name Resolution

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

- Number: US 2014/0195692 A1
- Document ID: US20140195692A1
- Status: Published application
- Kind: A1
- Application number: 14/187,813
- Filed: 2014-02-24
- Published: 2014-07-10
- Earliest claimed: 2009-04-23
- Assignees: OpenDNS, Inc.
- Applicants: OpenDNS, Inc.
- Inventors: Noah Treuhaft; David Ulevitch; Michael Damm
- Web page: https://patentgrep.com/patent/US20140195692A1

## CPC

- H04L 61/4511: using domain name system [DNS]
- H04L 61/3025: {Domain name generation or assignment}
- H04L 61/35: {involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function}
- H04L 61/58: Caching of addresses or names
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A recursive DNS nameserver system and related domain name resolution techniques are disclosed. The DNS nameservers utilize a local cache having previously retrieved domain name resolution to avoid recursive resolution processes and the attendant DNS requests. If a matching record is found with a valid (not expired) TTL field, the nameserver returns the cached domain name information to the client. If the TTL for the record in the cache has expired and the nameserver is unable to resolve the domain name information using DNS requests to authoritative servers, the recursive DNS nameserver returns to the cache and accesses the resource record having an expired TTL. The nameserver generates a DNS response to the client device that includes the domain name information from the cached resource record. In various embodiments, subscriber information is utilized to resolve the requested domain name information in accordance with user-defined preferences.

## Claims

### Claim 1

One or more processor readable storage devices having processor readable code stored thereon, the processor readable code for programming one or more processors to perform a method comprising:
storing subscriber information for a first client and a second client;
receiving a request from the first client for domain name information of a first domain name and a request from the second client for domain name information of the first domain name;
determining that a domain name record for the first domain name is expired and that one or more authoritative nameservers for the first domain name are unavailable;
transmitting a first response based on the domain name record for the first domain name to the first client in accordance with the subscriber information for the first client; and
transmitting a second response indicating a failure to obtain domain name information for the first domain name to the second client in accordance with the subscriber information for the second client.

### Claim 2 (depends on 1)

One or more processor readable storage devices according to claim 1, wherein the second response is a server failure response.

### Claim 3 (depends on 1)

One or more processor readable storage devices according to claim 1, wherein the second response includes an IP address for a web page including a notification that the domain name information is currently unavailable and a link to retrieve the domain name record that is expired.

### Claim 4 (depends on 1)

One or more processor readable storage devices according to claim 1, wherein determining that the domain name record for the first domain is expired includes determining that a TTL value for the domain name record is expired.

### Claim 5 (depends on 1)

One or more processor readable storage devices according to claim 1, wherein:
the subscriber information for the first client indicates a preference to received expired domain name information; and
the subscriber information for the second client indicates a preference not to receive expired domain name information.

### Claim 6 (depends on 1)

One or more processor readable storage devices according to claim 1, further comprising:
after determining that the domain record for the first domain name is expired, issuing one or more requests for the domain name information to the one or more authoritative nameservers for the first domain name; and
accessing the subscriber information for the first client and the subscriber information for the second client in response to a failure to receive a response to the one or more requests.

### Claim 7

A method of processing domain name system requests, comprising:
monitoring one or more authoritative nameservers for one or more anomalies, the one or more authoritative nameservers containing domain name information for a first domain name;
storing at a recursive nameserver a domain name record including at least a portion of the domain name information for the first domain name, the domain name record including a TTL value; and
in response to the one or more anomalies at the one or more authoritative nameservers, modifying the domain name record for the first domain name at the recursive nameserver.

### Claim 8 (depends on 7)

A method according to claim 7, wherein
the one or more authoritative nameservers maintain domain name information for a plurality of domain names including the first domain name; and
monitoring one or more authoritative nameservers for one or more anomalies includes determining that the one or more authoritative nameservers fail to respond to one or more DNS requests associated with the first domain name;

### Claim 9 (depends on 8)

A method according to claim 8, further comprising:
in response to determining that the one or more authoritative nameservers fail to respond to the one or more DNS requests associated with the first domain name, modifying the domain name record for the plurality of domain names.

### Claim 10 (depends on 7)

A method according to claim 7, wherein the monitoring one or more authoritative nameservers for one or more anomalies includes:
receiving input from a user identifying an anomaly for the one or more authoritative nameservers.

### Claim 11 (depends on 7)

A method according to claim 7, wherein the monitoring one or more authoritative nameservers for one or more anomalies includes:
determining whether the one or more authoritative nameservers fail to respond to one or more DNS requests.

### Claim 12 (depends on 7)

A method according to claim 7, wherein modifying the domain name record includes storing an indication that the domain name record is not to be overwritten.

### Claim 13 (depends on 7)

A method according to claim 7, wherein:
storing the domain name record includes applying a first hashing algorithm to the at least a portion of the domain name information; and
modifying the domain name record includes applying a second hashing algorithm to the at least a portion of the domain name information.

### Claim 14

A computer-implemented method of processing domain name system requests, comprising:
storing at a recursive nameserver domain name information for a plurality of domain names including a first domain name;
issuing a domain name system (DNS) request for the first domain name to one or more authoritative nameservers associated with the first domain name after said storing;
in response to a failure associated with the DNS request for the first domain name, identifying a subset of the plurality of domain names that are associated with the one or more authoritative nameservers;
modifying the domain name information at the recursive nameserver for the subset of domain names in response to the failure associated with the DNS request for the first domain name.

### Claim 15 (depends on 14)

A computer-implemented method according to claim 14, wherein the subset of domain names includes a second domain name, the method further comprising:
issuing a DNS request for the second domain name to the one or more authoritative nameservers after modifying the domain name information for the subset of domain names;
receiving a reply to the DNS request for the second domain name; and
modifying the domain name information at the recursive nameserver for the subset of domain names in response to the reply to the DNS request for the second domain name.

### Claim 16 (depends on 14)

A computer-implemented method according to claim 14, where the modifying the domain name record for the first domain name at the recursive nameserver includes setting a flag indicating that the domain name record is not to be overwritten.

### Claim 17

A computer-implemented method of processing domain name system requests, comprising:
storing at a recursive nameserver domain name information for a domain name using a first hashing parameter;
issuing a domain name system request to one or more authoritative nameservers for the domain name after said storing; and
storing the domain name information at the recursive nameserver using a second hashing parameter in response to a failure to receive a response from the one or more authoritative nameservers for the domain name information.

### Claim 18 (depends on 17)

A computer-implemented method according to claim 17, wherein:
the first hashing parameter is a closed addressing based hashing algorithm; and
the second hashing parameter is an open addressing based hashing algorithm.

### Claim 19 (depends on 17)

A computer-implemented method according to claim 17, wherein the domain name information is first domain name information and the domain name is a first domain name, the method further comprising:
storing at the recursive nameserver second domain name information for a second domain name using the first hashing parameter; and
storing the second domain name information for the second domain using the second hashing parameter in response to the failure to receive the response from the one or more authoritative nameservers for the first domain name.
