<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc> 
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="3"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->

<rfc category="std"
     docName="draft-ietf-mpls-on-path-telemetry-flag-00"
     ipr="trust200902">

<front>
  <title abbrev="MPLS OPT MNA Flag for OAM"> MPLS On-Path Telemetry Network Action Flag for OAM </title>

  <author fullname="Haoyu Song" initials="H." surname="Song">
    <organization>Futurewei Technologies</organization>
    <address>
      <postal>
        <street></street>
        <city></city>
        <region></region>
        <code></code>
        <country>United States of America</country>
      </postal>
      <email>haoyu.song@futurewei.com</email>
    </address>
  </author>

  <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
    <organization>Huawei Technologies</organization>
    <address>
      <postal>
        <street></street>
        <city></city>
        <region></region>
        <code></code>
        <country>Germany</country>
      </postal>
      <email>giuseppe.fioccola@huawei.com</email>
    </address>
  </author>
  
  <author fullname="Rakesh Gandhi" initials="R." surname="Gandhi">
		<organization>Cisco Systems</organization>
      <address>
        <postal>
          <street> </street>
          <city></city>
          <country>Canada</country>
        </postal>
		<email>rgandhi@cisco.com</email>
      </address>
    </author>

  <area>RTG</area>
  <workgroup>MPLS</workgroup>
  
  <!---->

  <keyword>OPT</keyword>
  <keyword>MPLS</keyword>
  <keyword>MNA</keyword>

  <abstract>
    <t>This document describes the postcard-based on-path telemetry with packet marking (PBT-M) using an MPLS Network
   Actions (MNA) flag to support OAM in MPLS networks. 
   The scheme uses a single bit in the MNA header opcode dedicated for the flag-based actions.
   The document provides the solutions to address the requirements for applying PBT-M in MPLS networks. </t>
  </abstract>
 
</front>

<middle>

    <section title="Introduction">
      <t>To gain detailed data plane visibility to support effective network OAM, 
	 it is essential to be able to examine the trace of user packets along their forwarding paths. Such on-path flow data reflect  
	 the state and status of each user packet's real-time experience and provide valuable information 
	 for network monitoring, measurement, and diagnosis. 
      </t>
        
      <t>The telemetry data include but not limited to the detailed forwarding path, the timestamp/latency at each network node, and, in case of
       packet drop, the drop location as well as the reason. 
	 The emerging programmable data plane devices allow user-defined data collection
	 or conditional data collection based on trigger events.
	 Such on-path flow data are from and about the live user traffic, which 
	 complements the data acquired through other passive and active OAM mechanisms such as 
	 <xref target="RFC7011">IPFIX</xref> and <xref target="RFC4560">ICMP</xref>. 
      </t>
            
      <t> On-path telemetry was developed to cater to the need of collecting on-path flow data. 
        There are two basic modes for on-path telemetry: the passport mode (e.g., <xref target="RFC9197"> IOAM trace option</xref>) and the postcard mode (e.g., <xref target="RFC9326"> IOAM direct export option (DEX) </xref>).
      </t>
	  
	  
	   <t>In MPLS networks, MPLS Network Action (MNA) <xref target="I-D.ietf-mpls-mna-fwk"/> extends the MPLS label stack by supporting extra in-stack network
   actions and ancillary data encoded in stack, the in-stack MNA header is described in <xref target="I-D.ietf-mpls-mna-hdr"/>.
   MNA also extends the MPLS payload by supporting extra post-stack network actions and ancillary
   data encoded post-stack, the post-stack MNA header is described in <xref target="I-D.jags-mpls-ps-mna-hdr"/>.  
