<?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.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-httpbis-alt-svcb-00" category="std" consensus="true" submissionType="IETF" obsoletes="7838" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="Alt-SvcB">HTTP Alternative Services, Plan B</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-httpbis-alt-svcb-00"/>
    <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="2022" month="October" day="24"/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <keyword>next generation</keyword>
    <keyword>alternative alternative</keyword>
    <keyword>stickiness</keyword>
    <abstract>
      <t>HTTP alternative services</t>
      <t>This document deprecates 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 alternative services provide an HTTP server with a means to direct requests
from clients to an alternative server instance.  Clients that learn about an
alternative service can establish a connection to the identified instance, which
- if successfully established and authenticated - can be used for future
requests.  This design allows for nearly seamless service continuity in some
conditions.</t>
      <t>The use cases that might motivate a server to direct future requests to a
different server instance vary.</t>
      <ul spacing="normal">
        <li>Some deployments might seek to direct a client to a server instance that is
better able to serve requests for that client.  This might occur if DNS
resolution of the server name produces the address of a server instance that
is further from the client.</li>
        <li>Servers that might seek to shed load, perhaps in anticipation of an imminent
shutdown or maintenance action, might use an alternative service declaration
to reduce either server 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>These different use cases can sometimes create awkward trade-offs for
deployments of alternative services.</t>
      <section anchor="caching-in-alternative-services">
        <name>Caching in Alternative Services</name>
        <t>With RFC 7838 <xref target="ALT-SVC"/>, setting the "ma" (or max-age) parameter for
an alternative can be challenging for a server deployment.  Setting too a large
max-age can mean that clients use an alternative for longer than they should.
Conversely, a short cache period for an advertisement for HTTP/3 can mean that
earlier versions might be used more often than is optimal.</t>
        <t>Alternative services can interact poorly with service configuration information
that is published in the DNS.  With the introduction of HTTPS records
<xref target="SVCB"/>, the availability of HTTP/3 can be
advertised in the DNS, creating two independent sources of this information,
with different approaches to caching.</t>
        <t>Alternative services can also be highly 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 alternative services mechanisms defined in RFC 7838 can produce suboptimal
or even detrimental outcomes in some deployments.  Consequently, 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 server advertises an alternative name using the
"<xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/>" 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 alternative name 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 server 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="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="use">
      <name>Using Alternative Services</name>
      <t>When a client learns about a new potential alternative from a server, they
<bcp14>SHOULD</bcp14> attempt to use that alternative for future requests to that server.  The
client attempts to make a request for a resource on the same server using the
alternative as follows:</t>
      <ol spacing="normal" type="1"><li>The client makes a DNS query for HTTPS records for the alternative name,
following the procedures in <xref section="3" sectionFormat="of" target="SVCB"/>.  Clients make this query
as a "SVCB-reliant" SVCB client, treating a failure to obtain HTTPS records
as a failed alternative.  If this process fails to produce service parameters
or IP addresses, abort this process. [[ISSUE: Maybe we can still be
SVCB-optional here, but that places constraints on the choice of name.]]</li>
        <li>The client establishes a connection using the service parameters and
addresses learned from the DNS query.  Important here is that the client uses
a TLS server name indication <xref target="SNI"/> of the server name from the
URL, not the alternative name.  This allows the server to produce a
certificate for that name, which the client can validate as applying to the
URL it is resolving.  If a connection cannot be established, abort this process.</li>
        <li>The client validates that the server is authoritative for the resource.  If
the server is not authoritative, abort this process.</li>
        <li>The client makes a query for the resource.  If the server does not respond,
responds with a 421 (Misdirected Request) (see <xref section="15.5.20" sectionFormat="of" target="HTTP"/>),
or a 5xx status code (see <xref section="15.6" sectionFormat="of" target="HTTP"/>), abort this process.</li>
        <li>Once a response is received, the connection to the alternative is complete.
Any other connections can be closed and future requests directed to the
alternative.  The client <bcp14>SHOULD</bcp14> remember the alternative name and the service
name (the TargetName from the HTTPS ServiceMode record that was used) that
were used; see <xref target="remember"/>.</li>
      </ol>
      <t>A client <bcp14>MUST NOT</bcp14> remember a service name for an alternative service until a
