<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dnsop-generalized-notify-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="Generalized Notifications">Generalized DNS Notifications</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-generalized-notify-00"/>
    <author initials="J." surname="Stenstam" fullname="Johan Stenstam">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <email>johan.stenstam@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
      <organization>deSEC, Secure Systems Engineering</organization>
      <address>
        <email>peter@desec.io</email>
      </address>
    </author>
    <author initials="J." surname="Levine" fullname="John Levine">
      <organization>Standcore LLC</organization>
      <address>
        <email>standards@standcore.com</email>
      </address>
    </author>
    <date/>
    <area>Internet</area>
    <workgroup>DNSOP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Changes in CDS/CDNSKEY, CSYNC, and other records related to delegation
maintenance are usually detected through scheduled scans run by the
consuming party (e.g. top-level domain registry), incurring an
uncomfortable trade-off between scanning cost and update latency.</t>
      <t>A similar problem exists when scheduling zone transfers, and has been
solved using the well-known DNS NOTIFY mechanism (<xref target="RFC1996"/>).
This mechanism enables a primary nameserver to proactively inform
secondaries about zone changes, allowing the secondary to initiate an
ad-hoc transfer independently of when the next SOA check would be due.</t>
      <t>This document extends the use of DNS NOTIFY beyond conventional zone
transfer hints, bringing the benefits of ad-hoc notifications to DNS
delegation maintenance in general.  Use cases include DNSSEC key
rollovers hints via NOTIFY(CDS) and NOTIFY(DNSKEY) messages, and
quicker changes to a delegation's NS record set via NOTIFY(CSYNC)
messages.</t>
      <t>Furthermore, this document proposes a new DNS record type, tentatively
referred to as "NOTIFY record", which is used to publish details about
where generalized notifications should be sent.</t>
      <t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/peterthomassen/draft-ietf-dnsop-generalized-notify">https://github.com/peterthomassen/draft-ietf-dnsop-generalized-notify</eref>.
The most recent working version of the document, open issues, etc. should all be
available there.  The authors (gratefully) accept pull requests.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document introduces a generalization of the DNS NOTIFY mechanism
described in <xref target="RFC1996"/>.</t>
      <t>Traditional DNS notifications, 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>Today there are several new cases where similar inefficiencies cause
significant problems. However, 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.</t>
      <t>There are no DNS protocol changes introduced by this document.</t>
      <t>There are, however, proposals for how to interpret a wider range of
DNS messages that are already allowed (but not used) by the protocol.</t>
      <t>Readers are expected to be familiar with DNSSEC, including <xref target="RFC4033"/>,
<xref target="RFC4034"/>, <xref target="RFC4035"/>, <xref target="RFC6781"/>, <xref target="RFC7344"/>, <xref target="RFC7477"/>,
<xref target="RFC7583"/>, and <xref target="RFC8901"/>.</t>
      <section anchor="requirements-notation">
        <name>Requirements Notation</name>
        <t>The key words "<strong>MUST</strong>", "<strong>MUST NOT</strong>", "<strong>REQUIRED</strong>", "<strong>SHALL</strong>", "<strong>SHALL
NOT</strong>", "<strong>SHOULD</strong>", "<strong>SHOULD NOT</strong>", "<strong>RECOMMENDED</strong>", "<strong>NOT
RECOMMENDED</strong>", "<strong>MAY</strong>", and "<strong>OPTIONAL</strong>" in this document are to be
interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
when, they appear in all capitals, as shown here.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>In the text below there are two different uses of the term
"NOTIFY". One refers to the NOTIFY message, sent from a DNSSEC signer
or name server to a notification target (for subsequent
processing). We refer to this message as NOTIFY(RRtype) where the
RRtype indicates the type of NOTIFY message (CDS, CSYNC or DNSKEY
respectively).</t>
        <t>The second is a proposed new DNS record type, with the suggested
mnemonic "NOTIFY". This record is used to publish the location of the
notification target. We refer to this as the "NOTIFY record".</t>
      </section>
    </section>
    <section anchor="costs-and-dangers-of-slow-convergence">
      <name>Costs and Dangers of Slow Convergence</name>
      <t><xref target="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. The basic idea was to augment the
traditional "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 overly
frequent scanning of the primary for changes).</t>
      <t>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 the
scalability issues of modern CDS and CSYNC scanners that are beginning
to be 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>Another use case is for so-called "multi-signer" setups where there
are multiple, semi-independent, "signers" that each sign the same
zone, but with individual sets of keys. One requirement for
multi-signer setups to work is the ability to insert additional
DNSKEY records in each signer's version of the zone. (This is not the
only multi-signer requirement, but it is the one that matters
here.) The problem here is that modern signers will commonly roll
DNSSEC Zone Signing Keys automatically and without informing anyone,
assuming a single-signer setup where ZSK rollovers are a local matter
(as opposed to KSK rollovers that involve the parent).
As a result, when the ZSKs of one signer are rolled, the other signers
will be unaware of this event. However, to enable validation of
signatures using a new ZSK, it needs to be announced by all
nameservers that are authoritative for the child. To achieve this, it
is therefore necessary to bring the signers' DNSKEY RRsets back in
sync. Such re-synchronization can either happen based on a schedule,
or on demand, given a suitable trigger.</t>
    </section>
    <section anchor="efficiency-issues-with-dns-scanning-vs-notification">
      <name>Efficiency Issues with DNS Scanning vs. Notification</name>
      <t>The original problem that <xref target="RFC1996"/> addressed was the problem of
optimization between frequent checking for new versions of a zone by a
secondary and infrequent checking.
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.
NOTIFY replaces scheduled scanning with a more efficient mechanism.</t>
      <t>In modern DNS infrastructure there are several new scanning-based
inefficiencies that did not exist at the time of the writing of
<xref target="RFC1996"/>.</t>
      <section anchor="cds-and-cdnskey-scanners">
        <name>CDS and CDNSKEY Scanners</name>
        <t>An increasing number of TLD registries are implementing periodic
scanning for CDS and CDNSKEY records in child zones. Because of the
large number of delegations this is rather costly, especially as it is
only a very small number of the signed delegations that will have
updated the CDS or CDNSKEY record between two scanning runs.</t>
        <t>Frequent scanning is costly. Infrequent scanning causes slower
convergence (i.e. delay until the DS in the parent is updated).</t>
        <t>Not every zone runs a CDS or CSYNC scanner (today). However, for those
that do, the problem is actually worse than in the traditional primary
to secondary case. The reason is that in the original case the primary
is able to indicate how frequently changes are to be expected (via the
SOA Refresh parameter). No equivalent mechanism exist for the new
scanning services.</t>
      </section>
      <section anchor="csync-scanners">
        <name>CSYNC Scanners</name>
        <t>This is basically the same problem as for the CDS / CDNSKEY scanners:
large number of delegations vs infrequent updates to the CSYNC record
in the child zones.</t>
        <t>Frequent scanning is costly. Infrequent scanning causes slower convergence
(i.e. delay until the delegation information in the parent is updated).</t>
      </section>
      <section anchor="multi-signer-setups">
        <name>Multi-Signer Setups</name>
        <t><xref target="I-D.wisser-dnssec-automation"/> describes processes for managing signed
zones using multiple semi-independent "signers" (i.e. services that
take an unsigned zone, sign it using unique DNSKEYs and publish the
zone on the public Internet). The setup most commonly discussed for
multi-signer uses a "multi-signer controller" which is a separate
service responsible for keeping the signing and delegation information
in sync across multiple signers.</t>
        <t>To keep information in sync, the signers need to be scanned for
