RFC 6891

Extension Mechanisms for DNS (EDNS(0))
Standards Track Obsoletes: RFC 2671
April 2013
Abstract: EDNS(0) extends the DNS protocol to support larger messages, additional flags, and new option codes. It is required by DNSSEC and enables modern DNS features needed for 3GPP DNS-based service discovery.
Canonical source: https://www.rfc-editor.org/rfc/rfc6891  |  IETF Datatracker

1. Introduction

▶

The original DNS message format (RFC 1035) limits messages to 512 bytes (UDP) and has no extension mechanism. EDNS(0) uses a pseudo-resource-record (OPT RR) in the additional section to advertise extended capabilities.

EDNS(0) is mandatory for DNSSEC (which requires larger messages for signatures). It is also needed for DNS-based service discovery in 3GPP networks where SRV records with multiple entries may exceed 512 bytes.

2. OPT Pseudo-RR

▶
Field Meaning
NAME Always root domain (0x00)
TYPE 41 (OPT)
CLASS Requestor's UDP payload size (e.g., 4096)
TTL Extended RCODE + flags (DO bit for DNSSEC)
RDDATA Variable-length options (OPTION-CODE + OPTION-DATA)

3. Key Extensions

▶
  • UDP message size: Advertise support for messages up to 4096+ bytes (vs. 512 byte limit)
  • DO (DNSSEC OK) bit: Enables DNSSEC-aware responses with RRSIG records
  • Extended RCODE: 12-bit RCODE support (vs. 4-bit original) for additional error codes
  • EDNS options: Extensible option codes for future features
  • COOKIE option: DNS Cookies for DoS mitigation and off-path spoofing protection

4. Security Considerations

▶
  • Larger DNS messages can be used for amplification attacks — rate limiting recommended
  • EDNS is required for DNSSEC validation — disabling EDNS breaks DNSSEC
  • DNS Cookie option helps prevent address spoofing and amplification
  • Middleboxes that strip OPT records can break DNSSEC and other modern DNS features