<?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.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-ptth-potato-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title>Potato - Reverse HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-ptth-potato-00"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2025" month="September" day="26"/>
    <area>Web and Internet Transport</area>
    <workgroup>Protocol for Transposed Transactions over HTTP</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 44?>

<t>This document defines 🥔, a suite of reversed versions of HTTP for origin servers.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://martinthomson.github.io/potato/draft-thomson-ptth-potato.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-ptth-potato/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Protocol for Transposed Transactions over HTTP Working Group mailing list (<eref target="mailto:ptth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ptth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ptth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/potato"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Operating an HTTP server that is accessable on the public internet
creates an unmanageable risk of denial of service
for many organizations,
especially smaller operators.
Content delivery networks (CDNs) are able to provide a measure of protection,
but their services typically operate as gateways,
which require that the origin server be reachable.</t>
      <t>An alternative deployment model has emerged as a means of addressing this concern,
where, rather than have the gateway initiate a connection to the origin,
the origin connects to the gateway.</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="544" viewBox="0 0 544 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
            <path d="M 40,64 L 40,112" fill="none" stroke="black"/>
            <path d="M 40,144 L 40,240" fill="none" stroke="black"/>
            <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
            <path d="M 128,32 L 128,64" fill="none" stroke="black"/>
            <path d="M 168,64 L 168,112" fill="none" stroke="black"/>
            <path d="M 168,144 L 168,240" fill="none" stroke="black"/>
            <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
            <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
            <path d="M 304,64 L 304,80" fill="none" stroke="black"/>
            <path d="M 304,144 L 304,168" fill="none" stroke="black"/>
            <path d="M 304,216 L 304,240" fill="none" stroke="black"/>
            <path d="M 352,32 L 352,64" fill="none" stroke="black"/>
            <path d="M 392,32 L 392,64" fill="none" stroke="black"/>
            <path d="M 424,64 L 424,112" fill="none" stroke="black"/>
            <path d="M 424,144 L 424,240" fill="none" stroke="black"/>
            <path d="M 448,160 L 448,224" fill="none" stroke="black"/>
            <path d="M 464,32 L 464,64" fill="none" stroke="black"/>
            <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
            <path d="M 128,32 L 208,32" fill="none" stroke="black"/>
            <path d="M 264,32 L 352,32" fill="none" stroke="black"/>
            <path d="M 392,32 L 464,32" fill="none" stroke="black"/>
            <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
            <path d="M 128,64 L 208,64" fill="none" stroke="black"/>
            <path d="M 264,64 L 352,64" fill="none" stroke="black"/>
            <path d="M 392,64 L 464,64" fill="none" stroke="black"/>
            <path d="M 176,94 L 304,94" fill="none" stroke="black"/>
            <path d="M 176,98 L 304,98" fill="none" stroke="black"/>
            <path d="M 400,94 L 424,94" fill="none" stroke="black"/>
            <path d="M 400,98 L 424,98" fill="none" stroke="black"/>
            <path d="M 16,128 Q 18,124.8 20,128 Q 22,131.2 24,128 Q 26,124.8 28,128 Q 30,131.2 32,128 Q 34,124.8 36,128 Q 38,131.2 40,128 Q 42,124.8 44,128 Q 46,131.2 48,128 Q 50,124.8 52,128 Q 54,131.2 56,128 Q 58,124.8 60,128 Q 62,131.2 64,128 Q 66,124.8 68,128 Q 70,131.2 72,128 Q 74,124.8 76,128 Q 78,131.2 80,128 Q 82,124.8 84,128 Q 86,131.2 88,128 Q 90,124.8 92,128 Q 94,131.2 96,128 Q 98,124.8 100,128 Q 102,131.2 104,128 Q 106,124.8 108,128 Q 110,131.2 112,128 Q 114,124.8 116,128 Q 118,131.2 120,128 Q 122,124.8 124,128 Q 126,131.2 128,128 Q 130,124.8 132,128 Q 134,131.2 136,128 Q 138,124.8 140,128 Q 142,131.2 144,128 Q 146,124.8 148,128 Q 150,131.2 152,128 Q 154,124.8 156,128 Q 158,131.2 160,128 Q 162,124.8 164,128 Q 166,131.2 168,128 " fill="none" stroke="black"/>
            <path d="M 312,128 Q 314,124.8 316,128 Q 318,131.2 320,128 Q 322,124.8 324,128 Q 326,131.2 328,128 Q 330,124.8 332,128 Q 334,131.2 336,128 Q 338,124.8 340,128 Q 342,131.2 344,128 Q 346,124.8 348,128 Q 350,131.2 352,128 Q 354,124.8 356,128 Q 358,131.2 360,128 Q 362,124.8 364,128 Q 366,131.2 368,128 Q 370,124.8 372,128 Q 374,131.2 376,128 Q 378,124.8 380,128 Q 382,131.2 384,128 Q 386,124.8 388,128 Q 390,131.2 392,128 Q 394,124.8 396,128 Q 398,131.2 400,128 Q 402,124.8 404,128 Q 406,131.2 408,128 Q 410,124.8 412,128 Q 414,131.2 416,128 Q 418,124.8 420,128 Q 422,131.2 424,128 Q 426,124.8 428,128 Q 430,131.2 432,128 Q 434,124.8 436,128 Q 438,131.2 440,128 Q 442,124.8 444,128 Q 446,131.2 448,128 Q 450,124.8 452,128 Q 454,131.2 456,128 " fill="none" stroke="black"/>
            <path d="M 40,160 L 56,160" fill="none" stroke="black"/>
            <path d="M 136,160 L 160,160" fill="none" stroke="black"/>
            <path d="M 168,176 L 184,176" fill="none" stroke="black"/>
            <path d="M 264,176 L 416,176" fill="none" stroke="black"/>
            <path d="M 176,208 L 320,208" fill="none" stroke="black"/>
            <path d="M 408,208 L 424,208" fill="none" stroke="black"/>
            <path d="M 48,224 L 64,224" fill="none" stroke="black"/>
            <path d="M 152,224 L 168,224" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="424,176 412,170.4 412,181.6" fill="black" transform="rotate(0,416,176)"/>
            <polygon class="arrowhead" points="184,208 172,202.4 172,213.6" fill="black" transform="rotate(180,176,208)"/>
            <polygon class="arrowhead" points="184,96 172,90.4 172,101.6" fill="black" transform="rotate(180,176,96)"/>
            <polygon class="arrowhead" points="168,160 156,154.4 156,165.6" fill="black" transform="rotate(0,160,160)"/>
            <polygon class="arrowhead" points="56,224 44,218.4 44,229.6" fill="black" transform="rotate(180,48,224)"/>
            <g class="text">
              <text x="44" y="52">Client</text>
              <text x="168" y="52">Gateway</text>
              <text x="308" y="52">Firewall</text>
              <text x="428" y="52">Origin</text>
              <text x="344" y="100">connect</text>
              <text x="384" y="100">🥔</text>
              <text x="304" y="116">|</text>
              <text x="196" y="132">some</text>
              <text x="236" y="132">time</text>
              <text x="280" y="132">later</text>
              <text x="96" y="164">request</text>
              <text x="492" y="164">messages</text>
              <text x="224" y="180">request</text>
              <text x="496" y="180">exchanged</text>
              <text x="304" y="196">|</text>
              <text x="476" y="196">over</text>
              <text x="364" y="212">response</text>
              <text x="492" y="212">existing</text>
              <text x="108" y="228">response</text>
              <text x="500" y="228">connection</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
