<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-quic-proxy-08" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="QUIC Proxy">QUIC-Aware Proxying Using HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-quic-proxy-08"/>
    <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="E." surname="Rosenberg" fullname="Eric Rosenberg">
      <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>eric_rosenberg@apple.com</email>
      </address>
    </author>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View, California 94043</city>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>udp</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>quic in quic</keyword>
    <keyword>turtles all the way down</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <abstract>
      <?line 70?>

<t>This document extends UDP Proxying over HTTP to add optimizations for proxied
QUIC connections. Specifically, it allows a proxy to reuse UDP 4-tuples for multiple
proxied connections, and adds a mode of proxying in which QUIC short header packets
can be forwarded and transformed through a HTTP/3 proxy rather than being fully
re-encapsulated and re-encrypted.</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-quic-proxy/draft-ietf-masque-quic-proxy.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-masque-quic-proxy/"/>.
      </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-quic-proxy"/>.</t>
    </note>
  </front>
  <middle>
    <?line 78?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>UDP Proxying over HTTP <xref target="CONNECT-UDP"/>
defines a way to send datagrams through an HTTP proxy, where UDP is used to communicate
between the proxy and a target server. This can be used to proxy QUIC
connections <xref target="QUIC"/>, since QUIC runs over UDP datagrams.</t>
      <t>This document uses the term "target" to refer to the server that a client is
accessing via a proxy. This target may be an origin server hosting content, or
another proxy for cases where proxies are chained together.</t>
      <t>This document extends the UDP proxying protocol to add signalling about QUIC
Connection IDs. QUIC Connection IDs are used to identify QUIC connections in
scenarios where there is not a strict one-to-one mapping between QUIC
connections and UDP 4-tuples (pairs of IP addresses and ports).</t>
      <t>If a client permits proxy port reuse, once a proxy is aware of QUIC Connection IDs,
it can reuse UDP 4-tuples between itself and a target for multiple proxied QUIC connections.</t>
      <t>For proxies that are themselves running on HTTP/3 <xref target="HTTP3"/>, and thus
are accessed by clients over QUIC, QUIC Connection IDs can be used to treat
packets differently on the link between clients and proxies. New QUIC Connection IDs
can be assigned to perform transformations to the packets that allow for efficient
forwarding of packets that don't require full re-encapsulation and re-encryption
of proxied QUIC packets within datagrams inside the QUIC connection between
clients and proxies.</t>
      <t>This document defines two modes for proxying QUIC connections, "tunnelled" and
"forwarded":</t>
      <ol spacing="normal" type="1"><li>
          <t>Tunnelled is the default mode for UDP proxying, defined in <xref target="CONNECT-UDP"/>.
In this mode, packets in QUIC connection between the client and target are
encapsulated inside the QUIC connection between the client and proxy.
These packets use multiple layers of encryption and congestion control.</t>
        </li>
        <li>
          <t>Forwarded is the mode of proxying added by this document. In this mode,
packets in the QUIC connection between the client and target are sent with dedicated
QUIC Connection IDs between the client and proxy, and use special-purpose
tranforms instead of full re-encapsulation and re-encryption.</t>
        </li>
      </ol>
      <t>QUIC long header packets between clients and targets MUST be proxied in tunnelled
mode. QUIC short header packets between clients and targets MAY be proxied in
forwarded mode, subject to negotiation between a client and a proxy.</t>
      <t>Forwarded mode is an optimization to reduce CPU and memory cost to clients and
proxies and avoid encapsulation overhead for packets on the wire that reduce
the effective MTU (Maximum Transmission Unit). This makes it suitable for
deployment situations that otherwise relied on cleartext TCP
proxies, which cannot support QUIC and have inferior security and privacy
properties.</t>
      <t>The properties provided by the forwarded mode are as follows:</t>
      <ul spacing="normal">
        <li>
          <t>All packets sent between the client and the target traverse through the proxy
device.</t>
        </li>
        <li>
          <t>The target server cannot know the IP address of the client solely based on the
proxied packets the target receives.</t>
        </li>
        <li>
          <t>Observers of either or both of the links between client and proxy and between
proxy and target are not able to learn more about the client-to-target
communication than if no proxy was used.</t>
        </li>
      </ul>
      <t>Forwarded mode does not prevent correlation of packets on the link between
client and proxy and the link between proxy and target by an entity that
can observe both links. The precise risks depend on the negotiated transform
(<xref target="transforms"/>). See <xref target="security"/> for further discussion.</t>
      <t>Both clients and proxies can unilaterally choose to disable forwarded mode for
any client-to-target connection.</t>
      <t>The forwarded mode of proxying is only defined for HTTP/3 <xref target="HTTP3"/> and not
any earlier versions of HTTP.</t>
      <t>QUIC proxies can proxy all versions of QUIC. See <xref target="invariance"/> for more information.</t>
      <t>While Forwarded mode may improve overhead of per-packet processing, this
doesn't necessarily imply overall throughput is improved. Unlike tunnelled packets,
packets sent in Forwarded mode are not congestion controlled between client and
proxy. Deployments should consider whether or not the overhead advantages
outweigh potentially superior throughput afforded by client-to-proxy congestion
control.</t>
      <section anchor="conventions">
        <name>Conventions and Definitions</name>
        <t>The key words "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>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>This document uses the following terms:</t>
        <ul spacing="normal">
          <li>
            <t>Client: the client of all QUIC connections discussed in this document.</t>
          </li>
          <li>
            <t>Proxy: the endpoint that responds to the UDP proxying request.</t>
          </li>
          <li>
            <t>Target: the server that a client is accessing via a proxy.</t>
          </li>
          <li>
            <t>Client-to-proxy 4-tuple: the UDP 4-tuple (client IP address, client UDP port,
proxy IP address, proxy UDP port) used to communicate between the client and
the proxy.</t>
          </li>
          <li>
            <t>Proxy-to-target 4-tuple: the UDP 4-tuple (proxy IP address, proxy UDP port,
target IP address, target UDP port) used to communicate between the proxy and
the target.</t>
          </li>
          <li>
            <t>Client Connection ID (CID): a QUIC Connection ID that is chosen by the client, and
is used in the Destination Connection ID field of packets from the target to
the client.</t>
          </li>
          <li>
            <t>Target Connection ID (CID): a QUIC Connection ID that is chosen by the target, and
is used in the Destination Connection ID field of packets from the client to
the target.</t>
          </li>
          <li>
            <t>Virtual Connection ID (VCID): a fake QUIC Connection ID chosen by the proxy
that is used on the client-to-proxy 4-tuple in forwarded mode.</t>
          </li>
          <li>
            <t>Client VCID: a VCID used by the proxy to send forwarded packets from the target
to the client.</t>
          </li>
          <li>
            <t>Target VCID: a VCID used by the client to send forwarded packets to the target
via the proxy.</t>
          </li>
          <li>
            <t>Packet Transform: the procedure used to modify packets before they enter the
client-proxy link.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>QUIC-aware proxying involves a client, a proxy, and a target. Although
multiple proxies can be chained together in sequence (which is
a main motivation for enabling forwarded mode), each subsequent proxy
is just treated as a target by the preceding proxy.</t>
      <figure anchor="overview-diagram">
        <name>Diagram of roles in QUIC-aware proxying</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="496" viewBox="0 0 496 224" 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 200,32 L 200,96" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,96" fill="none" stroke="black"/>
              <path d="M 416,32 L 416,96" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,96" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 200,32 L 296,32" fill="none" stroke="black"/>
              <path d="M 416,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 80,64 L 200,64" fill="none" stroke="black"/>
              <path d="M 296,64 L 416,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 80,96" fill="none" stroke="black"/>
              <path d="M 200,96 L 296,96" fill="none" stroke="black"/>
              <path d="M 416,96 L 488,96" fill="none" stroke="black"/>
              <path d="M 40,128 L 128,128" fill="none" stroke="black"/>
              <path d="M 368,128 L 456,128" fill="none" stroke="black"/>
              <path d="M 40,176 L 56,176" fill="none" stroke="black"/>
              <path d="M 200,176 L 216,176" fill="none" stroke="black"/>
              <path d="M 280,176 L 296,176" fill="none" stroke="black"/>
              <path d="M 440,176 L 456,176" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="464,176 452,170.4 452,181.6" fill="black" transform="rotate(0,456,176)"/>
              <polygon class="arrowhead" points="464,128 452,122.4 452,133.6" fill="black" transform="rotate(0,456,128)"/>
              <polygon class="arrowhead" points="288,176 276,170.4 276,181.6" fill="black" transform="rotate(180,280,176)"/>
              <polygon class="arrowhead" points="224,176 212,170.4 212,181.6" fill="black" transform="rotate(0,216,176)"/>
              <polygon class="arrowhead" points="48,176 36,170.4 36,181.6" fill="black" transform="rotate(180,40,176)"/>
              <polygon class="arrowhead" points="48,128 36,122.4 36,133.6" fill="black" transform="rotate(180,40,128)"/>
              <g class="text">
                <text x="44" y="68">Client</text>
                <text x="248" y="68">Proxy</text>
                <text x="452" y="68">Target</text>
                <text x="204" y="132">Client-to-target</text>
                <text x="316" y="132">connection</text>
                <text x="128" y="180">Client-to-proxy</text>
                <text x="368" y="180">Proxy-to-target</text>
                <text x="120" y="196">4-tuple</text>
                <text x="368" y="196">4-tuple</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
   +--------+              +-----------+              +--------+
   |        |              |           |              |        |
   | Client +--------------+   Proxy   +--------------+ Target |
   |        |              |           |              |        |
   +--------+              +-----------+              +--------+

       <----------- Client-to-target connection ----------->


       <-- Client-to-proxy -->       <-- Proxy-to-target -->
              4-tuple                        4-tuple
]]></artwork>
        </artset>
      </figure>
      <t>All QUIC-aware proxying relies on the proxy learning information about
QUIC connection IDs on the client-to-target QUIC connection (<xref target="cid-awareness"/>).</t>
      <t>Forwarded mode adds the concept of Virtual Connection IDs that are assigned
by the proxy to use to identify packets on the client-to-proxy 4-tuple (<xref target="vcids"/>).</t>
      <t>Negotation of modes and assignment of connection IDs is described in <xref target="negotiation"/>.</t>
      <section anchor="cid-awareness">
        <name>Connection ID Awareness</name>
        <t>For a proxy to be aware of proxied QUIC connection IDs, it needs to know and
correlate three values:</t>
        <ol spacing="normal" type="1"><li>
            <t>The HTTP stream used to proxy a client-to-target QUIC connection</t>
          </li>
          <li>
            <t>The client-chosen connection ID on the client-to-target QUIC connection,
or the "client CID"</t>
          </li>
          <li>
            <t>The target-chosen connection ID on the client-to-target QUIC connection,
or the "target CID"</t>
          </li>
        </ol>
        <t>For example, consider a proxy using HTTP/3 that has two clients (A and B) connected
