<?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.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lenders-dns-cbor-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="dns+cbor">A Concise Binary Object Representation (CBOR) of DNS Messages</title>
    <seriesInfo name="Internet-Draft" value="draft-lenders-dns-cbor-01"/>
    <author fullname="Martine Sophie Lenders">
      <organization abbrev="FU Berlin">Freie Universität Berlin</organization>
      <address>
        <email>m.lenders@fu-berlin.de</email>
      </address>
    </author>
    <author fullname="Thomas C. Schmidt">
      <organization>HAW Hamburg</organization>
      <address>
        <email>t.schmidt@haw-hamburg.de</email>
      </address>
    </author>
    <author fullname="Matthias Wählisch">
      <organization abbrev="FU Berlin">Freie Universität Berlin</organization>
      <address>
        <email>m.waehlisch@fu-berlin.de</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Applications</area>
    <workgroup>CBOR</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>CBOR</keyword>
    <keyword>DNS</keyword>
    <abstract>
      <t>This document specifies a compressed data format of DNS messages using
the Concise Binary Object Representation <xref target="RFC7049"/>.
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>
    <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="RFC7049"/> 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="RFC7049"/>.</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>
    </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 transport protocol of choice.  To define the representation of binary
objects we use the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>.</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>
          <artwork type="CDDL" align="center"><![CDATA[
domain-name = tstr .regexp "([^.]+\.)*[^.]+"
]]></artwork>
        </figure>
      </section>
      <section anchor="sec_queries">
        <name>DNS Queries</name>
        <t>DNS queries are encoded as CBOR arrays containing up to 3 entries in the following order: An
optional transaction ID (as unsigned integer), the name (as text string, see <xref target="sec_domain-names"/>),
an optional record type (as unsigned integer), and an optional record class (as unsigned integer).</t>
        <t>If the transaction ID is elided, the value 0 is assumed.
It <bcp14>MUST</bcp14> be included and set to an unpredictable value less than $2^{32}$, if the DNS
transport can not ensure the prevention of DNS response spoofing.
An example for such a transport is unencrypted DoC (see <xref target="I-D.ietf-core-dns-over-coap"/>, Section 6).</t>
        <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.
If a record class is required, the record type <bcp14>MUST</bcp14> also be provided.</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>
          <artwork type="CDDL" align="center"><![CDATA[
type-spec = (
  record-type: uint,
  ? record-class: uint,
)
dns-question = (
  ? id: uint,
  name: domain-name,
  ? type-spec,
)
dns-query = [dns-question]
]]></artwork>
        </figure>
      </section>
      <section anchor="sec_rr">
        <name>Standard DNS Resource Records (RRs)</name>
        <t>DNS resource records are encoded as CBOR arrays containing 2 to 5 entries in the following
order: An optional name (as text string, see <xref target="sec_domain-names"/>), a TTL (as unsigned
integer), an optional record type (as unsigned integer), an optional record class (as unsigned
integer), and lastly a record data entry (as byte string or text string).</t>
        <t>If the first element of the resource record is a string, the first element is a name.  If the
name is elided, the name from the query, either derived from transport context or the provided
question section, see <xref target="sec_responses"/>, is assumed.  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. If a record class is required, the record type <bcp14>MUST</bcp14> also be provided.</t>
        <t>The byte format of the record data 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 and only 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 bytes of data, because the byte representation of DNS names requires both an additional
byte to define the length of the first name component as well as a 0 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.</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>
          <artwork type="CDDL" align="center"><![CDATA[
rr = (
  ? name: domain-name,
  ttl: uint,
  ? type-spec,
  rdata: bstr / domain-name,
)
dns-rr = [rr]
]]></artwork>
        </figure>
      </section>
      <section anchor="sec_responses">
        <name>DNS Responses</name>
        <t>DNS responses are encoded as a CBOR array containing up to 5 entries.
The first entry <bcp14>MAY</bcp14> be an unsigned integer, representing the transaction ID of the response.
If CBOR array is a response to a query that contains a transaction ID, it <bcp14>MUST</bcp14> be included and set
to the corresponding value present in the query.
If it is not included, the transaction ID is implied to be 0.
The remaining 4 entries are arrays:</t>
        <t>If only 1 array is included, then 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 2 arrays are included, then the first entry is a question section and the second entry is
