<?xml version='1.0' encoding='ascii'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc ipr="trust200902" category="std" docName="draft-ietf-dnsop-aname-01" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <?rfc toc="yes"?>
  <!--generate a table of contents -->
  <?rfc symrefs="yes"?>
  <!--use anchors instead of numbers for references -->
  <?rfc sortrefs="yes" ?>
  <!--alphabetize the references -->
  <?rfc compact="yes" ?>
  <!--conserve vertical whitespace -->
  <?rfc subcompact="no" ?>
  <!--but keep a blank line between list items -->
  <front>
    <title abbrev="aname">Address-specific DNS Name Redirection (ANAME)</title>
    <author initials="E." surname="Hunt" fullname="Evan Hunt">
      <organization>ISC</organization>
      <address>
        <postal>
          <street>950 Charter St</street>
          <city>Redwood City</city>
          <region>CA</region>
          <code>94063</code>
          <country>USA</country>
        </postal>
        <email>each@isc.org</email>
      </address>
    </author>
    <author initials="P.D." surname="van Dijk" fullname="Peter van Dijk">
      <organization abbrev="PowerDNS">PowerDNS.COM B.V.</organization>
      <address>
        <postal>
          <street/>
          <city>Den Haag</city>
          <code/>
          <country>The Netherlands</country>
        </postal>
        <email>peter.van.dijk@powerdns.com</email>
      </address>
    </author>
    <author initials="A." surname="Eden" fullname="Anthony Eden">
      <organization>DNSimple</organization>
      <address>
        <postal>
          <street/>
          <city>Boston</city>
          <region>MA</region>
          <country>USA</country>
        </postal>
        <email>anthony.eden@dnsimple.com</email>
        <uri>https://dnsimple.com/</uri>
      </address>
    </author>
    <date month="January" year="2018"/>
    <area>General</area>
    <keyword>DNS</keyword>
    <keyword>RR</keyword>
    <keyword>aname</keyword>
    <keyword>apex</keyword>
    <keyword>cname</keyword>
    <abstract><!--This document was prepared using Pandoc2rfc, https://github.com/miekg/pandoc2rfc --><t>This document defines the "ANAME" DNS RR type, to provide similar functionality to CNAME, but only redirects type A and AAAA queries. Unlike CNAME, an ANAME can coexist with other record types.  The ANAME RR allows zone owners to redirect queries for apex domain names in a standards compliant manner.  </t> </abstract>
  </front>
  <middle><!--This document was prepared using Pandoc2rfc, https://github.com/miekg/pandoc2rfc --><section title="Introduction" anchor="introduction" toc="default"><t>Websites hosted by content distribution networks are often served by multiple IP addresses handling different geographic areas. In many cases, an initial query for a domain name returns a CNAME record whose &lt;target&gt; is a name served by the CDN, and which ultimately resolves to a different final answer depending on the client's IP address or subnet, geographic location, or other considerations.  </t><t>It is common practice for websites to publish content at their registered domain name (sometimes referred to as a "bare domain" or "zone apex": for example, "example.com" rather than "www.example.com").  However, <xref target="RFC1033" pageno="false" format="default"/> forbids the use of CNAME records at the same node as any other record type. Zone apex nodes always contain SOA and NS RRsets, and frequently contain other types such as DNSKEY, MX, TXT/SPF, etc. Consequently, a CNAME record is not permitted at zone apex nodes.  </t><t>It should be noted that <xref target="RFC4034" pageno="false" format="default"/> relaxed this restriction by allowing coexistence of CNAME with RRSIG and NSEC records, but such exceptions are not applicable to other resource records. RRSIG and NSEC exist to prove the integrity of the CNAME record; they are not intended to associate arbitrary data with the domain name.  </t><t>DNAME <xref target="RFC6672" pageno="false" format="default"/> is also not a solution, as its function is to redirect all names in the namespace below the DNAME &lt;owner&gt;, not the DNAME &lt;owner&gt; itself.  </t><t>Redirecting website lookups to an alternate domain name via SRV or URI resource records would be an effective solution, but to date this approach has not been accepted by browser implementations. In addition, it is not possible to use SRV records with wildcard names.  </t><t>As a result of the above, the only widely supported and standards-compliant way to publish content at a zone apex is to to place A and/or AAAA records at that node. The flexibility afforded by CNAME is not available.  </t><t>This document specifies a new RR type "ANAME", which provides similar functionality to CNAME, but only for address queries (i.e., for type A or AAAA). The ANAME record can be present at any DNS node, and can coexist with most other RR types, enabling it to be present at a zone apex, or any other place where the presence of other records prevents the use of CNAME.  </t><t>Authoritative servers configured with ANAME records will answer address queries for the ANAME owner with addresses found at the ANAME's target, and also with the ANAME itself. Recursive resolvers which understand ANAME can re-query for the ANAME target, just as if they had received a CNAME response. Recursive resolvers which do not understand ANAME will ignore the ANAME and consume the provided A/AAAA records directly.  </t><t>Similar authoritative functionality has been implemented and deployed by a number of DNS software vendors and service providers, using names such as ALIAS, ANAME, apex CNAME, CNAME flattening, and top level redirection. These approaches have all been standards-noncompliant in one way or another, and none have provided a mechanism for a recursive resolver to follow the redirection chain itself.  </t><section title="Terminology" anchor="terminology" toc="default"><t>"Address type" refers to a DNS RR type that encodes a network address. Currently the set of address types consists of A and AAAA. (This is not an exclusive list; in the event that any new address types are standardized in the future, they will be included.) </t><t>"Address query" refers to a DNS query for any address type.  </t><t>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 <xref target="RFC2119" pageno="false" format="default"/>.  </t></section></section><section title="The ANAME Resource Record" anchor="the-aname-resource-record" toc="default"><t>This document defines the "ANAME" DNS resource record type, with RR TYPE value [TBD].  </t><t>The ANAME presentation format is identical to that of CNAME <xref target="RFC1033" pageno="false" format="default"/>: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
    owner ttl class ANAME target
