<?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.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lenders-dns-cbor-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.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-02"/>
    <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="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 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="2023" month="March" day="13"/>
    <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="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>
    <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>
    </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>
      <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>
          <artwork type="CDDL" align="center"><![CDATA[
domain-name = tstr .regexp "([^.]+\.)*[^.]+"
]]></artwork>
        </figure>
      </section>
      <section anchor="sec_rr">
        <name>Standard DNS Resource Records (RRs)</name>
        <t>DNS resource records are encoded either in their binary form as a byte string or 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 transport context.</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>
        <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[
type-spec = (
  record-type: uint,
  ? record-class: uint,
)
rr = (
  ? name: domain-name,
  ttl: uint,
  ? type-spec,
  rdata: int / bstr / domain-name,
)
dns-rr = [rr] / bstr
]]></artwork>
        </figure>
      </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 transaction ID (as unsigned integer),</li>
          <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 the transaction ID.
If the transaction ID is present and followed by another unsigned integer, that item is a 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 transaction ID is elided, the value 0 is assumed, same for the flags.
The transaction ID <bcp14>MUST</bcp14> be included and set to an unpredictable value lesser 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>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>
          <artwork type="CDDL" align="center"><![CDATA[
query-id-flags = (
  id: uint .default 0,
  ? flags: uint .default 0,
)
question-section = (
  name: domain-name,
  ? type-spec,
)
extra-sections = (
  ? authority: [+ dns-rr],
  additional: [+ dns-rr],
)
query-sections = (
  ? query-id-flags,
  [question-section],
  ? extra-sections,
)
dns-query = [query-sections]
]]></artwork>
        </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 transaction ID (as unsigned integer),</li>
          <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>If the 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.</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 2 arrays, the first entry is a question section and the second
entry is an answer section. The question section is encoded like 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 the response includes 3 arrays, 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 the response includes 4 arrays, 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[
response-id-flags = (
  id: uint .default 0,
  ? flags: uint .default 0x8000,
)
response-sections = ((
  ? response-id-flags,
  answer: [+ dns-rr],
) // (
  ? response-id-flags,
  question: [question-section],
  answer: [+ dns-rr],
  ? extra-sections,
))
dns-response = [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=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>
        <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)<br/>
==&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=1 (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(2), 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 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>
  </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="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="RFC8949">
          <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="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="23" month="January" 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 (-08) is a refresh update to -07, which added
   // the concept of Tag Equivalence as initially discussed at the CBOR
   // Interim meeting 12 in 2022 and at IETF 114.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-08"/>
        </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="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-01">
        <name>Since [draft-lenders-dns-cbor-01]</name>
        <ul spacing="normal">
          <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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
6EAIUgAA

-->

</rfc>
