<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-quic-proxy-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="QUIC Proxy">QUIC-Aware Proxying Using HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-quic-proxy-10"/>
    <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="November" 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 an 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
transforms 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>Negotiation of modes is described in <xref target="negotiation"/>, registration of connection
IDs in <xref target="cid-registration"/>, and forwarded mode in <xref target="forwarded-mode"/>.</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>AAAAAAAA</tt> and a target CID <tt>11111111</tt>, and client B's
connection to the target has negotiated a client CID <tt>BBBBBBBB</tt> and a target CID
<tt>22222222</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>AAAAAAAA</tt> or <tt>BBBBBBBB</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">AAAAAAAA</text>
                  <text x="428" y="52">11111111</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">BBBBBBBB</text>
                  <text x="428" y="244">22222222</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 ---------->
       AAAAAAAA                                     11111111
   +--------+              +-----------+
   | Client +--------------+           +
   |   A    |              |           |
   +--------+              |           |              +--------+
                           |           |   Shared     |        |
                           |   Proxy   +--------------+ Target |
                           |           |   4-tuple    |        |
   +--------+              |           |              +--------+
   | Client |              |           |
   |   B    +--------------+           |
   +--------+              +-----------+
       BBBBBBBB                                     22222222
       <---------- 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 handling 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="vcid-issuance"/>.</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>AAAAAAAA</tt> as the client CID
and <tt>BBBBBBBB</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>CCCCCCCC</tt>
as the client CID and <tt>DDDDDDDD</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>EEEEEEEE</tt> for the client VCID and <tt>FFFFFFFF</tt> for the target VCID.</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">AAAAAAAA</text>
                  <text x="196" y="132">BBBBBBBB</text>
                  <text x="136" y="148">Client-to-proxy</text>
                  <text x="140" y="164">connection</text>
                  <text x="76" y="196">CCCCCCCC</text>
                  <text x="436" y="196">DDDDDDDD</text>
                  <text x="212" y="212">Client-to-target</text>
                  <text x="324" y="212">connection</text>
                  <text x="36" y="244">EEEEEEEE</text>
                  <text x="116" y="244">(CCCCCCCC)</text>
                  <text x="212" y="244">FFFFFFFF</text>
                  <text x="292" y="244">(DDDDDDDD)</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 |
   |        |              |           |              |        |
   +--------+              +-----------+              +--------+

       AAAAAAAA       BBBBBBBB
       <-- Client-to-proxy -->
              connection

       CCCCCCCC                                     DDDDDDDD
       <----------- Client-to-target connection ----------->

  EEEEEEEE (CCCCCCCC)   FFFFFFFF (DDDDDDDD)
       <-- 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 client
VCID allows the connection ID bytes to change on the wire without requiring the
connection IDs on the client-to-target connection to 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
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>
    <section anchor="negotiation">
      <name>Negotiating Modes</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 omit this header field or set it to "?0".</t>
      <artwork><![CDATA[
  proxy-quic-forwarding = ?1; \
      accept-transform="scramble-dt,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-registration"/> and <xref target="forwarded-mode"/> to
communicate information about CIDs and VCIDs.</t>
      <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.</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". Otherwise, it sets the value to "?0" or omits the header.</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 advertising support for forwarding, the client MAY add an "active-vcid-limit"
parameter whose value is an Integer indicating the maximum number of active
Virtual Connection IDs that the proxy can issue for each registered connection
ID (<xref target="vcid-limit"/>). The value MUST be at least 2. If the parameter is absent, a
limit of 2 is assumed. If the proxy receives an "active-vcid-limit" parameter
whose value is not an Integer or is less than 2, 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 forwarded mode for the request, it will include the
"Proxy-QUIC-Forwarding" header with a value of "?1" in successful HTTP
responses. If the client does not receive this header with a value of "?1", the
client SHALL assume that the proxy does not support forwarded mode. 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 proxies MUST NOT send the
"accept-transform" or "active-vcid-limit" parameters. Clients MUST ignore
receipt of an "accept-transform" or "active-vcid-limit" parameter and proxies
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 supports port sharing for the request includes
"Proxy-QUIC-Port-Sharing" with a value of "?1" in its response.
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>
    <section anchor="cid-registration">
      <name>Connection ID Registration</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.</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. Each
registration capsule carries the sequence number of the registration, which
other capsules use to refer to it. Client CID registrations and target CID
registrations have separate sequence number spaces, which allows the proxy to
limit the number of registrations of each type independently. The first
registration of each type has sequence number 0, and each subsequent
registration of the same type has a sequence number one greater than the
previous one. Every registration capsule consumes a sequence number, including
registrations that are rejected. A proxy that receives a registration capsule
whose sequence number is not the next one for that type of registration, or is
not less than the limit that it has advertised for that type, MUST reset the
stream with H3_DATAGRAM_ERROR error code.</t>
      <t>The ACK_CLIENT_CID and ACK_TARGET_CID capsule types (<xref target="capsule-ack-cid"/>) are
sent by the proxy to the client to indicate that a mapping was successfully
created for a registered connection ID. These capsule types MUST only be sent by
a proxy.</t>
      <t>The REJECT_CLIENT_CID and REJECT_TARGET_CID capsule types (<xref target="capsule-reject"/>)
are used to reject connection ID registrations. Each capsule includes
a reason code indicating the reason for the rejection. These capsules MUST only be sent
by the proxy.</t>
      <t>A proxy MUST NOT send an acknowledgement or rejection capsule for a registration
that the client has not sent, or that the proxy has already acknowledged or
rejected. If a client receives such a capsule, it MUST reset the stream with
H3_DATAGRAM_ERROR error code.</t>
      <t>The RETIRE_CLIENT_CID and RETIRE_TARGET_CID capsule types (<xref target="capsule-retire-cid"/>)
are used by the client to remove connection ID registrations, typically because
the connection ID was retired on the client-to-target connection. These capsule
types MUST only be sent by a client.</t>
      <t>The MAX_CLIENT_CIDS and MAX_TARGET_CIDS capsule types (<xref target="capsule-max-cids"/>)
MUST only be sent by the proxy. They indicate to the client the cumulative
number of client CID and target CID registrations, respectively, that the client
is allowed to request. The initial maximum for each type is 2, allowing the
client to send 2 registrations of each type, one with sequence number 0 and
another with sequence number 1. These capsules are only sent to increase the
limit.</t>
      <t>When port sharing <xref target="port-sharing-header"/> is supported, the client MUST register
and receive acknowledgements for client 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.</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;
alternatively, the proxy can send the
<tt>REJECT_CLIENT_CID</tt> if it detects a conflict with another CID.</t>
        </li>
        <li>
          <t>The proxy sends <tt>MAX_CLIENT_CIDS</tt> and <tt>MAX_TARGET_CIDS</tt> capsules to allow
additional registrations 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>RETIRE_CLIENT_CID</tt>. The client can also initiate new
<tt>REGISTER_CLIENT_CID</tt> exchanges at any time.</t>
        </li>
      </ol>
      <section anchor="capsule-types-formats">
        <name>Capsule Types and Formats</name>
        <section anchor="capsule-reg-client">
          <name>REGISTER_CLIENT_CID</name>
          <t>The REGISTER_CLIENT_CID capsule is sent by the client and contains a sequence
number and 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),
  Connection ID Sequence Number (i),
  Connection ID (0..2040),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of this registration in the sequence number space of
client CID registrations (<xref target="cid-registration"/>).</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 a sequence
number, 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),
  Connection ID Sequence Number (i),
  Connection ID Length (i),
  Connection ID (0..2040),
  Stateless Reset Token (..),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of this registration in the sequence number space of
