| Internet-Draft | AXFR NOTIFY | August 2026 |
| Pels & Obser | Expires 11 February 2027 | [Page] |
This document defines a new AXFR message type for DNS NOTIFY messages, together with an accompanying subtype for the ZONEVERSION EDNS(0) option. The message instructs a secondary server to perform an AXFR zone transfer of a zone.¶
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 February 2027.¶
Copyright (c) 2026 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.¶
DNS NOTFY[RFC1996] describes a method to inform secondary name servers that a zone has changed.
Upon receipt of a NOTIFY(SOA) message, a secondary will query the primary server for the SOA of the zone, and perform an IXFR[RFC1995] or AXFR[RFC5936] zone transfer if the SOA SERIAL has been incremented since the last time the zone was fetched.¶
There are cases when it is desirable to force a secondary server to perform an AXFR zone transfer. Example scenarios are an incorrectly synchronized database on a secondary server due to a software bug, a signer implementation refreshing DNSSEC signatures or adding a ZONEMD RRset without incrementing the SOA SERIAL, or an operator incidentally wanting to propagate changes to a zone without updating the SOA record.¶
Most authoritative DNS server software supports performing a forced AXFR zone transfer.
However, this can only be initiated by the operator of the DNS server, and secondary servers for a zone may not be managed by the same operator as the primary server(s).
This document defines a new NOTIFY(AXFR) message type, used to initiate forced AXFR transfers by secondary servers from a primary server of a zone.
Additionally, a loop prevention mechanism is specified, using a new ZONETIMESTAMP subtype for the ZONEVERSION EDNS(0) option[RFC9660].¶
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.¶
The below sections describe the implementation of forced AXFR zone transfer support on primary and secondary servers.¶
Although the QTYPE used is AXFR, implementations SHOULD transfer the zone over whatever protocol they have been configured to use, which includes both AXFR over DNS/TCP and AXFR over TLS[RFC9103]. Note that IXFR transfers, which requires serial number alignment, MUST NOT be used.¶
When a primary server wants its secondary servers to perform an AXFR zone transfer, it sends a NOTIFY message with the following characteristics to each secondary server:¶
query ID: (new) op: NOTIFY (4) resp: NOERROR flags: AA qcount: 1 qname: (zone name) qclass: (zone class) qtype: T_AXFR¶
The server SHOULD locally store the current number of seconds since the Unix Epoch[IEEE_1003.1_2024] at the moment the NOTIFY was generated.
This value is from here on referred to as the ZONETIMESTAMP.¶
When a primary server receives an AXFR request with an empty ZONEVERSION option in the EDNS(0) OPT pseudo-RR of the query and a stored ZONETIMESTAMP is available, it MUST include this value in a ZONEVERSION option in the response (see Section 4).¶
When a secondary server receives a NOTIFY(AXFR) request from one of its locally designated primaries for the zone enclosing the given QNAME, with QTYPE=AXFR and QR=0, it SHOULD perform an AXFR zone transfer from one of its configured primary servers.
The AXFR query SHOULD contain an empty ZONEVERSION option in the EDNS(0) OPT pseudo-RR.¶
The secondary server will also send a NOTIFY response back to the NOTIFY request's source, with the following characteristics:¶
query ID: (same) op: NOTIFY (4) resp: NOERROR flags: QR AA qcount: 1 qname: (zone name) qclass: (zone class) qtype: T_AXFR¶
If the AXFR response from the primary server includes a ZONEVERSION option of type ZONETIMESTAMP, the following procedure MUST be followed.¶
If no locally stored ZONETIMESTAMP value is available or if the received ZONETIMESTAMP value is higher than the local value:¶
ZONETIMESTAMP value with the ZONETIMESTAMP value from the AXFR response¶
NOTIFY(AXFR) request to each of its configured secondaries¶
If the received ZONETIMESTAMP value is lower than or equal to the local value:¶
If no ZONETIMESTAMP is included in the AXFR response, the response is processed but no configured secondaries are notified.¶
The above procedure ensures that an entire chain of secondary servers is synchronized in concert, while preventing a loop of AXFR queries.
Secondary servers MAY optimize this procedure by sending a SOA query with an empty ZONEVERSION option to a primary server and comparing the returned ZONETIMESTAMP value with their locally stored value, before attempting a full AXFR.¶
This document defines a new ZONEVERSION option TYPE with the following characteristics.¶
This document registers the following entry in the "ZONEVERSION TYPE Values Registry", following the format defined in [RFC9660]:¶
| ZONEVERSION TYPE | Mnemonic | Reference |
|---|---|---|
| <TBD> | ZONETIMESTAMP | RFCYYYY |
A NOTIFY(AXFR) request with a forged IP/UDP source address can cause a secondary to send spurious AXFR requests to its primary servers, leading to a denial of service attack if the forged requests are sent very often.
To counter this, NOTIFY(AXFR) requests MUST be secured using TSIG[RFC8945].¶
If a primary server has many secondaries, requesting all of them to perform an AXFR simultaneously may cause the primary to become overloaded.
The sending out of NOTIFY(AXFR) requests to secondary servers SHOULD be splayed to reduce this thundering herd effect.¶
Secondary servers SHOULD rate-limit how often they will request an AXFR from their primaries.¶
The authors would like to thank the following people for contributing ideas and feedback to this document:¶