<?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.6.26 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-httpbis-alt-svcb-01" category="std" consensus="true" submissionType="IETF" obsoletes="7838" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.0 -->
  <front>
    <title abbrev="Alt-SvcB">HTTP Alternative Services, Plan B</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-httpbis-alt-svcb-01"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author fullname="Mike Bishop">
      <organization>Akamai Technologies</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucaspardue.24.7@gmail.com</email>
      </address>
    </author>
    <author fullname="Tommy Jensen">
      <organization>Microsoft</organization>
      <address>
        <email>tojens@microsoft.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="31"/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <keyword>next generation</keyword>
    <keyword>alternative alternative</keyword>
    <keyword>stickiness</keyword>
    <abstract>
      <t>HTTP servers deployments that include multiple <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref> can use
alternative services to direct clients to use a different <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref>.</t>
      <t>This document obsoletes RFC 7838.</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/alt-svcb/draft-thomson-httpbis-alt-svcb.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-httpbis-alt-svcb/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/alt-svcb"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP origins are often comprised of multiple <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>.  This can be
driven by multiple requirements, such as a need to scale by adding multiple
physical servers, the need to place endpoints in network locations that are
closer to clients for performance reasons, or the need to support multiple HTTP
versions, like HTTP/2 <xref target="H2"/> or HTTP/3 <xref target="H3"/>.</t>
      <t>For servers that operate multiple <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>, it can be advantageous to
have clients make requests to a specific <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref>.</t>
      <ul spacing="normal">
        <li>Some deployments might seek to direct a <iref item="client"/><xref target="terms" format="none">client</xref> to a <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> that is
better able to serve requests for that <iref item="client"/><xref target="terms" format="none">client</xref>.  This might occur if DNS
resolution of the <iref item="server"/><xref target="terms" format="none">server</xref> name produces the address of a <iref item="server"/><xref target="terms" format="none">server</xref> instance that
is further from the <iref item="client"/><xref target="terms" format="none">client</xref>.</li>
        <li>Servers might seek to reduce load, perhaps in anticipation of an imminent
shutdown or maintenance action. An alternative service declaration
can reduce either <iref item="server"/><xref target="terms" format="none">server</xref> load or the number of clients that might be affected.</li>
        <li>Many deployments of HTTP/3 <xref target="H3"/> use the protocol identifiers in an
alternative service declaration to make clients aware of support for the newer
protocol.</li>
      </ul>
      <t>HTTP alternative services provide a means of indicating to clients which <iref item="service endpoint"/><xref target="terms" format="none">service
endpoints</xref> a <iref item="server"/><xref target="terms" format="none">server</xref> would prefer be used for future requests.  Clients use
alternative service advertisements as prompt to discover and use these more
preferred <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>.</t>
      <t>Clients that learn about an alternative service can establish a connection to
the identified <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref>, which - if successfully established and
authenticated - is then used for future requests.  Any existing connections the
<iref item="client"/><xref target="terms" format="none">client</xref> has are retained and used until the new connection is successful.  This
ensures that clients can continue making requests of the <iref item="server"/><xref target="terms" format="none">server</xref> without
interruption.</t>
      <section anchor="previous-alternative-services-designs">
        <name>Previous Alternative Services Designs</name>
        <t>RFC 7838 <xref target="ALT-SVC"/> provided the first alternative service design for
HTTP.  This design turned out to have a number of shortcomings in deployment.
Though these issues were anticipated in the design, the measures that were used
often did not work particularly well.</t>
        <t>The RFC 7838 design included caching logic based on setting an "ma" (or max-age)
parameter.  This turned out to be challenging for many <iref item="server"/><xref target="terms" format="none">server</xref> deployments.
Setting too large a max-age meant that clients used the indicated <iref item="service endpoint"/><xref target="terms" format="none">service
endpoint</xref> for longer than was desired when operating conditions changed.
Conversely, a short cache period for an advertisement for HTTP/3 resulted in
frequently reverting to previous versions on subsequent connections.</t>
        <t>Alternative services turned out to interact poorly with service configuration
information that is published in the DNS.  With the introduction of HTTPS
records <xref target="SVCB"/>, more details of <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref> can be advertised in the
DNS, including the support for HTTP/3.  But this created two independent sources
of this information, each with its own approach to caching.</t>
        <t>Alternative services are dependent on networking conditions.  RFC 7838 attempted
to manage this by having clients be responsible for invalidating alternatives
when changes in their network are detected, unless the alternative is explicitly
marked as "persistent".  In practice, detecting the necessary changes is
difficult for many clients, so this requirement is not consistently implemented.</t>
        <t>The result being that the alternative services mechanisms defined in RFC 7838
produced suboptimal or even detrimental outcomes in some deployments.</t>
        <t>This document obsoletes RFC 7838.</t>
      </section>
      <section anchor="a-new-alternative">
        <name>A New Alternative</name>
        <t>This document describes a different approach to advertising alternative
services.  This approach uses the DNS as the singular source of information
about service reachability.  An alternative service advertisement only acts as a
prompt for clients to seek updated information from the DNS.</t>
        <t>To use this new design, a <iref item="server"/><xref target="terms" format="none">server</xref> advertises an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> using the
"<iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref>" field.</t>
        <sourcecode type="http-message"><![CDATA[
200 OK HTTP/1.1
date: Mon, 24 Oct 2022 02:58:31 GMT
alt-svcb: "instance31.example.com"
content-length: 0

]]></sourcecode>
        <t>Clients can then consult the DNS, making HTTPS queries <xref target="SVCB"/> starting with
