<?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-masque-connect-ethernet-18" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="CONNECT-ETHERNET">Proxying Ethernet Frames in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ethernet-18"/>
    <author initials="A. R." surname="Sedeño" fullname="Alejandro R Sedeño">
      <organization>Google LLC</organization>
      <address>
        <email>asedeno@google.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="16"/>
    <area>Transport</area>
    <workgroup>Multiplexed Application Substrate over QUIC Encryption</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>VPN</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <keyword>layer-2</keyword>
    <keyword>ethernet</keyword>
    <abstract>
      <?line 55?>

<t>This document specifies how to proxy Ethernet frames in HTTP. This protocol
is similar to IP proxying in HTTP, but for Layer 2 instead of Layer 3. More
specifically, this document defines a protocol that allows an HTTP client to
create a tunnel to exchange Layer 2 Ethernet frames through an HTTP server
with an attached physical or virtual Ethernet segment. The protocol does not
guarantee in-order frame delivery.</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-masque.github.io/draft-ietf-masque-connect-ethernet/draft-ietf-masque-connect-ethernet.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-masque-connect-ethernet/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        MASQUE Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-masque/draft-ietf-masque-connect-ethernet"/>.</t>
    </note>
  </front>
  <middle>
    <?line 65?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP provides the CONNECT method (see <xref section="9.3.6" sectionFormat="of" target="HTTP"/>) for
creating a TCP <xref target="TCP"/> tunnel to a destination, a similar mechanism for
UDP <xref target="CONNECT-UDP"/>, and an additional mechanism for IP
<xref target="CONNECT-IP"/>. However, these mechanisms cannot carry Layer 2 frames
without further encapsulation inside of IP, for instance with EtherIP
<xref target="ETHERIP"/> or L2TP <xref target="L2TP"/> <xref target="L2TPv3"/>, which
consume additional header bytes, reducing the available MTU.</t>
      <t>This document describes a protocol for exchanging IEEE 802.3 <xref target="IEEE802.3"/>
Ethernet frames with an HTTP server. Either participant in the HTTP connection
can then relay Ethernet frames to and from a local or virtual interface. This
can be used by a node to support remote bridging of two Ethernet broadcast
domains to establish a Layer 2 VPN (L2VPN). This can simplify connectivity to
network-connected appliances that are configured to only interact with peers
connected to the same Ethernet broadcast domain.</t>
      <t>This protocol supports all existing versions of HTTP by using HTTP Datagrams
<xref target="HTTP-DGRAM"/>. When using HTTP/2 <xref target="H2"/> or HTTP/3 <xref target="H3"/>, it uses
HTTP Extended CONNECT as described in <xref target="EXT-CONNECT2"/> and
<xref target="EXT-CONNECT3"/>. When using HTTP/1.x <xref target="H1"/>, it uses HTTP Upgrade as
defined in <xref section="7.8" sectionFormat="of" target="HTTP"/>.</t>
      <t>This protocol necessarily incurs additional encapsulation overhead. When
possible, users should use higher-level proxying protocols, such as
<xref target="CONNECT-IP"/> or <xref target="CONNECT-UDP"/>. Furthermore, because frames are tunneled over
HTTP and may be carried over unreliable, out-of-order datagram transports,
applications or protocols that require strict in-order frame delivery, lossless
transmission, or real-time delivery guarantees should not be expected to
function properly over this protocol.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>In this document, the term "Ethernet proxy" refers to the HTTP server
that responds to the Ethernet proxying request. The term "client" is used in the
HTTP sense; the client constructs the Ethernet proxying request. If there are
HTTP intermediaries (as defined in <xref section="3.7" sectionFormat="of" target="HTTP"/>) between the client
and the Ethernet proxy, those are referred to as "intermediaries" in this
document. The term "Ethernet proxying endpoints" refers to both the client and
the Ethernet proxy.</t>
      <t>This document uses terminology from <xref target="QUIC"/>. Where this document
defines protocol types, the definition format uses the notation from <xref section="1.3" sectionFormat="of" target="QUIC"/>. This specification uses the variable-length integer encoding
from <xref section="16" sectionFormat="of" target="QUIC"/>. Variable-length integer values do not
need to be encoded in the minimum number of bytes necessary.</t>
      <t>Note that, when the HTTP version in use does not support multiplexing streams
(such as HTTP/1.1), any reference to "stream" in this document represents the
entire connection.</t>
    </section>
    <section anchor="client-config">
      <name>Configuration of Clients</name>
      <t>Clients are configured to use Ethernet proxying over HTTP via a URI Template
<xref target="TEMPLATE"/>. The URI Templates used by this protocol do not require
any variables, and this document does not define any; implementations or
extensions <bcp14>MAY</bcp14> specify their own. The optionality of variables needs to be
considered when defining the template so that variables are either
self-identifying or possible to exclude in the syntax. How valid values for such
variables are formatted, communicated, or validated is not a part of this
protocol. URI Templates specified for this protocol <bcp14>MAY</bcp14> use the well-known
location <xref target="WELL-KNOWN"/> registered by this document (see
<xref target="iana-suffix"/>).</t>
      <t>Examples are shown below:</t>
      <artwork><![CDATA[
https://example.org/.well-known/masque/ethernet/
https://proxy.example.org:4443/masque/ethernet/
https://masque.example.org/?user=bob
]]></artwork>
      <t>The following requirements apply to the URI Template:</t>
      <ul spacing="normal">
        <li>
          <t>The URI Template <bcp14>MUST</bcp14> be a template of type level 3 or lower (see <xref section="1.2" sectionFormat="of" target="TEMPLATE"/>).</t>
        </li>
        <li>
          <t>The URI Template <bcp14>MUST</bcp14> be in absolute form (see <xref section="4.3" sectionFormat="of" target="URI"/>)
