<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-dnsop-generalized-notify-09" number="9859" updates="" obsoletes="" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" xml:lang="en" submissionType="IETF" prepTime="2025-09-28T18:23:28" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-dnsop-generalized-notify-09" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9859" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Generalized Notifications">Generalized DNS Notifications</title>
    <seriesInfo name="RFC" value="9859" stream="IETF"/>
    <author initials="J." surname="Stenstam" fullname="Johan Stenstam">
      <organization showOnFrontPage="true">The Swedish Internet Foundation</organization>
      <address>
        <email>johan.stenstam@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
      <organization showOnFrontPage="true">deSEC, Secure Systems Engineering</organization>
      <address>
        <email>peter@desec.io</email>
      </address>
    </author>
    <author initials="J." surname="Levine" fullname="John Levine">
      <organization showOnFrontPage="true">Standcore LLC</organization>
      <address>
        <email>standards@standcore.com</email>
      </address>
    </author>
    <date month="09" year="2025"/>
    <area>OPS</area>
    <workgroup>dnsop</workgroup>
    <keyword>Delegation</keyword>
    <keyword>Automation</keyword>
    <keyword>DS</keyword>
    <keyword>DNSSEC</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document generalizes and extends the use of DNS NOTIFY (RFC 1996) beyond
conventional zone transfer hints to allow other types of actions
that were previously lacking a trigger mechanism to be triggered via the DNS.
Notifications merely nudge the receiver to initiate a predefined action promptly
(instead of on a schedule); they do not alter the action itself
(including any security checks it might employ).</t>
      <t indent="0" pn="section-abstract-2">To enable this functionality, a method for discovering the receiver endpoint
for such notification messages is introduced, via the new DSYNC record type.
Notification types are recorded in a new registry, with initial support for
parental NS and DS record updates including DNSSEC bootstrapping.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9859" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2025 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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 Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-design-goals-for-delegation">Design Goals for Delegation Maintenance</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-notation">Requirements Notation</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dsync-rr-type">DSYNC RR Type</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-wire-format">Wire Format</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-presentation-format">Presentation Format</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-semantics">Semantics</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-publication-of-notification">Publication of Notification Targets</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-wildcard-method">Wildcard Method</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-child-specific-method">Child-specific Method</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-delegation-maintenance-cds-">Delegation Maintenance: CDS/CDNSKEY and CSYNC Notifications</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-endpoint-discovery">Endpoint Discovery</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sending-notifications">Sending Notifications</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.2.2">
                  <li pn="section-toc.1-1.4.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.1.1"><xref derivedContent="4.2.1" format="counter" sectionFormat="of" target="section-4.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-timeouts-and-error-handling">Timeouts and Error Handling</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.2.1"><xref derivedContent="4.2.2" format="counter" sectionFormat="of" target="section-4.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-roles">Roles</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-processing-of-notify-messag">Processing of NOTIFY Messages for Delegation Maintenance</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dsync-rr-type-2">DSYNC RR Type</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dsync-scheme-registration">DSYNC Scheme Registration</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-_dsync-underscore-name">_dsync Underscore Name</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-efficiency-and-convergence-">Efficiency and Convergence Issues in DNS Scanning</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-original-notify-for-zone-tr">Original NOTIFY for Zone Transfer Nudging</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-similar-issues-for-ds-maint">Similar Issues for DS Maintenance and Beyond</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The original DNS notifications <xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/>, which are here referred to as
"NOTIFY(SOA)", are sent from a primary server to a secondary server to
minimize the latter's convergence time to a new version of the
zone. This mechanism successfully addresses a significant inefficiency
in the original protocol.</t>
      <t indent="0" pn="section-1-2">Today, similar inefficiencies occur in new use cases, in particular delegation
maintenance (DS and NS record updates). Just as in the NOTIFY(SOA) case, a new
set of notification types will have a major positive benefit by
allowing the DNS infrastructure to completely sidestep these
inefficiencies. For additional context, see <xref target="context" format="default" sectionFormat="of" derivedContent="Appendix A"/>.</t>
      <t indent="0" pn="section-1-3">Although this document primarily deals with applying generalized notifications
to the delegation maintenance use case, future extension for other applications
(such as multi-signer key exchange) is possible.</t>
      <t indent="0" pn="section-1-4">No DNS protocol changes are introduced by this document. Instead, the mechanism
makes use of a wider range of DNS messages allowed by the protocol.</t>
      <t indent="0" pn="section-1-5">Readers are expected to be familiar with DNSSEC <xref target="RFC9364" format="default" sectionFormat="of" derivedContent="RFC9364"/>, including
<xref target="RFC6781" format="default" sectionFormat="of" derivedContent="RFC6781"/>, <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/>, <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/>, <xref target="RFC7583" format="default" sectionFormat="of" derivedContent="RFC7583"/>, <xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/>,
<xref target="RFC8901" format="default" sectionFormat="of" derivedContent="RFC8901"/>, and <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/>.
DNS-specific terminology can be found in <xref target="RFC9499" format="default" sectionFormat="of" derivedContent="RFC9499"/>.</t>
      <section anchor="design-goals-for-delegation-maintenance" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-design-goals-for-delegation">Design Goals for Delegation Maintenance</name>
        <t indent="0" pn="section-1.1-1">When the parent operator is interested in notifications for delegation
maintenance (such as DS or NS update hints), a service to accept these notifications will need to be
made available. Depending on the
context, this service may be run by the parent operator
or by a designated entity who is in charge of handling the domain's
delegation data (such as a domain registrar).</t>
        <t indent="0" pn="section-1.1-2">It seems desirable to minimize the number of steps that the notification sender
needs to perform in order to figure out where to send the NOTIFY. This suggests
that the lookup process be ignorant of the details of the parent-side
relationships (e.g., whether or not there is a registrar). This is
addressed by parameterizing the lookup with the name of the child. The
parent operator may then announce the notification endpoint
in a delegation-specific way by publishing it at a child-specific name.
(A catch-all endpoint may be indicated by wildcarding.)</t>
        <t indent="0" pn="section-1.1-3">The solution specified here is thus for the parent operator to publish
the address where someone listens for notifications, in a child-specific
way (see <xref target="signaling" format="default" sectionFormat="of" derivedContent="Section 3"/>). Potential senders can easily determine the name
of the parent and then look up that information (see <xref target="discovery" format="default" sectionFormat="of" derivedContent="Section 4.1"/>).</t>
      </section>
      <section anchor="requirements-notation" numbered="true" removeInRFC="false" toc="include" pn="section-1.2">
        <name slugifiedName="name-requirements-notation">Requirements Notation</name>
        <t indent="0" pn="section-1.2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
      </section>
    </section>
    <section anchor="dsyncrdtype" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-dsync-rr-type">DSYNC RR Type</name>
      <t indent="0" pn="section-2-1">This section defines the DSYNC RR type, which is subsequently used for
