<?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.6.43 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lenders-dns-cbor-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.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-04"/>
    <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 fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <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">TUD Dresden University of Technology</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="2023" month="October" day="02"/>
    <area>Applications</area>
    <workgroup>CBOR</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>CBOR</keyword>
    <keyword>DNS</keyword>
    <abstract>
      <?line 71?>

<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 78?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In constrained networks <xref target="RFC7228"/>, the link layer may restrict the payload sizes 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, because
fragmentation combined with high packet loss multiplies the loss.  As such, a compression
format for DNS messages is needed.</t>
      <t>This document specifies a compressed data format for DNS messages.  DNS messages are encoded in
Concise Binary Object Representation (CBOR) <xref target="RFC8949"/> and, additionally, unnecessary or
redundant information is removed.  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>
    </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>TBD DNS server and client.</t>
      <t>A DNS query is a message that queries DNS information from an upstream DNS resolver.</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>To keep overhead minimal, a DNS message is represented as CBOR arrays.  All CBOR items used in
this specification are of definite length.  CBOR arrays that do not follow the length
definitions of this or follow-up specifications, <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"/>.</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 is not representable in the CBOR format specified in this
document, a fallback to the another DNS message format, e.g., the classic DNS wire format, <bcp14>MUST</bcp14>
always be possible.</t>
      <section anchor="sec_domain-names">
        <name>Domain Name Representation</name>
        <t>Domain names are represented in their commonly known string format (e.g., "example.org", see Section
2.3.1 in <xref target="RFC1035"/>) and in IDNA encoding <xref target="RFC5890"/> as a text string. 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"/>.</t>
        <figure anchor="fig_domain-name">
          <name>Domain Name Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
domain-name = tstr .regexp "([^.]+[.])*[^.]+"
]]></sourcecode>
        </figure>
      </section>
      <section anchor="sec_rr">
        <name>DNS Resource Records</name>
        <t>This document specifies the representation of both standard DNS resource records (RRs, see <xref target="RFC1035"/>)
and EDNS option pseudo-RRs (see <xref target="RFC6891"/>).
If for any reason, a resource record can not 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 to 5 entries in the following
order:</t>
          <ol spacing="normal" type="1"><li>An optional name (as text string, see <xref target="sec_domain-names"/>),</li>
            <li>A TTL (as unsigned integer),</li>
            <li>An optional record type (as unsigned integer),</li>
            <li>An optional record class (as unsigned integer), and lastly</li>
            <li>A record data entry (as unsigned integer, negative integer, byte string, or text string).</li>
          </ol>
          <t>If the first item of the resource record is a text string, it is its name.
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, the record type <bcp14>MUST</bcp14> also be provided.</t>
          <t>The byte format of the record data as a byte string follows the wire format as specified in Section
3.3 <xref target="RFC1035"/> (or other specifications of the respective record type).  Note that this format does
not include the RDLENGTH field from <xref target="RFC1035"/> as this value is encoded in the length field of the
CBOR 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 a text string as specified in <xref target="sec_domain-names"/>.
This can save 1 byte of data, because the byte representation of DNS names requires both an
additional byte to define the length of the first name component and well as a zero byte at the end
of the name.
With CBOR on the other hand only 1 byte is required to define type and length of the text string up
until a string length of 23 characters.
Likewise, if the record data is purely a numerical value, it can be expressed as either an unsigned
or negative integer.</t>
          <figure anchor="fig_dns-standard-rr">
            <name>DNS Standard Resource Record Definition</name>
            <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
rr = [
  ? name: domain-name,
  ttl: uint,
  ? type-spec,
  rdata: int / bstr / domain-name,
]
type-spec = (
  record-type: uint,
  ? record-class: uint,
)
]]></sourcecode>
          </figure>
        </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 but it can be
elided if it defaults to 512, the maximum allowable size for DNS over UDP <xref target="RFC6891"/>.</t>
          <t>The next element is an array of the options, which are represented two elements each, an unsigned
integer, the option code, followed by a byte string, the option data.
Multiple options alternate between unsigned integer and byte string within the array.</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>TBD: reverse extended flags to get MSB-defined DO into LSB?</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: uint .default 512,
  options: [* opt],
  ? opt-rcode-v-flags,
]
opt = (
  ocode: uint,
  odata: bstr,
)
opt-rcode-v-flags = (
  flags: uint .default 0,
  ? opt-rcode-v,
)
opt-rcode-v = (
  rcode: uint .default 0,
  ? version: uint .default 0,
)
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="sec_queries">
        <name>DNS Queries</name>
        <t>DNS queries are encoded as CBOR arrays containing up to 5 entries in the following order:</t>
        <ol spacing="normal" type="1"><li>An optional flag field (as unsigned integer),</li>
          <li>The question section (as array),</li>
          <li>An optional authority section (as array), and</li>
          <li>An optional additional section (as array)</li>
        </ol>
        <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.
