<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-coap-dtls-alpn-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="CoRE ALPN">ALPN ID Specification for CoAP over DTLS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-dtls-alpn-00"/>
    <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="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <author fullname="Thomas C. Schmidt">
      <organization>HAW Hamburg</organization>
      <address>
        <postal>
          <street>Berliner Tor 7</street>
          <city>Hamburg</city>
          <code>D-20099</code>
          <country>Germany</country>
        </postal>
        <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="September" day="05"/>
    <area>Web and Internet Transport</area>
    <workgroup>Constrained RESTful Environments</workgroup>
    <keyword>CoRE</keyword>
    <keyword>CoAP</keyword>
    <keyword>SVCB</keyword>
    <keyword>DTLS</keyword>
    <keyword>ALPN</keyword>
    <abstract>
      <?line 65?>

<t>This document specifies an Application-Layer Protocol Negotiation (ALPN) ID for
transport-layer-secured CoAP services.</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-ietf-core-coap-dtls-alpn/draft-ietf-core-coap-dtls-alpn.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-coap-dtls-alpn/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Constrained RESTful Environments Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/anr-bmbf-pivot/draft-ietf-core-coap-dtls-alpn"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Application-Layer Protocol Negotiation (ALPN) enable communicating parties to agree on an application-layer protocol during a Transport Layer Security (TLS) handshake using an ALPN ID.
This ALPN ID can be discovered for services as part of Service Bindings (SVCB) via the DNS, using SVCB resource records with the "alpn" Service Parameter Keys.
As an example, this information can be obtained as part of the discovery of DNS over CoAP (DoC) servers (see <xref target="I-D.ietf-core-dns-over-coap"/>) that deploy TLS or DTLS to secure their messages.
This document specifies an ALPN ID for CoAP services that are secured by transport security using DTLS.
An ALPN ID for CoAP service secured by TLS has already been specified in <xref target="RFC8323"/>.</t>
    </section>
    <section anchor="application-layer-protocol-negotiation-alpn-ids">
      <name>Application-Layer Protocol Negotiation (ALPN) IDs</name>
      <t>For CoAP over TLS an ALPN ID was defined as "coaps" in <xref target="RFC8323"/>.
As it is not advisable to re-use the same ALPN ID for a different transport layer, an ALPN for
CoAP over DTLS is registered in <xref target="iana"/>.</t>
      <t>ALPN ID values have variable length.
Here, a short value ("co") is allocated for CoAP over DTLS, as this can avoid fragmentation of Client Hello and Server Hello messages in constrained networks with link-layer fragmentation, such as 6LoWPAN <xref target="RFC4944"/>.</t>
      <t>To discover CoAP services that secure their messages with TLS or DTLS, ALPN IDs "coaps" and "co" can be used respectively in
the same manner as for any other service secured with transport layer security, as
described in <xref target="RFC9460"/>.
Other authentication mechanisms are currently out of scope.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Any security considerations on ALPN (see <xref target="RFC7301"/>) and SVCB resource records (see <xref target="RFC9460"/>), also
apply to this document.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="tls-alpn-for-coap">
        <name>TLS ALPN for CoAP</name>
        <t>The following entry has been added to the "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry, which is part of the "Transport Layer Security (TLS) Extensions" group.</t>
        <ul spacing="normal">
          <li>
            <t>Protocol: CoAP (over DTLS)</t>
          </li>
          <li>
            <t>Identification sequence: 0x63 0x6f ("co")</t>
          </li>
          <li>
            <t>Reference: <xref target="RFC7252"/> and [this document]</t>
          </li>
        </ul>
        <t>Note that <xref target="RFC7252"/> does not define the use of the ALPN TLS extension during the DTLS connection handshake.
This document does not change this behavior, and thus does not establish any rules like those in <xref section="8.2" sectionFormat="of" target="RFC8323"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </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="28" month="June" 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-07"/>
        </reference>
        <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>
      </references>
    </references>
    <?line 113?>

<section anchor="change-log">
      <name>Change Log</name>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We like to thank Rich Salz for the expert review on the "co" ALPN ID allocation.
We also like to thank Mohamed Boucadair and Ben Schwartz for their early review before WG adoption
of this draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ort3YLpZhDkupIsR55fCVPwPHWuJtb4QAAA=

-->

</rfc>
