<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.20 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kb-capsule-conversion-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title abbrev="Capsule Translation">HTTP Version Translation of the Capsule Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-kb-capsule-conversion-00"/>
    <author fullname="Benjamin M. Schwartz">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>ietf@bemasc.net</email>
      </address>
    </author>
    <author fullname="奥 一穂" asciiFullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="November" day="04"/>
    <abstract>
      <?line 35?>

<t>This draft specifies how HTTP intermediaries can translate the Capsule Protocol between HTTP versions.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-kb-capsule-conversion/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/bemasc/capsule-conversion"/>.</t>
    </note>
  </front>
  <middle>
    <?line 39?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Capsule Protocol <xref target="RFC9297"/> defines a framing layer that can be used for protocols running over HTTP.  The Capsule Protocol consists of a linear stream of capsules, each with a specified type and size.  Endpoints can establish a Capsule Protocol connection using HTTP Extended CONNECT or the HTTP/1.1 Upgrade process.</t>
      <t>Intermediaries such as HTTP Gateways can play an active role in the Capsule Protocol.  To inform intermediaries that this protocol is in use, endpoints can include a "Capsule-Protocol: ?1" header in their request or response.  Intermediaries are obligated to pass unrecognized capsule types unmodified, but some capsule types do permit intermediaries to modify them.</t>
      <t>The Capsule Protocol is defined for HTTP/1.1, HTTP/2, and HTTP/3, and intermediaries can translate Capsule Protocol streams between different versions of HTTP.  For example, an HTTP Gateway receiving a request using the "connect-tcp-capsule" Upgrade Token <xref target="I-D.ietf-httpbis-connect-tcp"/> over HTTP/3 might forward it to a backend server using HTTP/1.1 for further processing.  However, this translation currently requires the intermediary to recognize the specified Upgrade Token.  Unrecognized Upgrade Tokens cannot be translated between HTTP versions.</t>
      <figure>
        <name>HTTP version translation of an Upgrade Token.  The gateway can only perform this translation if it recognizes the "foo" Upgrade Token.</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="96" width="496" viewBox="0 0 496 96" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,32 L 64,32" fill="none" stroke="black"/>
              <path d="M 216,32 L 264,32" fill="none" stroke="black"/>
              <path d="M 432,32 L 472,32" fill="none" stroke="black"/>
              <path d="M 80,48 L 104,48" fill="none" stroke="black"/>
              <path d="M 168,48 L 192,48" fill="none" stroke="black"/>
              <path d="M 280,48 L 304,48" fill="none" stroke="black"/>
              <path d="M 384,48 L 408,48" fill="none" stroke="black"/>
              <path d="M 24,64 L 64,64" fill="none" stroke="black"/>
              <path d="M 216,64 L 264,64" fill="none" stroke="black"/>
              <path d="M 432,64 L 472,64" fill="none" stroke="black"/>
              <path d="M 24,32 C 15.16936,32 8,39.16936 8,48" fill="none" stroke="black"/>
              <path d="M 64,32 C 72.83064,32 80,39.16936 80,48" fill="none" stroke="black"/>
              <path d="M 216,32 C 207.16936,32 200,39.16936 200,48" fill="none" stroke="black"/>
              <path d="M 264,32 C 272.83064,32 280,39.16936 280,48" fill="none" stroke="black"/>
              <path d="M 432,32 C 423.16936,32 416,39.16936 416,48" fill="none" stroke="black"/>
              <path d="M 472,32 C 480.83064,32 488,39.16936 488,48" fill="none" stroke="black"/>
              <path d="M 24,64 C 15.16936,64 8,56.83064 8,48" fill="none" stroke="black"/>
              <path d="M 64,64 C 72.83064,64 80,56.83064 80,48" fill="none" stroke="black"/>
              <path d="M 216,64 C 207.16936,64 200,56.83064 200,48" fill="none" stroke="black"/>
              <path d="M 264,64 C 272.83064,64 280,56.83064 280,48" fill="none" stroke="black"/>
              <path d="M 432,64 C 423.16936,64 416,56.83064 416,48" fill="none" stroke="black"/>
              <path d="M 472,64 C 480.83064,64 488,56.83064 488,48" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="416,48 404,42.4 404,53.6" fill="black" transform="rotate(0,408,48)"/>
              <polygon class="arrowhead" points="312,48 300,42.4 300,53.6" fill="black" transform="rotate(0,304,48)"/>
              <polygon class="arrowhead" points="200,48 188,42.4 188,53.6" fill="black" transform="rotate(0,192,48)"/>
              <polygon class="arrowhead" points="112,48 100,42.4 100,53.6" fill="black" transform="rotate(0,104,48)"/>
              <g class="text">
                <text x="44" y="52">Client</text>
                <text x="140" y="52">HTTP/2</text>
                <text x="240" y="52">Gateway</text>
                <text x="348" y="52">HTTP/1.1</text>
                <text x="452" y="52">Server</text>
                <text x="144" y="68">:protocol=foo</text>
                <text x="332" y="68">Upgrade:</text>
                <text x="384" y="68">foo</text>
                <text x="144" y="84">capsule-protocol=?1</text>
                <text x="352" y="84">Capsule-Protocol:</text>
                <text x="436" y="84">?1</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 .------.                .-------.                  .------.
