<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.1 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cms-masque-connect-ip-00" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.6.0 -->
  <front>
    <title abbrev="CONNECT-IP">The CONNECT-IP HTTP Method</title>
    <seriesInfo name="Internet-Draft" value="draft-cms-masque-connect-ip-00"/>
    <author initials="A." surname="Chernyakhovsky" fullname="Alex Chernyakhovsky">
      <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>achernya@google.com</email>
      </address>
    </author>
    <author initials="D." surname="McCall" fullname="Dallas McCall">
      <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>dallasmccall@google.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="2021" month="April" day="12"/>
    <workgroup>MASQUE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes the CONNECT-IP HTTP method. CONNECT-IP is similar to
CONNECT-UDP, but allows transmitting IP packets, without being limited to just
TCP like CONNECT or UDP like CONNECT-UDP.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Multiplexed Application Substrate over QUIC Encryption Working Group mailing list (masque@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/DavidSchinazi/draft-cms-masque-connect-ip"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>This document describes the CONNECT-IP HTTP method. CONNECT-IP is similar to
CONNECT-UDP, but allows transmitting IP packets, without being limited to just
TCP like CONNECT or UDP like CONNECT-UDP.</t>
      <t>CONNECT-IP allows endpoints to set up an IP tunnel between one another. This
can be used to implement a consumer VPN, point-to-point, point-to-network, and
network-to-network capabilities as described in
<xref target="REQS" format="default"/>.</t>
      <section anchor="conventions" numbered="true" toc="default">
        <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" format="default"/> <xref target="RFC8174" format="default"/>
when, and only when, they appear in all capitals, as shown here.</t>
        <t>In this document, we use the term "proxy" to refer to the HTTP server that
responds to the CONNECT-IP request. If there are
HTTP intermediaries (as defined in Section 2.3 of <xref target="RFC7230" format="default"/>) between the
client and the proxy, those are referred to as "intermediaries" in this
document.</t>
      </section>
    </section>
    <section anchor="connect-ip-method" numbered="true" toc="default">
      <name>The CONNECT-IP Method</name>
      <t>The CONNECT-IP method establishes a stream to an endpoint server that then
permits the exchange of control data, such as IP address information, reachable
IP ranges, and other relevant information for successfully transmitting IP
datagrams between hosts.</t>
      <t>The request-target of a CONNECT-IP request is a URI <xref target="URI" format="default"/> which uses
the "https" scheme and an immutable path of "/". When using HTTP/2
<xref target="H2" format="default"/> or later, CONNECT-IP requests use HTTP pseudo-headers with the
following requirements:</t>
      <ul spacing="normal">
        <li>The ":method" pseudo-header field is set to "CONNECT-IP".</li>
        <li>The ":scheme" pseudo-header field is set to "https".</li>
        <li>The ":path" pseudo-header field is set to "/".</li>
        <li>The ":authority" pseudo-header field contains the host and port of the proxy.
The target of a CONNECT-IP request is the server providing the CONNECT-IP
featureset, not an individual endpoint with which a connection is desired.</li>
      </ul>
      <t>A CONNECT-IP request that does not conform to these restrictions is
malformed (see <xref target="H2" format="default"/>, Section 8.1.2.6).</t>
      <t>Any 2xx (Successful) response indicates that the proxy is willing to open an IP
tunnel between it and the client. Any response other than a successful response
indicates that the tunnel has not yet been formed.</t>
      <t>A proxy MUST NOT send any Transfer-Encoding or Content-Length header fields in
a 2xx (Successful) response to CONNECT-IP. A client MUST treat a successful
response to CONNECT-IP containing any Content-Length or Transfer-Encoding
header fields as malformed.</t>
      <t>A payload within a CONNECT-IP request message has no defined semantics; a
CONNECT-IP request with a non-empty payload is malformed. Note that the
CONNECT-IP stream is used to convey control messages, but they are not
semantically part of the request or response themselves.</t>
      <t>Responses to the CONNECT-IP method are not cacheable.</t>
      <t>The lifetime of the tunnel is tied to the CONNECT-IP stream. Closing the stream
(via the FIN bit on a QUIC STREAM frame, or a QUIC RESET_STREAM frame) closes
the associated tunnel.</t>
    </section>
    <section anchor="transmitting-ip-packets-using-http-datagrams" numbered="true" toc="default">
      <name>Transmitting IP Packets using HTTP Datagrams</name>
      <t>When the HTTP connection supports HTTP/3 datagrams
<xref target="H3DGRAM" format="default"/>, IP packets can be sent using them.
The HTTP/3 Datagram Payload contains a full IP packet, from the IP Version
field until the last byte of the IP Payload.</t>
    </section>
    <section anchor="routes" numbered="true" toc="default">
      <name>Routes</name>
      <t>Endpoints have the ability to advertise and reject routes using the
ROUTE_ADVERTISEMENT (<xref target="route-adv" format="default"/>) and ROUTE_REJECTION (<xref target="route-adv" format="default"/>)
messages. Note that these messages are purely informational: receipt of a
ROUTE_ADVERTISEMENT message does not require the recipient to start routing
traffic to its peer. Additionally, if an endpoint receives a ROUTE_REJECTION
for a given prefix that it had previously received a ROUTE_ADVERTISEMENT
message for, then the two cancel out and the endpoint MUST remove its state
from the ROUTE_ADVERTISEMENT message instead of installing new state for the
ROUTE_REJECTION message. Conversely, the same is true of a ROUTE_ADVERTISEMENT
that matches a previous ROUTE_REJECTION. Routes are handled via
longest-prefix-first preference, meaning that if a given IP prefix is covered
by multiple route advertisement and route rejections, the one with the longest
prefix is used.</t>
    </section>
    <section anchor="stream-chunks" numbered="true" toc="default">
      <name>Stream Chunks</name>
      <t>The DATA stream tied to the bidirectional stream that the CONNECT-IP request
was sent on is a sequence of CONNECT-IP Stream Chunks, which are defined as a
sequence of type-length-value tuples using the following format (using the
notation from the "Notational Conventions" section of
<xref target="QUIC" format="default"/>):</t>
      <figure anchor="stream-chunk-format">
        <name>CONNECT-IP Stream Format</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
CONNECT-IP Stream {
  CONNECT-IP Stream Chunk (..) ...,
}
]]></artwork>
      </figure>
      <figure anchor="stream-format">
        <name>CONNECT-IP Stream Chunk Format</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
CONNECT-IP Stream Chunk {
  CONNECT-IP Stream Chunk Type (i),
  CONNECT-IP Stream Chunk Length (i),
  CONNECT-IP Stream Chunk Value (..),
}
]]></artwork>
      </figure>
      <dl>
        <dt>
CONNECT-IP Stream Chunk Type:  </dt>
        <dd>
          <t>A variable-length integer indicating the Type of the CONNECT-IP Stream
Chunk. Endpoints that receive a chunk with an unknown CONNECT-IP Stream Chunk
Type MUST silently skip over that chunk.</t>
        </dd>
        <dt>
CONNECT-IP Stream Chunk Length:  </dt>
        <dd>
          <t>The length of the CONNECT-IP Stream Chunk Value field following this field.
Note that this field can have a value of zero.</t>
        </dd>
        <dt>
CONNECT-IP Stream Chunk Value:  </dt>
        <dd>
          <t>The payload of this chunk. Its semantics are determined by the value of the
CONNECT-IP Stream Chunk Type field.</t>
        </dd>
      </dl>
    </section>
    <section anchor="messages" numbered="true" toc="default">
      <name>Messages</name>
      <section anchor="ippacket-message" numbered="true" toc="default">
        <name>IP_PACKET Message</name>
        <t>The IP_PACKET message allows conveying IP Packets when HTTP/3 Datagrams are not
available. This message uses a CONNECT-IP Stream Chunk Type of 0x00. Its value
uses the following format:</t>
        <figure anchor="ip-packet-format">
          <name>IP_PACKET Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
IP_PACKET Message {
  IP Packet (...),
}
]]></artwork>
        </figure>
        <dl>
          <dt>
IP Packet:  </dt>
          <dd>
            <t>A full IP packet, from the IP Version field until the last byte of the IP
Payload.</t>
          </dd>
        </dl>
        <t>Note that this message MAY still be used even when HTTP/3 datagrams are
available.</t>
      </section>
      <section anchor="addressassign-message" numbered="true" toc="default">
        <name>ADDRESS_ASSIGN Message</name>
        <t>The ADDRESS_ASSIGN message allows an endpoint to inform its peer that it has
assigned an IP address to it. It allows assigning a prefix which can contain
multiple addresses. This message uses a CONNECT-IP Stream Chunk Type of 0x01.
Its value uses the following format:</t>
        <figure anchor="addr-assign-format">
          <name>ADDRESS_ASSIGN Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ADDRESS_ASSIGN Message {
  IP Version (8),
  IP Address (32..128),
  IP Prefix Length (8),
}
]]></artwork>
        </figure>
        <dl>
          <dt>
IP Version:  </dt>
          <dd>
            <t>IP Version of this address assignment. MUST be either 4 or 6.</t>
          </dd>
          <dt>
IP Address:  </dt>
          <dd>
            <t>Assigned IP address. If the IP Version field has value 4, the IP Address
field SHALL have a length of 32 bits. If the IP Version field has value 6, the
IP Address field SHALL have a length of 128 bits.</t>
          </dd>
          <dt>
IP Prefix Length:  </dt>
          <dd>
            <t>Length of the IP Prefix assigned, in bits. MUST be lesser or equal to the
length of the IP Address field, in bits.</t>
          </dd>
        </dl>
      </section>
      <section anchor="addressrequest-message" numbered="true" toc="default">
        <name>ADDRESS_REQUEST Message</name>
        <t>The ADDRESS_REQUEST message allows an endpoint to request assignment of an IP
address from its peer. It allows the endpoint to optionally indicate a
preference for which address it would get assigned. This message uses a
CONNECT-IP Stream Chunk Type of 0x02. Its value uses the following format:</t>
        <figure anchor="addr-req-format">
          <name>ADDRESS_REQUEST Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ADDRESS_REQUEST Message {
  IP Version (8),
  IP Address (32..128),
  IP Prefix Length (8),
}
]]></artwork>
        </figure>
        <dl>
          <dt>
IP Version:  </dt>
          <dd>
            <t>IP Version of this address request. MUST be either 4 or 6.</t>
          </dd>
          <dt>
IP Address:  </dt>
          <dd>
            <t>Requested IP address. If the IP Version field has value 4, the IP Address
field SHALL have a length of 32 bits. If the IP Version field has value 6, the
IP Address field SHALL have a length of 128 bits.</t>
          </dd>
          <dt>
IP Prefix Length:  </dt>
          <dd>
            <t>Length of the IP Prefix requested, in bits. MUST be lesser or equal to the
length of the IP Address field, in bits.</t>
          </dd>
        </dl>
        <t>Upon receiving the ADDRESS_REQUEST message, an endpoint SHOULD assign an IP
