rfc9859.original | rfc9859.txt | |||
---|---|---|---|---|
DNSOP Working Group J. Stenstam | Internet Engineering Task Force (IETF) J. Stenstam | |||
Internet-Draft The Swedish Internet Foundation | Request for Comments: 9859 The Swedish Internet Foundation | |||
Intended status: Standards Track P. Thomassen | Category: Standards Track P. Thomassen | |||
Expires: 20 September 2025 deSEC, Secure Systems Engineering | ISSN: 2070-1721 deSEC, Secure Systems Engineering | |||
J. Levine | J. Levine | |||
Standcore LLC | Standcore LLC | |||
19 March 2025 | September 2025 | |||
Generalized DNS Notifications | Generalized DNS Notifications | |||
draft-ietf-dnsop-generalized-notify-09 | ||||
Abstract | Abstract | |||
This document generalizes and extends the use of DNS NOTIFY (RFC | This document generalizes and extends the use of DNS NOTIFY (RFC | |||
1996) beyond conventional zone transfer hints, to allow triggering | 1996) beyond conventional zone transfer hints to allow other types of | |||
other types of actions via the DNS that were previously lacking a | actions that were previously lacking a trigger mechanism to be | |||
trigger mechanism. Notifications merely nudge the receiver to | triggered via the DNS. Notifications merely nudge the receiver to | |||
initiate a predefined action promptly (instead of on a schedule); | initiate a predefined action promptly (instead of on a schedule); | |||
they do not alter the action itself (including any security checks it | they do not alter the action itself (including any security checks it | |||
might employ). | might employ). | |||
To enable this functionality, a method for discovering the receiver | To enable this functionality, a method for discovering the receiver | |||
endpoint for such notification messages is introduced, via the new | endpoint for such notification messages is introduced, via the new | |||
DSYNC record type. Notification types are recorded in a new | DSYNC record type. Notification types are recorded in a new | |||
registry, with initial support for parental NS and DS record updates | registry, with initial support for parental NS and DS record updates | |||
including DNSSEC bootstrapping. | including DNSSEC bootstrapping. | |||
TO BE REMOVED: This document is being collaborated on in Github at: | ||||
https://github.com/peterthomassen/draft-ietf-dnsop-generalized-notify | ||||
(https://github.com/peterthomassen/draft-ietf-dnsop-generalized- | ||||
notify). The most recent working version of the document, open | ||||
issues, etc. should all be available there. The authors (gratefully) | ||||
accept pull requests. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
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 | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 20 September 2025. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9859. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Design Goals for Delegation Maintenance . . . . . . . . . 3 | 1.1. Design Goals for Delegation Maintenance | |||
1.2. Requirements Notation . . . . . . . . . . . . . . . . . . 4 | 1.2. Requirements Notation | |||
2. DSYNC RR Type . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. DSYNC RR Type | |||
2.1. Wire Format . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Wire Format | |||
2.2. Presentation Format . . . . . . . . . . . . . . . . . . . 5 | 2.2. Presentation Format | |||
2.3. Semantics . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. Semantics | |||
3. Publication of Notification Targets . . . . . . . . . . . . . 6 | 3. Publication of Notification Targets | |||
3.1. Wildcard Method . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Wildcard Method | |||
3.2. Child-specific Method . . . . . . . . . . . . . . . . . . 7 | 3.2. Child-specific Method | |||
4. Delegation Maintenance: CDS/CDNSKEY and CSYNC | 4. Delegation Maintenance: CDS/CDNSKEY and CSYNC Notifications | |||
Notifications . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1. Endpoint Discovery | |||
4.1. Endpoint Discovery . . . . . . . . . . . . . . . . . . . 8 | 4.2. Sending Notifications | |||
4.2. Sending Notifications . . . . . . . . . . . . . . . . . . 9 | 4.2.1. Timeouts and Error Handling | |||
4.2.1. Timeouts and Error Handling . . . . . . . . . . . . . 9 | 4.2.2. Roles | |||
4.2.2. Roles . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.3. Processing of NOTIFY Messages for Delegation Maintenance | |||
4.3. Processing of NOTIFY Messages for Delegation | 5. Security Considerations | |||
Maintenance . . . . . . . . . . . . . . . . . . . . . . . 10 | 6. IANA Considerations | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 6.1. DSYNC RR Type | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 6.2. DSYNC Scheme Registration | |||
6.1. DSYNC RR Type . . . . . . . . . . . . . . . . . . . . . . 13 | 6.3. _dsync Underscore Name | |||
6.2. DSYNC Scheme Registration . . . . . . . . . . . . . . . . 13 | 7. References | |||
6.3. _dsync Underscore Name . . . . . . . . . . . . . . . . . 14 | 7.1. Normative References | |||
7. Implementation Status . . . . . . . . . . . . . . . . . . . . 15 | 7.2. Informative References | |||
7.1. Child DNS Operator-side . . . . . . . . . . . . . . . . . 15 | Appendix A. Efficiency and Convergence Issues in DNS Scanning | |||
7.2. Parent-side . . . . . . . . . . . . . . . . . . . . . . . 15 | A.1. Original NOTIFY for Zone Transfer Nudging | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 | A.2. Similar Issues for DS Maintenance and Beyond | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | Acknowledgements | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 17 | ||||
Appendix A. Efficiency and Convergence Issues in DNS Scanning . 17 | ||||
A.1. Original NOTIFY for Zone Transfer Nudging . . . . . . . . 17 | ||||
A.2. Similar Issues for DS Maintenance and Beyond . . . . . . 18 | ||||
Appendix B. Change History (to be removed before publication) . 18 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
1. Introduction | 1. Introduction | |||
Traditional DNS notifications [RFC1996], which are here referred to | Traditional DNS notifications [RFC1996], which are here referred to | |||
as "NOTIFY(SOA)", are sent from a primary server to a secondary | 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 | server to minimize the latter's convergence time to a new version of | |||
the zone. This mechanism successfully addresses a significant | the zone. This mechanism successfully addresses a significant | |||
inefficiency in the original protocol. | inefficiency in the original protocol. | |||
Today similar inefficiencies occur in new use cases, in particular | Today, similar inefficiencies occur in new use cases, in particular, | |||
delegation maintenance (DS and NS record updates). Just as in the | delegation maintenance (DS and NS record updates). Just as in the | |||
NOTIFY(SOA) case, a new set of notification types will have a major | NOTIFY(SOA) case, a new set of notification types will have a major | |||
positive benefit by allowing the DNS infrastructure to completely | positive benefit by allowing the DNS infrastructure to completely | |||
sidestep these inefficiencies. For additional context, see | sidestep these inefficiencies. For additional context, see | |||
Appendix A. | Appendix A. | |||
Although this document primarily deals with applying generalized | Although this document primarily deals with applying generalized | |||
notifications to the delegation maintenance use case, future | notifications to the delegation maintenance use case, future | |||
extension for other applications (such as multi-signer key exchange) | extension for other applications (such as multi-signer key exchange) | |||
is possible. | is possible. | |||
No DNS protocol changes are introduced by this document. The | No DNS protocol changes are introduced by this document. Instead, | |||
mechanism instead makes use of a wider range of DNS messages allowed | the mechanism makes use of a wider range of DNS messages allowed by | |||
by the protocol. | the protocol. | |||
Readers are expected to be familiar with DNSSEC [RFC9364], including | Readers are expected to be familiar with DNSSEC [RFC9364], including | |||
[RFC6781], [RFC7344], [RFC7477], [RFC7583], [RFC8078], [RFC8901], and | [RFC6781], [RFC7344], [RFC7477], [RFC7583], [RFC8078], [RFC8901], and | |||
[RFC9615]. DNS-specific terminology can be found in [RFC9499]. | [RFC9615]. DNS-specific terminology can be found in [RFC9499]. | |||
1.1. Design Goals for Delegation Maintenance | 1.1. Design Goals for Delegation Maintenance | |||
When the parent operator is interested in notifications for | When the parent operator is interested in notifications for | |||
delegation maintenance (such as DS or NS update hints), a service | delegation maintenance (such as DS or NS update hints), a service to | |||
will need to be made available for accepting these notifications. | accept these notifications will need to be made available. Depending | |||
Depending on the context, this service may be run by the parent | on the context, this service may be run by the parent operator or by | |||
operator themselves, or by a designated entity who is in charge of | a designated entity who is in charge of handling the domain's | |||
handling the domain's delegation data (such as a domain registrar). | delegation data (such as a domain registrar). | |||
It seems desirable to minimize the number of steps that the | It seems desirable to minimize the number of steps that the | |||
notification sender needs to perform in order to figure out where to | notification sender needs to perform in order to figure out where to | |||
send the NOTIFY. This suggests that the lookup process be ignorant | send the NOTIFY. This suggests that the lookup process be ignorant | |||
of the details of the parent-side relationships (e.g., whether there | of the details of the parent-side relationships (e.g., whether or not | |||
is a registrar or not). This is addressed by parameterizing the | there is a registrar.) This is addressed by parameterizing the | |||
lookup with the name of the child. The parent operator may then | lookup with the name of the child. The parent operator may then | |||
(optionally) announce the notification endpoint in a delegation- | (optionally) announce the notification endpoint in a delegation- | |||
specific way, by publishing it at a child-specific name. (A catch- | specific way by publishing it at a child-specific name. (A catch-all | |||
all endpoint may be indicated by wildcarding.) | endpoint may be indicated by wildcarding.) | |||
The solution proposed here is thus for the parent operator to publish | The solution proposed here is thus for the parent operator to publish | |||
the address where someone listens for notifications, in a child- | the address where someone listens for notifications, in a child- | |||
specific way (see Section 3). Potential senders can easily determine | specific way (see Section 3). Potential senders can easily determine | |||
the name of the parent and then look up that information (see | the name of the parent and then look up that information (see | |||
Section 4.1). | Section 4.1). | |||
1.2. Requirements Notation | 1.2. Requirements Notation | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. DSYNC RR Type | 2. DSYNC RR Type | |||
This section defines the DSYNC RR type which is subsequently used for | This section defines the DSYNC RR type, which is subsequently used | |||
discovering notification endpoints. | for discovering notification endpoints. | |||
2.1. Wire Format | 2.1. Wire Format | |||
The DSYNC RDATA wire format is encoded as follows: | The DSYNC RDATA wire format is encoded as follows: | |||
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| RRtype | Scheme | Port | | RRtype | Scheme | Port | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Target ... / | | Target ... / | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/ | |||
RRtype The type of generalized NOTIFY that this DSYNC RR defines the | RRtype: The type of generalized NOTIFY that this DSYNC RR defines | |||
desired target address for (see "Resource Record (RR) TYPEs" IANA | the desired target address for (see the "Resource Record (RR) | |||
registry). For now, only CDS and CSYNC are supported values, with | TYPEs" registry). For now, only CDS and CSYNC are supported | |||
the former indicating an updated CDS or CDNSKEY record set. | values, with the former indicating an updated CDS or CDNSKEY | |||
record set. | ||||
Scheme The mode used for contacting the desired notification | Scheme: The mode used for contacting the desired notification | |||
address. This is an 8-bit unsigned integer. Records with value 0 | address. This is an 8-bit unsigned integer. Records with value 0 | |||
(null scheme) are ignored by consumers. Value 1 is described in | (null scheme) are ignored by consumers. Value 1 is described in | |||
this document, and values 128-255 are reserved for private use. | this document, and values 128-255 are Reserved for Private Use. | |||
All other values are currently unassigned. | All other values are currently unassigned. | |||
Port The port on the target host of the notification service. This | Port: The port on the target host of the notification service. This | |||
is a 16-bit unsigned integer in network byte order. Records with | is a 16-bit unsigned integer in network byte order. Records with | |||
value 0 are ignored by consumers. | value 0 are ignored by consumers. | |||
Target The fully-qualified, uncompressed domain name of the target | Target: The fully-qualified, uncompressed domain name of the target | |||
host providing the service of listening for generalized | host providing the service of listening for generalized | |||
notifications of the specified type. This name MUST resolve to | notifications of the specified type. This name MUST resolve to | |||
one or more address records. | one or more address records. | |||
2.2. Presentation Format | 2.2. Presentation Format | |||
The presentation format of the RDATA portion is as follows: | The presentation format of the RDATA portion is as follows: | |||
* The RRtype field is represented as a mnemonic from the "Resource | * The RRtype field is represented as a mnemonic from the "Resource | |||
Record (RR) TYPEs" registry. | Record (RR) TYPEs" registry. | |||
* The Scheme field is represented by its mnemonic if assigned (see | * The Scheme field is represented by its mnemonic, if assigned (see | |||
Section 6.2), otherwise as an unsigned decimal integer. | Section 6.2), and is otherwise represented as an unsigned decimal | |||
integer. | ||||
* The Port field is represented as an unsigned decimal integer. | * The Port field is represented as an unsigned decimal integer. | |||
* The Target field is represented as a <domain-name> ([RFC1035], | * The Target field is represented as a <domain-name> (Section 5.1 of | |||
Section 5.1). | [RFC1035]). | |||
2.3. Semantics | 2.3. Semantics | |||
For now, the only scheme defined is 1 (mnemonic: NOTIFY). By | For now, the only scheme defined is 1 (mnemonic: NOTIFY). By | |||
publishing a DSYNC record with this scheme, a parent indicates that | publishing a DSYNC record with this scheme, a parent indicates that | |||
they would like child operators to send them a NOTIFY message (see | they would like child operators to send them a NOTIFY message (see | |||
Section 4) upon publication of a new CDS/CDNSKEY/CSYNC RRset, to the | Section 4) upon publication of a new CDS/CDNSKEY/CSYNC RRset to the | |||
address and port listed in that DSYNC record and using conventional | address and port listed in that DSYNC record and using conventional | |||
[RFC1035] DNS transport. | DNS transport [RFC1035]. | |||
Example (for the owner names of these records, see Section 3): | Example (for the owner names of these records, see Section 3): | |||
IN DSYNC CDS NOTIFY 5359 cds-scanner.example.net. | IN DSYNC CDS NOTIFY 5359 cds-scanner.example.net. | |||
IN DSYNC CSYNC NOTIFY 5360 csync-scanner.example.net. | IN DSYNC CSYNC NOTIFY 5360 csync-scanner.example.net. | |||
Should a need for other mechanisms arise, other schemes may be | Should a need for other mechanisms arise, other schemes may be | |||
defined to deal with such requirements using alternative logic. | defined to deal with such requirements using alternative logic. | |||
Schemes are independent of RRtype. They merely specify a method of | Schemes are independent of the RRtype. They merely specify a method | |||
contacting the target (whereas the RRtype is part of the notification | of contacting the target (whereas the RRtype is part of the | |||
payload). | notification payload). | |||
3. Publication of Notification Targets | 3. Publication of Notification Targets | |||
To use generalized notifications, it is necessary for the sender to | To use generalized notifications, it is necessary for the sender to | |||
know where to direct each NOTIFY message. This section describes the | know where to direct each NOTIFY message. This section describes the | |||
procedure for discovering that notification target. | procedure for discovering that notification target. | |||
Note that generalized NOTIFY messages are but one mechanism for | Note that generalized NOTIFY messages are but one mechanism for | |||
improving the efficiency of automated delegation maintenance. Other | improving the efficiency of automated delegation maintenance. Other | |||
alternatives, such as contacting the parent operator via an API or | alternatives, such as contacting the parent operator via an API or | |||
DNS Update ([RFC2136]), may (or may not) be more suitable in | DNS Update [RFC2136], may (or may not) be more suitable in individual | |||
individual cases. Like generalized notifications, they similarly | cases. Like generalized notifications, they similarly require a | |||
require a means for discovering where to send the API or DNS Update | means for discovering where to send the API or DNS Update requests. | |||
requests. | ||||
As the scope for the publication mechanism is wider than only to | As the scope for the publication mechanism is wider than only to | |||
support generalized notifications, a unified approach that works | support generalized notifications, a unified approach that works | |||
independently of the notification method is specified in this | independently of the notification method is specified in this | |||
section. | section. | |||
Parent operators participating in the discovery scheme for the | Parent operators participating in the discovery scheme for the | |||
purpose of delegation maintenance notifications MUST publish endpoint | purpose of delegation maintenance notifications MUST publish endpoint | |||
information using the record type defined in Section 2 under the | information using the record type defined in Section 2 under the | |||
_dsync subdomain of the parent zone, as described in the following | _dsync subdomain of the parent zone, as described in the following | |||
subsections. | subsections. | |||
There MUST NOT be more than one DSYNC record for each combination of | There MUST NOT be more than one DSYNC record for each combination of | |||
RRtype and Scheme. It is RECOMMENDED to secure zones containing | RRtype and Scheme. It is RECOMMENDED that zones containing DSYNC | |||
DSYNC records with DNSSEC. | records with DNSSEC be secure. | |||
For practical purposes, the parent operator MAY delegate the _dsync | For practical purposes, the parent operator MAY delegate the _dsync | |||
domain as a separate zone, and/or synthesize records under it. If | domain as a separate zone and/or synthesize records under it. If | |||
child-specificity is not needed, the parent can publish a static | child-specificity is not needed, the parent can publish a static | |||
wildcard DSYNC record. | wildcard DSYNC record. | |||
3.1. Wildcard Method | 3.1. Wildcard Method | |||
If the parent operator itself performs CDS/CDNSKEY or CSYNC | If the parent operator itself performs CDS/CDNSKEY or CSYNC | |||
processing for some or all delegations, or wants to forward | processing for some or all delegations, or if the parent operator | |||
notifications to some other party, a default notification target may | wants to forward notifications to some other party, a default | |||
be specified as follows: | notification target may be specified as follows: | |||
*._dsync.example. IN DSYNC CDS NOTIFY port target | *._dsync.example. IN DSYNC CDS NOTIFY port target | |||
*._dsync.example. IN DSYNC CSYNC NOTIFY port target | *._dsync.example. IN DSYNC CSYNC NOTIFY port target | |||
To accommodate indirect delegation management models, the designated | To accommodate indirect delegation management models, the designated | |||
notification target may relay notifications to a third party (such as | notification target may relay notifications to a third party (such as | |||
the registrar, in ICANN's model). The details of such arrangements | the registrar, in ICANN's model). The details of such arrangements | |||
are out of scope for this document. | are out of scope for this document. | |||
If for some reason the parent operator cannot publish wildcard | If for some reason the parent operator cannot publish wildcard | |||
records, the wildcard label may be dropped from the DSYNC owner name | records, the wildcard label may be dropped from the DSYNC owner name | |||
(i.e., it may be published at the _dsync label instead). This | (i.e., it may be published at the _dsync label instead). This | |||
practice requires an additional step during discovery (see | practice requires an additional step during discovery (see | |||
Section 4.1), and is therefore NOT RECOMMENDED. | Section 4.1) and is therefore NOT RECOMMENDED. | |||
3.2. Child-specific Method | 3.2. Child-specific Method | |||
It is also possible to publish child-specific records where the | It is also possible to publish child-specific records where the | |||
parent zone's labels are stripped from the child's FQDN and the | parent zone's labels are stripped from the child's Fully Qualified | |||
result is used in place of the wildcard label. | Domain Name (FQDN), and the result is used in place of the wildcard | |||
label. | ||||
As an example, consider a registrar offering domains like | As an example, consider a registrar offering domains like | |||
child.example, delegated from example zone. If the registrar | child.example, delegated from example zone. If the registrar | |||
provides the notification endpoint, e.g., rr-endpoint.example:5300, | provides the notification endpoint, e.g., rr-endpoint.example:5300, | |||
the parent may publish this information as follows: | the parent may publish this information as follows: | |||
child._dsync.example. IN DSYNC CDS NOTIFY 5300 rr-endpoint.example. | child._dsync.example. IN DSYNC CDS NOTIFY 5300 rr-endpoint.example. | |||
4. Delegation Maintenance: CDS/CDNSKEY and CSYNC Notifications | 4. Delegation Maintenance: CDS/CDNSKEY and CSYNC Notifications | |||
Delegation maintenance notifications address the inefficiencies | Delegation maintenance notifications address the inefficiencies | |||
related to scanning child zones for CDS/CDNSKEY records | related to scanning child zones for CDS/CDNSKEY records | |||
[RFC7344][RFC8078][RFC9615]. (For an overview of the issues, see | [RFC7344][RFC8078] [RFC9615]. (For an overview of the issues, see | |||
Appendix A.) | Appendix A.) | |||
NOTIFY messages for delegation maintenance MUST be formatted as | NOTIFY messages for delegation maintenance MUST be formatted as | |||
described in [RFC1996], with the qtype field replaced as appropriate. | described in [RFC1996], with the qtype field replaced as appropriate. | |||
To address the CDS/CDNSKEY dichotomy, the NOTIFY(CDS) message (with | To address the CDS/CDNSKEY dichotomy, the NOTIFY(CDS) message (with | |||
qtype=CDS) is defined to indicate any child-side changes pertaining | qtype=CDS) is defined to indicate any child-side changes pertaining | |||
to an upcoming update of DS records. As the child DNS operator | to an upcoming update of DS records. As the child DNS operator | |||
generally is unaware of whether the parent side consumes CDS records | generally is unaware of whether the parent side consumes CDS records | |||
or prefers CDNSKEY, or when that policy changes, it seems advisable | or prefers CDNSKEY, or when that policy changes, it seems advisable | |||
to publish both types of records, preferably using automation | to publish both types of records, preferably using automation | |||
features of common authoritative nameserver software for ensuring | features of common authoritative nameserver software for ensuring | |||
consistency. | consistency. | |||
Upon receipt of NOTIFY(CDS), the parent-side recipient (typically, | Upon receipt of NOTIFY(CDS), the parent-side recipient (typically, | |||
registry or registrar) SHOULD initiate the same DNS lookups and | registry or registrar) SHOULD initiate the same DNS lookups and | |||
verifications for DNSSEC bootstrapping [RFC9615] or DS maintenance | verifications for DNSSEC bootstrapping [RFC9615] or DS maintenance | |||
[RFC7344][RFC8078] that would otherwise be triggered based on a | [RFC7344] [RFC8078] that would otherwise be triggered based on a | |||
timer. | timer. | |||
The CSYNC [RFC7477] inefficiency may be similarly treated, with the | The CSYNC [RFC7477] inefficiency may be similarly treated, with the | |||
child sending a NOTIFY(CSYNC) message (with qtype=CSYNC) to an | child sending a NOTIFY(CSYNC) message (with qtype=CSYNC) to an | |||
address where the parent operator (or a designated party) is | address where the parent operator (or a designated party) is | |||
listening for CSYNC notifications. | listening for CSYNC notifications. | |||
In both cases the notification will speed up processing times by | In both cases, the notification will speed up processing times by | |||
providing the recipient with a hint that a particular child zone has | providing the recipient with a hint that a particular child zone has | |||
published new CDS, CDNSKEY and/or CSYNC records. | published new CDS, CDNSKEY, and/or CSYNC records. | |||
4.1. Endpoint Discovery | 4.1. Endpoint Discovery | |||
To locate the target for outgoing delegation maintenance | To locate the target for outgoing delegation maintenance | |||
notifications, the notification sender MUST perform the following | notifications, the notification sender MUST perform the following | |||
steps: | steps: | |||
1. Construct the lookup name, by inserting the _dsync label after | 1. Construct the lookup name by inserting the _dsync label after the | |||
the first label of the delegation owner name. | first label of the delegation owner name. | |||
2. Perform a lookup of type DSYNC for the lookup name, and validate | 2. Perform a lookup of type DSYNC for the lookup name, and validate | |||
the response if DNSSEC is enabled. If this results in a positive | the response if DNSSEC is enabled. If this results in a positive | |||
DSYNC answer, return it. | DSYNC answer, return it. | |||
3. If the query resulted in a negative response: | 3. If the query resulted in a negative response: | |||
* If the response's SOA record indicates that the parent is more | * If the response's SOA record indicates that the parent is more | |||
than one label away from the _dsync label, construct a new | than one label away from the _dsync label, construct a new | |||
lookup name by inserting the _dsync label into the delegation | lookup name by inserting the _dsync label into the delegation | |||
owner name just before the parent zone labels inferred from | owner name just before the parent zone labels inferred from | |||
the negative response, and go to step 2. | the negative response. Then go to step 2. | |||
For example, assume that subsub.sub.child.example is delegated | For example, assume that subsub.sub.child.example is delegated | |||
from example (and not from sub.child.example or | from example (and not from sub.child.example or | |||
child.example). The initial DSYNC query relating to it is | child.example). The initial DSYNC query relating to it is | |||
thus directed at subsub._dsync.sub.child.example. This is | thus directed at subsub._dsync.sub.child.example. This is | |||
expected to result in a negative response from example, and | expected to result in a negative response from example, and | |||
another query for subsub.sub.child._dsync.example is then | another query for subsub.sub.child._dsync.example is then | |||
required. | required. | |||
* Otherwise, if the lookup name has any labels in front of the | * Otherwise, if the lookup name has any labels in front of the | |||
_dsync label, remove them to construct a new lookup name (such | _dsync label, remove them to construct a new lookup name (such | |||
as _dsync.example), and go to step 2. (This is to enable zone | as _dsync.example). Then go to step 2. (This is to enable | |||
structures without wildcards.) | zone structures without wildcards.) | |||
* Otherwise, return null (no notification target available). | * Otherwise, return null (no notification target available). | |||
4.2. Sending Notifications | 4.2. Sending Notifications | |||
When creating or changing a CDS/CDNSKEY/CSYNC RRset in the child | When creating or changing a CDS/CDNSKEY/CSYNC RRset in the child | |||
zone, the DNS operator SHOULD send a suitable notification to one of | zone, the DNS operator SHOULD send a suitable notification to one of | |||
the endpoints discovered as described in the previous section. | the endpoints discovered as described in the previous section. | |||
A NOTIFY message can only carry information about changes concerning | A NOTIFY message can only carry information about changes concerning | |||
skipping to change at page 9, line 23 ¶ | skipping to change at line 381 ¶ | |||
sender MUST send a separate notification for each one. | sender MUST send a separate notification for each one. | |||
When a primary name server publishes a new RRset in the child, there | When a primary name server publishes a new RRset in the child, there | |||
typically is a time delay until all publicly visible copies of the | typically is a time delay until all publicly visible copies of the | |||
zone are updated. If the primary sends a notification at the exact | zone are updated. If the primary sends a notification at the exact | |||
time of publication, there is a potential for CDS/CDNSKEY/CSYNC | time of publication, there is a potential for CDS/CDNSKEY/CSYNC | |||
processing to be attempted before the corresponding records are | processing to be attempted before the corresponding records are | |||
served. As a result, a desired update may not be detected (or appear | served. As a result, a desired update may not be detected (or appear | |||
inconsistent), preventing it from being applied. | inconsistent), preventing it from being applied. | |||
It is therefore RECOMMENDED that the child delays sending | Therefore, it is RECOMMENDED that the child delay sending | |||
notifications to the recipient until a consistent public view of the | notifications to the recipient until a consistent public view of the | |||
pertinent records is ensured. | pertinent records is ensured. | |||
4.2.1. Timeouts and Error Handling | 4.2.1. Timeouts and Error Handling | |||
NOTIFY messages are expected to elicit a response from the recipient | NOTIFY messages are expected to elicit a response from the recipient | |||
([RFC1996] Section 4.7). If no response is received, senders SHOULD | ([RFC1996], Section 4.7). If no response is received, senders SHOULD | |||
employ the same logic as for SOA notifications ([RFC1996] Sections | employ the same logic as for SOA notifications ([RFC1996], Sections | |||
3.5 and 3.6). | 3.5 and 3.6). | |||
The recipient's attempt to act upon the delegation update request may | The recipient's attempt to act upon the delegation update request may | |||
fail for a variety of reasons (e.g., due to violation of the | fail for a variety of reasons (e.g., due to violation of the | |||
continuity requirement set forth in [RFC7344] Section 4.1). Such | continuity requirement set forth in [RFC7344], Section 4.1). Such | |||
failures may occur asynchronously, even after the NOTIFY response has | failures may occur asynchronously, even after the NOTIFY response has | |||
been sent. | been sent. | |||
In order to learn about such failures, senders MAY include an | In order to learn about such failures, senders MAY include an EDNS0 | |||
[RFC9567] EDNS0 Report-Channel option in the NOTIFY message to | Report-Channel option [RFC9567] in the NOTIFY message to request that | |||
request the receiving side to report any errors by making a report | the receiving side report any errors by making a report query with an | |||
query with an appropriate extended DNS error code as described in | appropriate extended DNS error code as described in [RFC8914]. (The | |||
[RFC8914]. (The prohibition of this option in queries ([RFC9567], | prohibition of this option in queries ([RFC9567], Section 6.1) only | |||
Section 6.1) only applies to resolver queries and thus does not cover | applies to resolver queries and thus does not cover NOTIFY messages.) | |||
NOTIFY messages.) | ||||
When including this EDNS0 option, its agent domain MUST be | When including this EDNS0 option, its agent domain MUST be | |||
subordinate or equal to one of the NS hostnames, as listed in the | subordinate or equal to one of the NS hostnames, as listed in the | |||
child's delegation in the parent zone. This is to prevent malicious | child's delegation in the parent zone. This is to prevent malicious | |||
senders from causing the NOTIFY recipient to send unsolicited report | senders from causing the NOTIFY recipient to send unsolicited report | |||
queries to unrelated third parties. | queries to unrelated third parties. | |||
4.2.2. Roles | 4.2.2. Roles | |||
While the CDS/CDNSKEY/CSYNC processing following the receipt of a | While the CDS/CDNSKEY/CSYNC processing that follows the receipt of a | |||
NOTIFY will often be performed by the registry, the protocol | NOTIFY will often be performed by the registry, the protocol | |||
anticipates that in some contexts (especially for ICANN gTLDs), | anticipates that in some contexts (especially for ICANN gTLDs) | |||
registrars may take on the task. In such cases, the current | registrars may take on the task. In such cases, the current | |||
registrar notification endpoint may be published, enabling | registrar notification endpoint may be published, enabling | |||
notifications to be directed to the appropriate target. The | notifications to be directed to the appropriate target. The | |||
mechanics of how this is arranged between registry and registrar are | mechanics of how this is arranged between registry and registrar are | |||
out of scope for this document; the protocol only offers the | out of scope for this document; the protocol only offers the | |||
possibility to arrange things such that from the child perspective, | possibility to arrange things such that from the child perspective, | |||
it is inconsequential how the parent-side parties are organized: | how the parent-side parties are organized is inconsequential: | |||
notifications are simply sent to the published address. | Notifications are simply sent to the published address. | |||
Because of the security model where a notification by itself never | 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 | causes a change (it can only speed up the time until the next check | |||
for the same thing), the sender's identity is not crucial. This | for the same thing), the sender's identity is not crucial. This | |||
opens up the possibility of having an arbitrary party (e.g., a side- | opens up the possibility of having an arbitrary party (e.g., a side- | |||
car service) send the notifications, enabling this functionality even | car service) send the notifications, enabling this functionality even | |||
before the emergence of native support in nameserver software. | before the emergence of native support in nameserver software. | |||
4.3. Processing of NOTIFY Messages for Delegation Maintenance | 4.3. Processing of NOTIFY Messages for Delegation Maintenance | |||
skipping to change at page 10, line 39 ¶ | skipping to change at line 445 ¶ | |||
processing. | processing. | |||
NOTIFY messages carrying notification payloads (records) for more | NOTIFY messages carrying notification payloads (records) for more | |||
than one child zone MUST be discarded, as sending them is an error. | than one child zone MUST be discarded, as sending them is an error. | |||
Otherwise, upon receipt of a (potentially forwarded) NOTIFY message | Otherwise, upon receipt of a (potentially forwarded) NOTIFY message | |||
for a particular child zone at the published notification endpoint, | for a particular child zone at the published notification endpoint, | |||
the receiving side (parent registry or registrar) has two options: | the receiving side (parent registry or registrar) has two options: | |||
1. Acknowledge receipt by sending a NOTIFY response as described in | 1. Acknowledge receipt by sending a NOTIFY response as described in | |||
[RFC1996] Section 4.7, and schedule an immediate check of the | [RFC1996], Section 4.7, and schedule an immediate check of the | |||
CDS/CDNSKEY/CSYNC RRsets published by that particular child zone | CDS/CDNSKEY/CSYNC RRsets published by that particular child zone | |||
(as appropriate for the type of NOTIFY received). | (as appropriate for the type of NOTIFY received). | |||
If the NOTIFY message contains an [RFC9567] EDNS0 Report-Channel | If the NOTIFY message contains an EDNS0 Report-Channel option | |||
option with an agent domain subordinate or equal to one of the NS | [RFC9567] with an agent domain subordinate or equal to one of the | |||
hostnames listed in the delegation, the processing party SHOULD | NS hostnames listed in the delegation, the processing party | |||
report any errors occurring during CDS/CDNSKEY/CSYNC processing | SHOULD report any errors occurring during CDS/CDNSKEY/CSYNC | |||
by sending a report query with an appropriate extended DNS error | processing by sending a report query with an appropriate extended | |||
code as described in [RFC8914]. Reporting may be done | DNS error code as described in [RFC8914]. Reporting may be done | |||
asynchronously (outside of the NOTIFY transaction). | asynchronously (outside of the NOTIFY transaction). | |||
When using periodic scanning, notifications preempt the scanning | When using periodic scanning, notifications preempt the scanning | |||
timer. If the NOTIFY-induced check finds that the CDS/CDNSKEY/ | timer. If the NOTIFY-induced check finds that the CDS/CDNSKEY/ | |||
CSYNC RRset is indeed new or has changed, the corresponding | CSYNC RRset is indeed new or has changed, the corresponding | |||
child's timer may be reset and the scanning frequency reduced | child's timer may be reset and the scanning frequency reduced | |||
(e.g., to once a week). If a CDS/CDNSKEY/CSYNC change is later | (e.g., to once a week). If a CDS/CDNSKEY/CSYNC change is later | |||
detected through scanning (without having received a | detected through scanning (without having received a | |||
notification), NOTIFY-related state SHOULD be cleared, reverting | notification), the NOTIFY-related state SHOULD be cleared, | |||
to the default scanning schedule for this child. | reverting to the default scanning schedule for this child. | |||
When introducing CDS/CDNSKEY/CSYNC scanning support at the same | When introducing CDS/CDNSKEY/CSYNC scanning support at the same | |||
time as NOTIFY support, backwards compatibility considerations | time as NOTIFY support, backwards compatibility considerations | |||
regarding the scanning interval do not apply; a low-frequency | regarding the scanning interval do not apply; thus, a low- | |||
scanning schedule MAY thus be used by default in such cases. | frequency scanning schedule MAY be used by default in such cases. | |||
2. Do not act upon the notification. To prevent retries, recipients | 2. Do not act upon the notification. To prevent retries, recipients | |||
SHOULD acknowledge the notification by sending a NOTIFY response | SHOULD acknowledge the notification by sending a NOTIFY response | |||
even when otherwise ignoring the request, combined with a report | even when otherwise ignoring the request, combined with a report | |||
query if feasible (see above). One reason to do this may be a | query if feasible (see above). One reason to do this may be a | |||
rate limit (see Section 5), in which case "Blocked" (15) may be a | rate limit (see Section 5), in which case Blocked (15) may be a | |||
suitable extended DNS error code. | suitable extended DNS error code. | |||
Implementing the first option will significantly decrease the | Implementing the first option will significantly decrease the | |||
convergence time (between publication of a new CDS/CDNSKEY/CSYNC | convergence time (between publication of a new CDS/CDNSKEY/CSYNC | |||
record in the child and publication of the resulting DS), thereby | record in the child and publication of the resulting DS), thereby | |||
providing improved service for the child. | providing improved service for the child. | |||
If, in addition to scheduling an immediate check for the child zone | If, in addition to scheduling an immediate check for the child zone | |||
of the notification, the scanning schedule is also modified to be | of the notification, the scanning schedule is also modified to be | |||
less frequent, the cost of providing the scanning service will be | less frequent, the cost of providing the scanning service will be | |||
reduced. | reduced. | |||
5. Security Considerations | 5. Security Considerations | |||
If an action is triggered by the receipt of a DNS NOTIFY, its | If an action is triggered by the receipt of a DNS NOTIFY, its | |||
execution relies on the same security model which the receiving party | execution relies on the same security model that the receiving party | |||
would apply if the action had been triggered by something else. This | would apply if the action were triggered by something else. This is | |||
is because the notification affects the action's timing alone. For | because the notification affects the action's timing alone. For | |||
example, DS bootstrapping is expected to be performed the same way | example, DS bootstrapping is expected to be performed the same way, | |||
independently of the type of trigger; this includes all security and | independently of the type of trigger; this includes all security and | |||
authentication requirements (e.g., [RFC9615]) which the parent | authentication requirements (e.g., [RFC9615]) that the parent | |||
registry/registrar has chosen to apply. | registry/registrar has chosen to apply. | |||
The original NOTIFY specification sidesteps most security issues by | The original NOTIFY specification sidesteps most security issues by | |||
not relying on the information in the NOTIFY message in any way, and | not relying on the information in the NOTIFY message in any way and | |||
instead only using it to "enter the state it would if the zone's | instead only using it to "enter the state it would if the zone's | |||
refresh timer had expired" (Section 4.7 of [RFC1996]). | refresh timer had expired" (Section 4.7 of [RFC1996]). | |||
This security model is reused for generalized NOTIFY messages. It | This security model is reused for generalized NOTIFY messages. | |||
therefore seems impossible to affect the behaviour of the recipient | Therefore, it seems impossible to affect the behaviour of the | |||
of the NOTIFY other than by hastening the timing for when different | recipient of the NOTIFY other than by hastening the timing for when | |||
checks are initiated. As a consequence, while notifications | different checks are initiated. As a consequence, while | |||
themselves can be secured via access control mechanisms, this is not | notifications themselves can be secured via access control | |||
a requirement. | mechanisms, this is not a requirement. | |||
The receipt of a notification message will, in general, cause the | In general, the receipt of a notification message will cause the | |||
receiving party to perform one or more outbound queries for the | receiving party to perform one or more outbound queries for the | |||
records of interest (for example, NOTIFY(CDS) will cause CDS/CDNSKEY | records of interest (for example, NOTIFY(CDS) will cause CDS/CDNSKEY | |||
queries). When done using standard DNS, the size of these queries is | queries). When done using standard DNS, the size of these queries is | |||
comparable to that of the NOTIFY messages themselves, rendering any | comparable to that of the NOTIFY messages themselves, rendering any | |||
amplification attempts futile. The number of queries triggered per | amplification attempts futile. The number of queries triggered per | |||
notification is also limited by the requirement that a NOTIFY message | notification is also limited by the requirement that a NOTIFY message | |||
can refer to one child only. | can refer to one child only. | |||
However, when the outgoing query occurs via encrypted transport, some | However, when the outgoing query occurs via encrypted transport, some | |||
amplification is possible, both with respect to bandwidth and | amplification is possible, both with respect to bandwidth and | |||
computational burden. In this case, the usual principle of bounding | computational burden. In this case, the usual principle of bounding | |||
the work, even under unreasonable events, applies. | the work applies, even under unreasonable events. | |||
Receivers therefore MUST implement rate limiting for notification | Therefore, receivers MUST implement rate limiting for notification | |||
processing. It is RECOMMENDED to configure rate limiting | processing. It is RECOMMENDED to configure rate limiting | |||
independently for both the notification's source IP address and the | independently for both the notification's source IP address and the | |||
name of the zone that is conveyed in the NOTIFY message. Rate | name of the zone that is conveyed in the NOTIFY message. Rate | |||
limiting also mitigates processing load from garbage notifications. | limiting also mitigates the processing load from garbage | |||
notifications. | ||||
Alternative solutions (such as signing notifications and validating | Alternative solutions (such as signing notifications and validating | |||
their signatures) appear significantly more expensive without | their signatures) appear significantly more expensive without | |||
tangible benefit. | tangible benefit. | |||
In order to facilitate schemes that are authenticated outside of | In order to facilitate schemes that are authenticated outside of | |||
DNSSEC (such as via SIG(0)), zones containing DSYNC records are not | DNSSEC (such as via SIG(0)), zones containing DSYNC records are not | |||
required to be signed. Spoofed DSYNC responses would prevent | required to be signed. Spoofed DSYNC responses would prevent | |||
notifications from reaching their legitimate target, and a different | notifications from reaching their legitimate target, and a different | |||
party may receive unsolicited notifications; both effects, however, | party may receive unsolicited notifications; however, both effects | |||
can also be achieved in the presence of DNSSEC. The illegitimate | can also be achieved in the presence of DNSSEC. The illegitimate | |||
target is also enabled to learn notification contents in real-time, | target is also enabled to learn notification contents in real time, | |||
which may be a privacy concern for the sender. If so, the sender may | which may be a privacy concern for the sender. If so, the sender may | |||
choose to ignore unsigned DSYNC records. | choose to ignore unsigned DSYNC records. | |||
6. IANA Considerations | 6. IANA Considerations | |||
*Note to the RFC Editor*: In this section, please replace occurrences | ||||
of "(this document)" with a proper reference. | ||||
6.1. DSYNC RR Type | 6.1. DSYNC RR Type | |||
IANA is requested to update the "Resource Record (RR) TYPEs" registry | IANA has registered DSYNC in the "Resource Record (RR) TYPEs" | |||
under the "Domain Name System (DNS) Parameters" registry group as | registry under the "Domain Name System (DNS) Parameters" registry | |||
follows: | group as follows: | |||
Type DSYNC | ||||
Value 66 | ||||
Meaning Endpoint discovery for delegation synchronization | ||||
Reference (this document) | Type: DSYNC | |||
Value: 66 | ||||
Meaning: Endpoint discovery for delegation synchronization | ||||
Reference: RFC 9859 | ||||
6.2. DSYNC Scheme Registration | 6.2. DSYNC Scheme Registration | |||
IANA is requested to create and maintain the following new registry | IANA has created the following new registry in the "Domain Name | |||
in the "Domain Name System (DNS) Parameters" registry group: | System (DNS) Parameters" registry group: | |||
Name DSYNC: Location of Synchronization Endpoints | ||||
Assignment Policy Expert Review | ||||
Reference (this document) | Name: DSYNC: Location of Synchronization Endpoints | |||
Registration Procedure: Expert Review | ||||
Reference: RFC 9859 | ||||
The initial contents for the registry are as follows: | The initial contents for the registry are as follows: | |||
+========+=========+==========+=====================+===========+ | +========+=========+==========+=======================+===========+ | |||
| RRtype | Scheme | Mnemonic | Purpose | Reference | | | RRtype | Scheme | Mnemonic | Purpose | Reference | | |||
+========+=========+==========+=====================+===========+ | +========+=========+==========+=======================+===========+ | |||
| | 0 | | Null scheme (no-op) | (this | | | | 0 | | Null scheme (no-op) | RFC 9859 | | |||
| | | | | document) | | +--------+---------+----------+-----------------------+-----------+ | |||
+--------+---------+----------+---------------------+-----------+ | | CDS | 1 | NOTIFY | Delegation management | RFC 9859 | | |||
| CDS | 1 | NOTIFY | Delegation | (this | | +--------+---------+----------+-----------------------+-----------+ | |||
| | | | management | document) | | | CSYNC | 1 | NOTIFY | Delegation management | RFC 9859 | | |||
+--------+---------+----------+---------------------+-----------+ | +--------+---------+----------+-----------------------+-----------+ | |||
| CSYNC | 1 | NOTIFY | Delegation | (this | | | | 2-127 | | Unassigned | | | |||
| | | | management | document) | | +--------+---------+----------+-----------------------+-----------+ | |||
+--------+---------+----------+---------------------+-----------+ | | | 128-255 | | Reserved for Private | RFC 9859 | | |||
| | 2-127 | | Unassigned | | | | | | | Use | | | |||
+--------+---------+----------+---------------------+-----------+ | +--------+---------+----------+-----------------------+-----------+ | |||
| | 128-255 | | Reserved (private | (this | | ||||
| | | | use) | document) | | ||||
+--------+---------+----------+---------------------+-----------+ | ||||
Table 1 | Table 1 | |||
Requests to register additional entries MUST include the following | Requests to register additional entries MUST include the following | |||
fields: | fields: | |||
RRtype An RRtype that is defined for use | RRtype: An RRtype that is defined for use | |||
Scheme: The mode used for contacting the desired notification | ||||
Scheme The mode used for contacting the desired notification address | address | |||
Mnemonic: The scheme's shorthand string used in presentation format | ||||
Mnemonic The scheme's shorthand string used in presentation format | Purpose: Use case description | |||
Reference: Location of specification or registration source | ||||
Purpose Use case description | ||||
Reference Location of specification or registration source | ||||
Registration requests are to be recorded by IANA after Expert Review | Registration requests are to be recorded by IANA after Expert Review | |||
[RFC8126]. Expert reviewers should take into consideration the | [RFC8126]. Expert Reviewers should take the points below into | |||
following points, but are being designated as experts for a reason, | consideration; however, they are experts and should be given | |||
so they should be given substantial latitude: | substantial latitude: | |||
* Point squatting should be discouraged. Reviewers are encouraged | * Point squatting should be discouraged. Reviewers are encouraged | |||
to get sufficient information for registration requests to ensure | to get sufficient information for registration requests to ensure | |||
that the usage is not going to duplicate one that is already | that the usage is not going to duplicate one that is already | |||
registered and that the point is likely to be used in deployments. | registered and that the point is likely to be used in deployments. | |||
The code points tagged as "Private Use" are intended for testing | The code points tagged as "Private Use" are intended for testing | |||
purposes and closed environments. Code points in other ranges | purposes and closed environments. Code points in other ranges | |||
should not be assigned for testing. | should not be assigned for testing. | |||
* A specification of a scheme is desirable, but early assignment | * A specification of a scheme is desirable, but early assignment | |||
before a specification is available is also possible. When | before a specification is available is also possible. When | |||
specifications are not provided, the description provided needs to | specifications are not provided, the description provided needs to | |||
have sufficient information to identify what the point is being | have sufficient information to identify what the point is being | |||
used for. | used for. | |||
* Experts should take into account that field values are fit for | * Experts should take into account that field values are fit for | |||
purpose. For example, the mnemonic should be indicative and and | purpose. For example, the mnemonic should be indicative and have | |||
have a plausible connection to the scheme's notification | a plausible connection to the scheme's notification mechanism. | |||
mechanism. | ||||
6.3. _dsync Underscore Name | 6.3. _dsync Underscore Name | |||
Per [RFC8552], IANA is requested to add the following entries to the | Per [RFC8552], IANA has registered the following entries to the | |||
"Underscored and Globally Scoped DNS Node Names" registry: | "Underscored and Globally Scoped DNS Node Names" registry within the | |||
"Domain Name System (DNS) Parameters" registry group: | ||||
+---------+------------+-----------------+ | ||||
| RR Type | _NODE NAME | Reference | | ||||
+---------+------------+-----------------+ | ||||
| DSYNC | _dsync | (this document) | | ||||
+---------+------------+-----------------+ | ||||
7. Implementation Status | ||||
*Note to the RFC Editor*: please remove this entire section before | ||||
publication. | ||||
Johan Stenstam's experimental nameserver implements this draft | ||||
(https://github.com/johanix/tdns). | ||||
7.1. Child DNS Operator-side | ||||
* IronDNS implementation under way | ||||
* deSEC implementation under way (Q1/2025) | ||||
7.2. Parent-side | ||||
* SWITCH (.CH/.LI) implementation is under way. | ||||
* .SE/.NU will implement this once it is an RFC. | ||||
8. Acknowledgements | +=========+============+===========+ | |||
| RR Type | _NODE NAME | Reference | | ||||
+=========+============+===========+ | ||||
| DSYNC | _dsync | RFC 9859 | | ||||
+---------+------------+-----------+ | ||||
In order of first contribution or review: Joe Abley, Mark Andrews, | Table 2 | |||
Christian Elmerot, Ólafur Guðmundsson, Paul Wouters, Brian Dickson, | ||||
Warren Kumari, Patrick Mevzek, Tim Wicinski, Q Misell, Stefan Ubbink, | ||||
Matthijs Mekking, Kevin P. Fleming, Nicolai Leymann, Giuseppe | ||||
Fioccola, Peter Yee, Tony Li, Paul Wouters, Roman Danyliw, Peter van | ||||
Dijk, John Scudder, Éric Vyncke. | ||||
9. References | 7. References | |||
9.1. Normative References | 7.1. Normative References | |||
[RFC1035] Mockapetris, P., "Domain names - implementation and | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | |||
November 1987, <https://www.rfc-editor.org/rfc/rfc1035>. | November 1987, <https://www.rfc-editor.org/info/rfc1035>. | |||
[RFC1996] Vixie, P., "A Mechanism for Prompt Notification of Zone | [RFC1996] Vixie, P., "A Mechanism for Prompt Notification of Zone | |||
Changes (DNS NOTIFY)", RFC 1996, DOI 10.17487/RFC1996, | Changes (DNS NOTIFY)", RFC 1996, DOI 10.17487/RFC1996, | |||
August 1996, <https://www.rfc-editor.org/rfc/rfc1996>. | August 1996, <https://www.rfc-editor.org/info/rfc1996>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2136] Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound, | [RFC2136] Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound, | |||
"Dynamic Updates in the Domain Name System (DNS UPDATE)", | "Dynamic Updates in the Domain Name System (DNS UPDATE)", | |||
RFC 2136, DOI 10.17487/RFC2136, April 1997, | RFC 2136, DOI 10.17487/RFC2136, April 1997, | |||
<https://www.rfc-editor.org/rfc/rfc2136>. | <https://www.rfc-editor.org/info/rfc2136>. | |||
[RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating | [RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating | |||
DNSSEC Delegation Trust Maintenance", RFC 7344, | DNSSEC Delegation Trust Maintenance", RFC 7344, | |||
DOI 10.17487/RFC7344, September 2014, | DOI 10.17487/RFC7344, September 2014, | |||
<https://www.rfc-editor.org/rfc/rfc7344>. | <https://www.rfc-editor.org/info/rfc7344>. | |||
[RFC7477] Hardaker, W., "Child-to-Parent Synchronization in DNS", | [RFC7477] Hardaker, W., "Child-to-Parent Synchronization in DNS", | |||
RFC 7477, DOI 10.17487/RFC7477, March 2015, | RFC 7477, DOI 10.17487/RFC7477, March 2015, | |||
<https://www.rfc-editor.org/rfc/rfc7477>. | <https://www.rfc-editor.org/info/rfc7477>. | |||
[RFC8078] Gudmundsson, O. and P. Wouters, "Managing DS Records from | [RFC8078] Gudmundsson, O. and P. Wouters, "Managing DS Records from | |||
the Parent via CDS/CDNSKEY", RFC 8078, | the Parent via CDS/CDNSKEY", RFC 8078, | |||
DOI 10.17487/RFC8078, March 2017, | DOI 10.17487/RFC8078, March 2017, | |||
<https://www.rfc-editor.org/rfc/rfc8078>. | <https://www.rfc-editor.org/info/rfc8078>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/rfc/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8552] Crocker, D., "Scoped Interpretation of DNS Resource | [RFC8552] Crocker, D., "Scoped Interpretation of DNS Resource | |||
Records through "Underscored" Naming of Attribute Leaves", | Records through "Underscored" Naming of Attribute Leaves", | |||
BCP 222, RFC 8552, DOI 10.17487/RFC8552, March 2019, | BCP 222, RFC 8552, DOI 10.17487/RFC8552, March 2019, | |||
<https://www.rfc-editor.org/rfc/rfc8552>. | <https://www.rfc-editor.org/info/rfc8552>. | |||
[RFC8914] Kumari, W., Hunt, E., Arends, R., Hardaker, W., and D. | [RFC8914] Kumari, W., Hunt, E., Arends, R., Hardaker, W., and D. | |||
Lawrence, "Extended DNS Errors", RFC 8914, | Lawrence, "Extended DNS Errors", RFC 8914, | |||
DOI 10.17487/RFC8914, October 2020, | DOI 10.17487/RFC8914, October 2020, | |||
<https://www.rfc-editor.org/rfc/rfc8914>. | <https://www.rfc-editor.org/info/rfc8914>. | |||
[RFC9364] Hoffman, P., "DNS Security Extensions (DNSSEC)", BCP 237, | [RFC9364] Hoffman, P., "DNS Security Extensions (DNSSEC)", BCP 237, | |||
RFC 9364, DOI 10.17487/RFC9364, February 2023, | RFC 9364, DOI 10.17487/RFC9364, February 2023, | |||
<https://www.rfc-editor.org/rfc/rfc9364>. | <https://www.rfc-editor.org/info/rfc9364>. | |||
[RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219, | [RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219, | |||
RFC 9499, DOI 10.17487/RFC9499, March 2024, | RFC 9499, DOI 10.17487/RFC9499, March 2024, | |||
<https://www.rfc-editor.org/rfc/rfc9499>. | <https://www.rfc-editor.org/info/rfc9499>. | |||
[RFC9567] Arends, R. and M. Larson, "DNS Error Reporting", RFC 9567, | [RFC9567] Arends, R. and M. Larson, "DNS Error Reporting", RFC 9567, | |||
DOI 10.17487/RFC9567, April 2024, | DOI 10.17487/RFC9567, April 2024, | |||
<https://www.rfc-editor.org/rfc/rfc9567>. | <https://www.rfc-editor.org/info/rfc9567>. | |||
[RFC9615] Thomassen, P. and N. Wisiol, "Automatic DNSSEC | [RFC9615] Thomassen, P. and N. Wisiol, "Automatic DNSSEC | |||
Bootstrapping Using Authenticated Signals from the Zone's | Bootstrapping Using Authenticated Signals from the Zone's | |||
Operator", RFC 9615, DOI 10.17487/RFC9615, July 2024, | Operator", RFC 9615, DOI 10.17487/RFC9615, July 2024, | |||
<https://www.rfc-editor.org/rfc/rfc9615>. | <https://www.rfc-editor.org/info/rfc9615>. | |||
9.2. Informative References | 7.2. Informative References | |||
[I-D.ietf-dnsop-dnssec-automation] | [DNSSEC-AUTO] | |||
Wisser, U., Huque, S., and J. Stenstam, "DNSSEC | Wisser, U., Huque, S., and J. Stenstam, "DNSSEC | |||
automation", Work in Progress, Internet-Draft, draft-ietf- | automation", Work in Progress, Internet-Draft, draft-ietf- | |||
dnsop-dnssec-automation-03, 19 October 2024, | dnsop-dnssec-automation-03, 19 October 2024, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-dnsop- | <https://datatracker.ietf.org/doc/html/draft-ietf-dnsop- | |||
dnssec-automation-03>. | dnssec-automation-03>. | |||
[RFC6781] Kolkman, O., Mekking, W., and R. Gieben, "DNSSEC | [RFC6781] Kolkman, O., Mekking, W., and R. Gieben, "DNSSEC | |||
Operational Practices, Version 2", RFC 6781, | Operational Practices, Version 2", RFC 6781, | |||
DOI 10.17487/RFC6781, December 2012, | DOI 10.17487/RFC6781, December 2012, | |||
<https://www.rfc-editor.org/rfc/rfc6781>. | <https://www.rfc-editor.org/info/rfc6781>. | |||
[RFC7583] Morris, S., Ihren, J., Dickinson, J., and W. Mekking, | [RFC7583] Morris, S., Ihren, J., Dickinson, J., and W. Mekking, | |||
"DNSSEC Key Rollover Timing Considerations", RFC 7583, | "DNSSEC Key Rollover Timing Considerations", RFC 7583, | |||
DOI 10.17487/RFC7583, October 2015, | DOI 10.17487/RFC7583, October 2015, | |||
<https://www.rfc-editor.org/rfc/rfc7583>. | <https://www.rfc-editor.org/info/rfc7583>. | |||
[RFC8901] Huque, S., Aras, P., Dickinson, J., Vcelak, J., and D. | [RFC8901] Huque, S., Aras, P., Dickinson, J., Vcelak, J., and D. | |||
Blacka, "Multi-Signer DNSSEC Models", RFC 8901, | Blacka, "Multi-Signer DNSSEC Models", RFC 8901, | |||
DOI 10.17487/RFC8901, September 2020, | DOI 10.17487/RFC8901, September 2020, | |||
<https://www.rfc-editor.org/rfc/rfc8901>. | <https://www.rfc-editor.org/info/rfc8901>. | |||
Appendix A. Efficiency and Convergence Issues in DNS Scanning | Appendix A. Efficiency and Convergence Issues in DNS Scanning | |||
A.1. Original NOTIFY for Zone Transfer Nudging | A.1. Original NOTIFY for Zone Transfer Nudging | |||
[RFC1996] introduced the concept of a DNS Notify message which was | [RFC1996] introduced the concept of a DNS Notify message, which was | |||
used to improve the convergence time for secondary servers when a DNS | 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 | zone had been updated in the primary. The basic idea was to augment | |||
the traditional "pull" mechanism (a periodic SOA query) with a "push" | the traditional "pull" mechanism (a periodic SOA query) with a "push" | |||
mechanism (a Notify) for a common case that was otherwise very | mechanism (a Notify) for a common case that was otherwise very | |||
inefficient (due to either slow convergence or wasteful overly | inefficient (due to either slow convergence or wasteful and overly | |||
frequent scanning of the primary for changes). | frequent scanning of the primary for changes). | |||
While it is possible to indicate how frequently checks should occur | While it is possible to indicate how frequently checks should occur | |||
(via the SOA Refresh parameter), these checks did not allow catching | (via the SOA Refresh parameter), these checks did not allow catching | |||
zone changes that fall between checkpoints. [RFC1996] addressed the | zone changes that fall between checkpoints. [RFC1996] addressed the | |||
optimization of the time-and-cost trade-off between a secondary | optimization of the time-and-cost trade-off between a secondary | |||
checking frequently for new versions of a zone, and infrequent | frequent checking for new versions of a zone and infrequent checking, | |||
checking, by replacing scheduled scanning with the more efficient | by replacing scheduled scanning with the more efficient NOTIFY | |||
NOTIFY mechanism. | mechanism. | |||
A.2. Similar Issues for DS Maintenance and Beyond | A.2. Similar Issues for DS Maintenance and Beyond | |||
Today, we have similar issues with slow updates of DNS data in spite | 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 | of the data having been published. The two most obvious cases are | |||
CDS and CSYNC scanners deployed in a growing number of TLD | CDS and CSYNC scanners deployed in a growing number of TLD | |||
registries. Because of the large number of child delegations, | registries. Because of the large number of child delegations, | |||
scanning for CDS and CSYNC records is rather slow (as in infrequent). | scanning for CDS and CSYNC records is rather slow (as in, | |||
infrequent). | ||||
It is only a very small number of the delegations that will have | There is only a very small number of the delegations that will have | |||
updated CDS or CDNSKEY record in between two scanning runs. However, | updated CDS or CDNSKEY record in between two scanning runs. However, | |||
frequent scanning for CDS and CDNSKEY records is costly, and | frequent scanning for CDS and CDNSKEY records is costly, and | |||
infrequent scanning causes slower convergence (i.e., delay until the | infrequent scanning causes slower convergence (i.e., delay until the | |||
DS RRset is updated). | DS RRset is updated). | |||
Unlike in the original case, where the primary is able to suggest the | Unlike in the original case, where the primary is able to suggest the | |||
scanning interval via the SOA Refresh parameter, an equivalent | scanning interval via the SOA Refresh parameter, an equivalent | |||
mechanism does not exist for DS-related scanning. | mechanism does not exist for DS-related scanning. | |||
All of the above also applies to automated NS and glue record | All of the above also applies to automated NS and glue record | |||
maintenance via CSYNC scanning [RFC7477]. Again, given that CSYNC | maintenance via CSYNC scanning [RFC7477]. Again, given that CSYNC | |||
records change only rarely, frequent scanning of a large number of | records change only rarely, frequent scanning of a large number of | |||
delegations seems disproportionately costly, while infrequent | delegations seems disproportionately costly, while infrequent | |||
scanning causes slower convergence (delay until the delegation is | scanning causes slower convergence (delay until the delegation is | |||
updated). | updated). | |||
While use of the NOTIFY mechanism for coordinating the key exchange | While use of the NOTIFY mechanism for coordinating the key exchange | |||
in multi-signer setups [I-D.ietf-dnsop-dnssec-automation] is | in multi-signer setups [DNSSEC-AUTO] is conceivable, the detailed | |||
conceivable, the detailed specification is left for future work. | specification is left for future work. | |||
Appendix B. Change History (to be removed before publication) | ||||
* draft-ietf-dnsop-generalized-notify-09 | ||||
Leftover editorial changes | ||||
* draft-ietf-dnsop-generalized-notify-08 | ||||
IESG review editorial changes | ||||
Added guidelines for expert review (IESG feedback) | ||||
Nits from Dnsdir telechat review | ||||
* draft-ietf-dnsop-generalized-notify-07 | ||||
IESG review changes (notable: scheme now has mnemonic; else | ||||
editorial) | ||||
Nits from Opsdir telechat review | ||||
* draft-ietf-dnsop-generalized-notify-06 | ||||
Nits from Genart review | ||||
Nits from Opsdir review | ||||
Nits from Dnsdir review | ||||
* draft-ietf-dnsop-generalized-notify-05 | ||||
Editorial changes | ||||
* draft-ietf-dnsop-generalized-notify-04 | ||||
Add section on Implementation Status | ||||
Use assigned DSYNC RRtype value | ||||
Define DSYNC presentation format | ||||
Make all needed IANA requests | ||||
Editorial changes | ||||
* draft-ietf-dnsop-generalized-notify-03 | ||||
Include DNSSEC bootstrapping use case | ||||
Remove sections with approaches not pursued | ||||
Editorial changes | ||||
* draft-ietf-dnsop-generalized-notify-02 | ||||
Nits by Tim Wicinski | ||||
Dnsdir feedback | ||||
Specify timeout and error handling | ||||
Editorial nits | ||||
Reserve scheme value 0 | ||||
* draft-ietf-dnsop-generalized-notify-01 | ||||
Reserve scheme values 128-255 | ||||
Rename NOTIFY rrtype to DSYNC (to distinguish from NOTIFY message) | ||||
Describe endpoint discovery | ||||
Discussion on garbage notifications | ||||
More discussion on amplification risks | ||||
Clean-up, editorial changes | ||||
* draft-ietf-dnsop-generalized-notify-00 | ||||
Revision after adoption. | ||||
* draft-thomassen-dnsop-generalized-dns-notify-02 | ||||
Add rationale for staying in band | ||||
Add John as an author | ||||
* draft-thomassen-dnsop-generalized-dns-notify-01 | ||||
Mention Ry-to-Rr forwarding to accommodate RRR model | ||||
Add port number flexibility | ||||
Add scheme parameter | ||||
Drop SRV-based alternative in favour of new NOTIFY RR | ||||
Editorial improvements | ||||
* draft-thomassen-dnsop-generalized-dns-notify-00 | Acknowledgements | |||
Initial public draft. | In order of first contribution or review: Joe Abley, Mark Andrews, | |||
Christian Elmerot, Ólafur Guðmundsson, Paul Wouters, Brian Dickson, | ||||
Warren Kumari, Patrick Mevzek, Tim Wicinski, Q Misell, Stefan Ubbink, | ||||
Matthijs Mekking, Kevin P. Fleming, Nicolai Leymann, Giuseppe | ||||
Fioccola, Peter Yee, Tony Li, Paul Wouters, Roman Danyliw, Peter van | ||||
Dijk, John Scudder, and Éric Vyncke. | ||||
Authors' Addresses | Authors' Addresses | |||
Johan Stenstam | Johan Stenstam | |||
The Swedish Internet Foundation | The Swedish Internet Foundation | |||
Email: johan.stenstam@internetstiftelsen.se | Email: johan.stenstam@internetstiftelsen.se | |||
Peter Thomassen | Peter Thomassen | |||
deSEC, Secure Systems Engineering | deSEC, Secure Systems Engineering | |||
Email: peter@desec.io | Email: peter@desec.io | |||
John Levine | John Levine | |||
Standcore LLC | Standcore LLC | |||
Email: standards@standcore.com | Email: standards@standcore.com | |||
End of changes. 105 change blocks. | ||||
389 lines changed or deleted | 242 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |