<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-grubto-dnsop-dns-out-of-protocol-signalling-00" submissionType="IETF" category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" consensus="true">

<front>
<title abbrev="dns-oops">DNS Out Of Protocol Signalling</title><seriesInfo value="draft-grubto-dnsop-dns-out-of-protocol-signalling-00" stream="IETF" status="standard" name="Internet-Draft"></seriesInfo>
<author initials="M." surname="Groeneweg" fullname="Marc Groeneweg"><organization abbrev="SIDN">Stichting Internet Domeinregistratie Nederland</organization><address><postal><street>Postbus 5022</street>
<city>Arnhem</city>
<code>6802EA</code>
<country>Netherlands</country>
</postal><email>marc.groeneweg@sidn.nl</email>
</address></author>
<author initials="S.W.J." surname="Ubbink" fullname="Stefan Ubbink"><organization abbrev="SIDN">Stichting Internet Domeinregistratie Nederland</organization><address><postal><street>Postbus 5022</street>
<city>Arnhem</city>
<code>6802EA</code>
<country>Netherlands</country>
</postal><email>stefan.ubbink@sidn.nl</email>
</address></author>
<author initials="W." surname="Toorop" fullname="Willem Toorop"><organization>NLnet Labs</organization><address><postal><street>Science Park 400</street>
<city>Amsterdam</city>
<code>1098 XH</code>
<country>Netherlands</country>
</postal><email>willem@nlnetlabs.nl</email>
</address></author>
<date year="2023" month="March" day="13"></date>
<area>Internet</area>
<workgroup>DNSOP Working Group</workgroup>

<abstract>
<t>This document seeks to specify a method for name servers to signal programs outside of the name server software, and which are not necessarily involved with the DNS protocol, about conditions that can arise within the name server.
These signals can be used to invoke actions in areas that help provide the DNS service, such as routing.</t>
<t>Currently this document serves as a requirements document to come to a signalling mechanism that will suit the use cases best.
Part of that effort is to assemble a list of conditions with potential associated out of DNS protocol actions, as well as inventory and assess existing signalling mechanisms for suitability.</t>
</abstract>

</front>

<middle>

<section anchor="introduction"><name>Introduction</name>
<t>Operators of name servers can benefit from automatically taking action upon certain conditions in the name server software.
Some conditions can be monitored from outside the name server software, but for adequate and immediate action, the name server software can signal itself about the condition immediately when it occurs to invoke action by a listener for these signals.</t>
<t>An example of such a condition is when all zones, from a set served from an anycasted prefix, are loaded and ready to be served, with the associated automatic actions to only announce a prefix route from the point-of-presence where the name server is running, if all zones from the set are ready to be served, and to withdraw the prefix route if one of the zones cannot be served.
This way queries for zones will only reach the point-of-presence if the name server software can answer those queries.</t>
<t>Operators of anycasted DNS authoritative services with diverse implementations will benefit from standardizing of the name server signalling, but before coming to a specification for the mechanism, this document will serve to inventorise the already available standardized and non-standardized signalling channels and assess them for usability for out of protocol signalling.</t>
</section>

<section anchor="terminology"><name>Terminology and Definitions</name>
<t>The key words &quot;<bcp14>MUST</bcp14>&quot;, &quot;<bcp14>MUST NOT</bcp14>&quot;, &quot;<bcp14>REQUIRED</bcp14>&quot;,
&quot;<bcp14>SHALL</bcp14>&quot;, &quot;<bcp14>SHALL NOT</bcp14>&quot;, &quot;<bcp14>SHOULD</bcp14>&quot;, &quot;<bcp14>SHOULD NOT</bcp14>&quot;,
&quot;<bcp14>RECOMMENDED</bcp14>&quot;, &quot;<bcp14>NOT RECOMMENDED</bcp14>&quot;, &quot;<bcp14>MAY</bcp14>&quot;, and
&quot;<bcp14>OPTIONAL</bcp14>&quot; in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"></xref><xref target="RFC8174"></xref> when, and only when, they appear in all
capitals, as shown here.</t>
</section>

<section anchor="conditions"><name>Conditions to be signalled</name>
<t>This section served to collect a list of conditions for which actions outside of the DNS protocol may be interesting.
It is by no means meant to be a complete list, but serves to inventorise the requirements for the signalling channel.</t>

<section anchor="the-name-server-is-running-and-can-respond-to-queries"><name>The name server is running and can respond to queries</name>
</section>

<section anchor="updatedzone"><name>A zone is updated to a new version</name>
</section>

<section anchor="a-zone-is-loaded-and-ready-to-be-served"><name>A zone is loaded and ready to be served</name>
</section>

<section anchor="a-zone-is-about-to-expire"><name>A zone is about to expire</name>
</section>

<section anchor="a-zone-can-no-longer-be-served"><name>A zone can no longer be served</name>
</section>