address to its peer, and then respond with an ADDRESS_ASSIGN message to inform
the peer of the assignment.</t>
      </section>
      <section anchor="route-adv" numbered="true" toc="default">
        <name>ROUTE_ADVERTISEMENT Message</name>
        <t>The ROUTE_ADVERTISEMENT message allows an endpoint to communicate to its peer
that it is willing to route traffic to a given prefix. This message uses a
CONNECT-IP Stream Chunk Type of 0x03. Its value uses the following format:</t>
        <figure anchor="route-adv-format">
          <name>ROUTE_ADVERTISEMENT Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ROUTE_ADVERTISEMENT Message {
  IP Version (8),
  IP Address (32..128),
  IP Prefix Length (8),
}
]]></artwork>
        </figure>
        <dl>
          <dt>
IP Version:  </dt>
          <dd>
            <t>IP Version of this route advertisement. MUST be either 4 or 6.</t>
          </dd>
          <dt>
IP Address:  </dt>
          <dd>
            <t>IP address of the advertised route. If the IP Version field has value 4, the
IP Address field SHALL have a length of 32 bits. If the IP Version field has
value 6, the IP Address field SHALL have a length of 128 bits.</t>
          </dd>
          <dt>
IP Prefix Length:  </dt>
          <dd>
            <t>Length of the IP Prefix of the advertised route, in bits. MUST be lesser or
equal to the length of the IP Address field, in bits.</t>
          </dd>
        </dl>
        <t>Upon receiving the ROUTE_ADVERTISEMENT message, an endpoint MAY start routing
IP packets in that prefix to its peer.</t>
      </section>
      <section anchor="route-rej" numbered="true" toc="default">
        <name>ROUTE_REJECTION Message</name>
        <t>The ROUTE_REJECTION message allows an endpoint to communicate to its peer that
it is not willing to route traffic to a given prefix. This message uses a
CONNECT-IP Stream Chunk Type of 0x04. Its value uses the following format:</t>
        <figure anchor="route-rej-format">
          <name>ROUTE_REJECTION Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ROUTE_REJECTION Message {
  IP Version (8),
  IP Address (32..128),
  IP Prefix Length (8),
}
]]></artwork>
        </figure>
        <dl>
          <dt>
IP Version:  </dt>
          <dd>
            <t>IP Version of this route rejection. MUST be either 4 or 6.</t>
          </dd>
          <dt>
IP Address:  </dt>
          <dd>
            <t>IP address of the rejected route. If the IP Version field has value 4, the IP
Address field SHALL have a length of 32 bits. If the IP Version field has value
6, the IP Address field SHALL have a length of 128 bits.</t>
          </dd>
          <dt>
IP Prefix Length:  </dt>
          <dd>
            <t>Length of the IP Prefix of the advertised route, in bits. MUST be lesser or
equal to the length of the IP Address field, in bits.</t>
          </dd>
        </dl>
        <t>Upon receiving the ROUTE_REJECTION message, an endpoint MUST stop routing IP
packets in that prefix to its peer. Note that this message can be reordered
with DATAGRAM frames, and therefore an endpoint that receives packets for
routes it has rejected MUST NOT treat that as an error.</t>
      </section>
      <section anchor="route-reset" numbered="true" toc="default">
        <name>ROUTE_RESET Message</name>
        <t>The ROUTE_RESET message allows an endpoint to cancel any routes it had
previously advertised or denied. This message uses a CONNECT-IP Stream Chunk
Type of 0x05. Its value uses the following format:</t>
        <figure anchor="route-reset-format">
          <name>ROUTE_RESET Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ROUTE_RESET Message {
}
]]></artwork>
        </figure>
        <t>Upon receiving the ROUTE_RESET message, an endpoint MUST stop routing IP
packets to its peer. Note that this message can be reordered with DATAGRAM
frames, and therefore an endpoint that receives packets for routes it has
rejected MUST NOT treat that as an error.</t>
        <t>The main purpose of the ROUTE_RESET message is to allow endpoints to not have
to remember the full list of routes they have shared with their peer. In
practice, it is expected that ROUTE_RESET messages will be closely followed by
ROUTE_ADVERTISEMENT messages that will refill the routing table that was just
cleared.</t>
      </section>
      <section anchor="shutdown-message" numbered="true" toc="default">
        <name>SHUTDOWN Message</name>
        <t>The SHUTDOWN message allows an endpoint to communicate to its peer that it is
about to close the CONNECT-IP stream, with a string explaining the reason for
the shutdown. This message uses a CONNECT-IP Stream Chunk Type of 0x06. Its
value uses the following format:</t>
        <figure anchor="shutdown-format">
          <name>SHUTDOWN Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
SHUTDOWN Message {
  Reason Phrase (..),
}
]]></artwork>
        </figure>
        <dl>
          <dt>
Reason Phrase:  </dt>
          <dd>
            <t>Additional diagnostic information for the shutdown. This SHOULD be
a UTF-8 encoded string <xref target="UTF8" format="default"/>, though the frame does not carry
information, such as language tags, that would aid comprehension by any entity
other than the one that created the text.</t>
          </dd>
        </dl>
        <t>Note that the SHUTDOWN message is informational, the tunnel is only closed when
its corresponding CONNECT-IP stream is closed. Endpoints MAY close the tunnel
with a reason phrase by sending the SHUTDOWN message with the FIN bit set on
the underlying QUIC STREAM frame that carried it.</t>
      </section>
      <section anchor="atomicstart-message" numbered="true" toc="default">
        <name>ATOMIC_START Message</name>
        <t>The ATOMIC_START message allows an endpoint to create an atomic set of
messages. This message uses a CONNECT-IP Stream Chunk Type of 0x07. Its value
uses the following format:</t>
        <figure anchor="atomic-start-format">
          <name>ATOMIC_START Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ATOMIC_START Message {
}
]]></artwork>
        </figure>
        <t>Upon receiving an ATOMIC_START message, an endpoint MUST buffer all incoming
