Extension Mechanisms for DNS (EDNS0)
RFC 2671

Document Type RFC - Proposed Standard (August 1999; No errata)
Obsoleted by RFC 6891
Author Paul Vixie 
Last updated 2013-03-02
Stream Internent Engineering Task Force (IETF)
Formats plain text html pdf htmlized (tools) htmlized bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
IESG IESG state RFC 2671 (Proposed Standard)
Consensus Boilerplate Unknown
Telechat date
Responsible AD (None)
Send notices to (None)
Network Working Group                                            P. Vixie
Request for Comments: 2671                                            ISC
Category: Standards Track                                     August 1999

                  Extension Mechanisms for DNS (EDNS0)

Status of this Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (1999).  All Rights Reserved.


   The Domain Name System's wire protocol includes a number of fixed
   fields whose range has been or soon will be exhausted and does not
   allow clients to advertise their capabilities to servers.  This
   document describes backward compatible mechanisms for allowing the
   protocol to grow.

1 - Rationale and Scope

1.1. DNS (see [RFC1035]) specifies a Message Format and within such
     messages there are standard formats for encoding options, errors,
     and name compression.  The maximum allowable size of a DNS Message
     is fixed.  Many of DNS's protocol limits are too small for uses
     which are or which are desired to become common.  There is no way
     for implementations to advertise their capabilities.

1.2. Existing clients will not know how to interpret the protocol
     extensions detailed here.  In practice, these clients will be
     upgraded when they have need of a new feature, and only new
     features will make use of the extensions.  We must however take
     account of client behaviour in the face of extra fields, and design
     a fallback scheme for interoperability with these clients.

Vixie                       Standards Track                     [Page 1]
RFC 2671          Extension Mechanisms for DNS (EDNS0)       August 1999

2 - Affected Protocol Elements

2.1. The DNS Message Header's (see [RFC1035 4.1.1]) second full 16-bit
     word is divided into a 4-bit OPCODE, a 4-bit RCODE, and a number of
     1-bit flags.  The original reserved Z bits have been allocated to
     various purposes, and most of the RCODE values are now in use.
     More flags and more possible RCODEs are needed.

2.2. The first two bits of a wire format domain label are used to denote
     the type of the label.  [RFC1035 4.1.4] allocates two of the four
     possible types and reserves the other two.  Proposals for use of
     the remaining types far outnumber those available.  More label
     types are needed.

2.3. DNS Messages are limited to 512 octets in size when sent over UDP.
     While the minimum maximum reassembly buffer size still allows a
     limit of 512 octets of UDP payload, most of the hosts now connected
     to the Internet are able to reassemble larger datagrams.  Some
     mechanism must be created to allow requestors to advertise larger
     buffer sizes to responders.

3 - Extended Label Types

3.1. The "0 1" label type will now indicate an extended label type,
     whose value is encoded in the lower six bits of the first octet of
     a label.  All subsequently developed label types should be encoded
     using an extended label type.

3.2. The "1 1 1 1 1 1" extended label type will be reserved for future
     expansion of the extended label type code space.

4 - OPT pseudo-RR

4.1. One OPT pseudo-RR can be added to the additional data section of
     either a request or a response.  An OPT is called a pseudo-RR
     because it pertains to a particular transport level message and not
     to any actual DNS data.  OPT RRs shall never be cached, forwarded,
     or stored in or loaded from master files.  The quantity of OPT
     pseudo-RRs per message shall be either zero or one, but not

4.2. An OPT RR has a fixed part and a variable set of options expressed
     as {attribute, value} pairs.  The fixed part holds some DNS meta
     data and also a small collection of new protocol elements which we
     expect to be so popular that it would be a waste of wire space to
     encode them as {attribute, value} pairs.

Vixie                       Standards Track                     [Page 2]
RFC 2671          Extension Mechanisms for DNS (EDNS0)       August 1999

4.3. The fixed part of an OPT RR is structured as follows:

     Field Name   Field Type     Description
     NAME         domain name    empty (root domain)
     TYPE         u_int16_t      OPT
     CLASS        u_int16_t      sender's UDP payload size
     TTL          u_int32_t      extended RCODE and flags
     RDLEN        u_int16_t      describes RDATA
     RDATA        octet stream   {attribute,value} pairs

4.4. The variable part of an OPT RR is encoded in its RDATA and is
     structured as zero or more of the following:
Show full document text