It <bcp14>MUST</bcp14> be lesser than 2^16.</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>The question section is encoded as a CBOR array containing up to 3 entries:</t>
        <ol spacing="normal" type="1"><li>The queried name (as text string, see <xref target="sec_domain-names"/>),</li>
          <li>An optional record type (as unsigned integer), and</li>
          <li>An optional record class (as unsigned integer)</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>The remainder of the query is either empty or <bcp14>MUST</bcp14> consist of up to two arrays.
The first array, if present, encodes the authority section of the query as an array of DNS
resource records (see <xref target="sec_rr"/>)
The second array, if present, encodes the additional section of the query as an array of DNS
resource records (see <xref target="sec_rr"/>)</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 = [
  ? flags: uint .default 0x0000,
  question-section,
  ? extra-sections,
]
question-section = [
  name: domain-name,
  ? type-spec,
]
extra-sections = (
  ? authority: [+ dns-rr],
  additional: [+ dns-rr],
)
]]></sourcecode>
        </figure>
      </section>
      <section anchor="sec_responses">
        <name>DNS Responses</name>
        <t>DNS responses are encoded as a CBOR array containing up to 7 entries.</t>
        <ol spacing="normal" type="1"><li>An optional flag field (as unsigned integer),</li>
          <li>An optional question section (as array, encoded as described in <xref target="sec_queries"/>)</li>
          <li>The answer section (as array),</li>
          <li>An optional authority section (as array), and</li>
          <li>An optional additional section (as array)</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 1 array, this is the DNS answer section represented as 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 1 additional array, it is the additional section (TBD:
back choice to favor additional section by empirical data). Like the answer section, the additional
sections 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 2 additional arrays, the first is the authority section, and
the second the additional section (TBD: back choice to favor additional section by empirical data).
The authority section is also represented as an array of one or more DNS Resource Records (see
<xref target="sec_rr"/>).</t>
        <figure anchor="fig_dns-response">
          <name>DNS Response Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-response = [
  ? flags: uint .default 0x8000,
  ? question-section,
  answer-section: [+ dns-rr],
  ? extra-sections,
]
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="name-and-address-compression-with-packed-cbor">
      <name>Name and Address Compression with Packed CBOR</name>
      <t>If both DNS server and client support packed CBOR <xref target="I-D.ietf-cbor-packed"/>, it <bcp14>MAY</bcp14> be used for name and
address compression in DNS responses.</t>
      <section anchor="media-type-negotiation">
        <name>Media Type Negotiation</name>
        <t>A DNS client uses 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 if the server supports packed
