<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pauly-masque-quic-proxy-05" category="exp" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="QUIC Proxy">QUIC-Aware Proxying Using HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-pauly-masque-quic-proxy-05"/>
    <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="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="2022" month="October" day="21"/>
    <workgroup>MASQUE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines an extension to UDP Proxying over HTTP
that adds specific optimizations for proxied QUIC connections. This extension
allows a proxy to reuse UDP 4-tuples for multiple connections. It also defines a
mode of proxying in which QUIC short header packets can be forwarded using an
HTTP/3 proxy rather than being re-encapsulated and re-encrypted.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/tfpauly/quic-proxy">https://github.com/tfpauly/quic-proxy</eref>.</t>
    </note>
  </front>
  <middle>
    <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 hosting content, or another
proxy.</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 bidirectional mapping between one QUIC
connection and one UDP 4-tuple (pairs of IP addresses and ports). A proxy that
is aware of Connection IDs can reuse UDP 4-tuples between itself and a target
for multiple proxied QUIC connections.</t>
      <t>Awareness of Connection IDs also allows a proxy to avoid re-encapsulation and
re-encryption of proxied QUIC packets once a connection has been established.
When this functionality is present, the proxy can support two modes for handling
QUIC packets:</t>
      <ol spacing="normal" type="1"><li>Tunnelled, in which client &lt;-&gt; target QUIC packets are encapsulated inside
client &lt;-&gt; proxy QUIC packets. These packets use multiple layers of encryption
and congestion control. QUIC long header packets MUST use this mode. QUIC short
header packets MAY use this mode. This is the default mode for UDP proxying.</li>
        <li>Forwarded, in which client &lt;-&gt; target QUIC packets are sent directly over the
client &lt;-&gt; proxy UDP socket. These packets are only encrypted using the
client-target keys, and use the client-target congestion control. This mode MUST
only be used for QUIC short header packets.</li>
      </ol>
      <t>Forwarded mode is defined as an optimization to reduce CPU processing on clients and
proxies, as well as avoiding MTU overhead for packets on the wire. 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>All packets sent between the client and the target traverse through the proxy
device.</li>
        <li>The target server cannot know the IP address of the client solely based on the
proxied packets the target receives.</li>
        <li>Observers of either or both of the client &lt;-&gt; proxy link and the proxy &lt;-&gt;
target are not able to learn more about the client &lt;-&gt; target communication than
if no proxy was used.</li>
      </ul>
      <t>It is not a goal of forwarded mode to prevent correlation between client &lt;-&gt;
proxy and the proxy &lt;-&gt; target packets from an entity that can observe both
links. See <xref target="security"/> for further discussion.</t>
      <t>Both clients and proxies can unilaterally choose to disable forwarded mode for
any client &lt;-&gt; target connection.</t>
      <t>The forwarded mode of this extension is only defined for HTTP/3
<xref target="HTTP3"/> and not any earlier versions of HTTP.</t>
      <t>QUIC proxies only need to understand the Header Form bit, and the connection ID
fields from packets in client &lt;-&gt; target QUIC connections. Since these fields
are all in the QUIC invariants header <xref target="INVARIANTS"/>,
QUIC proxies can proxy all versions of QUIC.</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>Client: the client of all QUIC connections discussed in this document.</li>
          <li>Proxy: the endpoint that responds to the UDP proxying request.</li>
          <li>Target: the server that a client is accessing via a proxy.</li>
          <li>Client &lt;-&gt; Proxy HTTP stream: a single HTTP stream established from
the client to the proxy.</li>
          <li>Socket: a UDP 4-tuple (local IP address, local UDP port, remote IP address,
remote UDP port). In some implementations, this is referred to as a "connected"
socket.</li>
          <li>Client-facing socket: the socket used to communicate between the client and
the proxy.</li>
          <li>Target-facing socket: the socket used to communicate between the proxy and
the target.</li>
          <li>Client Connection ID: 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.</li>
          <li>Target Connection ID: 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.</li>
          <li>Virtual Client Connection ID: a fake QUIC Connection ID that is chosen by the
client that the proxy MUST use when sending QUIC packets in forwarded mode.</li>
          <li>Virtual Target Connection ID: a fake QUIC Connection ID that is chosen by the
proxy that the client MUST use when sending QUIC packets in forwarded mode.</li>
        </ul>
      </section>
      <section anchor="virtual-connection-ids">
        <name>Virtual Connection IDs</name>
        <t>QUIC allows each endpoint of a connection to choose the connection IDs it
