<?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-richter-webtransport-websocket-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="WebTransport-WS">WebTransport over WebSocket</title>
    <seriesInfo name="Internet-Draft" value="draft-richter-webtransport-websocket-01"/>
    <author fullname="Marten Richter">
      <organization>Technische Universität Berlin</organization>
      <address>
        <email>marten.richter@tu-berlin.de</email>
      </address>
    </author>
    <date/>
    <area>art</area>
    <workgroup>webtrans</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 43?>

<t>WebTransport <xref target="OVERVIEW"/>, a protocol framework within the Web security model, empowers Web clients to initiate secure multiplexed transport for low-level client-server interactions with remote servers.
This document outlines a protocol, based on WebSocket <xref target="WEBSOCKET"/>, offering WebTransport capabilities similar to the HTTP/2 variant <xref target="WEBTRANSPORT-H2"/>. It serves as an alternative when UDP-based protocols are inaccessible, and the client environment exclusively supports WebSocket <xref target="WEBSOCKET"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/martenrichter/draft-ietf-webtransport-websocket"/>.</t>
    </note>
  </front>
  <middle>
    <?line 48?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>WebTransport <xref target="OVERVIEW"/> is designed to facilitate communication for Web clients over HTTP/3 <xref target="HTTP3"/>, leveraging QUIC <xref target="QUIC"/> semantics with streams or datagrams <xref target="DATAGRAM"/>. In cases where UDP-based traffic is restricted, HTTP/2 protocol <xref target="WEBTRANSPORT-H2"/> serves as an alternative built solely on HTTP semantics.</t>
      <t>Both <xref target="WEBTRANSPORT-H2"/> and <xref target="WEBTRANSPORT-H3"/> variants require a native WebClient implementation due to the usual unavailability of plain UDP and TCP/IP socket access for scripts within WebClients</t>
      <t>This document defines a protocol implementable on the WebClient using available scripting languages, without altering the WebClient's native code.
It uses the widespread WebSocket protocol as the base without modification.
However, a direct implementation in a WebClient is possible.</t>
      <t>The protocol utilizes capsule semantics derived from <xref target="WEBTRANSPORT-H2"/> and translates them into WebSocket frames. By relying on WebSockets, also intermediates such as proxies
unaware of WebTransports can apply application layer processing.</t>
      <t>An implementation should support both WebSocket over http/1 and http/2.
The server should incorporate WebTransport flow control constraints and capsule processing into its WebSocket parser code. Therefore, using unmodified existing WebSocket code is not recommended.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <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?>

<t>The document follows the terminology defined in <xref section="1.2" sectionFormat="of" target="OVERVIEW"/>.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>WebTransport servers are identified by an HTTPS URI per <xref section="4.2.2" sectionFormat="of" target="HTTP"/>.</t>
      <t>The protocol uses <xref target="WEBTRANSPORT-H2"/> semantics with the following modifications.</t>
      <section anchor="connection-and-version-negotiation">
        <name>Connection and version negotiation</name>
        <t>The WebSocket connection is established according to <xref section="4" sectionFormat="of" target="WEBSOCKET"/> or <xref target="WEBSOCKET-H2"/>.</t>
        <t>When a WebSocket connection is established, both the client and server select the WebTransport-Websocket protocol by setting |Sec-WebSocket-Protocol| <xref section="1.9" sectionFormat="of" target="WEBSOCKET"/> to the supported versions. The protocol names follow the scheme "webtransport_VERSIONAME", where VERSIONNAME identifies the particular protocol version. For this protocol VERSIONAME would be "kDraft1" and the |Sec-WebSocket-Protocol| field would include "webtransport_kDraft1".
The protocol negotiation follows the procedures as described in <xref section="4.1" sectionFormat="of" target="WEBSOCKET"/> and <xref section="4.2.2" sectionFormat="of" target="WEBSOCKET"/>.
No protocol extensions <bcp14>MUST</bcp14> BE negotiated.</t>
      </section>
      <section anchor="data-framing">
        <name>Data framing</name>
        <t>The protocol uses the data frames as defined in <xref section="5" sectionFormat="of" target="WEBSOCKET"/>.
