<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.17 (Ruby 3.3.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lenders-dns-cbor-08" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.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-08"/>
    <author fullname="Martine Sophie Lenders">
      <organization abbrev="TU Dresden">TUD Dresden University of Technology</organization>
      <address>
        <postal>
          <street>Helmholtzstr. 10</street>
          <city>Dresden</city>
          <code>D-01069</code>
          <country>Germany</country>
        </postal>
        <email>martine.lenders@tu-dresden.de</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author fullname="Thomas C. Schmidt">
      <organization>HAW Hamburg</organization>
      <address>
        <email>t.schmidt@haw-hamburg.de</email>
      </address>
    </author>
    <author initials="M." surname="Wählisch" fullname="Matthias Wählisch">
      <organization abbrev="TU Dresden &amp; Barkhausen Institut">TUD Dresden University of Technology &amp; Barkhausen Institut</organization>
      <address>
        <postal>
          <street>Helmholtzstr. 10</street>
          <city>Dresden</city>
          <code>D-01069</code>
          <country>Germany</country>
        </postal>
        <email>m.waehlisch@tu-dresden.de</email>
      </address>
    </author>
    <date year="2024" month="June" day="28"/>
    <area>Applications</area>
    <workgroup>CBOR</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>CBOR</keyword>
    <keyword>DNS</keyword>
    <abstract>
      <?line 76?>

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

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

</section>
    <section anchor="cbor-representations-applicationdnscbor">
      <name>CBOR Representations (application/dns+cbor)</name>
      <t>To keep overhead minimal, a DNS message is represented as CBOR arrays.  All CBOR items used in
this specification are of definite length.  CBOR arrays that do not follow the length
definitions of this or follow-up specifications, <bcp14>MUST</bcp14> be silently ignored.  It is assumed that
DNS query and DNS response are distinguished message types and that the query can be mapped to
the response by the transfer protocol of choice.  To define the representation of binary
objects we use the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>.</t>
      <figure anchor="fig_dns-msg">
        <name>This document defines both DNS Queries and Responses in CDDL</name>
        <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-message = dns-query / dns-response
]]></sourcecode>
      </figure>
      <t>If, for any reason, a DNS message is not representable in the CBOR format specified in this
document, a fallback to the another DNS message format, e.g., the classic DNS wire format, <bcp14>MUST</bcp14>
always be possible.</t>
      <section anchor="sec_domain-names">
        <name>Domain Name Representation</name>
        <t>Domain names are represented in their commonly known string format (e.g., "example.org", see Section
2.3.1 in <xref target="RFC1035"/>) and in IDNA encoding <xref target="RFC5890"/> as a text string. For the purpose of this
document, domain names remain case-insensitive as specified in <xref target="RFC1035"/>.</t>
        <t>The representation of a domain name is defined in <xref target="fig_domain-name"/>.</t>
        <t>TBD: represent names as components (<tt>(* tstr)</tt>), provide name compression when <xref target="I-D.ietf-cbor-packed"/> is
updated for the reference format and table building discussed at IETF 118.</t>
        <figure anchor="fig_domain-name">
          <name>Domain Name Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
domain-name = tstr .regexp "([^.]+[.])*[^.]+"
]]></sourcecode>
        </figure>
      </section>
      <section anchor="sec_rr">
        <name>DNS Resource Records</name>
        <t>This document specifies the representation of both standard DNS resource records (RRs, see <xref target="RFC1035"/>)
and EDNS option pseudo-RRs (see <xref target="RFC6891"/>).
If for any reason, a resource record can not be represented in the given formats, they can be
represented in their binary wire-format form, as a byte string.</t>
        <t>Further special records, e.g., TSIG can be defined in follow-up specifications and are out of scope