this name. The <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> is used in place of the name of the authority
and using HTTPS records is mandatory, but the process otherwise follows normal
HTTPS record resolution and connection procedures.  <xref target="use"/> defines how this
name is used in detail.</t>
        <t>Future connections for requests to resources on the same <iref item="server"/><xref target="terms" format="none">server</xref> use HTTPS record
resolution to the name of the authority, but are reprioritized if a successful
connection was previously made to an alternative service.  <xref target="reuse"/> defines how
this process works in more detail.</t>
      </section>
      <section anchor="terms">
        <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>
        <t>The terms "<iref item="server"/><xref target="terms" format="none">server</xref>" and "<iref item="client"/><xref target="terms" format="none">client</xref>" are defined in <xref target="HTTP"/>.  The term "<iref item="origin"/><xref target="terms" format="none">origin</xref>" is
defined in <xref target="ORIGIN"/>.</t>
        <t>The term "<iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>" refers to the name advertised by a <iref item="server"/><xref target="terms" format="none">server</xref> to a
<iref item="client"/><xref target="terms" format="none">client</xref>.  This refers to a domain name that is queried by the <iref item="client"/><xref target="terms" format="none">client</xref> to discover
both service names and <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>.</t>
        <t>A "<iref item="service name"/><xref target="terms" format="none">service name</xref>" is the TargetName from an HTTPS ServiceMode record <xref target="SVCB"/>.
Service names, their associated parameters (SvcParams), and IP addresses
describe a "<iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref>".  Clients establiish connections to <iref item="service endpoint"/><xref target="terms" format="none">service
endpoints</xref> in order to make requests of a <iref item="server"/><xref target="terms" format="none">server</xref>.</t>
        <t>A <iref item="server"/><xref target="terms" format="none">server</xref> is identified using its "<iref item="origin name"/><xref target="terms" format="none">origin name</xref>", which is the domain name from
the target URI of resources the <iref item="client"/><xref target="terms" format="none">client</xref> makes requests toward.  This is the name
that the <iref item="client"/><xref target="terms" format="none">client</xref> authenticates when determining if a <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> is
authoritative.  Unlike an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> or <iref item="service name"/><xref target="terms" format="none">service name</xref>, an <iref item="origin name"/><xref target="terms" format="none">origin name</xref> can
be an IP address rather than a domain name.</t>
        <t>There can be different values for <iref item="origin name"/><xref target="terms" format="none">origin name</xref>, <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>, and <iref item="service name"/><xref target="terms" format="none">service
name</xref>.</t>
      </section>
    </section>
    <section anchor="use">
      <name>Using Alternative Services</name>
      <t>A <iref item="server"/><xref target="terms" format="none">server</xref> advertises the availability of alternative services by providing the
<iref item="client"/><xref target="terms" format="none">client</xref> with an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>.  The <iref item="server"/><xref target="terms" format="none">server</xref> does this using either a field in a
response (<xref target="field"/>) or an HTTP/2 or HTTP/3 frame (<xref target="frame"/>).</t>
      <t>When a <iref item="client"/><xref target="terms" format="none">client</xref> receives a new <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> from a <iref item="server"/><xref target="terms" format="none">server</xref>, they <bcp14>SHOULD</bcp14> attempt
to discover and use the <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref> referred to by that name for future
requests to that <iref item="server"/><xref target="terms" format="none">server</xref>.</t>
      <t>In order to discover and use the identified <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>, the <iref item="client"/><xref target="terms" format="none">client</xref>
attempts to make a request for a resource on the same <iref item="server"/><xref target="terms" format="none">server</xref> using the provided
<iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> as follows:</t>
      <ol spacing="normal" type="1"><li>The <iref item="client"/><xref target="terms" format="none">client</xref> makes a DNS query for HTTPS records for the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>,
following the procedures in <xref section="3" sectionFormat="of" target="SVCB"/>.  Clients make this query
as a "SVCB-reliant" <iref item="client"/><xref target="terms" format="none">client</xref>, treating missing or unobtainable HTTPS records as
a failure.  If this process fails to produce service parameters or IP
addresses, the process is aborted.</li>
        <li>The <iref item="client"/><xref target="terms" format="none">client</xref> establishes a connection using the service parameters and
addresses learned from the DNS query.  The <iref item="client"/><xref target="terms" format="none">client</xref> uses the <iref item="origin name"/><xref target="terms" format="none">origin name</xref> in any
TLS <iref item="server"/><xref target="terms" format="none">server</xref> name indication <xref target="SNI"/> of the <iref item="server"/><xref target="terms" format="none">server</xref> name from the URL,
not the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>.  This allows the <iref item="server"/><xref target="terms" format="none">server</xref> to produce a certificate
for the <iref item="origin name"/><xref target="terms" format="none">origin name</xref>, which the <iref item="client"/><xref target="terms" format="none">client</xref> can validate as applying to the URL it
is resolving.  If a connection cannot be established, the process is aborted.</li>
        <li>The <iref item="client"/><xref target="terms" format="none">client</xref> validates that the <iref item="server"/><xref target="terms" format="none">server</xref> is authoritative for the resource using
