<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lenders-dns-cbor-11" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.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-11"/>
    <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="March" day="03"/>
    <area>Applications</area>
    <workgroup>CBOR</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>CBOR</keyword>
    <keyword>DNS</keyword>
    <abstract>
      <?line 82?>

<t>This document specifies a compressed 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://anr-bmbf-pivot.github.io/draft-lenders-dns-cbor/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/anr-bmbf-pivot/draft-lenders-dns-cbor"/>.</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 compressed 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 CBOR-packed <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>
      <ol spacing="normal" type="1"><li>
          <t>Encoding DNS messages in CBOR (conciseness),</t>
        </li>
        <li>
          <t>Omitting (redundant) fields in DNS queries and responses (conciseness),</t>
        </li>
        <li>
          <t>Providing easy to implement name compression that allows for on-the-fly construction of DNS queries and responses (compression), and</t>
        </li>
        <li>
          <t>Providing optional address and value compression in DNS responses using CBOR-packed <xref target="I-D.ietf-cbor-packed"/> (compression).</t>
        </li>
      </ol>
    </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 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 overehead 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 or tag TBDt (see <xref target="sec_name-compression"/> below) 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.
A decoder <bcp14>MAY</bcp14> identify 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>
        <section anchor="sec_name-compression">
          <name>Name Compression</name>
          <figure anchor="fig_domain-name">
            <name>Domain Name Definition</name>
            <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
domain-name = (
  * label,
  ? ( #6.TBDt(uint) / label ),
)
label = tstr
]]></sourcecode>
          </figure>
          <t>Names are compressed by pointing to existing labels in the message.
CBOR objects are typically decoded depth-first.
Whenever we encounter a label we take the value of a counter <em>c</em> as the position of that label.
The counter <em>c</em> is then increased.</t>
          <t>A tag TBDt may follow any sequence of labels, even an empty sequence.
This tag TBDt encapsulates an unsigned integer <em>i</em> which points to a label at position <em>i</em>.
<em>i</em> <bcp14>MUST</bcp14> be smaller than <em>c</em>.
A name then is decoded as any label that then preceded tag TBDt(<em>i</em>) and all labels including and following at position <em>i</em> are appended.
This includes any further occurrence of tag TBDt after the referenced label sequence, though the decoding stops after this tag was recursively decoded.
Note, that this also may include simple values or tags that reference the packing table with CBOR-packed (see <xref target="sec_cbor-packed"/>).</t>
          <t>For instance, the name "www.example.org" can be encountered twice in the example in
<xref target="fig_name-compression-example"/> (notated in CBOR Extended Diagnostic Notation, see <xref target="I-D.ietf-cbor-edn-literals"/>).</t>
          <figure anchor="fig_name-compression-example">
            <name>Example for name compression.</name>
            <sourcecode type="cbor-diag"><![CDATA[
[
  # AAAA (28, elided) question for "example.org"
  [ "example" / c == 0 /, "org" / c == 1 / ],
  # Answer section:
  [
    # "example.org" (elided) CNAME (5) is "www.example.org"
    [ 5, "www" / c == 2 /, TBDt(0) / references c == 0 / ],
    # "www.example.org" AAAA (28, elided) is 2001:db8::1
    [
      TBDt(2) / references c == 2 /,
      h'20010db8000000000000000000000001'
    ]
  ]
]
]]></sourcecode>
          </figure>
          <!--
For name compression, a tag TBDt encapsulating an unsigned integer _i_ can be appended to the sequence of text strings.
To extend the name suffix, the unsigned integer _i_ points to the _i_-th text string (counted depth first) in the overall DNS message.
That string and all text strings or another tag TBDt following the string at the _i_-th position are appended to the name sequence.
If another tag TBDt is encountered, it is resolved in the same way.
Strings following a tag TBDt MUST NOT be appended to the name sequence.
To prevent circular references, this DNS name suffix extension algorithm should error whenever a string position is encountered more than once during the extension of a name.
Likewise, the algorithm should error whenever the _i_ is greater than the position of the previous seen string from this occurrence of tag TBDt.
Only backward referencing is allowed for tag TBDt.
Decompression stops when any other type than a text string or any other tag than tag TBDt are
encountered.
-->

