<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lenders-dns-cbor-15" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="dns+cbor">A Concise Binary Object Representation (CBOR) of DNS Messages</title>
    <seriesInfo name="Internet-Draft" value="draft-lenders-dns-cbor-15"/>
    <author fullname="Martine Sophie Lenders">
      <organization abbrev="TU Dresden">TUD Dresden University of Technology</organization>
      <address>
        <postal>
          <street>Helmholtzstr. 10</street>
          <city>Dresden</city>
          <code>D-01069</code>
          <country>Germany</country>
        </postal>
        <email>martine.lenders@tu-dresden.de</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author fullname="Thomas C. Schmidt">
      <organization>HAW Hamburg</organization>
      <address>
        <email>t.schmidt@haw-hamburg.de</email>
      </address>
    </author>
    <author initials="M." surname="Wählisch" fullname="Matthias Wählisch">
      <organization abbrev="TU Dresden &amp; Barkhausen Institut">TUD Dresden University of Technology &amp; Barkhausen Institut</organization>
      <address>
        <postal>
          <street>Helmholtzstr. 10</street>
          <city>Dresden</city>
          <code>D-01069</code>
          <country>Germany</country>
        </postal>
        <email>m.waehlisch@tu-dresden.de</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Applications</area>
    <workgroup>CBOR</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>CBOR</keyword>
    <keyword>DNS</keyword>
    <abstract>
      <?line 82?>

<t>This document specifies a compact data format of DNS messages using
the Concise Binary Object Representation <xref target="RFC8949"/>.
The primary purpose is to keep DNS messages small in constrained networks.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://cbor-wg.github.io/cbor-dns/draft-lenders-dns-cbor.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lenders-dns-cbor/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        CBOR Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cbor-wg/cbor-dns"/>.</t>
    </note>
  </front>
  <middle>
    <?line 89?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In constrained networks <xref target="RFC7228"/>, the link layer may restrict the payload sizes of frames to
only a few hundreds bytes.  Encrypted DNS resolution, such as DNS over HTTPS (DoH) <xref target="RFC8484"/> or
DNS over CoAP (DoC) <xref target="I-D.ietf-core-dns-over-coap"/>, may lead to DNS message sizes that exceed this limit, even when
implementing header compression such as 6LoWPAN IPHC <xref target="RFC6282"/> or SCHC <xref target="RFC8724"/>,
<xref target="RFC8824"/>.</t>
      <t>Although adoption layers such as 6LoWPAN <xref target="RFC4944"/> or SCHC <xref target="RFC8724"/> offer fragmentation to
comply with small MTUs, fragmentation should be avoided in constrained networks.
Fragmentation combined with high packet loss multiplies the likelihood of loss.
Hence, a compression format that reduces fragmentation of DNS messages is beneficial.</t>
      <t>This document specifies a compact data format for DNS messages using Concise Binary Object Representation (CBOR) <xref target="RFC8949"/> encoding. Additionally,  unnecessary or redundant information are stripped off DNS messages.  To use the outcome of this specification in DoH and DoC,
this document also specifies a Media Type header for DoH and a Content-Format option for DoC.</t>
      <t>Note, that there is another format that expresses DNS messages in CBOR, C-DNS <xref target="RFC8618"/>.
C-DNS is primarily a file format to minimize traces of multiple DNS messages and uses the fact that there are multiple messages to do its compression.
Common values such as names or addresses are collected in separate tables which are referenced from the messages, comparable to Packed CBOR <xref target="I-D.ietf-cbor-packed"/>.
However, this may add overhead for individual DNS messages.</t>
      <t>The format described in this document is a transfer format that aims to provide conciseness and compression for individual DNS messages to be sent over the network.
This is achieved applying the following objectives:</t>
      <t>Conciseness:</t>
      <ul spacing="normal">
        <li>
          <t>Encoding DNS messages in CBOR and</t>
        </li>
        <li>
          <t>Omitting (redundant) fields in DNS queries and responses.</t>
        </li>
      </ul>
      <t>Compression:</t>
      <ul spacing="normal">
        <li>
          <t>Providing easy to implement name compression that allows for on-the-fly construction of DNS queries and responses and</t>
        </li>
        <li>
          <t>Providing optional address and value compression in DNS responses using Packed CBOR <xref target="I-D.ietf-cbor-packed"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>CBOR types (unsigned integer, byte string, text string, arrays, etc.) are used as defined in
<xref target="RFC8949"/>.</t>
      <t>The terms "DNS server", "DNS client", and "(DNS) resolver" are used as defined in <xref target="RFC8499"/>.</t>
      <t>A DNS query is a message that queries DNS information from an upstream DNS resolver.
The reply to that is a DNS response.</t>
      <t>The DNS message format specified in <xref target="RFC1035"/> for DNS over UDP we call "classic DNS format" throughout this document or refer to it by its media type "application/dns-message" as specified in <xref target="RFC8484"/>.</t>
      <t>The term "constrained networks" is used as defined in <xref target="RFC7228"/>.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

</section>
    <section anchor="cbor-representations-applicationdnscbor">
      <name>CBOR Representations (application/dns+cbor)</name>
      <t>DNS messages in "application/dns+cbor" are represented as CBOR arrays to minimize overhead.
All CBOR items used in this specification are of definite length.
CBOR arrays that do not follow the length definitions of this or of follow-up specifications, <bcp14>MUST</bcp14> be silently ignored.
CBOR arrays that exceed the message size provided by the transport, <bcp14>MUST</bcp14> be silently ignored.
It is assumed that DNS query and DNS response are distinguished message types and that the query can be mapped to the response by the transfer protocol of choice.
To define the representation of binary objects we use the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>.
For examples, we use the CBOR Extended Diagnostic Notation <xref target="I-D.ietf-cbor-edn-literals"/>.</t>
      <figure anchor="fig_dns-msg">
        <name>This document defines both DNS Queries and Responses in CDDL</name>
        <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-message = dns-query / dns-response
]]></sourcecode>
      </figure>
      <t>If, for any reason, a DNS message cannot be represented in the CBOR format specified in this document, or if unreasonable overhead is introduced, a fallback to another DNS message format, e.g., the classic DNS format specified in <xref target="RFC1035"/>, <bcp14>MUST</bcp14> always be possible.</t>
      <section anchor="sec_domain-names">
        <name>Domain Name Representation</name>
        <t>Domain names are represented by a sequence of one or more (unicode) text strings.
For instance, "example.org" would be represented as <tt>"example","org"</tt> in CBOR diagnostic notation.
The root domain "." is represented as an empty string <tt>""</tt>.
The absence of any label means the name is elided.
For the purpose of this document, domain names remain case-insensitive as specified in <xref target="RFC1035"/>.</t>
        <t>The representation of a domain name is defined in <xref target="fig_domain-name"/>.
A label may either be encoded in ASCII-compatible encoding (ACE) <xref target="RFC5891"/> embedded within UTF-8 encoding of the text strings or plain UTF-8.
It is <bcp14>RECOMMENDED</bcp14> to use the encoding with the shorter length in bytes, otherwise message sizes may
increase.
A decoder identifies the ACE encoding by identifying the label as a valid A-label (see <xref target="RFC5891"/>) and <bcp14>MUST</bcp14> assume the label to be encoded in UTF-8 otherwise.</t>
        <t>This sequence of text strings is supposed to be embedded into a surrounding array, usually the query
or resource record.</t>
        <t>Name compression is implemented using an extension to Packed CBOR, see <xref target="sec_name-compression"/>.
For readers unfamiliar with Packed CBOR this name compression can be abstracted to a name
compression similar to that described in <xref section="4.1.4" sectionFormat="of" target="RFC1035"/>.
However, instead of using the byte index as reference within the message, text strings are counted,
starting at 0, depth-first within the message.
That number is used as index for the reference.
Since names are the only text strings in a CBOR-based DNS message, the end of a name can be identified when the decoder cursor
does not point to a text string or reference to another text string anymore.
For the reference itself, either simple values or tag 6 are used (see <xref section="2.2" sectionFormat="of" target="I-D.ietf-cbor-packed"/>).</t>
        <figure anchor="fig_domain-name">
          <name>Domain Name Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
domain-name = ( *label )
label = tstr
]]></sourcecode>
        </figure>
      </section>
      <section anchor="sec_rr">
        <name>DNS Resource Records</name>
        <t>This document specifies the representation of both standard DNS resource records (RRs, see <xref target="RFC1035"/>)
and EDNS option pseudo-RRs (see <xref target="RFC6891"/>.
If for any reason, a resource record cannot be represented in the given formats, they can be
represented in their binary wire-format form as a byte string.</t>
        <t>Further special records, e.g., TSIG <xref target="RFC8945"/>, can be defined in follow-up specifications using the <tt>$$structured-ts-rd</tt>
extension point (see <xref target="fig_dns-standard-rr"/>) and are out of scope of this document.</t>
        <t>The representation of a DNS resource records is defined in <xref target="fig_dns-rr"/>.</t>
        <figure anchor="fig_dns-rr">
          <name>DNS Resource Record Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
$$dns-rr = rr / #6.141(opt-rr) / bstr
]]></sourcecode>
        </figure>
        <section anchor="standard-rrs">
          <name>Standard RRs</name>
          <t>Standard DNS resource records are encoded as CBOR arrays containing 2 or more entries in the following order:</t>
          <ol spacing="normal" type="1"><li>
              <t>An optional name (as text string, see <xref target="sec_domain-names"/>),</t>
            </li>
            <li>
              <t>A TTL (as unsigned integer),</t>
            </li>
            <li>
              <t>An optional record type (as unsigned integer),</t>
            </li>
            <li>
              <t>An optional record class (as unsigned integer), and lastly</t>
            </li>
            <li>
              <t>A record data entry (as byte string, domain name, or array for dedicated record data representation) or
