draft-ietf-dnsext-rfc1995bis-ixfr-00.txt   draft-ietf-dnsext-rfc1995bis-ixfr-01.txt 
DNSext Working Group A. Hoenes DNSext Working Group A. Hoenes
Internet-Draft TR-Sys Internet-Draft TR-Sys
Obsoletes: 1995 (if approved) O. Sury Obsoletes: 1995 (if approved) O. Sury
Intended status: Standards Track CZ.NIC Intended status: Standards Track CZ.NIC
Expires: September 28, 2012 S. Kerr Expires: October 25, 2012 S. Kerr
ISC ISC
March 27, 2012 April 23, 2012
DNS Incremental Zone Transfer Protocol (IXFR) DNS Incremental Zone Transfer Protocol (IXFR)
draft-ietf-dnsext-rfc1995bis-ixfr-00 draft-ietf-dnsext-rfc1995bis-ixfr-01
Abstract Abstract
The standard means within the Domain Name System protocol for The standard means within the Domain Name System protocol for
maintaining coherence among a zone's authoritative name servers maintaining coherence among a zone's authoritative name servers
consists of three mechanisms. Incremental Zone Transfer (IXFR) is consists of three mechanisms. Incremental Zone Transfer (IXFR) is
one of the mechanisms and originally was defined in RFC 1995. one of the mechanisms and originally was defined in RFC 1995.
This document aims to provide a more detailed and up-to-date This document aims to provide a more detailed and up-to-date
specification of the IXFR mechanism and to align it with the current specification of the IXFR mechanism and to align it with the current
specification of the primary zone transfer mechanism, AXFR, given in specification of the primary zone transfer mechanism, AXFR, given in
RFC 5936. Further, based on operational experience, this document RFC 5936. Further, based on operational experience, this document
juxtaposes to the original IXFR query a new query type, IXFR-ONLY, juxtaposes to the original IXFR query a new query type, IXFR-ONLY,
that will likely be preferred over IXFR in specific deployments. that will likely be preferred over IXFR in specific deployments.
This document obsoletes and replaces RFC 1995. This document obsoletes and replaces RFC 1995.
Discussion Discussion
This draft targets adoption by the DNSEXT working group. Comments Comments should be sent to the authors and/or the dnsext mailing
should be sent to the authors and/or the dnsext mailing list. list.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 28, 2012. This Internet-Draft will expire on October 25, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 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 Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 14 skipping to change at page 3, line 14
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Overview of DNS Zone Synchronization . . . . . . . . . . . 4 1.1. Overview of DNS Zone Synchronization . . . . . . . . . . . 4
1.2. Incremental Zone Transfer (IXFR) - Conclusions from 1.2. Incremental Zone Transfer (IXFR) - Conclusions from
Experience . . . . . . . . . . . . . . . . . . . . . . . . 4 Experience . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Requirements Language . . . . . . . . . . . . . . . . . . 5 1.3. Requirements Language . . . . . . . . . . . . . . . . . . 5
1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
1.5. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. Principles of IXFR Protocol Operation . . . . . . . . . . . . 6 2. Principles of IXFR Protocol Operation . . . . . . . . . . . . 7
3. IXFR Messages . . . . . . . . . . . . . . . . . . . . . . . . 10 3. IXFR Messages . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1. IXFR Query . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1. IXFR Query . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.1. Header Values . . . . . . . . . . . . . . . . . . . . 12 3.1.1. Header Values . . . . . . . . . . . . . . . . . . . . 12
3.1.2. Question Section . . . . . . . . . . . . . . . . . . . 12 3.1.2. Question Section . . . . . . . . . . . . . . . . . . . 12
3.1.3. Answer Section . . . . . . . . . . . . . . . . . . . . 12 3.1.3. Answer Section . . . . . . . . . . . . . . . . . . . . 12
3.1.4. Authority Section . . . . . . . . . . . . . . . . . . 12 3.1.4. Authority Section . . . . . . . . . . . . . . . . . . 12
3.1.5. Additional Section . . . . . . . . . . . . . . . . . . 13 3.1.5. Additional Section . . . . . . . . . . . . . . . . . . 13
3.2. IXFR Response . . . . . . . . . . . . . . . . . . . . . . 13 3.2. IXFR Response . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1. Header Values . . . . . . . . . . . . . . . . . . . . 14 3.2.1. Header Values . . . . . . . . . . . . . . . . . . . . 14
3.2.2. Question Section . . . . . . . . . . . . . . . . . . . 15 3.2.2. Question Section . . . . . . . . . . . . . . . . . . . 15
3.2.3. Answer Section . . . . . . . . . . . . . . . . . . . . 15 3.2.3. Answer Section . . . . . . . . . . . . . . . . . . . . 15
3.2.4. Authority Section . . . . . . . . . . . . . . . . . . 15 3.2.4. Authority Section . . . . . . . . . . . . . . . . . . 16
3.2.5. Additional Section . . . . . . . . . . . . . . . . . . 16 3.2.5. Additional Section . . . . . . . . . . . . . . . . . . 16
3.3. Connection Aborts . . . . . . . . . . . . . . . . . . . . 16 3.3. Connection Aborts . . . . . . . . . . . . . . . . . . . . 16
4. Response Contents . . . . . . . . . . . . . . . . . . . . . . 16 4. Response Contents . . . . . . . . . . . . . . . . . . . . . . 16
4.1. Incremental Responses . . . . . . . . . . . . . . . . . . 18 4.1. Incremental Responses . . . . . . . . . . . . . . . . . . 20
5. Transport . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5. Transport . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6. Server Behavior . . . . . . . . . . . . . . . . . . . . . . . 20 6. Server Behavior . . . . . . . . . . . . . . . . . . . . . . . 22
6.1. General . . . . . . . . . . . . . . . . . . . . . . . . . 20 6.1. General . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2. Purging Strategy . . . . . . . . . . . . . . . . . . . . . 21 6.2. Purging Strategy . . . . . . . . . . . . . . . . . . . . . 23
6.3. Optional Condensation of Zone Changes . . . . . . . . . . 21 6.3. Optional Condensation of Zone Changes . . . . . . . . . . 23
6.4. Authorization . . . . . . . . . . . . . . . . . . . . . . 22 6.4. Authorization . . . . . . . . . . . . . . . . . . . . . . 24
7. Client Behavior . . . . . . . . . . . . . . . . . . . . . . . 23 7. Client Behavior . . . . . . . . . . . . . . . . . . . . . . . 25
7.1. Zone Integrity . . . . . . . . . . . . . . . . . . . . . . 23 7.1. Zone Integrity . . . . . . . . . . . . . . . . . . . . . . 25
8. Backwards Compatibility . . . . . . . . . . . . . . . . . . . 24 8. Backwards Compatibility . . . . . . . . . . . . . . . . . . . 26
9. Security Considerations . . . . . . . . . . . . . . . . . . . 24 9. Security Considerations . . . . . . . . . . . . . . . . . . . 27
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 28
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29
12.1. Normative References . . . . . . . . . . . . . . . . . . . 26 12.1. Normative References . . . . . . . . . . . . . . . . . . . 29
12.2. Informative References . . . . . . . . . . . . . . . . . . 27 12.2. Informative References . . . . . . . . . . . . . . . . . . 29
Appendix A. Motivation for IXFR-ONLY . . . . . . . . . . . . . . 27 Appendix A. Motivation for IXFR-ONLY . . . . . . . . . . . . . . 30
Appendix B. Substantial Changes Since RFC 1995 . . . . . . . . . 28 Appendix B. Substantial Changes Since RFC 1995 . . . . . . . . . 31
Appendix C. Evaluation of List Discussion, Draft Changes Appendix C. Change Log of WG Draft . . . . . . . . . . . . . . . 32
since Individual Draft -02 . . . . . . . . . . . . . 29 C.1. Draft Version 00 -> 01 . . . . . . . . . . . . . . . . . . 32
1. Introduction 1. Introduction
1.1. Overview of DNS Zone Synchronization 1.1. Overview of DNS Zone Synchronization
The Domain Name System (DNS) standard facilities for maintaining The Domain Name System (DNS) standard facilities for maintaining
coherent servers for a zone consist of three elements. Authoritative coherent servers for a zone consist of three elements. Authoritative
Transfer (AXFR) originally was defined in STD 13: "Domain Names - Transfer (AXFR) originally was defined in STD 13: "Domain Names -
Concepts and Facilities" [RFC1034] (referred to in this document as Concepts and Facilities" [RFC1034] (referred to in this document as
RFC 1034) and "Domain Names - Implementation and Specification" RFC 1034) and "Domain Names - Implementation and Specification"
skipping to change at page 4, line 40 skipping to change at page 4, line 40
zone; this is accomplished by the DNS NOTIFY mechanism [RFC1996]. zone; this is accomplished by the DNS NOTIFY mechanism [RFC1996].
The time and resources needed to accomplish the transfer of the new The time and resources needed to accomplish the transfer of the new
zone content to the secondary servers in many cases can be reduced zone content to the secondary servers in many cases can be reduced
substantially by only carrying forward the changes from a previous substantially by only carrying forward the changes from a previous
version of the zone data. This is accomplished by the IXFR mechanism version of the zone data. This is accomplished by the IXFR mechanism
originally specified in RFC 1995 [RFC1995] and, more precisely, in originally specified in RFC 1995 [RFC1995] and, more precisely, in
this document. this document.
1.2. Incremental Zone Transfer (IXFR) - Conclusions from Experience 1.2. Incremental Zone Transfer (IXFR) - Conclusions from Experience
The original specification for IXFR [RFC1995] has widely been
perceived as not precise and detailed enough to ensure interoperable
implementations, and multiple reports have been made to DNS working
groups of observed IXFR implementation behavior that was not regarded
as conformant with the spirit of the specification, as seen by the
rough consensus of the community. Therefore, this document aims at
giving a much more detailed and precise specification for the IXFR
protocol, incorporating experience from more than a decade and
evolved points of view -- in particular regarding security aspects of
DNS operations. Implementations of this RFC are fully backward
compatible with "proper" implementations of RFC 1995, but conformant
implementations follow some more specific requirements included in
this RFC to improve the performance and resilience of IXFR sessions.
The original IXFR automatically falls back to AXFR behavior whenever The original IXFR automatically falls back to AXFR behavior whenever
the IXFR server cannot fulfill the given delta-update request. In the IXFR server cannot fulfill the given delta-update request. In
some deployments, in particular where multiple IXFR servers are some deployments, in particular where multiple IXFR servers are
available to the IXFR client, this can lead to premature fallback to available to the IXFR client, this can lead to premature fallback to
AXFR-like behavior whenever the chosen IXFR server does not have the AXFR-like behavior whenever the chosen IXFR server does not have the
wanted delta-update information available, but another possible IXFR wanted delta-update information available, but another possible IXFR
server would, which incurs the additional overhead that the client server would, which incurs the additional overhead that the client
wanted to avoid whenever possible by his initial choice to use IXFR. wanted to avoid whenever possible by his initial choice to use IXFR.
This gap is closed by a variant of the IXFR mechanism, dubbed This gap is closed by a variant of the IXFR mechanism, dubbed
"IXFR-ONLY", which originally has been proposed in "IXFR-ONLY to "IXFR-ONLY", which originally has been proposed in "IXFR-ONLY to
skipping to change at page 5, line 28 skipping to change at page 5, line 41
1.3. Requirements Language 1.3. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14, "Key words for document are to be interpreted as described in BCP 14, "Key words for
use in RFCs to Indicate Requirement Levels" [RFC2119]. use in RFCs to Indicate Requirement Levels" [RFC2119].
1.4. Terminology 1.4. Terminology
This document makes freely use of basic DNS terminology as introduced This document freely makes use of basic DNS terminology as introduced
in RFCs 1034 and 1035 ([RFC1034], [RFC1035]) and clarified and in RFCs 1034 and 1035 ([RFC1034], [RFC1035]) and clarified and
expanded upon in RFCs 2181 and 4033 ([RFC2181], [RFC4033]). expanded upon in RFCs 2181 and 4033 ([RFC2181], [RFC4033]).
The terms "AXFR server", "AXFR client", "AXFR session", "General- The terms "AXFR server", "AXFR client", "AXFR session", "General-
purpose DNS implementation" and "Turnkey DNS implementation" are used purpose DNS implementation" and "Turnkey DNS implementation" are used
as defined in Section 1.1 of RFC 5936 [RFC5936]. as defined in Section 1.1 of RFC 5936 [RFC5936]. This document also
adopts the typographical (letter case) conventions agreed upon there
for denoting fields/parts of DNS messages -- cf. Section 3.
The bare term "IXFR" is intended to refer to the generic case of an The bare term "IXFR" is intended to refer to the generic case of an
IXFR or IXFR-ONLY query/response, unless it is clear from the context IXFR or IXFR-ONLY query/response, unless it is clear from the context
that the original IXFR is dealt with specifically. that the original IXFR Q-Type is dealt with specifically.
An "IXFR client" is a (secondary) name server for a given DNS zone An "IXFR client" is a (secondary) name server for a given DNS zone
that, based on a trigger event, for instance a DNS NOTIFY message, that, based on a trigger event, for instance a DNS NOTIFY message,
issues an IXFR query to a "superordinate" authoritative server (e.g., issues an IXFR query to a "superordinate" authoritative server (e.g.,
the primary server of the zone) and receives the IXFR response from the primary server of the zone) and receives the IXFR response from
it. it.
An "IXFR server" is an authoritative server that is presumed to An "IXFR server" is an authoritative server that is presumed to
become aware of changes to a zone earlier than other authoritiative become aware of changes to a zone earlier than other authoritiative
servers, for instance the primary server for a zone as specified in servers, for instance the primary server for a zone as specified in
skipping to change at page 6, line 13 skipping to change at page 6, line 29
primary server, and that is configured to respond to IXFR queries. primary server, and that is configured to respond to IXFR queries.
The interaction and protocol exchange(s) performed by an IXFR client The interaction and protocol exchange(s) performed by an IXFR client
and an IXFR server to issue an IXFR query and accomplish its and an IXFR server to issue an IXFR query and accomplish its
processing are collectively denoted as an "IXFR session". processing are collectively denoted as an "IXFR session".
The behavior of an IXFR server falling back to full zone transfer The behavior of an IXFR server falling back to full zone transfer
when incremental updates are unavailable or unpractical is denoted when incremental updates are unavailable or unpractical is denoted
(by common colloquial shorthand) as "Fallback to AXFR", although (by common colloquial shorthand) as "Fallback to AXFR", although
technically, no AXFR pseudo-RRs are involved in this protocol technically, no AXFR pseudo-RRs are involved in this protocol
variant. (This is sketched in Section 2 and detailed in Section 4 variant. (This is sketched in Section 2 and detailed in Section 4.)
below.)
1.5. Scope 1.5. Scope
In general terms, authoritative name servers for a given zone can use In general terms, authoritative name servers for a given zone can use
various means to achieve coherency of the zone contents they serve. various means to achieve coherency of the zone contents they serve.
For example, there are DNS implementations that assemble answers from For example, there are DNS implementations that assemble answers from
data stored in relational databases (as opposed to master files), data stored in relational databases (as opposed to master files),
relying on the database's non-DNS means to synchronize the database relying on the database's non-DNS means to synchronize the database
instances. Some of these non-DNS solutions interoperate in some instances. Some of these non-DNS solutions interoperate in some
fashion. However, AXFR, IXFR, and NOTIFY are the only protocol- fashion. However, AXFR, IXFR, and NOTIFY are the only protocol-
skipping to change at page 6, line 39 skipping to change at page 7, line 5
applications of the DNS in which servers for a zone are designed to applications of the DNS in which servers for a zone are designed to
be incoherent. For these configurations, a coherency mechanism as be incoherent. For these configurations, a coherency mechanism as
described here would be unsuitable. described here would be unsuitable.
IXFR is an optional protocol component for authoritiative DNS IXFR is an optional protocol component for authoritiative DNS
servers; it is not needed on DNS resolver software that does not servers; it is not needed on DNS resolver software that does not
support the functions of an authoritative DNS server. Thus, all support the functions of an authoritative DNS server. Thus, all
usage of normative BCP 14 [RFC2119] language is applicable only to usage of normative BCP 14 [RFC2119] language is applicable only to
DNS server implementations that claim support of this specification. DNS server implementations that claim support of this specification.
Whereas the original IXFR already is widely implemented, IXFR-ONLY Whereas the original IXFR protocol already is widely implemented,
offers an operational choice for administrators of zones with a non- IXFR-ONLY offers an operational choice for administrators of zones
trivial propagation graph for the authoritative zone data, who are with a non-trivial propagation graph for the authoritative zone data,
looking for more options to fine-tune the synchronization efficiency who are looking for more options to fine-tune the synchronization
of their authoritative servers. It could be implemented without bare efficiency of their authoritative servers. It could be implemented
IXFR, but for the sake of backwards compatibility and flexibility, without bare IXFR, but for the sake of backwards compatibility and
and for simplicity in documentation, it is strongly RECOMMENDED that flexibility, and for simplicity in documentation, it is strongly
IXFR-ONLY be always implemented in concert with bare IXFR. RECOMMENDED that IXFR-ONLY be always implemented in concert with bare
IXFR.
2. Principles of IXFR Protocol Operation 2. Principles of IXFR Protocol Operation
Each version of the authoritative data of a DNS zone is identified by Each version of the authoritative data of a DNS zone is identified by
the SOA serial number (cf. Section 3.3.13 of [RFC1035]); succesive the SOA serial number (cf. Section 4.3.5 of [RFC1034] and Section
versions are tagged with monotonically increasing serial numbers. 3.3.13 of [RFC1035]); successive zone versions are tagged with
monotonically increasing serial numbers. Note that, as spelled out
Below, serial numbers are symbolically referred to by "sn". mostly at the former citation, "Serial number advances and comparisons use
with some distinguishing postfix. sequence space arithmetic", and IXFR implementations need to pay
particular attention to possible wraps. Below, serial numbers are
symbolically referred to by "sn", mostly with some distinguishing
postfix.
When an IXFR client currently serving, say, sn_o of a particular zone When an IXFR client currently serving, say, sn_o of a particular zone
receives a trigger that it should incrementally update the zone data, receives a trigger that it should incrementally update the zone data,
it sends one of the two flavors of an IXFR request to an IXFR server, it sends one of the two flavors of an IXFR request to an IXFR server,
with the expectation to obtain in the IXFR response the change with the expectation to obtain in the IXFR response the change
information necessary to transform the sn_o zone data into the zone information necessary to transform the sn_o zone data into the zone
data of the current zone version, say, sn_n. data of the current zone version, say, sn_n.
The details of which triggers can and will start such IXFR session The details of which triggers can and will start such IXFR session
are implementation dependent. Possible triggers are some time are implementation dependent. Possible triggers are some time
skipping to change at page 8, line 22 skipping to change at page 8, line 41
might be preferable to coalesce subsequent chunks of change might be preferable to coalesce subsequent chunks of change
information -- both for local storage and/or for transmission --, for information -- both for local storage and/or for transmission --, for
instance instead of the change information from sn_1 to sn_2 and the instance instead of the change information from sn_1 to sn_2 and the
change information from sn_2 to sn_3 (where sn_1 < sn_2 < sn_3), the change information from sn_2 to sn_3 (where sn_1 < sn_2 < sn_3), the
change information from sn_1 to sn_3 can be provided. This change information from sn_1 to sn_3 can be provided. This
condensation of data has some downsides, however: if an IXFR client condensation of data has some downsides, however: if an IXFR client
serves sn_2 and asks an IXFR server for the delta information to the serves sn_2 and asks an IXFR server for the delta information to the
current version of the zone, but the server has performed the above current version of the zone, but the server has performed the above
condensation, it has no way to tell the necessary information to the condensation, it has no way to tell the necessary information to the
IXFR client, and the IXFR request necessarily is doomed to fail. IXFR client, and the IXFR request necessarily is doomed to fail.
Therefore, is becomes apparent that an IXFR server must maintain Therefore, it becomes apparent that an IXFR server must maintain
seemless chains of change information chunks from all past SOA serial seemless chains of change information chunks from all past SOA serial
number values it wants/needs to support (because potential IXFR number values it wants/needs to support (because potential IXFR
clients currently serve these zone versions) to the current zone clients currently serve these zone versions) to the current zone
version. See Section 6.3 for more details on Condensation. version. See Section 6.3 for more details on Condensation.
Upon receipt of any IXFR query, the IXFR server conceptionally Upon receipt of any IXFR query, the IXFR server conceptionally
constructs a chain of change information chunks from the SOA serial constructs a chain of change information chunks from the SOA serial
number indicated by the client (sn_o) to the current zone version number indicated by the client (sn_o) to the current zone version
(sn_n). (sn_n).
skipping to change at page 8, line 49 skipping to change at page 9, line 21
transfer. However, if the full zone content would fit into a single transfer. However, if the full zone content would fit into a single
response packet over UDP, an IXFR server MAY refrain from signalling response packet over UDP, an IXFR server MAY refrain from signalling
an error in response to an IXFR-ONLY query and behave as if the query an error in response to an IXFR-ONLY query and behave as if the query
had been IXFR. This is allowed because, in this case, the full IXFR had been IXFR. This is allowed because, in this case, the full IXFR
transaction can be executed in a single packet exchange and an error transaction can be executed in a single packet exchange and an error
return would necessitate more messages and hence cause additional return would necessitate more messages and hence cause additional
overhead and delay, contrary to the performance optimization goal of overhead and delay, contrary to the performance optimization goal of
IXFR-ONLY. IXFR-ONLY.
In case it turns out that the IXFR client already has the current In case it turns out that the IXFR client already has the current
zone version (sn_o = sn_n), the IXFR server does not reply with an zone version (sn_o = sn_n) or even a more recent one (sn_o > sn_n),
empty chain of chunks, but with the (current) SOA record of the zone. the IXFR server does not reply with an empty chain of chunks, but
with only the (current) SOA record of the zone.
If the IXFR server determines that it would be inefficient to If the IXFR server determines that it would be inefficient to
transfer the series of chunks, it also may fall back to full zone transfer the series of chunks, it also may fall back to full zone
transfer. Note that this is recommended behavior for the IXFR transfer. Note that this is recommended behavior for the IXFR
server, but the correct protocol operation does not depend on this server, but the correct protocol operation does not depend on this
(useful) optimization. (useful) optimization.
Ordinarily, in the generic case, the IXFR server transmits the change Ordinarily, in the generic case, the IXFR server transmits the change
information chunks in their "natural" order (by ascending sn) to the information chunks in their "natural" order (by ascending sn) to the
IXFR client. IXFR client.
Each such change information chunk -- say from sn_a to sn_b -- is Each such change information chunk -- say from sn_a to sn_b -- is
represented (conceptionally and on the wire) by a sequence of RR represented (conceptionally and on the wire) by a sequence of RR
deletions and a sequence of subsequent RR additions, all of which deletions and a sequence of subsequent RR additions, all of which
need to be applied in order to transform the zone content at sn_a to need to be applied in order to transform the zone content at sn_a to
the zone content at sn_b. For transfer in the IXFR response, each the zone content at sn_b. For transfer in the IXFR response, each
sequence starts with the corresponding SOA RR as its delimiter, and sequence starts with the corresponding SOA RR as its delimiter, and
the other RRs within it can be given in arbitrary order. the other RRs within it can be given in arbitrary order.
The whole chain of change information chunks is embedded in a pair of The whole chain of change information chunks is embedded in a pair of
copies of the new SOA RR (at sn_n) that serve as "sentinels". It is copies of the new SOA RR (at sn_n), which serve as "sentinels". It
important to point out that the SOA RR is used only as a marker in is important to point out that the SOA RR is used only as a marker in
this context and it can appear multiple times, as opposed to an this context and it can appear multiple times, as opposed to an
RRSIG(SOA) RR, which is treated as a common record and needs to RRSIG(SOA) RR, which is treated as a common record and needs to
appear only once in the zone. That also means that an RRSIG(SOA) RR appear only once in the zone. That also means that an RRSIG(SOA) RR
for sn_o has to be deleted and an RRSIG(SOA) RR for sn_n has to be for sn_o has to be deleted and an RRSIG(SOA) RR for sn_n has to be
added. In other words, any RRSIG(SOA) doesn't get any special added. In other words, any RRSIG(SOA) doesn't get any special
treatment in the context of IXFR, and SOA RRs are used as treatment in the context of IXFR, and SOA RRs are used as
"sentinels". "sentinels".
For example, if the IXFR server wants to transmit the changes from For example, if the IXFR server wants to transmit the changes from
sn_o to sn_n in three chunks, based on two intermediary zone versions sn_o to sn_n in three chunks, based on two intermediary zone versions
at sn_1 and sn_2 (where sn_o < sn_1 < sn_2 < sn_n), i.e., the chunk at sn_1 and sn_2 (where sn_o < sn_1 < sn_2 < sn_n), i.e., the chunk
with the change information from sn_o to sn_1, the chunk from sn_1 to with the change information from sn_o to sn_1, the chunk from sn_1 to
sn_2, and the chunk from sn_2 to sn_n, it would deliver in the IXFR sn_2, and the chunk from sn_2 to sn_n, it would deliver in the
response packet(s) the following resource records (RRs), in order: incremental IXFR response packet(s) the following resource records
(RRs), in order:
* SOA for sn_n # outer bracket * SOA for sn_n # outer bracket
* SOA for sn_o # start of first chunk * SOA for sn_o # start of first chunk
* {other RRs to be deleted from the zone at sn_o} * {0 or more other RRs to be deleted from the zone at sn_o}
* SOA for sn_1 * SOA for sn_1
* {other RRs to be added for getting the zone at sn_1} * {0 or more other RRs to be added for getting the zone at sn_1}
* SOA for sn_1 # start of second chunk * SOA for sn_1 # start of second chunk
* {other RRs to be deleted from the zone at sn_1} * {0 or more other RRs to be deleted from the zone at sn_1}
* SOA for sn_2 * SOA for sn_2
* {other RRs to be added for getting the zone at sn_2} * {0 or more other RRs to be added for getting the zone at sn_2}
* SOA for sn_2 # start of third chunk * SOA for sn_2 # start of third chunk
* {other RRs to be deleted from the zone at sn_2} * {0 or more other RRs to be deleted from the zone at sn_2}
* SOA for sn_n * SOA for sn_n
* {other RRs to be added for getting the zone at sn_n} * {0 or more other RRs to be added for getting the zone at sn_n}
* SOA for sn_n # outer bracket * SOA for sn_n # outer bracket
In contrast, in the case of fallback to AXFR, the IXFR response would In contrast, in the case of fallback to AXFR, the IXFR response would
convey, in order: convey, in order:
* SOA for sn_n # first instance * SOA for sn_n # first instance
* {DNSSEC signature RRs for the SOA, if any} * {one or more other RRs of the zone at sn_n, in arbitrary order}
* {other RRsets of the zone at sn_n, in arbitrary order}
* SOA for sn_n # repeated as trailing delimiter * SOA for sn_n # repeated as trailing delimiter
3. IXFR Messages 3. IXFR Messages
This section specifies the format of IXFR messages and the basic This section specifies the format of IXFR messages and the basic
message generation and processing rules. message generation and processing rules.
An IXFR session is started with an IXFR query message sent from an An IXFR session is started with an IXFR query message sent from an
IXFR client to an IXFR server, which solicits one or more response IXFR client to an IXFR server, which solicits one or more response
messages in return. messages in return.
All these messages adhere to the basic DNS message format as All these messages adhere to the basic DNS message format as
specified in RFC 1035 and later amended in various ways, for which specified in RFC 1035 and later amended in various ways, for which
Section 2 of RFC 5936 gives an expanded bibliography. Implementers Section 2 of RFC 5936 gives an expanded bibliography. Implementers
should be aware of the considerations in "Measures for Making DNS should be aware of the considerations in RFC 5452, "Measures for
More Resilient against Forged Answers" [RFC5452] and follow the Making DNS More Resilient against Forged Answers" [RFC5452], and
recommendations given there. follow the recommendations given there.
For convenience of the reader, the synopsis of the DNS message header For convenience of the reader, the synopsis of the DNS message header
from RFC 6195 [RFC6195] (and the IANA registry for DNS Parameters from RFC 6195 [RFC6195] (and the IANA registry for DNS Parameters
[DNSVALS]) is reproduced here informally: [DNSVALS]) is reproduced here informally:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID | | ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| OpCode |AA|TC|RD|RA| Z|AD|CD| RCODE | |QR| OpCode |AA|TC|RD|RA| Z|AD|CD| RCODE |
skipping to change at page 13, line 34 skipping to change at page 13, line 34
An IXFR server that has received an IXFR query responds to it with an An IXFR server that has received an IXFR query responds to it with an
IXFR response addressed to the transport source identifier from which IXFR response addressed to the transport source identifier from which
the query has been received, in particular using the same transport the query has been received, in particular using the same transport
protocol. protocol.
An IXFR response consists of one or more response messages. If the An IXFR response consists of one or more response messages. If the
IXFR query has been received over a connectionless transport IXFR query has been received over a connectionless transport
(currently: UDP), the IXFR response MUST consist of a single message. (currently: UDP), the IXFR response MUST consist of a single message.
If it is not possible to send the complete response in a single DNS If it is not possible to send the complete response in a single DNS
message, a response MUST BE sent that only contains the currrent SOA message, a response MUST be sent that only contains the currrent SOA
RR at the server; whose serial sn_n being different from sn_o is the RR at the server; whose serial sn_n being larger than sn_o (in
signal to the IXFR client to retry over connection-oriented transport sequence space arithmetics) is the signal to the IXFR client to retry
(currently: TCP). over connection-oriented transport (currently: TCP).
The conceptional "answer" carried in a multi-message response is the The conceptional "answer" carried in a multi-message response is the
concatenation of the content of the Answer sections in these response concatenation of the content of the Answer sections in these response
messages, in the order they are sent; this is unambiguous from the messages, in the order they are sent; this is unambiguous from the
point of view of the IXFR client as well, since the applicable point of view of the IXFR client as well, since the applicable
connection-oriented transport preserves the order of messages sent. connection-oriented transport preserves the order of messages sent.
If the server detects an error condition that makes it impossible to If the server detects an error condition that makes it impossible to
fulfill the request, it immediately sends an error response, that is fulfill the request, it immediately sends an error response, that is
a response message with non-zero RCODE. In case of connectionless a response message with non-zero RCODE. In case of connectionless
transport (UDP), this is the single response message sent. In case transport (UDP), this is the single response message sent. In case
of connection-oriented transport (TCP), the error condition might of connection-oriented transport (TCP), the error condition might
occur after one of more response messages already have been sent; in occur after one or more response messages already have been sent; in
this case, the error message is sent as soon as need arises, and it this case, the error message is sent as soon as need arises, and it
will abort the ongoing IXFR session; i.e., the error message is the will abort the ongoing IXFR session; i.e., the error message is the
last response message sent by the server. The special case of a last response message sent by the server. The special case of a
server closing the TCP connection without sending an IXFR response server closing the TCP connection without sending an IXFR response
message is covered in Section 3.3. message is covered in Section 3.3.
If an IXFR server is not able or willing to send the incremental zone If an IXFR server is not able or willing to send the incremental zone
change information to transform the client's version (sn_o) to its change information to transform the client's version (sn_o) to its
newer version (sn_n), the behavior is specified as follows: In the newer version (sn_n), the behavior is specified as follows: In the
case of QTYPE=IXFR, the server SHOULD fall back to AXFR (see below). case of QTYPE=IXFR, the server SHOULD fall back to AXFR (see below).
In the case of QTYPE=IXFR-ONLY, it SHOULD respond with an appropriate In the case of QTYPE=IXFR-ONLY, it SHOULD respond with an appropriate
error, e.g., CannotIXFR (see below); however, in the (rather error, e.g., CannotIXFR (see below); however, in the (rather
unlikely) corner case where a full zone transfer can be sent in a unlikely) corner case where a full zone transfer can be sent in a
single response packet over connectionless transport (UDP), the IXFR single response packet over connectionless transport (UDP), the IXFR
server MAY instead proceed to send this even in response to an server MAY instead proceed to send this even in response to an
IXFR-ONLY query; doing so helps to achieve the overall performance IXFR-ONLY query; doing so helps to achieve the overall performance
optimization goals of IXFR-ONLY. optimization goals of IXFR-ONLY.
Any non-error IXFR response starts with the server's version of the Any IXFR response that is neither an immediate error response nor a
SOA resource record, sn_n. redirection to connection-oriented transport starts with the server's
If the server detects that the client's version is current (sn_n = version of the SOA resource record, sn_n, and its kind can be
sn_o), or if the server detects that the entire response to an IXFR determined from the second answer RR, if any. (See Sections 3.2.3
query received over connectionless transport (UDP) cannot be placed and 4 for a detailed discussion.)
into a single response message, this SOA record is the only answer RR If the server detects that the client's version is current (sn_o =
sent to the client. Otherwise, the subsequent answer RRs sent form a sn_n) or already is more recent than at the server (sn_o > sn_n), or
if the server detects that the entire response to an IXFR query
received over connectionless transport (UDP) cannot be placed into a
single response message, this SOA record is the only answer RR sent
to the client. Otherwise, the subsequent answer RRs sent form a
sequence of one or more change information chunks as described below sequence of one or more change information chunks as described below
in Section 4, and the final "sentinel" RR sent is another copy of the in Section 4, and the final "sentinel" RR sent is another copy of the
current SOA RR. current SOA RR (sn_n).
In case of fallback to AXFR, the answer contains the same RRs (and is In case of fallback to AXFR, the answer contains the same RRs (and is
subject to the same ordering rules) as specified in Sections 2.2 subject to the same ordering rules) as specified in Sections 2.2
through 3 of RFC 5936, with the single difference being the echoed through 3 of RFC 5936, with the single difference being the echoed
QCODE (i.e., IXFR) in the Question section. QCODE (i.e., IXFR, or exceptionally -- as noted above -- IXFR-ONLY)
in the Question section.
3.2.1. Header Values 3.2.1. Header Values
The specification for AXFR in Section 2.2.1 of RFC 5936 applies The specification for AXFR in Section 2.2.1 of RFC 5936 applies
likewise for IXFR queries, where in the case of IXFR the "new" likewise for IXFR queries, where in the case of IXFR the "new"
behavior from RFC 5936 is always followed, i.e. the query ID from the behavior from RFC 5936 is always followed, i.e. the query ID from the
IXFR query MUST be echoed in all IXFR response messages. IXFR query MUST be echoed in all IXFR response messages.
Note that unlike with all common DNS responses, but like AXFR, the Note that unlike with all common DNS responses, but like AXFR, the
IXFR protocol makes no use of the TC (truncation) bit. To signal IXFR protocol makes no use of the TC (truncation) bit. To signal
that an IXFR session needs to be retried over TCP, an IXFR server that an IXFR session needs to be retried over TCP, an IXFR server
sends a response that in the Answer section solely contains its sends a response that in the Answer section solely contains its
current version of the SOA RR for the zone. current version of the SOA RR for the zone.
The only additonal rule to be followed applies to the deliberations The only additonal rule to be followed applies to the deliberations
on the RCODE field in Note e) of Section 2.2.1 in RFC 5936: If the on the RCODE field in Note e) of Section 2.2.1 in RFC 5936: If the
IXFR server is not able to fulfill an IXFR-ONLY request, is SHOULD -- IXFR server is not able to fulfill an IXFR-ONLY request, it SHOULD
see above for the exceptional corner case -- respond with the respond with the extended RCODE CannotIXFR assigned on behalf of this
extended RCODE CannotIXFR assigned on behalf of this document (see document (see Section 10); see above for the exceptional corner case
Section 10). that allows to waive this requirement.
Note that only the lower 4 bits of the conceptual RCODE can be Note that only the lower 4 bits of the conceptual RCODE can be
carried in the RCODE message header field; the upper bits need to carried in the RCODE message header field; the upper bits need to
be placed into the EXTENDED-RCODE subfield of the "TTL" field in be placed into the EXTENDED-RCODE subfield of the "TTL" field in
the OPT RR that, in this case, is REQUIRED in the Additional the OPT RR that, in this case, is REQUIRED in the Additional
section of the response -- see Section 6.1.3 of RFC 2671bis section of the response -- see Section 6.1.3 of RFC 2671bis
[I-D.ietf-dnsext-rfc2671bis-edns0]. [I-D.ietf-dnsext-rfc2671bis-edns0].
3.2.2. Question Section 3.2.2. Question Section
skipping to change at page 15, line 29 skipping to change at page 15, line 34
empty. However, if the last response message sent is an error empty. However, if the last response message sent is an error
message (RCODE unequal to 0), the query MUST also be copied. message (RCODE unequal to 0), the query MUST also be copied.
Accordingly, QDCOUNT in the DNS message header is set to either 1 Accordingly, QDCOUNT in the DNS message header is set to either 1
(query copied) or 0 (otherwise). (query copied) or 0 (otherwise).
When it is present, the content of this section MAY be used to When it is present, the content of this section MAY be used to
determine the context of the message, that is, the name of the zone determine the context of the message, that is, the name of the zone
being transferred. The recipent (IXFR client) SHOULD apply the being transferred. The recipent (IXFR client) SHOULD apply the
response verification rules from RFC 5452 [RFC5452]. response verification rules from RFC 5452 [RFC5452].
Subsequent response messages with empty Question section are
demultiplexed (among all open DNS transactions being carried out on a
given transport connection, which already identifies the peer) to the
proper IXFR session by means of the ID message header field only.
3.2.3. Answer Section 3.2.3. Answer Section
The Answer section MUST be populated with the zone change information The Answer section MUST be populated with the zone change information
or, in the case of fallback to AXFR, the full zone contents. or, in the case of fallback to AXFR, the full zone contents.
For multi-message IXFR responses, the conceptional answer is split For multi-message IXFR responses, the conceptional answer is split
into segments that are sent in order. Each segment is comprised of into segments that are sent in order. Each segment is comprised of
an integer number of full RRs, and for transport efficiency, the an integer number of full RRs, and for transport efficiency, the
response messages should be filled up with answer RRs as much as response messages SHOULD be filled up with answer RRs as much as
possible for the response message size chosen by the IXFR server, possible for the response message size chosen by the IXFR server,
taking into account the space needed for the other sections in the taking into account the space needed for the other sections in the
messages. messages.
See Section 4 below for the normative details of the resource record If an IXFR server intends to send a conceptual IXFR response that is
ordering requirements. comprised of at least two answer RRs, the first two answe RRs of the
response MUST be sent in the first response packet to allow the IXFR
client to immediately distinguish the kind of response coming in. An
IXFR server MUST NOT send over connection-oriented transport the kind
of (single-RR) IXFR response that indicates that the server has to
send a multi-packet response and hence the IXFR request needs to be
retried over connection-orientend transport (currently: TCP); this
kind of response is only allowed in response to an IXFR query
received over connectionless transport (currently: UDP).
See Section 4 below for the normative details of the various kinds of
conceptual IXFR responses and the respective resource record ordering
requirements, as well as how an IXFR client distinguishes these
response kinds.
3.2.4. Authority Section 3.2.4. Authority Section
Corresponding to NSCOUNT=0 in the DNS message header, the Authority Corresponding to NSCOUNT=0 in the DNS message header, the Authority
section in IXFR response messages MUST be empty. section in IXFR response messages MUST be empty.
3.2.5. Additional Section 3.2.5. Additional Section
All considerations from Section 2.2.5 (and hence, by reference, also All considerations from Section 2.2.5 (and hence, by reference, also
Section 2.1.5) of RFC 5936 apply in the same manner for IXFR as they Section 2.1.5) of RFC 5936 apply in the same manner for IXFR as they
do for AXFR. See also Section 3.1.5 of this document. do for AXFR. See also Section 3.1.5 of this document.
Note that hereby the rules for any DNS transactional security
meta-RRs (SIG(0)/TSIG) applicable for AXFR are implicitly extended
to apply to multi-message IXFR responses as well; in the absence
of explicit specification saying otherwise, this also holds for
future DNS transactional security methods (if any).
3.3. Connection Aborts 3.3. Connection Aborts
In case of an IXFR session carried over connection-oriented transport In case of an IXFR session carried over connection-oriented transport
(TCP), the considerations in Section 2.3 of RFC 5936 [RFC5936] apply (TCP), the considerations in Section 2.3 of RFC 5936 [RFC5936] apply
similarly. similarly.
In a nutshell: Servers SHOULD avoid dropping active connections In a nutshell: Servers SHOULD avoid dropping active connections
whenever possible, and clients nevertheless must be prepared to whenever possible, and clients nevertheless must be prepared to
gracefully deal with such aborts. gracefully deal with such aborts.
4. Response Contents 4. Response Contents
This section describes the structure of the sequence of resource This section describes the structure of the sequence of resource
records (RRs) sent in IXFR reponses and how the IXFR client can records (RRs) sent in IXFR reponses and how the IXFR client can
distinguish the various cases covered. immediately distinguish the various cases covered.
The possible IXFR responses can be classified into various kinds of
responses by the number of answer RRs in the conceptual response.
(1) immediate-error: empty answer, non-zero RCODE;
(2) you-are-current: single SOA RR for sn_o = sn_n, RCODE = NoError;
(3) you-are-more-recent: single SOA RR for sn_o > sn_n, RCODE =
NoError;
(4) redirect-to-conn: single SOA RR for sn_o < sn_n, RCODE =
NoError;
(5) incremental: multiple RRs, starting and ending with the SOA RR
for sn_n (where sn_o < sn_n), which enclose a sequence of one
or more change information chunks, the first of which starts
with the SOA RR for sn_o (which consequentially is different
from sn_n);
this is detailed below in Section 4.1
(if need arises, a packetized incremental response can be
aborted in the second or later response message by sending an
empty Answer section and non-zero RCODE);
(6) full-xfr: multiple RRs, starting and ending with the SOA RR for
sn_n (where sn_o < sn_n), enclosing a serialization of all
other RRs in the zone for sn_n; this enclosed sequence of RRs
is non-empty -- since any zone needs to contain at least one
non-SOA RR, namely an NS RR --, does not contain any other SOA
RR, and thus cannot start with another SOA RR;
this is detailed in [RFC5936]
(if need arises, a packetized full-xfr response can be aborted
in the second or later response message by sending an empty
Answer section and non-zero RCODE).
If the IXFR server discovers an error condition before it sends the If the IXFR server discovers an error condition before it sends the
first (or only) response message, the response content in the Answer first (or only) response message, the response content in the Answer
section is empty, and consequentially, ANCOUNT is set to 0 in that section is empty, and consequentially, ANCOUNT is set to 0 in that
message. message ("immediate-error" response, kind (1) above).
Otherwise, the response content starts with a copy of the current SOA Otherwise, the response content starts with a copy of the current SOA
RR at the IXFR server (sn_n). There are several cases: RR at the IXFR server (sn_n). There are several cases:
a. The server serial (sn_n) is the same as the client serial (sn_o) a. The server serial (sn_n) is the same as the client serial (sn_o)
sent in the Authority section of the IXFR query. In this case, sent in the Authority section of the IXFR query. In this case,
this SOA RR is the only RR in the response message, indicating to this SOA RR is the only RR in the response message, indicating to
the IXFR client that it already has the current zone content. the IXFR client that it already has the current zone content
("you-are-current" response, kind (2) above).
b. The server serial (sn_n) differs from the client serial (sn_o) b. The server serial (sn_n) is older than the client serial (sn_o)
sent in the Authority section of the IXFR query, and this SOA RR
is the only RR in the response message. This indicates that the
zone content held at the IXFR server actually lags behind the
IXFR client, and so the IXFR server cannot provide an update to
the zone data at the client ("you-are-more-recent" response, kind
(3) above).
c. The server serial (sn_n) is newer than the client serial (sn_o)
sent in the Authority section of the IXFR query, and this SOA RR sent in the Authority section of the IXFR query, and this SOA RR
is the only RR in the response message. This indicates to the is the only RR in the response message. This indicates to the
IXFR client that its zone content is outdated and the IXFR server IXFR client that its zone content is outdated and the IXFR server
is willing to send the incremental zone change information, but is willing to send the incremental zone change information, but
is unable to do so in a single response message due to message is unable to do so in a single response message due to message
size limitations. size limitations.
An IXFR server MUST NOT send this type of IXFR response over An IXFR server MUST NOT send this type of IXFR response over
connection-oriented transport (TCP), but it MAY use this type of connection-oriented transport (TCP), but it MAY use this type of
response over connectionless transport (UDP). response over connectionless transport (UDP) to indicate to the
IXFR client that it should retry the IXFR query over connection-
oriented transport ("redirect-to-conn" response, kind (4) above).
An IXFR client that receives over connection-oriented transport An IXFR client that receives over connection-oriented transport
an IXFR response message (as the first response message related an IXFR response message (as the first response message related
to its IXFR query) that contains only a single SOA RR with sn_n to its IXFR query) that contains only a single SOA RR with sn_n
unequal to sn_o MUST discard the response message (see below). higher than sn_o MUST discard the response message (see below).
Note again that the "truncated response message" mechanism Note again that the "truncated response message" mechanism
specified in RFC 1035, which is signalled by setting the TC bit specified in RFC 1035, which is signalled by setting the TC bit
in a response message, MUST NOT be used in an IXFR response. An in a response message, MUST NOT be used in an IXFR response. An
IXFR client that receives an IXFR response message with the TC IXFR client that receives an IXFR response message with the TC
bit set MUST discard the message (see below for details). bit set MUST discard the message (see below for details).
c. The server serial (sn_n) differs from the client serial (sn_o) d. The server serial (sn_n) is newer than the client serial (sn_o)
sent in the Authority section of the IXFR query, and this SOA RR sent in the Authority section of the IXFR query, and this SOA RR
is followed by another SOA RR in the same response message. In is followed by another SOA RR in the same response message. In
this case, the IXFR response is an incremental response. this case, the IXFR response is an incremental response (kind (5)
above), as detailed in Section 4.1 below.
If this second SOA RR also carries sn_n, the IXFR client SHOULD If this second SOA RR also is for sn_n, a robust IXFR client will
assume that the server exposes behavior arguably not explicitly assume that the server exposes behavior arguably not explicitly
forbidden in RFC 1995 to signal case a) above; an IXFR client forbidden in RFC 1995 to signal case (a) above. Hence, an IXFR
SHOULD accept for resiliency an IXFR response with exactly these client MAY accept for resiliency an IXFR response with exactly
two copies of the same SOA RR sent in a single response message these two copies of the same SOA RR sent in a single response
as an "empty incremental response" indicating that the client's message as an "empty incremental response" indicating that the
version of the zone is current. Otherwise, the client MUST client's version of the zone is current; otherwise, the client
discard a response starting with two copies of the sn_n SOA RR. MUST discard a response starting with two copies of the sn_n SOA
RR.
Otherwise, if the second SOA RR carries sn_o, this indicates the Otherwise, if the second SOA RR is for sn_o, this indicates the
start of an ordinary incremental response as detailed below. start of an ordinary incremental response as detailed below.
Otherwise (if the second SOA RR carries sn_x that differs from Otherwise (if the second SOA RR is for sn_x that differs from
both sn_o (as sent by the client) and sn_n (in the first SOA RR), both sn_o (as sent by the client) and sn_n (in the first SOA RR),
the client MUST discard the response message as bogus. the client MUST discard the response message as bogus.
d. The server serial (sn_n) is not the same as the client serial e. The server serial (sn_n) is newer than the client serial (sn_o)
(sn_o) sent in the Authority section of the IXFR query, and this sent in the Authority section of the IXFR query, and this SOA RR
SOA RR is followed by another, non-SOA RR in the same response is followed by another, non-SOA RR in the same response message.
message.
This indicates a non-incremental response, "fallback to AXFR". This indicates a non-incremental response ("full-xfr" response,
In this case, the response content is structured like an AXFR kind (6) above, colloquially "fallback to AXFR"). In this case,
response, as described in RFC 5936 ("new" behavior, no backward the response content is structured like an AXFR response, as
compatibility kludges admitted); it contains the entire zone described in RFC 5936 ("new" behavior, no backward compatibility
content -- preferably with whole RRsets grouped together -- and kludges admitted); following the initial SOA RR it contains the
ends with a second copy of the sn_n SOA RR as an end-of-response entire zone content besides the SOA RR and ends with a second
marker. copy of the sn_n SOA RR as an end-of-response marker.
A non-incremental IXFR response MUST NOT be sent in response to Such non-incremental IXFR response MUST NOT be sent in response
an IXFR-ONLY query unless the entire intended IXFR response -- up to an IXFR-ONLY query unless the entire intended response -- up
to and including the trailing sentinel sn_n SOA RR -- fits into a to and including the trailing sentinel sn_n SOA RR -- fits into a
single response message with a size that allows it to be sent single response message with a size that allows it to be sent
over connectionless transport (UDP), or would have allowed that over connectionless transport (UDP), or would have allowed that
if it actually is carried over connection-oriented transport if it actually is carried over connection-oriented transport
(TCP). An IXFR client that receives an incomplete initial IXFR (TCP). An IXFR client that receives an incomplete initial IXFR
response message that indicates such non-incremental response to response message that indicates such non-incremental response to
an IXFR-ONLY query MUST discard the message as bogus. an IXFR-ONLY query MUST discard the message as bogus.
An IXFR client MUST discard any IXFR response that does not match one
of the forms described as kinds (1) through (6) above and is not
recognized by the above decision tree.
Whenever in the above cases the text says that the IXFR client "MUST Whenever in the above cases the text says that the IXFR client "MUST
discard the message", the following behavior is implied: The IXFR discard the message", the following behavior is implied: The IXFR
client MUST regard the IXFR session as terminated; this results in client MUST regard the IXFR session as terminated; this results in
subsequent silent discarding of further response messages that still subsequent silent discarding of further response messages that still
pretend to belong to the same IXFR session by means of the query ID pretend to belong to the same IXFR session by means of the query ID
and the echoed Question (if present), because the IXFR client does and the echoed Question (if present), because the IXFR client does
not maintain corresponding IXFR query/session state any more. The not maintain corresponding IXFR query/session state any more. The
IXFR client MAY log the event and SHOULD regard the IXFR server as IXFR client MAY log the event and SHOULD regard the IXFR server as
broken; hence, it SHOULD refrain from using the same IXFR server broken; hence, it SHOULD refrain from using the same IXFR server
again -- at least for considerable time, or until the usage has been again -- at least for considerable time, or until the usage has been
reinstated by an implementation-dependent management interaction. reinstated by an implementation-dependent management interaction.
From the above decision tree for the client it also follows that, to From the above decision tree for the client it also follows that, to
allow unambiguous client behavior, if an IXFR server has to send a allow unambiguous client behavior, if an IXFR server has to send a
response comprised of two or more RRs, it MUST send at least the response comprised of two or more RRs, it MUST send at least the
first two RRs in the first response message. first two RRs in the first response message, as specified in
Section 3.2.3 above.
If the IXFR server discovers an error condition lately, after having If the IXFR server discovers an error condition lately, after having
sent one or more response messages (all with RCODE set to 0), it can sent one or more response messages (all with RCODE set to 0), it can
abort the IXFR session by sending another response message with empty abort the IXFR session by sending another response message with empty
Answer section and a non-zero RCODE. This MUST be the last message Answer section and a non-zero RCODE. This MUST be the last message
sent in response to the IXFR query, that is, this error message sent in response to the IXFR query, that is, this error message
aborts the ongoing IXFR session. aborts the ongoing IXFR session.
The above rules ensure that an IXFR client can unambiguously
determine the kind of IXFR response from the first response message
alone. This encludes the ability to immediately detect the end of
any legitimate single-message IXFR response. An IXFR session with a
multi-message IXFR response ends when either
o a late error message arrives, i.e., a response message with non-
zero RCODE -- such message has an empty Answer section so that
there's no ambiguity as to which answer RRs might be regarded as
somehow valid anyhow (see Section 7.1 for the possible treatment
of RRs received previously in such IXFR session); or
o in the case of an incremental response, the third instance of the
SOA RR for sn_n is found in the answer (see Section 4.1 for the
rationale); or
o in the case of a non-incremental response, the second instance of
the SOA RR for sn_n is found in the answer.
Recall that in the second and third case, the SOA RR for sn_n was the
first RR sent in the first response message. If in these two cases,
the received response message contains more, extraneous RRs past that
sentinel SOA RR, an IXFR client MAY regard the entire response (or
the not yet committed part of the response, according to Section 7.1)
as bogus (see above); if the client accepts an otherwise consistent
response under these circumstances, it MUST discard the extraneous
RRs, and it MAY log the error and take 'discard' actions as above.
4.1. Incremental Responses 4.1. Incremental Responses
In an incremental response, the leading sn_n SOA RR is followed by In an incremental response, the leading sn_n SOA RR is followed by
one or more change information chunks and concluded by a second copy one or more change information chunks and concluded by a final copy
of the sn_n SOA RR. of the sn_n SOA RR -- in total, from the details given below, it
turns out that this is always exactly the third instance of that SOA
RR in the IXFR response.
Each change information chunk describes the changes to be performed Each change information chunk describes the changes to be performed
on a given "origin" version of the zone to obtain a "target" version on a given "origin" version of the zone to obtain a "target" version
of the zone (i.e., one SOA serial change of the zone). It consists of the zone (i.e., one SOA serial change of the zone). It consists
of (1) a set of old RRs to be deleted from the "origin" zone version of (1) a set of old RRs to be deleted from the "origin" zone version
and (2) a set of new RRs to be added after these deletions to obtain and (2) a set of new RRs to be added after these deletions to obtain
the "target" version of the zone. (In this model, a change in a the "target" version of the zone. (In this model, a change in a
single RR is represented by an RR deletion followed by an RR single RR is represented by an RR deletion followed by an RR
addition.) These two sets are sent in this order, with each set addition.) These two sets are sent in this order, with each set
serialized as a sequence of the related SOA RR followed by other, serialized as a sequence of the related SOA RR followed by other,
skipping to change at page 19, line 41 skipping to change at page 21, line 46
information chunk, and once in the first part of the immediately information chunk, and once in the first part of the immediately
following change information chunk. following change information chunk.
Any IXFR response classified as a (non-empty) incremental response by Any IXFR response classified as a (non-empty) incremental response by
the decision tree presented above in Section 4 that violates any of the decision tree presented above in Section 4 that violates any of
the above rules MUST cause the IXFR client to regard the response as the above rules MUST cause the IXFR client to regard the response as
bogus; it MUST discard a response message in case its content allows bogus; it MUST discard a response message in case its content allows
the client to detect such violation, with the caveats for "discard" the client to detect such violation, with the caveats for "discard"
given in Section 4. given in Section 4.
In support of avoiding clients to draw wrong conclusions on the end
of an incremental response, it is RECOMMENDED that an IXFR server not
send the aforementioned second instance of the sn_n SOA RR as the
last RR in a (non-final) response message.
5. Transport 5. Transport
IXFR servers and IXFR clients MUST support transport over UDP and TCP IXFR servers and IXFR clients MUST support transport over UDP and TCP
(see RFC 5966 [RFC5966]). As with all DNS transactions, IXFR (see RFC 5966 [RFC5966]). As with all DNS transactions, IXFR
responses MUST be sent on the same transport association over which responses MUST be sent on the same transport association over which
the query arrives at the server. the query arrives at the server.
If an IXFR server cannot send a full IXFR response for an IXFR query If an IXFR server cannot send a full IXFR response for an IXFR query
received over UDP within a single response message over UDP due to received over UDP within a single response message over UDP due to
message size limitations, it MUST return the special form of response message size limitations, it MUST return the special form of response
skipping to change at page 20, line 32 skipping to change at page 22, line 32
authoritiative servers, and often not authorized for use by servers authoritiative servers, and often not authorized for use by servers
outside the set of authorities for a zone, which are all under the outside the set of authorities for a zone, which are all under the
control of a single administrative domain or a small number of control of a single administrative domain or a small number of
cooperating administrative domains. In this environment, it might cooperating administrative domains. In this environment, it might
make sense for the sake of efficiency to maintain (and reuse) make sense for the sake of efficiency to maintain (and reuse)
persistent TCP connections between the configured IXFR peers. persistent TCP connections between the configured IXFR peers.
Therefore, implementations of IXFR should allow to configure Therefore, implementations of IXFR should allow to configure
relatively high TCP User Timeout values and support the TCP UTO relatively high TCP User Timeout values and support the TCP UTO
mechanism ([RFC5482]) that allows the peers to exchange their view of mechanism ([RFC5482]) that allows the peers to exchange their view of
the TCP User Timeout and adapt the behavior of their TCP accordingly. the TCP User Timeout and adapt the behavior of their TCP accordingly.
To minimize unnecessary delays, IXFR server implementations SHOULD
use available API functions to cause their TCP stacks to immediately
dispatch for sending the first and last packet of any IXFR response
and cause these to be delivered immediately to the recipient; for
instance, immediate sending and setting of the 'PSH' TCP header flag
in outgoing packets can often be achieved using the TCP_NODELAY
socket option.
6. Server Behavior 6. Server Behavior
6.1. General 6.1. General
General considerations on IXFR server behavior, in particular General considerations on IXFR server behavior, in particular
response message generation and packet processing, are spread all response message generation and packet processing, are spread all
over this document; in particular, see Sections 3.2 and 4. over this document; in particular, see Sections 3.2 and 4.
In addition to the current zone content, IXFR servers need to In addition to the current zone content, IXFR servers need to
skipping to change at page 21, line 21 skipping to change at page 23, line 24
Information about older versions should be purged as soon as the Information about older versions should be purged as soon as the
total length of an IXFR response would otherwise become larger than total length of an IXFR response would otherwise become larger than
that of an AXFR response. Given that the purpose of IXFR is to that of an AXFR response. Given that the purpose of IXFR is to
reduce AXFR overhead, this strategy is quite reasonable. The reduce AXFR overhead, this strategy is quite reasonable. The
strategy assures that the amount of storage required is at most twice strategy assures that the amount of storage required is at most twice
that of the current zone information. that of the current zone information.
Information older than the SOA expire period may also be purged. Information older than the SOA expire period may also be purged.
Once the current serial number of a zone advances so far that older
serial numbers can no more be recognized immediately as older
versions (under the rules of sequence space arithmetics), such
previous versions MUST NOT be held available any more for IXFR
purposes. In order to account for the propagation delay along the
IXFR distribution graph, use of a reasonable safety margin against
this hard limit has proven to be a good strategy for defensive
implementation practice -- for instance implementations could limit
the maximum serial number span made available for IXFR to a specific
fraction of the 32-bit serial number range, e.g., one fourth (2^30).
The Condensation techniques explored below in Section 6.3 might pose The Condensation techniques explored below in Section 6.3 might pose
an opportunity to get rid of more recent, yet less relevant history an opportunity to get rid of more recent, yet less relevant history
information and as such might allow to cover a larger span of SOA information and as such might allow to cover a larger span of SOA
versions than otherwise possible within the same amount of storage. versions than otherwise possible within the same amount of storage.
6.3. Optional Condensation of Zone Changes 6.3. Optional Condensation of Zone Changes
An IXFR server MAY optionally condense a number of immediately An IXFR server MAY optionally condense a number of immediately
succeeding change information chunks into a single chunk, thus succeeding change information chunks into a single chunk, thus
dropping information on intermediate zone versions. dropping information on intermediate zone versions.
skipping to change at page 22, line 29 skipping to change at page 24, line 45
Condensation is completely optional. Clients cannot detect from the Condensation is completely optional. Clients cannot detect from the
response whether or not the server has condensed the reply. response whether or not the server has condensed the reply.
For interoperability, IXFR servers, including those without the For interoperability, IXFR servers, including those without the
condensation feature, SHOULD NOT send an error response in case they condensation feature, SHOULD NOT send an error response in case they
receive a client's IXFR request with an unknown version number and receive a client's IXFR request with an unknown version number and
SHOULD, instead, attempt to perform a full zone transfer. Of course, SHOULD, instead, attempt to perform a full zone transfer. Of course,
this in general does not apply if the client indicates its desire to this in general does not apply if the client indicates its desire to
try its luck in such case at another candidate IXFR server, by try its luck in such case at another candidate IXFR server, by
initiating the request with IXFR-ONLY (the exception to the general initiating the request with IXFR-ONLY (the single exception to this
case is the corner case discussed in Section 3.2). general case is the corner case discussed in Section 3.2).
6.4. Authorization 6.4. Authorization
The considerations for AXFR presented in Section 5 of RFC 5936 The considerations for AXFR presented in Section 5 of RFC 5936
[RFC5936] apply in a similar fashion for IXFR. [RFC5936] apply in a similar fashion for IXFR.
Given the basic desire for frequent use and the resulting processing Given the basic desire for frequent use and the resulting processing
load, operational considerations will, even more likely than for load, operational considerations will, even more likely than for
AXFR, dictate the need to closely restrict the usage of IXFR to the AXFR, dictate the need to closely restrict the usage of IXFR to the
set of authoritiative servers for a given zone, and to precisely set of authoritiative servers for a given zone, and to precisely
skipping to change at page 23, line 25 skipping to change at page 25, line 39
IXFR-ONLY allow to configure its usage per IXFR server, as part of IXFR-ONLY allow to configure its usage per IXFR server, as part of
the IXFR distribution graph configuration. the IXFR distribution graph configuration.
An IXFR client SHOULD set an appropriate guard timeout whenever the An IXFR client SHOULD set an appropriate guard timeout whenever the
content of a response message indicates that this is not the final content of a response message indicates that this is not the final
message of an IXFR response. In case this timeout period elapses message of an IXFR response. In case this timeout period elapses
without another response message arriving, it SHOULD regard the IXFR without another response message arriving, it SHOULD regard the IXFR
session as failed and apply the caveats for the "discard" case session as failed and apply the caveats for the "discard" case
presented in Section 4. presented in Section 4.
If it is known to the IXFR client that an IXFR server conforms to the
refined IXFR specification in this RFC, the guard timeout can be
chosen rather large because the kind of IXFR response is
unambiguously indicated in the first response message and the timing
of the subsequent packet flow should be left to the connection-
oriented transport in use, and the timeout only serves as a "last
defense" in case of fatal failures not detected by the transport.
7.1. Zone Integrity 7.1. Zone Integrity
The elaborations on Zone Integrity for AXFR in Section 6 of RFC 5936 The elaborations on Zone Integrity for AXFR in Section 6 of RFC 5936
[RFC5936] apply in a similar fashion for IXFR. [RFC5936] apply in a similar fashion for IXFR.
However, during the receipt of an incremental IXFR response, and upon However, during the receipt of an incremental IXFR response, and upon
successful processing of an SOA RR that serves as a sentinel for the successful processing of an SOA RR that serves as a sentinel for the
end of any change information chunk, an IXFR client MAY immediately end of any change information chunk, an IXFR client MAY immediately
apply and commit to stable storage the SOA serial number change apply and commit to stable storage the SOA serial number change
described by that chunk (and previous chunks, if not already done). described by that chunk (and previous chunks, if not already done).
skipping to change at page 24, line 18 skipping to change at page 26, line 42
8. Backwards Compatibility 8. Backwards Compatibility
Despite a few potentially misleading statements in the previous Despite a few potentially misleading statements in the previous
specification, only a single detail has been identified so far that specification, only a single detail has been identified so far that
could give rise to backward compatibility concerns. This is could give rise to backward compatibility concerns. This is
addressed by the compatibility rules in Section 4 that allow an IXFR addressed by the compatibility rules in Section 4 that allow an IXFR
client to process an "empty incremental response" consisting of only client to process an "empty incremental response" consisting of only
a pair of instances of the server's SOA RR. a pair of instances of the server's SOA RR.
The clarified and slightly tightened packetization requirements
contained in Section 3.2.3 might cause an IXFR client to reject a
poorly packetized multi-packet response previously sometimes regarded
as acceptable under RFC 1995. An IXFR client implementation MAY
provide a configuration option (globally, or per IXFR server) to
admit such inefficient behavior on the server side, in which case it
needs to wait for a second response message before it can distinguish
unambiguously all response kinds (including protocol violations). In
deployment scenarios with multiple candidate IXFR servers where
expeditious switching to an alternate IXFR server (if needed) is
intended, activation of such option would be detrimental.
The introduction of IXFR-ONLY creates further interoperability The introduction of IXFR-ONLY creates further interoperability
considerations. An IXFR server utilizing IXFR-ONLY may receive an considerations. An IXFR server utilizing IXFR-ONLY may receive an
error response different from CannotIXFR persistently. (The actual error response different from CannotIXFR persistently. (The actual
RCODE reveived may depend on whether or not the server is aware of RCODE reveived may depend on whether or not the server is aware of
the allocation of the range of RR types set aside for Q-Types in the allocation of the range of RR types set aside for Q-Types in
[RFC6195] (and its predecessors), from which the IXFR-ONLY code point [RFC6195] (and its predecessors), from which the IXFR-ONLY code point
has been assigned.) This event likely indicates that the IXFR server has been assigned.) This event likely indicates that the IXFR server
chosen does not support IXFR-ONLY. In such case, the client will chosen does not support IXFR-ONLY. In such case, the client will
mark the server as "unusable of IXFR-ONLY" in his server list and try mark the server as "unusable of IXFR-ONLY" in his server list and try
another potential IXFR server, or, if all candidates fail, retry the another potential IXFR server, or, if all candidates fail, retry the
skipping to change at page 25, line 49 skipping to change at page 28, line 35
CannotIXFR: CannotIXFR:
RCODE Name Description Reference RCODE Name Description Reference
Decimal Decimal
--------- ---------- ---------------------------------- --------- --------- ---------- ---------------------------------- ---------
{TBD2} CannotIXFR IXFR not possible, would fall back [RFCthis] {TBD2} CannotIXFR IXFR not possible, would fall back [RFCthis]
11. Acknowledgements 11. Acknowledgements
Masataka Ohta is acknowledged for his original work as the author of Masataka Ohta is acknowledged for his original work as the author of
RFC 1995 [RFC1995], and this extends to the contributors listed in RFC 1995 [RFC1995], as are the contributors listed in the
the Acknowledgements section of that RFC. Acknowledgements section of that RFC. Andreas Gustafsson has
initiated the first attempt to clarify RFC 1995 in November 1999 and
contributed text to the DNSIND WG for a proposed document revision.
Masataka Ohta's subsequent draft [OLD-IXFRbis] has not been pursued
until RFC publication; thanks to Andreas for eventually bringing this
earlier work to the attention of the authors of this memo.
The specification of IXFR-ONLY in this document is based on the The specification of IXFR-ONLY in this document is based on the
original proposal [I-D.kerr-ixfr-only], whose authors are original proposal [I-D.kerr-ixfr-only], in which the operational need
acknowledged for identifying the operational need for this behavior for this behavior has been identified and carried into the IETF.
and carrying it to the IETF.
The DNSEXT working group and its predecessor (DNSIND) are The DNSEXT working group and its predecessor (DNSIND) are
acknowledged for their discussion on the above documents. acknowledged for their discussion on the above documents.
Substantial text has been borrowed from there and from [RFC5936]. Substantial text has been borrowed from there and from [RFC5936].
Discussions of the draft on the dnsext list have directed the Discussions of the draft on the dnsext list have directed the
evolution of this document; in particular, we acknowledge (in evolution of this document; in particular, we acknowledge (in
alphabetical order) Mark Andrews, Brian Dickson, Shane Kerr, Edward alphabetical order) Mark Andrews, Ray Bellis, Brian Dickson, Andreas
Lewis, Josh Littlefield, Masataka Ohta, Paul Vixie, and Wouter Gustafsson, Shane Kerr, Warren Kumari, Edward Lewis, Josh
Littlefield, Masataka Ohta, Paul Vixie, Florian Weimer, and Wouter
Wijngaards for their comments and reviews. Wijngaards for their comments and reviews.
12. References 12. References
12.1. Normative References 12.1. Normative References
[I-D.ietf-dnsext-rfc2671bis-edns0] [I-D.ietf-dnsext-rfc2671bis-edns0]
Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms
for DNS (EDNS0)", draft-ietf-dnsext-rfc2671bis-edns0-08 for DNS (EDNS0)", draft-ietf-dnsext-rfc2671bis-edns0-08
(work in progress), February 2012. (work in progress), February 2012.
skipping to change at page 27, line 8 skipping to change at page 29, line 43
[RFC5936] Lewis, E. and A. Hoenes, "DNS Zone Transfer Protocol [RFC5936] Lewis, E. and A. Hoenes, "DNS Zone Transfer Protocol
(AXFR)", RFC 5936, June 2010. (AXFR)", RFC 5936, June 2010.
[RFC6195] Eastlake, D., "Domain Name System (DNS) IANA [RFC6195] Eastlake, D., "Domain Name System (DNS) IANA
Considerations", BCP 42, RFC 6195, March 2011. Considerations", BCP 42, RFC 6195, March 2011.
12.2. Informative References 12.2. Informative References
[DNSVALS] IANA Registry, "Domain Name System (DNS) Parameters", [DNSVALS] IANA Registry, "Domain Name System (DNS) Parameters",
protocol parameter registry available at:, January 2012, protocol parameter registry available at:,
<http://www.iana.org/assignments/dns-parameters>. <http://www.iana.org/assignments/dns-parameters>.
[I-D.kerr-ixfr-only] [I-D.kerr-ixfr-only]
Sury, O. and S. Kerr, "IXFR-ONLY to Prevent IXFR Fallback Sury, O. and S. Kerr, "IXFR-ONLY to Prevent IXFR Fallback
to AXFR", draft-kerr-ixfr-only-01 (work in progress), to AXFR", draft-kerr-ixfr-only-01 (work in progress),
February 2010. February 2010.
[OLD-IXFRbis]
Ohta, M., "Incremental Zone Transfer in DNS",
draft-ietf-dnsext-ixfr-01 (work in progress), June 2000.
[RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, [RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995,
August 1996. August 1996.
[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, August 1996. Changes (DNS NOTIFY)", RFC 1996, August 1996.
[RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS
Specification", RFC 2181, July 1997. Specification", RFC 2181, July 1997.
[RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain [RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain
skipping to change at page 28, line 45 skipping to change at page 31, line 40
By providing IXFR-ONLY support, the policy control over the zone By providing IXFR-ONLY support, the policy control over the zone
synchronization operation switches to the client side, which is synchronization operation switches to the client side, which is
preferable under various operational settings. preferable under various operational settings.
Appendix B. Substantial Changes Since RFC 1995 Appendix B. Substantial Changes Since RFC 1995
This is a summary of the substantial changes since RFC 1995 This is a summary of the substantial changes since RFC 1995
[RFC1995]. [RFC1995].
o Corrected a few technical flaws: incorrect comparison with AXFR; o Corrected a few technical flaws: incorrect comparison with AXFR;
improper impled requirement of performing SOA query over UDP; improper implied requirement of performing SOA query over UDP;
improper reference to transfer of partial RRs in a response improper reference to transfer of partial RRs in a response
message corrected (to be read as transfer of partial RRsets in a message corrected (to be read as transfer of partial RRsets in a
response message -- as it has always been understood by response message -- as it has always been understood by
implementers, since STD 13 requires only entire RRs to be present implementers, since STD 13 requires only entire RRs to be present
in DNS messages). in DNS messages).
o New specification based on the revised AXFR specification, o New specification based on the revised AXFR specification,
RFC 5936 [RFC5936]. RFC 5936 [RFC5936].
o Slightly tightened packetization requirements for multi-packet
responses to ensure more timely client-side processing (immediate
determination of kind of response based upon first response
packet, faster determination of protocol violations).
o Many clarifications and details supplied, text vastly reorganized o Many clarifications and details supplied, text vastly reorganized
and expanded, but no (intentional) technical deviation from the and expanded, but no other (intentional) technical deviation from
previous specification, as understood by implementers. the previous specification, as understood by implementers.
o Addition of new IXFR-ONLY protocol variant, based on operational o Addition of new IXFR-ONLY protocol variant, based on operational
experience and perceived need. experience and perceived need.
o Major additions to Security Considerations. o Major additions to Security Considerations.
o Historical example dropped (incompatible with IESG policy on o Historical example dropped (incompatible with IESG policy on
examples). Instead, abstract examples have been added to examples). Instead, abstract examples have been added to
Section 2. Section 2.
Appendix C. Evaluation of List Discussion, Draft Changes since Appendix C. Change Log of WG Draft
Individual Draft -02
[[ Temporary Section, to be deleted in next draft version. ]]
On Chair request, draft-ah-dnsext-rfc1995bis-ixfr-03 re-posted as
draft-ietf-dnsext-rfc1995bis-ixfr-00 without textual changes, but
Shane Kerr now listed as an Author. Recent list dicussion will be
reflected in -01 version due soon after IETF 83. The paragraphs
below describe the changes in indiviual draft -02 to -03 and have
been kept unchanged for this initial WG draft version.
The previous (-02) version of this draft has been extensively
discussed on the dnsext mailing list during the June through August
2011 timeframe. Due to temporary unavailability of the primary
author, the concensus-building based on that discussion is summed up
below, instead of flooding the mailing list with a bunch of (very
belated) response messages. Messages are quoted below as
"{msgNNNNN}", based on the message numbers (NNNNN -- a 5-digit
number) assigned in the list archive using URIs following the pattern
<http://www.ietf.org/mail-archive/web/dnsext/current/msgNNNNN.html>.
{msg11353}, item 1: It is claimed frequently that IETF documents are
too "microscopic" in their perspective and do not give the "glue"
context information allowing even a non-specialized reader to see how
the specified functionality relates to other parts of protocols,
deployment, and common usage. Therefore, like in the kindred AXFR
document, RFC 5936, context information for the invocation of IXFR is
given in the draft -- btw, in a style that resembles descriptions
given in the basic DNS Standards, RFCs 1034 and 1035.
If zones don't change, and no NOTIFYs are sent, IXFR isn't needed.
As RFC 1996 (NOTIFY) indicates, NOTIFY was intended as the primary
trigger for IXFR requests, and that's what this draft re-states from
the perspective of IXFR.
Minor editorial changes have been performed.
{msg11353}, item 2, {msg11359} and more messages down the thread:
As has been pointed out by Brian D. (et al.) in {msg11354},
{msg11363} (and follow-up discussion), the term "Fallback to AXFR"
describes IXFR server behavior specified in RFC 1995 and present in
all major DNS server implementations.
Overall, substantial discussion apparently has been caused by
confusion about the (admittedly a bit colloquial) term "Fallback to
AXFR". Another thread on this behavior was started by Mark A.
({msg11373} ff.).
To clarify and resolve this issue, a definition for this term has
been added to Section 1.4.
The justification for clarifications to the present IXFR
specification and the need for interoperably specified IXFR-ONLY has
been reinforced by several contributors, e.g. Brian D., Mark A., and
Masataka O. ({msg11354}, {msg11355}, {msg11356}, {msg11365}, ff.).
We have not found any indications in the draft text where the
detailed specification of (classical) IXFR would contradict RFC 1995,
and it has been indicated on the list that the draft also correctly
reflects the on-the-wire IXFR behavior of all major implementations
represented by active participants on the list.
{msg11353}, final item: IMO, RFC 1995 would have deserved at least 3
Technical Errata and roughly a dozen Editorial Errata, and it lacks a
lot of precidion, so we agree that a refresh of this original
specification should be welcome.
The suggested additional test by DNSSEC-aware IXFR clients of the
RRSIG(SOA) RRset now is mentioned in a newly added paragraph of
Section 7.1 (that section is referred to in the Security
Considerations).
{msg11373}, {msg11374} and follow-ups: The draft already represents
in detail the different possible responses on an IXFR query that have
been inherent in RFC 1995.
If (and only if) the IXFR server can respond with a single DNS
response packet, the IXFR transaction can be carried out successfully
over UDP, and hence is a "single response mechanism". Otherwise, the
IXFR client has to be redirected to TCP, as described in (RFC 1995
and) the draft. This is independent of whether the IXFR server then
has to fall back to full-zone transfer.
There might be a (very unlikely) corner case, where the IXFR server
wants to fall back to full-zone transfer *and* this transfer can be
performed in a single response packet. Admittedly, that's rather
unlikely, and in this case, IXFR-ONLY behavior would be causing
additional overhead and message exchanges. Therefore, clauses has
been added to Section 2 and Section 3.2 that in this corner case, the
response to IXFR-ONLY MAY be a full-zone transfer over UDP, for the
sake of overall performance.
Otherwise, no significant changes to the text have been performed in
this respect.
{msg11376} ff.: Aborting an IXFR session over TCP likely does not
waste so much resources on the IXFR client side (which initiates the
premature closing of the TCP connection), but it takes much more time
for the IXFR server to be notified of this closure, and up to then,
it will have wasted resources to generate and buffer response packets
that will either never be received or not even sent. Further, if a
persistent TCP connection is desired, e.g. for an IXFR client that
regularly has to update numerous zones from the same (candidate) IXFR
server, re-establishment and subsequent TCP slow-start of a new TCP
connection will be actually detrimental to the overall zone update
performance.
This is another reason why IXFR-ONLY promises substantial performance
improvements that cannot be achieved without protocol enhancements.
Since only modern DNS implementations are expected to implement
IXFR-ONLY (which are expected to support EDNS anyway), because
extended message sizes are very useful for IXFR in general (which
also requires EDNS), and to reduce the pressure on the narrow basic
RCODE namespace (only 5 codepoints still available for assignment),
the draft now assumes that an extended RCODE value for CannotIXFR
will suffice. The running text and IANA Considerations have been
adjusted accordingly. Consequentially, the draft now specifies that
an IXFR-ONLY query without an OPT RR will be rejected by the IXFR
server with FormErr.
Paul V. ({msg13379}) pointed out the detriments of message sizes [[ Entire section to be deleted before publication as an RFC. ]]
above 16k (loss of ability to perform message compression).
Added Note to Section 3 explaining this hint.
A few adjustments regarding use of RFC 2119 language have been The changes of the individual draft (draft-ah-dnsext-rfc1995bis-ixfr)
performed. up to adoption as a WG draft (draft-ietf-dnsext-rfc1995bis-ixfr-00)
are detailed in Appendix C of the latter, but not reproduced below
any more.
Appendix B, which sums up the important changes since RFC 1995, has C.1. Draft Version 00 -> 01
been added, as needed per IESG policy.
References have been updated. o Removed text pertaining to individual draft stage.
o Several text adoptions based on evaluation of previous work in
DNSIND & DNSEXT (in 1999 & 2000) made available by Andreas
Gustafsson.
o Added more text to s1.2 regarding motivation for this memo.
o Added to s1.4 hint to spelling conventions for DNS message parts
(borrowed from RFC 5936); clarified there that IXFR is a Q-Type
RR.
o s2: Clarified preconditions on SOA serial numbers with quotes from
STD 13; s6.2: IXFR server now MUST NOT hold available via IXFR
zone versions that cannot clearly be recognized as older than the
current version; with regard to propagation delays, text
recommends safety margin: limit SOA serial span covered to e.g.
1/4 of the serial number space (i.e. 2^30).
o s2, s3.2, s4: Draft now accommodates the (hopefully rare) case of
the IXFR server's zone being older than the version that the
client has.
o s2, s4: Draft now strictly follows RFC 5936 RR ordering
requirements for non-incremental responses (i.e. no more
recommendation for grouping RRs into RRsets). Example in s2 now
also clearly indicates possibility of having zero "other" RRs to
be deleted or to be added in a change information chunk.
o Clarified which kinds of responses are covered by last para in
s3.2.
Numerous editorial changes and enhancements have been applied. o s3.2, s3.2.1: Resolved text that has become inconsistent by the
Vertical spacing tweeked to avoid dangling orphan lines at page introduction (per the last individual draft version) of the
breaks. (optional) exceptional single-packet non-incremental IXFR-ONLY
response.
o s3.2.2: Clarified that subsequent packets of multi-packet IXFR
responses with empty Question section are demultiplexed into the
appropriate IXFR session by only the DNS message header ID.
o s3.2.3: Based on feedback emphasizing the importance of rules that
ensure efficient protocol operation and thereby making the
requirements at least as strong as for AXFR, the requirements on
packetization of multi-packet IXFR responses have been clearly
spelled out and clarified, making the requirements comparable of
what is specified for AXFR in RFC 5936; previously, the slightly
tightened requirements were arguably hidden in other parts of the
text.
o s3.2.5: Added explicit note regarding DNS transactional security.
o s4: Added classification of IXFR response kinds. Updated decision
tree to refer to these kinds. Added discussion of end-of-session
detection for multi-packet IXFR responses.
o s4.1: Dropped last para -- new packetization requirements now are
limited to what is made explicit in s3.2.3.
o s5: Added note on TCP_NODELY socket option / PSH flag for TCP.
o s7: Added discussion of precautionary receive timeout.
o s8: Added elaborations on backward compatibility regarding the
slightly strenghtened packetization requirements from s3.2.3.
o Updated Acknowledgements; added Informative Ref. to expired '2000
IXFR-bis draft.
o Addressed review comments from Lubos Slovak.
o Updated Appendix B with regard to above changes.
o Removed old Appendix C, added new Appendix C.
o Numerous editorial corrections and improvements.
Authors' Addresses Authors' Addresses
Alfred Hoenes Alfred Hoenes
TR-Sys TR-Sys
Gerlinger Str. 12 Gerlinger Str. 12
Ditzingen D-71254 Ditzingen D-71254
Germany Germany
EMail: ah@TR-Sys.de EMail: ah@TR-Sys.de
 End of changes. 76 change blocks. 
257 lines changed or deleted 370 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/