PING and PONG frame handling is not changed <xref section="5.5" sectionFormat="of" target="WEBSOCKET"/>.</t>
        <t>For closing a session a CLOSE_WEBTRANSPORT_SESSION capsule followed by the CLOSE frame <xref section="5.5.1" sectionFormat="of" target="WEBSOCKET"/> is sent.</t>
        <t>Data Frames containing Text are reserved for future use and <bcp14>MUST NOT</bcp14> be sent.
Binary Data Frames transport CAPSULE content defined in <xref target="WEBTRANSPORT-H2"/> and <xref target="DATAGRAM"/>. For details, refer to the next section <xref target="capsule-frames"/>. Their length is limited by WebTransport flow control, and a violation <bcp14>SHOULD</bcp14> lead to connection termination.
CONTINUATION frames are processed per <xref target="WEBSOCKET"/> specifications. Given the streaming nature of the content, partial DATA frames or CONTINUATION frames should be promptly forwarded to corresponding streams reducing latency.</t>
      </section>
      <section anchor="capsule-frames">
        <name>Capsule frames</name>
        <t>This protocol adopts the mechanisms and intrinsic elements outlined in <xref target="WEBTRANSPORT-H2"/>, which itself is constructed upon the CAPSULE protocol originating from <xref target="DATAGRAM"/>.</t>
        <t>A CAPSULE has the form in <xref target="DATAGRAM"/>:</t>
        <artwork><![CDATA[
Capsule {
  Capsule Type (i),
  Capsule Length (i),
  Capsule Value (..),
}
]]></artwork>
        <t>where Capsule Type and Length are variable-length integers.
The Capsule Value represents the payload of the capsule, and its semantics are determined by the payload type</t>
        <t>In the context of WebTransport over WebSockets, CAPSULEs are substituted by binary DATA FRAMES of WebSockets, following the format:</t>
        <artwork><![CDATA[
WebSocketDataFrameCapsule {
  FrameHeader (..),
  PayloadData (..)
}
]]></artwork>
        <t>FrameHeader contains the first two bytes of the FRAME, and if present the extended payload length and masking key as defined in <xref section="5.2" sectionFormat="of" target="WEBSOCKET"/>.
PayloadData is defined as:</t>
        <artwork><![CDATA[
PayloadData {
  Capsule Type (i),
  Capsule Value (..)
}
]]></artwork>
        <t>with the variable length integer Capsule Type and Capsule Value as in the CAPSULE protocol.</t>
        <t>Capsule length can be calculated from the Payload Length as set in <xref section="5.2" sectionFormat="of" target="WEBSOCKET"/>:</t>
        <artwork><![CDATA[
  Capsule Length = Payload Length - sizeof(Capsule Type),
]]></artwork>
        <t>as no Extension Data is allowed.</t>
      </section>
      <section anchor="replacement-for-settings">
        <name>Replacement for SETTINGS</name>
        <t><xref section="3.1" sectionFormat="of" target="WEBTRANSPORT-H2"/> requires sending an SETTINGS_WEBTRANSPORT_MAX_SESSIONS settings parameter. This is not required here, as the protocol type is negotiated using the
subprotocol mechanism of WebSockets and SETTINGS_WEBTRANSPORT_MAX_SESSIONS equal to 1 is assumed per WebSocket connection(HTTP1)/stream(HTTP2).
Subsections of <xref section="3.4" sectionFormat="of" target="WEBTRANSPORT-H2"/> require sending initial SETTINGS for flow control. As SETTINGS are not accessible for the WebSocket protocol using the existing WebSocket interfaces, a replacement is required.</t>
        <t>Therefore client and server <bcp14>MUST</bcp14> send the initial flow control values using CAPSULES