an answer section. The question section is encoded like a DNS query as specified in
<xref target="sec_queries"/>, the answer section is represented as an array of one or more DNS Resource
Records (see <xref target="sec_rr"/>).</t>
        <t>If 3 arrays are included, then the first section is a question section, the second an answer
section, and the third an additional section (TBD: back choice to favor additional section by
empirical data). Again, the question section is encoded like a DNS query as specified in
<xref target="sec_queries"/> and both answer and additional sections are represented each as an array of one
or more DNS Resource Records (see <xref target="sec_rr"/>).</t>
        <t>If 4 arrays are included, then the first section is a question section, the second an answer
section, the third an authority section, and the fourth an additional section (TBD: back by
empirical data). They follow the specification of 3 arrays in the answer. 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>
          <artwork type="CDDL" align="center"><![CDATA[
extra-sections = (
  ? authority: [+ dns-rr],
  additional: [+ dns-rr],
)
sections = ((
  ? id: uint,
  answer: [+ dns-rr],
) // (
  ? id: uint,
  question: dns-query,
  answer: [+ dns-rr],
  ? extra-sections,
))
dns-response = [sections]
]]></artwork>
        </figure>
      </section>
      <section anchor="edns0">
        <name>EDNS(0)</name>
        <t>TBD, do we need special formatting here?</t>
      </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>
        <t>A DNS client uses media type "application/dns+cbor-packed" 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").
The server then <bcp14>SHOULD</bcp14> reply with the response in packed CBOR.</t>
        <t>The representation of DNS responses in packed CBOR differs, in that responses are now represented as
a CBOR array of two arrays.
The first array is a packing table that is used both as shared item table and argument table (see
<xref target="I-D.ietf-cbor-packed"/>, Section 2.1), the second is the compressed response.</t>
        <t>The representation of a packed DNS response is defined in <xref target="fig_packed-cbor"/>.</t>
        <figure anchor="fig_packed-cbor">
          <name>Definition of DNS messages in packed CBOR</name>
          <artwork type="CDDL" align="center"><![CDATA[
compr-dns-response = any /TBD; how to express packed CBOR in CDDL?/
packed-dns-response = [[pack-table], compr-dns-response]
pack-table = any
]]></artwork>
        </figure>
        <t>If an index in the packing table is referenced with shared item reference (<xref target="I-D.ietf-cbor-packed"/>,
Section 2.2) a decoder uses the packing table as a shared item table.
If an index in the packing table is referenced as an argument (<xref target="I-D.ietf-cbor-packed"/>, Sections 2.3 and
4), a decoder uses the packing table as an argument table.</t>
        <t>Discussion TBD:</t>
        <ul spacing="normal">
          <li>For queries, as they are only one question, i.e. at most one value of each at most,
compression is not necessary.</li>
          <li>
            <t>Address and name compression are mostly about affix compression
