<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-manuben-svcb-testing-flag-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="The SVCB &quot;testing&quot; flag">The "testing" flag for Service Binding (SVCB) Records</title>
    <seriesInfo name="Internet-Draft" value="draft-manuben-svcb-testing-flag-00"/>
    <author fullname="Benjamin M. Schwartz">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>ietf@bemasc.net</email>
      </address>
    </author>
    <author fullname="Manu Bretelle">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>chantr4@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="February" day="12"/>
    <abstract>
      <?line 32?>

<t>This draft defines a flag to mark a service endpoint as being potentially unreliable.  This flag may be useful when introducing new features that could have a negative impact on availability.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-manuben-svcb-testing-flag/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/bemasc/svcb-testing-flag"/>.</t>
    </note>
  </front>
  <middle>
    <?line 36?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Service Binding (SVCB) DNS record type <xref target="RFC9460"/>, and SVCB-compatible types like HTTPS, convey a collection of endpoints that can provide a service, along with metadata about each of those endpoints.  This metadata can indicate protocol features that are available and supported on those endpoints.</t>
      <t>In most cases, advertising new features is unlikely to render the service unavailable.  Clients that are unaware of these features will ignore them, and clients that are aware will fall back to other SVCB records or other connection modes if the feature doesn't work.  However, for security-enhancing features, this fallback behavior would create a loss of security against an active attacker, so it is generally not allowed.  Instead, if the feature does not work as expected, the client will "fail closed".  This behavior can make it challenging to deploy security-enhancing features, as the initial public deployment can create an outage if the service is misconfigured.</t>
      <t>This document defines a new SVCB SvcParam to help service operators offer new security features.  By marking these features as still being tested, the operator advises the client to interpret problems as an accidental failure by the operator, not a malicious action by an active attacker.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="specification">
      <name>Specification</name>
      <t>The "testing" flag is a SvcParam that always has an empty value in presentation and wire format.  When present, this flag indicates that this ServiceMode record is subject to outages, and clients <bcp14>SHOULD NOT</bcp14> interpret connection failures as evidence of an active attack.</t>
      <t>Service owners <bcp14>SHOULD</bcp14> ensure that this flag is mandatory, either explicitly (by adding <tt>mandatory=testing</tt> to the SvcParams) or implicitly if this parameter is "automatically mandatory" for the protocol mapping.  Future protocol mappings <bcp14>SHOULD</bcp14> make this SvcParam "automatically mandatory".</t>
      <section anchor="interaction-with-svcpriority">
        <name>Interaction with SvcPriority</name>
        <t>Clients <bcp14>SHOULD NOT</bcp14> alter the priority of SVCB records based on the presence of the "testing" flag.  Deprioritizing SVCB records with this flag would result in little or no user traffic making use of the testing record, which would defeat the goal of validating that new features function correctly for real users.</t>
      </section>
      <section anchor="example-encrypted-dns-protocol">
        <name>Example: Encrypted DNS Protocol</name>
        <t>Consider the case of a plaintext DNS server operator at "dns.example.com" who would like to announce support for DNS over TLS <xref target="RFC7858"/>.  Per <xref target="RFC9461"/>, this operator could publish a record like:</t>
        <artwork><![CDATA[
_dns.dns.example.com. SVCB 1 . alpn=dot
]]></artwork>
        <t>Clients following <xref target="RFC9461"/> would retrieve this record, observe that DNS over TLS is available, and attempt to use it on TCP port 853.  If the TLS session cannot be established for any reason, a compliant client will not fall back to plaintext DNS on UDP port 53, because the failure could indicate an active attack (<xref section="8.2" sectionFormat="comma" target="RFC9461"/>).  If the operator of "dns.example.com" does not have operational confidence in their DNS over TLS service, this failure mode could raise concerns about the potential consequences of offering this new service.</t>
        <t>To reduce the risk associated with this new service, the operator could instead use the new "testing" flag as follows:</t>
        <artwork><![CDATA[
_dns.dns.example.com. SVCB 1 . alpn=dot testing mandatory=testing
]]></artwork>
        <t>Clients that do not implement this specification will ignore the record because it specifies an unrecognized mandatory SvcParam.  They will continue to use plaintext DNS.  Clients that respect the "testing" flag will attempt to use DNS over TLS, but they will fall back to plaintext DNS if DNS over TLS is non-functional.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Use of the "testing" flag explicitly disables SVCB's defense against active attackers.  This is a loss in security.  However, the intent of this flag is to facilitate the deployment of security-enhancing protocols.  Downgrade-resistant security is achieved only when the testing period is complete and the "testing" flag is removed.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to add this entry to the SVCB SvcParams Registry:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Number</th>
            <th align="left">Name</th>
            <th align="left">Meaning</th>
            <th align="left">Change Controller</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">testing</td>
            <td align="left">Endpoint may be unreliable</td>
            <td align="left">IETF</td>
            <td align="left">(This document)</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). 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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7858">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="2016"/>
            <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="RFC9461">
          <front>
            <title>Service Binding Mapping for DNS Servers</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>The SVCB DNS resource record type expresses a bound collection of endpoint metadata, for use when establishing a connection to a named service. DNS itself can be such a service, when the server is identified by a domain name. This document provides the SVCB mapping for named DNS servers, allowing them to indicate support for encrypted transport protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9461"/>
          <seriesInfo name="DOI" value="10.17487/RFC9461"/>
        </reference>
        <reference anchor="I-D.dnsop-deleg">
          <front>
            <title>Extensible Delegation for DNS</title>
            <author fullname="Tim April" initials="T." surname="April">
         </author>
            <author fullname="Petr Špaček" initials="P." surname="Špaček">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Ralf Weber" initials="R." surname="Weber">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="David C Lawrence" initials="" surname="Lawrence">
              <organization>Salesforce</organization>
            </author>
            <date day="23" month="January" year="2024"/>
            <abstract>
              <t>   A delegation in the Domain Name System (DNS) is a mechanism that
   enables efficient and distributed management of the DNS namespace.
   It involves delegating authority over subdomains to specific DNS
   servers via NS records, allowing for a hierarchical structure and
   distributing the responsibility for maintaining DNS records.

   An NS record contains the hostname of the nameserver for the
   delegated namespace.  Any facilities of that nameserver must be
   discovered through other mechanisms.  This document proposes a new
   extensible DNS record type, DELEG, which contains additional
   information about the delegated namespace and the capabilities of
   authoritative nameservers for the delegated namespace.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dnsop-deleg-00"/>
        </reference>
      </references>
    </references>
    <?line 108?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This proposal is inspired by deployment considerations related to <xref target="I-D.dnsop-deleg"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