+--------+     +---------+      +----------+    +--------+
| Client |     | Gateway |      | Firewall |    | Origin |
+---+----+     +----+----+      +----+-----+    +---+----+
    |               |                |              |
    |               |<================ connect 🥔 ===+
    |               |                |              |
 ~~~~~~~~~~~~~~~~~~~~ some time later ~~~~~~~~~~~~~~~~~~~
    |               |                |              |
    +-- request --->|                |              |  | messages
    |               +-- request ------------------->|  | exchanged
    |               |                |              |  | over
    |               |<------------------ response --+  | existing
    |<-- response --+                |              |  | connection
    |               |                |              |
]]></artwork>
      </artset>
      <t>This arrangement greatly simplifies the configuration of firewalls,
which are better able to authorize outward-bound connections.</t>
      <t>This document defines alternative, "reversed", versions of HTTP <xref target="HTTP"/> protocols.
These protocols are all nearly identical to their "forward" counterparts,
with the exception that the client and server roles are inverted
after completing the transport and TLS layer establishment.</t>
      <t>This document defines reversed equivalents to
HTTP/1.1 <xref target="RFC9112"/>,
HTTP/2 <xref target="RFC9113"/>,
and <xref target="RFC9114"/>.</t>
      <section anchor="comparative-notes">
        <name>Comparative Notes</name>
        <t>This is one of a set of different options in this space.