immediately before ANY other capsules such as WT_STREAM or DATAGRAM capsules have been sent.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>The protocol is implemented in a <eref target="https://github.com/fails-components/webtransport">node.js package</eref>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref section="10" sectionFormat="of" target="WEBSOCKET"/> also apply here.
The last paragraph of <xref section="8" sectionFormat="of" target="WEBTRANSPORT-H2"/> is equally applicable to this protocol.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="websocket-subprotocol-name-registry">
        <name>WebSocket Subprotocol Name Registry</name>
        <t>All possible subprotocol names following the format "webtransport_VERSION," where VERSION is an alphanumeric string denoting the subprotocol version of this protocol, are added to the registry as domains for this protocol and its successors.</t>
      </section>
      <section anchor="webtransport-websocket-protocol-version-registry">
        <name>WebTransport WebSocket Protocol Version Registry</name>
        <t>This specification establishes a new IANA registry for WebTransort Protocol Version names, intended for use with the WebSocket WebTransport Protocol, in alignment with the principles outlined in <xref target="RFC5226"/>.</t>
        <t>As part of this registry, IANA manages the following information (similar to <xref target="WEBSOCKET"/> versions):</t>
        <t>Version String
      The version string name as part of the subprotocol defined in <xref target="websocket-subprotocol-name-registry"/> and <xref target="connection-and-version-negotiation"/>.  The value must only include alphanumeric characters.</t>
        <t>Reference
      The RFC requesting a new version number or a draft name with
      version number (see below).</t>
        <t>Status
      Either "Interim" or "Standard".  See below for a description.</t>
        <t>A version string can be either "Interim" or "Standard".</t>
        <t>A "Standard" version string is part of an RFC and identifies a major, stable version of the WebTransport-WebSocket protocol. The "IETF Review" IANA registration policy <xref target="RFC5226"/> applies to "Standard" version string.</t>
        <t>An Internet-Draft documents an "Interim" version string. Internet-Drafts helps implementors to identify and interoperate with the WebTransport-WebSocket protocol,
  as this current draft. The "Expert Review" IANA registration policy <xref target="RFC5226"/> applies to the "Interim" version names. The initial Designated Experts need to be determined.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="OVERVIEW">
          <front>
            <title>The WebTransport Protocol Framework</title>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   The WebTransport Protocol Framework enables clients constrained by
   the Web security model to communicate with a remote server using a
   secure multiplexed transport.  It consists of a set of individual
   protocols that are safe to expose to untrusted applications, combined
   with an abstract model that allows them to be used interchangeably.

   This document defines the overall requirements on the protocols used
   in WebTransport, as well as the common features of the protocols,
   support for some of which may be optional.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-07"/>
        </reference>
        <reference anchor="WEBTRANSPORT-H3">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   WebTransport [OVERVIEW] is a protocol framework that enables clients
   constrained by the Web security model to communicate with a remote
   server using a secure multiplexed transport.  This document describes
   a WebTransport protocol that is based on HTTP/3 [HTTP3] and provides
   support for unidirectional streams, bidirectional streams and
   datagrams, all multiplexed within the same HTTP/3 connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-09"/>
        </reference>
        <reference anchor="WEBTRANSPORT-H2">
          <front>
            <title>WebTransport over HTTP/2</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook Inc.</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Guowu Xie" initials="G." surname="Xie">
              <organization>Facebook Inc.</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   WebTransport defines a set of low-level communications features
   designed for client-server interactions that are initiated by Web
   clients.  This document describes a protocol that can provide many of
   the capabilities of WebTransport over HTTP/2.  This protocol enables
   the use of WebTransport when a UDP-based protocol is not available.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http2-08"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding" initials="R. T." surname="Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke" initials="J." surname="Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <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.

 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="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
        <reference anchor="WEBSOCKET">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers. The protocol consists of an opening handshake followed by basic message framing, layered over TCP. The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6455"/>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
        </reference>
        <reference anchor="WEBSOCKET-H2">
          <front>
            <title>Bootstrapping WebSockets with HTTP/2</title>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8441"/>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
        </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="RFC5226">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>Many protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t>
              <t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t>
              <t>This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5226"/>
          <seriesInfo name="DOI" value="10.17487/RFC5226"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="DATAGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="Mike Bishop" initials="M." surname="Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
    </references>
    <?line 201?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Parts of the text were rephrased using ChatGPT. Portions of this document are based upon a modification of text parts from the underlying standards.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
