<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kb-capsule-conversion-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="Capsule Translation">HTTP Version Translation of the Capsule Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-kb-capsule-conversion-01"/>
    <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="2025" month="June" day="30"/>
    <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>An "Upgrade" header is present and specifies exactly one Upgrade Token.</t>
          </li>
          <li>
            <t>The request is known to use the Capsule Protocol, because:
            </t>
            <ul spacing="normal">
              <li>
                <t>A "Capsule-Protocol" header is present with an item value of "?1" (with or without parameters), OR</t>
              </li>
              <li>
                <t>The intermediary knows that this Upgrade Token always uses the Capsule Protocol.</t>
              </li>
            </ul>
          </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>
          <li>
            <t>Add a "capsule-protocol: ?1" header if no "Capsule-Protocol" header is present.</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>The ":protocol" pseudo-header is present, providing an Upgrade Token.</t>
          </li>
          <li>
            <t>The request is known to use the Capsule Protocol, because:
            </t>
            <ul spacing="normal">
              <li>
                <t>A "capsule-protocol" header is present with an item value of "?1" (with or without parameters), OR</t>
              </li>
              <li>
                <t>The intermediary recognizes the provided Upgrade Token and knows that it always uses the Capsule Protocol.</t>
              </li>
            </ul>
          </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>Replace the ":protocol" pseudo-header with an "Upgrade" header containing the same Upgrade Token.</t>
          </li>
          <li>
            <t>Add a "Connection: Upgrade" header.</t>
          </li>
          <li>
            <t>Add a "Capsule-Protocol: ?1" header if no "capsule-protocol" header is present.</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 headers 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>
        <li>
          <t>If a future CPUT specification intends for all clients to be compatible with HTTP version translation by pre-existing intermediaries under this specification, it will have to make the "Capsule-Protocol: ?1" request header mandatory, as permitted by <xref section="3.4" sectionFormat="comma" target="RFC9297"/>.</t>
        </li>
        <li>
          <t>A "Capsule-Protocol: ?0" request header cannot be used to disable HTTP version translation.</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="11" month="June" year="2025"/>
            <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-08"/>
        </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="11" month="June" year="2025"/>
            <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-04"/>
        </reference>
      </references>
    </references>
    <?line 166?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
wWAbV+ls84Av3a1oXeUWBT3p25TiAeRf8JW0Fz9z7hKJ7S/W72ncTVN1y1xd
f8Mf0Mu5xbdqPcXJnV2sicouoXgrjY2qxl2Q5fNK6wltC6lsi7O5tstK3N00
zqosKsi5xpec+bZ/XTdWqayvE6hXVt4fwerADbhD6Y0LXzCWLOmzdu2PefWt
TstnY5W28PpgzYAR4DmRNyRbJhz2nSTby+DOY63SN9ZSrRW3N4B1rWpeIyvM
Wo2knpVihyGAHVXoyDaKx9bCSss54syx6APTcVXmu9grB+7Oi5mer8HJ0hBm
alejJrS7DSZ0VGikfqPNOaa6JfMy5AutivnCZmPiF541Lg83FuTUHfNkYxHU
YBzvKEdJtofpxXJ9U1qWO961DtzrjOmGKod+Beed/l2RxfbKnBqA9e1tcrQA
sBcCdNPJb3w11V3JNGN8i1Pbc3X3p7m7t9je4tdy8+DJ7a2Lrq71H7XW3161
2esQgqY0nOxxR/4ggq4s4RNEFjfimdI0eCDeUAno7pSUPw/Z2wCbhSB1gcPR
hvKfQamvy4T0LSFCbusZCxxfjvXa9XGZiHAIk+aGoF9qadJiPk/c1ebBlRCd
V6tqmcuUtIn6hVsRNjxsXPvX6IEYxeeDnHwZ+S48XylUPOKthfFKVIFl/wNE
kS5LGKWojCKpiKYdFFv3yWWPwF3swjXWH3R9RBdaKZEVBNB57SRM9Q5nFD7e
cw+PmKpuiLcHZH+hBAutFxIP1YWSAnO4YiwTaxCFyub9BGrEbHJy0XHC9tdr
rpg4PjtuuXDSuKnwKdV+ye1ChAD7P1doJVrlOKJTXSLiuWunvx+5/8Ak4q/C
GU+MoIvFyfmLcyxQfoks929pn4kRxCUAAA==

-->

</rfc>
