dnsop C. Contavalli Internet-Draft W. van der Gaast Intended status: Informational Google Expires:May 19,November 27, 2015 D. Lawrence Akamai Technologies W. Kumari GoogleNovember 15, 2014May 26, 2015 Client Subnet in DNSRequests draft-ietf-dnsop-edns-client-subnet-00Querys draft-ietf-dnsop-edns-client-subnet-01 Abstract This draft defines an EDNS0 extension to carry information about the network that originated a DNS query, and the network for which the subsequentreplyresponse can be cached. IESG Note [RFC Editor: Please remove this note prior to publication ] This informational document describes an existing, implemented and deployed system. A subset of the operators using this is at http://www.afasterinternet.com/participants.htm . The authors believe that it is better to document this system (even if not everyone agrees with the concept) than leave it undocumented and proprietary. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire onMay 19,November 27, 2015. Copyright Notice Copyright (c)20142015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 4 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . .45 5. Option Format . . . . . . . . . . . . . . . . . . . . . . . . 6 6. Protocol Description . . . . . . . . . . . . . . . . . . . . 7 6.1. Originating the Option . . . . . . . . . . . . . . . . . 7 6.1.1. Recursive Resolvers . . . . . . . . . . . . . . . . . 7 6.1.2. Stub Resolvers . . . . . . . . . . . . . . . . . . . 8 6.1.3. Forwarders . . . . . . . . . . . . . . . . . . . . . 9 6.2. Generating a Response . . . . . . . . . . . . . . . . . .89 6.2.1. Authoritative Nameserver . . . . . . . . . . . . . . 9 6.2.2. Intermediate Nameserver . . . . . . . . . . . . . . . 10 6.3. Handlingedns-client-subnet RepliesECS Responses and Caching . . . . .9. . . . . . 11 6.3.1. Caching the Response . . . . . . . . . . . . . . . . 11 6.3.2. Answering from Cache . . . . . . . . . . . . . . . . 12 6.4. Delegations and Negative Answers . . . . . . . . . . . . 13 6.5. Transitivity . . . . . . . . . . . . . . . . . . . . . .1113 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . .1214 8. DNSSEC Considerations . . . . . . . . . . . . . . . . . . . .1214 9. NAT Considerations . . . . . . . . . . . . . . . . . . . . .1215 10. Security Considerations . . . . . . . . . . . . . . . . . . .1315 10.1. Privacy . . . . . . . . . . . . . . . . . . . . . . . .1315 10.2. Birthday Attacks . . . . . . . . . . . . . . . . . . . .1416 10.3. Cache Pollution . . . . . . . . . . . . . . . . . . . .1417 11. Sending the Option . . . . . . . . . . . . . . . . . . . . .1618 11.1. Probing . . . . . . . . . . . . . . . . . . . . . . . .1618 11.2. Whitelist . . . . . . . . . . . . . . . . . . . . . . .1619 12. Example . . . . . . . . . . . . . . . . . . . . . . . . . . .1719 13. Contributing Authors . . . . . . . . . . . . . . . . . . . .1921 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .1921 15. References . . . . . . . . . . . . . . . . . . . . . . . . .1922 15.1. Normative References . . . . . . . . . . . . . . . . . .1922 15.2. Informative References . . . . . . . . . . . . . . . . .2023 15.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . .2023 Appendix A. Document History . . . . . . . . . . . . . . . . . .2023 A.1. -00 . . . . . . . . . . . . . . . . . . . . . . . . . . .2024 A.2. -01 . . . . . . . . . . . . . . . . . . . . . . . . . . .2125 A.3. -02 . . . . . . . . . . . . . . . . . . . . . . . . . . .22 A.4. -03* . . . . . . . . . . . . . . . . . . . . . . . . . . 2225 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . .2226 1. Introduction Many Authoritative Nameservers today return differentrepliesresponses based on the perceived topological location of the user. These servers use the IP address of the incoming query to identify that location. Since most queries come from intermediate Recursive Resolvers, the source address is that of the Recursive Resolver rather than of the query originator. Traditionally, and probably still in the majority of instances, Recursive Resolvers are reasonably close in thenetwork topologytopological sense to the Stub Resolvers or Forwarders that are the source of queries. For these resolvers, using their own IP address is sufficient for authority servers that tailor responses based upon location of the querier. Increasingly, though, a class of Recursive Resolvers has arisen that handle query sources that are often not topologically close. The motivation for a user to configure such a Centralized Resolver varies but is usually because of some enhanced experience, such as greater cache security or applying policies regarding where users may connect. (Although political censorship usually comes to mind here, the same actions may be used by a parent when setting controls on where a minor may connect.) Similarly, many ISPs and other organizations use a Centralized Resolver infrastructure that can be distant from the clients the resolvers serve.TheThese cases all lead to less thanoptimal repliesdesirable responses from topology-sensitive Authoritative Nameservers. This draft defines an EDNS0 [RFC6891] option to convey network information that is relevant to the DNS message. It will carry sufficient network information about the originator for the Authoritative Nameserver to tailor responses. It will also provide for the Authoritative Nameserver to indicate the scope of network addresses for which the tailored answer is intended. This EDNS0 option is intended for those recursive and authority servers that would benefit from the extension and not for general purpose deployment. It is completely optional and can safely be ignored by servers that choose not to implement it or enable it. This draft also includes guidelines on how to best cache those results and provides recommendations on when this protocol extension should be used. At least a dozen different client and server implementations had been written based on the original specification, first known as draft- vandergaast-edns-client-subnet. While they interoperate for the primary goal, they have varying behaviour around poorly specified edge cases. Known incompatibilities will be described. 2. Requirements Notation The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. 3. Terminology ECS EDNS Client Subnet. Client A Stub Resolver, Forwarder or Recursive Resolver. A client to a Recursive Resolver or a Forwarder. Server A Forwarder, Recursive Resolver or Authoritative Nameserver. Stub Resolver: A simple DNS protocol implementation on the client side as described in [RFC1034] section 5.3.1. A client to a Recursive Resolver or a Forwarder. Authoritative Nameserver: A nameserver that has authority over one or more DNS zones. These are normally not contacted by Stub Resolver or end user clients directly but by Recursive Resolvers. Described in [RFC1035]chapterSection 6. Recursive Resolver: A nameserver that is responsible for resolving domain names for clients by following the domain's delegation chain. Recursive Resolvers frequently use caches to be able to respond to client queries quickly. Described in [RFC1035]chapterSection 7. Intermediate Nameserver: Any nameserver (possibly a Recursive Resolver) in between the Stub Resolver and the Authoritative Nameserver. Centralized Resolvers: Recursive Resolvers that serve a topologically diverse network address space.Optimized Reply:Tailored Response: Areplyresponse from a nameserver that isoptimizedcustomized for the node that sent therequest, normallyquery, often based on performance (i.e. lowest latency, least number of hops, topological distance, ...). Topologically Close: Refers to two hosts being close in terms of number of hops or time it takes for a packet to travel from one host to the other. The concept of topological distance is only loosely related to the concept of geographical distance: two geographically close hosts can still be very distant from a topological perspective, and two geographically distant hosts can be quite close on the network. 4. Overview The general idea of this document is to provide an EDNS0 option to allow Recursive Resolvers, if they are willing, to forward details about the origin network from which a query is coming when talking toAuthoritativeother Nameservers. The format of this option is described in Section 5, and is meant to be added in queries sent by Intermediate Nameservers in a way transparent to Stub Resolvers and end users, as described in Section 6.1. ECS is only defined for the Internet (IN) DNS class. As described in Section 6.2, an Authoritative Nameserver could use this EDNS0 option as a hint to better locate the network of the end user and provide a better answer. Itsreplyresponse wouldalsocontain an edns-client-subnet (ECS) option, clearly indicating that the server made use of this information, and that the answer is tied to the network of the client. As described in Section 6.3, Intermediate Nameservers would use this information to cache thereply.response. Some Intermediate Nameservers may also have to be able to forwardedns-client-subnetECS queries they receive. This is described in Section6.4.6.5. The mechanisms provided byedns-client-subnetECS raise various security related concerns, related to cache growth, the ability to spoof EDNS0 options, and privacy. Section 10 explores various mitigation techniques. The expectation, however, is that this option will only be used by Recursive Resolvers and Authoritative Nameservers that incur geolocation issues. Most Recursive Resolvers, Authoritative Nameservers and Stub Resolvers will never know about this option, and will continue working as they had been. Failure to support this option or its improper handling will, at worst, cause suboptimal identification of client location, which is a common occurrence in current content delivery network (CDN)setups and not a cause of concern.setups. Section 6.1 also provides a mechanism for Stub Resolvers to signal Recursive Resolvers that they do not wantedns-client-subnetECS treatment for specificrequests.queries. Additionally, operators of Intermediate Nameservers withedns-client- subnetECS enabled are allowed to choose how many bits of the address of received queries to forward, or to reduce the number of bits forwarded for queries already including anedns-client-subnetECS option. 5. Option Format This draft uses an EDNS0 [RFC6891]) option to include client address information in DNS messages. The option is structured as follows: +0 (MSB) +1 (LSB) +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 0: | OPTION-CODE | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 2: | OPTION-LENGTH | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 4: | FAMILY | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 6: | SOURCENETMASKPREFIX-LENGTH | SCOPENETMASKPREFIX-LENGTH | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 7: | ADDRESS... / +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ o (Defined in [RFC6891]) OPTION-CODE, 2 octets, foredns-client- subnetECS is 8 (0x00 0x08). o (Defined in [RFC6891]) OPTION-LENGTH, 2 octets, contains the length of the payload (everything after OPTION-LENGTH) in octets. o FAMILY, 2 octets, indicates the family of the address contained in the option, using address family codes as assigned by IANA in IANA-AFI [2]. The format of the address part depends on the value of FAMILY. This document only defines the format for FAMILY 1 (IP version 4) and 2 (IP version 6), which are as follows: o SOURCENETMASK,PREFIX-LENGTH, an unsigned octet representing thelengthleftmost significant bits ofthe netmask pertainingADDRESS to be used for thequery.lookup. Inreplies,responses, it mirrors the same value as in therequests. It can be set to 0 to disable client- based lookups, in which case the ADDRESS field MUST be absent.queries. o SCOPENETMASK,PREFIX-LENGTH, an unsigned octet representing thelengthleftmost significant bits of ADDRESS that thenetmask pertaining to the reply.response covers. Inrequests, it SHOULD be set to the longest cacheable length supported by the Intermediate Nameserver. For backwards compatibiilty with draft versions of this specification, in requestsqueries, itMAYMUST be set to0 to have the Authoritative Nameserver treat the longest cacheable length as the SOURCE NETMASK length. In responses, this field is set by the Authoritative Nameserver to indicate the coverage of the response. It might or might not match SOURCE NETMASK; it could be shorter or longer.0. o ADDRESS, variable number of octets, contains either an IPv4 or IPv6 address, depending on FAMILY, truncatedin the requestto the number of bits indicated by the SOURCENETMASKPREFIX-LENGTH field, with bits set to 0 to padupto the end of the last octetused. (This need not be as manyneeded. Trailing all-zero octetsas a complete address would take.) In the reply, if the SCOPE NETMASK of the request was 0 then ADDRESS must contain the same octets as in the request. Otherwise, the bits for ADDRESS willSHOULD besignificant through the maximum of the SOURCE NETMASK or SCOPE NETMASK, and 0 filled to the end of an octet.omitted. All fields are in network byte order ("big-endian", per [RFC1700], Data Notation). 6. Protocol Description 6.1. Originating the Option Theedns-client-subnetECS option should generally be added by Recursive Resolvers when queryingother servers,Authoritative Nameservers, as described in Section 11. The option can also be initialized by a Stub Resolver or Forwarder. 6.1.1. Recursive Resolvers The setup of the ECS option in a Recursive Resolver depends on the client query that triggered the resolution process. Inthis option,theserver should includeusual case, where no ECS option was present in the client query, the Recursive Resolver initializes the option by setting the FAMILY of the client's address. It then uses the value of its maximum cacheable prefix length to set SOURCE PREFIX-LENGTH. For privacy reasons, and because the whole IP addressofis rarely required to determine a tailored response, this length SHOULD be shorter than theclient that causedfull address, as described in Section 10. If the triggering querytoincluded an ECS option itself, it MUST begenerated, truncatedexamined for its SOURCE PREFIX-LENGTH. The Recursive Resolver's outgoing query MUST then set SOURCE PREFIX-LENGTH to the shorter of the incoming query's SOURCE PREFIX-LENGTH or the server's maximum cacheable prefix length. Finally, in both cases, SCOPE PREFIX-LENGTH is set to 0 and the ADDRESS is then added up to the SOURCE PREFIX-LENGTH number of bits, with trailing 0 bitsspecifiedadded, if needed, to fill the final octet. The total number of octets used should only be enough to cover SOURCE PREFIX-LENGTH bits, rather than the full width that would normally be used by addresses in FAMILY. FAMILY and ADDRESS information MAY be used from the ECS option incoming query. Passing the existing address data is supportive of the Recursive Resolver being used as the target of a Forwarder, but could possibly run into policy problems with regard to usage agreements between the Recursive Resolver and Authoritative Namserver. See Section 11.2 for more discussion on this point. If the Recursive Resolver will not forward the FAMILY and ADDRESS data from the incoming ECS option, it SHOULD return a REFUSED response. [*dcl* -- discussion of existing implementations] Subsequent queries to refresh the data MUST, if unrestricted by an incoming SOURCENETMASK field.PREFIX-LENGTH, specify the longest SOURCE PREFIX- LENGTH that the Recursive Resolver is willing to cache, even if a previous response indicated that a shorter prefix length was sufficient. 6.1.2. Stub Resolvers A Stub Resolver MAY generate DNS queries with anedns-client-subnetECS optionwith SOURCE NETMASKset to0 (i.e. 0.0.0.0/0) toindicate its own level of privacy via SOURCE PREFIX-LENGTH. An Intermediate Nameserver that receives such a query MUST NOT make queries that include more bits of client address than in the originating query. A SOURCE PREFIX-LENGTH of 0 means the Recursive Resolver MUST NOT add address information of the client to its queries. The subsequent Recursive Resolver query to the Authoritative Nameserver will then either not include anedns-client- subnetECS option or MAY optionally include its own address information, which is what the Authoritative Nameserver will almost certainly useanywayto generatethe replyany Tailored Response in lieu ofnoan option. This allows the answer to be handled by the same caching mechanism as otherrequests,queries, with an explicit indicator of the applicable scope. Subsequent Stub Resolverrequestsqueries for /0 can then be answered from this cached response.TheA Stub Resolvermay also add non-empty edns-client-subnet options to its queries, but Recursive Resolvers are not requiredMUST set SCOPE PREFIX-LENGTH touse this information. For privacy reasons,0. It MAY include FAMILY andbecause the whole IP address is rarely required to determine an optimized reply, theADDRESSfield in the option SHOULDdata, but should betruncatedprepared to handle acertain number of bits, chosen byREFUSED response if theadministratorsIntermediate Nameserver that it queries has a policy that denies forwarding of theIntermediate Nameserver,ADDRESS. If there is no ADDRESS set, FAMILY MUST be set to 0. 6.1.3. Forwarders Forwarders essentially appear to be Stub Resolvers to whatever Recursive Resolver is ultimately handling the query, but look like a Recursive Resolver to their client. A Forwarder using this option MUST prepare it as described inSection 10. IftheStub Resolver requests additional privacy viaSection 6.1.1 section above. In particular, aSOURCE NETMASKForwarder thatis shorter thanimplements this protocol MUST honor SOURCE PREFIX-LENGTH restrictions indicated in themaximum cacheable SCOPE NETMASK thatincoming query from its client. See also Section 6.5. Since the Recursive Resolverallows,it contacts will essentially treat it as a Stub Resolver, the Forwarder must be prepared for a REFUSED response if the Recursive ResolverSHOULD issue the querydoes not permit incoming ADDRESS information. The Forwarded MUST retry withits longer SCOPE NETMASK.FAMILY and ADDRESS set to 0. 6.2. Generating a Response 6.2.1. Authoritative Nameserver When a query containing anedns-client-subnetECS option is received, an Authoritative Nameserver supportingedns-client-subnetECS MAY use the address information specified in the option in order to generatean optimized reply.a tailored response. Authoritative Nameservers that have not implemented or enabled support for theedns-client-subnetECS optionmayought to safely ignore it within incomingqueries. Perqueries, per [RFC6891] section6.1.2, such6.1.2. Such a server MUST NOT include anedns-client-subnetECS option within replies, to indicate lack of support for it. Implementers of Intermediate Nameservers should be aware, however, that some nameservers incorrectly echo back unknown EDNS0 options. In this protocol that should be mostly harmless, as SCOPE PREFIX- LENGTH should come back as 0, thus marking theoption. Requestsresponse as covering all networks. A query with a wrongly formattedoptionsoption (e.g.,wrong size)an unknown FAMILY) MUST be rejected and a FORMERR response MUST be returned to the sender, as described by [RFC6891], Transport Considerations.If theAn Authoritative Nameserverdecides to use information from the edns-client-subnetthat implements this protocol and receives an ECS optionto calculate a response, itMUST includethean ECS option intheits response to indicate that it SHOULD be cached accordingly, regardless of whether the client information wasused and SHOULDneeded to formulate an answer. (Note that the [RFC6891] requirement to reserve space for the OPT record could mean that the answer section of the response will becached accordingly.truncated and fallback to TCP indicated accordingly.) Ifthean ECS option was not included in a query,itone MUST NOT be included in theresponse. The FAMILY and SOURCE NETMASK in theresponseMUST match those ineven if the server is providing a Tailored Response -- presumably based on therequest.address from which it received the query. ThefirstFAMILY, SOURCENETMASK bits of thePREFIX-LENGTH and ADDRESS in the response MUST match those in therequest, even if fewer bits were used to form the response.query. Echoing backthe address and netmaskthese values helps to mitigate certain attack vectors, as described in Section 10. The SCOPENETMASKPREFIX-LENGTH in thereplyresponse indicates thenetmask of thenetwork for which the answer is intended. A SCOPENETMASKPREFIX-LENGTH value longer than the SOURCENETMASKPREFIX-LENGTH indicates that theaddress and netmaskprovidedin the queryprefix length was not specific enough to selecta single, best response. The ADDRESS MUST be extended to SCOPE NETMASK significant bits to indicatethenetworkmost appropriate Tailored Response. Future queries forwhich it is optimal, buttheRecursive Resolver SHOULD still provide the result as the answer toname within thetriggering client request even ifspecified network SHOULD use theclient is in a different address range.longer SCOPE PREIX-LENGTH. Conversely, a shorter SCOPENETMASKPREFIX-LENGTH indicates that more bits than necessary were provided, and the answer is suitable for a broader range of addresses.If a non-zero SCOPE NETMASK was supplied inThis could be as short as 0, to indicate that therequest,answer is suitable for all addresses in FAMILY. As theSCOPE NETMASKlogical topology ofthe response MUST be no longer than the SCOPE NETMASKany part of therequest. As not all netblocks arenetwork with regard to thesame size,tailored response can vary, an Authoritative Nameserver may return different values of SCOPENETMASKPREFIX-LENGTH for different networks.In both cases, the value of the SCOPE NETMASK in the reply has strong implications with regard to how the reply will be cached by Intermediate Nameservers, as described in Section 6.3. If the edns-client-subnet option in the request is not used at all, a server supporting edns-client-subnet MUST indicate that no bits of the ADDRESS in the request have been used by specifying a SCOPE NETMASK of 0, equivalent to the networks 0.0.0.0/0 or ::/0. This could happen, for example, because the reply is invariant across the network space. The answer is suitable for all clients for the duration of its TTL.The specific logic that an Authoritative Nameserver uses to choosean optimized replya tailored response is not in the scope of this document. Implementers are encouraged, however, to consider carefully their selection of SCOPENETMASKPREFIX-LENGTH for thereplyresponse in the event thatan optimal replythe best tailored response cannot be determined.6.3. Handling edns-client-subnet Replies[Open issue: This seems so very vague; More text here about possible strategy?] If the Authoritative Nameserver operator configures a more specific (longer prefix length) Tailored Response within a configured less specific (shorter prefix length) Tailored Response, then implementations can either: 1. Deaggregate the shorter prefix response into multiple longer prefix responses, or, 2. Alert the operator that the order of queries will determine which answers get cached, andCachingeither warn and continue or treat this as an error and refuse to load the configuration. Implementations SHOULD document their chosen behavior. 6.2.2. Intermediate Nameserver When an Intermediate Nameserverreceivesuses ECS, whether it passes an ECS option in its own response to its client is predicated on whether the client originally included the option. Because areply containingclient that did not use anedns- client-subnetECS option might not be able to understand it, the server MUST NOT provide one in its response. If the client query did include the option, the server MUST include one in its response, especially as itwill returncould be talking to a Forwarder which would need the information for its own caching. [Open issue: if the Forwarder sent 0s for FAMILY and ADDRESS, how could it take back a response with non-zero FAMILY and ADDRESS when the spec says this mismatch MUST be dropped?] If an Intermediate Nameserver receives a response which has a longer SCOPE PREFIX-LENGTH than the SOURCE PREFIX-LENGTH that it provided in its query, it SHOULD still provide the result as the answer to the triggering client request even if the client is in a different address range. The Intermediate Nameserver MAY instead opt to retry with a longer SOURCE PREFIX-LENGTH to get a better reply before responding to its client, as long as it does not exceed a SOURCE PREFIX-LENGTH specified in the query that triggered resolution, but this obviously has implications for the latency of the overall lookup. The logic for using the cache to determine whether the Intermediate Nameserver already knows the response to provide to its client is covered in the next section. 6.3. Handling ECS Responses and Caching When an Intermediate Nameserver receives a response containing an ECS option and without the TC bit set, it SHOULD cache theresult.result based on the data in the option. If the TC bit was set, the Intermediate Resolver SHOULD retry the query over TCP to get the complete answer section for caching. If the FAMILY, SOURCENETMASK,PREFIX-LENGTH, and SOURCENETMASKPREFIX-LENGTH bits of ADDRESS in thereplyresponse don't match the fields in the correspondingrequest,query, the fullreplyresponse MUST be dropped, as described in Section 10. If no ECS option is contained in the response, the Intermediate Nameserver SHOULD treat this as being equivalent to having received a SCOPE PREFIX-LENGTH of 0, which is an answer suitable for all client addresses. See further discussion on the security implications of this in Section 10. 6.3.1. Caching the Response In the cache, any resource record in the answer section will be tied to the network specified by the FAMILY, ADDRESS and SCOPENETMASKPREFIX- LENGTH fields, asdetailed below.limited by the Intermediate Nameserver's own configuration for maximum cacheable prefix length. Note that the additional and authority sections from a DNS response message are specifically excluded here. Anyinformation cachedrecords from these sections MUST NOT be tied to a network.If another query is received matching[Open issue: this conflicts a bit with draft- kumari-dnsop-multiple-responses, which wants to put data in thename and type ofadditional section that anentry inauthoritative nameserver that does ECS would probably want to tailor.] See more at Section 6.4. Records that are cached as /0 because of a query's SOURCE PREFIX- LENGTH of 0 MUST be distinguished from those that are cached as /0 because of a response's SCOPE PREFIX-LENGTH of 0. The former should only be used for other /0 queries that thecache,Intermediate Resolver receives, but theresolverlatter is suitable as a response for all networks. Although omitting network-specific caching willcheck whether the FAMILY and ADDRESS of the client matches one ofsignificantly simplify an implementation, thenetworksresulting drop inthecache hits is very likely to defeat most latency benefits provided by ECS. Therefore, when implementing this option forthat entry. Iflatency purposes, implementing full caching support as described in this section is strongly recommended. Enabling support for ECS in an Intermediate Nameserver will significantly increase theaddresssize of theclient is within anycache, reduce the number of results that can be served from cache, and increase thenetworks inload on thecache, thenserver. Implementing thecached response MUST be returnedmitigation techniques described in Section 10 is strongly recommended. 6.3.2. Answering from Cache Cache lookups are first done asusual. Ifusual for a DNS query, using theaddressquery tuple of <name, type, class>. Then the appropriate RRset MUST be chosen based on longest prefix matching. The clientmatches multiple networks inaddress to use for comparison will depend on whether thecache,Intermediate Nameserver received an ECS option in its client query. o If no ECS option was provided, theentry withclient's address is used. o If there was an ECS option, thelongest SCOPE NETMASK value MUSTADDRESS from it MAY bereturned, as with most route-matching algorithms. Ifused if local policy allows. Policy can vary depending on theaddressagreements the operator of theclientIntermediate Nameserver has with Authoritative Nameserver operators; see Section 11.2. If policy does notmatch anyallow, a REFUSED response must be sent. If a matching networkinis found and thecache, thenrelevant data is unexpired, theRecursive Resolver MUST behaveresponse is generated asifper Section 6.2. If nomatch was found andmatching network is found, the Intermediate Nameserver MUST perform resolution as usual. This is necessary to avoidsuboptimal repliesTailored Responses in the cache from being returned to the wrong clients, and to avoid a singlerequestquery coming from a client on a different network from polluting the cache with asuboptimal replyTailored Response for all the users of that resolver.Note that every time a Recursive Resolver queries an Authoritative Nameserver by forwarding the edns-client-subnet option that it received6.4. Delegations and Negative Answers The prohibition against tying ECS data to records fromanother client, a short SOURCE NETMASKthe Authority and Additional section left an unfortunate ambiguity in the originalrequest could cause a suboptimal replyspecification, primarily with regard tobe returned by the Authoritative Nameserver. When the request includes a longer SCOPE NETMASK, the reply returned may still be cached as optimal for the ADDRESS and SCOPE NETMASKnegative answers. The expectation of thereply. This might still be suboptimal for theoriginalclient. To avoid this suboptimal reply from being served from cache for other clients for which a better replyauthors was that ECS would only really beavailable, the Recursive Resolver MUST checkused for address records, theSCOPE NETMASKuse case that wasreturned by the Authoritative Nameserver: o Ifdriving theSCOPE NETMASK indefinition of thereplyprotocol. The delegations case islonger than the SOURCE NETMASK, it means that the reply might be suboptimal. A Recursive Resolver MUST return this entry from cache only to queries that do not contain or allowalonger SOURCE NETMASKbit easier tobe forwarded, ortease out. In operational practice, if an authoritative server is using address information toqueries originating from the network covered byprovide customized delegations, it is theADDRESS and SCOPE NETMASK.. o Ifresolver that will be using theSCOPE NETMASKanswer for its next iterative query. Addresses in thereply is shorter than or equal to the SOURCE NETMASK, the reply is optimal, andAdditional section SHOULDbe returned from cache to any client within the network indicated by ADDRESStherefore ignore ECS data, andSCOPE NETMASK. As another reply is received,thereply will be tied to a different network. The serverauthority SHOULDkeep in cache both replies, andreturnthe most appropriate one dependinga zero SCOPE PREFIX-LENGTH onthe address of the client. Per standard DNS caching behavior, all recordsdelegations. A recursive resolver SHOULDbe retained until their TTL expires. Subsequent queries to refresh the data should always specify the longest SCOPE NETMASK that the Recursive Resolver is willing to cache, even if previous responses indicated thattreat ashorter netmask was the optimal response. Although omitting network-specific caching will significantly simplify an implementation, the resulting dropnon-zero SCOPE PREFIX LENGTH incache hits is very likely to defeat most latency benefits provided by edns-client- subnet. Therefore, when implementing this option for latency purposes, implementing full caching supporta delegation asdescribed in thisthough it were zero. For negative answers, some independent implementations of both resolvers and authorities did not see the sectionis STRONGLY RECOMMENDED. Any reply containing an edns-client-subnet option considered invalid should be treatedrestriction asif no edns-client-subnet option was specified at all. Replies coming from servers not supporting edns-client-subnetnecessarily meaning that a given name and type must only have either positive ECS-tagged answers orotherwise not containing an edns-client-subnet option SHOULD be considered as containingaSCOPE NETMASKnegative answer. They support being able to tell one part of0 (e.g., cachetheresult for 0.0.0.0/0 or ::/0) for all the supported families. In any case,network that theresponse fromdata does not exist, while telling another part of theresolvernetwork that it does. Several other implementations, however, do not support being able tothe client MUST NOT contain the edns-client-subnet option if none was present in the client's original request. If the original client request containedmix positive and negative answers, and thus interoperability is avalid edns-client-subnet option that was used during recursion, the Recursive Resolver MUST include the edns-client-subnet option from the Authoritative Nameserver response in the responseproblem. This issue is expected tothe client. Enabling support for edns-client-subnetbe revisited in arecursive resolver will significantly increase the sizefuture revision of thecache, reduceprotocol, possibly blessing thenumbermixing ofresults that can be served from cache,positive andincrease the load on the server. Implementing the mitigation techniques described in Section 10 is strongly recommended. 6.4.negative answers. There are implications for cache data structures that developers should consider when writing new ECS code. 6.5. Transitivity Generally,edns-client-subnetECS options will only be present in DNS messages between a Recursive Resolver and an Authoritative Nameserver, i.e., one hop. In certain configurations however, for example multi-tier nameserver setups, it may be necessary to implement transitive behaviour on Intermediate Nameservers. It is important that any Intermediate Nameserver that forwardsedns- client-subnetECS options received from their clients MUST fully implement the caching behaviour described in Section 6.3. IntermediateNameservers, including Recursive Resolvers,Nameservers supportingedns-client-subnetECS MUST forward options with SOURCENETMASKPREFIX-LENGTH set to 0(i.e.,(that is, completely anonymized),such an optionMUST forward the query with SOURCE PREFIX-LENGTH set to 0 and MUST NOT be replaced with an option with more accurate address information. An Intermediate Nameserver MAY also forwardedns-client-subnetECS options with actual address information. This information MAY match the source IP address of the incoming query, and MAY have more orlessfewer address bits than the Nameserver would normally include in a locally originatededns-client-subnetECS option. If for any reason the Intermediate Nameserver does not want to use the information in anedns-client-subnetECS option it receives (too little address information, network address from a range not authorized to use the server, private/unroutable address space, etc), it SHOULD drop the query and return a REFUSED response. Note again that anedns-client-subnetECS option with 0 address bits MUST NOT be refused. Be aware that at least one major existing implementation does not return REFUSED and instead just process the query as though the problematic information were not present. This can lead to anomalous situations, such as a response from the Intermediate Nameserver that indicates it is tailored for one network (the one passed in the original query, since ADDRESS must match) when actually it is for another network (the one which contains the address that the Intermediate Nameserver saw as making the query). 7. IANA Considerations IANA has already assigned option code 8 in the "DNS EDNS0 Option Codes (OPT)" registry toedns-client-subnet.ECS. The IANA is requested to update the reference ("draft-vandergaast- edns-client-subnet") to refer to this RFC when published. 8. DNSSEC Considerations The presence or absence of an [RFC6891] EDNS0 OPT resource record containing anedns-client-subnetECS option in a DNS query does not change the usage of the resource records and mechanisms used to provide data origin authentication and data integrity to the DNS, as described in [RFC4033], [RFC4034] and [RFC4035]. OPT records are not signed. Use of this option, however, does imply increased DNS traffic between any given Recursive Resolver and Authoritative Nameserver, which could be another barrier to further DNSSEC adoption in this area. 9. NAT Considerations Special awareness ofedns-client-subnetECS in devices that perform Network Address Translation (NAT) as described in [RFC2663] is not required; queries can be passed through as-is. The client's network address SHOULD NOT be added, and existingedns-client-subnetECS options, if present, SHOULD NOT be modified by NAT devices. In large-scale global networks behind a NAT(but,device (but forexample,example withaCentralized Resolver infrastructure), an internal Intermediate Nameserver might have detailed network layout information, andmightmay know which external subnets are used for egress traffic by each internal network. In such cases, the Intermediate Nameserver MAY use that information when originatingedns-client-subnetECS options. In other cases, Recursive Resolvers sited behind a NAT device SHOULD NOT originateedns-client-subnetECS options with their external IP address, and instead rely on downstream Intermediate Nameservers doing so. They MAY, however, choose to include the option with their internal address for the purposes of signaling a shorter, more anonymous SOURCENETMASK.PREFIX- LENGTH. If an Authoritative Nameserver on the publicly routed Internet receives arequestquery that specifies an ADDRESS in [RFC1918] or [RFC4193] private address space, it SHOULD ignore ADDRESS and look up its answer based on the address of the Recursive Resolver. In thereplyresponse it SHOULD set SCOPENETMASKPREFIX-LENGTH to cover all of the relevant private space. For example, arequestquery for ADDRESS 10.1.2.0 with a SOURCENETMASKPREFIX-LENGTH of 24 would get a returned SCOPENETMASKPREFIX- LENGTH of 8. The Intermediate Nameserver MAY elect to cache the answer under one entry for special-purpose addresses [RFC6890]; see Section 10.3. 10. Security Considerations 10.1. Privacy With theedns-client-subnetECS option, the network address of the client that initiated the resolution becomes visible to all servers involved in the resolution process. Additionally, it will be visible from any network traversed by the DNS packets. To protect users' privacy, Recursive Resolvers are strongly encouraged to conceal part of the IP address of the user by truncating IPv4 addresses to 24 bits.No recommendation is provided for IPv6 at this time, but IPv6 addresses should be similarly truncated in order to not allow unique identification of the client. When a non-zero SCOPE NETMASK is provided by the Recursive Resolver that is longer than SOURCE NETMASK, users can often obtain more optimal mapping if the resolver is well-used. Replies will have answers optimized up to SCOPE NETMASK56 bits are recommended fora subset of the SOURCE NETMASK. Subsequent requests within the TTL from clients within the cached range will be served the optimal answer, while still preserving privacy of the user.IPv6, based on [RFC6177]. ISPswill oftenshould have more detailed knowledge of their own networks. That is, theywillmight knowifthat all 24-bit prefixes in a /20 are in the same area. In those cases, for optimal cache utilization and improved privacy, the ISP's Recursive Resolver SHOULD truncate IP addresses in this /20 to just 20 bits, instead of 24 as recommended above. Users who wish their full IP address to be hidden can include anedns-client-subnetECS option specifying the wildcard address0.0.0.0/0(i.e.FAMILY set to 1 (IPv4),SOURCENETMASK to 0 and no ADDRESS).PREFIX-LENGTH of 0). As described in previous sections, this option will be forwarded across all the Recursive Resolvers supportingedns-client-subnet,ECS, which MUST NOT modify it to include the network address of the client. Note that even without anedns-client-subnetECS option, any server queried directly by the user will be able to see the full client IP address. Recursive Resolvers or Authoritative Nameservers MAY use the source IP address ofrequestsqueries to return a cached entry or to generatean optimized replya Tailored Response that best matches therequest.query. 10.2. Birthday Attacksedns-client-subnetECS adds information to the DNSquestion tuplequery tupe (q-tuple). This allows an attacker to send a caching Intermediate Nameserver multiple queries with spoofed IP addresses either in theedns-client-subnetECS option or as the source IP. These queries will trigger multiple outgoing queries with the same name, type and class, just different address information in theedns-client-subnetECS option. With multiple queries for the same name in flight, the attacker has a higher chance of successin sendingto send a matching response(withwith theaddress 0.0.0.0/0SCOPE PREFIX-LENGTH set to 0 to get it cached formany hosts).all hosts. To counter this, everyedns-client-subnetECS option in a response packet MUST contain theFAMILYfull FAMILY, ADDRESS and SOURCENETMASKPREFIX-LENGTH fields from the correspondingrequest, along with identical ADDRESS bits for SOURCE NETMASK length.query. Intermediate Nameservers processing a response MUST verify that these match, andMUSTSHOULD discard the entirereplyresponse if they do not. That requirement to discard is "SHOULD" instead of "MUST" because it stands in opposition to the instruction in Section 6.3 which states that a response lacking an ECS option should be treated as though it had one of SCOPE PREFIX-LENGTH of 0. If that is always true, then an attacker does not need to worry about matching the original ECS option data and just needs to flood back responses that have no ECS option at all. This type of attack could be detected in ongoing operations by marking whether the responding nameserver had previously been sending ECS option, and/or by taking note of an incoming flood of bogus responses and flagging the relevant query for re-resolution. This is more complex than existing nameserver responses to spoof floods, and would also need to be sensitive to a nameserver legitimately stopping ECS replies even though it had previously given them. 10.3. Cache Pollution It is simple for an arbitrary resolver or client to provide false information in theedns-client-subnetECS option, or to send UDP packets with forged source IP addresses. This could be used to: o pollute the cache of intermediate resolvers, by filling it with results that will rarely (if ever) be used. o reverse engineer the algorithms (or data) used by the Authoritative Nameserver to calculatethe optimized answer.Tailored Responses. o mount a denial-of-service attack against an Intermediate Nameserver, by forcing it to perform many more recursive queries than it would normally do, due to how caching is handled for queries containing theedns-client-subnetECS option. Even without malicious intent, Centralized Resolvers providing answers to clients in multiple networks will need to cache differentrepliesresponses for different networks, putting more memory pressure on the cache. To mitigate those problems: o Recursive Resolvers implementingedns-client-subnetECS should only enable it in deployments where it is expected to bring clear advantages to the end users. For example, when expecting clients from a variety of networks or from a wide geographical area. Due to the high cache pressure introduced byedns-client-subnet,ECS, the feature SHOULD be disabled in all default configurations. o Recursive Resolvers SHOULD limit the number of networks and answers they keep in the cache for a given query. o Recursive Resolvers SHOULD limit the number of total different networks that they keep in cache. o Recursive ResolversshouldMUST never sendedns-client-subnet optionsan ECS option with aSCOPE NETMASK that is longer than they are willing to cache. Similarly, if using the backwards-compatible SCOPE NETMASK of 0, the request should not set aSOURCENETMASK ofPREFIX-LENGTH providing more bits in the ADDRESS than they are willing tocache.cache responses for. o Recursive Resolvers should implement algorithms to improve the cache hit rate, given the size constraints indicated above. Recursive Resolvers MAY, for example, decide to discard more specific cache entries first. o Authoritative Nameservers and Recursive Resolvers should discardedns-client-subnetECS options that are either obviously forged or otherwise known to be wrong. They SHOULD at least treat unroutable addresses, such as some of the address blocks defined in [RFC6890], as equivalent to the Recursive Resolver's own identity. They SHOULD ignore and never forwardedns-client-subnetECS options specifying other routable addresses that are known not to be served by the query source. o Authoritative Nameservers consider theedns-client-subnetECS option just as a hint to provide better results. They can decide to ignore the content of theedns-client-subnetECS option based on black or white lists, rate limiting mechanisms, or any other logic implemented in the software. 11. Sending the Option When implementing a Recursive Resolver, there are two strategies on deciding when to include anedns-client-subnetECS option in a query. At this stage, it's not clear which strategy is best. 11.1. Probing A Recursive Resolver can send theedns-client-subnetECS option with every outgoing query. However, it is RECOMMENDED that Resolvers remember which Authoritative Nameservers did not return the option with their response, and omit client address information from subsequent queries to those Nameservers. Additionally, Recursive ResolversMAYSHOULD be configured to never send the option when querying root, top-level, and effective top-level domain servers. These domains are delegation-centric and are very unlikely to generate differentrepliesresponses based on the address of the client. When probing, it is important that several things are probed: support foredns-client-subnet,ECS, support for EDNS0, support for EDNS0 options, or possibly an unreachable Nameserver. Various implementations are known to drop DNS packets with OPT RRs (with or without options), thus several probes are required to discover what is supported. Probing, if implemented, MUST be repeatedperiodically (i.e. daily).periodically, e.g., daily. If an Authoritative Nameserver indicatesedns-client-subnetECS support for one zone, it is to be expected that the Nameserver supportsedns- client-subnetECS for all of its zones. Likewise, an Authoritative Nameserver that usesedns-client-subnetECS information for one of its zones, MUST indicate support for the option in all of itsresponses.responses to ECS queries. If the option is supported but not actually used for generating a response, its SCOPENETMASK valuePREFIX-LENGTH SHOULD be set to 0. 11.2. Whitelist As described previously, it is expected that only a few Recursive Resolvers will need to useedns-client-subnet,ECS, and that it will generally be enabled only if it offers a clear benefit to the users. To avoid the complexity of implementing a probing and detection mechanism (and the possible query loss/delay that may come with it), an implementation coulddecide touse astatically configuredwhitelist of Authoritative Namesevers to send the optionto.to, likely specified by their domain name. Implementations MAY also allow additionally configuring this based on other criteria, such as zone or query type. An additional advantage of using a whitelist is that partial client address information is only disclosed to Nameservers that are known to use the information, improving privacy. A major drawback is scalability. The operator needs to track which Authoritative Nameservers supportedns-client-subnet,ECS, making it harder for new Authoritative Nameservers to start using the option. Similarly, Authoritative Nameservers can also use whitelists to limit the feature to only certain clients. For example, a CDN that does not want all of their mapping trivially walked might require a legal agreement with the Recursive Resolver operator, to clearly describe the acceptable use of the feature. The maintenance of access control mechanisms is out of scope for this protocol definition. 12. Example 1. A stubresolver SRresolver, SR, with IP address 192.0.2.37 tries to resolve www.example.com, by forwarding the query to the RecursiveResolver RResolver, RNS, from IP address IP, asking for recursion. 2. RNS, supportingedns-client-subnet,ECS, looks up www.example.com in its cache. An entry is found neither for www.example.com, nor for example.com. 3. RNS builds a query to send to the root and .com servers. The implementation ofRRNS provides facilities so an administrator can configureRNSit not to forwardedns-client-subnetECS in certain cases. In particular, RNS is configured to not include anedns- client-subnetECS option when talking todelegation-centricTLD or root nameservers, as described in Section 6.1. Thus, noedns-client- subnetECS option is added, and resolution is performed as usual. 4. RNS now knows the next server toquery,query: the AuthoritativeNameserverNameserver, ANS, responsible for example.com. 5. RNS prepares a new query for www.example.com, including anedns- client-subnetECS option with: * OPTION-CODE, set to0x00 0x08.8. * OPTION-LENGTH, set to 0x00 0x07 for the following fixed 4 octets plus the 3 octets that will be used for ADDRESS. * FAMILY, set to 0x00 0x01 as IP is an IPv4 address. * SOURCENETMASK,PREFIX-LENGTH, set to 0x18, as RNS is configured to conceal the last 8 bits of every IPv4 address. * SCOPENETMASK,PREFIX-LENGTH, set to0x1B,0x00, asRNS is willing to cache answers up to a /27.specified by this document for all queries. * ADDRESS, set to 0xC0 0x00 0x02, providing only the first 24 bits of the IPv4 address. 6. The query is sent.ServerANS understands and usesedns-client- subnet.ECS. It parses theedns-client-subnetECS option, and generatesan optimized reply.a Tailored Response. 7. Dueto theits internalimplementation of ANS, itimplementation, ANS findsan answera response that isoptimaltailored forseveral /27 ranges withintheADDRESS/SOURCE NETMASKwhole /16 of therequest. It chooses one randomly. (Note well, this is just one example of how ANS could pick a suitable answer. Other selection methods are possible.)client that performed the query. 8.The Authoritative NameserverANS adds anedns-client-subnetECS option in thereply,response, containing: * OPTION-CODE, set to0x00 0x08.8. * OPTION-LENGTH, set to 0x000x08 for the following fixed 4 octets plus the 4 octets that will be used for ADDRESS .0x07. * FAMILY, set to 0x000x01, the same as the request.0x01. * SOURCENETMASK,PREFIX-LENGTH, set to 0x18, copied from therequest.query. * SCOPENETMASK,PREFIX-LENGTH, set to0x1B,0x10, indicating a/27/16 network. * ADDRESS, set to 0xC0 0x000x02 0xE0,0x02, copied from therequest.query. 9. RNS receives thereplyresponse containing anedns-client-subnetECS option.The resolverIt verifies that FAMILY, SOURCENETMASK,PREFIX-LENGTH, andthe SOURCE NETMASK bits ofADDRESS match therequest.query. If not, the message is discarded. 10. Thereplyresponse is interpreted as usual. Since thereplyresponse contains anedns-client-subnetECS option, the ADDRESS, SCOPENETMASK,PREFIX-LENGTH, and FAMILY in the response are used to cache the entry. 11. RNS sends a response to stub resolver SR, without including anedns-client-subnetECS option. 12. RNS receives anotherrequestquery to resolve www.example.com. This time, areplyresponse is cached. Thereply,response, however, is tied to a particular network. If the address of the client matches any network in the cache, then thereplyresponse is returned from the cache. Otherwise, another query is performed. If multiple results match, the one with the longest SCOPENETMASKPREFIX-LENGTH is chosen, as per common best-network match algorithms. 13. Contributing Authors The below individuals contributed significantly to the draft. The RFC Editor prefers a maximum of 5 names on the front page, and so we have listed additional authors in this section Edward Lewis ICANN 12025 Waterfront Drive, Suite 300 LosAngeles,Angeles CA 90094-2536 USA Email: edward.lewis@icann.org Sean Leach Fastly POBox 78266 SanFrancisco,Francisco CA 94107 Jason Moreau Akamai Technologies 8 Cambridge Ctr Cambridge MA 02142-1413 USA 14. Acknowledgements The authors wish to thank Darryl Rodden for his work as a co-author on previous versions, and the following people for reviewing early drafts of this document and for providing useful feedback: Paul S. R. Chisholm, B. Narendran, Leonidas Kontothanassis, David Presotto, Philip Rowlands, Chris Morrow, Kara Moscoe, Alex Nizhner, Warren Kumari, and Richard Rabbat fromGoogle,Google; Terry Farmer, Mark Teodoro, Edward Lewis, and Eric Burger fromNeustar,Neustar; DavidUlevitch,Ulevitch and Matthew Dempsky fromOpenDNS,OpenDNS; Patrick W. Gilmore andJason MoreauSteve Hill fromAkamai,Akamai; ColmMacCarthaigh,MacCarthaigh and Richard Sheehan from Amazon; Tatuya Jinmei from Internet Software Consortium; Andrew Sullivan from Dyn; John Dickinson from Sinodun; Mark Delany from Apple; Yuri Schaeffer from NLnet Labs; Antonio Querubin; and all of the other people that replied to our emails on various mailing lists. 15. References 15.1. Normative References [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, November 1987. [RFC1035] Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, November 1987. [RFC1700] Reynolds, J. and J. Postel, "Assigned Numbers", RFC 1700, October 1994. [RFC1918] Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., and E. Lear, "Address Allocation for Private Internets", BCP 5, RFC 1918, February 1996. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "DNS Security Introduction and Requirements", RFC 4033, March 2005. [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "Resource Records for the DNS Security Extensions", RFC 4034, March 2005. [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "Protocol Modifications for the DNS Security Extensions", RFC 4035, March 2005. [RFC4193] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast Addresses", RFC 4193, October 2005. [RFC6177] Narten, T., Huston, G., and L. Roberts, "IPv6 Address Assignment to End Sites", BCP 157, RFC 6177, March 2011. [RFC6890] Cotton, M., Vegoda, L., Bonica, R., and B. Haberman, "Special-Purpose IP Address Registries", BCP 153, RFC 6890, April 2013. [RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms for DNS (EDNS(0))", STD 75, RFC 6891, April 2013. 15.2. Informative References [RFC2663] Srisuresh, P. and M. Holdrege, "IP Network Address Translator (NAT) Terminology and Considerations", RFC 2663, August 1999. 15.3. URIs [1] http://www.iana.org/assignments/address-family-numbers/ Appendix A. Document History [RFC Editor: Please delete this section before publication.] -00 to -01 (IETF) o <David> Made the document describe how things are actually implmented now. This makes the document be more of a "this is how we are doing things, this provides information on that". There may be a future document that describes additional funcationality. o NETMASK was not a good desription, changed to PREFIX-LENGTH (Jinmei, others). Stole most of the definition for prefix length from RFC4291. o Fixed the "SOURCE PREFIX-LENGTH set to 0" definition to include IPv6 (Tatuya Jinmei) o Comment that ECS cannot be used to hand NXDOMAIN to some clients and not others, primarily because of interoperability issues. (Tatuya Jinmei) o Added text explaining that implmentations need to document thier behavior with overlapping networks. o Soften "optimized reply" language. (Andrew Sullivan). o Fixed some of legacy IPv4 cruft (things like 0.0.0.0/0) o Some more grammar / working cleanups. o Replaced a whole heap of occurances of "edns-client-subnet" with "ECS" for readability. (John Dickinson) o More clearly describe the process from the point of view of each type of nameserver. (John Dickinson) o Birthday attack still possible if attacker floods with ECS-less responses. (Yuri Schaeffer) o Added some open issues directly to the text. A.1. -00 o Document moved to experimental track, added experiment description in header with details in a new section. o Specifically note thatedns-client-subnetECS applies to the answer section only. o Warn that caching based onedns-client-subnetECS is optional but very important for performance reasons. o Updated NAT section. o Added recommendation to not use the default /24 recommendation for the sourcenetmaskprefix-length field if more detailed information about the network is available. o Rewritten problem statement to be more clear about the goal ofedns-client-subnetECS and the fact that it's entirely optional. o Wire format changed to include the original address andnetmaskprefix length in responses in defence against birthday attacks. o Security considerations now includes a section about birthday attacks. o Renamed edns-client-ip inedns-client-subnet,ECS, following suggestions on the mailing list. o Clarified behavior of resolvers when presented with an invalidedns-client-subnetECS option. o Fully take multi-tier DNS setups in mind and be more clear about where the option should be originated. o A note on Authoritative Nameservers receiving queries that specify private address space. o A note to always ask for the longest acceptable SOURCE prefix length, even if a prior answer indicated that a shorter prefix length was suitable. o Marked up a few more references. o Added a few definitions in the Terminology section, and a few more aesthetic changes in the rest of the document. A.2. -01 o Document version number reset from -02 to -00 due to the rename toedns-client-subnet.ECS. o Clarified example (dealing with TLDs, and various minor errors). o Referencing RFC5035 instead of RFC1918. o Added a section on probing (and how it should be done) vs. whitelisting. o Moved description on how to forwardedns-client-subnetECS option in dedicated section. o Queries with wrongly formattededns-client-subnetECS options should now be rejected with FORMERR. o Added an "Overview" section, providing an introduction to the document. o Intermediate Nameservers can now remove anedns-client-subnetECS option, or reduce the SOURCENETMASKPREFIX-LENGTH to increase privacy. o Added a reference to DoS attacks in the Security section. o Don't use "network range", as it seems to have different meaning in other contexts, and turned out to be confusing. o Use shorter and longernetmasks,prefix lengths, rather than higher or lower. Add a better explanation in the format section. o Minor corrections in various other sections. A.3. -02 o Added IANA-assigned option code.A.4. -03* o [*] There was no -03 version of the draft; these changes, however, were made after -02. o Allow non-zero SCOPE NETMASK for Recursive Resolvers to indicate their maximum cacheable mask length, and updated the example accordingly. o A note on Authoritative Nameservers receiving requests that specify private address space. o A note to always ask for the longest acceptable SCOPE NETMASK, even if a prior answer indicated that a shorter netmask was optimal. o Marked up a couple of references. o Minor grammatical consistency edits.Authors' Addresses Carlo Contavalli Google 1600 Amphitheater Parkway Mountain View, CA 94043 US Email: ccontavalli@google.com Wilmer van der Gaast Google Belgrave House, 76 Buckingham Palace Road London SW1W 9TQ UK Email: wilmer@google.com David C Lawrence Akamai Technologies 8 Cambridge Center Cambridge, MA 02142 US Email: tale@akamai.com Warren Kumari Google 1600 Amphitheatre Parkway Mountain View, CA 94043 US Email: warren@kumari.net