receives with. 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 Connection ID, load balancers would not be able to route packets
to the correct Proxy if the packets were sent with the Target Connection ID.
The Virtual Target Connection ID is a connection ID chosen
by the Proxy that the Client uses when sending forwarded mode packets. The Proxy
replaces the Virtual Target Connection ID with the Target Connection ID 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 Virtual Client Connection ID is a connection ID
chosen by the Client that the Proxy uses when sending forwarded mode packets.
The Proxy replaces the Client Connection ID with the Virtual Client Connection
ID prior to forwarding the packet to the Client. Clients take advantage of this
to avoid linkability when migrating a client to proxy network path. The Virtual
Client Connection ID allows the connection ID bytes to change on the wire
without requiring the connection IDs on the client to target connection change.</t>
        <t>Clients and Proxies not implementing forwarded mode do not need to consider
Virtual Connection IDs since all Client&lt;-&gt;Target datagrams will be encapsulated
within the Client&lt;-&gt;Proxy connection.</t>
      </section>
    </section>
    <section anchor="mappings">
      <name>Required Proxy State</name>
      <t>In the methods defined in this document, the proxy is aware of the QUIC
Connection IDs being used by proxied connections, along with the sockets
used to communicate with the client and the target. Tracking Connection IDs in
this way allows the proxy to reuse target-facing sockets for multiple
connections and support the forwarded mode of proxying.</t>
      <t>QUIC packets can be either tunnelled within an HTTP proxy connection using
HTTP Datagram frames <xref target="HTTP-DGRAM"/>, or be forwarded
directly alongside an HTTP/3 proxy connection on the same set of IP addresses and UDP
ports. The use of forwarded mode requires the consent of both the client and the
proxy.</t>
      <t>In order to correctly route QUIC packets in both tunnelled and forwarded modes,
the proxy needs to maintain mappings between several items. There are three
required unidirectional mappings, described below.</t>
      <section anchor="stream-mapping">
        <name>Stream Mapping</name>
        <t>Each client &lt;-&gt; proxy HTTP stream MUST be mapped to a single target-facing socket.</t>
        <artwork><![CDATA[
(Client <-> Proxy HTTP Stream) => Target-facing socket
]]></artwork>
        <t>Multiple streams can map to the same target-facing socket, but a
single stream cannot be mapped to multiple target-facing sockets.</t>
        <t>This mapping guarantees that any HTTP Datagram using a stream sent
from the client to the proxy in tunnelled mode can be sent to the correct
target.</t>
      </section>
      <section anchor="virtual-target-connection-id-mapping">
        <name>Virtual Target Connection ID Mapping</name>
        <t>Each pair of Virtual Target Connection ID and client-facing socket MUST map to a
single target-facing socket and Target Connection ID.</t>
        <artwork><![CDATA[
(Client-facing socket + Virtual Target Connection ID)
    => (Target-facing socket + Target Connection ID)
]]></artwork>
        <t>Multiple pairs of Connection IDs and client-facing sockets can map to the
same target-facing socket.</t>
        <t>This mapping guarantees that any QUIC packet containing the Virtual Target
Connection ID sent from the client to the proxy in forwarded mode can be sent to
the correct target with the correct Target Connection ID. Thus, a proxy that
does not allow forwarded mode does not need to maintain this mapping.</t>
      </section>
      <section anchor="client-connection-id-mappings">
        <name>Client Connection ID Mappings</name>
        <t>Each pair of Client Connection ID and target-facing socket MUST map to a single
stream on a single client &lt;-&gt; proxy HTTP stream. Additionally, when supporting
forwarded mode, the pair of Client Connection ID and target-facing socket MUST
map to a single client-facing socket and Virtual Client Connection ID.</t>
        <artwork><![CDATA[
(Target-facing socket + Client Connection ID) => (Client <-> Proxy HTTP Stream)
(Target-facing socket + Client Connection ID)
    => (Client-facing socket + Virtual Client Connection ID)
]]></artwork>
        <t>Multiple pairs of Connection IDs and target-facing sockets can map to the same
HTTP stream or client-facing socket.</t>
        <t>These mappings guarantee that any QUIC packet sent from a target to the proxy
can be sent to the correct client, in either tunnelled or forwarded mode. Note
that this mapping becomes trivial if the proxy always opens a new target-facing
socket for every client request with a unique stream. The mapping is
critical for any case where target-facing sockets are shared or reused.</t>
      </section>
      <section anchor="conflicts">
        <name>Detecting Connection ID 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 mapping. If a conflict
is detected, the proxy will reject the client's request, as described in
<xref target="response"/>.</t>
        <t>Two sockets 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 socket, 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 all