a boolean (true) that indicates that the resource record is actually a resource record set with
an array of one or more record data entries following. In the latter case, individual domain
names need to be put into their own array.</t>
            </li>
          </ol>
          <t>If the first item of the resource record is a text string, it is the first label of a domain name (see <xref target="sec_domain-names"/>).
If the name is elided, the name is derived from the question section of the message.
For responses, the question section is either taken from the query (see <xref target="sec_queries"/>) or provided with the response see <xref target="sec_responses"/>.
The query may be derived from the context of the transfer protocol.</t>
          <t>If the record type is elided, the record type from the question is assumed.
If record class is elided, the record class from the question is assumed.
When a record class is required to be expressed, the record type <bcp14>MUST</bcp14> also be provided.</t>
          <t>The byte string format of the record data as a byte string follows the classic DNS format as specified in <xref section="3.3" sectionFormat="of" target="RFC1035"/> (or other specifications of the respective record type).
Note that the CBOR format does not include the RDLENGTH field from the classic format as this value is encoded in the length field of the CBOR header of the byte string.</t>
          <t>If the record data represents a domain name (e.g., for CNAME or PTR records), the record data <bcp14>MAY</bcp14> be represented as domain name as specified in <xref target="sec_domain-names"/>.
This way of representing the record data means that name compression (see <xref target="sec_name-compression"/>) can also be used on it.</t>
          <t>Depending on the record type, the record data may also be expressed as an array.
Some initial array types are specified below.
Future specifications can extend the definition for <tt>$$structured-ts-rd</tt> in <xref target="fig_dns-standard-rr"/>.
Extensions to that in this document mainly serve to expose names to name compression (see <xref target="sec_name-compression"/>).
There is an argument to be made for CBOR-structured formats of other record data representations (e.g. DNSKEY or RRSIG), but structuring such records as an array usually adds more overhead than just transferring the byte representation.
As such, structured record data that do not contain names are to be represented as a byte string in this specification.</t>
          <t>Multiple resource records of the same type, class, and TTL can be summarized to a resource record set.
A decoder can be notified about this, by including the boolean true value before an array of multiple record data entries of the same type.
Note, that this adds more overhead to the message and should only really be considered, when there are
more than one resource records of the same type, class, and TTL in the message.</t>
          <figure anchor="fig_dns-standard-rr">
            <name>DNS Standard Resource Record Definition</name>
            <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
max-uint8 = 0..255
max-uint16 = 0..65535
max-uint32 = 0..4294967295
ttl = max-uint32
ipv4-addr = bstr .size 4
ipv6-addr = bstr .size 16
$ip-addr = ipv4-addr / ipv6-addr

rr = [
  ? domain-name,
  ttl: ttl,
  type-spec-rdata,
]
type-spec-rdata = (
  ? type-spec,
  rdata: bstr // ( $ip-addr ) // ( domain-name ) // ( rdata-set ),
)
rdata-set = ((
  is-rrset: true,
  rdata-set: [ +bstr ]
) // (
  is-rrset: true,
  rdata-set: [ +[ domain-name ] ],
))
type-spec-rdata //= ( $$structured-ts-rd )
type-spec = (
  record-type: max-uint16,
  ? record-class: max-uint16,
)
]]></sourcecode>
          </figure>
          <section anchor="soa-record-data">
            <name>SOA Record Data</name>
            <t>The record data of RRs with <tt>record-type</tt> = 6 (SOA) <bcp14>MAY</bcp14> be expressed as an array with at least 7 entries representing the 7 parts of the SOA resource record defined in <xref target="RFC1035"/> in the following order:</t>
            <ul spacing="normal">
              <li>
                <t>MNAME as a domain name (see <xref target="sec_domain-names"/>),</t>
              </li>
              <li>
                <t>SERIAL as an unsigned integer,</t>
              </li>
              <li>
                <t>REFRESH as an unsigned integer,</t>
              </li>
              <li>
                <t>RETRY as an unsigned integer,</t>
              </li>
              <li>
                <t>EXPIRE as an unsigned integer,</t>
              </li>
              <li>
                <t>MINIMUM as an unsigned integer, and</t>
              </li>
              <li>
                <t>RNAME as a domain name (see <xref target="sec_domain-names"/>).</t>
              </li>
            </ul>
            <t>MNAME and RNAME are put to the beginning and end of the array, respectively, to keep their labels apart.</t>
            <t>The definition for SOA record data can be seen in <xref target="fig_dns-rdata-soa"/>.</t>
            <figure anchor="fig_dns-rdata-soa">
              <name>SOA Resource Record Data Definition</name>
              <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
$$structured-ts-rd //= (
  6,    ; record-type = SOA
  ? 1,  ; record-class = IN
  ( soa // ( is-rrset: true, rdata-set: [ +soa ] ) ),
)

soa = [
  domain-name,  ; mname
  serial: max-uint32,
  refresh: max-uint32,
  retry: max-uint32,
  expire: max-uint32,
  minimum: max-uint32,
  domain-name,  ; rname
]
]]></sourcecode>
            </figure>
          </section>
          <section anchor="mx-record-data">
            <name>MX Record Data</name>
            <t>The record data of RRs with <tt>record-type</tt> = 15 (MX) <bcp14>MAY</bcp14> be expressed as an array with at least 2 entries representing the 2 parts of the MX resource record defined in <xref target="RFC1035"/> in the following order:</t>
            <ul spacing="normal">
              <li>
                <t>PREFERENCE as an unsigned integer and</t>
              </li>
              <li>
                <t>EXCHANGE as a domain name (see <xref target="sec_domain-names"/>).</t>
              </li>
            </ul>
            <t>The definition for MX record data can be seen in <xref target="fig_dns-rdata-mx"/>.</t>
            <figure anchor="fig_dns-rdata-mx">
              <name>MX Resource Record Data Definition</name>
              <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
$$structured-ts-rd //= (
  15,   ; record-type = MX
  ? 1,  ; record-class = IN
  ( mx // ( is-rrset: true, rdata-set: [ +mx ] ) ),
)

mx = [
  preference: max-uint16,
  domain-name,  ; exchange
]
]]></sourcecode>
            </figure>
          </section>
          <section anchor="srv-record-data">
            <name>SRV Record Data</name>
            <t>The record data of RRs with <tt>record-type</tt> = 33 (SRV) <bcp14>MAY</bcp14> be expressed as an array with at least 3 entries representing the parts of the SRV resource record defined in <xref target="RFC2782"/> in the following order:</t>
            <ul spacing="normal">
              <li>
                <t>Priority as an unsigned integer,</t>
              </li>
              <li>
                <t>an optional Weight as an unsigned integer,</t>
              </li>
              <li>
                <t>Port as an unsigned integer,</t>
              </li>
              <li>
                <t>Target as a domain name (see <xref target="sec_domain-names"/>).</t>
              </li>
            </ul>
            <t>If the weight is present or not can be determined by the number of unsigned integers before Target.
2 unsigned integers before the Target mean the weight was elided and defaults to 0.
3 unsigned integers before the Target mean the weight is in the second position of the record data array.
The default of 0 was picked, as this is the value domain administrators should pick when there is no server selection to do <xref target="RFC2782"/>.</t>
            <t>The definition for SRV record data can be seen in <xref target="fig_dns-rdata-srv"/>.</t>
            <figure anchor="fig_dns-rdata-srv">
              <name>SRV Resource Record Data Definition</name>
              <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
$$structured-ts-rd //= (
  33,   ; record-type = SRV
  ? 1,  ; record-class = IN
  ( srv // ( is-rrset: true, rdata-set: [ +srv ] ) ),
)

srv = [
  priority: max-uint16,
  ? weight: max-uint16 .default 0,
  port: max-uint16,
  domain-name,  ; target
]
]]></sourcecode>
            </figure>
          </section>
          <section anchor="svcb-and-https-record-data">
            <name>SVCB and HTTPS Record Data</name>
            <t>The record data of RRs with <tt>record-type</tt> = 64 (SVCB) and <tt>record-type</tt> = 65 (HTTPS) <bcp14>MAY</bcp14> be expressed as an array with at least 3 entries representing the 3 parts of the SVCB/HTTPS resource record defined in <xref target="RFC9460"/> in the following order:</t>
            <ul spacing="normal">
              <li>
                <t>An optional SvcPriority as an unsigned integer,</t>
              </li>
              <li>
                <t>An optional TargetName as a domain name (see <xref target="sec_domain-names"/>), and</t>
              </li>
              <li>
                <t>SvcParams as an array of alternating pairs of SvcParamKey (as unsigned integer) and SvcParamValue
(as byte string).
The type of SvcParamValue may be extended in future specifications.</t>
              </li>
            </ul>
            <t>If the SvcPriority is present can be determined by checking if the record data array starts with an unsigned integer or not.
