<?xml version="1.0" encoding="utf-8"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<?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 -->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-liu-opsawg-alt-mark-per-packet-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  tocInclude="true"
  tocDepth="4"
  symRefs="true"
  sortRefs="true"
  version="3">
  <!-- xml2rfc v2v3 conversion 2.38.1 -->
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

 <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
        full title is longer than 39 characters -->

    <title abbrev="Abbreviated Title">Alternate marking usage for loss location in per-packet load balancing networks</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-opsawg-alt-mark-per-packet-00"/>
      
    <author fullname="Kefe Liu" initials="K" surname="Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city></city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone></phone>
        <email>liukefei@chinamobile.com</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

    <author fullname="Ruixue Wang" initials="R" surname="Wang">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city></city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone></phone>
        <email>wangruixue@chinamobile.com</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    
   
    <date year="2026"/>
    <!-- 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>Operations and Management</area>
    <workgroup>OPSAWG</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>Alternate Marking, Per-packet Load Balancing</keyword>
    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

    <abstract>
      <t>Many per-packet load balancing schemes have been proposed to mitigate network load imbalances. 
      However, due to the randomness of packet paths, loss location is challenging in per-packet load balancing networks. 
      An efficient solution is to leverage the alternate packet marking technique. 
      This draft analyzes the usage and requirements of alternate packet marking for packet loss detection and location in per-packet load balancing networks.</t>
    </abstract>
 
  </front>

  <middle>
    
    <section>
      <name>Introduction</name>
      <t>To mitigate network load imbalance, many per-packet load balancing schemes have been proposed. 
      These schemes spray packets onto parallel paths to fundamentally eliminate network load imbalance. 
      However, packet spraying brings challenges for loss detection. In flow-based networks, packets with the same 5-tuple traverse the same network path. 
      By collecting loss packets and replaying their 5-tuples via path tracking tools such as Traceroute or INT, their network paths can be easily obtained for loss location. 
      However, in per-packet load balancing networks, packets with the same 5-tuple may be randomly routed to different network paths, and the replayed packets may take different paths, leading to incorrect path tracking and loss location. </t>
      
      <t>One possible loss location scheme in per-packet load balancing networks is to monitor packet loss on switches. 
      However, traditional packet loss monitoring on switches cannot accurately detect all packet loss, such as silent packet loss. 
      To accurately detect all packet loss on switches, an efficient method is to leverage the alternate packet marking technique. 
      The core workflow of alternate packet marking is as follows: 
      Firstly, packets are periodically and alternately marked at the traffic entry points, such as source network interface cards (NICs) or top-of-rack (ToR) switches. 
      Secondly, in each period, each switch calculates the difference between the ingress and egress packet counts in the previous period. 
      At the destination point (the destination ToR switch or NIC), the marks on the packets are cleared before delivery to the service process. 
      This draft analyzes the usage and requirements of alternate packet marking to detect and locate packet loss in per-packet load balancing networks.</t>
      
      <section>
        <name>Requirements Language</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>
      </section>
      <!-- [CHECK] The 'Requirements Language' section is optional -->

    </section>
    
    <section>
      <name>Use cases in per-packet load balancing networks</name>
      <figure anchor="Fig0">
        <artwork align="left" name="Figure 0" type="" alt=""><![CDATA[
                       aa bb aa +----------+  aa bb aa 
   A      B      A   +----------| Switch 1 |-----------+
------ ------ ------ |   --->   +----------+    --->   |
aaaaaa bbbbbb aaaaaa |                                 | aaaaaa bbbbbb aaaaaa
     +---------+     | aa bb aa +----------+  aa bb aa |     +---------+ 
-----|  Entry  |-----+----------| Switch 2 |-----------+-----|   DST   |-----
     +---------+     |   --->   +----------+    --->   |     +---------+ 
          --->       |                                 |         --->
                     | aa bb aa +----------+  aa bb aa |
                     +----------| Switch x |-----------+
                         --->   +----------+    ---> 
                             
                             
           ]]></artwork>
      </figure>


      <t>Figure 1 illustrates the workflow of alternate packet marking and loss counting in per-packet load balancing networks. 
      During period A, packets are marked with flag "a" at the entry point. These marked packets are sprayed onto parallel paths, and the switches count all ingress and egress packets labeled "a". 
      During period B, packets are marked with flag "b", and the switches count all packets labeled "b". Since no packets are labeled "a" in period B, their count remains unchanged. 
      Each switch then calculates the difference between the number of ingress and egress packets labeled "a" to determine the total packet loss in period A. 
      In the next period A, the switches count packets labeled "a" and calculate the difference of packets labeled "b". 
      This process is repeated in subsequent periods. The alternate marking ensures that the packet count in the last marking period remains unchanged, allowing for an accurate loss counting. 
      This method can effectively detect nearly all packet loss in switching, including silent loss, which can hardly be detected by traditional packet loss monitoring on switches.</t>
      
        <section>
          <name>Monitoring all packet loss on switches</name>
          <t>By marking all packets within the cluster alternately and calculating the difference between the number of ingress and egress packets on each switch, all packet loss in switching can be accurately detected. 
          In addition, this method enables accurate loss rate monitoring for each switch, which can be used to identify abnormal switch devices.</t>
        </section>

        <section>
          <name>Monitoring packet loss of certain services</name>
          <t>Services typically have varying degrees of sensitivity to packet loss. Some services, such as distributed storage and distributed training, are highly sensitive to packet loss. 
          For these services, it is necessary to detect and locate every packet loss. Conversely, some services, such as audio and video streaming, are less affected by packet loss. 
          For these services, focusing only on severe packet loss events is typically sufficient. By marking packets in loss-sensitive services merely, switches can focus on packet loss event only in these services.</t>
        </section>

        <section>
          <name>Locating packet loss in probing systems</name>
          <t>Network probing systems typically proactively construct probe packets to measure network latency and packet loss rates. 
          By replaying the anomalous probe 5-tuples (timeout or high latency) via path tracking tools, such as Traceroute or INT, these systems can further locate the anomalous device. 
          However, in per-packet load balancing networks, the replayed probes may take different paths, resulting in an incorrect fault location. 
          With alternate probe packet marking, the loss of probe packets can be accurately located.</t>
        </section>

        <section>
          <name>Low overhead requirements</name>
          <t>First, this method requires traffic entry points to identify and mark specific packets. 
          Then, all switches in the cluster must recognize marked packets and determine their ingress and egress counts. 
          Finally, at the destination point, the marks on the packets must be cleared before they are delivered to the service process. 
          These steps introduce additional processing and latency overhead. Furthermore, if an extra header is used for packet marking, additional bandwidth overhead will be incurred. 
          Therefore, the marking method should have minimal overhead to minimize its impact on network performance.</t>
        </section>

        <section>
          <name>Compatibility requirements</name>
          <t>This method requires all entry/destination points to identify specific packets and add/remove packet labels. 
          In addition, it requires all switches in the cluster to identify and count marked packets. 
          Therefore, the scheme should be compatible with most existing switches to minimize deployment overhead.</t>
        </section>

    </section>

    <section>
      <name>Use cases in packet-spraying networks</name>
      <t>The alternate packet marking method, a typical hybrid performance monitoring technology, has been standardized via a series of IETF RFCs to enable high-precision packet loss detection and localization.</t>

      <t><xref target="RFC8321" format="default"/> laid the foundation for alternate packet marking. It divides service flows into one-bit-marked, alternating blocks and calculates packet loss by counting the differences between adjacent measurement points. 
      <xref target="RFC8321" format="default"/> supports passive and hybrid modes, and can be applied to IP, MPLS, and Ethernet networks. However, its poor anti-out-of-order performance limits its use in high-precision applications. 
      To address this issue, <xref target="RFC9341" format="default"/> obsoleted <xref target="RFC8321" format="default"/> as an enhanced standard. The new standard (1) introduces unique block IDs to address out-of-order and retransmission interference, 
      (2) standardizes latency and jitter measurement with D bits, and (3) unifies counting alignment. <xref target="RFC9341" format="default"/> greatly improves the measurement accuracy.</t>

      <t>As a supplement to <xref target="RFC9341" format="default"/>, <xref target="RFC9342" format="default"/> supports multicast scenarios with multi-receiver synchronization. 
      <xref target="RFC9343" format="default"/> defines IPv6 encapsulation of alternate marking information that can be inserted into the hop-by-hop or destination options header. 
      Therefore, it can be applied to IPv6/SRv6 networks. In terms of supporting RFCs, <xref target="RFC7799" format="default"/> classifies measurement methods and provides a basis for alternate marking. 
      <xref target="RFC6374" format="default"/> (MPLS OAM) enables alternate marking in MPLS networks. In practice, iFIT builds on <xref target="RFC9341" format="default"/> and <xref target="RFC9343" format="default"/> and is widely used in smart metropolitan area networks and data center networks.</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>There are no IANA consideration introduced by this draft.</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>There are no security issues introduced by this draft.</t>
    </section>
    
    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <?rfc include="reference.RFC.2119.xml"?> 
        <?rfc include="reference.RFC.6374.xml"?>    
        <?rfc include="reference.RFC.7799.xml"?>
        <?rfc include="reference.RFC.8174.xml"?> 
        <?rfc include="reference.RFC.8321.xml"?>
        <?rfc include="reference.RFC.9341.xml"?>
        <?rfc include="reference.RFC.9342.xml"?>
        <?rfc include="reference.RFC.9343.xml"?>
      </references>
    </references>

 </back>
</rfc>