and <bcp14>MUST</bcp14> include non-empty scheme, authority, and path components.</t>
        </li>
        <li>
          <t>The path component of the URI Template <bcp14>MUST</bcp14> start with a slash "/".</t>
        </li>
        <li>
          <t>All template variables <bcp14>MUST</bcp14> be within the path or query components of the URI.</t>
        </li>
        <li>
          <t>The URI Template <bcp14>MUST NOT</bcp14> contain any non-ASCII Unicode characters and <bcp14>MUST</bcp14>
only contain ASCII characters in the range 0x21-0x7E inclusive (note that
percent-encoding is allowed; see <xref section="2.1" sectionFormat="of" target="URI"/>).</t>
        </li>
        <li>
          <t>The URI Template <bcp14>MUST NOT</bcp14> use Reserved Expansion ("+" operator), Fragment
Expansion ("#" operator), Label Expansion with Dot-Prefix, Path Segment
Expansion with Slash-Prefix, nor Path-Style Parameter Expansion with
Semicolon-Prefix.</t>
        </li>
      </ul>
      <t>Clients <bcp14>SHOULD</bcp14> validate the requirements above; however, clients <bcp14>MAY</bcp14> use a
general-purpose URI Template implementation that lacks this specific
validation. If a client detects that any of the requirements above are not met
by a URI Template, the client <bcp14>MUST</bcp14> reject its configuration and abort the
request without sending it to the Ethernet proxy.</t>
    </section>
    <section anchor="tunnelling-ethernet-frames-over-http">
      <name>Tunnelling Ethernet frames over HTTP</name>
      <t>To allow negotiation of a tunnel for Ethernet frames over HTTP, this document
defines the "connect-ethernet" HTTP upgrade token. The resulting Ethernet
tunnels use the Capsule Protocol (see <xref section="3.2" sectionFormat="of" target="HTTP-DGRAM"/>) with HTTP
Datagrams in the format defined in <xref target="payload-format"/>.</t>
      <t>To initiate an Ethernet tunnel associated with a single HTTP stream, a client
issues a request containing the "connect-ethernet" upgrade token.</t>
      <t>By virtue of the definition of the Capsule Protocol (see <xref section="3.2" sectionFormat="of" target="HTTP-DGRAM"/>), Ethernet proxying requests do not carry any message content.
Similarly, successful Ethernet proxying responses also do not carry any message
content.</t>
      <t>Ethernet proxying over HTTP <bcp14>MUST</bcp14> be operated over TLS or QUIC encryption, or another
equivalent encryption protocol, to provide confidentiality, integrity, and
authentication.</t>
      <section anchor="ethernet-proxy-handling">
        <name>Ethernet Proxy Handling</name>
        <t>Upon receiving an Ethernet proxying request:</t>
        <ul spacing="normal">
          <li>
            <t>If the recipient is configured to use another HTTP proxy, it will act as an
intermediary by forwarding the request to another HTTP server. Note that
such intermediaries may need to re-encode the request if they forward it
using a version of HTTP that is different from the one used to receive it,
as the request encoding differs by version (see below).</t>
          </li>
          <li>
            <t>Otherwise, the recipient will act as an Ethernet proxy. The Ethernet proxy
can choose to reject the Ethernet proxying request or establish an Ethernet
tunnel.</t>
          </li>
        </ul>
        <t>The lifetime of the Ethernet tunnel is tied to the Ethernet proxying request
stream.</t>
        <t>A successful response (as defined in Sections <xref format="counter" target="resp1"/> and <xref format="counter" target="resp23"/>)
indicates that the Ethernet proxy has established an Ethernet tunnel and is
willing to proxy Ethernet frames. Any response other than a successful response
indicates that the request has failed; thus, the client <bcp14>MUST</bcp14> abort the request.</t>
      </section>
      <section anchor="req1">
        <name>HTTP/1.1 Request</name>
        <t>When using HTTP/1.1 <xref target="H1"/>, an Ethernet proxying request will meet the following
requirements:</t>
        <ul spacing="normal">
          <li>
            <t>The method <bcp14>SHALL</bcp14> be "GET".</t>
          </li>
          <li>
            <t>The request <bcp14>SHALL</bcp14> include a single Host header field containing the host
and optional port of the Ethernet proxy.</t>
          </li>
          <li>
            <t>The request <bcp14>SHALL</bcp14> include a Connection header field with value "Upgrade"
(note that this requirement is case-insensitive as per <xref section="7.6.1" sectionFormat="of" target="HTTP"/>).</t>
          </li>
          <li>
            <t>The request <bcp14>SHALL</bcp14> include an Upgrade header field with value "connect-ethernet".</t>
          </li>
        </ul>
        <t>An Ethernet proxying request that does not conform to these restrictions is
malformed. The recipient of such a malformed request <bcp14>MUST</bcp14> respond with a 4xx
(Client Error) status code and <bcp14>SHOULD</bcp14> use the 400 (Bad Request) status code.</t>
        <t>For example, if the client is configured with the URI Template
"https://example.org/.well-known/masque/ethernet/" and wishes to open an
Ethernet tunnel, it could send the following request.</t>
        <figure anchor="fig-req-h1">
          <name>Example HTTP/1.1 Request</name>
          <sourcecode type="http-message"><![CDATA[
GET https://example.org/.well-known/masque/ethernet/ HTTP/1.1
Host: example.org
Connection: Upgrade
Upgrade: connect-ethernet
Capsule-Protocol: ?1
]]></sourcecode>
        </figure>
      </section>
      <section anchor="resp1">
        <name>HTTP/1.1 Response</name>
        <t>The server indicates success by replying with a response that conforms to the