<t>The pseudo-code for this DNS name suffix extension algorithm can be seen in <xref target="fig_decode-name"/>.</t>
          <figure anchor="fig_decode-name">
            <name>Name Suffix Extension Algorithm</name>
            <artwork><![CDATA[
function decode_name(obj: cbor_obj, cbor_ptr: cbor_major_type): list
{
  name: list = []
  visited: set = {}
  while (typeof(cbor_ptr) in {tstr, tag}):
    if typeof(cbor_ptr) == tag:
      if cbor_ptr.tag != TBDt:
        break
      i: uint = cbor_ptr.value
      if i-th text string after (depth first) cbor_ptr:
        return ERROR("Forward reference not allowed")
      cbor_ptr =
        jump to i-th text string (depth first) in obj
      if cbor_ptr in visited:
        return ERROR("Circular reference")
    # cbor_ptr should be of type tstr at this point
    name.append(cbor_ptr)
    visited.add(cbor_ptr)
  return name
}
]]></artwork>
          </figure>
          <t>The tag TBDt is included in the definition in <xref target="fig_domain-name"/>.</t>
        </section>
      </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"/>.<cref anchor="_1" source="mlenders">Also add capability to summarize Resource Record Sets to one array, e.g. <tt>["example","org",3600,1,[b'c0002563', h'c00021ab']]</tt>?</cref>
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 can be defined in follow-up specifications 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).</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 can save 1 byte of data, as the zero byte at the end of the name is not necessary with the CBOR format.
Only 1 byte is required to define type and length of each text string representing a label up until a string length of 23 characters, amortizing to the same remaining length as in the name representation in the classic format.
This way of representing the record data also 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>$rdata-array</tt> in <xref target="fig_dns-standard-rr"/>.
These extensions 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 always to be represented as a byte string.</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
rr = [
  ? domain-name,
  ttl: ttl,
  type-spec-rdata,
]
type-spec-rdata = (
  ? type-spec,
  rdata: bstr // ( 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 MX 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,
)

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,
)

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,
)

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 text string or tag TBDt after the SvcPriority, i.e., if the SvcPriority is elided the array would start with a text string or tag TBDt.
If there is no text string or tag TBDt 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 text string or tag TBDt 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,
)

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
]]></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. 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>Further Compression with CBOR-packed</name>
      <t>If both DNS server and client support CBOR-packed <xref 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="media-type-negotiation">
        <name>Media Type Negotiation</name>
        <t>A DNS client uses the media type "application/dns+cbor;packed=1" to negotiate (see, e.g.,
<xref target="RFC9110"/> or <xref target="RFC7252"/>, Section 5.5.4) with the DNS server whether the server supports packed
CBOR.
If it does, it <bcp14>MAY</bcp14> request the response to be in CBOR-packed (media type
"application/dns+cbor;packed=1").
The server then <bcp14>SHOULD</bcp14> reply with the response in CBOR-packed, which it also signals with media type
"application/dns+cbor;packed=1".</t>
      </section>
      <section anchor="dns-representation-in-cbor-packed">
        <name>DNS Representation in CBOR-packed</name>
        <t>The representation of DNS responses in CBOR-packed has the same semantics as for tag TBD113
(<xref target="I-D.ietf-cbor-packed"/>, Section 3.1) 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>.</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="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. Several potential compression algorithms were evaluated in [TBD].</t>
        <!--
Discussion TBD:

- For queries, as they are only one question, i.e. at most one value of each at most,
  compression is not necessary.
