<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-webtrans-http3-17" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="WebTransport-H3">WebTransport over HTTP/3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-17"/>
    <author initials="A." surname="Frindell" fullname="Alan Frindell">
      <organization>Meta</organization>
      <address>
        <email>afrind@fb.com</email>
      </address>
    </author>
    <author initials="E." surname="Kinnear" fullname="Eric Kinnear">
      <organization>Apple Inc.</organization>
      <address>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <author initials="V." surname="Vasiliev" fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Web and Internet Transport</area>
    <workgroup>WEBTRANS</workgroup>
    <keyword>webtransport</keyword>
    <abstract>
      <?line 42?>

<t>WebTransport over HTTP/3 is a binding of the WebTransport protocol framework
<xref target="OVERVIEW"/> to HTTP/3 <xref target="HTTP3"/>.  It
provides support for unidirectional streams, bidirectional streams, and
datagrams, all multiplexed within the same HTTP/3 connection.  WebTransport
enables application clients constrained by the Web security model to
communicate with a remote application server using a secure multiplexed
transport.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-webtrans.github.io/draft-ietf-webtrans-http3/#go.draft-ietf-webtrans-http3.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-webtrans-http3/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WebTransport Working Group mailing list (<eref target="mailto:webtransport@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/webtransport/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/webtransport/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-http3"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP/3 <xref target="HTTP3"/> is a protocol defined on top of QUIC <xref target="RFC9000"/> that can
multiplex HTTP requests over a QUIC connection.  This document defines a
mechanism for multiplexing non-HTTP data with HTTP/3 in a manner that conforms
with the WebTransport protocol requirements and semantics <xref target="OVERVIEW"/>.  Using the
mechanism described here, multiple WebTransport instances, or sessions, can be
multiplexed simultaneously with regular HTTP traffic on the same HTTP/3
connection.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
        <t>This document follows terminology defined in <xref section="1.2" sectionFormat="of" target="OVERVIEW"/>.
WebTransport servers and HTTP/3 servers are distinguished here as two separate
roles: an HTTP/3 server terminates HTTP/3 connections, while a WebTransport
server is an application that accepts WebTransport sessions, accessed via an
HTTP/3 server, possibly through an intermediary.</t>
        <t>An application client is user-provided or developer-provided code, often
untrusted, that uses the interface offered by the WebTransport client to
communicate with an application server.  The application server uses the
interface offered by the WebTransport server to accept incoming WebTransport
sessions.  For example, when the WebTransport client is a browser, the
application client is typically a website loaded in that browser.</t>
        <t>References to "client" and "server" in this document refer to the
WebTransport client and WebTransport server, respectively.</t>
        <t>An intermediary between a client and an upstream server presents itself as a
server to the client, and as a client to the upstream server.  Requirements
this document places on servers therefore apply to intermediaries when acting
as a server, and requirements on clients apply when acting as a client.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <section anchor="quic-webtransport-and-http3">
        <name>QUIC, WebTransport, and HTTP/3</name>
        <t>QUIC version 1 <xref target="RFC9000"/> is a secure transport protocol with flow control and
congestion control.  QUIC supports application data exchange via streams:
reliable and ordered byte streams that can be multiplexed.  These streams are
independent, so head-of-line blocking does not propagate between them.  QUIC
provides streams as a transport service without prescribing their usage.  The
applicability of streams is described by <xref section="4" sectionFormat="of" target="RFC9308"/>.</t>
        <t>HTTP is an application-layer protocol, defined by "HTTP Semantics" <xref target="HTTP"/>.
HTTP/3 is the application mapping for QUIC, defined in <xref target="RFC9114"/>.  It
describes how QUIC streams are used to carry control data or HTTP request and
response message sequences in the form of frames and describes details of stream
and connection lifecycle management.</t>
        <t>WebTransport session establishment involves interacting at the HTTP layer with a
resource.  For Web user agents and other WebTransport clients, this interaction
is important for security reasons, especially to ensure that the resource is
willing to use WebTransport.</t>
        <t>Although WebTransport requires HTTP for its handshake, when HTTP/3 is in use,
HTTP is used for session setup and only minimal framing beyond that.  QUIC
streams begin with a sequence of header bytes that links them to the
established session.  The remainder of the stream is the body, which carries
the payload supplied by the application using WebTransport.  This process is
similar to WebSockets over HTTP/1.1 <xref target="ORIGIN"/>, where access to the
underlying byte stream is enabled after both sides have completed an initial
handshake.</t>
        <t>The layering of QUIC, HTTP/3, and WebTransport is shown in
<xref target="fig-webtransport-layers"/>.  Once a WebTransport session is established,
applications have nearly direct access to QUIC.</t>
        <figure anchor="fig-webtransport-layers">
          <name>WebTransport Layering</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="280" viewBox="0 0 280 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,192" fill="none" stroke="black"/>
                <path d="M 144,64 L 144,160" fill="none" stroke="black"/>
                <path d="M 272,32 L 272,192" fill="none" stroke="black"/>
                <path d="M 8,32 L 272,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 272,64" fill="none" stroke="black"/>
                <path d="M 8,128 L 144,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 272,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 272,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="156" y="52">WebTransport</text>
                  <text x="36" y="84">HTTP</text>
                  <text x="96" y="84">Semantics</text>
                  <text x="72" y="100">and</text>
                  <text x="48" y="116">Session</text>
                  <text x="104" y="116">Setup</text>
                  <text x="180" y="116">Nearly</text>
                  <text x="236" y="116">direct</text>
                  <text x="76" y="148">HTTP/3</text>
                  <text x="148" y="180">QUIC</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
,--------------------------------,
|            WebTransport        |
,----------------,---------------,
| HTTP Semantics |               |
|      and       |               |
| Session Setup  | Nearly direct |
,----------------,               |
|     HTTP/3     |               |
,----------------`---------------,
|               QUIC             |
`--------------------------------'
]]></artwork>
          </artset>
        </figure>
        <section anchor="minimizing-implementation-complexity">
          <name>Minimizing Implementation Complexity</name>
          <t>WebTransport has minimal interaction with HTTP and HTTP/3.  Clients and servers
can constrain their use of features to only those required to complete a
WebTransport handshake:</t>
          <ul spacing="normal">
            <li>
              <t>Generating/parsing the request method, host, path, protocol, optional Origin
header field, and any necessary header fields.</t>
            </li>
            <li>
              <t>Generating/parsing the response status code and any necessary header
fields.</t>
            </li>
          </ul>
          <t>While HTTP/3 encodes HTTP messages using QPACK, this complexity can be
minimized.  When receiving, a WebTransport endpoint can disable dynamic
decompression entirely but must always support static decompression and Huffman
decoding.  When sending, endpoints can opt to never use dynamic compression,
static compression, or Huffman encoding.</t>
        </section>
        <section anchor="capsule-based-webtransport-over-http3">
          <name>Capsule-Based WebTransport over HTTP/3</name>
          <t>WebTransport over HTTP/3 as defined in this document provides the best
performance by using native QUIC streams and datagrams. Endpoints SHOULD prefer
this protocol when using WebTransport over an HTTP/3 connection.</t>
          <t>However, it is also possible to use WebTransport over a single HTTP/3 stream
using the capsule-based protocol defined in
<xref target="WEBTRANS-H2"/>.  The two protocols are distinguished
by their upgrade tokens: this document uses the "webtransport-h3" token
(<xref target="upgrade-token"/>), while <xref target="WEBTRANS-H2"/> uses the "webtransport" token.</t>
          <t>The capsule-based protocol can be useful for intermediaries that proxy
WebTransport sessions between HTTP/2 and HTTP/3 connections, as it avoids the
need to translate between the two wire formats.  It can also be useful in
deployment environments such as data centers where existing routing
infrastructure supports forwarding streams but does not support the HTTP/3
extensions required by this document.</t>
          <t>Endpoints that use the capsule-based protocol over HTTP/3 lose the benefits of
stream independence, as all WebTransport streams within a session share a single
QUIC stream and are subject to head-of-line blocking.  Datagrams sent using the
capsule-based protocol are also retransmitted by QUIC, and therefore do not
provide unreliable delivery.</t>
        </section>
      </section>
      <section anchor="protocol-overview">
        <name>Protocol Overview</name>
        <t>WebTransport servers are identified by an HTTPS URI as defined in
<xref section="4.2.2" sectionFormat="of" target="HTTP"/>.</t>
        <t>When an HTTP/3 connection is established, the server sends a SETTINGS_WT_ENABLED
setting to indicate support for WebTransport over HTTP/3.  This process also
negotiates the use of additional HTTP/3 extensions to enable both endpoints to
open WebTransport streams.</t>
        <t>WebTransport sessions are initiated inside a given HTTP/3 connection by the
client, who sends an extended CONNECT request <xref target="RFC9220"/>.  If the server
accepts the request, a WebTransport session is established.  The resulting
stream will be further referred to as a <em>CONNECT stream</em>, and its stream ID is
used to uniquely identify a given WebTransport session within the connection.
The ID of a CONNECT stream that established a given WebTransport session will
be further referred to as a <em>Session ID</em>.</t>
        <t>After the session is established, the endpoints can exchange data using the
following mechanisms:</t>
        <ul spacing="normal">
          <li>
            <t>A client can create a bidirectional stream and transfer its ownership to
WebTransport by providing a special signal in the first bytes.</t>
          </li>
          <li>
            <t>A server can create a bidirectional stream and transfer its ownership to
WebTransport by providing a special signal in the first bytes.</t>
          </li>
          <li>
            <t>Both client and server can create a unidirectional stream using a special
stream type.</t>
          </li>
          <li>
            <t>Both client and server can send datagrams using HTTP Datagrams
<xref target="HTTP-DATAGRAM"/>.</t>
          </li>
        </ul>
        <t>A WebTransport session is terminated when the CONNECT stream that created it is
closed.</t>
      </section>
    </section>
    <section anchor="session-establishment">
      <name>Session Establishment</name>
      <section anchor="establishing">
        <name>Establishing a WebTransport-Capable HTTP/3 Connection</name>
        <t>A WebTransport-Capable HTTP/3 connection requires the server to signal support
for WebTransport over HTTP/3 using a setting.  Clients also signal support by
using the "webtransport-h3" upgrade token in extended CONNECT requests when
establishing sessions (see <xref target="upgrade-token"/>).</t>
        <t>This document defines a SETTINGS_WT_ENABLED setting that WebTransport servers