following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>The HTTP status code on the response <bcp14>SHALL</bcp14> be 101 (Switching Protocols).</t>
          </li>
          <li>
            <t>The response <bcp14>SHALL</bcp14> include a Connection header field with value "Upgrade"
(note that this requirement is case-insensitive as per <xref section="7.6.1" sectionFormat="of" target="HTTP"/>).</t>
          </li>
          <li>
            <t>The response <bcp14>SHALL</bcp14> include a single Upgrade header field with value
"connect-ethernet".</t>
          </li>
          <li>
            <t>The response <bcp14>SHALL</bcp14> meet the requirements of HTTP responses that start the
Capsule Protocol; see <xref section="3.2" sectionFormat="of" target="HTTP-DGRAM"/>.</t>
          </li>
        </ul>
        <t>If any of these requirements are not met, the client <bcp14>MUST</bcp14> treat this proxying
attempt as failed and close the connection.</t>
        <t>For example, the server could respond with:</t>
        <figure anchor="fig-resp-h1">
          <name>Example HTTP/1.1 Response</name>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: connect-ethernet
Capsule-Protocol: ?1
]]></sourcecode>
        </figure>
      </section>
      <section anchor="req23">
        <name>HTTP/2 and HTTP/3 Requests</name>
        <t>When using HTTP/2 <xref target="H2"/> or HTTP/3 <xref target="H3"/>, Ethernet proxying requests use HTTP
Extended CONNECT. This requires that servers send an HTTP Setting as specified
in <xref target="EXT-CONNECT2"/> and <xref target="EXT-CONNECT3"/> and that requests use HTTP
pseudo-header fields with the following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>The :method pseudo-header field <bcp14>SHALL</bcp14> be "CONNECT".</t>
          </li>
          <li>
            <t>The :protocol pseudo-header field <bcp14>SHALL</bcp14> be "connect-ethernet".</t>
          </li>
          <li>
            <t>The :authority pseudo-header field <bcp14>SHALL</bcp14> contain the authority of the Ethernet
proxy.</t>
          </li>
          <li>
            <t>The :path and :scheme pseudo-header fields <bcp14>SHALL NOT</bcp14> be empty. Their values
<bcp14>SHALL</bcp14> contain the scheme and path from the configured URI Template; see
<xref target="client-config"/>.</t>
          </li>
        </ul>
        <t>An Ethernet proxying request that does not conform to these restrictions is
malformed; see <xref section="8.1.1" sectionFormat="of" target="H2"/> and <xref section="4.1.2" sectionFormat="of" target="H3"/>.</t>
        <t>For example, if the client is configured with the URI Template
"https://example.org/.well-known/masque/ethernet/" and wishes to open an
Ethernet tunnel, it could send the following request.</t>
        <figure anchor="fig-req-h2">
          <name>Example HTTP/2 or HTTP/3 Request</name>
          <sourcecode type="http-message"><![CDATA[
HEADERS
:method = CONNECT
:protocol = connect-ethernet
:scheme = https
:path = /.well-known/masque/ethernet/
:authority = example.org
capsule-protocol = ?1
]]></sourcecode>
        </figure>
      </section>
      <section anchor="resp23">
        <name>HTTP/2 and HTTP/3 Responses</name>
        <t>The server indicates success by replying with a response that conforms to the
following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>The HTTP status code on the response <bcp14>SHALL</bcp14> be in the 2xx (Successful) range.</t>
          </li>
          <li>
            <t>The response <bcp14>SHALL</bcp14> meet the requirements of HTTP responses that start the
Capsule Protocol; see <xref section="3.2" sectionFormat="of" target="HTTP-DGRAM"/>.</t>
          </li>
        </ul>
        <t>If any of these requirements are not met, the client <bcp14>MUST</bcp14> treat this proxying
