<?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-rfc2629 version 1.6.2 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wood-httpbis-ech-coalescing-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="ECH-Based HTTP Connection Reuse">HTTP Connection Reuse Based on TLS Encrypted ClientHello</title>
    <seriesInfo name="Internet-Draft" value="draft-wood-httpbis-ech-coalescing-00"/>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2022" month="March" day="07"/>
    <area>General</area>
    <workgroup>httpbis</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies new criteria under which HTTP/2 clients may reuse
connections. It updates <xref target="RFC7540"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/chris-wood/draft-wood-httpbis-ech-coalescing"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The HTTP/2 connection reuse policy requires is stated as follows:</t>
      <t>Connections that are made to an origin server, either directly or
   through a tunnel created using the CONNECT method (Section 8.3), MAY
   be reused for requests with multiple different URI authority
   components.  A connection can be reused as long as the origin server
   is authoritative (Section 10.1).  For TCP connections without TLS,
   this depends on the host having resolved to the same IP address.</t>
      <t>For "https" resources, connection reuse additionally depends on
   having a certificate that is valid for the host in the URI.  The
   certificate presented by the server MUST satisfy any checks that the
   client would perform when forming a new TLS connection for the host
   in the URI.</t>
      <t>Thus, HTTPS connections require that the target resource hostname resolve
to an IP address that matches that of the candidate connection for coalescing.
This IP address match ensures that clients connect to the same service.
If a server changes IP addresses as a means of mitigating hostname-to-IP
bindings, clients are less likely to reuse connections. This can have
performance problems, due to requiring an extra connection setup phase,
as well as privacy problems.</t>
      <t>In short, using unauthenticated IP addresses as a signal for connection
reuse is fragile. This document relaxes this requirement and introduces
another signal based on HTTPS RR answer contents <xref target="HTTPS-RR"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="ech-based-coalescing-policy">
      <name>ECH-Based Coalescing Policy</name>
      <t>The HTTPS RR <xref target="HTTPS-RR"/> is a new resource record used for conveying
service information about a HTTPS endpoint to clients. Some of this information
includes, for example, TLS Encrypted ClientHello (ECH) <xref target="TLS-ECH"/>
public key material. The set of hosts behind the same ECH client-facing service provider
that share the same ECH and TLS configuration information is referred to as the anonymity
set. Client-facing servers SHOULD deploy ECH in such a way so as to maximize the size of
the anonymity set where possible. This means client-facing servers should use the same
ECH configuration (ECHConfig) for as many hosts as possible.</t>
      <t>This type of deployment model means that a given ECHConfig uniquely identifies a given
service provider. As a result, clients can use it as a signal to determine if a given
resource is hosted by the same service provider. Thus, the HTTP/2 connection reuse
policy is modified to use this signal as follows:</t>
      <ul empty="true">
        <li>
          <t>Connections that are made to an origin server, either directly or
  through a tunnel created using the CONNECT method (Section 8.3), MAY
  be reused for requests with multiple different URI authority
  components.  A connection can be reused as long as the origin server
  is authoritative (Section 10.1).  For TCP connections without TLS,
  this depends on the host having resolved to the same service provider.
  Clients may implement this check in one of two ways: (1) by comparing
  for equality the resolved IP address to that of the original connection,
  or (2) by comparing for equality the "ech" SvcParamValue in the resolved
  HTTPS RR answer. For the latter case, the original connection MUST have
  successfully used the "ech" parameter to negotiate TLS ECH.</t>
        </li>
      </ul>
    </section>
    <section anchor="http3-reuse">
      <name>HTTP/3 Reuse</name>
      <t>The HTTP/3 connection reuse policy <xref target="HTTP3"/> does not require