Other designs include
reverse tunnels <xref target="I-D.kazuho-ptth-ptth"/>
and reverse HTTP transport <xref target="I-D.bt-httpbis-reverse-http"/>.</t>
        <t>These alternatives are all broadly capable of achieving the goal.</t>
        <t>Key points of divergence exist around the use of tunnels
(for reverse tunnels)
and how different roles are authenticated and authorized.</t>
        <t>There are some minor differences in use of terminology,
which need to be cleared up.</t>
      </section>
    </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?>

<t>This document uses terminology from <xref target="HTTP"/>.</t>
      <t>Because having roles reversed can be especially confusing,
this document tries to be consistent in its use of language.</t>
      <t>The terms <em>client</em> and <em>server</em>,
when unqualified,
refer to the HTTP client and HTTP server roles respectively.</t>
      <t>In this document, a <em>gateway</em> will generally be the HTTP client
and an <em>origin server</em> will generally be the HTTP server.
These terms will be used where it makes sense.</t>
      <t>Where it is necessary to identify a client or server role
outside of the context of reversed HTTP,
the term will be qualified.
This typically will use the protocol where the role is used.
For example, "TLS client role" or "acting as QUIC client".</t>
    </section>
    <section anchor="overview-and-scope">
      <name>Overview and Scope</name>
      <t>This document describes how to establish reversed HTTP connections.</t>
      <t>The overall approach is
to allocate new Application-Layer Protocol Negotiation (ALPN) <xref target="ALPN"/>
identifiers to each reversed HTTP version.</t>
      <t>The origin server acts in the client role
for establishing the transport and security layers of a connection
to the gateway, which provides a server for those layers.
That is, for HTTP/1.1 and HTTP/2,
the origin server is the TCP and TLS client
and the gateway is the TCP and TLS server.
For HTTP/3, the origin server is the QUIC client
and the gateway is the QUIC server.</t>
      <t>If the gateway selects the reversed HTTP version
in the protocol negotiation,
the corresponding HTTP version is conducted
with the usual roles reversed.
The gateway becomes the HTTP client
and the origin server becomes the HTTP server.
No other changes are made to the protocol.</t>
      <t>The document explores some of the implications of this design,
including authorization (<xref target="auth-gateway"/> and <xref target="auth-origin"/>),
and interactions with some protocol features.
However, there are numerous factors that are relevant
when choosing an appropriate server deployment architecture.
This document will address only those
that are relevant to the design of the protocol
and essential to its secure and correct operation.</t>
      <t>This document does not define a protocol
that allows both endpoints to make requests over the same connection.
Separate connections can be used
if requests need to be exchanged in both directions.</t>
    </section>
    <section anchor="reversed-http">
      <name>Reversed HTTP</name>
      <t>This section defines the basic operation of reversed HTTP
for each major HTTP version.</t>
      <t>All versions of reversed HTTP require special handling
for questions of server authority.
Authorizing the origin server is discussed in <xref target="auth-origin"/>.
Similarly the means by which a gateway authorizes
an origin server are discussed in <xref target="auth-origin"/>.</t>
      <t>Most HTTP features,
including extensions to specific HTTP versions,
are unaffected by the reversal of the protocol.</t>
      <t>Only those features that depend on lower protocols layers
that also depend on assumptions
about how the the TLS or transport-layer role
relates to the HTTP client or server role.
Such features cannot be used without additional profiling.</t>
      <t>The features that cannot be used with reversed HTTP