(i.e. straight/inverse referencing) \
==&gt; For occasions were value is the affix (e.g., "example.org" in ANY example in
<xref target="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))
            </t>
            <ul spacing="normal">
              <li>
                <t><strong>Example:</strong> Using Basic Packed CBOR (<xref target="I-D.ietf-cbor-packed"/>, section 3.1):
                </t>
                <ul spacing="normal">
                  <li>131 bytes (Basic Packed CBOR)</li>
                  <li>200 bytes (plain CBOR, see <xref target="sec_response-examples"/>)</li>
                  <li>194 bytes (wire-format)</li>
                </ul>
                <ul empty="true">
                  <li>
                    <artwork><![CDATA[
113(
  [
    ["_coap._udp.local", "example.org", 3600, 28, 2],
    [h'20010db800000000000000000000', simple(1)],
    [
      [simple(1), 12, 1],
      [[simple(1), simple(0)]],
      [
        [simple(1), simple(4), 217("ns1.")],
        [simple(1), simple(4), 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')]
      ]
    ]
  ]
)
]]></artwork>
                  </li>
                </ul>
                <t>
vs. application/dns+cbor-packed (shared and argument table as one) 126 bytes:      </t>
                <ul empty="true">
                  <li>
                    <artwork><![CDATA[
[
  [
    h'20010db800000000000000000000',
    "_coap._udp.local" "example.org", 3600, 28, 2
  ],
  [
    [simple(1), 12, 1],
    [[simple(3), simple(1)]],
    [
      [simple(2), simple(5), 218("ns1.")],
      [simple(2), simple(5), 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')]
    ]
  ]
]
]]></artwork>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <section anchor="sec_pack-table-setup">
          <name>Table Setup</name>
          <t>TBD How to construct the packing table, here's a sketch:</t>
          <ul spacing="normal">
            <li>
              <t>Find most often used prefix and values
              </t>
              <ul spacing="normal">
                <li>Probably some threshold needed, to prevent, e.g., 1 byte prefixes filling valuable table space</li>
              </ul>
            </li>
            <li>
              <t>Sort descending by number of occurrences and length
              </t>
              <ul spacing="normal">
                <li>Long prefixes should take precedence for index 0 for Tag 6 usage</li>
              </ul>
            </li>
          </ul>
        </section>
      </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 two media type for the serialization format of DNS messages in CBOR. They
follow 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: None</t>
          <t>Encoding considerations: Must be encoded as using <xref target="RFC7049"/>. 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 anchor="applicationdnscbor-packed">
          <name>"application/dns+cbor-packed"</name>
          <t>Type name: application</t>
          <t>Subtype name: dns+cbor-packed</t>
          <t>Required parameters: None</t>
          <t>Optional parameters: None</t>
          <t>Encoding considerations: Must be encoded as using <xref target="RFC7049"/>. 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 types "application/dns+cbor" and "application/dns+cbor-packed""
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="applicationdnscbor-packed-1">
          <name>"application/dns+cbor-packed"</name>
          <t>Media-Type: application/dns+cbor-packed</t>
          <t>Encoding: -</t>
          <t>Id: TBD</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris">
              <organization/>
            </author>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System.  It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC3596">
          <front>
            <title>DNS Extensions to Support IP Version 6</title>
            <author fullname="S. Thomson" initials="S." surname="Thomson">
              <organization/>
            </author>
            <author fullname="C. Huitema" initials="C." surname="Huitema">
              <organization/>
            </author>
            <author fullname="V. Ksinant" initials="V." surname="Ksinant">
              <organization/>
            </author>
            <author fullname="M. Souissi" initials="M." surname="Souissi">
              <organization/>
            </author>
            <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="RFC7049">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="October" year="2013"/>
            <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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7049"/>
          <seriesInfo name="DOI" value="10.17487/RFC7049"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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="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="24" month="July" year="2022"/>
            <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 (-07) adds the concept of Tag Equivalence as
   // initially discussed at the CBOR Interim meeting 12 in 2022 and
   // further in PR #6, for discussion before and at IETF 114.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-07"/>
        </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">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version.  It describes the document collection and provides definitions and other material that are common to the set.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <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>
        <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">
              <organization/>
            </author>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar">
              <organization/>
            </author>
            <author fullname="J. Hui" initials="J." surname="Hui">
              <organization/>
            </author>
            <author fullname="D. Culler" initials="D." surname="Culler">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. Thubert" initials="P." surname="Thubert">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Ersue" initials="M." surname="Ersue">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. McManus" initials="P." surname="McManus">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="L. Toutain" initials="L." surname="Toutain">
              <organization/>
            </author>
            <author fullname="C. Gomez" initials="C." surname="Gomez">
              <organization/>
            </author>
            <author fullname="D. Barthel" initials="D." surname="Barthel">
              <organization/>
            </author>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="L. Toutain" initials="L." surname="Toutain">
              <organization/>
            </author>
            <author fullname="R. Andreasen" initials="R." surname="Andreasen">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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="24" month="October" year="2022"/>
            <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-01"/>
        </reference>
      </references>
    </references>
    <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="RFC7049"/> 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="RFC7049"/> 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-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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
Pts5yMpLAAA=

-->

</rfc>