- Address and name compression are mostly about affix compression
  (i.e. straight/inverse referencing)<br>
  ==> For occasions where value is the affix (e.g., "example.org" in ANY example in
  {{sec:response-examples}}) use shared item referencing to argument table to safe bytes (no extra
  shared item table, no, e.g., 216(""), just simple(0))
  - **Example:** Using Basic CBOR-packed ({{I-D.ietf-cbor-packed}}, section 3.1):
    - 130 bytes (Basic CBOR-packed)
    - 200 bytes (plain CBOR, see {{sec:response-examples}})
    - 194 bytes (classic DNS format)

    >     113(
    >       [
    >         ["_coap._udp.local", "example.org", 3600, 28],
    >         [h'20010db800000000000000000000', simple(1)],
    >         [
    >           [simple(1), 12, 1],
    >           [[simple(1), simple(0)]],
    >           [
    >             [simple(1), 2, 217("ns1.")],
    >             [simple(1), 2, 217("ns2.")]
    >           ],
    >           [
    >             [simple(0), simple(1), simple(3), 6(h'0001')],
    >             [simple(0), simple(1), simple(3), 6(h'0002')],
    >             [217("ns1."), simple(1), simple(3), 6(h'0035')],
    >             [217("ns2."), simple(1), simple(3), 6(h'3535')]
    >           ]
    >         ]
    >       ]
    >     )

    vs. application/dns+cbor;packed=1 (shared and argument table as one) 126&nbsp;bytes:

    >     [
    >       [
    >         h'20010db800000000000000000000',
    >         "_coap._udp.local", "example.org", 3600, 28
    >       ],
    >       [
    >         [simple(2), 12, 1],
    >         [[simple(3), simple(1)]],
    >         [
    >           [simple(2), 2, 218("ns1.")],
    >           [simple(2), 2, 218("ns2.")]
    >         ],
    >         [
    >           [simple(1), simple(3), simple(4), 6(h'0001')],
    >           [simple(1), simple(3), simple(4), 6(h'0002')],
    >           [218("ns1."), simple(3), simple(4), 6(h'0035')],
    >           [218("ns2."), simple(3), simple(4), 6(h'3535')]
    >         ]
    >       ]
    >     ] -->

</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">TBDt</td>
              <td align="left">unsigned integer</td>
              <td align="left">DNS name suffix extension</td>
              <td align="left">draft-lenders-dns-cbor</td>
            </tr>
            <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>
          </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="1" month="September" year="2024"/>
            <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 to make use of the data.

   This specification describes Packed CBOR, a simple transformation of
   a CBOR data item into another 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.


   // The present version (-13) is a refresh of the implementation draft
   // -12 with minor editorial improvements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-13"/>
        </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="8" month="January" 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
   // revision (–16) addresses the first half of the WGLC comments,
   // except for the issues around the specific way how to best achieve
   // pluggable ABNF grammars for application-extensions.  It is
   // intended for use as a reference document for the mid-WGLC CBOR WG
   // interim meeting on 2025-01-08.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-16"/>
        </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="14" month="February" year="2025"/>
            <abstract>
              <t>   This document defines a protocol for sending DNS messages over the
   Constrained Application Protocol (CoAP).  These CoAP messages are
   protected by DTLS-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-12"/>
        </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 897?>

<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="cbor-diag"><![CDATA[
[["example", "org"]]
]]></sourcecode>
        <t>A query of an <tt>A</tt> record for the same name is represented as</t>
        <sourcecode type="cbor-diag"><![CDATA[
[["example", "org", 1]]
]]></sourcecode>
        <t>A query of <tt>ANY</tt> record for that name is represented as</t>
        <sourcecode type="cbor-diag"><![CDATA[
[["example", "org", 255, 255]]
]]></sourcecode>
      </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"/>).</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="cbor-diag"><![CDATA[
[[[300, h'20010db8000000000000000000000001']]]
]]></sourcecode>
        <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="cbor-diag"><![CDATA[
[[["example", "org", 300, h'20010db8000000000000000000000001']]]
]]></sourcecode>
        <t>If the query can not be mapped to the response for some reason, a response
