<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.12 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-dnsop-svcb-httpssvc-03" category="std">

  <front>
    <title abbrev="SVCB and HTTPSSVC RRs for DNS">Service binding and parameter specification via the DNS (DNS SVCB and HTTPSSVC)</title>

    <author initials="B." surname="Schwartz" fullname="Ben Schwartz">
      <organization>Google</organization>
      <address>
        <email>bemasc@google.com</email>
      </address>
    </author>
    <author initials="M." surname="Bishop" fullname="Mike Bishop">
      <organization>Akamai Technologies</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <author initials="E." surname="Nygren" fullname="Erik Nygren">
      <organization>Akamai Technologies</organization>
      <address>
        <email>erik+ietf@nygren.org</email>
      </address>
    </author>

    <date />

    <area>General</area>
    <workgroup>DNSOP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document specifies the “SVCB” and “HTTPSSVC” DNS resource record types to
facilitate the lookup of information needed to make connections for
origin resources, such as for HTTPS URLs.  SVCB records
allow an origin to be served from multiple network
locations, 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 HTTPSSVC DNS RR is a variation of SVCB for HTTPS and HTTP origins.
By providing more information to the client before it attempts to
establish a connection, these records offer potential benefits to
both performance and privacy.</t>

<t>TO BE REMOVED: This proposal is inspired by and based on recent DNS
usage proposals such as ALTSVC, ANAME, and ESNIKEYS (as well as long
standing desires to have SRV or a functional equivalent implemented
for HTTP).  These proposals each provide an important function but are
potentially incompatible with each other, such as when an origin is
load-balanced across multiple hosting providers (multi-CDN).
Furthermore, these each add potential cases for adding additional
record lookups in addition to AAAA/A lookups. This design attempts to
provide a unified framework that encompasses the key functionality of
these proposals, as well as providing some extensibility for
addressing similar future challenges.</t>

<t>TO BE REMOVED: The specific name for this RR type is an open
topic for discussion.  “SVCB” and “HTTPSSVC” are meant as placeholders
as they are easy to replace.  Other names might include “B”,
“SRV2”, “SVCHTTPS”, “HTTPS”, and “ALTSVC”.</t>

<t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/MikeBishop/dns-alt-svc">https://github.com/MikeBishop/dns-alt-svc</eref>.
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>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The SVCB and HTTPSSVC RRs provide clients with complete instructions
for access to an origin.  This information enables improved
performance and privacy by avoiding transient connections to a sub-optimal
default server, negotiating a preferred protocol, and providing relevant
public keys.</t>

<t>For example, when clients need to make a connection to fetch resources
associated with an HTTPS URI, they currently resolve only A and/or AAAA
records for the origin hostname.  This is adequate for services that use
basic HTTPS (fixed port, no QUIC, no <xref target="ECH"/>).
Going beyond basic HTTPS confers privacy, performance, and operational
advantages, but it requires the client to learn additional
information, and it is highly
desirable to minimize the number of round-trips and lookups required to
learn this additional information.</t>

<t>The SVCB and HTTPSSVC RRs also help when the operator of an origin
wishes to delegate operational control to one or more other domains, e.g.
delegating the origin resource “https://example.com” to a service
operator endpoint at “svc.example.net”.  While this case can sometimes
be handled by a CNAME, that does not cover all use-cases.  CNAME is also
inadequate when the service operator needs to provide a bound
collection of consistent configuration parameters through the DNS
(such as network location, protocol, and keying information).</t>

<t>This document first describes the SVCB RR as a general-purpose resource
record that can be applied directly and efficiently to a wide range
of services (<xref target="svcb"/>).  The HTTPSSVC RR is then defined as a special
case of SVCB that improves efficiency and convenience for use with HTTPS
(<xref target="https"/>) by avoiding the need for an <xref target="Attrleaf"/> label
(<xref target="httpsnames"/>).  Other protocols with similar needs may
follow the pattern of HTTPSSVC and assign their own
SVCB-compatible RR types.</t>

<t>All behaviors described as applying to the SVCB RR also apply
to the HTTPSSVC RR unless explicitly stated otherwise.
<xref target="https"/> describes additional behaviors
specific to the HTTPSSVC record.  Apart from <xref target="https"/>
and introductory examples, much of this document refers only to the SVCB RR,
but those references should be taken to apply to SVCB, HTTPSSVC,
and any future SVCB-compatible RR types.</t>

<t>The SVCB RR has two forms: 1) the “Alias Form” simply delegates operational
control for a resource; 2) the “Service Form” binds together
configuration information for a service endpoint.
The Service Form provides additional key=value parameters
within each RDATA set.</t>

<t>TO BE REMOVED: If we use this for providing configuration for DNS
authorities, it is likely we’d specify a distinct “NS2” RR type that is
an instantiation of SVCB for authoritative nameserver delegation and
parameter specification, similar to HTTPSSVC.</t>

<t>TO BE REMOVED: Another open question is whether SVCB records
should be self-descriptive and include the service name
(eg, “https”) in the RDATA section to avoid ambiguity.
Perhaps this could be included as an svc=”baz” parameter
for protocols that are not the default for the RR type?
Current inclination is to not do so.</t>

<section anchor="goals-of-the-svcb-rr" title="Goals of the SVCB RR">

<t>The goal of the SVCB RR is to allow clients to resolve a single
additional DNS RR in a way that:</t>

<t><list style="symbols">
  <t>Provides service endpoints authoritative for the service,
along with parameters associated with each of these endpoints.</t>
  <t>Does not assume that all alternative service endpoints have the same parameters
or capabilities, or are even
operated by the same entity.  This is important as DNS does not
provide any way to tie together multiple RRs for the same name.
For example, if www.example.com is a CNAME alias that switches
between one of three CDNs or hosting environments, successive queries
for that name may return records that correspond to different environments.</t>
  <t>Enables CNAME-like functionality at a zone apex (such as
“example.com”) for participating protocols, and generally
enables delegation of operational authority for an origin within the
DNS to an alternate name.</t>
</list></t>

<t>Additional goals specific to HTTPSSVC and the HTTPS use-case include:</t>

<t><list style="symbols">
  <t>Connect directly to <xref target="HTTP3"/> (QUIC transport)
alternative service endpoints</t>
  <t>Obtain the <xref target="ECH"/> keys associated with an alternative service endpoint</t>
  <t>Support non-default TCP and UDP ports</t>
  <t>Address a set of long-standing issues due to HTTP(S) clients not
implementing support for SRV records, as well as due to a limitation
that a DNS name can not have both CNAME and NS RRs
(as is the case for zone apex names)</t>
  <t>Provide an HSTS-like indication signaling
for the duration of the DNS RR TTL that the HTTPS scheme should
be used instead of HTTP (see <xref target="hsts"/>).</t>
</list></t>

</section>
<section anchor="overview-of-the-svcb-rr" title="Overview of the SVCB RR">

<t>This subsection briefly describes the SVCB RR in
a non-normative manner.  (As mentioned above, this all
applies equally to the HTTPSSVC RR which shares
the same encoding, format, and high-level semantics.)</t>

<t>The SVCB RR has two forms: AliasForm, which aliases a name to another name,
and ServiceForm, which provides connection information bound to a service
endpoint domain.  Placing both forms in a single RR type allows clients to
fetch the relevant information with a single query.</t>

<t>The SVCB RR has two mandatory fields and one optional.  The fields are:</t>

<t><list style="numbers">
  <t>SvcFieldPriority: The priority of this record (relative to others,
with lower values preferred).  A value of 0 indicates AliasForm.
(Described in <xref target="pri"/>.)</t>
  <t>SvcDomainName: The domain name of either the alias target (for
AliasForm) or the alternative service endpoint (for ServiceForm).</t>
  <t>SvcFieldValue (optional): A list of key=value pairs
describing the alternative service endpoint for the domain name specified in
SvcDomainName (only used in ServiceForm and otherwise ignored).
Described in <xref target="svcfieldvalue"/>.</t>
</list></t>

<t>Cooperating DNS recursive resolvers will perform subsequent record
resolution (for SVCB, A, and AAAA records) and return them in the
Additional Section of the response.  Clients must either use responses
included in the additional section returned by the recursive resolver
or perform necessary SVCB, A, and AAAA record resolutions.  DNS
authoritative servers may attach in-bailiwick SVCB, A, AAAA, and CNAME
records in the Additional Section to responses for an SVCB query.</t>

<t>When in the ServiceForm, the SvcFieldValue of the SVCB RR
provides an extensible data model for describing network
endpoints that are authoritative for the origin, along with
parameters associated with each of these endpoints.</t>

<t>For the HTTPS use-case, the HTTPSSVC RR enables many of the benefits of <xref target="AltSvc"/>
without waiting for a full HTTP connection initiation (multiple roundtrips)
before learning of the preferred alternative,
and without necessarily revealing the user’s
intended destination to all entities along the network path.</t>

</section>
<section anchor="parameter-for-encrypted-clienthello" title="Parameter for Encrypted ClientHello">

<t>This document also defines a parameter for Encrypted ClientHello <xref target="ECH"/>
keys. See <xref target="echconfig"/>.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>For consistency with <xref target="AltSvc"/>, we adopt the following definitions:</t>

<t><list style="symbols">
  <t>An “origin” is an information source as in <xref target="RFC6454"/>.
For services other than HTTPS, the exact definition will
need to be provided by the document mapping that service
onto the SVCB RR.</t>
  <t>The “origin server” is the server that the client would reach when
accessing the origin in the absence of the SVCB record
or an HTTPS Alt-Svc.</t>
  <t>An “alternative service” is a different server that can serve the
origin over a specified protocol.</t>
</list></t>

<t>For example within HTTPS, the origin consists of a scheme (typically
“https”), a hostname, and a port (typically “443”).</t>

<t>Additional DNS terminology intends to be consistent
with <xref target="DNSTerm"/>.</t>

<t>SVCB is a contraction of “service binding”.  HTTPSSVC is a contraction of
“HTTPS service”.  SVCB, HTTPSSVC, and future RR types that share SVCB’s
format and registry are collectively known as SVCB-compatible RR types.</t>

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”,
“MAY”, and “OPTIONAL” in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="svcb" title="The SVCB record type">

<t>The SVCB DNS resource record (RR) type (RR type ???)
is used to locate endpoints that can service an origin.
There is special handling for the case of “https” origins.</t>

<t>The algorithm for resolving SVCB records and associated
address records is specified in <xref target="client-behavior"/>.</t>

<section anchor="presentation-format" title="Presentation format">

<t>The presentation format of the record is:</t>

<figure><artwork><![CDATA[
Name TTL IN SVCB SvcFieldPriority SvcDomainName SvcFieldValue
]]></artwork></figure>

<t>The SVCB record is defined specifically within
the Internet (“IN”) Class (<xref target="RFC1035"/>).
SvcFieldPriority is a number in the range 0-65535,
SvcDomainName is a domain name (absolute or relative),
and SvcFieldValue is a set of key=value pairs present for the ServiceForm.
Each key SHALL appear at most once in an SvcFieldValue.
The SvcFieldValue is empty for the AliasForm.</t>