target CID registrations (<xref target="cid-registration"/>).</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:</dt>
            <dd>
              <t>The target-provided Stateless Reset token allowing the proxy to correctly
recognize Stateless Reset packets to be tunnelled to the client. The length of
the Stateless Reset Token is implied by the length of the capsule.</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-ack-cid">
          <name>ACK_CLIENT_CID and ACK_TARGET_CID</name>
          <t>The ACK_CLIENT_CID and ACK_TARGET_CID capsules are sent by the proxy in
response to REGISTER_CLIENT_CID and REGISTER_TARGET_CID capsules, respectively,
to acknowledge the registration of a connection ID.</t>
          <figure anchor="fig-capsule-ack-cid">
            <name>Acknowledge CID Capsule Format</name>
            <artwork><![CDATA[
Acknowledge CID Capsule {
  Type (i) = see {{iana}} for the values of the capsule types
  Length (i),
  Connection ID Sequence Number (i),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the registration being acknowledged, in the sequence
number space of client CID registrations for ACK_CLIENT_CID and of target CID
registrations for ACK_TARGET_CID (<xref target="cid-registration"/>).</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-reject">
          <name>REJECT_CLIENT_CID and REJECT_TARGET_CID</name>
          <t>REJECT_CLIENT_CID and REJECT_TARGET_CID capsule types include a reason code
and the sequence number of a registration. Proxies send these capsules to reject
connection ID registrations.</t>
          <figure anchor="fig-capsule-reject-cid">
            <name>Reject CID Capsule Format</name>
            <artwork><![CDATA[
Reject CID Capsule {
  Type (i) = see {{iana}} for the values of the capsule types
  Length (i),
  Reason (i),
  Connection ID Sequence Number (i),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Reason:</dt>
            <dd>
              <t>The reason for rejecting the connection ID registration.
See <xref target="iana-cid-reasons"/> for the list of reason codes.</t>
            </dd>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the registration being rejected, in the sequence
number space of client CID registrations for REJECT_CLIENT_CID and of target
CID registrations for REJECT_TARGET_CID (<xref target="cid-registration"/>).</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-retire-cid">
          <name>RETIRE_CLIENT_CID and RETIRE_TARGET_CID</name>
          <t>RETIRE_CLIENT_CID and RETIRE_TARGET_CID capsule types include the sequence
number of a registration. Clients send these capsules to remove the registration
of a connection ID that they no longer need.</t>
          <figure anchor="fig-capsule-retire-cid">
            <name>Retire CID Capsule Format</name>
            <artwork><![CDATA[
Retire CID Capsule {
  Type (i) = see {{iana}} for the values of the capsule types
  Length (i),
  Connection ID Sequence Number (i),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the registration being retired, in the sequence number
space of client CID registrations for RETIRE_CLIENT_CID and of target CID
registrations for RETIRE_TARGET_CID (<xref target="cid-registration"/>).</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-max-cids">
          <name>MAX_CLIENT_CIDS and MAX_TARGET_CIDS</name>
          <t>The MAX_CLIENT_CIDS and MAX_TARGET_CIDS capsules are sent by the proxy to the
client to define the cumulative number of client CID and target CID
registrations, respectively, that 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 values of the capsule types
  Length (i),
  Maximum Connection IDs (i),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Maximum Connection IDs:</dt>
            <dd>
              <t>A count of the cumulative number of registrations of the corresponding type
that the client is allowed to request. For example, if the value of a
MAX_CLIENT_CIDS capsule is 4, the maximum allowed sequence number for a client
CID registration would be 3.</t>
            </dd>
          </dl>
          <t>The value advertised in the capsule MUST be greater than any value previously
sent in a capsule of the same type, 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_CLIENT_CIDS or MAX_TARGET_CIDS capsule with an invalid
value MUST reset the stream with H3_DATAGRAM_ERROR error code.</t>
        </section>
      </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. When a connection ID is
retired on the client-to-target connection, the client sends the corresponding
RETIRE_CLIENT_CID or RETIRE_TARGET_CID capsule. Note that initial
REGISTER_CLIENT_CID capsules MAY be sent prior to receiving an HTTP response
from the proxy.</t>
        <t>A client MUST NOT register a connection ID that is already registered on the
same request.</t>
        <t>Connection ID registrations are subject to proxy-advertised limits. Each
registration has a corresponding sequence number (<xref target="cid-registration"/>). The
client MUST NOT send a registration capsule with a sequence number greater than
or equal to the value the proxy advertises for that type of registration via the
MAX_CLIENT_CIDS or MAX_TARGET_CIDS capsule. The initial limit for each type is
2, allowing sequence numbers 0 and 1 for a total of two registrations of each
type without receiving a MAX_CLIENT_CIDS or MAX_TARGET_CIDS capsule from the
proxy.</t>
        <t>A client that cannot register a new target CID due to the MAX_TARGET_CIDS limit
uses tunnelled mode for packets that use that target CID. A client that cannot
register a new client CID within a reasonable time due to the MAX_CLIENT_CIDS
limit, and cannot continue without it, SHOULD abort the proxied connection by
resetting the HTTP stream with the H3_NO_ERROR error code.</t>
        <section anchor="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 an
ACK_CLIENT_CID capsule that contains the sequence number of that
registration.</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 REJECT_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 it has
received an ACK_CLIENT_CID capsule for the registration.</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 REJECT_CLIENT_CID capsule containing the
sequence number of the registration.</t>
        <t>Similarly, the proxy MUST reply to each REGISTER_TARGET_CID capsule with
either an ACK_TARGET_CID or REJECT_TARGET_CID capsule containing the
sequence number of the registration.</t>
        <t>A proxy that receives a REGISTER_CLIENT_CID or REGISTER_TARGET_CID capsule for a
connection ID that is already registered on the same request MUST reset the
stream with H3_DATAGRAM_ERROR error code.</t>
        <t>A proxy that receives a RETIRE_CLIENT_CID or RETIRE_TARGET_CID capsule with a
sequence number that the client has not yet used for that type of registration
MUST reset the stream with H3_DATAGRAM_ERROR error code. A proxy ignores these
capsules for registrations that the client has already retired, or that the
proxy has rejected, which can happen when the rejection and retirement capsules
are sent simultaneously.</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 receives a REGISTER_CLIENT_CID capsule, it is receiving a
request to be able to route traffic matching the client CID back to
the client. 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 the mapping
would create a conflict, the proxy responds with a REJECT_CLIENT_CID capsule
with the CONFLICT reason code.</t>
        <t>When the proxy receives a REGISTER_TARGET_CID capsule, it creates the mapping
and responds with an ACK_TARGET_CID capsule, or responds with a
REJECT_TARGET_CID capsule if it cannot create the mapping, such as due to a
conflict (<xref target="conflicts"/>).</t>
        <t>In order to permit the client to change client-to-target connection IDs, the proxy
SHOULD send MAX_CLIENT_CIDS and MAX_TARGET_CIDS capsules allowing the client
additional connection ID registrations.</t>
        <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 REJECT_CLIENT_CID
or REJECT_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="target-resets">
          <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
sends the packet to the client as a tunnelled datagram.</t>
        </section>
        <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 retires it or either side of the
HTTP stream closes.</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="forwarded-mode">
      <name>Using Forwarded Mode</name>
      <t>Forwarded mode builds on Connection ID registration (<xref target="cid-registration"/>): for
each registered connection ID, the proxy issues Virtual Connection IDs that are
used on the client-to-proxy 4-tuple in its place.</t>
      <t>When forwarded mode is enabled, the proxy issues Virtual Connection IDs using
the NEW_TARGET_VCID (<xref target="capsule-new-target-vcid"/>) and NEW_CLIENT_VCID
(<xref target="capsule-new-client-vcid"/>) capsule types, and the client accepts or refuses
each client VCID using the ACK_CLIENT_VCID (<xref target="capsule-ack-client-vcid"/>) and
REJECT_CLIENT_VCID (<xref target="capsule-reject-client-vcid"/>) capsule types. The client
retires target VCIDs using the RETIRE_TARGET_VCID capsule type
(<xref target="capsule-retire-target-vcid"/>), and the proxy retires client VCIDs using the
RETIRE_CLIENT_VCID capsule type (<xref target="capsule-retire-client-vcid"/>). These
capsule types MUST only be sent when forwarded mode is enabled.
<xref target="vcid-issuance"/> and <xref target="vcid-retirement"/> describe how they are used.</t>
      <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>
      <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;
alternatively, the proxy can send the
<tt>REJECT_CLIENT_CID</tt> if it detects a conflict with another CID.</t>
        </li>
        <li>
          <t>The proxy sends one or more <tt>NEW_CLIENT_VCID</tt> capsules, each proposing a
client VCID for that client CID.</t>
        </li>
        <li>
          <t>The client sends an <tt>ACK_CLIENT_VCID</tt> capsule for each client VCID that it
can use, which allows the proxy to send forwarded packets using that client
VCID, or a <tt>REJECT_CLIENT_VCID</tt> capsule otherwise.</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;
alternatively, the proxy can send the
<tt>REJECT_TARGET_CID</tt> if it detects a conflict with another CID.</t>
        </li>
        <li>
          <t>The proxy sends one or more <tt>NEW_TARGET_VCID</tt> capsules for that target CID. Once
the client receives a target VCID, it can start sending forwarded
packets using the target VCID.</t>
        </li>
        <li>
          <t>The proxy sends <tt>MAX_CLIENT_CIDS</tt> and <tt>MAX_TARGET_CIDS</tt> capsules to allow
additional registrations via future <tt>REGISTER_CLIENT_CID</tt> and
<tt>REGISTER_TARGET_CID</tt> capsules.</t>
        </li>
        <li>
          <t>When the client migrates to a new network path, the client and proxy switch
to Virtual Connection IDs they have not used before, and retire the ones they no
longer use (<xref target="migration"/>). When the proxy needs to stop accepting
particular target VCIDs, such as when rotating the keys it uses to generate
VCIDs, it sends a <tt>NEW_TARGET_VCID</tt> capsule that asks the client to retire them.</t>
        </li>
        <li>
          <t>Whenever a client or target stops using a particular CID, the client
sends a <tt>RETIRE_CLIENT_CID</tt> or <tt>RETIRE_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 anchor="vcid-capsule-types-formats">
        <name>Virtual Connection ID Capsule Types and Formats</name>
        <section anchor="capsule-new-target-vcid">
          <name>NEW_TARGET_VCID</name>
          <t>The NEW_TARGET_VCID capsule is sent by the proxy to issue a target VCID for a
registered target CID, along with a Stateless Reset Token for it. It can also
ask the client to retire target VCIDs that the proxy issued earlier for the same
target CID (<xref target="vcid-request-retirement"/>). This capsule MUST only be sent by the
proxy.</t>
          <figure anchor="fig-capsule-new-target-vcid">
            <name>New Target VCID Capsule Format</name>
            <artwork><![CDATA[
New Target VCID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i),
  Connection ID Sequence Number (i),
  Virtual Connection ID Sequence Number (i),
  Retire Prior To (i),
  Virtual Connection ID Length (i),
  Virtual Connection ID (8..2040),
  Stateless Reset Token (..),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the target CID registration that the target VCID maps
to (<xref target="cid-registration"/>).</t>
            </dd>
            <dt>Virtual Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the target VCID that the capsule issues
(<xref target="vcid-issuance"/>).</t>
            </dd>
            <dt>Retire Prior To:</dt>
            <dd>
              <t>The Virtual Connection ID sequence number below which the client is asked to
retire target VCIDs for the same registration (<xref target="vcid-request-retirement"/>).
This MUST NOT be greater than the Virtual Connection ID Sequence Number.</t>
            </dd>
            <dt>Virtual Connection ID Length:</dt>
            <dd>
              <t>The length of the target VCID. This MUST be a non-zero, valid connection ID
length for the QUIC version used in the client-to-proxy QUIC connection. The
lengths of the target VCID and target CID 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 target VCID, whose length is equal to Virtual Connection ID
Length. The client uses it when sending forwarded mode packets, and the proxy
rewrites these packets to contain the correct target CID prior to forwarding
them.</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. The length of the
Stateless Reset Token is implied by the length of the capsule. Proxies choosing
not to support stateless resets MAY send a zero-length Stateless Reset Token.
Clients receiving a zero-length stateless reset token MUST ignore it.</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-new-client-vcid">
          <name>NEW_CLIENT_VCID</name>
          <t>The NEW_CLIENT_VCID capsule is sent by the proxy to propose a client VCID for a
registered client CID. This capsule MUST only be sent by the proxy.</t>
          <figure anchor="fig-capsule-new-client-vcid">
            <name>New Client VCID Capsule Format</name>
            <artwork><![CDATA[
New Client VCID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i),
  Connection ID Sequence Number (i),
  Virtual Connection ID Sequence Number (i),
  Virtual Connection ID (8..2040),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client CID registration that the client VCID maps
to (<xref target="cid-registration"/>).</t>
            </dd>
            <dt>Virtual Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client VCID that the capsule proposes
(<xref target="vcid-issuance"/>).</t>
            </dd>
            <dt>Virtual Connection ID:</dt>
            <dd>
              <t>The proxy-chosen client VCID that the proxy would use when sending forwarded
mode packets, after rewriting them to contain the client VCID instead of the
client CID. The length of the client VCID is implied by the length of the
capsule. Its length MUST be non-zero and valid for the QUIC version used in
the client-to-proxy QUIC connection, and it is chosen as described in
<xref target="vcids"/>. The lengths of the client VCID and client CID SHOULD be equal when
possible to avoid the need to resize packets during replacement.</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-ack-client-vcid">
          <name>ACK_CLIENT_VCID</name>
          <t>The ACK_CLIENT_VCID capsule is sent by the client to accept a client VCID
proposed in a NEW_CLIENT_VCID capsule, indicating that the client is ready to
receive forwarded mode packets using it. This capsule MUST only be sent by the
client.</t>
          <figure anchor="fig-capsule-ack-client-vcid">
            <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 Sequence Number (i),
  Virtual Connection ID Sequence Number (i),
  Stateless Reset Token (..),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client CID registration that the client VCID maps
to (<xref target="cid-registration"/>).</t>
            </dd>
            <dt>Virtual Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client VCID being acknowledged
(<xref target="vcid-issuance"/>).</t>
            </dd>
            <dt>Stateless Reset Token:</dt>
            <dd>
              <t>A Stateless Reset Token that the client can send in response to
target-to-client forwarded mode packets using the client VCID when it has no
state for that client VCID. The length of the Stateless Reset Token is implied
by the length of the capsule. Clients choosing not to support stateless resets
MAY send a zero-length Stateless Reset Token. Proxies receiving a zero-length
stateless reset token MUST ignore it. Since a client does not send a Stateless
Reset for a client VCID before the proxy retires it (<xref target="vcid-retirement"/>), a
proxy that receives a Stateless Reset with this token MUST reset the stream with
H3_DATAGRAM_ERROR error code.</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-reject-client-vcid">
          <name>REJECT_CLIENT_VCID</name>
          <t>The REJECT_CLIENT_VCID capsule is sent by the client to refuse a client VCID
proposed in a NEW_CLIENT_VCID capsule. This capsule MUST only be sent by the
client.</t>
          <figure anchor="fig-capsule-reject-client-vcid">
            <name>Reject Client VCID Capsule Format</name>
            <artwork><![CDATA[
Reject Client VCID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i),
  Reason (i),
  Connection ID Sequence Number (i),
  Virtual Connection ID Sequence Number (i),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Reason:</dt>
            <dd>
              <t>The reason for refusing the client VCID, such as TOO_SHORT or CONFLICT.
See <xref target="iana-cid-reasons"/> for the list of reason codes.</t>
            </dd>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client CID registration that the client VCID maps
to (<xref target="cid-registration"/>).</t>
            </dd>
            <dt>Virtual Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client VCID being refused (<xref target="vcid-issuance"/>).</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-retire-target-vcid">
          <name>RETIRE_TARGET_VCID</name>
          <t>The RETIRE_TARGET_VCID capsule is sent by the client to indicate that it will
no longer send forwarded mode packets using a target VCID. This capsule MUST
only be sent by the client.</t>
          <figure anchor="fig-capsule-retire-target-vcid">
            <name>Retire Target VCID Capsule Format</name>
            <artwork><![CDATA[
Retire Target VCID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i),
  Connection ID Sequence Number (i),
  Virtual Connection ID Sequence Number (i),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the target CID registration that the target VCID maps
to (<xref target="cid-registration"/>).</t>
            </dd>
            <dt>Virtual Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the target VCID being retired (<xref target="vcid-issuance"/>).</t>
            </dd>
          </dl>
        </section>
        <section anchor="capsule-retire-client-vcid">
          <name>RETIRE_CLIENT_VCID</name>
          <t>The RETIRE_CLIENT_VCID capsule is sent by the proxy to indicate that it will no
longer send forwarded mode packets using a client VCID, or to withdraw a
proposed client VCID. This capsule MUST only be sent by the proxy.</t>
          <figure anchor="fig-capsule-retire-client-vcid">
            <name>Retire Client VCID Capsule Format</name>
            <artwork><![CDATA[
Retire Client VCID Capsule {
  Type (i) = see {{iana}} for the value of the capsule type
  Length (i),
  Connection ID Sequence Number (i),
  Virtual Connection ID Sequence Number (i),
}
]]></artwork>
          </figure>
          <dl>
            <dt>Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client CID registration that the client VCID maps
to (<xref target="cid-registration"/>).</t>
            </dd>
            <dt>Virtual Connection ID Sequence Number:</dt>
            <dd>
              <t>The sequence number of the client VCID being retired (<xref target="vcid-issuance"/>).</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="vcid-issuance">
        <name>Issuing Virtual Connection IDs</name>
        <t>After acknowledging a target CID registration, a proxy that is willing to
forward packets for that target CID issues one or more target VCIDs for it using
NEW_TARGET_VCID capsules. The client can use any target VCID that it has
received for sending forwarded mode packets, as long as the target VCID has not
been retired and the proxy has not requested its retirement. Since the proxy is
the endpoint that receives packets using target VCIDs, it MUST be prepared to
receive forwarded mode packets using a target VCID before sending the
NEW_TARGET_VCID capsule that issues it, and the client does not acknowledge
target VCIDs.</t>
        <t>After acknowledging a client CID registration, a proxy proposes one or more
client VCIDs for it using NEW_CLIENT_VCID capsules. Unless it has retired the
registration (see below), the client MUST respond to each
with an ACK_CLIENT_VCID capsule if it is prepared to receive forwarded mode
packets using that client VCID, or with a REJECT_CLIENT_VCID capsule otherwise.
A client rejects a client VCID that conflicts with another Connection ID on the
client-to-proxy 4-tuple using the CONFLICT reason code, and a client VCID that
is too short using the TOO_SHORT reason code. The proxy MUST NOT send forwarded
mode packets using a client VCID until it has received an ACK_CLIENT_VCID
capsule for it. After receiving a REJECT_CLIENT_VCID capsule, the proxy can
propose another client VCID, and SHOULD take the reason code into account when
choosing it. If the reason was TOO_SHORT, any client VCID that the proxy
proposes next for the same client CID MUST be longer.</t>
        <t>Each NEW_TARGET_VCID and NEW_CLIENT_VCID capsule carries the sequence number of
the Virtual Connection ID that it issues. The first Virtual Connection ID that
the proxy issues for a registration has sequence number 0, and each subsequent
Virtual Connection ID that it issues for the same registration has a sequence
number one greater than the previous one. Capsules refer to a Virtual
Connection ID by the sequence number of its registration and its own sequence
number. A client that receives one of these capsules for a registration that it
has not retired, with a sequence number that is not the next one for that
registration, MUST reset the stream with H3_DATAGRAM_ERROR error code.</t>
        <t>Proxies MUST choose unpredictable target VCIDs to avoid forwarding loop attacks,
and MUST use target VCIDs that do not introduce a conflict with any other
Connection ID on the client-to-proxy 4-tuple. Requirements for choosing client
VCIDs are described in <xref target="vcids"/>.</t>
        <t>A proxy SHOULD keep at least one unused Virtual Connection ID available for each
registered connection ID that it forwards packets for, issuing new ones as
others are retired, within the limit set by the client (<xref target="vcid-limit"/>). This
allows the endpoint that sends packets to switch to an unused Virtual Connection
ID without first exchanging capsules, for example when the network path changes
(<xref target="migration"/>).</t>
        <t>A client ignores NEW_TARGET_VCID and NEW_CLIENT_VCID capsules for a
registration that it has already retired, which can happen when the
retirement and issuance capsules are sent simultaneously. These Virtual
Connection IDs are retired along with the others for that registration when the
proxy processes the corresponding RETIRE_CLIENT_CID or RETIRE_TARGET_CID capsule
(<xref target="vcid-retirement"/>). A client that receives one of these capsules for a
registration that the proxy has not acknowledged MUST reset the stream with
H3_DATAGRAM_ERROR error code.</t>
      </section>
      <section anchor="vcid-retirement">
        <name>Retiring Virtual Connection IDs</name>
        <t>The client retires target VCIDs using RETIRE_TARGET_VCID capsules, and the proxy
retires client VCIDs using RETIRE_CLIENT_VCID capsules. An endpoint retires a
Virtual Connection ID when it will no longer send packets using it, for example
after the network path changes (<xref target="migration"/>). An endpoint checks for the
Stateless Reset Token associated with a Virtual Connection ID only after it has
sent packets using that Virtual Connection ID (<xref section="10.3.1" sectionFormat="of" target="QUIC"/>).
Before sending the capsule that retires a Virtual Connection ID, the endpoint
MUST stop sending forwarded mode packets using it and MUST stop checking for the
associated Stateless Reset Token.</t>
        <t>Until a Virtual Connection ID is retired, the endpoint that receives packets
using it MUST keep its state for that Virtual Connection ID, and MUST NOT send a
Stateless Reset in response to packets that use it, since its peer might still
act on the corresponding Stateless Reset Token. Once it has received the capsule
that retires the Virtual Connection ID, it can remove all state for it. Packets
that use a retired Virtual Connection ID and arrive later, for example due to
reordering, can be dropped or answered with a Stateless Reset, which the peer
will ignore.</t>
        <t>When a registration is retired, the Virtual Connection IDs associated with it
are retired as well:</t>
        <ul spacing="normal">
          <li>
            <t>Before sending a RETIRE_TARGET_CID capsule, the client MUST stop using all
target VCIDs for that target CID and stop checking for their Stateless Reset
Tokens. These target VCIDs are retired once the proxy receives the capsule.</t>
          </li>
          <li>
            <t>After sending a RETIRE_CLIENT_CID capsule, the client continues to accept
packets using the client VCIDs for that client CID, and MUST NOT send
Stateless Resets in response to them, until they are retired. Upon receiving
the RETIRE_CLIENT_CID capsule, the proxy MUST stop using and stop checking for
the Stateless Reset Tokens of all client VCIDs for that client CID, and retire
each of them with a RETIRE_CLIENT_VCID capsule.</t>
          </li>
        </ul>
        <t>A proxy can also withdraw a client VCID that it has proposed, before the client
accepts it, by retiring it. A proxy ignores ACK_CLIENT_VCID and
REJECT_CLIENT_VCID capsules for client VCIDs that it has already retired, such
as those that it has withdrawn, and a client ignores RETIRE_CLIENT_VCID capsules
for client VCIDs that are not active, such as those that it has rejected or
ignored. A proxy that receives an ACK_CLIENT_VCID or REJECT_CLIENT_VCID capsule
with a Virtual Connection ID sequence number that it has not yet used for that
registration MUST reset the stream with H3_DATAGRAM_ERROR error code. Likewise,
a client that receives a RETIRE_CLIENT_VCID capsule for a registration that it
has not retired, with a Virtual Connection ID sequence number that the proxy
has not yet used for that registration, MUST reset the stream with
H3_DATAGRAM_ERROR error code.</t>
        <t>A proxy that receives a RETIRE_TARGET_VCID capsule for a target VCID that it did
not issue, or that is already retired, MUST reset the stream with
H3_DATAGRAM_ERROR error code.</t>
        <section anchor="vcid-request-retirement">
          <name>Requesting Retirement of Target VCIDs</name>
          <t>A proxy might need to stop accepting target VCIDs that it has issued. For
example, a proxy that encodes routing information into target VCIDs using keys
that are periodically rotated, such as described in <xref target="QUIC-LB"/>, needs to
replace target VCIDs that were generated with an old key. Much like a QUIC
endpoint does using the Retire Prior To field of the NEW_CONNECTION_ID frame
(<xref section="5.1.2" sectionFormat="of" target="QUIC"/>), the proxy does so by issuing a replacement in a
NEW_TARGET_VCID capsule whose Retire Prior To field asks the client to retire
the target VCIDs that it replaces.</t>
          <t>Retire Prior To uses the sequence numbers of target VCIDs (<xref target="vcid-issuance"/>). A
client that receives a NEW_TARGET_VCID capsule with a Retire Prior To value
greater than the sequence number of the target VCID in the capsule MUST reset
the stream with H3_DATAGRAM_ERROR error code.</t>
          <t>Upon receiving a NEW_TARGET_VCID capsule, the client stops using the target
VCIDs for that target CID that have a sequence number less than the Retire Prior
To value, and MUST retire each of them that it has not already retired, using
RETIRE_TARGET_VCID capsules (<xref target="vcid-retirement"/>), before adding the target VCID
that the capsule issues to its set of active target VCIDs. Since the capsule
always issues a target VCID that it does not ask the client to retire, the
client can switch to it without falling back to tunnelled mode.</t>
          <t>Retire Prior To replaces target VCIDs, and cannot remove the last target VCID
for a target CID. This document does not define a way for a proxy to stop
accepting forwarded mode packets for a target CID while continuing to proxy the
client-to-target connection. A proxy that is no longer willing to accept
forwarded mode packets from the client, for example due to resource constraints
or a change in policy, closes the request stream.</t>
          <t>A proxy does not need to request retirement of client VCIDs, since it is the
endpoint that sends packets using them.</t>
        </section>
      </section>
      <section anchor="vcid-limit">
        <name>Limiting Active Virtual Connection IDs</name>
        <t>The client limits the number of active Virtual Connection IDs that the proxy
issues for each registered connection ID using the "active-vcid-limit"
parameter of the "Proxy-QUIC-Forwarding" header (<xref target="forwarding-header"/>), much
like the active_connection_id_limit transport parameter of QUIC
(<xref section="18.2" sectionFormat="of" target="QUIC"/>). Unlike that transport parameter, the limit applies
to each registered connection ID separately, and only the client sets one, since
the proxy chooses all Virtual Connection IDs.</t>
        <t>A Virtual Connection ID counts toward the limit while it is active, whether or
not any packets have been sent using it. A target VCID is active from when the
client receives it until the client retires it. A client VCID is active from
when the client receives it until the client rejects it or receives a
RETIRE_CLIENT_VCID capsule for it. The proxy MUST NOT send a NEW_TARGET_VCID or
NEW_CLIENT_VCID capsule that would cause the number of active Virtual
Connection IDs for a connection ID to exceed the limit.</t>
        <t>Since capsules are processed in order, a proxy that has reached the limit can
replace a Virtual Connection ID without waiting for a round trip. For client
VCIDs, it retires one before proposing its replacement. For target VCIDs, it
issues the replacement in a NEW_TARGET_VCID capsule whose Retire Prior To field
asks the client to retire at least one target VCID, which the client does before
adding the new one (<xref target="vcid-request-retirement"/>). As in QUIC
(<xref section="5.1.1" sectionFormat="of" target="QUIC"/>), the proxy can therefore issue a target VCID that
temporarily exceeds the limit from its own point of view, until it receives the
corresponding RETIRE_TARGET_VCID capsules.</t>
        <t>After processing a NEW_TARGET_VCID or NEW_CLIENT_VCID capsule, including
retiring any target VCIDs that it asks the client to retire, a client that has
more active Virtual Connection IDs for the connection ID than the limit allows
MUST reset the stream with H3_DATAGRAM_ERROR error code.</t>
      </section>
      <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>Forwarded mode requires connection IDs to be registered and Virtual Connection
IDs to be issued, 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 tunnelled mode to avoid end-to-end
delays.</t>
        <t>Prior to receiving the proxy's 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 proxy rejects the target CID registration or does not issue any target
VCIDs for it, the client continues to use tunnelled mode for that target CID.</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>The proxy will forward to the target any short header packets received from
the client that use one of its target VCIDs, after first rewriting the target
VCID to be the correct target CID and executing the negotiated transform.</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), that use target VCIDs that
the proxy has issued and that have not been retired, and that arrive from a
client address from which the proxy accepts forwarded mode packets
(<xref target="migration"/>).
Packets sent by the client that are forwarded SHOULD be
considered as activity for restarting QUIC's Idle Timeout <xref target="QUIC"/>.</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>Once the client has acknowledged a client VCID, the proxy SHOULD forward to the
client any short header packets from the target that use the corresponding
client CID, after replacing that client CID with the client VCID and executing
the negotiated transform (<xref target="transforms"/>).</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, until that client VCID is retired
(<xref target="vcid-retirement"/>).</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>
        <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>
      <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="INVARIANTS"/> 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 proxy 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 proxy) 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 section="5.2" sectionFormat="of" target="INVARIANTS"/>).</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 NOT forward packets to an unvalidated client address.
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 forwarding
rules (i.e., the mappings for VCIDs) as the network path between the client and proxy changes.
As with connection IDs in QUIC (<xref section="9.5" sectionFormat="of" target="QUIC"/>), a Virtual
Connection ID MUST NOT be used for sending packets on more than one network
path, other than when the peer's address changes without its knowledge, such as
due to NAT rebinding. Since the proxy issues more than one Virtual Connection ID
for each connection ID (<xref target="vcid-issuance"/>), the client and proxy can switch to a
Virtual Connection ID that they have not used before when the network path
changes, without first exchanging capsules.</t>
        <t>Since forwarded mode packets are not authenticated, a proxy only accepts them
from a client address once it has successfully processed a client-to-proxy QUIC
packet from that address, that is, a packet that it decrypted and did not
discard as a duplicate (<xref section="12.3" sectionFormat="of" target="QUIC"/>), including a probing packet
(<xref section="9.1" sectionFormat="of" target="QUIC"/>). Otherwise, an attacker that has observed a target
VCID could use it to inject packets toward the target from any address
(<xref target="active-attacks"/>).</t>
        <t>The proxy continues to accept forwarded mode packets from an address for as long
as it maintains state for the network path to that address, such as a network
path that the client is probing or the previous network path after a migration
(<xref section="9.3.2" sectionFormat="of" target="QUIC"/>), unless path validation to that address fails. The
proxy drops forwarded mode packets that arrive from any other address.
Regardless of the address that they arrive from, the proxy does not send a
Stateless Reset in response to forwarded mode packets that use a target VCID
that has not been retired (<xref target="vcid-retirement"/>).</t>
        <t>The proxy sends forwarded mode packets to the client only at the address that
the client-to-proxy QUIC connection uses, and only once that address is
validated. That address only changes when the client-to-proxy QUIC connection
migrates (<xref section="9.3" sectionFormat="of" target="QUIC"/>), and never in response to forwarded mode
packets. While the client-to-proxy QUIC connection uses an address that it has
not yet validated, the proxy tunnels packets for the client in HTTP Datagram
frames instead, subject to the anti-amplification limit for that address
(<xref section="8" sectionFormat="of" target="QUIC"/>).</t>
        <section anchor="passive-migration">
          <name>Passive Migration</name>
          <t>In the event of passive migration, such as NAT rebinding, the client is not
aware that its address has changed, and continues to send packets using the same
Virtual Connection IDs. Until the client sends a client-to-proxy QUIC packet
from its new address, such as a keepalive (<xref target="maintenance"/>), forwarded mode
packets are lost in both directions: the proxy drops those that the client sends
from the new address, and continues to send those for the client to its previous
address. Once the proxy receives a client-to-proxy QUIC packet from the new
address, it accepts forwarded mode packets from that address. If that packet
causes the client-to-proxy QUIC connection to migrate to the new address, the
proxy tunnels packets for the client until it has validated the new address,
and then reconfigures its forwarding rules to send forwarded mode packets to the
client at the new address. The Virtual Connection IDs in use do not need to
change, although the proxy MAY switch to an unused client VCID when it
reconfigures its forwarding rules for the new address, and then retire the
client VCID it used before.</t>
          <t>A client that has not sent any packets to the proxy for longer than NAT bindings
can be expected to last (see <xref section="3.2" sectionFormat="of" target="RFC9308"/>) might be assigned a
new address by its NAT when it next sends a packet. A client that resumes
sending forwarded mode packets after such a period SHOULD first send an
ack-eliciting packet on the client-to-proxy QUIC connection, such as one
containing a PING frame. This allows the client-to-proxy QUIC connection to
migrate to the new address, and the proxy to accept forwarded mode packets from
it, without waiting for other client-to-proxy QUIC packets.</t>
          <t>The steps for passive migration are as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Client and proxy exchange connection IDs via capsules, the proxy issues Virtual Connection IDs, and they start using the forwarded mode.</t>
            </li>
            <li>
              <t>The network path experiences NAT rebinding, and packets that the client sends to the proxy arrive from a new address.</t>
            </li>
            <li>
              <t>The proxy drops forwarded mode packets from the new address until it receives a client-to-proxy QUIC packet from that address, and then forwards them to the target.</t>
            </li>
            <li>
              <t>The client-to-proxy QUIC connection migrates to the new address, and the proxy starts validating it (<xref section="9.3" sectionFormat="of" target="QUIC"/>). Until path validation succeeds, the proxy tunnels packets for the client in HTTP Datagram frames.</t>
            </li>
            <li>
              <t>Once path validation succeeds, the proxy reconfigures target-to-client forwarding rules to send forwarded mode packets to the client at the new address.</t>
            </li>
          </ol>
          <t>No capsules are exchanged in response to passive migration, unless the proxy
chooses to switch to an unused client VCID.</t>
        </section>
        <section anchor="active-migration">
          <name>Active Migration</name>
          <t>In the event of active migration, the client SHOULD probe the new network path
(<xref section="9.1" sectionFormat="of" target="QUIC"/>) before sending forwarded mode packets on it, and
continues to send forwarded mode packets on the previous network path in the
meantime. Once its path validation succeeds, the client knows that the proxy has
received its probe from the new address, and therefore accepts forwarded mode
packets from it. The client then migrates the client-to-proxy QUIC connection to
the new network path by sending a non-probing packet on it
(<xref section="9.2" sectionFormat="of" target="QUIC"/>), and sends forwarded mode packets on it using target
VCIDs that it has not used before. Once the client no longer uses the previous
network path, it retires the target VCIDs that it used on that path
(<xref target="vcid-retirement"/>).</t>
          <t>A proxy that receives a probing packet from a new client address SHOULD initiate
path validation (<xref section="8.2" sectionFormat="of" target="QUIC"/>) to that address, even before the
client migrates to it, so that it can send forwarded mode packets to the client
on the new network path as soon as the client migrates.</t>
          <t>A client that migrates without first probing the new network path, such as when
the previous network path is no longer usable, sends a client-to-proxy QUIC
packet on the new network path before sending forwarded mode packets on it,
since the proxy drops forwarded mode packets that arrive from the new address
before it has processed such a packet.</t>
          <t>In active migration, the client also switches to a new connection ID on the
client-to-proxy QUIC connection (<xref section="9.5" sectionFormat="of" target="QUIC"/>). Once the
client-to-proxy QUIC connection has migrated to the new network path with a new
connection ID and the proxy has validated the path, the proxy MUST use a client
VCID that it has not used on another network path to send forwarded mode
packets on it. After switching to the new network path, the proxy can retire the
client VCIDs that it used on the previous path at any time. Keeping them, for
example until the client retires the target VCIDs that it used on that path,
allows the proxy to use them again if the client returns to that path, instead
of proposing new client VCIDs. However, client VCIDs that have not been retired
count toward the client's limit (<xref target="vcid-limit"/>).</t>
          <t>If the client has no unused target VCID when it migrates, it sends packets in
tunnelled mode until the proxy issues a new one. Similarly, if the proxy has no
unused client VCID that the client has acknowledged, it sends packets to the
client in tunnelled mode until the client acknowledges a new one. A client that
returns to a previous network path MAY use a target VCID that it used on that
path before, if it has not retired it. In that case, the proxy MAY likewise use
the client VCID that it used on that path, if it has not retired it; otherwise,
the proxy uses an unused client VCID.</t>
          <t>The steps for active migration are as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Client and proxy exchange connection IDs via capsules, the proxy issues Virtual Connection IDs, and they start using the forwarded mode.</t>
            </li>
            <li>
              <t>Client probes a new network path. Once the proxy has received the client's probe, it accepts forwarded mode packets from the new address, and starts validating that address.</t>
            </li>
            <li>
              <t>Once the client's path validation succeeds, the client migrates the client-to-proxy QUIC connection to the new path and sends forwarded mode packets on it using an unused target VCID.</t>
            </li>
            <li>
              <t>Client retires the target VCIDs that it used on the previous path with RETIRE_TARGET_VCID capsules.</t>
            </li>
            <li>
              <t>Once the client-to-proxy QUIC connection has migrated to the new path and the proxy has validated it, the proxy sends forwarded mode packets to the client using an unused client VCID that the client has acknowledged, and, at a time of its choosing, retires the client VCIDs that it used on the previous path with RETIRE_CLIENT_VCID capsules.</t>
            </li>
            <li>
              <t>Proxy issues new target VCIDs and proposes new client VCIDs to replace those that were retired.</t>
            </li>
          </ol>
        </section>
      </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 is bound to the lifecycle of the
client-to-proxy HTTP stream, a peer may not be aware that the stream has
terminated. If the forwarding rules are lost or removed without the peer's
knowledge, the peer 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 signal this, a Stateless Reset Token can be provided for each Virtual
Connection ID. A Stateless Reset for a target VCID resets the client-to-target
connection, and a Stateless Reset for a client VCID causes the proxy to reset
the request stream (<xref target="capsule-ack-client-vcid"/>).</t>
        <t>When a Virtual Connection ID is retired intentionally, the procedures in
<xref target="vcid-retirement"/> ensure that the peer has stopped checking for the
corresponding Stateless Reset Token before a Stateless Reset can be sent for it,
so that retiring a Virtual Connection ID never has either effect.</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>
        <t>Stateless Resets sent by the target do not contain a negotiated connection ID,
so the proxy sends them to the client as tunnelled datagrams
(<xref target="target-resets"/>), even when forwarded mode is enabled.</t>
      </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                                              Proxy

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-dt,identity"; \
      scramble-key=:abc...789=:
  capsule-protocol = ?1

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

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

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

           <--------  STREAM(44): DATA
                        Capsule Type = ACK_CLIENT_CID
                        Connection ID Sequence Number = 0

                        Capsule Type = NEW_CLIENT_VCID
                        Connection ID Sequence Number = 0
                        Virtual Connection ID Sequence Number = 0
                        Virtual Connection ID = 0x62646668

                        Capsule Type = NEW_CLIENT_VCID
                        Connection ID Sequence Number = 0
                        Virtual Connection ID Sequence Number = 1
                        Virtual Connection ID = 0x7a797877
]]></artwork>
      <t>The proxy has acknowledged the client CID and proposed two client VCIDs.
Even if there were Short Header packets to send, the proxy
cannot send forwarded mode packets because the client hasn't acknowledged the
client VCIDs.</t>
      <artwork><![CDATA[
STREAM(44): DATA                -------->
  Capsule Type = ACK_CLIENT_VCID
  Connection ID Sequence Number = 0
  Virtual Connection ID Sequence Number = 0
  Stateless Reset Token = Token

  Capsule Type = ACK_CLIENT_VCID
  Connection ID Sequence Number = 0
  Virtual Connection ID Sequence Number = 1
  Stateless Reset Token = Token
]]></artwork>
      <t>The client acknowledges both client VCIDs. 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 using one of them, keeping the other unused in case
the network path changes.</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 client
VCID 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 <tt>scramble-dt</tt>
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 register it with 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 Sequence Number = 0
  Connection ID = 0x61626364
  Stateless Reset Token = Token

           <--------  STREAM(44): DATA
                        Capsule Type = ACK_TARGET_CID
                        Connection ID Sequence Number = 0

                        Capsule Type = NEW_TARGET_VCID
                        Connection ID Sequence Number = 0
                        Virtual Connection ID Sequence Number = 0
                        Retire Prior To = 0
                        Virtual Connection ID = 0x123412341234
                        Stateless Reset Token = Token

                        Capsule Type = NEW_TARGET_VCID
                        Connection ID Sequence Number = 0
                        Virtual Connection ID Sequence Number = 1
                        Retire Prior To = 0
                        Virtual Connection ID = 0x567856785678
                        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 the NEW_TARGET_VCID capsules, the client starts sending Short Header
packets with a Destination Connection ID of 0x123412341234 directly to the proxy
(not tunnelled), and keeps 0x567856785678 unused in case the network path
changes. These packets 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 connection moves into forwarded mode, the client SHOULD
initiate Path MTU discovery to increase its end-to-end MTU. Since each network
path can support a different packet size, the client does so again after it
migrates to a new network path.</t>
      <t>Packets that the client sends in tunnelled mode need to fit within HTTP Datagram
frames, so a client that increased the maximum datagram size of the
client-to-target connection while using forwarded mode needs to reduce it when
falling back to tunnelled mode, such as when it starts using a target CID for
which the proxy has not issued target VCIDs, or when it migrates without an
unused target VCID (<xref target="migration"/>).</t>
      <t>Target-to-client packets can also become too large to tunnel. A target that
validated a larger path MTU while its packets were forwarded continues to send
packets of that size when the proxy tunnels them instead, such as while the
proxy validates a new client address (<xref target="migration"/>). Since the target is not
aware of changes to the network path between the client and proxy, it also does
not reduce its maximum datagram size when the client migrates, even though the
new network path might not support packets of the same size. A proxy that cannot
fit a target-to-client packet in an HTTP Datagram frame handles it as described
in <xref section="6.1" sectionFormat="of" target="CONNECT-UDP"/>, which recommends dropping the packet and
sending an ICMP Packet Too Big message to the target.</t>
      <t>Since targets might not act on ICMP messages, a client that wants to avoid
losing target-to-client packets in these cases can use the max_udp_payload_size
transport parameter (<xref section="18.2" sectionFormat="of" target="QUIC"/>) to limit the target to packets
that fit in an HTTP Datagram frame on the client-to-proxy QUIC connection, at
the cost of the larger packets that forwarded mode could otherwise allow.</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
capsules in <xref target="capsule-types-formats"/> and <xref target="vcid-capsule-types-formats"/>
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 section="5.2" sectionFormat="of" target="INVARIANTS"/>).</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 tunnelled 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 (<xref section="4.6" sectionFormat="of" target="IANA-POLICY"/>).</t>
        <table anchor="iana-parameter-names-table">
          <name>Initial Proxy QUIC Forwarding Parameter Names</name>
          <thead>
            <tr>
              <th align="left">Parameter Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">accept-transform</td>
              <td align="left">contains supported transforms</td>
              <td align="left">This document</td>
              <td align="left">
                <xref target="forwarding-header"/></td>
            </tr>
            <tr>
              <td align="left">transform</td>
              <td align="left">indicates selected transforms</td>
              <td align="left">This document</td>
              <td align="left">
                <xref target="forwarding-header"/></td>
            </tr>
            <tr>
              <td align="left">scramble-key</td>
              <td align="left">contains key for scramble transform</td>
              <td align="left">This document</td>
              <td align="left">
                <xref target="scramble-transform"/></td>
            </tr>
            <tr>
              <td align="left">active-vcid-limit</td>
              <td align="left">limits active VCIDs per CID</td>
              <td align="left">This document</td>
              <td align="left">
                <xref target="vcid-limit"/></td>
            </tr>
          </tbody>
        </table>
      </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".
Until the <tt>scramble</tt> transform is finalized, deployments use the value
"scramble-dt" instead of the reserved value "scramble" (see <xref target="scramble-transform"/>).
Registrations in this registry are assigned using the
Specification Required policy (<xref section="4.6" sectionFormat="of" 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">
                <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">
                <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 REJECT_CLIENT_CID, REJECT_TARGET_CID, and
REJECT_CLIENT_VCID 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">No specific reason</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 sixteen 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">Capsule 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">0xffe900</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">REGISTER_TARGET_CID</td>
              <td align="left">0xffe901</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_CLIENT_CID</td>
              <td align="left">0xffe902</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_TARGET_CID</td>
              <td align="left">0xffe903</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">REJECT_CLIENT_CID</td>
              <td align="left">0xffe904</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">REJECT_TARGET_CID</td>
              <td align="left">0xffe905</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">RETIRE_CLIENT_CID</td>
              <td align="left">0xffe906</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">RETIRE_TARGET_CID</td>
              <td align="left">0xffe907</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">MAX_CLIENT_CIDS</td>
              <td align="left">0xffe908</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">MAX_TARGET_CIDS</td>
              <td align="left">0xffe909</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">NEW_TARGET_VCID</td>
              <td align="left">0xffe90a</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">NEW_CLIENT_VCID</td>
              <td align="left">0xffe90b</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_CLIENT_VCID</td>
              <td align="left">0xffe90c</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">REJECT_CLIENT_VCID</td>
              <td align="left">0xffe90d</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">RETIRE_TARGET_VCID</td>
              <td align="left">0xffe90e</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">RETIRE_CLIENT_VCID</td>
              <td align="left">0xffe90f</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="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="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="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>Netflix</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="23" month="October" year="2026"/>
            <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-22"/>
        </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="RFC9308">
          <front>
            <title>Applicability of the QUIC Transport Protocol</title>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document discusses the applicability of the QUIC transport protocol, focusing on caveats impacting application protocol development and deployment over QUIC. Its intended audience is designers of application protocol mappings to QUIC and implementors of these application protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9308"/>
          <seriesInfo name="DOI" value="10.17487/RFC9308"/>
        </reference>
        <reference anchor="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>Greasing the QUIC Bit</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes a method for negotiating the ability to send an arbitrary value for the second-most significant bit in QUIC packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9287"/>
          <seriesInfo name="DOI" value="10.17487/RFC9287"/>
        </reference>
      </references>
    </references>
    <?line 2195?>

<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 Kühlewind, 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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
NByGA1akKWWZufHLq9fapfx0w3aaD5EkJu0QE4eJXsFMZYIvjacKJsOe4DpR
QD98MA4tdP2vq4saI7T6WNgHh3OnR3A37O80ZJCYhfRb/9kufoYOYFH3jfA6
1J1FVT/aaQ5omIgt+vo1vDIQBqEwC7qpllXFmiU5V1Bwq6eAnDRgL16Vc9Aw
xccNG0sBSsxUANqMg4nlrWSiY8jvRCBH07orxY0cGVRVsSMCEOTijo7Pj/xK
48v3ND5tdfW+BAO2GgXrUDd/43PDwJQnEr4sOcag3od7h0QFX9/XVwFltzWK
sXJZNZsWw/AkZWRVoHeSJEItoQxhIesC02jc2B2bB9kRWaqBYE8JtdsZxnTg
M1ndWNY0XmKcFg6KfIsPHz4YFyczc++QSuRyynsOP2/tBsfKBq7eeHO8JYI6
zNtD+fM2juLRd/vy5y1fGnns689bN/SuYuu7vpY//Xe5twfy5y0ZjZZXXpMP
AK+TeO2I56B5VS7kN31TBB3j7O6K4kfn1aTExzW02WCiy7CCztoUXsWJ32rv
1ky2D94XFpiqFolQVDF/eJtU9FJN3zMkz6I/em53Fui36R7+IdUxaB7bdIxt
r96ijMT61NCfdIDTS+Cz0/irn24b4E761F1nYLSNu+lTd94Dfyy37TZ+8HX0
fP/Fd1fxdPFK0YM7Yf/oHd5C8V/fTvGqkrVwqsB1eWdTveyYOSUKV/mdsv8+
L0Dl7ARTVKac9IIPVMM/956FXhaDZSXBIcLhvotNCbZbV0nwytiER6iNTBt1
hs7m9aRTJ7D+GxQh533AwWuOy7sEXkl2EPIb/3tWTgbUtg+fsXLl3MAPyEpv
75Nql4u1Wjs8ijeU/biEpBvQ8s4rCpWKSLg9FuxMBPccPc8SoqXzmdeUH8Qx
wnVXTzbzcr3N5Q+bQuuix8kJqb6PxGGA2skN/QpkMlqZ7WU1NWpDwcHKqnWS
crJ7dPj69PsXx6eSTfYVRgZ6+ilu+m7dtht26o9/np5SYqoXJqR63UM1FNSz
u0h183p1utU4kBXtbUKQtPFWHrdG4ML39i00mJ8FpVbpFNVbksYRRz5adavJ
QjM9kj9vXW+mNNLb5/LHzzSoDpSQ4O82nHgvJm48hGTGtAWTiagSA6YK0r2j
sPcKFDxy7uTWYyJOPjMCE9v4tfyiCWowDjSYt8fy5y2RtVnpD36p38if8JMu
+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

-->

</rfc>