of this document.</t>
        <t>The representation of a DNS resource records is defined in <xref target="fig_dns-rr"/>.</t>
        <figure anchor="fig_dns-rr">
          <name>DNS Resource Record Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-rr = rr / #6.141(opt-rr) / bstr
]]></sourcecode>
        </figure>
        <section anchor="standard-rrs">
          <name>Standard RRs</name>
          <t>Standard DNS resource records are encoded as CBOR arrays containing 2 to 5 entries in the following
order:</t>
          <ol spacing="normal" type="1"><li>
              <t>An optional name (as text string, see <xref target="sec_domain-names"/>),</t>
            </li>
            <li>
              <t>A TTL (as unsigned integer),</t>
            </li>
            <li>
              <t>An optional record type (as unsigned integer),</t>
            </li>
            <li>
              <t>An optional record class (as unsigned integer), and lastly</t>
            </li>
            <li>
              <t>A record data entry (as unsigned integer, negative integer, byte string, or text string).</t>
            </li>
          </ol>
          <t>If the first item of the resource record is a text string, it is its name.
If the name is elided, the name is derived from the question section of the message.
For responses, the question section is either taken from the query (see <xref target="sec_queries"/>) or provided
with the response see <xref target="sec_responses"/>.
The query may be derived from the context of the transfer protocol.</t>
          <t>If the record type is elided, the record type from the question is assumed.
If record class is elided, the record class from the question is assumed.
When a record class is required, the record type <bcp14>MUST</bcp14> also be provided.</t>
          <t>The byte format of the record data as a byte string follows the classic DNS 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.</t>
          <t>There is an argument to be made for more structured formats of other record data representations
(e.g. MX or SOA), but these usually add more overhead. As such, those record data are to be
represented as a byte string.</t>
          <figure anchor="fig_dns-standard-rr">
            <name>DNS Standard Resource Record Definition</name>
            <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
rr = [
  ? name: domain-name,
  ttl: uint,
  ? type-spec,
  rdata: bstr / domain-name,
]
type-spec = (
  record-type: uint,
  ? record-class: uint,
)
]]></sourcecode>
          </figure>
        </section>
        <section anchor="sec_edns">
          <name>EDNS OPT Pseudo-RRs</name>
          <t>EDNS OPT Pseudo-RRs are represented as a CBOR array.
To distinguish them from normal standard RRs, they are marked with tag TBD141.</t>
          <t>Name and record type can be elided as they are always "." and OPT (41), respectively <xref target="RFC6891"/>.</t>
          <t>The UDP payload size may be the first element as an unsigned integer in the array.
It <bcp14>MUST</bcp14> be
elided if its value is the default value of 512, the maximum allowable size for unextended DNS over UDP (see Sections <xref target="RFC1035" section="2.3.4" sectionFormat="bare"/> and <xref target="RFC1035" section="4.2.1" sectionFormat="bare"/> of <xref target="RFC1035"/>).</t>
          <t>The next element is an array of the options, which are represented two elements each, an unsigned
integer, the option code, followed by a byte string, the option data.
Multiple options alternate between unsigned integer and byte string within the array.</t>
          <t>After that, up to three unsigned integers are following.
The first being the extended flags as unsigned integer (implied to be 0 if elided),
the second the extended RCODE as an unsigned integer (implied to be 0 if elided), and
the third the EDNS version (implied to be 0 if elided).
They are dependent on each of their previous elements.
If the EDNS version is not elided, both extended flags and extended RCODE <bcp14>MUST</bcp14> not be elided.
If the RCODE is not elided the extended flags <bcp14>MUST</bcp14> not be elided.</t>
          <t>TBD: reverse extended flags to get MSB-defined DO into LSB?</t>
          <t>Note that future EDNS versions may require a different format than the one described above.</t>
          <figure anchor="fig_dns-opt-rr">
            <name>DNS OPT Resource Record Definition</name>
            <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