known messages until it receives an ATOMIC_END message. Endpoints MUST NOT send
two ATOMIC_START messages without an ATOMIC_END message between them.</t>
        <t>Endpoints MUST NOT buffer unknown messages. Endpoints MAY choose to immediately
process IP_PACKET and SHUTDOWN messages instead of buffering them. Extensions
that register new message types MAY specify that it is allowed to skip
buffering for them.</t>
        <t>The purpose of this frame is to avoid timing issues where an endpoint installs
a route before an important route rejection was received. Endpoints SHOULD
group their initial configuration into an atomic block to allow their peer to
mark the tunnel as operational once the whole block is parsed.</t>
      </section>
      <section anchor="atomicend-message" numbered="true" toc="default">
        <name>ATOMIC_END Message</name>
        <t>The ATOMIC_END message allows an endpoint to end an atomic set of messages.
This message uses a CONNECT-IP Stream Chunk Type of 0x08. Its value uses the
following format:</t>
        <figure anchor="atomic-end-format">
          <name>ATOMIC_END Message Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ATOMIC_END Message {
}
]]></artwork>
        </figure>
        <t>Upon receiving an ATOMIC_END message, an endpoint MUST parse all previously
buffered messages, in order of receipt. Endpoints MUST NOT send an ATOMIC_END
message without a preceding ATOMIC_START message.</t>
      </section>
    </section>
    <section anchor="extensibility-considerations" numbered="true" toc="default">
      <name>Extensibility Considerations</name>
      <t>CONNECT-IP can be extended via multiple mechanisms to increase functionality.
There are two main ways to extend CONNECT-IP: HTTP headers and CONNECT-IP
Stream Chunk Types. For example, an authentication extension could define an
HTTP header that allows endpoints to send authentication credentials to their
peer during the creation of the tunnel. Alternatively, one could specify an
extension that defines a new CONNECT-IP Stream Chunk Type which allows
exchanging DNS configuration between endpoints.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>There are significant risks in allowing arbitrary clients to establish a tunnel
to arbitrary servers, as that could allow bad actors to send traffic and have
it attributed to the proxy. Proxies that support CONNECT-IP SHOULD restrict its
use to authenticated users. The HTTP Authorization header <xref target="AUTH" format="default"/> MAY
be used to authenticate clients. More complex authentication schemes are out of
scope for this document but can be implemented using CONNECT-IP extensions.</t>
    </section>
    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="iana-method" numbered="true" toc="default">
        <name>HTTP Method</name>
        <t>This document will request IANA to register "CONNECT-IP" in the
HTTP Method Registry (IETF review) maintained at
&lt;<eref target="https://www.iana.org/assignments/http-methods"/>&gt;.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
  +-------------+------+------------+---------------+
  | Method Name | Safe | Idempotent |   Reference   |
  +-------------+------+------------+---------------+
  | CONNECT-IP  |  no  |     no     | This document |
  +-------------+------+------------+---------------+
]]></artwork>
      </section>
      <section anchor="iana-chunk-type" numbered="true" toc="default">
        <name>Stream Chunk Type Registration</name>
        <t>This document will request IANA to create a "CONNECT-IP Stream Chunk Type"
registry. This registry governs a 62-bit space, and follows the registration
policy for QUIC registries as defined in <xref target="QUIC" format="default"/>. In addition to the fields
required by the QUIC policy, registrations in this registry MUST include the
following fields:</t>
        <dl>
          <dt>
Type:  </dt>
          <dd>
            <t>A short mnemonic for the type.</t>
          </dd>
          <dt>
Description:  </dt>
          <dd>
            <t>A brief description of the type semantics, which MAY be a summary if a
specification reference is provided.</t>
          </dd>
        </dl>
        <t>The initial contents of this registry are:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+-------+---------------------+---------------------+---------------+
| Value |        Type         |      Description    |   Reference   |
+-------+---------------------+---------------------+---------------+
| 0x00  |      IP_PACKET      | Full IP packet      | This document |
| 0x01  |   ADDRESS_ASSIGN    | Address Assignment  | This document |
| 0x02  |   ADDRESS_REQUEST   | Address Request     | This document |
| 0x03  | ROUTE_ADVERTISEMENT | Route Advertisement | This document |
| 0x04  |   ROUTE_REJECTION   | Route Rejection     | This document |
| 0x05  |     ROUTE_RESET     | Route Reset         | This document |
| 0x06  |      SHUTDOWN       | Shutdown Reason     | This document |
| 0x07  |    ATOMIC_START     | Atomic Start        | This document |
| 0x08  |     ATOMIC_END      | Atomic End          | This document |
+-------+---------------------+---------------------+---------------+
]]></artwork>
        <t>Each value of the format <tt>41 * N + 29</tt> for integer values of N (that is, 29,
70, 111, ...) are reserved; these values MUST NOT be assigned by IANA and MUST
NOT appear in the listing of assigned values.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="RFC7230">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7230"/>
          <seriesInfo name="DOI" value="10.17487/RFC7230"/>
        </reference>
        <reference anchor="URI">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="H2">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <author fullname="M. Belshe" initials="M." surname="Belshe">
              <organization/>
            </author>
            <author fullname="R. Peon" initials="R." surname="Peon">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7540"/>
          <seriesInfo name="DOI" value="10.17487/RFC7540"/>
        </reference>
        <reference anchor="H3DGRAM">
          <front>
            <title>Using QUIC Datagrams with HTTP/3</title>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Lucas Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="29" month="January" year="2021"/>
            <abstract>
              <t>   The QUIC DATAGRAM extension provides application protocols running
   over QUIC with a mechanism to send unreliable data while leveraging
   the security and congestion-control properties of QUIC.  However,
   QUIC DATAGRAM frames do not provide a means to demultiplex
   application contexts.  This document defines how to use QUIC DATAGRAM
   frames when the application protocol running over QUIC is HTTP/3 by
   adding an identifier at the start of the frame payload.  This allows
   HTTP messages to convey related information using unreliable DATAGRAM
   frames, ensuring those frames are properly associated with an HTTP
   message.

   Discussion of this work is encouraged to happen on the MASQUE IETF
   mailing list (masque@ietf.org (mailto:masque@ietf.org)) or on the
   GitHub repository which contains the draft: https://github.com/ietf-
   wg-masque/draft-ietf-masque-h3-datagram.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-h3-datagram-00"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="Jana Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="14" month="January" 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.