include:
the Client-Cert HTTP field <xref target="RFC9440"/>.</t>
      <t>A small adjustment to the operation of
the HTTP/3 Datagram extension <xref target="HTTP-DGRAM"/>
is described in <xref target="rh3"/>.</t>
      <section anchor="rh1">
        <name>Reversed HTTP/1.1</name>
        <t>A reversed version of HTTP/1.1 <xref target="RFC9112"/>
is identified by the ALPN label "rh1".</t>
        <t>To negotiate the use of reversed HTTP/1.1 protocol,
an origin server advertises the "rh1" token
in its TLS handshake using ALPN <xref target="ALPN"/>
and a gateway selects that token.</t>
        <t>Once a TLS connection is established,
the origin server (as a TLS client) becomes the HTTP server
and the gateway (as TLS server) becomes the HTTP client.
Messages sent by the gateway are HTTP requests
and messages from the origin server are HTTP responses.</t>
        <t>HTTP/1.1 depends only on an undifferentiated stream of bytes.
No special considerations apply to this version.</t>
      </section>
      <section anchor="rh2">
        <name>Reversed HTTP/2</name>
        <t>A reversed version of HTTP/2 <xref target="RFC9113"/>
is identified by the ALPN label "rh2".</t>
        <t>To negotiate the use of reversed HTTP/2 protocol,
an origin server advertises the "rh2" token
in its TLS handshake using ALPN <xref target="ALPN"/>
and a gateway selects that token.</t>
        <t>Once a TLS connection is established,
the origin server (as a TLS client) becomes the HTTP/2 server
and the gateway (as TLS server) becomes the HTTP/2 client.
Each send a preface (<xref section="3.4" sectionFormat="of" target="RFC9113"/>)
and establishes an HTTP connection.</t>
        <t>HTTP/2 depends only on an undifferentiated stream of bytes.
No changes are necessary to the base protocol.</t>
        <t>In operation, the gateway (as HTTP/2 client) initiates requests
on odd-numbered streams.
Any push promises from the origin server (as HTTP server)
are sent on even-numbered streams.</t>
      </section>
      <section anchor="rh3">
        <name>Reversed HTTP/3</name>
        <t>A reversed version of HTTP/3 <xref target="RFC9114"/>
is identified by the ALPN label "rh3".</t>
        <t>To negotiate the use of reversed HTTP/3 protocol,
an origin server advertises the "rh3" token
in its QUIC handshake using ALPN <xref target="ALPN"/>
and a gateway selects that token.</t>
        <t>Once a QUIC connection is established,
the origin server (as a QUIC client) becomes the HTTP/3 server
and the gateway (as QUIC server) becomes the HTTP/3 client.
Each send a preface (<xref section="3.4" sectionFormat="of" target="RFC9113"/>)
and establishes an HTTP connection.</t>
        <t>Unlike HTTP/2, the streaming layer that HTTP/3 uses
is provided by QUIC.
Therefore, the identifiers given to streams change.
This should not be visible to the HTTP/3 layer;
the HTTP/3 design generally does not depend on stream identifiers
being in any particular form.</t>
        <t>One exception to this is the Quarter Stream ID concept
introduced in <xref section="2.1" sectionFormat="of" target="HTTP-DGRAM"/>.
Because requests in reversed HTTP/3 are made
on bi-directional, server-initiated streams,
those identifiers end with two bits (0b01);
see <xref section="2.1" sectionFormat="of" target="QUIC"/>.
To construct a Quarter Stream ID from a stream identifier,
any remainder is discarded.
To construct a stream identifier from a Quarter Stream ID
in reversed HTTP/3,
the value is multiplied by 4,
then the stream type (0b01) is added.
This adjustment only requires an understanding of the type of QUIC stream
that the HTTP client uses to make requests.</t>
        <t>Any extension that makes similar assumptions
about the structure of stream identifiers
can be adjusted in a similar manner.</t>
      </section>
    </section>
    <section anchor="auth-origin">
      <name>Authenticating and Authorizing Origin Servers</name>
      <t>Arrangements between gateways and origin servers