simultaneously, each client coming from a different IP address and port.
Each client makes a request to proxy a UDP flow to "target.example.net" on
port 443. If the proxy knows that client A's connection to the target
has negotiated a client CID <tt>AAAA0000</tt> and a target CID <tt>0000AAAA</tt>, and client B's
connection to the target has negotiated a client CID <tt>BBBB0000</tt> and a target CID
<tt>0000BBBB</tt>, then the proxy would be able to use the same proxy-to-target 4-tuple
for both connections, because it can route packets from the target to the
correct client based on CID <tt>AAAA0000</tt> or <tt>BBBB0000</tt>.</t>
        <figure anchor="sharing-tuple-diagram">
          <name>Example of sharing a proxy-to-target 4-tuple</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="496" viewBox="0 0 496 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,112" fill="none" stroke="black"/>
                <path d="M 8,176 L 8,224" fill="none" stroke="black"/>
                <path d="M 80,64 L 80,112" fill="none" stroke="black"/>
                <path d="M 80,176 L 80,224" fill="none" stroke="black"/>
                <path d="M 200,64 L 200,224" fill="none" stroke="black"/>
                <path d="M 296,64 L 296,224" fill="none" stroke="black"/>
                <path d="M 416,112 L 416,176" fill="none" stroke="black"/>
                <path d="M 488,112 L 488,176" fill="none" stroke="black"/>
                <path d="M 40,32 L 120,32" fill="none" stroke="black"/>
                <path d="M 376,32 L 456,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
                <path d="M 200,64 L 296,64" fill="none" stroke="black"/>
                <path d="M 80,80 L 200,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 80,112" fill="none" stroke="black"/>
                <path d="M 416,112 L 488,112" fill="none" stroke="black"/>
                <path d="M 296,144 L 416,144" fill="none" stroke="black"/>
                <path d="M 8,176 L 80,176" fill="none" stroke="black"/>
                <path d="M 416,176 L 488,176" fill="none" stroke="black"/>
                <path d="M 80,208 L 200,208" fill="none" stroke="black"/>
                <path d="M 8,224 L 80,224" fill="none" stroke="black"/>
                <path d="M 200,224 L 296,224" fill="none" stroke="black"/>
                <path d="M 40,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 376,256 L 456,256" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="464,256 452,250.4 452,261.6" fill="black" transform="rotate(0,456,256)"/>
                <polygon class="arrowhead" points="464,32 452,26.4 452,37.6" fill="black" transform="rotate(0,456,32)"/>
                <polygon class="arrowhead" points="48,256 36,250.4 36,261.6" fill="black" transform="rotate(180,40,256)"/>
                <polygon class="arrowhead" points="48,32 36,26.4 36,37.6" fill="black" transform="rotate(180,40,32)"/>
                <g class="text">
                  <text x="156" y="36">Client</text>
                  <text x="232" y="36">A-to-target</text>
                  <text x="324" y="36">connection</text>
                  <text x="68" y="52">AAAA0000</text>
                  <text x="428" y="52">0000AAAA</text>
                  <text x="44" y="84">Client</text>
                  <text x="40" y="100">A</text>
                  <text x="348" y="132">Shared</text>
                  <text x="248" y="148">Proxy</text>
                  <text x="452" y="148">Target</text>
                  <text x="352" y="164">4-tuple</text>
                  <text x="44" y="196">Client</text>
                  <text x="40" y="212">B</text>
                  <text x="68" y="244">BBBB0000</text>
                  <text x="428" y="244">0000BBBB</text>
                  <text x="156" y="260">Client</text>
                  <text x="232" y="260">B-to-target</text>
                  <text x="324" y="260">connection</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
       <---------- Client A-to-target connection ---------->
       AAAA0000                                     0000AAAA
   +--------+              +-----------+
   | Client +--------------+           +
   |   A    |              |           |
   +--------+              |           |              +--------+
                           |           |   Shared     |        |
                           |   Proxy   +--------------+ Target |
                           |           |   4-tuple    |        |
   +--------+              |           |              +--------+
   | Client |              |           |
   |   B    +--------------+           |
   +--------+              +-----------+
       BBBB0000                                     0000BBBB
       <---------- Client B-to-target connection ---------->
]]></artwork>
          </artset>
        </figure>
        <t>In order to share a proxy-to-target 4-tuple between multiple proxied connections,
the proxy MUST guarantee that the client CIDs do not conflict. See <xref target="conflicts"/>
for more discussion of handlng CID conflicts.</t>
      </section>
      <section anchor="vcids">
        <name>Virtual Connection IDs</name>
        <t>Virtual Connection IDs (VCIDs) are QUIC Connection IDs used on the link between a
client and proxy that do not belong to the QUIC connection between the client
and proxy, but instead are aliases for particular client-to-target connections.
VCIDs are only used in forwarded mode. They are established using HTTP capsules
<xref target="HTTP-CAPSULES"/> as described in <xref target="cid-capsules"/>.</t>
        <t>For example, consider a proxy using HTTP/3 that has a single client connected
to it. The client-to-proxy QUIC connection has <tt>CCCC0000</tt> as the client CID
and <tt>0000CCCC</tt> as the proxy CID. The client has connected to a single target
through the proxy, and the client-to-target QUIC connection has <tt>CCCC1111</tt>
as the client CID and <tt>1111CCCC</tt> as the target CID. In order to use
forwarded mode, the proxy assigns VCIDs to use on the client-to-proxy link
to represent the client-to-target connection. In this case, the VCIDs could
be <tt>CCCC2222</tt> for the client's VCID and <tt>2222CCCC</tt> for the proxy's VCID that
it uses to forward to the target.</t>
        <figure anchor="vcid-diagram">
          <name>Diagram of VCIDs in forwarded mode</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="504" viewBox="0 0 504 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 16,32 L 16,96" fill="none" stroke="black"/>
                <path d="M 88,32 L 88,96" fill="none" stroke="black"/>
                <path d="M 208,32 L 208,96" fill="none" stroke="black"/>
                <path d="M 304,32 L 304,96" fill="none" stroke="black"/>
                <path d="M 424,32 L 424,96" fill="none" stroke="black"/>
                <path d="M 496,32 L 496,96" fill="none" stroke="black"/>
                <path d="M 16,32 L 88,32" fill="none" stroke="black"/>
                <path d="M 208,32 L 304,32" fill="none" stroke="black"/>
                <path d="M 424,32 L 496,32" fill="none" stroke="black"/>
                <path d="M 88,64 L 208,64" fill="none" stroke="black"/>
                <path d="M 304,64 L 424,64" fill="none" stroke="black"/>
                <path d="M 16,96 L 88,96" fill="none" stroke="black"/>
                <path d="M 208,96 L 304,96" fill="none" stroke="black"/>
                <path d="M 424,96 L 496,96" fill="none" stroke="black"/>
                <path d="M 48,144 L 64,144" fill="none" stroke="black"/>
                <path d="M 208,144 L 224,144" fill="none" stroke="black"/>
                <path d="M 48,208 L 136,208" fill="none" stroke="black"/>
                <path d="M 376,208 L 464,208" fill="none" stroke="black"/>
                <path d="M 48,256 L 64,256" fill="none" stroke="black"/>
                <path d="M 208,256 L 224,256" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="472,208 460,202.4 460,213.6" fill="black" transform="rotate(0,464,208)"/>
                <polygon class="arrowhead" points="232,256 220,250.4 220,261.6" fill="black" transform="rotate(0,224,256)"/>
                <polygon class="arrowhead" points="232,144 220,138.4 220,149.6" fill="black" transform="rotate(0,224,144)"/>
                <polygon class="arrowhead" points="56,256 44,250.4 44,261.6" fill="black" transform="rotate(180,48,256)"/>
                <polygon class="arrowhead" points="56,208 44,202.4 44,213.6" fill="black" transform="rotate(180,48,208)"/>
                <polygon class="arrowhead" points="56,144 44,138.4 44,149.6" fill="black" transform="rotate(180,48,144)"/>
                <g class="text">
                  <text x="52" y="68">Client</text>
                  <text x="256" y="68">Proxy</text>
                  <text x="460" y="68">Target</text>
                  <text x="76" y="132">CCCC0000</text>
                  <text x="196" y="132">0000CCCC</text>
                  <text x="136" y="148">Client-to-proxy</text>
                  <text x="140" y="164">connection</text>
                  <text x="76" y="196">CCCC1111</text>
                  <text x="436" y="196">1111CCCC</text>
                  <text x="212" y="212">Client-to-target</text>
                  <text x="324" y="212">connection</text>
                  <text x="36" y="244">CCCC2222</text>
                  <text x="116" y="244">(CCCC1111)</text>
                  <text x="212" y="244">2222CCCC</text>
                  <text x="292" y="244">(1111CCCC)</text>
                  <text x="136" y="260">Client-to-proxy</text>
                  <text x="136" y="276">VCIDs</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
   +--------+              +-----------+              +--------+
   |        |              |           |              |        |
   | Client +--------------+   Proxy   +--------------+ Target |
   |        |              |           |              |        |
   +--------+              +-----------+              +--------+

       CCCC0000       0000CCCC
       <-- Client-to-proxy -->
              connection

       CCCC1111                                     1111CCCC
       <----------- Client-to-target connection ----------->

  CCCC2222 (CCCC1111)   2222CCCC (1111CCCC)
       <-- Client-to-proxy -->
                VCIDs
]]></artwork>
          </artset>
        </figure>
        <t>In order for a proxy to correctly route packets using VCIDs from
client-to-target and target-to-client, the proxy MUST guarantee that
the mappings between VCIDs, CIDs, and 4-tuples are unique. Specifically,
in order to route packets sent by the client, the proxy needs to be able
to observe the VCID and the client-to-proxy 4-tuple, and map them
to a specific target CID and proxy-to-target 4-tuple. In order to route
packets sent by a target, the proxy needs to be able to observe the client
CID and the proxy-to-target 4-tuple, and map them to a specific VCID
and client-to-proxy 4-tuple. Since proxies choose the VCID values, they
can ensure that the VCIDs are distinguishable.</t>
        <t>Servers receiving QUIC packets can employ load balancing
strategies such as those described in <xref target="QUIC-LB"/>
that encode routing information in the connection ID. When operating in
forwarded mode, clients send QUIC packets destined for the target directly
to the proxy. Since these packets are generated using the target CID,
load balancers may not have the necessary information to route packets to the correct proxy. The target VCID
is a VCID chosen by the proxy that the client uses when sending
forwarded mode packets. The proxy replaces the target VCID
with the target CID prior to forwarding the packet to the target.</t>
        <t>Similarly, QUIC requires that connection IDs aren't reused over multiple network
paths to avoid linkability. The client VCID is a connection ID
chosen by the proxy that the proxy uses when sending forwarded mode packets.
The proxy replaces the client CID with the client VCID prior to
forwarding the packet to the client. Clients take advantage of this
to avoid linkability when migrating a client to proxy network path. The Virtual
client CID allows the connection ID bytes to change on the wire
without requiring the connection IDs on the client to target connection change.
To reduce the likelihood of connection ID conflicts, the proxy MUST choose a
client VCID that is at least as long as the original client CID. Similarly,
clients multiplexing connections on the same UDP 4-tuple SHOULD
choose a client CID that's sufficiently long to reduce the likelihood
of a conflict with the proxy-chosen client VCID. For proxies that share a
client-facing IP and port with other proxies, support target-facing port sharing,
and cannot guarantee there are no proxies being proxied to, the client VCID MUST be
constructed such that it is unpredictable to the client or to guarantee no
conflicts among all proxies sharing an IP address and port. For such proxies, a
non-empty client VCID MUST NOT be equal to the original client CID. See
<xref target="security"/> for more discussion on client VCID construction.</t>
        <t>Clients and Proxies not implementing forwarded mode do not need to consider
VCIDs since all client-to-target datagrams will be encapsulated
within the client-to-proxy connection.</t>
      </section>
      <section anchor="negotiation">
        <name>Negotiating Modes and Connection IDs</name>
        <t>In order to support QUIC-aware proxying, both clients and proxies need
to support capsules <xref target="HTTP-CAPSULES"/>, which is indicated by including
the "Capsule-Protocol" header field in requests and responses. If this header
field is not included, none of the functionality in this document can be used.</t>
        <artwork><![CDATA[
  capsule-protocol = ?1
]]></artwork>
        <t>To permit the proxy to share target-facing ports, the client needs to include the
"Proxy-QUIC-Port-Sharing" header field, as defined in <xref target="port-sharing-header"/>.
This indicates that the proxy may share target-facing 4-tuples concurrently with
other QUIC connections. Clients that do not want the target-facing 4-tuple shared
will not include this header or will provide it with a value of "?0".</t>
        <artwork><![CDATA[
  proxy-quic-port-sharing = ?1
]]></artwork>
        <t>To support forwarded mode, both clients and proxies need to include
the "Proxy-QUIC-Forwarding" header field, as defined in <xref target="forwarding-header"/>.
This indicates support for forwarded mode, and allows negotiation of
packet transforms to apply when forwarding (<xref target="transforms"/>), along
with any parameters for specific transforms. Clients or proxies that
don't support forwarded mode will not include this header field.</t>
        <artwork><![CDATA[
  proxy-quic-forwarding = ?1; accept-transform="scramble,identity"; \
      scramble-key=:abc...789=:
]]></artwork>
        <t>If neither header is supplied with a value of "?1", none of the functionality
in this document can be used and handling reduces to normal connect-udp.</t>
        <t>After negotiating support with header fields, clients and proxies use
the capsules defined in <xref target="cid-capsules"/> to communicate information
about CIDs and VCIDs.</t>
        <t>For QUIC-aware proxying without forwarded mode, the steps are as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client sends the <tt>REGISTER_CLIENT_CID</tt> capsule once it selects a
CID that it will use for receiving packets from a target.</t>
          </li>
          <li>
            <t>The proxy sends the <tt>ACK_CLIENT_CID</tt> capsule to acknowledge that CID,
with no associated client VCID; alternatively, the proxy can send the
<tt>CLOSE_CLIENT_CID</tt> if it detects a conflict with another CID.</t>
          </li>
          <li>
            <t>The proxy sends the <tt>MAX_CONNECTION_IDS</tt> capsule to allow additional