<section anchor="svcfieldvalue" title="Presentation format for SvcFieldValue key=value pairs">

<t>In ServiceForm, the SvcFieldValue consists of zero or more elements separated
by whitespace.  Each element represents a key=value pair.</t>

<t>Keys are IANA-registered SvcParamKeys (<xref target="svcparamregistry"/>)
with both a case-insensitive string representation and
a numeric representation in the range 0-65535.
Registered key names should only contain characters from the ranges
“a”-“z”, “0”-“9”, and “-“.  In ABNF <xref target="RFC5234"/>,</t>

<figure><artwork><![CDATA[
ALPHA-LC    = %x61-7A   ;  a-z
key         = 1*(ALPHA-LC / DIGIT / "-")
display-key = 1*(ALPHA / DIGIT / "-")
]]></artwork></figure>

<t>Values are in a format specific to the SvcParamKey.
Their definition should specify both their presentation format
and wire encoding (e.g., domain names, binary data, or numeric values).
The initial keys and formats are defined in <xref target="keys"/>.</t>

<t>The presentation format for SvcFieldValue is a whitespace-separated
list of key=value pairs.  When the value is omitted, or both the value and
the “=” are omitted, the presentation value is the empty string.</t>

<figure><artwork><![CDATA[
; basic-visible is VCHAR minus DQUOTE, ";", "(", ")", and "\".
basic-visible = %x21 / %x23-27 / %2A-3A / %x3C-5B / %x5D-7E
escaped-char  = "\" (VCHAR / WSP)
contiguous    = 1*(basic-visible / escaped-char)
quoted-string = DQUOTE *(contiguous / WSP) DQUOTE
value         = quoted-string / contiguous
pair          = display-key "=" value
element       = display-key / pair
]]></artwork></figure>

<t>The value format is intended to match the definition of &lt;character-string&gt;
in <xref target="RFC1035"/> Section 5.1.  (Unlike &lt;character-string&gt;, the length
of a value is not limited to 255 characters.)</t>

<t>Unrecognized keys are represented in presentation
format as “keyNNNNN” where NNNNN is the numeric
value of the key type without leading zeros.
In presentation format, values corresponding to unrecognized keys
SHALL be represented in wire format, using decimal escape codes
(e.g. \255) when necessary.</t>

<t>When decoding values of unrecognized keys in the presentation format:</t>

<t><list style="symbols">
  <t>a character other than “\” represents its ASCII value in wire format.</t>
  <t>the character “\” followed by three decimal digits, up to 255, represents
an octet in the wire format.</t>
  <t>the character “\” followed by any allowed character, except a decimal digit,
represents the subsequent character’s ASCII value.</t>
</list></t>

<t>Elements in presentation format MAY appear in any order, but keys MUST NOT be
repeated.</t>

</section>
</section>
<section anchor="svcb-rdata-wire-format" title="SVCB RDATA Wire Format">

<t>The RDATA for the SVCB RR consists of:</t>

<t><list style="symbols">
  <t>a 2 octet field for SvcFieldPriority as an integer in network
byte order.</t>
  <t>the uncompressed, fully-qualified SvcDomainName, represented as
a sequence of length-prefixed labels as in Section 3.1 of <xref target="RFC1035"/>.</t>
  <t>the SvcFieldValue byte string, consuming the remainder of the record
(so smaller than 65535 octets and constrained by the RDATA
and DNS message sizes).</t>
</list></t>

<t>AliasForm is defined by SvcFieldPriority being 0.</t>

<t>When SvcFieldValue is non-empty (ServiceForm), it contains a series of
SvcParamKey=SvcParamValue pairs, represented as:</t>

<t><list style="symbols">
  <t>a 2 octet field containing the SvcParamKey as an
integer in network byte order.  (See <xref target="iana-keys"/> for the defined values.)</t>
  <t>a 2 octet field containing the length of the SvcParamValue
as an integer between 0 and 65535 in network byte order
(but constrained by the RDATA and DNS message sizes).</t>
  <t>an octet string of this length whose contents are in a format determined
by the SvcParamKey.</t>
</list></t>

<t>SvcParamKeys SHALL appear in increasing numeric order.</t>

<t>Clients MUST consider an RR malformed if</t>

<t><list style="symbols">
  <t>the parser reaches the end of the RDATA while parsing an SvcFieldValue.</t>
  <t>SvcParamKeys are not in strictly increasing numeric order.</t>
  <t>the SvcParamValue for an SvcParamKey does not have the expected format.</t>
</list></t>

<t>Note that the second condition implies that there are no duplicate
SvcParamKeys.</t>

<t>If any RRs are malformed, the client MUST reject the entire RRSet and
fall back to non-SVCB connection establishment.</t>

<t>TODO: decide if we want special handling for any SvcParamKey ranges?
For example: range for greasing; experimental range;
range-of-mandatory-to-use-the-RR vs range of
ignore-just-param-if-unknown.</t>

</section>
<section anchor="svcb-names" title="SVCB owner names">

<t>When querying the SVCB RR, an origin is translated into a QNAME by prepending
the hostname with a label indicating the scheme, prefixed with an underscore,
resulting in a domain name like “_examplescheme.api.example.com.”.</t>

<t>Protocol mapping documents MAY specify additional underscore-prefixed labels
to be prepended.  For schemes that specify a port (Section 3.2.3
of <xref target="URI"/>), one reasonable possibility is to prepend the indicated port
number (or the default if no port number is specified).  We term this behavior
“Port Prefix Naming”, and use it in the examples throughout this document.</t>

<t>See <xref target="httpsnames"/> for the HTTPSSVC behavior.</t>

<t>When a prior CNAME or SVCB record has aliased to
an SVCB record, each RR shall be returned under its own owner name.</t>

<t>Note that none of these forms alter the origin or authority for validation
purposes.
For example, clients MUST continue to validate TLS certificate
hostnames based on the origin host.</t>

<t>As an example, the owner of example.com could publish this record</t>

<figure><artwork><![CDATA[
_8443._foo.api.example.com. 7200 IN SVCB 0 svc4.example.net.
]]></artwork></figure>

<t>to indicate that “foo://api.example.com:8443” is aliased to “svc4.example.net”.
The owner of example.net, in turn, could publish this record</t>

<figure><artwork><![CDATA[
svc4.example.net.  7200  IN SVCB 3 svc4.example.net. (
    alpn="bar" port="8004" echconfig="..." )
]]></artwork></figure>

<t>to indicate that these services are served on port number 8004,
which supports the protocol “bar” and its associated transport in
addition to the default transport protocol for “foo://”.</t>

<t>(Parentheses are used to ignore a line break (<xref target="RFC1035"/> Section 5.1).)</t>

</section>
<section anchor="svcrecordtype" title="SvcRecordType">

<t>The SvcRecordType is indicated by the SvcFieldPriority,
and defines the form of the SVCB RR.
When SvcFieldPriority is 0, the SVCB SvcRecordType is defined to be
in AliasForm.  Otherwise, the SVCB SvcRecordType is defined to be
in ServiceForm.</t>

<t>Within an SVCB RRSet,
all RRs should have the same SvcRecordType.
If an RRSet contains a record in AliasForm, the client MUST ignore
any records in the set with ServiceForm.</t>

</section>
<section anchor="svcb-records-aliasform" title="SVCB records: AliasForm">

<t>When SvcRecordType is AliasForm, the SVCB record is to be treated
similar to a CNAME alias pointing to
SvcDomainName.  SVCB RRSets SHOULD only have a single resource
record in this form.  If multiple are present, clients or recursive
resolvers SHOULD pick one at random.</t>

<t>The AliasForm’s primary purpose is to allow aliasing
at the zone apex, where CNAME is not allowed.
For example, if an operator of https://example.com wanted to
point HTTPS requests to a service operating at svc.example.net,
they would publish a record such as:</t>

<figure><artwork><![CDATA[
example.com. 3600 IN SVCB 0 svc.example.net.
]]></artwork></figure>

<t>In AliasForm, SvcDomainName MUST be the name of a domain that has SVCB, AAAA,
or A records.  It MUST NOT be equal to the owner name, as this would cause a
loop.</t>

<t>Note that the SVCB record’s owner name MAY be the canonical name
of a CNAME record, and the SvcDomainName MAY be the owner of a CNAME
record. Clients and recursive resolvers MUST follow CNAMEs as normal.</t>

<t>To avoid unbounded alias chains, clients and recursive resolvers MUST impose a
limit on the total number of SVCB aliases they will follow for each resolution
request.  This limit MUST NOT be zero, i.e. implementations MUST be able to
follow at least one AliasForm record.  The exact value of this limit
is left to implementations.</t>

<t>For compatibility and performance, zone owners SHOULD NOT configure their zones
to require following multiple AliasForm records.</t>

<t>As legacy clients will not know to use this record, service
operators will likely need to retain fallback AAAA and A records
alongside this SVCB record, although in a common case
the target of the SVCB record might offer better performance, and
therefore would be preferable for clients implementing this specification
to use.</t>

<t>Note that SVCB AliasForm RRs do not alias to RR types other than
address records (AAAA and A), CNAMEs, and ServiceForm SVCB records.
For example, an AliasForm SVCB record does not alias to an HTTPSSVC record,
nor vice-versa.</t>

</section>
<section anchor="svcb-records-serviceform" title="SVCB records: ServiceForm">

<t>When SvcRecordType is the ServiceForm, the combination of
SvcDomainName and SvcFieldValue parameters within each resource record
associates an alternative service location with its connection parameters.</t>

<t>Each protocol scheme that uses SVCB MUST define a protocol mapping that
explains how SvcFieldValues are applied for connections of that scheme.
Unless specified otherwise by the
protocol mapping, clients MUST ignore SvcFieldValue parameters that they do
not recognize.</t>

<section anchor="svcdomainnamedot" title="Special handling of “.” for SvcDomainName in ServiceForm">

<t>For ServiceForm SVCB RRs, if SvcDomainName has the value “.” (represented in
the wire format as a zero-length label), then the
owner name of this record MUST be used as the effective
SvcDomainName.</t>

<t>For example, in the following example “svc2.example.net”
is the effective SvcDomainName:</t>

<figure><artwork><![CDATA[
www.example.com.  7200  IN HTTPSSVC 0 svc.example.net.
svc.example.net.  7200  IN CNAME    svc2.example.net.
svc2.example.net. 7200  IN HTTPSSVC 1 . port=8002 echconfig="..."
svc2.example.net. 300   IN A        192.0.2.2
svc2.example.net. 300   IN AAAA     2001:db8::2
]]></artwork></figure>

</section>
<section anchor="pri" title="SvcFieldPriority">

<t>As RRs within an RRSet are explicitly unordered collections, the
SvcFieldPriority value serves to indicate priority.
SVCB RRs with a smaller SvcFieldPriority value SHOULD be given
preference over RRs with a larger SvcFieldPriority value.</t>

<t>When receiving an RRSet containing multiple SVCB records with the
same SvcFieldPriority value, clients SHOULD apply a random shuffle within a
priority level to the records before using them, to ensure uniform
load-balancing.</t>

