<?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.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gakiwate-dnsop-svcb-sla-parameter-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.0 -->
  <front>
    <title>Service Binding Mapping for Service Levels</title>
    <seriesInfo name="Internet-Draft" value="draft-gakiwate-dnsop-svcb-sla-parameter-00"/>
    <author fullname="Gautam Akiwate">
      <organization>Apple Inc</organization>
      <address>
        <email>gakiwate@apple.com</email>
      </address>
    </author>
    <author fullname="Tommy Pauly">
      <organization>Apple Inc</organization>
      <address>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <date year="2025" month="February" day="28"/>
    <area/>
    <workgroup>Domain Name System Operations</workgroup>
    <abstract>
      <?line 36?>

<t>This document defines a new SvcParamKey for use in Service Binding (SVCB) and
HTTPS DNS resource records which enables authoritative DNS servers to indicate
that a service should be used by clients having specific service levels
or use types, such as "interactive", "background" or "realtime". By providing this
information, clients can make informed decisions about which service endpoints
to use based on specific applications needs at that time of making connections.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://gakiwate.github.io/draft-gakiwate-dnsop-svcb-sla-parameter/draft-gakiwate-dnsop-svcb-sla-parameter.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-gakiwate-dnsop-svcb-sla-parameter/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Domain Name System Operations  mailing list (<eref target="mailto:dnsop@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dnsop/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dnsop/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/gakiwate/draft-gakiwate-dnsop-svcb-sla-parameter"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The SVCB and HTTPS resource records (RRs) provide clients with instructions to
connect to a service while avoiding transient connections to a suboptimal
default server <xref target="SVCB"/>. However, there are scenarios in which a server
deployment might want client applications to interact differently with the service
based on the specific client needs at the time.  Traditionally, the solution to
this problem has been to create separate services --- one for "interactive"
tasks and another for "background" tasks.  However, there are scenarios where
a service with a single hostname needs to be used by both "background" and
"interactive" clients.</t>
      <t>The document defines a new SvcParamKey "sla", short for Service Level Attribute,
to provide a standardized way for a client to dynamically discover different
service endpoints offering different service levels using SVCB / HTTPS RRs.
This parameters allows client applications to filter out which services apply
to them at the time of using DNS answers to establish connections.</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="motivation">
      <name>Motivation</name>
      <t>In modern network environments, deployment scenarios often involve diverse
application traffic types, such as interactive video conferencing, real-time
gaming, and background file synchronization, each with distinct performance
requirements. Interactive traffic typically demands low latency and high
responsiveness, while background traffic prioritizes throughput and efficiency
over immediacy. Moreover, where in the network enviornment these demands can
be relaibly and efficiently met also differ.</t>
      <t>The "sla" SvcParamKey enables authoritative DNS servers to signal these
distinctions, thereby allowing clients to route traffic intelligently.  This
capability is particularly useful in load-balancing scenarios, where providers
can allocate interactive traffic to low-latency, high-performance servers while
directing background tasks to cost-effective, lower-performance infrastructure.</t>
      <t>Allowing clients explicit control over which service level to use benefits a
range of stakeholders, including service operators, by improving quality of
service (QoS), optimizing resource utilization, and enhancing end-user
experience.</t>
    </section>
    <section anchor="the-sla-svcparamkey">
      <name>The "sla" SvcParamKey</name>
      <t>The "sla" SvcParamKey, short for Service Level Attribute, is used to indicate that
a service described in SVCB RR supports a specific service level use type. A
endpoint can support multiple service levels. To support multiple service level
types at different endpoints, multiple SVCB / HTTPS RRs <bcp14>SHOULD</bcp14> be used.</t>
      <t>The presentation value for "sla" <bcp14>SHALL</bcp14> be a comma-seperated list