<section anchor="a-zone-from-a-set-of-zones-is-loaded-and-ready-to-be-served"><name>A zone from a set of zones is loaded and ready to be served</name>
</section>

<section anchor="one-or-more-zones-from-a-set-of-zones-is-about-to-expire"><name>One or more zones from a set of zones is about to expire</name>
</section>

<section anchor="one-or-more-zones-from-a-set-of-zones-is-no-longer-about-to-expire"><name>One or more zones from a set of zones is no longer about to expire</name>
</section>

<section anchor="one-or-more-zones-from-a-set-of-zones-can-no-longer-be-served"><name>One or more zones from a set of zones can no longer be served</name>
</section>

<section anchor="query-rate-is-exceeding-a-threshold"><name>Query rate is exceeding a threshold</name>
</section>

<section anchor="query-rate-is-below-a-threshold"><name>Query rate is below a threshold</name>
</section>

<section anchor="dnssec-signatures-are-about-to-expire"><name>DNSSEC signatures are about to expire</name>
</section>

<section anchor="dnssec-signatures-will-no-longer-expire-soon"><name>DNSSEC signatures will no longer expire soon</name>
</section>

<section anchor="extended-dns-error-conditions"><name>Extended DNS Error conditions</name>
</section>
</section>

<section anchor="requirements"><name>Requirements for signalling mechanisms and channels</name>
<t>The following requirements can be distilled from <xref target="conditions"></xref>.</t>
</section>

<section anchor="existing"><name>Existing signalling mechanisms and channels</name>
<t>What follows is a list of existing signalling mechanisms assessed on their suitability based on the requirements outlined in the previous paragraph.</t>

<section anchor="notify"><name>Notify</name>
<t><xref target="RFC1996"></xref></t>
</section>

<section anchor="extended-dns-error-reporting"><name>Extended DNS Error reporting</name>
<t><xref target="I-D.ietf-dnsop-dns-error-reporting"></xref></t>
</section>

<section anchor="dbus"><name>D-Bus as publication channel</name>
<t><xref target="D-Bus"></xref></t>
</section>
</section>

<section anchor="security"><name>Security and Privacy Considerations</name>
<t>Signalling MUST be performed in an authenticated and private manner.</t>
</section>

<section anchor="implementation"><name>Implementation Status</name>

<ul>
<li>Knot DNS has support for D-Bus notifications (See <xref target="dbus"></xref>) for significant server and zone events with the &quot;<tt>dbus-event</tt>&quot; configuration parameter since version 3.1.6 <xref target="Knot-DNS-3.1.6"></xref></li>
</ul>
</section>

<section anchor="iana"><name>IANA Considerations</name>
<t>This document has no IANA actions</t>
</section>

<section anchor="acknowledgements"><name>Acknowledgements</name>
</section>

</middle>

<back>
<references><name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
</references>
<references><name>Informative References</name>
<reference anchor="D-Bus" target="https://dbus.freedesktop.org/doc/dbus-specification.html">
  <front>
    <title>D-Bus Specification</title>
    <author fullname="Havoc Pennington" initials="H." surname="Pennington">
      <organization>Red Hat, Inc.</organization>
    </author>
    <author fullname="Anders Carlsson" initials="A." surname="Carlsson">
      <organization>CodeFactory AB</organization>
    </author>
    <author fullname="Alexander Larsson" initials="A." surname="Larsson">
      <organization>Red Hat, Inc.</organization>
    </author>
    <author fullname="Sven Herzberg" initials="S." surname="Herzberg">
      <organization>Imendio AB</organization>
    </author>
    <author fullname="Simon McVittie" initials="S." surname="McVittie">
      <organization>Collabora Ltd.</organization>
    </author>
    <author fullname="David Zeuthen" initials="D." surname="Zeuthen"></author>
    <date year="2023" month="February"></date>
  </front>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-dnsop-dns-error-reporting.xml"/>
<reference anchor="Knot-DNS-3.1.6" target="https://www.knot-dns.cz/2022-02-08-version-316.html">
  <front>
    <title>Knot DNS - Version 3.1.6</title>
    <author>
      <organization>CZ.NIC</organization>
    </author>
    <date year="2022" month="February"></date>
  </front>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1996.xml"/>
</references>

<section anchor="implementation-1"><name>Implementation Status</name>
<t><strong>Note to the RFC Editor</strong>: please remove this entire appendix before publication.</t>
<t>Knot currently uses <xref target="D-Bus"></xref> for this.</t>
</section>

<section anchor="change"><name>Change History</name>
<t><strong>Note to the RFC Editor</strong>: please remove this entire appendix before publication.</t>

<ul>
<li>draft-grubto-dnsop-dns-out-of-protocol-signalling-00</li>
</ul>
<blockquote><t>Initial version</t>
</blockquote></section>

</back>

</rfc>