</section>
</section>
</section>
<section anchor="client-behavior" title="Client behavior">

<t>An SVCB-aware client resolves an origin HOST by attempting to determine
the preferred SvcFieldValue and IP addresses for its service, using the
following procedure:</t>

<t><list style="numbers">
  <t>Issue parallel AAAA/A and SVCB queries for the name HOST.
The answers for these may or may not include CNAME pointers
before reaching one or more of these records.</t>
  <t>If an SVCB record of AliasForm SvcRecordType is returned for HOST,
clients MUST loop back to step 1 replacing HOST with SvcDomainName,
subject to chain length limits and loop detection heuristics (see 
<xref target="client-failures"/>).</t>
  <t>If one or more SVCB records of ServiceForm SvcRecordType are returned
for HOST, clients should select the highest-priority option with
acceptable parameters, and resolve AAAA and/or A records for its
SvcDomainName if they are not already available.  These are the
preferred SvcFieldValue and IP addresses.  If the connection fails, the
client MAY try to connect using values from a lower-priority record.
If none of the options succeed, the client SHOULD connect to the origin
server directly.</t>
  <t>If an SVCB record for HOST does not exist, the received AAAA and/or A
records are the preferred IP addresses and there is no SvcFieldValue.</t>
</list></t>

<t>This procedure does not rely on any recursive or authoritative server to
comply with this specification or have any awareness of SVCB.</t>

<t>When selecting between AAAA and A records to use, clients may use an approach
such as <xref target="HappyEyeballsV2"/>.</t>

<t>Some important optimizations are discussed in <xref target="optimizations"/>
to avoid additional latency in comparison to ordinary AAAA/A lookups.</t>

<section anchor="client-failures" title="Handling resolution failures">

<t>If an SVCB query results in a SERVFAIL error, transport error, or timeout,
and DNS exchanges between the client and the recursive resolver are
cryptographically protected (e.g. using TLS <xref target="RFC7858"/> or HTTPS
<xref target="RFC8484"/>), the client MUST NOT fall back to non-SVCB connection
establishment.  This ensures that an active attacker cannot mount a
downgrade attack by denying the user access to the SVCB information.</t>

<t>A SERVFAIL error can occur if the domain is DNSSEC-signed, the recursive
resolver is DNSSEC-validating, and the attacker is between the recursive
resolver and the authoritative DNS server.  A transport error or timeout can
occur if an active attacker between the client and the recursive resolver is
selectively dropping SVCB queries or responses, based on their size or
other observable patterns.</t>

<t>Similarly, if the client enforces DNSSEC validation on A/AAAA responses,
it MUST NOT fall back to non-SVCB connection establishment if the SVCB
response fails to validate.</t>

<t>If the client is unable to complete SVCB resolution due to its chain length
limit, the client SHOULD fall back to non-SVCB connection, as if the
origin’s SVCB record did not exist.</t>

</section>
<section anchor="clients-using-a-proxy" title="Clients using a Proxy">

<t>Clients using a domain-oriented transport proxy like HTTP CONNECT
(<xref target="RFC7231"/> Section 4.3.6) or SOCKS5 (<xref target="RFC1928"/>) SHOULD disable
SVCB support if performing SVCB queries would violate the
client’s privacy intent.</t>

<t>If the client can safely perform SVCB queries (e.g. via the
proxy or an affiliated resolver), the client SHOULD follow
the standard SVCB resolution process, selecting the highest priority
option that is compatible with the client and the proxy.  The client
SHOULD provide the final SvcDomainName and port to the
proxy, which will perform any required A and AAAA lookups.</t>

<t>Providing the proxy with the final SvcDomainName has several benefits:</t>

<t><list style="symbols">
  <t>It allows the client to use the SvcFieldValue, if present, which is
only usable with a specific SvcDomainName.  The SvcFieldValue may
include information that enhances performance (e.g. alpn) and privacy
(e.g. echconfig).</t>
  <t>It allows the origin to delegate the apex domain.</t>
  <t>It allows the proxy to select between IPv4 and IPv6 addresses for the
server according to its configuration, and receive addresses based on
its network geolocation.</t>
</list></t>

</section>
</section>
<section anchor="server-behavior" title="DNS Server Behavior">

<section anchor="authoritative-servers" title="Authoritative servers">

<t>When replying to an SVCB query, authoritative DNS servers SHOULD return
A, AAAA, and SVCB records (as well as any relevant CNAME or
<xref target="DNAME"/> records) in the Additional Section for any
in-bailiwick SvcDomainNames.</t>

</section>
<section anchor="recursive-behavior" title="Recursive resolvers">

<t>Recursive resolvers that are aware of SVCB SHOULD ensure that the client can
execute the procedure in <xref target="client-behavior"/> without issuing a second
round of queries, by incorporating all the necessary information into a
single response.  For the initial SVCB record query, this is just the normal
response construction process (i.e. unknown RR type resolution under
<xref target="RFC3597"/>).  For followup resolutions performed during this procedure,
we define incorporation as adding all Answer and Additional RRs to the
Additional section, and all Authority RRs to the Authority section,
without altering the response code.</t>

<t>Upon receiving an SVCB query, recursive resolvers SHOULD start with the
standard resolution procedure, and then follow this procedure to
construct the full response to the stub resolver:</t>

<t><list style="numbers">
  <t>Incorporate the results of SVCB resolution.  If the chain length limit has
been reached, terminate successfully (i.e. a NOERROR response).</t>
  <t>If any of the resolved SVCB records are in AliasForm, choose an AliasForm
record at random, and resolve SVCB, A, and AAAA records for its
SvcDomainName.  <list style="symbols">
      <t>If any SVCB records are resolved, go to step 1.</t>
      <t>Otherwise, incorporate the results of A and AAAA resolution, and
terminate.</t>
    </list></t>
  <t>All the resolved SVCB records are in ServiceForm.  Resolve A and AAAA
queries for each SvcDomainName (or for the owner name if SvcDomainName
is “.”), incorporate all the results, and terminate.</t>
</list></t>

<t>In this procedure, “resolve” means the resolver’s ordinary recursive
resolution procedure, as if processing a query for that RRSet.
This includes following any aliases that the resolver would ordinarily
follow (e.g. CNAME, <xref target="DNAME"/>).</t>

</section>
<section anchor="general-requirements" title="General requirements">

<t>All DNS servers SHOULD treat the SvcFieldValue portion of the SVCB RR
as opaque and SHOULD NOT try to alter their behavior based
on its contents.</t>

<t>When responding to a query that includes the DNSSEC OK bit (<xref target="RFC3225"/>),
DNSSEC-capable recursive and authoritative DNS servers MUST accompany
each RRSet in the Additional section with the same DNSSEC-related records
that they would send when providing that RRSet as an Answer (e.g. RRSIG, NSEC,
NSEC3).</t>

</section>
</section>
<section anchor="optimizations" title="Performance optimizations">

<t>For optimal performance (i.e. minimum connection setup time), clients
SHOULD issue address (AAAA and/or A) and SVCB queries
simultaneously, and SHOULD implement a client-side DNS cache.
Responses in the Additional section of an SVCB response SHOULD be placed
in cache before performing any followup queries.
With these optimizations in place, and conforming DNS servers,
using SVCB does not add network latency to connection setup.</t>

<section anchor="optimistic-pre-connection-and-connection-reuse" title="Optimistic pre-connection and connection reuse">

<t>If an address response arrives before the corresponding SVCB response, the
client MAY initiate a connection as if the SVCB query returned NODATA, but
MUST NOT transmit any information that could be altered by the SVCB response
until it arrives.  For example, a TLS ClientHello can be altered by the
“echconfig” value of an SVCB response (<xref target="svcparamkeys-echconfig"/>).  Clients
implementing this optimization SHOULD wait for 50 milliseconds before
starting optimistic pre-connection, as per the guidance in
<xref target="HappyEyeballsV2"/>.</t>

<t>An SVCB record is consistent with a connection
if the client would attempt an equivalent connection when making use of
that record. If an SVCB record is consistent with an active or in-progress
connection C, the client MAY prefer that record and use C as its connection.
For example, suppose the client receives this SVCB RRSet for a protocol
that uses TLS over TCP:</t>

<figure><artwork><![CDATA[
_1234._bar.example.com. 300 IN SVCB 1 svc1.example.net (
    echconfig="111..." ipv6hint=2001:db8::1 port=1234 ... )
                               SVCB 2 svc2.example.net (
    echconfig="222..." ipv6hint=2001:db8::2 port=1234 ... )
]]></artwork></figure>

<t>If the client has an in-progress TCP connection to <spanx style="verb">[2001:db8::2]:1234</spanx>,
it MAY proceed with TLS on that connection using <spanx style="verb">echconfig="222..."</spanx>, even
though the other record in the RRSet has higher priority.</t>

<t>If none of the SVCB records are consistent
with any active or in-progress connection,
clients must proceed as described in Step 3 of the procedure in <xref target="client-behavior"/>.</t>

</section>
<section anchor="incomplete-response" title="Generating and using incomplete responses">

<t>When following the procedure in <xref target="recursive-behavior"/>, recursive
resolvers MAY terminate the procedure early and produce a reply that omits
some of the associated RRSets.  This is REQUIRED when the chain length limit
is reached (<xref target="recursive-behavior"/> step 1), but might also be appropriate
when the maximum response size is reached, or when responding before fully
chasing dependencies would improve performance.  When omitting certain
RRSets, recursive resolvers SHOULD prioritize information from
higher priority ServiceForm records over lower priority ServiceForm records.</t>

<t>As discussed in <xref target="client-behavior"/>, clients MUST be able to fetch additional
information that is required to use an SVCB record, if it is not included
in the initial response.  As a performance optimization, if some of the SVCB
records in the response can be used without requiring additional DNS queries,
the client MAY prefer those records, regardless of their priorities.</t>

</section>
<section anchor="structuring-zones-for-performance" title="Structuring zones for performance">

<t>To avoid a delay for clients using a nonconforming recursive resolver,
domain owners SHOULD use a single SVCB record whose SvcDomainName is
“.” if possible.  This will ensure that the required
address records are already present in the client’s DNS cache as part of the
responses to the address queries that were issued in parallel.</t>

</section>
</section>
<section anchor="keys" title="Initial SvcParamKeys">

<t>A few initial SvcParamKeys are defined here.  These keys are useful for
HTTPS, and most are applicable to other protocols as well.</t>

<section anchor="alpn-key" title="“alpn” and “no-default-alpn”">

<t>The “alpn” and “no-default-alpn” SvcParamKeys together
indicate the set of Application Layer Protocol Negotation (ALPN)
protocol identifiers <xref target="ALPN"/>
and associated transport protocols supported by this service endpoint.</t>

<t>As with <xref target="AltSvc"/>, the ALPN protocol identifier is used to
identify the application protocol and associated suite
of protocols supported by the endpoint (the “protocol suite”).
Clients filter the set of ALPN identifiers to match the protocol suites they
support, and this informs the underlying transport protocol used (such
as QUIC-over-UDP or TLS-over-TCP).</t>