current information about the DNSKEY RRset in each signer. The problem
is that modern "signers" will typically do DNSKEY rollovers
(especially ZSK rollovers) automatically without informing anyone
else, because a single-signer setup is often assumed (in which case the
ZSK rollover is a matter completely internal to the signer).</t>
        <t>In the multi-signer case, this is not a correct assumption. It is
therefore necessary to run polls frequently to minimize
the time window between one signer changing its version of the DNSKEY
RRset and the controller noticing and re-synchronizing all signers.</t>
        <t>Frequent scanning: costly. Infrequent scanning: slower convergence
(i.e. longer potential inconsistency across signers).</t>
      </section>
    </section>
    <section anchor="cdscdnskey-and-csync-notifications">
      <name>CDS/CDNSKEY and CSYNC Notifications</name>
      <t>The <xref target="RFC1996"/> NOTIFY message sends a SOA record in the Query
Section. We refer to this as a NOTIFY(SOA).
By generalizing the concept of DNS NOTIFY it is possible to address
not only the original inefficiency (primary name server to secondary
nameserver convergence) but also the problems with CDS/CDNSKEY, CSYNC
and Multi-Signer scanning for zone updates.</t>
      <t>The CDS/CDNSKEY inefficiency may be addressed by the child sending a
NOTIFY(CDS) to an address where the parent listens for such notifications.</t>
      <t>While the receiving side will often be a scanning service provided by
the registry itself, it is expected that in the ICANN RRR model, some
registries will prefer registrars to conduct CDS/CDNSKEY scans.
For such parents, the receiving service should notify the appropriate
registrar, over any communication channel deemed suitable between
registry and registrar (such as EPP, or possibly by forwarding the
actual NOTIFY(CDS) or NOTIFY(CSYNC) directly).
Such internal processing is inconsequential from the perspective of
the child: the NOTIFY packet is simply sent to the notification address.</t>
      <t>To address the CDS/CDNSKEY dichotomy, NOTIFY(CDS) is defined to indicate
any child-side changes pertaining to a upcoming update of DS records.
Upon receipt of NOTIFY(CDS), the parent SHOULD initiate the same scan
that would otherwise be triggered based on a timer.</t>
      <t>The CSYNC inefficiency may similarly be addressed by the child sending a
NOTIFY(CSYNC) to an address where the parent is listening to CSYNC
notifications.</t>
      <t>In both cases the notification will speed up the CDS and CSYNC
scanning by providing the parent with a hint that a particular child
zone has published new CDS, CDNSKEY and/or CSYNC records.</t>
      <t>The DNS protocol already allows these new notification types, so no
protocol change is required. The only thing needed is specification of
where to send the new types of Notifies and how to interpret them in
the receiving end.</t>
      <section anchor="where-to-send-cds-and-csync-notifications">
        <name>Where to send CDS and CSYNC Notifications</name>
        <t>In the case of NOTIFY(CDS) and NOTIFY(CSYNC) the ultimate recipient of
the notification is the parent, to improve the speed and efficiency of
the parent's CDS/CSYNC scanning. Because the name of the parent zone
is known, and because the parent obviously controls the contents of
its own zone the simplest solution is for the parent to publish the
address where it prefers to have notifications sent.</t>
        <t>However, there may exist cases where this scheme (sending the
notification to the parent) is not sufficient and a more general
design is needed. At the same time, it is strongly desireable that the
child is able to figure out where to send the NOTIFY via a single
query.</t>
        <t>By adding the following to the zone <tt>parent.</tt>:</t>
        <artwork><![CDATA[
parent.   IN NOTIFY CDS   scheme port scanner.parent.
parent.   IN NOTIFY CSYNC scheme port scanner.parent.
]]></artwork>
        <t>where the only scheme defined here is scheme=1 with the interpretation