</t>
		
	  <t> This document describes the method to apply a new variation of the postcard mode on-path telemetry, PBT-M, 
	  to MPLS network using an MNA flag only. 
         PBT-M does not require a telemetry instruction header but a single trigger bit in MNA flags.
		 The similar mechanism has been adopted by SRv6 for <xref target= "RFC9259">SRv6 OAM</xref>,  
		 which uses the O-bit in SRH flags as the marking bit to trigger the on-path telemetry.  
		 The key benefits of PBT-M are its low overhead and high flexibility. 
		 However, PBT-M introduces some unique requirements that need to be considered.	 
         This document discusses the requirements and their solutions in MPLS networks. </t>  
            
			
			
	    <section title="Requirements 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><xref
    target="RFC8174"></xref> when, and only when, they appear in all
    capitals, as shown here.</t>
	
	</section>
      
    </section>

    <section title="PBT-M: Direct Export for On-path Telemetry based on Packet Marking">

      <t>As the name suggests, PBT-M only needs a marking-bit in the existing headers of user packets to trigger the telemetry data collection and export. 
          The sketch of PBT-M is as follows. 
		  If on-path data need to be collected, the user packet is marked at the path head node.   
          At each PBT-M-aware node, if the mark is detected and data collection is enabled, a postcard packet (i.e., the dedicated OAM packet triggered by a marked user packet) is generated and sent to a collector. 
	  The postcard contains the data requested by the management plane. 
	  The requested data are configured by the management plane.   
	  Once the collector receives all the postcards for a single user packet, it can infer the packet's forwarding path and analyze the data set. 
	  The path end node is configured to un-mark the packets to its original format if necessary. 
	</t><t>
          The overall architecture of PBT-M is depicted in Figure 1. 
	</t><t>
        
	<figure title="Architecture of PBT-M" anchor="figure_1">
          <artwork>

                      +------------+        +-----------+ 
                      | Network    |        | Telemetry | 
                      | Management |(-------| Data      | 
                      |            |        | Collector | 
                      +-----:------+        +-----------+ 
                            :                     ^ 
                            :configurations       |postcards 
                            :                     |(OAM pkts) 
             ...............:.....................|........
             :             :               :      |       :
             :   +---------:---+-----------:---+--+-------:---+
             :   |         :   |           :   |          :   |
             V   |         V   |           V   |          V   |
          +------+-+     +-----+--+     +------+-+     +------+-+
usr pkts  | Head   |     | Path   |     | Path   |     | End    |
     ====>| Node   |====>| Node   |====>| Node   |====>| Node   |===>
          |        |     | A      |     | B      |     |        |
          +--------+     +--------+     +--------+     +--------+
        mark usr pkts  gen postcards  gen postcards  gen postcards
        gen postcards                                unmark usr pkts  

          </artwork>
         </figure>

	</t>
          
      <t>    
        The advantages of PBT-M are summarized as follows.  
      </t>	      

        <t>
          <list style="symbols">
            <t>
              1: PBT-M avoids augmenting user packets with new headers and 
	             the signaling for telemetry data collection remains in the data plane. 
	    </t><t>
              2: PBT-M is extensible for collecting arbitrary new data to support possible future use cases. 
	      The data set to be collected can be configured through the management plane or control plane. 
	    </t><t>
              3: PBT-M can avoid interfering with the normal forwarding. 
	      The collected data are free to be transported independently through in-band or out-of-band channels. 
	      The data collecting, processing, assembly, encapsulation, and transport are, therefore, decoupled 
	      from the forwarding of the corresponding user packets and can be performed in data-plane slow-path if necessary. 
	    </t><t>
              4: For PBT-M, the types of data collected from each node can vary depending on application requirements and node capability.
	    </t><t>
              5: PBT-M makes it easy to secure the collected data without exposing it to unnecessary entities. 
	      For example, both the configuration and the telemetry data can be encrypted and/or authenticated before being transported,
	      so passive eavesdropping and a man-in-the-middle attack can both be deterred.
	    </t><t>
	          6: Even if a user packet under inspection is dropped at some node in the network, 
	      the postcards collected from the preceding nodes are still valid and can be used to 
	      diagnose the packet drop location and reason.
            </t>
			<t>7: Raw data can be processed or aggregated in data plane to reduce the exporting traffic load.
			</t>
         </list>
        </t>
        
      </section>

    <section anchor="challenge" title="New Requirements">
	   <t>
          Although PBT-M has some unique features, it also introduces a few new requirements. 
        </t><t>
	  <list style="symbols">
            <t>
              Req. 1 (Packet Marking Bit): A user packet needs to be marked to trigger the path-associated data collection. 
			  Since PBT-M aims to avoid the need to augment user packets with new headers, 
	          it needs to reserve or reuse a single bit from the existing header fields.
            </t><t> 	      
			  Req. 2 (Configuration): Since the packet header will not carry telemetry instructions anymore, 
	          the data plane devices need to be configured to know what data to collect. 
	          However, in general, the forwarding path of a flow packet (due to ECMP or dynamic routing) is unknown beforehand (note that there are some
              notable exceptions, such as segment routing). If the per-flow customized data collection is required, 
	          configuring the data set for each flow at all data plane devices might be expensive in terms of configuration load and data plane resources.
	        </t><t>  
              Req. 3 (Data Correlation): Due to the variable transport latency, the dedicated postcard packets for a single packet may arrive at the collector 
	          out of order or be dropped in networks for some reason. In order to infer the packet forwarding path, 
	          the collector needs some information from the postcard packets to identify the user packet affiliation and the order of path node traversal.  
            </t><t>
              Req. 4 (Overhead and Security): Since each postcard packet has its header, the overall network bandwidth overhead of PBT-M can be high. 
			  A large number of postcards could add processing pressure on data collecting servers. That can be used as an attack vector for DoS. 
            </t>            
          </list>
        </t>  
      </section>

    <section title="Design Considerations">
        <t>      
          To address the above requirements, we propose several design details for applying PBT-M in MPLS networks.
        </t>	      
	  <section title ="Packet Marking">
          <t>
            To trigger the path-associated data collection, usually, a single bit from some header field is sufficient. 
			The proposed action encoding is shown in <xref target="figure_2"/> changed from <xref target="I-D.ietf-mpls-mna-hdr"/>.</t>

    <t><figure anchor="figure_2" title="Action Encoding">
      <artwork align="center"><![CDATA[
 
     0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      NASI=bSPL                        | TC  |S|    TTL        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |NAI-Opcode=1 |P|                       |R|IHS|S|U|NASL=0 |NAL=0|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
 ]]></artwork>
   </figure></t>


   <t>In the figure, NAI-Opcode is Network Action Indicator Opcode. If the Opcode has 
   the value of 'one', then the 13 bits following the Opcode carries 
   NAI-flags. P-flag, the first flag bit in the flag-based network action 
   field, is used as the PBT indicator. If the bit is set to '1', a
   node is triggered to collect and export the telemetry data as
   configured by the control plane.</t>

   
   <t>Note that the in-stack MNA encoding may take different form as the header encoding draft evolves, and
   these flag-based on-path telemetry use cases would adapt to the change.</t>


   </section>
   
	  <section title ="Flow Path Discovery">
          <t>
            In case the path that a flow traverses is unknown in advance, all PBT-M-aware nodes should be configured to react to the marked packets by 
            exporting some basic data, such as node ID and TTL before a data set template for that flow is configured. 
	    This way, the management plane can learn the flow path dynamically. 
          </t><t>	
            If the management plane wants to collect the on-path data for some flow, 
	    it configures the head node with a probability or time interval for the flow packet marking. 
	    When the first marked packet is forwarded in the network, the PBT-M-aware nodes will export the basic data set to the collector. 
	    Hence, the flow path is identified. If other data types need to be collected, 
	    the management plane can further configure the data set's template to the target nodes on the flow's path. 
	    The PBT-M-aware nodes collect and export data accordingly if the packet is marked and a data set template is present. 
          </t><t>	
	    If the flow path is changed for any reason, the new path can be quickly learned 
	    by the collector. Consequently, the management plane controller can be directed 
	    to configure the nodes on the new path. The outdated configuration can be automatically timed out or 
	    explicitly revoked by the management plane controller.
          </t>	
        </section>	  
	  <section anchor="correlation" title ="Packet Identity for Export Data Correlation">
          <t>
            The collector needs to correlate all the postcard packets for a single user packet. 
	    Once this is done, the TTL (or the timestamp, if the network time is synchronized) 
	    can be used to infer the flow forwarding path. The key issue here is to correlate all the postcards for the same user packet. 
          </t><t>	
	    The first possible approach includes the flow ID in the OAM packets. In case of MPLS, the MPLS label stack can server as the flow ID. 	
            If the packet marking interval is large enough, the flow ID is enough to identify a user packet. 
	    As a result, it can be assumed that all the exported postcard packets for the same flow during a short time interval belong to the same user packet.
          </t><t>	
            Alternatively, if the network is synchronized, then the flow ID plus the timestamp at each node can also infer the postcard affiliation. 
	    However, some errors may occur under some circumstances. For example, 
	    two consecutive user packets from the same flows are marked, but one exported postcard from a node is lost. 
	    It is difficult for the collector to decide to which user packet the remaining postcard is related. 
	    In many cases, such a rare error has no catastrophic consequence. Therefore it is tolerable.    
          </t>	
      </section>	  
    
      <section title ="Load Control">
	  
		   <t>PBT-M should not be applied to all the packets all the time. It is better to be used in an interactive environment where the 
		   network telemetry applications dynamically decide which subset of traffic is under scrutiny. The network devices can limit the packet marking rate
           through sampling and metering. The postcard packets can be distributed to different servers to balance the processing load. </t>	

           <t>Because PBT-M sends telemetry data by dedicated postcard packets, it allows data aggregation and compression. Each node can process the generated raw data according to the configured local data-export policies. Such policies may specify how raw data is used to calculate performance metrics, e.g., max, min, mean, percentile, etc. 
           </t> 		   
	  
	  </section>
         
    </section>	    

    <section title="Implementation Recommendation">
	
	  <section title="Configuration">
        <t>Access lists with an optional sampler, <xref target="RFC5476"/>,
        should be configured and attached at the ingress of the PBT-M
        encapsulation node's to select the intended flows for PTB-M.</t>

        <t>Based on the requirements and node capability, the flow data could be exported at each
         transit node and at the end edge node with IPFIX <xref
        target="RFC7011"/>.</t>
      </section>

      <section title="Data Export">
	  
        <t>The data decomposition can be achieved on the PBT-M-aware node exporting
        the data or on the IPFIX data collection. <xref
        target="I-D.spiegel-ippm-ioam-rawexport"/> describes how data is being
        exported when decomposed at IPFIX data collection. When being
        decomposed on the PBT-M-aware node the data can be aggregated according to
        section 5 of <xref target="RFC7015"/>.</t>
		
      </section>
	  
	
	  
	<section title="Use Cases">
	  	  	  
		  <t>In MPLS networks, MLD is a great concern which limits the MNA size and in turn the OAM capability. Moreover, 
		  for SR-MPLS, Maximum SID Depth(MSD) as well as PMTU in SR Policy are critical issues for SR path instantiation by a controller. 
		  PBT-M can become a critical solution to ensure that flexible on-path telemetry can be viable for operators by eliminating telemetry data 
		  from being carried in-situ in the SR-TE policy path.</t>
		  		   
		  <t>This draft provides a critical optimization that fills the gaps with IOAM DEX related to packet marking triggers using existing mechanisms as well 
		  as flow path discovery mechanisms to avoid configuration of on path data plane node complexity and helps mitigate SR MSD and PMTU issues.</t>  
		
	  
	  </section>
	  
	  </section>

    <section anchor="Security" title="Security Considerations">
    <t>Only the ingress node is allowed to set these flag bits. The other on-path nodes can only react to the bit values. 
	The tampering of these flag-based actions would result in DoS attack or unreliable measurements. 
	Therefore, security measures must be taken to ensure the proper functioning of these actions. </t>
  </section>

    <section anchor="IANA" title="IANA Considerations">
    <t>This document requires IANA to assign a bit for PBT-M action (TBA1) from
   the MPLS "In-Stack MPLS Network Action Indicator Flags" registry created in <xref target="I-D.ietf-mpls-mna-hdr"/>. </t>
  </section>

    <section anchor="Acknowledgments" title="Acknowledgments">
 </section>

 </middle>

 <back>

 <references title="Normative References">
   
   <?rfc include='reference.RFC.2119'?>
   <?rfc include='reference.RFC.8174'?>
   <?rfc include='reference.RFC.7011'?>
   <?rfc include='reference.RFC.7015'?>
   <?rfc include='reference.I-D.ietf-mpls-mna-hdr'?>

 </references>
      
 <references title="Informative References">
   <?rfc include='reference.RFC.9259'?>
   <?rfc include='reference.RFC.9197'?>
   <?rfc include='reference.RFC.5476'?>
   <?rfc include='reference.RFC.4560'?>
   <?rfc include='reference.RFC.9326'?>
   <?rfc include='reference.I-D.spiegel-ippm-ioam-rawexport'?>
   <?rfc include='reference.I-D.ietf-mpls-mna-fwk'?>
   <?rfc include='reference.I-D.jags-mpls-ps-mna-hdr'?>
 </references>

 </back>
</rfc>