<t>ALPNs are identified by their registered “Identification Sequence”
(alpn-id), which is a sequence of 1-255 octets.</t>

<figure><artwork><![CDATA[
alpn-id = 1*255(OCTET)
]]></artwork></figure>

<t>The presentation value of “alpn” is a comma-separated list of one or
more <spanx style="verb">alpn-id</spanx>s.  Any commas present in the protocol-id are escaped
by a backslash:</t>

<figure><artwork><![CDATA[
escaped-octet = %x00-2b / "\," / %x2d-5b / "\\" / %x5D-FF
escaped-id = 1*(escaped-octet)
alpn-value = escaped-id *("," escaped-id)
]]></artwork></figure>

<t>The wire format value for “alpn” consists of at least one ALPN identifier
(<spanx style="verb">alpn-id</spanx>) prefixed by its length as a single octet, and these length-value
pairs are concatenated to form the SvcParamValue.  These pairs MUST exactly
fill the SvcParamValue; otherwise, the SvcParamValue is malformed.</t>

<t>For “no-default-alpn”, the presentation and wire format values MUST be
empty.</t>

<t>Each scheme that uses this SvcParamKey defines a
“default set” of supported ALPNs, which SHOULD NOT
be empty.  To determine the set of protocol suites supported by an
endpoint (the “ALPN set”), the client parses the set of ALPN identifiers in
the “alpn” parameter, and then adds the default set unless the
“no-default-alpn” SvcParamKey is present.  The presence of a value in
the alpn set indicates that this service endpoint, described by
SvcDomainName and the other parameters (e.g. “port”) offers service with
the protocol suite associated with the ALPN ID.</t>

<t>ALPN IDs that do not uniquely identify a protocol suite (e.g. an ID that
can be used with both TLS and DTLS) are not compatible with this
SvcParamKey and MUST NOT be included in the ALPN set.</t>

<t>Clients SHOULD NOT attempt connection to a service endpoint whose
ALPN set does not contain any compatible protocol suites.  To ensure
consistency of behavior, clients MAY reject the entire SVCB RRSet and fall
back to basic connection establishment if all of the RRs indicate
“no-default-alpn”, even if connection could have succeeded using a
non-default alpn.</t>

<t>For compatibility with clients that require default transports,
zone operators SHOULD ensure that at least one RR in each RRSet supports the
default transports.</t>

<t>Clients MUST include an <spanx style="verb">application_layer_protocol_negotiation</spanx> extension
in their ClientHello with a ProtocolNameList that includes at least one ID
from the ALPN set.  Clients SHOULD also include any other values that they
support and could negotiate on that connection with equivalent or better
security properties.  For example, if the ALPN set only contains “http/1.1”,
the client could include “http/1.1” and “h2” in the ProtocolNameList.</t>

<t>Once the client has formulated the ClientHello, protocol negotiation
on that connection proceeds as specified in <xref target="ALPN"/>, without regard to the
SVCB ALPN set.  To preserve the security guarantees of this process, clients
MUST consolidate all compatible ALPN IDs into a single ProtocolNameList.</t>

</section>
<section anchor="port" title="“port”">

<t>The “port” SvcParamKey defines the TCP or UDP port
that should be used to contact this alternative service.
If this key is not present, clients SHALL use the origin server’s port number.</t>

<t>The presentation format of the SvcParamValue is a numeric value
between 0 and 65535 inclusive.  Any other values (e.g. the empty value)
are syntax errors.</t>

<t>The wire format of the SvcParamValue
is the corresponding 2 octet numeric value in network byte order.</t>

<t>If a port-restricting firewall is in place between some client and the service
endpoint, changing the port number might cause that client to lose access to
the service, so operators should exercise caution when using this SvcParamKey
to specify a non-default port.</t>

</section>
<section anchor="svcparamkeys-echconfig" title="“echconfig”">

<t>The SvcParamKey to enable Encrypted ClientHello (ECH) is “echconfig”.  Its
value is defined in <xref target="echconfig"/>.  It is applicable to most TLS-based
protocols.</t>

<t>When publishing a record containing an “echconfig” parameter, the publisher
MUST ensure that all IP addresses of SvcDomainName correspond to servers
that have access to the corresponding private key or are authoritative
for the public name. (See Section 7.2.2 of <xref target="ECH"/> for more
details about the public name.) This yields an anonymity set of cardinality
equal to the number of ECH-enabled server domains supported by a given
client-facing server. Thus, even with an encrypted ClientHello, an attacker
who can enumerate the set of ECH-enabled domains supported by a
client-facing server can guess the
correct SNI with probability at least 1/K, where K is the size of this
ECH-enabled server anonymity set. This probability may be increased via
traffic analysis or other mechanisms.</t>

</section>
<section anchor="svcparamkeys-iphints" title="“ipv4hint” and “ipv6hint”">

<t>The “ipv4hint” and “ipv6hint” keys convey IP addresses that clients MAY use to
reach the service.  If A and AAAA records for SvcDomainName are locally
available, the client SHOULD ignore these hints.  Otherwise, clients
SHOULD perform A and/or AAAA queries for SvcDomainName as in
<xref target="client-behavior"/>, and clients SHOULD use the IP address in those
responses for future connections. Clients MAY opt to terminate any
connections using the addresses in hints and instead switch to the
addresses in response to the SvcDomainName query. Failure to use A and/or
AAAA response addresses could negatively impact load balancing or other
geo-aware features and thereby degrade client performance.</t>

<t>The wire format for each parameter is a sequence of IP addresses in network
byte order.  Like an A or AAAA RRSet, the list of addresses represents an
unordered collection, and clients SHOULD pick addresses to use in a random order.
An empty list of addresses is invalid.</t>

<t>When selecting between IPv4 and IPv6 addresses to use, clients may use an
approach such as <xref target="HappyEyeballsV2"/>.
When only “ipv4hint” is present, IPv6-only clients may synthesize
IPv6 addresses as specified in <xref target="RFC7050"/> or ignore the “ipv4hint” key and
wait for AAAA resolution (<xref target="client-behavior"/>).  Recursive resolvers MUST NOT
perform DNS64 (<xref target="RFC6147"/>) on parameters within an SVCB record.
For best performance, server operators SHOULD include an “ipv6hint” parameter
whenever they include an “ipv4hint” parameter.</t>

<t>The presentation format for each parameter is a comma-separated list of
IP addresses in standard textual format <xref target="RFC5952"/>.</t>

<t>These parameters are intended to minimize additional connection latency
when a recursive resolver is not compliant with the requirements in
<xref target="server-behavior"/>, and SHOULD NOT be included if most clients are using
compliant recursive resolvers.  When SvcDomainName is “.”, server operators
SHOULD NOT include these hints, because they are unlikely to convey any
performance benefit.</t>

</section>
</section>
<section anchor="https" title="Using SVCB with HTTPS and HTTP">

<t>Use of any protocol with SVCB requires a protocol-specific mapping
specification.  This section specifies the mapping for HTTPS and HTTP.</t>

<t>To enable special handling for the HTTPS and HTTP use-cases,
the HTTPSSVC RR type is defined as an SVCB-compatible RR type,
specific to the https and http schemes.  Clients MUST NOT
perform SVCB queries or accept SVCB responses for “https”
or “http” schemes.</t>

<t>The HTTPSSVC wire format and presentation format are
identical to SVCB, and both share the SvcParamKey registry.  SVCB
semantics apply equally to HTTPSSVC unless specified otherwise.</t>

<t>All the SvcParamKeys defined in <xref target="keys"/> are permitted for use in
HTTPSSVC.  The default set of ALPN IDs is the single value “http/1.1”.</t>

<t>The presence of an HTTPSSVC record for an origin also indicates
that all HTTP resources are available over HTTPS, as
discussed in <xref target="hsts"/>.  This allows HTTPSSVC RRs to apply to
pre-existing “http” scheme URLs, while ensuring that the client uses a
secure and authenticated HTTPS connection.</t>

<t>The HTTPSSVC RR parallels the concepts
introduced in the HTTP Alternative Services proposed standard
<xref target="AltSvc"/>.  Clients and servers that implement HTTPSSVC are NOT
REQUIRED to implement Alt-Svc.</t>

<section anchor="httpsnames" title="Owner names for HTTPSSVC records">

<t>The HTTPSSVC RR uses Port Prefix Naming (<xref target="svcb-names"/>),
with one modification: if the scheme is “https” and the port is 443,
then the client’s original QNAME is
equal to the origin hostname, without any prefix labels.</t>

<t>By removing the <xref target="Attrleaf"/> labels
used in SVCB, this construction enables offline DNSSEC signing of
wildcard domains, which are commonly used with HTTPS.  Reusing the
origin hostname also allows the targets of existing CNAME chains
(e.g. CDN hosts) to start returning HTTPSSVC responses without
requiring origin domains to configure and maintain an additional
delegation.</t>

<t>Following of HTTPSSVC AliasForm and CNAME aliases is unchanged from SVCB.</t>

<t>Clients always convert “http” URLs to “https” before performing an
HTTPSSVC query using the process described in <xref target="hsts"/>, so domain owners
MUST NOT publish HTTPSSVC records with a prefix of “_http”.</t>

<t>Note that none of these forms alter the HTTPS origin or authority.
For example, clients MUST continue to validate TLS certificate
hostnames based on the origin host.</t>

</section>
<section anchor="relationship-to-alt-svc" title="Relationship to Alt-Svc">

<t>Publishing a ServiceForm HTTPSSVC record in DNS is intended
to be similar to transmitting an Alt-Svc field value over
HTTPS, and receiving an HTTPSSVC record is intended to be similar to
receiving that field value over HTTPS.  However, there are some
differences in the intended client and server behavior.</t>

<section anchor="alpn-usage" title="ALPN usage">

<t>Unlike Alt-Svc Field Values, HTTPSSVC records can contain multiple ALPN
IDs, and clients are encouraged to offer additional ALPNs that they
support (subject to security constraints).</t>

<t>TO BE REMOVED: The ALPN semantics in <xref target="AltSvc"/> are ambiguous, and
problematic in some interpretations.  We should update <xref target="AltSvc"/>
to give it well-defined semantics that match HTTPSSVC.</t>

</section>
<section anchor="untrusted-channel" title="Untrusted channel">

<t>SVCB does not require or provide any assurance of authenticity.  (DNSSEC
signing and verification, which would provide such assurance, are OPTIONAL.)
The DNS resolution process is treated as an untrusted channel that learns
only the QNAME, and is prevented from mounting any attack beyond denial of
service.</t>

<t>Alt-Svc parameters that cannot be safely received in this model MUST NOT
have a corresponding defined SvcParamKey.  For example, there is no
SvcParamKey corresponding to the Alt-Svc “persist” parameter, because
this parameter is not safe to accept over an untrusted channel.</t>

</section>
<section anchor="ttl-and-granularity" title="TTL and granularity">

<t>There is no SvcParamKey corresponding to the Alt-Svc “ma” (max age) parameter.
Instead, server operators encode the expiration time in the DNS TTL.</t>