If the array does not start with an unsigned integer, the SvcPriority is elided and defaults to 0, i.e., the record is in AliasMode (see <xref section="2.4.2" sectionFormat="of" target="RFC9460"/>).
If the array starts with a unsigned integer, it is the SvcPriority.</t>
            <t>If the TargetName is present can be determined by checking if the record data array has a domain name after the SvcPriority, i.e., if the SvcPriority is elided the array would start with a domain name.
If there is no domain name after the SvcPriority, the TargetName is elided and defaults to the sequence of text strings <tt>""</tt> (i.e. the root domain "." in the common name representation defined in <xref section="2.3.1" sectionFormat="of" target="RFC1035"/>, see <xref target="sec_domain-names"/>) and <xref section="2.5" sectionFormat="of" target="RFC9460"/>.
If there is a domain name after the SvcPriority, the TargetName is not elided and in the domain name form specified in <xref target="sec_domain-names"/>.</t>
            <t>The definition for SVCB and HTTPS record data can be seen in <xref target="fig_dns-rdata-svcb"/>.</t>
            <figure anchor="fig_dns-rdata-svcb">
              <name>SVCB and HTTPS Resource Record Data Definition</name>
              <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
$$structured-ts-rd //= (
  64 / 65,  ; record-type = SVCB or HTTPS
  ? 1,      ; record-class = IN
  ( svcb // ( is-rrset: true, rdata-set: [ +svcb ] ) ),
)

svcb = [
  ? svc-priority: max-uint16 .default 0,
  ? domain-name,  ; target name
  svc-params: [ *svc-param-pair ],
]

svc-param-pair = (
  svc-param-key: max-uint16,
  svc-param-value: $$svc-param-value,
)
$$svc-param-value = bstr / $ip-addr
]]></sourcecode>
            </figure>
            <t>The SvcParams are provided as an array rather than a map, as their order needs to be preserved <xref target="RFC9460"/> which can not be guaranteed for maps.</t>
          </section>
        </section>
        <section anchor="sec_edns">
          <name>EDNS OPT Pseudo-RRs</name>
          <t>EDNS OPT Pseudo-RRs are represented as a CBOR array.
To distinguish them from normal standard RRs, they are marked with tag TBD141.</t>
          <t>Name and record type can be elided as they are always "." and OPT (41), respectively <xref target="RFC6891"/>.</t>
          <t>The UDP payload size may be the first element as an unsigned integer in the array.
It <bcp14>MUST</bcp14> be elided if its value is the default value of 512, the maximum allowable size for unextended DNS over UDP (see Sections <xref target="RFC1035" section="2.3.4" sectionFormat="bare"/> and <xref target="RFC1035" section="4.2.1" sectionFormat="bare"/> of <xref target="RFC1035"/>).</t>
          <t>The next element is a map of the options, with the option code (unsigned integer) as key and the option data (byte string) as value.
The type of option data may be extended in future specifications.</t>
          <t>After that, up to three unsigned integers are following.
The first being the extended flags as unsigned integer (implied to be 0 if elided),
the second the extended RCODE as an unsigned integer (implied to be 0 if elided), and
the third the EDNS version (implied to be 0 if elided).
They are dependent on each of their previous elements.
If the EDNS version is not elided, both extended flags and extended RCODE <bcp14>MUST</bcp14> not be elided.
If the RCODE is not elided the extended flags <bcp14>MUST</bcp14> not be elided.</t>
          <t>Note that future EDNS versions may require a different format than the one described above.</t>
          <figure anchor="fig_dns-opt-rr">
            <name>DNS OPT Resource Record Definition</name>
            <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
opt-rr = [
  ? udp-payload-size: max-uint16 .default 512,
  options: {* ocode => $$odata },
  ? opt-rcode-v-flags,
]
ocode = max-uint16
opt-rcode-v-flags = (
  flags: max-uint16 .default 0,
  ? opt-rcode-v,
)
rcode = 0..4095
opt-rcode-v = (
  rcode: rcode .default 0,
  ? version: max-uint8 .default 0,
)
$$odata = bstr
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="sec_queries">
        <name>DNS Queries</name>
        <t>DNS queries are encoded as CBOR arrays containing up to 6 entries in the following order:</t>
        <ol spacing="normal" type="1"><li>
            <t>An optional boolean field,</t>
          </li>
          <li>
            <t>An optional flag field (as unsigned integer),</t>
          </li>
          <li>
            <t>The question section (as array),</t>
          </li>
          <li>
            <t>An optional answer section (as array),</t>
          </li>
          <li>
            <t>An optional authority section (as array), and</t>
          </li>
          <li>
            <t>An optional additional section (as array)</t>
          </li>
        </ol>
        <t>If the first item is a boolean and when true, it tells the responding resolver that it <bcp14>MUST</bcp14> include the question section in its response. If that boolean is not present, it is assumed to be false.</t>
        <t>If the first item of the query is an array, it is the question section, if it is an unsigned integer, it is as flag field and maps to the header flags in <xref target="RFC1035"/> and the "DNS Header Flags" IANA registry including the QR flag and the Opcode.</t>
        <t>If the flags are elided, the value 0 is assumed.</t>
        <t>This specification assumes that the DNS messages are sent over a transfer protocol that can map the queries to their responses, e.g., DNS over HTTPS <xref target="RFC8484"/> or DNS over CoAP <xref target="I-D.ietf-core-dns-over-coap"/>.
As a consequence, the DNS transaction ID is always elided and the value 0 is assumed.</t>
        <t>A question record within the question section is encoded as a CBOR array containing the following entries:</t>
        <ol spacing="normal" type="1"><li>
            <t>The queried name (as domain name, see <xref target="sec_domain-names"/>) which <bcp14>MUST</bcp14> not be elided,</t>
          </li>
          <li>
            <t>An optional record type (as unsigned integer), and</t>
          </li>
          <li>
            <t>An optional record class (as unsigned integer)</t>
          </li>
        </ol>
        <t>If the record type is elided, record type <tt>AAAA</tt> as specified in <xref target="RFC3596"/> is assumed.
If the record class is elided, record class <tt>IN</tt> as specified in <xref target="RFC1035"/> is assumed.
When a record class is required, the record type <bcp14>MUST</bcp14> also be provided.</t>
        <t>There usually is only one question record <xref target="RFC9619"/>, which is why the question section is a flat array and not nested like the other sections.
This serves to safe overhead from the additional CBOR array header.
In the rare cases when there is more than one question record in the question section, the next question just follows.
In this case, for every question but the last, the record type <bcp14>MUST</bcp14> be included, i.e., it is not optional.
This way it is ensured that the parser can distinguish each question by looking up the name first.</t>
        <t>The remainder of the query is either empty or <bcp14>MUST</bcp14> consist of up to three extra arrays.</t>
        <t>If one extra array is in the query, it encodes the additional section of the query as an array of DNS resource records (see <xref target="sec_rr"/>).
If two extra arrays are in the query, they encode, in that order, the authority and additional sections of the query each as an array of DNS resource records (see <xref target="sec_rr"/>).
If three extra arrays are in the query, they encode, in that order, the answer section, the authority, and additional sections of the query each as an array of DNS resource records (see <xref target="sec_rr"/>).</t>
        <t>As such, the highest precedence in elision is given to the answer section, as it only occurs with mDNS to signify Known Answers <xref target="RFC6762"/>.
The lowest precedence is given to the additional section, as it may contain EDNS OPT Pseudo-RRs, which are common in queries (see <xref target="sec_edns"/>).</t>
        <t>The representation of a DNS query is defined in <xref target="fig_dns-query"/>.</t>
        <figure anchor="fig_dns-query">
          <name>DNS Query Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-query = [
  ? incl-question: bool .default false,
  ? flags: max-uint16 .default 0x0000,
  question-section,
  ? query-extra-sections,
]
question-section = [
  * full-question,
  ? last-question,
]
full-question = (
  domain-name,
  type-spec,
)
last-question = (
  domain-name,
  ? type-spec,
)
query-extra-sections = (
  ? answer-section,
  extra-sections,
)
answer-section = [+ $$dns-rr]
extra-sections = (
  ? authority: [+ $$dns-rr],
  additional: [+ $$dns-rr],
)
]]></sourcecode>
        </figure>
      </section>
      <section anchor="sec_responses">
        <name>DNS Responses</name>
        <t>A DNS response is encoded as a CBOR array containing up to 5 entries.</t>
        <ol spacing="normal" type="1"><li>
            <t>An optional flag field (as unsigned integer),</t>
          </li>
          <li>
            <t>An optional question section (as array, encoded as described in <xref target="sec_queries"/>)</t>
          </li>
          <li>
            <t>The answer section (as array),</t>
          </li>
          <li>
            <t>An optional authority section (as array), and</t>
          </li>
          <li>
            <t>An optional additional section (as array)</t>
          </li>
        </ol>
        <t>As for queries, the DNS transaction ID is elided and implied to be 0.</t>
        <t>If the CBOR array is a response to a query for which the flags indicate that flags are set in the
response, they <bcp14>MUST</bcp14> be set accordingly and thus included in the response.
If the flags are not included, the flags are implied to be 0x8000 (everything unset except for the
QR flag).</t>
        <t>If the response includes only one array, then the DNS answer section represents an