the <iref item="server"/><xref target="terms" format="none">server</xref> <iref item="origin name"/><xref target="terms" format="none">origin name</xref>.  If the <iref item="server"/><xref target="terms" format="none">server</xref> is not authoritative, the
process is aborted.</li>
        <li>The <iref item="client"/><xref target="terms" format="none">client</xref> makes a query for the resource.  If the <iref item="server"/><xref target="terms" format="none">server</xref> does not respond or
responds with a 421 (Misdirected Request) (see <xref section="15.5.20" sectionFormat="of" target="HTTP"/>),
the process is aborted.  A <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> re-attempt a request or request another
resource if the <iref item="server"/><xref target="terms" format="none">server</xref> responds with a 5xx status code (see <xref section="15.6" sectionFormat="of" target="HTTP"/>).</li>
        <li>Once a response is received, the connection to the alternative <iref item="service endpoint"/><xref target="terms" format="none">service
endpoint</xref> is complete.  Any other connections can be closed and future
requests directed to the new connection.  The <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>SHOULD</bcp14> remember the
<iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> and the <iref item="service name"/><xref target="terms" format="none">service name</xref> that were used; see <xref target="remember"/>.</li>
      </ol>
      <t>A <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> send multiple requests using the newly established connection to
the alternative service after it verifies that the <iref item="server"/><xref target="terms" format="none">server</xref> is authoritative.
However, a <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MUST NOT</bcp14> remember a <iref item="service name"/><xref target="terms" format="none">service name</xref> until at least one request has been
successfully completed with a 2xx or 3xx status code.  The alternative service
is therefore active once the connection is established, but it will not be
reused (<xref target="reuse"/>) for future connections until a request completes
successfully.</t>
      <t>A <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> continue sending other requests over any existing connection to the
<iref item="server"/><xref target="terms" format="none">server</xref> until this process completes in order to minimize latency for those
requests.  A <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> - when presented with an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> - proactively
make a request for an arbitrary resource on the <iref item="server"/><xref target="terms" format="none">server</xref>, rather than waiting for
the next time a request is needed.  This might allow the connection to be
available for future requests with less delay.</t>
      <section anchor="remember">
        <name>Retention of Alternatives</name>
        <t>Clients <bcp14>SHOULD</bcp14> remember the successful use of an alternative service in order to
support reuse (<xref target="reuse"/>).  Two pieces of information are retained:</t>
        <ul spacing="normal">
          <li>the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>, which is the name provided by the <iref item="server"/><xref target="terms" format="none">server</xref> in the <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref>
field or <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frame, and</li>
          <li>the <iref item="service name"/><xref target="terms" format="none">service name</xref>, which is the TargetName from the ServiceMode HTTPS record
that was used to successfully connect to the <iref item="server"/><xref target="terms" format="none">server</xref>.</li>
        </ul>
        <t>These two names are saved for the <iref item="server"/><xref target="terms" format="none">server</xref> against the <iref item="origin"/><xref target="terms" format="none">origin</xref> of the <iref item="server"/><xref target="terms" format="none">server</xref>
          <xref target="ORIGIN"/>.  Clients <bcp14>MUST NOT</bcp14> reuse saved information for a <iref item="server"/><xref target="terms" format="none">server</xref> with
a different hostname, port, or scheme.</t>
        <t>The <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>, as carried in an <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> field or <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frame, is
retained only so that the <iref item="client"/><xref target="terms" format="none">client</xref> can avoid repeated attempts to discover and
connect to alternative services.  A <iref item="server"/><xref target="terms" format="none">server</xref> can send <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> fields in multiple
responses or send multiple <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frames.  Repeating the discovery process
could be wasteful for a <iref item="client"/><xref target="terms" format="none">client</xref>.</t>
        <t>Any time that a <iref item="server"/><xref target="terms" format="none">server</xref> provides a different name in an <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> field or <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref>
frame, any existing information <bcp14>MUST</bcp14> be discarded.  A <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> then initiate a
DNS query and connection attempt using the new <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>.</t>
        <t>Though a <iref item="server"/><xref target="terms" format="none">server</xref> might repeat an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>, clients <bcp14>MUST NOT</bcp14> consider the
absence of an <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> field in a response as indicative of a retraction of a
previous advertisement.  An <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> is only removed when replaced with
a different <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> or when a remembered <iref item="service name"/><xref target="terms" format="none">service name</xref> does not appear
in the set of HTTPS query responses (see <xref target="reuse"/>).</t>
        <t>After a failed attempt to use an alternative service, a failure is remembered by
retaining the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> without a <iref item="service name"/><xref target="terms" format="none">service name</xref>.  This avoids making
repeated attempts to use an alternative service that is not available, even if
the <iref item="server"/><xref target="terms" format="none">server</xref> repeats the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>.  A <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> periodically attempt to
retry a failed alternative if the information is repeated.</t>
        <t>A <iref item="server"/><xref target="terms" format="none">server</xref> can explicitly request that a <iref item="client"/><xref target="terms" format="none">client</xref> remove any remembered <iref item="service name"/><xref target="terms" format="none">service name</xref>
by providing an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> of "invalid".  The "invalid" domain name
corresponds to a DNS name that will never successfully resolve (see <xref section="6.4" sectionFormat="of" target="SUDN"/>), which guarantees that an attempt to use this name
cannot succeed.  Clients <bcp14>MAY</bcp14> recognize the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> "invalid" as special
and avoid any attempt to use this to discover an alternative service.</t>
      </section>
      <section anchor="reuse">
        <name>Reusing Alternatives</name>
        <t>In subsequent connections to the same <iref item="origin"/><xref target="terms" format="none">origin</xref>, clients make a DNS query for