<t>The appropriate TTL value will typically be similar to the “ma” value
used for Alt-Svc, but may vary depending on the desired efficiency and
agility.  Some DNS caches incorrectly extend the lifetime of DNS
records beyond the stated TTL, so server operators cannot rely on
HTTPSSVC records expiring on time.  Shortening the TTL to compensate
for incorrect caching is NOT RECOMMENDED, as this practice impairs the
performance of correctly functioning caches and does not guarantee
faster expiration from incorrect caches.  Instead, server operators
SHOULD maintain compatibility with expired records until they observe
that nearly all connections have migrated to the new configuration.</t>

<t>Sending Alt-Svc over HTTP allows the server to tailor the Alt-Svc
Field Value specifically to the client.  When using an HTTPSSVC DNS
record, groups of clients will necessarily receive the same
SvcFieldValue.  Therefore, HTTPSSVC is not suitable for uses that
require single-client granularity.</t>

</section>
</section>
<section anchor="interaction-with-alt-svc" title="Interaction with Alt-Svc">

<t>Clients that do not implement support for Encrypted ClientHello MAY
skip the HTTPSSVC query
if a usable Alt-Svc value is available in the local cache.
If Alt-Svc connection fails, these clients SHOULD fall back to the HTTPSSVC
client connection procedure (<xref target="client-behavior"/>).</t>

<t>For clients that implement support for ECH, the interaction between
HTTPSSVC and Alt-Svc is described in <xref target="ech-client-behavior"/>.</t>

<t>This specification does not alter the DNS queries performed when connecting
to an Alt-Svc hostname (typically A and/or AAAA only).</t>

</section>
<section anchor="requiring-server-name-indication" title="Requiring Server Name Indication">

<t>Clients MUST NOT use an HTTPSSVC response unless the
client supports TLS Server Name Indication (SNI) and 
indicate the origin name when negotiating TLS.
This supports the conservation of IP addresses.</t>

<t>Note that the TLS SNI (and also the HTTP “Host” or “:authority”) will indicate 
the origin, not the SvcDomainName.</t>

</section>
<section anchor="hsts" title="HTTP Strict Transport Security">

<t>By publishing an HTTPSSVC record, the server
operator indicates that all useful HTTP resources on that origin are
reachable over HTTPS, similar to HTTP Strict Transport Security
<xref target="HSTS"/>.  When an HTTPSSVC record is present for an origin,
all “http” scheme requests for that origin SHOULD logically be redirected
to “https”.</t>

<t>Prior to making an “http” scheme request, the client SHOULD perform a lookup
to determine if any HTTPSSVC records exist for that origin.  To do so,
the client SHOULD construct a corresponding “https” URL as follows:</t>

<t><list style="numbers">
  <t>Replace the “http” scheme with “https”.</t>
  <t>If the “http” URL explicitly specifies port 80, specify port 443.</t>
  <t>Do not alter any other aspect of the URL.</t>
</list></t>

<t>This construction is equivalent to Section 8.3 of <xref target="HSTS"/>, point 5.</t>

<t>If an HTTPSSVC query for this “https” URL returns any HTTPSSVC records
(AliasForm or ServiceForm), the client SHOULD act as if it has received an
HTTP “307 Temporary Redirect” redirect to this “https” URL.
Because HTTPSSVC is received over an often insecure channel (DNS),
clients MUST NOT place any more trust in this signal than if they
had received a 307 redirect over cleartext HTTP.</t>

<t>When making an “https” scheme request to an origin with an HTTPSSVC
record, either directly or via the above redirect, the client SHOULD terminate the
connection if there are any errors with the underlying secure transport, such as
errors in certificate validation. This aligns with Section 8.4 and Section 12.1
of <xref target="HSTS"/>.</t>

</section>
<section anchor="http-based-protocols" title="HTTP-based protocols">

<t>We define an “HTTP-based protocol” as one that involves connecting to an “http:”
or “https:” URL.  When implementing an HTTP-based protocol, clients that use
HTTPSSVC for HTTP SHOULD also use it for this URL.  For example, clients that
support HTTPSSVC and implement the altered <xref target="WebSocket"/> opening
handshake from <xref target="FETCH"/> SHOULD use HTTPSSVC for the <spanx style="verb">requestURL</spanx>.</t>

<t>An HTTP-based protocol MAY define its own SVCB mapping.  Such mappings MAY
be defined to take precedence over HTTPSSVC.</t>

</section>
</section>
<section anchor="echconfig" title="SVCB/HTTPSSVC parameter for ECH configuration">

<t>The SVCB “echconfig” parameter is defined for
conveying the ECH configuration of an alternative service.
In wire format, the value of the parameter is an ECHConfigs vector
<xref target="ECH"/>, including the redundant length prefix.  In presentation format,
the value is encoded in <xref target="base64"/>.</t>

<t>When ECH is in use, the TLS ClientHello is divided into an unencrypted “outer”
and an encrypted “inner” ClientHello.  The outer ClientHello is an implementation
detail of ECH, and its contents are controlled by the ECHConfig in accordance
with <xref target="ECH"/>.  The inner ClientHello is used for establishing a connection to the
service, so its contents may be influenced by other SVCB parameters.  For example,
the requirements on the ProtocolNameList in <xref target="alpn-key"/> apply only to the inner
ClientHello.  Similarly, it is the inner ClientHello whose Server Name Indication
identifies the origin.</t>

<section anchor="ech-client-behavior" title="Client behavior">

<t>The general client behavior specified in <xref target="client-behavior"/> permits clients
to retry connection with a less preferred alternative if the preferred option
fails, including falling back to a direct connection if all SVCB options fail.
This behavior is
not suitable for ECH, because fallback would negate the privacy benefits of
ECH.  Accordingly, ECH-capable clients SHALL implement the following
behavior for connection establishment.</t>

<t><list style="numbers">
  <t>Perform connection establishment using HTTPSSVC as described in
<xref target="client-behavior"/>, but do not fall back to the origin’s A/AAAA records.
If all the HTTPSSVC RRs have an “echconfig” key, and they all fail,
terminate connection establishment.</t>
  <t>If the client implements Alt-Svc, try to connect using any entries from
the Alt-Svc cache.</t>
  <t>Fall back to the origin’s A/AAAA records if necessary.</t>
</list></t>

<t>As a latency optimization, clients MAY prefetch DNS records for later steps
before they are needed.</t>

</section>
<section anchor="deployment-considerations" title="Deployment considerations">

<t>An HTTPSSVC RRSet containing some RRs with “echconfig” and some without is
vulnerable to a downgrade attack.  This configuration is NOT RECOMMENDED.
Zone owners who do use such a mixed configuration SHOULD mark the RRs with
“echconfig” as more preferred (i.e. smaller SvcFieldPriority) than those
without, in order to maximize the likelihood that ECH will be used in the
absence of an active adversary.</t>

</section>
</section>
<section anchor="examples" title="Examples">

<section anchor="protocol-enhancements" title="Protocol enhancements">

<t>Consider a simple zone of the form</t>

<figure><artwork><![CDATA[
simple.example. 300 IN A    192.0.2.1
                       AAAA 2001:db8::1
]]></artwork></figure>

<t>The domain owner could add this record</t>

<figure><artwork><![CDATA[
simple.example. 7200 IN HTTPSSVC 1 . alpn=h3 ...
]]></artwork></figure>

<t>to indicate that simple.example uses HTTPS, and supports QUIC
in addition to HTTPS over TCP (an implicit default).
The record could also include other information
(e.g. non-standard port, ECH configuration).</t>

</section>
<section anchor="apex-aliasing" title="Apex aliasing">

<t>Consider a zone that is using CNAME aliasing:</t>

<figure><artwork><![CDATA[
$ORIGIN aliased.example. ; A zone that is using a hosting service
; Subdomain aliased to a high-performance server pool
www             7200 IN CNAME pool.svc.example.
; Apex domain on fixed IPs because CNAME is not allowed at the apex
@                300 IN A     192.0.2.1
                     IN AAAA  2001:db8::1
]]></artwork></figure>

<t>With HTTPSSVC, the owner of aliased.example could alias the apex by
adding one additional record:</t>

<figure><artwork><![CDATA[
@               7200 IN HTTPSSVC 0 pool.svc.example.
]]></artwork></figure>

<t>With this record in place, HTTPSSVC-aware clients will use the same
server pool for aliased.example and www.aliased.example.  (They will
also upgrade to HTTPS on aliased.example.)  Non-HTTPSSVC-aware clients
will just ignore the new record.</t>

<t>Similar to CNAME, HTTPSSVC has no impact on the origin name.
When connecting, clients will continue to treat the authoritative
origins as “https://www.aliased.example” and “https://aliased.example”,
respectively, and will validate TLS server certificates accordingly.</t>

</section>
<section anchor="parameter-binding" title="Parameter binding">

<t>Suppose that svc.example’s default server pool supports HTTP/2, and
it has deployed HTTP/3 on a new server pool with a different
configuration.  This can be expressed in the following form:</t>

<figure><artwork><![CDATA[
$ORIGIN svc.example. ; A hosting provider.
pool  7200 IN HTTPSSVC 1 h3pool alpn=h2,h3 echconfig="123..."
              HTTPSSVC 2 .      alpn=h2 echconfig="abc..."
pool   300 IN A        192.0.2.2
              AAAA     2001:db8::2
h3pool 300 IN A        192.0.2.3
              AAAA     2001:db8::3
]]></artwork></figure>

<t>This configuration is entirely compatible with the “Apex aliasing” example,
whether the client supports HTTPSSVC or not.  If the client does support
HTTPSSVC, all connections will be upgraded to HTTPS, and clients will
use HTTP/3 if they can.  Parameters are “bound” to each server pool, so
each server pool can have its own protocol, ECH configuration, etc.</t>

</section>
<section anchor="non-https-uses" title="Non-HTTPS uses">

<t>For services other than HTTPS, the SVCB RR and an <xref target="Attrleaf"/> label
will be used.  For example, to reach an example resource of
“baz://api.example.com:8765”, the following Alias Form
SVCB record would be used to delegate to “svc4-baz.example.net.”
which in-turn could return AAAA/A records and/or SVCB
records in ServiceForm.</t>

<figure><artwork><![CDATA[
_8765._baz.api.example.com. 7200 IN SVCB 0 svc4-baz.example.net.
]]></artwork></figure>

<t>HTTPSSVC records use similar <xref target="Attrleaf"/> labels if the origin contains
a non-default port.</t>

</section>
</section>
<section anchor="interaction-with-other-standards" title="Interaction with other standards">

<t>This standard is intended to reduce connection latency and
improve user privacy.  Server operators implementing this standard
SHOULD also implement TLS 1.3 <xref target="RFC8446"/> and OCSP Stapling
<xref target="RFC6066"/>, both of which confer substantial performance and privacy
benefits when used in combination with SVCB records.</t>