</artwork></figure><t>The wire format is also identical to CNAME, except that name compression is not permitted in ANAME RDATA, per <xref target="RFC3597" pageno="false" format="default"/>.  </t><t>Only one ANAME &lt;target&gt; can be defined per &lt;owner&gt;. An ANAME RRset MUST NOT contain more than one resource record.  </t></section><section title="Authoritative Server Behavior" anchor="authoritative-server-behavior" toc="default"><t>When an ANAME record is present at a DNS node and a query is received by an authoritative server for type A or AAAA, the authoritative server returns the ANAME RR in the answer section.  </t><t>Because not all querying resolvers understand ANAME, the authoritative server MUST also return address records, as described below. This is conceptually similar to the synthesized CNAME record included with DNAME responses <xref target="RFC6672" pageno="false" format="default"/>.  </t><t>Authoritative servers implementing ANAME MUST be equipped to resolve the ANAME &lt;target&gt; on the querying resolver's behalf, either by sending queries to an external recursive resolver or by implementing recursive resolution logic internally, so that address records can be expanded when the ANAME &lt;target&gt; is in a separate zone from &lt;owner&gt;.  </t><t>If a query for the ANAME &lt;target&gt; returns a chaining response (i.e., CNAME, DNAME, or another ANAME), then the authoritative server (or the resolver tasked with resolving the ANAME &lt;target&gt; on its behalf) MUST attempt to follow the chain until it is able to resolve a final address response, or until resolution fails. Intermediate ANAMEs, CNAMEs, and DNAMEs MUST be omitted from the response.  </t><section title="Address records returned with ANAME" anchor="address-records-returned-with-aname" toc="default"><t>If the original query is for type A, and an RRset of type A exists at the final ANAME &lt;target&gt;, then that A RRset (with &lt;owner&gt; changed to match that of the ANAME RR), MUST be appended to the answer section after the ANAME RRset. If an AAAA RRset is also known to exist at the ANAME &lt;target&gt;, then the AAAA RRset MAY be appended to the additional section (again, with &lt;owner&gt; changed to match that of the ANAME RR).  </t><t>Similarly, if the original query was for type AAAA, and an AAAA RRset exists at the final ANAME &lt;target&gt;, then it is appended to the answer section (with &lt;owner&gt; changed), and if an A RRset also exists at the final ANAME &lt;target&gt; then it MAY be appended to the additional section.  </t><t>If the original query is for type ANAME, A and AAAA records MAY be returned in the additional section.  </t><t>If the original query is for type ANY and access to ANY query processing is not restricted, then the answer section MUST contain both the ANAME and the A and AAAA RRsets, if present and successfully resolved at the ANAME &lt;target&gt;.  </t><t>How and when an authoritative server resolves the A and AAAA responses from the ANAME &lt;target&gt; (when it is not itself authoritative for &lt;target&gt;) is unspecified. If the authoritative server is capable of performing recursive resolution, then it MAY resolve the query itself, or it MAY send address queries to an external resolver. It MAY send address queries to the ANAME &lt;target&gt; when loading the zone and cache the responses locally, or it MAY delay resolution of the address records until a query is received for the ANAME &lt;owner&gt;. In either case, for performance reasons, it is RECOMMENDED that address records be cached locally by the authoritative server.  </t><t>Address records cached locally MUST have a limited TTL. The initial TTL for locally-cached address records MUST be set to the minimum of the ANAME TTL and the TTLs of the intermediate and address records retrieved during ANAME &lt;&gt; resolution. The TTL of the cached address records MUST count down, just as it would in a conventional resolver cache. Address records with expired TTLs MUST NOT be used to answer address queries until refreshed by sending a new query to the ANAME &lt;target&gt;.  </t><t>If configured to do so, then the authoritative server MAY, when sending queries to the ANAME &lt;target&gt;, include an EDNS CLIENT-SUBNET (ECS) option <xref target="RFC7871" pageno="false" format="default"/>, either forwarding an ECS option that was sent to it by the querying resolver, or generating a new ECS option from the querying resolver's address. If a response from the ANAME &lt;target&gt; includes an ECS option with a SCOPE PREFIX-LENGTH greater than zero, the response SHOULD be cached in such a way that it would subsequently only be used in response to queries from the same client subnet.  </t><t>If resolution of the ANAME &lt;target&gt; yields no address records due to NODATA or NXDOMAIN, then the authoritative server MUST return only the ANAME record. If the query was for a specific address type, then the response MUST also include the SOA as in a normal NODATA response, along with NSEC or NSEC3 if applicable.  </t><t>If resolution of the ANAME &lt;target&gt; yields no address records due to some other failure, and the query was for a specific address type, the response MUST include the ANAME record and set the RCODE to SERVFAIL.  </t></section><section title="Coexistence with other types" anchor="coexistence-with-other-types" toc="default"><t>If the zone is configured with an A or AAAA RRset at the same DNS node as ANAME, then the ANAME is considered to have already been expanded. If during query processing any address records are found at the same node as an ANAME RR, then the ANAME RR MUST NOT be further expanded by the authoritative server.  </t><t>ANAME MUST NOT coexist with CNAME or any other RR type that restricts the types with which it can itself coexist.  </t><t>Like other types, ANAME MUST NOT exist below a DNAME, but it can coexist at the same node; in fact, the two can be used cooperatively to redirect both the owner name (via ANAME) and everything under it (via DNAME).  </t><t>ANAME can freely coexist at the same owner name with any other RR type.  </t></section><section title="DNSSEC signing" anchor="dnssec-signing" toc="default"><t>If the zone in which the ANAME resides is DNSSEC-signed, and if the server has access to its private zone-signing key, then the A and AAAA RRsets MUST be signed, either in advance when populating the A/AAAA answers for the ANAME records, or "on the fly" when responding to a query.  </t><t>If the server does not have access to the private zone-signing key then it MAY return unsigned address records, but this is NOT RECOMMENDED unless every resolver with access to the zone is known to support ANAME (as might be the case in a split-horizon deployment where ANAME records are only served to an internal network with its own resolvers).  </t><t>Validating resolvers which do not yet implement ANAME will not be able to validate the A and AAAA responses included with an ANAME response unless those responses are validly signed by a DNSKEY at the apex of the zone in which the ANAME resides. Passing along the RRSIGs associated with the original A and AAAA RRsets from the ANAME &lt;target&gt; will not be sufficient for DNSSEC validation.  </t><t>Implementers MAY allow address records associated with the ANAME to be populated and signed by the primary server, then sent along with their RRSIGs to secondaries via zone transfer. In this case, the master server MUST respect the TTLs of the address records, MUST refresh the address records by re-resolving the ANAME &lt;target&gt; when their TTLs expire, SHOULD respond to address queries with TTLs that count down as they would when answering from a normal DNS cache, and MUST inform secondary servers via DNS NOTIFY they need to refresh the zone when address records have been updated. A secondary server SHOULD store address records and associated RRSIGs supplied via zone transfer in such a way that their TTLs will count down, as they would in a normal DNS cache, and ultimately trigger a zone refresh query upon reaching zero.  When a secondary server is responding to an address query, it SHOULD answer with the reduced TTL, but when responding to a zone transfer request, it MUST answer with the original TTL received from the primary.  </t><t>If this address record expansion and signing during zone transfer is not supported, then every authoritative server providing ANAME responses in a signed zone SHOULD have access to the private zone-signing key for that zone. Deployment of ANAME in signed zones where address records cannot be signed due to lack of access to the private zone-signing key is NOT RECOMMENDED.  </t><t>When ANAME is present in a signed DNS node and address records exist at the ANAME &lt;target&gt;, the type bit map in the NSEC <xref target="RFC4034" pageno="false" format="default"/> or NSEC3 <xref target="RFC5155" pageno="false" format="default"/> record for that node MUST include bits for A and/or AAAA as well as ANAME. This is for the benefit of validating resolvers not implementing ANAME which may use a signed proof of nonexistence for type A and AAAA to prevent address queries from being resolved. The type bit map SHOULD only include address types which are known to exist at the &lt;target&gt;.  </t></section></section><section title="Recursive Server Behavior" anchor="recursive-server-behavior" toc="default"><t>When a recursive resolver sends a query of type A or AAAA and receives a response with an ANAME RRset in the answer section, it MUST re-query for the ANAME &lt;target&gt;. This is necessary because, in some cases, the address received will be dependent on network topology and other considerations, and the resolver may find a different answer than the authoritative server did. (This requirement MAY be relaxed if both the ANAME &lt;owner&gt; and &lt;target&gt; are validly signed and provably in the same zone.) </t><t>If resolution fails -- for example, due to the local resolver being nonfunctional or the ANAME &lt;target&gt; zone being unreachable -- then the resolver MAY use the address records that were included in the authoritative response as a fallback. Otherwise, these records MUST NOT be cached or returned.  </t><t>If configured to do so, the resolver MAY include an EDNS CLIENT-SUBNET option <xref target="RFC7871" pageno="false" format="default"/> both when sending the initial query to the ANAME &lt;owner&gt; and when re-querying for the ANAME &lt;target&gt;. If the response includes a SCOPE PREFIX-LENGTH greater than zero, the response SHOULD be cached in such a way that it would subsequently only be used in response to queries from the same client subnet.  </t></section><section title="Examples" anchor="examples" toc="default"><t>Given the following zone: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
$ORIGIN example.com.
@   IN SOA   example.com hostmaster.example.com 1 7200 600 1209600 60
@   IN NS    ns1
@   IN ANAME example.com.my-cdn.example.net.
www IN CNAME example.com.my-cdn.example.net.
</artwork></figure><t>A query for example.com/A would return the following: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
;; QUESTION SECTION:
;example.com.                   IN      A