requests for very short Connection IDs as conflicts, in anticipation of future
conflicts.</t>
      </section>
      <section anchor="stateless-resets-for-forwarded-mode-quic-packets">
        <name>Stateless Resets for Forwarded Mode QUIC Packets</name>
        <t>While the lifecycle of forwarding rules are bound to the lifecycle of the
client&lt;-&gt;proxy HTTP stream, a peer may not be aware that the stream has
terminated. If the above mappings are lost or removed without the peer's
knowledge, they may send forwarded mode packets even though the Client
or Proxy no longer has state for that connection. To allow the Client or
Proxy to reset the client&lt;-&gt;target connection in the absence the mappings
above, a stateless reset token corresponding to the Virtual Connection ID
can be provided.</t>
        <t>Consider a proxy that initiates closure of a client&lt;-&gt;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&lt;-&gt;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 Virtual Target Connection ID, it can send a stateless reset
packet to quickly notify the client that the client&lt;-&gt;target connection is
broken.</t>
      </section>
    </section>
    <section anchor="connection-id-capsule-types">
      <name>Connection ID Capsule Types</name>
      <t>Proxy awareness of QUIC Connection IDs relies on using capsules (<xref target="HTTP-DGRAM"/>)
to signal the addition and removal of Client and Target 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 capsules used for QUIC-aware proxying allow a client to register connection
IDs with the proxy, and for the proxy to acknowledge or reject the connection
ID mappings.</t>
      <t>The REGISTER_CLIENT_CID and REGISTER_TARGET_CID capsule types (see
<xref target="iana-capsule-types"/> for the capsule type values) allow a client to inform
the proxy about a new Client Connection ID or a new Target Connection ID,
respectively. These capsule types MUST only be sent by a client.</t>
      <t>The ACK_CLIENT_CID and ACK_TARGET_CID capsule types (see <xref target="iana-capsule-types"/>
for the capsule type values) are sent by the proxy to the client to indicate
that a mapping was successfully created for a registered connection ID as well
as provide the Virtual Target Connection ID that may be used in forwarded mode.
These capsule types MUST only be sent by a proxy.</t>
      <t>The CLOSE_CLIENT_CID and CLOSE_TARGET_CID capsule types (see
<xref target="iana-capsule-types"/> for the capsule type values) allow either a client
or a proxy to remove a mapping for a connection ID. These capsule types
MAY be sent by either a client or the proxy. If a proxy sends a
CLOSE_CLIENT_CID without having sent an ACK_CLIENT_CID, or if a proxy
sends a CLOSE_TARGET_CID without having sent an ACK_TARGET_CID,
it is rejecting a Connection ID registration.</t>
      <t>REGISTER_TARGET_CID, ACK_CLIENT_CID, CLOSE_CLIENT_CID, and CLOSE_TARGET_CID
capsule types are formatted as follows:</t>
      <figure anchor="fig-capsule-cid">
        <name>Connection ID Capsule Format</name>
        <artwork><![CDATA[
Connection ID Capsule {
  Type (i) = 0xffe301, 0xffe302, 0xffe304, 0xffe305
  Length (i),
  Connection ID (0..2040),
}
]]></artwork>
      </figure>
      <dl>
        <dt>Connection ID:</dt>
        <dd>
          <t>A connection ID being registered or acknowledged, 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>
      <t>The REGISTER_CLIENT_CID and ACK_TARGET_CID capsule types include a Virtual
Connection ID and Stateless Reset Token.</t>
      <figure anchor="fig-capsule-virtual-cid">
        <name>Virtual Connection ID Capsule Format</name>
        <artwork><![CDATA[
Virtual Connection ID Capsule {
  Type (i) = 0xffe300, 0xffe303
  Length (i)
  Connection ID Length (i)
  Connection ID (0..2040),
  Virtual Connection ID Length (i)
  Virtual Connection ID (0..2040),
  Stateless Reset Token Length (i),
  Stateless Reset Token (..),
}
]]></artwork>
      </figure>
      <dl>
        <dt>Connection ID Length</dt>
        <dd>
          <t>The length of the connection ID being acknowledged, which is between 0 and
255. Note that in QUICv1, the length of the Connection ID is limited to 20
bytes, but QUIC invariants allow up to 255 bytes.</t>
        </dd>
        <dt>Connection ID</dt>
        <dd>
          <t>A connection ID being acknowledged whose length is equal to Connection ID
Length. This is the real Target or Client Connection ID.</t>
        </dd>
        <dt>Virtual Connection ID Length</dt>
        <dd>
          <t>The length of the virtual connection ID being provided. This MUST be a valid
