<?xml version='1.0' encoding='utf-8'?>
<?xml-model href="rfc7991bis.rnc"?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes"?>
<?rfc subcompact="no" ?>
<?rfc linkmailto="no" ?>
<?rfc editing="no" ?>
<?rfc comments="yes" ?>
<?rfc inline="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc-ext allow-markup-in-artwork="yes" ?>
<?rfc-ext include-index="no" ?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
  <!ENTITY RFC3254 PUBLIC "" "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3254.xml">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:x="http://purl.org/net/xml2rfc/ext" ipr="trust200902" category="info" docName="draft-ietf-dnsop-zoneversion-05" tocInclude="true" symRefs="true" sortRefs="true" version="3" submissionType="IETF">
  <front>
    <title abbrev="DNS ZONEVERSION Option">The DNS Zone Version (ZONEVERSION) Option</title>
    <author fullname="Hugo Salgado" initials="H." surname="Salgado">
      <organization>NIC Chile</organization>
      <address>
        <postal>
          <street>Miraflores 222, piso 14</street>
          <city>Santiago</city>
          <code>CP 8320198</code>
          <country>CL</country>
        </postal>
        <phone>+56 2 29407700</phone>
        <email>hsalgado@nic.cl</email>
      </address>
    </author>
    <author fullname="Mauricio Vergara Ereche" initials="M." surname="Vergara">
      <organization>DigitalOcean</organization>
      <address>
        <postal>
          <street>101 6th Ave</street>
          <city>New York</city>
          <code>NY 10013</code>
          <country>US</country>
        </postal>
        <email>mvergara@digitalocean.com</email>
      </address>
    </author>
    <author fullname="Duane Wessels" initials="D." surname="Wessels">
      <organization>Verisign</organization>
      <address>
        <postal>
          <street>12061 Bluemont Way</street>
          <city>Reston</city>
          <region>VA</region>
          <code>20190</code>
          <country>US</country>
        </postal>
        <phone>+1 703 948-3200</phone>
        <email>dwessels@verisign.com</email>
        <uri>https://verisign.com</uri>
      </address>
    </author>
    <date year="2024"/>
    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>zoneversion</keyword>
    <abstract>
      <t>The DNS ZONEVERSION option is a way for DNS clients to request,
        and for authoritative DNS servers to provide, information
        regarding the version of the zone from which a response is
        generated.  The Serial field from the Start Of Authority (SOA)
        resource record is a good example of a zone's version, and the
        only one defined by this specification.  Additional version
        types may be defined by future specifications.</t>

      <t>Including zone version data in a response simplifies and improves
        the quality of debugging and and diagnostics since the version
        and the data are provided atomically.  This can be especially
        useful for zones and DNS providers that leverage IP anycast or
        multiple backend systems.  It functions similarly to the
        NSID option.</t>
    </abstract>
  </front>
  
  <middle>
    <section anchor="intro" title="Introduction">
      <t>The ZONEVERSION option
        allows DNS queriers to request, and authoritative DNS severs to provide,
        a
        token representing the version of the zone from which a DNS response was generated. It is similar
        to the NSID option, which can be used to convey the identification
        of a name server that generates a response.</t>

      <t>The Domain Name System allows data to be loosely coherent
        <xref target="RFC3254"/>, because synchronization can never
        be instantaneous, and some uses of DNS do not require strong
        coherency anyway.  This means that a record obtained by
        one response could be out-of-sync with other authoritative
        sources of the same data at the same point in time.  This can
        make it difficult to debug some problems when there is a need
        to couple the data with the version of the zone it came from.
        Furthermore, in today's Internet, it is common for high volume and
        important DNS zones to utilize IP anycast <xref target="RFC4786"
        sectionFormat="of" section="4.9"/> and/or load-balanced backend
        servers.  In general, there is no way to ensure that two separate
        queries are delivered to the same server.  The ZONEVERSION option both
        simplifies and improves the DNS monitoring and debugging by
        directly associating the data and the version together in a
        single response.</t>

      <t>The SOA Serial field (<xref target="RFC1034" sectionFormat="of"
        section="4.3.5"/>) is one example of zone versioning.  Its purpose
        is to facilitate the distribution of zone data between primary
        and secondary name servers.  It is also often useful in DNS
        monitoring and debugging.  This document specifies the SOA Serial
        as one type of ZONEVERSION data.</t>

      <t>Some DNS zones may use other distrubtion and synchronization
        mechanisms not based on the SOA Serial number, such as relational
        databases or other proprietary methods.  In those cases the SOA
        Serial field may not be relevant with respect to the versioning
        of its content.  To accomodate these use cases, new ZONEVERSION
        types should be defined in future specifications.  Alternatively,
        zone operators may use one of the private use ZONEVERSION code
        points allocated by this specification.</t>

      <t>The ZONEVERSION option is OPTIONAL to implement by DNS clients and name servers.
        It is designed for use only when a name server provides
        authoritative response data.  It is intended only for hop-to-hop
        communication and is not transitive.</t>

      <section title="Requirements Language">
        <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"/>.</t>
      </section>

      <section title="Terminology">
        <t>In this document "original QNAME" is used to mean what the
        DNS terminology document <xref target="RFC8499"/> calls "QNAME
        (original)":</t>
        <blockquote><t>The name actually sent in the Question section
        in the original query, which is always echoed in the (final)
        reply in the Question section when the QR bit is set to 1.</t></blockquote>
      </section>
    </section>

    <section anchor="theoption" title="The ZONEVERSION Option">

      <t>This document specifies a new EDNS(0) <xref target="RFC6891"
        section="6.1.2"/> option, ZONEVERSION, which can be used by DNS
        clients and servers to provide information regarding the version
        of the zone from which a response is generated.</t>

      <section title="Wire Format">

        <t>The ZONEVERSION option is encoded as follows:</t>

        <t>OPTION-CODE for the ZONEVERSION option is &lt;TBD&gt;.</t>
        <t>[RFC Editor: change &lt;TBD&gt; to the proper code when assigned by IANA.]</t>

        <t>OPTION-LENGTH for the ZONEVERSION option MUST have a value of 0 for queries,
          and MUST have the value of the length (in octets) of the OPTION-DATA for responses.</t>

        <t>OPTION-DATA for the ZONEVERSION option is omitted in queries.  For responses it is composed of three fields:</t>

          <ul>
            <li>An unsigned 1 octet Label Count (LABELCOUNT)
              indicating the number of labels for the name of the zone that VERSION value refers to.</li>

            <li>An unsigned 1 octet type number (TYPE) that distinguishes the format and meaning of VERSION.</li>

            <li>An opaque octet string conveying the zone version data (VERSION).</li>
          </ul>