attempt as failed and abort the request. As an example, any status code in the
3xx range will be treated as a failure and cause the client to abort the
request.</t>
        <t>For example, the server could respond with:</t>
        <figure anchor="fig-resp-h2">
          <name>Example HTTP/2 or HTTP/3 Response</name>
          <sourcecode type="http-message"><![CDATA[
HEADERS
:status = 200
capsule-protocol = ?1
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="context-identifiers">
      <name>Context Identifiers</name>
      <t>The mechanism for proxying Ethernet frames in HTTP defined in this document
allows future extensions to exchange HTTP Datagrams that have different
semantics, similar to the extension mechanisms specified in <xref section="5" sectionFormat="of" target="CONNECT-IP"/>. Some of these extensions could augment Ethernet payloads with
additional data or compress Ethernet frame header fields. To provide this
extension point, all HTTP Datagrams associated with Ethernet proxying request
streams start with a Context ID field; see <xref target="payload-format"/>.</t>
      <t>Context IDs are 62-bit integers (0 to 2<sup>62</sup>-1). Context IDs are encoded as
variable-length integers; see <xref section="16" sectionFormat="of" target="QUIC"/>. The Context ID value of 0
is reserved for Ethernet payloads, while non-zero values are dynamically
allocated. Non-zero even-numbered Context IDs are client-allocated, and
odd-numbered Context IDs are proxy-allocated. The Context ID namespace is tied
to a given HTTP request; it is possible for a Context ID with the same numeric
value to be simultaneously allocated in distinct requests, potentially with
different semantics. Context IDs <bcp14>MUST NOT</bcp14> be re-allocated within a given HTTP
request but <bcp14>MAY</bcp14> be allocated in any order. The Context ID allocation
restrictions to the use of even-numbered and odd-numbered Context IDs exist in
order to avoid the need for synchronization between endpoints. However, once a
Context ID has been allocated, those restrictions do not apply to the use of the
Context ID; it can be used by either the client or the Ethernet proxy,
independent of which endpoint initially allocated it.</t>
      <t>Registration is the action by which an endpoint informs its peer of the
semantics and format of a given Context ID. This document does not define how
registration occurs. Future extensions <bcp14>MAY</bcp14> use HTTP header fields or capsules
to register Context IDs. Depending on the method being used, it is possible for
datagrams to be received with Context IDs that have not yet been registered.
For instance, this can be due to reordering of the packet containing the
datagram and the packet containing the registration message during transmission.</t>
    </section>
    <section anchor="payload-format">
      <name>HTTP Datagram Payload Format</name>
      <t>When associated with Ethernet proxying request streams, the HTTP Datagram
Payload field of HTTP Datagrams (see <xref target="HTTP-DGRAM"/>) has the format defined in
<xref target="dgram-format"/>. Note that when HTTP Datagrams are encoded using QUIC DATAGRAM
frames, the Context ID field defined below directly follows the Quarter Stream
ID field which is at the start of the QUIC DATAGRAM frame payload.</t>
      <figure anchor="dgram-format">
        <name>Ethernet Proxying HTTP Datagram Format</name>
        <artwork><![CDATA[
Ethernet Proxying HTTP Datagram Payload {
  Context ID (i),
  Payload (..),
}
]]></artwork>
      </figure>
      <t>The Ethernet Proxying HTTP Datagram Payload contains the following fields:</t>
      <dl spacing="compact">
        <dt>Context ID:</dt>
        <dd>
          <t>A variable-length integer that contains the value of the Context ID. If an
HTTP/3 datagram which carries an unknown Context ID is received, the receiver
<bcp14>SHALL</bcp14> either drop that datagram silently or buffer it temporarily (on the order
of a round trip) while awaiting the registration of the corresponding Context
ID.</t>
        </dd>
        <dt>Payload:</dt>
        <dd>
          <t>The payload of the datagram, whose semantics depend on value of the previous
field. Note that this field can be empty.</t>
        </dd>
      </dl>
      <t>Ethernet frames are encoded using HTTP Datagrams with the Context ID set to
zero. When the Context ID is set to zero, the Payload field contains a full
Layer 2 Ethernet Frame (from the start of the Destination Address field through
the last byte before the Frame Check Sequence (FCS) field), as defined by IEEE
802.3 <xref target="IEEE802.3"/>. A complete frame could include an IEEE 802.1Q
<xref target="IEEE802.1Q"/> tag (see <xref target="vlan-recommendations"/>).</t>
      <t>The Frame Check Sequence field is omitted from proxied Ethernet frames to reduce
overhead and because standard network interfaces strip the FCS on ingress and
regenerate it on egress. A future extension could introduce an encoding that
includes the FCS.</t>
      <t>If an Ethernet proxy receives an HTTP Datagram before it has received the
corresponding request, it <bcp14>SHALL</bcp14> either drop that HTTP Datagram silently or
buffer it temporarily (on the order of a round trip) while awaiting the
corresponding request.</t>
      <t>Note that buffering datagrams (either because the request was not yet received
or because the Context ID is not yet known) consumes resources. Receivers that
buffer datagrams <bcp14>SHOULD</bcp14> apply buffering limits in order to reduce the risk of
resource exhaustion occurring. For example, receivers can limit the total number
of buffered datagrams or the cumulative size of buffered datagrams on a
per-stream, per-context, or per-connection basis.</t>
    </section>
    <section anchor="ethernet-frame-handling">
      <name>Ethernet Frame Handling</name>
      <t>This document defines a tunnelling mechanism that is conceptually a point-to-point
Ethernet link. An Ethernet proxying connection established between two Ethernet
proxying endpoints emulates a single Ethernet link between those two endpoints,
providing an Ethernet Media Access Control (MAC) service that delivers each
Ethernet frame received at the ingress to the egress at the other end of the
tunnel.</t>
      <t>When an endpoint attaches this emulated link to an external network, it might
need to handle some of the responsibilities of an Ethernet switch or bridge if
it does not delegate them to another component, such as an operating system kernel.
Those responsibilities are beyond the scope of this document, and include, but
are not limited to, the forwarding of broadcast and multicast frames, and the
local termination of PAUSE frames.</t>
      <t>When bridging Ethernet segments, undetected forwarding loops can lead to
broadcast storms that exhaust tunnel capacity, cause congestion and Ethernet
frame loss, and disrupt tunneled control protocols. Implementations that bridge
Ethernet segments <bcp14>MUST</bcp14> employ loop prevention mechanisms, such as the Spanning
Tree Protocol (STP) or Rapid Spanning Tree Protocol (RSTP) <xref target="IEEE802.1Q"/>, unless
they delegate that responsibility to another component such as an operating
system kernel, or the topology is known to be loop-free. Implementations can also
monitor frame rates for unexpected traffic spikes and apply rate limits to
broadcast and multicast Ethernet frames.</t>
      <t>If an Ethernet proxying endpoint fails to deliver an Ethernet frame to an
underlying Ethernet segment, the endpoint <bcp14>MUST</bcp14> drop the Ethernet frame.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>Ethernet proxying in HTTP enables the bridging of Ethernet broadcast domains.
These examples are provided to help illustrate some of the ways in which Ethernet
proxying can be used.</t>
      <section anchor="example-remote">
        <name>Remote Access L2VPN</name>
        <t>The following example shows a point to point VPN setup where a client
appears to be connected to a remote Ethernet broadcast domain.</t>
        <figure anchor="diagram-tunnel">
          <name>L2VPN Tunnel Setup</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="520" viewBox="0 0 520 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                <path d="M 80,32 L 80,96" fill="none" stroke="black"/>
                <path d="M 248,32 L 248,96" fill="none" stroke="black"/>
                <path d="M 320,32 L 320,96" fill="none" stroke="black"/>
                <path d="M 424,32 L 424,96" fill="none" stroke="black"/>
                <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
                <path d="M 248,32 L 320,32" fill="none" stroke="black"/>
                <path d="M 424,32 L 456,32" fill="none" stroke="black"/>
                <path d="M 80,48 L 248,48" fill="none" stroke="black"/>
                <path d="M 88,64 L 104,64" fill="none" stroke="black"/>
                <path d="M 320,64 L 456,64" fill="none" stroke="black"/>
                <path d="M 80,80 L 248,80" fill="none" stroke="black"/>
                <path d="M 8,96 L 80,96" fill="none" stroke="black"/>
                <path d="M 248,96 L 320,96" fill="none" stroke="black"/>
                <path d="M 424,96 L 456,96" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="464,96 452,90.4 452,101.6" fill="black" transform="rotate(0,456,96)"/>
                <polygon class="arrowhead" points="464,64 452,58.4 452,69.6" fill="black" transform="rotate(0,456,64)"/>
                <polygon class="arrowhead" points="464,32 452,26.4 452,37.6" fill="black" transform="rotate(0,456,32)"/>
                <polygon class="arrowhead" points="96,64 84,58.4 84,69.6" fill="black" transform="rotate(180,88,64)"/>
                <g class="text">
                  <text x="484" y="36">HOST</text>
                  <text x="512" y="36">1</text>
                  <text x="284" y="52">Ethernet</text>
                  <text x="372" y="52">Ethernet</text>
                  <text x="44" y="68">Client</text>
                  <text x="140" y="68">Ethernet</text>
                  <text x="212" y="68">Tunnel--</text>
                  <text x="288" y="68">Proxy</text>
                  <text x="484" y="68">HOST</text>
                  <text x="512" y="68">2</text>
                  <text x="376" y="84">Broadcast</text>
                  <text x="364" y="100">Domain</text>
                  <text x="484" y="100">HOST</text>
                  <text x="512" y="100">3</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+--------+                    +--------+            +---> HOST 1
|        +--------------------+Ethernet|  Ethernet  |
| Client |<--Ethernet Tunnel--|  Proxy +------------+---> HOST 2
|        +--------------------+        |  Broadcast |
+--------+                    +--------+  Domain    +---> HOST 3

]]></artwork>
          </artset>
        </figure>
        <t>In this case, the client connects to the Ethernet proxy and immediately can