DO NOT DEPLOY THIS VERSION OF QUIC

   DO NOT DEPLOY THIS VERSION OF QUIC UNTIL IT IS IN AN RFC.  This
   version is still a work in progress.  For trial deployments, please
   use earlier versions.

Note to Readers

   Discussion of this draft takes place on the QUIC working group
   mailing list (quic@ietf.org (mailto:quic@ietf.org)), which is
   archived at https://mailarchive.ietf.org/arch/search/?email_list=quic

   Working Group information can be found at https://github.com/quicwg;
   source code and issues list for this draft can be found at
   https://github.com/quicwg/base-drafts/labels/-transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-transport-34"/>
        </reference>
        <reference anchor="UTF8">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau">
              <organization/>
            </author>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="REQS">
          <front>
            <title>Requirements for a MASQUE Protocol to Proxy IP Traffic</title>
            <author fullname="Alex Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Dallas McCall">
              <organization>Google LLC</organization>
            </author>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="8" month="January" year="2021"/>
            <abstract>
              <t>   There is interest among MASQUE working group participants in
   designing a protocol that can proxy IP traffic over HTTP.  This
   document describes the set of requirements for such a protocol.

   Discussion of this work is encouraged to happen on the MASQUE IETF
   mailing list masque@ietf.org or on the GitHub repository which
   contains the draft: https://github.com/ietf-wg-masque/draft-ietf-
   masque-ip-proxy-reqs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-ip-proxy-reqs-01"/>
        </reference>
        <reference anchor="AUTH">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypermedia information systems.  This document defines the HTTP Authentication framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7235"/>
          <seriesInfo name="DOI" value="10.17487/RFC7235"/>
        </reference>
      </references>
    </references>
    <section anchor="examples" numbered="true" toc="default">
      <name>Examples</name>
      <section anchor="consumer-vpn" numbered="true" toc="default">
        <name>Consumer VPN</name>
        <t>In this scenario, the client will typically receive a single IP address that