HTTPS records for the <iref item="origin name"/><xref target="terms" format="none">origin name</xref>.  If, after following any CNAME or
AliasMode records, this query returns a ServiceMode resource record
(RR) that includes a TargetName that is identical to the <iref item="service name"/><xref target="terms" format="none">service name</xref> that is
remembered for the request <iref item="origin"/><xref target="terms" format="none">origin</xref>, the <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>SHOULD</bcp14> choose that over any
alternatives.  This ignores any SvcPriority attributes that might cause other
records to be chosen and includes any RRs that are marked "alt-only"; see
<xref target="alt-only"/>.</t>
        <t>Note that when reusing an alternative service, a <iref item="client"/><xref target="terms" format="none">client</xref> does not make a query
for the remembered <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>.  HTTPS queries are made for the <iref item="origin name"/><xref target="terms" format="none">origin
name</xref>, which is the domain name from the target URI of the request; see also
<xref target="ip"/>.</t>
        <t>If a query for HTTPS records does not produce a ServiceMode record with a
TargetName that matches the remembered <iref item="service name"/><xref target="terms" format="none">service name</xref>, all remembered information
<bcp14>MUST</bcp14> be removed for that <iref item="origin"/><xref target="terms" format="none">origin</xref>.  The <iref item="client"/><xref target="terms" format="none">client</xref> then uses the normal SVCB-optional
resolution logic as defined in <xref target="SVCB"/>.</t>
        <t>When reusing stored information, if a connection attempt is unsuccessful (see
<xref target="use"/>), remembered information for that <iref item="origin"/><xref target="terms" format="none">origin</xref> <bcp14>MUST</bcp14> be removed.  Clients clear
retained alternative service information on reuse to prevent stale information
from affecting all future connection attempts.  After removing remembered
information, a <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> make another attempt to connect using any other
ServiceMode records that the DNS query produced.</t>
        <section anchor="example-of-reuse">
          <name>Example of Reuse</name>
          <t>A <iref item="client"/><xref target="terms" format="none">client</xref> that is fetching "https://example.com/" might originally perform a DNS
query for "example.com" and receive in response:</t>
          <sourcecode type="dns"><![CDATA[
example.com. 7200 IN HTTPS 1 . port=443
example.com. 7200 IN HTTPS 10 alt1.example. port=8443
example.com. 7200 IN HTTPS 10 alt2.example. port=8443
example.com. 7200 IN HTTPS 10 alt2.example. port=8443
]]></sourcecode>
          <t>Under normal conditions, the SvcPriority of the "alt?.example" RRs would indicate
that they are not preferred, so the "example.com" record would be used.</t>
          <t>If the <iref item="client"/><xref target="terms" format="none">client</xref> received an alternative service advertisement from this <iref item="server"/><xref target="terms" format="none">server</xref> for
"alt.example.net" it would then make a DNS query to that name.  This might
return a different set of records, as follows:</t>
          <sourcecode type="dns"><![CDATA[
alt.example.net. 7200 IN HTTPS 1 alt2.example. port=8887 alpn=h3
alt.example.net. 7200 IN HTTPS 1 alt3.example. port=8887 alpn=h3
]]></sourcecode>
          <t>If the <iref item="client"/><xref target="terms" format="none">client</xref> selects "alt2.example" and successfully connects to that host, it
remembers both the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> ("alt.example.net") and a <iref item="service name"/><xref target="terms" format="none">service name</xref>
("alt2.example").</t>
          <t>In subsequent connections to "example.com", the <iref item="client"/><xref target="terms" format="none">client</xref> again queries the
"example.com" name.  Importantly, this is the <iref item="origin name"/><xref target="terms" format="none">origin name</xref> and not any other name
it might have remembered.  The resulting response - after following indirections
through AliasMode, CNAME, or similar mechanisms - produces the same records as
previously (perhaps because these were retained in a cache):</t>
          <sourcecode type="dns"><![CDATA[
example.com. 7200 IN HTTPS 1 . port=443
example.com. 7200 IN HTTPS 10 alt1.example. port=8443
example.com. 7200 IN HTTPS 10 alt2.example. port=8443
example.com. 7200 IN HTTPS 10 alt2.example. port=8443
]]></sourcecode>
          <t>The ServiceMode HTTPS record for "alt2.example" is used, even though this is a
lower priority than other records.  It is also used despite not using the same
port number or protocol as the previous successful connection.</t>
        </section>
        <section anchor="alt-only">
          <name>Exclusive Alternative Services</name>
          <t>ServiceMode HTTPS records can be marked as only being available for use as an
alternative.  This allows servers to use alternative services for specific
<iref item="server"/><xref target="terms" format="none">server</xref> instances, without having clients connect to them without being first
invited to do so.</t>
          <t>This is achieved with a SvcParam with a key of "alt-only" (codepoint TBD).  The
value of this SvcParamKey <bcp14>MUST</bcp14> be empty.  HTTPS ServiceMode records with this
SvcParamKey <bcp14>MUST NOT</bcp14> be used unless the <iref item="client"/><xref target="terms" format="none">client</xref> is actively seeking an
alternative, either as a result of actively looking up an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> or
because the alternative has been remembered.</t>
          <t>To prevent clients that do not support this specification from using these
services, the "alt-only" SvcParamKey <bcp14>MUST</bcp14> be listed in the "mandatory" SvcParam.</t>
          <t>In the following example, though "alt1.example" is listed at a higher priority
