<?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-http2-16" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="WebTransport-H2">WebTransport over HTTP/2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http2-16"/>
    <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>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author initials="V." surname="Vasiliev" fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <author initials="G." surname="Xie" fullname="Guowu Xie">
      <organization>Meta</organization>
      <address>
        <email>woo@fb.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 74?>

<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>
    <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-http2/#go.draft-ietf-webtrans-http2.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-webtrans-http2/"/>.
      </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-http2"/>.</t>
    </note>
  </front>
  <middle>
    <?line 82?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>WebTransport <xref target="OVERVIEW"/> is designed to provide generic communication
capabilities to Web clients that use HTTP/3 <xref target="HTTP3"/>.  The HTTP/3 WebTransport
protocol <xref target="WEBTRANSPORT-H3"/> allows Web clients to use QUIC <xref target="QUIC"/> features
such as streams or datagrams <xref target="DATAGRAM"/>.  However, there are some
environments where QUIC cannot be deployed.</t>
      <t>This document defines a protocol that provides all of the core functions of
WebTransport using HTTP semantics. This includes unidirectional streams,
bidirectional streams, and datagrams.</t>
      <t>By relying only on generic HTTP semantics, this protocol can be deployed over
multiple HTTP versions.  This document defines negotiation for HTTP/2 <xref target="HTTP2"/>
as the current most common TCP-based fallback to HTTP/3.  In some cases, the
same capsule-based protocol can also be used over HTTP/3, as described in
<xref section="2.1.2" sectionFormat="of" target="WEBTRANSPORT-H3"/>.</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/2 servers are distinguished here as two separate
roles: an HTTP/2 server terminates HTTP/2 connections, while a WebTransport
server is an application that accepts WebTransport sessions, accessed via an
HTTP/2 server, possibly through zero or more intermediaries.</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.</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/2 connection is established, the server sends a
SETTINGS_WT_ENABLED setting with a value of "1" to indicate that
it supports WebTransport over HTTP/2. Note that the client does
not need to send any value to indicate support for WebTransport; clients
indicate support for WebTransport by using the "webtransport" upgrade token in
CONNECT requests establishing WebTransport sessions (see <xref target="upgrade-token"/>).</t>
      <t>A client initiates a WebTransport session by sending an extended CONNECT request
<xref target="RFC8441"/>. If the server accepts the request, a WebTransport session is
established. The stream that carries the CONNECT request is used to exchange
bidirectional data for the session. This stream will be referred to as a
<em>CONNECT stream</em>.  The stream ID of a CONNECT stream, which will be referred to
as a <em>Session ID</em>, is used to uniquely identify a given WebTransport session
within the connection.  WebTransport using HTTP/2 uses extended CONNECT with the
<tt>webtransport</tt> HTTP Upgrade Token (<xref target="upgrade-token"/>).  This Upgrade Token uses
the Capsule Protocol as defined in <xref target="HTTP-DATAGRAM"/>.</t>
      <t>After the session is established, endpoints exchange WebTransport messages using
the Capsule Protocol on the bidirectional CONNECT stream, the "data stream" as
defined in <xref section="3.1" sectionFormat="of" target="HTTP-DATAGRAM"/>.</t>
      <t>Within this stream, <em>WebTransport streams</em> and <em>WebTransport datagrams</em> are
multiplexed.  In HTTP/2, WebTransport capsules are carried in HTTP/2 DATA
frames. Multiple independent WebTransport sessions can share a connection if the
HTTP version supports that, as HTTP/2 does.</t>
      <t>WebTransport capsules closely mirror a subset of QUIC frames and provide the
essential WebTransport features.  Within a WebTransport session, endpoints can
create and use bidirectional or unidirectional streams with no additional round
trips using the <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule.</t>
      <t>Stream creation and data flow on streams uses flow control mechanisms modeled on
those in QUIC. Flow control is managed using the WebTransport capsules:
<iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>, <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_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>,
<iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref>, and <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref>. Flow control for the CONNECT
stream as a whole, as provided by the HTTP version in use, applies in addition
to any WebTransport-session-level flow control.</t>
      <t>WebTransport streams can be aborted using a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule and a
receiver can request that a sender stop sending with a <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> capsule.</t>
      <t>A WebTransport session is terminated when the CONNECT stream that created it is
closed. This implicitly closes all WebTransport streams that were multiplexed
over that CONNECT stream.</t>
    </section>
    <section anchor="session-establishment-and-termination">
      <name>Session Establishment and Termination</name>
      <t>A WebTransport session is a communication context between a client and server
<xref target="OVERVIEW"/>. This section describes how sessions begin and end.</t>
      <section anchor="setting">
        <name>Establishing a WebTransport-Capable HTTP/2 Connection</name>
        <t>A WebTransport-Capable HTTP/2 connection requires the server to signal support
for WebTransport over HTTP/2 using a setting.</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: "webtransport".  Clients MUST
treat values greater than "1" as a connection error of type PROTOCOL_ERROR
(<xref section="5.4.1" sectionFormat="of" target="HTTP2"/>).  Clients MUST NOT attempt to establish
WebTransport sessions with the "webtransport" token until they have received
the setting indicating WebTransport support from the server.</t>
        <t>The SETTINGS_WT_ENABLED setting can be updated during the lifetime of the
HTTP/2 connection, as described in <xref section="6.5.3" sectionFormat="of" target="HTTP2"/>.  Whether the
server supports WebTransport for a given CONNECT request is determined by the
most recently acknowledged value of SETTINGS_WT_ENABLED at the time the
request is sent.  If a server disables WebTransport after previously accepting
it, this does not affect active sessions, it only prevents the creation of
new sessions.</t>
        <t>WebTransport over HTTP/2 uses extended CONNECT as defined in <xref target="RFC8441"/>,
which defines the SETTINGS_ENABLE_CONNECT_PROTOCOL setting.  The server MUST
send the SETTINGS_ENABLE_CONNECT_PROTOCOL setting with a value of "1" in its
SETTINGS frame.  The client MUST NOT send a WebTransport request until it has
received the setting indicating extended CONNECT support from the server.</t>
      </section>
      <section anchor="creating-a-new-session">
        <name>Creating a New Session</name>
        <t>As WebTransport sessions are established over HTTP, 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 client can send an HTTP CONNECT
request. The <tt>:protocol</tt> pseudo-header field (<xref target="RFC8441"/>) MUST be set to
<tt>webtransport</tt> (<xref target="upgrade-token"/>). The <tt>:scheme</tt> field MUST be <tt>https</tt>. Both
the <tt>:authority</tt> and the <tt>:path</tt> value MUST be set; those fields indicate the
desired WebTransport server. In a Web context, the request MUST include an
<tt>Origin</tt> header field <xref target="ORIGIN"/> that includes the origin of the site that
requested the creation of the session.</t>
        <t>Upon receiving an extended CONNECT request with a <tt>:protocol</tt> field set to
<tt>webtransport</tt>, the HTTP 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>A WebTransport session is established when the server sends a 2xx response. A
server generates that response from the request header, not from the contents of
the request. To enable clients to resend data when attempting to re-establish a
session that was rejected by a server, a server MUST NOT process any capsules on
the request stream unless it accepts the WebTransport session.</t>
        <t>A client MAY optimistically send any WebTransport capsules associated with a
CONNECT request, without waiting for a response, to the extent allowed by flow
control. This can reduce latency for data sent by a client at the start of a
WebTransport session. For example, a client might choose to send datagrams or
flow control updates before receiving any response from the server.</t>
      </section>
      <section anchor="application-protocol-negotiation">
        <name>Application Protocol Negotiation</name>
        <t>WebTransport over HTTP/2 offers a subprotocol negotiation mechanism, similar to
TLS Application-Layer Protocol Negotiation Extension (ALPN) <xref target="RFC7301"/>; the
intent is to simplify porting pre-existing protocols that rely on this type of
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> enumerates the possible protocols
in preference order. 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. 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 defined in
<xref section="3.3" sectionFormat="of" target="WEBTRANSPORT-H3"/>.</t>
      </section>
      <section anchor="errors">
        <name>Session Termination and Error Handling</name>
        <t>A WebTransport session over HTTP/2 is terminated when either endpoint closes the
stream associated with the CONNECT request that initiated the session.  Before
closing the stream, either endpoint can send a WT_CLOSE_SESSION capsule
(<xref target="WT_CLOSE_SESSION_CAPSULE"/>) with an application error code and message to
convey additional information about the reasons for closing the session.
Resetting the CONNECT stream also terminates the session, without providing
an application-level signal, though there will be an HTTP/2 error code.</t>
        <t>Session errors result in the termination of a session.  This document reserves
the following HTTP/2 error codes for use with reporting WebTransport errors:</t>
        <dl>
          <dt>WT_ERROR (0xTBD):</dt>
          <dd>
            <t>This generic error can be used for errors that do not have more specific error
codes.</t>
          </dd>
          <dt>WT_STREAM_STATE_ERROR (0xTBD):</dt>
          <dd>
            <t>A stream-related capsule identified a stream that was in an invalid state.</t>
          </dd>
          <dt>WT_FLOW_CONTROL_ERROR (0xTBD):</dt>
          <dd>
            <t>A flow control limit was violated.</t>
          </dd>
        </dl>
        <t>Prior to terminating a stream with an error, a WT_CLOSE_SESSION capsule with an
application-specified error code MAY be sent.</t>
        <t>Session errors do not necessarily result in any change of HTTP/2 connection
state, except that an endpoint might choose to terminate a connection in
response to stream errors; see <xref section="5.4" sectionFormat="of" target="HTTP2"/>.</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.  WebTransport over HTTP/2 allows a server to limit the number of
sessions that a client can create on a single connection; see
<xref target="flow-control-limit-sessions"/>.</t>
      <t>For data, there are five applicable levels of flow control for data that is sent
or received using WebTransport over HTTP/2:</t>
      <ol spacing="normal" type="1"><li>
          <t>TCP flow control.</t>
        </li>
        <li>
          <t>HTTP/2 connection flow control, which governs the total amount of data in
DATA frames for all HTTP/2 streams.</t>
        </li>
        <li>
          <t>HTTP/2 stream flow control, which limits the data on a single HTTP/2 stream.
For a WebTransport session, this includes all capsules, including those that are
exempt from WebTransport session-level flow control.</t>
        </li>
        <li>
          <t>WebTransport session-level flow control, which limits the total amount of
stream data that can be sent or received on streams within the WebTransport
session. Note that this does not limit other types of capsules within a
WebTransport session, such as control messages or datagrams.</t>
        </li>
        <li>
          <t>WebTransport stream flow control, which limits data on individual streams
within a session.</t>
        </li>
      </ol>
      <t>TCP and HTTP/2 define the first three levels of flow control. This document
defines the final two.</t>
      <section anchor="flow-control-limit-sessions">
        <name>Limiting the Number of Simultaneous Sessions</name>
        <t>HTTP/2 defines a SETTINGS_MAX_CONCURRENT_STREAMS parameter
<xref section="6.5.2" sectionFormat="of" target="HTTP2"/> that allows the server to limit the maximum number of
concurrent streams on a single HTTP/2 session, which also limits the number of
WebTransport sessions on that connection.  Servers that wish to limit the rate
of incoming WebTransport sessions on any particular HTTP/2 session have multiple
mechanisms:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>REFUSED_STREAM</tt> error code defined in <xref section="8.7" sectionFormat="of" target="HTTP2"/> indicates
to the receiving HTTP/2 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>
      </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 section="5.6.2" sectionFormat="of" target="WEBTRANSPORT-H3"/>) allows each
endpoint to limit the number of streams its peer is permitted to open as part of
a WebTransport session.  There is a separate limit for bidirectional streams and
for unidirectional streams.  Note that, unlike WebTransport over HTTP/3
<xref target="WEBTRANSPORT-H3"/>, because the entire WebTransport session is contained within
HTTP/2 DATA frames on a single HTTP/2 stream, this limit is the only mechanism
for an endpoint to limit the number of WebTransport streams that its peer can
open on a session.</t>
      </section>
      <section anchor="flow-control-initial">
        <name>Initial Flow Control Limits</name>
        <t>To allow stream data to be exchanged in the same flight as the extended CONNECT