<t>To realize the greatest privacy benefits, this proposal is intended for
use over a privacy-preserving DNS transport (like DNS over TLS
<xref target="RFC7858"/> or DNS over HTTPS <xref target="RFC8484"/>).
However, performance improvements, and some modest privacy improvements,
are possible without the use of those standards.</t>

<t>Any specification for use of SVCB with a protocol MUST have an entry
for its scheme under the SVCB RR type in
the IANA DNS Underscore Global Scoped Entry Registry
<xref target="Attrleaf"/>.  The scheme SHOULD have an
entry in the IANA URI Schemes Registry <xref target="RFC7595"/>.  The scheme
SHOULD have a defined specification for use with SVCB.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>SVCB/HTTPSSVC RRs are intended for distribution over untrusted
channels, and clients are REQUIRED to verify that the alternative
service is authoritative for the origin (similar to Section 2.1 of <xref target="AltSvc"/>).
Therefore, DNSSEC signing and validation are OPTIONAL for publishing
and using SVCB and HTTPSSVC records.</t>

<t>Clients MUST ensure that their DNS cache is partitioned for each local
network, or flushed on network changes, to prevent a local adversary in one
network from implanting a forged DNS record that allows them to
track users or hinder their connections after they leave that network.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<section anchor="svcparamregistry" title="New registry for Service Parameters">

<t>The “Service Binding (SVCB) Parameter Registry” defines the namespace
for parameters, including string representations and numeric
SvcParamKey values.  This registry is shared with other SVCB-compatible
RR types, such as HTTPSSVC.</t>

<t>ACTION: create and include a reference to this registry.</t>

<section anchor="procedure" title="Procedure">

<t>A registration MUST include the following fields:</t>

<t><list style="symbols">
  <t>Name: Service parameter key name</t>
  <t>SvcParamKey: Service parameter key numeric identifier (range 0-65535)</t>
  <t>Meaning: a short description</t>
  <t>Pointer to specification text</t>
</list></t>

<t>SvcParamKey values to be added to this namespace 
have different policies (<xref target="RFC5226"/>, Section 4.1)
based on their range:</t>

<texttable>
      <ttcol align='left'>SvcParamKey</ttcol>
      <ttcol align='left'>IANA Policy</ttcol>
      <c>0-255</c>
      <c>Standards Action</c>
      <c>256-32767</c>
      <c>Expert Review</c>
      <c>32768-65280</c>
      <c>First Come First Served</c>
      <c>65280-65534</c>
      <c>Private Use</c>
      <c>65535</c>
      <c>Standards Action</c>
</texttable>

<t>Apart from the initial contents, the SvcParamKey
name MUST NOT start with “key”.</t>

</section>
<section anchor="iana-keys" title="Initial contents">

<t>The “Service Binding (SVCB) Parameter Registry” shall initially
be populated with the registrations below:</t>

<texttable>
      <ttcol align='left'>SvcParamKey</ttcol>
      <ttcol align='left'>NAME</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>(no name)</c>
      <c>Reserved for internal use</c>
      <c>(This document)</c>
      <c>1</c>
      <c>alpn</c>
      <c>Additional supported protocols</c>
      <c>(This document)</c>
      <c>2</c>
      <c>no-default-alpn</c>
      <c>No support for default protocol</c>
      <c>(This document)</c>
      <c>3</c>
      <c>port</c>
      <c>Port for alternative service</c>
      <c>(This document)</c>
      <c>4</c>
      <c>ipv4hint</c>
      <c>IPv4 address hints</c>
      <c>(This document)</c>
      <c>5</c>
      <c>echconfig</c>
      <c>Encrypted ClientHello info</c>
      <c>(This document)</c>
      <c>6</c>
      <c>ipv6hint</c>
      <c>IPv6 address hints</c>
      <c>(This document)</c>
      <c>65280-65534</c>
      <c>keyNNNNN</c>
      <c>Private Use</c>
      <c>(This document)</c>
      <c>65535</c>
      <c>key65535</c>
      <c>Reserved</c>
      <c>(This document)</c>
</texttable>

<t>TODO: do we also want to reserve a range for greasing?</t>

</section>
</section>
<section anchor="registry-updates" title="Registry updates">

<t>Per <xref target="RFC6895"/>, please add the following entries to the data type
range of the Resource Record (RR) TYPEs registry:</t>

<texttable>
      <ttcol align='left'>TYPE</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>SVCB</c>
      <c>Service Location and Parameter Binding</c>
      <c>(This document)</c>
      <c>HTTPSSVC</c>
      <c>HTTPS Service Location and Parameter Binding</c>
      <c>(This document)</c>
</texttable>

<t>Per <xref target="Attrleaf"/>, please add the following entry to the DNS Underscore
Global Scoped Entry Registry:</t>

<texttable>
      <ttcol align='left'>RR TYPE</ttcol>
      <ttcol align='left'>_NODE NAME</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>HTTPSSVC</c>
      <c>_https</c>
      <c>HTTPS SVCB info</c>
      <c>(This document)</c>
</texttable>

</section>
</section>
<section anchor="acknowledgments-and-related-proposals" title="Acknowledgments and Related Proposals">

<t>There have been a wide range of proposed solutions over the years to
the “CNAME at the Zone Apex” challenge proposed.  These include
<xref target="I-D.draft-bellis-dnsop-http-record-00"/>,
<xref target="I-D.draft-ietf-dnsop-aname-03"/>, and others.</t>

<t>Thank you to Ian Swett, Ralf Weber, Jon Reed,
Martin Thomson, Lucas Pardue, Ilari Liusvaara,
Tim Wicinski, Tommy Pauly, Chris Wood, David Benjamin,
and others for their feedback and suggestions on this draft.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor="ECH">
<front>
<title>TLS Encrypted Client Hello</title>

<author initials='E' surname='Rescorla' fullname='Eric Rescorla'>
    <organization />
</author>

<author initials='K' surname='Oku' fullname='Kazuho Oku'>
    <organization />
</author>

<author initials='N' surname='Sullivan' fullname='Nick Sullivan'>
    <organization />
</author>

<author initials='C' surname='Wood' fullname='Christopher Wood'>
    <organization />
</author>

<date month='June' day='1' year='2020' />

<abstract><t>This document describes a mechanism in Transport Layer Security (TLS) for encrypting a ClientHello message under a server public key.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tls-esni-07' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-esni-07.txt' />
</reference>



<reference anchor="Attrleaf">
<front>
<title>DNS Scoped Data Through "Underscore" Naming of Attribute Leaves</title>

<author initials='D' surname='Crocker' fullname='Dave Crocker'>
    <organization />
</author>

<date month='November' day='16' year='2018' />

<abstract><t>Formally, any DNS resource record 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 an _underscore.  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 "DNS Global Underscore Scoped Entry Registry" with IANA.  The purpose of the Underscore registry is to avoid collisions resulting from the use of the same underscore-based name, for different services.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-dnsop-attrleaf-16' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-dnsop-attrleaf-16.txt' />
</reference>



<reference anchor="HTTP3">
<front>
<title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>

<author initials='M' surname='Bishop' fullname='Mike Bishop'>
    <organization />
</author>

<date month='April' day='23' year='2019' />

<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='Internet-Draft' value='draft-ietf-quic-http-20' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-http-20.txt' />
</reference>



<reference  anchor="RFC6454" target='https://www.rfc-editor.org/info/rfc6454'>
<front>
<title>The Web Origin Concept</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='December' />
<abstract><t>This document defines the concept of an &quot;origin&quot;, 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 &quot;Origin&quot;, 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="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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="RFC1035" target='https://www.rfc-editor.org/info/rfc1035'>
<front>
<title>Domain names - implementation and specification</title>
<author initials='P.V.' surname='Mockapetris' fullname='P.V. Mockapetris'><organization /></author>
<date year='1987' month='November' />
<abstract><t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System.  It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t></abstract>
</front>
<seriesInfo name='STD' value='13'/>
<seriesInfo name='RFC' value='1035'/>
<seriesInfo name='DOI' value='10.17487/RFC1035'/>
</reference>



<reference  anchor="RFC5234" target='https://www.rfc-editor.org/info/rfc5234'>
<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials='D.' surname='Crocker' fullname='D. Crocker' role='editor'><organization /></author>
<author initials='P.' surname='Overell' fullname='P. Overell'><organization /></author>
<date year='2008' month='January' />
<abstract><t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='68'/>
<seriesInfo name='RFC' value='5234'/>
<seriesInfo name='DOI' value='10.17487/RFC5234'/>
</reference>



<reference  anchor="HappyEyeballsV2" target='https://www.rfc-editor.org/info/rfc8305'>
<front>
<title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
<author initials='D.' surname='Schinazi' fullname='D. Schinazi'><organization /></author>
<author initials='T.' surname='Pauly' fullname='T. Pauly'><organization /></author>
<date year='2017' month='December' />
<abstract><t>Many communication protocols operating over the modern Internet use hostnames.  These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristics.  Since specific addresses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on a network, clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly.  This document specifies requirements for algorithms that reduce this user-visible delay and provides an example algorithm, referred to as &quot;Happy Eyeballs&quot;.  This document obsoletes the original algorithm description in RFC 6555.</t></abstract>
</front>
<seriesInfo name='RFC' value='8305'/>
<seriesInfo name='DOI' value='10.17487/RFC8305'/>
</reference>



<reference  anchor="RFC7858" target='https://www.rfc-editor.org/info/rfc7858'>
<front>
<title>Specification for DNS over Transport Layer Security (TLS)</title>
<author initials='Z.' surname='Hu' fullname='Z. Hu'><organization /></author>
<author initials='L.' surname='Zhu' fullname='L. Zhu'><organization /></author>
<author initials='J.' surname='Heidemann' fullname='J. Heidemann'><organization /></author>
<author initials='A.' surname='Mankin' fullname='A. Mankin'><organization /></author>
<author initials='D.' surname='Wessels' fullname='D. Wessels'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2016' month='May' />
<abstract><t>This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS.  Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626.  In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t><t>This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group.  It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t></abstract>
</front>
<seriesInfo name='RFC' value='7858'/>
<seriesInfo name='DOI' value='10.17487/RFC7858'/>
</reference>



<reference  anchor="RFC8484" target='https://www.rfc-editor.org/info/rfc8484'>
<front>
<title>DNS Queries over HTTPS (DoH)</title>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<author initials='P.' surname='McManus' fullname='P. McManus'><organization /></author>
<date year='2018' month='October' />
<abstract><t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS.  Each DNS query-response pair is mapped into an HTTP exchange.</t></abstract>
</front>
<seriesInfo name='RFC' value='8484'/>
<seriesInfo name='DOI' value='10.17487/RFC8484'/>
</reference>



<reference  anchor="RFC7231" target='https://www.rfc-editor.org/info/rfc7231'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t></abstract>
</front>
<seriesInfo name='RFC' value='7231'/>
<seriesInfo name='DOI' value='10.17487/RFC7231'/>
</reference>