;; ANSWER SECTION:
example.com.            5       IN      ANAME   example.com.my-cdn.example.net.
example.com.            5       IN      A       192.0.2.1

;; ADDITIONAL SECTION:
example.com.            5       IN      AAAA    2001:db8::1
</artwork></figure><t>Similarly, for example.com/AAAA: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
;; QUESTION SECTION:
;example.com.                   IN      AAAA

;; ANSWER SECTION:
example.com.            5       IN      ANAME   example.com.my-cdn.example.net.
example.com.            5       IN      AAAA    2001:db8::1

;; ADDITIONAL SECTION:
example.com.            5       IN      A       192.0.2.1
</artwork></figure><t>A query for example.com/AANME would receive only the ANAME in the answer section, with the addresses for example.com.my-cdn.example.net expanded in the additional section: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
;; QUESTION SECTION:
;example.com.                   IN      ANAME

;; ANSWER SECTION:
example.com.            5       IN      ANAME   example.com.my-cdn.example.net.

;; ADDITIONAL SECTION:
example.com.my-cdn.example.net. 5 IN    A       192.0.2.1
example.com.my-cdn.example.net. 5 IN    AAAA    2001:db8::1
</artwork></figure><t>Meanwhile, a query for a non-address type would be returned normally: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
;; QUESTION SECTION:
;example.com.                   IN      NS