IP addresses to match. However, as HTTP/3 is based on UDP, some clients may fall
back to HTTP/2 over TCP in networks where UDP is blocked or otherwise inoperable.
Thus, the policy described in this document only applies to HTTP/2.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Existing coalescing policies do not require IP address authentication
via DNSSEC. Thus, an adversary which can spoof A or AAAA responses can
equally spoof HTTPS responses and ECHConfigList values.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <author fullname="M. Belshe" initials="M." surname="Belshe">
              <organization/>
            </author>
            <author fullname="R. Peon" initials="R." surname="Peon">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7540"/>
          <seriesInfo name="DOI" value="10.17487/RFC7540"/>
        </reference>
        <reference anchor="HTTPS-RR">
          <front>
            <title>Service binding and parameter specification via the DNS (DNS SVCB and HTTPS RRs)</title>
            <author fullname="Ben Schwartz">
              <organization>Google</organization>
            </author>
            <author fullname="Mike Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Erik Nygren">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="12" month="October" year="2021"/>
            <abstract>
              <t>   This document specifies the "SVCB" and "HTTPS" DNS resource record
   (RR) types to facilitate the lookup of information needed to make
   connections to network services, such as for HTTP origins.  SVCB
   records allow a service to be provided from multiple alternative
   endpoints, each with associated parameters (such as transport
   protocol configuration and keys for encrypting the TLS ClientHello).
   They also enable aliasing of apex domains, which is not possible with
   CNAME.  The HTTPS RR is a variation of SVCB for use with HTTP [HTTP].
   By providing more information to the client before it attempts to
   establish a connection, these records offer potential benefits to
   both performance and privacy.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/MikeBishop/dns-alt-svc
   (https://github.com/MikeBishop/dns-alt-svc).  The most recent working
   version of the document, open issues, etc. should all be available
   there.  The authors (gratefully) accept pull requests.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-svcb-https-08"/>
        </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">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="TLS-ECH">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Kazuho Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="13" month="February" year="2022"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-14"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="HTTP3">
          <front>
            <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
            <author fullname="Mike Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <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.

DO NOT DEPLOY THIS VERSION OF HTTP

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

Note to Readers

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

   Working Group information can be found at https://github.com/quicwg;
   source code and issues list for this draft can be found at
   https://github.com/quicwg/base-drafts/labels/-http.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document was improved based on feedback from David Benjamin, Tommy Pauly, and Martin Thomson.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIANIXJmIAA61Y227jyBF976+oaF9mAFOxPRPsroB14pG9awG+xZcEQRAE
LbIpdUx2c7ubkrWG/yXfsl+2p7opkRrvvCQzL0OKZF1PnTrtLMtE0KFSE7p4
eLilqTVG5UFbQ3eq9Yo+Sa8Kwu3D5T2dm9xtmoAfppVWJlyoqrJCzudOrSZ0
Pr3I0uu/a0oUNjeyhqfCyTJka2uLbBlCM9c+U/kyy62slM+1WWSHhyKXQS2s
20zIh0II3bgJBdf6cHx4+P3hsZBOyQn9pIxyshJr654WzrbNhDqT4klt8Gsx
oZkJyhkVsjP2K4QP0hT/lpU1iGWjvGj0hP4ZbH5A3rrgVOlxtan54l9CyDYs
rZsIygThnzZ+QtMxnY7p78gg/pbSmi6d9sE2S+X2nlq3kEb/IrkUeKuybVFW
CD8+VLXU1YRyuf7LUskGyc918GOEK4TIsozk3Acnc9w+LLUnFLGtUXryjcp1
qZUno9aUO40ktaTWFHC/Xup8Gdvwx2PKY6881XJDLnYi37XGj2kWqG0KVNvT
y8sf7n6cfvunj4evr+PkvtZFUSkhvuEyOlu08TMORu3s942O5qmxlc7Z18+t
djCLsFFzho30VFpgZu0ngtPvMeIpLGUglAVxFoqCJWlQOr3QhrxyK+UOSOnA
xS1gNQ/VBo/ZSFii8YslSQotzFUohoreWo9y4rGi6c319fn0gWqFXhb07r6L
97vxh/cHdHX6D7YzVyn+AjG6GL3yKNsaTqluq6CbSsF3WSrHDXi8m1HChg4b
/j63dQNModRjotNhWXKk0ltHEYC9Bf/Pse3lyHZQrq1dYGal+nCPDsdH72H8
R8T3ML0duEhh2jbwnB6kqjBaVKNM4Xl+2dXS+kBLueKyoDG2WiEcVJqfeWCY
ZrckiwKP/Dj2hx2NeKD8KH7QulxhON50HB9pvpUVutI7ZROdO0m5cgGA5blO
vUZ8K1npVO5deDqFiuoiUaAsVnbwaYM4UGMEPt+kwGPh6Orx/gFJBO3LDaCz
oXyp8qcOVqGzEyeB1ratCmqUg+Mas6IMh1CnMHmamOsGOQ7jiw3qQ+RBaFER
HoX7vX506N/5pyDdQoVdGaM1Jo5tJ0SCfN+C9GktAzLpbmwZTQFPheaR/TzK
nkLHiS4G1qIhUsa3bmtuywydlT0ocFl1rsZiVqIqXZHzpTQLNTSLG+BYYrIk
kkZ8NYCwQBtQzG2GWbDZ7FbMNaI2C8ZP55enveLYKv2kgBz4T3jaI6iYCI8Q
oKRE1zZpcsaCnVeqhsWiVelrLnpspCH1DOIcVsir0DbULLGjDgSiXmN9cfSN
0ysJwtqaQ1dneBsTGA46EmkNjySCjiAsfqcAXi8A/64LW5cipYP4SycXulJd
NjsWd6qSz7EdegeZ+AAdBs4S42JFSWMj9XVe5tutnHB3d4f3/VpF1yGWFlQe
n2V3dz/MsrOxVqHMCuNtk/lVPo+L10eW/4ZZeMWpMWzZ75kqtYnz7BPRY5US
71JPIx6z0UH6n65v4vXd+V8fZ3fnZ3x9f3F6ebm7EN0b9xc3j5dn/VX/5fTm
6ur8+ix9jF9p7ycxAjfjCUc1url9mN1cn16O0gAOy8hAQvvBsZqXPTgibRtR
YBqcnisuJn2a3v7636OP3Zo7Pjr6/vW1u/nu6NuPuGEuSN6sAR7TLQq/EbJp
lHRsBRwHNDYg5wrAQ+8BlDXAia2AaqKcvQ6a7saRbuNO7PdmbNqgSXDOvB/p
Z0cRWHOoOu12Us6N2sCc6KYT8cRhiPCWc+Z/2ZkHBTcW1eC6dPM2pnuLyY4k
AmeDb4U2edUWzO3sRz3LGsvu4Muij94hy/ecAF7JcN2DLFSQc97o11fRtHNk
HeEDP6xPKh4AJpfIZUwQHl1bghl65oG1LuKslLF422wxoCsNfSMie/llbPvw
M+5cR96lXrQuFWZYpDhm2OAubb5uB2O8zKbmPY7Ixl2iQ+/Keeqgi/VW2U10
x2u7zVl5rKGtfDJnkeuzrvUvXWx8YUux5yYWYM2QgVjyXs93zJB49G36HACA
xouLGWWbtYjF2suWOzONv7yPzZRM/diHqdhMd1uPnaQMmyaCIiUW56m2BXRU
iiXpMlpAiRja2QYjaggkDAkaYkJSot1b4vN+QS3zQ+AaMqqnf+b0SI9hj0JR
wQLzywsZz8qd1d1YIGZOZiABBgtr4DSt5vBlpSo6pcp1twXnEEGRCsyqNQW0
p1pPvopsPflauvXk/xWuJ19LuZ58Hel68r9q1zf9T60aHH40k1rEd3QQBSLP
MFKPpLi2PMc43r07es/Q4rJIVhPRUiTGn1so1pBQt4tiKNnsnlBLFQKE+nRT
hrD17njfyVsHI5yKR3S/ym+lk/XfZNWqrfbc+o7GPhMB41hkfquSIbAoYMHz
pXiScI7Sim2Bz6A3fNmyko9N7yNpOAyeTE7T4HQeNGvQuCSmF1FKxEH70B34
+0Pihy8eEl9e/sxvfOj3BzRQHuUJVmJh+Xxrw1YaiT3dFakWonZMF3at4qgB
mZ1DNHinkh7PbvlsD5AMz8IlNrmYS2AAhjqGsKxyGZ+oM87g/GcF3xE1jESj
lc2f2KyjKMnWmhnMWOhSGUm1Z50uxT0Nsq9bosqAtKh0SidFESuJwWl5QJls
PONZdoLs/Fn7KK97sZ88sY3CDss1ROZAv/LCX2lJZ9f39+fTLU9i0mXBe0a6
TfcHBJ5+31iA+ZTzPcU/Rh64gsuPpyLiFTmktxIQ+zd4He82xiXC5gMfyCkm
ODu9Pn2T3L46hlJHOulN2R0H0p8luG1s5DR/MnZdqWLBH3jxMjFtPUe7ih9G
6K9Xo9fPja5hFEwAluAFsoVIqVQRsVA6W9MZeKagT8r8R2ILQQfZut7QrWyr
TZKHVxInUoPK2dpbMxa/AZziIJ9IEwAA

-->

</rfc>