<!-- Some RFCs include the OPTION-CODE and OPTION-LENGTH fields in the protocol
     block diagram -->

      <figure>
        <name>Diagram with the OPTION-DATA format for ZONEVERSION option</name>
        <artset>
          <artwork type="ascii-art" name="zoneversion.txt">
<![CDATA[
                +0 (MSB)                       +1 (LSB)
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0: |           LABELCOUNT          |            TYPE               |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
2: |                            VERSION                            |
   /                                                               /
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
]]>
          </artwork>
        </artset>
      </figure>


      <t>
        The LABELCOUNT field indicates the name of the zone that the ZONEVERSION option refers to, by means of taking the last LABELCOUNT labels of the original QNAME.
        For example, an answer with QNAME "a.b.c.example.com" and a ZONEVERSION option with a LABELCOUNT of value 2, indicates that the zone name that this ZONEVERSION refers is "example.com.".</t>


      <t>The LABELCOUNT number helps to differentiate in the case of a downward referral response, where the parent server is authoritative for some portion of the QNAME that differs from a child server that is below the zone cut.
        Also, if the ANSWER section has more than one RR set with different zones (like a CNAME and a target name in another zone) the number of labels in the QNAME disambiguates such a situation.</t>

      <t>The value of the LABELCOUNT field MUST NOT count the null (root) label that terminates the original QNAME.
        The value of the LABELCOUNT field MUST be less than or equal to the number of labels in the original QNAME.
        The Root zone (".") has a LABELCOUNT field value of 0.</t>


      </section>

        <section anchor="optionpresentation" title="Presentation Format">
          <t>The presentation format of the ZONEVERSION option is as follows:</t>

          <t>The OPTION-CODE field MUST be represented as the mnemonic value ZONEVERSION.</t>

          <t>The OPTION-LENGTH field MAY be omitted,
            but if present it MUST be represented as an unsigned decimal integer.</t>

          <t>The LABELCOUNT value of OPTION-DATA field MAY be omitted,
            but if present it MUST be represented as an unsigned decimal integer.
            The corresponding zone name SHOULD be displayed (i.e., LABELCOUNT labels of the original QNAME)
            for easier human consumption.</t>

          <t>The TYPE and VERSION fields of the option SHOULD be represented according to each specific TYPE.</t>

        </section>
    </section>

    <section title="ZONEVERSION Processing">
      <section title="Initiators">
        <t>A DNS client MAY signal its support and desire for zone version information by
          including an empty ZONEVERSION option in the EDNS(0) OPT pseudo-RR of a query to an authoritative
          name server.  An empty ZONEVERSION option has OPTION-LENGTH set to zero.</t>
        <t>A DNS client SHOULD NOT send the ZONEVERSION option to non-authoritative name servers.</t>
        <t>A DNS client MUST NOT include more than one ZONEVERSION option in the OPT RR of a DNS query.</t>
      </section>

      <section title="Responders">
        <t>A name server that (a) understands the ZONEVERSION option, (b) is
          authoritative for the original QNAME, and (c) chooses to honor a
          particular ZONEVERSION request responds by including a TYPE and
          corresponding VERSION value in a ZONEVERSION option in an EDNS(0)
          OPT pseudo-RR in the response message.</t>

        <t>Otherwise,
          a server MUST NOT include a ZONEVERSION option in the response.</t>

        <t>A name server MUST ignore any non-empty ZONEVERSION payload data that
          might be present in the query message.</t>

        <t>A name server MAY include more than one ZONEVERSION option in
          the response if it supports multiple TYPEs. A name server MUST
          NOT include more than one ZONEVERSION option for a given TYPE.</t>

        <t>A name server SHOULD include zone version information
          for downward referral responses
          (see "Referrals" in <xref target="RFC8499" section="4"/>).
          Even though the response's Authoritative Answer bit is not set,
          the name server is authoritative for the zone from which the referral was generated.
          In this case, the ZONEVERSION data MUST correspond do version of the referring zone.</t>

        <t>A name server SHOULD include zone version information
          in a server failure (SERVFAIL) response when it is authoritative
          for the original QNAME.</t>

        <t>A name server SHOULD include zone version information
          in a NODATA response (<xref target="RFC8499" section="3"/>).
          Even though the NODATA response does not include an Answer
          section RRs, RCODE is NOERROR and the name server is still
          authoritative for the zone.</t>

      </section>
    </section>

    <section title="The SOA-SERIAL ZONEVERSION Type">

      <t>The first and only ZONEVERSION option TYPE defined in this document is a zone's serial number as found in the Start of Authority (SOA) RR.</t>

      <t>The value for this type is: 0</t>

      <t>The mnemonic of this type is: SOA-SERIAL.</t>

      <t>The OPTION-LENGTH for this type MUST be set to 6 in responses.</t>

      <t>The VERSION value for the SOA-SERIAL type MUST be a copy of the unsigned 32-bit 
        SERIAL field of the SOA RR, as defined in <xref target="RFC1035" section="3.3.13"/>.</t>

        <section anchor="typepresentation" title="Type SOA-SERIAL Presentation Format">
          <t>The presentation format of this type content is as follows:</t>
          <t>The TYPE field MUST be represented as the mnemonic value "SOA-SERIAL".</t>
          <t>The VERSION field MUST be represented as an unsigned decimal integer.</t>
        </section>
    </section>

    <section anchor="usage" title="Example usage">
      <t>A name server which (a) implements this specification, (b)
      receives a query with the ZONEVERSION option, (c) is authoritative
      for the original QNAME, and (d) utilizes the SOA serial field for
      versioning of said zone should include a ZONEVERSION option in
      its response.  In the response's ZONEVERSION option the OPTION-LENGTH
      would be set to 6 and the OPTION-DATA would consist of the 1-octet LABELCOUNT,
      the 1-octet TYPE with value 0, and 4-octet SOA SERIAL value.</t>

      <t>The example below demonstrates expected output of a diagnostic tool that implements the ZONEVERSION option, displaying a response from a compliant authoritative DNS server:</t>
        <figure>
          <name>Example usage and dig output</name>
          <artwork type="dns-rr">