opt-rr = [
  ? udp-payload-size: uint .default 512,
  options: [* opt],
  ? opt-rcode-v-flags,
]
opt = (
  ocode: uint,
  odata: bstr,
)
opt-rcode-v-flags = (
  flags: uint .default 0,
  ? opt-rcode-v,
)
opt-rcode-v = (
  rcode: uint .default 0,
  ? version: uint .default 0,
)
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="sec_queries">
        <name>DNS Queries</name>
        <t>DNS queries are encoded as CBOR arrays containing up to 5 entries in the following order:</t>
        <ol spacing="normal" type="1"><li>
            <t>An optional flag field (as unsigned integer),</t>
          </li>
          <li>
            <t>The question section (as array),</t>
          </li>
          <li>
            <t>An optional authority section (as array), and</t>
          </li>
          <li>
            <t>An optional additional section (as array)</t>
          </li>
        </ol>
        <t>If the first item of the query is an array, it is the question section, if it is an unsigned
integer, it is as flag field and maps to the header flags in <xref target="RFC1035"/> and the "DNS Header Flags"
IANA registry including the QR flag and the Opcode.
It <bcp14>MUST</bcp14> be lesser than 2^16.</t>
        <t>If the flags are elided, the value 0 is assumed.</t>
        <t>This specification assumes that the DNS messages are sent over a transfer protocol that can map the
queries to their responses, e.g., DNS over HTTPS <xref target="RFC8484"/> or DNS over CoAP <xref target="I-D.ietf-core-dns-over-coap"/>.
As a consequence, the DNS transaction ID is always elided and the value 0 is assumed.</t>
        <t>A question within the question section is encoded as a CBOR array containing up to 3 entries:</t>
        <ol spacing="normal" type="1"><li>
            <t>The queried name (as text string, see <xref target="sec_domain-names"/>),</t>
          </li>
          <li>
            <t>An optional record type (as unsigned integer), and</t>
          </li>
          <li>
            <t>An optional record class (as unsigned integer)</t>
          </li>
        </ol>
        <t>If the record type is elided, record type <tt>AAAA</tt> as specified in <xref target="RFC3596"/> is assumed.
If the record class is elided, record class <tt>IN</tt> as specified in <xref target="RFC1035"/> is assumed.
When a record class is required, the record type <bcp14>MUST</bcp14> also be provided.</t>
        <t>If more than one question is supposed to be in the question section, the next question just follows.
In this case, for every question but the last, the record type <bcp14>MUST</bcp14> be included, i.e., it is not
optional. This way it is ensured that the parser can distinguish each question by looking up the
name first (TBD note: this is especially relevant once the name is split up in components).</t>
        <t>The remainder of the query is either empty or <bcp14>MUST</bcp14> consist of up to two arrays.
The first array, if present, encodes the authority section of the query as an array of DNS
resource records (see <xref target="sec_rr"/>)
The second array, if present, encodes the additional section of the query as an array of DNS
resource records (see <xref target="sec_rr"/>)</t>
        <t>The representation of a DNS query is defined in <xref target="fig_dns-query"/>.</t>
        <figure anchor="fig_dns-query">
          <name>DNS Query Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-query = [
  ? flags: uint .default 0x0000,
  question-section,
  ? extra-sections,
]
question-section = [
  * full-question,
  ? last-question,
]
full-question = (
  name: domain-name,
  type-spec,
)
last-question = (
  name: domain-name,
  ? type-spec,
)
extra-sections = (
  ? authority: [+ dns-rr],
  additional: [+ dns-rr],
)
]]></sourcecode>
        </figure>
      </section>
      <section anchor="sec_responses">
        <name>DNS Responses</name>
        <t>DNS responses are encoded as a CBOR array containing up to 7 entries.</t>
        <ol spacing="normal" type="1"><li>
            <t>An optional flag field (as unsigned integer),</t>
          </li>
          <li>
            <t>An optional question section (as array, encoded as described in <xref target="sec_queries"/>)</t>
          </li>
          <li>
            <t>The answer section (as array),</t>
          </li>
          <li>
            <t>An optional authority section (as array), and</t>
          </li>
          <li>
            <t>An optional additional section (as array)</t>
          </li>
        </ol>
        <t>As for queries, the DNS transaction ID is elided and implied to be 0.</t>
        <t>If the CBOR array is a response to a query for which the flags indicate that flags are set in the