than "example.com", clients will not use this service unless an alternative was
provided by the <iref item="server"/><xref target="terms" format="none">server</xref>:</t>
          <sourcecode type="dns"><![CDATA[
example.com. 7200 IN HTTPS 1 alt1.example. port=443 alt-only mandatory=alt-only
example.com.  7200 IN HTTPS 2 . port=443
]]></sourcecode>
        </section>
      </section>
      <section anchor="ip">
        <name>Servers Identified by IP</name>
        <t>An <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> can be provided by a <iref item="server"/><xref target="terms" format="none">server</xref> that is identified by an IP
address or host names that are not domain names.  However, HTTPS queries cannot
be made for servers that are not identified by a domain name.  This makes it
impossible to use such identifiers.  A <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> disable alternative
services for servers that are not identified by a domain name.</t>
      </section>
      <section anchor="port-numbers">
        <name>Port Numbers</name>
        <t>An <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> provided in an <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> field or <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frame can be any
valid DNS QNAME.  This includes those with underscored labels
<xref target="ATTRLEAF"/> and those that might be used to query for HTTPS records to
a non-default port.</t>
        <sourcecode type="http-message"><![CDATA[
200 OK HTTP/1.1
date: Mon, 24 Oct 2022 02:58:31 GMT
alt-svcb: "_8443._https.example.com"
content-length: 0

]]></sourcecode>
        <t>This might be used to direct clients to connect to alternative ports using
existing records.  Note that the HTTPS records might direct clients to an
entirely different port number than the name implies.  Clients <bcp14>MUST NOT</bcp14> infer a
port number from the provided name, treating this name no differently than any
other and using the port number derived from the service parameters.</t>
      </section>
      <section anchor="interaction-with-goaway">
        <name>Interaction with GOAWAY</name>
        <t>Servers that advertise alternative services cannot expect clients to switch to
the advertised alternative.  Use of any alternative is entirely at the
discretion of clients.  If the <iref item="client"/><xref target="terms" format="none">client</xref> is unsuccessful in connecting to an
alternative or does not attempt a connection, they could continue to use the
existing connection for new requests.</t>
        <t>A <iref item="server"/><xref target="terms" format="none">server</xref> that seeks to actively encourage clients to disconnect and seek service
elsewhere needs to use graceful shutdown procedures of the HTTP version that is
in use.  HTTP/2 <xref target="H2"/> and HTTP/3 <xref target="H3"/> each provide a GOAWAY frame that can be
used to initiate the graceful shutdown of a connection.  Alternative services is
not a substitute for these mechanisms.</t>
      </section>
      <section anchor="proxies">
        <name>Proxies</name>
        <t>The procedures in this document apply to clients that connect to gateways or
reverse proxies.  However, clients that connect via a proxy, using HTTP CONNECT
or similar methods, have a choice.</t>
        <t>Clients that provide a proxy with the <iref item="origin name"/><xref target="terms" format="none">origin name</xref> of a <iref item="server"/><xref target="terms" format="none">server</xref> leave name
resolution to the proxy.  Such a <iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MUST</bcp14> ignore any alternative service
advertisement it receives.  These clients <bcp14>MAY</bcp14> fallback to using legacy
alternative services; see <xref target="fallback"/>.</t>
        <t>Clients that make HTTPS queries for any connection attempt via a proxy can use
alternative services.  Such a <iref item="client"/><xref target="terms" format="none">client</xref> can provide the proxy with the IP address
of the <iref item="server"/><xref target="terms" format="none">server</xref> it wishes to contact, rather than providing a name.</t>
      </section>
      <section anchor="fallback">
        <name>Fallback to Alt-Svc</name>
        <t>A <iref item="client"/><xref target="terms" format="none">client</xref> that successfully makes use of HTTPS records in resolving an <iref item="origin name"/><xref target="terms" format="none">origin
name</xref> or <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> <bcp14>MUST</bcp14> ignore any Alt-Svc fields or ALTSVC frames
<xref target="ALT-SVC"/> that the <iref item="server"/><xref target="terms" format="none">server</xref> provides.  This document obsoletes the mechanisms
defined in RFC 7838 <xref target="ALT-SVC"/>.</t>
        <t>Servers might provide Alt-Svc fields or ALTSVC frames <xref target="ALT-SVC"/> in order to
support clients that cannot use HTTPS records.</t>
      </section>
      <section anchor="no-authority">
        <name>Authority For Service Endpoint Configuration</name>
        <t>This design does not assume that information provided by a <iref item="server"/><xref target="terms" format="none">server</xref> or by the DNS
is authoritative information about the configuration of <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>.  This
is despite the information in <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> fields or <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frames being provided
by a <iref item="server"/><xref target="terms" format="none">server</xref> that is authoritative.</t>
        <t>Instead, once a <iref item="server"/><xref target="terms" format="none">server</xref> is determined to be authorative (see <xref section="4.3" sectionFormat="of" target="HTTP"/>), that <iref item="server"/><xref target="terms" format="none">server</xref> is treated as the authority on all aspects of its own
configuration.  For example, with protocol selection, <xref target="ALPN"/> and
maybe <xref target="SNIP"/> extensions in the TLS handshake
<xref target="TLS"/> determine what protocol is used.</t>
        <t>For requests, a <iref item="server"/><xref target="terms" format="none">server</xref> that is determined to be authoritative for an <iref item="origin"/><xref target="terms" format="none">origin</xref> can