request that establishes a WebTransport session, initial flow control limits can
be exchanged via HTTP/2 SETTINGS (<xref target="flow-control-settings"/>).  Initial values
for the flow control limits can also be exchanged via the <tt>WebTransport-Init</tt>
header field on the extended CONNECT request (<xref target="flow-control-header"/>).</t>
        <t>The limits communicated via HTTP/2 SETTINGS apply to all WebTransport sessions
opened on that HTTP/2 connection.  Limits communicated via the
<tt>WebTransport-Init</tt> header field apply only to the WebTransport session
established by the extended CONNECT request carrying that field.</t>
        <t>If both the SETTINGS and the header field are present when a WebTransport
session is established, the endpoint MUST use the greater of the two values for
each corresponding initial flow control value.  Endpoints sending the SETTINGS
and also including the header field SHOULD ensure that the header field values
are greater than or equal to the values provided in the SETTINGS.</t>
        <section anchor="flow-control-settings">
          <name>Flow Control SETTINGS</name>
          <t>Initial flow control limits can be exchanged via HTTP/2 SETTINGS
(<xref target="h2-settings"/>) by providing non-zero values for</t>
          <ul spacing="normal">
            <li>
              <t><iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> via <iref item="SETTINGS_WT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WT_INITIAL_MAX_DATA" format="none">SETTINGS_WT_INITIAL_MAX_DATA</xref></t>
            </li>
            <li>
              <t><iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> via <iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI</xref>,
<iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL</xref>, and
<iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE</xref></t>
            </li>
            <li>
              <t><iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> via <iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_UNI</xref> and
<iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI</xref></t>
            </li>
          </ul>
          <t>WebTransport SETTINGS can be updated during the lifetime of the HTTP/2
connection.  Updated values take effect for new sessions once they have been
acknowledged by the peer, as described in <xref section="6.5.3" sectionFormat="of" target="HTTP2"/>.</t>
          <t>Because SETTINGS frames and their acknowledgements can be in flight when a
CONNECT request or response is exchanged, the initial flow control limits for
a new session are determined per-direction:</t>
          <ul spacing="normal">
            <li>
              <t>For SETTINGS sent by the server, the initial limits are those most recently
acknowledged immediately before the CONNECT request is sent.</t>
            </li>
            <li>
              <t>For SETTINGS sent by the client, the initial limits are those most recently
acknowledged immediately before the response accepting the session is sent.</t>
            </li>
          </ul>
          <t>Note that this requires some care when SETTINGS are updated during the
connection.  A client sending a CONNECT request MUST use the server-sent
SETTINGS it has acknowledged at that moment. Those are the values that apply to
the resulting session, even if the client acknowledges further server SETTINGS
before the response arrives. Similarly, a server sending a response accepting a
session MUST use the client-sent SETTINGS that it has acknowledged before
sending that response.  Values still unacknowledged at these moments apply only
to sessions created after they are acknowledged.</t>
          <t>Sessions that are already established are not affected by changes to these
SETTINGS, and their limits can only be updated using the corresponding flow
control capsules.</t>
        </section>
        <section anchor="flow-control-header">
          <name>Flow Control Header Field</name>
          <t>The <tt>WebTransport-Init</tt> HTTP header field can be used to communicate the initial
values of the flow control windows, similar to how QUIC uses transport
parameters.  The <tt>WebTransport-Init</tt> is a Dictionary Structured Field
(<xref section="3.2" sectionFormat="of" target="RFC9651"/>).  If the <tt>WebTransport-Init</tt> field cannot be
parsed correctly or does not have the correct type, the endpoint MUST reject the
CONNECT request with a 4xx status code.  The following keys are defined for the
<tt>WebTransport-Init</tt> header field:</t>
          <dl>
            <dt><tt>u</tt>:</dt>
            <dd>
              <t>The initial flow control limit for unidirectional streams opened by the
recipient of this header field.  MUST be an Integer.</t>
            </dd>
            <dt><tt>bl</tt>:</dt>
            <dd>
              <t>The initial flow control limit for the bidirectional streams opened by the
sender of this header field.  MUST be an Integer.</t>
            </dd>
            <dt><tt>br</tt>:</dt>
            <dd>
              <t>The initial flow control limit for the bidirectional streams opened by the
recipient of this header field.  MUST be an Integer.</t>
            </dd>
          </dl>
          <t>If any of these keys are present but contain invalid values, the endpoint MUST
reject the CONNECT request with a 4xx status code.  Unknown keys and parameters
in the dictionary MUST be ignored.</t>
          <t>The <tt>WebTransport-Init</tt> header field only includes initial stream data limits.
A <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule applies to a specific stream and can only be sent
once that stream exists, so an initial value is needed for a peer to send data
on a new stream without waiting for a round trip.  Session-level limits can be
provided at the start of a session by sending <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 along with the request or response.</t>
        </section>
      </section>
      <section anchor="flow-control-intermediaries">
        <name>Flow Control and Intermediaries</name>
        <t>WebTransport over HTTP/2 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_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_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>, <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_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>, <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_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>, <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_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 flow control credit
as they consume data or close streams (similar to the mechanism used in QUIC,
see <xref section="4.2" sectionFormat="of" target="RFC9000"/>).</t>
        <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/2 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 would 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>
    <section anchor="features">
      <name>WebTransport Features</name>
      <t>WebTransport over TCP-based HTTP semantics provides the following features
described in <xref target="OVERVIEW"/>: unidirectional streams, bidirectional streams, and
datagrams, initiated by either endpoint.</t>
      <t>WebTransport streams and datagrams that belong to different WebTransport
sessions are identified by the CONNECT stream on which they are transmitted,
with one WebTransport session consuming one CONNECT stream.</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>Because WebTransport over TCP-based HTTP semantics relies on the underlying
protocols to provide in order and reliable delivery, there are some notable
differences from the way in which QUIC handles application data. For example,
endpoints send stream data in order. As there is no ordering mechanism available
for the receiver to reassemble incoming data, receivers assume that all data
arriving in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules is contiguous and in order.</t>
        <t>Below are details about support in WebTransport over HTTP/2 for the properties
defined by the WebTransport framework.</t>
        <dl>
          <dt>Unreliable Delivery:</dt>
          <dd>
            <t>WebTransport over HTTP/2 does not support unreliable delivery, as HTTP/2
retransmits any lost data. This means that any datagrams sent via WebTransport
over HTTP/2 will be retransmitted regardless of the preference of the
application. The receiver is permitted to drop them, however, if it is unable
to buffer them.</t>
          </dd>
          <dt>Pooling:</dt>
          <dd>
            <t>WebTransport over HTTP/2 provides support for pooling.  Every WebTransport
session is an independent HTTP/2 stream and does not compete with other pooled
WebTransport sessions for per-stream resources.</t>
          </dd>
          <dt>Stream Independence:</dt>
          <dd>
            <t>WebTransport over HTTP/2 does not support stream independence, as HTTP/2
inherently has head-of-line blocking.</t>
          </dd>
        </dl>
      </section>
      <section anchor="webtransport-streams">
        <name>WebTransport Streams</name>
        <t>WebTransport streams have identifiers and states that mirror the identifiers
(<xref section="2.1" sectionFormat="of" target="RFC9000"/>) and states (<xref section="3" sectionFormat="of" target="RFC9000"/>) of QUIC
streams as closely as possible to aid in ease of implementation.</t>
        <t>WebTransport streams are identified by a numeric value, or stream ID.  Stream
IDs are only meaningful within the WebTransport session in which they were
created.  They share the same semantics as QUIC stream IDs.  The least
significant bit (0x01) of the stream ID identifies the initiator of the stream:
client-initiated streams have even-numbered stream IDs (with the bit set to 0),
and server-initiated streams have odd-numbered stream IDs (with the bit set to
1).  The second least significant bit (0x02) distinguishes between
bidirectional streams (with the bit set to 0) and unidirectional streams (with
the bit set to 1).  <xref target="stream-id-types"/> summarizes the four types of streams.</t>
        <table anchor="stream-id-types">
          <name>Stream ID Types</name>
          <thead>
            <tr>
              <th align="left">Bits</th>
              <th align="left">Stream Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">Client-Initiated, Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">Server-Initiated, Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">Client-Initiated, Unidirectional</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">Server-Initiated, Unidirectional</td>
            </tr>
          </tbody>
        </table>
        <t>Because WebTransport does not provide an acknowledgement mechanism for
WebTransport capsules, it relies on the underlying transport's in order delivery
to inform stream state transitions. Wherever QUIC relies on receiving an ack for
a packet to transition between stream states, WebTransport performs that
transition immediately.</t>
      </section>
      <section anchor="use-of-keying-material-exporters">
        <name>Use of Keying Material Exporters</name>
        <t>WebTransport over HTTP/2 supports the use of TLS keying material exporters
<xref section="7.5" sectionFormat="of" target="TLS"/>. Since the underlying HTTP/2 connection could 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 SHALL be a TLS exporter as
defined in <xref section="7.5" sectionFormat="of" target="TLS"/> 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="webtransport-capsules">
      <name>WebTransport Capsules</name>
      <t>WebTransport capsules are modeled after QUIC frames where applicable, to
enable reuse of QUIC infrastructure by implementors.</t>
      <t>WebTransport capsules use the Capsule Protocol defined in
<xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.</t>
      <section anchor="PADDING">
        <name>PADDING Capsule</name>
        <t>A <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule is an HTTP capsule <xref target="HTTP-DATAGRAM"/> of type=0x190B4D38 and
has no semantic value. <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsules can be used to introduce additional data
between other HTTP datagrams and can also be used to provide protection against
traffic analysis or for other reasons.</t>
        <t>Note that, when used with WebTransport over HTTP/2, the <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule exists
alongside the ability to pad HTTP/2 frames (<xref section="10.7" sectionFormat="of" target="RFC9113"/>).
HTTP/2 padding is hop-by-hop and can be modified by intermediaries, while the
<iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule traverses intermediaries.  The <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule cannot be smaller
than its own header, which means that the minimum size of the capsule is two
bytes: one byte for the Type and one byte to encode "0" for the Length.</t>
        <figure anchor="fig-padding">
          <name>PADDING Capsule Format</name>
          <artwork><![CDATA[
PADDING Capsule {
  Type (i) = 0x190B4D38,
  Length (i),
  Padding (..),
}
]]></artwork>
        </figure>
        <t>The Padding field MUST be set to an all-zero sequence of bytes of any length as
specified by the Length field.  A receiver is not obligated to verify padding
but MAY treat non-zero padding as a <xref target="errors">session error</xref>.</t>
      </section>
      <section anchor="WT_RESET_STREAM">
        <name>WT_RESET_STREAM Capsule</name>
        <t>A <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule is an HTTP capsule <xref target="HTTP-DATAGRAM"/> of
type=0x190B4D39 and allows either endpoint to abruptly terminate its sending
side of a WebTransport stream.</t>
        <t>After sending a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule, an endpoint ceases transmission of
<iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules on the identified stream.</t>
        <t>The <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule follows the design of the QUIC RESET_STREAM_AT frame
<xref target="PARTIAL-RESET"/>.  Consequently, it includes a Reliable Size field.  Because
<iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> and <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsules are delivered in order on a single
HTTP/2 stream, the Reliable Size MUST equal the total number of bytes the
sender has sent via <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules on the stream.  A receiver MUST close
the WebTransport session with a WT_STREAM_STATE_ERROR session error
if the Reliable Size in a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule does not equal the number of
bytes received on that stream: a smaller value contradicts data already
delivered, and a larger value promises bytes that cannot subsequently arrive.</t>
        <figure anchor="fig-wt_reset_stream">
          <name>WT_RESET_STREAM Capsule Format</name>
          <artwork><![CDATA[
WT_RESET_STREAM Capsule {
  Type (i) = 0x190B4D39,
  Length (i),
  Stream ID (i),
  Application Protocol Error Code (i),
  Reliable Size (i),
}
]]></artwork>
        </figure>
        <t>The <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule defines the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>A variable-length integer encoding of the WebTransport stream ID of the