response, they <bcp14>MUST</bcp14> be set accordingly and thus included in the response.
If the flags are not included, the flags are implied to be 0x8000 (everything unset except for the
QR flag).</t>
        <t>If the response includes only 1 array, this is the DNS answer section represented as an
array of one or more DNS Resource Records (see <xref target="sec_rr"/>).</t>
        <t>If the response includes more than 2 arrays, the first entry may be the question section, identified
by not being an array of arrays. If it is present, it is followed by the answer section. The
question section is encoded as specified in <xref target="sec_queries"/>.</t>
        <t>If the answer section is followed by 1 additional array, it is the additional section (TBD:
back choice to favor additional section by empirical data). Like the answer section, the additional
section is represented as an array of one or more DNS Resource Records (see <xref target="sec_rr"/>).</t>
        <t>If the answer section is followed by 2 additional arrays, the first is the authority section, and
the second the additional section (TBD: back choice to favor additional section by empirical data).
The authority section is also represented as an array of one or more DNS Resource Records (see
<xref target="sec_rr"/>).</t>
        <figure anchor="fig_dns-response">
          <name>DNS Response Definition</name>
          <sourcecode type="cddl" name="dns-cbor.cddl"><![CDATA[
dns-response = [
  ? flags: uint .default 0x8000,
  ? question-section,
  answer-section: [+ dns-rr],
  ? extra-sections,
]
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="name-and-address-compression-with-cbor-packed">
      <name>Name and Address Compression with CBOR-packed</name>
      <t>If both DNS server and client support CBOR-packed <xref target="I-D.ietf-cbor-packed"/>, it <bcp14>MAY</bcp14> be used for 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 CBOR-packed (media type
"applicaton/dns+cbor;packed=1").
The server then <bcp14>SHOULD</bcp14> reply with the response in CBOR-packed.</t>
      </section>
      <section anchor="dns-representation-in-cbor-packed">
        <name>DNS Representation in CBOR-packed</name>
        <t>The representation of DNS responses in CBOR-packed has the same semantics as for tag TBD113
(<xref target="I-D.ietf-cbor-packed"/>, Section 3.1) with the rump being the compressed response.
The difference to <xref target="I-D.ietf-cbor-packed"/> is that tag TBD113 is <bcp14>OPTIONAL</bcp14>.</t>
        <t>Packed compression of queries is not specified, as apart from EDNS(0) (see <xref target="sec_edns"/>), they only
consist of one question most of the time.</t>
      </section>
      <section anchor="sec_pack-compression">
        <name>Compression</name>
        <t>How the compressor constructs the packing table, i.e., how the compression is applied, is out of
scope of this document. Several potential compression algorithms were evaluated in [TBD].</t>
        <!--
Discussion TBD:

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

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

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

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

</section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -20?>
      </t>
      <section anchor="python-decoderencoder">
        <name>Python decoder/encoder</name>
        <t>The authors of this document provide a <eref target="https://github.com/netd-tud/cbor4dns">decoder/encoder
implementation</eref> of both the unpacked and packed format
specified in this document in Python.</t>
        <dl>
          <dt>Level of maturity:</dt>
          <dd>
            <t>prototype</t>
          </dd>
          <dt>Version compatibility:</dt>
          <dd>
            <t>draft-lenders-dns-cbor-05</t>
          </dd>
          <dt>License:</dt>
          <dd>
            <t>MIT</t>
          </dd>
          <dt>Contact information:</dt>
          <dd>
            <t><tt>Martine Lenders &lt;martine.lenders@tu-dresden.de&gt;</tt></t>
          </dd>
          <dt>Last update of this information:</dt>
          <dd>
            <t>October 2023</t>
          </dd>
        </dl>
      </section>
      <section anchor="embedded-decoderencoder">
        <name>Embedded decoder/encoder</name>
        <t>The authors of this document provide a <eref target="https://github.com/RIOT-OS/RIOT/pull/19989">decoder/encoder
implementation</eref> of the unpacked format specified in this
document for the RIOT operating system. It can only encode queries and decode responses.</t>
        <dl>
          <dt>Level of maturity:</dt>
          <dd>
            <t>prototype</t>
          </dd>
          <dt>Version compatibility:</dt>
          <dd>
            <t>draft-lenders-dns-cbor-05</t>
          </dd>
          <dt>License:</dt>
          <dd>
            <t>MIT</t>
          </dd>
          <dt>Contact information:</dt>
          <dd>
            <t><tt>Martine Lenders &lt;martine.lenders@tu-dresden.de&gt;</tt></t>
          </dd>
          <dt>Last update of this information:</dt>
          <dd>
            <t>October 2023</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-type">
        <name>Media Type Registration</name>
        <t>This document registers a media type for the serialization format of DNS messages in CBOR. It
follows the procedures specified in <xref target="RFC6838"/>.</t>
        <section anchor="applicationdnscbor">
          <name>"application/dns+cbor"</name>
          <t>Type name: application</t>
          <t>Subtype name: dns+cbor</t>
          <t>Required parameters: None</t>
          <t>Optional parameters: packed</t>
          <t>Encoding considerations: Must be encoded as using <xref target="RFC8949"/>. See [TBD-this-spec] for details.</t>
          <t>Security considerations: See <xref target="security-considerations"/> of this draft</t>
          <t>Interoperability considerations: TBD</t>
          <t>Published specification: [TBD-this-spec]</t>
          <t>Applications that use this media type: TBD DNS over X systems</t>
          <t>Fragment Identifier Considerations: TBD</t>
          <t>Additional information:</t>
          <t>   Deprecated alias names for this type: N/A</t>
          <t>   Magic number(s): N/A</t>
          <t>   File extension(s): dnsc</t>
          <t>   Macintosh file type code(s): none</t>
          <t>Person &amp; email address to contact for further information:
   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="cf-app-d-c">
          <name>"application/dns+cbor"</name>
          <t>Media-Type: application/dns+cbor</t>
          <t>Encoding: -</t>
          <t>Id: TBD</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
        <section anchor="applicationdnscborpacked1">
          <name>"application/dns+cbor;packed=1"</name>
          <t>Media-Type: application/dns+cbor;packed=1</t>
          <t>Encoding: -</t>
          <t>Id: TBD</t>
          <t>Reference: [TBD-this-spec]</t>
        </section>
      </section>
      <section anchor="cbor-tags-registry">
        <name>CBOR Tags Registry</name>
        <t>In the registry "<xref section="CBOR Tags" relative="#cbor-tags" sectionFormat="bare" target="IANA.cbor-tags"/>" <xref target="IANA.cbor-tags"/>,
IANA is requested to allocate the tags defined in <xref target="tab-tag-values"/>.</t>
        <table anchor="tab-tag-values">
          <name>Values for Tag Numbers</name>
          <thead>
            <tr>
              <th align="right">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD141</td>
              <td align="left">array</td>
              <td align="left">CBOR EDNS option record</td>
              <td align="left">draft-lenders-dns-cbor</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC3596">
          <front>
            <title>DNS Extensions to Support IP Version 6</title>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="V. Ksinant" initials="V." surname="Ksinant"/>
            <author fullname="M. Souissi" initials="M." surname="Souissi"/>
            <date month="October" year="2003"/>
            <abstract>
              <t>This document defines the changes that need to be made to the Domain Name System (DNS) to support hosts running IP version 6 (IPv6). The changes include a resource record type to store an IPv6 address, a domain to support lookups based on an IPv6 address, and updated definitions of existing query types that return Internet addresses as part of additional section processing. The extensions are designed to be compatible with existing applications and, in particular, DNS implementations themselves. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="88"/>
          <seriesInfo name="RFC" value="3596"/>
          <seriesInfo name="DOI" value="10.17487/RFC3596"/>
        </reference>
        <reference anchor="RFC6891">
          <front>
            <title>Extension Mechanisms for DNS (EDNS(0))</title>
            <author fullname="J. Damas" initials="J." surname="Damas"/>
            <author fullname="M. Graff" initials="M." surname="Graff"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Domain Name System's wire protocol includes a number of fixed fields whose range has been or soon will be exhausted and does not allow requestors to advertise their capabilities to responders. This document describes backward-compatible mechanisms for allowing the protocol to grow.</t>
              <t>This document updates the Extension Mechanisms for DNS (EDNS(0)) specification (and obsoletes RFC 2671) based on feedback from deployment experience in several implementations. It also obsoletes RFC 2673 ("Binary Labels in the Domain Name System") and adds considerations on the use of extended labels in the DNS.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="75"/>
          <seriesInfo name="RFC" value="6891"/>
          <seriesInfo name="DOI" value="10.17487/RFC6891"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-packed">
          <front>
            <title>Packed CBOR</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mikolai Gütschow" initials="M." surname="Gütschow">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <date day="2" month="March" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949 == STD 94)
   is a data format whose design goals include the possibility of
   extremely small code size, fairly small message size, and
   extensibility without the need for version negotiation.

   CBOR does not provide any forms of data compression.  CBOR data
   items, in particular when generated from legacy data models, often
   allow considerable gains in compactness when applying data
   compression.  While traditional data compression techniques such as
   DEFLATE (RFC 1951) can work well for CBOR encoded data items, their
   disadvantage is that the 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 (-12) updates the IANA "Values for Tag
   // Numbers" table, sorting it and cleaning up the "Data Item" column.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-12"/>
        </reference>
        <reference anchor="IANA.cbor-tags" target="http://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4944">
          <front>
            <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro"/>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar"/>
            <author fullname="J. Hui" initials="J." surname="Hui"/>
            <author fullname="D. Culler" initials="D." surname="Culler"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4944"/>
          <seriesInfo name="DOI" value="10.17487/RFC4944"/>
        </reference>
        <reference anchor="RFC6282">
          <front>
            <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks</title>
            <author fullname="J. Hui" initials="J." role="editor" surname="Hui"/>
            <author fullname="P. Thubert" initials="P." surname="Thubert"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>This document updates RFC 4944, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header compression format for IPv6 packet delivery in Low Power Wireless Personal Area Networks (6LoWPANs). The compression format relies on shared context to allow compression of arbitrary prefixes. How the information is maintained in that shared context is out of scope. This document specifies compression of multicast addresses and a framework for compressing next headers. UDP header compression is specified within this framework. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6282"/>
          <seriesInfo name="DOI" value="10.17487/RFC6282"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC8484">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
        <reference anchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="RFC8824">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="R. Andreasen" initials="R." surname="Andreasen"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework. SCHC defines a header compression mechanism adapted for Constrained Devices. SCHC uses a static description of the header to reduce the header's redundancy and size. While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers. The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length. The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages. This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8824"/>
          <seriesInfo name="DOI" value="10.17487/RFC8824"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="I-D.ietf-core-dns-over-coap">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
              <organization>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>TUD Dresden University of Technology &amp; Barkhausen Institut</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <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-06"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 644?>

<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="sec_comparison-to-classic-dns">
      <name>Comparison to Classic DNS Wire Format</name>
      <t><xref target="tab-cbor-comparison"/> shows a comparison between the classic DNS wire format and the
application/dns+cbor format. Note that the worst case results typically appear only rarely in DNS.
The classic DNS format is preferred in those cases. A key for which configuration was used in which
case can be seen in <xref target="tab-cbor-comparison-key"/>.</t>
      <table anchor="tab-cbor-comparison">
        <name>Comparison of application/dns+cbor to classic DNS format.</name>
        <thead>
          <tr>
            <th align="left" rowspan="2">Item</th>
            <th align="right" rowspan="2">Classic DNS format [bytes]</th>
            <th align="center" colspan="3">application/dns+cbor [bytes]</th>
          </tr>
          <tr>
            <th align="right">best case</th>
            <th align="right">realistic worst case</th>
            <th align="right">theoretical worst case</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Header (ID &amp; Flags)</td>
            <td align="right">4</td>
            <td align="right">1</td>
            <td align="right">4</td>
            <td align="right">4</td>
          </tr>
          <tr>
            <td align="left">Count fields</td>
            <td align="right">2</td>
            <td align="right">1</td>
            <td align="right">3</td>
            <td align="right">3</td>
          </tr>
          <tr>
            <td align="left">Question section</td>
            <td align="right">6 + name len.</td>
            <td align="right">2 + name len.</td>
            <td align="right">7 + name len.</td>
            <td align="right">10 + name len.</td>
          </tr>
          <tr>
            <td align="left">Standard RR</td>
            <td align="right">12 + name len. + rdata len.</td>
            <td align="right">3        <br/>
 + rdata len.</td>
            <td align="right">15 + name len. + rdata len.</td>
            <td align="right">18 + name len. + rdata len.</td>
          </tr>
          <!-- Add when name compression is in <tr>
      <td align="left">Standard RR with name rdata</td>
      <td align="right">12 + name&nbsp;len. + rdata&nbsp;len.</td>
      <td align="right">6 + rdata&nbsp;len.</td>
      <td align="right">15 + name&nbsp;len. + rdata&nbsp;len.</td>
      <td align="right">18 + name&nbsp;len. + rdata&nbsp;len.</td>
    </tr>-->

        <tr>
            <td align="left">EDNS Opt Pseudo-RR</td>
            <td align="right">11 + options</td>
            <td align="right">2 + options</td>
            <td align="right">6 + options</td>
            <td align="right">14 + options</td>
          </tr>
          <tr>
            <td align="left">EDNS Option</td>
            <td align="right">4 + value len.</td>
            <td align="right">2 + value len.</td>
            <td align="right">4 + value len.</td>
            <td align="right">6 + value len.</td>
          </tr>
        </tbody>
      </table>
      <table anchor="tab-cbor-comparison-key">
        <name>Configuration key for     <xref target="tab-cbor-comparison"/>
.</name>
        <thead>
          <tr>
            <th align="left" rowspan="2">Item</th>
            <th align="center" colspan="3">application/dns+cbor configuration</th>
          </tr>
          <tr>
            <th align="right">best case</th>
            <th align="right">realistic worst case</th>
            <th align="right">theoretical worst case</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Header (ID &amp; Flags)</td>
            <td align="right">Flags elided</td>
            <td align="right">QR, Opcode, AA, TC, or RD are set</td>
            <td align="right">QR, Opcode, AA, TC, or RD are set</td>
          </tr>
          <tr>
            <td align="left">Count fields</td>
            <td align="right">Encoded in CBOR array header</td>
            <td align="right">Encoded in CBOR array header,        <br/>
&gt;255 records in section</td>
            <td align="right">Encoded in CBOR array header,        <br/>
&gt;255 records in section</td>
          </tr>
          <tr>
            <td align="left">Question section</td>
            <td align="right">Class, type, and name elided</td>
            <td align="right">Type &gt; 255,        <br/>
name len. &gt; 255</td>
            <td align="right">Type &gt; 255,        <br/>
Class &gt; 255,        <br/>
name len. &gt; 255</td>
          </tr>
          <tr>
            <td align="left">Standard RR</td>
            <td align="right">Class, type, and name elided,        <br/>
rdata len. &lt; 24</td>
            <td align="right">Type &gt; 255,        <br/>
name len. &gt; 255        <br/>
rdata len. &gt; 255</td>
            <td align="right">Type &gt; 255,        <br/>
Class &gt; 255,        <br/>
name len. &gt; 255        <br/>
rdata len. &gt; 255</td>
          </tr>
          <!-- Add when name compression is in <tr>
      <td align="left">Standard RR with name rdata</td>
      <td align="right">6 + RDATA&nbsp;len. (5,8,name compressed)</td>
      <td align="right">15 + name&nbsp;len. + RDATA&nbsp;len. (6,10,12)</td>
      <td align="right">18 + name&nbsp;len. + RDATA&nbsp;len. (6,7,10,12)</td>
    </tr>-->

        <tr>
            <td align="left">EDNS Opt Pseudo-RR</td>
            <td align="right">All EDNS(0) fields elided</td>
            <td align="right">Rcode &lt; 24,        <br/>
DO flag set,        <br/>
            </td>
            <td align="right">UDP payload        <br/>
len. &gt; 255        <br/>
Rcode &gt; 255        <br/>
Version &gt; 255        <br/>
DO flag set</td>
          </tr>
          <tr>
            <td align="left">EDNS Option</td>
            <td align="right">Code &lt; 24        <br/>
Length &lt; 24</td>
            <td align="right">Code &lt; 24        <br/>
Length &gt; 255</td>
            <td align="right">Code &gt; 255        <br/>
Length &gt; 255</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <section anchor="since-draft-lenders-dns-cbor-07">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-07">draft-lenders-dns-cbor-07</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add <xref target="sec_comparison-to-classic-dns"/> with comparison to classic DNS wire format</t>
          </li>
          <li>
            <t>"wire format" -&gt; "classic DNS wire format"</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-06">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-06">draft-lenders-dns-cbor-06</eref></name>
        <ul spacing="normal">
          <li>
            <t>Fixes wording and spelling mistakes</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-05">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-05">draft-lenders-dns-cbor-05</eref></name>
        <ul spacing="normal">
          <li>
            <t>Fix <xref target="cf-app-d-c"/> title</t>
          </li>
          <li>
            <t>Amend for capability to carry more than one question</t>
          </li>
          <li>
            <t>Hint at future of name compression in later draft versions</t>
          </li>
          <li>
            <t>Use canonical name for CBOR-packed</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-04">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-04">draft-lenders-dns-cbor-04</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add Implementation Status section</t>
          </li>
          <li>
            <t>Remove int as representation for rdata</t>
          </li>
          <li>
            <t>Add note on representation of more structured rdata</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-03">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-03">draft-lenders-dns-cbor-03</eref></name>
        <ul spacing="normal">
          <li>
            <t>Provide format description for EDNS OPT Pseudo-RRs</t>
          </li>
          <li>
            <t>Simplify CDDL to more idiomatic style</t>
          </li>
          <li>
            <t>Remove DNS transaction IDs</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-02">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-02">draft-lenders-dns-cbor-02</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add Discussion section and note on compression</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-01">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-01">draft-lenders-dns-cbor-01</eref></name>
        <ul spacing="normal">
          <li>
            <t>Use MIME type parameter for packed instead of own MIME type</t>
          </li>
          <li>
            <t>Update definitions to accommodate for TID and flags, as well as more sections in query</t>
          </li>
          <li>
            <t>Clarify fallback to wire-format</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-lenders-dns-cbor-00">
        <name>Since <eref target="https://datatracker.ietf.org/doc/html/draft-lenders-dns-cbor-00">draft-lenders-dns-cbor-00</eref></name>
        <ul spacing="normal">
          <li>
            <t>Add support for DNS transaction IDs</t>
          </li>
          <li>
            <t>Name and Address compression utilizing CBOR-packed</t>
          </li>
          <li>
            <t>Minor fixes to CBOR EDN and CDDL</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
n38AAA==

-->

</rfc>