| Client +--> HTTP/2--->| Gateway +--> HTTP/1.1--->| Server |
 '------'  :protocol=foo '-------'   Upgrade: foo   '------'
        capsule-protocol=?1        Capsule-Protocol: ?1
]]></artwork>
        </artset>
      </figure>
      <t>As a result of this limitation, HTTP intermediaries cannot forward unrecognized Capsule Protocol Upgrade Tokens (CPUTs) unless the backend supports the HTTP version used by the client.  In practice, such HTTP version mismatches are common, so intermediaries have preferred not to support unrecognized tokens at all.  As a result, each new CPUT requires the cooperation of any HTTP intermediaries.  This increases the maintenance burden on intermediaries and impedes the deployment of novel CPUTs.</t>
      <t>This draft specifies general rules for translating Capsule Protocol requests across HTTP versions, allowing intermediaries to perform such translations for unrecognized CPUTs.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="requirements">
      <name>Requirements</name>
      <t>This section describes requirements on HTTP intermediaries that change the HTTP version of a Capsule Protocol request.</t>
      <section anchor="converting-an-http11-upgrade-request-to-extended-connect">
        <name>Converting an HTTP/1.1 Upgrade request to Extended CONNECT</name>
        <t>A Convertible Upgrade Request is a request that meets these criteria:</t>
        <ul spacing="normal">
          <li>
            <t>The HTTP version is "1.1".</t>
          </li>
          <li>
            <t>The method is "GET".</t>
          </li>
          <li>
            <t>The Upgrade header is present and specifies exactly one Upgrade Token.</t>
          </li>
          <li>
            <t>A "Capsule-Protocol" header is present with an item value of "?1" (with or without parameters).</t>
          </li>
          <li>
            <t>The request is otherwise well-formed for use with the Capsule Protocol.</t>
          </li>
        </ul>
        <t>Upon receiving a Convertible Upgrade Request, an HTTP intermediary <bcp14>MAY</bcp14> convert it into an Extended CONNECT request (<xref target="RFC9220"/><xref target="RFC8441"/>) using ordinary HTTP version translation with the following modifications:</t>
        <ul spacing="normal">
          <li>
            <t>Change the method to "CONNECT".</t>
          </li>
          <li>
            <t>Add a ":protocol" pseudo-header containing the specified Upgrade Token.</t>
          </li>
        </ul>
        <t>(Note that ordinary HTTP version translation removes the "Connection" and "Upgrade" headers.)</t>
        <t>If the intermediary receives a "200 (OK)" response, it <bcp14>MUST</bcp14> convert it to an HTTP/1.1 Upgrade response as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Change the response code to "101 (Switching Protocols)".</t>
          </li>
          <li>
            <t>Add an "Upgrade" header containing the specified Upgrade Token.</t>
          </li>
          <li>
            <t>Add a "Connection: Upgrade" header.</t>
          </li>
        </ul>
        <t>After sending this response, the intermediary <bcp14>MUST</bcp14> process all data to and from the client in accordance with the Capsule Protocol.</t>
        <t>If the intermediary receives any other valid response, it <bcp14>MUST NOT</bcp14> convert it to an HTTP/1.1 Upgrade response, and <bcp14>MUST</bcp14> forward it using ordinary HTTP version translation.  If the response status was not 1xx (Informational), the intermediary <bcp14>MAY</bcp14> accept additional HTTP/1.1 requests on this connection to the client.</t>
      </section>
      <section anchor="converting-an-extended-connect-request-to-http11-upgrade">
        <name>Converting an Extended CONNECT request to HTTP/1.1 Upgrade</name>
        <t>A Convertible Extended CONNECT request is a request that meets these criteria:</t>
        <ul spacing="normal">
          <li>
            <t>The method is "CONNECT".</t>
          </li>
          <li>
            <t>A "capsule-protocol" header is present with an item value of "?1" (with or without parameters).</t>
          </li>
          <li>
            <t>The request is otherwise well-formed for use with the Capsule Protocol.</t>
          </li>
        </ul>
        <t>Upon receiving a Convertible Extended CONNECT Request, an HTTP intermediary <bcp14>MAY</bcp14> convert it into an HTTP/1.1 Upgrade request according to ordinary HTTP version translation, with the following modifications:</t>
        <ul spacing="normal">
          <li>
            <t>Change the method to "GET".</t>
          </li>
          <li>
            <t>Add an "Upgrade" header containing the specified Upgrade Token.</t>
          </li>
          <li>
            <t>Add a "Connection: Upgrade" header.</t>
          </li>
        </ul>
        <t>If the intermediary receives a correctly formed "101 (Switching Protocols)" response, it <bcp14>MUST</bcp14> change the response code to "200 (OK)".  If it receives a 2xx (Successful) response, it <bcp14>SHOULD</bcp14> return a "501 (Not Implemented)" status code, to indicate that the ":protocol" value was not accepted (<xref section="3" sectionFormat="comma" target="RFC9220"/>). Otherwise, it <bcp14>MUST</bcp14> forward any valid responses unmodified.  After sending a "200" response, the intermediary <bcp14>MUST</bcp14> process all further data to and from the server in accordance with the Capsule Protocol.</t>
      </section>
      <section anchor="converting-an-extended-connect-request-to-extended-connect-for-a-different-http-version">
        <name>Converting an Extended CONNECT request to Extended CONNECT for a different HTTP version</name>
        <t>An HTTP intermediary <bcp14>MAY</bcp14> translate a Convertible Extended CONNECT Request between different HTTP versions using ordinary HTTP version translation.</t>
      </section>
    </section>
    <section anchor="implications">
      <name>Implications</name>
      <t>Translation of unrecognized CPUTs across HTTP versions carries some implications for future specifications related to the Capsule Protocol:</t>
      <ul spacing="normal">
        <li>
          <t>All CPUTs must treat "GET" in HTTP/1.1 as semantically equivalent to Extended CONNECT.</t>
        </li>
        <li>
          <t>The "Capsule-Protocol" response header has no effect and should be treated as a hint for later analysis.  Intermediaries can process the response as the Capsule Protocol based entirely on the request header and the response status code.</t>
        </li>
        <li>
          <t>Intermediaries' behavior regarding each capsule type is independent of the CPUT.  CPUTs cannot change intermediaries' treatment of existing capsule types.</t>
        </li>
        <li>
          <t>A Capsule Type or CPUT cannot change the meaning of an HTTP extension.  It can only rely on the behaviors that are defined as mandatory for any implementation of that extension.  Extensions intended for use with the Capsule Protocol will likely need to define how HTTP version translation works.</t>
        </li>
        <li>
          <t>Capsule Protocol endpoints are defined independently of the HTTP version, like ordinary HTTP resources.  If an origin server's Capsule Protocol support varies between HTTP versions, clients may observe inconsistent behavior when accessing the origin through a compliant intermediary.</t>
        </li>
      </ul>
      <t>All existing CPUTs and Capsule Types already conform to these rules.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>When implemented incorrectly, HTTP/1.1 Upgrade carries a risk of request smuggling.  (See <xref target="I-D.ietf-httpbis-optimistic-upgrade"/>.)</t>
      <t>Intermediary implementors should take care to avoid excessive resource consumption by malicious clients.  For example, a client might be able to send many short requests over a single HTTP/2 or HTTP/3 connection, each of which requires opening a new, long-lived TCP connection to the backend.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9297">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9220">
          <front>
            <title>Bootstrapping WebSockets with HTTP/3</title>
            <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection is equally applicable to HTTP/3, but the HTTP-version-specific details need to be specified. This document describes how the mechanism is adapted for HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9220"/>
          <seriesInfo name="DOI" value="10.17487/RFC9220"/>
        </reference>
        <reference anchor="RFC8441">
          <front>
            <title>Bootstrapping WebSockets with HTTP/2</title>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8441"/>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-httpbis-connect-tcp">
          <front>
            <title>Template-Driven HTTP CONNECT Proxying for TCP</title>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Meta Platforms, Inc.</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   TCP proxying using HTTP CONNECT has long been part of the core HTTP
   specification.  However, this proxying functionality has several
   important deficiencies in modern HTTP environments.  This
   specification defines an alternative HTTP proxy service configuration
   for TCP connections.  This configuration is described by a URI
   Template, similar to the CONNECT-UDP and CONNECT-IP protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-connect-tcp-06"/>
        </reference>
        <reference anchor="I-D.ietf-httpbis-optimistic-upgrade">
          <front>
            <title>Security Considerations for Optimistic Protocol Transitions in HTTP/1.1</title>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Meta Platforms, Inc.</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   In HTTP/1.1, the client can request a change to a new protocol on the
   existing connection.  This document discusses the security
   considerations that apply to data sent by the client before this
   request is confirmed, and updates RFC 9298 to avoid related security
   issues.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-optimistic-upgrade-01"/>
        </reference>
      </references>
    </references>
    <?line 157?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
pF/GC54ZQRcRs/Pn51ggfAnG/TeGqrds9CEAAA==

-->

</rfc>
