Internet-Draft | dns-oops | July 2023 |
Almond, et al. | Expires 11 January 2024 | [Page] |
This document seeks to specify a method for DNS servers to signal programs outside of the server software, and which are not necessarily involved with the DNS protocol, about conditions that can arise within the server. These signals can be used to invoke actions in areas that help provide the DNS service, such as routing.¶
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.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 11 January 2024.¶
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Operators of DNS servers can benefit from automatically taking action upon certain conditions in the name server software. Some conditions can be monitored from outside the server software, but for adequate and immediate action, the server software itself should signal about the condition immediately when it occurs to invoke action by a listener for these signals.¶
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. An associated action may be to start announcing a prefix route from the point-of-presence where the name server is running and to withdraw the prefix route if one of the zones cannot be served anymore. This way queries for zones will only reach the point-of-presence if the name server software can answer those queries.¶
Another example condition may be if an recursive resolver served from an anycasted prefix, is started and ready to serve, with the same associated action of only announcing the anycasted prefix when the recursive resolver can serve queries.¶
All anycasted DNS services can benefit from the mechanism alone, by the increased adequacy and reduced resources of not having to poll for a server's state. DNS services with diverse implementations will benefit from standardizing of the name server signalling.¶
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.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119][RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This section served to collect a list of conditions for which actions outside of the DNS protocol may be interesting. A signal will be sent if the condition is met, and also when the condition is no longer met. Some conditions take configuration parameters influencing when the conditions are met. Some conditions may contain arguments when signalled. When applicable, the parameters and arguments are given with each condition.¶
Some conditions may be identified from outside of the DNS server by polling for the condition. This is more resource intensive that listening for a signal, but may also be more robust. When this is the case, how the condition can be identified is provided with the condition.¶
How to identify:¶
Action:¶
How to identify:¶
Action:¶
How to identify:¶
Action:¶
- Stop the BGP announcement of the prefix¶
This condition maybe only detected from outside of the DNS server.¶
How to identify:¶
Argument:¶
Action:¶
Some name servers, when configured to notify targets when a zone is updated [RFC1996], will also notify those targets when a zone is just loaded. The notify itself may be considered an appropriate signal, although it will not be emitted when the zone is no longer served.¶
Action:¶
This condition may be derived from one or more "A zone is loaded and ready to serve" (Section 3.4) signals when a list of all zones served is available.¶
How to identify:¶
Argument:¶
Action:¶
Name servers can usually already signal this with NOTIFY [RFC1996]¶
Parameter:¶
Argument:¶
Action:¶
Parameter:¶
Argument:¶
Action:¶
Parameter:¶
Action:¶
Parameter:¶
Action:¶
What follows is a list of existing signalling mechanisms and a comparison of those channels in Section 5.5.¶
DNS NOTIFY [RFC1996] is an existing ubiquitous mechanism to signal zones. It is intended to target name servers, but tooling exists to listen for NOTIFY messages and trigger execution of a command when a zone is updated (See [nsnotifyd]).¶
Advantages:¶
Native signalling for zone updates present right now (See Section 3.6)¶
Indirect support for zone loaded (See Section 3.4)¶
Disadvantages:¶
D-Bus is a mechanism for exchanging messages between processes local on the same machine (See [D-Bus]). The D-BUS protocol is a one-to-one protocol, but distribution of messages (or signals) to multiple other applications is carried out by a program intended for this purpose: the D-Bus message bus.¶
Advantages:¶
Implementation already exists (See [Knot-DNS-3.1.6])¶
Good Open Source Software library support [TODO references]¶
Disadvantages:¶
DDoS Open Threat Signaling (DOTS) [RFC9132] is a set of protocols for real-time signaling of threat-mitigation requests within and between different operational domains.¶
Advantages:¶
Publish / Subscribe mechanism¶
Inter-operator communications¶
Authenticated¶
Open Source server software exists [TODO reference go-dots]¶
Disadvantages:¶
MQTT (see [MQTT-OASIS-Standard-v5]) is a lightweight publish-subscribe network protocol for messages.¶
Advantages:¶
Disadvantages:¶
Method | NOTIFY | D-Bus | DOTS | MQTT |
---|---|---|---|---|
Local to machine | + | ++ | + | + |
inter-machine | + | - | + | + |
inter-operator | + | - | ++ | - |
Publish Subscribe | - | - | ++ | ++ |
Authentication | +- | - | + | + |
Client library availability | NA | ++ | ? | ++ |
Signalling MUST be performed in an authenticated and private manner.¶
dbus-event
" configuration parameter since version 3.1.6 [Knot-DNS-3.1.6]¶
This document has no IANA actions¶
We would like to thank the people of the port53 hackathon in Rotterdam for their contributions. Mainly Doris Hauser, Lars-Johan Liman, Vilhelm Prytz and Henrik Kramselund¶
Note to the RFC Editor: please remove this entire appendix before publication.¶
Note to the RFC Editor: please remove this entire appendix before publication.¶
Rename "name server" into "DNS server" when it also applies to recursive resolvers¶
Make a single list of conditions with per condition indicated the parameters (how they can be influenced by configuration), the arguments (the signal payload) and "how to identify" if the condition can be identified from outside of the DNS server.¶
Removing DNS Error reporting monitoring agent as a channel to evaluate¶
Add DOTS and MQTT as a potential signal channels for our conditions¶
Updates after discussion during the port53 hackathon in Rotterdam.¶
Initial version¶