connection ID length for the QUIC version used in the client&lt;-&gt;proxy QUIC
connection. When forwarded mode is not negotiated, the length MUST be zero.
The Virtual Connection ID Length and Connection ID Length SHOULD be equal
when possible to avoid the need to resize packets during replacement.</t>
        </dd>
        <dt>Virtual Connection ID</dt>
        <dd>
          <t>The peer-chosen connection ID that the sender of forwarded mode packets MUST
use when sending. The endpoint rewrites forwarded mode packets to contain the
correct Connection ID prior to sending them.</t>
        </dd>
        <dt>Stateless Reset Token Length</dt>
        <dd>
          <t>The length of the stateless reset token that may be sent by the client or
proxy in response to forwarded mode packets in order to reset the
Client&lt;-&gt;Target QUIC connection. When forwarded mode is not negotiated, the
length MUST be zero. Proxies or Clients choosing not to support stateless
resets MAY set the length to zero. Clients or Proxies receiving a zero-length
stateless reset token MUST ignore it.</t>
        </dd>
        <dt>Stateless Reset Token</dt>
        <dd>
          <t>A Stateless Reset Token allowing reset of the Client&lt;-&gt;Target connection in
response to Client&lt;-&gt;Target forwarded mode packets.</t>
        </dd>
      </dl>
    </section>
    <section anchor="request">
      <name>Client Request Behavior</name>
      <t>A client initiates UDP proxying via a CONNECT request as defined
in <xref target="CONNECT-UDP"/>. Within its request, it includes the "Proxy-QUIC-Forwarding"
header to indicate whether or not the request should support forwarding.
If this header is not included, the client MUST NOT send any connection ID
capsules.</t>
      <t>The "Proxy-QUIC-Forwarding" is an Item Structured Header <xref target="RFC8941"/>. Its
value MUST be a Boolean. Its ABNF is:</t>
      <artwork><![CDATA[
    Proxy-QUIC-Forwarding = sf-boolean
]]></artwork>
      <t>If the client wants to enable QUIC packet forwarding for this request, it sets
the value to "?1". If it doesn't want to enable forwarding, but instead only
provide information about QUIC Connection IDs for the purpose of allowing
the proxy to share a target-facing socket, it sets the value to "?0".</t>
      <t>If the proxy supports QUIC-aware proxying, it will include the
"Proxy-QUIC-Forwarding" header in successful HTTP responses. The value
indicates whether or not the proxy supports forwarding. If the client does
not receive this header in responses, the client SHALL assume that the proxy
does not understand how to parse Connection ID capsules, and MUST NOT send any
Connection ID capsules.</t>
      <t>The client sends a REGISTER_CLIENT_CID capsule whenever it advertises a new
Client Connection ID to the target, and a REGISTER_TARGET_CID capsule when
it has received a new Target Connection ID for the target. Note that the
initial REGISTER_CLIENT_CID capsule MAY be sent prior to receiving an
HTTP response from the proxy.</t>
      <section anchor="new-proxied-connection-setup">
        <name>New Proxied Connection Setup</name>
        <t>To initiate QUIC-aware proxying, the client sends a REGISTER_CLIENT_CID
capsule containing the initial Client Connection ID that the client has
advertised to the target as well as a Virtual Connection ID that the proxy MUST
use when sending forwarded mode packets. If forwarded mode is not supported,
the Virtual Connection ID Length MUST be zero.</t>
        <t>If the mapping is created successfully, the client will receive a
ACK_CLIENT_CID capsule that contains the same Client Connection ID that was
requested.</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 Connection
IDs. A proxy detects a conflict when it is not able to create a unique mapping
using the Client Connection ID (<xref target="conflicts"/>). It can reject requests that
would cause a conflict and indicate this to the client by replying with a
CLOSE_CLIENT_CID capsule. In order to avoid conflicts, clients SHOULD select
Client Connection IDs of at least 8 bytes in length with unpredictable values.
A client also SHOULD NOT select a Client Connection ID that matches the ID used
for the QUIC connection to the proxy, as this inherently creates a conflict.</t>
        <t>If the rejection indicated a conflict due to the Client Connection ID, the
client MUST select a new Connection ID before sending a new 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.</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 connection ID, the client
MUST send a REGISTER_CLIENT_CID capsule request containing the new Client
Connection ID and Virtual Client Connection ID.</t>
        <t>The client should only inform the target of the new Client Connection ID once an