discovering notification endpoints.</t>
      <section anchor="wire-format" numbered="true" removeInRFC="false" toc="include" pn="section-2.1">
        <name slugifiedName="name-wire-format">Wire Format</name>
        <t indent="0" pn="section-2.1-1">The DSYNC RDATA wire format is encoded as follows:</t>
        <figure align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-dsync-rdata-wire-format">DSYNC RDATA Wire Format</name>
          <artwork align="left" pn="section-2.1-2.1">
                     1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RRtype                        | Scheme        | Port
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                | Target ...  /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/</artwork>
        </figure>
        <dl spacing="normal" indent="3" newline="false" pn="section-2.1-3">
          <dt pn="section-2.1-3.1">RRtype:</dt>
          <dd pn="section-2.1-3.2">
            <t indent="0" pn="section-2.1-3.2.1">The type of generalized NOTIFY that this DSYNC RR defines the
desired target address for (see the "Resource Record (RR) TYPEs"
registry at <eref target="https://www.iana.org/assignments/dns-parameters/" brackets="angle"/>). For now, only CDS and CSYNC are supported values, with
the former indicating an updated CDS or CDNSKEY record set.</t>
          </dd>
          <dt pn="section-2.1-3.3">Scheme:</dt>
          <dd pn="section-2.1-3.4">
            <t indent="0" pn="section-2.1-3.4.1">The mode used for contacting the desired notification address. This is an
8-bit unsigned integer. Records with value 0 (null scheme) are ignored by consumers.
Value 1 is described in
      this document, and values 128-255 are Reserved for Private Use.
      Other values are currently unassigned. Future assignments are
      maintained in the registry created in <xref target="schemeregistry" format="default" sectionFormat="of" derivedContent="Section 6.2"/>.</t>
          </dd>
          <dt pn="section-2.1-3.5">Port:</dt>
          <dd pn="section-2.1-3.6">
            <t indent="0" pn="section-2.1-3.6.1">The transport port number on the target host of the notification service. This
is a 16-bit unsigned integer in network byte order. Records with
value 0 are ignored by consumers.</t>
          </dd>
          <dt pn="section-2.1-3.7">Target:</dt>
          <dd pn="section-2.1-3.8">
            <t indent="0" pn="section-2.1-3.8.1">The fully-qualified, uncompressed domain name of the target host
providing the service of listening for generalized notifications of the
specified type. This name <bcp14>MUST</bcp14> resolve to one or more address records.</t>
          </dd>
        </dl>
      </section>
      <section anchor="presentation-format" numbered="true" removeInRFC="false" toc="include" pn="section-2.2">
        <name slugifiedName="name-presentation-format">Presentation Format</name>
        <t indent="0" pn="section-2.2-1">The presentation format of the RDATA portion is as follows:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.2-2">
          <li pn="section-2.2-2.1">
            <t indent="0" pn="section-2.2-2.1.1">The RRtype field is represented as a mnemonic from the "Resource