are often privately arranged.
Therefore, how a gateway chooses to authorize an origin server
does not necessarily benefit from having a single, standard mechanism.</t>
      <t>This section describes a few options
for origin server authentication.
None of these approaches is mandated,
as it is expected that private arrangements will be used
in most deployments.</t>
      <section anchor="client-cert">
        <name>TLS Client Certificates</name>
        <t>TLS client certificates can be used to authenticate TLS clients.
That authentication could be used as the basis of authorization.</t>
        <t>The choice of how to authenticate a client certificate is complex.
Multiple options are possible,
each with different operational and deployment properties:</t>
        <ul spacing="normal">
          <li>
            <t>The gateway could use the same public key infrastructure (PKI) as the certificate
that the gateway itself offers (see <xref target="auth-gateway"/>).</t>
          </li>
          <li>
            <t>A completely separate PKI could be used.
This includes a PKI managed by the gateway.</t>
          </li>
          <li>
            <t>Self-signed certificates could be mapped
to specific authorizations.</t>
          </li>
        </ul>
        <t>This option might introduce some challenges in deployment.
Because the TLS connection that is established to the gateway
uses the same endpoint that other clients,
the TLS server software needs to make its protocol selection
before deciding to request a client certificate.</t>
      </section>
      <section anchor="http-request">
        <name>HTTP Request</name>
        <t>Once a reversed HTTP connection is established,
the gateway could make a request to a pre-arranged resource.</t>
        <t>This request could be used to retrieve a bearer token
that authorizes the origin server.
A more complex request
might involve the origin server producing a signed object
that covers a challenge produced by the gateway.
Responding to a challenge is a defense
against the possibility of an attack
that captures and replays a bearer token.</t>
        <t>TODO: Should this document define a protocol?</t>
      </section>
      <section anchor="authorization-for-limited-path-scope">
        <name>Authorization for Limited Path Scope</name>
        <t>A gateway does not need to authorize an origin server
to serve all requests for an origin.
Nor does a gateway need to limit its authorization
to a single origin.</t>
        <t>The choice of which requests are forwarded to an origin server
is a matter for gateway policy.
That policy might be guided by the choice of credential
presented by the origin server.</t>
        <t>For instance, if a HTTP request is used
to authorize the origin server,
the response might include information
that guides the gateway in determining
which requests are forwarded over the connection.
This could be as simple as
having the origin server list path prefixes that it can serve
or it could be bound to the credentials that are offered.</t>
        <t>This might be used to enable different deployment architectures
where the one logical origin server is distributed
across multiple instances,
with different paths being served by different hosts.</t>
        <t>This approach is also compatible with a gateway
that makes regular HTTP connections to some origin server nodes.
A gateway might forward requests
for the one origin
to origin servers that use both regular and reversed HTTP
based on whatever policy it chooses.</t>
      </section>
    </section>
    <section anchor="auth-gateway">
      <name>Authenticating Gateways</name>
      <t>An origin server <bcp14>MUST</bcp14> authenticate a gateway
unless an alternative means of authentication
is privately arranged.</t>
      <t>In all reversed HTTP versions,
when the the origin server establishes a TLS connection
to the gateway,
it confirms the identity of the gateway
according to the rules of the respective, non-reversed, HTTP version.</t>
      <t>The rules in <xref section="4.3" sectionFormat="of" target="HTTP"/>
regarding how clients determine whether a server can answer a request
are applied in reverse.
That is, an origin server that cannot successfully determine
that a gateway is authoritative for resources
<bcp14>MUST NOT</bcp14> answer requests from that gateway.</t>
      <t>Because the server and client roles are reversed,
some methods for expanding the scope that a server can claim authority
are invalidated.
Mechanisms like the ORIGIN frame <xref target="ORIGIN"/> remain valid
as a means of limiting scope.</t>
      <t>These requirements do not exist to provide protection against impersonation,
which is generally the reason to require that a server establish authority.
They exist to protect things like the confidentiality of responses.</t>
      <t>TODO: For discovery, should this use
generic SVCB records, HTTPS records, or a new RR type?
It seems like HTTPS will work just fine for this.</t>
    </section>
    <section anchor="early">
      <name>TLS Early Data</name>
      <t>A gateway can use TLS session resumption