start sending Ethernet frames to the attached broadcast domain.</t>
        <figure anchor="fig-full-tunnel">
          <name>VPN Full-Tunnel Example</name>
          <artwork><![CDATA[
[[ From Client ]]             [[ From Ethernet Proxy ]]

SETTINGS
  H3_DATAGRAM = 1

                              SETTINGS
                                ENABLE_CONNECT_PROTOCOL = 1
                                H3_DATAGRAM = 1

STREAM(44): HEADERS
:method = CONNECT
:protocol = connect-ethernet
:scheme = https
:path = /.well-known/masque/ethernet/
:authority = proxy.example.com
capsule-protocol = ?1

                              STREAM(44): HEADERS
                              :status = 200
                              capsule-protocol = ?1

DATAGRAM
Quarter Stream ID = 11
Context ID = 0
Payload = Encapsulated Ethernet Frame

                              DATAGRAM
                              Quarter Stream ID = 11
                              Context ID = 0
                              Payload = Encapsulated Ethernet Frame
]]></artwork>
        </figure>
      </section>
      <section anchor="site-to-site-l2vpn">
        <name>Site-to-Site L2VPN</name>
        <t>The following example shows a site-to-site VPN setup where a client
joins a locally attached broadcast domain to a remote broadcast domain
through the Proxy.</t>
        <figure anchor="diagram-s2s">
          <name>Site-to-site L2VPN Example</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="448" viewBox="0 0 448 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 80,32 L 80,96" fill="none" stroke="black"/>
                <path d="M 96,96 L 96,192" fill="none" stroke="black"/>
                <path d="M 152,32 L 152,96" fill="none" stroke="black"/>
                <path d="M 296,32 L 296,96" fill="none" stroke="black"/>
                <path d="M 352,96 L 352,192" fill="none" stroke="black"/>
                <path d="M 368,32 L 368,96" fill="none" stroke="black"/>
                <path d="M 80,32 L 152,32" fill="none" stroke="black"/>
                <path d="M 296,32 L 368,32" fill="none" stroke="black"/>
                <path d="M 152,48 L 296,48" fill="none" stroke="black"/>
                <path d="M 152,80 L 296,80" fill="none" stroke="black"/>
                <path d="M 80,96 L 152,96" fill="none" stroke="black"/>
                <path d="M 296,96 L 368,96" fill="none" stroke="black"/>
                <path d="M 64,128 L 96,128" fill="none" stroke="black"/>
                <path d="M 352,128 L 384,128" fill="none" stroke="black"/>
                <path d="M 64,160 L 96,160" fill="none" stroke="black"/>
                <path d="M 352,160 L 384,160" fill="none" stroke="black"/>
                <path d="M 64,192 L 96,192" fill="none" stroke="black"/>
                <path d="M 352,192 L 384,192" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="392,192 380,186.4 380,197.6" fill="black" transform="rotate(0,384,192)"/>
                <polygon class="arrowhead" points="392,160 380,154.4 380,165.6" fill="black" transform="rotate(0,384,160)"/>
                <polygon class="arrowhead" points="392,128 380,122.4 380,133.6" fill="black" transform="rotate(0,384,128)"/>
                <polygon class="arrowhead" points="72,192 60,186.4 60,197.6" fill="black" transform="rotate(180,64,192)"/>
                <polygon class="arrowhead" points="72,160 60,154.4 60,165.6" fill="black" transform="rotate(180,64,160)"/>
                <polygon class="arrowhead" points="72,128 60,122.4 60,133.6" fill="black" transform="rotate(180,64,128)"/>
                <g class="text">
                  <text x="332" y="52">Ethernet</text>
                  <text x="116" y="68">Client</text>
                  <text x="192" y="68">-Ethernet</text>
                  <text x="264" y="68">Tunnel-</text>
                  <text x="336" y="68">Proxy</text>
                  <text x="20" y="132">HOST</text>
                  <text x="48" y="132">A</text>
                  <text x="140" y="132">Ethernet</text>
                  <text x="308" y="132">Ethernet</text>
                  <text x="412" y="132">HOST</text>
                  <text x="440" y="132">1</text>
                  <text x="144" y="148">Broadcast</text>
                  <text x="304" y="148">Broadcast</text>
                  <text x="20" y="164">HOST</text>
                  <text x="48" y="164">B</text>
                  <text x="132" y="164">Domain</text>
                  <text x="316" y="164">Domain</text>
                  <text x="412" y="164">HOST</text>
                  <text x="440" y="164">2</text>
                  <text x="20" y="196">HOST</text>
                  <text x="48" y="196">C</text>
                  <text x="412" y="196">HOST</text>
                  <text x="440" y="196">3</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
         +--------+                 +--------+
         |        +-----------------+Ethernet|
         | Client |-Ethernet Tunnel-|  Proxy |
         |        +-----------------+        |
         +-+------+                 +------+-+
           |                               |