that when a new CDS (or CDNSKEY or CSYNC) is published, a NOTIFY(CDS)
or NOTIFY(CSYNC) should be sent to the address and port listed in the
corresponding NOTIFY RRset.</t>
        <t>Example:</t>
        <artwork><![CDATA[
parent.   IN NOTIFY CDS   1 5359 cds-scanner.parent.
parent.   IN NOTIFY CSYNC 1 5360 csync-scanner.parent.
]]></artwork>
        <t>Other schemes are possible, but are out of scope for this document.</t>
        <t>The suggested mnemonic for the new record type is "NOTIFY" and it is
further described below.</t>
      </section>
      <section anchor="how-to-interpret-cds-and-csync-notifications">
        <name>How to Interpret CDS and CSYNC Notifications</name>
        <t>Upon receipt of a NOTIFY(CDS) for a particular child zone at the
published address for CDS notifications, the parent has two options:</t>
        <ol spacing="normal" type="1"><li>
            <t>Schedule an immediate check of the CDS and CDNSKEY RRsets as
published by that particular child zone.  </t>
            <t>
If the check finds that the CDS/CDNSKEY RRset has indeed changed,
the parent MAY reset the scanning timer for children for which
NOTIFY(CDS) is received, or reduce the periodic scanning frequency
accordingly (e.g. to every two weeks).
This will decrease the scanning effort for the parent.
If a CDS/CDNSKEY change is then detected (without having received
a notification), the parent SHOULD clear that state and revert to
the default scanning schedule.  </t>
            <t>
Parents introducing CDS/CDNSKEY scanning support at the same time
as NOTIFY(CDS) support are not in danger of breaking children's
scanning assumption, and MAY therefore use a low-frequency
scanning schedule in default mode.</t>
          </li>
          <li>Ignore the notification, in which case the system works exactly
as before.</li>
        </ol>
        <t>If the parent implements the first option, the convergence time (time
between publication of a new CDS and propagation of the resulting DS)
will decrease significantly, thereby providing improved service to the
child zone.</t>
        <t>If the parent, in addition to scheduling an immediate check for the
child zone of the notification, also choses to modify the scanning
schedule (to be less frequent), the cost of providing the scanning
service will be reduced.</t>
        <t>Upon receipt of a NOTIFY(CSYNC) to the published address for CSYNC
notifications, the parent has exactly the same options to choose among
as for the NOTIFY(CDS).</t>
      </section>
    </section>
    <section anchor="dnskey-notifications">
      <name>DNSKEY Notifications</name>
      <t>In the multi-signer case the problem is slightly different, because it
is not the parent that should be notified, but rather a third party.</t>
      <section anchor="where-to-send-dnskey-notifications">
        <name>Where to send DNSKEY Notifications</name>
        <t>The question is how the multi-signer controller should inform the
signer about where to send the notification. In the NOTIFY(CDS) and
NOTIFY(CSYNC) cases the child (the service that signs the child zone)
knows the name of the parent zone and can look up the notification
address there. In the NOTIFY(DNSKEY) case, there is no trivial target.</t>
        <t>However, it is possible to look up the notification address in the
child zone itself. This translates into a requirement for multi-signer
setups, namely that at least one external party (typically a
multi-signer controller) has the ability to insert or modify RRsets in
the child zone. Therefore the controller should be able to insert a
record that documents the wanted notification address for
NOTIFY(DNSKEY) messages.</t>
        <t>Also in the NOTIFY(DNSKEY) case there is the possibility that this
scheme will not be sufficient for all cases. And therefore the
proposed design (in analogy with the NOTIFY(CDS) and NOTIFY(CSYNC)
cases) is:</t>
        <artwork><![CDATA[
child.parent. IN NOTIFY DNSKEY scheme port scanner.signerA.
child.parent. IN NOTIFY DNSKEY scheme port scanner.signerB.
]]></artwork>
        <t>with the only defined scheme at this time being scheme=1 with the