request has been successfully completed with a 2xx or 3xx status code.  A client
<bcp14>MAY</bcp14> send additional requests using the newly established connection to the
alternative service after it verifies that the server is authoritative.  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 client <bcp14>MAY</bcp14> continue sending other requests over any existing connection to the
server until this process completes in order to minimize latency for those
requests.  A client <bcp14>MAY</bcp14> - when presented with an alternative name - proactively
make a request for an arbitrary resource on the server, 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.  Two
pieces of information are retained:</t>
        <ul spacing="normal">
          <li>the alternative name, which is the name provided by the server in the <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/>
field or <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frame, and</li>
          <li>the service name, which is the TargetName from the ServiceMode HTTPS record
that was used to successfully connect to the server.</li>
        </ul>
        <t>These two names are saved for the server against the origin of the server
<xref target="ORIGIN"/>.  Clients <bcp14>MUST NOT</bcp14> reuse saved information for a server with
a different hostname, port, or scheme.</t>
        <t>The name given in an <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> field or <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frame is retained only so that
the client can avoid initiating a connection to an alternative if it has already
made an attempt.  Any time that a server provides a different name in an
<xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> field or <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frame, any existing information <bcp14>MUST</bcp14> be discarded.  A
client <bcp14>MAY</bcp14> then initiate a DNS query and connection attempt to the identified
alternative.  A client can subsequently ignore repeated fields or frames.</t>
        <t>A server might provide an <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> field in all responses it sends.  Only acting
on a value once ensures that this repetition has no effect on clients.  Though a
server might repeat the field, clients <bcp14>MUST NOT</bcp14> consider an absent field as
indicative of a retraction of a previous advertisement.  An alternative name is
only removed when explicitly replaced or when a remembered service name does not
appear in the set of HTTPS query responses.</t>
        <t>On the first attempt to use an alternative, a failed alternative <bcp14>SHOULD</bcp14> be
remembered using an alternative name and a null or absent service name.  This
avoids making repeated attempts to use an alternative service that is not
available if the server repeats the information in <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> fields or <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/>
frames.  A client <bcp14>MAY</bcp14> periodically attempt to retry a failed alternative if the
information is repeated.</t>
        <t>A server can explicitly request that a client remove any remembered service name
by providing an alternative name 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 name "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>A client remembers the service name, or the TargetName from the ServiceMode
HTTPS record that it successfully used to establish a connection to an
alternative service.  In subsequent connections to the same server, it makes
HTTP queries for the server name.  If this query returns a ServiceMode resource
record (RR) that includes a TargetName that is identical to the remembered
service name, the client <bcp14>SHOULD</bcp14> choose that over any alternatives, including
those RRs that are marked "alt-only"; see <xref target="alt-only"/>.</t>
        <t>A client does not make a query for the remembered alternative name.  They make a
query for the name of the server, using the QNAME derived from the URI of the
target resource.</t>
        <t>The RR that matches the remembered service name is selected, overriding any
SvcPriority that might otherwise result in another ServiceMode record being
chosen.</t>
        <t>If a query for HTTPS records does not produce a ServiceMode record with a
matching TargetName, any remembered information <bcp14>MUST</bcp14> be removed for that origin.</t>
        <t>When reusing stored information, if a connection is unsuccessful for any reason
(see <xref target="use"/>), remembered information for that origin <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 client <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 client 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
alt1.example. 7200 IN HTTPS 10 . port=8443
alt2.example. 7200 IN HTTPS 10 . port=8443
alt3.example. 7200 IN HTTPS 10 . port=8443
]]></sourcecode>
          <t>Under normal conditions, the SvcPriority of the "alt?.example." RRs would indicate
that it is not preferred, so the "example.com" record would be used.</t>
          <t>If the client received an alternative service advertisement from this server 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[
alt2.example. 7200 IN HTTPS 1 . port=8887
alt3.example. 7200 IN HTTPS 1 . port=8887
]]></sourcecode>
          <t>If the client selects "alt2.example." and successfully connects to that host, it