HOST A <---+ Ethernet             Ethernet +---> HOST 1
           | Broadcast           Broadcast |
HOST B <---+ Domain                 Domain +---> HOST 2
           |                               |
HOST C <---+                               +---> HOST 3



]]></artwork>
          </artset>
        </figure>
        <t>In this case, the client connects to the Ethernet proxy and immediately can
start relaying Ethernet frames from its attached broadcast domain to the
proxy. The difference between this example and <xref target="example-remote"/> is limited to
what the Client is doing with the tunnel; the exchange between the Client and
the Proxy is the same as in <xref target="fig-full-tunnel"/> above.</t>
      </section>
    </section>
    <section anchor="performance-considerations">
      <name>Performance Considerations</name>
      <t>When the protocol running inside the tunnel uses congestion control (e.g.,
<xref target="TCP"/> or <xref target="QUIC"/>), the proxied traffic will incur at least two nested
congestion controllers. Implementers will benefit from reading the guidance in
<xref section="3.1.11" sectionFormat="of" target="UDP-USAGE"/>. By default, the tunneling of Ethernet
frames <bcp14>MUST NOT</bcp14> assume that the carried Ethernet frames contain congestion
controlled traffic. Optimizations for traffic flows carried within the Ethernet
Frames <bcp14>MAY</bcp14> be done in cases where the content of the Ethernet Frames have been
identified to be congestion controlled traffic.</t>
      <t>Some implementations might find it beneficial to maintain a small buffer of
frames to be sent through the tunnel to smooth out short term variations and
bursts in tunnel capacity. As such a buffer is limited, Ethernet frames can get
dropped when the buffer limit is exceeded.</t>
      <t>When the protocol running inside the tunnel uses loss recovery (e.g., <xref target="TCP"/> or
<xref target="QUIC"/>) and the outer HTTP connection runs over TCP, the proxied traffic will
incur at least two nested loss recovery mechanisms. This can reduce performance,
as both can sometimes independently retransmit the same data. To avoid this,
Ethernet proxying <bcp14>SHOULD</bcp14> be performed over HTTP/3 to allow leveraging the QUIC
DATAGRAM frame.</t>
      <section anchor="mtu-and-frame-ordering-considerations">
        <name>MTU and Frame Ordering Considerations</name>
        <t>Ethernet proxying supports two modes of operation with different implications
for supported frame size and ordering: QUIC DATAGRAM frames and HTTP DATAGRAM
capsules. The trade-off between supporting a larger MTU and avoiding
fragmentation should be considered when deciding which mode to operate in.</t>
        <t>When using HTTP/3 with the QUIC Datagram extension <xref target="QUIC-DGRAM"/>,
Ethernet frames can be transmitted in QUIC DATAGRAM frames. Since DATAGRAM frames
cannot be fragmented, they can only carry Ethernet frames up to the maximum QUIC
DATAGRAM payload size minus HTTP Datagram framing overhead (see
<xref target="payload-format"/>). Implementations <bcp14>MAY</bcp14> rely on <xref target="QUIC"/>'s use of
<xref target="DPLPMTUD"/> to probe and discover the Path MTU (PMTU) over the
connection's lifetime, and adjust any associated interface MTU as needed. If an
arriving Ethernet frame exceeds the available capacity of a QUIC DATAGRAM frame,
the endpoint <bcp14>MUST</bcp14> drop the frame and <bcp14>MUST NOT</bcp14> send it in a DATAGRAM capsule (see
<xref section="3.5" sectionFormat="of" target="HTTP-DGRAM"/>). Furthermore, the UDP packets carrying these
frames could be reordered by the network.</t>
        <t>When using HTTP/1.1 or HTTP/2, and when using HTTP/3 without the QUIC Datagram
extension <xref target="QUIC-DGRAM"/>, Ethernet frames are transmitted in DATAGRAM capsules as
defined in <xref target="HTTP-DGRAM"/>. DATAGRAM capsules are transmitted reliably over an
underlying stream, allowing frames larger than the PMTU to be carried across
multiple TCP or QUIC packets.</t>
        <t>Regardless of the operating mode, if a decapsulated Ethernet frame exceeds the
maximum frame size supported by the egress interface, destination network, or
receiving endpoint, the frame <bcp14>MUST</bcp14> be dropped. Implementations should maintain a
counter of dropped oversized frames.</t>
        <t>Implementations <bcp14>SHOULD NOT</bcp14> intentionally reorder Ethernet frames, but are not