interpretation that whenever there are changes to the DNSKEY RRset in
a signer it should send a corresponding NOTIFY(DNSKEY) to all
notification addresses listed in the "child.parent. NOTIFY" RRset.</t>
        <t>Example:</t>
        <artwork><![CDATA[
child.parent. IN NOTIFY DNSKEY 1 5361 scanner.signerA.
child.parent. IN NOTIFY DNSKEY 1 5361 scanner.signerB.
child.parent. IN NOTIFY DNSKEY 1 5361 ctrl.multi-signer.example.
]]></artwork>
        <t>Other schemes are possible, but are out of scope for this document.</t>
      </section>
      <section anchor="how-to-interpret-dnskey-notifications">
        <name>How to Interpret DNSKEY Notifications</name>
        <t>The receipt of a NOTIFY(DNSKEY) is a hint that the DNSKEY RRset at the
sending signer has been updated. If the child zone is not part of a
multi-signer setup this should be a no-op that does not cause any
action. In a multi-signer setup, though, this hint provides the
recipient of the notification with the same options as in the
NOTIFY(CDS) and NOTIFY(CSYNC) cases: schedule an immediate check,
or ignore.</t>
      </section>
    </section>
    <section anchor="who-should-send-the-notifications">
      <name>Who Should Send the Notifications?</name>
      <t>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.</t>
      <t>This opens up the possibility of having the controller in a
multi-signer setup send the CDS and CSYNC notifications to the parent,
thereby enabling this new functionality even before the emergence of
support for generalized DNS notifications in the name servers used for
signing.</t>
      <t>However, as multi-signer is strongly dependent on DNSKEY notifications
(which, in case of an automatic ZSK rollover, can only be generated by
the signing software), this does not alleviate the need for
modifications also to signing software to support NOTIFY(DNSKEY).</t>
    </section>
    <section anchor="timing-considerations">
      <name>Timing Considerations</name>
      <t>When a primary name server publishes a new CDS RRset there will be a
time delay until all copies of the zone world-wide will have been
updated. Usually this delay is short (on the order of seconds), but it
is larger than zero. If the primary sends a NOTIFY(CDS) at the exact
time of publication of the new zone there is a potential for the
parent to schedule the CDS check that the notification triggers faster
than the zone propagates to all secondaries. In this case the parent
may draw the wrong conclusion ("the CDS RRset has not been updated").</t>
      <t>Having a delay between the publication of the new data and the check
for the new data would alleviate this issue. However, as the parent
has no way of knowing how quickly the child zone propagates, the
appropriate amount of delay is uncertain.
It is therefore RECOMMENDED that the child delays sending NOTIFY
packets to the parent until a consistent public view of the pertinent
records is ensured.</t>
      <t>NOTIFY(CSYNC) has the same timing consideration as NOTIFY(CDS) while
NOTIFY(DNSKEY) does not.</t>
    </section>
    <section anchor="the-format-of-the-notify-record">
      <name>The Format of the NOTIFY Record</name>
      <t>Here is the format of the NOTIFY RR, whose DNS type code is not yet
defined.</t>
      <artwork><![CDATA[
    Name TTL Class NOTIFY RRtype Scheme Port Target
]]></artwork>
      <t>Name
        The zone this RR refers to. In the case of NOTIFY(CDS) and
        NOTIFY(CSYNC) this is the name of the parent zone. In the case
        of NOTIFY(DNSKEY) this is the name of the zone in which a
        change in the DNSKEY RRset is taking place.</t>
      <t>TTL
        Standard DNS meaning [RFC 1035].</t>
      <t>Class
        Standard DNS meaning [RFC 1035]. NOTIFY records occur in the IN
        Class.</t>
      <t>RRtype
        The type of generalized NOTIFY that this NOTIFY RR defines
        the desired target address for. Currently only the types CDS,
        CSYNC and DNSKEY are suggested to be supported, but there is
        no protocol issue should a use case for additional types of
        notifications arise in the future.</t>
      <t>Scheme
        The scheme for locating the desired notification address.
        The range is 0-255. This is a 16 bit unsigned integer in
        network byte order. The value 0 is an error. The value 1 is
        described in this document and all other values are currently
        unspecified.</t>
      <t>Port
        The port on the target host of the notification service. The
        range is 0-65535. This is a 16 bit unsigned integer in network
        byte order.</t>
      <t>Target
        The domain name of the target host providing the service of
        listening for generalized notifications of the specified type.
        This name MUST resolve to one or more address records.</t>
    </section>
    <section anchor="open-questions">
      <name>Open Questions</name>
      <section anchor="rationale-for-a-new-record-type-notify">
        <name>Rationale for a new record type, "NOTIFY"</name>
        <t>It is technically possible to store the same information in an SRV
