<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY IOAMReq SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-brockners-inband-oam-requirements-03.xml">
<!ENTITY IOAMData SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-ippm-ioam-data-00.xml">
<!ENTITY IOAMDataExt SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-song-ippm-ioam-data-extension-00.xml">
<!ENTITY IOAMDataEncap SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-brockners-inband-oam-transport-05.xml">
<!ENTITY IOAMSFC SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sfc-ioam-nsh-00.xml">
<!ENTITY IOAMGENEVE SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-brockners-ippm-ioam-geneve-01.xml">
<!ENTITY IOAMDX SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ioamteam-ippm-ioam-direct-export-00.xml">
<!ENTITY IOAMGRE SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-weis-ippm-ioam-gre-00.xml">
<!ENTITY IOAMRAWEXP SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-spiegel-ippm-ioam-rawexport-01.xml">
<!ENTITY IOAMTunnel SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-song-ippm-ioam-tunnel-mode-00.xml">
<!ENTITY MPLSEH SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-song-mpls-extension-header-01.xml">
<!ENTITY DNP SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-song-opsawg-dnp4iq-01.xml">
<!ENTITY IPFPM SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-ippm-alt-mark-14.xml">
<!ENTITY NSH SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sfc-nsh-28.xml">
<!ENTITY YANGFSM SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-sambo-netmod-yang-fsm-00.xml">
<!ENTITY SMARTFILTER SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-clemm-netconf-push-smart-filters-ps-00.xml">
<!ENTITY P4 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml7/reference.DOI.10.1145/2656877.2656890.xml">
<!ENTITY POF SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml7/reference.DOI.10.1145/2491185.2491190.xml">
<!ENTITY Postcard SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml7/reference.DOI.10.1145/2342441.2342453.xml">
<!ENTITY gRPC SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-talwar-rtgwg-grpc-use-cases-01.xml">
<!ENTITY YANGPUSH SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-netconf-yang-push-12.xml">
<!ENTITY UDPPUB SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-netconf-udp-pub-channel-01.xml">
<!ENTITY SYNLABEL SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-bryant-mpls-synonymous-flow-labels-01.xml">
<!ENTITY RFC3176 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3176.xml">
<!ENTITY NETCONF SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY IPFIX SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7011.xml">
<!ENTITY ICMP SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2925.xml">
<!ENTITY RFC6020 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<?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="info" docName="draft-song-ippm-postcard-based-telemetry-06" ipr="trust200902">
  <front>
    <title abbrev="Postcard-Based Telemetry">Postcard-based On-Path Flow Data Telemetry</title>

    <author fullname="Haoyu Song" initials="H." surname="Song" role="editor">
      <organization>Futurewei</organization>

      <address>
        <postal>
          <street>2330 Central Expressway</street>

          <city>Santa Clara, 95050</city>

          <country>USA</country>
        </postal>

        <email>hsong@futurewei.com</email>
      </address>
    </author>

    <author fullname="Tianran Zhou" initials="T." surname="Zhou">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>156 Beiqing Road</street>
          <city>Beijing, 100095</city>
          <country>P.R. China</country>
        </postal>
        <email>zhoutianran@huawei.com</email>
      </address>
    </author>

    <author fullname="Zhenbin Li" initials="Z." surname="Li">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>156 Beiqing Road</street>
          <city>Beijing, 100095</city>
          <country>P.R. China</country>
        </postal>
        <email>lizhenbin@huawei.com</email>
      </address>
    </author>

    <author fullname="Jongyoon Shin" initials="J." surname="Shin">
      <organization>SK Telecom</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <country>South Korea</country>
        </postal>

        <email>jongyoon.shin@sk.com</email>
      </address>
    </author>


    <author fullname="Kyungtae Lee" initials="K." surname="Lee">
      <organization>LG U+</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <country>South Korea</country>
        </postal>

        <email>coolee@lguplus.co.kr</email>
      </address>
    </author>

    <date day="29" month="October" year="2019"/>

    <area>Operation and Management Area</area>
    <workgroup>IPPM</workgroup>

    <keyword>telemetry, OAM, postcard</keyword>

    <abstract>
      <t>
	 The Postcard-Based Telemetry (PBT) allows network OAM applications to directly collect and export telemetry data about any user packet
	 at each node on the forwarding path. 
	 PBT has two variations, PBT-I and PBT-M. 
	 PBT-I requires inserting an instruction header to user packets to guide the data collection.
	 An implementation of PBT-I is the IOAM Direct Export option described in 
	 <xref target="I-D.ioamteam-ippm-ioam-direct-export"></xref>. 
	 In contrast, PBT-M only marks the user packets or configure the flow filter to invoke the data collection and postcard export.
	 PBT complements IOAM trace option by addressing several specific implementation and deployment challenges.     
      </t>
    </abstract>
  </front>

  <middle>

    <section title="Motivation">
      <t>
         In order to gain detailed data plane visibility to support effective network OAM, 
	 it is important 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 and reason. 
	 The emerging programmable data plane devices allow user-defined data collection<xref target="I-D.song-opsawg-dnp4iq"></xref>
	 or conditional data collection based on trigger events.
	 Such on-path flow data are from and about the live user traffic, which 
	 complement the data acquired through other passive and active OAM mechanisms such as 
	 <xref target="RFC7011">IPFIX</xref> and <xref target="RFC2925">ICMP</xref>. 
      </t><t>
         In-band Network Telemetry (INT) was designed to cater 
	 this need (note that although INT has been widely used, the term "in-band" here does not comply with IETF's definition. "on-path" or "in-situ" may be 
	 more accurate terms). <xref target="I-D.brockners-inband-oam-requirements"> in-situ OAM (IOAM) </xref>
         represents the related standardization efforts. In essence, INT augments user packets with instructions to tell 
	 each network node on their forwarding paths what data to collect. 
	 The requested data are inserted into and travel along with the user packets. 
	 Some end nodes are responsible to strip off the data trace and export it to a data collector for processing.
      </t><t>
         While the concept is simple and straightforward, INT faces several technical challenges:
      </t><t> 
         <list style="symbols">
           <t>
	     Issue 1: INT header and data processing needs to be done in data plane fast path. It may interfere with the normal traffic forwarding 
	     (e.g., leading to forwarding performance degradation) and lead to inaccurate measurements 
	     (e.g., resulting in longer latency measurements than usual). 
	     This undesirable "observer effect" is problematic to carrier networks where stringent SLA must be observed.  
           </t><t>
             Issue 2: INT may significantly increase the user packet's original size by adding the instruction header and data at each traversed node. 
	     The longer the forwarding path and the more the data collected, the larger the packet will become. 
	     The size may exceed the path MTU so either INT cannot apply or the packet needs to be fragmented.  
	     Limiting the data size or path length reduces the effectiveness of INT. 
	     On the other hand, the INT header and data can be deeply embedded in a packet due to various transport protocol and tunnel configurations. 
	     The required deep packet header inspection and processing may be infeasible to some data plane fast path where only a limited number of header bytes are accessible. 
           </t><t>
             Issue 3: INT requires attaching an instruction header to user packets to inform network nodes what types of data 
	     to collect. Due to the header overhead constraint and hardware-friendly consideration, TLV is undesirable for data type encoding. 
	     Instead, IOAM use a bitmap where each bit  
	     indicates one pre-defined data type <xref target="I-D.ietf-ippm-ioam-data"></xref>. However, new use cases may require new data types.  
	     The current allocated 16-bit bitmap limits the data type scalability. 
	     The proposed bitmap extension in <xref target = "I-D.song-ippm-ioam-data-extension"></xref> 
	     provides a method to support more data types but it also increases the IOAM header size. 
           </t><t>
	     Issue 4: INT header needs to be encapsulated into user packets for transport. <xref target="I-D.brockners-inband-oam-transport"></xref> 
	     has discussed several encapsulation approaches for different transport protocols. 
	     However, it is difficult to encapsulate extra header in MPLS and IPv4 networks which happens to be the most widely deployed and 
	     where the path-associated telemetry data 
	     is most wanted by operators. The proposed NVGRE encapsulation for IPv4 in <xref target="I-D.brockners-inband-oam-transport"></xref> 
	     requires a tunnel to be built between each pair of nodes which may be unrealistic for plain IP networks.
	   </t><t>
	     Issue 5: The INT header and data are vulnerable to eavesdropping and tampering as well as DoS attack. 
	     Extra protective measurement is difficult on the fast data path. 
	   </t><t>
	     Issue 6: Since INT only exports the telemetry data at the designated end node, 
	     if the packet is dropped in the network, the data will be lost as well. 
	     It cannot pinpoint the 
	     packet drop location which is required for fault diagnosis. Even worse, the end node may not be aware of the lost of packet at all.
	   </t>
         </list>
      </t><t> 
        The above issues are inherent to the INT-based solutions. 
	Nevertheless, the on-path data acquired by INT are valuable for network operators.
	Therefore, alternative approaches which can collect the same data but avoid or mitigate the above issues are desired. 
	This document provides a new approach named Postcard-Based Telemetry (PBT) with two different implementation variations, 
	each having its own trade-off and addressing some or all of the above issues. 
	The basic idea of PBT is simple: at each node, instead of inserting the collected data into the user packets, 
	the data are directly exported through dedicated OAM packets.
	Such "postcard" approach is in contrast to the "passport stamps" approach adopted by INT <xref target="DOI_10.1145_2342441.2342453"></xref>.  
        The OAM packets or postcards can be generated by the node's slow path and transported in band or out of band, independent of the original user packets. 
      </t>       


    </section>

    <section title="PBT-M: Postcard-based Telemetry with Packet Marking">

      <t>
	This section describes the variation of PBT which triggers the postcard export with a mark in user packets.	      
        PBT-M aims to address the challenges of INT listed above and introduce some new benefits. We first list all the design requirements of PBT-M.  
      </t>	      
      <section anchor = "requirement" title = "New Requirements">
        <t>
          <list style="symbols">
            <t>
              Req. 1: We should avoid augmenting user packets with new headers or introducing new data plane protocols. 
	      This helps to alleviate or eliminate the issue 1, 2, 4, and 5. 
	      We expect the OAM data collecting signaling remains in data plane. Simple packet marking techniques suffice to serve this purpose. 
	      It is also possible to configure the OAM data collecting from the control plane.
	    </t><t>
              Req. 2: We should make the scheme extensible for collecting arbitrary new data to support possible future use cases. 
	      The data set to be collected is preferred to be configured through management plane or control plane. 
	      Since there is no limitation on the types of data, any custom data including those generated by  
               <xref target="I-D.song-opsawg-dnp4iq"> DNPs </xref> can be collected. 
	       Since there is no size constraints any more, it is free to use the more flexible data set template for data type definition. 
	       This addresses the issue 2 and 3.
	    </t><t>
              Req. 3: We should avoid interfering the normal forwarding and affecting the forwarding performance when conducting data plane OAM tasks. 
	      Hence, the collected data are better to be transported independently by dedicated OAM packets 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. 
	      This addresses the issue 1, 4, and 5.
	    </t><t>
              Req. 4: The data collected from each node is not necessarily identical, depending on application requirements and node capability. 
	      Data for different operation modes can be collected at the same time. 
	      These requirements are either impossible or very difficult to be supported by INT in which data types collected 
	      per node are supposed to be identical and for a single mode.
	    </t><t>
              Req. 5: The flow's path-associated data can be sensitive and the security concerns need to be carefully addressed. 
	      Sending OAM data with independent packets also makes it easy to secure the collected data without exposing it to unnecessary entities. 
	      For example, the data can be encrypted before being sent to the collector 
	      so passive eavesdropping and man-in-the-middle attack can both be deterred.
	      This addresses the issue 5.
	    </t><t>
	      Req. 6: Even if a user packet under inspection is dropped in network, 
	      the OAM data that have been collected should still be exported and help to
	      diagnose the packet drop location and reason. This addresses the issue 6.
            </t>
         </list>
        </t>
      </section>

      <section title="Solution Description">
        <t>
          In light of the above discussion, the sketch of the proposed solution, PBT-M, is as follows. 
	  The user packet, if its path-associated data need to be collected, is marked at the path head node.  
          At each PBT-aware node, if the mark is detected, a postcard (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 through data set templates (as in <xref target="RFC7011">IPFIX</xref>). 
	  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 unmark the packets to its original format if necessary. 
	</t><t>
          The overall architecture of PBT-M is depict 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      |     |        |
              +--------+     +--------+     +--------+     +--------+
              gen postcards  gen postcards  gen postcards  gen postcards
              mark usr pkts                                unmark usr pkts  

          </artwork>
         </figure>

	</t>
      </section>

      <section anchor="challenge" title="New Challenges">
	<t>
          Although PBT-M solves the issues of INT, it introduces a few new challenges. 
        </t><t>
	  <list style="symbols">
            <t>
              Challenge 1: A user packet needs to be marked in order to trigger the path-associated data collection. 
	      Since we do not want to augment user packets with any new header fields (i.e., Req. 1), 
	      we must reuse some bit from existing header fields.
            </t><t> 	      
	      Challenge 2: Since the packet header will not carry OAM instructions any more, 
	      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. 
	      Configuring the data set for each flow at all data plane devices is expensive in terms of configuration load and data plane resources.
	    </t><t>  
              Challenge 3: Due to the variable transport latency, the dedicated OAM 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 OAM packets to identify the user packet affiliation and the order of path node traversal.  
            </t>            
          </list>
        </t>  
      </section>

      <section title="Considerations on PBT-M Design">
        <t>      
          To address the above challenges, we propose several design details of PBT-M.
        </t>	      
	<section title ="Packet Marking">
          <t>
            To trigger the path-associated data collection, usually a single bit from some header field is sufficient. 
	    While no such bit is available, other packet marking techniques are needed. 
	    we discuss three possible application scenarios.
	  </t><t>
	    <list style="symbols">
              <t>
		IPv4. <xref target="I-D.ietf-ippm-alt-mark">IPFPM</xref> is an IP flow performance measurement 
		framework which also requires a single bit for packet coloring. 
		The difference is that IPFPM does in-network measurement while PBT only collects and exports data at network nodes 
		(i.e., the data analysis is done at the collector rather than in the network nodes). IPFPM suggests to use some reserved bit of the Flag field or 
		some unused bit of the TOS field. Actually, IPFPM can be considered a subcase of PBT so the same bit can be used for PBT.  
		The management plane is responsible to configure the actual operation mode.
              </t><t>	
	        SFC NSH. The OAM bit in NSH header can be used to trigger the path-associated data collection <xref target="I-D.ietf-sfc-nsh"></xref>. 
	        PBT does not add any other metadata to NSH.
	      </t><t>
	        MPLS. Instead of choosing a header bit, we take advantage of <xref target="I-D.bryant-mpls-synonymous-flow-labels"> 
		the synonymous flow label </xref> approach to mark the packets. A synonymous flow label indicates 
		the path-associated data should be collected and 
		forwarded through a postcard.
              </t>
            </list>
          </t>
        </section>	  
	<section title ="Flow Path Discovery">
          <t>
            By default, all PBT-aware nodes are 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 path-associated data for some flow, 
	    it configures the head node(s) with a probability or time interval for the flow packet marking. 
	    When the first marked packet is forwarded in the network, the PBT-aware nodes will export the basic data to the collector. 
	    Hence, the flow path is identified. If other types of data need to be collected, 
	    the management plane can further configure the data set template to the target nodes on the flow's path. 
	    The PBT-aware nodes would collect and export data accordingly if the packet is marked and a data set template is present. 
          </t><t>	
	    If for any reason, the flow path is changed. The new path nodes can be learned 
	    immediately by the collector, so the management plane controller can be informed 
	    to configure the new path nodes. The outdated configuration can be automatically timed out or 
	    explicitly revoked by the management plane controller.
          </t>	
        </section>	  
	<section title ="Packet Identity for Export Data Correlation">
          <t>
            The collector needs to correlate all the OAM 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 a same user packet. 
          </t><t>	
	    The first possible approach is to include the flow ID plus the user packet ID in the OAM packets. 
            The flow ID can be the 5-tuple IP header of the user traffic.
	    The user packet ID can be some unique information pertaining to a user packet (e.g., the sequence number of a TCP packet).
          </t><t>	
            If the packet marking interval is large enough, then the flow ID itself is enough to identify the user packet. 
	    That is, we can assume all the exported OAM packets for the same flow during a short period of time 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, 
	    if two consecutive user packets from the same flows are both marked but one exported postcard from a node is lost, 
	    then it is difficult for the collector to decide which user packet the remaining postcard belongs to. 
	    In many cases, such rare error has no catastrophic consequence therefore is tolerable.    
          </t>	
        </section>	  
      

         <section title ="Avoid Packet Marking through Node Configuration">

	 <t>It is possible to avoid needing to mark user packets yet still allowing in-band flow data collection. We could simply configure 
            the Access Control List (ACL) to filter out the set of target flows. This approach has two potential issues: (1) Since the packet 
	    forwarding path is unknown in advance, one needs to configure all the nodes in a network to filter the flows and capture the complete data set. 
	    This wastes the precious ACL resource and is not scalable.
	    (2) If a node cannot collect data for all the filtered packets of a flow, it needs to determine which packets to 
	    sample independently, so the collector may not be able to receive the full set of postcards for a same user packet.
         </t>   
	 <t>Nevertheless, since this approach 
	    does not require to touch the user packets at all, it has its unique merits: (1) User can freely choose any nodes as vantage points
	    for data collection; (2) No need to worry that any "modified" user packets to leak out of the PBT domain; (3) 
	    It has the minimum impact to the forwarding of the user traffic.</t>	

         <t>No data plane standard is required to support this mode, except the postcard format.</t>     

      </section>	    
      </section>	    

      </section>

      <section title="PBT-I: Postcard-based Telemetry with Instruction Header">
	
	      <t>Since PBT-M has some challenges as listed in <xref target="challenge"></xref>, 
		      this section describes another variation of PBT, which essentially compromises 
		      some of the design requirements listed in <xref target="requirement"></xref>, yet
		      retains most of the benefits of PBT. 
	      </t><t>
	         PBT-I can be seen as a trade-off between INT and PBT-M. PBT-I needs to add a fixed length 
	         instruction header to user packets for OAM data collection. However,
		 the collected data will be exported through dedicated postcards. 
		 On the one hand, PBT-I violates the Req. 1 in <xref target="requirement"></xref>. It also makes it
		 harder to meet the Req. 2. On the other hand, the overhead of the instruction header is fixed and 
		 user packets will not inflate with path length or telemetry data quantity. 
		 We also introduce an optimization to mitigate the impact on Req. 2. In return, PBT-I addresses all the challenges of PBT-M:	
	      </t><t>

	      <list style="symbols">

		      <t> There is no need to find an existing header field to mark a user packet.
			  We can implement PBT-I as an option of IOAM which uses the same encapsulation method for IOAM.  
                          So far, the IOAM header encapsulation methods have been defined for several protocols, including IPv6, VXLAN-GPE, NSH, SRv6 
	       <xref target="I-D.brockners-inband-oam-transport"></xref>,<xref target="I-D.ietf-sfc-ioam-nsh"></xref>, GENEVE
	       <xref target="I-D.brockners-ippm-ioam-geneve"></xref>, and GRE <xref target="I-D.weis-ippm-ioam-gre"></xref>. 
	       <xref target="I-D.song-mpls-extension-header"></xref> describes the
	       approach to encapsulate the instruction header into MPLS packets. 
	             </t><t>
		     There is no need to configure the nodes about the data to be collected since the data set information is carried in the instruction header. 
		     If implemented as an IOAM option, the data set representation can be identical to that of the IOAM trace optioin.
	             </t><t> 
		     The instruction header can be designed to contain enough information to help correlate the postcard packets belonging to a user packets. 
		     Even better, new fields can be added to track each flow and each packet, and easily detect any packet drop. 
                     </t>
	      </list>

              </t>
              
        <section title="Solution Description">
        <t>
          The sketch of the proposed solution, PBT-I, is as follows. 
	  If the path-associated data need to be collected for a user packet, 
	  an instruction header is inserted into the packet at the path head node.  
          At each PBT-aware node, if the instrution header is detected, a postcard is generated and sent to a collector. 
	  Once the collector receives all the postcards for a single user packet, it can combine and analyze the data set. 
	  The path end node is configured to remove the instruction header. 
	</t><t>
	  The overall architecture of PBT-I is depict in Figure 2. Note that in the figure we omit the controller which configures the
	  nodes for necessary functions (e.g., head node encapsulation) and information (e.g., IP address of the data collector). 	

	</t><t>
        
	<figure title="Architecture of PBT-I" anchor="figure_2">
          <artwork>

                                  +-----------+ 
                                  | Telemetry | 
                                  | Data      | 
                                  | Collector | 
                                  +-----------+ 
			                ^ 
				        |postcards (OAM pkts)
		                        | 
                                        |
                                        |       
		  +--------------+------+-------+--------------+
		  |              |              |              |
	          |              |              |              |
              +---+----+     +---+----+     +---+----+     +---+----+
    usr pkts  | Head   |     | Path   |     | Path   |     | End    |
         ====>| Node   |====>| Node   |====>| Node   |====>| Node   |====>
              |        |     | A      |     | B      |     |        |
              +--------+     +--------+     +--------+     +--------+
	      insert Instr Hdr                             remove Instr Hdr
	      gen postcards  gen postcards  gen postcards  gen postcards
                                                             

          </artwork>
         </figure>

        </t>	      
	</section>

	<section title="Implementation">

         <t> The implementation of PBT-I as a standalone IOAM option named IOAM Direct Export is described in 
	 <xref target="I-D.ioamteam-ippm-ioam-direct-export"></xref>. 
	 </t>      

      </section>
      </section>

      <section title="Postcard Format">

	      <t>Postcard can use the same data export format as that used by IOAM.  <xref target="I-D.spiegel-ippm-ioam-rawexport"></xref> proposes
              a raw format that can be interpreted by IPFIX.
	      </t> 

      </section>

<!--
      <section title="Standard Gap Analysis">
        <t>
          In this section, we identify the standard gaps for enabling PBT. 
	  Our principle is to not invent new protocols and mechanisms unless absolutely necessary. 
	  We try to integrate a suite of existing standards and standard proposals to implement PBT. Obviously, new extensions may be needed.
        </t><t>	
          The PBT system includes four parts: network configuration, data generation, data export, and data fusion. 
        </t>	
        <section title="Network Configuration for PBT-M">
          <t>
            The management plane needs to choose the head node(s) and the end node(s) for a flow to collect its path-associated data. 
	    A flow classifier needs to be configured at the head node(s). 
	    The marking frequency or probability for the matching flow needs to be configured.  
	    An end node needs to unmark the marked user packets.  
          </t><t>	
	    By default, all PBT-aware nodes are configured to export the basic data to the collector for the marked packets. 
	    For all the nodes on the path, once determined, the management plane needs to dynamically configure what types of extra data to collect.  
	    If for any reason the path is changed, the configuration needs to be updated.
          </t><t>	
	   <xref target="RFC6241">NETCONF</xref> can be used to configure the network for PBT.
          </t>
        </section>
        <section title="Data Generation">
          <t>
            The path-associated data that can be collected should cover all those data types that have been specified in <xref target="I-D.ietf-ippm-ioam-data">iOAM</xref>. 
	    In addition, any future data and customized data can be generated and collected through deploying <xref target="I-D.song-opsawg-dnp4iq">DNP</xref>.
	  </t><t>
            PBT-M does not need to modify user packets except selectively marking some of the user packets.
	  </t><t>
            The data types and data models can be standardized. In particular, DNP can be modeled and configured. 
	    There are some related work such as <xref target="I-D.sambo-netmod-yang-fsm">YANG FSM</xref> and 
	    <xref target="I-D.clemm-netconf-push-smart-filters-ps">YANG PUSH Smart Filter</xref>. 
	    The packet marking scheme can also be standardized as suggested in Section 3.2.1.
	  </t> 
        </section>
	<section title="Data Export">
          <t>
            The collected data at each node can be exported through <xref target="I-D.talwar-rtgwg-grpc-use-cases">gRPC</xref>, 
	    <xref target="I-D.ietf-netconf-yang-push">YANG PUSH</xref>, or <xref target="RFC7011">IPFIX</xref>. 
	    It can also be encapsulated into a dedicated OAM packet and sent to the collector through UDP <xref target="I-D.ietf-netconf-udp-pub-channel"></xref>. 
	  </t><t>
	    If IPFIX is used, new data templates can be defined to support new data types.
          </t>
        </section>
	<section title="Data Fusion">
          <t>		
            The collector is responsible for correlating the OAM data coming from all the nodes for each packet.
	    This part is not directly related to standard. However, it can be designed to be backward compatible with iOAM 
	    (i.e., provide same API to applications). Of course, PBT surpasses iOAM's capability. 
          </t>
	</section>  
      </section>	      
--> 
    <section anchor="Security" title="Security Considerations">
	    <t> Several security issues need to be considered. </t>

	    <t>
      <list style="symbols">
	<t>      
          Eavesdrop and tamper: the postcards can be encrypted and authenticated to avoid such security threats.		    
        </t><t>
	DoS attack: PBT can be limited to a single administration domain. The mark must be removed at the egress domain edge. 
	The node can rate limit the extra traffic incurred by postcards.	
        </t>
      </list>
      </t>      
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>
        No requirement for IANA is identified.
      </t>
    </section>

    
    <section anchor="Contributors" title="Contributors">
      <t>
	TBD.
      </t>
    </section>

    <section anchor="Acknowledgments" title="Acknowledgments">
      <t>
        TBD. 
      </t>
    </section>

  </middle>

  <back>
    <references title="Informative References">
      &IPFIX;	    
      &ICMP;	    
      &IOAMReq;
      &IOAMData;
      &IOAMDataExt;
      &IOAMDataEncap;
      &IOAMSFC;
      &IOAMGENEVE;
      &IOAMGRE;
      &IOAMDX;
      &MPLSEH;
      &IOAMTunnel;
      &Postcard;
      &DNP;
      &IPFPM;
      &NSH;
      &NETCONF;
      &YANGFSM;
      &SMARTFILTER;
      &gRPC;
      &YANGPUSH;
      &UDPPUB;
      &SYNLABEL;
      &IOAMRAWEXP;
    </references>
  </back>
</rfc>