array of one or more DNS Resource Records (see <xref target="sec_rr"/>).</t>
        <t>If the response includes more than 2 arrays, the first entry may be the question section, identified
by not being an array of arrays. It <bcp14>MUST</bcp14> be included, if the client requested it using the boolean
field in the query. If it is present, it is followed by the answer section. The question section is
encoded as specified in <xref target="sec_queries"/>.</t>
        <t>If the answer section is followed by one extra array, this array is the additional section.
Like the answer section, the additional section is represented as an array of one or more DNS Resource Records (see <xref target="sec_rr"/>).</t>
        <t>If the answer section is followed by two extra arrays, the first is the authority section, and the second is the additional section.
The authority section is also represented as an array of one or more DNS Resource Records (see
<xref target="sec_rr"/>).</t>
        <t>The authority section is given precedence in elision over the additional section, as due to EDNS options or, e.g., CNAME answers that also provide the A/AAAA records. The additional section tends to show up more often than the authority section.</t>
        <figure anchor="fig_dns-response">
          <name>DNS Response Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-response = [
  ? flags: max-uint16 .default 0x8000,
  ? question-section,
  answer-section,
  ? extra-sections,
]
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="sec_cbor-packed">
      <name>Compression with Packed CBOR</name>
      <t>Packed CBOR <xref target="I-D.ietf-cbor-packed"/> is used for name compression in "application/dns+cbor".</t>
      <t>If both DNS server and client support table setup tag 113 as described in <xref section="3.1" sectionFormat="of" target="I-D.ietf-cbor-packed"/>, it <bcp14>MAY</bcp14> be used for further
compression in DNS responses.
Especially IPv6 addresses, e.g., in AAAA resource records can benefit from straight referencing to
compress common address prefixes.</t>
      <section anchor="sec_name-compression">
        <name>Name Compression</name>
        <sourcecode type="cddl"><![CDATA[
Text-String-Suffix-Sequence-Packed-CBOR = #6.28259(rump)
]]></sourcecode>
        <t>For name compression, a new packing table setup tag TBD28259 ('n' and 'c' in ASCII) for Packed CBOR <xref target="I-D.ietf-cbor-packed"/> is defined.
It provides an implicit text string suffix sequence table for shared items <em>V</em> which is appended to the existing table for shared items of any table setup tag within the content of tag TBD28259 (by default empty table).
This implicit (i.e. not explicitly represented) table <em>V</em> is constructed as follows:
Any coherent sequence of text strings encountered within the rump of tag TBD28259, as well as any of its non-empty suffixes, are added to the table as arrays marked with the splice integration tag 1115 (see <xref section="5.1" sectionFormat="comma" target="I-D.ietf-cbor-packed"/>) in depth-first order.
Text string sequences within any tables for shared items or argument items within the rump <bcp14>MUST</bcp14> not be added to <em>V</em>.
If a sequence for which an array is already in <em>V</em> is encountered, a shared item reference <em>i</em> is added instead, splicing the content of 1115 tag and array into the existing array (see <xref section="5.1" sectionFormat="comma" target="I-D.ietf-cbor-packed"/>).
The resulting rump should look like referencing the <em>i</em>-th string (depth first) in the sequence.</t>
        <t>The "application/dns+cbor" media type comes with an optional parameter "packed".