record as in the proposed NOTIFY record. This would, however, require
name space pollution (indicating the RRtype via a label in the owner
name) and also changing the semantics of one of the integer fields of
the SRV record.</t>
        <t>Overloading semantics on a single record type has not been a good idea
in the past. Furthermore, as the generalized notifications are a new
proposal with no prior deployment on the public Internet there is an
opportunity to avoid repeating previous mistakes.</t>
        <t>In the case of the "vertical" NOTIFY(CDS) and NOTIFY(CSYNC), no
special processing needs to be applied by the authoritative nameserver
upon insertion of the record indicating the notification target.
The nameserver can be "unaware"; a conventional SRV record would
therefore suffice from a processing point of view.
In the case of the more "horizontal" NOTIFY(DNSKEY), however, the
nameserver will have to act on the insertion of a</t>
        <artwork><![CDATA[
    zone.example.   IN NOTIFY DNSKEY ...
]]></artwork>
        <t>record.</t>
        <t>A new record type would therefore make it possible to more easily
associate the special processing with the record's insertion. The
NOTIFY record type would provide a cleaner solution to all the new
types of notification signaling. Eg.:</t>
        <artwork><![CDATA[
parent.         IN NOTIFY  CDS     1  59   scanner.parent.
parent.         IN NOTIFY  CSYNC   1  59   scanner.parent.
child.parent.   IN NOTIFY  DNSKEY  1  5900 ctrl.multi-signer.example.
]]></artwork>
      </section>
      <section anchor="rationale-for-keeping-dns-message-format-and-transport">
        <name>Rationale for Keeping DNS Message Format and Transport</name>
        <t>In the most common cases of using generalized notifications the
recipient is expected to not be a nameserver, but rather some other
type of service, like a CDS/CSYNC scanner.</t>
        <t>However, this will likely not always be true. In particular it seems
likely that in cases where the parent is not a large
delegation-centric zone like a TLD, but rather a smaller zone with a
small number of delegations there will not be separate services for
everything and the recipient of the NOTIFY(CDS) or NOTIFY(CSYNC) will
be an authoritative nameserver for the parent zone.</t>
        <t>Another case where this seems likely is in controller-less
multi-signer setups where there is no central controller. Instead the
multi-signer algorithms will be implemented inside or near each
participating signer. Also in these cases it seems likely that the
recipient in some cases will be an authoritative nameserver.</t>
        <t>For this reason it seems most reasonable to stay within the the well
documented and already supported message format specified in RFC 1996
and delivered over normal DNS transport, although not necessarily to
port 53.</t>
      </section>
      <section anchor="open-question-for-dnskey-notifications">
        <name>Open Question For DNSKEY Notifications</name>
        <t>In a multi-signer setup there are multiple signers. How will the
multi-signer controller know which signer sent the notification? As
the number of signers for a particular zone is low (typically 2 or
possibly 3), there is no major problem caused by not knowing which
signer sent the notification and instead always check all the signers
for updates to the DNSKEY RRset.</t>
      </section>
    </section>
    <section anchor="out-of-scope">
      <name>Out of Scope</name>
      <t>To accommodate ICANN's RRR model, the parent's designated notification
