<?xml version="1.0" encoding="utf-8"?>
<!--
     draft-rfcxml-general-template-annotated-00

     This template includes examples of most of the features of RFCXML with comments explaining
     how to customise them, and examples of how to achieve specific formatting.

     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> --> 
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-meng-tsvwg-service-agnostic-dscp-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">
<!--
    * docName should be the name of your draft
    * category should be one of std, bcp, info, exp, historic
    * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
    * updates can be an RFC number as NNNN
    * obsoletes can be an RFC number as NNNN 
-->

  <front>
    <title abbrev="Service Agnostic DSCP Semantics">A Service-Agnostic Semantics for Differentiated Services Code Point (DSCP)</title> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#title-4 -->
    <!--  The abbreviated title is required if the full title is longer than 39 characters -->

    <seriesInfo name="Internet-Draft" value="draft-meng-tsvwg-service-agnostic-dscp-00"/> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#seriesinfo -->
    <!-- Set value to the name of the draft  -->

    <author fullname="Tong Meng" initials="T" surname="Meng"> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#author -->
    <!-- initials should not include an initial for the surname -->
    <!-- role="editor" is optional -->
    <!-- Can have more than one author -->

    <!-- all of the following elements are optional -->
      <organization>Huawei Technologies</organization> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#organization -->
      <address> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#address -->
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Shanghai</city>
          <country>CN</country>
          <!-- Can use two letter country code -->
        </postal>
        <email>mengtong1@huawei.com</email>
        <!-- Can have more than one <email> element -->
      </address>
    </author>

    <author fullname="Yu Yin" initials="Y" surname="Yin"> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#author -->
    <!-- initials should not include an initial for the surname -->
    <!-- role="editor" is optional -->
    <!-- Can have more than one author -->

    <!-- all of the following elements are optional -->
      <organization>Huawei Technologies</organization> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#organization -->
      <address> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#address -->
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Shanghai</city>
          <country>CN</country>
          <!-- Can use two letter country code -->
        </postal>
        <email>rain.yinyu@huawei.com</email>
        <!-- Can have more than one <email> element -->
      </address>
    </author>

    <date year="2023" month="3" day="13"/> <!-- https://authors.ietf.org/en/rfcxml-vocabulary#date -->
    <!-- On draft submission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->

    <area>Transport</area>
    <workgroup>TSVWG</workgroup>
    <!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is
          not present, the default is "Network Working Group", which is used by the RFC Editor as
          a nod to the history of the RFC Series. -->

    <keyword>DiffServ Semantics, DSCP Semantics</keyword>
    <!-- Multiple keywords are allowed.  Keywords are incorporated into HTML output files for
         use by search engines. -->

    <abstract>
      <t>This memo proposes a service-agnostic semantics for Differentiated Services Code Point (DSCP). It disassociates DSCP from classification of service classes. Instead, individual packets are marked dynamically in a Quality-of-Experience (QoE)-aware manner. Such a more flexible use of Differentiated Services (DiffServ) involves interactions with transport protocols on application hosts. Meanwhile, the semantics adds no complexity to traffic conditioning and Per-Hop-Behavior (PHB) enforcement within DiffServ network domain.</t>
    </abstract>

  </front>

  <middle>

    <section anchor="introduction">
    <!-- The default attributes for <section> are numbered="true" and toc="default" -->
      <name>Introduction</name>
      <t>This memo proposes a service-agnostic semantics for Differentiated Services Code Point (DSCP). It treats each DSCP as simple as a network Quality-of-Service (QoS), without extra attributes of service class as recommended in other RFCs. Being service-agnostic enables flexible use of Differentiated Services (DiffServ), and involves interactions with transport protocols. In particular, application hosts can determine per-packet DSCP marking in a Quality-of-Experience (QoE)-aware manner. Meanwhile, the semantics adds no complexity to traffic conditioning and Per-Hop-Behavior (PHB) enforcement in the network.</t>

      <t>This memo is organized as follows. <xref target="terminology"/> explains important terms. <xref target="issues"/> illustrates the limitations of DSCP semantics associated with service class. <xref target="semantics"/> describes the service-agnostic semantics and provides an illustrating example on DSCP marking. <xref target="interaction"/> explains transport protocol interactions. <xref target="security"/> and <xref target="iana"/> cover security and IANA considerations, respectively.</t>
    </section>

    <section anchor="terminology">
      <name>Terminology</name>
      <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>

      <t>Other terms used in this memo are explained below.</t>
      <dl indent="24">
        <dt>Service class</dt>
        <dd>A set of applications with similar traffic characteristics and performance requirements, as defined in <xref target="RFC4594"/>.</dd>
        <dt>Subflow</dt>
        <dd>A flow of packets traversing an individual path in a multipath connection, as defined in <xref target="RFC8684"/>.</dd>
        <dt>Transport connection</dt>
        <dd>A transport connection refers to a transport-layer flow using a single path or a multipath connection composed of multiple subflows.</dd>
        <dt>Transport-layer flow</dt>
        <dd>A single-path flow of packets identified by the 5-tuple (i.e., source and destination IP addresses, source and destination ports, transport protocol), which has the same meaning in <xref target="RFC7657"/>.</dd>
      </dl>
      <!-- <t>The term "service class" is as defined in <xref target="RFC4594"/>. The term "transport-layer flow" has the same meaning as in <xref target="RFC7657"/>, referring to a single-path flow of packets that is identified by the 5-tuple (i.e., source and destination IP addresses, source and destination ports, transport protocol). The term "subflow" is adopted from <xref target="RFC8684"/>, representing a flow of packets traversing an individual path in a multipath connection.</t> -->
    </section>

    <section anchor="issues">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Limitations of Service-Dependent DSCP Semantics</name>
      <t>To achieve scalable QoS discrimination, existing discussion on Differentiated Services (DiffServ) architecture classifies the vast number of applications into a few service classes <xref target="RFC4594"/> according to their high-level traffic characteristics. Differentiated Services Code Points (DSCPs) and Per-Hop-Behaviors (PHBs) are associated to those service classes. Such a service-dependent DSCP semantics restricts the flexibility of DiffServ usage, and undermines its effectiveness in some cases.</t>
      <!-- The same DSCP (or DSCP prefix for Assured Forwarding <xref target="RFC2597"/>) and PHB group SHOULD be used for all packets with the same 5-tuple <xref target="RFC4594"/> or belonging to the same media stream <xref target="RFC8837"/>. -->

      <t>The coarse classification granularity may result in excessively high pressure on the network. A typical scenario is when a single DSCP (or a group of DSCPs for an Assured Forwarding (AF) class <xref target="RFC2597"/>) is used for a transport-layer flow, which multiplexes multiple traffic streams corresponding to heterogeneous types of services. The flow-level DSCP marking should be determined by the highest QoS requirements for all streams, such that the employed PHB group is effectively over-provisioned for any individual stream. Although <xref target="RFC7657"/> and <xref target="RFC8837"/> recommend different DSCP markings for multiplexed Real-time Transport Protocol (RTP) streams in Real-Time Communication (RTC), a single media stream of immersive and interactive applications can still have stringent throughput and latency requirements, e.g., a responsive UHD video stream in cloud gaming. The resulting provision pressure makes it hard for the network bottleneck to scale to a large volume of concurrent traffic. Besides, involved peering parties may have to deal with excessive settlement fees.</t>

      <t>More importantly, those flow-level or stream-level requirements may involve conflicting QoS indicators. For example, cellular base station usually conducts low-layer retransmission and reordering to compensate the unreliable wireless communication media. That has been demonstrated to cause the tradeoff between high throughput and low latency <xref target="L4S5G"/>. Therefore, an atomic PHB group ensuring both high throughput and low latency consumes considerable physical resources (e.g., frequency and time slot), impacting network utilization efficiency. What is worse, such an atomic PHB group may exceed the QoS capabilities of some network bottlenecks, especially those highly fluctuating wireless access links.</t>

      <t>In addition, DSCP marking strictly following classification of service classes may be inadequate to guarantee consistently satisfying QoE. An individual media stream may require a higher priority than RFC recommendations, e.g., to resist temporary network fluctuation or experience degradation. For example, according to <xref target="RFC8837"/>, the highest priority recommended for a non-interactive video stream is the AF3 class. However, the AF4 class may benefit the stream when it needs to recover from rebuffering. Different from relatively static per-stream priority considered in <xref target="RFC8837"/>, the above priority escalation is dynamically triggered for a limited time period within the stream lifetime.</t>

      <t>To summarize, the fundamental issue of service-dependent DSCP semantics is that it ignores packet-level dynamics of traffic priorities and requirements. Not all packets of the same high-priority service class demand better-than-best-effort treatment. Similarly, any service class may have individual packets with higher-than-recommended priority. That motivates a service-agnostic semantics.</t>
    </section>

    <section anchor="semantics">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Service-Agnostic DSCP Semantics</name>

      <section>
        <name>Semantics Overview</name>
        <t>There are two fundamental requirements on a service-agnostic DSCP semantics:</t>
        <ol type="(%d)">
          <li>Flexibility. The DiffServ architecture already enables decoupling of service classes from particular applications <xref target="RFC2475"/>. On that basis, DSCPs and corresponding PHB groups SHOULD further be decoupled from classification of service classes.</li>
          <li>Scalability. Inherited from the service-dependent DSCPs, per-flow state and hop-by-hop signaling SHOULD continue to be avoided at core network nodes <xref target="RFC2475"/>. The classification and conditioning at network boundaries SHOULD not be complicated, either.</li>
        </ol>

        <t>To ensure flexibility, application hosts SHOULD mark DSCPs on a per-packet basis, based on the following inputs:</t>
        <ul>
          <li>packet-level dynamic priority and requirement such as significance to real-time application QoE, possibly subject to differences in client preferences,</li>
          <li>service class to which each packet belongs to, used as a reference marking policy,</li>
          <li>service-level agreements (SLAs) with peering network domains, including traffic conditioning rules.</li>
        </ul>
        <t>Briefly, from application hosts' perspective, each DSCP, along with its associated PHB, represents a network QoS subject to SLAs. The core objective of DSCP marking is to optimize application QoE, while conforming to possible conditioning rules on premium QoS in SLAs.</t>

        <t>Other than that, the service-agnostic DSCP semantics requires no changes to network nodes in a DiffServ domain, and thus maintain the scalability of DiffServ. Application hosts still rely on the same set of PHBs. The traffic conditioning and queueing mechanisms specific to each PHB group may be kept the same, as well. Note that this memo does not obsolete the recommendations in other RFCs. Service-dependent DSCP marking may still be employed, e.g., when the required transport protocol interactions in <xref target="interaction"/> are not supported.</t>

        <t>The remainder of this section gives an example to illustrate how per-packet dynamic DSCP marking is conducted.</t>
      </section>

      <section>
        <name>Example Scenario</name>
        <t>A CDN server needs to send a live video stream to a client. The following types of packets are transmitted over the same transport connection.</t>
        <ul>
          <li>Packets belonging to an I-frame and sent for the first time, which contain a complete image and can be rendered independently.</li>
          <li>Packets belonging to a P-frame and sent for the first time, which contain changes from the previous I-frame or P-frame and should be rendered on basis of that previous frame.</li>
          <li>Retransmitted packets, which are passive retransmission happening after a lost packet/frame is detected.</li>
          <li>Redundancy packets, which are proactively injected duplicates of first-time packets to lower the possibility of rebuffering. Such redundancy injection may be triggered for a short time after several consecutive packet losses. The server may also transmit duplicates of selective packets when it estimates that there is a risk of video rebuffering based on packet reception feedback.</li>
        </ul>

        <t><xref target="exampledscps"/> gives recommended DSCP marking for different packets. Details on AF and Expedited Forwarding (EF) can be found in <xref target="RFC2597"/> and <xref target="RFC3246"/>, respectively.</t>
        <table anchor="exampledscps" align="center">
          <name>
            Recommended DSCPs for Live Video
          </name>
          <thead>
            <tr><th>Packet Type</th><th>Default</th><th>(Risk of) Rebuffering</th></tr>
          </thead>
          <tbody>
            <tr><td>I-frame (first-time packet)</td><td>DF</td><td>AF</td></tr>
            <tr><td>P-frame (first-time packet)</td><td>DF</td><td>DF</td></tr>
            <tr><td>Retransmission</td><td>EF</td><td>EF</td></tr>
            <tr><td>Redundancy</td><td>EF</td><td>EF/AF</td></tr>
          </tbody>
        </table>

        <t>By default, DF is recommended for both I-frames and P-frames. The server mainly relies on injected redundancy and retransmission to resist packet losses and recover from rebuffering. They are assigned higher priority than first time packets, and use EF for low-latency low-loss delivery.</t>

        <t>Meanwhile, the server keeps monitoring QoE based on packet reception feedback from the client. When it estimates that there is the risk of rebuffering, or when rebuffering already happens, first-time packets of I-frames are escalated to AF from DF. For illustration, <xref target="exampledscps"/> uses AF to represent network QoS that can provide assured average bandwidth, and does not limit which AF class to use. In that situation, the server is expected to inject more redundancy. Thus, both EF and AF may be used for redundancy packets, in case excessive packets marked with EF are dropped. The mechanisms used for QoE monitoring and the algorithms used for rebuffering estimation are out of scope for this memo.</t>

        <t>Compared with using an atomic DSCP for the whole video stream, the above service-agnostic DSCP marking policy reduces the amount of data requiring low latency QoS. On the other hand, transport protocols should be able to process the resulting out-of-order packets (explained in <xref target="interaction"/>).</t>
      </section>
    </section>

    <section anchor="interaction">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Interactions with Transport Protocols</name>
      <!-- <t>Per-packet DSCP marking under a service-agnostic semantics interacts with transport protocols on two functionalities: congestion control and packet scheduling. First, different PHBs apply to packets marked with different DSCPs, increasing the possibility of packet reordering within a transport-layer flow or multiplexed stream. Congestion controller should not misinterpreted out-of-order packets as lost. Otherwise, false alarm of congestion may be raised, leading to underutilization and QoE degradation.</t>

      <t>Second, with service-agnostic DSCPs, a single media stream may be steered to multiple PHBs, and a single PHB may handle multiple media streams. A transport protocol should be able to mix the packets of a media stream (which may be received out-of-order), so that it can be processed correctly after delivery to application layer. Meanwhile, head-of-line blocking between media streams using a common PHB should be avoided.</t> -->

      <t>Per-packet DSCP marking under a service-agnostic semantics interacts with transport protocols on two functionalities: congestion control and packet scheduling. First, packet reordering caused by different DSCPs and PHBs should not trigger loss recovery and congestion avoidance of the congestion controller. Second, steering packets to different PHBs should not create head-of-line blocking intra and inter media streams.</t>

      <t>In fact, part of the reason why other RFCs associate DSCPs to service classes is to avoid negative interactions with transport protocols. For example, it is recommended that a single DSCP SHOULD be used within a reliable transport-layer flow, because reliable transport protocols are sensitive to packet reordering. <xref target="RFC7657"/> recognizes that mixed DSCPs and QoS-based traffic classes necessitate multiple instances of congestion controllers, and claims the resulting complexity to extend transport protocols to be a major obstacle to that usage.</t>

      <t>Fortunately, recent maturity of multipath transport protocol stacks such as MPTCP <xref target="RFC8684"/> and multipath QUIC <xref target="I-D.ietf-quic-multipath"/> facilitates the above interactions. A multipath connection simultaneously runs multiple subflows to improve network resource usage and user experience. Those subflows go through disjoint paths originated from different host network interfaces (e.g., WiFi and cellular) or different ports (e.g., equal-cost multipath). A subflow should be explicitly authenticated to be associated with a multipath connection (e.g., through path initiation and validation as explained in Section 4 of <xref target="I-D.ietf-quic-multipath"/>).</t>

      <t>In the context of service-agnostic DSCPs, packets marked with different DSCPs can be effectively seen as multiple logical subflows. Those subflows are logical because they may traverse the same physical network path. They can be explicitly established through procedures defined in multipath transport protocols. To avoid reliance on availability of multiple network interfaces and to enable differentiated logical subflows under a single interface, application hosts SHOULD bind each DSCP usage and corresponding logical subflow to a dedicated port. In addition, a logical subflow can be implicitly established by directly adding a DSCP to the same 5-tuple. Existing multipath transport protocols need to be extended to support implicit subflow establishment though, e.g., creating per-subflow soft states and bypassing the mandatory explicit procedures.</t>

      <t>Leveraging multipath transport, each logical subflow may have its own congestion control state and packet number space, and conduct reliable in-order delivery independently. Out-of-order packets with different DSCPs do not influence a specific logical subflow. Depending on whether associated PHBs use isolated network resources, logical subflows of the same transport connection may adopt coupled congestion control schemes such as <xref target="RFC6356"/>, or per-subflow decoupled congestion controllers. Then, the problem of determining which DSCP to use for each packet is reduced to multipath packet scheduling. Some recent works such as <xref target="XLINK"/> demonstrate the benefits of QoE-aware multipath scheduling, and can be combined with the usage of service-agnostic DSCPs. The multipath scheduler is responsible for mitigating head-of-line blocking (e.g., by injecting duplicate packets). Note that although application hosts proactively indicate the desired QoS treatment for a logical subflow by marking corresponding DSCP, that does not safely guarantee the actual subflow QoS. Passive round-trip time (RTT) measurements are still necessary for the congestion controller and multipath scheduler.</t>
    </section>

    <section anchor="security">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Security Considerations</name>
      <t>Tba.</t>
    </section>

    <section anchor="iana">
    <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
      <name>IANA Considerations</name>
      <t>Tbd.</t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>

        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2475.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4594.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7657.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8684.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8837.xml"/>
        <!-- The recommended and simplest way to include a well known reference -->

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-quic-multipath.xml"/>
      </references>

      <references>
        <name>Informative References</name>

        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2597.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.3246.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6356.xml"/>

        <reference anchor="L4S5G" target="https://datatracker.ietf.org/meeting/115/materials/slides-115-iccrg-5g-and-l4s-congestion-control-considerations">
        <!-- Example minimum reference -->
          <front>
            <title>5G and L4S Congestion Control Considerations</title>
            <author initials="I." surname="Johansson">
              <organization>Ericsson AB</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>

        <reference anchor="XLINK" target="https://dl.acm.org/doi/10.1145/3452296.3472893">
        <!-- Example minimum reference -->
          <front>
            <title>XLINK: QoE-Driven Multi-Path QUIC Transport in Large-Scale Video Services</title>
            <author initials="Z." surname="Zheng"><organization/></author>
            <author initials="Y." surname="Ma"><organization/></author>
            <author initials="Y." surname="Liu"><organization/></author>
            <author initials="F." surname="Yang"><organization/></author>
            <author initials="Z." surname="Li"><organization/></author>
            <author initials="Y." surname="Zhang"><organization/></author>
            <author initials="J." surname="Zhang"><organization/></author>
            <author initials="W." surname="Shi"><organization/></author>
            <author initials="W." surname="Chen"><organization/></author>
            <author initials="D." surname="Li"><organization/></author>
            <author initials="Q." surname="An"><organization/></author>
            <author initials="H." surname="Hong"><organization/></author>
            <author initials="M." surname="Zhang"><organization/></author>
            <date year="2021"/>
          </front>
          <seriesInfo name="SIGCOMM" value="2021"/>
          <seriesInfo name="DOI" value="10.1145/3452296.3472893"/>
        </reference>

      </references>
    </references>

 </back>
</rfc>