the proxy has picked from a pool of addresses it maintains. The client will
route all traffic through the tunnel. The exchange could look as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
    Client                                             Server

    ADDRESS_REQUEST          -------->
      IP Version = 4
      IP Address = 0.0.0.0
      IP Prefix Length = 0

                             <--------  ADDRESS_ASSIGN
                                          IP Version = 4
                                          IP Address = 192.0.2.42
                                          IP Prefix Length = 32

                             <--------  ROUTE_ADVERTISEMENT
                                          IP Version = 4
                                          IP Address = 0.0.0.0
                                          IP Prefix Length = 0
]]></artwork>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>The design of CONNECT-IP was inspired by discussions in the MASQUE working
group around <xref target="REQS" format="default"/>. The authors would like to thank participants in those
discussions for their feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAIPKdGAAA+Vc63MbuZH/jr8Cob/IWZLWa/1Q4iQ8SV7rzpIVkdpUKpXa
QDMgidU8mMFQMler/duvH8AMZjiiJa9zdXeRqyxyHo1Go/vXDzQ0GAxEacpE
H8jJXMvDj2dnx4eTwcm5fD+ZnMtTXc7zWKirq0LfHAS3RZxHmUrhtbhQ03IQ
pXaQKvvPpR5EeZbpqByYxWB7W0Sq1LO8WB1IW8bidnYgT0fjP18eC2EWxYEs
i6Utd7e332zvimu9us2L+ECeZKUuMl0OjpC2ELZUWfyDSvIMxltpKxbmQP6t
zKO+tHlRFnpq4dMqxQ9/F0ItgeniQMiBkPBjMnsge6OhPJwD1ZW6nuc39nrV
o5s8h94o0Z867+fFTGXmJ1WaPIPnvsvzWaLlhw+HfNvC4LqEGzsvt7flKF3M
TTnXCq7Kc1Vc3ypHJjIlSKB3mi+zUplMfm/0bV8eqsRM8yIzSr7Z397fc8/i
Qyiw3mVmSh3LcQkytDKfwgC6MJHi53SqTHIgVcRs/2lGvA2jPG3O/GgoTyMY
KmnM+AguKNu4879/rjExnUYR/N4033E0N5n6ybRmfGPi1q3/A1O2juGh0eX0
TzO8SnMWYjAYSHUFPKoIjGQyN1aCVS5TnZUy1jYqzBXQLTvMOiWzHobX4WVr
UpOoQpa58Dcuj8778mpZShB4fgvECpXZ1JSlyWYS3lqo6FqXYH23IJgcnrvS
eCcBSji1Mpc/gn2LyeE5XLuuGAG5SyDduIZjDd2sUhPHiRbiGUJBkcfLCBfo
/80cA5bcmDqLF7nJSovkrC7lciFVhqOXS0DTBMYsb7XOJEAg3MhhwsVQojgA
YDO4K5eWeTHpItEkHgWqllkQVSG/Pz/rSxpgUOYD+hB8B6QF3L3uA+FYuC/B
dRmphboyiSkNiBoww8s9BoMTd3d/vDj+8/jtyeCINNR7AUD/RZF/Wg0K/U97
f48r++yZPMyzG+ANFtPiaPJITw1YAX2/exbVd+9xsbUElyDRJ1gwrsvxpNfn
3/LsI32GkS9PLo6P8PP4/ejDh+qDf2L8/uPlB7gv3Kf6zcOPp6fHZ0f8MlyV
rUuno7/2SCSy9/F8cvLxbPShBxMGXQOhVzqoAApA6rAABp3WotCoEy0hyf8A
3djZl3d3v7l4d7i7s/Pm/t59eb3zav/+XtzOdcaD5VkCU6avsMgrqRYLDfoK
REBVcClMqRJQRhjCzvPbTIImaJDuCXNWWQeoKykF2QZwlsoerUcP2QVHqdEG
6CZZi9XFDV6aq1IU2i7yLLb+gUBdYTGX2pZDeTLFWzB5EIAgCjT/VMdGFagn
WyQDWF2WwFiTCcvd4R4iHU/+1e7e9v3980q5gaKIEkNyBVHg2MQziiK3NBaz
XrCuwxC95rDrK0SK145tOKxhjfOxCuOF07vgWb4uYdbqKjF2jjZAjkGlxENW
GW8oRGQ+EwtgzZSMT/pTNFfZTOP0YViAtQT8WakgcllGc5wLwkEcg/QtzAIc
R0puqQ9TBh8Pg2uBK4A0rNMVXAK4negbBcMHL0n4hHQjIDZdJqBSLVQTOPSs
UKmtpA8iLu2Q5+/WeVCqYgZoBCyrDjVAQFXy8uIE1xN+vYU13Xvz+iVo9+3c
wKRA/6zAyffmZbmA1QFnBuBEzIPgTJouUaqwzKqc4yi9F72h/AuIDl5FRlGz
XuwCyPzm/S5Sf/XtPmgMQmsCTrPodzBlSetJJRdWL+N8AB471oUl/CYdm+aI
ukgf3zEF4aU9EOK3pCi9A17zXpOAnBqdxOREQCSw9L168N6wfpnn+NmXWSLB
eyiDz771InyDA12IPbpfQy2DaITVD1eX5L6AiBlFXVnXEMINpPf5tcZXnI7D
mxBNoQibCAG0phAgLUGLNWAQeCpa6Cw28PhSJbWx0GqwmpCnyhxCGMJOWJQY
Zjrq4oTsK87BEJE8vIpq78DKou6CdZqInQogQaoSfAAgY8tqDar6fvf+vl8h
0uvhznB3+PI5jpat5O6nT3JrXFnOc8loaDVNIqJQzRs4yw85vjVJQsLIZb4A
7SXfLVq+29Swxig3lDhiNQCbMxDPEGEqFqoHRAcHboi5YmGsNIYnmuw/dRJk
Jr3bhAUk41vJCSICgOngOItyWkowK3DQJXA2+KCzGaxPqE+ISkJtEBBMvl4t
mJubJQ+NgFk25iW6X/Rqiwwhmy2OgMc1xkWTTZBFteYsAbVKchWTyqEj7VKq
FJhSgM4sycp1WQjDISKJ7O+kEh2vkRYreCMb6HRRrqqxTMiEPMtLXS1aSMc5
EmOrAI6CoFXlIhxflkNUDgnADcJiC8+bQnxfqNqsPXN5ESwOgJLVyY1GiL9w
V7tcvPN3bhCIOADOEKOdZ4CURpcm1X4sp4CIDoYn0KLHM4Q4PMmtxwu+JrZu
IDXC7+9OzuQVmEeOiwMh3aEcTy6OR6dyCh5K93Ei7vrF8fh48kN49zmoWe79
jLI2j4yiuJwYc+6/FdKfc0gfOBl55P2hEOR/qsgogCa7XCB6WnZLe7LyoeSg
9o6+uxidrgXC872Bfw5hp04opIvcLdrI0ssmHZKY3QieK+CY1arCdCXRr9fk
+iCNPCW24dr34O8wY2JHAAmnSegWZM8AEKuyWj4SBpFmSV1AggOyFMdVQjJX
NxxEcg6woqAnBh9QGsuevNA/goBkQa/WMxEXHy8nxz+Mjr4/vpicjI8htJ7I
rbs7em4AJDD0w/f5uYvj/wSNgTi7/YzwJtAyIxjd3yFtXYDTAUMIoiAF+XOh
I20W7NY6OfKGXzkUFxM4S4rMgkAM87ISbQxZQ8yBgGo6NRHlXCCmhcaMbBTH
hkdOIGo100Z4SKzcUPzYmrKYkobP4G4GeA3Y84mnCTYxh1WHSzcmX9pk5YnE
FZHGbLysEP8pgWBFhjwOtS0CQ8UE1nuhijNCaAiDclhqnIzFkoSoFGqT2EAX
S0BflC9+VOwHM33LRCgQrZWhXmT3/pBTwgKgicJ8MAewaYKTYqk5GOmaJ0kH
VjnieNwLqC3YoVNoUhBwrHECkgPUEUmOYXQ5YGEPpqYAw1hQcqFBTn3gT2Ws
yLgM02p10OB4gYDHCAQGgYq4Wsl0mZQGUm82g9pCUp/N8HW2FQxNeLaYz/u4
VDqmRD0AOgU2zDE7isP5MrvGXJkhdBDRd5e1HI0moyo1CdD4CiK1goeFCMw/
4EOIda8mbjG7RMY5HgOvjTdALrggwfMNpvo+mgNRe/cJdJQIXy5XCz1IyJUP
blSyRAcCUgtgQ9bRORuy3KohBezT5TdeN3tn7hLMLKguQKrhQDufIjqj86ih
GQw8GlBGhHgOGAOx/y+//CLWp3YHAe0DE5Zbw+FzORwO++Ke3r47kI1lGTj+
qb7+trdO5h3d790/NDgPs4mFCYhTbpnn/Q3PuMDpM099T4uBU+qYzucmwiTq
6WxiF0R9ALHhDeTrGFY4ZaDywUwXPsr2ykATdL5qjaogqkNZOytSageRmFbQ
qByjQUqZXWdYMXmAO0FjERRaA1yVgLb22ixkXiX1RG/48PxY1DRDipVcyPoA
+w3Js6eudZ+KOXRxKEK3569S9EC+WUk2JBjmJ13kG9ijkSrufKRK7CGYsTBP
EP991OuMGUssZM8AdDiVasBWNLuum24GAGCnzldTHfDk/Ifz0eF/HU/8ZQaw
+rJ3L64+ykFxK3rDKlk7ULJVdKxulEkocKU6aUURaxLNFGCda5jZ9qftbRYG
TVbQa13w5KBjbUZktxW3aFlN08ICKd1qWdc6odquKnLOiB4RAspHhICiDgFb
quaFdjr6K/gNSHKrUrNGZxiuQByuQCB9LvyOjo4gdB//MBqPT747a656615r
6cMICmMtzvZ9yBWESVZA9G9m5HaysJhGERquZUWSnqME0ztzdl1oUy7CFpVD
d2Qw/vxCRdoZikqR5OcUqVtSXpv8qm69JjSHKyM3y6293eFwZ7e6fs4T8+j/
uqF8OKcBi6Glfg8M39BBxwQpYcCTBxIvd6ZPRViGVdAdbajIsY8p3cshUXMT
YJX2K1gvn681r+s0puos0/2+f8IRc4kPbwU4lKzReG8Xs81HUX5JlAM25UbK
IH8mzbYaLgHN70PDI9SPeM3tY/2aefMSS1D3CpQXhFEQ5HBMJ5I2pQZ/NZ2m
+eGGyfF40m1//uZmA/TFhXp1KUqngpdfecKhOiuqLa+RdVCxzGdLVXkNAsY6
Dqf0wYWVvjReytt8CUuAxUovt07T3OyZ2DR3A4x/tGm2pPivsE2Q8gOG2R78
Syyz2sZ5pFle8PP/fnZZ+In/KwzzcgET42DVh7sPmGK/YYRuJ5N1v2V5QTWi
7/P8zFUB4yoSfsDjVu6VamnkXt00AihnQOkqCVTm8Kwu3zDCbCogdKNMlKfp
MmNACOYkvLtv1tw5tw4qMs1ayhejw95T0GGjSL4qQlTibUHEJg6eAhMdJYxH
Q0UQd3nd8XRcDeTxwPFo834McIgQONbs8msDxwNz3wQjIoQR+atgZIO9NaGE
4/qwrBnUp2krXZVVQTIodIYgUNf02gBQ6B8bALBW/Xua8XN3Ahs/Fmr/BwBg
/+kA0CGOf4Hxg2g7jX999KcbflWj/BVGzzSebvLoy76aybvU/d/I5NcsrGXu
VNwq84U3dxT3I8xdPlAWcDtYhc6LmArhFGBgGRq3wnh/zlZxCNDNsWMoNPag
Xmcr4IHHhNtN4sy+VqdqG5v3k+l9xQBSFHkbmMbH61EJdSa0YGm8XnFqQxLv
nuCGdMhZLIKtmWDlwUxinZkHEpPNFUhGnm+/BHka8+3ADLtWbep6s0aMDXoW
iOwJOvYlSiUbSiV+hVI1ls6KJygVKkuKnb2LZbHAVjRnpF0KZGiapEbNvk70
WYg2grLoVKdX5NM0l/ESYymTdjzSTj9hk52rSgpw1RQ+q85A+RQANW5XsVfU
nxY8I5pCB3McNaN4adMclJY1ikq7m7ZHXWmd3kZ8SLiY6JeYu7j4EZAcNcRG
iVaF2756BmB7OTn6+JdW6a+6+uUBAU9dqCvc2cRncWLdTQh9366BDULANYgr
cZ0m7LOU5dY5yn/sfFnG+W32xWW/l2TC4nEm3JYPRQ0XzNH5vFC2Y3PGMdgy
6TVKtT036HHBrdqwlrFRsyy3oE9rnYQd4nBJ6JUWSl5O3g1ew4JFeYwtMyxc
bAmcvHtNPYEvd99g7wO2T894q5OsOGjiUkWxEo2uR98VmahstqTsVM1o01T5
ApAy2A+RAgJDjkue/2pFCI17gOVKBP1UfquVd3HQyjVvgZf6U9kqe3dopbHN
tgIOKOrWF2raJcWLqSYuUEOjvHB5N4qjs+eHXwk3sDAgrzWYRxBOa51+Llgb
YK7YyuWVd43nalfZN9dgC2GekWovM0DWhPZT1rptnIxgQXAH2fiEfzT5eHpy
+MN4Mrpolw/DO5+xY5I8XlVlnoKiEU/ToMPjC03t1VO2arqm0nCXzNyAEqN2
Fa7r3QcdJpZaOqTT4TCvllNsycYebwN2lGIqxruVFQDzFo4J+0gq8sdnR3VH
RaBNYdOfwC6QLnZsdbKhk2DYnp0Ow9agirzj3m+w1svZUux5nnO7n0mpZbsE
DwROLMeOwGDzD117W59t2GnC41UdU/L4U8kIYIVz/jPwpsAR9qFU1S1QF+bD
gpc001XgPlhfuWMC93xFPYLDv9RFAY0AADdjC9+vAj7/JgdIKg2uHlyyS02b
lK3wxLXJgMty+dZVFcKYFPsRsJe7lYmRV/WtP6FYGYbFDJ5fuOiADlQAnmNj
rJktC4ZxeDoPDO8qyaPrOk6p4wo8GZOq4jpEOBg7X+jCt1nkWJjH27fzHLw+
kzIYaRW28veBHnWhRahf3VjBbapNoKg1S3whULzuCqvFZqAI5tAFE8BoN0iE
7z0CIgKRdAAECZfwoc44nJaC2tZdohCjUtxMoST3vj2ICM3BReg5CA1wqEiT
i+nCDW5McrbnmgMPwQZN7HTFNloRXFyv8fmY27DqrqlU4+kIY1POETL0FBYj
48y1LQFx6ozkIyfU0UYB+a1a0StMNlCBA27f9M3/qnFTrOkHgNU7LOV/UniA
ihYA2+s1NdiSBWkPMniED8IP7nGCB0UwkEseOk91ocCbJGGWMX5Vie/ENYUg
K4yXHt7YaVZVGm+UQzlK8JQs3Lqh3jkMb5gxD2/AWc0zN80Ty2gqCIwbzcVt
utFEhDu7ghwdnY1byOLdQzVb17Cmo2XRpRL1ItIu/BSEgYBn7LV1x5zYFFUB
UUuhipXrI+dl9sdwYA4uOkIQqx7l4wl8PooDGQ4VCeWuwHtAwpQX9YL4kiGq
B+Vm2KRfQgR7tSzrBjo+JyHP4ZfxqZBrBm5IkWNifwAB8xSxZIcXLDyQhYsF
BTuux3jEBzn4HKrXpLu7P44uJ+/f8kGpb+/v0XeJ4KhfSNPLaChP0ZdgWIxH
mlv6xkdTuEcGLRxCLxvlC9+lGR6uxG5zZ7HVkULivBXMVhrmlv1kdDZqLbm8
e2ZUpu7JLwTHyt318ORVyIHLNXm3mchS3uw8e3j4hktX7hyao31BD4JGbJ0c
T95JxEx9+5wwA9s7sEmkFL//29+36BzOwYsXt7e3Q2RnmBezF/V+l32BDzge
7fM/DNk1SPnNIPz5pvGr4wt+h7d+9vydYdjwsxyrKf46iTW4fjznAF8w7/P7
3/DGrxgrWCekm+X0S/InpC2bIv/SsVAinOWv4YhbB9Y/t+DcHYnx2OMW3acN
8sHWQxyqJwq35i6N8F/lDDv4qGf+5e6AUqGFijSXkNj1W1cAqHkVizwx0Yos
g3Ikd7M6A1sdbby7w/v391iRwTI45dMeOfhIinA95VUDHVHkEfqNYa0/wFhz
Ty4bPGKyjHU7WiHqEK0EjZV2jqiUZjrNMwA2n76jtEF3j+hYKnVduOevYEpT
d1x10fAzuHxVJ6Dv7sX4+UrTQZ40RcTF3mjBLsfDTN2+gVEhnRSjuBDxLohO
SwL1au/BzxfAycVf3zygcE+5+o342XVYsubDD+ml/3FXA7n4q00j/Fq8YF9h
NWqd8jhe3jUa+vzVtpESlR2m0trKp+f9vsGobtF5iMpuk4rvOwipuOaPTbzs
4Z2u6uHP3H8PtMJ2+Aeo7Du5t3YyZEXlokqHNvDyrZduWP6UDSrWi/ZhKi+r
NaoSUf/82BXCfHVuA5VXjkojenZrxHnNmDZfN/Py2vMSJApNKhDfVxPqoPJ1
dJdA/lgBBoTtv75J/x/7O/K38kx+I3ff/INQx3d009Nk52dyi1NuQJPdN33x
arsvd3Z2+thE/9yd7qYALv4dkrbav1sXGnTV8oVQSg4CURwfEPhAfVyedtQA
Uehg47R+jUn6vzRxBYbGWQzF/db/lYLq7ybUJ+ttpDNVmJyLf+5sI/krQEp3
Cq9uPcc4KdGNNlTcva6iSdrWgteugSVql4NsK88TYtU3nGJtwgcsLlwMhhWu
TQMZ8Bvf86KqsPo0Ad+qzp5zNJzk+TU6Mef7DnxII+Uhk3/Kz5gibkGvr8OI
+/Fa9AfB34Pd2rdyv77oMeet3B7Sv/pWc1McHhBiI1+/92O2MXLza42fTjYf
+WI9lZ03uzCV3eH+7tMotGe8t/v4KXedmXrS4F9h3s0lfOTr68vsgks5irC6
mOh4RnG5uDvIlriFpuO3vSlk0LrndnXx+Pgsax1VwgIaWNHCR2GxsdHS2jrk
0u4PU+HfG7nG8ivX1BT8DwBzd4d/5QSDPByBD95btw9Bf+GF4j0FoSgexDWR
WajM76nnVotwOBeSmUJOtY4RgYbivwEDXpkyiEsAAA==

-->

</rfc>
