draft-ietf-dnsop-nsec-aggressiveuse-05.txt | draft-ietf-dnsop-nsec-aggressiveuse-06.txt | |||
---|---|---|---|---|
Network Working Group K. Fujiwara | Network Working Group K. Fujiwara | |||
Internet-Draft JPRS | Internet-Draft JPRS | |||
Updates: 4035 (if approved) A. Kato | Updates: 4035 (if approved) A. Kato | |||
Intended status: Standards Track Keio/WIDE | Intended status: Standards Track Keio/WIDE | |||
Expires: April 23, 2017 W. Kumari | Expires: May 20, 2017 W. Kumari | |||
October 20, 2016 | November 16, 2016 | |||
Aggressive use of NSEC/NSEC3 | Aggressive use of NSEC/NSEC3 | |||
draft-ietf-dnsop-nsec-aggressiveuse-05 | draft-ietf-dnsop-nsec-aggressiveuse-06 | |||
Abstract | Abstract | |||
The DNS relies upon caching to scale; however, the cache lookup | The DNS relies upon caching to scale; however, the cache lookup | |||
generally requires an exact match. This document specifies the use | generally requires an exact match. This document specifies the use | |||
of NSEC/NSEC3 resource records to allow DNSSEC validating resolvers | of NSEC/NSEC3 resource records to allow DNSSEC validating resolvers | |||
to generate negative answers within a range, and positive answers | to generate negative answers within a range, and positive answers | |||
from wildcards. This increases performance / decreases latency, | from wildcards. This increases performance / decreases latency, | |||
decreases resource utilization on both authoritative and recursive | decreases resource utilization on both authoritative and recursive | |||
servers, and also increases privacy. It may also help increase | servers, and also increases privacy. It may also help increase | |||
skipping to change at page 2, line 7 ¶ | skipping to change at page 2, line 7 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 23, 2017. | This Internet-Draft will expire on May 20, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 30 ¶ | skipping to change at page 2, line 30 ¶ | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 3 | |||
4. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
5. Aggressive Negative Caching . . . . . . . . . . . . . . . . . 5 | 5. Aggressive use of Cache . . . . . . . . . . . . . . . . . . . 5 | |||
5.1. NSEC . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 5.1. NSEC . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.2. NSEC3 . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 5.2. NSEC3 . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.3. Wildcards . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.3. Wildcards . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.4. Consideration on TTL . . . . . . . . . . . . . . . . . . 7 | 5.4. Consideration on TTL . . . . . . . . . . . . . . . . . . 7 | |||
6. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 6. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
7. Update to RFC 4035 . . . . . . . . . . . . . . . . . . . . . 8 | 7. Update to RFC 4035 . . . . . . . . . . . . . . . . . . . . . 8 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
10. Implementation Status . . . . . . . . . . . . . . . . . . . . 9 | 10. Implementation Status . . . . . . . . . . . . . . . . . . . . 9 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
11.1. Change History . . . . . . . . . . . . . . . . . . . . . 10 | 11.1. Change History . . . . . . . . . . . . . . . . . . . . . 10 | |||
11.1.1. Version draft-fujiwara-dnsop-nsec-aggressiveuse-01 . 12 | 11.1.1. Version draft-fujiwara-dnsop-nsec-aggressiveuse-01 . 12 | |||
11.1.2. Version draft-fujiwara-dnsop-nsec-aggressiveuse-02 . 13 | 11.1.2. Version draft-fujiwara-dnsop-nsec-aggressiveuse-02 . 13 | |||
11.1.3. Version draft-fujiwara-dnsop-nsec-aggressiveuse-03 . 13 | 11.1.3. Version draft-fujiwara-dnsop-nsec-aggressiveuse-03 . 13 | |||
11.2. new section . . . . . . . . . . . . . . . . . . . . . . 13 | 11.2. new section . . . . . . . . . . . . . . . . . . . . . . 13 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
skipping to change at page 3, line 25 ¶ | skipping to change at page 3, line 25 ¶ | |||
information they have in the cache. This allows validating resolvers | information they have in the cache. This allows validating resolvers | |||
to respond with NXDOMAIN immediately if the name in question falls | to respond with NXDOMAIN immediately if the name in question falls | |||
into a range expressed by a NSEC/NSEC3 resource record already in the | into a range expressed by a NSEC/NSEC3 resource record already in the | |||
cache. It also allows the synthesis of positive answers in the | cache. It also allows the synthesis of positive answers in the | |||
presence of wildcard records. | presence of wildcard records. | |||
Aggressive Negative Caching was first proposed in Section 6 of DNSSEC | Aggressive Negative Caching was first proposed in Section 6 of DNSSEC | |||
Lookaside Validation (DLV) [RFC5074] in order to find covering NSEC | Lookaside Validation (DLV) [RFC5074] in order to find covering NSEC | |||
records efficiently. | records efficiently. | |||
Section 3 of [I-D.vixie-dnsext-resimprove] "Stopping Downward Cache | [RFC8020] proposes a first step to using NXDOMAIN information for | |||
Search on NXDOMAIN" and [I-D.ietf-dnsop-nxdomain-cut] proposed | more effective caching. This takes this technique further. | |||
another approach to use NXDOMAIN information effectively. | ||||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
Many of the specialized terms used in this document are defined in | Many of the specialized terms used in this document are defined in | |||
DNS Terminology [RFC7719]. | DNS Terminology [RFC7719]. | |||
skipping to change at page 4, line 21 ¶ | skipping to change at page 4, line 16 ¶ | |||
servers and will get back an NSEC record starting that there are no | servers and will get back an NSEC record starting that there are no | |||
records (alphabetically) between albatross and elephant, or an NSEC3 | records (alphabetically) between albatross and elephant, or an NSEC3 | |||
record stating there is nothing between two hashed names. The | record stating there is nothing between two hashed names. The | |||
resolver then knows that cat.example.com does not exist; however, it | resolver then knows that cat.example.com does not exist; however, it | |||
does not use the fact that the proof covers a range (albatross to | does not use the fact that the proof covers a range (albatross to | |||
elephant) to suppress queries for other labels that fall within this | elephant) to suppress queries for other labels that fall within this | |||
range. This means that if the validating resolver gets a query for | range. This means that if the validating resolver gets a query for | |||
ball.example.com (or dog.example.com) it will once again go off and | ball.example.com (or dog.example.com) it will once again go off and | |||
query the example.com servers for these names. | query the example.com servers for these names. | |||
Apart from wasting bandwidth, this also wastes resources on the | ||||
recursive server (it needs to keep state for outstanding queries), | ||||
wastes resources on the authoritative server (it has to answer | ||||
additional questions), increases latency (the end user has to wait | ||||
longer than necessary to get back an NXDOMAIN answer), can be used by | ||||
attackers to cause a DoS (see additional resources), and also has | ||||
privacy implications (e.g: typos leak out further than necessary). | ||||
Now, assume that the (DNSSEC signed) "example.org" zone contains: | Now, assume that the (DNSSEC signed) "example.org" zone contains: | |||
avocado.example.org IN A 192.0.2.1 | avocado.example.org IN A 192.0.2.1 | |||
*.example.org IN A 192.0.2.2 | *.example.org IN A 192.0.2.2 | |||
zucchini.example.org IN A 192.0.2.3 | zucchini.example.org IN A 192.0.2.3 | |||
If a query is received for leek.example.org, it contacts its resolver | If a query is received for leek.example.org, it contacts its resolver | |||
(which may be itself) to query the example.org servers and will get | (which may be itself) to query the example.org servers and will get | |||
back an NSEC record stating that there are no records | back an NSEC record stating that there are no records | |||
(alphabetically) between avocado and zucchini (or an NSEC3 record | (alphabetically) between avocado and zucchini (or an NSEC3 record | |||
stating there is nothing between two hashed names), as well as an | stating there is nothing between two hashed names), as well as an | |||
answer for leek.example.org, with the label count of the signature | answer for leek.example.org, with the label count of the signature | |||
set to two (see [RFC7129], section 5.3 for more details). | set to two (see [RFC7129], section 5.3 for more details). | |||
Apart from wasting bandwidth, this also wastes resources on the | If the validating resolver gets a query for banana.example.org it | |||
recursive server (it needs to keep state for outstanding queries), | will once again go off and query the example.com servers for | |||
wastes resources on the authoritative server (it has to answer | banana.example.com (even though it already has proof that there is a | |||
additional questions), increases latency (the end user has to wait | wildcard record) - just like above, this has privacy implications, | |||
longer than necessary to get back an NXDOMAIN answer), can be used by | wastes resources, can be used to contribute to a DoS, etc. | |||
attackers to cause a DoS (see additional resources), and also has | ||||
privacy implications (e.g: typos leak out further than necessary). | ||||
4. Background | 4. Background | |||
DNSSEC [RFC4035] and [RFC5155] both provide "authenticated denial of | DNSSEC [RFC4035] and [RFC5155] both provide "authenticated denial of | |||
existence"; this is a cryptographic proof that the queried for name | existence"; this is a cryptographic proof that the queried for name | |||
does not exist, accomplished by providing a (DNSSEC secured) record | does not exist, accomplished by providing a (DNSSEC secured) record | |||
containing the names which appear alphabetically before and after the | containing the names which appear alphabetically before and after the | |||
queried for name. In the first example above, if the (DNSSEC | queried for name. In the first example above, if the (DNSSEC | |||
validating) recursive server were to query for dog.example.com it | validating) recursive server were to query for dog.example.com it | |||
would receive a (signed) NSEC record stating that there are no labels | would receive a (signed) NSEC record stating that there are no labels | |||
skipping to change at page 5, line 43 ¶ | skipping to change at page 5, line 45 ¶ | |||
We believe this recommendation can be relaxed because, in the absense | We believe this recommendation can be relaxed because, in the absense | |||
of this technique, a lookup for the exact name could have come in | of this technique, a lookup for the exact name could have come in | |||
during this interval, and so a negative answer could already be | during this interval, and so a negative answer could already be | |||
cached (see [RFC2308] for more background). This means that zone | cached (see [RFC2308] for more background). This means that zone | |||
operators should have no expectation that an added name would work | operators should have no expectation that an added name would work | |||
immediately. With DNSSEC and Aggressive NSEC, the TTL of the NSEC | immediately. With DNSSEC and Aggressive NSEC, the TTL of the NSEC | |||
record is the authoritative statement of how quickly a name can start | record is the authoritative statement of how quickly a name can start | |||
working within a zone. | working within a zone. | |||
5. Aggressive Negative Caching | 5. Aggressive use of Cache | |||
Section 4.5 of [RFC4035] says that "In theory, a resolver could use | Section 4.5 of [RFC4035] says that "In theory, a resolver could use | |||
wildcards or NSEC RRs to generate positive and negative responses | wildcards or NSEC RRs to generate positive and negative responses | |||
(respectively) until the TTL or signatures on the records in question | (respectively) until the TTL or signatures on the records in question | |||
expire. However, it seems prudent for resolvers to avoid blocking | expire. However, it seems prudent for resolvers to avoid blocking | |||
new authoritative data or synthesizing new data on their own. | new authoritative data or synthesizing new data on their own. | |||
Resolvers that follow this recommendation will have a more consistent | ||||
view of the namespace". | ||||
This document relaxes this this restriction, as follows: | Resolvers that follow this recommendation will have a more consistent | |||
view of the namespace". This document relaxes this this restriction, | ||||
+--------------------------------------------------------------+ | see Section 7 for more detail. | |||
| Once the records are validated, DNSSEC enabled validating | | ||||
| resolvers MAY use wildcards and NSEC/NSEC3 resource records | | ||||
| to generate positive and negative responses until the | | ||||
| effective TTLs or signatures for those records expire. | | ||||
+--------------------------------------------------------------+ | ||||
If the negative cache of the validating resolver has sufficient | If the negative cache of the validating resolver has sufficient | |||
information to validate the query, the resolver SHOULD use NSEC, | information to validate the query, the resolver SHOULD use NSEC, | |||
NSEC3 and wildcard records aggressively. Otherwise, it MUST fall | NSEC3 and wildcard records aggressively. Otherwise, it MUST fall | |||
back to send the query to the authoritative DNS servers. | back to send the query to the authoritative DNS servers. | |||
It is recommended that resolvers that implement Aggressive Negative | It is recommended that resolvers that implement Aggressive Negative | |||
Caching provide a configuration switch to disable the feature. | Caching provide a configuration switch to disable the feature. | |||
Separate configuration switches may be implemented for the aggressive | Separate configuration switches may be implemented for the aggressive | |||
use of NSEC, NSEC3 and wildcard records, and it is recommended to | use of NSEC, NSEC3 and wildcard records, and it is recommended to | |||
skipping to change at page 7, line 39 ¶ | skipping to change at page 7, line 33 ¶ | |||
validating resolvers limit the maximum effective TTL value of | validating resolvers limit the maximum effective TTL value of | |||
negative responses (NSEC/NSEC3 RRs) to this same value. | negative responses (NSEC/NSEC3 RRs) to this same value. | |||
Section 5 of [RFC2308]also states that a negative cache entry TTL is | Section 5 of [RFC2308]also states that a negative cache entry TTL is | |||
taken from the minimum of the SOA.MINIMUM field and SOA's TTL. This | taken from the minimum of the SOA.MINIMUM field and SOA's TTL. This | |||
can be less than the TTL of an NSEC or NSEC3 record, since their TTL | can be less than the TTL of an NSEC or NSEC3 record, since their TTL | |||
is equal to the SOA.MINIMUM field (see [RFC4035]section 2.3 and | is equal to the SOA.MINIMUM field (see [RFC4035]section 2.3 and | |||
[RFC5155] section 3.) | [RFC5155] section 3.) | |||
A resolver that supports aggressive use of NSEC and NSEC3 should | A resolver that supports aggressive use of NSEC and NSEC3 should | |||
reduce the TTL of NSEC and NSEC3 records to match the TTL of the SOA | reduce the TTL of NSEC and NSEC3 records to match the SOA.MINIMUM | |||
record in the authority section of a negative response, if the SOA | field in the authority section of a negative response, if SOA.MINIMUM | |||
TTL is smaller. | is smaller. | |||
6. Benefits | 6. Benefits | |||
The techniques described in this document provide a number of | The techniques described in this document provide a number of | |||
benefits, including (in no specific order): | benefits, including (in no specific order): | |||
Reduced latency: By answering directly from cache, validating | Reduced latency: By answering directly from cache, validating | |||
resolvers can immediately inform clients that the name they are | resolvers can immediately inform clients that the name they are | |||
looking for does not exist, improving the user experience. | looking for does not exist, improving the user experience. | |||
Decreased recursive server load: By answering negative queries from | Decreased recursive server load: By answering queries from the cache | |||
the cache, validating servers avoid having to send a query and | by synthesizing answers, validating servers avoid having to send a | |||
wait for a response. In addition to decreasing the bandwidth | query and wait for a response. In addition to decreasing the | |||
used, it also means that the server does not need to allocate and | bandwidth used, it also means that the server does not need to | |||
maintain state, thereby decreasing memory and CPU load. | allocate and maintain state, thereby decreasing memory and CPU | |||
load. | ||||
Decreased authorative server load: Because recursive servers can | Decreased authorative server load: Because recursive servers can | |||
answer (negative) queries without asking the authoritative server, | answer queries without asking the authoritative server, the | |||
the authoritative servers receive fewer queries. This decreases | authoritative servers receive fewer queries. This decreases the | |||
the authoritative server bandwidth, queries per second and CPU | authoritative server bandwidth, queries per second and CPU | |||
utilization. | utilization. | |||
The scale of the benefit depends upon multiple factors, including the | The scale of the benefit depends upon multiple factors, including the | |||
query distribution. For example, at the time of this writing, around | query distribution. For example, at the time of this writing, around | |||
65% of queries to Root Name servers result in NXDOMAIN responses (see | 65% of queries to Root Name servers result in NXDOMAIN responses (see | |||
statistics from [root-servers.org]); this technique will eliminate a | statistics from [root-servers.org]); this technique will eliminate a | |||
sizable quantity of these. | sizable quantity of these. | |||
The technique described in this document may also mitigate so-called | The technique described in this document may also mitigate so-called | |||
"random QNAME attacks", in which attackers send many queries for | "random QNAME attacks", in which attackers send many queries for | |||
skipping to change at page 9, line 49 ¶ | skipping to change at page 9, line 45 ¶ | |||
it is inappropriate for inclusion in a published RFC." ] | it is inappropriate for inclusion in a published RFC." ] | |||
Unbound currently implements aggressive negative caching, as does | Unbound currently implements aggressive negative caching, as does | |||
Google Public DNS. | Google Public DNS. | |||
11. Acknowledgments | 11. Acknowledgments | |||
The authors gratefully acknowledge DLV [RFC5074] author Samuel Weiler | The authors gratefully acknowledge DLV [RFC5074] author Samuel Weiler | |||
and the Unbound developers. | and the Unbound developers. | |||
The authors would like to specifically thank Stephane Bortzmeyer, | The authors would like to specifically thank Stephane Bortzmeyer (for | |||
Tony Finch, Tatuya JINMEI for extensive review and comments, and also | standing next to and helping edit), Tony Finch, Tatuya JINMEI for | |||
Mark Andrews, Casey Deccio, Alexander Dupuy, Olafur Gudmundsson, Bob | extensive review and comments, and also Mark Andrews, Casey Deccio, | |||
Harold, Shumon Huque, John Levine, Pieter Lexis and Matthijs Mekking | Alexander Dupuy, Olafur Gudmundsson, Bob Harold, Shumon Huque, John | |||
(who even sent pull requests!). Mark Andrews also provided the text | Levine, Pieter Lexis and Matthijs Mekking (who even sent pull | |||
requests!). Mark Andrews also provided the text | ||||
(https://www.ietf.org/mail-archive/web/dnsop/current/msg18332.html) | (https://www.ietf.org/mail-archive/web/dnsop/current/msg18332.html) | |||
which we made into Appendix B | which we made into Appendix B. | |||
11.1. Change History | 11.1. Change History | |||
RFC Editor: Please remove this section prior to publication. | RFC Editor: Please remove this section prior to publication. | |||
-05 to -06: | ||||
o Moved some dangling text around - when the examples were added | ||||
some text added in the wrong place. | ||||
o There were some bits which mentioned "negative" in the title. | ||||
o We had the cut-and-paste of what changed in 4035 twice. | ||||
-04 to -05: | -04 to -05: | |||
o Bob pointed out that I did a stupid - when I added the wildcard to | o Bob pointed out that I did a stupid - when I added the wildcard to | |||
'example.com' I made the example wrong / confusing. I have | 'example.com' I made the example wrong / confusing. I have | |||
attempted to fix this by adding a second example zone | attempted to fix this by adding a second example zone | |||
(example.org) with the wildcard instead. | (example.org) with the wildcard instead. | |||
o More helpful changes (in a pull request, thanks!) from Matthijs | o More helpful changes (in a pull request, thanks!) from Matthijs | |||
o Included Mark Andrew's useful explanation of how to tell ENT from | o Included Mark Andrew's useful explanation of how to tell ENT from | |||
skipping to change at page 10, line 46 ¶ | skipping to change at page 11, line 4 ¶ | |||
answers. | answers. | |||
* Reworded much of the Wildcard text. | * Reworded much of the Wildcard text. | |||
o Incorporated pull request from Tony Finch (thanks!): | o Incorporated pull request from Tony Finch (thanks!): | |||
https://github.com/wkumari/draft-ietf-dnsop-nsec-aggressiveuse/ | https://github.com/wkumari/draft-ietf-dnsop-nsec-aggressiveuse/ | |||
pull/1 | pull/1 | |||
o More fixups from Tony (including text): https://www.ietf.org/mail- | o More fixups from Tony (including text): https://www.ietf.org/mail- | |||
archive/web/dnsop/current/msg18271.html. This included much | archive/web/dnsop/current/msg18271.html. This included much | |||
clearer text on TTL, refernces to the NSEC / NSEC3 RFCs (instead | clearer text on TTL, references to the NSEC / NSEC3 RFCs (instead | |||
of my clumsy summary), good text on replays, etc. | of my clumsy summary), good text on replays, etc. | |||
o Converted the "zone file" to a figure to make it more readable. | o Converted the "zone file" to a figure to make it more readable. | |||
o Text from Tim W: "If a validating resolver receives a query for | o Text from Tim W: "If a validating resolver receives a query for | |||
cat.example.com, it contacts its resolver (which may be itself) to | cat.example.com, it contacts its resolver (which may be itself) to | |||
query..." - which satisfies Jinmei's concern (which I was too | query..." - which satisfies Jinmei's concern (which I was too | |||
dense to grock). | dense to grock). | |||
o Fixup of the "validation required" in security considerations. | o Fixup of the "validation required" in security considerations. | |||
skipping to change at page 14, line 35 ¶ | skipping to change at page 14, line 35 ¶ | |||
Bortzmeyer, S. and S. Huque, "NXDOMAIN really means there | Bortzmeyer, S. and S. Huque, "NXDOMAIN really means there | |||
is nothing underneath", draft-ietf-dnsop-nxdomain-cut-03 | is nothing underneath", draft-ietf-dnsop-nxdomain-cut-03 | |||
(work in progress), May 2016. | (work in progress), May 2016. | |||
[I-D.vixie-dnsext-resimprove] | [I-D.vixie-dnsext-resimprove] | |||
Vixie, P., Joffe, R., and F. Neves, "Improvements to DNS | Vixie, P., Joffe, R., and F. Neves, "Improvements to DNS | |||
Resolvers for Resiliency, Robustness, and Responsiveness", | Resolvers for Resiliency, Robustness, and Responsiveness", | |||
draft-vixie-dnsext-resimprove-00 (work in progress), June | draft-vixie-dnsext-resimprove-00 (work in progress), June | |||
2010. | 2010. | |||
[RFC8020] Bortzmeyer, S. and S. Huque, "NXDOMAIN: There Really Is | ||||
Nothing Underneath", RFC 8020, DOI 10.17487/RFC8020, | ||||
November 2016, <http://www.rfc-editor.org/info/rfc8020>. | ||||
[root-servers.org] | [root-servers.org] | |||
IANA, "Root Server Technical Operations Assn", | IANA, "Root Server Technical Operations Assn", | |||
<http://www.root-servers.org/>. | <http://www.root-servers.org/>. | |||
Appendix A. Detailed implementation notes | Appendix A. Detailed implementation notes | |||
o Previously, cached negative responses were indexed by QNAME, | o Previously, cached negative responses were indexed by QNAME, | |||
QCLASS, QTYPE, and the setting of the CD bit (see RFC 4035, | QCLASS, QTYPE, and the setting of the CD bit (see RFC 4035, | |||
Section 4.7), and only queries matching the index key would be | Section 4.7), and only queries matching the index key would be | |||
answered from the cache. With aggressive negative caching, the | answered from the cache. With aggressive negative caching, the | |||
End of changes. 21 change blocks. | ||||
46 lines changed or deleted | 59 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |