<?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.36 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lenders-dns-cbor-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="dns+cbor">A Concise Binary Object Representation (CBOR) of DNS Messages</title>
    <seriesInfo name="Internet-Draft" value="draft-lenders-dns-cbor-03"/>
    <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="July" day="10"/>
    <area>Applications</area>
    <workgroup>CBOR</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>CBOR</keyword>
    <keyword>DNS</keyword>
    <abstract>
      <?line 61?>

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>In constrained networks <xref target="RFC7228"/>, the link layer may restrict the payload sizes to
only a few hundreds bytes.  Encrypted DNS resolution, such as DNS over HTTPS (DoH) <xref target="RFC8484"/> or
DNS over CoAP (DoC) <xref target="I-D.ietf-core-dns-over-coap"/>, may lead to DNS message sizes that exceed this limit, even when
implementing header compression such as 6LoWPAN IPHC <xref target="RFC6282"/> or SCHC <xref target="RFC8724"/>,
<xref target="RFC8824"/>.</t>
      <t>Although adoption layers such as 6LoWPAN <xref target="RFC4944"/> or SCHC <xref target="RFC8724"/> offer fragmentation to
comply with small MTUs, fragmentation should be avoided in constrained networks, because
fragmentation combined with high packet loss multiplies the loss.  As such, a compression
format for DNS messages is needed.</t>
      <t>This document specifies a compressed data format for DNS messages.  DNS messages are encoded in
Concise Binary Object Representation (CBOR) <xref target="RFC8949"/> and, additionally, unnecessary or
redundant information is removed.  To use the outcome of this specification in DoH and DoC,
this document also specifies a Media Type header for DoH and a Content-Format option for DoC.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>CBOR types (unsigned integer, byte string, text string, arrays, etc.) are used as defined in
<xref target="RFC8949"/>.</t>
      <t>TBD DNS server and client.</t>
      <t>A DNS query is a message that queries DNS information from an upstream DNS resolver.</t>
      <t>The term "constrained networks" is used as defined in <xref target="RFC7228"/>.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="cbor-representations-applicationdnscbor">
      <name>CBOR Representations (application/dns+cbor)</name>
      <t>To keep overhead minimal, a DNS message is represented as CBOR arrays.  All CBOR items used in
this specification are of definite length.  CBOR arrays that do not follow the length
definitions of this or follow-up specifications, <bcp14>MUST</bcp14> be silently ignored.  It is assumed that
DNS query and DNS response are distinguished message types and that the query can be mapped to
the response by the 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? Yes! We'll use tags.
Other special regcords may be needed as well.</t>
      </section>
    </section>
    <section anchor="name-and-address-compression-with-packed-cbor">
      <name>Name and Address Compression with Packed CBOR</name>
      <t>If both DNS server and client support packed CBOR <xref target="I-D.ietf-cbor-packed"/>, it <bcp14>MAY</bcp14> be used for name and
address compression in DNS responses.</t>
      <section anchor="media-type-negotiation">
        <name>Media Type Negotiation</name>
        <t>A DNS client uses media type "application/dns+cbor;packed=1" to negotiate (see, e.g.,
<xref target="RFC9110"/> or <xref target="RFC7252"/>, Section 5.5.4) with the DNS server if the server supports packed
CBOR.
If it does, it <bcp14>MAY</bcp14> request the response to be in packed CBOR (media type
"applicaton/dns+cbor;packed=1").
The server then <bcp14>SHOULD</bcp14> reply with the response in packed CBOR.</t>
      </section>
      <section anchor="dns-representation-in-packed-cbor">
        <name>DNS Representation in Packed CBOR</name>
        <t>The representation of DNS responses in packed CBOR 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>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>
      </section>
      <section anchor="sec_pack-compression">
        <name>Compression</name>
        <t>How the compressor constructs the packing table, i.e., how the compression is applied, is out of
scope of this document. Several potential compression algorithms were evaluated in [TBD].</t>
      </section>
      <section anchor="discussion">
        <name>Discussion</name>
        <t>The DNS-specific specification for packed CBOR merges the argument and shared item table into one
packed table. This differentiates it from the Basic Packed CBOR format specified in
<xref target="I-D.ietf-cbor-packed"/>.</t>
        <t>In DNS compression only affix compression, i.e. straight/inverse referencing, and shared value
referencing are needed for DNS compression, but no further functions. Since for those types of
references, the arguments of the affix compression and the shared values do not collide—shared
values are just affixes with an empty rump—we only need one table. Using this specific constrained
for DNS, allows us to save the additional bytes that would be required for the 113 tag and the extra
array in the Basic Packed CBOR format.</t>
        <t>Compression of queries is not specified, as apart from EDNS(0) (<em>TBD</em>), they only consist of one
question most of the time.</t>
        <!--
Discussion TBD:

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

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

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

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

</section>
    </section>
    <section anchor="comparison-to-wire-format">
      <name>Comparison to wire format</name>
      <t>TBD: Table comparing DNS wire-format, DNS+CBOR, and DNS+CBOR-packed</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-type">
        <name>Media Type Registration</name>
        <t>This document registers a media type for the serialization format of DNS messages in CBOR. It
follows the procedures specified in <xref target="RFC6838"/>.</t>
        <section anchor="applicationdnscbor">
          <name>"application/dns+cbor"</name>
          <t>Type name: application</t>
          <t>Subtype name: dns+cbor</t>
          <t>Required parameters: None</t>
          <t>Optional parameters: packed</t>
          <t>Encoding considerations: Must be encoded as using <xref target="RFC8949"/>. See [TBD-this-spec] for details.</t>
          <t>Security considerations: See <xref target="security-considerations"/> of this draft</t>
          <t>Interoperability considerations: TBD</t>
          <t>Published specification: [TBD-this-spec]</t>
          <t>Applications that use this media type: TBD DNS over X systems</t>
          <t>Fragment Identifier Considerations: TBD</t>
          <t>Additional information:</t>
          <t>   Deprecated alias names for this type: N/A</t>
          <t>   Magic number(s): N/A</t>
          <t>   File extension(s): dnsc</t>
          <t>   Macintosh file type code(s): none</t>
          <t>Person &amp; email address to contact for further information:
   Martine S. Lenders <eref target="mailto:m.lenders@fu-berlin.de">m.lenders@fu-berlin.de</eref></t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on Usage: None?</t>
          <t>Author: Martine S. Lenders <eref target="mailto:m.lenders@fu-berlin.de">m.lenders@fu-berlin.de</eref></t>
          <t>Change controller: Martine S. Lenders <eref target="mailto:m.lenders@fu-berlin.de">m.lenders@fu-berlin.de</eref></t>
          <t>Provisional registrations? No</t>
        </section>
      </section>
      <section anchor="coap-content-format-registration">
        <name>CoAP Content-Format Registration</name>
        <t>IANA is requested to assign CoAP Content-Format ID for the new DNS message media
types in the "CoAP Content-Formats"
sub-registry, within the "CoRE Parameters" registry <xref target="RFC7252"/>, corresponding the
"application/dns+cbor" media type specified in <xref target="media-type"/>:</t>
        <section anchor="applicationdns-cbor">
          <name>"application/dns-cbor"</name>
          <t>Media-Type: application/dns+cbor</t>
          <t>Encoding: -</t>
          <t>Id: TBD</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
        <section anchor="applicationdnscborpacked1">
          <name>"application/dns+cbor;packed=1"</name>
          <t>Media-Type: application/dns+cbor;packed=1</t>
          <t>Encoding: -</t>
          <t>Id: TBD</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
      </section>
    </section>
  </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"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC3596">
          <front>
            <title>DNS Extensions to Support IP Version 6</title>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="V. Ksinant" initials="V." surname="Ksinant"/>
            <author fullname="M. Souissi" initials="M." surname="Souissi"/>
            <date month="October" year="2003"/>
            <abstract>
              <t>This document defines the changes that need to be made to the Domain Name System (DNS) to support hosts running IP version 6 (IPv6). The changes include a resource record type to store an IPv6 address, a domain to support lookups based on an IPv6 address, and updated definitions of existing query types that return Internet addresses as part of additional section processing. The extensions are designed to be compatible with existing applications and, in particular, DNS implementations themselves. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="88"/>
          <seriesInfo name="RFC" value="3596"/>
          <seriesInfo name="DOI" value="10.17487/RFC3596"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-packed">
          <front>
            <title>Packed CBOR</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="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"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4944">
          <front>
            <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro"/>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar"/>
            <author fullname="J. Hui" initials="J." surname="Hui"/>
            <author fullname="D. Culler" initials="D." surname="Culler"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4944"/>
          <seriesInfo name="DOI" value="10.17487/RFC4944"/>
        </reference>
        <reference anchor="RFC6282">
          <front>
            <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks</title>
            <author fullname="J. Hui" initials="J." role="editor" surname="Hui"/>
            <author fullname="P. Thubert" initials="P." surname="Thubert"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>This document updates RFC 4944, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header compression format for IPv6 packet delivery in Low Power Wireless Personal Area Networks (6LoWPANs). The compression format relies on shared context to allow compression of arbitrary prefixes. How the information is maintained in that shared context is out of scope. This document specifies compression of multicast addresses and a framework for compressing next headers. UDP header compression is specified within this framework. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6282"/>
          <seriesInfo name="DOI" value="10.17487/RFC6282"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC8484">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
        <reference anchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="RFC8824">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="R. Andreasen" initials="R." surname="Andreasen"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework. SCHC defines a header compression mechanism adapted for Constrained Devices. SCHC uses a static description of the header to reduce the header's redundancy and size. While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers. The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length. The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages. This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8824"/>
          <seriesInfo name="DOI" value="10.17487/RFC8824"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="I-D.ietf-core-dns-over-coap">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>Freie Universität Berlin</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Thomas C. Schmidt" initials="T. C." surname="Schmidt">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>Freie Universität Berlin</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document defines a protocol for sending DNS messages over the
   Constrained Application Protocol (CoAP).  These CoAP messages are
   protected by DTLS-Secured CoAP (CoAPS) or Object Security for
   Constrained RESTful Environments (OSCORE) to provide encrypted DNS
   message exchange for constrained devices in the Internet of Things
   (IoT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-dns-over-coap-02"/>
        </reference>
      </references>
    </references>
    <?line 518?>

<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-02">
        <name>Since [draft-lenders-dns-cbor-02]</name>
        <ul spacing="normal">
          <li>Add Discussion section and note on compression</li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-01">
        <name>Since [draft-lenders-dns-cbor-01]</name>
        <ul spacing="normal">
          <li>Use MIME type parameter for packed instead of own MIME type</li>
          <li>Update definitions to accommodate for TID and flags, as well as more sections in query</li>
          <li>Clarify fallback to wire-format</li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-00">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-00">draft-lenders-dns-cbor-00</eref></name>
        <ul spacing="normal">
          <li>Add support for DNS transaction IDs</li>
          <li>Name and Address compression utilizing CBOR-packed</li>
          <li>Minor fixes to CBOR EDN and CDDL</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
      <ul spacing="normal">
        <li>Carsten Bormann</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8U823LbRpbv/RU9TNVETAhIJCVF5sR2ZEmOVaVbZLm8WUUT
g0CTxBgEOLhYVlKa2o/YD9iH+ZKdP9kv2XPpBhoXSnYms+uqRESj+/Tp0+fe
p+E4jsjDPFIT2duXB0nsh5mSL8LYS+/k+fQvys/lpVqlKlNx7uVhEsuNgxfn
l32ZzOTh2Wt5qrLMm6usJ7zpNFUfAE4QZ1/70yTtCd/L1TxJ7yYyywMhgsSP
vSVMFaTeLHciFQcqzRzo72B/Z2ss4mI5VelEBDByIvwkhnmzIpvIPC2UAOhj
kRXTZZhlgEp+twJgx0dXL4WXKg+XsFpFoU94Aka3Sfp+nibFaiIRZ/Fe3UFT
MBHSkcdxrtJY5c4h4oIt1AX+wqrEBxUXML+U9nApecK3ADaM5/J7fAetSy+M
JhJX8F2o8pmbpHNo9VJ/ARgt8nyVTTY3sRM2hR+Ua3ptYsPmNE1uM7WJ4zd7
OGWYL4opDPXi1JkupzNnFX5I8s1uouGICIiV5dZk9ZEuQ3TDZA2MNc3uIl9G
PSG8Il8kKVFNzooo4j089dI8jJV8nawWoZInPBiwkRKW5sXhL7QNE/kyVfD+
TQwrT7Mw/8ffc/lCpVEYU1/DNS/f2K2Kabp0NU7fzQpnSq/dQDUQOfDSLFex
fJGkSy+OOzCoz52qJfS++vdjeybfmybf5b+EvHk1+FeLZOll8sCVr/3FMgzy
jhle7b+Vr7zltKCtL6HmbsZDvlt4t86CO7RXcOrl+SKEOd7+4++LKIQxvzcZ
bz3FgOuEFDHSLAeQyOuXLw+GW+MdEM8448fxzpPdifTgHz9/M9oZAa0Sb8XP
e7vDLXgOgkg/P9l+wpIAz8fOIXE6y/bK89+rgF/qByHCeNZAYPvJ9vZE7kbJ
7cqLuWl3tAeThquFb5AY7SEScZanDgjxUiO7t70HQ4NkoR+/GcEjLFkP29vD
Z8TdqRqfDHEBKDZOBsSK89DPaqgnqSJ5SIDqDg7GGXwhhOM4QHRAwfNzIa4W
YYYvCmCtXGYr5YezUGXSgwmXqD0zFUjQaZ7kBRvtudTaUxYZaBSRL9Sn6eBf
fyWq3t+7MLWSqzRcYudVka4SGAvI5Il8r9SqPku29KJIhrGmngfyG0hQgqgo
M1evCvg1iIA3vkAdmSZB4eOUQhx3DyNcrM24vx9IXAew2HvQTHcqBQV5JwH7
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
EwsquNepOa/sgyeUTutDk/8LZeMriDxVAAA=

-->

</rfc>