target may forward NOTIFY(CDS) messages to the registrar, e.g. via EPP
or by forwarding the NOTIFY(CDS) message directly. The same is true
also for NOTIFY(CSYNC).</t>
      <t>From the perspective of this protocol, the NOTIFY(CDS) packet is simply
sent to the parent's listener address. However, should this turn out
not to be sufficient, it is possible to define a new "scheme" that
specifies alternative logic for dealing with such requirements.
Description of internal processing in the recipient end or for
locating the recipient are out of scope of this document.</t>
      <t>In the multi-signer case, where the same zone is signed by multiple
semi-independent "signers" it is obviously necessary to devise means
of keeping the non-DNSSEC contents of the zone in sync. That is out of
scope of the multi-signer work and also out of scope of this document.</t>
      <t>A corner case of this scoping regards making changes to the NS
RRset. Individual signers (as in DNS service providers) may want to be
able to make such changes independently of the other contents of the
zone.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The original NOTIFY specification (<xref target="RFC1996"/>) sidesteps most security
issues by not relying on the information in the NOTIFY message in any
way but instead only use it to set the timer until the next scheduled
check (for the SOA record) to zero. Therefore it is impossible to
affect the behaviour of the recipient of the NOTIFY other than by
changing the timing for when different checks are initiated.</t>
      <t>This mechanism and security model is reused for all the generalized
NOTIFY messages.</t>
      <t>Another consideration is whether generalized DNS
Notifications can be used as an amplification attack. The answer seems
to be "NO", because the size of the generalized NOTIFY messages is
mostly equal to the size of the response and it is also mostly equal
to the size of the resulting outbound query (for the child zone's CDS,
CSYNC or DNSKEY RRset).</t>
      <t>Hence the amplification attack potential of generalized Notifications
is the same as for the original NOTIFY(SOA), which has never been
found to be useful for amplification attacks.</t>
      <t>In any case, NOTIFY consumers MAY configure rate limits to address
concerns about the impact of unsolicited NOTIFY messages.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Per <xref target="RFC8552"/>, IANA is requested to create a new registry on the
"Domain Name System (DNS) Parameters" IANA web page as follows:</t>
      <t>Name: Generalized DNS Notifications</t>
      <t>Assignment Policy: Expert Review</t>
      <t>Reference: [this document]</t>
      <table>
        <thead>
          <tr>
            <th align="left">NOTIFY type</th>
            <th align="left">Scheme</th>
            <th align="left">Location</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CDS</td>
            <td align="left">1</td>
            <td align="left">parent.</td>
            <td align="left">[this document]</td>
          </tr>
          <tr>
            <td align="left">CSYNC</td>
            <td align="left">1</td>
            <td align="left">parent.</td>
            <td align="left">[this document]</td>
          </tr>
          <tr>
            <td align="left">DNSKEY</td>
            <td align="left">1</td>
            <td align="left">zone.</td>
            <td align="left">[this document]</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Joe Abley, Mark Andrews, Christian Elmerot, Olafur Gu[eth]mundsson, Paul
