Network Working Group | M. Andrews |
Internet-Draft | ISC |
Expires: October 17, 2014 | April 15, 2014 |
EDNS Version 1 (EDNS(1))
draft-andrews-edns1-01.txt
It is impracticable to deploy new EDNS options, with EDNS version 0, on a global scale due to inconsistent server behaviour in deployed servers when a EDNS option is present in the query. Most existing EDNS option deployment has been small scale between essentially consenting implementations.
When EDNS options were added to every outgoing recursive query made it became clear that trial and error to discover the level of EDNS version 0 support was not practicable.
This document request that EDNS version 1 be assigned so that consistent well defined behaviour can be seen when a EDNS option is present.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 17, 2014.
Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Extended DNS (EDNS) supports adding EDNS options to the request. Unfortunately it was not clear in the original specification [RFC 2671] that unknown EDNS options should be ignored. The updated EDNS specification [RFC 6891] makes ignoring unknown EDNS options a explicit requirement but failed to bump the EDNS version number.
Currently there are EDNS version 0 servers that ignore unknown EDNS options. Those that return FORMERR when unknown EDNS options are present. Those that return BADVERS when unknown EDNS options are present. Those that return REFUSED when unknown EDNS options are present and presumably those that return NOTIMP (though the author has not seen one).
FORMERR, REFUSED and NOTIMP are all returned from servers that do not support EDNS. It is impracticable for clients to have yet more overloading of these error codes and more trial and error to workout what is and is not supported when there is a clear method available to resolve the differences.
There has also been observed ambiguity when responding query types that are not supported by a server resulting NOTIMP, FORMERR, SERVFAIL and REFUSED answers from servers rather than the expected result codes SUCCESS (no data exist) or NAME ERROR responses depending apon whether the names exists or not which is implictly implied by [RFC 1034], Section 4.3.2 and further by [RFC 3597].
EDNS version 1 makes returning SUCCESS (no data exist) or NAME ERROR when a type is not supported by the server a explict requirement rather than NOTIMP, FORMERR, SERVFAIL REFUSED or any other error code.
This document requests EDNS version 1 be assigned and that the EDNS behaviour be that of [RFC 6891] with the exception of the version being 1 rather than 0. EDNS version 1 clients then will have well defined behaviour when sending unknown EDNS options (they should be ignored) to EDNS version 1 servers. BADVERS to EDNS version 0 servers and FORMERR, REFUSED, NOTIMP to servers that do not support EDNS and return a error code.
This is effectively a protocol reset for DNS and EDNS.
Removing ambiguity in responses in important as it allows a client to cleanly decide based on error codes what to do, rather than doing trial and error to discover the server's behaviour.
EDNS version 1 addresses two observed sources of ambiguity, EDNS version 0 with unknown options and unknown query type response handling.
EDNS version one behaviour is identical to that described in [RFC 6891] with the exception to that the EDNS version is assigned to 1.
This document be the reference document for EDNS version 1.
The document does not introduce any security issues that are not addressed in [RFC 6891].
[RFC 1034] | Mockapetris, P., "DOMAIN NAMES - CONCEPTS AND FACILITIES", STD 13, RFC 1034, November 1987. |
[RFC 3597] | Gustafsson, A., "Handling of Unknown DNS Resource Record (RR) Types", RFC 3597, September 2003. |
[RFC 6891] | Damas, J., Graff, M. and P. Vixie, "Extension Mechanisms for DNS (EDNS(0))", STD 75, RFC 6891, April 2013. |
[RFC 2671] | Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC 1999, August 1999. |