<reference  anchor="RFC1928" target='https://www.rfc-editor.org/info/rfc1928'>
<front>
<title>SOCKS Protocol Version 5</title>
<author initials='M.' surname='Leech' fullname='M. Leech'><organization /></author>
<author initials='M.' surname='Ganis' fullname='M. Ganis'><organization /></author>
<author initials='Y.' surname='Lee' fullname='Y. Lee'><organization /></author>
<author initials='R.' surname='Kuris' fullname='R. Kuris'><organization /></author>
<author initials='D.' surname='Koblas' fullname='D. Koblas'><organization /></author>
<author initials='L.' surname='Jones' fullname='L. Jones'><organization /></author>
<date year='1996' month='March' />
<abstract><t>This memo describes a protocol that is an evolution of the previous version of the protocol, version 4 [1]. This new protocol stems from active discussions and prototype implementations.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='1928'/>
<seriesInfo name='DOI' value='10.17487/RFC1928'/>
</reference>



<reference  anchor="DNAME" target='https://www.rfc-editor.org/info/rfc6672'>
<front>
<title>DNAME Redirection in the DNS</title>
<author initials='S.' surname='Rose' fullname='S. Rose'><organization /></author>
<author initials='W.' surname='Wijngaards' fullname='W. Wijngaards'><organization /></author>
<date year='2012' month='June' />
<abstract><t>The DNAME record provides redirection for a subtree of the domain name tree in the DNS.  That is, all names that end with a particular suffix are redirected to another part of the DNS.  This document obsoletes the original specification in RFC 2672 as well as updates the document on representing IPv6 addresses in DNS (RFC 3363). [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6672'/>
<seriesInfo name='DOI' value='10.17487/RFC6672'/>
</reference>



<reference  anchor="RFC3597" target='https://www.rfc-editor.org/info/rfc3597'>
<front>
<title>Handling of Unknown DNS Resource Record (RR) Types</title>
<author initials='A.' surname='Gustafsson' fullname='A. Gustafsson'><organization /></author>
<date year='2003' month='September' />
<abstract><t>Extending the Domain Name System (DNS) with new Resource Record (RR) types currently requires changes to name server software.  This document specifies the changes necessary to allow future DNS implementations to handle new RR types transparently.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3597'/>
<seriesInfo name='DOI' value='10.17487/RFC3597'/>
</reference>



<reference  anchor="RFC3225" target='https://www.rfc-editor.org/info/rfc3225'>
<front>
<title>Indicating Resolver Support of DNSSEC</title>
<author initials='D.' surname='Conrad' fullname='D. Conrad'><organization /></author>
<date year='2001' month='December' />
<abstract><t>In order to deploy DNSSEC (Domain Name System Security Extensions) operationally, DNSSEC aware servers should only perform automatic inclusion of DNSSEC RRs when there is an explicit indication that the resolver can understand those RRs.  This document proposes the use of a bit in the EDNS0 header to provide that explicit indication and describes the necessary protocol changes to implement that notification. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3225'/>
<seriesInfo name='DOI' value='10.17487/RFC3225'/>
</reference>



<reference  anchor="ALPN" target='https://www.rfc-editor.org/info/rfc7301'>
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author initials='S.' surname='Friedl' fullname='S. Friedl'><organization /></author>
<author initials='A.' surname='Popov' fullname='A. Popov'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<author initials='E.' surname='Stephan' fullname='E. Stephan'><organization /></author>
<date year='2014' month='July' />
<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="RFC7050" target='https://www.rfc-editor.org/info/rfc7050'>
<front>
<title>Discovery of the IPv6 Prefix Used for IPv6 Address Synthesis</title>
<author initials='T.' surname='Savolainen' fullname='T. Savolainen'><organization /></author>
<author initials='J.' surname='Korhonen' fullname='J. Korhonen'><organization /></author>
<author initials='D.' surname='Wing' fullname='D. Wing'><organization /></author>
<date year='2013' month='November' />
<abstract><t>This document describes a method for detecting the presence of DNS64 and for learning the IPv6 prefix used for protocol translation on an access network.  The method depends on the existence of a well-known IPv4-only fully qualified domain name &quot;ipv4only.arpa.&quot;.  The information learned enables nodes to perform local IPv6 address synthesis and to potentially avoid NAT64 on dual-stack and multi-interface deployments.</t></abstract>
</front>
<seriesInfo name='RFC' value='7050'/>
<seriesInfo name='DOI' value='10.17487/RFC7050'/>
</reference>



<reference  anchor="RFC6147" target='https://www.rfc-editor.org/info/rfc6147'>
<front>
<title>DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers</title>
<author initials='M.' surname='Bagnulo' fullname='M. Bagnulo'><organization /></author>
<author initials='A.' surname='Sullivan' fullname='A. Sullivan'><organization /></author>
<author initials='P.' surname='Matthews' fullname='P. Matthews'><organization /></author>
<author initials='I.' surname='van Beijnum' fullname='I. van Beijnum'><organization /></author>
<date year='2011' month='April' />
<abstract><t>DNS64 is a mechanism for synthesizing AAAA records from A records. DNS64 is used with an IPv6/IPv4 translator to enable client-server communication between an IPv6-only client and an IPv4-only server, without requiring any changes to either the IPv6 or the IPv4 node, for the class of applications that work through NATs.  This document specifies DNS64, and provides suggestions on how it should be deployed in conjunction with IPv6/IPv4 translators.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6147'/>
<seriesInfo name='DOI' value='10.17487/RFC6147'/>
</reference>



<reference  anchor="RFC5952" target='https://www.rfc-editor.org/info/rfc5952'>
<front>
<title>A Recommendation for IPv6 Address Text Representation</title>
<author initials='S.' surname='Kawamura' fullname='S. Kawamura'><organization /></author>
<author initials='M.' surname='Kawashima' fullname='M. Kawashima'><organization /></author>
<date year='2010' month='August' />
<abstract><t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text.  While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users.  This document defines a canonical textual representation format.  It does not define a format for internal storage, such as within an application or database.  It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5952'/>
<seriesInfo name='DOI' value='10.17487/RFC5952'/>
</reference>



<reference  anchor="HSTS" target='https://www.rfc-editor.org/info/rfc6797'>
<front>
<title>HTTP Strict Transport Security (HSTS)</title>
<author initials='J.' surname='Hodges' fullname='J. Hodges'><organization /></author>
<author initials='C.' surname='Jackson' fullname='C. Jackson'><organization /></author>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2012' month='November' />
<abstract><t>This specification defines a mechanism enabling web sites to declare themselves accessible only via secure connections and/or for users to be able to direct their user agent(s) to interact with given sites only over secure connections.  This overall policy is referred to as HTTP Strict Transport Security (HSTS).  The policy is declared by web sites via the Strict-Transport-Security HTTP response header field and/or by other means, such as user agent configuration, for example. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6797'/>
<seriesInfo name='DOI' value='10.17487/RFC6797'/>
</reference>



<reference  anchor="WebSocket" target='https://www.rfc-editor.org/info/rfc6455'>
<front>
<title>The WebSocket Protocol</title>
<author initials='I.' surname='Fette' fullname='I. Fette'><organization /></author>
<author initials='A.' surname='Melnikov' fullname='A. Melnikov'><organization /></author>
<date year='2011' month='December' />
<abstract><t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code.  The security model used for this is the origin-based security model commonly used by web browsers.  The protocol consists of an opening handshake followed by basic message framing, layered over TCP.  The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or &lt;iframe&gt;s and long polling).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6455'/>
<seriesInfo name='DOI' value='10.17487/RFC6455'/>
</reference>



<reference  anchor="base64" target='https://www.rfc-editor.org/info/rfc4648'>
<front>
<title>The Base16, Base32, and Base64 Data Encodings</title>
<author initials='S.' surname='Josefsson' fullname='S. Josefsson'><organization /></author>
<date year='2006' month='October' />
<abstract><t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4648'/>
<seriesInfo name='DOI' value='10.17487/RFC4648'/>
</reference>



<reference  anchor="RFC8446" target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<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="RFC6066" target='https://www.rfc-editor.org/info/rfc6066'>
<front>
<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2011' month='January' />
<abstract><t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, &quot;The Transport Layer Security (TLS) Protocol Version 1.2&quot;.  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="RFC7595" target='https://www.rfc-editor.org/info/rfc7595'>
<front>
<title>Guidelines and Registration Procedures for URI Schemes</title>
<author initials='D.' surname='Thaler' fullname='D. Thaler' role='editor'><organization /></author>
<author initials='T.' surname='Hansen' fullname='T. Hansen'><organization /></author>
<author initials='T.' surname='Hardie' fullname='T. Hardie'><organization /></author>
<date year='2015' month='June' />
<abstract><t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes.  It obsoletes RFC 4395.</t></abstract>
</front>
<seriesInfo name='BCP' value='35'/>
<seriesInfo name='RFC' value='7595'/>
<seriesInfo name='DOI' value='10.17487/RFC7595'/>
</reference>



<reference  anchor="RFC5226" target='https://www.rfc-editor.org/info/rfc5226'>
<front>
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
<author initials='T.' surname='Narten' fullname='T. Narten'><organization /></author>
<author initials='H.' surname='Alvestrand' fullname='H. Alvestrand'><organization /></author>
<date year='2008' month='May' />
<abstract><t>Many protocols make use of identifiers consisting of constants and other well-known values.  Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec).  To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority.  For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t><t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made.  If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role.  This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t><t>This document obsoletes RFC 2434.  This document specifies an Internet Best  Current Practices for the Internet Community, and requests discussion and  suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='RFC' value='5226'/>
<seriesInfo name='DOI' value='10.17487/RFC5226'/>
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="FETCH" target="https://fetch.spec.whatwg.org/">
  <front>
    <title>Fetch Living Standard</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020" month="May"/>
  </front>
</reference>




<reference  anchor="AltSvc" target='https://www.rfc-editor.org/info/rfc7838'>
<front>
<title>HTTP Alternative Services</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='P.' surname='McManus' fullname='P. McManus'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke'><organization /></author>
<date year='2016' month='April' />
<abstract><t>This document specifies &quot;Alternative Services&quot; 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="DNSTerm" target='https://www.rfc-editor.org/info/rfc8499'>
<front>
<title>DNS Terminology</title>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<author initials='A.' surname='Sullivan' fullname='A. Sullivan'><organization /></author>
<author initials='K.' surname='Fujiwara' fullname='K. Fujiwara'><organization /></author>
<date year='2019' month='January' />
<abstract><t>The Domain Name System (DNS) is defined in literally dozens of different RFCs.  The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined.  This document gives current definitions for many of the terms used in the DNS in a single document.</t><t>This document obsoletes RFC 7719 and updates RFC 2308.</t></abstract>
</front>
<seriesInfo name='BCP' value='219'/>
<seriesInfo name='RFC' value='8499'/>
<seriesInfo name='DOI' value='10.17487/RFC8499'/>
</reference>



<reference  anchor="URI" target='https://www.rfc-editor.org/info/rfc3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<date year='2005' month='January' />
<abstract><t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='66'/>
<seriesInfo name='RFC' value='3986'/>
<seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>



