<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version  -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>


<rfc ipr="trust200902" docName="draft-peltan-edns-presentation-format-01" category="std" consensus="true" submissionType="IETF" updates="8427">
  <front>
    <title abbrev="edns-presentation-and-json-format">EDNS Presentation and JSON Format</title>

    <author initials="L." surname="Peltan" fullname="Libor Peltan">
      <organization>CZ.NIC</organization>
      <address>
        <email>libor.peltan@nic.cz</email>
      </address>
    </author>
    <author initials="T." surname="Carpay" fullname="Tom Carpay">
      <organization>NLnet Labs</organization>
      <address>
        <email>tomcarpay@gmail.com</email>
      </address>
    </author>

    <date />

    
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document describes textual and JSON representation format of EDNS option.
It also modifies the escaping rules of JSON representation of DNS messages, previously defined in RFC8427.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>A DNS record<xref target="RFC1035"/> of any type can be converted between its binary Wire format and textual Presentation format. The Wire format is used in DNS messages transferred over the Internet, while the Presentation format is used not only in Zone Files (called "master files" in the referenced document), but also to display the contents of DNS messages to humans by debugging utilities, and possible other use-cases.</t>

<t>The Presentation format can be however processed also programatically and also converted back to Wire Format unambiguously.</t>

<t>The EDNS<xref target="RFC6891"/> option pseudorecord does not appear in Zone Files, but it sometimes needs to be converted to human-readable or even machine-readable textual representation.
This document describes such a Presentation Format of the OPT pseudorecord.
It is advised to use this when displaying an OPT pseudorecord to humans.
It is recommended to use this when the textual format is expected to be machine-processed further.</t>

<t>The JSON<xref target="RFC8259"/> representation<xref target="RFC8427"/> of DNS messages is also helpful as both human-readable and machine-readable format (despite the limitation in non-preservation of the order of options, which prevents reversing the conversion unambiguosly), but it did not define JSON representation of EDNS option pseudorecord.
This document defines it.</t>

<t>The aforementioned document<xref target="RFC8427"/> also defined ambiguous and possibly conflicting rules for escaping special characters when representing DNS names in JSON.
This documents modifies and clarifies those rules.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The key words "<strong>MUST</strong>", "<strong>MUST NOT</strong>", "<strong>REQUIRED</strong>",
"<strong>SHALL</strong>", "<strong>SHALL NOT</strong>", "<strong>SHOULD</strong>", "<strong>SHOULD NOT</strong>",
"<strong>RECOMMENDED</strong>", "<strong>NOT RECOMMENDED</strong>", "<strong>MAY</strong>", and
"<strong>OPTIONAL</strong>" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/><xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>

<t><list style="symbols">
  <t>EDNS(0) signifies EDNS version 0.</t>
  <t>"Decimal value" means an integer displayed in decimals with no leading zeroes.</t>
  <t>Base16 is the representation of arbitrary binary data by an even number of case-insensitive hexadecimal digits (<xref section="8" sectionFormat="comma" target="RFC4648"/>).</t>
  <t>"Followed by" in terms of strings denotes their concatenation, with no other characters nor space between them.</t>
  <t>Backslash is the character called also Reverse Solidus, ASCII code 0x5c.</t>
  <t>Zero-octet is an octet with all bits set to 0, i.e. ASCII code 0x00.</t>
  <t>"Note" denotes a sentence that is not normative. Instead, it points out some non-obvious consequences of previous statements.</t>
</list></t>

</section>
<section anchor="independent"><name>Version-independent Presentation Format</name>

<t>EDNS versions other than 0 are not yet specified, but an OPT pseudorecord with version field set to value other than zero might in theory appear in DNS messages.
This section specifies how to convert such OPT pseudorecord to Presentation format.
This procedure SHOULD NOT be used for EDNS(0).
One possible exception is displaying a malformed EDNS(0) record.</t>

<t>OPT pseudorecord is in this case represented the same way as a RR of unknown type according to <xref section="5" sectionFormat="comma" target="RFC3597"/>.
In specific:</t>

<t><list style="symbols">
  <t>Owner Name is the Owner Name of the OPT record.
Note that this is always <spanx style="verb">.</spanx> (DNS Root Domain Name) unless malformed.</t>
  <t>TTL is Decimal value of the 32-bit big-endian integer appearing at the TTL position of OPT pseudorecord Wire format, see <xref section="6.1.3" sectionFormat="comma" target="RFC6891"/>.</t>
  <t>CLASS is a text representation of the 16-bit integer at the CLASS position of OPT pseudorecord Wire format (UDP payload size happens to appear there).
This will usually result in <spanx style="verb">CLASS####</spanx> (where #### will be the Decimal value), but it might also result for example in <spanx style="verb">IN</spanx> or <spanx style="verb">CH</spanx> if the value is 1 or 4, respectively.</t>
  <t>TYPE is either <spanx style="verb">TYPE41</spanx> or <spanx style="verb">OPT</spanx>.</t>
  <t>RDATA is formatted by <spanx style="verb">\#</spanx>, its length as Decimal value, and data as Base16 as per <xref section="5" sectionFormat="comma" target="RFC3597"/>.</t>
</list></t>

<t>Example:</t>

<figure><artwork><![CDATA[
. 16859136 CLASS1232 TYPE41 \# 6 000F00020015
]]></artwork></figure>

</section>
<section anchor="edns0-presentation-format"><name>EDNS(0) Presentation Format</name>

<t>The EDNS(0) Presentation Format follows RR format of the master file (<xref section="5.1" sectionFormat="comma" target="RFC1035"/>), including quotation of non-printable characters, multi-line format using round brackets, and semicolons denoting comments.</t>

<t>Depending on use-case, implementations MAY choose to display only RDATA.
In the case the resource-record-like Presentation format is desired, the following applies:</t>

<t><list style="symbols">
  <t>Owner Name MUST be <spanx style="verb">.</spanx> (DNS Root Domain Name).</t>
  <t>TTL MAY be omitted.
If it is present, it MUST be <spanx style="verb">0</spanx> (zero).
Note that this differs from DNS RR wire-to-text conversion, as well as <xref target="independent">Version-independent Presentation Format</xref>.</t>
  <t>CLASS MAY be omitted.
If it is present, it MUST be <spanx style="verb">ANY</spanx>.</t>
  <t>TYPE MUST be <spanx style="verb">EDNS0</spanx>.</t>
</list></t>