answer all requests on that <iref item="origin"/><xref target="terms" format="none">origin</xref>.  All <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref> that are
authoritative <bcp14>SHOULD</bcp14> provide equivalent service to any other, though they could
differ in terms of performance, diagnostic information, or other minor details.
Clients will expect <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref> to provide equivalent - or perhaps
identical - service.</t>
      </section>
    </section>
    <section anchor="protocol-elements">
      <name>Protocol Elements</name>
      <t>Multiple ways of advertising alternative services are defined.  The <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref>
field in <xref target="field"/> allows servers to indicate a preferred service in responses.
The <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frames in <xref target="frame"/> allows a <iref item="server"/><xref target="terms" format="none">server</xref> to provide <iref item="alternative name"/><xref target="terms" format="none">alternative names</xref>
outside of the context of a query.</t>
      <t>These approaches have different properties.  <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> fields are forwarded by
intermediaries and so might reach clients through a gateway or reverse proxy.
Clients that use a proxy without using CONNECT or similar tunnels, might also
receive an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> using a field.  In comparison, <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frames each
only apply to a single <iref item="origin"/><xref target="terms" format="none">origin</xref> within the scope of a single connection.</t>
      <section anchor="field">
        <name>Alt-SvcB Field</name>
        <t>The "<iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref>" response field is a List of String values (see Sections <xref target="STRUCTURED-FIELDS" section="3.1" sectionFormat="bare"/> and <xref target="STRUCTURED-FIELDS" section="3.3.3" sectionFormat="bare"/> of <xref target="STRUCTURED-FIELDS"/>).  This response field <bcp14>MAY</bcp14> appear in a
header or trailer section, though servers need to be aware that some clients
might not process field values.</t>
        <t>Each field value includes an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>.  Each <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> is encoded
as an ASCII string, or a series of DNS A-labels, each separated by a single
period character (".", U+2E).  Each value <bcp14>MAY</bcp14> end with a period, though - for
the purposes of the process in <xref target="use"/> - the string is treated as an absolute
DNS QNAME whether or not a trailing period is present.</t>
        <t>The applicable <iref item="origin"/><xref target="terms" format="none">origin</xref> is derived from the <iref item="origin"/><xref target="terms" format="none">origin</xref> of the target URI; see
<xref section="7.1" sectionFormat="of" target="HTTP"/> and <xref target="ORIGIN"/>.</t>
        <t>If multiple <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> fields or field values are present in a response, the
<iref item="client"/><xref target="terms" format="none">client</xref> <bcp14>MAY</bcp14> use any subset of the provided <iref item="alternative name"/><xref target="terms" format="none">alternative names</xref>, including none,
one, or all of the provided names.</t>
        <t>Servers <bcp14>SHOULD NOT</bcp14> provide more than one name.  The DNS provides ample
opportunity to present clients with multiple options, including the use of
priority to help manage selection.  A list is tolerated only to allow for the
possibility that multiple field lines might be added to responses without proper
coordination.</t>
        <t>Clients <bcp14>MUST</bcp14> ignore unknown parameters that are provided with <iref item="alternative name"/><xref target="terms" format="none">alternative names</xref>.
This document does not define any parameters as the DNS is expected to provide
supplementary information about services; a revision of this document would be
required to enable the use of parameters.</t>
      </section>
      <section anchor="frame">
        <name>ALTSVCB Frame</name>
        <t>An <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frame is defined for both HTTP/2 and HTTP/3.  The frame provides an
<iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> for an identified <iref item="origin"/><xref target="terms" format="none">origin</xref> <xref target="ORIGIN"/>.</t>
        <t>In both protocols, the <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frame uses the identifier TBD.  The format for
both protocols is the same; this is shown in <xref target="fig-frame"/> using the notation
from <xref section="3" sectionFormat="of" target="QUIC"/>.</t>
        <figure anchor="fig-frame">
          <name>ALTSVCB Frame Format</name>
          <artwork type="ascii-art"><![CDATA[
ALTSVCB Frame {
  Origin Length (i),
  Origin (..),
  Alternative Name (..),
}
]]></artwork>
        </figure>
        <t>The fields in the <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frame are defined as follows:</t>
        <dl>
          <dt>Origin Length:</dt>
          <dd>
            <t>An integer, encoded as a QUIC variable-length integer (see <xref section="16" sectionFormat="of" target="QUIC"/>) indicating the length of the Origin field, in bytes.</t>
          </dd>
          <dt>Origin:</dt>
          <dd>
            <t>The ASCII serialization of the affected <iref item="origin"/><xref target="terms" format="none">origin</xref>; see <xref section="6.2" sectionFormat="of" target="ORIGIN"/>.</t>
          </dd>
          <dt>Alternative Name:</dt>
          <dd>
            <t>The remainder of the frame contains a single <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>, encoded as an
ASCII string; see the definition in <xref target="field"/> for more details on the
encoding.</t>
          </dd>
        </dl>
        <t>If a <iref item="server"/><xref target="terms" format="none">server</xref> sends multiple <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frames for the same <iref item="origin"/><xref target="terms" format="none">origin</xref>, clients <bcp14>MUST</bcp14>
ignore any frames other than the most recent.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Alternative services present servers with a way of influencing how clients
select <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>.  This does not change how a <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> might be
determined to be authoritative (even more so than its predecessor; see
<xref target="authority7838"/>).</t>
      <section anchor="sec-endpoint">
        <name>Selecting Service Endpoints</name>
        <t>This design assumes a Dolev-Yao attacker as is typical for Internet protocols