<![CDATA[
  $ dig @ns.example.com www.example.com aaaa +zoneversion

  ; <<>> DiG 9.17.14-patched <<>> @ns.example.com www.example.com aaaa +zoneversion
  ; (1 server found)
  ;; global options: +cmd
  ;; Got answer:
  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7077
  ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

  ;; OPT PSEUDOSECTION:
  ; EDNS: version: 0, flags:; udp: 1232
  ; ZONEVERSION: 02 00 78 95 a4 e9 ("SOA-SERIAL: 2023073001 (example.com.)")
  ;; QUESTION SECTION:
  ;www.example.com.    IN  AAAA

  ;; ANSWER SECTION:
  www.example.com.  43200  IN  AAAA  2001:db8::80

  ;; AUTHORITY SECTION:
  example.com.    43200  IN  NS  ns.example.com.

  ;; ADDITIONAL SECTION:
  ns.example.com.    43200  IN  AAAA  2001:db8::53

  ;; Query time: 15 msec
  ;; SERVER: 2001:db8::53#53(2001:db8::53) (UDP)
  ;; WHEN: dom jul 30 19:51:04 -04 2023
  ;; MSG SIZE  rcvd: 129
]]>
          </artwork>
        </figure>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors thanks all the comments and support made in the DNSOP mailing list,
        chats and discussions.
        In special for the suggestions to generalize the option using a registry of types from
        <contact fullname="Petr Špaček" asciiFullname="Petr Spacek"/> and Florian Obser,
        suggestions for implementation from
        <contact fullname="Stéphane Bortzmeyer" asciiFullname="Stephane Bortzmeyer"/>,
        security clarifications from George Michaelson,
        zone name disambiguation from Joe Abley and Brian Dickson,
        and reviews from Tim Wicinski and Peter Thomassen.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section title="DNS EDNS0 Option Code Registration">
        <t>This document defines a new EDNS0 option,
          entitled ZONEVERSION (see <xref target="theoption"/>),
          and assigns a value of &lt;TBD&gt; from the DNS EDNS0 Option Codes (OPT) Option space:</t>

        <table>
		  <name>DNS EDNS0 Option code</name>
          <thead>
            <tr><th>Value</th><th>Name</th><th>Status</th><th>Reference</th></tr>
          </thead>
          <tbody>
            <tr><th>&lt;TBD&gt;</th><th>ZONEVERSION</th><th>Standard</th><th>[this document]</th></tr>
          </tbody>
        </table>

        <t>[RFC Editor: change &lt;TBD&gt; to the proper code when assigned by IANA.]</t>
        <t>[RFC Editor: change "this document" with the proper RFC number for this document when assigned by IANA.]</t>
      </section>

      <section title="ZONEVERSION Registry">
        <t>The ZONEVERSION option also defines a 8-bit TYPE field,
          for which IANA is requested to create and maintain a new registry entitled
          "ZONEVERSION TYPE Values" (abbreviation ZONEVERSION) used by the ZONEVERSION option,
          inside the "Domain Name System (DNS) Parameters" group.
          Initial values for the ZONEVERSION TYPE values registry are given below;
          future assignments in the 1-245 values are to be made through Specification Required Review <xref target="BCP26"/>.
          Assignments consist of a TYPE value as an unsigned 8-bit integer recorded in decimal,
          a Mnemonic name as an uppercase ASCII string with maximum length of 15 characters,
          and the required document reference.</t>

        <table>
		  <name>ZONEVERSION Registry</name>
          <thead>
            <tr><th>ZONEVERSION TYPE</th><th>Mnemonic</th><th>Reference</th></tr>
          </thead>
          <tbody>
            <tr><th>0</th><th>SOA-SERIAL</th><th>[this document]</th></tr>
            <tr><th>1-245</th><th>Unassigned</th><th></th></tr>
            <tr><th>246-254</th><th>Reserved for Local/Experimental Use</th><th>[this document]</th></tr>
            <tr><th>255</th><th>Reserved for future expansion</th><th>[this document]</th></tr>
          </tbody>
        </table>

        <t>[RFC Editor: change "this document" with the proper RFC number for this document when assigned by IANA.]</t>

        <t>The change control for this registry should be by means of an Standard action.</t>

        <section title="Expert Review Directives">
          <t>Allocation procedures for new code points in the ZONEVERSION TYPE registry require Specification Required review,
            and so it requires Expert Reviews as stated in <xref target="BCP26"/>.</t>

          <t>The expert should consider the following points:</t>
            <ul>
              <li>Duplication of code point allocations should be avoided.</li>
              <li>A Presentation Format section should be provided,
                with a clear code point mnemonic.</li>
              <li>The referenced document and stated use of the new code point should be appropriate for the intended use of a ZONEVERSION TYPE assignment.
                In particular the reference should state clear instructions for implementers about the syntax and semantic of the data.
                Also the Length of the Data must have proper limits.</li>
            </ul>

          <t>The expert reviewing the request MUST approve or disapprove the request within 10 business days from when she or he received the expert review request.</t>
        </section>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The EDNS extension data it's not covered by RRSIG records,
        so there's no way to verify its authenticity nor integrity using DNSSEC
        and could theoretically be tampered by a person-in-the-middle if the transport is made by insecure means.
        Caution should be taken to use the EDNS ZONEVERSION data for any means besides troubleshooting and debugging.</t>

      <t>If there's a need to certify the ZONEVERSION trustworthiness,
        it will be necessary to use an encrypted and authenticated DNS transport. </t>

      <t>If there's a need to authenticate data origin for the ZONEVERSION value,
        an answer with the SOA-SERIAL type as defined above could be compared to a separate regular SOA query with DO flag,
        whose answer shall be DNSSEC signed,
        with the cautions about Anycast and others as already stated in <xref target="intro" format="title"/>.</t>

      <t>With the SOA-SERIAL type defined above, there's no risk on disclosure of private information,
        as the SERIAL of the SOA record is already publicly available.</t>

      <t>Please note that the ZONEVERSION option can not be used for checking the correctness of an entire zone in a server.
        For such cases,
        the <xref target="RFC8976">ZONEMD record</xref> might be better suited at such a task.
        ZONEVERSION can help identify and correlate a certain specific answer with a version of a zone,
        but it has no special integrity or verification function besides a normal field value inside a zone,
        as stated above.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="RFC1034" target="https://www.rfc-editor.org/info/rfc1034" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1034.xml">
        <front>
          <title>Domain names - concepts and facilities</title>
          <author initials="P.V." surname="Mockapetris" fullname="P.V. Mockapetris">
            <organization/>
          </author>
          <date year="1987" month="November"/>
          <abstract>
            <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="13"/>
        <seriesInfo name="RFC" value="1034"/>
        <seriesInfo name="DOI" value="10.17487/RFC1034"/>
      </reference>
      <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
        <front>
          <title>Domain names - implementation and specification</title>
          <author initials="P.V." surname="Mockapetris" fullname="P.V. Mockapetris">
            <organization/>
          </author>
          <date year="1987" month="November"/>
          <abstract>
            <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System.  It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="13"/>
        <seriesInfo name="RFC" value="1035"/>
        <seriesInfo name="DOI" value="10.17487/RFC1035"/>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="S. Bradner">
            <organization/>
          </author>
          <date year="1997" month="March"/>
          <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.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC6891" target="https://www.rfc-editor.org/info/rfc6891" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6891.xml">
        <front>
          <title>Extension Mechanisms for DNS (EDNS(0))</title>
          <author initials="J." surname="Damas" fullname="J. Damas">
            <organization/>
          </author>
          <author initials="M." surname="Graff" fullname="M. Graff">
            <organization/>
          </author>
          <author initials="P." surname="Vixie" fullname="P. Vixie">
            <organization/>
          </author>
          <date year="2013" month="April"/>
          <abstract>
            <t>The Domain Name System's wire protocol includes a number of fixed fields whose range has been or soon will be exhausted and does not allow requestors to advertise their capabilities to responders.  This document describes backward-compatible mechanisms for allowing the protocol to grow.</t>
            <t>This document updates the Extension Mechanisms for DNS (EDNS(0)) specification (and obsoletes RFC 2671) based on feedback from deployment experience in several implementations.  It also obsoletes RFC 2673 ("Binary Labels in the Domain Name System") and adds considerations on the use of extended labels in the DNS.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="75"/>
        <seriesInfo name="RFC" value="6891"/>
        <seriesInfo name="DOI" value="10.17487/RFC6891"/>
      </reference>
    <reference anchor="BCP26" target="https://www.rfc-editor.org/info/rfc8126">
      <front>
        <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
        <author initials="M." surname="Cotton" fullname="M. Cotton">
          <organization/>
        </author>
        <author initials="B." surname="Leiba" fullname="B. Leiba">
          <organization/>
        </author>
        <author initials="T." surname="Narten" fullname="T. Narten">
          <organization/>
        </author>
        <date year="2017" month="June"/>
        <abstract>
          <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
          <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
          <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
        </abstract>
      </front>
      <seriesInfo name="BCP" value="26"/>
      <seriesInfo name="RFC" value="8126"/>
      <seriesInfo name="DOI" value="10.17487/RFC8126"/>
    </reference>
    </references>
    <references title="Informative References">
      &RFC3254;
      <reference anchor="RFC4786" target="https://www.rfc-editor.org/info/rfc4786" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4786.xml">
        <front>
          <title>Operation of Anycast Services</title>
          <author initials="J." surname="Abley" fullname="J. Abley">
            <organization/>
          </author>
          <author initials="K." surname="Lindqvist" fullname="K. Lindqvist">
            <organization/>
          </author>
          <date year="2006" month="December"/>
          <abstract>
            <t>As the Internet has grown, and as systems and networked services within enterprises have become more pervasive, many services with high availability requirements have emerged.  These requirements have increased the demands on the reliability of the infrastructure on which those services rely.</t>
            <t>Various techniques have been employed to increase the availability of services deployed on the Internet.  This document presents commentary and recommendations for distribution of services using anycast.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="126"/>
        <seriesInfo name="RFC" value="4786"/>
        <seriesInfo name="DOI" value="10.17487/RFC4786"/>
      </reference>
      <reference anchor="RFC8499" target="https://www.rfc-editor.org/info/rfc8499" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8499.xml">
        <front>
          <title>DNS Terminology</title>
          <author initials="P." surname="Hoffman" fullname="P. Hoffman">
            <organization/>
          </author>
          <author initials="A." surname="Sullivan" fullname="A. Sullivan">
            <organization/>
          </author>
          <author initials="K." surname="Fujiwara" fullname="K. Fujiwara">
            <organization/>
          </author>
          <date year="2019" month="January"/>
          <abstract>
            <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs.  The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined.  This document gives current definitions for many of the terms used in the DNS in a single document.</t>
            <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="219"/>
        <seriesInfo name="RFC" value="8499"/>
        <seriesInfo name="DOI" value="10.17487/RFC8499"/>
      </reference>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8976.xml"/>
      <reference anchor="ImplRef" target="https://github.com/huguei/rrserial">
          <front>
            <title>Zoneversion Implementations</title>
            <author fullname="Hugo Salgado" initials="H." surname="Salgado">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
    </references>
    <section anchor="implementationcons" title="Implementation Considerations">
      <t>With very few