remembers both the name given as an alternative name ("alt.example.net") and a
service name (the TargetName from the ServiceMode HTTPS record,
"alt2.example.").</t>
          <t>In subsequent connections to "example.com", the client again queries the
"example.com" name.  Importantly, this is not any other name it might have
learned.  The resulting response - after following indirections through
AliasMode, CNAME, or similar mechanisms - produces the same records as previously:</t>
          <sourcecode type="dns"><![CDATA[
example.com.  7200 IN HTTPS 1 . port=443
alt1.example. 7200 IN HTTPS 10 . port=8443
alt2.example. 7200 IN HTTPS 10 . port=8443
alt3.example. 7200 IN HTTPS 10 . 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 as previously.</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
server 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 client is actively seeking an
alternative, either as a result of actively looking up an alternative name 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 server:</t>
          <sourcecode type="dns"><![CDATA[
alt1.example. 7200 IN HTTPS 1 . port=443,alt-only,mandatory=alt-only
example.com.  7200 IN HTTPS 2 . port=443
]]></sourcecode>
          <t>[[ISSUE: Do we need this flag in addition to the priority override?  Could one
    of the two be sufficient?]]</t>
        </section>
      </section>
      <section anchor="port-numbers">
        <name>Port Numbers</name>
        <t>The name that is provided in the <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> field or <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frame can be any
valid DNS QNAME.  This includes those with underscored labels
<xref target="ATTRLEAF"/>, including 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.  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,
instead treating this name no differently than any other.</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 the alternative is entirely at the
discretion of clients.  If the client 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 server 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 name of a service leave name resolution to
the proxy.  Such a client <bcp14>MUST</bcp14> ignore any alternative service advertisement it
receives and <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 client <bcp14>MUST</bcp14> provide the proxy with the IP address
of the server it wishes to contact, rather than providing a name.</t>
      </section>
      <section anchor="fallback">
        <name>Fallback to Alt-Svc</name>
        <t>A client that successfully makes use of HTTPS records in resolving the name of
an HTTP server <bcp14>MUST</bcp14> ignore any Alt-Svc fields or ALTSVC frames <xref target="ALT-SVC"/> that
the server provides.  This document deprecates 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>No Authority</name>
        <t>This design does not assume that information that a client learns about
alternatives is authoritative in any way, either by virtue of being provided by
an authoritative server.  Instead, once a server is determined to be authorative
(see <xref section="4.3" sectionFormat="of" target="HTTP"/>), that server is treated as the authority on all
aspects of service configuration.  For protocol choice, <xref target="ALPN"/> and
maybe <xref target="SNIP"/> extensions in the TLS handshake
<xref target="TLS"/> determine what is used.</t>
        <t>In contrast RFC 7838, sending alternative services over an HTTP connection
ensures that the information is authoritative.  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 produced 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 equally authoritative 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 having the entire service resolution process occur
almost entirely to the DNS.</t>
        <t>An alternative service advertisement provides only a minimal nudge to perform a
DNS query at the time it is made.  On reconnection, remembered state only
affects prioritization of active DNS records.  Invalid configurations do not
persist.</t>
      </section>
    </section>
    <section anchor="protocol-elements">
      <name>Protocol Elements</name>
      <t>Multiple ways of encoding an alternative service name is defined.  The <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/>
field in <xref target="field"/> allows servers to indicate a preferred service in responses.
The <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frames in <xref target="frame"/> allows a server to provide alternative names
outside of the context of a query.</t>
      <t>These approaches have different properties.  <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> 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 alternative name using a field.  In comparison, <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frames each
only apply to a single origin within the scope of a single connection.</t>
      <section anchor="field">
        <name>Alt-SvcB Field</name>
        <t>The "<xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/>" 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 alternative name.  Each alternative name 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 origin <xref target="ORIGIN"/> is derived from the origin of the Target
Resource (see <xref section="7.1" sectionFormat="of" target="HTTP"/>).</t>
        <t>If multiple <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> fields or field values are present in a response, the
client <bcp14>MAY</bcp14> use any subset of the provided alternative names, 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 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 alternative names.
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 <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frame is defined for both HTTP/2 and HTTP/3.  The frame provides an
alternative name for an identified origin <xref target="ORIGIN"/>.</t>
        <t>In both protocols, the <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> 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 <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> 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 origin; 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 alternative name, encoded as an
ASCII string; see the definition in <xref target="field"/> for more details on the
encoding.</t>
          </dd>
        </dl>
        <t>If a server sends multiple <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> frames for the same origin, clients <bcp14>MUST</bcp14>
ignore any frames other than the most recent.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>TODO Lots of work to do here.  Review RFC 7838 for relevant information to copy over.</t>
    </section>
    <section anchor="i18n">
      <name>Internationalization Considerations</name>
      <t>An internationalized domain name that appears in either an <xref target="field" format="none">Alt-SvcB</xref><iref item="Alt-SvcB"/> field
(<xref target="field"/>) or an <xref target="frame" format="none">ALTSVCB</xref><iref item="ALTSVCB"/> 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="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="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="October" year="2022"/>
            <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-11"/>
        </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="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>
      </references>
    </references>
    <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.  Though it
is informed by discussions thus far, it is NOT the product of that group.
Thanks are due to those who have participated in those discussions, who the
author is to cowardly to list due to the risk that someone is missed.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9Vc23bbyJV9r69A2C/2DEnr5ksr09Ot9qVbiS05kjxZWUnW
LBAokjUCAQ4KEKV4Od+Sb8mXzdnnVBUKIOTueZiHeem2QKAup85ln1vNZjPV
mKbQp8nk55ubj8lZ0ei6TBtzp5NrXd+ZTNtp8rFIy+THiUoXi1rf0bv02uz6
LqNHWdroVVU/nCa2yVW1sFWhG21Pk5evjl8plVdZmW5o+LxOl82sWVcbW5Wz
ddNsF8bOUhrH3mWL2cGBsu1iY6w1Vdk8bOmL87c371TZbha6PlU5TXOqsqq0
urQtDd/UrVa0lGOV1jrFkrbbwtBq6HubpGWeXOm0mN2YjZ6oXVXfruqq3bpt
TtStfqCH+alKZkmp75tkpUtd89d4lEZkiP6Nn2xjsltTamvVnS5bWlWS9MdO
EtnA5I80rSlXyU/4Gc83qSnoudHNkkkw261+2B3Pq3qFX9M6W9Ov+MGePntW
GNvYufz87Ix+owXYZx/bBW3zWTzEM3y8Ms26XdDnm7RuTOkI/cwTGK8UREPb
RDP0Xp3LCHNThY+eff3Q5utmU0yUSlt6owYpaZIkWbZFIWf+gcdPbuR7/pH2
kpbmb0xoeqH6mymKlH/RQpxN80NR7XTZ1NX2YV7qZmRYc6uTH41dV1s/5mly
dpvSAMmNztZlVVQro21v2AW//4O+0//d6mXVzhd6f+T3bZba5GNa58Rc+8t9
XVRtviyI4eKhC3y05W/mRyfzlz+s8HyeVZv9CW6qzeYh+Z0GG4/Rw2R1Zatl
E4/fVP9F7/+w8b/xyKqs6g3zJPgPfHeaXL17/e3h4QH9fXl1/tP5BT95cfL8
RClTLnvvH53yDN/5j475z9zYbZE+OEZ+dgSm+fl48OrJ2KvHxAZqNiPBWdim
TrNGKVYnsRxZp06Uulkbm5BmaDd0zkmut7WGGrGYgfXGXAbbmDwvtFLfJOfg
h7zNWD4fHzrZ1tWdyUlmS6YJ/6DrZEesnaTJRqekG5qKVk8zNkkNXiAhU8u6
2iRZYWg5/Dt9PhyeRjGlbdIy0/OEOMG9u06bpNBpTR8sqrahL9XIwpKMRqSZ
UpJdi5WQIis17wbTNWud0KrLxiyNzsM802S3NtlazRKzTGyb0QYtWOmhG4re
hqqDBOJzUDEnHYXpFjppLf1FB08M2LTEtH6/tAE5Am3NClslibP8YklbofGt
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
xDA87c/Y285zwxlyEYHl8O//AJbllno1XQAA

-->

</rfc>