of one or more integers (1-octet) indicating the service level use. A service
endpoint may serve more than one service level. A lower value indicates a more
cost-effective, lower-performance endpoint while a higher value indicates a
low-latency, high-performance endpoint.  A <tt>sla=0</tt> can be thought of as a
endpoint supporting "background" tasks such as performing backups.  A <tt>sla=1</tt>
can be thought of as a endpoint supporting "interactive" tasks such sending
messages, while a <tt>sla=2</tt> can be thought of as a endpoint supporting "real-time"
tasks such as invoking a voice assistant.  This documents defines three service
levels, and restricts the values of sla to 0, 1, or 2.  Future documents may
choose to extend this number.</t>
      <t>The wire format for the "sla" parameter is a sequence of service levels each
denoted by a 1-octet numeric.</t>
      <section anchor="client-behavior">
        <name>Client Behavior</name>
        <t>The "sla" SvcParamKey in the SVCB / HTTPS records indicates that the domain
owner recommends the use a specific endpoint for a specific service level use
type. On receiving RRs with the "sla" SvcParamKey, clients <bcp14>SHOULD</bcp14> use it as a
filter to decide which RRs to use when.  Since this document only defines three
service levels, a client <bcp14>SHOULD</bcp14> ignore any SVCB RRs with an "sla" value greater
than 2. It is possible that certain RRs are never used by some clients.</t>
        <t>To use the SVCB / HTTPS RRs, the client first determines its service level. The
client then filters down to only SVCB / HTTPS RRs that match its own perceived
service level. A SVCB / HTTPS RR is considered to match if any of the "sla"
values associated match the client's service level.  A RR without a "sla" value
is considered equivalent to <tt>sla=0,1,2</tt> and thus matches all client service
levels.</t>
        <t>Once the client filters SVCB / HTTPS RRs to ones that offer the service level it
desires, the client proceeds with processing the remaining SVCB / HTTPS RRs as
normal.  If no RRs match, SVCB resolution has failed, and the list of available
endpoints is empty. To prevent this behavior, service operators <bcp14>SHOULD</bcp14> ensure
that the complete set of SVCB RRs contains all "sla" levels; this can be done
either by having each level explicitly in some SVCB RR, or by having a
SVCB RR that does not contain the "sla" parameter.</t>
      </section>
      <section anchor="example-use">
        <name>Example Use</name>
        <t>A service that supports "interactive" and "background" endpoints can signal
support to the client by populating SVCB / HTTPS RRs as so:</t>
        <artwork><![CDATA[
svc.example.com 7200 IN SVCB 1 background.svc.example.com (
    alpn=h2, sla=0, mandatory=sla )
svc.example.com 7200 IN SVCB 1 interactive.svc.example.com (
    alpn=h2, sla=1,2 )
]]></artwork>
        <t>In the above example, a client that determines it wants a "realtime" (sla=2)
service level will first filter for RRs with an <tt>sla</tt> value of 2. In this case,
only one RR satisfies the constraint and the client can use
<tt>interactive.svc.example.com</tt> endpoint. The service operator can also use the
<tt>mandatory</tt> flag for the background service, so that clients who do not support
the "sla" SvcParamKey default to their endpoint of choice.</t>
        <t>A service operator can also have the same service level offered at multiple
service endpoints, as seen in the following example:</t>
        <artwork><![CDATA[
svc.example.com 7200 IN SVCB 1 interactive.svc.example.com (
    alpn=h2, sla=1 )
svc.example.com 7200 IN SVCB 2 . (
    alpn=h2, sla=0,1,2 )
]]></artwork>
        <t>With this additional RR, a client that determines its application has an "interactive"
(sla=1) service level will match both RRs. After allowing both of these RRs,
the client will the proceed to process the RRs as before. In this case, since
the RRs have different SvcPriority levels, the client will prefer
"interactive.svc.example.com".</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO: Security considerations</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="svcb-service-parameter">
        <name>SVCB Service Parameter</name>
        <t>Once standardized, this document would ask to add the following entry to the
"Service Parameter Keys (SvcParamKeys)" 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">sla</td>
              <td align="left">Service Level Attribute</td>
              <td align="left"> </td>
              <td align="left">(this document)</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="SVCB">
        <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>
    <?line 204?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
    </section>
  </back>
  <!-- ##markdown-source:
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
AAA=

-->

</rfc>