exceptions, EDNS options which elicit an EDNS option in the response
are independent of the queried name. This is not the case of ZONEVERSION, so
its implementation may be more or less difficult depending on how EDNS
options are handled in the name server.
      </t>
    </section>
    <section anchor="implementation" title="Implementation References">
      <t>There's a patched NSD server version 4.7.0 with support for ZONEVERSION with an experimental opcode,
      with live test servers installed for compliance tests. Also there is a client command "dig" with added zoneversion support, along with test libraries in Perl, Python and Go. More information in the working document <xref target="ImplRef"/>.</t>

    </section>
    <!-- Change Log

v05 2024-01-15  HS   Major rewrites from Duane Wessels, added as coauthor.
v04 2023-08-03  MV   Clarification on LABELCOUNT, typos and formatting.
v04 2023-08-03  HS   Changed name of FLAG fields, removed flag length, typos and minor edits.
v03 2023-07-30  HS   Added a label number for zone name disambiguation, typos and minor edits.
v02 2022-04-21  HS   Upgraded from RRSERIAL to ZONEVERSION, to be versioning-agnostic.
v01 2022-04-06  HS   No changes, just for revive it after it expired
v00 2021-06-11  HS   No changes, just new filename as requested by DNSOP chairs for WG adoption
v01 2021-06-01  HS   Substantial changes and enhancements from DNSOP discussion
v00 2021-05-07  HS   New filename as requested by WG chair, to call for adoption
v01 2020-01-27  HS   No changes, just to avoid expiration
v00 2017-04-27  HS   Initial version

-->

</back>
</rfc>