registration of new connection IDs via future <tt>REGISTER_CLIENT_CID</tt> and
<tt>REGISTER_TARGET_CID</tt> capsules.</t>
          </li>
          <li>
            <t>Whenever a client stops using a particular CID, the client
sends a <tt>CLOSE_CLIENT_CID</tt>. The client can also initiate new
<tt>REGISTER_CLIENT_CID</tt> exchanges at any time.</t>
          </li>
        </ol>
        <t>For QUIC-aware proxying with forwarded mode, the steps are as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client sends the <tt>REGISTER_CLIENT_CID</tt> capsule once it selects a
CID that it will use for receiving packets from a target.</t>
          </li>
          <li>
            <t>The proxy sends the <tt>ACK_CLIENT_CID</tt> capsule to acknowledge that CID,
with a client VCID; alternatively, the proxy can send the
<tt>CLOSE_CLIENT_CID</tt> if it detects a conflict with another CID.</t>
          </li>
          <li>
            <t>The client sends the <tt>ACK_CLIENT_VCID</tt> capsule to acknowledge the
client VCID, which allows forwarded packets for that VCID to be used.</t>
          </li>
          <li>
            <t>The client sends the <tt>REGISTER_TARGET_CID</tt> capsule as soon as it learns
the target CID on the client-to-target connection.</t>
          </li>
          <li>
            <t>The proxy sends the <tt>ACK_TARGET_CID</tt> capsule to acknowledge that CID,
with a target VCID; alternatively, the proxy can send the
<tt>CLOSE_TARGET_CID</tt> if it detects a conflict with another CID. Once
the client receives the target VCID, it can start sending forwarded
packets using the target VCID.</t>
          </li>
          <li>
            <t>The proxy sends the <tt>MAX_CONNECTION_IDS</tt> capsule to allow additional
registration of new connection IDs via future <tt>REGISTER_CLIENT_CID</tt> and
<tt>REGISTER_TARGET_CID</tt> capsules.</t>
          </li>
          <li>
            <t>Whenever a client or target stops uses a particular CID, the client
sends a <tt>CLOSE_CLIENT_CID</tt> or <tt>CLOSE_TARGET_CID</tt> capsule. The client
can also initiate new <tt>REGISTER_CLIENT_CID</tt> or <tt>REGISTER_TARGET_CID</tt>
exchanges at any time.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="forwarding-header">
      <name>Proxy-QUIC-Forwarding Header</name>
      <t>A client initiates UDP proxying via a CONNECT request as defined
in <xref target="CONNECT-UDP"/>. Within its request, it includes the "Proxy-QUIC-Forwarding"
header to indicate whether or not the request should support forwarding.
If this header is not included, the client MUST NOT send any connection ID
capsules.</t>
      <t>"Proxy-QUIC-Forwarding" is an Item Structured Header <xref target="RFC8941"/>. Its
value MUST be a Boolean.</t>
      <t>If the client wants to enable QUIC packet forwarding for this request, it sets
the value to "?1". If it doesn't want to enable forwarding, but instead only
provide information about QUIC Connection IDs for the purpose of allowing
the proxy to share a proxy-to-target 4-tuple, it sets the value to "?0".</t>
      <t>If advertising support for forwarding, the client MUST add an "accept-transform" parameter whose value is a
String containing the supported packet transforms (<xref target="transforms"/>)
in order of descending preference, separated by commas. If the proxy receives a
"Proxy-QUIC-Forwarding" header with a value of "?1" and without the "accept-transform" parameter, it
MUST ignore the header and respond as if the client had not sent the
"Proxy-QUIC-Forwarding" header.</t>
      <t>If the proxy supports QUIC-aware proxying, it will include the
"Proxy-QUIC-Forwarding" header in successful HTTP responses. The value
indicates whether or not the proxy supports forwarding. If the client does
not receive this header in responses, the client SHALL assume that the proxy
does not support this extension. If the client receives a transform that it did
not advertise support for, it MUST abort the request.</t>
      <t>The proxy MUST include a "transform" parameter whose value is a String
indicating the selected transform. If the proxy does not recognize or accept
any of the transforms offered by the client, it MUST omit this parameter and
set the header field value to "?0", or omit the header entirely.</t>
      <t>Clients MUST NOT send the "transform" parameter and servers MUST NOT send the
"accept-transform" parameter. Clients MUST ignore receipt of an "accept-transform"
parameter and servers MUST ignore receipt of a "transform" parameter.</t>
    </section>
    <section anchor="port-sharing-header">
      <name>Proxy-QUIC-Port-Sharing Header</name>
      <t>A client may include the "Proxy-QUIC-Port-Sharing" header to indicate whether
or not the proxy is permitted to share ports between this QUIC connection and other
proxied QUIC connections.</t>
      <t>"Proxy-QUIC-Port-Sharing" is an Item Structured Header <xref target="RFC8941"/>. Its value
MUST be a Boolean.</t>
      <t>Clients SHOULD send this with a value of "?1" unless the client wishes to prohibit
this behavior. Permitting the proxy to share ports may allow the proxy to conserve
resources and support more clients. Clients should not advertise support for port
sharing unless they are willing to share the same 4-tuple when communicating with
the target. Sharing ports with other QUIC connections may result in fate-sharing
with clients that might be considered to be untrusted or malicious by the target. Such
fate-sharing may impact performance or may lead to being misclassified as
malicious.</t>
      <t>A proxy that does not support port sharing, SHOULD send "Proxy-QUIC-Port-Sharing"
with a value of "?0". Doing so allows clients to stop sending capsules for this
extension if forwarding mode is also not supported.</t>
      <t>When port sharing is supported and forwarded mode is not, registration of target
Connection IDs is permitted, but is not required since port sharing only requires
demultiplexing QUIC packets in the target-to-client direction</t>
    </section>
    <section anchor="cid-capsules">
      <name>Connection ID Capsules</name>
      <t>Connection ID awareness relies on using capsules <xref target="HTTP-CAPSULES"/> to
signal addition and removal of Connection IDs. Clients send capsules
to let proxies know when Connection IDs on the client-to-target
QUIC connection are changing. Proxies send capsules to acknowledge or
reject these Connection IDs, and in forwarded mode to let clients know
about Virtual Connection IDs to use on the client-to-proxy link.</t>
      <t>Note that these capsules do not register contexts. QUIC packets are encoded
using HTTP Datagrams with the context ID set to zero as defined in
<xref target="CONNECT-UDP"/>.</t>
      <t>The REGISTER_CLIENT_CID (<xref target="capsule-reg-client"/>) and REGISTER_TARGET_CID
(<xref target="capsule-reg-target"/>) capsule types allow a client to inform
the proxy about a new client CID or a new target CID,
respectively. These capsule types MUST only be sent by a client. These capsule
types share a sequence number space which allows the proxy to limit the
number of registrations. The first registration (of either client CID or target CID)
has sequence number 0, and subsequent registrations increment the sequence number
by 1. Every registration capsule consumes a sequence number, including registrations
that are rejected and re-registrations of a previously registered connection ID.</t>
      <t>The ACK_CLIENT_CID (<xref target="capsule-ack-client"/>) and ACK_TARGET_CID
(<xref target="capsule-ack-target"/>) capsule types are sent by the proxy to the client
to indicate that a mapping was successfully created for a registered
connection ID as well as optionally provide the Virtual Connection IDs that can be
used in forwarded mode. These capsule types MUST only be sent by a proxy. Note that
Virtual Connection IDs are always sent by the proxy in order to avoid possible loop attacks
 <xref target="registration-attacks"/>.</t>
      <t>The ACK_CLIENT_VCID (<xref target="capsule-ack-virtual"/>) capsule type MUST only be sent
by the client and only when forwarded mode is enabled. It is sent by the client
to the proxy in response to an ACK_CLIENT_CID capsule to indicate that the client
is ready to receive forwarded mode packets with the specified virtual connection ID.
The proxy MUST NOT send forwarded mode packets to the client prior to receiving this
acknowledgement. This capsule also contains a Stateless Reset Token the client
may respond with when receiving forwarded mode packets with the specified
virtual connection ID.</t>
      <t>The CLOSE_CLIENT_CID and CLOSE_TARGET_CID capsule types (<xref target="capsule-close"/>)
are used to close or reject connection ID registrations. Each capsule includes
a reason code indicating why the connection ID is being closed.</t>
      <t>Clients send CLOSE_CLIENT_CID or CLOSE_TARGET_CID capsules to retire connection
IDs they no longer need, using the DEFAULT reason code. If a client cannot use the
proxy-chosen client VCID (e.g., due to conflict or insufficient length), it can
re-register the same client CID with an appropriate reason code to request a new
VCID.</t>
      <t>Proxies send CLOSE_CLIENT_CID or CLOSE_TARGET_CID capsules only to reject
registrations. If a proxy sends CLOSE_CLIENT_CID without having sent an
ACK_CLIENT_CID, or if a proxy sends CLOSE_TARGET_CID without having sent an
ACK_TARGET_CID, it is rejecting a Connection ID registration. A proxy MUST NOT
send a CLOSE_CLIENT_CID or CLOSE_TARGET_CID capsule for a connection ID that it
has already acknowledged. If a client receives such a capsule, it MUST reset the
stream with H3_DATAGRAM_ERROR error code.</t>
      <t>The MAX_CONNECTION_IDS capsule type <xref target="capsule-max-cids"/> MUST only be sent by the
proxy. It indicates to the client the cumulative number of connection ID registrations the client is allowed to request. This allows the proxy to limit the number of active
registrations. The initial maximum is 2, allowing the client to send 2 registrations,
one with sequence number 0 and another with sequence number 1. MAX_CONNECTION_IDS are
only sent to increase the limit. Since the initial limit is 2, a proxy MUST NOT
send a MAX_CONNECTION_IDS capsule with a value less than 3. Clients receiving a
MAX_CONNECTION_IDS capsule with a value less than 3 MUST reset the stream with
H3_DATAGRAM_ERROR error code.</t>
      <t>When port sharing <xref target="port-sharing-header"/> is supported, the client MUST register
and receive acknowledgements for client and target CIDs before using them. Packets with
unknown connection IDs received by the proxy on a target-facing sockets that support
port sharing MUST be dropped. In order to avoid introducing an additional round trip
on setup, a REGISTER_CLIENT_CID capsule SHOULD be sent at the same time as the client's
first flight. If the proxy rejects the client CID, the proxy MUST drop all packets until
it has sent an ACK_CLIENT_CID capsule and the client MUST NOT send any packets until
receiving an ACK_CLIENT_CID. When port sharing is supported, a proxy SHOULD buffer a
reasonable number of incoming packets while waiting for the first REGISTER_CLIENT_CID
capsule.</t>
      <t>Importantly, registering connection IDs does not introduce any delay in
communication between client and target unless port sharing is supported and
there is an unlikely client CID collision. The client and target can always
communicate over the tunnel without having to wait for registrations to be
acknowledged. Forwarded mode requires CID/VCID mappings be communicated and
acknowledged, and, as a consequence, cannot be leveraged without a round
trip. This is particularly pronounced when chaining proxies because
registration happens sequentially. While waiting for forwarded mode to become
enabled, clients SHOULD communicate over tunneled mode to avoid end-to-end
delays.</t>
      <section anchor="capsule-reg-client">
        <name>REGISTER_CLIENT_CID</name>
        <t>The REGISTER_CLIENT_CID capsule is sent by the client and contains a single