<reference  anchor="RFC6895" target='https://www.rfc-editor.org/info/rfc6895'>
<front>
<title>Domain Name System (DNS) IANA Considerations</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2013' month='April' />
<abstract><t>This document specifies Internet Assigned Numbers Authority (IANA) parameter assignment considerations for the allocation of Domain Name System (DNS) resource record types, CLASSes, operation codes, error codes, DNS protocol message header bits, and AFSDB resource record subtypes.  It obsoletes RFC 6195 and updates RFCs 1183, 2845, 2930, and 3597.</t></abstract>
</front>
<seriesInfo name='BCP' value='42'/>
<seriesInfo name='RFC' value='6895'/>
<seriesInfo name='DOI' value='10.17487/RFC6895'/>
</reference>



<reference anchor="I-D.draft-bellis-dnsop-http-record-00">
<front>
<title>A DNS Resource Record for HTTP</title>

<author initials='R' surname='Bellis' fullname='Ray Bellis'>
    <organization />
</author>

<date month='November' day='3' year='2018' />

<abstract><t>This document specifies an "HTTP" resource record type for the DNS to facilitate the lookup of the server hostname of HTTP(s) URIs.  It is intended to replace the use of CNAME records for this purpose, and in the process provides a solution for the inability of the DNS to allow a CNAME to be placed at the apex of a domain name.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-bellis-dnsop-http-record-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-bellis-dnsop-http-record-00.txt' />
</reference>



<reference anchor="I-D.draft-ietf-dnsop-aname-03">
<front>
<title>Address-specific DNS aliases (ANAME)</title>

<author initials='T' surname='Finch' fullname='Tony Finch'>
    <organization />
</author>

<author initials='E' surname='Hunt' fullname='Evan Hunt'>
    <organization />
</author>

<author initials='P' surname='Dijk' fullname='Peter van Dijk'>
    <organization />
</author>

<author initials='A' surname='Eden' fullname='Anthony Eden'>
    <organization />
</author>

<author initials='W' surname='Mekking' fullname='Willem Mekking'>
    <organization />
</author>

<date month='April' day='15' year='2019' />

<abstract><t>This document defines the "ANAME" DNS RR type, to provide similar functionality to CNAME, but only for type A and AAAA queries.  Unlike CNAME, an ANAME can coexist with other record types.  The ANAME RR allows zone owners to make an apex domain name into an alias in a standards compliant manner.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-dnsop-aname-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-dnsop-aname-03.txt' />
</reference>



<reference  anchor="RFC2782" target='https://www.rfc-editor.org/info/rfc2782'>
<front>
<title>A DNS RR for specifying the location of services (DNS SRV)</title>
<author initials='A.' surname='Gulbrandsen' fullname='A. Gulbrandsen'><organization /></author>
<author initials='P.' surname='Vixie' fullname='P. Vixie'><organization /></author>
<author initials='L.' surname='Esibov' fullname='L. Esibov'><organization /></author>
<date year='2000' month='February' />
<abstract><t>This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2782'/>
<seriesInfo name='DOI' value='10.17487/RFC2782'/>
</reference>




    </references>


<section anchor="comparison-with-alternatives" title="Comparison with alternatives">

<t>The SVCB and HTTPSSVC record types closely resemble,
and are inspired by, some existing
record types and proposals.  A complaint with all of the alternatives
is that web clients have seemed unenthusiastic about implementing
them.  The hope here is that by providing an extensible solution that
solves multiple problems we will overcome the inertia and have a path
to achieve client implementation.</t>

<section anchor="differences-from-the-srv-rr-type" title="Differences from the SRV RR type">

<t>An SRV record <xref target="RFC2782"/> can perform a similar function to the SVCB record,
informing a client to look in a different location for a service.
However, there are several differences:</t>

<t><list style="symbols">
  <t>SRV records are typically mandatory, whereas clients will always
continue to function correctly without making use of SVCB.</t>
  <t>SRV records cannot instruct the client to switch or upgrade
protocols, whereas SVCB can signal such an upgrade (e.g. to
HTTP/2).</t>
  <t>SRV records are not extensible, whereas SVCB and HTTPSSVC
can be extended with new parameters.</t>
</list></t>

</section>
<section anchor="differences-from-the-proposed-http-record" title="Differences from the proposed HTTP record">

<t>Unlike <xref target="I-D.draft-bellis-dnsop-http-record-00"/>, this approach is
extensible to cover Alt-Svc and Encrypted ClientHello use-cases.  Like that
proposal, this addresses the zone apex CNAME challenge.</t>

<t>Like that proposal, it remains necessary to continue to include
address records at the zone apex for legacy clients.</t>

</section>
<section anchor="differences-from-the-proposed-aname-record" title="Differences from the proposed ANAME record">

<t>Unlike <xref target="I-D.draft-ietf-dnsop-aname-03"/>, this approach is extensible to
cover Alt-Svc and ECH use-cases.  This approach also does not
require any changes or special handling on either authoritative or
master servers, beyond optionally returning in-bailiwick additional records.</t>

<t>Like that proposal, this addresses the zone apex CNAME challenge
for clients that implement this.</t>

<t>However, with this SVCB proposal, it remains necessary to continue
to include address records at the zone apex for legacy clients.
If deployment of this standard is successful, the number of legacy clients
will fall over time.  As the number of legacy clients declines, the operational
effort required to serve these users without the benefit of SVCB indirection
should fall.  Server operators can easily observe how much traffic reaches this
legacy endpoint, and may remove the apex’s address records if the observed legacy
traffic has fallen to negligible levels.</t>

</section>
<section anchor="comparison-with-separate-rr-types-for-aliasform-and-serviceform" title="Comparison with separate RR types for AliasForm and ServiceForm">

<t>Abstractly, functions of AliasForm and ServiceForm are independent,
so it might be tempting to specify them as separate RR types.  However,
this would result in a serious performance impairment, because clients
cannot rely on their recursive resolver to follow SVCB aliases (unlike
CNAME).  Thus, clients would have to issue queries for both RR types
in parallel, potentially at each step of the alias chain.  Recursive
resolvers that implement the specification would, upon receipt of a
ServiceForm query, emit both a ServiceForm and an AliasForm query to
the authoritative.  Thus, splitting the RR type would double, or in
some cases triple, the load on clients and servers, and would not
reduce implementation complexity.</t>

</section>
</section>
<section anchor="design-considerations-and-open-issues" title="Design Considerations and Open Issues">

<t>This draft is intended to be a work-in-progress for discussion.
Many details are expected to change with subsequent refinement.
Some known issues or topics for discussion are listed below.</t>

<section anchor="record-name" title="Record Name">

<t>Naming is hard.  “SVCB” and “HTTPSSVC” are proposed as placeholders
that are easy to search for and replace when a final
name is chosen.
Other names for this record might include B, ALTSVC,
HTTPS, HTTPSSRV, HTTPSSVC, SVCHTTPS, or something else.</t>

</section>
<section anchor="generality" title="Generality">

<t>The SVCB record was designed as a generalization of HTTPSSVC,
based on feedback requesting a solution that applied to protocols
other than HTTP.  Past efforts
to over-generalize have not met with broad success, but we
hope that HTTPSSVC and SVCB have struck an acceptable balance between
generality and focus.</t>

</section>
<section anchor="wire-format" title="Wire Format">

<t>Advice from experts in DNS wire format best practices would be greatly
appreciated to refine the proposed details, overall.</t>

</section>
<section anchor="whether-to-include-weight" title="Whether to include Weight">

<t>Some other similar mechanisms such as SRV have a weight in addition
to priority.  That is excluded here for simplicity.  It could always be
added as an optional SVCB parameter.</t>

</section>
</section>
<section anchor="change-history" title="Change history">

<t><list style="symbols">
  <t>draft-ietf-dnsop-svcb-httpssvc-03
  <list style="symbols">
      <t>Revised chain length limit requirements</t>
      <t>Revised IANA registry rules for SvcParamKeys</t>
      <t>Require HTTPS clients to implement SNI</t>
      <t>Update terminology for Encrypted ClientHello</t>
      <t>Clarifications: non-default ports, transport proxies, HSTS procedure, WebSocket behavior, wire format, IP hints, inner/outer ClientHello with ECH</t>
      <t>Various textual and ABNF corrections</t>
    </list></t>
  <t>draft-ietf-dnsop-svcb-httpssvc-02
  <list style="symbols">
      <t>All changes to Alt-Svc have been removed</t>
      <t>Expanded and reorganized examples</t>
      <t>Priority zero is now the definition of AliasForm</t>
      <t>Repeated SvcParamKeys are no longer allowed</t>
      <t>The “=” sign may be omitted in a key=value pair if the value is also empty</t>
      <t>In the wire format, SvcParamKeys must be in sorted order</t>
      <t>New text regarding how to handle resolution timeouts</t>
      <t>Expanded description of recursive resolver behavior</t>
      <t>Much more precise description of the intended ALPN behavior</t>
      <t>Match the HSTS specification’s language on HTTPS enforcement</t>
      <t>Removed ‘esniconfig=””’ mechanism and simplified ESNI connection logic</t>
    </list></t>
  <t>draft-ietf-dnsop-svcb-httpssvc-01
  <list style="symbols">
      <t>Reduce the emphasis on conversion between HTTPSSVC and Alt-Svc</t>
      <t>Make the “untrusted channel” concept more precise.</t>
      <t>Make SvcFieldPriority = 0 the definition of AliasForm, instead of a requirement.</t>
    </list></t>
  <t>draft-ietf-dnsop-svcb-httpssvc-00
  <list style="symbols">
      <t>Document an optimization for optimistic pre-connection. (Chris Wood)</t>
      <t>Relax IP hint handling requirements. (Eric Rescorla)</t>
    </list></t>
  <t>draft-nygren-dnsop-svcb-httpssvc-00
  <list style="symbols">
      <t>Generalize to an SVCB record, with special-case
handling for Alt-Svc and HTTPS separated out
to dedicated sections.</t>
      <t>Split out a separate HTTPSSVC record for
the HTTPS use-case.</t>
      <t>Remove the explicit SvcRecordType=0/1 and instead
make the AliasForm vs ServiceForm be implicit.
This was based on feedback recommending against
subtyping RR type.</t>
      <t>Remove one optimization.</t>
    </list></t>
  <t>draft-nygren-httpbis-httpssvc-03
  <list style="symbols">
      <t>Change redirect type for HSTS-style behavior
from 302 to 307 to reduce ambiguities.</t>
    </list></t>
  <t>draft-nygren-httpbis-httpssvc-02
  <list style="symbols">
      <t>Remove the redundant length fields from the wire format.</t>
      <t>Define a SvcDomainName of “.” for SvcRecordType=1
as being the HTTPSSVC RRNAME.</t>
      <t>Replace “hq” with “h3”.</t>
    </list></t>
  <t>draft-nygren-httpbis-httpssvc-01
  <list style="symbols">
      <t>Fixes of record name.  Replace references to “HTTPSVC” with “HTTPSSVC”.</t>
    </list></t>
  <t>draft-nygren-httpbis-httpssvc-00
  <list style="symbols">
      <t>Initial version</t>
    </list></t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