CBOR.
If it does, it <bcp14>MAY</bcp14> request the response to be in packed CBOR (media type
"applicaton/dns+cbor;packed=1").
The server then <bcp14>SHOULD</bcp14> reply with the response in packed CBOR.</t>
      </section>
      <section anchor="dns-representation-in-packed-cbor">
        <name>DNS Representation in Packed CBOR</name>
        <t>The representation of DNS responses in packed CBOR 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.</t>
      </section>
      <section anchor="sec_pack-compression">
        <name>Compression</name>
        <t>How the compressor constructs 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 were 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 Packed CBOR ({{I-D.ietf-cbor-packed}}, section 3.1):
    - 130 bytes (Basic Packed CBOR)
    - 200 bytes (plain CBOR, see {{sec:response-examples}})
    - 194 bytes (wire-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="comparison-to-wire-format">
      <name>Comparison to wire format</name>
      <t>TBD: Table comparing DNS wire-format, DNS+CBOR, and DNS+CBOR-packed</t>
    </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:
   Martine S. Lenders <eref target="mailto:m.lenders@fu-berlin.de">m.lenders@fu-berlin.de</eref></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: Martine S. Lenders <eref target="mailto:m.lenders@fu-berlin.de">m.lenders@fu-berlin.de</eref></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="applicationdns-cbor">
          <name>"application/dns-cbor"</name>
          <t>Media-Type: application/dns+cbor</t>
          <t>Encoding: -</t>
          <t>Id: TBD</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: TBD</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
      </section>
      <section anchor="cbor-tags-registry">
        <name>CBOR Tags Registry</name>
        <t>In the registry "<xref section="CBOR Tags" relative="#cbor-tags" sectionFormat="bare" target="IANA.cbor-tags"/>" <xref target="IANA.cbor-tags"/>,
IANA is requested to allocate the tags defined in <xref target="tab-tag-values"/>.</t>
        <table anchor="tab-tag-values">
          <name>Values for Tag Numbers</name>
          <thead>
            <tr>
              <th align="right">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD141</td>
              <td align="left">array</td>
              <td align="left">CBOR EDNS option record</td>
              <td align="left">draft-lenders-dns-cbor</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <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="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="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>
            <date day="10" month="July" year="2023"/>
            <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 receiver 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 receiver.


   // The present version (-09) provides two table setup tags (common,
   // split setup) and discusses behavior in case of references to
   // unpopulated table entries during unpacking.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-09"/>
        </reference>
        <reference anchor="IANA.cbor-tags" target="http://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="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <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="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="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>Freie Universität Berlin</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>Huawei Technologies</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>Freie Universität Berlin</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <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-03"/>
        </reference>
      </references>
    </references>
    <?line 558?>

<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 Section 8 in
<xref target="RFC8949"/> and Appendix G in <xref target="RFC8610"/>) as follows:</t>
        <artwork><![CDATA[
[["example.org"]]
]]></artwork>
        <t>A query of an <tt>A</tt> record for the same name is represented as</t>
        <artwork><![CDATA[
[["example.org", 1]]
]]></artwork>
        <t>A query of <tt>ANY</tt> record for that name is represented as</t>
        <artwork><![CDATA[
[["example.org", 255, 255]]
]]></artwork>
      </section>
      <section anchor="sec_response-examples">
        <name>DNS Responses</name>
        <t>The responses to the examples provided in <xref target="sec_query-examples"/> are shown
below. We use the CBOR extended diagnostic notation (EDN) (see Section 8 in
<xref target="RFC8949"/> and Appendix G in <xref 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>
        <artwork><![CDATA[
[[[300, h'20010db8000000000000000000000001']]]
]]></artwork>
        <t>In this case, the name is derived from the query.</t>
        <t>If the name or the context is required, the following response would also
be valid:</t>
        <artwork><![CDATA[
[[["example.org", 300, h'20010db8000000000000000000000001']]]
]]></artwork>
        <t>If the query can not be mapped to the response for some reason, a response
would look like:</t>
        <artwork><![CDATA[
[["example.org"], [[300, h'20010db8000000000000000000000001']]]
]]></artwork>
        <t>To represent a minimal response of an <tt>A</tt> record with TTL 3600 seconds for the IPv4 address
192.0.2.1, a minimal response to <tt>["example.org", 1]</tt> could be</t>
        <artwork><![CDATA[
[[300, h'c0000201']]
]]></artwork>
        <t>Note that here also the 1 of record type <tt>A</tt> can be elided, as this record
type is specified in the question section.</t>
        <t>Lastly, a response to <tt>["example.org", 255, 255]</tt> could be</t>
        <artwork><![CDATA[
[
  ["example.org", 12, 1],
  [[3600, "_coap._udp.local"]],
  [
    [3600, 2, "ns1.example.org"],
    [3600, 2, "ns2.example.org"]
  ],
  [
    [
      "_coap._udp.local", 3600, 28,
      h'20010db8000000000000000000000001'
    ],
    [
      "_coap._udp.local", 3600, 28,
      h'20010db8000000000000000000000002'
    ],
    [
      "ns1.example.org", 3600, 28,
      h'20010db8000000000000000000000035'
    ],
    [
      "ns2.example.org", 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.</t>
      </section>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <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>Provide format description for EDNS OPT Pseudo-RRs</li>
          <li>Simplify CDDL to more idiomatic style</li>
          <li>Remove DNS transaction IDs</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>Add Discussion section and note on compression</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>Use MIME type parameter for packed instead of own MIME type</li>
          <li>Update definitions to accommodate for TID and flags, as well as more sections in query</li>
          <li>Clarify fallback to wire-format</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>Add support for DNS transaction IDs</li>
          <li>Name and Address compression utilizing CBOR-packed</li>
          <li>Minor fixes to CBOR EDN and CDDL</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
      <ul spacing="normal">
        <li>Carsten Bormann</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
eJ07eP8PUKXd87daAAA=

-->

</rfc>