<xref target="RFC3552"/>.  This model assumes that an attacker has complete control of the
network.</t>
        <t>This design only supports HTTPS.  Cleartext HTTP, such as might be used for URIs
with a scheme of "http", is not supported.  This means that TLS <xref target="TLS"/>
is always used to establish whether a <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> is authoritative,
according to <xref section="4.3.3" sectionFormat="of" target="HTTP"/>.  TLS protects the configuration of
<iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>, including the choice of protocol; see <xref target="no-authority"/>.
Furthermore, TLS prevents an attacker from inspecting or modifying the content
of connections.</t>
        <t>Even with TLS, a <iref item="client"/><xref target="terms" format="none">client</xref> connects to a <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> of the attacker's choice.
This is a property of HTTP that the use of alternative services does not change,
as the choice of <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> (including IP address and port number) is not
authenticated when establishing a connection.</t>
        <t>Certificates used to establish authority for HTTP servers do not include a port
number, which means that all HTTP services that have a certificate for the same
name will be treated by clients as being potentially authoritative.  <xref section="4.3.3" sectionFormat="of" target="HTTP"/> mandates checks on the target URI to mitigate this attack.
Servers can use a 421 (Misdirected Request) status code (see <xref section="15.5.20" sectionFormat="of" target="HTTP"/>) to signal any error and avoid the <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> being used.</t>
        <t>DNS is not assumed to be secure in this threat model.  The use of DNSSEC
<xref target="DNSSEC"/> can ensure that clients do not receive incorrect information
from DNS queries.  However, DNSSEC does not defend against attacks on routing or
forwarding infrastructure that might result in connections being directed toward
a <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> chosen by an attacker.  Using DNSSEC therefore does not
change this analysis, though it can make attacks less feasible for some classes
of attacker and so use is encouraged.</t>
      </section>
      <section anchor="attacks-from-within-servers">
        <name>Attacks From Within Servers</name>
        <t>In addition to network-based attackers, we also consider the possibility that an
alternative service is advertised by an adversary who is able to generate HTTP
responses.  An adversary might be given the ability to generate responses for a
subset of the resources on a <iref item="server"/><xref target="terms" format="none">server</xref>, where they might provide an <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> field
in a response.</t>
        <t>This gives such an adversary some ability to direct clients toward a <iref item="service endpoint"/><xref target="terms" format="none">service
endpoint</xref> of their choosing; see <xref target="sec-endpoint"/>.  It also potentially allows an
adversary to create an unending sequence of alternatives; see <xref target="sec-loop"/>.</t>
        <t>Servers can mitigate these risks by restricting access to the ability of
advertising an <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>.</t>
      </section>
      <section anchor="tracking-clients">
        <name>Tracking Clients</name>
        <t>Remembering <iref item="alternative name"/><xref target="terms" format="none">alternative names</xref> and service names might allow a <iref item="server"/><xref target="terms" format="none">server</xref> to connect
activity at different times to the same <iref item="client"/><xref target="terms" format="none">client</xref>.  Clients might be assigned a
unique <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref> and <iref item="service name"/><xref target="terms" format="none">service name</xref> in order to make return connections
identifiable.  The need for the <iref item="service name"/><xref target="terms" format="none">service name</xref> to appears the set of HTTPS records
at the <iref item="origin name"/><xref target="terms" format="none">origin name</xref> does limit the ability of servers to track individual clients
at scale, but this still might be used to separate clients into groups for
tracking purposes or to track specific individuals.</t>
        <t>Clients that clear <iref item="origin"/><xref target="terms" format="none">origin</xref>-specific state in order to manage the risk of tracking
<bcp14>MUST</bcp14> remove any remembered alternative service information when clearing state
for a <iref item="server"/><xref target="terms" format="none">server</xref> (typically, this is associated with clearing cookies <xref target="RFC6265"/>).</t>
      </section>
      <section anchor="sec-loop">
        <name>Multiple Alternatives in Sequence</name>
        <t>A <iref item="client"/><xref target="terms" format="none">client</xref> might receive multiple different <iref item="alternative name"/><xref target="terms" format="none">alternative names</xref> in sequence, causing
it to spend additional resources in discovering and connecting to different
<iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref>.  Repeatedly making connections can adversely affect
performance.</t>
        <t>This might be caused by a loop where the <iref item="alternative name"/><xref target="terms" format="none">alternative name</xref>
provided by each <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> points to the other or simply an unending
sequence of new <iref item="alternative name"/><xref target="terms" format="none">alternative names</xref>.  This can arise if <iref item="service endpoint"/><xref target="terms" format="none">service endpoints</xref> are
poorly configured.</t>
        <t>A <iref item="client"/><xref target="terms" format="none">client</xref> can limit the effect of such misconfiguration by ignoring <iref item="alternative name"/><xref target="terms" format="none">alternative
names</xref> that change too frequently.  A <iref item="client"/><xref target="terms" format="none">client</xref> might then continue to use the
<iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref> to which it is connected or disable alternative services
entirely for that <iref item="origin"/><xref target="terms" format="none">origin</xref>.</t>
      </section>
    </section>
    <section anchor="i18n">
      <name>Internationalization Considerations</name>
      <t>An internationalized domain name that appears in either an <iref item="Alt-SvcB"/><xref target="field" format="none">Alt-SvcB</xref> field