ACK_CLIENT_CID capsule is received that contains the echoed connection ID.</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="response"/>.</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 Connection ID to request the ability to forward packets.</t>
        <t>The client MUST wait for an ACK_TARGET_CID capsule that contains the echoed
connection ID and Virtual Target Connection ID before using forwarded mode.</t>
        <t>Prior to receiving the proxy server response, the client MUST send short header
packets tunnelled in HTTP Datagram frames. The client MAY also choose to tunnel
some short header packets even after receiving the successful response.</t>
        <t>If the Target Connection ID registration is rejected, for example with a
CLOSE_TARGET_CID capsule, it MUST NOT forward packets to the requested Target
Connection ID, but only use tunnelled mode. The request might also be rejected
if the proxy does not support forwarded mode or has it disabled by policy.</t>
        <t>QUIC long header packets MUST NOT be forwarded. These packets can only be
tunnelled within HTTP Datagram frames to avoid exposing unnecessary connection
metadata.</t>
        <t>When forwarding, the client sends a QUIC packet with the Virtual Target
Connection ID in the QUIC short header, using the same socket between client and
proxy that was used for the main QUIC connection between client and proxy.</t>
        <t>When forwarding, the proxy sends a QUIC packet with the Virtual Client Target
Connection ID in the QUIC short header, using the same socket between client
and proxy that was used for the main QUIC connection between client and proxy.</t>
        <t>Prior to sending a forwarded mode packet, the sender MUST replace the Connection
ID with the Virtual Connection ID. If the Virtual Connection ID is larger than
the Connection ID, the sender MUST extend the length of the packet by the
difference between the two lengths, to include the entire Virtual Connection ID.
If the Virtual Connection ID is smaller than the Connection ID, the sender MUST
shrink the length of the packet by the difference between the two lengths.</t>
        <t>Clients and proxies supporting forwarded mode MUST be able to handle Virtual
Connection IDs of different lengths than the corresponding Connection IDs.</t>
      </section>
      <section anchor="receiving-with-forwarded-mode">
        <name>Receiving With Forwarded Mode</name>
        <t>If the client has indicated support for forwarded mode with the "Proxy-QUIC-Forwarding"
header, the proxy MAY use forwarded mode for any Client Connection ID for which
it has a valid mapping.</t>
        <t>Once a client has sent "Proxy-QUIC-Forwarding" with a value of "?1", it MUST be
prepared to receive forwarded short header packets on the socket between itself
and the proxy for any Virtual Client Connection ID that it has registered with a
REGISTER_CLIENT_CID capsule. 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 Virtual Client
Connection ID with the real Client Connection ID before processing the packet further.</t>
      </section>
    </section>
    <section anchor="response">
      <name>Proxy Response Behavior</name>
      <t>Upon receipt of a CONNECT request that includes the "Proxy-QUIC-Forwarding"
header, the proxy indicates to the client that it supports QUIC-aware proxying
by including a "Proxy-QUIC-Forwarding" header in a successful response.
If it supports QUIC packet forwarding, it sets the value to "?1"; otherwise,
it sets it to "?0".</t>
      <t>Upon receipt of a REGISTER_CLIENT_CID or REGISTER_TARGET_CID capsule,
the proxy validates the registration, tries to establish the appropriate
mappings as described in <xref target="mappings"/>.</t>
      <t>The proxy MUST reply to each REGISTER_CLIENT_CID capsule with either
an ACK_CLIENT_CID or CLOSE_CLIENT_CID capsule containing the
Connection ID that was in the registration capsule.</t>
      <t>Similarly, the proxy MUST reply to each REGISTER_TARGET_CID capsule with
either an ACK_TARGET_CID or CLOSE_TARGET_CID capsule containing the
Connection ID that was in the registration capsule.</t>
      <t>The proxy then determines the target-facing socket 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 target-facing
socket to the authority. The target-facing socket might already be open due to a
previous request from this client, or another. If the socket is not already
created, the proxy creates a new one. Proxies can choose to reuse target-facing
sockets across multiple UDP proxying requests, or have a unique target-facing socket
for every UDP proxying request.</t>
      <t>If a proxy reuses target-facing sockets, it SHOULD store which authorities
(which could be a domain name or IP address literal) are being accessed over a
particular target-facing socket 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>Target-facing sockets 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 target-facing socket used for proxying
QUIC that does not correspond to a known Connection ID MUST be dropped.</t>
      <t>When the proxy recieves a REGISTER_CLIENT_CID capsule, it is receiving a