Wouters, Brian Dickson</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="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>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="RFC4033">
        <front>
          <title>DNS Security Introduction and Requirements</title>
          <author fullname="R. Arends" initials="R." surname="Arends"/>
          <author fullname="R. Austein" initials="R." surname="Austein"/>
          <author fullname="M. Larson" initials="M." surname="Larson"/>
          <author fullname="D. Massey" initials="D." surname="Massey"/>
          <author fullname="S. Rose" initials="S." surname="Rose"/>
          <date month="March" year="2005"/>
          <abstract>
            <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4033"/>
        <seriesInfo name="DOI" value="10.17487/RFC4033"/>
      </reference>
      <reference anchor="RFC4034">
        <front>
          <title>Resource Records for the DNS Security Extensions</title>
          <author fullname="R. Arends" initials="R." surname="Arends"/>
          <author fullname="R. Austein" initials="R." surname="Austein"/>
          <author fullname="M. Larson" initials="M." surname="Larson"/>
          <author fullname="D. Massey" initials="D." surname="Massey"/>
          <author fullname="S. Rose" initials="S." surname="Rose"/>
          <date month="March" year="2005"/>
          <abstract>
            <t>This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of resource records and protocol modifications that provide source authentication for the DNS. This document defines the public key (DNSKEY), delegation signer (DS), resource record digital signature (RRSIG), and authenticated denial of existence (NSEC) resource records. The purpose and format of each resource record is described in detail, and an example of each resource record is given.</t>
            <t>This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4034"/>
        <seriesInfo name="DOI" value="10.17487/RFC4034"/>
      </reference>
      <reference anchor="RFC4035">
        <front>
          <title>Protocol Modifications for the DNS Security Extensions</title>
          <author fullname="R. Arends" initials="R." surname="Arends"/>
          <author fullname="R. Austein" initials="R." surname="Austein"/>
          <author fullname="M. Larson" initials="M." surname="Larson"/>
          <author fullname="D. Massey" initials="D." surname="Massey"/>
          <author fullname="S. Rose" initials="S." surname="Rose"/>
          <date month="March" year="2005"/>
          <abstract>
            <t>This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of new resource records and protocol modifications that add data origin authentication and data integrity to the DNS. This document describes the DNSSEC protocol modifications. This document defines the concept of a signed zone, along with the requirements for serving and resolving by using DNSSEC. These techniques allow a security-aware resolver to authenticate both DNS resource records and authoritative DNS error indications.</t>
            <t>This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4035"/>
        <seriesInfo name="DOI" value="10.17487/RFC4035"/>
      </reference>
      <reference anchor="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>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>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>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="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>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">
        <front>
          <title>Child-to-Parent Synchronization in DNS</title>
          <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
          <date month="March" year="2015"/>
          <abstract>
            <t>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="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>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">
        <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>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>
      <reference anchor="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>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="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>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="I-D.wisser-dnssec-automation">
        <front>
          <title>DNSSEC automation</title>
          <author fullname="Ulrich Wisser" initials="U." surname="Wisser">
            <organization>The Swedish Internet Foundation</organization>
          </author>
          <author fullname="Shumon Huque" initials="S." surname="Huque">
            <organization>Salesforce</organization>
          </author>
          <date day="6" month="March" year="2022"/>
          <abstract>
            <t>   This document describes an algorithm and a protocol to automate
   DNSSEC Multi-Signer [RFC8901] "Multi-Signer DNSSEC Models" setup,
   operations and decomissioning.  Using Model 2 of the Multi-Signer
   specification, where each operator has their own distinct KSK and ZSK
   sets (or CSK sets), [RFC8078] "Managing DS Records from the Parent
   via CDS/CDNSKEY" and [RFC7477] "Child-to-Parent Synchronization in
   DNS" to accomplish this.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-wisser-dnssec-automation-03"/>
      </reference>
      <reference anchor="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>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>
    </references>
    <section anchor="change-history-to-be-removed-before-publication">
      <name>Change History (to be removed before publication)</name>
      <ul spacing="normal">
        <li>draft-thomassen-dnsop-generalized-dns-notify-00</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Revision after adoption.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>draft-thomassen-dnsop-generalized-dns-notify-02</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Add rationale for staying in band</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Add John as an author</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>draft-thomassen-dnsop-generalized-dns-notify-01</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Mention Ry-to-Rr forwarding to accommodate RRR model</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Add port number flexiblity</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Add scheme parameter</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Drop SRV-based alternative in favour of new NOTIFY RR</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Editorial improvements</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>draft-thomassen-dnsop-generalized-dns-notify-00</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Initial public draft.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
