<?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-thomassen-dnsop-generalized-dns-notify-02" 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-thomassen-dnsop-generalized-dns-notify-02"/>
    <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-thomassen-dnsop-generalized-dns-notify">https://github.com/peterthomassen/draft-thomassen-dnsop-generalized-dns-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-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:
H4sIAAAAAAAAA61daXIjx5X+n6fIoX6IVABQt1otuTkxY7NJSqLVm0nKCtmh
GCeqEkCpC1VwZRUhyFKE7jC/JsK+w9zBN9FJ5m25FcBu99gdCpsAq3J5+Zbv
bcnpdKr6qq/tqf7cNrYzdfWDLfXFixv9ou2rRVWYvmobp8x83tm7/Kn8ibIt
GrOGgcrOLPppv2rXxjnbTMvGtZvpMr6I30wbfHk3ffCRKk0Pb/3l4uz28icF
o9ll2+1OtetLpapNd6r7bnD9Rw8ePIGHTWfNqb5qets1tlfbtnu97Nphc4pr
fvlKfw1fVM1Sf45fqtd2B0+U8YXpBS5OKdebpvwvU7cNTL2zTm2qU/3Hvi0m
2rVd39mFg592a/zhW6XMANvpTpWeKg3/qsad6t/O9E1vGxhpTV/y5n/brkyT
/6LtlqapfiAynerbldU3W1tWbhVWpT9rh6akB+gNuzZVfaq/w7FmTsb6TSVP
OyBcb2sg7czZbEmvZjC8kD1Z0ysLL45+A4uCk7I3l+cTfWOLoYNV7WCqtdOX
zbJqrO2AjOlqNjjKb0rrbDGr2jEpntk7eCknRJN+SxPeINmLFiZ79uw8HZzO
w3Sl+43zj8yKdq1U03ZrIMydPQVmaBbJp+l0qs3c9Z0p4EDPgVRL62A9+vzi
5sNz4IYvL7+Z6PObb17AFmFM3fYrIENnYfDSwf/XwGql7lsgQ22XTH1YDVC5
MU1hNbCaHtxg6noHj/S2oMdXwFjLlXbFypZDDd+4wjQw3NDo+Q5+bVUB0jCs
kQk3put3+tjOljOYZzOt7Z2tddniLLCAZQWr351MYNFwAEhvWKcaGtg4bLQ3
89oC75vSTtvFQs9tv7W2ofkafLZoXU8bGzYoQhr30xS7mVJn2lXrqjad3nQt
jLLW9nuYy+ntigagpeMQPwD/4xSNW9jOMZlWxsFcwCaure9gf4PDJ2Fjemvr
evq6abcNK4iXt1effaPXtgDaV26tj//yl3+7/uz84ZMnn/z008lM3a4ql/wa
yAprcdrAqqq16XbEKc52d3AscAywVjhKOFygNx+1Al5rkS8qfG3eDj2vuODD
hvXWdbv1y/MP73Cwqqn6CqkCFDXldNUWYZ/wu9JuLPxP08NU7YLJgkM09vte
37w8gxls8Vpv26EugRi6HCyQlfYDam5Yw5tAUiA3MBK+NziL4yRUmdsdLAbO
qLmDh4G1TE1rV2EVK+A02MIcz91vYQ5KclHBQcFgsuomVbK4M5hERY7VKccC
V4manWn9FaypMI5koqiH0uKbIO8alKLqWqAc0N3xMvRdZWTlxyA+J8QI8pkl
6QQO0jnDVG9K9eehKl7DLuQocGEmEaT3nQZasKzBwfTZBCiSJ8qPB4T9bOhQ
Ntcg9ROgQ0plYIpN64hrGrslCsuo/W6DT8NDhplGgbK2XccyDUx8JEfBzx9N
4JirYqVhdDguemgzzGvUwyDdoIWExRRwA0h+Yq9GZ+BWni1AmfbIFy/100t9
ffn85e8vL1DDpxuoUJpYXOsaJuhI68DBwWF9XvWrYa5Nf6r+uOr7jTv98MMl
fYfK70PSuMGOfvgudvXb43/teCTNVq9R5QA9cWNbsbTIRciIwLLIwn7jE92C
jMH23YA8Y/ti5ikHUgs0UeYOiM5KDikOLItTsKl1+niJlFoMoH2BHYvCboAZ
4BNM/2cYsUe+QROwrsqytkq9h9a0a8uhIEU+EtZKfkeMFLbIEiQLP6TSQNBc
0VVzODE4rlS94bGDaq5EtPHljEs8t6ERIX7KmVMJcx6DsjkB1sTHkJv0omvX
iYaM2tEk+i18q8DMgKb/gUiIBgAOGESPtE4H2wSd0Fdry++j/OSHpVAjzfRI
T7sBqO0ckR60UNnBB6Kbq5YN7ZAIahfwY4UWBwwzzd92FWgyoAYILUCptkYi
taXZ8QHLJu+Q9rQY1k4sbt5gJeOi0i8MyKpKJxaL5mb6i3aLg030dwMaQrL9
uIyEsjTFhPeuUA3BvtNjIiUCS6iAr1bmDpYI+vS7Fuxm6yrUKl4jg21XmbHB
Awcj1Rkw4cByiJ+AyCBlmxqkDAjnKuCd3m7wadhCvi8yJp4kDen0QLSgUgPP
lowsEn5O35/olScEK0sDmgysJ37NlhCYYtPB5g1stEQIhOMDKRRO69UwTGB6
Wo+pAWOXOzauMPnxHOwuUI3U5omgnPSMr+FxNCX4sv1+I0CpRQ25MHCsFZzr
FtSQGKCJGCQkJYvUxw8ePfrpp4kKnz6GT/F3j+OnTz791cP46dNHHydPfvrx
p5/GUT59/CsckywZf/OrJw8ekuC+956+BiVSdRZp6dCPMV5pWDSPqNvAsh99
8MHzr25uP/gABFR+Rubyn68vf/fV1fXlhf9888XZs2fZB5U8ffPFy6+eXeSf
8tHOXz5/fvniIg4Iv1UHvn5+9g39iDuDjy9f3V69fHGGM7MEpHrPMF/OkQGF
DeBsQFYyxfb0/JV++LGQ6aOHD5/89JOn2cNPgcIEkAREN2Bo+SNwATDJZmNJ
bEmrF2ZT9cB/E5wCtD0gRVLtRPNbsPBV09btcqfUFctqj4Brbmtk1SAQ/RYw
ebUAfYlbGFBJiI6GLay96jya6ZeN6FXCH1H2PVNPMp0q8AeVie0UCAjCz0zD
5qrBgAbt9TGKkhvmDs1O0yvge9SOwLwnM/21zM/TkxaliXH7ooaur1HHnIia
Q6XL3yAKxaksI0j6CnaZb0AjGhMnBtSrZiwGQMehlBHqOWFdINYB4YbxoKk8
DJlIFAkwD8sl6qhSrRu7bpuq0JG2ZBTkvQOQiexNW6QWVB0g3wESGd7wCJ0h
i+jzFp0UZLMLVFEdnfsNMsd5tGhKpXY41ZI4LBCBoAIC6BjG2AWCslXeGt6R
Qv24BnLdWf92bjjp8Ed2V9woHp4w/cqU5DKJJ1Z6SyRWfEbAZm4cEBgUsKHp
keGGJQkp0q5PwMQR4pyj1LGCIwV/vAWGIe8EOBH8Rj5Ig4+71ZHKHuddn9D6
DZolOF4yhqzmcQHkDm8r+Ar2tEsMFPA8+Du4QFuRy+zwBFLSwKAwAqEzjV4E
qIRFx/IR3VMRWY9kcCVi2U4CLthaNrvB+hNa5I3RrExQ550r+GCQuA7UDFkw
Qpz4JQyDk9IpCI/akgmP6oSAazu/q9rBCe4wIo6wYEChYKXAVZf5YbZ1CyaN
YgnEjyyBtDfSNt5WzsGJp+0qtnfgWNbtjjkAgGbHgKEZ1nOgIwx7C0pfHH+E
AfqpJYTjJahGoUkeL1YV4OXoVmFQytMXCZovT0IbCgXXxJM7ZmiEaIXPCOl/
1nA4ZBAvEWWcmL2dAj0wrnG0Huq+mrK6PEInbti4qMY6i7E4TQ8B5kFVu66m
iWsNtorfdUdML2tA8vArVj6gfAl/ggsM+IKOHFXiXVUOIAMwHZ0DWGPnFX0w
2bhSlS7Prw4OAd0S3AzO4Y+VUBAIb49wVqRMsS4N8SCgUFgggeiRX8NQ+ZjU
IvyHeAhPDO2hzpaSrJO3VvV+PRRtQVKsCak7RcbxhLjUR2qIvpWwmHCh0JFx
KgszzIo+vBKj9gcc+gZhMnDGl0Az9KNajJUVFL9CJkESYwiFYyscbdrhASjw
/zhghRi/WdY2I6uc+R9uvtQxbEBAkSxALbtRyGfthg0PUPzL7HnaTtXcYUyJ
9YLpmBXP0GKBRQMaTmIkBmaj88d9yWJwShzQlhOmJrM400YRbUACh8Zs8Uk6
NqCjxfhL4iygWqNAlL4DF7D0Box8DIM43knEix0mWMcET7CxtnQCakEA26ER
XA7kVTGOlcJocmQrjk6QbJGFQYkGvQTaH360RIzK4RSKmQSMJcZHG4soQ4JZ
FCNiqeHdvi9IQF9fk6DMTQFM3yi3a8DNvhmAjzs4RPi06lofewY5b7xKXyFu
a9AmcTDChIDmBJERfFPaNTDNRC9h9fT7ofIRyQpgQ0cG+zL4gPoqUd2oqm+8
nroD+U0zBQxXUl+R+J7olll273qWbC8TGYHjajc9Or68MR8aDUaIwndeSSZ+
LwfWOIiIZ6eibUcJiSoyjDBTX8OJWRFiYG5XERHagN/Iz/LvgajRmyFK1BbF
AKKB4S/cAVrvawtPA4QCCQC+Ack5mbCT6F8tKwo5sQMGp9YDp4CFSUOfTK4F
R1J48/TypsVw3kwFcLWpDQY98nA1nYugBwy66Wj6A4qYEUYXBXTI2z3o0vvR
p8RZI6+XF+13RyFpbXqGvwi2RNNuQWgYQKhRxAWciGDxRABuxCSjRUO/ElxX
9yaTSyuu0EtHBU1BekFW6rBl3TcTbJTxNN5uwBPTzeoo2mYM39e7iSYsX7GW
dsxnbFUMATPt1njKccigBsrR6IjrfCBDeSSKT+NeaEvpVgLfIDwKW++GhgKy
e2iucrLgmb5q9sEeEcER3gBLkGLF42oGdhNWCnBvAIrXHD65CRiZ7AC5GLxk
RCcvkD9o98T0uCogh99HisX0cY9I8iTR8KxqwQwp5rd2kikPdEGAhYngABYY
Ejd+OSkOF+iK0C7qCQRLjCuR1TCOG4xbHgQTtB0QMOp381bdwdId3PYYT/Eq
RB1WIahjNSIPsGqZHIuceftDgTB/amizqoLCUShaRNcoUB7qkONC5PK4LdDS
uDAwHs6Hgcc8Uj59o0TcuVTleqwvrnyKaX2EMRW9f5ZLU49GHebSJM0Sco9t
80bOBTo+JzR4w6DlhoAp+axX04sZ+FtAdAysA0dNPUZrGzB3PiLjtIQYLBMX
zLChBBELPZkBj1E8+t4D3wn25q35oyZeVb15jTAGtiqahIE4gfOql8GHpgL6
CdJgtzzx/tkctUIK/L4I+ewTFhBGj+R6BdBaVq4YyKjvYfiBo8yZ34GH1BPo
Axck5G8wFo6s34P3xvtCALkBliLjjFR7be0mBU0Md8t7jhT5C9ESaIYOTHxC
V6YiOaw05pgR8K1JCs0IKYrwshTwVjHDy5mI+D6nNCWcHODcyBWZpe6BGnkG
8ZhJ9fe7jYhq2foxAwZXx4mpydD8ychbuM9TUFh1AE6N2LzD3kKFIKtHzIhe
BWou2A8fnVeJKp2dD5R9iDSAzuUOoEhFH/AkJ7MQO8z5hAL9feKdYdgDSF70
vJANUhzUAtnXe3A2JvE3sCyX6mT43mdZVIAq4NaXoLq9DU28FFLhpIv6PR9S
wnd8ysiNEnMSDqf4Y+E5NQPw9CUccOTHPeV3+ibVd3q/0qtbDLXBvjGVCsyB
KAolyVE1gZcImfiE43SxwiIJP+TlQITyMzw/Cm06yp4bgsQ+zsgH+zsMb6kb
W/CRHYogmjTLM1NPdzGp56U+iQQmqb19HC9uBkYvKbqdW/E0z6WP08KFJHIc
0EHiCaaUPqE4gKldmyIRcZb2y1UU0jSzIhk0JcUrxlKCv+mBZCtegz1DjzW4
UpK9YUOKR0CcpdLcP9Kk8a/EgI+3dzVxhkSL0NPM8p6wIHaYekJIha3u2HaV
llUU64Y5aY8RDkHC3MGDuErF73OJDMqSrRcTOb2YY0pw19X52YsXoECvSTXW
WMe1tioB/jT7hjlJvjacOMDDA68moyJV9czUZ36TvHk3Ge9LVi7eHifLOfa0
wSh8hzUoKkw3oXApalOyiGBhJVqOWqPB2iBrUWUGZ1sUjAqUYM0gw+ljWhvI
w+WrVxPNeUtk7B2eMxzQ1nSlyINi0JtVecALWU0GWGdUmJRUoCBC0MEx64EH
wBqCVQxqDEqwEIuAipDMhI/OEqedpsmZjSleWzpIh47YjpM0ouWzHILwIFtf
z5D9iN8BSa9asF7gSqV7wyyYXVQNG2MPuBWRHpc0JZb0gBsW3puKmJEyQcMG
zodAENdWoRLxaRRYz1eANZgLWMEkE09SWZE0XyhGCgAa2YvdE64xisH4eYiw
oBzE+Ayanc6LO+nbPUGXKHr9biLPJ/8WoQdqstwLhVhPjSUfDPMcdiIB9r3j
JAkE/sCisk1wGoIBiX4JrJhVgdflsgoJWWDJksTZqMSuKgZMHtAGGZZiDVvI
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
x5teSmgAAA==

-->

</rfc>