would look like:</t>
        <sourcecode type="cbor-diag"><![CDATA[
[["example", "org"], [[300, h'20010db8000000000000000000000001']]]
]]></sourcecode>
        <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="cbor-diag"><![CDATA[
[[[300, h'c0000201']]]
]]></sourcecode>
        <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>
        <artwork><![CDATA[
[
  ["example", "org", 12, 1],
  [[3600, "_coap", "_udp", "local"]],
  [
    [3600, 2, "ns1", TBDt(0)],
    [3600, 2, "ns2", TBDt(0)]
  ],
  [
    [
      TBDt(2), 3600, 28,
      h'20010db8000000000000000000000001'
    ],
    [
      TBDt(2), 3600, 28,
      h'20010db8000000000000000000000002'
    ],
    [
      TBDt(5), 3600, 28,
      h'20010db8000000000000000000000035'
    ],
    [
      TBDt(6), 3600, 28,
      h'20010db8000000000000000000003535'
    ]
  ]
]
]]></artwork>
        <t>This one advertises two local CoAP servers (identified by service name <tt>_coap._udp.local</tt>) 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 + TBDt len.</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/>
TBDt(i) with i &lt; 24</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-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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
d7a3JdQpN1Npx3zYt3Ph7RSUbdCPTZwi4uJdE9m8w+sD6baS+tS82UGX9xpX
d73VU+We6zDnJBZkpM+slC5UTgamc7vXTuqUJ6rMuDi3CkY7wIzx9ZwNy6WB
yu4/Njum30q2sOCeZ5ylPKXcKNaVIXz5MQONJ0rodM8667utPmM6XOLSRFHC
WOMSJb3tNxPcriY4r3fY725jmoF2U8vN5Eb8Yx2Kw5s5tvv2UMoz4OQ4pfAW
hKnHKbntU2fv3FQRZRo3LubpM2sVT0Y9iLTLNj1mQPVXD61kW5UR0r2CTbgw
O0Iwbtpd4m0oLIE7UfiXN6N4P4h3YqQo1MVNkJa55U92OpzPfeuzJ3s70orc
bySX95XbW/e+sK/9O7XXX9ze3me0t7O3uL39e7dHe0Ge3vHRFxSyU4WCpgOw
j4uIhM5tqmjW2DThWC7QQMt4ZPTx42u88pLY3rvq7uM7kP6FZ7F0kiLlc5/D
X285D7ruQi9TS3GRQxxthftl9nun+Z09Dk/J+5Uy1GVXyuzsddVpmUuCY/Kn
UVFel5JLLi1kIKDl2DzE3PHA4hSauG9mfO0Y1hCiLoiRTX4W5bwJcGyFVfyA
ySDEHJS4TVO2U6QdCcHocNIbVt2JEZXFQHajJsBnjk0/w7C4DUP3lgDsEK9q
MhdPcGyy12T+6CsFlHvnxW2K4c4oNpHRcJYuc7MwChg/Y8cpntTEE6gUDCr3
/9Zv7OBQdswTr7kbhofRAU+8JAfTtpQHH2CCxtHNXPyGt+Tr4mr03SOoasmq
GjCGuZnQM3aU3PH0WnfzAkRxmtzoREf9HQmGwWz3ni/iXx9eBfKQ+yTwMrdC
MjsQ35aDq2/+o7f9FuyK8pIuj16RDWndJWUlwL+8zJ9ieJhEGCSjSZo9bjUM
o4WxVI8QoicWgaGsbJpP9PXUJqD7aIvqY0MFgvyEmMejInsi/OYRpoGLwXJ7
3IrDcdFSGZDazIfHfusJWomPtopJQ+EMg8Dc0sf1+X9DyH27oI0RauNZi4ww
amSn9aRxbLVm4Fe2bCgM3ZNhKMS8dBBPQDOibdqRRf7LawAu0ywscF001tHw
4RvB+qNimAZ3DUAHDv6fSCqGjbMT9RdOyLAJrQQN5QWW3eWfe19U2/q8AOcV
8I/xxDmfGMuXN93/Irh31v68HtzfVXSu5c1LNNBf+Q8uMf4FXKC7YtSfXXNZ
n+qvqnyh2dfy5g4/v7n1MGrdKbdippfhBEChHHjrYmnn0TDbeqKkrXtV7e3e
C47PwHnv4e/Zw72ngc0qTpSJPa2aFqf/z5mMXaiAmu7/5Ays4Dq9Fcvonl2s
Nwd8xnxWlGfMVwDZg37lhNUKdrJuwf11C/Z2m0reb5wr+Sf2QR7YtdnmfSvc
u4f9ZRUsec5SHH6g+vZkHT0O1VFHl7PVXK0CP/oIerJkKW3WBtXWkz9OnVtb
FXOU9P/vFDIw+f62llJGZcTxs7zkd5dtSaLVVkdHbXV9TJeBXp7oo96/W/Xf
W4E7La8xrGX0+fyabRLgf7kp/tbf2zMGfbSmYvb7tPxHqIxkHbXlnjxzCmcd
CqEoFASbXHs0CDZoSUDxhxXqcEMTBM89mv2dlb5l6GBg+KozBiZGYFaYKuuh
qdqylP+j0Leyuz9YiVuNZvJERnKOMZK4k98X39TnPClPRP6R2F7S2R+jrB3F
sTlVyWxzrVV9SVGGgmke0clLzrcCXJtfLG/BShzNCHEoDN9IH/YrHarovLQ6
/sNUvmNruNTpC74HdS1aW1h5reV7XMPCwupLFL0HSoKLXqQ3nncVYTjEm4UB
vW8xWGD5P+tUJkV5POjtHPZ3e/sq9DP0sFIcOh4YldCJzE6RYC7WyqHEaw72
rJwoyOXAx3JQtw/XBpVk5hQ6COSMdSKe1VACaOg2Kg4CLmM9ZmmUFLmHZw/P
/ey9kvvpTWggeZbzagUqv6gx0phNIKWSWI4NnZMC+VyZ4X+T7rSKMG3o3E2B
YOezN+HFlHdQNknucIuXtjagjRMrKx/tHh93kPYx1ooOUOPdMQXF3A7/ycne
SbmIMBItmNOsyWQmUcFAAltOV0/QwXoTBDySjnpgfsdaMphbzrnEETrk6NeZ
CGVqK7lRACk6Jhpx7SZjg1Fhtja8yY5vENKXtubOXR58P6NFE+W19hz4NtZZ
TWzv+MnR9ZHAdPnsuLe9s9ehzJPVfRopk4PcGlHKIZ2nV0C/M7F2fG0vmDIR
HnCmcxIGP3pTOkrKXXGk0/ehm+aEMtSXK82EclCSDWv3hw+1JLRVgtmbli1P
RvXK6X+4/vrkXavFO0yfWMqPnO2qBbtH0GTLemypzhPVWlC2tXIQ++sN4hnm
8kADLtBXggKbiGN8mMLyg2lZvVz21u4K8GXFK37i+C9EJbI4os6RP9ORzogp
sCbuFqQihWrPkceUyeGb9hYj5JjIsgh4kzoeaYT3ttKETFh93Yub5mLFwHfX
J5TGo4GGIjvqMpymH5CQ6dKJSmoNhItUT2mMDmLZ6bhMBo7q4uZaq8axs944
NFeRrSb7FCBC2JDXETk0ZS4DLnl8cvIC55RAjIIoxXjoEQB7RyQgCKjnfFtN
f/31p8HKDqEZryTdJYTa3G5Vr731ekUyOz87P+VNzFKEskAlARgleSGbn8j0
TemSkZVXC/GBuBEl5aFPFDR5dsLn0+hyASSg2xBP18n5M5NMUXJq3lmyawza
AB9pS4m/dIQXrRr9+uqWyYU0lgTf1entKHPri9bO7BU8L4Ad/IIMyV6aIDKi
BDfViX9hDIDEqFI7SGuet0RXHCh9IAoXCEAEjWZdHUG/FaSjrUkxjbcWHx9b
ot19YePbh4sbP/jixg8WN/7wixt/uLjx/S9ufH9x43tf3Pje4sZ3v7jx3cWN
73xx4zuLG+9/ceP9xY33vrjx3uLGv3iFbm+j/Xg0woP1cRjQkaXc+3UwT/ik
EOVwo7N2vikTdr3/CzBjQ2fLugAA

-->

</rfc>