<t>RDATA consists of at least three &lt;character-string&gt;s (<xref section="5.1" sectionFormat="comma" target="RFC1035"/>), one for each field.
Each field consists of a Field-name, followed by an equal sign (<spanx style="verb">=</spanx>), followed by a Field-value.
If the Field-value is empty or omitted, the equal sign MUST be omitted as well.
For each field, the Field-name and the Field-value are defined by this document, or by the specification of the respective EDNS Option.
If it is not, a generic Field-name and Field-value from <xref target="unrecognized"></xref> applies.
However, those generics MAY be used for any Option at all times.</t>

<t>The first three fields, <xref target="eflags">Flags</xref>, <xref target="extrcode">Extended RCODE</xref>, and <xref target="udpsize">UDP Payload Size</xref> MUST always be present.
The rest of the fields are based on Options in the OPT record <xref section="6.1.2" sectionFormat="comma" target="RFC6891"/>.
They MUST be presented in the same order as they appear in wire format.
It is recommended to use the multi-line format with comments at each field, together with a more human-readable form of the contents of each option when available.
See <xref target="eexamples">Examples</xref>.</t>

<section anchor="eflags"><name>Flags</name>

<t>The first field's Field-name is <spanx style="verb">FLAGS</spanx> and its Field-value is <spanx style="verb">0</spanx> (zero) if the EDNS flags is zero.</t>

<t>Otherwise, the Field-value consists of comma-separated list of the items <spanx style="verb">BIT##</spanx>, where <spanx style="verb">##</spanx> is a Decimal value.
<spanx style="verb">BITn</spanx> is present in the list if and only if <spanx style="verb">n</spanx>-th bit (the most significant bit being <spanx style="verb">0</spanx>-th) of flags is set to <spanx style="verb">1</spanx>.
If the Flag of the bit is specified in <xref target="IANA.EDNS.Flags"/>, the Flag SHOULD be used instead of <spanx style="verb">BIT##</spanx>.
(So far, the only known Flag is <spanx style="verb">DO</spanx>.)</t>

<t>Examples:</t>

<figure><artwork><![CDATA[
FLAGS=0
]]></artwork></figure>

<figure><artwork><![CDATA[
FLAGS=DO,BIT1
]]></artwork></figure>

<figure><artwork><![CDATA[
FLAGS=BIT3,BIT7,BIT15
]]></artwork></figure>

</section>
<section anchor="extrcode"><name>Extended RCODE</name>

<t>The second field's Field-name is <spanx style="verb">RCODE</spanx> and its Field-value is <spanx style="verb">RCODE###</spanx>, where <spanx style="verb">###</spanx> stands for the DNS message extended RCODE as Decimal value, computed from both the OPT record and the DNS Message Header.
If the lower four bits of extended RCODE in DNS Message Header can not be used, the Field-value is <spanx style="verb">UNKNOWNRCODE###</spanx>, where <spanx style="verb">###</spanx> stands for the DNS message extended RCODE as Decimal value, with the lower four bits set to zero (i.e. the four-bit left shift still applies).
If the extended RCODE has been computed completely and it is listed in <xref target="IANA.RCODEs"/>, its Name should be used instead of <spanx style="verb">RCODE###</spanx>.
The Name is case-insensitive.</t>

<t>Examples:</t>

<figure><artwork><![CDATA[
RCODE=NXDOMAIN
]]></artwork></figure>
<figure><artwork><![CDATA[
RCODE=RCODE3841
]]></artwork></figure>
<figure><artwork><![CDATA[
RCODE=UNKNOWNRCODE3840
]]></artwork></figure>

</section>
<section anchor="udpsize"><name>UDP Payload Size</name>

<t>The third field's Field-name is <spanx style="verb">UDPSIZE</spanx> and its Field-value is the UDP payload size as Decimal value.</t>

</section>
<section anchor="unrecognized"><name>Unrecognized Option</name>

<t>EDNS options that are not part of this specification and their own specifications do not specify their Field-name and Field-value MUST be displayed according this subsection.
Other options (specified below or otherwise) MAY be displayed so as well.</t>

<t>Unrecognized option Field-name is <spanx style="verb">OPT##</spanx>, where <spanx style="verb">##</spanx> stands for its OPTION-CODE, and Field-value is its OPTION-VALUE displayed as Base16.</t>

</section>
<section anchor="llq-option"><name>LLQ Option</name>

<t>The LLQ (OPTION-CODE 1 <xref target="RFC8764"/>) Field-name is <spanx style="verb">LLQ</spanx> and Field-value is comma-separated tuple of LLQ-VERSION, LLQ-OPCODE, LLQ-ERROR, LLQ-ID, and LLQ-LEASE as Decimal values.
The numeric values of LLQ-OPCODE and LLQ-ERROR MAY be substituted with their textual representations listed in <xref section="3.1" sectionFormat="comma" target="RFC8764"/>.</t>

<t>Examples:</t>

<figure><artwork><![CDATA[
LLQ=1,1,0,0,3600
]]></artwork></figure>
<figure><artwork><![CDATA[
LLQ=1,LLQ-SETUP,NO-ERROR,0,3600
]]></artwork></figure>

</section>
<section anchor="nsid-option"><name>NSID Option</name>

<t>The NSID (OPTION-CODE 3 <xref target="RFC5001"/>) Field-name is <spanx style="verb">NSID</spanx> and Field-value is its OPTION-VALUE displayed as Base16.</t>

<t>It is recommended to add a comment with ASCII representation of the value.</t>

</section>
<section anchor="dau"><name>DAU, DHU and N3U Options</name>

<t>The DAU, DHU, and N3U (OPTION-CODES 5, 6, 7, respectively <xref target="RFC6975"/>) Field-names are <spanx style="verb">DAU</spanx>, <spanx style="verb">DHU</spanx>, and <spanx style="verb">N3U</spanx>, respectively, and their Field-values consist of comma-separated lists of ALG-CODEs as Decimal values or the textual representations of the ALG-CODEs (called mnemonic in the referenced documents) found in their respective IANA registries <xref target="IANA.EDNS.DAU"/><xref target="IANA.EDNS.DHU"/><xref target="IANA.EDNS.N3U"/>.</t>

<t>Examples:</t>

<figure><artwork><![CDATA[
DAU=RSASHA256,RSASHA512,ECDSAP256SHA256,ECDSAP384SHA384,ED25519
DHU=SHA-1,SHA-256,SHA-384
N3U=SHA-1
]]></artwork></figure>
<figure><artwork><![CDATA[
DAU=8,10,13,14,15
DHU=1,2,4
N3U=1
]]></artwork></figure>

</section>
<section anchor="edns-client-subnet-option"><name>Edns-Client-Subnet Option</name>