to make establishing connections more efficient.
This includes the possibility of enabling TLS early data.</t>
      <t>Unlike in regular HTTP
where a client can use TLS early data to make a request,
reversed HTTP gives the server an opportunity to speak first.
This has little value,
as an HTTP server generally has to wait for requests.</t>
      <t>This provides similar properties to the first flight of server application data
in a TLS 1.3 connection without early data.
There, the server is able to send first.</t>
      <t>Though that data has no replay risk,
the data that a server might send in any HTTP version without a request
is unlikely to produce side effects
that might be a problem if replayed.</t>
      <t>An origin can use early data to
reduce the latency of settings
or pre-populate header compression state.
These both only apply to HTTP/2 and HTTP/3.
These uses can avoid any replay attack risk,
as these do not cause side effects beyond the connection state.</t>
      <t>For a gateway,
the first flight of application data can be used to make requests.
However, this data is sent prior to receiving client certificates
if those are used to authorize the origin server; see <xref target="client-cert"/>.
This flight might be used for making a request to authorize the origin server;
see <xref target="auth-origin"/>.</t>
    </section>
    <section anchor="sacm">
      <name>Scalability, Availability, and Connection Management</name>
      <t>A gateway that is configured to make connections to an origin server
is able to make connections as needed.
Having the origin server be responsible for connection establishment
can mean that the gateway cannot rely on being able
to make new connection as demand increases.</t>
      <t>This can mean that origin servers have a greater control
over their availability and service scaling.
Where an origin server that might need to scale up
to handle increased demand
might otherwise need to arrange for load balancing infrastructure,
that becomes something that the gateway assumes more responsibilty for.</t>
      <t>As a passive participant,
a gateway is not able to act if an origin server goes offline.
The origin server is responsible for establishing connections
when it becomes available.</t>
      <t>This can present scaling challenges
as a gateway cannot make additional connections
on the assumption that origin servers will scale to meet increased demand.
Gateways can attempt to make additional requests over existing connections,
but origin servers can use protocol features
designed to limit resource commitment --
such as stream limits and flow control --
to manage load.</t>
      <t>This document does not define any mechanism
that might allow the gateway to communicate
changes in demand for capacity to origin server instances.
Defining mechanisms to help
with adding or removing capacity on demand
is a matter for future work.</t>
      <t>The use of reversed HTTP/1.1 presents particular difficulty
for connection management,
which is borne by the origin server.
The lack of any concurrency features in that protocol
means that origin servers likely need to manage
a pool of connections
if the gateway needs to handle requests
with any amount of concurrency or volume.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Using reversed HTTP changes the denial of service profile
for origin servers that rely on it.
Such servers are able to use different tools
to manage their reachability.</t>
      <t>A gateway becomes a more central part of managing load,
but the gateway no longer has direct control over connection establishment.
This alters how gateways and origin servers need to be configured
to handle scaling, availability, and connections;
see <xref target="sacm"/> for details.</t>
      <t>Other than these changes, the security considerations of HTTP
