<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-mzbc-ippm-transit-measurement-option-06"
     ipr="trust200902">
  <front>
    <title abbrev="Transit Measurement">The Transit Measurement Option</title>

    <author fullname="Tal Mizrahi" initials="T."
            surname="Mizrahi">
      <organization abbrev="">Huawei</organization>

      <address>
        <postal>
          <street>8-2 Matam</street>

          <city>Haifa</city>

          <code>3190501</code>

          <country>Israel</country>
        </postal>

        <email>tal.mizrahi.phd@gmail.com</email>
      </address>
    </author>

    <author fullname="Tianran Zhou" initials="T." surname="Zhou">
      <organization abbrev="">Huawei</organization>

      <address>
        <postal>
          <street>156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>zhoutianran@huawei.com</email>
      </address>
    </author>

    <author fullname="Shahar Belkar" initials="S."
            surname="Belkar">
      <organization abbrev="">Huawei</organization>

      <address>
        <postal>
          <street>8-2 Matam</street>

          <city>Haifa</city>

          <code>3190501</code>

          <country>Israel</country>
        </postal>

        <email>shahar.belkar@huawei.com</email>
      </address>
    </author>

    <author fullname="Reuven Cohen" initials="R."
            surname="Cohen">
      <organization abbrev="">Huawei</organization>

      <address>
        <postal>
          <street>8-2 Matam</street>

          <city>Haifa</city>

          <code>3190501</code>

          <country>Israel</country>
        </postal>

        <email>reuven.cohen@huawei.com</email>
      </address>
    </author>

    <date year="2025"/>

    <area>TSV</area>

    <workgroup>IPPM</workgroup>


    <keyword>Measurement</keyword>


    <abstract>
      <t>This document specifies an IPv6 option that contains a 
	  compact set of fields which can be used for transit delay measurement
	  and congestion detection.
	  This option can be incorporated into data packets and updated by transit
	  nodes along the path,
	  enabling lightweight measurement and monitoring using constant-length 
	  data that does not depend on the number of hops in the network.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
	  <t>This document introduces an IPv6 option that includes a compact set of performance-related
	  fields. This option can be incorporated into data packets and updated by transit
	  nodes along the path.</t> 
	  
	  <t>There is a number of in-progress documents in the
	  IETF that define IPv6 options that can be used for tracing a path
	  and its performance, including for example, 
	  <xref target="RFC9486"/>,
	  <xref target="I-D.filsfils-ippm-path-tracing"/>,
	  <xref target="I-D.ali-spring-ioam-srv6"/>,
	  <xref target="I-D.kumar-ippm-ifa"/>,
	  <xref target="I-D.zhou-ippm-enhanced-alternate-marking"/>. 
	  Some of these extensions use per-hop 
	  fields which are updated by intermediate nodes,  
	  collecting information about the performance along the path.
	  While these extension provide detailed and fine-grained information,
	  they incur high per-packet bandwidth and processing overhead.</t>

	  <t>The Transit Measurement option, which is defined in this document, provides 
	  coarse-grained performance information using a set of fields that have a 
	  constant length that does not depend on the number of hops along the path.  
	  These fields are defined as a new IPv6 option type, referred to as the  
	  Transit Measurement option.</t>

	  <t>The Transit Measurement option includes two main fields: Accumulated Delay and Status Bitmap.
	  The Accumulated Delay field is used for measuring the one-way delay along the path.
	  Each transit node incrementally adds its internal transit delay to the Accumulated Delay
	  field, and thus at the end of the path this field includes the sum of the transit
	  delay values of the nodes along the path. The Status Bitmap field includes a per-hop
	  bit that indicates its congestion status. Each node along the path updates its
	  corresponding status bit, indicating whether the node is congested. The criterion
	  for deciding whether a node is congested is similar to the "Congestion Experienced"
	  trigger in ECN <xref target="RFC3168"/>.</t>

	  <t>The Transit Measurement option can
      be incorporated into all or a subset of the traffic that is forwarded
      by the source node. Notably, the Transit Measurement option adds a fixed and 
	  low overhead to data packets, which remains constant along the path.</t>

      <t>There are several potential use cases for the Transit Measurement option, including:</t>
	  
      <t><list style="symbols">
	  <t>Performance Monitoring: the Transit Measurement option 
	  can be used for continuously tracking the network
	  and for detecting a potentially problematic state that requires further
	  analysis. In case a potential problem is detected by the destination node, 
	  the node may take further steps to report and to analyze the problem. For
	  example, the node can export the packet, along with additional
	  telemetry data to a collector, or it may log the problem locally.
	  Upon detecting such a problem, a centralized collector/analyzer may 
	  trigger a more fine-grained measurement, e.g., an IOAM trace option
      <xref target="RFC9197"/> can be enabled 
	  in order to obtain detailed information about the performance along 
	  the path and to pinpoint the potential problem. It should be noted that 
	  logging, exporting, and further analysis by the central entity are not 
	  within the scope of the current document.</t>
	  
	  <t>Path Selection: in a network that uses segment routing a source
	  can choose which of the available paths to use to each destination. 
	  By using the Transit Measurement option the source can probe each of
	  the available paths to a given destination, and choose the path with
	  the best performance. If there is a performance issue along one of the paths, the fine-grained status 
	  bitmap enables the source to pinpoint the location of the issue, and to
	  try to pick an alternative path that avoids this point. Alternatively,
	  a path can be selected by the combination of the measured delay along the path and the status bitmap; 
	  for example, the path with less bits set in the status bitmap can be the preferred path, 
	  and the measured delay can be used as a tiebreaker.</t>
	  
	  <t>Congestion control: existing congestion control algorithms periodically
	  measure the round-trip time (RTT), and can optionally use ECN indications 
	  as a criterion for determining the congestion window. It has been shown
      <xref target="SIGCOMM-HPCC"/>	that congestion control can benefit from
	  using fine-grained information about the congestion state of the routers
	  along the path that is sent back to the source over acknowledgment packets. 
	  The Transit Measurement option provides fine-grained 
	  measurement information that has a lightweight cost in comparison to 
	  alternative per-hop measurement protocols.</t>
	  

      </list></t>


      <t></t>


    </section>

    <section anchor="Conventions" title="Conventions">
      <section title="Requirement Language">
        <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 title="Terminology">
	  
        <t>Abbreviations used in this document:</t>

        <t><list hangIndent="11" style="hanging">

            <t hangText="OAM:">Operations, Administration, and Maintenance</t>
            <t hangText="ECN:">Explicit Congestion Notification</t>

        </list></t>


      </section>
    </section>


    <section anchor="TransitOption" title="Transit Measurement Option">
      <t>This document defines a new IPv6 Option type, the
	  Transit Measurement type, which can be included either in the Hop-by-Hop 
	  Options header or in the Destination Options header.
	  <xref target="TransitFormat"/> presents the
	  format of the Transit Measurement option type.</t>

          <figure align="center" anchor="TransitFormat"
                  title="Transit Measurement Option Type">
            <artwork align="left"><![CDATA[
         
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
                                   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                   |  Option Type  |  Opt Data Len |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Accumulated Delay                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Hop Count   |            Status Bitmap                      |  
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           ]]></artwork>
          </figure>

      <t>
	     A node that complies to this draft MUST support the following
		 fields, as depicted in <xref target="TransitFormat"/>:
		 
		 <list style="hanging">

		   <t hangText="Option Type:">This document assigns the value TBD-type,
		   which indicates that this is the Transit Measurement option.
		   The two highest order bits are "00", indicating that nodes that
		   cannot process this option skip over it and continue processing
		   the header, as defined in <xref target="RFC8200"/>. The 
		   third-highest-order bit is set to "1", indicating that this 
		   option may change en route.</t>

		   <t hangText="Opt Data Len:">The length in octets of the two fields 
		   that follow, which is 8.</t>
		   
		   <t hangText="Accumulated Delay:"> represents the sum of the transit 
		   delay values in nanoseconds along the path of the packet, including 
		   the current node. This field is a 4-octet unsigned integer in the 
		   range 0 to 2^31-1. A transit node that receives the Accumulated 
		   Delay field updates its value by adding the transit delay of the 
		   current node to the value of the Accumulated Delay field in the 
		   received packet. The 'transit delay' in this context is the time 
		   in nanoseconds the packet spent in the transit node. If the 
		   Accumulated Delay exceeds 2^31-1 nanoseconds then the most 
		   significant bit is set to indicate overflow and the value is set to 
		   0x80000000. If a transit node receives this field with the value 
		   0x80000000 or if the node is not able to update the value of the 
		   field it SHOULD forward the packet with the unmodified field.</t>

         <t hangText="Hop Count/Status Bitmap:"> indicates the devices along the path
		 that have experienced congestion.<list style="hanging">
                  <t hangText="Hop Count:"> a one-octet field that indicates the number of hops
				  since the source node.
				  The source node initializes this field to 0.
				  Every transit node that supports this option increments 
				  this field by 1.
				  A maximum of 24 hops is supported. If a transit node 
				  receives this field with the value 24 it assigns the 
				  value of all '1's (0xFF = 255), which indicates that 
				  the number of hops has exceeded the maximum.</t>

                  <t hangText="Status Bitmap:"> a three octet field that represents
				  the congestion status of each transit node along the path. 
				  The value '1' indicates that the current packet was enqueued in a 
				  queue that is congested. The criterion for whether a queue is 
				  congested or not is identical to the "Congestion Experienced" 
				  trigger in ECN. Every transit node that supports the Transit Measurement
				  option updates the bit corresponding to the current Hop Count, 
				  after having updated the value of the Hop Count. For example, the 
				  first transit node along the path updates the Hop Count to 1, 
				  and then updates the first (most significant bit) of the 
				  Status Bitmap. The source and destination nodes 
				  do not update the Status Bitmap.
				  If a node detects that the Hop Count has exceeded its 
				  maximal value (24), it does not update the Status Bitmap 
				  field.</t>

                </list></t>

		   
		 </list>
	  </t>
	  
		  
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section anchor="IANAtype" title="IPv6 Option Type">
      <t>IANA is requested to allocate a value from the 
	  IPv6 Destination Options and Hop-by-Hop Options registry:
	  
		 <list style="hanging">

		   <t hangText="Value:">TBD-type</t>
		   
		   <t hangText="act:">00</t>
		   
		   <t hangText="chg:">1</t>
		   
		   <t hangText="Description:">Transit Measurement</t>
		   
		 </list>
	  
	  </t>

      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The Transit Option, and 
	  specifically the Accumulated Delay field,
	  which is defined in this document, may be used for reconnaissance, which
	  in turn can facilitate other types of attacks. As in other types of 
	  Operations, Administration and Maintenance (OAM)
	  protocols, a malicious attacker can manipulate the Accumulated Delay 
	  value in order to create a false illusion of nonexistent network issues 
	  or prevent the detection of actual ones.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>
      <?rfc include='reference.RFC.8174'?>
      <?rfc include='reference.RFC.8200'?>

    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.9197'?>
      <?rfc include='reference.RFC.9486'?>
      <?rfc include='reference.I-D.filsfils-ippm-path-tracing'?>
      <?rfc include='reference.I-D.ali-spring-ioam-srv6'?>
      <?rfc include='reference.I-D.kumar-ippm-ifa'?>
      <?rfc include='reference.I-D.zhou-ippm-enhanced-alternate-marking'?>
      <?rfc include='reference.RFC.3168'?>

      <reference anchor="SIGCOMM-HPCC"
		 target="">
        <front>
          <title>
	    HPCC: High Precision Congestion Control
          </title>

          <author fullname="Yuliang Li" initials="Y." surname="Li">
            <organization></organization>
          </author>

          <author fullname="Rui Miao" initials="R." surname="Miao">
            <organization></organization>
          </author>

          <author fullname="Hongqiang Harry Liu" initials="H." surname="Liu">
            <organization></organization>
          </author>

          <author fullname="Yan Zhuang" initials="Y." surname="Zhuang">
            <organization></organization>
          </author>

          <author fullname="Fei Feng" initials="F." surname="Fei Feng">
            <organization></organization>
          </author>

          <author fullname="Lingbo Tang" initials="L." surname="Tang">
            <organization></organization>
          </author>

          <author fullname="Zheng Cao" initials="Z." surname="Cao">
            <organization></organization>
          </author>

          <author fullname="Ming Zhang" initials="M." surname="Zhang">
            <organization></organization>
          </author>

          <author fullname="Frank Kelly" initials="F." surname="Kelly">
            <organization></organization>
          </author>

          <author fullname="Mohammad Alizadeh" initials="M." surname="Alizadeh">
            <organization></organization>
          </author>

          <author fullname="Minlan Yu" initials="M." surname="Yu">
            <organization></organization>
          </author>

          <date month="August" year="2019" />
        </front>

        <seriesInfo name="ACM SIGCOMM"
		    value = "Beijing, China"/>

      </reference>

    </references>

  </back>
</rfc>