use to indicate their support for WebTransport.  The default value for the
SETTINGS_WT_ENABLED setting is "0", meaning that the server does not support
WebTransport.  A value of "1" indicates support for the variant of WebTransport
that is described in this document (that is, "webtransport-h3").  Clients MUST
treat values greater than "1" as a connection error of type H3_SETTINGS_ERROR.
Clients MUST NOT attempt to establish WebTransport sessions with the
"webtransport-h3" token until they have received the setting indicating
WebTransport support from the server.  SETTINGS_WT_ENABLED has no meaning when
sent by a client; a server MUST ignore it.</t>
        <t>[[RFC editor: please remove the following paragraph before publication.]]</t>
        <t>Servers that advertise draft versions of WebTransport do not ignore
SETTINGS_WT_ENABLED sent by clients; see <xref target="negotiating-draft-version"/>.</t>
        <t>WebTransport over HTTP/3 uses extended CONNECT in HTTP/3 as described in
<xref target="RFC9220"/>, which defines the SETTINGS_ENABLE_CONNECT_PROTOCOL setting.</t>
        <t>WebTransport over HTTP/3 requires support for HTTP/3 datagrams and the Capsule
Protocol, and both the client and the server indicate support for HTTP/3
datagrams by sending a SETTINGS_H3_DATAGRAM setting value set to 1 in their
SETTINGS frame (see <xref section="2.1.1" sectionFormat="of" target="HTTP-DATAGRAM"/>).</t>
        <t>WebTransport over HTTP/3 also requires support for QUIC datagrams.  To indicate
support, both the client and the server send a max_datagram_frame_size transport
parameter with a value greater than 0
(see <xref section="3" sectionFormat="of" target="QUIC-DATAGRAM"/>).</t>
        <t>WebTransport over HTTP/3 relies on the RESET_STREAM_AT frame defined in
<xref target="RESET-STREAM-AT"/>.  To indicate support,
both the client and the server enable the extension by sending an empty
reset_stream_at transport parameter as described in
<xref section="3" sectionFormat="of" target="RESET-STREAM-AT"/>.</t>
        <t>In summary, servers supporting WebTransport over HTTP/3 send:</t>
        <ul spacing="normal">
          <li>
            <t>A SETTINGS_WT_ENABLED setting with a value of "1"</t>
          </li>
          <li>
            <t>A SETTINGS_ENABLE_CONNECT_PROTOCOL setting with a value of "1"</t>
          </li>
          <li>
            <t>A SETTINGS_H3_DATAGRAM setting with a value of 1</t>
          </li>
          <li>
            <t>A max_datagram_frame_size transport parameter with a value greater than 0</t>
          </li>
          <li>
            <t>An empty reset_stream_at transport parameter</t>
          </li>
        </ul>
        <t>Clients supporting WebTransport over HTTP/3 send:</t>
        <ul spacing="normal">
          <li>
            <t>A SETTINGS_H3_DATAGRAM setting with a value of 1</t>
          </li>
          <li>
            <t>A max_datagram_frame_size transport parameter with a value greater than 0</t>
          </li>
          <li>
            <t>An empty reset_stream_at transport parameter</t>
          </li>
        </ul>
        <t>[[RFC editor: please remove the following paragraph before publication.]]</t>
        <t>For draft versions of WebTransport only, clients MUST also send
SETTINGS_WT_ENABLED for each draft version they support, and for the version
described in this document if they support it, so that the server can identify
which version the client will use; see <xref target="negotiating-draft-version"/>.</t>
        <t>Servers should note that CONNECT requests to establish new WebTransport
sessions, in addition to other messages, can arrive before the client's SETTINGS
are received (see <xref target="buffering-incoming"/>).  If the server receives SETTINGS that
do not have correct values for every required setting, or transport parameters
that do not have correct values for every required transport parameter, the
server MUST treat all established and newly incoming WebTransport sessions as
malformed, as described in <xref section="4.1.2" sectionFormat="of" target="HTTP3"/>.</t>
        <t>A client MUST NOT establish WebTransport sessions if the server's SETTINGS do
not have correct values for every required setting or if the server's transport
parameters do not have correct values for every required transport parameter.
If a client does not wish to use the connection for purposes other than
WebTransport when the requirements for WebTransport are not met, the client MAY
close the HTTP/3 connection with a <tt>WT_REQUIREMENTS_NOT_MET</tt> error code to aid
in debugging.</t>
        <t>[[RFC editor: please remove the following paragraph before publication.]]</t>
        <t>For draft versions of WebTransport only, the server MUST NOT process any
incoming WebTransport requests until the client's SETTINGS have been received;
see <xref target="negotiating-draft-version"/>.</t>
      </section>
      <section anchor="creating-a-new-session">
        <name>Creating a New Session</name>
        <t>As WebTransport sessions are established over HTTP/3, they are identified using
the <tt>https</tt> URI scheme (<xref section="4.2.2" sectionFormat="of" target="HTTP"/>).</t>
        <t>In order to create a new WebTransport session, a WebTransport client sends an
HTTP extended CONNECT request.  In this request:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>:protocol</tt> pseudo-header field (<xref target="RFC8441"/>) MUST be set to
<tt>webtransport-h3</tt>.</t>
          </li>
          <li>
            <t>The <tt>:scheme</tt> field MUST be <tt>https</tt>.</t>
          </li>
          <li>
            <t>Both the <tt>:authority</tt> and the <tt>:path</tt> value MUST be set; these fields identify
the desired WebTransport server resource.</t>
          </li>
          <li>
            <t>If the WebTransport session is coming from a browser client, an <tt>Origin</tt>
header <xref target="RFC6454"/> MUST be provided within the request.  Otherwise, the
header is OPTIONAL.</t>
          </li>
        </ul>
        <t>Upon receiving an extended CONNECT request with a <tt>:protocol</tt> field set to
<tt>webtransport-h3</tt>, the HTTP/3 server can check if the target resource
(<xref section="7.1" sectionFormat="of" target="HTTP"/>) supports WebTransport.  If the target resource does
not support WebTransport, the server SHOULD reply with status code 405
(<xref section="15.5.6" sectionFormat="of" target="HTTP"/>).</t>
        <t>When the request contains the <tt>Origin</tt> header, the WebTransport server MUST
verify the <tt>Origin</tt> header to ensure that the specified origin is allowed to
access the server in question.  If the verification fails, the WebTransport
server SHOULD reply with status code 403 (<xref section="15.5.4" sectionFormat="of" target="HTTP"/>).</t>
        <t>A server then performs any checks specific to the server and target resource.
If all checks pass, the session can be accepted by replying with a 2xx series
status code, as defined in <xref section="15.3" sectionFormat="of" target="HTTP"/>.</t>
        <t>From the client's perspective, a WebTransport session is established when the
client receives a 2xx response.  From the server's perspective, a session is
established once it sends a 2xx response.</t>
        <t>The server can reply with a 3xx response, indicating a redirection
(<xref section="15.4" sectionFormat="of" target="HTTP"/>).  The WebTransport client MUST NOT automatically
follow such redirects, as it potentially could have already sent data for the
WebTransport session in question; it MAY notify the application client about
the redirect.</t>
        <t>Clients cannot initiate WebTransport sessions in 0-RTT packets, as the CONNECT
method is not considered safe (see <xref section="10.9" sectionFormat="of" target="HTTP3"/>).  Consequently,
a client MUST discard any values for the settings defined in this document
(<xref target="http3-settings"/>) that it retained from a previous connection and use the
values received on the current connection.  A server can therefore accept
0-RTT regardless of the values it previously sent for these settings, and the
requirements in <xref section="7.2.4.2" sectionFormat="of" target="HTTP3"/> to treat incompatible or omitted
settings as a connection error do not apply to these settings.</t>
        <t>The "webtransport-h3" HTTP Upgrade Token uses the Capsule Protocol as defined in
<xref target="HTTP-DATAGRAM"/>.  The Capsule Protocol is negotiated when the server sends a
2xx response.  The <tt>capsule-protocol</tt> header field
<xref section="3.4" sectionFormat="of" target="HTTP-DATAGRAM"/> is not required by WebTransport and can safely
be ignored by WebTransport endpoints.</t>
        <t>To reduce latency at the start of a WebTransport session, a client MAY
optimistically send capsules on the CONNECT stream before receiving the
server's response.  A server MUST NOT process these bytes as capsules until
it sends a 2xx response accepting the session.  Bytes received before the
server sends the response are processed once the session is accepted or
discarded if the session is rejected.</t>
      </section>
      <section anchor="protocol-negotiation">
        <name>Application Protocol Negotiation</name>
        <t>WebTransport over HTTP/3 offers a protocol negotiation mechanism, similar to the
TLS Application-Layer Protocol Negotiation (ALPN) extension <xref target="RFC7301"/>; the
intent is to simplify porting existing protocols that use QUIC and rely on this
functionality.</t>
        <t>The client MAY include a <tt>WT-Available-Protocols</tt> header field in the CONNECT
request.  The <tt>WT-Available-Protocols</tt> field enumerates the possible next
protocols in preference order, with the most preferred protocol listed first.
If the server receives such a header, it MAY include a <tt>WT-Protocol</tt> field in
a successful (2xx) response.  If it does, the server MUST include a single
choice from the client's list in that field; client behavior when the server
response does not satisfy this requirement is described below.  Servers MAY
reject the request if the client did not include a suitable protocol.</t>
        <t>Both <tt>WT-Available-Protocols</tt> and <tt>WT-Protocol</tt> are Structured Fields
<xref target="FIELDS"/>.  <tt>WT-Available-Protocols</tt> is a List.  <tt>WT-Protocol</tt> is
defined as an Item.  In both cases, the only valid value type is a String.  Any
value type other than String MUST be treated as an error that causes the entire
field to be ignored as recommended in <xref target="FIELDS"/>, allowing application protocol
negotiation to remain optional.  No semantics are defined for parameters on
either field; parameters MUST be ignored.</t>
        <t>A server that requires application protocol negotiation MAY reject the session
if the <tt>WT-Available-Protocols</tt> header field is absent or if it is malformed and
therefore ignored.</t>
        <t>A client that requires application protocol negotiation MUST close the