<t>The EDNS Client Subnet (OPTION-CODE 8 <xref target="RFC7871"/>) Field-name is <spanx style="verb">ECS</spanx> and if FAMILY is neither IPv4 (<spanx style="verb">1</spanx>) nor IPv6 (<spanx style="verb">2</spanx>), its Field-value is the whole OPTION-VALUE as Base16.
Otherwise, it consists of the textual IPv4 or IPv6 address (<xref section="3.4.1" sectionFormat="comma" target="RFC1035"/>, <xref section="2.2" sectionFormat="comma" target="RFC4291"/>), followed by a slash (<spanx style="verb">/</spanx>), followed by SOURCE PREFIX-LENGTH as Decimal value, followed by another slash, followed by SCOPE PREFIX-LENGTH as Decimal value.
If SCOPE PREFIX-LENGTH is zero, it MUST be omitted together with the second slash.</t>

<t>Examples:</t>

<figure><artwork><![CDATA[
ECS=1.2.3.4/24
]]></artwork></figure>
<figure><artwork><![CDATA[
ECS=1234::2/56/48
]]></artwork></figure>
<figure><artwork><![CDATA[
ECS=000520000102030405060708
]]></artwork></figure>

</section>
<section anchor="edns-expire-option"><name>EDNS EXPIRE Option</name>

<t>The EDNS EXPIRE (OPTION-CODE 9 <xref target="RFC7314"/>) Field-name is <spanx style="verb">EXPIRE</spanx> and its Field-value, if present, is displayed as Decimal value.</t>

</section>
<section anchor="cookie-option"><name>Cookie Option</name>

<t>The DNS Cookie (OPTION-CODE 10 <xref target="RFC7873"/>) Field-name is <spanx style="verb">COOKIE</spanx> and its Field-value consists of the Client Cookie as Base16, followed by a comma, followed by the Server Cookie as Base16.
The comma and Server Cookie are displayed only if OPTION-LENGTH is greater than 8.</t>

</section>
<section anchor="keepalive"><name>Edns-Tcp-Keepalive Option</name>

<t>The edns-tcp-keepalive (OPTION-CODE 11 <xref target="RFC7828"/>) Field-name is <spanx style="verb">KEEPALIVE</spanx> and its Field-value is the TIMEOUT in seconds displayed as decimal number with exactly one decimal digit and a dot as decimal separator.</t>

</section>
<section anchor="padding"><name>Padding Option</name>