(<xref target="field"/>) or an <iref item="ALTSVCB"/><xref target="frame" format="none">ALTSVCB</xref> frame (<xref target="frame"/>) <bcp14>MUST</bcp14> be expressed using A-labels;
see <xref section="2.3.2.1" sectionFormat="of" target="RFC5890"/>.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>TODO register:</t>
      <ul spacing="normal">
        <li>Field</li>
        <li>H2 Frame</li>
        <li>H3 Frame</li>
        <li>alt-only SvcParam</li>
      </ul>
    </section>
  </middle>
  <back>
    <displayreference target="H2" to="HTTP/2"/>
    <displayreference target="H3" to="HTTP/3"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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="ORIGIN">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth">
              <organization/>
            </author>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents.  Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites.  In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string.  It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="SVCB">
          <front>
            <title>Service binding and parameter specification via the DNS (DNS SVCB and HTTPS RRs)</title>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Google</organization>
            </author>
            <author fullname="Mike Bishop" initials="M." surname="Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Erik Nygren" initials="E." surname="Nygren">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="11" month="March" year="2023"/>
            <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 are extensible to support future uses
   (such as 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-12"/>
        </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="SNI">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2".  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="ALPN">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <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="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version.  It describes the document collection and provides definitions and other material that are common to the set.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="H2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield">
              <organization/>
            </author>
            <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="H3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop">
              <organization/>
            </author>
            <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="ALT-SVC">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P. McManus" initials="P." surname="McManus">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." surname="Reschke">
              <organization/>
            </author>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7838"/>
          <seriesInfo name="DOI" value="10.17487/RFC7838"/>
        </reference>
        <reference anchor="SUDN">
          <front>
            <title>Special-Use Domain Names</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire">
              <organization/>
            </author>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal">
              <organization/>
            </author>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes what it means to say that a Domain Name (DNS name) is reserved for special use, when reserving such a name is appropriate, and the procedure for doing so.  It establishes an IANA registry for such domain names, and seeds it with entries for some of the already established special domain names.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6761"/>
          <seriesInfo name="DOI" value="10.17487/RFC6761"/>
        </reference>
        <reference anchor="ATTRLEAF">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker">
              <organization/>
            </author>
            <date month="March" year="2019"/>
            <abstract>
              <t>Formally, any DNS Resource Record (RR) may occur under any domain name.  However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies.  The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name").  The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch.  This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
        <reference anchor="SNIP">
          <front>
            <title>Secure Negotiation of Incompatible Protocols in TLS</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="30" month="June" year="2022"/>
            <abstract>
              <t>   An extension is defined for TLS that allows a client and server to
   detect an attempt to force the use of less-preferred application
   protocol even where protocol options are incompatible.  This
   supplements application-layer protocol negotiation (ALPN), which
   allows choices between compatible protocols to be authenticated.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-snip-02"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="B. Korver" initials="B." surname="Korver">
              <organization/>
            </author>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak.  This document provides guidelines to RFC authors on how to write a good Security Considerations section.   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="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="DNSSEC">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends">
              <organization/>
            </author>
            <author fullname="R. Austein" initials="R." surname="Austein">
              <organization/>
            </author>
            <author fullname="M. Larson" initials="M." surname="Larson">
              <organization/>
            </author>
            <author fullname="D. Massey" initials="D." surname="Massey">
              <organization/>
            </author>
            <author fullname="S. Rose" initials="S." surname="Rose">
              <organization/>
            </author>
            <date month="March" year="2005"/>
            <abstract>
              <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System.  This document introduces these extensions and describes their capabilities and limitations.  This document also discusses the services that the DNS security extensions do and do not provide.  Last, this document describes the interrelationships between the documents that collectively describe DNSSEC.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth">
              <organization/>
            </author>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
      </references>
    </references>
    <section anchor="authority7838">
      <name>Authoritative Information in RFC 7838</name>
      <t>This design differs from RFC 7838, where alternative services advertisements
were treated as authoritative information.  Clients therefore might have been
less concerned about attacks that compromise the integrity of alternative
services when using RFC 7838.</t>
      <t>Though integrity protection might appear to be valuable, it results in
conflicts.  For instance, information about the protocol is ostensibly authentic
when provided in Alt-Svc fields or ALTSVC frames.  However, protocol support is
also authenticated when establishing a connection.  This creates a potential
conflict between two sources of the same information.</t>
      <t>Conflicts also arise when alternative service information is retained as any
retained state might disagree with what is currently deployed.  This design
avoids this contention by delegating the service resolution process
almost entirely to the DNS.</t>
      <t>This design provides clients with a prompt to discover a new <iref item="service endpoint"/><xref target="terms" format="none">service endpoint</xref>.
On subsequent connections, remembered state only affects prioritization of
active DNS records.  Service endpoints are always authoritative for their own
configuration.  Invalid configurations therefore do not persist.</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>RFC 7838 <xref target="ALT-SVC"/> was authored by Patrick McManus, Julian Reschke, and Mark
Nottingham.  This draft contains none of that work, but many of those same basic
ideas.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work is input to discussions with a design team on HTTP alternative
services, formed after realizing that a simple revision to RFC 7838 would not
fix known problems.  Thanks are due to Ryan Hamilton, Tommy Pauly, and Matthew
Stock for their contributions to these discussions.  David Schinazi also
provided valuable input.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
DzYcm30AAA==

-->

</rfc>