;; ANSWER SECTION:
example.com.            5       IN      NS      ns1.example.com.
</artwork></figure></section><section title="Operational Considerations" anchor="operational-considerations" toc="default"><t>When a zone containing ANAME records is transferred to a secondary server, the ANAME records are transferred, but the A or AAAA records retrieved from the ANAME &lt;target&gt; may not be. If the primary server implements ANAME but the secondary server does not, then the two will return different answers for address queries. It is therefore RECOMMENDED that ANAME not be deployed in a zone unless all of the authoritative servers for that zone implement ANAME, or the primary is able to expand the ANAME with the related address RRsets during the zone transfer.  </t></section><section title="Implementation Status" anchor="implementation-status" toc="default"><t>PowerDNS <eref target="https://powerdns.com"/> currently implements a similar authoritative-only feature using "ALIAS" records, which are expanded by the primary server and transfered as address records to secondaries.  </t><t>[TODO: Add discussion of DNSimple, DNS Made Easy, EasyDNS, Cloudflare, Amazon, and Akamai.] </t></section><section title="Security Considerations" anchor="security-considerations" toc="default"><t>An authoritative server which implements ANAME resolves address queries on behalf of its clients, either internally or by querying an external resolver. This resolution must be allowed to take place regardless of whether the client would ordinarily have been permitted by local policy to send recursive queries.  </t><t>When a resolver that does not understand ANAME receives a response containing A or AAAA records with &lt;owner&gt; rewritten to match that of the ANAME RR, this may bypass security mechanisms based on local policy limiting access to the original ANAME &lt;target&gt;.  One possible mitigation for this is to make sure the resolver being used during ANAME resolution lives outside of such critical network sections.  </t><t>If ANAME is used in a signed zone, validating resolvers that do not understand ANAME will not be able to valudate the A and AAAA records included in the response, unless the responding server has added signatures for those records. Merely passing along signatures from the &lt;target&gt; is not sufficient. An authoritative server hosting a secure domain that includes ANAME SHOULD therefore have access to the private zone-signing key for that domain; otherwise, the operator must accept that validation failures will be common until ANAME is widly deployed.  </t><t>Both authoritative servers and resolvers that implement ANAME SHOULD carefully check for loops and treat them as an error condition. One possible approach is to implement a hop counter and stop resolution when a maximum hop count is reached.  </t><t>An authoritative resolver returning address records which were obtained by resolving the ANAME &lt;target&gt; is supplying its own best information to clients as to the correct answer. The response may be signed by the authoritative server, but that is not a guarantee of the actual correctness of the answer. This can have the effect of promoting an insecure response from the ANAME &lt;target&gt; to a signed response from the &lt;owner&gt;, which may then appear to clients to be more trustworthy than it should. To mitigate harm from this, DNSSEC validation SHOULD be used when resolving the ANAME &lt;target&gt;. Authoritative servers MAY refuse to expand ANAME records unless the &lt;target&gt; node is both signed and validated.  </t></section><section title="IANA Considerations" anchor="iana-considerations" toc="default"><t>IANA is requested to assign a DNS RR data type value for the ANAME RR type under the "Resource Record (RR) TYPEs" subregistry under the "Domain Name System (DNS) Parameters" registry.  </t><t>IANA may wish to consider the creation of a registry of address types; addition of new types to such a registry would then implicitly update this specification.  </t></section><section title="Acknowledgments" anchor="acknowledgments" toc="default"><t>Thanks to Mukund Sivaraman, Stephen Morris, Ray Bellis, Mark Andrews, Richard Salts, Job Snijders, Richard Gibson, Hakan Lindqvist, Jan Vcelak, Tatuya JINMEI, and Tony Finch for discussion and feedback.  </t></section> </middle>
  <back>
    <references title="Normative References">
      <reference anchor="RFC1033">
        <front>
          <title abbrev="DOMAIN OPERATIONS GUIDE">Domain administrators operations guide</title>
          <author initials="M." surname="Lottor" fullname="M. Lottor">
            <organization>SRI International</organization>
          </author>
          <date year="1987" day="1" month="November"/>
        </front>
        <seriesInfo name="RFC" value="1033"/>
        <format type="TXT" octets="37263" target="http://www.rfc-editor.org/rfc/rfc1033.txt"/>
      </reference>
      <reference anchor="RFC3597">
        <front>
          <title>Handling of Unknown DNS Resource Record (RR) Types</title>
          <author initials="A." surname="Gustafsson" fullname="A. Gustafsson">
            <organization/>
          </author>
          <date year="2003" month="September"/>
          <abstract>
            <t>Extending the Domain Name System (DNS) with new Resource Record (RR) types currently requires changes to name server software.  This document specifies the changes necessary to allow future DNS implementations to handle new RR types transparently. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3597"/>
        <format type="TXT" octets="17559" target="http://www.rfc-editor.org/rfc/rfc3597.txt"/>
      </reference>
      <reference anchor="RFC4034">
        <front>
          <title>Resource Records for the DNS Security Extensions</title>
          <author initials="R." surname="Arends" fullname="R. Arends">
            <organization/>
          </author>
          <author initials="R." surname="Austein" fullname="R. Austein">
            <organization/>
          </author>
          <author initials="M." surname="Larson" fullname="M. Larson">
            <organization/>
          </author>
          <author initials="D." surname="Massey" fullname="D. Massey">
            <organization/>
          </author>
          <author initials="S." surname="Rose" fullname="S. Rose">
            <organization/>
          </author>
          <date year="2005" month="March"/>
          <abstract>
            <t>This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of resource records and protocol modifications that provide source authentication for the DNS. This document defines the public key (DNSKEY), delegation signer (DS), resource record digital signature (RRSIG), and authenticated denial of existence (NSEC) resource records. The purpose and format of each resource record is described in detail, and an example of each resource record is given.&lt;/t&gt;&lt;t&gt; This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4034"/>
        <format type="TXT" octets="63879" target="http://www.rfc-editor.org/rfc/rfc4034.txt"/>
      </reference>
    </references>
    <references title="Informative References">
      <reference anchor="RFC2119">
        <front>
          <title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="Scott Bradner">
            <organization>Harvard University</organization>
            <address>
              <postal>
                <street>1350 Mass. Ave.</street>
                <street>Cambridge</street>
                <street>MA 02138</street>
              </postal>
              <phone>- +1 617 495 3864</phone>
              <email>sob@harvard.edu</email>
            </address>
          </author>
          <date year="1997" month="March"/>
          <area>General</area>
          <keyword>keyword</keyword>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  Authors who follow these guidelines should incorporate this phrase near the beginning of their document: <list><t>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 RFC 2119.  </t></list></t>
            <t>Note that the force of these words is modified by the requirement level of the document in which they are used.  </t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <format type="TXT" octets="4723" target="http://www.rfc-editor.org/rfc/rfc2119.txt"/>
        <format type="HTML" octets="17491" target="http://xml.resource.org/public/rfc/html/rfc2119.html"/>
        <format type="XML" octets="5777" target="http://xml.resource.org/public/rfc/xml/rfc2119.xml"/>
      </reference>
      <reference anchor="RFC5155">
        <front>
          <title>DNS Security (DNSSEC) Hashed Authenticated Denial of Existence</title>
          <author initials="B." surname="Laurie" fullname="B. Laurie">
            <organization/>
          </author>
          <author initials="G." surname="Sisson" fullname="G. Sisson">
            <organization/>
          </author>
          <author initials="R." surname="Arends" fullname="R. Arends">
            <organization/>
          </author>
          <author initials="D." surname="Blacka" fullname="D. Blacka">
            <organization/>
          </author>
          <date year="2008" month="March"/>
          <abstract>
            <t>The Domain Name System Security (DNSSEC) Extensions introduced the NSEC resource record (RR) for authenticated denial of existence.  This document introduces an alternative resource record, NSEC3, which similarly provides authenticated denial of existence.  However, it also provides measures against zone enumeration and permits gradual expansion of delegation-centric zones. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5155"/>
        <format type="TXT" octets="112338" target="http://www.rfc-editor.org/rfc/rfc5155.txt"/>
      </reference>
      <reference anchor="RFC6672">
        <front>
          <title>DNAME Redirection in the DNS</title>
          <author initials="S." surname="Rose" fullname="S. Rose">
            <organization/>
          </author>
          <author initials="W." surname="Wijngaards" fullname="W. Wijngaards">
            <organization/>
          </author>
          <date year="2012" month="June"/>
          <abstract>
            <t>The DNAME record provides redirection for a subtree of the domain name tree in the DNS.  That is, all names that end with a particular suffix are redirected to another part of the DNS.  This document obsoletes the original specification in RFC 2672 as well as updates the document on representing IPv6 addresses in DNS (RFC 3363). [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6672"/>
        <format type="TXT" octets="45704" target="http://www.rfc-editor.org/rfc/rfc6672.txt"/>
      </reference>
      <reference anchor="RFC7871" target="http://www.rfc-editor.org/info/rfc7871">
        <front>
          <title>Client Subnet in DNS Queries</title>
          <author initials="C." surname="Contavalli" fullname="C. Contavalli">
            <organization/>
          </author>
          <author initials="W." surname="van der Gaast" fullname="W. van der Gaast">
            <organization/>
          </author>
          <author initials="D." surname="Lawrence" fullname="D. Lawrence">
            <organization/>
          </author>
          <author initials="W." surname="Kumari" fullname="W. Kumari">
            <organization/>
          </author>
          <date year="2016" month="May"/>
          <abstract>
            <t>This document describes an Extension Mechanisms for DNS (EDNS0) option that is in active use to carry information about the network that originated a DNS query and the network for which the subsequent response can be cached.  Since it has some known operational and privacy shortcomings, a revision will be worked through the IETF for improvement.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7871"/>
        <seriesInfo name="DOI" value="10.17487/RFC7871"/>
      </reference>
    </references>
  </back>
</rfc>
