| < draft-kerr-ixfr-only-00.txt | draft-kerr-ixfr-only-01.txt > | |||
|---|---|---|---|---|
| DNSext Working Group O. Sury | DNSext Working Group O. Sury | |||
| Internet-Draft CZ.NIC | Internet-Draft CZ.NIC | |||
| Updates: 1995 (if approved) S. Kerr, Ed. | Updates: 1995 (if approved) S. Kerr, Ed. | |||
| Intended status: Standards Track ISC | Intended status: Standards Track ISC | |||
| Expires: January 8, 2010 July 7, 2009 | Expires: August 30, 2010 February 26, 2010 | |||
| IXFR-ONLY to Prevent IXFR Fallback to AXFR | IXFR-ONLY to Prevent IXFR Fallback to AXFR | |||
| draft-kerr-ixfr-only-00 | draft-kerr-ixfr-only-01 | |||
| Abstract | ||||
| This documents proposes a new QTYPE (Query pseudo RRtype) for the | ||||
| Domain Name System (DNS). IXFR-ONLY is a variant of IXFR (RFC 1995) | ||||
| that allows an authoritative server to incrementally update zone | ||||
| content from another (primary) server without falling back from IXFR | ||||
| to AXFR. This way, alternate peers can be contacted more quickly and | ||||
| convergence of zone content may be achieved much faster in important, | ||||
| resilient operational scenarios. | ||||
| Status of this Memo | Status of this Memo | |||
| This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted to IETF 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), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
| Drafts. | Drafts. | |||
| skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 43 ¶ | |||
| 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." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on January 8, 2010. | This Internet-Draft will expire on August 30, 2010. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2009 IETF Trust and the persons identified as the | Copyright (c) 2010 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 in effect on the date of | Provisions Relating to IETF Documents | |||
| publication of this document (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | ||||
| Abstract | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | ||||
| Presents IXFR-ONLY, a way for a DNS slave to prevent a DNS master | described in the BSD License. | |||
| from falling back from IXFR to AXFR. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Master Side . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. IXFR Server Side . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Slave Side . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. IXFR Client Side . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Applicability of IXFR-ONLY . . . . . . . . . . . . . . . . . . 4 | 4. Applicability of IXFR-ONLY . . . . . . . . . . . . . . . . . . 5 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 | |||
| 7. Normative References . . . . . . . . . . . . . . . . . . . . . 5 | 7. Normative References . . . . . . . . . . . . . . . . . . . . . 5 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 5 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 1. Introduction | 1. Introduction | |||
| For large DNS zones, RFC 1995 [RFC1995] defines Incremental Zone | For large DNS zones, RFC 1995 [RFC1995] defines Incremental Zone | |||
| Transfer (IXFR), which is an efficient way to transfer changes in | Transfer (IXFR), which allows only to transfer the changed portion(s) | |||
| zones from masters to slaves. | of a zone. | |||
| However, when a slave has multiple masters for a single zone, it is | In the document, an IXFR client and an IXFR server is defined as in | |||
| possible that not all masters has the same set of serials for that | RFC 1995 [RFC1995], a secondary name server which requests IXFR is | |||
| zone. In this case, if a slave attempts an IXFR from a master which | called an IXFR client and a primary or secondary name server which | |||
| does not have the serial in use by the slave, the master will fall | responds to the request is called an IXFR server. | |||
| back to a full zone transfer (AXFR). | ||||
| For example, master NS1 may have serials 1, 2, and 3 for a zone, and | IXFR is an efficient way to transfer changes in zones from IXFR | |||
| master NS2 may have serials 1 and 3. A slave that is at serial 2 | servers to IXFR clients. However, when an IXFR client has multiple | |||
| which sends an IXFR request to NS2 will get a full AXFR of the zone | IXFR servers for a single zone, it is possible that not all IXFR | |||
| at serial 3. This is because NS2 does not know the zone at serial 2, | servers have the zone with same serial number for that zone. In this | |||
| and therefore does not know what the differences are between serial 2 | case, if an IXFR client attempts an IXFR from an IXFR server which | |||
| and serial 3. | does not have zone with the serial number used by the IXFR client, | |||
| the IXFR server will fall back to a full zone transfer (AXFR) when it | ||||
| has a version of the zone with serial number greater than the serial | ||||
| requested by the IXFR client. | ||||
| If the slave in this example had known to send the query to NS1, then | For example, IXFR server NS1 may have serial numbers 1, 2, and 3 for | |||
| it could have gotten an incremental transfer. But slaves can only | a zone, and IXFR server NS2 may have serial numbers 1 and 3 for the | |||
| know what the latest version of the zone is at a master (this | same zone. An IXFR client that has the zone with serial number 2 | |||
| information is available via an SOA query). | which sends an IXFR request to IXFR server NS2 will get a full zone | |||
| transfer (AXFR) of the zone at serial number 3. This is because NS2 | ||||
| does not know the zone with serial number 2, and therefore does not | ||||
| know what the differences are between zone with serial number 2 and | ||||
| 3. | ||||
| The IXFR-ONLY type provides a way for the slaves to ask each master | If the IXFR client in this example had known to send the query to | |||
| to return an error instead of sending the current version of the | IXFR server NS1, then it could have gotten an incremental transfer | |||
| zone. By using this, a slave can check each master until it finds | (IXFR). But IXFR clients can only know what the latest version of | |||
| one able to provide IXFR. | the zone is at a IXFR server (this information is available via an | |||
| SOA query). | ||||
| The IXFR-ONLY query type provides a way for the IXFR client to ask | ||||
| each IXFR server to return an error instead of sending the current | ||||
| version of the zone via full zone transfer (AXFR). By using this, a | ||||
| IXFR client can check each IXFR server until it finds one able to | ||||
| provide IXFR. | ||||
| 1.1. Requirements Language | 1.1. 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 RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| 2. Master Side | 2. IXFR Server Side | |||
| A master receiving a DNS message requesting IXFR-ONLY will reply | A IXFR server receiving a DNS message requesting IXFR-ONLY will reply | |||
| exactly as described in RFC 1995 [RFC1995] if it is able to produce | as described in RFC 1995 [RFC1995] if it is able to produce an IXFR | |||
| an IXFR for the serial requested. | for the serial number requested. | |||
| If the master is is not able to reply with an IXFR it MUST NOT reply | If the IXFR server is is not able to reply with an IXFR it MUST NOT | |||
| with an AXFR. Instead, it MUST reply with RCODE CannotIXFR. | reply with an AXFR unless AXFR result is smaller than IXFR result. | |||
| Instead, it MUST reply with RCODE CannotIXFR. (!FIXME) | ||||
| 3. Slave Side | If the IXFR result is larger than an AXFR, then an IXFR server MAY | |||
| reply with an AXFR result instead. This is an optimization, and IXFR | ||||
| servers MAY only reply with AXFR if they are certain that the reply | ||||
| using AXFR is smaller than an equivalent IXFR reply. | ||||
| A slave who wishes to use IXFR-ONLY will send a message to one of the | 3. IXFR Client Side | |||
| masters. The format is exactly the same as for IXFR, except the | ||||
| IXFR-ONLY type code is used instead of the IXFR type code. | ||||
| If the master replies with IXFR, then the slave is done. | An IXFR client who wishes to use IXFR-ONLY will send a message to one | |||
| of the IXFR servers. The format is exactly the same as for IXFR, | ||||
| except the IXFR-ONLY QTYPE code is used instead of the IXFR QTYPE | ||||
| code. | ||||
| If the master replies with an RCODE of CannotIXFR, then the slave | If the IXFR server replies with IXFR, then the IXFR client is done. | |||
| proceeds on to a different master. In this case the master | ||||
| implements IXFR-ONLY, but does not have the serial requested. | ||||
| If the master replies with any RCODE other than CannotIXFR or | If the IXFR server replies with an RCODE of CannotIXFR, then the IXFR | |||
| NoError, then the slave proceeds on to a different master. In this | client proceeds on to a different IXFR server. In this case the IXFR | |||
| case the server does not implement IXFR-ONLY. | server implements IXFR-ONLY, but does not have information about zone | |||
| with the serial number requested. | ||||
| If the slave attempts IXFR-ONLY to each master and none reply with an | If the IXFR server replies with any RCODE other than CannotIXFR or | |||
| incremental transfer, then it should attempt an IXFR as described in | NoError, then the IXFR client proceeds on to a different IXFR server. | |||
| RFC 1995 [RFC1995] to each of the servers which replied with an RCODE | In this case the IXFR server does not implement IXFR-ONLY. | |||
| other than CannotIXFR or NoError. | ||||
| The method described above allows slaves to operate normally to have | If the IXFR client attempts IXFR-ONLY to each IXFR server and none of | |||
| some masters who support IXFR-ONLY, and some who do not. Slaves MAY | them reply with an incremental transfer (IXFR), then it should | |||
| remember which masters support IXFR-ONLY and query those masters | attempt an IXFR as described in RFC 1995 [RFC1995] to each of the | |||
| first. However since masters may change software or even run a mix | IXFR servers which replied with an RCODE other than CannotIXFR or | |||
| of software, slaves MUST attempt to query each master periodically | NoError. | |||
| when they attempt to get new versions of a zone. | ||||
| Implementations SHOULD allow slaves to disable IXFR-ONLY for a given | The method described above allows IXFR clients to operate normally in | |||
| master, if this is known in advance. These masters are treated as if | situatians where some of the IXFR servers do support IXFR-ONLY, and | |||
| they replied with an RCODE other than CannotIXFR or NoError, although | some who do not. IXFR clients MAY remember which IXFR servers | |||
| no query with IXFR-ONLY is actually sent. | support IXFR-ONLY and query those IXFR servers first. However since | |||
| IXFR servers may change software or even run a mix of software, IXFR | ||||
| clients MUST attempt to query each IXFR server periodically when they | ||||
| attempt to get new versions of a zone. | ||||
| Implementations MAY allow IXFR clients to disable IXFR-ONLY for a | ||||
| given IXFR server, if this is known in advance. These IXFR servers | ||||
| are treated as if they replied with an RCODE other than CannotIXFR or | ||||
| NoError, although no query with IXFR-ONLY is actually sent. | ||||
| 4. Applicability of IXFR-ONLY | 4. Applicability of IXFR-ONLY | |||
| Implementations MUST allow slaves to disable IXFR-ONLY completely. | Implementations SHOULD allow IXFR clients to disable IXFR-ONLY | |||
| completely. | ||||
| Implementations SHOULD allow slaves to disable IXFR-ONLY for a | Implementations MAY allow IXFR clients to disable IXFR-ONLY for a | |||
| specific zone. This may be useful for small zones, where fallback to | specific zone. This may be useful for small zones, where fallback to | |||
| AXFR is cheap, or in other cases where IXFR-ONLY is causing problems. | AXFR is cheap, or in other cases where IXFR-ONLY is causing problems. | |||
| Usage of IXFR-ONLY may cause slaves to prefer particular masters, by | Usage of IXFR-ONLY may cause IXFR clients to prefer particular IXFR | |||
| shifting load to ones that support IXFR-ONLY. If this a problem, | servers, by shifting load to ones that support IXFR-ONLY. If this a | |||
| then administrators can disable IXFR-ONLY. | problem, then administrators can disable IXFR-ONLY in implementations | |||
| that allow it. | ||||
| If a slave has a single master for a zone, it SHOULD use IXFR rather | If a IXFR client has a single IXFR server for a zone, it SHOULD use | |||
| than IXFR-ONLY. | IXFR rather than IXFR-ONLY. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| IANA allocates the new IXFR-ONLY TYPE, which means "incremental | IANA allocates the new IXFR-ONLY QTYPE, which means "incremental | |||
| transfer only". IANA allocates the CannotIXFR RCODE, which means | transfer only". IANA allocates the CannotIXFR RCODE, which means | |||
| "Server cannot provide IXFR for zone". | "Server cannot provide IXFR for zone". | |||
| 6. Security Considerations | 6. Security Considerations | |||
| IXFR-ONLY may be used by someone to get information about the state | IXFR-ONLY may be used by someone to get information about the state | |||
| of masters by providing a quick and efficient way to check which | of IXFR servers by providing a quick and efficient way to check which | |||
| versions of a zone each master supports. Zones should be secured via | versions of a zone each IXFR server supports. Zones should be | |||
| TSIG [RFC2845] prevent unauthorized information exposure. However, | secured via TSIG [RFC2845] to prevent unauthorized information | |||
| even administrators of master servers may not want this information | exposure. However, even administrators of IXFR servers may not want | |||
| given to slaves, in which case they will need to disable IXFR-ONLY. | this information given to IXFR clients, in which case they will need | |||
| to disable IXFR-ONLY. | ||||
| 7. Normative References | 7. Normative References | |||
| [RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, | [RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, | |||
| August 1996. | August 1996. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D., and B. | [RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D., and B. | |||
| Wellington, "Secret Key Transaction Authentication for DNS | Wellington, "Secret Key Transaction Authentication for DNS | |||
| (TSIG)", RFC 2845, May 2000. | (TSIG)", RFC 2845, May 2000. | |||
| Authors' Addresses | Authors' Addresses | |||
| Ondrej Sury | Ondrej Sury | |||
| CZ.NIC | CZ.NIC | |||
| CZ.NIC, z. s. p. o. Americka 23 | Americka 23 | |||
| 120 00 Praha 2 | 120 00 Praha 2 | |||
| CZ | CZ | |||
| Phone: +420 222 745 110 | ||||
| Email: ondrej.sury@nic.cz | Email: ondrej.sury@nic.cz | |||
| Shane Kerr (editor) | Shane Kerr (editor) | |||
| ISC | ISC | |||
| Bennebrokestraat 17-I | Bennebrokestraat 17-I | |||
| 1015 PE Amsterdam | 1015 PE Amsterdam | |||
| NL | NL | |||
| Phone: +31 64 6336297 | Phone: +31 64 6336297 | |||
| Email: shane@isc.org | Email: shane@isc.org | |||
| End of changes. 32 change blocks. | ||||
| 83 lines changed or deleted | 120 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||