request to be able to route traffic matching the Client Connection ID back to
the client using the Virtual Client Connection ID. If the pair of this Client
Connection ID and the selected target-facing socket does not create a conflict,
the proxy creates the mapping and responds with a ACK_CLIENT_CID capsule. After
this point, any packets received by the proxy from the target-facing socket that
match the Client Connection ID can to be sent to the client after the proxy has
replaced the Connection ID with the Virtual Client Connection ID. The proxy MUST
use tunnelled mode (HTTP Datagram frames) for any long header packets. The proxy
SHOULD forward directly to the client for any matching short header packets if
forwarding is supported by the client, but the proxy MAY tunnel these packets in
HTTP Datagram frames instead. If the mapping would create a conflict, the proxy
responds with a CLOSE_CLIENT_CID capsule.</t>
      <t>When the proxy recieves a REGISTER_TARGET_CID capsule, it is receiving a
request to allow the client to forward packets to the target. The proxy
generates a Virtual Target Connection ID for the client to use when sending
packets in forwarded mode. If forwarded mode is not supported, the proxy MUST
NOT send a Virtual Target Connection ID by setting the length to zero. If
forwarded mode is supported, the proxy MUST use a Virtual Target Connection ID
that does not introduce a conflict with any other Connection ID on the
client-facing socket. The proxy creates the mapping and responds with an
ACK_TARGET_CID capsule. Once the successful response is sent, the proxy will
forward any short header packets received on the client-facing socket that use
the Virtual Target Connection ID using the correct target-facing socket after
first rewriting the Virtual Target Connection ID to be the correct Target
Connection ID.</t>
      <t>A proxy that supports forwarded mode but chooses not to support rewriting the
Virtual Target Connection ID to the Target Connection ID may opt to simply let
them be equal. If the proxy does wish to choose a Virtual Target Connection ID,
it MUST be able to replace the Virtual Target Connection ID with the Target
Connection ID and correctly handle length differences between the two.
Regardless of whether or not the proxy chooses to support rewriting of the
Virtual Target Connection ID, it MUST be able to support rewriting the Client
Connection ID to the Virtual Client Connection ID.</t>
      <t>If the proxy does not support forwarded mode, or does not allow forwarded mode
for a particular client or authority by policy, it can reject all REGISTER_TARGET_CID
requests with CLOSE_TARGET_CID capsule.</t>
      <t>The proxy MUST only forward non-tunnelled packets from the client that are QUIC
short header packets (based on the Header Form bit) and have mapped Virtual Target
Connection IDs. Packets sent by the client that are forwarded SHOULD be
considered as activity for restarting QUIC's Idle Timeout <xref target="QUIC"/>.</t>
      <section anchor="removing-mapping-state">
        <name>Removing Mapping State</name>
        <t>For any registration capsule for which the proxy has sent an acknowledgement, any
mappings last until either endpoint sends a close capsule or the either side of the
HTTP stream closes.</t>
        <t>A client that no longer wants a given Connection ID to be forwarded by the
proxy sends a CLOSE_CLIENT_CID or CLOSE_TARGET_CID capsule.</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 target-facing socket once all UDP proxying requests mapped to
that socket have been removed.</t>
      </section>
      <section anchor="handling-connection-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 proxied packets on a new
path prior to path validation.</t>
        <t>Specifically, the proxy MUST limit the number of packets that it will proxy
to an unvalidated client address to the size of an initial congestion window.
Proxies additionally SHOULD pace the rate at which packets are sent over a new
path to avoid creating unintentional congestion on the new path.</t>
        <t>When operating in forwarded mode, the proxy MUST NOT send forwarded mode
packets with the same Destination Connection ID over multiple network paths.</t>
        <t>After switching to a new network path, the proxy MUST tunnel Target to Client
packets instead of forwarding. Only once a new Virtual Client Connection ID has
been communicated to the proxy via a REGISTER_CLIENT_CID capsule may the proxy
begin forwarding packets to the client. Similarly, when a client actively
migrates, it MUST NOT send any forwarded mode packets until it has registered
a new Virtual Target Connection ID. In both cases, reusing a connection ID would
increase linkability of the connection between network paths. Note that the
Client Connection ID and Target Connection ID may stay the same while the
Virtual Target Connection ID and Virtual Client Connection ID change.</t>
      </section>
    </section>
    <section anchor="example">
      <name>Example</name>
      <t>Consider a client that is establishing a new QUIC connection through the proxy.
It has selected a Client Connection ID of 0x31323334. In order to inform a proxy
of the new QUIC Client Connection ID, the client also sends a
REGISTER_CLIENT_CID capsule.</t>
      <t>The client will also send the initial QUIC packet with the Long Header form in