<t>The Padding (OPTION-CODE 12 <xref target="RFC7830"/>) Field-name is <spanx style="verb">PADDING</spanx> and its Field-value is its OPTION-VALUE displayed as Base16.
If the OPTION-VALUE consists only of zero-octets, it SHOULD be substituted with an alternative Field-value <spanx style="verb">[###]</spanx>, where <spanx style="verb">###</spanx> stands for OPTION-LENGTH as Decimal value.</t>

</section>
<section anchor="chain-option"><name>CHAIN Option</name>

<t>The CHAIN (OPTION-CODE 13 <xref target="RFC7901"/>) Field-name is <spanx style="verb">CHAIN</spanx> and its Field-value, the Closest trust point, is displayed as a textual Fully-Qualified Domain Name.</t>

</section>
<section anchor="edns-key-tag-option"><name>Edns-Key-Tag Option</name>

<t>The edns-key-tag (OPTION-CODE 14 <xref section="4" sectionFormat="comma" target="RFC8145"/>) Field-name is <spanx style="verb">KEYTAG</spanx> and its Field-value is displayed as a comma-separated list of Decimal values.</t>

</section>
<section anchor="ede"><name>Extended DNS Error Option</name>

<t>The Extended DNS Error (OPTION-CODE 15 <xref target="RFC8914"/>) Field-name is <spanx style="verb">EDE</spanx> and the Field-value is its INFO-CODE as Decimal value.
It is recommended to add a comment with the Purpose of the given code (first presented in <xref section="5.2" sectionFormat="comma" target="RFC8914"/> and then governed by <xref target="IANA.EDNS.EDE"/>).</t>

<t>If the EXTRA-TEXT is nonempty, it MUST be displayed as another field, with Field-name <spanx style="verb">EDETXT</spanx> and Field-value being the EXTRA-TEXT string as-is.</t>

<t>Note that RFC1035-style escaping applies to all non-printable and non-ASCII characters, including some eventual UTF-8 bi-characters and possible trailing zero-octet.
Also note that any presence of spaces requires the whole &lt;character-string&gt; to be enclosed in quotes, not just the Field-value.</t>

<t>Examples:</t>

<figure><artwork><![CDATA[
EDE=18 ; Prohibited
]]></artwork></figure>
<figure><artwork><![CDATA[
EDE=6 ; DNSSEC_Bogus
"EDETXT=signature too short"
]]></artwork></figure>

</section>
</section>
<section anchor="eexamples"><name>Examples of EDNS(0) Presentation Format</name>

<t>The following examples shall illustrate the features of EDNS(0) Presentation format described above.
They may not make really sense and should not appear in normal DNS operation.</t>

<figure><artwork><![CDATA[
. 0 IN EDNS0 (
    FLAGS=DO
    RCODE=BADCOOKIE
    UDPSIZE=1232
    EXPIRE=86400
    COOKIE=36714f2e8805a93d,4654b4ed3279001b
    EDE=18 ; Prohibited
    "EDETXT=bad cookie\000"
    OPT1234=000004d2
    PADDING=[113]
    )
]]></artwork></figure>
<figure><artwork><![CDATA[
. 0 IN EDNS0 ( FLAGS=0 RCODE=BADSIG UDPSIZE=4096 EXPIRE
               NSID=6578616d706c652e636f6d2e ; example.com.
               DAU=8,10 KEEPALIVE=60.0 CHAIN=zerobyte\000.com.
               KEYTAG=36651,6113 PADDING=df24d08b0258c7de )
]]></artwork></figure>

</section>
<section anchor="jindependent"><name>Version-independent JSON representation</name>

<t>EDNS versions other than 0 are not yet specified, but an OPT pseudorecord with version field set to value other than zero might in theory appear in DNS messages.
This section specifies how to represent such OPT pseudorecord in JSON.
This procedure SHOULD NOT be used for EDNS(0).
One possible exception is displaying a malformed EDNS(0) record.</t>

<t>The OPT pseudorecord is in this case represented in JSON as on object called <spanx style="verb">EDNS</spanx> with following members:</t>

<t><list style="symbols">
  <t><spanx style="verb">NAME</spanx> - String with the Owner Name of the OPT record.
Note that this is always <spanx style="verb">.</spanx> (DNS Root Domain Name) unless malformed.
See <xref target="jsonescaping"></xref> for representing DNS names in JSON.</t>
  <t><spanx style="verb">TTL</spanx> - Integer with the 32-bit big-endian value appearing at the TTL position of OPT pseudorecord Wire format, see <xref section="6.1.3" sectionFormat="comma" target="RFC6891"/>.</t>
  <t><spanx style="verb">CLASS</spanx> - Integer with the 16-bit value at the CLASS position of OPT pseudorecord Wire format (UDP payload size happens to appear there).</t>
  <t><spanx style="verb">TYPE</spanx> - Integer with the value 41.
This member MAY be omitted.</t>
  <t><spanx style="verb">RDATAHEX</spanx> - String with the pseudorecord RDATA formatted as Base16.</t>
</list></t>

<t>Example:</t>

<figure><artwork><![CDATA[
"EDNS": {
    "NAME": ".",
    "TTL": 16859136,
    "CLASS": 1232,
    "RDATAHEX": "000f00020015"
}
]]></artwork></figure>

</section>
<section anchor="edns0-representation-in-json"><name>EDNS(0) Representation in JSON</name>

<t>The EDNS(0) OPT record can be represented in JSON as an object called <spanx style="verb">EDNS0</spanx>.
It MUST contain the three members (name-value pairs), <xref target="jflags">Flags</xref>, <xref target="jextrcode">Extended RCODE</xref>, and <xref target="judpsize">UDP Payload Size</xref>.
The rest of the members are based on Options in the OPT record <xref section="6.1.2" sectionFormat="comma" target="RFC6891"/>.
For each member, its name and value are defined by this document, or by the specification of the respective EDNS Option.
If it is not, a generic name and value from <xref target="junrecognized"></xref> applies.
However, those generics MAY be used for any Option at all times.
Note that the order of members is not preserved in JSON.</t>

<section anchor="jflags"><name>Flags</name>

<t>The JSON member name is <spanx style="verb">FLAGS</spanx> and its value is an Array of Strings <spanx style="verb">BIT##</spanx>, where <spanx style="verb">##</spanx> is a Decimal value.
<spanx style="verb">BITn</spanx> is present in the Array if and only if <spanx style="verb">n</spanx>-th bit (the most significant bit being <spanx style="verb">0</spanx>-th) of flags is set to <spanx style="verb">1</spanx>.
If the Flag of the bit is specified in <xref target="IANA.EDNS.Flags"/>, the Flag SHOULD be used instead of <spanx style="verb">BIT##</spanx>.
(So far, the only known Flag is <spanx style="verb">DO</spanx>.)</t>

</section>
<section anchor="jextrcode"><name>Extended RCODE</name>

<t>The JSON member name is <spanx style="verb">RCODE</spanx> and its value is a String containing Field-value from <xref target="extrcode"></xref>.</t>

</section>
<section anchor="judpsize"><name>UDP Payload Size</name>

<t>The JSON member name is <spanx style="verb">UDPSIZE</spanx> and its value is an Integer with UDP payload size.</t>

</section>
<section anchor="junrecognized"><name>Unrecognized Option</name>

<t>EDNS options that are not part of this specification and their own specifications do not specify their JSON member name and value MUST be displayed according this subsection.
Other options (specified below or otherwise) MAY be displayed so as well.</t>

<t>Unrecognized option JSON member name is <spanx style="verb">OPT##</spanx>, where <spanx style="verb">##</spanx> stands for its OPTION-CODE as Decimal value, and its value is a String containing its OPTION-VALUE encoded as Base16.</t>

</section>
<section anchor="llq-option-1"><name>LLQ Option</name>

<t>The LLQ (OPTION-CODE 1 <xref target="RFC8764"/>) JSON member name is <spanx style="verb">LLQ</spanx> and its value is an Object with members <spanx style="verb">LLQ-VERSION</spanx>, <spanx style="verb">LLQ-OPCODE</spanx>, <spanx style="verb">LLQ-ERROR</spanx>, <spanx style="verb">LLQ-ID</spanx>, and <spanx style="verb">LLQ-LEASE</spanx>, each representing the respective value as Integer.
Note that only numeric representation of these values is possible.</t>

<t>Example:</t>

<figure><artwork><![CDATA[
"LLQ": { "LLQ-VERSION": 1, "LLQ-OPCODE": 1, "LLQ-ERROR": 0,
         "LLQ-ID": 0, "LLQ-LEASE": 3600 }
]]></artwork></figure>

</section>
<section anchor="nsid-option-1"><name>NSID Option</name>

<t>The NSID (OPTION-CODE 3 <xref target="RFC5001"/>) JSON member name is <spanx style="verb">NSIDHEX</spanx> and its value is a String with OPTION-VALUE encoded as Base16.</t>

<t>Optionally, one more member of <spanx style="verb">EDNS0</spanx> Object MAY be added as well, with the name <spanx style="verb">NSID</spanx> and the value being a String with the OPTION-VALUE interpreted as UTF-8.
Note that in that case, JSON escaping routines (<xref section="7" sectionFormat="comma" target="RFC8259"/>) take place, possibly using the <spanx style="verb">\uXXXX</spanx> notation.</t>

</section>
<section anchor="jdau"><name>DAU, DHU and N3U Options</name>

<t>The DAU, DHU, and N3U (OPTION-CODES 5, 6, 7, respectively <xref target="RFC6975"/>) JSON member names are <spanx style="verb">DAU</spanx>, <spanx style="verb">DHU</spanx>, and <spanx style="verb">N3U</spanx>, respectively, and their values are Arrays of Integers with ALG-CODEs.</t>

<t>Example:</t>

<figure><artwork><![CDATA[
"DAU": [ 8, 10, 13, 14, 15 ]
"DHU": [ 1, 2, 4 ]
"N3U": [ 1 ]
]]></artwork></figure>

</section>
<section anchor="edns-client-subnet-option-1"><name>Edns-Client-Subnet Option</name>

<t>The EDNS Client Subnet (OPTION-CODE 8 <xref target="RFC7871"/>) JSON member name is <spanx style="verb">ECS</spanx> and its value is an Object with following members:</t>

<t><list style="symbols">
  <t><spanx style="verb">FAMILY</spanx> - Integer with FAMILY</t>
  <t><spanx style="verb">IP</spanx> - String with the textual IPv4 or IPv6 address (<xref section="3.4.1" sectionFormat="comma" target="RFC1035"/>, <xref section="2.2" sectionFormat="comma" target="RFC4291"/>), or a String with ADDRESS encoded as Base16 if FAMILY is neither <spanx style="verb">1</spanx> or <spanx style="verb">2</spanx></t>
  <t><spanx style="verb">SOURCE</spanx> - Integer with SOURCE PREFIX-LENGTH</t>
  <t><spanx style="verb">SCOPE</spanx> - Integer with SCOPE PREFIX-LENGTH, omitted if zero</t>
</list></t>

<t>Examples:</t>

<figure><artwork><![CDATA[
"ECS": {
    "FAMILY": 1,
    "IP": "1.2.3.4",
    "SOURCE": 24
}
]]></artwork></figure>
<figure><artwork><![CDATA[
"ECS": {
    "FAMILY": 2,
    "IP": "1234::2",
    "SOURCE": 56,
    "SCOPE": 48
}
]]></artwork></figure>
<figure><artwork><![CDATA[
"ECS": {
    "FAMILY": 5,
    "IP": "0102030405060708"
    "SOURCE": 32
}
]]></artwork></figure>

</section>
<section anchor="edns-expire-option-1"><name>EDNS EXPIRE Option</name>

<t>The EDNS EXPIRE (OPTION-CODE 9 <xref target="RFC7314"/>) JSON member name is <spanx style="verb">EXPIRE</spanx> and its value is either an Integer or <spanx style="verb">null</spanx>.</t>

</section>
<section anchor="cookie-option-1"><name>Cookie Option</name>

<t>The DNS Cookie (OPTION-CODE 10 <xref target="RFC7873"/>) JSON member name is <spanx style="verb">COOKIE</spanx> and its value is an Array containing a String with the Client Cookie encoded as Base16 and, if present, another String with Server Cookie encoded as Base16.</t>

</section>
<section anchor="jkeepalive"><name>Edns-Tcp-Keepalive Option</name>

<t>The edns-tcp-keepalive (OPTION-CODE 11 <xref target="RFC7828"/>) JSON member name is <spanx style="verb">KEEPALIVE</spanx> and its value is the TIMEOUT in seconds formatted as a Number <xref section="6" sectionFormat="comma" target="RFC8259"/> (possibly a non-Integer).</t>

</section>
<section anchor="padding-option"><name>Padding Option</name>

<t>The Padding (OPTION-CODE 12 <xref target="RFC7830"/>) JSON member name is <spanx style="verb">PADDING</spanx> and its value is a String containing Field-value from <xref target="padding"></xref>.</t>

</section>
<section anchor="chain-option-1"><name>CHAIN Option</name>

<t>The CHAIN (OPTION-CODE 13 <xref target="RFC7901"/>) JSON member name is <spanx style="verb">CHAIN</spanx> and its value is a String with the OPTION-VALUE in the form of a textual Fully-Qualified Domain Name.
See <xref target="jsonescaping"></xref> for representing DNS names in JSON.</t>

</section>
<section anchor="edns-key-tag-option-1"><name>Edns-Key-Tag Option</name>

<t>The edns-key-tag (OPTION-CODE 14 <xref section="4" sectionFormat="comma" target="RFC8145"/>) JSON member name is <spanx style="verb">KEYTAG</spanx> and its value is an Array of Integers.</t>

</section>
<section anchor="jede"><name>Extended DNS Error Option</name>

<t>The Extended DNS Error (OPTION-CODE 15 <xref target="RFC8914"/>) JSON member name is <spanx style="verb">EDE</spanx> and its value is an Object with following members:</t>

<t><list style="symbols">
  <t><spanx style="verb">INFO-CODE</spanx> - Integer with the INFO-CODE</t>
  <t><spanx style="verb">Purpose</spanx> - String with Purpose of the INFO-CODE (<xref target="RFC8914"/>, Section 5.2)</t>
  <t><spanx style="verb">EXTRA-TEXT</spanx> - String with the EXTRA-TEXT</t>
</list></t>

<t>The EXTRA-TEXT member MUST be omitted if empty.
If its value contains non-printable or special (backslash, quote) characters, they MUST be escaped by the means of JSON Strings (<xref section="7" sectionFormat="comma" target="RFC8259"/>).</t>

</section>
</section>
<section anchor="jexamples"><name>Examples of EDNS(0) Representation in JSON</name>

<t>The following examples are the JSON representations of the examples in <xref target="eexamples"></xref>.
They may not make really sense and should not appear in normal DNS operation.</t>

<figure><artwork><![CDATA[
"EDNS0": {
    "FLAGS": [ "DO" ],
    "RCODE": "BADCOOKIE",
    "UDPSIZE": 1232,
    "EXPIRE": 86400,
    "COOKIE": [ "36714f2e8805a93d", "4654b4ed3279001b" ],
    "EDE": {
        "INFO-CODE": 18,
        "Purpose": "Prohibited",
        "EXTRA-TEXT": "bad cookie\u0000"
    },
    "OPT1234": "000004d2",
    "PADDING": "[113]"
}
]]></artwork></figure>
<figure><artwork><![CDATA[
"EDNS0": { "FLAGS": [ ], "RCODE": "BADSIG", "UDPSIZE": 4096,
           "EXPIRE": null, "NSIDHEX": "6578616d706c652e636f6d2e",
           "NSID": "example.com.", "DAU": [ 8, 10 ], "KEEPALIVE": 60.0,
           "CHAIN": "zerobyte\\000.com.", "KEYTAG": [ 36651, 6113 ],
           "PADDING": "df24d08b0258c7de" }
]]></artwork></figure>

</section>
<section anchor="guidelines-for-future-edns0-options"><name>Guidelines for Future EDNS(0) Options</name>

<t>This draft describes the presentation and JSON format of those ENDS(0) options which are known at the time of writing.
Other EDNS(0) options fall in the category of Unrecognized Options (<xref target="unrecognized"></xref>, <xref target="junrecognized"></xref>), unless their specifications define a presentation and JSON formats explicitly.
The following guidelines shall help defining them.</t>

<t>It is recommended to specify the presentation and JSON formats in every document defining new ENDS(0) options.
Those formats should follow the semantics of the options' values rather than the syntax, in order to make them more human-readable.
This includes displaying the values of enumerations in their text form rather than numeric (see how DAU option is treated <xref target="dau"></xref>, <xref target="jdau"></xref>), converting numeric amounts to comprehensible units (see Edns-Tcp-Keepalive Option <xref target="keepalive"></xref>, <xref target="jkeepalive"></xref>) and adding explanatory comments if useful (see Extended DNS Error <xref target="ede"></xref>, <xref target="jede"></xref>).</t>

<t>The formats MUST be defined in a way that the reversing the process of conversion back to wire format is possible and unambiguous, with the exception that JSON is not able to preserve the order of members within objects.
When a string is extracted from the wire format, the escaping rules for special characters MUST be considered.
Treating malformed wire format input MUST be taken into consideration when defining the presentation and JSON format, but a simple fallback to Unrecognized Option format is a viable solution.
See the above-defined presentation and JSON formats of existing EDNS(0) options for inspiration, analogies and tricks.</t>

</section>
<section anchor="jsonescaping"><name>Update Representing DNS Messages in JSON</name>

<t>This section is not related to EDNS.
This section updates <xref section="2.6" sectionFormat="comma" target="RFC8427"/>, including erratum 5439, which introduced contradicting MUSTs for escaping of backslashes.</t>

<t>In order to solve this contradiction and correctly represent a DNS name in JSON, it MUST be first converted to textual Presentation format according to <xref section="5.1" sectionFormat="comma" target="RFC1035"/> (called master file format in the referenced document), and the resulting &lt;character-string&gt; subsequently is inserted into JSON as String (<xref section="7" sectionFormat="comma" target="RFC8259"/>).</t>

<t>Note that the previous paragraph prescribes the following escaping strategy:
In the first step every problematic character (non-printable, backslash, dot within Label, or any octet) is either substituted with the sequence <spanx style="verb">\DDD</spanx>, where <spanx style="verb">DDD</spanx> is the three-digit decimal ASCII code, or in some cases (backslash, dot, any printable character) just prepended with a backslash.
In the second step, every quote (<spanx style="verb">"</spanx>) and backslash (<spanx style="verb">\</spanx>) in the resulting &lt;character-string&gt; is prepended with another backslash.
Note that the JSON escaping sequence <spanx style="verb">\uXXXX</spanx> (where <spanx style="verb">XXXX</spanx> is a hexadecimal Unicode code) is thus never needed.</t>

<t>Moreover, following requirements from <xref target="RFC8427"/> still hold:
The name MUST be represented as an absolute Fully-Qualified Domain Name.
Internationalized Domain Name (IDN) labels MUST be expressed in their A-label form, as described in <xref target="RFC5890"/>.</t>

<t>Example: the name with the Wire format <spanx style="verb">04005C2E2203646F6D00</spanx> can be represented in JSON as:</t>

<figure><artwork><![CDATA[
"NAME": "\\000\\\\\\046\".com."
]]></artwork></figure>

<t>but also as (among other ways):</t>

<figure><artwork><![CDATA[
"NAME": "\\000\\092\\.\\\".c\\om."
]]></artwork></figure>

</section>
<section anchor="iana"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>
<section anchor="security"><name>Security Considerations</name>

<t>This document only describes the textual representation of binary data, and therefore has no security impact on related protocols.</t>

<t>When implementing software, care must be taken to handle possibly inconsistent or broken input data.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>TODO</t>

</section>
<section anchor="implementation-status"><name>Implementation Status</name>

<t><strong>Note to the RFC Editor</strong>: please remove this entire appendix before publication.</t>

<t>None yet.</t>

</section>
<section anchor="change-history"><name>Change History</name>

<t><strong>Note to the RFC Editor</strong>: please remove this entire appendix before publication.</t>

<t><list style="symbols">
  <t>edns-presentation-format-00</t>
</list></t>

<ul empty="true"><li>
  <t>Initial public draft.</t>
</li></ul>

<t><list style="symbols">
  <t>edns-presentation-format-01</t>
</list></t>

<ul empty="true"><li>
  <t>Added Guidelines for Future EDNS(0) Options, dummy IANA Considerations and Security Considerations.</t>
</li></ul>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor='RFC1035' target='https://www.rfc-editor.org/info/rfc1035'>
<front>
<title>Domain names - implementation and specification</title>
<author fullname='P. Mockapetris' initials='P.' surname='Mockapetris'><organization/></author>
<date month='November' year='1987'/>
<abstract><t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System.  It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t></abstract>
</front>
<seriesInfo name='STD' value='13'/>
<seriesInfo name='RFC' value='1035'/>
<seriesInfo name='DOI' value='10.17487/RFC1035'/>
</reference>



<reference anchor='RFC6891' target='https://www.rfc-editor.org/info/rfc6891'>
<front>
<title>Extension Mechanisms for DNS (EDNS(0))</title>
<author fullname='J. Damas' initials='J.' surname='Damas'><organization/></author>
<author fullname='M. Graff' initials='M.' surname='Graff'><organization/></author>
<author fullname='P. Vixie' initials='P.' surname='Vixie'><organization/></author>
<date month='April' year='2013'/>
<abstract><t>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 requestors to advertise their capabilities to responders.  This document describes backward-compatible mechanisms for allowing the protocol to grow.</t><t>This document updates the Extension Mechanisms for DNS (EDNS(0)) specification (and obsoletes RFC 2671) based on feedback from deployment experience in several implementations.  It also obsoletes RFC 2673 (&quot;Binary Labels in the Domain Name System&quot;) and adds considerations on the use of extended labels in the DNS.</t></abstract>
</front>
<seriesInfo name='STD' value='75'/>
<seriesInfo name='RFC' value='6891'/>
<seriesInfo name='DOI' value='10.17487/RFC6891'/>
</reference>



<reference anchor='RFC8259' target='https://www.rfc-editor.org/info/rfc8259'>
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
<author fullname='T. Bray' initials='T.' role='editor' surname='Bray'><organization/></author>
<date month='December' year='2017'/>
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t><t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t></abstract>
</front>
<seriesInfo name='STD' value='90'/>
<seriesInfo name='RFC' value='8259'/>
<seriesInfo name='DOI' value='10.17487/RFC8259'/>
</reference>



<reference anchor='RFC8427' target='https://www.rfc-editor.org/info/rfc8427'>
<front>
<title>Representing DNS Messages in JSON</title>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<date month='July' year='2018'/>
<abstract><t>Some applications use DNS messages, or parts of DNS messages, as data.  For example, a system that captures DNS queries and responses might want to be able to easily search them without having to decode the messages each time.  Another example is a system that puts together DNS queries and responses from message parts.  This document describes a general format for DNS message data in JSON.  Specific profiles of the format in this document can be described in other documents for specific applications and usage scenarios.</t></abstract>
</front>
<seriesInfo name='RFC' value='8427'/>
<seriesInfo name='DOI' value='10.17487/RFC8427'/>
</reference>



<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference anchor='RFC4648' target='https://www.rfc-editor.org/info/rfc4648'>
<front>
<title>The Base16, Base32, and Base64 Data Encodings</title>
<author fullname='S. Josefsson' initials='S.' surname='Josefsson'><organization/></author>
<date month='October' year='2006'/>
<abstract><t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4648'/>
<seriesInfo name='DOI' value='10.17487/RFC4648'/>
</reference>



<reference anchor='RFC3597' target='https://www.rfc-editor.org/info/rfc3597'>
<front>
<title>Handling of Unknown DNS Resource Record (RR) Types</title>
<author fullname='A. Gustafsson' initials='A.' surname='Gustafsson'><organization/></author>
<date month='September' year='2003'/>
<abstract><t>Extending the Domain Name System (DNS) with new Resource Record (RR) types currently requires changes to name server software.  This document specifies the changes necessary to allow future DNS implementations to handle new RR types transparently.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3597'/>
<seriesInfo name='DOI' value='10.17487/RFC3597'/>
</reference>



<reference anchor='RFC6975' target='https://www.rfc-editor.org/info/rfc6975'>
<front>
<title>Signaling Cryptographic Algorithm Understanding in DNS Security Extensions (DNSSEC)</title>
<author fullname='S. Crocker' initials='S.' surname='Crocker'><organization/></author>
<author fullname='S. Rose' initials='S.' surname='Rose'><organization/></author>
<date month='July' year='2013'/>
<abstract><t>The DNS Security Extensions (DNSSEC) were developed to provide origin authentication and integrity protection for DNS data by using digital signatures.  These digital signatures can be generated using different algorithms.  This document specifies a way for validating end-system resolvers to signal to a server which digital signature and hash algorithms they support.  The extensions allow the signaling of new algorithm uptake in client code to allow zone administrators to know when it is possible to complete an algorithm rollover in a DNSSEC-signed zone.</t></abstract>
</front>
<seriesInfo name='RFC' value='6975'/>
<seriesInfo name='DOI' value='10.17487/RFC6975'/>
</reference>



<reference anchor='RFC4291' target='https://www.rfc-editor.org/info/rfc4291'>
<front>
<title>IP Version 6 Addressing Architecture</title>
<author fullname='R. Hinden' initials='R.' surname='Hinden'><organization/></author>
<author fullname='S. Deering' initials='S.' surname='Deering'><organization/></author>
<date month='February' year='2006'/>
<abstract><t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol.  The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t><t>This document obsoletes RFC 3513, &quot;IP Version 6 Addressing Architecture&quot;.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4291'/>
<seriesInfo name='DOI' value='10.17487/RFC4291'/>
</reference>



<reference anchor='RFC8914' target='https://www.rfc-editor.org/info/rfc8914'>
<front>
<title>Extended DNS Errors</title>
<author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></author>
<author fullname='E. Hunt' initials='E.' surname='Hunt'><organization/></author>
<author fullname='R. Arends' initials='R.' surname='Arends'><organization/></author>
<author fullname='W. Hardaker' initials='W.' surname='Hardaker'><organization/></author>
<author fullname='D. Lawrence' initials='D.' surname='Lawrence'><organization/></author>
<date month='October' year='2020'/>
<abstract><t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t></abstract>
</front>
<seriesInfo name='RFC' value='8914'/>
<seriesInfo name='DOI' value='10.17487/RFC8914'/>
</reference>



<reference anchor='RFC5890' target='https://www.rfc-editor.org/info/rfc5890'>
<front>
<title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
<author fullname='J. Klensin' initials='J.' surname='Klensin'><organization/></author>
<date month='August' year='2010'/>
<abstract><t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version.  It describes the document collection and provides definitions and other material that are common to the set.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5890'/>
<seriesInfo name='DOI' value='10.17487/RFC5890'/>
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="IANA.EDNS.Flags" target="https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-13">
  <front>
    <title>EDNS Header Flags</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IANA.RCODEs" target="https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6">
  <front>
    <title>DNS RCODEs</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IANA.EDNS.EDE" target="https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#extended-dns-error-codes">
  <front>
    <title>EDNS Extended Error Codes</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IANA.EDNS.DAU" target="https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml">
  <front>
    <title>DNS Security Algorithm Numbers</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IANA.EDNS.DHU" target="https://www.iana.org/assignments/ds-rr-types/ds-rr-types.xhtml#ds-rr-types-1">
  <front>
    <title>DNSSEC DS RR Type Digest Algorithms</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IANA.EDNS.N3U" target="https://www.iana.org/assignments/dnssec-nsec3-parameters/dnssec-nsec3-parameters.xhtml#dnssec-nsec3-parameters-3">
  <front>
    <title>DNSSEC NSEC3 Hash Algorithms</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>




<reference anchor='RFC8764' target='https://www.rfc-editor.org/info/rfc8764'>
<front>
<title>Apple's DNS Long-Lived Queries Protocol</title>
<author fullname='S. Cheshire' initials='S.' surname='Cheshire'><organization/></author>
<author fullname='M. Krochmal' initials='M.' surname='Krochmal'><organization/></author>
<date month='June' year='2020'/>
<abstract><t>Apple's DNS Long-Lived Queries (LLQ) is a mechanism for extending the DNS protocol to support change notification, thus allowing clients to learn about changes to DNS data without polling the server.  From 2005 onwards, LLQ was implemented in Apple products including Mac OS X, Bonjour for Windows, and AirPort wireless base stations.  In 2020, the LLQ protocol was superseded by the IETF Standards Track RFC 8765, &quot;DNS Push Notifications&quot;, which builds on experience gained with the LLQ protocol to create a superior replacement. </t><t>The existing LLQ protocol deployed and used from 2005 to 2020 is documented here to give background regarding the operational experience that informed the development of DNS Push Notifications, and to help facilitate a smooth transition from LLQ to DNS Push Notifications.</t></abstract>
</front>
<seriesInfo name='RFC' value='8764'/>
<seriesInfo name='DOI' value='10.17487/RFC8764'/>
</reference>



<reference anchor='RFC5001' target='https://www.rfc-editor.org/info/rfc5001'>
<front>
<title>DNS Name Server Identifier (NSID) Option</title>
<author fullname='R. Austein' initials='R.' surname='Austein'><organization/></author>
<date month='August' year='2007'/>
<abstract><t>With the increased use of DNS anycast, load balancing, and other mechanisms allowing more than one DNS name server to share a single IP address, it is sometimes difficult to tell which of a pool of name servers has answered a particular query.  While existing ad-hoc mechanisms allow an operator to send follow-up queries when it is necessary to debug such a configuration, the only completely reliable way to obtain the identity of the name server that responded is to have the name server include this information in the response itself. This note defines a protocol extension to support this functionality.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5001'/>
<seriesInfo name='DOI' value='10.17487/RFC5001'/>
</reference>



<reference anchor='RFC7871' target='https://www.rfc-editor.org/info/rfc7871'>
<front>
<title>Client Subnet in DNS Queries</title>
<author fullname='C. Contavalli' initials='C.' surname='Contavalli'><organization/></author>
<author fullname='W. van der Gaast' initials='W.' surname='van der Gaast'><organization/></author>
<author fullname='D. Lawrence' initials='D.' surname='Lawrence'><organization/></author>
<author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></author>
<date month='May' year='2016'/>
<abstract><t>This document describes an Extension Mechanisms for DNS (EDNS0) option that is in active use to carry information about the network that originated a DNS query and the network for which the subsequent response can be cached.  Since it has some known operational and privacy shortcomings, a revision will be worked through the IETF for improvement.</t></abstract>
</front>
<seriesInfo name='RFC' value='7871'/>
<seriesInfo name='DOI' value='10.17487/RFC7871'/>
</reference>



<reference anchor='RFC7314' target='https://www.rfc-editor.org/info/rfc7314'>
<front>
<title>Extension Mechanisms for DNS (EDNS) EXPIRE Option</title>
<author fullname='M. Andrews' initials='M.' surname='Andrews'><organization/></author>
<date month='July' year='2014'/>
<abstract><t>This document specifies a method for secondary DNS servers to honour the SOA EXPIRE field as if they were always transferring from the primary, even when using other secondaries to perform indirect transfers and refresh queries.</t></abstract>
</front>
<seriesInfo name='RFC' value='7314'/>
<seriesInfo name='DOI' value='10.17487/RFC7314'/>
</reference>



<reference anchor='RFC7873' target='https://www.rfc-editor.org/info/rfc7873'>
<front>
<title>Domain Name System (DNS) Cookies</title>
<author fullname='D. Eastlake 3rd' initials='D.' surname='Eastlake 3rd'><organization/></author>
<author fullname='M. Andrews' initials='M.' surname='Andrews'><organization/></author>
<date month='May' year='2016'/>
<abstract><t>DNS Cookies are a lightweight DNS transaction security mechanism that provides limited protection to DNS servers and clients against a variety of increasingly common denial-of-service and amplification/ forgery or cache poisoning attacks by off-path attackers.  DNS Cookies are tolerant of NAT, NAT-PT (Network Address Translation - Protocol Translation), and anycast and can be incrementally deployed. (Since DNS Cookies are only returned to the IP address from which they were originally received, they cannot be used to generally track Internet users.)</t></abstract>
</front>
<seriesInfo name='RFC' value='7873'/>
<seriesInfo name='DOI' value='10.17487/RFC7873'/>
</reference>



<reference anchor='RFC7828' target='https://www.rfc-editor.org/info/rfc7828'>
<front>
<title>The edns-tcp-keepalive EDNS0 Option</title>
<author fullname='P. Wouters' initials='P.' surname='Wouters'><organization/></author>
<author fullname='J. Abley' initials='J.' surname='Abley'><organization/></author>
<author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/></author>
<author fullname='R. Bellis' initials='R.' surname='Bellis'><organization/></author>
<date month='April' year='2016'/>
<abstract><t>DNS messages between clients and servers may be received over either UDP or TCP.  UDP transport involves keeping less state on a busy server, but can cause truncation and retries over TCP.  Additionally, UDP can be exploited for reflection attacks.  Using TCP would reduce retransmits and amplification.  However, clients commonly use TCP only for retries and servers typically use idle timeouts on the order of seconds.</t><t>This document defines an EDNS0 option (&quot;edns-tcp-keepalive&quot;) that allows DNS servers to signal a variable idle timeout.  This signalling encourages the use of long-lived TCP connections by allowing the state associated with TCP transport to be managed effectively with minimal impact on the DNS transaction time.</t></abstract>
</front>
<seriesInfo name='RFC' value='7828'/>
<seriesInfo name='DOI' value='10.17487/RFC7828'/>
</reference>



<reference anchor='RFC7830' target='https://www.rfc-editor.org/info/rfc7830'>
<front>
<title>The EDNS(0) Padding Option</title>
<author fullname='A. Mayrhofer' initials='A.' surname='Mayrhofer'><organization/></author>
<date month='May' year='2016'/>
<abstract><t>This document specifies the EDNS(0) &quot;Padding&quot; option, which allows DNS clients and servers to pad request and response messages by a variable number of octets.</t></abstract>
</front>
<seriesInfo name='RFC' value='7830'/>
<seriesInfo name='DOI' value='10.17487/RFC7830'/>
</reference>



<reference anchor='RFC7901' target='https://www.rfc-editor.org/info/rfc7901'>
<front>
<title>CHAIN Query Requests in DNS</title>
<author fullname='P. Wouters' initials='P.' surname='Wouters'><organization/></author>
<date month='June' year='2016'/>
<abstract><t>This document defines an EDNS0 extension that can be used by a security-aware validating resolver configured to use a forwarding resolver to send a single query, requesting a complete validation path along with the regular query answer.  The reduction in queries potentially lowers the latency and reduces the need to send multiple queries at once.  This extension mandates the use of source-IP- verified transport such as TCP or UDP with EDNS-COOKIE, so it cannot be abused in amplification attacks.</t></abstract>
</front>
<seriesInfo name='RFC' value='7901'/>
<seriesInfo name='DOI' value='10.17487/RFC7901'/>
</reference>



<reference anchor='RFC8145' target='https://www.rfc-editor.org/info/rfc8145'>
<front>
<title>Signaling Trust Anchor Knowledge in DNS Security Extensions (DNSSEC)</title>
<author fullname='D. Wessels' initials='D.' surname='Wessels'><organization/></author>
<author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></author>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<date month='April' year='2017'/>
<abstract><t>The DNS Security Extensions (DNSSEC) were developed to provide origin authentication and integrity protection for DNS data by using digital signatures.  These digital signatures can be verified by building a chain of trust starting from a trust anchor and proceeding down to a particular node in the DNS.  This document specifies two different ways for validating resolvers to signal to a server which keys are referenced in their chain of trust.  The data from such signaling allow zone administrators to monitor the progress of rollovers in a DNSSEC-signed zone.</t></abstract>
</front>
<seriesInfo name='RFC' value='8145'/>
<seriesInfo name='DOI' value='10.17487/RFC8145'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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
AA==

-->

</rfc>