and the specific HTTP version in use apply in full.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO: Register ALPN labels.</t>
    </section>
  </middle>
  <back>
    <displayreference target="RFC9112" to="HTTP/1.1"/>
    <displayreference target="RFC9113" to="HTTP/2"/>
    <displayreference target="RFC9114" to="HTTP/3"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <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="RFC9112">
          <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="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <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 latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC9114">
          <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>
        <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="ALPN">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <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="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.kazuho-ptth-ptth">
          <front>
            <title>Protocol for Transposed Transactions over HTTP</title>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <date day="25" month="September" year="2025"/>
            <abstract>
              <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kazuho-ptth-ptth-00"/>
        </reference>
        <reference anchor="I-D.bt-httpbis-reverse-http">
          <front>
            <title>Reverse HTTP Transport</title>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Meta Platforms, Inc.</organization>
            </author>
            <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
              <organization>Nokia</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Philipp S. Tiesel" initials="P. S." surname="Tiesel">
              <organization>SAP SE</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This document defines a secure transport for HTTP in which the client
   and server roles are reversed.  This arrangement improves the origin
   server's protection from Layer 3 and Layer 4 denial-of-service
   attacks when an intermediary is in use.  It allows origin server's to
   be hosted without being publicly (and directly) accessible but allows
   clients to access these servers via an intermediary.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bt-httpbis-reverse-http-01"/>
        </reference>
        <reference anchor="RFC9440">
          <front>
            <title>Client-Cert HTTP Header Field</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document describes HTTP extension header fields that allow a TLS terminating reverse proxy (TTRP) to convey the client certificate information of a mutually authenticated TLS connection to the origin server in a common and predictable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9440"/>
          <seriesInfo name="DOI" value="10.17487/RFC9440"/>
        </reference>
        <reference anchor="ORIGIN">
          <front>
            <title>The ORIGIN HTTP/2 Frame</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies the ORIGIN frame for HTTP/2, to indicate what origins are available on a given connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8336"/>
          <seriesInfo name="DOI" value="10.17487/RFC8336"/>
        </reference>
      </references>
    </references>
    <?line 541?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This draft is based on discussions with many people.</t>
      <contact asciiFullname="Kazuho Oku" fullname="奥 一穂"/>
      <t>and <contact fullname="Andrew McGregor"/> both made helpful contributions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9VczXIcR3K+91OUwQtJzQwJgrGSsJK4EChKiCUJGoC8seHw
oaa7ZqYWPd2zXd0ARxAUDj+D7/ZlD34Dn/0sdvjqR3B+mVXV1T1Drla2D2bs
CtM91VVZ+ftlVvZMp9OstW1pjtXBu7rVba2m6sLcmMYZ9d3V1buDLNetWdbN
9li5tsiyos4rvabxRaMX7bRd1WtXV9NN266mG55h+vRp5rr52jpn66rdbmjw
2TdXr5R6oHTpalrKVoXZGPpP1R5M1IEpbFs3Vpe4ODv5mv7UDX26uHp1kFXd
em6a46wgOo6zvK6cqVznjlXbdCa7OVZHmW6Mpll/Z+ZKV4U6q1rTVKZVV42u
3KZu2oPstm6ul03dbbDRpm7rvC7VglbxY5wp5KPOW6LaqZp44Dlwbbb0eHGc
EW8q875VS1OZRmMcbnWVzeuGP7qNbq5LWy1VYV3b2HnX0rylKZamyW5M1dEO
lPqldCglzDz4HW0Gi3yLiXB/rW1J9yGE31jTLmZ1s8R93eQrur9q2407fvIE
w3DL3phZGPYEN57Mm/rWmSeY4AkeXNp21c3p0bVuWlt5KT8RAWNASdJw7WDu
ZOBMnp/Z2j/y5IPaMlu16/Igy3RHXzbgMc2u1KIrS9Gzgzc8s7qSZw/4ayJc
V/YHlsGxelP/YMtS8zfG82Ld/qasb0nBmnqznZE20BpV3azpkRuWAnh6rC5e
nX5+ePiUruXTs2OehcS3KTXpPEY9OZwdxgFH+wY8i18/3/f1UZbZatEvns1m
syybTqdKz0lNSNRZdrWyTpFxdWuiWRVmYSvj1H/905/+caK0cp1tjaoXqhHb
LBT+iIIseBFWIjKiJbHKmQZf0xq8yNoWRWmy7AEso6mLjlUry843rMWkSLqS
OeRB1a50q4gcnefGOT0vaemK7hq16ealzZX1FpblZHmkCJigq9a60kvDwxvr
rkEZWTiZNT5hapubDGTSwO1AhG6SGbcxOY0tt8qt6Q+RUTN9NTZySo5E+FIS
B5st2WELk3bq4enLt+4RabpRvDJ5sE1T39iCrtXaaNc1zDi62Rre+CQjs8Ru
bBOocrAsm/Pqsio97dSS/t7qLVF3u7L5ipj/x87SdMwfsGPAbzWnfRudr0AH
8f6kIncHPrHUifRNWW9Zuuua9qFWtIJZm2ZJ0qSPTK3IUxdFQ4yHZFqoBTm9
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
V04O/xsKgKf7YUgAAA==

-->

</rfc>