WebTransport session with a <tt>WT_ALPN_ERROR</tt> error code if the server does not
include a <tt>WT-Protocol</tt> header field, or if it is malformed and therefore
ignored, in a successful response.</t>
        <t>If the client sends a <tt>WT-Available-Protocols</tt> header field and the server
responds with a <tt>WT-Protocol</tt> header field, the value in the <tt>WT-Protocol</tt>
response header field MUST be one of the values listed in
<tt>WT-Available-Protocols</tt> of the request.  If the client receives a <tt>WT-Protocol</tt>
value that was not included in its <tt>WT-Available-Protocols</tt> list, the client
MUST close the WebTransport session with a <tt>WT_ALPN_ERROR</tt> error code.</t>
        <t>The semantics of individual values used in <tt>WT-Available-Protocols</tt> and
<tt>WT-Protocol</tt> are determined by the WebTransport resource in question and are
not required to be registered in IANA's "ALPN Protocol IDs" registry.</t>
      </section>
      <section anchor="prioritization">
        <name>Prioritization</name>
        <t>WebTransport sessions are initiated using extended CONNECT.
While <xref section="11" sectionFormat="of" target="RFC9218"/> describes how extensible priorities can be
applied to data sent on a CONNECT stream, WebTransport extends the types of data
that are exchanged in relation to the request and response, which requires
additional considerations.</t>
        <t>WebTransport CONNECT requests and responses MAY contain the Priority header
field (<xref section="5" sectionFormat="of" target="RFC9218"/>); clients MAY reprioritize by sending
PRIORITY_UPDATE frames (<xref section="7" sectionFormat="of" target="RFC9218"/>).  In extension to <xref target="RFC9218"/>,
it is RECOMMENDED that clients and servers apply the scheduling guidance in both
<xref section="9" sectionFormat="of" target="RFC9218"/> and <xref section="10" sectionFormat="of" target="RFC9218"/> for all data that they
send in the enclosing WebTransport session, including Capsules, WebTransport
streams and datagrams.  WebTransport does not provide any priority signaling
mechanism for streams and datagrams within a WebTransport session; such
mechanisms can be defined by application protocols using WebTransport.  It is
RECOMMENDED that such mechanisms only affect scheduling within a session and not
scheduling of other data on the same HTTP/3 connection.</t>
        <t>The client/server priority merging guidance in <xref section="8" sectionFormat="of" target="RFC9218"/> also
applies to WebTransport sessions.  For example, a client that receives a
response Priority header field could alter its view of a WebTransport session
priority and alter the scheduling of outgoing data as a result.</t>
        <t>Endpoints that prioritize WebTransport sessions need to consider how they
interact with other sessions or requests on the same HTTP/3 connection.</t>
      </section>
    </section>
    <section anchor="webtransport-features">
      <name>WebTransport Features</name>
      <t>WebTransport over HTTP/3 provides the following features described in
<xref target="OVERVIEW"/>: unidirectional streams, bidirectional streams, and datagrams, all of
which can be initiated by either endpoint.  Protocols designed for use with
WebTransport over HTTP/3 are constrained to these features.  The Capsule
Protocol is an implementation detail of WebTransport over HTTP/3 and is not a
WebTransport feature.</t>
      <t>Session IDs are used to demultiplex streams and datagrams belonging to different
WebTransport sessions.  On the wire, session IDs are encoded using the QUIC
variable length integer scheme described in <xref target="RFC9000"/>.</t>
      <t>The client MAY optimistically open unidirectional and bidirectional streams, as
well as send datagrams, on a session for which it has sent the CONNECT request,
even if it has not yet received the server's response to the request. On the
server side, opening streams and sending datagrams is possible as soon as the
CONNECT request has been received.</t>
      <t>Session IDs are derived from the stream ID of the CONNECT stream that
established the session and therefore MUST always correspond to a
client-initiated bidirectional stream, as defined in <xref section="2.1" sectionFormat="of" target="RFC9000"/>.
If an endpoint receives a session ID on a unidirectional stream, bidirectional
stream, or datagram that does not correspond to a client-initiated bidirectional
stream ID, the endpoint MUST close the connection with an H3_ID_ERROR error
code.  Session IDs that correspond to closed sessions are not considered invalid
for the purposes of this check; endpoints handle data for closed sessions as
described in <xref target="session-termination"/>.</t>
      <section anchor="transport-properties">
        <name>Transport Properties</name>
        <t>The WebTransport framework <xref target="OVERVIEW"/> defines a set of optional transport
properties that clients can use to determine the presence of features which
might allow additional optimizations beyond the common set of properties
available via all WebTransport protocols.</t>
        <t>Below are details about support in WebTransport over HTTP/3 for the properties
defined by the WebTransport framework.</t>
        <dl>
          <dt>Unreliable Delivery:</dt>
          <dd>
            <t>WebTransport over HTTP/3 supports unreliable delivery.  Resetting a stream
results in lost stream data no longer being retransmitted.  WebTransport over
HTTP/3 also supports datagrams, which are not retransmitted.</t>
          </dd>
          <dt>Pooling:</dt>
          <dd>
            <t>WebTransport over HTTP/3 provides optional support for pooling.  Endpoints
that do not support pooling can reply to CONNECT requests with a header
indicating a rate limit policy with a quota of "1"
(<xref target="I-D.ietf-httpapi-ratelimit-headers"/>).</t>
          </dd>
        </dl>
      </section>
      <section anchor="unidirectional-streams">
        <name>Unidirectional streams</name>
        <t>WebTransport endpoints can initiate unidirectional streams.  The HTTP/3