If it is not provided, the value of it is assumed to be 0.
With packed=0, any CBOR object <tt>obj</tt> marked by the "application/dns+cbor" media type <bcp14>MUST</bcp14> explicitly be understood as <tt>TBD28259(obj)</tt>, unless it is already <tt>obj</tt> itself is already tagged explicitly with TBD28259 as a whole.
This also means, that an "application/dns+cbor" encoder and decoder <bcp14>MUST</bcp14> support packed value 0.</t>
        <t>The splice integration tag 1115 is the only integration tag in use "application/dns+cbor" for "packed=0" and "packed=1" and only within the implicit table <em>V</em>.</t>
        <section anchor="example">
          <name>Example</name>
          <t>Take the following CBOR object <em>o</em> (note that this is <strong>intentionally not legal "application/dns+cbor"</strong> to illustrate generality). A more DNS-specific example can be found in <xref target="sec_response-examples"/>.</t>
          <figure anchor="fig_name-compression-example-unpacked">
            <name>Unpacked example for implicit text string suffix sequence compression.</name>
            <sourcecode type="edn"><![CDATA[
[
  "www", "example", "org",
  ["svc", "www", "example", "org"],
  "org", "example", "org", 42,
  "svc", "www", "example", "org", 42
]
]]></sourcecode>
          </figure>
          <t>Note that the binary of <em>o</em> would actually look as follows in hexadecimal encoding (type and data
noted in comment)</t>
          <figure anchor="fig_name-compression-example-unpacked-binary">
            <name>Binary of the unpacked example for implicit text string suffix sequence compression (78 bytes).</name>
            <artwork><![CDATA[
8d                      # array(13)
   63                   # text(3)
      777777            # "www"
   67                   # text(7)
      6578616d706c65    # "example"
   63                   # text(3)
      6f7267            # "org"
   84                   # array(4)
      63                # text(3)
         737663         # "svc"
      63                # text(3)
         777777         # "www"
      67                # text(7)
         6578616d706c65 # "example"
      63                # text(3)
         6f7267         # "org"
   63                   # text(3)
      6f7267            # "org"
   67                   # text(7)
      6578616d706c65    # "example"
   63                   # text(3)
      6f7267            # "org"
   18 2a                # unsigned(42)
   63                   # text(3)
      737663            # "svc"
   63                   # text(3)
      777777            # "www"
   67                   # text(7)
      6578616d706c65    # "example"
   63                   # text(3)
      6f7267            # "org"
   18 2a                # unsigned(42)
]]></artwork>
          </figure>
          <t>This would generate the following virtual table <em>V</em>.</t>
          <figure anchor="fig_name-compression-example-table">
            <name>Implicit table of shared items for the example.</name>
            <sourcecode type="edn"><![CDATA[
[
    1115(["www", "example", "org"]),
    1115(["example", "org"]),
    1115(["org"]),
    1115(["svc", simple(0)]),
    1115(["org", "example", "org"])
]
]]></sourcecode>
          </figure>
          <t>Note that the sequence "org", "example", "org" is added at index 4 with leading "org", instead of referencing index 2 + index 1 (<tt>simple(2), simple(1)</tt>), as it is its own distinct suffix sequence.</t>
          <t>The packed representation of <em>o</em> would thus be:</t>
          <figure anchor="fig_name-compression-example-packed">
            <name>The packed representation of the example.</name>
            <sourcecode type="edn"><![CDATA[
TBD28259(
  [
    "www", "example", "org",
    ["svc", simple(0) / expands to "www", "example", "org" /],
    "org", simple(1) / expands to "example", "org" /, 42,
    simple(3) / expands to "svc", "www", "example", "org" /, 42
  ]
)
]]></sourcecode>
          </figure>
          <t>In binary the packed representation of <em>o</em> would be:</t>
          <figure anchor="fig_name-compression-example-packed-binary">
            <name>Binary of the packed representation of the example (36 bytes).</name>
            <artwork><![CDATA[
d9 6e63                 # tag(28259)
   89                   # array(9)
      63                # text(3)
         777777         # "www"
      67                # text(7)
         6578616d706c65 # "example"
      63                # text(3)
         6f7267         # "org"
      82                # array(2)
         63             # text(3)
            737663      # "svc"
         e0             # simple(0)
      63                # text(3)
         6f7267         # "org"
      e1                # simple(1)
      18 2a             # unsigned(42)
      e3                # simple(3)
      18 2a             # unsigned(42)
]]></artwork>
          </figure>
          <t>Also note, with "application/dns+cbor;packed=0" the surrounding TBD28259 can be elided (even though the content would not be parsable as "application/dns+cbor").</t>
          <t>With, e.g., table setup tag 113, further packing can be achieved via nesting table packing.</t>
          <figure anchor="fig_name-compression-example-packed-113">
            <name>The packed representation of the example with additional table setup.</name>
            <sourcecode type="edn"><![CDATA[
TBD113(
  TBD28259(
    [
      ["org", 42],
      [
        "www", "example", simple(5) / expands to "org" /,
        ["svc", simple(0) / expands to "www", "example", "org" /],
        simple(5),  / expands to "org" /
        simple(1),  / expands to "www", "example", "org" /
        simple(6),  / expands to 42 /
        simple(3),  / expands to "svc", "www", "example", "org" /
        simple(6)   / expands to 42 /
      ]
    ]
  )
)
]]></sourcecode>
          </figure>
          <t>Note, how the previous references in <xref target="fig_name-compression-example-packed"/> do not changed, as the table <tt>["org", 42]</tt> is appended.</t>
          <t>In binary, that example would look like the following</t>
          <figure anchor="fig_name-compression-example-packed-113-binary">
            <name>The binary of the packed representation of the example with additional table setup (38 bytes).</name>
            <artwork><![CDATA[
d8 71                         # tag(113)
   d9 6e63                    # tag(28259)
      82                      # array(2)
         82                   # array(2)
            63                # text(3)
               6f7267         # "org"
            18 2a             # unsigned(42)
         89                   # array(9)
            63                # text(3)
               777777         # "www"
            67                # text(7)
               6578616d706c65 # "example"
            e5                # simple(5)
            82                # array(2)
               63             # text(3)
                  737663      # "svc"
               e0             # simple(0)
            e5                # simple(5)
            e1                # simple(1)
            e6                # simple(6)
            e3                # simple(3)
            e6                # simple(6)
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="further-dns-representation-with-tag-113">
        <name>Further DNS Representation with tag 113</name>
        <t>The representation of DNS responses with packed value 1, i.e. "application/dns+cbor;packed=1", has the same semantics as for tag TBD113
(see <xref section="3.1" sectionFormat="of" target="I-D.ietf-cbor-packed"/>) with the rump being the compressed response.
The difference to <xref target="I-D.ietf-cbor-packed"/> is that tag TBD113 is <bcp14>OPTIONAL</bcp14> with media type parameter "packed=1".
As such, any CBOR object <tt>obj</tt> marked by the "application/dns+cbor;packed=1" media type and parameter <bcp14>MUST</bcp14> explicitly be understood as <tt>TBD113(TBD28259(obj))</tt>, unless it is already <tt>obj</tt> itself is already tagged explicitly with TBD113 as a whole<cref anchor="_6" source="—mlenders">Is it okay that TBD28259 might be omitted in that case?</cref>.</t>
        <t>Packed compression of queries is not specified, as apart from EDNS(0) (see <xref target="sec_edns"/>), they only
consist of one question most of the time, i.e., there is close to no redundancy.</t>
      </section>
      <section anchor="media-type-negotiation">
        <name>Media Type Negotiation</name>
        <t>A DNS client tells a server that it would accept the media type "application/dns+cbor;packed=1" to negotiate (see, e.g.,
<xref target="RFC9110"/> or <xref section="5.5.4" sectionFormat="comma" target="RFC7252"/>) with the DNS server whether the server supports setup table tag TBD113.
If it does, it <bcp14>MAY</bcp14> request the response to be in packed value 1 (media type "application/dns+cbor;packed=1").
The server then <bcp14>SHOULD</bcp14> reply with the response in Packed CBOR, which it also signals with media type
"application/dns+cbor;packed=1".
Otherwise, both fall back to the implicit "packed=0".</t>
      </section>
      <section anchor="sec_pack-compression">
        <name>Compression</name>
        <t>The method of the compressor to construct the packing table, i.e., how the compression is applied, is out of scope of this document.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -20?>
      </t>
      <section anchor="python-decoderencoder">
        <name>Python decoder/encoder</name>
        <t>The authors of this document provide a <eref target="https://github.com/netd-tud/cbor4dns">decoder/encoder
implementation</eref> of both the unpacked and packed format
specified in this document in Python.</t>
        <dl>
          <dt>Level of maturity:</dt>
          <dd>
            <t>prototype</t>
          </dd>
          <dt>Version compatibility:</dt>
          <dd>
            <t>draft-lenders-dns-cbor-10</t>
          </dd>
          <dt>License:</dt>
          <dd>
            <t>MIT</t>
          </dd>
          <dt>Contact information:</dt>
          <dd>
            <t><tt>Martine Lenders &lt;martine.lenders@tu-dresden.de&gt;</tt></t>
          </dd>
          <dt>Last update of this information:</dt>
          <dd>
            <t>July 2024</t>
          </dd>
        </dl>
      </section>
      <section anchor="embedded-decoderencoder">
        <name>Embedded decoder/encoder</name>
        <t>The authors of this document provide a <eref target="https://github.com/RIOT-OS/RIOT/pull/19989">decoder/encoder
implementation</eref> of the unpacked format specified in this
document for the RIOT operating system. It can only encode queries and decode responses.</t>
        <dl>
          <dt>Level of maturity:</dt>
          <dd>
            <t>prototype</t>
          </dd>
          <dt>Version compatibility:</dt>
          <dd>
            <t>draft-lenders-dns-cbor-08</t>
          </dd>
          <dt>License:</dt>
          <dd>
            <t>MIT</t>
          </dd>
          <dt>Contact information:</dt>
          <dd>
            <t><tt>Martine Lenders &lt;martine.lenders@tu-dresden.de&gt;</tt></t>
          </dd>
          <dt>Last update of this information:</dt>
          <dd>
            <t>October 2023</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-type">
        <name>Media Type Registration</name>
        <t>This document registers a media type for the serialization format of DNS messages in CBOR. It
follows the procedures specified in <xref target="RFC6838"/>.</t>
        <section anchor="applicationdnscbor">
          <name>"application/dns+cbor"</name>
          <t>Type name: application</t>
          <t>Subtype name: dns+cbor</t>
          <t>Required parameters: None</t>
          <t>Optional parameters: packed</t>
          <t>Encoding considerations: Must be encoded as using <xref target="RFC8949"/>. See [TBD-this-spec] for details.</t>
          <t>Security considerations: See <xref target="security-considerations"/> of this draft</t>
          <t>Interoperability considerations: TBD</t>
          <t>Published specification: [TBD-this-spec]</t>
          <t>Applications that use this media type: TBD DNS over X systems</t>
          <t>Fragment Identifier Considerations: TBD</t>
          <t>Additional information:</t>
          <t>   Deprecated alias names for this type: N/A</t>
          <t>   Magic number(s): N/A</t>
          <t>   File extension(s): dnsc</t>
          <t>   Macintosh file type code(s): none</t>
          <t>Person &amp; email address to contact for further information:
   IETF CBOR Working Group (cbor@ietf.org) or IETF Applications and Real-Time Area (art@ietf.org)</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on Usage: None?</t>
          <t>Author: Martine S. Lenders <eref target="mailto:m.lenders@fu-berlin.de">m.lenders@fu-berlin.de</eref></t>
          <t>Change controller: IETF</t>
          <t>Provisional registrations? No</t>
        </section>
      </section>
      <section anchor="coap-content-format-registration">
        <name>CoAP Content-Format Registration</name>
        <t>IANA is requested to assign CoAP Content-Format ID for the new DNS message media
types in the "CoAP Content-Formats"
sub-registry, within the "CoRE Parameters" registry <xref target="RFC7252"/>, corresponding the
"application/dns+cbor" media type specified in <xref target="media-type"/>:</t>
        <section anchor="cf-app-d-c">
          <name>"application/dns+cbor"</name>
          <t>Media-Type: application/dns+cbor</t>
          <t>Encoding: -</t>
          <t>Id: TBD53</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
        <section anchor="applicationdnscborpacked1">
          <name>"application/dns+cbor;packed=1"</name>
          <t>Media-Type: application/dns+cbor;packed=1</t>
          <t>Encoding: -</t>
          <t>Id: TBD54</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
      </section>
      <section anchor="cbor-tags-registry">
        <name>CBOR Tags Registry</name>
        <t>In the registry "<xref section="CBOR Tags" relative="#cbor-tags" sectionFormat="bare" target="IANA.cbor-tags"/>" <xref target="IANA.cbor-tags"/>,
IANA is requested to allocate the tags defined in <xref target="tab-tag-values"/>.</t>
        <table anchor="tab-tag-values">
          <name>Values for Tag Numbers</name>
          <thead>
            <tr>
              <th align="right">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD141</td>
              <td align="left">array</td>
              <td align="left">CBOR EDNS option record</td>
              <td align="left">draft-lenders-dns-cbor</td>
            </tr>
            <tr>
              <td align="right">TBD28259</td>
              <td align="left">any</td>
              <td align="left">Packed CBOR; implicit text string suffix sequence shared-item table</td>
              <td align="left">draft-lenders-dns-cbor</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <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="RFC3596">
          <front>
            <title>DNS Extensions to Support IP Version 6</title>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="V. Ksinant" initials="V." surname="Ksinant"/>
            <author fullname="M. Souissi" initials="M." surname="Souissi"/>
            <date month="October" year="2003"/>
            <abstract>
              <t>This document defines the changes that need to be made to the Domain Name System (DNS) to support hosts running IP version 6 (IPv6). The changes include a resource record type to store an IPv6 address, a domain to support lookups based on an IPv6 address, and updated definitions of existing query types that return Internet addresses as part of additional section processing. The extensions are designed to be compatible with existing applications and, in particular, DNS implementations themselves. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="88"/>
          <seriesInfo name="RFC" value="3596"/>
          <seriesInfo name="DOI" value="10.17487/RFC3596"/>
        </reference>
        <reference anchor="RFC5891">
          <front>
            <title>Internationalized Domain Names in Applications (IDNA): Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is the revised protocol definition for Internationalized Domain Names (IDNs). The rationale for changes, the relationship to the older specification, and important terminology are provided in other documents. This document specifies the protocol mechanism, called Internationalized Domain Names in Applications (IDNA), for registering and looking up IDNs in a way that does not require changes to the DNS itself. IDNA is only meant for processing domain names, not free text. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5891"/>
          <seriesInfo name="DOI" value="10.17487/RFC5891"/>
        </reference>
        <reference anchor="RFC6891">
          <front>
            <title>Extension Mechanisms for DNS (EDNS(0))</title>
            <author fullname="J. Damas" initials="J." surname="Damas"/>
            <author fullname="M. Graff" initials="M." surname="Graff"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <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 ("Binary Labels in the Domain Name System") 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="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-packed">
          <front>
            <title>Packed CBOR</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mikolai Gütschow" initials="M." surname="Gütschow">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <date day="15" month="October" year="2025"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949 == STD 94)
   is a data format whose design goals include the possibility of
   extremely small code size, fairly small message size, and
   extensibility without the need for version negotiation.

   CBOR does not provide any forms of data compression.  CBOR data
   items, in particular when generated from legacy data models, often
   allow considerable gains in compactness when applying data
   compression.  While traditional data compression techniques such as
   DEFLATE (RFC 1951) can work well for CBOR encoded data items, their
   disadvantage is that the recipient needs to decompress the compressed
   form before it can make use of the data.

   This specification describes Packed CBOR, a set of CBOR tags and
   simple values that enable a simple transformation of an original CBOR
   data item into a Packed CBOR data item that is almost as easy to
   consume as the original CBOR data item.  A separate decompression
   step is therefore often not required at the recipient.


   // (This cref will be removed by the RFC editor:) The present
   // revision -17 contains a number of editorial improvements, it is
   // intended for a brief discussion at the 2025-10-15 CBOR WG interim.
   // The wording of the present revision continues to make use of the
   // tunables A/B/C to be set to specific numbers before completing the
   // Packed CBOR specification; not all the examples may fully align
   // yet.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-17"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="16" month="October" year="2025"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Extended Diagnostic Notation (EDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

   Replacing EDN's previous informal descriptions, it updates RFC 8949,
   obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G.

   It also specifies and uses registry-based extension points, using one
   to support text representations of epoch-based dates/times and of IP
   addresses and prefixes.


   // (This cref will be removed by the RFC editor:) The present -19
   // includes the definition of the cri'' application- extension. cri''
   // was previously defined in draft-ietf-core-href; however the latter
   // document overtook the present document in the approval process.
   // As the definition of cri'' is dependent on the present document
   // (and conversely has essentially no dependency on the technical
   // content of draft-ietf-core-href beyond its mere existence), the
   // text (including IANA considerations) has been moved here. -19 is
   // intended for use at the CBOR WG meeting at IETF 124.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-19"/>
        </reference>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <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="RFC2782">
          <front>
            <title>A DNS RR for specifying the location of services (DNS SRV)</title>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <author fullname="L. Esibov" initials="L." surname="Esibov"/>
            <date month="February" year="2000"/>
            <abstract>
              <t>This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2782"/>
          <seriesInfo name="DOI" value="10.17487/RFC2782"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4944">
          <front>
            <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro"/>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar"/>
            <author fullname="J. Hui" initials="J." surname="Hui"/>
            <author fullname="D. Culler" initials="D." surname="Culler"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4944"/>
          <seriesInfo name="DOI" value="10.17487/RFC4944"/>
        </reference>
        <reference anchor="RFC6282">
          <front>
            <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks</title>
            <author fullname="J. Hui" initials="J." role="editor" surname="Hui"/>
            <author fullname="P. Thubert" initials="P." surname="Thubert"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>This document updates RFC 4944, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header compression format for IPv6 packet delivery in Low Power Wireless Personal Area Networks (6LoWPANs). The compression format relies on shared context to allow compression of arbitrary prefixes. How the information is maintained in that shared context is out of scope. This document specifies compression of multicast addresses and a framework for compressing next headers. UDP header compression is specified within this framework. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6282"/>
          <seriesInfo name="DOI" value="10.17487/RFC6282"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC8484">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
        <reference anchor="RFC8499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8499"/>
          <seriesInfo name="DOI" value="10.17487/RFC8499"/>
        </reference>
        <reference anchor="RFC8618">
          <front>
            <title>Compacted-DNS (C-DNS): A Format for DNS Packet Capture</title>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="J. Hague" initials="J." surname="Hague"/>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
            <author fullname="T. Manderson" initials="T." surname="Manderson"/>
            <author fullname="J. Bond" initials="J." surname="Bond"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a data representation for collections of DNS messages. The format is designed for efficient storage and transmission of large packet captures of DNS traffic; it attempts to minimize the size of such packet capture files but retain the full DNS message contents along with the most useful transport metadata. It is intended to assist with the development of DNS traffic- monitoring applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8618"/>
          <seriesInfo name="DOI" value="10.17487/RFC8618"/>
        </reference>
        <reference anchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="RFC8824">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="R. Andreasen" initials="R." surname="Andreasen"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework. SCHC defines a header compression mechanism adapted for Constrained Devices. SCHC uses a static description of the header to reduce the header's redundancy and size. While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers. The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length. The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages. This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8824"/>
          <seriesInfo name="DOI" value="10.17487/RFC8824"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9619">
          <front>
            <title>In the DNS, QDCOUNT Is (Usually) One</title>
            <author fullname="R. Bellis" initials="R." surname="Bellis"/>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>This document updates RFC 1035 by constraining the allowed value of the QDCOUNT parameter in DNS messages with OPCODE = 0 (QUERY) to a maximum of one, and it specifies the required behavior when values that are not allowed are encountered.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9619"/>
          <seriesInfo name="DOI" value="10.17487/RFC9619"/>
        </reference>
        <reference anchor="I-D.ietf-core-dns-over-coap">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
              <organization>NeuralAgent GmbH</organization>
            </author>
            <author fullname="Thomas C. Schmidt" initials="T. C." surname="Schmidt">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>TUD Dresden University of Technology &amp; Barkhausen Institut</organization>
            </author>
            <date day="16" month="September" year="2025"/>
            <abstract>
              <t>   This document defines a protocol for exchanging DNS queries (OPCODE
   0) over the Constrained Application Protocol (CoAP).  These CoAP
   messages can be protected by (D)TLS-Secured CoAP (CoAPS) or Object
   Security for Constrained RESTful Environments (OSCORE) to provide
   encrypted DNS message exchange for constrained devices in the
   Internet of Things (IoT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-dns-over-coap-20"/>
        </reference>
        <reference anchor="RFC8945">
          <front>
            <title>Secret Key Transaction Authentication for DNS (TSIG)</title>
            <author fullname="F. Dupont" initials="F." surname="Dupont"/>
            <author fullname="S. Morris" initials="S." surname="Morris"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="B. Wellington" initials="B." surname="Wellington"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This document describes a protocol for transaction-level authentication using shared secrets and one-way hashing. It can be used to authenticate dynamic updates to a DNS zone as coming from an approved client or to authenticate responses as coming from an approved name server.</t>
              <t>No recommendation is made here for distributing the shared secrets; it is expected that a network administrator will statically configure name servers and clients using some out-of-band mechanism.</t>
              <t>This document obsoletes RFCs 2845 and 4635.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="93"/>
          <seriesInfo name="RFC" value="8945"/>
          <seriesInfo name="DOI" value="10.17487/RFC8945"/>
        </reference>
        <reference anchor="RFC6762">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 976?>

<section anchor="examples">
      <name>Examples</name>
      <section anchor="sec_query-examples">
        <name>DNS Queries</name>
        <t>A DNS query of the record <tt>AAAA</tt> in class <tt>IN</tt> for name "example.org" is
represented in CBOR extended diagnostic notation (EDN) (see <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>) as follows:</t>
        <sourcecode type="edn"><![CDATA[
[["example", "org"]]
]]></sourcecode>
        <t>The binary (in hexadecimal encoding) of the query looks as follows (14 bytes):</t>
        <artwork><![CDATA[
81                      # array(1)
   82                   # array(2)
      67                # text(7)
         6578616d706c65 # "example"
      63                # text(3)
         6f7267         # "org"
]]></artwork>
        <t>A query of an <tt>A</tt> record for the same name is represented as</t>
        <sourcecode type="edn"><![CDATA[
[["example", "org", 1]]
]]></sourcecode>
        <t>or in binary (15 bytes)</t>
        <artwork><![CDATA[
81                      # array(1)
   83                   # array(3)
      67                # text(7)
         6578616d706c65 # "example"
      63                # text(3)
         6f7267         # "org"
      01                # unsigned(1)
]]></artwork>
        <t>A query of <tt>ANY</tt> record for that name is represented as</t>
        <sourcecode type="edn"><![CDATA[
[["example", "org", 255, 255]]
]]></sourcecode>
        <t>or in binary (18 bytes)</t>
        <artwork><![CDATA[
81                      # array(1)
   84                   # array(4)
      67                # text(7)
         6578616d706c65 # "example"
      63                # text(3)
         6f7267         # "org"
      18 ff             # unsigned(255)
      18 ff             # unsigned(255)
]]></artwork>
      </section>
      <section anchor="sec_response-examples">
        <name>DNS Responses</name>
        <t>The responses to the examples provided in <xref target="sec_query-examples"/> are shown
below. We use the CBOR extended diagnostic notation (EDN) (see <xref target="I-D.ietf-cbor-edn-literals"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>),
most notably the "ip" extension to represent binary IP addresses as a IP address app-string literal.</t>
        <t>To represent an <tt>AAAA</tt> record with TTL 300 seconds for the IPv6 address 2001:db8::1, a minimal
response to <tt>[["example", "org"]]</tt> could be</t>
        <sourcecode type="edn"><![CDATA[
[[[300, ip'2001:db8::1']]]
]]></sourcecode>
        <t>or in binary (23 bytes)</t>
        <artwork><![CDATA[
81                                            # array(1)
   81                                         # array(1)
      82                                      # array(2)
         19 012c                              # unsigned(300)
         50                                   # bytes(16)
            20010db8000000000000000000000001  # ip'2001:db8::1'
]]></artwork>
        <t>In this case, the name is derived from the query.</t>
        <t>If the name or the context is required, the following response would also
be valid:</t>
        <sourcecode type="edn"><![CDATA[
[[["example", "org", 300, ip'2001:db8::1']]]
]]></sourcecode>
        <t>In binary that response looks like the following (35 bytes):</t>
        <artwork><![CDATA[
81                                            # array(1)
   81                                         # array(1)
      84                                      # array(4)
         67                                   # text(7)
            6578616d706c65                    # "example"
         63                                   # text(3)
            6f7267                            # "org"
         19 012c                              # unsigned(300)
         50                                   # bytes(16)
            20010db8000000000000000000000001  # ip'2001:db8::1'
]]></artwork>
        <t>If the query can not be mapped to the response for some reason, a response
would look like:</t>
        <sourcecode type="edn"><![CDATA[
[["example", "org"], [[300, ip'2001:db8::1']]]
]]></sourcecode>
        <t>In binary that response looks like the following (36 bytes):</t>
        <artwork><![CDATA[
82                                            # array(2)
   82                                         # array(2)
      67                                      # text(7)
         6578616d706c65                       # "example"
      63                                      # text(3)
         6f7267                               # "org"
   81                                         # array(1)
      82                                      # array(2)
         19 012c                              # unsigned(300)
         50                                   # bytes(16)
            20010db8000000000000000000000001  # ip'2001:db8::1'
]]></artwork>
        <t>To represent a minimal response of an <tt>A</tt> record with TTL 3600 seconds for the IPv4 address
192.0.2.1, a minimal response to <tt>[["example", "org", 1]]</tt> could be</t>
        <sourcecode type="edn"><![CDATA[
[[[300, ip'192.0.2.1']]]
]]></sourcecode>
        <t>or in binary (11 bytes)</t>
        <artwork><![CDATA[
81                   # array(1)
   81                # array(1)
      82             # array(2)
         19 012c     # unsigned(300)
         44          # bytes(4)
            c0000201 # ip'192.0.2.1'
]]></artwork>
        <t>Note that here also the 1 of record type <tt>A</tt> can be elided, as this record
type is specified in the question section.</t>
        <t>Lastly, a response to <tt>[["example", "org", 255, 255]]</tt> could be</t>
        <sourcecode type="edn"><![CDATA[
[
  # PTR (12) question for "example.org"
  [
    # appends 0 => ["example", "org"] to virtual packing table
    "example",
    # appends 1 => ["org"] to virtual packing table
    "org",
    12
  ],
  # Answer section:
  [[
    # PTR (12) for "example.org"
    # (both elided since they are the same as in question)
    # is "_coap._udp.local" with TTL 3600
    3600,
    # appends 2 => ["_coap", "_udp", "local"] to virtual packing table
    "_coap",
    # appends 3 => ["_udp", "local"] to virtual packing table
    "_udp",
    # appends 4 => ["local"] to virtual packing table
    "local"
  ]],
  # Authority section:
  [
    [
      # NS (2) for "example.org"
      # (name elided since its the same as in question)
      # is "ns1.example.org" with TTL 3600
      3600, 2,
      # appends 5 => ["ns1", simple(0)] to virtual packing table
      "ns1", simple(0)  # expands to ["example", "org"]
    ],
    [
      # NS (2) for "example.org"
      # (name elided since its the same as in question)
      # is "ns2.example.org" with TTL 3600
      3600, 2
      # appends 6 => ["ns2", simple(0)] to virtual packing table
      "ns2", simple(0)  # expands to ["example", "org"]
    ]
  ],
  # Additional section
  [
    [
      # AAAA (28) for "_coap._udp.local"
      # is 2001:db8::1 with TTL 3600
      simple(2),    # expands to ["_coap", "_udp", "local"]
      3600, 28, ip'2001:db8::1'
    ],
    [
      # AAAA (28) for "_coap._udp.local"
      # is 2001:db8::2 with TTL 3600
      simple(2),    # expands to ["_coap", "_udp", "local"]
      3600, 28, ip'2001:db8::2'
    ],
    [
      # AAAA (28) for "ns1.example.org"
      # is 2001:db8::35 with TTL 3600
      simple(5),    # expands to ["ns1", ["example", "org"]]
      3600, 28, ip'2001:db8::35'
    ],
    [
      # AAAA (28) for "ns2.example.org"
      # is 2001:db8::3535 with TTL 3600
      simple(6),    # expands to ["ns2", ["example", "org"]
      3600, 28, ip'2001:db8::3535'
    ]
  ]
]
]]></sourcecode>
        <t>or in binary (155 bytes)</t>
        <artwork><![CDATA[
84                                            # array(4)
   83                                         # array(3)
      67                                      # text(7)
         6578616d706c65                       # "example"
      63                                      # text(3)
         6f7267                               # "org"
      0c                                      # unsigned(12)
   81                                         # array(1)
      84                                      # array(4)
         19 0e10                              # unsigned(3600)
         65                                   # text(5)
            5f636f6170                        # "_coap"
         64                                   # text(4)
            5f756470                          # "_udp"
         65                                   # text(5)
            6c6f63616c                        # "local"
   82                                         # array(2)
      84                                      # array(4)
         19 0e10                              # unsigned(3600)
         02                                   # unsigned(2)
         63                                   # text(3)
            6e7331                            # "ns1"
         e0                                   # simple(0)
      84                                      # array(4)
         19 0e10                              # unsigned(3600)
         02                                   # unsigned(2)
         63                                   # text(3)
            6e7332                            # "ns2"
         e0                                   # simple(0)
   84                                         # array(4)
      84                                      # array(4)
         e2                                   # simple(2)
         19 0e10                              # unsigned(3600)
         18 1c                                # unsigned(28)
         50                                   # bytes(16)
            20010db8000000000000000000000001  # ip'2001:db8::1'
      84                                      # array(4)
         e2                                   # simple(2)
         19 0e10                              # unsigned(3600)
         18 1c                                # unsigned(28)
         50                                   # bytes(16)
            20010db8000000000000000000000002  # ip'2001:db8::2'
      84                                      # array(4)
         e5                                   # simple(5)
         19 0e10                              # unsigned(3600)
         18 1c                                # unsigned(28)
         50                                   # bytes(16)
            20010db8000000000000000000000035  # ip'2001:db8::35'
      84                                      # array(4)
         e6                                   # simple(6)
         19 0e10                              # unsigned(3600)
         18 1c                                # unsigned(28)
         50                                   # bytes(16)
            20010db8000000000000000000003535  # ip'2001:db8::3535'
]]></artwork>
        <t>This response advertises two local CoAP servers (identified by service name _coap._udp.local) at
2001:db8::1 and 2001:db8::2 and two nameservers for the example.org domain, ns1.example.org at
2001:db8::35 and ns2.example.org at 2001:db8::3535. Each of the transmitted records has a TTL of
3600 seconds.
Note the use of name compression (see <xref target="sec_name-compression"/>) in this example.</t>
      </section>
    </section>
    <section anchor="sec_comparison-to-classic-dns">
      <name>Comparison to Classic DNS Wire Format</name>
      <t><xref target="tab-cbor-comparison"/> shows a comparison between the classic DNS wire format and the
application/dns+cbor format. Note that the worst case results typically appear only rarely in DNS.
The classic DNS format is preferred in those cases. A key for which configuration was used in which
case can be seen in <xref target="tab-cbor-comparison-key"/>. Any name label that is longer than 23 bytes adds
a name overhead of 1 byte to its CBOR type header.<cref anchor="_10" source="—mlenders">TBD: Also add structured RRs?.</cref></t>
      <table anchor="tab-cbor-comparison">
        <name>Comparison of application/dns+cbor to classic DNS format.</name>
        <thead>
          <tr>
            <th align="left" rowspan="2">Item</th>
            <th align="right" rowspan="2">Classic DNS format [bytes]</th>
            <th align="center" colspan="3">application/dns+cbor [bytes]</th>
          </tr>
          <tr>
            <th align="right">best case</th>
            <th align="right">realistic worst case</th>
            <th align="right">theoretical worst case</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Header (ID &amp; Flags)</td>
            <td align="right">4</td>
            <td align="right">1</td>
            <td align="right">4</td>
            <td align="right">4</td>
          </tr>
          <tr>
            <td align="left">Count fields</td>
            <td align="right">2</td>
            <td align="right">1</td>
            <td align="right">3</td>
            <td align="right">3</td>
          </tr>
          <tr>
            <td align="left">Question section</td>
            <td align="right">6 + name len.</td>
            <td align="right">2 + name len.</td>
            <td align="right">6 + name len. + name overhead</td>
            <td align="right">9 + name len. + name overhead</td>
          </tr>
          <tr>
            <td align="left">Standard RR</td>
            <td align="right">12 + name len. + rdata len.</td>
            <td align="right">3        <br/>
 + rdata len.</td>
            <td align="right">14 + name len. + rdata len. + name overhead</td>
            <td align="right">17 + name len. + rdata len. + name overhead</td>
          </tr>
          <tr>
            <td align="left">Standard RR with name rdata</td>
            <td align="right">12 + name len. + rdata len.</td>
            <td align="right">4</td>
            <td align="right">14 + name len. + rdata len. + name overheads</td>
            <td align="right">16 + name len. + rdata len. + name overheads</td>
          </tr>
          <tr>
            <td align="left">EDNS Opt Pseudo-RR</td>
            <td align="right">11 + options</td>
            <td align="right">2 + options</td>
            <td align="right">6 + options</td>
            <td align="right">14 + options</td>
          </tr>
          <tr>
            <td align="left">EDNS Option</td>
            <td align="right">4 + value len.</td>
            <td align="right">2 + value len.</td>
            <td align="right">4 + value len.</td>
            <td align="right">6 + value len.</td>
          </tr>
        </tbody>
      </table>
      <table anchor="tab-cbor-comparison-key">
        <name>Configuration key for     <xref target="tab-cbor-comparison"/>
.</name>
        <thead>
          <tr>
            <th align="left" rowspan="2">Item</th>
            <th align="center" colspan="3">application/dns+cbor configuration</th>
          </tr>
          <tr>
            <th align="right">best case</th>
            <th align="right">realistic worst case</th>
            <th align="right">theoretical worst case</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Header (ID &amp; Flags)</td>
            <td align="right">Flags elided</td>
            <td align="right">QR, Opcode, AA, TC, or RD are set</td>
            <td align="right">QR, Opcode, AA, TC, or RD are set</td>
          </tr>
          <tr>
            <td align="left">Count fields</td>
            <td align="right">Encoded in CBOR array header</td>
            <td align="right">Encoded in CBOR array header,        <br/>
&gt;255 records in section</td>
            <td align="right">Encoded in CBOR array header,        <br/>
&gt;255 records in section</td>
          </tr>
          <tr>
            <td align="left">Question section</td>
            <td align="right">Class, type, and name elided</td>
            <td align="right">Type &gt; 255,        <br/>
label len. &gt; 23</td>
            <td align="right">Type &gt; 255,        <br/>
Class &gt; 255,        <br/>
label len. &gt; 23</td>
          </tr>
          <tr>
            <td align="left">Standard RR</td>
            <td align="right">Class, type, and name elided,        <br/>
rdata len. &lt; 24</td>
            <td align="right">Type &gt; 255,        <br/>
label len. &gt; 23        <br/>
rdata len. &gt; 255</td>
            <td align="right">Type &gt; 255,        <br/>
Class &gt; 255,        <br/>
label len. &gt; 23        <br/>
rdata len. &gt; 255</td>
          </tr>
          <tr>
            <td align="left">Standard RR with name rdata</td>
            <td align="right">Class, type, and name elided,        <br/>
simple(i) with i &lt; 16</td>
            <td align="right">Type &gt; 255,        <br/>
label len. &gt; 23        <br/>
name uncompressed</td>
            <td align="right">Type &gt; 255,        <br/>
Class &gt; 255,        <br/>
label len. &gt; 23        <br/>
name uncompressed</td>
          </tr>
          <tr>
            <td align="left">EDNS Opt Pseudo-RR</td>
            <td align="right">All EDNS(0) fields elided</td>
            <td align="right">Rcode &lt; 24,        <br/>
DO flag set,        <br/>
            </td>
            <td align="right">UDP payload        <br/>
len. &gt; 255        <br/>
Rcode &gt; 255        <br/>
Version &gt; 255        <br/>
DO flag set</td>
          </tr>
          <tr>
            <td align="left">EDNS Option</td>
            <td align="right">Code &lt; 24        <br/>
Length &lt; 24</td>
            <td align="right">Code &lt; 24        <br/>
Length &gt; 255</td>
            <td align="right">Code &gt; 255        <br/>
Length &gt; 255</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <section anchor="since-draft-lenders-dns-cbor-14">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-14">draft-lenders-dns-cbor-14</eref></name>
        <ul spacing="normal">
          <li>
            <t>Correction and nits</t>
          </li>
          <li>
            <t>Explicitly state which integration tags are in use</t>
          </li>
          <li>
            <t>Add binary examples in CBOR-pretty</t>
          </li>
          <li>
            <t>Unify formatting for and mention explicitly application/dns+cbor from the top</t>
          </li>
          <li>
            <t>Explicitly define behavior for query[0] = True in response text</t>
          </li>
          <li>
            <t>Clarifications around media type parameter <tt>packed=1</tt></t>
          </li>
          <li>
            <t>Remove TBD reference (it never came to be)</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-13">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-13">draft-lenders-dns-cbor-13</eref></name>
        <ul spacing="normal">
          <li>
            <t>Make use of splicing integration tag 1115
            </t>
            <ul spacing="normal">
              <li>
                <t>Make domain names flat text string sequences again</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Add capability to summarize rrsets</t>
          </li>
          <li>
            <t>Provide extension point for IP addresses</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-12">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-12">draft-lenders-dns-cbor-12</eref></name>
        <ul spacing="normal">
          <li>
            <t>Fix bug in packed examples</t>
          </li>
          <li>
            <t>Improve compression examples for clarity</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-11">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-11">draft-lenders-dns-cbor-11</eref></name>
        <ul spacing="normal">
          <li>
            <t>Update repo links to cbor-wg org in draft</t>
          </li>
          <li>
            <t><tt>s/CBOR-packed/Packed CBOR/</tt></t>
          </li>
          <li>
            <t>Small pass on wording</t>
          </li>
          <li>
            <t>Remove commented-out parts</t>
          </li>
          <li>
            <t>Make name compression be based on Packed CBOR</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-10">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-10">draft-lenders-dns-cbor-10</eref></name>
        <ul spacing="normal">
          <li>
            <t>Address IANA #1392416 early review</t>
          </li>
          <li>
            <t>Fix external section references</t>
          </li>
          <li>
            <t>Update implementation status</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-09">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-09">draft-lenders-dns-cbor-09</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add recommendation on label encoding</t>
          </li>
          <li>
            <t>Provide extension points
            </t>
            <ul spacing="normal">
              <li>
                <t>Mark dns-rr specifically as extension point</t>
              </li>
              <li>
                <t>Provide extension points for parameter values (options and svc-params)</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Point out CBOR-packed needs to be unpacked when identifying names</t>
          </li>
          <li>
            <t>Distinguish from C-DNS <xref target="RFC8618"/></t>
          </li>
          <li>
            <t>State objectives in introduction</t>
          </li>
          <li>
            <t>Fix nits and typos</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-08">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-08">draft-lenders-dns-cbor-08</eref></name>
        <ul spacing="normal">
          <li>
            <t>Clarify why question section was designed the way it is</t>
          </li>
          <li>
            <t>Add answer section to queries for Known Answers in mDNS</t>
          </li>
          <li>
            <t>Express names as sequence of labels</t>
          </li>
          <li>
            <t>Provide dedicated types for more structured RDATA</t>
          </li>
          <li>
            <t>Add RFC1035-like name compression</t>
          </li>
          <li>
            <t>Add switching boolean to query message to explicitly have question present in response</t>
          </li>
          <li>
            <t>Make EDNS options a map</t>
          </li>
          <li>
            <t>Update examples and comparison table in appendices</t>
          </li>
          <li>
            <t>Update implementation section</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-07">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-07">draft-lenders-dns-cbor-07</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add <xref target="sec_comparison-to-classic-dns"/> with comparison to classic DNS wire format</t>
          </li>
          <li>
            <t>"wire format" -&gt; "classic DNS wire format"</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-06">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-06">draft-lenders-dns-cbor-06</eref></name>
        <ul spacing="normal">
          <li>
            <t>Fixes wording and spelling mistakes</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-05">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-05">draft-lenders-dns-cbor-05</eref></name>
        <ul spacing="normal">
          <li>
            <t>Fix <xref target="cf-app-d-c"/> title</t>
          </li>
          <li>
            <t>Amend for capability to carry more than one question</t>
          </li>
          <li>
            <t>Hint at future of name compression in later draft versions</t>
          </li>
          <li>
            <t>Use canonical name for CBOR-packed</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-04">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-04">draft-lenders-dns-cbor-04</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add Implementation Status section</t>
          </li>
          <li>
            <t>Remove int as representation for rdata</t>
          </li>
          <li>
            <t>Add note on representation of more structured rdata</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-03">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-03">draft-lenders-dns-cbor-03</eref></name>
        <ul spacing="normal">
          <li>
            <t>Provide format description for EDNS OPT Pseudo-RRs</t>
          </li>
          <li>
            <t>Simplify CDDL to more idiomatic style</t>
          </li>
          <li>
            <t>Remove DNS transaction IDs</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-02">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-02">draft-lenders-dns-cbor-02</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add Discussion section and note on compression</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-01">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-01">draft-lenders-dns-cbor-01</eref></name>
        <ul spacing="normal">
          <li>
            <t>Use MIME type parameter for packed instead of own MIME type</t>
          </li>
          <li>
            <t>Update definitions to accommodate for TID and flags, as well as more sections in query</t>
          </li>
          <li>
            <t>Clarify fallback to wire-format</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-00">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-00">draft-lenders-dns-cbor-00</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add support for DNS transaction IDs</t>
          </li>
          <li>
            <t>Name and Address compression utilizing CBOR-packed</t>
          </li>
          <li>
            <t>Minor fixes to CBOR EDN and CDDL</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
M+eXg2XMpXsD/5Msfu3pNkHP+f+UhKs/mO0AAA==

-->

</rfc>