required to provide guaranteed in-order delivery. If in-order delivery of
Ethernet frames is required, DATAGRAM capsules can be used in deployments
without intermediaries that re-encode capsules to QUIC DATAGRAM frames (see
<xref section="3.5" sectionFormat="of" target="HTTP-DGRAM"/>).</t>
      </section>
      <section anchor="vlan-recommendations">
        <name>IEEE 802.1Q tagging</name>
        <t>When the proxy transports Ethernet frames that carry an IEEE 802.1Q
<xref target="IEEE802.1Q"/> Virtual Local Area Network (VLAN) tag, these are by default
transparently forwarded through the tunnel. When the tunnel ingress and/or egress
interprets the tags, there must be agreement (signaled or manually configured)
on how to consistently process each tag at the ingress and the egress. The
procedure for this signalling/configuration is not defined in this document.</t>
        <t>A proxy that is used for access to multiple VLANs <bcp14>MAY</bcp14> map each individual
VLAN to a distinct URI, such that each Ethernet proxying request is
associated with only one VLAN. This provides flexibility in forwarding and
allows independent scheduling and policy enforcement for each VLAN. To
reduce overhead, the IEEE 802.1Q field could be stripped and, when required,
could be reapplied at the egress associating the frame with the appropriate
priority and VLAN.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>There are risks in allowing arbitrary clients to establish a tunnel to a Layer 2
network. Bad actors could abuse this capability to attack hosts on that network
that they would otherwise be unable to reach. HTTP servers that support
Ethernet proxying <bcp14>SHOULD</bcp14> restrict its use to authorized users who have properly
authenticated to the HTTP server. Authentication might be omitted in closed
testing or development environments, or when access to the proxy is already
restricted by other network-layer security mechanisms. Depending on the
deployment, possible authentication mechanisms include mutual TLS between
Ethernet proxying endpoints and HTTP-based authentication via the HTTP
Authorization header field <xref target="HTTP"/>. Once authenticated, proxies can enforce
policies on authorized users to further constrain client behavior or deal with
possible abuse. For example, proxies can rate limit individual clients that send
an excessively large amount of traffic through the proxy. Additionally, an
attacker could attempt to consume server resources by sending datagrams with
unknown Context IDs or before establishing an HTTP request stream;
implementations mitigate this risk by enforcing the buffering limits described
in <xref target="payload-format"/>.</t>
      <t>Users of this protocol may send arbitrary Ethernet frames through the tunnel,
including frames with arbitrary source MAC addresses. This could allow
impersonation of other hosts, poisoning of ARP <xref target="RFC826"/>, NDP <xref target="RFC4861"/> and
CAM (Content Addressable Memory) tables, and cause a denial of service to other
hosts on the network. These are the same attacks available to an arbitrary
client with physical access to the network. An implementation that is intended
for point-to-site connections might limit clients to a single source MAC
address, or Ethernet proxying endpoints might be configured to limit forwarding
to pre-configured MAC addresses, or clients could be authenticated by
<xref target="IEEE802.1X"/> Port Based Network Access Control, though such filtering is outside
the scope of this protocol. Dynamic signalling or negotiation of MAC address
filtering is left to future extensions.</t>
      <t>This protocol is agnostic to where on the Ethernet segment a gateway for
higher-level routing might be located. A client may connect via an Ethernet
proxy and discover an existing gateway on the Ethernet segment, supply a new
gateway to the Ethernet segment, both, or neither.</t>
      <t>Opportunistic sending of Ethernet frames is not allowed in HTTP/1.x because a
server could reject the HTTP Upgrade and attempt to parse the Ethernet frames as
a subsequent HTTP request, allowing request smuggling attacks; see
<xref target="OPTIMISTIC"/>. In particular, an intermediary that re-encodes a request
from HTTP/2 or 3 to HTTP/1.1 <bcp14>MUST NOT</bcp14> forward any received capsules until it has
parsed a successful Ethernet proxying response.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="http-upgrade-token">
        <name>HTTP Upgrade Token</name>
        <t>IANA is requested to register "connect-ethernet" in the HTTP Upgrade Token
Registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-upgrade-tokens"/>&gt;.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>connect-ethernet</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Proxying of Ethernet Payloads</t>
          </dd>
          <dt>Expected Version Tokens:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>References:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-suffix">
        <name>Updates to the MASQUE URI Suffixes Registry</name>
        <t>IANA is requested to register "ethernet" in the MASQUE URI Suffixes Registry