connection ID that is the client-provided connection ID on the client-to-target QUIC
connection.</t>
        <figure anchor="fig-capsule-register-client-cid">
          <name>Register Client CID Capsule Format</name>
          <artwork><![CDATA[
Register Client CID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i),
  Reason (i),
  Connection ID (0..2040),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Reason:</dt>
          <dd>
            <t>The reason for this registration. For initial registrations, this MUST
be DEFAULT (0x00), although a different value can be used for future
extensions. For re-registrations due to an unusable VCID, this indicates
why the previous VCID was rejected. See <xref target="iana-cid-reasons"/>.</t>
          </dd>
          <dt>Connection ID:</dt>
          <dd>
            <t>A connection ID being registered, which is between 0 and 255 bytes in
length. The length of the connection ID is implied by the length of the
capsule. Note that in QUICv1, the length of the Connection ID is limited
to 20 bytes, but QUIC invariants allow up to 255 bytes.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-reg-target">
        <name>REGISTER_TARGET_CID</name>
        <t>The REGISTER_TARGET_CID capsule is sent by the client and includes the
target-provided connection ID on the client-to-target QUIC connection, and
the corresponding Stateless Reset Token.</t>
        <figure anchor="fig-capsule-register-target-cid">
          <name>Register Target CID Capsule Format</name>
          <artwork><![CDATA[
Register Target CID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i),
  Reason (i),
  Connection ID Length (i)
  Connection ID (0..2040),
  Stateless Reset Token Length (i),
  Stateless Reset Token (..),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Reason:</dt>
          <dd>
            <t>The reason for this registration. This MUST be DEFAULT (0x00), although a
different value can be used for future extensions.
See <xref target="iana-cid-reasons"/>.</t>
          </dd>
          <dt>Connection ID Length</dt>
          <dd>
            <t>The length of the connection ID being registered, which is between 0 and
255. Note that in QUICv1, the length of the Connection ID is limited to 20
bytes, but QUIC invariants allow up to 255 bytes.</t>
          </dd>
          <dt>Connection ID</dt>
          <dd>
            <t>A connection ID being registered whose length is equal to Connection ID
Length. This is the real target CID.</t>
          </dd>
          <dt>Stateless Reset Token Length</dt>
          <dd>
            <t>The length of the target-provided Stateless Reset Token.</t>
          </dd>
          <dt>Stateless Reset Token</dt>
          <dd>
            <t>The target-provided Stateless Reset token allowing the proxy to correctly
recognize Stateless Reset packets to be tunnelled to the client.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-ack-client">
        <name>ACK_CLIENT_CID</name>
        <t>The ACK_CLIENT_CID capsule is sent by the proxy in
response to a REGISTER_CLIENT_CID capsule. It optionally assigns a Virtual
Connection ID when forwarded mode is supported.</t>
        <figure anchor="fig-capsule-ack-client-cid">
          <name>Acknowledge Client CID Capsule Format</name>
          <artwork><![CDATA[
Acknowledge Client CID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i)
  Connection ID Length (i)
  Connection ID (0..2040),
  Virtual Connection ID Length (i)
  Virtual Connection ID (0..2040),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Connection ID Length</dt>
          <dd>
            <t>The length of the connection ID being acknowledged, which
is between 0 and 255. Note that in QUICv1, the length of the Connection ID
is limited to 20 bytes, but QUIC invariants allow up to 255 bytes.</t>
          </dd>
          <dt>Connection ID</dt>
          <dd>
            <t>A connection ID being acknowledged whose length is equal to
Connection ID Length. This is the real Cilent Connection ID.</t>
          </dd>
          <dt>Virtual Connection ID Length</dt>
          <dd>
            <t>The length of the client VCID being provided. This MUST be a
valid connection ID length for the QUIC version used in the client-to-proxy QUIC
connection. When forwarded mode is not negotiated, the length MUST be zero.
The Virtual Connection ID Length and Connection ID Length SHOULD be equal
when possible to avoid the need to resize packets during replacement. The
client VCID Length MUST be at least as large as the
Connection ID to reduce the likelihood of connection ID conflicts.</t>
          </dd>
          <dt>Virtual Connection ID</dt>
          <dd>
            <t>The proxy-chosen connection ID that the proxy MUST use when sending in
forwarded mode. The proxy rewrites forwarded mode packets to contain the
correct client VCID prior to sending them to the client.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-ack-target">
        <name>ACK_TARGET_CID</name>
        <t>The ACK_TARGET_CID capsule is sent by the proxy in
response to a REGISTER_TARGET_CID capsule. It optionally assigns a Virtual
Connection ID and Stateless Reset Token if forwarded mode is enabled.</t>
        <figure anchor="fig-capsule-ack-target-cid">
          <name>Acknowledge Target CID Capsule Format</name>
          <artwork><![CDATA[
Acknowledge Target CID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i)
  Connection ID Length (i)
  Connection ID (0..2040),
  Virtual Connection ID Length (i)
  Virtual Connection ID (0..2040),
  Stateless Reset Token Length (i),
  Stateless Reset Token (..),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Connection ID Length</dt>
          <dd>
            <t>The length of the connection ID being acknowledged, which
is between 0 and 255. Note that in QUICv1, the length of the Connection ID
is limited to 20 bytes, but QUIC invariants allow up to 255 bytes.</t>
          </dd>
          <dt>Connection ID</dt>
          <dd>
            <t>A connection ID being acknowledged whose length is equal to
Connection ID Length. This is the real target CID.</t>
          </dd>
          <dt>Virtual Connection ID Length</dt>
          <dd>
            <t>The length of the target VCID being provided. This MUST be a
valid connection ID length for the QUIC version used in the client-to-proxy QUIC
connection. When forwarded mode is not negotiated, the length MUST be zero.
The Virtual Connection ID Length and Connection ID Length SHOULD be equal
when possible to avoid the need to resize packets during replacement.</t>
          </dd>
          <dt>Virtual Connection ID</dt>
          <dd>
            <t>The proxy-chosen connection ID that the client MUST use when sending in
forwarded mode. The proxy rewrites forwarded mode packets to contain the
correct target CID prior to sending them.</t>
          </dd>
          <dt>Stateless Reset Token Length</dt>
          <dd>
            <t>The length of the Stateless Reset Token sent by the proxy in response to
forwarded mode packets in order to reset the client-to-target QUIC connection.
When forwarded mode is not negotiated, the length MUST be zero. Proxies choosing
not to support stateless resets MAY set the length to zero. Clients receiving a
zero-length stateless reset token MUST ignore it.</t>
          </dd>
          <dt>Stateless Reset Token</dt>
          <dd>
            <t>A Stateless Reset Token allowing reset of the client-to-target connection in
response to client-to-target forwarded mode packets.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-ack-virtual">
        <name>ACK_CLIENT_VCID</name>
        <t>The ACK_CLIENT_VCID capsule type is sent by the client in
response to an ACK_CLIENT_CID capsule that contains a virtual connection ID.</t>
        <figure anchor="fig-capsule-ack-virtual-client-cid">
          <name>Acknowledge Client VCID Capsule Format</name>
          <artwork><![CDATA[
Acknowledge Client VCID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i)
  Connection ID Length (i)
  Connection ID (0..2040),
  Virtual Connection ID Length (i)
  Virtual Connection ID (0..2040),
  Stateless Reset Token Length (i),
  Stateless Reset Token (..),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Connection ID Length</dt>
          <dd>
            <t>The length of the connection ID being acknowledged, which
is between 0 and 255. Note that in QUICv1, the length of the Connection ID
is limited to 20 bytes, but QUIC invariants allow up to 255 bytes.</t>
          </dd>
          <dt>Connection ID</dt>
          <dd>
            <t>A connection ID being acknowledged whose length is equal to
Connection ID Length. This is the real Cilent Connection ID.</t>
          </dd>
          <dt>Virtual Connection ID Length</dt>
          <dd>
            <t>The length of the client VCID being acknowledged.</t>
          </dd>
          <dt>Virtual Connection ID</dt>
          <dd>
            <t>The proxy-chosen virtual connection ID being acknowledged whose length is
equal to Virtual Connection ID Length.</t>
          </dd>
          <dt>Stateless Reset Token Length</dt>
          <dd>
            <t>The length of the Stateless Reset Token that may be sent by the client in
response to forwarded mode packets to reset the client-to-target connection.
Clients choosing not to support stateless resets MAY set the length to zero.
Proxies receiving a zero-length stateless reset token MUST ignore it.</t>
          </dd>
          <dt>Stateless Reset Token</dt>
          <dd>
            <t>A Stateless Reset Token allowing reset of the target-to-client forwarding rule
in response to target-to-client forwarded mode packets.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-close">
        <name>CLOSE_CLIENT_CID and CLOSE_TARGET_CID</name>
        <t>CLOSE_CLIENT_CID and CLOSE_TARGET_CID capsule types include a reason code
and a connection ID. Clients send these capsules to retire connection IDs they
no longer need. Proxies send these capsules to reject connection ID registrations.</t>
        <figure anchor="fig-capsule-close-cid">
          <name>Close CID Capsule Format</name>
          <artwork><![CDATA[
Close CID Capsule {
  Type (i) = see {{iana}} for the values of the capsule types
  Length (i),
  Reason (i),
  Connection ID (0..2040),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Reason:</dt>
          <dd>
            <t>The reason for closing or rejecting the connection ID registration.
See <xref target="iana-cid-reasons"/> for the list of reason codes.</t>
          </dd>
          <dt>Connection ID:</dt>
          <dd>
            <t>A connection ID being closed, which is between 0 and 255 bytes in
length. The length of the connection ID is implied by the length of the
capsule. Note that in QUICv1, the length of the Connection ID is limited
to 20 bytes, but QUIC invariants allow up to 255 bytes.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-max-cids">
        <name>MAX_CONNECTION_IDS</name>
        <t>The MAX_CONNECTION_IDS capsule is sent by the proxy to the client
to define the cumulative number of connection ID registrations
the client is allowed to request.</t>
        <figure anchor="fig-capsule-max-connection-ids">
          <name>Maximum Connection IDs Capsule Format</name>
          <artwork><![CDATA[
Maximum Connection IDs Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i)
  Maximum Connection IDs (i)
}
]]></artwork>
        </figure>
        <dl>
          <dt>Maximum Connection IDs</dt>
          <dd>
            <t>A count of the cumulative number of connection ID registrations the client
is allowed to request. For example, if the value is 4, the maximum allowed sequence
number for a connection ID registration would be 3.</t>
          </dd>
        </dl>
        <t>The value advertised in the capsule MUST be greater than any value previously
sent in a MAX_CONNECTION_IDS capsule, and MUST be greater than the initial
allowed limit of 2. Thus, any value sent in the capsule MUST be at least 3.</t>
        <t>Clients receiving a MAX_CONNECTION_IDS capsule with an invalid value
MUST reset the stream with H3_DATAGRAM_ERROR error code.</t>
      </section>
      <section anchor="conflicts">
        <name>Detecting Conflicts</name>
        <t>In order to be able to route packets correctly in both tunnelled and forwarded
mode, proxies check for conflicts before creating a new CID mapping. If a conflict
is detected, the proxy will reject the client's registration using a CLOSE_CLIENT_CID
or CLOSE_TARGET_CID capsule with the CONFLICT reason code.</t>
        <t>Two 4-tuples conflict if and only if all members of the 4-tuple (local IP
address, local UDP port, remote IP address, and remote UDP port) are identical.</t>
        <t>Two Connection IDs conflict if and only if one Connection ID is equal to or a
prefix of another. For example, a zero-length Connection ID conflicts with all
connection IDs. This definition of a conflict originates from the fact that
QUIC short headers do not carry the length of the Destination Connection ID
field, and therefore if two short headers with different Destination Connection
IDs are received on a shared 4-tuple, one being a prefix of the other prevents
the receiver from identifying which mapping this corresponds to.</t>
        <t>The proxy treats two mappings as being in conflict when a conflict is detected
for all elements on the left side of the mapping diagrams above.</t>
        <t>Since very short Connection IDs are more likely to lead to conflicts,
particularly zero-length Connection IDs, a proxy MAY choose to reject
registrations for very short Connection IDs using the TOO_SHORT reason code.</t>
      </section>
      <section anchor="client-considerations">
        <name>Client Considerations</name>
        <t>The client sends a REGISTER_CLIENT_CID capsule before it advertises a new
client CID to the target, and a REGISTER_TARGET_CID capsule when
it has received a new target CID for the target. In order to change
the connection ID bytes on the wire, a client can solicit new virtual connection
IDs by re-registering the same connection IDs. Note that re-registrations
consume sequence numbers like any other registration. The client may solicit a new
target VCID by sending a REGISTER_TARGET_CID capsule with a
previously registered target CID. Similarly, the client may solicit a
new client VCID by sending a REGISTER_CLIENT_CID with a
previously registered client CID. The client MUST acknowledge the new
client VCID with an ACK_CLIENT_VCID capsule or close the
registration. The proxy MUST NOT send in forwarded mode until ACK_CLIENT_VCID
has been received. Clients are responsible for changing Virtual Connection IDs
when the HTTP stream's network path changes to avoid linkability across network
paths. Note that initial REGISTER_CLIENT_CID capsules MAY be sent prior to
receiving an HTTP response from the proxy.</t>
        <t>If the client receives a VCID it cannot use, it may re-register the same
client CID with a reason code indicating why the previous VCID was unusable.
The proxy SHOULD use this information to select a more suitable VCID. If the
reason is TOO_SHORT, the proxy MUST either select a longer VCID or close the registration. If the reason is
CONFLICT, the proxy MUST select a different VCID.</t>
        <t>Connection ID registrations are subject to a proxy-advertised limit. Each registration
has a corresponding sequence number. The client MUST NOT send a registration
capsule with a sequence number greater than what the proxy advertises via the
MAX_CONNECTION_IDS capsule. The initial MAX_CONNECTION_IDS value is 1, allowing both
sequence numbers 0 and 1 for a total of two registrations without receiving a
MAX_CONNECTION_IDS capsule from the proxy.</t>
        <t>Clients that cannot register new connection IDs within a reasonable time due to
the MAX_CONNECTION_IDS limit SHOULD abort the proxied connection by resetting the HTTP
stream with error code NO_ERROR. This may happen, for example, if the target server
sends a NEW_CONNECTION_ID frame with Sequence Number and Retire Prior To equal to the
same value.</t>
        <t>Clients can cease receiving with forwarded mode over an existing tunnel while
retaining the same client-to-target connection by creating a new tunnel with
"Proxy-QUIC-Forwarding" set to "?0" and migrating the client-to-target connection.</t>
        <section anchor="new-proxied-connection-setup">
          <name>New Proxied Connection Setup</name>
          <t>To initiate QUIC-aware proxying, the client sends a REGISTER_CLIENT_CID
capsule containing the initial client CID that the client has
advertised to the target.</t>
          <t>If the mapping is created successfully, the client will receive a
ACK_CLIENT_CID capsule that contains the same client CID that was
requested as well as a client VCID that the client MUST use
when sending forwarded mode packets, assuming forwarded mode is supported.</t>
          <t>If forwarded mode is supported, the client MUST respond with an
ACK_CLIENT_VCID to signal to the proxy that it may start sending forwarded mode
packets. If forwarded mode is not supported, an ACK_CLIENT_VCID capsule MUST
NOT be sent.</t>
          <t>Since clients are always aware whether or not they are using a QUIC proxy,
clients are expected to cooperate with proxies in selecting client CIDs.
A proxy detects a conflict when it is not able to create a unique mapping
using the client CID (<xref target="conflicts"/>). It can reject registrations that
would cause a conflict by replying with a CLOSE_CLIENT_CID capsule with the
CONFLICT reason code. Proxies may also reject registrations for short CIDs
using the TOO_SHORT reason code. In order to avoid rejections, clients SHOULD
select client CIDs of at least 8 bytes in length with unpredictable values.
A client also SHOULD NOT select a client CID that matches the ID used
for the QUIC connection to the proxy, as this inherently creates a conflict.</t>
          <t>If the rejection reason was CONFLICT, the client MUST select a new Connection ID
before sending a new registration request, and generate a new packet. For example,
if a client is sending a QUIC Initial packet and chooses a Connection ID that
conflicts with an existing mapping to the same target server, it will need to
generate a new QUIC Initial. If the rejection reason was TOO_SHORT, the client
MUST select a longer Connection ID before retrying.</t>
        </section>
        <section anchor="adding-new-client-connection-ids">
          <name>Adding New Client Connection IDs</name>
          <t>Since QUIC connection IDs are chosen by the receiver, an endpoint needs to
communicate its chosen connection IDs to its peer before the peer can start
using them. In QUICv1, this is performed using the NEW_CONNECTION_ID frame.</t>
          <t>Prior to informing the target of a new chosen client CID, the client
MUST send a REGISTER_CLIENT_CID capsule to the proxy containing the new client
CID.</t>
          <t>The client should only inform the target of the new client CID once an
ACK_CLIENT_CID capsule is received that contains the echoed connection ID.</t>
          <t>If forwarded mode is enabled, the client MUST reply to the ACK_CLIENT_CID with
an ACK_CLIENT_VCID capsule with the real and virtual connection IDs along with
an optional Stateless Reset Token.</t>
        </section>
      </section>
      <section anchor="proxy-considerations">
        <name>Proxy Considerations</name>
        <t>The proxy MUST reply to each REGISTER_CLIENT_CID capsule with either
an ACK_CLIENT_CID or CLOSE_CLIENT_CID capsule containing the
Connection ID that was in the registration capsule.</t>
        <t>Similarly, the proxy MUST reply to each REGISTER_TARGET_CID capsule with
either an ACK_TARGET_CID or CLOSE_TARGET_CID capsule containing the
Connection ID that was in the registration capsule.</t>
        <t>When a proxy receives a REGISTER_CLIENT_CID with a non-zero reason code,
it indicates the client is requesting a new VCID because the previous one
was unusable. The proxy SHOULD attempt to address the issue indicated by
the reason code when selecting the new VCID.</t>
        <t>The proxy then determines the proxy-to-target 4-tuple to associate with the
client's request. This will generally involve performing a DNS lookup for
the target hostname in the CONNECT request, or finding an existing proxy-to-target
4-tuple to the authority. The proxy-to-target 4-tuple might already be open due to a
previous request from this client, or another. If the 4-tuple is not already
created, the proxy creates a new one. Proxies can choose to reuse proxy-to-target
4-tuples across multiple UDP proxying requests, or have a unique proxy-to-target 4-tuple
for every UDP proxying request. If the client did not send a value of "?1" for the
"Proxy-QUIC-Port-Sharing" header, port reuse is not permitted and the proxy MUST allocate
a new UDP 4-tuple.</t>
        <t>If a proxy reuses proxy-to-target 4-tuples, it SHOULD store which authorities
(which could be a domain name or IP address literal) are being accessed over a
particular proxy-to-target 4-tuple so it can avoid performing a new DNS query and
potentially choosing a different target server IP address which could map to a
different target server.</t>
        <t>Proxy-to-target 4-tuples MUST NOT be reused across QUIC and non-QUIC UDP proxy
requests, since it might not be possible to correctly demultiplex or direct
the traffic. Any packets received on a proxy-to-target 4-tuple used for proxying
QUIC that does not correspond to a known CID MUST be dropped.</t>
        <t>When the proxy recieves a REGISTER_CLIENT_CID capsule, it is receiving a
request to be able to route traffic matching the client CID back to
the client using. If the pair of this client CID and the selected
proxy-to-target 4-tuple does not create a conflict, the proxy creates the mapping
and responds with an ACK_CLIENT_CID capsule. If forwarded mode is enabled, the
capsule contains a proxy-chosen client VCID. If forwarded mode
is enabled, and after receiving an ACK_CLIENT_VCID capsule from the client, any
packets received by the proxy from the proxy-to-target 4-tuple that match the
client CID can be sent to the client after the proxy has replaced
the CID with the client VCID and executed the negotiated transform (<xref target="transforms"/>). If forwarded mode is
not supported, the proxy MUST NOT send a client VCID by setting
the length to zero. The proxy MUST use tunnelled mode (HTTP Datagram frames) for
any long header packets. The proxy SHOULD forward directly to the client for any
matching short header packets if forwarding is supported by the client, but the
proxy MAY tunnel these packets in HTTP Datagram frames instead. If the mapping
would create a conflict, the proxy responds with a CLOSE_CLIENT_CID capsule
with the CONFLICT reason code.</t>
        <t>When the proxy recieves a REGISTER_TARGET_CID capsule, it is receiving a
request to allow the client to forward packets to the target. The proxy
generates a target VCID for the client to use when sending
packets in forwarded mode. If forwarded mode is not supported, the proxy MUST
NOT send a target VCID by setting the length to zero. If
forwarded mode is supported, the proxy MUST use a target VCID
that does not introduce a conflict with any other Connection ID on the
client-to-proxy 4-tuple. The proxy creates the mapping and responds with an
ACK_TARGET_CID capsule. Once the successful response is sent, the proxy will
forward any short header packets received on the client-to-proxy 4-tuple that use
the target VCID using the correct proxy-to-target 4-tuple after
first rewriting the target VCID to be the correct target CID and executing the
negotiated transform.</t>
        <t>Proxies MUST choose unpredictable client and target VCIDs to
avoid forwarding loop attacks.</t>
        <t>The proxy MUST only forward non-tunnelled packets from the client that are QUIC
short header packets (based on the Header Form bit) and have mapped target VCIDs.
Packets sent by the client that are forwarded SHOULD be
considered as activity for restarting QUIC's Idle Timeout <xref target="QUIC"/>.</t>
        <t>In order to permit the client to change client-to-target connection IDs, the proxy
SHOULD send MAX_CONNECTION_IDS capsules allowing the client additional connection ID
registrations.</t>
        <section anchor="closing-proxy-state">
          <name>Closing Proxy State</name>
          <t>For any registration capsule for which the proxy has sent an acknowledgement, the
mapping lasts until the client sends a close capsule or either side of the
HTTP stream closes.</t>
          <t>A client that no longer wants a given Connection ID to be forwarded by the
proxy sends a CLOSE_CLIENT_CID or CLOSE_TARGET_CID capsule with the DEFAULT
reason code.</t>
          <t>If a client's connection to the proxy is terminated for any reason, all
mappings associated with all requests are removed.</t>
          <t>A proxy can close its proxy-to-target 4-tuple once all UDP proxying requests mapped to
that 4-tuple have been removed.</t>
        </section>
      </section>
    </section>
    <section anchor="using-forwarded-mode">
      <name>Using Forwarded Mode</name>
      <t>All packets sent in forwarded mode use a transform in which CIDs are switched
into VCIDs, and the contents of packets are either left the same, or modified
(<xref target="transforms"/>).</t>
      <t>Forwarded mode also raises special considerations for handling connection
maintenance (<xref target="maintenance"/>), connection migration (<xref target="migration"/>),
server preferred addresses (<xref target="preferred-address"/>), ECN markings (<xref target="ecn"/>),
and stateless resets (<xref target="resets"/>).</t>
      <t>Forwarded mode packets are not part of the QUIC connection the tunnel is
managed by, but instead an independent flow of QUIC packets.</t>
      <section anchor="sending-with-forwarded-mode">
        <name>Sending With Forwarded Mode</name>
        <t>Support for forwarded mode is determined by the "Proxy-QUIC-Forwarding" header,
see <xref target="forwarding-header"/>.</t>
        <t>Once the client has learned the target server's Connection ID, such as in the
response to a QUIC Initial packet, it can send a REGISTER_TARGET_CID capsule
containing the target CID to request the ability to forward packets.</t>
        <t>The client MUST wait for an ACK_TARGET_CID capsule that contains the echoed
connection ID and target VCID before using forwarded mode.</t>
        <t>Prior to receiving the proxy server response, the client MUST send short header
packets tunnelled in HTTP Datagram frames. The client MAY also choose to tunnel
some short header packets even after receiving the successful response.</t>
        <t>If the target CID registration is rejected, for example with a
CLOSE_TARGET_CID capsule, it MUST NOT forward packets to the requested target CID,
but only use tunnelled mode. The registration might also be rejected
if the proxy does not support forwarded mode or has it disabled by policy.</t>
        <t>QUIC long header packets MUST NOT be forwarded. These packets can only be
tunnelled within HTTP Datagram frames to avoid exposing unnecessary connection
metadata.</t>
        <t>When forwarding, the client sends a QUIC packet with the target VCID
in the QUIC short header, using the same 4-tuple between client and
proxy that was used for the main QUIC connection between client and proxy.</t>
        <t>When forwarding, the proxy sends a QUIC packet with the client VCID
in the QUIC short header, using the same 4-tuple between client
and proxy that was used for the main QUIC connection between client and proxy.</t>
        <t>Prior to sending a forwarded mode packet, the sender MUST replace the Connection
ID with the Virtual Connection ID. If the Virtual Connection ID is larger than
the Connection ID, the sender MUST extend the length of the packet by the
difference between the two lengths, to include the entire Virtual Connection ID.
If the Virtual Connection ID is smaller than the Connection ID, the sender MUST
shrink the length of the packet by the difference between the two lengths.</t>
        <t>Clients and proxies supporting forwarded mode MUST be able to handle Virtual
Connection IDs of different lengths than the corresponding Connection IDs.</t>
      </section>
      <section anchor="receiving-with-forwarded-mode">
        <name>Receiving With Forwarded Mode</name>
        <t>If the client has indicated support for forwarded mode with the "Proxy-QUIC-Forwarding"
header, the proxy MAY use forwarded mode for any client CID for which
it has a valid mapping.</t>
        <t>Once a client has sent an ACK_CLIENT_VCID capsule to the proxy, it MUST be
prepared to receive forwarded short header packets on the 4-tuple between itself
and the proxy for the specified client VCID.</t>
        <t>The client uses the Destination Connection ID field of the received packet to
determine if the packet was originated by the proxy, or merely forwarded from
the target. The client replaces the client VCID with the real
client CID before processing the packet further.</t>
      </section>
      <section anchor="transforms">
        <name>Packet Transforms</name>
        <t>A packet transform is the procedure applied to encode packets as they are sent
on the link between the client and proxy, along with the inverse decode step applied
on receipt. When sending packets, the packet transform is applied after replacing
a CID with a VCID. When receiving packets, the packet transform is applied before
replacing a VCID with a CID.</t>
        <t>Simple transforms can be modeled as a function as follows:</t>
        <t>Inputs:</t>
        <ol spacing="normal" type="1"><li>
            <t>A QUIC short header packet with a VCID.</t>
          </li>
          <li>
            <t>The mode (encode or decode).</t>
          </li>
          <li>
            <t>The direction (client-to-proxy or proxy-to-client).</t>
          </li>
          <li>
            <t>Any configuration information negotiated at startup.</t>
          </li>
        </ol>
        <t>Output:</t>
        <ul spacing="normal">
          <li>
            <t>A UDP payload that conforms to the QUIC invariants <xref target="RFC8999"/> and does not
modify the Connection ID.</t>
          </li>
        </ul>
        <t>More complex transform behaviors could have internal state, but no such transforms
are presented here.</t>
        <t>Packet transforms are identified by an IANA-registered name, and negotiated in
the HTTP headers (see <xref target="forwarding-header"/>).  This document defines two initial
transforms: the <tt>identity</tt> transform and the <tt>scramble</tt> transform.</t>
        <section anchor="identity-transform">
          <name>The identity transform</name>
          <t>The <tt>identity</tt> transform does not modify the packet in any way.  When this transform
is in use, a global passive adversary can trivially correlate pairs of packets
that crossed the forwarder, providing a compact proof that a specific client
was communicating to a specific target.</t>
          <t>The <tt>identity</tt> transform is identified by the value "identity" <xref target="iana-transforms"/>.</t>
          <t>Use of this transform is NOT RECOMMENDED if the <tt>scramble</tt> transform is supported
by both the client and the proxy. Implementations MAY choose to not implement or
support the <tt>identity</tt> transform, depending on the use cases and privacy requirements of
the deployment.</t>
        </section>
        <section anchor="scramble-transform">
          <name>The scramble transform</name>
          <t>The <tt>scramble</tt> transform implements length-preserving unauthenticated
re-encryption of QUIC packets while preserving the QUIC invariants.  When
the <tt>scramble</tt> transform is in use, a global passive adversary cannot simply compare the packet
contents on both sides of the proxy
to link the client and target.  However, the <tt>scramble</tt> transform does not defend against
analysis of packet sizes and timing, nor does it protect privacy against an
active attacker. For example, an active attacker that is able to modify packets prior to being
scrambled by the proxy can manipulate the packets in ways that will cause them to be recognizable
(either by interfering with the material that is used for the IV, or by changing sizes or timing
of packets).</t>
          <t>Deployments that implement the version of the <tt>scramble</tt> transform defined in this
document MUST use the value "scramble-dt". The finalized version is expected
to use the reserved value "scramble" <xref target="iana-transforms"/>.</t>
          <t>The <tt>scramble</tt> transform is initialized using a 32-byte random symmetric key.
When offering or selecting this transform, the client and server each
generate the key that they will use to encrypt scrambled packets and MUST add it to the
"Proxy-QUIC-Forwarding" header in an <tt>sf-binary</tt> parameter named "scramble-key".
If either side receives a <tt>scramble</tt> transform without the "scramble-key" parameter,
forwarded mode MUST be disabled. Note that each side (client and server) generates
its own "scramble-key" that it uses when sending scrambled packets; the value
received in the "scramble-key" parameter is thus used to unscramble packets
received from the peer.</t>
          <t>This transform relies on the AES-128 block cipher, which is represented by the
syntax <tt>AES-ECB(key, plaintext_block)</tt> as in <xref target="RFC9001"/>.  The corresponding
decryption operation is written here as <tt>AES-ECB-inv(key, ciphertext_block)</tt>.
It also uses AES in Counter Mode (<xref target="SP800-38A"/>, Section 6.5), which is
represented by the syntax <tt>AES-CTR(key, iv, input)</tt> for encryption and
decryption (which are identical).  In this syntax, <tt>iv</tt> is an array of 16 bytes
containing the initial counter block.  The counter is incremented by the
standard incrementing function (<xref target="SP800-38A"/>, Appendix B.1) on the full block
width.</t>
          <t>In brief, the transform applies AES in counter mode (AES-CTR) using an
initialization vector drawn from the packet, then encrypts the initialization
vector with AES-ECB. The detailed procedure is as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Let <tt>k1, k2 = scramble_key[:16], scramble_key[16:32]</tt>.</t>
            </li>
            <li>
              <t>Let <tt>L</tt> be the Connection ID length.</t>
            </li>
            <li>
              <t>Let <tt>cid = packet[1:L+1]</tt>, i.e., the Connection ID.</t>
            </li>
            <li>
              <t>Let <tt>iv = packet[L+1:L+17]</tt>, i.e., the 16 bytes following the Connection ID.</t>
            </li>
            <li>
              <t>Let <tt>ctr_input = packet[0] | packet[L+17:]</tt>.</t>
            </li>
            <li>
              <t>Let <tt>ctr_output = AES-CTR(k1, iv, ctr_input)</tt>.</t>
            </li>
            <li>
              <t>Let <tt>header = ctr_output[0] &amp; 0x7F</tt>.  This ensures that the Header Form bit
is zero, as required by the QUIC invariants (<xref target="RFC8999"/>, Section 5.2).</t>
            </li>
            <li>
              <t>Encrypt <tt>iv</tt> with the block cipher: <tt>encrypted_iv = AES-ECB(k2, iv)</tt>.</t>
            </li>
            <li>
              <t>Produce the output packet as:<br/>
                <tt>header | cid | encrypted_iv | ctr_output[1:]</tt>.</t>
            </li>
          </ol>
          <t>The inverse transform operates as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Decrypt the AES-CTR initialization vector:<br/>
                <tt>iv = AES-ECB-inv(k2, packet[L+1:L+17])</tt>.</t>
            </li>
            <li>
              <t>Compute the other variables exactly as in the forward transform.
(AES-CTR encryption and decryption are identical.)</t>
            </li>
            <li>
              <t>Produce the output: <tt>header | cid | iv | ctr_output[1:]</tt>.</t>
            </li>
          </ol>
          <t>The encryption keys used in this procedure do not depend on the packet contents,
so each party only needs to perform AES initialization once for each connection.</t>
          <t>NOTE: The security of this arrangement relies on every short-header QUIC packet
containing a distinct 16 bytes following the Connection ID.  This is true
for the original ciphersuites of QUICv1, but it is not guaranteed by the QUIC
Invariants. Future ciphersuites and QUIC versions could in principle produce
packets that are too short or repeat the values at this location. When using the
<tt>scramble</tt> transform, clients MUST NOT offer any configuration that could
cause the client or target to violate this requirement.</t>
        </section>
      </section>
      <section anchor="maintenance">
        <name>Connection Maintenance in Forwarded Mode</name>
        <t>When a client and proxy are using forwarded mode, it is possible that there can be
long periods of time in which no ack-eliciting packets
(see <xref section="2" sectionFormat="of" target="QUIC-RETRANSMISSION"/>) are exchanged
between the client and proxy. If these periods extend beyond the effective idle
timeout for the client-to-proxy QUIC connection (see <xref section="10.1" sectionFormat="of" target="QUIC"/>),
the QUIC connection might be closed by the proxy if the proxy does not use
forwarded packets as an explicit liveness signal. To avoid this, clients SHOULD
send keepalive packets to the proxy before the idle timeouts would be reached,
which can be done using a PING frame or another ack-eliciting frame as described
in <xref section="10.1.1" sectionFormat="of" target="QUIC"/>.</t>
      </section>
      <section anchor="migration">
        <name>Handling Connection Migration</name>
        <t>If a proxy supports QUIC connection migration, it needs to ensure that a migration
event does not end up sending too many tunnelled or forwarded packets on a new
path prior to path validation.</t>
        <t>Specifically, the proxy MUST limit the number of packets that it will proxy
to an unvalidated client address to the size of an initial congestion window.
Proxies additionally SHOULD pace the rate at which packets are sent over a new
path to avoid creating unintentional congestion on the new path.</t>
        <t>When operating in forwarded mode, the proxy reconfigures or removes forwarding
rules as the network path between the client and proxy changes. In the event of
passive migration, the proxy automatically reconfigures forwarding rules to use
the latest active and validated network path for the HTTP stream. In the event of
active migration, the proxy removes forwarding rules in order to not send
packets with the same connection ID bytes over multiple network paths. After
initiating active migration, clients are no longer able to send forwarded mode
packets since the proxy will have removed forwarding rules. Clients can proceed with
tunnelled mode or can request new forwarding rules via REGISTER_CLIENT_CID and
REGISTER_TARGET_CID capsules. Each of the acknowledging capsules will contain new
virtual connection IDs to prevent packets with the same connection ID bytes being
used over multiple network paths. Note that the client CID and target CID
can stay the same while the target VCID and client VCID change.</t>
      </section>
      <section anchor="preferred-address">
        <name>Handling Server Preferred Addresses</name>
        <t>QUIC allows servers to tell clients about a preferred address the server
would like to use (<xref section="9.6" sectionFormat="of" target="QUIC"/>). When this happens, the client can migrate to the preferred
address.</t>
        <t>When a client using a proxy wants to migrate to the preferred address of the
target server, it needs to create a new UDP proxying request to the proxy (using
the method defined in <xref target="CONNECT-UDP"/>) and using the preferred IP address of the
target as the host to which to connect. This is the behavior clients using a proxy will have regardless of using
the QUIC-aware mechanisms defined in this document. From the proxy's perspective,
the migrating request is separate from the original request.</t>
        <t>Note that clients can be aware of the target address being used for the original
proxy request by looking at <tt>next-hop</tt> parameter on a <tt>Proxy-Status</tt> header
sent by the proxy in its response (<xref section="2.1.2" sectionFormat="of" target="RFC9209"/>). This allows
a client to know if it ought to migrate to the preferred address, or is already
connected to the preferred address. To support the ability of clients to do this, proxies
implementing this specification SHOULD send the <tt>Proxy-Status</tt> header in responses
and include the <tt>next-hop</tt> parameter.</t>
      </section>
      <section anchor="ecn">
        <name>Handling ECN Marking</name>
        <t>Explicit Congestion Notification marking <xref target="ECN"/> uses two bits in the IP
header to signal congestion from a network to endpoints. When using forwarded mode,
the proxy replaces IP headers for packets exchanged between the client and target;
these headers can include ECN markings. Proxies SHOULD preserve ECN markings on
forwarded packets in both directions, to allow ECN to function end-to-end. If the proxy does not
preserve ECN markings, it MUST set ECN marks to zero on the IP headers it generates.</t>
        <t>Forwarded mode does not create an IP-in-IP tunnel, so the guidance in
<xref target="ECN-TUNNEL"/> about transferring ECN markings between inner and outer IP
headers does not apply.</t>
        <t>A proxy MAY additionally add ECN markings to signal congestion being experienced
on the proxy itself.</t>
        <t>Forwarding ECN markings introduces certain active attacks. See
<xref target="active-attacks"/> for more detail.</t>
      </section>
      <section anchor="resets">
        <name>Stateless Resets for Forwarded Mode QUIC Packets</name>
        <t>While the lifecycle of forwarding rules are bound to the lifecycle of the
client-to-proxy HTTP stream, a peer may not be aware that the stream has
terminated. If the above mappings are lost or removed without the peer's
knowledge, they may send forwarded mode packets even though the client
or proxy no longer has state for that connection. To allow the client or
proxy to reset the client-to-target connection in the absence of the mappings
above, a stateless reset token corresponding to the Virtual Connection ID
can be provided.</t>
        <t>Consider a proxy that initiates closure of a client-to-proxy QUIC connection.
If the client is temporarily unresponsive or unreachable, the proxy might have
considered the connection closed and removed all connection state (including
the stream mappings used for forwarding). If the client never learned about the closure, it
might send forwarded mode packets to the proxy, assuming the stream mappings
and client-to-proxy connection are still intact. The proxy will receive these
forwarded mode packets, but won't have any state corresponding to the
destination connection ID in the packet. If the proxy has provided a stateless
reset token for the target VCID, it can send a stateless reset
packet to quickly notify the client that the client-to-target connection is
broken.</t>
        <section anchor="stateless-resets-from-the-target">
          <name>Stateless Resets from the Target</name>
          <t>Reuse of proxy-to-target 4-tuples is only possible because QUIC connection IDs
allow distinguishing packets for multiple QUIC connections received with the
same 5-tuple. One exception to this is Stateless Reset packets, in which the
connection ID is not used, but rather populated with unpredictable bits followed
by a Stateless Reset token, to make it indistinguishable from a regular packet
with a short header. In order for the proxy to correctly recognize Stateless
Reset packets, the client SHOULD share the Stateless Reset token for each
registered target CID. When the proxy receives a Stateless Reset packet,
it can send the packet to the client as a tunnelled datagram. Although Stateless Reset packets
look like short header packets, they are not technically short header packets and do not contain
negotiated connection IDs, and thus are not eligible for forwarded mode.</t>
        </section>
      </section>
    </section>
    <section anchor="example-exchange">
      <name>Example Exchange</name>
      <t>Consider a client that is establishing a new QUIC connection through the proxy.
In this example, the client prefers the <tt>scramble</tt> transform, but also offers the <tt>identity</tt>
transform. It has selected a client CID of <tt>0x31323334</tt>. In order to inform a proxy
of the new QUIC client CID, the client also sends a
REGISTER_CLIENT_CID capsule.</t>
      <t>The client will also send the initial QUIC packet with the Long Header form in
an HTTP datagram.</t>
      <artwork><![CDATA[
Client                                             Server

STREAM(44): HEADERS             -------->
  :method = CONNECT
  :protocol = connect-udp
  :scheme = https
  :path = /target.example.com/443/
  :authority = proxy.example.org
  proxy-quic-port-sharing = ?1
  proxy-quic-forwarding = ?1; accept-transform="scramble,identity"; \
      scramble-key=:abc...789=:
  capsule-protocol = ?1

STREAM(44): DATA                -------->
  Capsule Type = REGISTER_CLIENT_CID
  Connection ID = 0x31323334

           <--------  STREAM(44): DATA
                        Capsule Type = MAX_CONNECTION_IDS
                        Maximum Sequence Number = 3

DATAGRAM                        -------->
  Quarter Stream ID = 11
  Context ID = 0
  Payload = Encapsulated QUIC initial

           <--------  STREAM(44): HEADERS
                        :status = 200
                        proxy-quic-forwarding = ?1; \
                            transform="scramble"; \
                            scramble-key=:ABC...321=:
                        capsule-protocol = ?1

           <--------  STREAM(44): DATA
                        Capsule Type = ACK_CLIENT_CID
                        Connection ID = 0x31323334
                        Virtual CID = 0x62646668
]]></artwork>
      <t>The proxy has acknowledged the client CID and provided a client VCID.
Even if there were Short Header packets to send, the proxy
cannot send forwarded mode packets because the client hasn't acknowledged the
client VCID.</t>
      <t>The proxy indicates to the client that it will allow connection ID registrations
with sequence numbers 0-3, allowing for registrations beyond the initial maximum
of 1.</t>
      <artwork><![CDATA[
STREAM(44): DATA                -------->
  Capsule Type = ACK_CLIENT_VCID
  Connection ID = 0x31323334
  Virtual CID = 0x62646668
  Stateless Reset Token = Token
]]></artwork>
      <t>The client acknowledges the client VCID. The proxy still
doesn't have any Short Header Packets to send, but, if it did, it would be able
to send with forwarded mode.</t>
      <artwork><![CDATA[
/* Wait for target server to respond to UDP packet. */

           <--------  DATAGRAM
                        Quarter Stream ID = 11
                        Context ID = 0
                        Payload = Encapsulated QUIC initial

/* All Client -> Target QUIC packets must still be encapsulated  */

DATAGRAM                        -------->
  Quarter Stream ID = 11
  Context ID = 0
  Payload = Encapsulated QUIC packet

/* Forwarded mode packets possible in Target -> Client direction  */

           <--------  UDP Datagram
                        Payload = Forwarded QUIC SH packet

]]></artwork>
      <t>The client may receive forwarded mode packets from the proxy with a Virtual
client CID of 0x62646668 which it will replace with the real client CID
of 0x31323334. All forwarded mode packets sent by the proxy
will have been modified to contain the client VCID instead
of the client CID, and processed by the negotiated "scramble"
packet transform. However, in the unlikely event that a forwarded packet
arrives before the proxy's HTTP response, the client will not know which
transform the proxy selected. In this case, the client will have to ignore
the packet or buffer it until the HTTP response is received.</t>
      <t>Once the client learns which Connection ID has been selected by the target
server, it can send a new request to the proxy to establish a mapping for
forwarding. In this case, that ID is 0x61626364. The client sends the
following capsule:</t>
      <artwork><![CDATA[
STREAM(44): DATA                -------->
  Capsule Type = REGISTER_TARGET_CID
  Connection ID = 0x61626364
  Stateless Reset Token = Token

           <--------  STREAM(44): DATA
                        Capsule Type = ACK_TARGET_CID
                        Connection ID = 0x61626364
                        Virtual Connection ID = 0x123412341234
                        Stateless Reset Token = Token

/* Client -> Target QUIC short header packets may use forwarded mode */

UDP Datagram                     -------->
  Payload = Forwarded QUIC SH packet

]]></artwork>
      <t>Upon receiving an ACK_TARGET_CID capsule, the client starts sending Short Header
packets with a Destination Connection ID of 0x123412341234 directly to the proxy
(not tunnelled), and these are rewritten by the proxy to have the Destination
Connection ID 0x61626364 prior to being forwarded directly to the target. In the
reverse direction, Short Header packets from the target with a Destination
Connection ID of 0x31323334 are modified to replace the Destination Connection
ID with the client VCID of 0x62646668 and forwarded directly to
the client.</t>
    </section>
    <section anchor="packet-size-considerations">
      <name>Packet Size Considerations</name>
      <t>Since Initial QUIC packets must be at least 1200 bytes in length, the HTTP
Datagram frames that are used for a QUIC-aware proxy MUST be able to carry at least
1200 bytes.</t>
      <t>Additionally, clients that connect to a proxy for purpose of proxying QUIC
SHOULD start their connection with a larger packet size than 1200 bytes, to
account for the overhead of tunnelling an Initial QUIC packet within an
HTTP Datagram frame. If the client does not begin with a larger packet size than
1200 bytes, it will need to perform Path MTU (Maximum Transmission Unit)
discovery to discover a larger path size prior to sending any tunnelled Initial
QUIC packets.</t>
      <t>Once a proxied QUIC connections moves into forwarded mode, the client SHOULD
initiate Path MTU discovery to increase its end-to-end MTU.</t>
    </section>
    <section anchor="invariance">
      <name>QUIC Version Invariance</name>
      <t>QUIC proxies only need to understand the Header Form bit, and the connection ID
fields from packets in client-to-target QUIC connections. Since these fields
are all invariant across future QUIC versions <xref target="INVARIANTS"/>, QUIC proxies can
proxy all versions of QUIC.</t>
      <t>While QUIC proxies can proxy all versions of QUIC, some optional capabilities
are limited to certain versions. Specifically, some of the connection ID
registration capsules in <xref target="cid-capsules"/> include a Stateless Reset Token field.
This field is defined in <xref target="QUIC"/> and not part of
<xref target="INVARIANTS"/>. If a future QUIC version removes or changes the
behavior of Stateless Reset Tokens, the Stateless Reset Token field in each
capsule MUST have a length of zero.</t>
      <t>When forwarding mode is enabled, the client and target MAY negotiate any QUIC
version, and MAY send packets of that version through the forwarding path.
The proxy does not know what version they are using, so it can only require that
these packets conform to the QUIC invariants for short-header packets
(<xref target="RFC8999"/>, Section 5.2).</t>
      <t>QUIC version 1 specifies a Fixed Bit (a.k.a. the "QUIC bit") with a fixed value
to support sharing a 5-tuple with other protocols such as DTLS, but the QUIC
invariants do not guarantee the value of this bit.  Accordingly proxies with
forwarding mode enabled MUST NOT rely on this bit for protocol identification,
and SHOULD send and accept the <tt>grease_quic_bit</tt> transport parameter
<xref target="QUIC-GREASE"/> to avoid ossification of the forwarding mode path.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Proxies that support this extension SHOULD provide protections to rate-limit
or restrict clients from opening an excessive number of proxied connections, so
as to limit abuse or use of proxies to launch Denial-of-Service attacks.</t>
      <t>Sending QUIC packets by forwarding through a proxy without tunnelling exposes
clients to additional information exposure and deanonymization attacks which
need to be carefully considered. Analysis should consider both passive and
active attackers which may be global or localized to the network paths used
on one side of the proxy. The following sections highlight deanonymization risks with
using forwarded mode.</t>
      <section anchor="passive-attacks">
        <name>Passive Attacks</name>
        <t>A passive attacker aims to deanonymize a client by correlating traffic across
both sides of the proxy. When using forwarded mode with the <tt>identity</tt> packet
transform (see <xref target="identity-transform"/>), such correlation is trivial by matching
a subset of QUIC packet bytes as packets enter the proxy on one side and exit
on the other. Packet transforms such as <tt>scramble</tt> mitigate this by
cryptographically preventing such byte comparisons
(see <xref target="scramble-transform"/>).</t>
        <t>Regardless of which packet transform is used, both tunnelled and forwarded mode
are still vulnerable to size and timing attacks, without the addition of techniques that go beyond the analysis
in this document, such as padding and adding chaff packets.  Such techniques could be supported
in future packet transforms, subject to additional security analysis.</t>
        <t>Unlike tunnelled mode where packets are fully encapsulated in the client-to-proxy
connection, clients using forwarded mode to access multiple target servers
over the same client-to-proxy connection expose the number of target servers
they are communicating with on each connection to passive attackers that can
observe the client-to-proxy traffic. This additional metadata revealed on each
packet simplifies size and timing attacks.</t>
      </section>
      <section anchor="active-attacks">
        <name>Active Attacks</name>
        <t>An active attacker is an adversary that can inject, modify, drop, and view
packets in the network. Some active attacks have different effects between
forwarded mode and tunnelled mode, but active attacks can be used to correlate
flows in either mode.</t>
        <t>Both tunnelled mode and forwarded mode (regardless of packet transform) are
vulnerable to packet injection in the target-to-client direction. An attacker
can inject a burst of packets with a known QUIC Connection ID and see which
Connection ID is used for the corresponding burst on the proxy-to-client network path.</t>
        <t>Forwarded mode is vulnerable to some active attacks that tunneled mode is not.
For example, packet injection with a known QUIC Connection ID can also happen in the
client-to-proxy direction, which only affects forwarded mode since
tunnelled mode sends packets within an authenticated and integrity protected
QUIC connection to the proxy (see <xref target="RFC9001"/>). None of the packet transforms
defined in this document provide integrity protection. Even if a packet
transform did provide integrity protection, attackers can inject replayed
packets. Protection against replayed packets is similarly provided by QUIC in
tunnelled mode, but not provided by any of the forwarded mode packet transforms
defined in this document. Similarly, Forwarded mode packets are vulnerable to
active attacks when <xref target="ECN"/> markings are forwarded. Specifically, an
attacker could embed a signal over a series of packets by clearing or setting
ECN bits. This attack is possible without injecting, dropping, or modifying the
QUIC packet, but instead modifying the packet's IP header.</t>
        <t>An active attacker can modify packets in the client-to-proxy direction, which
would cause a tunnelling proxy to silently drop packets, while a forwarding proxy
would forward the packets. In this way, forwarded mode is less vulnerable to
flow recognition based on corrupting a portion of packets in a burst.</t>
      </section>
      <section anchor="registration-attacks">
        <name>Connection ID Registration Attacks</name>
        <t>Chaining of proxies using forwarded mode introduces the risk of forwarding loop
attacks. Proxies are known to be vulnerable to one such forwarding loop attack
when sharing an IP address and port with other proxies, supporting target-facing
port sharing, and proxying to other proxies. Preventing client VCID conflicts
across proxies sharing an IP address and port mitigates one such forwarding loop
attack. Conflicts can be avoided by partitioning the client VCID space
across proxies, using sufficiently long and random values, or by other means.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-header">
        <name>HTTP Header Fields</name>
        <t>This document registers the "Proxy-QUIC-Forwarding" and "Proxy-QUIC-Port-Sharing" header fields in the
"Hypertext Transfer Protocol (HTTP) Field Name Registry"
&lt;<eref target="https://www.iana.org/assignments/http-fields"/>&gt;.</t>
        <figure anchor="iana-header-type-table">
          <name>Registered HTTP Header Fields</name>
          <artwork><![CDATA[
    +-------------------------+-----------+-----------------+---------------+----------+
    |      Field Name         |  Status   | Structured Type |   Reference   | Comments |
    +-------------------------+-----------+-----------------+---------------+----------+
    | Proxy-QUIC-Forwarding   | permanent |      Item       | This document |   None   |
    | Proxy-QUIC-Port-Sharing | permanent |      Item       | This document |   None   |
    +-------------------------+-----------+-----------------+---------------+----------+
]]></artwork>
        </figure>
      </section>
      <section anchor="proxy-quic-forwarding-parameter-names">
        <name>Proxy QUIC Forwarding Parameter Names</name>
        <t>This document establishes a new registry, "Proxy QUIC Forwarding Parameter Names",
for parameter names to use with the "Proxy-QUIC-Forwarding" header field,
in &lt;<eref target="https://www.iana.org/assignments/masque/masque.xhtml"/>&gt;.
Registrations in this registry are assigned using the
Specification Required policy (Section 4.6 of <xref target="IANA-POLICY"/>).</t>
        <figure anchor="iana-parameter-names-table">
          <name>Initial Proxy QUIC Forwarding Parameter Names</name>
          <artwork><![CDATA[
    +-----------------------+-------------------------------------+---------------+--------------------------------+
    | Parameter Name        | Description                         | Reference     | Notes                          |
    +-----------------------+-------------------------------------+---------------+--------------------------------+
    | accept-transform      | contains supported transforms       | This document | Section {{forwarding-header}}  |
    +-----------------------+-------------------------------------+---------------+--------------------------------+
    | transform             | indicates selected transforms       | This document | Section {{forwarding-header}}  |
    +-----------------------+-------------------------------------+---------------+--------------------------------+
    | scramble-key          | contains key for scramble transform | This document | Section {{scramble-transform}} |
    +-----------------------+-------------------------------------+---------------+--------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="iana-transforms">
        <name>Packet Transform Names</name>
        <t>This document establishes a new registry for packet transform names
in &lt;<eref target="https://www.iana.org/assignments/masque/masque.xhtml"/>&gt;
and defines two initial transforms: "identity" and "scramble".
Prior to finalization, deployments that implement the version of
the <tt>scramble</tt> transform defined in this document should use the value
"scramble-dt". Once the design team proposal is adopted and a new draft is submitted,
the wire identifier will become "scramble-XX" where XX is the draft number.
Registrations in this registry are assigned using the
Specification Required policy (Section 4.6 of <xref target="IANA-POLICY"/>).</t>
        <table anchor="iana-packet-transforms-table">
          <name>Initial Packet Transform Names</name>
          <thead>
            <tr>
              <th align="left">Transform Name</th>
              <th align="left">Description</th>
              <th align="left">Specification</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">identity</td>
              <td align="left">no transformation</td>
              <td align="left">This Document</td>
              <td align="left">Section <xref target="identity-transform"/></td>
            </tr>
            <tr>
              <td align="left">scramble</td>
              <td align="left">Reserved (will be used for final version)</td>
              <td align="left">This Document</td>
              <td align="left">Section <xref target="scramble-transform"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-cid-reasons">
        <name>CID Capsule Reason Codes</name>
        <t>This document establishes a new registry, "CID Capsule Reason Codes",
for reason codes used in REGISTER_CLIENT_CID, REGISTER_TARGET_CID,
CLOSE_CLIENT_CID, and CLOSE_TARGET_CID capsules,
in &lt;<eref target="https://www.iana.org/assignments/masque/masque.xhtml"/>&gt;.
This registry governs a 62-bit space and operates under the QUIC
registration policy documented in <xref section="22.1" sectionFormat="of" target="QUIC"/>. This new registry
includes the common set of fields listed in <xref section="22.1.1" sectionFormat="of" target="QUIC"/>. In
addition to those common fields, all registrations in this registry MUST include
a "Name" field that contains a short name or label for the Reason.</t>
        <t>Permanent registrations in this registry are assigned using the Specification
Required policy (<xref section="4.6" sectionFormat="of" target="IANA-POLICY"/>), except for values
between 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned using
Standards Action or IESG Approval as defined in Sections <xref target="IANA-POLICY" section="4.9" sectionFormat="bare"/> and <xref target="IANA-POLICY" section="4.10" sectionFormat="bare"/> of <xref target="IANA-POLICY"/>.</t>
        <table anchor="iana-cid-reasons-table">
          <name>Initial CID Capsule Reason Codes</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">DEFAULT</td>
              <td align="left">Normal operation</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">TOO_SHORT</td>
              <td align="left">CID/VCID rejected for being too short</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">CONFLICT</td>
              <td align="left">CID/VCID conflicts with existing mapping</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-capsule-types">
        <name>Capsule Types</name>
        <t>This document registers six new values in the "HTTP Capsule Types"
registry established by <xref target="HTTP-CAPSULES"/>. Note that the codepoints below
will be replaced with lower values before publication.</t>
        <table anchor="iana-capsule-type-table">
          <name>Registered Capsule Types</name>
          <thead>
            <tr>
              <th align="left">Capule Type</th>
              <th align="left">Value</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">REGISTER_CLIENT_CID</td>
              <td align="left">0xffe700</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">REGISTER_TARGET_CID</td>
              <td align="left">0xffe701</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_CLIENT_CID</td>
              <td align="left">0xffe702</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_CLIENT_VCID</td>
              <td align="left">0xffe703</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_TARGET_CID</td>
              <td align="left">0xffe704</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">CLOSE_CLIENT_CID</td>
              <td align="left">0xffe705</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">CLOSE_TARGET_CID</td>
              <td align="left">0xffe706</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">MAX_CONNECTION_IDS</td>
              <td align="left">0xffe707</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
        <t>All of these new entries use the following values for these fields:</t>
        <dl spacing="compact" newline="false">
          <dt>Status:</dt>
          <dd>
            <t>provisional (permanent when this document is published)</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>masque@ietf.org</t>
          </dd>
          <dt>Notes:</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="SP800-38A" target="https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-38a.pdf">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Methods and Techniques</title>
            <author initials="M." surname="Dworkin" fullname="Morris Dworkin">
              <organization/>
            </author>
            <date year="2001" month="December" day="01"/>
          </front>
        </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="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="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="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="HTTP-CAPSULES">
          <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="RFC8941">
          <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="February" year="2021"/>
            <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 that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="QUIC-RETRANSMISSION">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="ECN">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishnan"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3168"/>
          <seriesInfo name="DOI" value="10.17487/RFC3168"/>
        </reference>
        <reference anchor="INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="IANA-POLICY">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="QUIC-LB">
          <front>
            <title>QUIC-LB: Generating Routable QUIC Connection IDs</title>
            <author fullname="Martin Duke" initials="M." surname="Duke">
              <organization>Google</organization>
            </author>
            <author fullname="Nick Banks" initials="N." surname="Banks">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="27" month="August" year="2025"/>
            <abstract>
              <t>   QUIC address migration allows clients to change their IP address
   while maintaining connection state.  To reduce the ability of an
   observer to link two IP addresses, clients and servers use new
   connection IDs when they communicate via different client addresses.
   This poses a problem for traditional "layer-4" load balancers that
   route packets via the IP address and port 4-tuple.  This
   specification provides a standardized means of securely encoding
   routing information in the server's connection IDs so that a properly
   configured load balancer can route packets with migrated addresses
   correctly.  As it proposes a structured connection ID format, it also
   provides a means of connection IDs self-encoding their length to aid
   some hardware offloads.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-load-balancers-21"/>
        </reference>
        <reference anchor="RFC8999">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC9209">
          <front>
            <title>The Proxy-Status HTTP Response Header Field</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. Sikora" initials="P." surname="Sikora"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document defines the Proxy-Status HTTP response field to convey the details of an intermediary's response handling, including generated errors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9209"/>
          <seriesInfo name="DOI" value="10.17487/RFC9209"/>
        </reference>
        <reference anchor="ECN-TUNNEL">
          <front>
            <title>Tunnelling of Explicit Congestion Notification</title>
            <author fullname="B. Briscoe" initials="B." surname="Briscoe"/>
            <date month="November" year="2010"/>
            <abstract>
              <t>This document redefines how the explicit congestion notification (ECN) field of the IP header should be constructed on entry to and exit from any IP-in-IP tunnel. On encapsulation, it updates RFC 3168 to bring all IP-in-IP tunnels (v4 or v6) into line with RFC 4301 IPsec ECN processing. On decapsulation, it updates both RFC 3168 and RFC 4301 to add new behaviours for previously unused combinations of inner and outer headers. The new rules ensure the ECN field is correctly propagated across a tunnel whether it is used to signal one or two severity levels of congestion; whereas before, only one severity level was supported. Tunnel endpoints can be updated in any order without affecting pre-existing uses of the ECN field, thus ensuring backward compatibility. Nonetheless, operators wanting to support two severity levels (e.g., for pre-congestion notification -- PCN) can require compliance with this new specification. A thorough analysis of the reasoning for these changes and the implications is included. In the unlikely event that the new rules do not meet a specific need, RFC 4774 gives guidance on designing alternate ECN semantics, and this document extends that to include tunnelling issues. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6040"/>
          <seriesInfo name="DOI" value="10.17487/RFC6040"/>
        </reference>
        <reference anchor="QUIC-GREASE">
          <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>
      </references>
    </references>
    <?line 1756?>

<section anchor="appendix-a-example-of-a-forwarded-mode-quic-packet">
      <name>Appendix A. Example of a Forwarded Mode QUIC Packet</name>
      <t>The following is an example of a QUIC packet that could have been sent by a
client or proxy in Forwarded Mode.</t>
      <t>Original QUIC Destination Connection ID</t>
      <artwork type="hex-dump"><![CDATA[
002e9184cb0022ca7aecf1128c91d809e1b6853f
]]></artwork>
      <t>Virtual QUIC Destination Connection ID</t>
      <artwork type="hex-dump"><![CDATA[
0123456789abcdef0123456789abcdef01234567
]]></artwork>
      <t>Original QUIC Packet Generated for a Peer.</t>
      <artwork type="hex-dump"><![CDATA[
50002e9184cb0022ca7aecf1128c91d8
09e1b6853f1ba3bed7043a2163202304
8def32f4f8f260c290490413d24ea6
]]></artwork>
      <t>Forwarded mode packet with the identity transform</t>
      <artwork type="hex-dump"><![CDATA[
500123456789abcdef0123456789abcd
ef012345671ba3bed7043a2163202304
8def32f4f8f260c290490413d24ea6
]]></artwork>
      <t>Forwarded mode packet with scramble key <tt>f13a915f96fb8919d9d8655488ffea5778cac8cffbc27cd38c173bcbad955cff</tt></t>
      <artwork type="hex-dump"><![CDATA[
320123456789abcdef0123456789abcd
ef012345678ebe6906e16ec5fc90a02c
0109994c3fed03f9d5d88c5f408bb6
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Lucas Pardue, Ryan Hamilton, and Mirja Kühlewind for their inputs
on this document. The scramble transform design came out of the encryption
design team whose members were Antoine Fressancourt, Mirja Kuehlwind, Tiru Reddy,
Ben Schwartz, and the authors of this document. The authors would also like to
thank Martin Duke for identifying a proxy looping vulnerability that influenced
the capsule registration design.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
0ri9CWhk2UP2PZxuFiu3u7tfPN178mgyht/2J/k3eTGZ7e3tP5k83Zs+2X1a
7I0fP/n6YMZpc5oz+NOmwCy3rx9/8+RpPp4Ag+/7m6eItyHi/O+lPqdmQr3l
TmzRNF/vbt+LC5vZG+cH42IKN/0g3997fLC/u3+w+8g9gcUc7M8ezZ7M9h/v
Tvaf7j6C/+0dTPcfFfljXl6n+970vW411G2vcis4XPjg77NKr7+hCerDbO8g
f7r39ezp49n4ydO9p9On0yePv/760ZMnQG3yr7/55skknzyZzGbjyf43k+nB
k8neNwfjyTifPv36a/j4Q7I9WORdt/ekGBePn+4+LvYeF5OvZ5Onu/nu/gSw
Zffp06ePJgezYrp7MHs6/Xr65Al8/2j3yXgs28PIM60dwfYRDD2LPvkC95yt
BsXU3OpzICJcDPblZgLy5luA0qYAvesGaznli3Le+NyKcv2XPPuf/+//czkv
sH2DEr1yzS3qale14jzwzneY9MSAMiE9YNNoQElooeSsieWaFJNFweVBqBzK
0bKpsG39C/QN50sgFOtmoCvcFJdzXOAgOy/XG5CIptObgfsWCMjZ5BLQoPlr
SJziek61T0GIl67fcsgCBTxJZXbsrbz8iLWS4cpnzzcfuY6ZmHRubHVwdEkT
qxCfPZeDlpKbs/mGS8ySHCSMKFIXGRIj978Bfq/mfAlTAQA=

-->

</rfc>