Record (RR) TYPEs" registry.</t>
          </li>
          <li pn="section-2.2-2.2">
            <t indent="0" pn="section-2.2-2.2.1">The Scheme field is represented by its mnemonic if assigned (see
<xref target="schemeregistry" format="default" sectionFormat="of" derivedContent="Section 6.2"/>), and is otherwise represented as an unsigned decimal integer.</t>
          </li>
          <li pn="section-2.2-2.3">
            <t indent="0" pn="section-2.2-2.3.1">The Port field is represented as an unsigned decimal integer.</t>
          </li>
          <li pn="section-2.2-2.4">
            <t indent="0" pn="section-2.2-2.4.1">The Target field is represented as a &lt;domain-name&gt; (<xref section="5.1" target="RFC1035" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc1035#section-5.1" derivedContent="RFC1035"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="semantics" numbered="true" removeInRFC="false" toc="include" pn="section-2.3">
        <name slugifiedName="name-semantics">Semantics</name>
        <t indent="0" pn="section-2.3-1">For now, the only scheme defined is 1 (mnemonic: NOTIFY).  By publishing a
DSYNC record with this scheme, a parent indicates that they would like child
operators to send them a NOTIFY message (see <xref target="cnotify" format="default" sectionFormat="of" derivedContent="Section 4"/>) upon publication of
a new CDS/CDNSKEY/CSYNC RRset to the address and port number that correspond to that DSYNC record, using conventional
DNS transport <xref target="RFC1035" format="default" sectionFormat="of" derivedContent="RFC1035"/>.</t>
        <t indent="0" pn="section-2.3-2">Example (for the owner names of these records, see <xref target="signaling" format="default" sectionFormat="of" derivedContent="Section 3"/>):</t>
        <artwork align="left" pn="section-2.3-3">
IN DSYNC  CDS   NOTIFY 5359 cds-scanner.example.net.
IN DSYNC  CSYNC NOTIFY 5360 csync-scanner.example.net.
</artwork>
        <t indent="0" pn="section-2.3-4">Should a need for other mechanisms arise, other schemes may be defined
to deal with such requirements using alternative logic.</t>
        <t indent="0" pn="section-2.3-5">Schemes are independent of the RRtype. They merely specify a method of
contacting the target (whereas the RRtype is part of the notification
payload).</t>
      </section>
    </section>
    <section anchor="signaling" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-publication-of-notification">Publication of Notification Targets</name>
      <t indent="0" pn="section-3-1">To use generalized notifications, it is necessary for the sender to know
where to direct each NOTIFY message. This section describes the
procedure for discovering that notification target.</t>
      <t indent="0" pn="section-3-2">Note that generalized NOTIFY messages are but one mechanism for
improving the efficiency of automated delegation maintenance. Other
alternatives, such as contacting the parent operator via an API or
DNS Update <xref target="RFC2136" format="default" sectionFormat="of" derivedContent="RFC2136"/>, may (or may not) be more suitable in
individual cases. Like generalized notifications, they similarly require
a means for discovering where to send the API or DNS Update requests.</t>
      <t indent="0" pn="section-3-3">As the scope for the publication mechanism is wider than only to
support generalized notifications, a unified approach that works
independently of the notification method is specified in this section.</t>
      <t indent="0" pn="section-3-4">Parent operators participating in the discovery scheme for the purpose of
delegation maintenance notifications <bcp14>MUST</bcp14> publish endpoint information
using the record type defined in <xref target="dsyncrdtype" format="default" sectionFormat="of" derivedContent="Section 2"/> under the <tt>_dsync</tt>
subdomain of the parent zone, as described in the following subsections.</t>
      <t indent="0" pn="section-3-5">There <bcp14>MUST NOT</bcp14> be more than one DSYNC record for each combination of
RRtype and Scheme.
It is <bcp14>RECOMMENDED</bcp14> that zones containing DSYNC records be secured with DNSSEC.</t>
      <t indent="0" pn="section-3-6">For practical purposes, the parent operator <bcp14>MAY</bcp14> delegate the <tt>_dsync</tt>
domain as a separate zone and/or synthesize records under it. If
child-specificity is not needed, the parent can publish a static
wildcard DSYNC record.</t>
      <section anchor="wildcard-method" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-wildcard-method">Wildcard Method</name>
        <t indent="0" pn="section-3.1-1">If the parent operator itself performs CDS/CDNSKEY or CSYNC processing
for some or all delegations, or if the parent operator wants to relay notifications to some
other party, a default notification target may be specified as follows:</t>
        <artwork align="left" pn="section-3.1-2">
*._dsync.example.  IN DSYNC  CDS   NOTIFY port target
*._dsync.example.  IN DSYNC  CSYNC NOTIFY port target
</artwork>
        <t indent="0" pn="section-3.1-3">To accommodate indirect delegation management models, the
designated notification target may relay notifications to a third party
(such as the registrar, in ICANN's model). The details of such
arrangements are out of scope for this document.</t>
        <t indent="0" pn="section-3.1-4">If for some reason the parent operator cannot publish wildcard records,
the wildcard label may be dropped from the DSYNC owner name (i.e., it
may be published at the <tt>_dsync</tt> label instead). This practice requires
an additional step during discovery (see <xref target="discovery" format="default" sectionFormat="of" derivedContent="Section 4.1"/>) and is
therefore <bcp14>NOT RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="child-specific-method" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-child-specific-method">Child-specific Method</name>
        <t indent="0" pn="section-3.2-1">It is also possible to publish child-specific records where the parent zone's
labels are stripped from the child's Fully Qualified Domain Name (FQDN), and the result is used in place of
the wildcard label.</t>
        <t indent="0" pn="section-3.2-2">As an example, consider a registrar offering domains like
<tt>child.example</tt>, delegated from <tt>example</tt> zone. If the registrar
provides the notification endpoint, e.g., <tt>rr-endpoint.example:5300</tt>,
the parent may publish this information as follows:</t>
        <artwork align="left" pn="section-3.2-3">
child._dsync.example.  IN DSYNC  CDS NOTIFY 5300 rr-endpoint.example.
</artwork>
      </section>
    </section>
    <section anchor="cnotify" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-delegation-maintenance-cds-">Delegation Maintenance: CDS/CDNSKEY and CSYNC Notifications</name>
      <t indent="0" pn="section-4-1">Delegation maintenance notifications address the inefficiencies related
to scanning child zones for CDS/CDNSKEY records
<xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/> <xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/> <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/>. (For an overview of the issues,
see <xref target="context" format="default" sectionFormat="of" derivedContent="Appendix A"/>.)</t>
      <t indent="0" pn="section-4-2">NOTIFY messages for delegation maintenance <bcp14>MUST</bcp14> be formatted as described in
<xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/>, with the <tt>qtype</tt> field replaced as appropriate.</t>
      <t indent="0" pn="section-4-3">To address the CDS/CDNSKEY dichotomy, the NOTIFY(CDS) message (with
<tt>qtype=CDS</tt>) is defined to indicate any child-side changes pertaining
to an upcoming update of DS records.
As the child DNS operator generally is unaware of whether the parent
side consumes CDS records or prefers CDNSKEY, or when that policy
changes, it seems advisable to publish both types of records,
preferably using automation features of common authoritative nameserver
software for ensuring consistency.</t>
      <t indent="0" pn="section-4-4">Upon receipt of NOTIFY(CDS), the parent-side recipient (typically, registry or
registrar) <bcp14>SHOULD</bcp14> initiate the same DNS lookups and verifications for
DNSSEC bootstrapping <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/> or DS maintenance
<xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/> <xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/> that would otherwise be triggered based on a
timer.</t>
      <t indent="0" pn="section-4-5">The CSYNC <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/> inefficiency may be similarly treated, with the
child sending a NOTIFY(CSYNC) message (with <tt>qtype=CSYNC</tt>) to an address
where the parent operator (or a designated party) is listening for CSYNC
notifications.</t>
      <t indent="0" pn="section-4-6">In both cases, the notification will speed up processing times by
providing the recipient with a hint that a particular child zone has
published new CDS, CDNSKEY, and/or CSYNC records.</t>
      <section anchor="discovery" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-endpoint-discovery">Endpoint Discovery</name>
        <t indent="0" pn="section-4.1-1">To locate the target for outgoing delegation maintenance notifications,
the notification sender <bcp14>MUST</bcp14> perform the following steps:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-4.1-2">
	  <li pn="section-4.1-2.1" derivedCounter="1.">
            <t indent="0" pn="section-4.1-2.1.1">Construct the lookup name by inserting the <tt>_dsync</tt> label after the
first label of the delegation owner name.</t>
          </li>
          <li pn="section-4.1-2.2" derivedCounter="2.">
            <t indent="0" pn="section-4.1-2.2.1">Perform a lookup of type DSYNC for the lookup name, and validate the
response if DNSSEC is enabled. If this results in a positive DSYNC answer,
return it.</t>
          </li>
          <li pn="section-4.1-2.3" derivedCounter="3.">
            <t indent="0" pn="section-4.1-2.3.1">If the query resulted in a negative response:  </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-2.3.2">
              <li pn="section-4.1-2.3.2.1">
                <t indent="0" pn="section-4.1-2.3.2.1.1">If the response's SOA record indicates that the parent is more than
one label away from the <tt>_dsync</tt> label, construct a new lookup name
by inserting the <tt>_dsync</tt> label into the delegation owner name just
before the parent zone labels inferred from the negative response.
Then go to step 2.</t>
                <t indent="0" pn="section-4.1-2.3.2.1.2">
For example, assume that <tt>subsub.sub.child.example</tt> is delegated from
<tt>example</tt> (and not from <tt>sub.child.example</tt> or <tt>child.example</tt>). The
initial DSYNC query relating to it is thus directed at
<tt>subsub._dsync.sub.child.example</tt>. This is expected to result in a
negative response from <tt>example</tt>, and another query for
<tt>subsub.sub.child._dsync.example</tt> is then required.</t>
              </li>
              <li pn="section-4.1-2.3.2.2">
                <t indent="0" pn="section-4.1-2.3.2.2.1">Otherwise, if the lookup name has any labels in front of the
<tt>_dsync</tt> label, remove them to construct a new lookup name (such
as <tt>_dsync.example</tt>). Then go to step 2.
(This is to enable zone structures without wildcards.)</t>
              </li>
              <li pn="section-4.1-2.3.2.3">
                <t indent="0" pn="section-4.1-2.3.2.3.1">Otherwise, return null (no notification target available).</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
      <section anchor="sending-notifications" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-sending-notifications">Sending Notifications</name>
        <t indent="0" pn="section-4.2-1">When creating or changing a CDS/CDNSKEY/CSYNC RRset in the child zone,
the DNS operator <bcp14>SHOULD</bcp14> send a suitable notification to one of the
endpoints discovered as described in <xref target="discovery" format="default" sectionFormat="of" derivedContent="Section 4.1"/>.</t>
        <t indent="0" pn="section-4.2-2">A NOTIFY message can only carry information about changes concerning one
child zone. When there are changes to several child zones, the sender
<bcp14>MUST</bcp14> send a separate notification for each one.</t>
        <t indent="0" pn="section-4.2-3">When a primary name server publishes a new RRset in the child, there
typically is a time delay until all publicly visible copies of the zone
are updated. If the primary sends a notification at the exact time of
publication, there is a potential for CDS/CDNSKEY/CSYNC processing to be
attempted before the corresponding records are served. As a result, a
desired update may not be detected (or appear inconsistent), preventing
it from being applied.</t>
        <t indent="0" pn="section-4.2-4">Therefore, it is <bcp14>RECOMMENDED</bcp14> that the child would delay sending notifications
to the recipient until a consistent public view of the pertinent
records could be ensured.</t>
        <section anchor="timeouts-and-error-handling" numbered="true" removeInRFC="false" toc="include" pn="section-4.2.1">
          <name slugifiedName="name-timeouts-and-error-handling">Timeouts and Error Handling</name>
          <t indent="0" pn="section-4.2.1-1">NOTIFY messages are expected to elicit a response from the recipient
(<xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/>, Section 4.7). If no response is received, senders <bcp14>SHOULD</bcp14>
employ the same logic as for SOA notifications (<xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/>, Sections 3.5 and 3.6).</t>
          <t indent="0" pn="section-4.2.1-2">The recipient's attempt to act upon the delegation update request may
fail for a variety of reasons (e.g., due to violation of the continuity
requirement set forth in <xref target="RFC7344" sectionFormat="comma" section="4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-4.1" derivedContent="RFC7344"/>). Such failures may
occur asynchronously, even after the NOTIFY response has been sent.</t>
          <t indent="0" pn="section-4.2.1-3">In order to learn about such failures, senders <bcp14>MAY</bcp14> include an
EDNS0 Report-Channel option <xref target="RFC9567" format="default" sectionFormat="of" derivedContent="RFC9567"/> in the NOTIFY message to
request that the receiving side report any errors by making a report query
with an appropriate extended DNS error (EDE) code as described in
<xref target="RFC8914" format="default" sectionFormat="of" derivedContent="RFC8914"/>.
(The prohibition of this option in queries (<xref section="6.1" sectionFormat="comma" target="RFC9567" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9567#section-6.1" derivedContent="RFC9567"/>) only
applies to resolver queries and thus does not cover NOTIFY messages.)</t>
          <t indent="0" pn="section-4.2.1-4">When including this EDNS0 option, the second label (QTYPE) of the report query name is equal to the qtype received in the NOTIFY message.
Its agent domain <bcp14>MUST</bcp14> be subordinate
or equal to one of the NS hostnames, as listed in the child's delegation
in the parent zone.
This is to prevent malicious senders from causing the NOTIFY recipient
to send unsolicited report queries to unrelated third parties.</t>
          <t indent="0" pn="section-4.2.1-5">For example, when receiving a NOTIFY(CDS) message for "example.com"
          with agent domain "errors.ns1.example.net", and when the requested DS
          update is found to break the delegation, then the following report
          query with EDE code 6 (DNSSEC Bogus) may be made (preferably over TCP):</t>
          <artwork align="left" pn="section-4.2.1-6">
qname: _er.59.example.com.6._er.errors.ns1.example.net.
qtype: TXT</artwork>
        </section>
        <section anchor="roles" numbered="true" removeInRFC="false" toc="include" pn="section-4.2.2">
          <name slugifiedName="name-roles">Roles</name>
          <t indent="0" pn="section-4.2.2-1">While the CDS/CDNSKEY/CSYNC processing that follows the receipt of a NOTIFY
will often be performed by the registry, the protocol anticipates that
in some contexts (especially for ICANN gTLDs) registrars may take on
the task. In such cases, the current registrar notification endpoint may
be published, enabling notifications to be directed to the
appropriate target. The mechanics of how this is arranged between
registry and registrar are out of scope for this document; the protocol
only offers the possibility to arrange things such that from the child
perspective, how the parent-side parties are
organized is inconsequential: Notifications are simply sent to the published address.</t>
          <t indent="0" pn="section-4.2.2-2">Because of the security model where a notification by itself never
causes a change (it can only speed up the time until the next
check for the same thing), the sender's identity is not crucial.
This opens up the possibility of having an arbitrary party (e.g., a
service separate from a nameserver) send the notifications, enabling this functionality
even before the emergence of built-in support in nameserver software.</t>
        </section>
      </section>
      <section anchor="processing-of-notify-messages-for-delegation-maintenance" numbered="true" removeInRFC="false" toc="include" pn="section-4.3">
        <name slugifiedName="name-processing-of-notify-messag">Processing of NOTIFY Messages for Delegation Maintenance</name>
        <t indent="0" pn="section-4.3-1">The following algorithm applies to NOTIFY(CDS) and NOTIFY(CSYNC) processing.</t>
        <t indent="0" pn="section-4.3-2">NOTIFY messages carrying notification payloads (records) for more
than one child zone <bcp14>MUST</bcp14> be discarded, as sending them is an error.</t>
        <t indent="0" pn="section-4.3-3">Otherwise, upon receipt of a (potentially forwarded) NOTIFY message for
a particular child zone at the published notification endpoint,
the receiving side (parent registry or registrar) has two options:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-4.3-4">
	  <li pn="section-4.3-4.1" derivedCounter="1.">
            <t indent="0" pn="section-4.3-4.1.1">Acknowledge receipt by sending a NOTIFY response as described in
<xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/>, Section 4.7, and schedule
an immediate check of the CDS/CDNSKEY/CSYNC RRsets published by that
particular child zone (as appropriate for the type of NOTIFY received).  </t>
            <t indent="0" pn="section-4.3-4.1.2">
If the NOTIFY message contains an EDNS0 Report-Channel
option <xref target="RFC9567" format="default" sectionFormat="of" derivedContent="RFC9567"/> with an agent domain subordinate or equal to one of the NS
hostnames listed in the delegation, the processing party <bcp14>SHOULD</bcp14>
report any errors occurring during CDS/CDNSKEY/CSYNC processing by sending
a report query with an appropriate EDE code as
described in <xref target="RFC8914" format="default" sectionFormat="of" derivedContent="RFC8914"/>. Reporting may be done asynchronously
(outside of the NOTIFY transaction).  </t>
            <t indent="0" pn="section-4.3-4.1.3">
When using periodic scanning, notifications preempt the scanning
timer. If the NOTIFY-induced check finds that the CDS/CDNSKEY/CSYNC RRset
is indeed new or has changed, the corresponding child's timer may
be reset and the scanning frequency reduced (e.g., to once a week).
If a CDS/CDNSKEY/CSYNC change is later detected through scanning (without
having received a notification), the NOTIFY-related state <bcp14>SHOULD</bcp14> be
cleared, reverting to the default scanning schedule for this child.  </t>
            <t indent="0" pn="section-4.3-4.1.4">
When introducing CDS/CDNSKEY/CSYNC scanning support at the same time
as NOTIFY support, backwards compatibility considerations
regarding the scanning interval do not apply; a low-frequency
scanning schedule <bcp14>MAY</bcp14> thus be used by default in such cases.</t>
          </li>
          <li pn="section-4.3-4.2" derivedCounter="2.">
            <t indent="0" pn="section-4.3-4.2.1">Do not act upon the notification. To prevent retries, recipients
<bcp14>SHOULD</bcp14> acknowledge the notification by sending a NOTIFY response
even when otherwise ignoring the request, combined with a report
query if feasible (see above). One reason to do this may be a rate
limit (see <xref target="security" format="default" sectionFormat="of" derivedContent="Section 5"/>), in which case "Blocked" (15) may be a
suitable extended DNS error code.</t>
          </li>
        </ol>
        <t indent="0" pn="section-4.3-5">Implementing the first option will significantly decrease the
convergence time (between publication of a new CDS/CDNSKEY/CSYNC record in the
child and publication of the resulting DS), thereby providing improved
service for the child.</t>
        <t indent="0" pn="section-4.3-6">If, in addition to scheduling an immediate check for the child zone of
the notification, the scanning schedule is also modified to be less
frequent, the cost of providing the scanning service will be reduced.</t>
      </section>
    </section>
    <section anchor="security" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-5-1">If an action is triggered by the receipt of a DNS NOTIFY, its execution relies
on the same security model that the receiving party would apply if the action
were triggered by something else. This is because the notification affects
the action's timing alone. For example, DS bootstrapping is expected to be
performed the same way, independently of the type of trigger; this includes all
security and authentication requirements (e.g., <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/>) that the parent
registry/registrar has chosen to apply.</t>
      <t indent="0" pn="section-5-2">The original NOTIFY specification sidesteps most security issues by not
relying on the information in the NOTIFY message in any way and instead
only using it to "enter the state it would if the zone's refresh timer
had expired" (Section 4.7 of <xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/>).</t>
      <t indent="0" pn="section-5-3">This security model is reused for generalized NOTIFY messages. Therefore, it
seems impossible to affect the behaviour of the recipient of
the NOTIFY other than by hastening the timing for when different checks
are initiated.
As a consequence, while notifications themselves can be secured via access
control mechanisms, this is not a requirement.</t>
      <t indent="0" pn="section-5-4">In general, the receipt of a notification message will cause the
receiving party to perform one or more outbound queries for the records
of interest (for example, NOTIFY(CDS) will cause CDS/CDNSKEY
queries). When done using standard DNS, the size of these queries is
comparable to that of the NOTIFY messages themselves, rendering any
amplification attempts futile. The number of queries triggered per
notification is also limited by the requirement that a NOTIFY message
can refer to one child only.</t>
      <t indent="0" pn="section-5-5">However, when the outgoing query occurs via encrypted transport, some
amplification is possible, both with respect to bandwidth and
computational burden. In this case, the usual principle of bounding the
work applies, even under unforeseen events.</t>
      <t indent="0" pn="section-5-6">Therefore, receivers <bcp14>MUST</bcp14> implement rate limiting for notification
processing. It is <bcp14>RECOMMENDED</bcp14> to configure rate limiting independently
for both the notification's source IP address and the name of the zone
that is conveyed in the NOTIFY message. Rate limiting also mitigates
the processing load from garbage notifications.</t>
      <t indent="0" pn="section-5-7">Alternative solutions (such as signing notifications and validating
their signatures) appear significantly more expensive without tangible
benefit.</t>
      <t indent="0" pn="section-5-8">In order to facilitate schemes that are authenticated outside of DNSSEC
(such as via SIG(0)), zones containing DSYNC records are not required to
be signed. Spoofed DSYNC responses would prevent notifications from
reaching their legitimate target, and a different party may receive
unsolicited notifications; however, both effects can also be achieved
in the presence of DNSSEC. The illegitimate target is also enabled to
learn notification contents in real time, which may be a privacy concern
for the sender. If so, the sender may choose to ignore unsigned DSYNC
records.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="dsync-rr-type" numbered="true" removeInRFC="false" toc="include" pn="section-6.1">
        <name slugifiedName="name-dsync-rr-type-2">DSYNC RR Type</name>
        <t indent="0" pn="section-6.1-1">IANA has registered DSYNC in the "Resource Record (RR) TYPEs" registry
under the "Domain Name System (DNS) Parameters" registry group as follows:</t>
        <dl spacing="compact" newline="false" indent="3" pn="section-6.1-2">
          <dt pn="section-6.1-2.1">Type:</dt>
          <dd pn="section-6.1-2.2">DSYNC</dd>
          <dt pn="section-6.1-2.3">Value:</dt>
          <dd pn="section-6.1-2.4">66</dd>
          <dt pn="section-6.1-2.5">Meaning:</dt>
          <dd pn="section-6.1-2.6">Endpoint discovery for delegation
          synchronization</dd>
          <dt pn="section-6.1-2.7">Reference:</dt>
          <dd pn="section-6.1-2.8">RFC 9859</dd>
        </dl>
      </section>
      <section anchor="schemeregistry" numbered="true" removeInRFC="false" toc="include" pn="section-6.2">
        <name slugifiedName="name-dsync-scheme-registration">DSYNC Scheme Registration</name>
        <t indent="0" pn="section-6.2-1">IANA has created the following new registry in the
"Domain Name System (DNS) Parameters" registry group:</t>
        <dl spacing="compact" newline="false" indent="3" pn="section-6.2-2">
          <dt pn="section-6.2-2.1">Name:</dt>
          <dd pn="section-6.2-2.2">DSYNC: Location of Synchronization Endpoints</dd>
          <dt pn="section-6.2-2.3">Registration Procedure:</dt>
          <dd pn="section-6.2-2.4">Expert Review</dd>
          <dt pn="section-6.2-2.5">Reference:</dt>
          <dd pn="section-6.2-2.6">RFC 9859</dd>
        </dl>
        <t indent="0" pn="section-6.2-3">The initial contents for the registry are as follows:</t>
        <table align="center" pn="table-1">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">RRtype</th>
              <th align="left" colspan="1" rowspan="1">Scheme (Mnemonic)</th>
              <th align="left" colspan="1" rowspan="1">Purpose</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1"> </td>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">Null scheme (no-op)</td>
              <td align="left" colspan="1" rowspan="1">RFC 9859</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">CDS</td>
              <td align="left" colspan="1" rowspan="1">1 (NOTIFY)</td>
              <td align="left" colspan="1" rowspan="1">Delegation management</td>
              <td align="left" colspan="1" rowspan="1">RFC 9859</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">CSYNC</td>
              <td align="left" colspan="1" rowspan="1">1 (NOTIFY)</td>
              <td align="left" colspan="1" rowspan="1">Delegation management</td>
              <td align="left" colspan="1" rowspan="1">RFC 9859</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1"> </td>
              <td align="left" colspan="1" rowspan="1">2-127</td>
              <td align="left" colspan="1" rowspan="1">Unassigned</td>
              <td align="left" colspan="1" rowspan="1"> </td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1"> </td>
              <td align="left" colspan="1" rowspan="1">128-255</td>
              <td align="left" colspan="1" rowspan="1">Reserved for Private Use</td>
              <td align="left" colspan="1" rowspan="1">RFC 9859</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-6.2-5">Requests to register additional entries <bcp14>MUST</bcp14> include the following fields:</t>
        <dl spacing="compact" newline="false" indent="3" pn="section-6.2-6">
          <dt pn="section-6.2-6.1">RRtype:</dt>
          <dd pn="section-6.2-6.2">An RRtype that is defined for use</dd>
          <dt pn="section-6.2-6.3">Scheme:</dt>
          <dd pn="section-6.2-6.4">The mode used for contacting the desired
          notification address</dd>
          <dt pn="section-6.2-6.5">Mnemonic:</dt>
          <dd pn="section-6.2-6.6">The scheme's shorthand string used in
          presentation format</dd>
          <dt pn="section-6.2-6.7">Purpose:</dt>
          <dd pn="section-6.2-6.8">Use case description</dd>
          <dt pn="section-6.2-6.9">Reference:</dt>
          <dd pn="section-6.2-6.10">Location of specification or registration
          source</dd>
        </dl>
        <t indent="0" pn="section-6.2-7">Registration requests are to be recorded by IANA after Expert Review <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>.
Expert Reviewers should take the points below into consideration; however, 
they are experts and should be given substantial latitude:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.2-8">
          <li pn="section-6.2-8.1">
            <t indent="0" pn="section-6.2-8.1.1">Point squatting should be discouraged.  Reviewers are encouraged
    to get sufficient information for registration requests to ensure
    that the usage is not going to duplicate one that is already
    registered and that the point is likely to be used in deployments.
    The code points tagged as "Private Use" are intended for testing
    purposes and closed environments.  Code points in other ranges
    should not be assigned for testing.</t>
          </li>
          <li pn="section-6.2-8.2">
            <t indent="0" pn="section-6.2-8.2.1">A specification of a scheme is desirable, but early assignment before a
    specification is available is also possible.  When
    specifications are not provided, the description provided needs to
    have sufficient information to identify what the point is being
    used for. A scheme number may have exactly one mnemonic.</t>
          </li>
          <li pn="section-6.2-8.3">
            <t indent="0" pn="section-6.2-8.3.1">Experts should take into account that field values are fit for purpose.
For example, the mnemonic should be indicative and have a plausible
connection to the scheme's notification mechanism.</t>
          </li>
        </ul>
      </section>
      <section anchor="dsync-underscore-name" numbered="true" removeInRFC="false" toc="include" pn="section-6.3">
        <name slugifiedName="name-_dsync-underscore-name">_dsync Underscore Name</name>
        <t indent="0" pn="section-6.3-1">Per <xref target="RFC8552" format="default" sectionFormat="of" derivedContent="RFC8552"/>, IANA has registered the following entries to the
"Underscored and Globally Scoped DNS Node Names" registry within the "Domain Name System (DNS) Parameters" registry group:</t>
        <table align="center" pn="table-2">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">RR Type</th>
              <th align="left" colspan="1" rowspan="1">_NODE NAME</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">DSYNC</td>
              <td align="left" colspan="1" rowspan="1">_dsync</td>
              <td align="left" colspan="1" rowspan="1">RFC 9859</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references" pn="section-7">
      <name slugifiedName="name-references">References</name>
      <references anchor="sec-normative-references" pn="section-7.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035" quoteTitle="true" derivedAnchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t indent="0">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="RFC1996" target="https://www.rfc-editor.org/info/rfc1996" quoteTitle="true" derivedAnchor="RFC1996">
          <front>
            <title>A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)</title>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <date month="August" year="1996"/>
            <abstract>
              <t indent="0">This memo describes the NOTIFY opcode for DNS, by which a master server advises a set of slave servers that the master's data has been changed and that a query should be initiated to discover the new data. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1996"/>
          <seriesInfo name="DOI" value="10.17487/RFC1996"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">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="RFC2136" target="https://www.rfc-editor.org/info/rfc2136" quoteTitle="true" derivedAnchor="RFC2136">
          <front>
            <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
            <author fullname="P. Vixie" initials="P." role="editor" surname="Vixie"/>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="J. Bound" initials="J." surname="Bound"/>
            <date month="April" year="1997"/>
            <abstract>
              <t indent="0">Using this specification of the UPDATE opcode, it is possible to add or delete RRs or RRsets from a specified zone. Prerequisites are specified separately from update operations, and can specify a dependency upon either the previous existence or nonexistence of an RRset, or the existence of a single RR. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2136"/>
          <seriesInfo name="DOI" value="10.17487/RFC2136"/>
        </reference>
        <reference anchor="RFC7344" target="https://www.rfc-editor.org/info/rfc7344" quoteTitle="true" derivedAnchor="RFC7344">
          <front>
            <title>Automating DNSSEC Delegation Trust Maintenance</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="G. Barwood" initials="G." surname="Barwood"/>
            <date month="September" year="2014"/>
            <abstract>
              <t indent="0">This document describes a method to allow DNS Operators to more easily update DNSSEC Key Signing Keys using the DNS as a communication channel. The technique described is aimed at delegations in which it is currently hard to move information from the Child to Parent.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7344"/>
          <seriesInfo name="DOI" value="10.17487/RFC7344"/>
        </reference>
        <reference anchor="RFC7477" target="https://www.rfc-editor.org/info/rfc7477" quoteTitle="true" derivedAnchor="RFC7477">
          <front>
            <title>Child-to-Parent Synchronization in DNS</title>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <date month="March" year="2015"/>
            <abstract>
              <t indent="0">This document specifies how a child zone in the DNS can publish a record to indicate to a parental agent that the parental agent may copy and process certain records from the child zone. The existence of the record and any change in its value can be monitored by a parental agent and acted on depending on local policy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7477"/>
          <seriesInfo name="DOI" value="10.17487/RFC7477"/>
        </reference>
        <reference anchor="RFC8078" target="https://www.rfc-editor.org/info/rfc8078" quoteTitle="true" derivedAnchor="RFC8078">
          <front>
            <title>Managing DS Records from the Parent via CDS/CDNSKEY</title>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="March" year="2017"/>
            <abstract>
              <t indent="0">RFC 7344 specifies how DNS trust can be maintained across key rollovers in-band between parent and child. This document elevates RFC 7344 from Informational to Standards Track. It also adds a method for initial trust setup and removal of a secure entry point.</t>
              <t indent="0">Changing a domain's DNSSEC status can be a complicated matter involving multiple unrelated parties. Some of these parties, such as the DNS operator, might not even be known by all the organizations involved. The inability to disable DNSSEC via in-band signaling is seen as a problem or liability that prevents some DNSSEC adoption at a large scale. This document adds a method for in-band signaling of these DNSSEC status changes.</t>
              <t indent="0">This document describes reasonable policies to ease deployment of the initial acceptance of new secure entry points (DS records).</t>
              <t indent="0">It is preferable that operators collaborate on the transfer or move of a domain. The best method is to perform a Key Signing Key (KSK) plus Zone Signing Key (ZSK) rollover. If that is not possible, the method using an unsigned intermediate state described in this document can be used to move the domain between two parties. This leaves the domain temporarily unsigned and vulnerable to DNS spoofing, but that is preferred over the alternative of validation failures due to a mismatched DS and DNSKEY record.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8078"/>
          <seriesInfo name="DOI" value="10.17487/RFC8078"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t indent="0">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 indent="0">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 indent="0">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>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8552" target="https://www.rfc-editor.org/info/rfc8552" quoteTitle="true" derivedAnchor="RFC8552">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t indent="0">Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
        <reference anchor="RFC8914" target="https://www.rfc-editor.org/info/rfc8914" quoteTitle="true" derivedAnchor="RFC8914">
          <front>
            <title>Extended DNS Errors</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="E. Hunt" initials="E." surname="Hunt"/>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <author fullname="D. Lawrence" initials="D." surname="Lawrence"/>
            <date month="October" year="2020"/>
            <abstract>
              <t indent="0">This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8914"/>
          <seriesInfo name="DOI" value="10.17487/RFC8914"/>
        </reference>
        <reference anchor="RFC9364" target="https://www.rfc-editor.org/info/rfc9364" quoteTitle="true" derivedAnchor="RFC9364">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2023"/>
            <abstract>
              <t indent="0">This document describes the DNS Security Extensions (commonly called "DNSSEC") that are specified in RFCs 4033, 4034, and 4035, as well as a handful of others. One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC. This document does not update any of those RFCs. A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice. A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="237"/>
          <seriesInfo name="RFC" value="9364"/>
          <seriesInfo name="DOI" value="10.17487/RFC9364"/>
        </reference>
        <reference anchor="RFC9499" target="https://www.rfc-editor.org/info/rfc9499" quoteTitle="true" derivedAnchor="RFC9499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="March" year="2024"/>
            <abstract>
              <t indent="0">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 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 indent="0">This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="9499"/>
          <seriesInfo name="DOI" value="10.17487/RFC9499"/>
        </reference>
        <reference anchor="RFC9567" target="https://www.rfc-editor.org/info/rfc9567" quoteTitle="true" derivedAnchor="RFC9567">
          <front>
            <title>DNS Error Reporting</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <date month="April" year="2024"/>
            <abstract>
              <t indent="0">DNS error reporting is a lightweight reporting mechanism that provides the operator of an authoritative server with reports on DNS resource records that fail to resolve or validate. A domain owner or DNS hosting organization can use these reports to improve domain hosting. The reports are based on extended DNS errors as described in RFC 8914.</t>
              <t indent="0">When a domain name fails to resolve or validate due to a misconfiguration or an attack, the operator of the authoritative server may be unaware of this. To mitigate this lack of feedback, this document describes a method for a validating resolver to automatically signal an error to a monitoring agent specified by the authoritative server. The error is encoded in the QNAME; thus, the very act of sending the query is to report the error.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9567"/>
          <seriesInfo name="DOI" value="10.17487/RFC9567"/>
        </reference>
        <reference anchor="RFC9615" target="https://www.rfc-editor.org/info/rfc9615" quoteTitle="true" derivedAnchor="RFC9615">
          <front>
            <title>Automatic DNSSEC Bootstrapping Using Authenticated Signals from the Zone's Operator</title>
            <author fullname="P. Thomassen" initials="P." surname="Thomassen"/>
            <author fullname="N. Wisiol" initials="N." surname="Wisiol"/>
            <date month="July" year="2024"/>
            <abstract>
              <t indent="0">This document introduces an in-band method for DNS operators to publish arbitrary information about the zones for which they are authoritative, in an authenticated fashion and on a per-zone basis. The mechanism allows managed DNS operators to securely announce DNSSEC key parameters for zones under their management, including for zones that are not currently securely delegated.</t>
              <t indent="0">Whenever DS records are absent for a zone's delegation, this signal enables the parent's registry or registrar to cryptographically validate the CDS/CDNSKEY records found at the child's apex. The parent can then provision DS records for the delegation without resorting to out-of-band validation or weaker types of cross-checks such as "Accept after Delay".</t>
              <t indent="0">This document establishes the DS enrollment method described in Section 4 of this document as the preferred method over those from Section 3 of RFC 8078. It also updates RFC 7344.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9615"/>
          <seriesInfo name="DOI" value="10.17487/RFC9615"/>
        </reference>
      </references>
      <references anchor="sec-informative-references" pn="section-7.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC6781" target="https://www.rfc-editor.org/info/rfc6781" quoteTitle="true" derivedAnchor="RFC6781">
          <front>
            <title>DNSSEC Operational Practices, Version 2</title>
            <author fullname="O. Kolkman" initials="O." surname="Kolkman"/>
            <author fullname="W. Mekking" initials="W." surname="Mekking"/>
            <author fullname="R. Gieben" initials="R." surname="Gieben"/>
            <date month="December" year="2012"/>
            <abstract>
              <t indent="0">This document describes a set of practices for operating the DNS with security extensions (DNSSEC). The target audience is zone administrators deploying DNSSEC.</t>
              <t indent="0">The document discusses operational aspects of using keys and signatures in the DNS. It discusses issues of key generation, key storage, signature generation, key rollover, and related policies.</t>
              <t indent="0">This document obsoletes RFC 4641, as it covers more operational ground and gives more up-to-date requirements with respect to key sizes and the DNSSEC operations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6781"/>
          <seriesInfo name="DOI" value="10.17487/RFC6781"/>
        </reference>
        <reference anchor="RFC7583" target="https://www.rfc-editor.org/info/rfc7583" quoteTitle="true" derivedAnchor="RFC7583">
          <front>
            <title>DNSSEC Key Rollover Timing Considerations</title>
            <author fullname="S. Morris" initials="S." surname="Morris"/>
            <author fullname="J. Ihren" initials="J." surname="Ihren"/>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="W. Mekking" initials="W." surname="Mekking"/>
            <date month="October" year="2015"/>
            <abstract>
              <t indent="0">This document describes the issues surrounding the timing of events in the rolling of a key in a DNSSEC-secured zone. It presents timelines for the key rollover and explicitly identifies the relationships between the various parameters affecting the process.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7583"/>
          <seriesInfo name="DOI" value="10.17487/RFC7583"/>
        </reference>
        <reference anchor="RFC8901" target="https://www.rfc-editor.org/info/rfc8901" quoteTitle="true" derivedAnchor="RFC8901">
          <front>
            <title>Multi-Signer DNSSEC Models</title>
            <author fullname="S. Huque" initials="S." surname="Huque"/>
            <author fullname="P. Aras" initials="P." surname="Aras"/>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="J. Vcelak" initials="J." surname="Vcelak"/>
            <author fullname="D. Blacka" initials="D." surname="Blacka"/>
            <date month="September" year="2020"/>
            <abstract>
              <t indent="0">Many enterprises today employ the service of multiple DNS providers to distribute their authoritative DNS service. Deploying DNSSEC in such an environment may present some challenges, depending on the configuration and feature set in use. In particular, when each DNS provider independently signs zone data with their own keys, additional key-management mechanisms are necessary. This document presents deployment models that accommodate this scenario and describes these key-management requirements. These models do not require any changes to the behavior of validating resolvers, nor do they impose the new key-management requirements on authoritative servers not involved in multi-signer configurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8901"/>
          <seriesInfo name="DOI" value="10.17487/RFC8901"/>
        </reference>
      </references>
    </references>
    <section anchor="context" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-efficiency-and-convergence-">Efficiency and Convergence Issues in DNS Scanning</name>
      <section anchor="original-notify-for-zone-transfer-nudging" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.1">
        <name slugifiedName="name-original-notify-for-zone-tr">Original NOTIFY for Zone Transfer Nudging</name>
        <t indent="0" pn="section-appendix.a.1-1"><xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/> introduced the concept of a DNS NOTIFY message, which was used
to improve the convergence time for secondary servers when a DNS zone
had been updated in the primary server. The basic idea was to augment the
original "pull" mechanism (a periodic SOA query) with a "push"
mechanism (a NOTIFY) for a common case that was otherwise very
inefficient (due to either slow convergence or wasteful and overly
frequent scanning of the primary for changes).</t>
        <t indent="0" pn="section-appendix.a.1-2">While it is possible to indicate how frequently checks should occur
(via the SOA Refresh parameter), these checks did not allow catching
zone changes that fall between checkpoints. <xref target="RFC1996" format="default" sectionFormat="of" derivedContent="RFC1996"/> addressed the
   optimization of the time-and-cost trade-off between a secondary server 
   frequently checking for new versions of a zone and infrequent checks by replacing 
   scheduled scanning with the more efficient NOTIFY mechanism.</t>
      </section>
      <section anchor="similar-issues-for-ds-maintenance-and-beyond" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.2">
        <name slugifiedName="name-similar-issues-for-ds-maint">Similar Issues for DS Maintenance and Beyond</name>
        <t indent="0" pn="section-appendix.a.2-1">Today, we have similar issues with slow updates of DNS data in spite of
the data having been published. The two most obvious cases are CDS and
CSYNC scanners deployed in a growing number of TLD registries. Because of
the large number of child delegations, scanning for CDS and CSYNC records
is rather slow (as in, infrequent).</t>
        <t indent="0" pn="section-appendix.a.2-2">Only a very small number of the delegations will have updated
a CDS or CDNSKEY record in between two scanning runs. However, frequent
scanning for CDS and CDNSKEY records is costly, and infrequent scanning
causes slower convergence (i.e., delay until the DS RRset is updated).</t>
        <t indent="0" pn="section-appendix.a.2-3">Unlike in the original case, where the primary is able to suggest the
scanning interval via the SOA Refresh parameter, an equivalent mechanism
does not exist for DS-related scanning.</t>
        <t indent="0" pn="section-appendix.a.2-4">All of the above also applies to automated NS and glue record
maintenance via CSYNC scanning <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/>. Again, given that CSYNC
records change only rarely, frequent scanning of a large number of
delegations seems disproportionately costly, while infrequent scanning
causes slower convergence (delay until the delegation is updated).</t>
        <t indent="0" pn="section-appendix.a.2-5">While use of the NOTIFY mechanism for coordinating the key exchange in
multi-signer setups <xref target="RFC8901" format="default" sectionFormat="of" derivedContent="RFC8901"/> is
conceivable, the detailed specification is left for future work.</t>
      </section>
    </section>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.b-1">The authors acknowledge the contributions and reviews of the
      following individuals (in order of their first contribution or review):
      <contact fullname="Joe Abley"/>, <contact fullname="Mark Andrews"/>,
      <contact fullname="Christian Elmerot"/>, <contact fullname="Ólafur       Guðmundsson"/>, <contact fullname="Paul Wouters"/>, <contact fullname="Brian Dickson"/>, <contact fullname="Warren Kumari"/>,
      <contact fullname="Geoff Huston"/>, <contact fullname="Patrick       Mevzek"/>, <contact fullname="Tim Wicinski"/>, <contact fullname="Q       Misell"/>, <contact fullname="Stefan Ubbink"/>, <contact fullname="Matthijs Mekking"/>, <contact fullname="Kevin P. Fleming"/>,
      <contact fullname="Nicolai Leymann"/>, <contact fullname="Giuseppe       Fioccola"/>, <contact fullname="Peter Yee"/>, <contact fullname="Tony       Li"/>, <contact fullname="Paul Wouters"/>, <contact fullname="Roman       Danyliw"/>, <contact fullname="Peter van Dijk"/>, <contact fullname="John Scudder"/>, <contact fullname="Éric Vyncke"/>, and
      <contact fullname="Oli Schacher"/>.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="J." surname="Stenstam" fullname="Johan Stenstam">
        <organization showOnFrontPage="true">The Swedish Internet Foundation</organization>
        <address>
          <email>johan.stenstam@internetstiftelsen.se</email>
        </address>
      </author>
      <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
        <organization showOnFrontPage="true">deSEC, Secure Systems Engineering</organization>
        <address>
          <email>peter@desec.io</email>
        </address>
      </author>
      <author initials="J." surname="Levine" fullname="John Levine">
        <organization showOnFrontPage="true">Standcore LLC</organization>
        <address>
          <email>standards@standcore.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