stream being terminated.</t>
          </dd>
          <dt>Application Protocol Error Code:</dt>
          <dd>
            <t>A variable-length integer containing the application protocol error code
that indicates why the stream is being closed.  WebTransport application
error codes are constrained to an unsigned 32-bit range defined in
<xref section="4.4" sectionFormat="of" target="WEBTRANSPORT-H3"/>.  This value MUST NOT exceed 0xffffffff,
values larger than this MUST be treated as a session error of type
WT_ERROR.</t>
          </dd>
          <dt>Reliable Size:</dt>
          <dd>
            <t>A variable-length integer indicating the amount of data delivered on the
stream before the reset event.</t>
          </dd>
        </dl>
        <t>Unlike the equivalent QUIC frame, this capsule does not include a Final Size
field. In-order delivery of <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules ensures that the amount of
session-level flow control consumed by a stream is always known by both
endpoints.</t>
        <t>A <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule MUST NOT be sent after a stream is closed or reset.
While QUIC permits redundant RESET_STREAM frames, the ordering guarantee in
HTTP/2 makes this unnecessary.  A <xref target="errors">session error</xref> of type
WT_STREAM_STATE_ERROR MUST be sent if a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule is
received for a stream that is not in a valid state.</t>
      </section>
      <section anchor="WT_STOP_SENDING">
        <name>WT_STOP_SENDING Capsule</name>
        <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> (type=0x190B4D3A) is
introduced to communicate that incoming data is being discarded on receipt per
application request. <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> requests that a peer cease transmission on
a WebTransport stream.</t>
        <figure anchor="fig-wt_stop_sending">
          <name>WT_STOP_SENDING Capsule Format</name>
          <artwork><![CDATA[
WT_STOP_SENDING Capsule {
  Type (i) = 0x190B4D3A,
  Length (i),
  Stream ID (i),
  Application Protocol Error Code (i),
}
]]></artwork>
        </figure>
        <t>The <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> capsule defines the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>A variable-length integer carrying the WebTransport stream ID of the stream
being ignored.</t>
          </dd>
          <dt>Application Protocol Error Code:</dt>
          <dd>
            <t>A variable-length integer containing the application-specified reason the
sender is ignoring the stream.  WebTransport application error codes are
constrained to an unsigned 32-bit range defined in
<xref section="4.4" sectionFormat="of" target="WEBTRANSPORT-H3"/>.  This value MUST NOT exceed 0xffffffff,
values larger than this MUST be treated as a session error of type
WT_ERROR.</t>
          </dd>
        </dl>
        <t>As defined in <xref section="3.5" sectionFormat="of" target="RFC9000"/>, the recipient of a <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref>
capsule sends a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule in response if the stream is in the
"Ready" or "Send" state.  The error code from the <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> capsule
can be copied into the <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule if the endpoint does not
have a more appropriate code to use.</t>
        <t>A <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> capsule MUST NOT be sent multiple times for the same stream.
While QUIC permits redundant STOP_SENDING frames, the ordering guarantee in
HTTP/2 makes this unnecessary.  A <xref target="errors">session error</xref> of type
WT_STREAM_STATE_ERROR MUST be sent if a second <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> capsule
is received.</t>
      </section>
      <section anchor="WT_STREAM">
        <name>WT_STREAM Capsule</name>
        <t><iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules implicitly create a WebTransport stream and carry stream
data.</t>
        <t>The Type field in the <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule is either 0x190B4D3B or 0x190B4D3C.  The
least significant bit in the capsule type is the FIN bit (0x01), indicating when
set that the capsule marks the end of the stream in one direction.  Stream data
consists of any number of 0x190B4D3C capsules followed by a terminal 0x190B4D3B
capsule.</t>
        <figure anchor="fig-wt_stream">
          <name>WT_STREAM Capsule Format</name>
          <artwork><![CDATA[
WT_STREAM Capsule {
  Type (i) = 0x190B4D3B..0x190B4D3C,
  Length (i),
  Stream ID (i),
  Stream Data (..),
}
]]></artwork>
        </figure>
        <t><iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules contain the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>The stream ID for the stream.  The second least significant bit of the Stream
ID indicates whether the stream is bidirectional or unidirectional, as
described in <xref target="webtransport-streams"/>.</t>
          </dd>
          <dt>Stream Data:</dt>
          <dd>
            <t>Zero or more bytes of data for the stream.  Empty <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules MUST NOT
be used unless they open or close a stream; an endpoint MAY treat an empty
<iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule that neither starts nor ends a stream as a session error.</t>
          </dd>
        </dl>
        <t>A <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule MUST NOT be sent after a stream is closed or reset.  While
QUIC permits redundant STREAM frames, the ordering guarantee in HTTP/2 makes
this unnecessary.  A <xref target="errors">session error</xref> of type
WT_STREAM_STATE_ERROR MUST be sent if a <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule is received
for a stream that is not in a valid state.</t>
        <t>Opening a stream and sending stream data with <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules is subject to
the limits on the number of streams (<xref target="WT_MAX_STREAMS"/>), on session data
(<xref target="WT_MAX_DATA"/>), and on stream data (<xref target="WT_MAX_STREAM_DATA"/>).  A <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref>
capsule that exceeds any of these limits results in a WT_FLOW_CONTROL_ERROR
session error, as described in the corresponding sections.</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)
(<xref section="5.6.4" sectionFormat="of" target="WEBTRANSPORT-H3"/>) is used to inform the peer of the maximum
amount of data that can be sent on the WebTransport session as a whole.</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 connection, in units of bytes.</t>
          </dd>
        </dl>
        <t>All data sent in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules counts toward this limit.  The sum of the
lengths of Stream Data fields in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules MUST NOT exceed the value
advertised by a receiver.  If an endpoint receives an incoming <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule
with Stream Data in excess of this limit, it MUST close the WebTransport session
with a WT_FLOW_CONTROL_ERROR session error.</t>
        <t>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 initial
value for the session (<xref target="flow-control-initial"/>) 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 session error.</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 <iref item="SETTINGS_WT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WT_INITIAL_MAX_DATA" format="none">SETTINGS_WT_INITIAL_MAX_DATA</xref>.</t>
      </section>
      <section anchor="WT_MAX_STREAM_DATA">
        <name>WT_MAX_STREAM_DATA Capsule</name>
        <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> (type=0x190B4D3E) is