maintained at &lt;<eref target="https://www.iana.org/assignments/masque"/>&gt;, created by
<xref section="12.2" sectionFormat="of" target="CONNECT-IP"/>.</t>
        <table anchor="iana-suffixes-table">
          <name>New MASQUE URI Suffixes</name>
          <thead>
            <tr>
              <th align="left">Path Segment</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ethernet</td>
              <td align="left">Ethernet Proxying</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="H1" to="HTTP/1.1"/>
    <displayreference target="H2" to="HTTP/2"/>
    <displayreference target="H3" to="HTTP/3"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="H1">
          <front>
            <title>HTTP/1.1</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 specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="H2">
          <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="H3">
          <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="IEEE802.3">
          <front>
            <title>IEEE Standard for Ethernet</title>
            <author>
              <organization/>
            </author>
            <date month="July" year="2022"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2022.9844436"/>
          <seriesInfo name="ISBN" value="[&quot;9781504487252&quot;]"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="IEEE802.1Q">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks--Bridges and Bridged Networks</title>
            <author>
              <organization/>
            </author>
            <date month="December" year="2022"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2022.10004498"/>
          <seriesInfo name="ISBN" value="[&quot;9781504491884&quot;]"/>
          <refcontent>IEEE</refcontent>
        </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-DGRAM">
          <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="EXT-CONNECT2">
          <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="EXT-CONNECT3">
          <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="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="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="TEMPLATE">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="WELL-KNOWN">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="URI">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="QUIC-DGRAM">
          <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="DPLPMTUD">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="T. Jones" initials="T." surname="Jones"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="I. Rüngeler" initials="I." surname="Rüngeler"/>
            <author fullname="T. Völker" initials="T." surname="Völker"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document specifies Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs). It allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram. This can be used to detect and reduce the message size when a sender encounters a packet black hole. It can also probe a network path to discover whether the maximum packet size can be increased. This provides functionality for datagram transports that is equivalent to the PLPMTUD specification for TCP, specified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines to refer to this method for use with UDP datagrams and updates SCTP.</t>
              <t>The document provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.</t>
              <t>This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 8085, and RFC 8261.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IEEE802.1X">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks--Port-Based Network Access Control</title>
            <author>
              <organization/>
            </author>
            <date month="February" year="2020"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2020.9018454"/>
          <seriesInfo name="ISBN" value="[&quot;9781504464406&quot;]"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="TCP">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="CONNECT-IP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="A. Chernyakhovsky" initials="A." surname="Chernyakhovsky"/>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document describes how to proxy IP packets in HTTP. This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets. More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy. This document updates RFC 9298.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9484"/>
          <seriesInfo name="DOI" value="10.17487/RFC9484"/>
        </reference>
        <reference anchor="ETHERIP">
          <front>
            <title>EtherIP: Tunneling Ethernet Frames in IP Datagrams</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
            <date month="September" year="2002"/>
            <abstract>
              <t>This document describes EtherIP, an early tunneling protocol, to
provide informational and historical context for the assignment of IP
protocol 97. EtherIP tunnels Ethernet and IEEE 802.3 media access
control frames in IP datagrams so that non-IP traffic can traverse an
IP internet. The protocol is very lightweight, and it does not
provide protection against infinite loops.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3378"/>
          <seriesInfo name="DOI" value="10.17487/RFC3378"/>
        </reference>
        <reference anchor="L2TP">
          <front>
            <title>Layer Two Tunneling Protocol "L2TP"</title>
            <author fullname="W. Townsley" initials="W." surname="Townsley"/>
            <author fullname="A. Valencia" initials="A." surname="Valencia"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="G. Pall" initials="G." surname="Pall"/>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="B. Palter" initials="B." surname="Palter"/>
            <date month="August" year="1999"/>
            <abstract>
              <t>This document describes the Layer Two Tunneling Protocol (L2TP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2661"/>
          <seriesInfo name="DOI" value="10.17487/RFC2661"/>
        </reference>
        <reference anchor="L2TPv3">
          <front>
            <title>Layer Two Tunneling Protocol - Version 3 (L2TPv3)</title>
            <author fullname="J. Lau" initials="J." role="editor" surname="Lau"/>
            <author fullname="M. Townsley" initials="M." role="editor" surname="Townsley"/>
            <author fullname="I. Goyret" initials="I." role="editor" surname="Goyret"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>This document describes "version 3" of the Layer Two Tunneling Protocol (L2TPv3). L2TPv3 defines the base control protocol and encapsulation for tunneling multiple Layer 2 connections between two IP nodes. Additional documents detail the specifics for each data link type being emulated. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3931"/>
          <seriesInfo name="DOI" value="10.17487/RFC3931"/>
        </reference>
        <reference anchor="UDP-USAGE">
          <front>
            <title>UDP Usage Guidelines</title>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms. This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP. Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t>Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic. They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t>Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t>This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC826">
          <front>
            <title>An Ethernet Address Resolution Protocol: Or Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware</title>
            <author fullname="D. Plummer" initials="D." surname="Plummer"/>
            <date month="November" year="1982"/>
            <abstract>
              <t>The purpose of this RFC is to present a method of Converting Protocol Addresses (e.g., IP addresses) to Local Network Addresses (e.g., Ethernet addresses). This is an issue of general concern in the ARPA Internet Community at this time. The method proposed here is presented for your consideration and comment. This is not the specification of an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="37"/>
          <seriesInfo name="RFC" value="826"/>
          <seriesInfo name="DOI" value="10.17487/RFC826"/>
        </reference>
        <reference anchor="RFC4861">
          <front>
            <title>Neighbor Discovery for IP version 6 (IPv6)</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <author fullname="H. Soliman" initials="H." surname="Soliman"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document specifies the Neighbor Discovery protocol for IP Version 6. IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4861"/>
          <seriesInfo name="DOI" value="10.17487/RFC4861"/>
        </reference>
        <reference anchor="OPTIMISTIC">
          <front>
            <title>Security Considerations for Optimistic Protocol Transitions in HTTP/1.1</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>In HTTP/1.1, the client can request a change to a new protocol on the existing connection. This document discusses the security considerations that apply to data sent by the client before this request is confirmed and adds new requirements to RFCs 9112 and 9298 to avoid related security issues.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9931"/>
          <seriesInfo name="DOI" value="10.17487/RFC9931"/>
        </reference>
      </references>
    </references>
    <?line 717?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Much of the initial version of this draft borrows heavily from <xref target="CONNECT-IP"/>.</t>
      <t>The author would like to thank Alexander Chernyakhovsky and David Schinazi
for their advice while preparing this document, and Etienne Dechamps for
useful discussion on the subject material. Additionally, Mirja Kühlewind,
Magnus Westerlund, Martin Thompson, Gorry Fairhurst, and Ketan Talaulikar
provided valuable feedback on the document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
XqH/BeAWu6dReQAA

-->

</rfc>