unidirectional stream type SHALL be 0x54.  The body of the stream SHALL be the
stream type, followed by the session ID, encoded as a variable-length integer,
followed by the user-specified stream data (<xref target="fig-unidi"/>).</t>
        <figure anchor="fig-unidi">
          <name>Unidirectional WebTransport stream format</name>
          <sourcecode type="drawing"><![CDATA[
Unidirectional Stream {
    Stream Type (i) = 0x54,
    Session ID (i),
    User-Specified Stream Data (..)
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="bidirectional-streams">
        <name>Bidirectional Streams</name>
        <t>All client-initiated bidirectional streams are reserved by HTTP/3 as request
streams, which are a sequence of HTTP/3 frames with a variety of rules (see
Sections <xref target="HTTP3" section="4.1" sectionFormat="bare"/> and <xref target="HTTP3" section="6.1" sectionFormat="bare"/> of <xref target="HTTP3"/>).</t>
        <t>WebTransport extends HTTP/3 to allow clients to declare and to use alternative
request stream rules.  Once a client receives settings indicating WebTransport
support (<xref target="establishing"/>), it MUST send a special signal value, encoded as a
variable-length integer, as the first bytes of each bidirectional WebTransport
stream it initiates to indicate how the remaining bytes on the stream are used.</t>
        <t>WebTransport extends HTTP/3 by defining rules for all server-initiated
bidirectional streams.  Once a server receives an incoming CONNECT request
establishing a WebTransport session (<xref target="establishing"/>), it can open a
bidirectional stream for use with that session and MUST send a special signal
value, encoded as a variable-length integer, as the first bytes of the stream in
order to indicate how the remaining bytes on the stream are used.</t>
        <t>Clients and servers use the signal value 0x41 to open a bidirectional
WebTransport stream.  Following this is the associated session ID, encoded as a
variable-length integer; the rest of the stream is the application payload of
the WebTransport stream (<xref target="fig-bidi-client"/>).</t>
        <figure anchor="fig-bidi-client">
          <name>Bidirectional WebTransport stream format</name>
          <sourcecode type="drawing"><![CDATA[
Bidirectional Stream {
    Signal Value (i) = 0x41,
    Session ID (i),
    Stream Body (..)
}
]]></sourcecode>
        </figure>
        <t>This document reserves the special signal value 0x41 as a WT_STREAM frame type.
While it is registered as an HTTP/3 frame type to avoid collisions, WT_STREAM
lacks length and is not a proper HTTP/3 frame; it is an extension of HTTP/3
frame syntax that MUST be supported by any peer negotiating WebTransport.
Endpoints that implement this extension are also subject to additional frame
handling requirements.  Endpoints MUST NOT send WT_STREAM as a frame type on
HTTP/3 streams other than as the very first bytes sent by the initiator of a
bidirectional stream.  Receiving this frame type in any other circumstances MUST
be treated as a connection error of type H3_FRAME_UNEXPECTED.</t>
      </section>
      <section anchor="resetting-data-streams">
        <name>Resetting Data Streams</name>
        <t>A WebTransport endpoint can send a RESET_STREAM or a STOP_SENDING frame for a
WebTransport data stream.  Those signals are propagated by the WebTransport
implementation to the application.</t>
        <t>A WebTransport application MUST provide an error code for those operations.
Since WebTransport shares the error code space with HTTP/3, WebTransport
application errors for streams are limited to an unsigned 32-bit integer,
assuming values between 0x00000000 and 0xffffffff.  WebTransport
implementations MUST remap those error codes into the error range reserved
for WT_APPLICATION_ERROR, where 0x00000000 corresponds to 0x52e4a40fa8db,
and 0xffffffff corresponds to 0x52e5ac983162.  Note that there are
codepoints inside that range of form "0x1f * N + 0x21" that are reserved
by <xref section="8.1" sectionFormat="of" target="HTTP3"/>; those have to be skipped when mapping the
error codes (i.e., the two HTTP/3 error codepoints adjacent to a reserved
codepoint would map to two adjacent WebTransport application error
codepoints). An example pseudocode can be seen in <xref target="fig-remap-errors"/>.</t>
        <figure anchor="fig-remap-errors">
          <name>Pseudocode for converting between WebTransport application errors and HTTP/3 error codes</name>
          <artwork><![CDATA[
    first = 0x52e4a40fa8db
    last = 0x52e5ac983162

    def webtransport_code_to_http_code(n):
        return first + n + floor(n / 0x1e)

    def http_code_to_webtransport_code(h):
        assert(first <= h <= last)
        assert((h - 0x21) % 0x1f != 0)
        shifted = h - first
        return shifted - floor(shifted / 0x1f)
]]></artwork>
        </figure>
        <t>WebTransport data streams are associated with sessions through a header at the
beginning of the stream; resetting a stream might result in that data being
discarded when using a RESET_STREAM frame.  To prevent this, WebTransport
implementations MUST use the RESET_STREAM_AT frame <xref target="RESET-STREAM-AT"/> when
resetting a WebTransport data stream, with a Reliable Size set to the size of
the WebTransport header on that stream plus any offset provided by the
application (see "abort send side" in <xref section="4.3" sectionFormat="of" target="OVERVIEW"/>).  This
ensures reliable delivery of the ID field associating the data stream with a
WebTransport session, along with any data the application asked to deliver.</t>
        <t>An error code in the WT_APPLICATION_ERROR range MUST be delivered unchanged,
both by intermediaries forwarding on the wire and by endpoints delivering to
the application.  Upon receiving a RESET_STREAM, RESET_STREAM_AT, or
STOP_SENDING frame on a WebTransport stream, an intermediary MUST send the same
frame type, with the corresponding error code, to the next hop on that stream.
When forwarding a RESET_STREAM_AT frame, the intermediary MUST set the Reliable
Size so that at least the same amount of stream data after any WebTransport
header is delivered reliably; the size of that header can differ between hops.
If a RESET_STREAM, RESET_STREAM_AT, or STOP_SENDING frame is received with an
error code outside the range reserved for WT_APPLICATION_ERROR, the stream is
still considered reset, but the error code is not mapped to a WebTransport
application error code.  The WebTransport implementation SHOULD deliver this to
the application as a stream reset with no application error code.</t>
      </section>
      <section anchor="datagrams">
        <name>Datagrams</name>
        <t>Datagrams can be sent using HTTP Datagrams.  The WebTransport datagram payload
is sent unmodified in the "HTTP Datagram Payload" field of an HTTP Datagram
(<xref section="2.1" sectionFormat="of" target="HTTP-DATAGRAM"/>).  Note that the payload field directly
follows the Quarter Stream ID field, which is at the start of the QUIC DATAGRAM
frame payload and refers to the CONNECT stream that established the WebTransport
session.</t>
      </section>
      <section anchor="buffering-incoming">
        <name>Buffering Incoming Streams and Datagrams</name>
        <t>In WebTransport over HTTP/3, the client MUST wait for receipt of the server's
SETTINGS frame before establishing any WebTransport sessions by sending CONNECT
requests using the WebTransport upgrade token (see <xref target="establishing"/>).  This
ensures that the client will always know what versions of WebTransport can be
used on a given HTTP/3 connection.</t>
        <t>Clients can, however, send a SETTINGS frame, multiple WebTransport CONNECT
requests, WebTransport data streams, and WebTransport datagrams all within a
single flight.  As those can arrive out of order, a WebTransport server can
receive a stream or a datagram without a
corresponding session.  Similarly, a client can receive a server-initiated
stream or a datagram before receiving the CONNECT response headers from the
server.</t>
        <t>To handle this case, WebTransport endpoints SHOULD buffer streams and datagrams
until they can be associated with an established session.  To avoid resource
exhaustion, endpoints MUST limit the number of buffered streams and datagrams.
When the number of buffered streams is exceeded, a stream MUST be closed by
sending a RESET_STREAM and/or STOP_SENDING with the
<tt>WT_BUFFERED_STREAM_REJECTED</tt> error code.  When the number of buffered datagrams
is exceeded, a datagram MUST be dropped.  It is up to an implementation to
choose what stream or datagram to discard.</t>
        <t>Rejecting a buffered stream does not affect the session it was intended for.
Because buffering is not required and buffering limits can be reached, a client
that opens streams or sends datagrams without waiting for the 2xx response to
its CONNECT request needs to be prepared for them to be rejected or dropped.
The same applies to a server, since its streams and datagrams can reach the
client before the 2xx response does.  An endpoint can open new streams for the
session to resend any data that was rejected.</t>
      </section>
      <section anchor="interaction-with-the-http3-goaway-frame">
        <name>Interaction with the HTTP/3 GOAWAY frame</name>
        <t>HTTP/3 defines a graceful shutdown mechanism (<xref section="5.2" sectionFormat="of" target="HTTP3"/>) that
allows a peer to send a GOAWAY frame indicating that it will no longer accept
any new incoming requests or pushes.</t>
        <t>A client receiving GOAWAY cannot initiate CONNECT requests for new WebTransport
sessions on that HTTP/3 connection; it MUST open a new HTTP/3 connection to
initiate new WebTransport sessions with the same peer.</t>
        <t>An HTTP/3 GOAWAY frame is also a signal to applications to initiate shutdown for
all WebTransport sessions.  To shut down a single WebTransport session, either
endpoint can send a WT_DRAIN_SESSION (0x78ae) capsule.</t>
        <figure anchor="fig-wt_drain_session">
          <name>WT_DRAIN_SESSION Capsule Format</name>
          <artwork><![CDATA[
WT_DRAIN_SESSION Capsule {
  Type (i) = WT_DRAIN_SESSION,
  Length (i) = 0
}
]]></artwork>
        </figure>
        <t>After sending or receiving either a WT_DRAIN_SESSION capsule or a HTTP/3 GOAWAY
frame, an endpoint MAY continue using the session: it MAY open new WebTransport
streams and MAY send new datagrams.  The signal is intended for the application
using WebTransport, which is expected to attempt to gracefully terminate the
session as soon as possible.</t>
        <t>The WT_DRAIN_SESSION capsule is useful when an end-to-end WebTransport session
passes through an intermediary.  For example, when the origin server shuts
down, it sends a GOAWAY to the intermediary.  The intermediary can convert this
signal to a WT_DRAIN_SESSION capsule on the client-facing session, without
impacting other requests or sessions carried on that connection.</t>
      </section>
      <section anchor="use-of-keying-material-exporters">
        <name>Use of Keying Material Exporters</name>
        <t>WebTransport over HTTP/3 supports the use of TLS keying material exporters
<xref section="7.5" sectionFormat="of" target="RFC8446"/>.  Since the underlying QUIC connection can be shared
by multiple WebTransport sessions, WebTransport defines a mechanism for deriving
a TLS exporter that separates keying material for different sessions.  If the
application requests an exporter for a given WebTransport session with a
specified label and context, the resulting exporter MUST be a TLS exporter as
defined in <xref section="7.5" sectionFormat="of" target="RFC8446"/> with the label set to
"EXPORTER-WebTransport" and the context set to the serialization of the
"WebTransport Exporter Context" struct as defined below.</t>
        <figure anchor="fig-wt-exporter-context">
          <name>WebTransport Exporter Context struct</name>
          <artwork><![CDATA[
WebTransport Exporter Context {
  WebTransport Session ID (64),
  WebTransport Application-Supplied Exporter Label Length (8),
  WebTransport Application-Supplied Exporter Label (8..),
  WebTransport Application-Supplied Exporter Context Length (8),
  WebTransport Application-Supplied Exporter Context (..)
}
]]></artwork>
        </figure>
        <t>A TLS exporter API might permit the context field to be omitted.  In this case,
as with TLS 1.3, the WebTransport Application-Supplied Exporter Context becomes
zero-length if omitted.</t>
      </section>
    </section>
    <section anchor="flow-control">
      <name>Flow Control</name>
      <t>Flow control governs the amount of resources that can be consumed or data that
can be sent.  When using WebTransport over HTTP/3, endpoints can limit the
number of sessions that a peer can create on a single HTTP/3 connection via
rate limiting (see <xref target="flow-control-limit-sessions"/>), and the number of streams
that a peer can create within a session via flow control.  Endpoints can also
apply flow control to the amount of data that can be consumed by each session
and by each stream within a session.</t>
      <t>WebTransport over HTTP/3 provides a connection-level limit that governs the
number of sessions that can be created on an HTTP/3 connection (see
<xref target="flow-control-limit-sessions"/>).  It also provides session-level limits that
govern the number of streams that can be created in a session and limit the
amount of data that can be exchanged across all streams in each session (see
<xref target="flow-control-limit-streams"/>).</t>
      <t>The underlying QUIC connection provides connection and stream level flow
control.  The QUIC connection data limit defines the total amount of data that
can be sent across all WebTransport sessions and other non-WebTransport streams.
A QUIC stream's data limit controls the amount of data that can be sent on that
stream, WebTransport or otherwise (see <xref section="4" sectionFormat="of" target="RFC9000"/>).</t>
      <section anchor="flow-control-negotiate">
        <name>Negotiating the Use of Flow Control</name>
        <t>A WebTransport endpoint that allows a WebTransport session to share an
underlying transport connection with other WebTransport sessions MUST enable
flow control.  This prevents an application from consuming excessive resources
on a single session and starving traffic for other sessions
(see <xref target="security-considerations"/>).</t>
        <t>Flow control is enabled when both endpoints declare their intent to use flow
control by taking any of the following actions:</t>
        <ul spacing="normal">
          <li>
            <t>Sending SETTINGS_WT_INITIAL_MAX_STREAMS_UNI with any value other than "0".</t>
          </li>
          <li>
            <t>Sending SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI with any value other than "0".</t>
          </li>
          <li>
            <t>Sending SETTINGS_WT_INITIAL_MAX_DATA with any value other than "0".</t>
          </li>
        </ul>
        <t>If both endpoints take at least one of these actions, flow control is enabled,
and the limits described in the entirety of <xref target="flow-control"/> apply.</t>
        <t>Flow control can be enabled regardless of the number of WebTransport sessions a
server supports.</t>
        <t>If flow control is not enabled, clients MUST NOT attempt to establish more than
one simultaneous WebTransport session.  A server that receives more than one
session on an underlying transport connection when flow control is not enabled
MUST reset the excessive CONNECT streams with a <tt>H3_REQUEST_REJECTED</tt> status
(see <xref target="flow-control-limit-sessions"/>).</t>
        <t>Also, if flow control is not enabled, an endpoint MUST ignore receipt of any
flow control capsules (see <xref target="flow-control-capsules"/>), since the peer might not
have received SETTINGS at the time they were sent or packets might have been
reordered.</t>
      </section>
      <section anchor="flow-control-limit-sessions">
        <name>Limiting the Number of Simultaneous Sessions</name>
        <t>Servers SHOULD limit the rate of incoming WebTransport sessions on HTTP/3
connections to prevent excessive consumption of resources.  To do so, they have
multiple mechanisms available:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>H3_REQUEST_REJECTED</tt> error code defined in <xref section="8.1" sectionFormat="of" target="HTTP3"/>
indicates to the receiving HTTP/3 stack that the request was not processed in
any way.</t>
          </li>
          <li>
            <t>HTTP status code 429 indicates that the request was rejected due to rate
limiting <xref target="RFC6585"/>.  Unlike the previous method, this signal is directly
propagated to the application.</t>
          </li>
        </ul>
        <t>WebTransport servers can use rate limit header fields in responses to CONNECT
requests to signal quota policies and service limits to WebTransport clients
(see <xref target="I-D.ietf-httpapi-ratelimit-headers"/>).  This provides hints to clients
about how many sessions they can reasonably expect to be able to open.  An
endpoint that does not support pooling and flow control MUST NOT accept more
than one incoming WebTransport session at a time.</t>
      </section>
      <section anchor="flow-control-limit-streams">
        <name>Limiting the Number of Streams Within a Session</name>
        <t>The <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule (<xref target="WT_MAX_STREAMS"/>) establishes a limit on the
number of streams within a WebTransport session.  Like the QUIC MAX_STREAMS
frame (<xref section="19.11" sectionFormat="of" target="RFC9000"/>), this capsule has two types that provide
separate limits for unidirectional and bidirectional streams that a peer
initiates.</t>
        <t>Note that the CONNECT stream for the session is not included in either the
bidirectional or the unidirectional stream limits; the number of CONNECT streams
a client can open is limited by QUIC flow control's stream limits and any rate
limit that a WebTransport server enforces.</t>
        <t>The session-level stream limit applies in addition to the QUIC MAX_STREAMS
frame, which provides a connection-level stream limit.  New streams can only be
created within the session if both the stream- and the connection-level limit
permit, see <xref section="4.6" sectionFormat="of" target="RFC9000"/> for details on how QUIC stream limits
are applied.</t>
        <t>Unlike the QUIC MAX_STREAMS frame, there is no simple relationship between the
value in this frame and stream IDs in QUIC STREAM frames.  This especially
applies if there are other users of streams on the connection.</t>
        <t>The <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule (<xref target="WT_STREAMS_BLOCKED"/>) can be sent to indicate
that an endpoint was unable to create a stream due to the session-level stream
limit.</t>
        <t>Note that enforcing this limit requires reliable resets for stream headers so
that both endpoints can agree on the number of streams that are open.</t>
      </section>
      <section anchor="flow-control-limit-data">
        <name>Data Limits</name>
        <t>The <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule (<xref target="WT_MAX_DATA"/>) establishes a limit on the amount of
data that can be sent within a WebTransport session.  This limit counts all data
that is sent on streams of the corresponding type, excluding the stream header
(see <xref target="unidirectional-streams"/> and <xref target="bidirectional-streams"/>).  The stream
header is excluded from this limit so that this limit does not prevent the
sending of information that is essential in linking new streams to a specific
WebTransport session.</t>
        <t>For streams that were reset, implementing <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> requires that the QUIC
stack provide the WebTransport implementation with information about the final
size of streams; see <xref section="4.5" sectionFormat="of" target="RFC9000"/>.  This guarantees that both
endpoints agree on how much WebTransport session flow control credit was
consumed by the sender on that stream.</t>
        <t>The <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsule (<xref target="WT_DATA_BLOCKED"/>) can be sent to indicate that
an endpoint was unable to send data due to a limit set by the <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>
capsule.</t>
        <t>Because WebTransport over HTTP/3 uses a native QUIC stream for each WebTransport
stream, per-stream data limits are provided by QUIC natively
(see <xref section="4.1" sectionFormat="of" target="RFC9000"/>).  The WT_MAX_STREAM_DATA and
WT_STREAM_DATA_BLOCKED capsules
(Sections <xref target="I-D.ietf-webtrans-http2" section="6.6" sectionFormat="bare"/> and <xref target="I-D.ietf-webtrans-http2" section="6.9" sectionFormat="bare"/> of <xref target="I-D.ietf-webtrans-http2"/>) are not used and are
prohibited.  Endpoints MUST treat receipt of a WT_MAX_STREAM_DATA or a
WT_STREAM_DATA_BLOCKED capsule as a session error.</t>
      </section>
      <section anchor="flow-control-settings">
        <name>Flow Control SETTINGS</name>
        <t>Initial flow control limits can be exchanged via HTTP/3 SETTINGS
(<xref target="http3-settings"/>) by providing non-zero values for</t>
        <ul spacing="normal">
          <li>
            <t><iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> via SETTINGS_WT_INITIAL_MAX_STREAMS_UNI and
SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI</t>
          </li>
          <li>
            <t><iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> via SETTINGS_WT_INITIAL_MAX_DATA</t>
          </li>
        </ul>
        <section anchor="initial-unidirectional-stream-limit">
          <name>Initial Unidirectional Stream Limit</name>
          <t>The SETTINGS_WT_INITIAL_MAX_STREAMS_UNI setting indicates the initial value for
the unidirectional max stream limit, otherwise communicated by the
<iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule (see <xref target="WT_MAX_STREAMS"/>).  The default value for the
SETTINGS_WT_INITIAL_MAX_STREAMS_UNI setting is "0", indicating that the endpoint
needs to send <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules on each individual WebTransport session
before its peer is allowed to create any unidirectional streams within that
session.</t>
          <t>Note that this limit applies to all WebTransport sessions that use the HTTP/3
connection on which this SETTING is sent.</t>
        </section>
        <section anchor="initial-bidirectional-stream-limit">
          <name>Initial Bidirectional Stream Limit</name>
          <t>The SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI setting indicates the initial value for
the bidirectional max stream limit, otherwise communicated by the <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref>
capsule (see <xref target="WT_MAX_STREAMS"/>).  The default value for the
SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI setting is "0", indicating that the
endpoint needs to send <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules on each individual WebTransport
session before its peer is allowed to create any bidirectional streams within
that session.</t>
          <t>Note that this limit applies to all WebTransport sessions that use the HTTP/3
connection on which this SETTING is sent.</t>
        </section>
        <section anchor="initial-session-data-limit">
          <name>Initial Session Data Limit</name>
          <t>The SETTINGS_WT_INITIAL_MAX_DATA setting indicates the initial value for the
session data limit, otherwise communicated by the <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule (see
<xref target="WT_MAX_DATA"/>).  The default value for the SETTINGS_WT_INITIAL_MAX_DATA
setting is "0", indicating that the endpoint needs to send a <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule
within each session before its peer is allowed to send any stream data within
that session.</t>
          <t>Note that this limit applies to all WebTransport sessions that use the HTTP/3
connection on which this SETTING is sent.</t>
        </section>
      </section>
      <section anchor="flow-control-capsules">
        <name>Flow Control Capsules</name>
        <t>WebTransport over HTTP/3 uses several capsules for flow control, and all of
these capsules define special intermediary handling as described in
<xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  These capsules, referred to as the "flow
control capsules", are <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>, <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref>, <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref>, and
<iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref>.</t>
        <t>An endpoint MUST NOT wait for a <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> or <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule
before sending a <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> or <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule; doing so could result
in the sender being blocked for at least an entire round trip.  Endpoints
SHOULD send <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> and <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules as they consume data or
close streams (similar to the mechanism used in QUIC, see
<xref section="4.2" sectionFormat="of" target="RFC9000"/>).</t>
        <section anchor="flow-control-intermediaries">
          <name>Flow Control and Intermediaries</name>
          <t>Because flow control in WebTransport is hop-by-hop and does not provide an
end-to-end signal, intermediaries MUST consume flow control signals and express
their own flow control limits to the next hop.  The intermediary can send these
signals via HTTP/3 flow control messages, HTTP/2 flow control messages, or as
WebTransport flow control capsules, where appropriate.  Intermediaries are
responsible for storing any data for which they advertise flow control credit if
that data cannot be immediately forwarded to the next hop.</t>
          <t>In practice, an intermediary that translates flow control signals between
similar WebTransport protocols, such as between two HTTP/3 connections, can
often simply reexpress the same limits received on one connection directly on
the other connection, as long as each capsule it sends increases the
corresponding limit on that connection.</t>
          <t>An intermediary that does not want to be responsible for storing data that
cannot be immediately sent on its translated connection can ensure that it does
not advertise a higher flow control limit on one connection than the
corresponding limit on the translated connection.</t>
        </section>
        <section anchor="WT_MAX_STREAMS">
          <name>WT_MAX_STREAMS Capsule</name>
          <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> is introduced to inform
the peer of the cumulative number of streams of a given type it is permitted to
open.  A <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule with a type of 0x190B4D3F applies to
bidirectional streams, and a <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule with a type of 0x190B4D40
applies to unidirectional streams.</t>
          <t>Note that, because Maximum Streams is a cumulative value representing the total
allowed number of streams, including previously closed streams, endpoints
repeatedly send new <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules with increasing Maximum Streams
values as streams are opened.</t>
          <figure anchor="fig-wt_max_streams">
            <name>WT_MAX_STREAMS Capsule Format</name>
            <artwork><![CDATA[
WT_MAX_STREAMS Capsule {
  Type (i) = 0x190B4D3F..0x190B4D40,
  Length (i),
  Maximum Streams (i),
}
]]></artwork>
          </figure>
          <t><iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules contain the following field:</t>
          <dl>
            <dt>Maximum Streams:</dt>
            <dd>
              <t>A count of the cumulative number of streams of the corresponding type that
can be opened over the lifetime of the session. This value cannot
exceed 2<sup>60</sup>, as it is not possible to encode stream IDs larger
than 2<sup>62</sup>-1. Recipients of a capsule with a Maximum Streams
value larger than this limit MUST close the WebTransport session with a
WT_FLOW_CONTROL_ERROR error code.</t>
            </dd>
          </dl>
          <t>An endpoint MUST NOT open more streams than permitted by the current stream
limit set by its peer.  For instance, a server that receives a unidirectional
stream limit of 3 is permitted to open streams 3, 7, and 11, but not stream 15.</t>
          <t>Note that this limit includes streams that have been closed as well as those
that are open.</t>
          <t>If an endpoint receives an incoming stream for a session that would exceed the
advertised Maximum Streams value, it MUST close the WebTransport session with a
WT_FLOW_CONTROL_ERROR error code.</t>
          <t>Unlike in QUIC, where MAX_STREAMS frames can be delivered in any order,
<iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules are sent on the WebTransport session's connect stream
and are delivered in order.  If an endpoint receives a <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule
that does not increase the Maximum Streams value previously received, or the
corresponding initial value (SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI or
SETTINGS_WT_INITIAL_MAX_STREAMS_UNI) if no <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule of that type
has been received, it MUST close the WebTransport session with a
WT_FLOW_CONTROL_ERROR error code.</t>
          <t>The <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule defines special intermediary handling, as described
in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermediaries MUST consume <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref>
capsules for flow control purposes and MUST generate and send appropriate flow
control signals for their limits.</t>
          <t>Initial values for these limits MAY be communicated by sending non-zero values
for SETTINGS_WT_INITIAL_MAX_STREAMS_UNI and
SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI.</t>
        </section>
        <section anchor="WT_STREAMS_BLOCKED">
          <name>WT_STREAMS_BLOCKED Capsule</name>
          <t>A sender SHOULD send a <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule (type=0x190B4D43 or
0x190B4D44) when it wishes to open a stream but is unable to do so due to the
maximum stream limit set by its peer.  A <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule of type
0x190B4D43 is used to indicate reaching the bidirectional stream limit, and a
<iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule of type 0x190B4D44 is used to indicate reaching the
unidirectional stream limit.</t>
          <t>A <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule does not open the stream, but informs the peer that
a new stream was needed and the stream limit prevented the creation of the
stream.  A sender is not required to send <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsules, however
<iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsules can be used as input to tuning of flow control
algorithms and for debugging purposes.</t>
          <figure anchor="fig-wt_streams_blocked">
            <name>WT_STREAMS_BLOCKED Capsule Format</name>
            <artwork><![CDATA[
WT_STREAMS_BLOCKED Capsule {
  Type (i) = 0x190B4D43..0x190B4D44,
  Length (i),
  Maximum Streams (i),
}
]]></artwork>
          </figure>
          <t><iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsules contain the following field:</t>
          <dl>
            <dt>Maximum Streams:</dt>
            <dd>
              <t>A variable-length integer indicating the maximum number of streams allowed
at the time the capsule was sent. This value cannot exceed 2<sup>60</sup>,
as it is not possible to encode stream IDs larger than 2<sup>62</sup>-1.
Recipients of a capsule with a Maximum Streams value larger than this
limit MUST close the WebTransport session with a WT_FLOW_CONTROL_ERROR
error code.</t>
            </dd>
          </dl>
          <t>The <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule defines special intermediary handling, as
described in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermediaries MUST consume
<iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsules for flow control purposes and MUST generate and send
appropriate flow control signals for their limits.</t>
        </section>
        <section anchor="WT_MAX_DATA">
          <name>WT_MAX_DATA Capsule</name>
          <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> (type=0x190B4D3D) is
introduced to inform the peer of the maximum amount of data that can be sent on
the WebTransport session as a whole.</t>
          <t>This limit counts all data that is sent on streams of the corresponding type,
excluding the stream header (see <xref target="unidirectional-streams"/> and
<xref target="bidirectional-streams"/>).  For streams that were reset, implementing
<iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> requires that the QUIC stack provide the WebTransport implementation
with information about the final size of streams
(see <xref section="4.5" sectionFormat="of" target="RFC9000"/>).</t>
          <figure anchor="fig-wt_max_data">
            <name>WT_MAX_DATA Capsule Format</name>
            <artwork><![CDATA[
WT_MAX_DATA Capsule {
  Type (i) = 0x190B4D3D,
  Length (i),
  Maximum Data (i),
}
]]></artwork>
          </figure>
          <t><iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsules contain the following field:</t>
          <dl>
            <dt>Maximum Data:</dt>
            <dd>
              <t>A variable-length integer indicating the maximum amount of data that can be
sent on the entire session, in units of bytes.</t>
            </dd>
          </dl>
          <t>The sum of the lengths of Stream Body data sent on all streams associated with
this session MUST NOT exceed the Maximum Data value advertised by a receiver.
Note that capsules sent on the CONNECT stream, and the Signal Value, Stream
Type, and Session ID fields, are not included in this limit.  If an endpoint
receives Stream Body data in excess of this limit, it MUST close the
WebTransport session with a WT_FLOW_CONTROL_ERROR error code.</t>
          <t>Unlike in QUIC, where MAX_DATA frames can be delivered in any order, <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>
capsules are sent on the WebTransport session's connect stream and are delivered
in order.  If an endpoint receives a <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule with a Maximum Data
value that does not increase the Maximum Data value previously received, or the
value of SETTINGS_WT_INITIAL_MAX_DATA if no <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule has been
received, it MUST close the WebTransport session with a WT_FLOW_CONTROL_ERROR
error code.</t>
          <t>The <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule defines special intermediary handling, as described in
<xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermediaries MUST consume <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>
capsules for flow control purposes and MUST generate and send appropriate flow
control signals for their limits (see <xref target="flow-control-intermediaries"/>).</t>
          <t>The initial value for this limit MAY be communicated by sending a non-zero value
for SETTINGS_WT_INITIAL_MAX_DATA.</t>
        </section>
        <section anchor="WT_DATA_BLOCKED">
          <name>WT_DATA_BLOCKED Capsule</name>
          <t>A sender SHOULD send a <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsule (type=0x190B4D41) when it wishes
to send data but is unable to do so due to WebTransport session-level flow
control.  A sender is not required to send <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsules, however
<iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsules can be used as input to tuning of flow control
algorithms and for debugging purposes.</t>
          <figure anchor="fig-wt_data_blocked">
            <name>WT_DATA_BLOCKED Capsule Format</name>
            <artwork><![CDATA[
WT_DATA_BLOCKED Capsule {
  Type (i) = 0x190B4D41,
  Length (i),
  Maximum Data (i),
}
]]></artwork>
          </figure>
          <t><iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsules contain the following field:</t>
          <dl>
            <dt>Maximum Data:</dt>
            <dd>
              <t>A variable-length integer indicating the session-level limit at which
blocking occurred.</t>
            </dd>
          </dl>
          <t>The <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsule defines special intermediary handling, as described
in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermediaries MUST consume
<iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsules for flow control purposes and MUST generate and send
appropriate flow control signals for their limits (see
<xref target="flow-control-intermediaries"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="session-termination">
      <name>Session Termination</name>
      <t>A WebTransport session over HTTP/3 is terminated when either of the
following conditions is met:</t>
      <ul spacing="normal">
        <li>
          <t>the CONNECT stream is closed, either cleanly or abruptly, on either side; or</t>
        </li>
        <li>
          <t>a WT_CLOSE_SESSION capsule is either sent or received.</t>
        </li>
      </ul>
      <t>Upon learning that the session has been terminated, the endpoint MUST reset the
send side and abort reading on the receive side of all unidirectional and
bidirectional streams associated with the session (see
<xref section="2.4" sectionFormat="of" target="RFC9000"/>) using the WT_SESSION_GONE error code; it MUST NOT
send any new datagrams or open any new streams.  WT_SESSION_GONE is a
protocol-level error code rather than an application error code and indicates
that the reset was caused by session termination rather than by the peer
application.</t>
      <t>To terminate a session with a detailed error message, an application MAY provide
such a message for the WebTransport endpoint to send in an HTTP capsule
<xref target="HTTP-DATAGRAM"/> of type WT_CLOSE_SESSION (0x2843). The format of the capsule
SHALL be as follows:</t>
      <figure anchor="fig-wt_close_session">
        <name>WT_CLOSE_SESSION Capsule Format</name>
        <artwork><![CDATA[
WT_CLOSE_SESSION Capsule {
  Type (i) = WT_CLOSE_SESSION,
  Length (i),
  Application Error Code (32),
  Application Error Message (..8192),
}
]]></artwork>
      </figure>
      <t>WT_CLOSE_SESSION has the following fields:</t>
      <dl>
        <dt>Application Error Code:</dt>
        <dd>
          <t>A 32-bit error code provided by the application closing the session.</t>
        </dd>
        <dt>Application Error Message:</dt>
        <dd>
          <t>A UTF-8 encoded error message string provided by the application closing the
session.  The message takes up the remainder of the capsule, and its
length MUST NOT exceed 1024 bytes.  Senders that truncate an
application-supplied message MUST do so at a UTF-8 character boundary.</t>
          <t>If the Application Error Message exceeds 1024 bytes or is not valid UTF-8,
the receiver MUST reset the stream with code H3_MESSAGE_ERROR.</t>
        </dd>
      </dl>
      <t>Note that the Application Error Code field does not mirror the Error Code field
in QUIC's CONNECTION_CLOSE frame (<xref section="19.19" sectionFormat="of" target="RFC9000"/>) because
WebTransport application errors use a subset of the HTTP/3 Error Code space and
need to fit within those bounds, see <xref target="resetting-data-streams"/>.</t>
      <t>An endpoint that sends a WT_CLOSE_SESSION capsule MUST immediately send a FIN on
the CONNECT Stream.  The endpoint MAY also send a STOP_SENDING with error code
WT_SESSION_GONE to indicate it is no longer reading from the CONNECT stream.
The recipient MUST either close or reset the stream in response.  After receiving
the WT_CLOSE_SESSION capsule, the receiver MAY send a STOP_SENDING with error code
WT_SESSION_GONE.  If any additional
stream data is received on the CONNECT stream after receiving a WT_CLOSE_SESSION
capsule, the stream MUST be reset with code H3_MESSAGE_ERROR.</t>
      <t>Cleanly terminating a CONNECT stream without a WT_CLOSE_SESSION capsule SHALL be
semantically equivalent to terminating it with a WT_CLOSE_SESSION capsule that
has an error code of 0 and an empty error string.</t>
      <t>In some scenarios, an endpoint might want to send a WT_CLOSE_SESSION with
detailed close information and then immediately close the underlying QUIC
connection.  If the endpoint were to do both of those simultaneously, the peer
could potentially receive the CONNECTION_CLOSE before receiving the
WT_CLOSE_SESSION, thus never receiving the application error data contained in
the latter.  To avoid this, the endpoint SHOULD wait until all CONNECT streams
have been closed by the peer before sending the CONNECTION_CLOSE; this gives
WT_CLOSE_SESSION properties similar to that of the QUIC CONNECTION_CLOSE
mechanism as a best-effort mechanism of delivering application close metadata.</t>
    </section>
    <section anchor="considerations-for-future-versions">
      <name>Considerations for Future Versions</name>
      <t>Future versions of WebTransport that change the syntax of the CONNECT requests
used to establish WebTransport sessions will need to modify the upgrade token
used to identify WebTransport, allowing servers to offer multiple versions
simultaneously (see <xref target="upgrade-token"/>).</t>
      <t>Servers that support future incompatible versions of WebTransport signal that
support by changing the codepoint used for the SETTINGS_WT_ENABLED setting (see
<xref target="http3-settings"/>).  Clients can select the associated upgrade token, if
applicable, to use when establishing a new session, ensuring that servers will
always know the syntax in use for every incoming request.</t>
      <t>Changes to future stream formats require changes to the Unidirectional Stream
type (see <xref target="unidirectional-streams"/>) and Bidirectional Stream signal value
(see <xref target="bidirectional-streams"/>) to allow recipients of incoming frames to
determine the WebTransport version, and corresponding wire format, used for the
session associated with that stream.</t>
      <section anchor="negotiating-draft-version">
        <name>Negotiating the Draft Version</name>
        <t>[[RFC editor: please remove this section before publication.]]</t>
        <t>The draft version in use is negotiated using the codepoint for the
SETTINGS_WT_ENABLED setting.  Draft versions that introduce incompatible changes
define distinct SETTINGS_WT_ENABLED codepoints.  Both the client and the server
MUST send SETTINGS_WT_ENABLED with the codepoint corresponding to their
supported draft version.  An endpoint that supports multiple draft versions
sends SETTINGS_WT_ENABLED once for each distinct codepoint.  The highest version
supported by both endpoints is selected.</t>
        <t>A server that supports draft versions uses the SETTINGS_WT_ENABLED codepoints
that a client sends to select a version.  This is an exception to
<xref target="establishing"/>, which otherwise requires servers to ignore SETTINGS_WT_ENABLED
sent by a client.</t>
        <t>An endpoint that supports both a draft version and the version described in this
document also sends SETTINGS_WT_ENABLED with a value of "1" using the codepoint
in <xref target="http3-settings"/>.  A server that supports both selects a version as
follows:</t>
        <ul spacing="normal">
          <li>
            <t>If the client sends the codepoint in <xref target="http3-settings"/>, the server selects
the version described in this document.</t>
          </li>
          <li>
            <t>Otherwise, if the client sends codepoints for draft versions that the server
supports, the server selects the highest of those versions.</t>
          </li>
          <li>
            <t>Otherwise, the server selects the version described in this document.</t>
          </li>
        </ul>
        <t>For example, a client that supports only the version described in this document
does not send SETTINGS_WT_ENABLED, so the server selects that version.  A client
that supports only draft versions that the server does not support finds none of
its codepoints in the server's SETTINGS, so it treats the server as not
supporting WebTransport and never attempts to establish a session.</t>
        <t>Because data streams can arrive at the server before the CONNECT request that
establishes the associated session, and the wire format of the stream header
depends on the negotiated version, the server needs to know the client's version
before processing any incoming WebTransport streams.  For this reason, the
server MUST NOT process any incoming WebTransport requests until the client's
SETTINGS have been received.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>WebTransport over HTTP/3 satisfies all of the security requirements imposed by
<xref target="OVERVIEW"/> on WebTransport protocols, thus providing a secure framework for
client-server communication in cases when the application is potentially
untrusted.</t>
      <t>WebTransport over HTTP/3 requires explicit opt-in through the use of an HTTP/3
setting; this avoids potential protocol confusion attacks by ensuring the HTTP/3
server explicitly supports it.  It also requires the use of the Origin header
for browser traffic, providing the server with the ability to deny access to
Web-based applications that do not originate from a trusted origin.</t>
      <t>Just like HTTP traffic going over HTTP/3, WebTransport pools traffic to
different origins within a single connection.  Different origins imply different
trust domains, meaning that the implementations have to treat each transport as
potentially hostile towards others on the same connection.  One potential attack
is a resource exhaustion attack: since all of the WebTransport sessions share
both congestion control and flow control context, a single application
aggressively using up those resources can cause other sessions to stall.  A
WebTransport endpoint MUST implement flow control mechanisms if it allows a
WebTransport session to share the transport connection with other WebTransport
sessions.  WebTransport endpoints SHOULD implement a fairness scheme that
ensures that each session that shares a transport connection gets a reasonable
share of controlled resources; this applies both to sending data and to opening
new streams.</t>
      <t>When flow control is not enabled, a WebTransport session is limited only by the
stream and data limits of the underlying QUIC connection.  The session can use
all of that capacity, which prevents other HTTP requests on the same connection
from making progress.  Because HTTP responses and the QPACK streams use the same
connection-level flow control, an application that waits for an HTTP response
before reading data from the session can deadlock.  An endpoint that sends other
HTTP requests on the same connection can avoid this by enabling flow control, or
by using a separate connection for the WebTransport session.</t>
      <t>An application could attempt to exhaust resources by opening too many
WebTransport sessions at once.  In cases when the application is untrusted, a
WebTransport client SHOULD limit the number of outgoing sessions it will open.</t>
      <t>Note that the security considerations of HTTP/3 <xref target="HTTP3"/> apply to WebTransport
over HTTP/3.  In particular, the denial-of-service considerations in
<xref section="10.5" sectionFormat="of" target="HTTP3"/> are relevant.  WebTransport extends HTTP/3 with
additional features that have legitimate uses but can become a burden when they
are used unnecessarily or to excess.</t>
      <t>WebTransport introduces new interaction modes that permit either endpoint to
send streams and datagrams to its peer.  This is particularly novel for clients,
which previously had limited exposure to unsolicited server-initiated traffic
beyond server push (see <xref section="4.6" sectionFormat="of" target="HTTP3"/>).  An endpoint that does not
monitor use of these features exposes itself to a risk of denial-of-service
attack.  Implementations SHOULD track the use of WebTransport features, such as
the number of incoming streams and datagrams, and set limits on their use.  An
endpoint MAY treat activity that is suspicious as a connection error of type
H3_EXCESSIVE_LOAD.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers an upgrade token (<xref target="upgrade-token"/>), HTTP/3
settings (<xref target="http3-settings"/>), an HTTP/3 stream type
(<xref target="iana-stream-type"/>), an HTTP/3 error code (<xref target="iana-error-code"/>),
and an HTTP header field (<xref target="iana-http"/>).</t>
      <section anchor="upgrade-token">
        <name>Upgrade Token Registration</name>
        <t>The following entry is added to the "Hypertext Transfer Protocol (HTTP) Upgrade
Token Registry" registry established by Section 16.7 of <xref target="HTTP"/>.</t>
        <t>The "webtransport-h3" label identifies HTTP/3 used as a protocol for
WebTransport:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>webtransport-h3</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>WebTransport over HTTP/3</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="http3-settings">
        <name>HTTP/3 SETTINGS Parameter Registration</name>
        <t>The following entry is added to the "HTTP/3 Settings" registry established by
<xref target="HTTP3"/>:</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t>SETTINGS_WT_ENABLED</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x20b8933b</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Setting Name:</dt>
          <dd>
            <t>SETTINGS_WT_INITIAL_MAX_STREAMS_UNI</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b64</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Setting Name:</dt>
          <dd>
            <t>SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b65</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Setting Name:</dt>
          <dd>
            <t>SETTINGS_WT_INITIAL_MAX_DATA</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b61</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
        </dl>
      </section>
      <section anchor="frame-type-registration">
        <name>Frame Type Registration</name>
        <t>The following entry is added to the "HTTP/3 Frame Type" registry established by
<xref target="HTTP3"/>:</t>
        <t>The <tt>WT_STREAM</tt> frame is reserved for the purpose of avoiding
collision with WebTransport HTTP/3 extensions:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x41</t>
          </dd>
          <dt>Frame Type:</dt>
          <dd>
            <t>WT_STREAM</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-stream-type">
        <name>Stream Type Registration</name>
        <t>The following entry is added to the "HTTP/3 Stream Type" registry established by
<xref target="HTTP3"/>:</t>
        <t>The "WebTransport stream" type allows unidirectional streams to be used by
WebTransport:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x54</t>
          </dd>
          <dt>Stream Type:</dt>
          <dd>
            <t>WebTransport stream</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Sender:</dt>
          <dd>
            <t>Both</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-error-code">
        <name>HTTP/3 Error Code Registration</name>
        <t>The following entries are added to the "HTTP/3 Error Code" registry established
by <xref target="HTTP3"/>:</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t>WT_BUFFERED_STREAM_REJECTED</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x3994bd84</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>WebTransport data stream rejected due to lack of associated session.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>WT_SESSION_GONE</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x170d7b68</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>WebTransport data stream aborted because the associated WebTransport session
has been closed.  Also used to indicate that the endpoint is no longer
reading from the CONNECT stream.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>WT_FLOW_CONTROL_ERROR</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x045d4487</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>WebTransport session aborted because a flow control error was encountered.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>WT_ALPN_ERROR</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x0817b3dd</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>WebTransport session aborted because application protocol negotiation failed.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>WT_REQUIREMENTS_NOT_MET</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x212c0d48</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>HTTP/3 connection closed because the features required for WebTransport are
not supported.  Either the client or server is missing required SETTINGS or
transport parameters needed for WebTransport.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
        </dl>
        <t>In addition, the following range of entries is registered:</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t>WT_APPLICATION_ERROR</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x52e4a40fa8db to 0x52e5ac983162 inclusive, with the exception of
the codepoints of form 0x1f * N + 0x21.</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>WebTransport application error codes.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-types">
        <name>Capsule Types</name>
        <t>The following entries are added to the "HTTP Capsule Types" registry established
by <xref target="HTTP-DATAGRAM"/>:</t>
        <t>The <tt>WT_CLOSE_SESSION</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x2843</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t>WT_CLOSE_SESSION</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_DRAIN_SESSION</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x78ae</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t>WT_DRAIN_SESSION</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>provisional (when this document is approved this will become permanent)</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_MAX_STREAMS</tt> capsule:</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3F..0x190B4D40</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_STREAMS_BLOCKED</tt> capsule:</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D43..0x190B4D44</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_MAX_DATA</tt> capsule:</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3D</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_DATA_BLOCKED</tt> capsule:</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D41</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-http">
        <name>Protocol Negotiation HTTP Header Fields</name>
        <t>The following HTTP header fields are used for negotiating a protocol
(<xref target="protocol-negotiation"/>).  These are added to the "HTTP Field Name" registry
established in <xref section="18.4" sectionFormat="of" target="HTTP"/>:</t>
        <t>The <tt>WT-Available-Protocols</tt> field:</t>
        <dl spacing="compact">
          <dt>Field Name:</dt>
          <dd>
            <t>WT-Available-Protocols</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Structured Type:</dt>
          <dd>
            <t>List</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="protocol-negotiation"/></t>
          </dd>
          <dt>Comments:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT-Protocol</tt> field:</t>
        <dl spacing="compact">
          <dt>Field Name:</dt>
          <dd>
            <t>WT-Protocol</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Structured Type:</dt>
          <dd>
            <t>Item</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="protocol-negotiation"/></t>
          </dd>
          <dt>Comments:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-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="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="6" month="July" year="2026"/>
            <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 is optional.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-13"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <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="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="RFC9000">
          <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>
        <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="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <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="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="RFC9220">
          <front>
            <title>Bootstrapping WebSockets with HTTP/3</title>
            <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection is equally applicable to HTTP/3, but the HTTP-version-specific details need to be specified. This document describes how the mechanism is adapted for HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9220"/>
          <seriesInfo name="DOI" value="10.17487/RFC9220"/>
        </reference>
        <reference anchor="HTTP-DATAGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
        <reference anchor="QUIC-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="RESET-STREAM-AT">
          <front>
            <title>QUIC Stream Resets with Partial Delivery</title>
            <author fullname="Marten Seemann" initials="M." surname="Seemann">
         </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <date day="6" month="September" year="2026"/>
            <abstract>
              <t>   QUIC defines a RESET_STREAM frame to abort sending on a stream.  When
   a sender resets a stream, it also stops retransmitting STREAM frames
   for this stream in the event of packet loss.  On the receiving side,
   there is no guarantee that any data sent on that stream is delivered.

   This document defines a new QUIC frame, the RESET_STREAM_AT frame,
   that allows resetting a stream, while guaranteeing delivery of stream
   data up to a certain byte offset.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-reliable-stream-reset-11"/>
        </reference>
        <reference anchor="HTTP">
          <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="RFC8441">
          <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="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </reference>
        <reference anchor="RFC9218">
          <front>
            <title>Extensible Prioritization Scheme for HTTP</title>
            <author fullname="K. Oku" initials="K." surname="Oku"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes a scheme that allows an HTTP client to communicate its preferences for how the upstream server prioritizes responses to its requests, and also allows a server to hint to a downstream intermediary how its responses should be prioritized when they are forwarded. This document defines the Priority header field for communicating the initial priority in an HTTP version-independent manner, as well as HTTP/2 and HTTP/3 frames for reprioritizing responses. These share a common format structure that is designed to provide future extensibility.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9218"/>
          <seriesInfo name="DOI" value="10.17487/RFC9218"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9308">
          <front>
            <title>Applicability of the QUIC Transport Protocol</title>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document discusses the applicability of the QUIC transport protocol, focusing on caveats impacting application protocol development and deployment over QUIC. Its intended audience is designers of application protocol mappings to QUIC and implementors of these application protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9308"/>
          <seriesInfo name="DOI" value="10.17487/RFC9308"/>
        </reference>
        <reference anchor="ORIGIN">
          <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="WEBTRANS-H2">
          <front>
            <title>WebTransport over HTTP/2</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</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="Woo Xie" initials="W." surname="Xie">
              <organization>Meta</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <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 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-15"/>
        </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="I-D.ietf-httpapi-ratelimit-headers">
          <front>
            <title>RateLimit header fields for HTTP</title>
            <author fullname="Roberto Polli" initials="R." surname="Polli">
              <organization>Team Digitale, Italian Government</organization>
            </author>
            <author fullname="Alex Martínez Ruiz" initials="A. M." surname="Ruiz">
              <organization>Red Hat</organization>
            </author>
            <author fullname="Darrel Miller" initials="D." surname="Miller">
              <organization>Microsoft</organization>
            </author>
            <date day="23" month="May" year="2026"/>
            <abstract>
              <t>   This document defines the RateLimit-Policy and RateLimit HTTP header
   fields for servers to advertise their quota policies and the current
   service limits, thereby allowing clients to avoid being throttled.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-ratelimit-headers-11"/>
        </reference>
        <reference anchor="I-D.ietf-webtrans-http2">
          <front>
            <title>WebTransport over HTTP/2</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</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="Woo Xie" initials="W." surname="Xie">
              <organization>Meta</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <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 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-15"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V9a3fcRnbg9/oVGPrsGWnSTYsiZctSZjO0RNnMSJQiUuPk
THwosBtNYtUN9AJoShzF+9v3PqtuFYAm5WSSGZ+TjNgA6nHr1n0/ptOp68pu
WTzJfiouzpq8atd102X1ddFkP56dvfl63+UXF01xHb8w/XHfzetZla/gy3mT
L7ppWXSL6cfiosN3plddt96f7n3rqs3qomieuHneFU/crK7aomo37ZOsazaF
g2H33QweXdbNzZOs7eYub4r8SbYDs2V5Nc+Oq65oqqLL/Nw77uMlrObo+7O3
hyen7rqoNjByll029WbNX5p3s6y7WRf4c918KKvL7Ad8DX9f5eUSftcl4+t/
wE3s1s0lPs+b2RU8x520T77+Gl/Hn8rrYldf+xp/+PqiqT+2xdd2oK9xgMuy
u9pcwBAMmksPna9HIYafLQEcbWdmTj/f5YF3y3p8oK+/uqx3R5/uXnWr5Y77
UNx8rJs5Am+a2eW7fNNd1Q09gP/LsrKCEzvczV40ZTUvlkv6kU//cJlX8e8A
mCfZq6LL6a+C4Zwv8JU/LC52Z/UqHvdoN/tjWVVF3phhj5pyFv1Mox6u18sC
cGK2a8cuPvB7f8jxcX+CP+1mf8rbclkW12aGP5Wzrm7iJzTJD3V9uSzsBNf4
zvX1Hy7pCU3gqrpZ5R1gwxPnymph/ppOp1l+0QI0Z51zY/cqK9sszy4AKIiV
9SLrror4Eq6buqtn9TJbNLBgOKkP7vPn37z+09HbPx0f/fT74+nz3fhscfTr
svj4yy9ZV+s08An+a//3b188+25v7+CXX3az7LhzMPp1OS/arN2saTrYQrap
ynnZFLOurKt8CfcRLuOqncAyB3+GC4oXO79s+M/lMlttll0Jp/CpmGcfAU/L
ijbWwg50RUAEKh4LVmJ37Ioqv1jCkvAcSyAL8Eo2g8Opuha/QpCWFQx8caPQ
ytpitmnK7iZb1YCAsG+gMasV7AOpCq0AoNwUqxr+ssO2ACo4i02L0M95mMKu
3vnbsMtHuirnc0AL9xXSpKaeb2gLzsmu/kxQ/pmP1R/dvFjQimHGrl7jMf/L
u+NneCh4HA8ePMCzusq7bJZXzs9OkIJV/98NUIKWsSbnLyPgnV3BbECHNysA
kcwF07tVMbvKq7Jd0aH6YXGrVV1NaXQ8N4aP4mMFc6xyGL6RJdWE1q2jt8bR
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
umKNIOH25G1vZ/SpJgFYasmpnpFZxCS/hfHJw3lbjxLUe3yo2jK/KDhsH+lE
8UnSPX1vlTC2SpDJlvIQyZoUjUlOJDAdnlNqp+0c/eub12/Pjt5O7YJ3fG6u
LCsyUBO0JMxXNG8XtzNUfMOaQPj5TsadpGwQOxcREP6w7WNiEtEbNtTjmwOK
9Yie22oap9rD1A/7kvavbOXxr/v83uPd3S/9Uvfzq6fWAUIoi2GEU8WJqZ7Z
UKPJ3lh8MMQQY8w6fHMsfpg1kv4uQgdbdKD2wchaj5F0VmwOTjiHo+7t7g+U
n7vbbi+wkkHRur8UTe2jlBZ+WszUeoEBiM+4EbNzL2x370ukcVIQL5iOVaGN
u3Gj8XSzEh1BJW1nTIyqB4518lN7VRwF7DVjF3RH4y7LOxWeTXua2ohlfTHz
usxdiH7GtYjJCRubT2XrUw5w1pko5k6vtVkIixluZB29fEiM07ft06M4G21H
5zhFNmqzrtEZ/gyCLpOCHx0qqFapAKBOFvotuJHsuraVwffh6jZeBjDpulj6
s4FVGEwZPShdqcTg1CMtziS0dvtpsBGA2zr6zuySIWIWxzM7Xt3w4Q2urZfF
GtBwyxmEPPJ81tQtG+y8KaaKzmXbNiV6SNrfbJUB/OaTim1y0gwKnMMFlDtT
67b5hvbCm7TdNbq6w8y4/pbtxba7HSkW4NubV3A+A6430EsPbafQ37Z2RbL0
lA714K8VAWiBg8UAMMirkwqraVW+A1+agFLBJKXhxITh4fQiJFqimX3+KjpF
X4JtS/wXUwzV/gflHbQGcBPFyrbvDiWu0xyvgQby/gRIAuKmES6hQNLgj7z8
JJJZUY1MrExbWKLCMibldegf3zpLbe2VQW/Ktax4gYVBFwp9vyzt1qHN66dx
8QQ+hIgjmYblpKsk7QQ1eL6jtk5Szkui6O0tIAd//kFdGeIBCWnHbAlqqaXC
qWi5tkHA8cnx2fHhy/NXh/8qps/T83cnx8H7Lh0WQgDkzoOd3S8Y7Pvj5/8F
o6H76rZR0C+bNmXMPxTBeRwqvlB5uo51icXwqXD4GUnKTH+TTghaeYlzKWLy
h3n6yPrSM1fqKufeLxoZaPoI+fEJsqKm8a7TLaDtS7cRd4kYbVG1YnMl3FCE
UluiBpZXBZbQHFqKrRcYFxXwAyG4vYWAWeStl59iCMY34yQsUYMFwiWOvZah
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
9xUfd8Xqv3zFbjqdZhcYm/T/AVmG2dgwFwEA

-->

</rfc>