introduced to inform a peer of the maximum amount of data that can be sent on a
WebTransport stream.</t>
        <figure anchor="fig-wt_max_stream_data">
          <name>WT_MAX_STREAM_DATA Capsule Format</name>
          <artwork><![CDATA[
WT_MAX_STREAM_DATA Capsule {
  Type (i) = 0x190B4D3E,
  Length (i),
  Stream ID (i),
  Maximum Stream Data (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules contain the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>The stream ID of the affected WebTransport stream, encoded as a
variable-length integer.</t>
          </dd>
          <dt>Maximum Stream Data:</dt>
          <dd>
            <t>A variable-length integer indicating the maximum amount of data that can be
sent on the identified stream, in units of bytes.</t>
          </dd>
        </dl>
        <t>All data sent in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules for the identified stream counts toward this
limit.  The sum of the lengths of Stream Data fields in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules on
the identified stream MUST NOT exceed the value advertised by a receiver.  If an
endpoint receives an incoming <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule with Stream Data in excess of
this limit, it MUST close the WebTransport session with a
WT_FLOW_CONTROL_ERROR session error.</t>
        <t>If an endpoint receives a <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule with a Maximum Stream Data
value that does not increase the Maximum Stream Data value previously received
for that stream, or the stream's initial value (<xref target="flow-control-initial"/>) if no
<iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule has been received for it, it MUST close the
WebTransport session with a WT_FLOW_CONTROL_ERROR session error.</t>
        <t>The <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_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_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_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>Initial values for this limit for unidirectional and bidirectional streams MAY
be communicated by sending non-zero values for
<iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI</xref>,
<iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL</xref>, and
<iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE</xref> respectively.</t>
        <t>A <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule MUST NOT be sent after a sender requests that a
stream be closed with <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref>.  While QUIC permits redundant
MAX_STREAM_DATA frames, the ordering guarantee in HTTP/2 makes this unnecessary.
A <xref target="errors">session error</xref> of type WT_STREAM_STATE_ERROR MUST be sent
if a <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule is received after a <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> capsule for
the same stream.</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 defined by
<xref section="5.6.2" sectionFormat="of" target="WEBTRANSPORT-H3"/> 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 connection. 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 session error.</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 that would exceed the advertised
Maximum Streams value, it MUST close the WebTransport session with a
WT_FLOW_CONTROL_ERROR session error.</t>
        <t>Note that, like QUIC stream IDs, WebTransport stream IDs cannot be skipped.
Opening a stream with a given ID implicitly opens all streams of the same type
and direction with lower stream IDs.  Even though WebTransport over HTTP/2 uses
an ordered transport, an application can create a stream without immediately
sending data on it. A higher-numbered stream might have data written to it
first, causing it to appear at the peer before any data is sent on
lower-numbered streams.  For example, if the client's bidirectional stream limit
is 3 and the server opens stream ID 15 (the fourth server-initiated
bidirectional stream), this implicitly counts stream IDs 3, 7, 11, and 15
against the limit, which would violate the limit of 3.  An endpoint that
receives such a stream would close the WebTransport session with a
WT_FLOW_CONTROL_ERROR error.</t>
        <t>If an endpoint receives a <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule with a Maximum Streams value
that does not increase the Maximum Streams value previously received, or the
corresponding initial value for the session (<xref target="flow-control-initial"/>) 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 session error.</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 <iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_UNI</xref> and
<iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI</xref>.</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)
(<xref section="5.6.5" sectionFormat="of" target="WEBTRANSPORT-H3"/>) 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 anchor="WT_STREAM_DATA_BLOCKED">
        <name>WT_STREAM_DATA_BLOCKED Capsule</name>
        <t>A sender SHOULD send a <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsule (type=0x190B4D42) when it
wishes to send data but is unable to do so due to stream-level flow control.  A
sender is not required to send <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsules, however
<iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsules can be used as input to tuning of flow control
algorithms and for debugging purposes.</t>
        <t>This capsule is analogous to <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> (<xref target="WT_DATA_BLOCKED"/>), but for
stream-level data limits instead of session-level data limits.</t>
        <figure anchor="fig-wt_stream_data_blocked">
          <name>WT_STREAM_DATA_BLOCKED Capsule Format</name>
          <artwork><![CDATA[
WT_STREAM_DATA_BLOCKED Capsule {
  Type (i) = 0x190B4D42,
  Length (i),
  Stream ID (i),
  Maximum Stream Data (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsules contain the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>A variable-length integer indicating the WebTransport stream that is
blocked due to flow control.</t>
          </dd>
          <dt>Maximum Stream Data:</dt>
          <dd>
            <t>A variable-length integer indicating the offset of the stream at which the
blocking occurred.</t>
          </dd>
        </dl>
        <t>The <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_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_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_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>
        <t>A <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsule MUST NOT be sent after a stream is closed or
reset.  While QUIC permits redundant STREAM_DATA_BLOCKED frames, the ordering
guarantee in HTTP/2 makes this unnecessary.  A <xref target="errors">session error</xref> of type
WT_STREAM_STATE_ERROR MUST be sent if a <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsule
is received for a stream that is not in a valid state.</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) (<xref section="5.6.3" sectionFormat="of" target="WEBTRANSPORT-H3"/>) 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 session error.</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="DATAGRAM_CAPSULE">
        <name>DATAGRAM Capsule</name>
        <t>WebTransport over HTTP/2 uses the DATAGRAM capsule defined in
<xref section="3.5" sectionFormat="of" target="HTTP-DATAGRAM"/> to carry datagram traffic.</t>
        <figure anchor="fig-datagram">
          <name>DATAGRAM Capsule Format</name>
          <artwork><![CDATA[
DATAGRAM Capsule {
  Type (i) = 0x00,
  Length (i),
  HTTP Datagram Payload (..),
}
]]></artwork>
        </figure>
        <t>When used in WebTransport over HTTP/2, DATAGRAM capsules contain the following
fields:</t>
        <dl>
          <dt>HTTP Datagram Payload:</dt>
          <dd>
            <t>The content of the datagram to be delivered.</t>
          </dd>
        </dl>
        <t>The data in DATAGRAM capsules is not subject to flow control. The receiver MAY
discard this data if it does not have sufficient space to buffer it.</t>
        <t>An intermediary could forward the data in a DATAGRAM capsule over another
protocol, such as WebTransport over HTTP/3.  In QUIC, a datagram frame can span
at most one packet. Because of that, the applications have to know the maximum
size of the datagram they can send. However, when proxying the datagrams, the
hop-by-hop MTUs can vary.</t>
        <t><xref section="3.5" sectionFormat="of" target="HTTP-DATAGRAM"/> indicates that intermediaries that forward
DATAGRAM capsules where QUIC datagrams <xref target="DATAGRAM"/> are available forward the
contents of the capsule as native QUIC datagrams, rather than as HTTP datagrams
in a DATAGRAM capsule. Similarly, when forwarding DATAGRAM capsules used as part
of a WebTransport over HTTP/2 session on a WebTransport session that natively
supports QUIC datagrams, such as WebTransport over HTTP/3 <xref target="WEBTRANSPORT-H3"/>,
intermediaries follow the requirements in <xref target="WEBTRANSPORT-H3"/> to use native QUIC
datagrams.</t>
      </section>
      <section anchor="WT_CLOSE_SESSION_CAPSULE">
        <name>WT_CLOSE_SESSION Capsule</name>
        <t>WebTransport over HTTP/2 uses the WT_CLOSE_SESSION capsule defined in
<xref section="6" sectionFormat="of" target="WEBTRANSPORT-H3"/> to terminate a WebTransport session with an
application error code and message.</t>
        <t>WebTransport sessions can be terminated by optionally sending a WT_CLOSE_SESSION
capsule and then by closing the HTTP/2 stream associated with the session (see
<xref target="errors"/>).</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>When used in WebTransport over HTTP/2, WT_CLOSE_SESSION capsules contain the
following fields:</t>
        <dl>
          <dt>Application Error Code:</dt>
          <dd>
            <t>A 32-bit error code provided by the application closing the connection.</t>
          </dd>
          <dt>Application Error Message:</dt>
          <dd>
            <t>A UTF-8 encoded error message string provided by the application closing the
connection.  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 treat this as a session error of type WT_ERROR.</t>
          </dd>
        </dl>
        <t>An endpoint that sends a WT_CLOSE_SESSION capsule MUST then half-close the
stream by sending an HTTP/2 frame with the END_STREAM flag set
(<xref section="5.1" sectionFormat="of" target="HTTP2"/>).  The recipient MUST close the stream upon receipt of
the capsule by replying with an HTTP/2 frame with the END_STREAM flag set; note
that it does not need to send a WT_CLOSE_SESSION capsule in response.</t>
        <t>Cleanly terminating a WebTransport session without a WT_CLOSE_SESSION capsule is
semantically equivalent to terminating it with a WT_CLOSE_SESSION capsule that
has an error code of 0 and an empty error string.</t>
      </section>
      <section anchor="WT_DRAIN_SESSION_CAPSULE">
        <name>WT_DRAIN_SESSION Capsule</name>
        <t>HTTP/2 uses GOAWAY frames (<xref section="6.8" sectionFormat="of" target="HTTP2"/>) to allow an endpoint to
gracefully stop accepting new streams while still finishing processing of
previously established streams.</t>
        <t>WebTransport over HTTP/2 uses the WT_DRAIN_SESSION capsule defined in
<xref section="4.7" sectionFormat="of" target="WEBTRANSPORT-H3"/> to gracefully shut down a WebTransport
session.</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 HTTP/2 GOAWAY
frame, an endpoint MAY continue using the session and MAY open new WebTransport
streams. The signal is intended for the application using WebTransport, which is
expected to attempt to gracefully terminate the session as soon as possible.</t>
      </section>
      <section anchor="capsule-ordering-and-reliability">
        <name>Capsule Ordering and Reliability</name>
        <t>The use of an ordered and reliable transport means that a receiver does not need
to tolerate capsules that arrive out of order. This differs from QUIC in that a
receiver is required to treat the arrival of out of order frames rather than
being tolerant.</t>
        <t>For an intermediary that forwards from a transport with independently reliable
and ordered streams (like <xref target="WEBTRANSPORT-H3"/>) to a transport that multiplexes
over a single in-order stream (like this protocol), it is necessary to maintain
state for streams. A simple forwarding intermediary that
directly translates one type of protocol unit into another without understanding
the underlying state might cause a receiver to abort the session.</t>
        <t>For instance, as QUIC uses an unreliable transport, a QUIC RESET_STREAM frame
might be sent multiple times. If a RESET_STREAM frame is forwarded as a
<iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule, forwarding another RESET_STREAM as a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref>
or a STREAM frame as a <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> on the same stream will cause the receiving
endpoint to signal a WT_STREAM_STATE_ERROR (see <xref target="WT_RESET_STREAM"/> and
<xref target="WT_STREAM"/>).</t>
      </section>
    </section>
    <section anchor="requirements-on-tls-usage">
      <name>Requirements on TLS Usage</name>
      <t>Because TLS keying material exporters are only secure for authentication when
they are uniquely bound to the TLS session <xref target="RFC7627"/>, WebTransport requires
either one of the following conditions:</t>
      <ul spacing="normal">
        <li>
          <t>The TLS version in use is greater than or equal to 1.3 <xref target="TLS"/>.</t>
        </li>
        <li>
          <t>The TLS version in use is 1.2, and the extended master secret extension
<xref target="RFC7627"/> has been negotiated.</t>
        </li>
      </ul>
      <t>Clients MUST NOT send WebTransport over HTTP/2 requests on connections that do
not meet one of the two conditions above. If a server receives a WebTransport
over HTTP/2 request on a connection that meets neither, the server MUST treat
the request as malformed, as specified in <xref section="8.1.1" sectionFormat="of" target="HTTP2"/>.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>An example of negotiating a WebTransport Stream on an HTTP/2 connection follows.
This example is intended to closely follow the example in
<xref section="5.1" sectionFormat="of" target="RFC8441"/> to help illustrate the differences defined in this
document.  For brevity, these examples omit the initial flow control limits
(<xref target="flow-control-initial"/>) that the endpoints would also exchange to permit the
streams and data shown.</t>
      <artwork><![CDATA[
[[ From Client ]]                   [[ From Server ]]

SETTINGS

                                    SETTINGS
                                    SETTINGS_ENABLE_CONNECT_PROTOCOL = 1
                                    SETTINGS_WT_ENABLED = 1

HEADERS + END_HEADERS
Stream ID = 3
:method = CONNECT
:protocol = webtransport
:scheme = https
:path = /
:authority = server.example.com
origin: https://server.example.com

                                    HEADERS + END_HEADERS
                                    Stream ID = 3
                                    :status = 200

WT_STREAM
Stream ID = 0
WebTransport Data

                                    WT_STREAM + FIN
                                    Stream ID = 0
                                    WebTransport Data

WT_STREAM + FIN
Stream ID = 0
WebTransport Data
]]></artwork>
      <t>An example of the server initiating a WebTransport Stream follows. The only
difference here is the endpoint that sends the first <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule.</t>
      <artwork><![CDATA[
[[ From Client ]]                   [[ From Server ]]

SETTINGS

                                    SETTINGS
                                    SETTINGS_ENABLE_CONNECT_PROTOCOL = 1
                                    SETTINGS_WT_ENABLED = 1

HEADERS + END_HEADERS
Stream ID = 3
:method = CONNECT
:protocol = webtransport
:scheme = https
:path = /
:authority = server.example.com
origin: https://server.example.com
                                    HEADERS + END_HEADERS
                                    Stream ID = 3
                                    :status = 200

                                    WT_STREAM
                                    Stream ID = 1
                                    WebTransport Data

WT_STREAM + FIN
Stream ID = 1
WebTransport Data

                                    WT_STREAM + FIN
                                    Stream ID = 1
                                    WebTransport Data
]]></artwork>
    </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 (<xref section="9.1" sectionFormat="of" target="WEBTRANSPORT-H3"/>).</t>
      <section anchor="draft-versions">
        <name>Draft Versions</name>
        <t>[[RFC editor: please remove this section before publication.]]</t>
        <t>A draft version of this document that makes a breaking change, either to the
wire format or to protocol behavior, uses a new codepoint for the
SETTINGS_WT_ENABLED setting.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>WebTransport over HTTP/2 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 client is potentially untrusted.</t>
      <t>WebTransport over HTTP/2 requires explicit opt-in through the use of HTTP
SETTINGS; this avoids potential protocol confusion attacks by ensuring the
HTTP/2 server explicitly supports it. It also requires the use of the Origin
header, providing the server with the ability to deny access to Web-based
clients that do not originate from a trusted origin.</t>
      <t>Just like HTTP traffic going over HTTP/2, 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 transports share both
congestion control and flow control context, a single client aggressively using
up those resources can cause other transports to stall. The user agent thus
SHOULD implement a fairness scheme that ensures that each transport within
connection gets a reasonable share of controlled resources; this applies both to
sending data and to opening new streams.</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/2 <xref target="HTTP2"/> apply to WebTransport
over HTTP/2.  In particular, the denial-of-service considerations in
<xref section="10.5" sectionFormat="of" target="HTTP2"/> are relevant.  WebTransport extends HTTP/2 with
additional features that have legitimate uses but can become a burden when they
are used unnecessarily or to excess.</t>
      <t>Once a WebTransport session is established on an HTTP/2 stream, there are new
interaction modes that permit either endpoint to send WebTransport 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="8.4" sectionFormat="of" target="HTTP2"/>).  An endpoint that does not monitor use of these
features exposes itself to a risk of denial-of-service attack.  Implementations
track the use of WebTransport features, such as the number of incoming streams
and datagrams, and set limits on their use as described in <xref target="flow-control"/>.  An
endpoint MAY treat activity that is suspicious as a stream error or choose to
close the connection.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers an upgrade token (<xref target="upgrade-token"/>), new HTTP/2
settings (<xref target="h2-settings"/>), HTTP/2 error codes (<xref target="iana-h2-error"/>), new capsules
(<xref target="iana-capsules"/>), and the <tt>WebTransport-Init</tt> header field (<xref target="iana-header"/>).</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" label identifies HTTP/2 used as a protocol for WebTransport:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>webtransport</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>WebTransport over HTTP/2</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="h2-settings">
        <name>HTTP/2 SETTINGS Parameter Registration</name>
        <t>The following entries are added to the "HTTP/2 Settings" registry established by
<xref target="HTTP2"/>:</t>
        <t anchor="SETTINGS_WT_ENABLED">The SETTINGS_WT_ENABLED parameter indicates that the endpoint supports
WebTransport over HTTP/2.  The default value for the SETTINGS_WT_ENABLED
parameter is "0", meaning that the endpoint does not support WebTransport.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t>SETTINGS_WT_ENABLED</t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>0x2b67</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t><xref target="setting"/></t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WT_INITIAL_MAX_DATA">The <iref item="SETTINGS_WT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WT_INITIAL_MAX_DATA" format="none">SETTINGS_WT_INITIAL_MAX_DATA</xref> parameter 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
(<xref target="WT_MAX_DATA"/>).  The default value for the <iref item="SETTINGS_WT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WT_INITIAL_MAX_DATA" format="none">SETTINGS_WT_INITIAL_MAX_DATA</xref>
parameter 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/2
connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WT_INITIAL_MAX_DATA" format="none">SETTINGS_WT_INITIAL_MAX_DATA</xref></t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>0x2b61</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI">The <iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI</xref> parameter indicates the initial
value for the stream data limit for incoming unidirectional streams, otherwise
communicated by the <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule (<xref target="WT_MAX_STREAM_DATA"/>).  The
default value for the <iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI</xref> parameter is "0",
indicating that the endpoint needs to send <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules for each
stream within each individual WebTransport session before its peer is allowed to
send any stream data on those streams.</t>
        <t>Note that this limit applies to all WebTransport streams on all sessions that
use the HTTP/2 connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_UNI</xref></t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>0x2b62</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL">The <iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL</xref> parameter indicates the
initial value for the stream data limit for incoming data on bidirectional
streams initiated by the sender of this setting, otherwise communicated by the
<iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule (<xref target="WT_MAX_STREAM_DATA"/>).  The default value for the
<iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL</xref> parameter is "0", indicating
that the endpoint needs to send <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules for each stream
within each individual WebTransport session before its peer is allowed to send
any stream data on those streams.</t>
        <t>Note that this limit applies to all WebTransport streams on all sessions that
use the HTTP/2 connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL</xref></t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>0x2b63</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE">The <iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE</xref> parameter indicates the
initial value for the stream data limit for incoming data on bidirectional
streams initiated by the receiver of this setting, otherwise communicated by
the <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule (<xref target="WT_MAX_STREAM_DATA"/>).  The default value for
the <iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE</xref> parameter is "0",
indicating that the endpoint needs to send <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules for each
stream within each individual WebTransport session before its peer is allowed
to send any stream data on those streams.</t>
        <t>Note that this limit applies to all WebTransport streams on all sessions that
use the HTTP/2 connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE" format="none">SETTINGS_WT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE</xref></t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>0x2b66</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI">The <iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_UNI</xref> parameter 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 (<xref target="WT_MAX_STREAMS"/>).  The default value for the
<iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_UNI</xref> parameter 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/2
connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_UNI</xref></t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>0x2b64</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI">The <iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI</xref> parameter 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 (<xref target="WT_MAX_STREAMS"/>).  The default value for the
<iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI</xref> parameter 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/2
connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI</xref></t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>0x2b65</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-h2-error">
        <name>HTTP/2 Error Code Registration</name>
        <t>The following entries are added to the "HTTP/2 Error Code" registry established
by <xref target="HTTP2"/>:</t>
        <t>For WT_ERROR:</t>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>0xTBD</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>WT_ERROR</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>General WebTransport error detected</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="errors"/></t>
          </dd>
        </dl>
        <t>For WT_STREAM_STATE_ERROR:</t>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>0xTBD</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>WT_STREAM_STATE_ERROR</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Unexpected WebTransport stream-related capsule received</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="errors"/></t>
          </dd>
        </dl>
        <t>For WT_FLOW_CONTROL_ERROR:</t>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>0xTBD</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>WT_FLOW_CONTROL_ERROR</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>A flow control error occurred</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="errors"/></t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-capsules">
        <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>PADDING</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D38</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="PADDING"/><xref target="PADDING" format="none">PADDING</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_RESET_STREAM</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D39</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</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_STOP_SENDING</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3A</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</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_STREAM</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3B..0x190B4D3C</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</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_STREAM_DATA</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3E</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_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_STREAM_DATA_BLOCKED</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D42</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_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-header">
        <name>HTTP Header Field Name</name>
        <t>IANA will register the following entry in the "Hypertext Transfer Protocol
(HTTP) Field Name Registry" maintained at
<eref target="https://www.iana.org/assignments/http-fields">https://www.iana.org/assignments/http-fields</eref>:</t>
        <dl>
          <dt>Field Name:</dt>
          <dd>
            <t>WebTransport-Init</t>
          </dd>
          <dt>Structured Type:</dt>
          <dd>
            <t>Dictionary</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</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="WEBTRANSPORT-H3">
          <front>
            <title>WebTransport over HTTP/3</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="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   WebTransport over HTTP/3 is a binding of the WebTransport protocol
   framework [OVERVIEW] to HTTP/3 [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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-16"/>
        </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="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="HTTP2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="ORIGIN">
          <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="PARTIAL-RESET">
          <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="TLS">
          <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="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="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="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>
        <reference anchor="RFC9651">
          <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="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="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC7627">
          <front>
            <title>Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension</title>
            <author fullname="K. Bhargavan" initials="K." role="editor" surname="Bhargavan"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="A. Pironti" initials="A." surname="Pironti"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Ray" initials="M." surname="Ray"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Transport Layer Security (TLS) master secret is not cryptographically bound to important session parameters such as the server certificate. Consequently, it is possible for an active attacker to set up two sessions, one with a client and another with a server, such that the master secrets on the two sessions are the same. Thereafter, any mechanism that relies on the master secret for authentication, including session resumption, becomes vulnerable to a man-in-the-middle attack, where the attacker can simply forward messages back and forth between the client and server. This specification defines a TLS extension that contextually binds the master secret to a log of the full handshake that computes it, thus preventing such attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7627"/>
          <seriesInfo name="DOI" value="10.17487/RFC7627"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="DATAGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="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="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <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="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="RFC9729">
          <front>
            <title>The Concealed HTTP Authentication Scheme</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="D. Oliver" initials="D." surname="Oliver"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <date month="February" year="2025"/>
            <abstract>
              <t>Most HTTP authentication schemes are probeable in the sense that it is possible for an unauthenticated client to probe whether an origin serves resources that require authentication. It is possible for an origin to hide the fact that it requires authentication by not generating Unauthorized status codes; however, that only works with non-cryptographic authentication schemes: cryptographic signatures require a fresh nonce to be signed. Prior to this document, there was no existing way for the origin to share such a nonce without exposing the fact that it serves resources that require authentication. This document defines a new non-probeable cryptographic authentication scheme.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9729"/>
          <seriesInfo name="DOI" value="10.17487/RFC9729"/>
        </reference>
      </references>
    </references>
    <?line 1804?>

<section anchor="use-with-other-http-versions">
      <name>Use with Other HTTP Versions</name>
      <t>While this document defines WebTransport negotiation and session establishment
in terms of HTTP/2, the capsule-based mechanisms described here rely on generic
HTTP semantics and the Capsule Protocol <xref target="HTTP-DATAGRAM"/>, and can generally be
used over any HTTP version that supports these features.</t>
      <t>The primary HTTP-version-specific aspects of this protocol are the use of
Extended CONNECT for session establishment and the use of HTTP SETTINGS for
exchanging initial flow control limits (<xref target="flow-control-settings"/>).</t>
      <t>Extended CONNECT is defined for HTTP/2 in <xref target="RFC8441"/> and for HTTP/3 in
<xref target="RFC9220"/>.  Other HTTP versions that support Extended CONNECT can use the
"webtransport" upgrade token (<xref target="upgrade-token"/>) to establish capsule-based
WebTransport sessions.</t>
      <t>The flow control SETTINGS defined in this document use the same codepoints
across HTTP versions, but their behavior differs.  HTTP/2 allows SETTINGS to be
updated during the lifetime of a connection with acknowledgment-based
synchronization, while HTTP/3 SETTINGS are sent only once and are fixed for the
connection lifetime.  The <tt>WebTransport-Init</tt> header field
(<xref target="flow-control-header"/>) can be used to provide per-session initial flow
control limits regardless of HTTP version.</t>
      <t>When a version-specific WebTransport protocol exists for a given HTTP version,
endpoints SHOULD prefer it over the capsule-based protocol defined here.  For
example, WebTransport over HTTP/3 <xref target="WEBTRANSPORT-H3"/> provides stream
independence and unreliable datagram delivery by using native QUIC streams and
datagrams, which are not available when using the capsule-based protocol over a
single HTTP/3 stream.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Anthony Chivetta, Eric Gorbaty, Ankshit Jain, Joshua Otto, and
Valentin Pistol for their contributions in the design and implementation of this
work. The requirements on TLS usage were inspired by <xref target="RFC9729"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19a3vbRnbw9/kVqPxh7ZSkdbOTKLvtyrKcqLUtv5Ict2+6
jw2RoIiaBLgAaJnrdX/7e24zcwYYUJKT7G76vPs8bSwQmMuZM+d+GQ6Hpsmb
eXaQbL3JLi+qtKiXZdUk5YesSn64uHj1cHfLpJeXVfah9crwB/hlUo6LdAFf
T6p02gzzrJkOr7PLBl8azppmuTvceWyK1eIyqw7MJG2yAzMuizor6lV9kDTV
KjMw8J4Zw09XZbU+SOpmYtIqS3m6JC0myUnRZFWRNYmbfMtcXx0kb46fXJwd
vjw3H7JiBSMnyVVVrpathW7B82a9pC2W1fu8uEq+x9fw+SLN5/DcLhlf/yNu
YlRWV/h7Wo1n8DvupD54+BBfx0f5h2xkX3uIDx5eVuV1nT3UAz3EAa7yZra6
hCEYNFcOOg97IYafzQEcdaNmbn8+4oFHedk/0MN7V+Wo99fRrFnMt8z7bH1d
VhME3jDRyzfpqpmVFf0A/5ckeQEndjhKnlV5Mcnmc3rIp384T4vwOQAmLfK/
pE1eFgfJi6xJ6XHGAE+n+O4fp5ejcbkIJzgeJf+eF0WWVmr84yofB49heJh1
uZxngBzjET2rmyrLAGanRSY/vUqr98mbdE0/j/MGsOtotcyqJi/KQXKUzvNp
WRV5mnz7aHtnn98qV0WDaPi6yJtskpw3eBJJOU0OFxmsIthG9p6X9McUp+vu
5WIES1jN12onF+VisVZP/zE20ixxQX3beDFKLmbloi4LtZEXKc4e/EB7eVH+
JZ/Pg9EXzR/n5XUGyymX6xHc43D4H0fJj2mdz/Psgxr/x3zclFX4S4hU35fl
1TzTE33Alz98+OMV/dLdyPej5D/yTE3y/aq8Xrlnm3H2uiwtwpqirBbw2gei
Oac/Hp/9eHL85iA5GT4dhTcNyeiHPLuG1yyxenV6djH8YS/2Nt7LPXgV6e5B
cvbs6NudnW35e/j08OLw+7PDF/zD7rdfyw+79k388vTs5PuTl/Tk8f4jxIRX
h2cXJ4fPh2fH58cXatI/r/LxsMrmeXo5z4aIcukC/q7pdC6en9MY3+zvPzYm
L6Z6v62F7O7IQvbsQnDa//P65Ij/3t7eNmY4HCbpJcySjhtjAk4zyaZ5AZiZ
JjA34ifgynCefcjmgMOLxaoAXMUTqZNpljYrWCJ8UudXBSA1rMuMAT2KZlgD
oIFl5cgqYBL6oJmlDZDwDJ7mTZ7iNbhcJ8hV+KN6BFud5TBgOV4t4IGBkcdV
fknLWVZlU47LOQ8zBgoHTz7kkwweZPD3Mr0E1GxyvlV6T0ZxTzuFGy0rEOI1
DbKqs/a3yfUsK2D2109fDS/TOpsY9yWMUpSwoQ/IhWCMEcN1kU8mcA/MPeST
VTlZ0e5bUP70yaLp5884kANhU7ptXWUFUoYQ7CbYKLytwMeQwU3QXvdgFkKE
z59p1+5xABu3nU+fWlcCVpbO4fTrcI6SZkCEgk/wP/CeRQVTr8azJK0TRmA4
iSoBKSO9qvCPT58srtKKfgAiBAczQNADUiBi1OUiM1nxIa/KYkHTXdNvNBsc
OcL7MgNoLeflOpsAxAN8UcgbYouAtMYN4QkTxpQw8HRVCHKW0/CEVjVKJggx
uAiLtGjycT1i3MmL8XyFo8GpTPIqoxHSud30wFxGH5Ps5KABa3+yTuDGr3Ge
spiv4f+5Mw/nRRBpnEXkV2Ag6dAsVvMmR+5E38KTGvfVvlIORAXId3gJ4SW8
t3I9BGV2P382Kd+J8aqq8LtFWTeEivD+xZFchmQKAL1Mx+8RLRi7YMKTgg4S
lllntPbM1Cn9vaxXQN3402A36bwucUurWrYjow0QmSwVmADkzadP5wzZZHe0
M9ql+9rGW4DtvXvJRVYtgCHPy6s14kmWiGxVJ1svXp9fbA34v8nLU/r32TFg
2dnxU/z3+Q+Hz5+7f9g3zn84ff0cfjfyL//l0emLF8cvn/LH8DRpPXpx+J9b
fP5bp68uTk5fHj7fgs3QsRp3NHgDGgIDkc1llSGJbAEgeXL0KtnZh4P6JyDn
uzs738L94z++2fl6Hw4OKRZPRljFf8IhrBMQKEA8wkHwHsBx5A0AnmBcz8rr
IsHL1rlU05KpQOPhKVhE6/EHIsfhKdsovFLME2pamqCbewRbn+Q1iDBXq7ye
wchME2DW6xLeWqYV8AtTlUCqQV4twu9laSRRyQ+g1RS8LNjf9SyHe5GGhM9y
KFwPQmYuFFbY1HicLZs6aW2grnlE/LlGXP0AUl5amGA5g2RZwouXAPxmBqrN
1Sz5S1aVSAwXZSWnu8gmeVoBEQd4H4YLYFKLK4PrUA2FeE2ImCIjLpf66bic
ZAOAe5MVBmXMVQ1YM3C8gG8xTTlNx8jfpgBZ4rz4Q7A/mbgpjec5WXINqk0b
RrxRYSvdH9zE5nYT22MsBe5IYssFEsbWkTH88X4nryz9OLVCXQ+2IcQnsK98
mvP0gj7nyeuzE75eFpkVddkf7TI646tEUt6QJFB0MQxPCtRDkAEIdemy2S2B
ag0EJzUg7V2cvPz+/O2bi7fHLw+fPD9+igIWIrwAGMTl+Yrkj62dLQQFqGR8
AHiUJocdrZa4sxZSBsLNy1LeZ9rN5zkpgTMj6ywyljBwUbCTtUyp55I5iCXo
ab6zAoC58VUEMXNPXEOgzG8lqyVwP5TZyvcATYD40enLl8dHF8AJ/7wCICpI
to/fXb/kfp1lQHdkrCGN9fnzA7xJ7vKIiFm3rr0dBBeJYMBJ4Eyzj3B98Da1
lmOEsu7v76DMcjLVZ2tpBD6S9wd90wGdVygyonvDgoGVZ6sql8vaWoMQAjq5
7ON4lhZXWUvEQKmCzoFXR1OKsCKTXIMWiJylyuAWVjxYioj5lZ2NX/xK7rR8
dvIUETJNwpeIooKgFxkUxYY0+epctn3y9KuBXj/QFNgTEEa5kXAZkytQZIoo
1AzeDGKTmbpusMIeSQ1uJRGezmnSDUNy9E5j4zsWlV4LSl4QSt6P4JXIUOGL
OJOh42KxxhOkgKSIRDVUoi+gKVDr4LA6JATWvyxzlIDtkYebXsB36RXKoLj7
+DpKhlyIKu2TpDtK+MNPtmD5Jsre90Y7lh6Gu3ljT8mh2yD5KjxPFoG/ItYf
/uQE4q+QUjsp9iNeEpQk+VwHLUbFW2XizleHFitIgKszUxgUuGvywsrFaA5b
Il4AeYjTFZRE6xmOmQbknW690XK1p8V4e0mCkrmR2I5arMgtdzwva8T+RV5V
cFsB5qtLUbNJxeE1E5SUcmtQ1IDbAqcXDGu1LrwQfARx4qOxCbZoxnAYQL9x
FlTlQvyAZcXVGr5EBZCNySSXn0C4KSamqfJlrUg+sLjzi7Pjwxd24wCPc6Yn
NDXCz+pCyRRkS8RUOwtdYHoIJwD68xxQHS9AXsOPC5B15igJFYDxAEo8cwTc
KHmmvwA8BM0JrsdEryp2IgcGFvvi8D/eIsoMEvmDVx97dk5/4w9vnzw/Pfr3
46cD47YbPqctut/O7fPWUi3RlmtphO4SFb2egbhLuOWEPRGeAlTMiRYNWAzL
ahLv5YgMUvliHex9KFghRh0N6jbe2jMRfTO9hIcOpilujsxYrdOmjacGECjL
kU3i15aVsWxNnBeFo6ZcOi4sUhBB7PTV23NQnkBgUih02MdZvfg/YXONZqIB
kyXEB0qBPNXQZZxYnX6BMmzewOWk52wqiEKDhrpG9UQRK7Yx0U/hzCSrWnZ4
bEk863sApwtZOpmI+neYhlYgOjDgcnAqzXVGBiqRe3BMFk+MtjFZYUAomrer
gdrn6d9ldpXz1YQzYSX6WEtjIXkZHqEpSgwOQPmOPMX8dE9k28/tTbU/UmQW
cSSvRAbyGgEaxpAKMcE1HWlTyb8OM2X2DfahTfI4nWJMlzBILkPJPMurXkFY
RCmYNAVEEWFbLvxGhQCWvLW9NQDKB3TPLkhBBXkM2R4tUFqzHoa6hF1uHawU
x/sAGmhaNB2DKU2YtwwPjQZly0u3BbMeiYUQjSoGcV+2XCdXdO/oehS0orQO
OWxG7BANc+slCDBnpxenR6fP3x6fnZ2emfteBHk02vdCyC6LZnpatMgkadNk
i2VD4rLF3rZqKAhv5cK2lsLaCWjT+ZwtJ7P0A4q5RNEmho9CzoqB21VWLKir
cqHObsSmqE2nL9R2tZwQsZqsKsvC5vk0a/JFJiZM07lDHXOZEt8ejx6N9hTs
UGqYZWh7ZQud6KtRHXNKwgoL6hHtZJIxBXYMypC1EOFVIEVNx++L8hoYN3Jk
h5oxGAie0yZxHDUJikAoEk7pfvM9yGs23geLTUm4XlbZh7xc1TQ96mkoJufN
wKKx3KB0OgX4JOii+OCk8XqALIKsZziM2NYzL72UU1NknnC2+WZIkmIKSVtF
8ErmwLBuZUlVo7GFwfRWRnlrL4qjd6K7MXToHpKqf5cxotYIWGMOqr8dg+VU
mU0Yj7t+bFwIj8QeI98ogO0MlAx7nZKe69QBWv+VAkZ1RGdD1P8lHI1wXGA/
PTY8Uh2UyuUPzRpLA7uR8YLkOwoCeEfWo3o8ywBV7/fajdAoAVpMWU2Ym1nZ
O0H8iQvrjpeTOsKmGpb4rJAo4GQrwrsDa0l/lyzrbDUph7Msxelg3fMJrs1j
1wM+p0sCOKrrLYU4qv3yLLzVdzKqHUaAMUqelM2MCOO7A45UyJv1O5Il+OEy
bWbvBKvUGr5LWJCnUeuAs6L3L0erQoQVj1A1TNkxxaLQQJtheAbx06B99t1p
lYNs8y4JQAMSEjloP39mFuscOzhUSV9Yb1GdW0OcTCF4q0hCYHwx5vWSZBrE
8RuMTPbK6ZPkBUYPaeBVALnpiChwOuP3oqomTVpdZXjt6nJVjTPNQr/2DBTR
IUrvmcxGBvKmRHsX9WeB4VNcJFW2RB8EbhDuWrOqyV6d7G8/0ovaeQTM6XF4
a95YSd5CCQ86zQs+ndaBDnptykQF4R9oa4p8SFJCUa8qZTatl9mYjcWCA3nN
nlCxcJHtX+8VXqElsnFKQEdzWnl9mubzurtIc0tg7SVtYO2HwDp0AjNCbZlV
GCJQk+5HiFHbTY1xw9qGiRc0POSRQR6LDiL+cpnW9UAjt9MHia8y06elK/ax
+/EjTpGjT9hvZdBhfGpTe4G1vV8X0kTbqXuhuZ2mh/0sMbZtlBxaOJN7lSRh
Omz7hucoFtcsViGqux+J0qAsAOxfvQwEspQwAu0lx+ANa+TgIAKWS4mN4M9D
txHQlu3+WLkEKFXZfwNoxGHhHEupRmtit0AyCB3pqK2diewjfjeiA6+KOb6Z
N4HlOgZmbUl/cfifSQnLXqB7bgx4sfb+gx6jXF2XY47vYGxoG/kH9Lxc4U5z
AggLmPY8BhZJiWI27vIBKNBcYay5gpVati9MVkCeME6vGK9pOLZp4ucEQasf
yxUHnCe1J41qBqPkGYyQfUwXS7LA2K8X+dUMNjorS1YE3QlzgENZmcByxSI8
6tVT9PtpZrCOIJ8WZw6VT80ZdF96n/0GiZMcbTUbF52TXbv7nUFtAGxtgSGU
SNYunp/rWYfP0zWMGZs7OcZjIXS9f/j81csHcI//FUSMr/e2QcT4zvn92IdJ
KjxaV4AA41px/0vE/o/s73WBAO5ScigEyemkD8J1s3Ea6RzECtGhFH46Tp+8
e3MxPLQROUO7+rrF+Nmn0EZLkXT6RsgK0Hwt9cisjzfz64dN487QzVmgwxNl
vrbPSIReVMUxUsYRmry1EYPLeNUSB8jCCx/ihZ+u5sl9IHMPFJ2DqXJ29wWs
mFigBxEKskiqZmU+VtjH4PxdDVomKlxCimjiEYjT7EzFNTJlCgiMiB3W35hP
iHCqKVd5k2pYYfQLCIz9wEa+FIKAQgRinto95hw9USDW9KYMbTT4MZkcfoB/
zhEJP90jG0TdMVg5zqOvWMTmmOWkSltLu7UikmptbbohWYy5+kQMteFxgTsv
eUJkhOyWVhex7pbO7E51QIPq0fPT8+O358fn5yenLy2dRvmr/dvbo8NX56+f
H6NkGHP7s52GhBKEoTihOGCg+IBKk/cNuDBFBPglEnvGmLSm4EEcR2/EMp6z
zJvhOlZcChNSwR7qS89T2FiO6n64ejF4sz0RLwhFZnDwmfVkeve+3yp6LwQH
GEfwxqFBTzyTjcKskq0T9sRC6yNKBHCN2GvIUTXKc+knZOigrZHOAEQrIZsB
XvJaDgz6H8hQltzf/njx5OmDA3PAE9tgMhlZzEo1B2ravRDGTUq6sGTlohAV
Jy3SWybhdY2McnacXxxeHHdnPkxc8OqccNh6BVQMRhpY5VHaIbMz/H/QD4F4
oMSY8WTPnp++QVvFxZm1B4aTBfx2DtyMx/uQlzQ7DPKqyksS8905sYnY+sUZ
y2mfgw3Xxb5pNEZ5TUHdDKSRpNwWTRd1BNJFhjQ8rfL5WmETi+vk7BVROLDu
kSQN4kj2kWJk2JdS+Evflk7cRWm5MwvjZA9kzgwIXt93CYdWKIOrNhmiL4Pc
V0cMcWMCZ9YV0khR0NIFRrzjx1avqBMXuXtJwnQN12JiQ0RZuZYfxdbXK+JI
XKqThmEbfPY4M6e3oNTgbD3idlJ2FbHDlIViiA5EBAXgMIhcQ9nckCawzrOa
gPFM1q5DWKdoRxQcQY5HRIdCkqdtv5/btjVvmtIJCNbL1gcCuPc7IwzEbDvw
dkcR14p+xwZv6MNqygYotj8yWhngCTo0rVOaRHSgkjbUjb1hMOPeKHwWnY2g
x5PR4BrwwdcjgmqfI7sJ4m8lipG0joE8Zs5BN0DCzU32kfwBJOnEho17QvdH
t305sscWQK0I4E9cIXqiT115wlXwSywKLgz20jZtvgolm/ZBgCbsc9qZDBtX
fAaJjeD23ncJNNGh3ACeR23w3Hj29tzRxgcMeuVDC2ycT6r0T0RtFSjKkh8B
Y5pXJClVWd/tGnXSCLwtHf4FEzfXJYuHz3FtVtp4aSlHcp6jbzctsnJVWxGy
BiFxE0UwJlhr4GXECALgYkevz86OX7qYgATDWhfoPDGhn2ZXEV3BY4nBDVyj
nuYt0o+w4oWifbBIG7rtgvEjd84JT3RSJF8pNPbDxW3o1mARBGdZXYGZO5o3
gqVSIC9sLxriGQyN7HCJeU3jFeqo4ZJFWBEPvPFBIkAZv2JF7uz42evz46cC
7XeaR0dtUN+MvtZwd25TTFgsRXq1GryjWRT8bi2HzqCb8k0U4wxPhNu5TkF7
/UqMt9rEt/utctNGx3MGoQmHbBIcEwYsaTBk5n/86JtH5Nt7Xczz93xhrCsM
7jJQxolQUfGr4z2hYB/KgIMFL9Mr1j14y0rc2XxjBMlcJJIVfOKXht/+zJp8
GGLjJK7A8fu4J9b/gb0aWTqeGScLxSUCdxUQwZcZh38vUUxqZMvlEi11NeEd
4n2cEbHrCx1ELIRweLrMiIwymgGC9IziF+IBVjCoo+gDNNbh+fXw/z0TSdcZ
AEcZpxSjgLYzkLaruHkPly3WdFFGcxfCrll+L5MWFOL95uIvQXepu4a0Ty2c
9hxIf4SNOyIMWaNjKUMOcQ8zrHIKi9MyKSNoh1izUj1HjCsZZZKAKVPehY21
tBaihPJWpnMSrCUhpu3FMYHu7o3TfZHHA9Hv5xHdhePzgoVggoHA3rlf77dE
U9GYaw6IsEDh4AtjYz16ZnOpN+GU5CoJAndw2HcmMKNJgGmvX6u9Tv6YPRYX
s8ytwicbxPeLNGhNEcudmCxhF4Qg2cQxpI4IDHB53jMbmmgiWw0thrwEwnEh
jNGAZe2bkFi9Xuhg3Orahfewoc2g7+WyFOuQB4C4UcMlVUTaSYSULMWYnBjN
TnDXkvwIlmTYOB3xZWLqjUTwYGYnEljMmmPlccLe+ggm0ycA72MXdGpD/PSe
DEUJIu5pub21RfGLtR10wTuC5giNIM4ITRx/RiFTzkt24kIp5Ybb9RBBCbVb
D/8WLXH3DUSNn3QYy8nLE8zudRGlfzpI7m14RYeNvn55coe3n5w8PXn7/PTo
8PldPzo7fnF6cXyrr85vvahzGpteNSebqVuX1LRuO9olZ7uapuFNckY9kKuK
IaVTKdQEkUrF8dKom47Fv67As/Gr1kkNQFS62zFROPBdvuJzaq/0/BarpGO7
1XR8bC1XkkP6W8ehyQmagNq+ls/klJoUhJmMg62QI+nwKSCrYyJAEmd3mWWF
CWLGhJSiOHCnEDdjnohEFIYu1Zai5pUOTuOUY9l3XljGz8S17S1itV3saLnP
0xAKu4nJI8qmGgTi3HBRdJjg5yREUmjQKOL2YL2aXhsM55RpKJ+UTCFBOB7W
UdHAzReUi9ig3008lTHXhA3B27QYNrD9CotxgHaxfEFAglubadlEXEyxJCSj
qR9P03PWKobhISo7V7hLGOsAJ2CjfCRDsui5iTjoLdxsKkLjolyQwfOC4JPK
nu3NIfVfJCDxuqHBGBfiEzwwMjP0wqmZAONWFZmDbLyJpbVREFcVeihHaARB
5/B8reIOPAgiR+LDGAJ4uJIQhaIuIuN3gcJLMl5mUIEacBg/MlTqBj02q6IL
z4xQjK+yl9oMeettno/kAaQ2DYuj/fRY3nKv6lakc/hwsg4iUPC5DyRlWsWE
oBbJo/bB3gNFdxRLJLFSkVofaxiKWzr4wRn0YoLLDywgPeMot3sxIZwl8Jjc
S8aJQMTSriOMYVTJweqmG0FYYQoB4bvOiwko6TrggFIPKOuJk4V9RQprFKsl
wjS2SFK8n+asQldrND+sxpgNNeFd6+iyPTYdoHnk28ePdkRLmvbpOH7TXG4C
F1RTonXFdhIyhVpjK3Esd1TA3dDiGhOy2X4TizuwMVP7GDPljUKye+8ofJ+t
68ANbnMJbtJegIO8W71jv+AmzpT0GycSUbAkvjtBAp4vidDQecN56Blh7TbI
E3AHC4ZdUWTLu8v5bdeBEIybUdpLkWyiu62j+uXX8WUgwWC7Yi23ps78KVvd
7nLlYh+dh5SvWgTNjEezvjDTLpq9LpDwFTI1Jh+6K2hETZr4q2Z3kV8VQKgn
o35K0jIWYNqvdd1YoGsbDFPEEQZgdKVzl1wmWW5oDfBuahsfUEwCgspONZYu
U+ejoMgjpEUlO52VuYSK+mTZRC5XyhYoHellyApFspv3IEdC2TAzMsHMSLKI
a9dRoAsZp492ItNiqepay5H8QiXOGx+CNy9tLKa2IyuRlQ1oAddwtf1cbYqu
EU3/+vmmtIca6/uknlURbEIPEVsB5hJSWWf+XfH40BFTOImbGtUECdvprw6z
550oOluZaKqaZtDOiEdwbUUZ7Rbdyrvmi5p2vqjPCb1dviiVBwlZCcZ9IroJ
rt16BlA7uhO4myWyoJfwbtoquqvjpvvvgD+SfIrCwgoufxgxIwT7MsN3Lufl
+H3GhnG4A/MsrSWsgezXwUXyJiWxDNG1DAg3yHaTvJHqRWsbZiDOR445yhwF
v6/EEXKjWfM1yzqSXTwwYVDEvpIntre32Z5pFc1gMXmrrgGyhHI5vFwP4T+c
A23lCJvvnRboxBg25RC3ZoOVwovHWGC3FszIHzAVzz4iC6FwI5A3kcDHlFHZ
eoHppLCqkfBEddtcMBkLs3YKZ7vZa+drs8d4YGlBz6943nVIQcKTdFeUi4AB
5a/KZYXK4ahNp9DNL5SNYjIRmeqmrGywrSuQwX5OFvknH7BkY/vMGIFAmeIs
SPrSlx7T+imMd51WE+8rczCknJ8lFb4bY/xwEQKU9VPcNRUWjZ+gpPYai6IB
oFzMqXfY21RgtNrGiiCRGwWrBHE4LsYdCYJ4T4eghI5GKAsdGeN8hTbEnKMM
WhmIxHxSdsn5+K9GovNBBsAoQAmODDUcCV3oupWJCnaB6K7Pdco+pkunyHbw
IIgyihwnx2JQpps/nIne/DXRMm2NBkrjUwkdPqXJLL9CuEREyi5IyVq9ERRZ
fD0UjhWgxTNbkhH4tvwzyqR9Abew0JwvlBeGKLr6foHh7SebX/6ng75SeHHJ
mY2hLprEesREe27FsvYVJQiq6fFpXGaEeYAGk5yqTbUqffiAsG5RqEi0KZ64
IheVHAM7iwcUtEJnGXWxMnXm2n7tkaU+nfvmVVVS9VgAMPvDA5qIovh1Wb0P
i0Z26nRijgYBWWnSbly5T5KdggRdUtmd0dFGCtQcuz715T0JBoaDC9lxqqJ8
OTPkL1IS9DJbl+KqklKBsji/EuPqZXLttLZHz1E2xVPvgMBYQjWr7bVZoZxB
eUlGZRn4Epu5zcxEZLLVVwEmcyxcsW5XpsRbji8Yi10Y0+ji569TVG8EY8iu
QVJqVgcR1IixYXaJi1lgP1mgEdn1jZLDWhZDVUf5KSKXl1gcXJ3H11XgoHSj
tAYoXVIdHAm84dBF+xbl7awWNm5uzlWlDFkD2dfXLexS20iC/GqFASYIRrdm
PD/CFrZtYwacBILb5MG2eKQVCLsJhTnW7BGrIOduCWZeFu4on8pRHhhQ9nvn
atdTALyJIIOr8UOqviUFnHk1R5s2ny2FnmHlBms4FPGD6RQxGUT8gC4lwXJ8
WS1Fb+CvKxA2KINLLGw612QqNggdrkOSnEOCdqTLBACLHy0GaInjSqz5lGuj
oGH1koo5I0tdIbbTqxhOXZaoeW0GqGMjuuDEkr9EMR4B2oaArnZSBMWawujS
QGoGTF5mtkYhyyI4TYa+r3hcGa0ErfM8mgtO9jWKTtzU4+yOeCOD5mqEEG/y
YkZsab4mwzcaSIbldDhHAkyKEFctudfi6xJc1cMJyQTpuJkU2KwbH0om5abI
Vutf0ybSXc4KViqNHkTbUtuvSekq49iyr3KFYVQ2SQqV65yIA4p++BUKoeRx
s7FlcS7frd6YUB5WPmaLDekRrlodGlvo3+bkKX8sYUlUSAVzpnqiaj36BUwf
y/xIvawJ2w7WUiHMycye98B+ie671VgDNum0pDdRRjDa9OCa3d/+uL3zwCWO
u4J7bru2dCfJRmUVvnlgK2172SnAB/QIDTnOyv2ES0ruO6vQJYnkJDZvPxgY
Xzqob8xyMrn1kGbngStHMUahgBX7GBB2HwS1X73qEze79myA65nFjdf0iWl9
Qgv89EnSVXLQuTFWGkQr4IILUCv/4sTglYqj9nHvf02eIPn/q2BccoG5itH/
/dX89WCI/5P/bPofvJsATLZhXK5sMzyxhzGACfXuEnl3B9fAB3fju7vRcV+H
YJN396Ljdt79dJDcawExoSYmf9g6d0iNwKm3PvfIdBErSNsvryQddJ9HM48p
jbJPAvRy8e9qL/hZ9m6orBNmrFnEJtrHH5GwC5f5DRJvpP90zf1EQZUHDAhm
B/8S/smo5kdxarqepW6VN3T5+6Stqo+Vuspc4jXT0n/PaIcvMPoJjaXHH3Ec
pPH9FlpVwdBVvscc4Pc81sKOlbmxdBGJR/I6mlTPc4nf0NDuJqGwJfAyM0RA
iZa7muU9ZZZ7OhOEqICSMAOf1m/XKyZ/ic2tO/uiDBynJvpSPuIY1EK7q01L
RTxkeF0TKcpJJPfd54iBdJ6xlb1Vs8S6893YXHYcPUXhlvpKc+rz8FZ/nk+o
3dbxf2Cg8PHZUC92y6ROX+OKcvK6xDEAoES5s9wn7EtkEY18CPD5FsoBq3Gj
6zygVn4N6Po///M/ZuPHyae21ObLyCb3H+8/GLR/1/nq5yvyDE38sM9p/8+z
4goAcv+bL/v8/jej0V2/tPv54qntAPdhbvOZIIdUdppfDa+boUWHoT0zobab
gcsHs0UJzgFSHb46kdRB1g8CdGDfHRvWSlYeuC5rw6UXalBgUymkhqPujPYi
tVhut9tLEBQWoOdhdN9wzrADjcRO27F2ScHbNpELisPaiqEc6qGLrDqjsmTq
YdEJI2U8qkwIIn0AfKFKaxtggHTLya5l1V/s1Ya/dOry9mSxR/1VROVfHT6l
Wph2pE/35AkFoMq/Ofry0L3s7K61qx9lH3VKEtvSe3/Y/rjz7faT/ad735CJ
bkZ5LE7EtaG9rSnqdoBILo1PMm0pImuC5X6sqtGivG5svbdBMwhlrUETjkAr
vcJKQMQbp+j/TWGGdZ1TlhoSZh5fks11WNiA479oaELaPv7IWNwGJruODblX
a9t7hvuxUGD4MnUZa4JmunDPNicY/ZM0CCLHkdWYEVJc+rHlIRLYAiI7FSj0
Btn+BmgAaK8X4IOmHXK4B00HWDRvv+4N4/Uinc+zypBxGsVcbg/BxSpYQVI2
DvKdgdKAKWg1CM6ux4rHwea6NJfrBts3oEEU/+lsPCQ5c8MK+YWqMlFm1Nb2
lnuP6amwks6lwEZJOND9/EHyh8RjMtJeS4lzosSvBNj3ibSH9NUehNDU9izP
qKbBloRP2YHCmmjCQgmT5xyrXKMEIYYaggJ5+NFwxAsDxu7lBLFvyZpt8Mhh
YMrBYyov57nL1ZISV7J8g0EjmIjOdThdzLTdHRXg/MlKKpQY96f7UgLjgRgg
WtV9PfFp/UJEqPXMEqO+EsG3JEomJErf2nAByvdqlbxAiF9WqyXaVnzme+7T
DwxdWIqsiJgaXFX2wP8dW/wgyGsaiyuLLXVSKmRqIqZS0UiUNcPNfMFJcFFQ
ufYrGIVDbaLs7SLmpL95e3jBZAf4StBojAIfjjDsA9GwwYjOXJW7S5Mza+48
x9trUU50NbUZiVGILdSGppE+lXk7sM4iM4Epj0lsODXdIcnbmNk8ap8uxnen
mXF8KDxDDuVtqr1AF0gHt4id6GirMr3WIF2UulP1Irg+RqJvw+1wTfaek3Va
r9+vT7jlnWpPrAphOkCIMoWWuCVyMqYYpSWJ1hKratyBSKwNaAXVlfsMWCog
LZpc1s5aKEyAStMLukhMsBXi+yhDDwX+tkuBvWFAHkTrXXGNniNkA/JaCF16
2BaP31LXvLe2woiIxj1LDsl570Hp/HHvFKWSlQcGuxK6/WBHvuSAKjBX3MvP
CrIc8MdsjdyC04gRUnfdYIO+NKCEpxwu4+sOjWjmGwB343okstAGHGu11/fI
c4nTvCCpUmTTla9na23CzGtZqi2w3irP62fg0XThG+rnAHQKcDmXdnjoqyyk
O97e7hANeBWVSFFiNI2jA3T24xWhpCKPqkKKoVRYTwXG2f44lf8NeECJZ5YL
I276vHZ8vrFh5LUK1gtKWfM4tkAPH1iAwjcej6qHS8cTlujw1JbpXAtfdGw/
yCRUyZj8Yy41HNMjYJtIQL1uNLDKXYtM+Xpez6iIAm7ACK84KYahQY0OoEuP
OXhCiY2qRkZvgQ1fLIaLITo8S+fX6bpOOHoVfsPMSe9PHW2SQNzp2yocrCHq
0Rl/JWgyA8i9ITmbAMWqck2FB4sJWrODWVj4ZwbnfLVXqxQwt8mQLVhOuEjf
EzTI52arAq2JUfWJZw654lzJS6EFFWbr5z+5qsHM1ixdlim3h87FoFVZJhYO
gy4NgXCof7HCoX4mwuGN8h8Wm8wmnbnuh0Lh4QPciFM5IxkKaRP6vD2FmuT1
mCO4rBV3SVYQE7H+jToLcWZBKS/E2erk3wrFwaJTRsAKfsJO47DsYaeHvxQ7
7XBO7Mfx1iXeOM4ZXV2Hc8a6dvyinFPlS9/ANuUBU0M+aR+s/qvyTFURjI0P
iiqzwIr1i3AtYQW/DUyyzR95tP/NTPKwp0bwHlu5vffZ2s9V2kWngYyNiXel
gXupYaHSOactgUYKhm6doUy9hSxh6xzG2xKayNYUVV/GRQX1XAzjqqAtuXWV
LSrQt7hpmOphebIhv2zKRftUgCyvgnv1WjYYvaAdNuhcMpjgW/umcuTqFrK1
kQ8G0/xD8UFxRPcdSe7VLcXkuraP0Oqh7R2x+CjVV8iW/o/RLrb0AYGztIuC
iZi4EhPQhWu7ghUlILNBxPGJJ4im7q8jRlITd8PbJnvWbIgzSl2XZycvVbjC
QEukaEo1ZO1yHSdlgEVava8tyrZCHHKOgHVOZBezwSZipGxoZLUWMq/8+73o
jBJfGzq1ytFcAcHef81sb6W1PhmN/IS3YLny4CkKGDHD4nVEJ+3VRiOYZFPA
elip4qMHrQ6O7g5bVnNjVIYc2LlloxiVotQ91zVGq3ybu8hhGBQM1Erc130N
XE2ozz4UC4GJ+/m/un2us5+GXS/t5o4Xy2YdUz0sqTOJcy5IRXQK9eESQzZD
xMrC3wXGPm9Rxac4kUkil5GuQyH3kRK6kFiTrbL2UnaXI3pK/XNVFeztAzTa
9NLo22kpiabO5lfXUro0zbVcuot+cgonGRR55cgmFmt1eC07gKJBrfXqkvMo
OeVeEiPEmtitJ8a1lFUm1OfPQCop/pmhQ6TNv4VaDr3CXo9gVe2x7MsEbrda
EyAbS2d1mEnqsjkwvqB2tshuSV0TnGG3wkbTyUSXRnK1Y5QuKzFglW6rwiyD
ujh30gDd+C3t7+kD0yoTF5dqH+gutBLoQzG0ma93JEUUTcvI0q3XuSF80Ddu
9AynC5selvO0y2ZeSGFHZitRrQ2W/ZYX6vhKZ8aAs7hfb8NbWEvTy7irzcrW
puwHq1OQHGwl+U/nFWGbyyJnuYBYAFJLiVIXMhKNUB/jrBj1j7laia9bZ/kg
rEyMrbyN2lczZKi71kSbmIrVj3DxpBIZlw4kson1O0gPM8VVXE8Ainu2VTHb
c3G+iV4YBtN+HLuAcLsxbibgnBu9uGq8cyNSZbvNmHrXnEQwyvpNAuyVZuMY
0qZNihUbTGCRkbdVFzfLCijg1wfGStmJdvfrTu05W/8PKcEUgxpiy8a2ZFh9
SE12O1jaYK/bwVIsJp3prbVkY85zhzzfJun5ZEP+qFqJUXJ1K3ttuaqW3Be1
EE+3babj2GuggAYp1DanUQ7JVT+x5cY3JZl/FoCFefo8kqtBKTXXg9p+usN7
q2oYiRObKoQFfE2XIeiwN82jFZdTj7+M2elJWzzvOGLxFJaWxhjaBsrriG67
HHTLQNkLhh5OdnwLhcle90Bx6uVwvKIYo4utq8PvIqUkblSpItbJULESMLvS
PxEQDiSOhQ1g1mQW5ZujgNMGGtCvz3A7UQlfznAtJe4MGWHFJs6Kky9hxZKR
3J22l0cnN/Foc0cenWzk0ebuPPpufOVGHh0rqNJi1WrxxnPsZDPH1jvuZdyS
l5j6qxGo7r+rWyT+Jg6+4WpTWEjAyAkro3CPljZP7iQbKX4eW8yt2brpqWv4
JWx9I+H7Eu5u2ty9U7Egyt3bbTQi3D0sWNxm7ZGaVLikeG4QyAFmgxwQqx16
65KfX1Lw847lPskDkVEvYsrw2FgJqd8sxJ6mlnvS9qBA8LC1yJs/vDXcWo56
rPumvZi7mZC6Bn5zswWpJ/pKW5CMtSD1wUqZkhyY+lwiiBQdl0dHHDzvEwXP
u2Lg+c8RAc+5w7ZNfTa3KYq/wcgxXi1W85S6XbMZyygzFjnQOKWFXQBNtEC+
tURFKv9YpVIa93mJ8Jmu3NVfFaJ9jK6mVdIz8P62Hrinsn4QAG6L5IfMq+aS
ggo8zIWqTOqwWemKQhKNbUnZMQXqPjSKCcqVcy+5IBUDE5CH1PbVpMbQUdhK
moVwYE74CrZgKzBiTKTKn+U6dTFh/vxGQf6Z94Lsb/ebpywMb5Lf66jsfn6T
3H7+BaYqWZITnsdWGI7egiS8BV2LJ+EdGS/Y/87qky07L613O5WRdR1Z5VXn
EEsJf2OhdPf39Wr5L4+3f/8Q/0tKfu6M3DqNWuLiVfot+95daF5hx9rlsYY7
I4w6Eye5XPKN0l+tXPtdz75o3LcXXq1//xaSVLTUGXlmuC2dbxBRKLJkqw8H
/W5YtaBgfEyZkG4SAAosvoHJIyln57t+Olxo1onMISmx3FOq8kyTvXjrELvC
vUHyNRO0nZ0BlXCkmFoeZOdRt1Kx9NKwIdlqp42vim3JCGZcZaCKUZUzDmCW
ErVEnjdoAkp70c4UqWzk9SOvGZn2HZe0+19DgVFUmkIUW+n0g56wn1onrrzP
l0ukdh0vkKA6szf0aHrXPEKN24m1aADJAOTGorITFh94LOQAqvZAzZUt8JZQ
Z8mNtRFNKuHxCG/fQL3Vb1N1qgu2gUVUVC6wK5bsWmyBSn0oRag6Gfuc60c4
xV6wClG4IJmhMdRdC6uFcRHinBMrAKRpZUtUkjgh0aWuuJqU4EYtnODSnraW
m+eaKgfVqn/XdiDr64aRGXuuB4ZcVz4yb4vZeZTcbyRbH/untwoZRGsJPLAN
5VSQBpsoFGrxTcZbTLf5kZHcs8T5BW1CFF8iaT3pfyZqgSKT7oaDjKTdC9ge
MA3zc67VHe0B5zdwA7GZ3toOUN9svDfxPiJfZsrvkRX4DqdckblrEfgbmQLO
f4513/xsM0Bvhdi/jYG/T7tX7ukbTPctlX2j5b7d/+I23S+caqdLpYa6nf7F
Knf6mU12E71blybtFGf1zc0Cm/7+TseP/ajHj035qzl31mOlx9UmJjnDV2/C
Ik8l1mCVjnG37X2J2p2PVkVBVdooTNxsPbuqXS2p3jdsh6uVyDF5sVxxxYFV
IWkxAVqm86sSGNRM8oOpakN2ubq6oqJugrNet4mfYly52d/5In87QvqtVK1V
6kx05kCf6YHHr+l7D0+Z2RGKe1TSj8OjpepUUo5Jfp54IhbF278LFeuH3j+W
JVMHjW4gKJEXwnDSO5GX2HQ9VGbXkQ9zI/lI2uRDavzECYYJCEYSIxgb1unp
hrnhxaDUwM3kw2wiH4kiHxc644myk9N5eYU1DZuycxc4Qis4PozlQvCh8TAA
lKpsT1pnllI8bHgxg/L3YZzq3Sja7i/qd1U+1wjB27S+SCTr3cnfnTNEWsQv
pixK6KCifZnrqNpqAP3LOGPL6VRqoKp4WUuCfXbIBjK86X7/3VxLG8/0jkTZ
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
EQEA

-->

</rfc>