an HTTP datagram.</t>
      <artwork><![CDATA[
Client                                             Server

STREAM(44): HEADERS             -------->
  :method = CONNECT
  :protocol = connect-udp
  :scheme = https
  :path = /target.example.com/443/
  :authority = proxy.example.org
  proxy-quic-forwarding = ?1
  capsule-protocol = ?1

STREAM(44): DATA                -------->
  Capsule Type = REGISTER_CLIENT_CID
  Connection ID = 0x31323334
  Virtual CID = 0x62646668
  Stateless Reset Token = Token

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

           <--------  STREAM(44): HEADERS
                        :status = 200
                        proxy-quic-forwarding = ?1
                        capsule-protocol = ?1

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

/* Wait for target server to respond to UDP packet. */

           <--------  DATAGRAM
                        Quarter Stream ID = 11
                        Context ID = 0
                        Payload = Encapsulated QUIC initial
]]></artwork>
      <t>Immediately after sending the REGISTER_CLIENT_CID capsule, the client may
receive forwarded mode packets from the proxy with a Virtual Client
Connection ID of 0x62646668 which it will replace with the real Client
Connection ID of 0x31323334. All forwarded mode packets sent by the proxy
will have been modified to contain the Virtual Client Connection ID instead
of the Client Connection ID.</t>
      <t>Once the client learns which Connection ID has been selected by the target
server, it can send a new request to the proxy to establish a mapping for
forwarding. In this case, that ID is 0x61626364. The client sends the
following capsule:</t>
      <artwork><![CDATA[
STREAM(44): DATA                -------->
  Capsule Type = REGISTER_TARGET_CID
  Connection ID = 0x61626364

           <--------  STREAM(44): DATA
                        Capsule Type = ACK_TARGET_CID
                        Connection ID = 0x61626364
                        Virtual Target Connection ID = 0x123412341234
                        Stateless Reset Token = Token
]]></artwork>
      <t>Upon receiving an ACK_TARGET_CID capsule, the client starts sending Short Header
packets with a Destination Connection ID of 0x123412341234 directly to the proxy
(not tunnelled), and these are rewritten by the proxy to have the Destination
Connection ID 0x61626364 prior to being forwarded directly to the target. In the
reverse direction, Short Header packets from the target with a Destination
Connection ID of 0x31323334 are modified to replace the Destination Connection
ID with the Virtual Client Connection ID of 0x62646668 and forwarded directly to
the client.</t>
    </section>
    <section anchor="packet-size-considerations">
      <name>Packet Size Considerations</name>
      <t>Since Initial QUIC packets must be at least 1200 bytes in length, the HTTP
Datagram frames that are used for a QUIC-aware proxy MUST be able to carry at least
1200 bytes.</t>
      <t>Additionally, clients that connect to a proxy for purpose of proxying QUIC
SHOULD start their connection with a larger packet size than 1200 bytes, to
account for the overhead of tunnelling an Initial QUIC packet within an
HTTP Datagram frame. If the client does not begin with a larger packet size than
1200 bytes, it will need to perform Path MTU (Maximum Transmission Unit)
discovery to discover a larger path size prior to sending any tunnelled Initial
QUIC packets.</t>
      <t>Once a proxied QUIC connections moves into forwarded mode, the client SHOULD
initiate Path MTU discovery to increase its end-to-end MTU.</t>
    </section>
    <section anchor="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
some QUIC header metadata to onlookers, and can be used to correlate packet
flows if an attacker is able to see traffic on both sides of the proxy.
Tunnelled packets have similar inference problems. An attacker on both sides
of the proxy can use the size of ingress and egress packets to correlate packets
belonging to the same connection. (Absent client-side padding, tunnelled packets
will typically have a fixed amount of overhead that is removed before their
HTTP Datagram contents are written to the target.)</t>
      <t>Since proxies that forward QUIC packets do not perform any cryptographic
integrity check, it is possible that these packets are either malformed,
replays, or otherwise malicious. This may result in proxy targets rate limiting
or decreasing the reputation of a given proxy.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-header">
        <name>HTTP Header</name>
        <t>This document registers the "Proxy-QUIC-Forwarding" header in the "Permanent Message
