<?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-kazuho-ptth-ptth-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title>Protocol for Transposed Transactions over HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-kazuho-ptth-ptth-00"/>
    <author fullname="奥 一穂" asciiFullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="September" day="26"/>
    <workgroup>httpbis</workgroup>
    <keyword>internet-draft</keyword>
    <abstract>
      <?line 20?>

<t>This document specifies the Protocol for Transposed Transactions over HTTP
(PTTH), an HTTP extension that allows a backend server to establish an HTTP
connection to a reverse proxy and transpose HTTP request flow. The reverse
proxy then forwards incoming requests to the backend server over the transposed
connection. This extension lets backend servers behind restrictive firewalls
accept HTTP traffic through reverse proxies without changing firewall settings
and with virtually zero overhead.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Protocol for Transposed Transactions over HTTP Working Group mailing list (ptth@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ptth/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/kazuho/draft-unknown-ptth-ptth"/>.</t>
    </note>
  </front>
  <middle>
    <?line 31?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In scalable HTTP deployments—such as those using CDNs and dynamic backend server
pools—clients send requests to reverse proxies, which then forward them to
backend servers. Backend servers frequently reside behind firewalls that block
inbound TCP or QUIC connections, requiring special network or firewall
configuration to permit proxy-initiated traffic. To overcome these restrictions,
some organizations use VPNs, but VPNs introduce operational complexity, hamper
scalability, and impose performance overhead.</t>
      <t>PTTH enables a backend server to establish an HTTP connection to a reverse proxy
and transpose the flow of HTTP requests so that the proxy sends incoming
requests back over the same connection. An HTTP request is used for
authenticating the backend server and for negotiating the scope of requests
forwarded to the transposed connection, providing flexibility to deployments.</t>
      <t>Because PTTH transposes the direction of communication rather than
encapsulating traffic, it incurs virtually zero overhead and delivers high
efficiency.</t>
      <t>TODO: expand</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="the-protocol">
      <name>The Protocol</name>
      <t>To set up a transposed connection, the backend server connects to the reverse
proxy and sends an HTTP request including a URI specifying the transposed
endpoint and credentials that authenticate the backend server.</t>
      <t>The exact form of the URI specifying the transposed endpoint is unspecified; it
is up to each reverse proxy deployment.</t>
      <t>Similarly, the authentication scheme is unspecified. Deployments can use either
a TLS- or an HTTP-based authentication scheme, or something else.</t>
      <t>The method being used to establish the transposed connection is different
between HTTP versions. However, the HTTP header fields are version-independent,
and therefore the parameters for negotiating PTTH can be defined in a
version-neutral manner.</t>
      <t>PTTH cannot originate over HTTP/2. To establish a transposed HTTP/2 channel,
HTTP/1.1 upgrade is used, with the ALPN specifying HTTP/2.</t>
      <section anchor="http11-and-http2">
        <name>HTTP/1.1 and HTTP/2</name>
        <t>To establish a transposed HTTP/1.1 or HTTP/2 channel, the backend server
connects to the reverse proxy using HTTP/1.1 (<xref target="HTTP1"/>), and uses the
HTTP upgrade mechanism (<xref target="HTTP-SEMANTICS"/> Section 7.8) to negotiate the
transposition.</t>
        <t>The method of the upgrade request <bcp14>SHALL</bcp14> be "GET", accompanied by an
"Upgrade: ptth" header field.</t>
        <t>The request <bcp14>MUST</bcp14> also include the ALPN header field (<xref target="ALPN-HEADER"/>)
specifying the HTTP versions that the backend server is willing to use on the
transposed connection.</t>
        <t>Once the transposed connection is established successfully, the reverse proxy
responds with a 101 (Switching Protocols) response, alongside an ALPN response
header specifying the HTTP version being chosen. After a 101 response is sent,
HTTP requests are sent in the direction from the reverse proxy to the backend
server.</t>
        <t><xref target="fig-tunnel-establishment"/> shows an exchange of HTTP/1.1 upgrade request and
response establishing the transposed connection. In this example, the Basic HTTP
Authentication Scheme <xref target="BASIC-AUTH"/> is used to authenticate the
backend server. As for the application protocol to be used on the transposed
connection, the backend server is offering both HTTP/2 and HTTP/1.1, and the
reverse proxy selects HTTP/2.</t>
        <figure anchor="fig-tunnel-establishment">
          <name>Establishing a transposed connection over HTTP/1.1</name>
          <artwork><![CDATA[
GET /reverse-endpoint HTTP/1.1
Host: example.com
Connection: upgrade
Upgrade: ptth
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
ALPN: h2, http%2F1.1

HTTP/1.1 101 Switching Protocols
Connection: upgrade
Upgrade: ptth
ALPN: h2

]]></artwork>
        </figure>
        <t>As the parameters for the transposed connection are exchanged using the upgrade
request, they cannot be changed once the transposed connection is established.
To change those parameters, a new HTTP/1.1 connection should be established and
transposed.</t>
      </section>
      <section anchor="http3">
        <name>HTTP/3</name>
        <t>In HTTP/3 (<xref target="HTTP3"/>), the OPTIONS method
(<xref section="9.3.7" sectionFormat="of" target="HTTP-SEMANTICS"/>) is used to transpose HTTP request flow on
the HTTP/3 connection. As the flow of the existing connection is transposed,
neither the <tt>:protocol</tt> pseudo-header field nor the ALPN header field is used.</t>
        <t>The target of the OPTIONS request is the endpoint that tranposes the connection;
therefore, the asterisk ("*") request is never used for establishing PTTH.</t>
        <t>Once the reverse proxy responds with a 2xx response, it starts forwarding HTTP
requests on the server-initiated, bidirectional QUIC streams. Note that, due to
packet reordering, backend servers might receive these requests before receiving
a 200 response for the OPTIONS request.</t>
        <t>Similarly to when HTTP/1.1 is used, establishment of a new HTTP/3 connection is
required if a transposed HTTP/3 connection with different set of parameters is
needed.</t>
        <t>Once the connection is transposed, the reverse proxy <bcp14>MAY</bcp14> reset incoming requests
that it receives using a H3_REQUEST_REJECTED error (<xref section="8.1" sectionFormat="of" target="HTTP3"/>).</t>
        <t>TODO: Discuss the downsides of transposing an HTTP/3 connection; notes:</t>
        <ul spacing="normal">
          <li>
            <t>No issues with SETTINGS; none of the HTTP/3 settings are specific to clients
or servers.</t>
          </li>
          <li>
            <t>No issues with QPACK; one set of QPACK streams can handle requests flying in
both directions.</t>
          </li>
          <li>
            <t>We need to consider how to handle quarter stream IDs of HTTP/3 datagrams;
but that issue not orthogonal to sending HTTP requests in both directions.
The issue arises for any design that establishes the QUIC connection in the
reverse direction. Maybe the answer here is to use
<tt>stream_id / 4 + (2 &lt;&lt; 60)</tt> as the quarter stream IDs for datagrams
belonging to the transposed requests.</t>
          </li>
          <li>
            <t>Otherwise, the design does not interfere with WebTransport over HTTP/3; for
both client- and server-initiated bidirectional streams, WebTransport streams
can be identified by their signal vallues (0x41), and if they are associated
to client- or server-initiated requests can be determined by their Session ID
(i.e., the stream ID of the CONNECT stream).</t>
          </li>
          <li>
            <t>Rather than using OPTIONS, do we want to use an extended CONNECT? While the
use of OPTIONS might be fine, HTTP requests without a special pseudo-header
is end-to-end per definition. Using an extended CONNECT is a straightforward
way to constrain the setup of a transposed <em>connection</em> to hop-by-hop.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="establishing-authority">
      <name>Establishing Authority</name>
      <t>In HTTP, only the URI's authority may process or delegate the request
(<xref section="17.1" sectionFormat="of" target="HTTP-SEMANTICS"/>).</t>
      <t>This authority model of HTTP remains unchanged under PTTH:</t>
      <ul spacing="normal">
        <li>
          <t>When the backend server connects to the reverse proxy and requests the
transposition of the connection, the backend identifies the reverse proxy
using a target URI whose authority component identifies the reverse proxy.</t>
        </li>
        <li>
          <t>When the reverse proxy forwards requests to the backend over a transposed
connection, it is merely exercising its rights as the authoritative server.
This behavior is identical to forwarding requests over connections the
reverse proxy initiated, using whatever authentication scheme it chooses.
PTTH differs only in how the backend connections are established.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Once approved, this document will request IANA to register the following entry
to the "HTTP Upgrade Tokens" registry maintained at
<eref target="https://www.iana.org/assignments/http-upgrade-tokens">https://www.iana.org/assignments/http-upgrade-tokens</eref>:</t>
      <dl>
        <dt>Value:</dt>
        <dd>
          <t>ptth</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>Establishes a transposed HTTP/1.1 connection.</t>
        </dd>
        <dt>Expected Version Tokens:</dt>
        <dd>
          <t>None</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>this document</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP-SEMANTICS">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </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="HTTP1">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="ALPN-HEADER">
          <front>
            <title>The ALPN HTTP Header Field</title>
            <author fullname="A. Hutton" initials="A." surname="Hutton"/>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>This specification allows HTTP CONNECT requests to indicate what protocol is intended to be used within the tunnel once established, using the ALPN header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7639"/>
          <seriesInfo name="DOI" value="10.17487/RFC7639"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="BASIC-AUTH">
          <front>
            <title>The 'Basic' HTTP Authentication Scheme</title>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document defines the "Basic" Hypertext Transfer Protocol (HTTP) authentication scheme, which transmits credentials as user-id/ password pairs, encoded using Base64.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7617"/>
          <seriesInfo name="DOI" value="10.17487/RFC7617"/>
        </reference>
      </references>
    </references>
    <?line 235?>

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

-->

</rfc>