Header Field Names" &lt;<eref target="https://www.iana.org/assignments/message-headers"/>&gt;.</t>
        <figure anchor="iana-header-type-table">
          <name>Registered HTTP Header</name>
          <artwork><![CDATA[
    +-----------------------+----------+--------+---------------+
    | Header Field Name     | Protocol | Status |   Reference   |
    +-----------------------+----------+--------+---------------+
    | Proxy-QUIC-Forwarding |   http   |  exp   | This document |
    +-----------------------+----------+--------+---------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="iana-capsule-types">
        <name>Capsule Types</name>
        <t>This document registers six new values in the "HTTP Capsule Types"
registry established by <xref target="HTTP-DGRAM"/>.</t>
        <table anchor="iana-capsule-type-table">
          <name>Registered Capsule Types</name>
          <thead>
            <tr>
              <th align="left">Capule Type</th>
              <th align="left">Value</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">REGISTER_CLIENT_CID</td>
              <td align="left">0xffe300</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">REGISTER_TARGET_CID</td>
              <td align="left">0xffe301</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_CLIENT_CID</td>
              <td align="left">0xffe302</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">ACK_TARGET_CID</td>
              <td align="left">0xffe303</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">CLOSE_CLIENT_CID</td>
              <td align="left">0xffe304</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">CLOSE_TARGET_CID</td>
              <td align="left">0xffe305</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="17" month="June" 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="Internet-Draft" value="draft-ietf-masque-connect-udp-15"/>
        </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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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="Mike Bishop" initials="M." surname="Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <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="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
        <reference anchor="INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="17" month="June" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.

 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.

 HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-h3-datagram-11"/>
        </reference>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="QUIC-LB">
          <front>
            <title>QUIC-LB: Generating Routable QUIC Connection IDs</title>
            <author fullname="Martin Duke" initials="M." surname="Duke">
              <organization>Google</organization>
            </author>
            <author fullname="Nick Banks" initials="N." surname="Banks">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <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-14"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Lucas Pardue, Ryan Hamilton, and Mirja Kuehlewind for their inputs
on this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
5crqZXEhaxbXzppzgpUAJVbl/AteyWbnGyYLpqqUVeqnIGhWFBuT+we0I8KJ
0ff6mfjzqLBZ3y44q5yukalVl3VzyGRrjOoWkBL39wxM4K2eXld4Je0piKsM
Oo3ZzlpI/C6Hc49XG22zgYhQzFuWE0Y+uWBJaoRFk887jYEQ0HXG7bMoNDAi
vbtHGlHJR6KmplIGo3eE6GEs46nlfYp6N4gngLx5fro5RVNJ+532TdYv6I9n
CyDSSHXSC2g354966WyRjA8sGFUJc7Qev7RXpazNDuYIMWspmVnYNtG0Piqe
9rW9XUcxeLAdeVH4ZeCGM1W+r5hkBjnadbU6HHztEZ6fS6UENhhl/aIjPuBI
HT7ivtrXVx4NeFtDY4phtzG4MLlha06JnyPNcFBBlmbaVOQLkhwS7VP5ZJ1n
3Pno9Os6y5jSHMvzWVp1GhJRT+flGPu2CVXM6u21UlFoXqKjG2lxkAavAmUz
aQsTnM0vZGccBOsTzV7hokkZM05iwVGXQ1RzLa64BDd3IEMR6ekhw/gQlVHi
Snb3vESJG0aljYiIN89M09q051QQDUWkbnU0es7ni9cShU7bNLvNEg5yGBse
T9J+I5jUczANxl0wUbpe8chY3AOsVpO6snQJ7ElVM9HhA5mtLli0nX7J6E49
iqGz+Je0us2Ic698iZtSTqT3i7apY3RPXek7QPRCapcH8w4t9rOYl04Qz5Zu
p2vP7mFeXUm7GeTD3P0NGo45kfWytcUZtyEpAhvAFyU6O9DHqVxQ17f9yMkW
3wqEdnTIPu+7NSiEZbkE6uledRjsvU7Vr430Tc1yld3wnpr0jo+X/lIf6aC4
LVjV7tn+IrmCAweLR7KrEAk7PKDnGOuREbczKs+mzA6kDlzFV21xjrR9Y5Ya
E4YfH/FbcgORB31Zk5yW5nKcfE/XNRFjzfkxvOc61vdcsWdQcsT9aTGJ1fmm
FphvtQarbmGLV12Giw2JUZcKN52Ic3k46GYTtS+jd+jetgiBvhkJZ3SXxZ3B
6HOO+3pER/3o41rXnL8rS43nPp/pq3YorYt7fdhGLk7ThBW16PPDTjiBU0/c
QNZdTmmQcja4uRF19AiEBDkwCJmmyzsJJEFlsci7LHwjUFYm5CWicLqWzs8J
1PSDXCcXYvc9N5+uq8htETtlA+Qs7ePEHVzzV11RMxVbne7G5FuSHFdCJWy9
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

-->

</rfc>
