<?xml version="1.0" encoding="iso-8859-1"?>
<!--<!DOCTYPE rfc SYSTEM "rfc4748.dtd"> -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc8279 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8279.xml">
<!ENTITY rfc8296 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8296.xml">
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc8174 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY I-D.ietf-bier-ping PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-ping.xml">
<!ENTITY I-D.ietf-ippm-ioam-data PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-ippm-ioam-data.xml">
<!ENTITY I-D.ietf-bier-use-cases PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-use-cases.xml">
<!ENTITY I-D.ietf-bier-pmmm-oam PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-pmmm-oam.xml">
]>
<rfc category="std" ipr="trust200902" docName="draft-xzlnp-bier-ioam-01">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<front>
  <title abbrev="BIER Encap for IOAM Data"> Bit Index Explicit Replication (BIER) Encapsulation for In-situ OAM (IOAM) Data </title>

  <author fullname="Xiao Min" initials="X" surname="Min">
      <organization>ZTE Corp.</organization>
     <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city>Nanjing</city>

         <region/>

         <code/>

         <country>China</country>
       </postal>

       <phone/>

       <email>xiao.min2@zte.com.cn</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

  <author fullname="Zheng(Sandy) Zhang" initials="Z" surname="Zhang">
      <organization>ZTE Corp.</organization>
     <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city>Nanjing</city>

         <region/>

         <code/>

         <country>China</country>
       </postal>

       <phone/>

       <email>zhang.zheng@zte.com.cn</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

  <author fullname="Yisong Liu" initials="Y" surname="Liu">
      <organization>China Mobile</organization>
     <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city>Beijing</city>

         <region/>

         <code/>

         <country>China</country>
       </postal>

       <phone/>

       <email>liuyisong@chinamobile.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
	
  <author fullname="Nagendra Kumar Nainar" initials="N" surname="Nainar">
      <organization>Cisco Systems, Inc.</organization>
     <address>
       <postal>
         <street>7200-11 Kit Creek Road</street>

         <!-- Reorder these if your country does things differently -->

         <city/>

         <region>Research Triangle Park, NC  27709</region>

         <code/>

         <country>United States</country>
       </postal>

       <phone/>

       <email>naikumar@cisco.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
	
  <author fullname="Carlos Pignataro" initials="C" surname="Pignataro">
      <organization>Cisco Systems, Inc.</organization>
     <address>
       <postal>
         <street>7200-11 Kit Creek Road</street>

         <!-- Reorder these if your country does things differently -->

         <city/>

         <region>Research Triangle Park, NC  27709</region>

         <code/>

         <country>United States</country>
       </postal>

       <phone/>

       <email>cpignata@cisco.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
	
    <date year="2021"/>
  
    <area>Routing</area>
    <workgroup>BIER Working Group</workgroup>

    <keyword>Request for Comments</keyword>
    <keyword>RFC</keyword>
    <keyword>Internet Draft</keyword>
    <keyword>I-D</keyword>

    <abstract>
  <t> In-situ Operations, Administration, and Maintenance (IOAM) collects operational and telemetry information while 
  the packet traverses a particular network domain. Bit Index Explicit Replication (BIER) is an architecture that 
  provides optimal multicast forwarding through a "multicast domain", without requiring intermediate routers to 
  maintain any per-flow state or to engage in an explicit tree-building protocol. The BIER header contains a bit-string 
  in which each bit represents exactly one egress router to forward the packet to. This document outlines the requirements 
  to carry IOAM data in BIER header and specifies how IOAM data fields are encapsulated in BIER header. </t>
    </abstract>
    
</front>
  
<middle>

  <section title="Introduction">
  
  <t> In-situ Operations, Administration, and Maintenance (IOAM) collects operational and telemetry information while 
  the packet traverses a particular network domain. <xref target="I-D.ietf-ippm-ioam-data"/> defines different IOAM data 
  fields used to record various telemetry data from the transit nodes. The term "in-situ" refers to the fact that the IOAM data 
  fields are added to the data packets rather than being sent within packets specifically dedicated to OAM. </t>
  
  <t> Bit Index Explicit Replication (BIER), as defined in <xref target="RFC8279"/>, is an architecture that provides optimal 
  multicast forwarding through a "multicast domain", without requiring intermediate routers to maintain any per-flow state or 
  to engage in an explicit tree-building protocol. The BIER header, as defined in <xref target="RFC8296"/>, contains a bit-string 
  in which each bit represents exactly one egress router to forward the packet to. </t>
  
  <t> This document outlines the requirements to carry IOAM data in BIER header and specifies how IOAM data fields are encapsulated 
  in BIER header. </t>
  
  </section>
  
  <section title="Conventions Used in This Document">
  
    <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 target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
    </section>
   
    <section title="Abbreviations">
    <t> Abbreviations used in this document:</t>
    <t> BFER: Bit Forwarding Egress Router</t>
    <t> BFIR: Bit Forwarding Ingress Router</t>
    <t> BIER: Bit Index Explicit Replication</t>
    <t> GRE: Generic Routing Encapsulation</t>
    <t> IOAM: In-situ Operations, Administration, and Maintenance</t>
	<t> OAM: Operations, Administration, and Maintenance</t>
    </section>
       
  </section>

  <section title="Requirements to carry IOAM data in BIER header">

  <t> <xref target="I-D.ietf-bier-use-cases"/> lists many use cases for BIER. Usually there are many multicast flows within one 
  network domain, and some of the multicast flows, such as live video and real-time meeting, are sensitive to packet loss, delay 
  and other factors. The network operator wants to know the real-time statistics for these flows, such as delay, sequence, the 
  ingress/egress interface, and the usage of buffer. </t>
  
  <t> So methods are needed for measuring the real-time transportation guarantee of BIER packet. Performance measurement function 
  defined in <xref target="I-D.ietf-bier-pmmm-oam"/> can be used for measuring packet loss and delay. This document attempts to 
  provide a way to collect on-path operational and telemetry information through in-situ OAM. </t>
       
  </section>
  
  <section title="IOAM data fields encapsulation in BIER header">
	
  <t> The BIER header is defined in <xref target="RFC8279"/>. The BIER OAM header that follows BIER header is defined in 
  <xref target="I-D.ietf-bier-ping"/>. IOAM-Data-Fields can either be carried in BIER using a new type of OAM message which 
  follows the BIER OAM header (referred to as option 1), or be carried in BIER using a new next protocol header which immediately 
  follows the BIER header (referred to as option 2). In this document, option 2 is selected and the reason is discussed in Section 5.1.
  An IOAM header is added containing the different IOAM-Data-Fields defined in <xref target="I-D.ietf-ippm-ioam-data"/>. </t>
  
  <t> In an administrative domain where IOAM is used, insertion of the IOAM header in BIER is enabled at the BFIRs, which also 
  serve as IOAM encapsulating nodes by means of configuration, deletion of the IOAM header in BIER is enabled at the BFERs, 
  which also serve as IOAM decapsulating nodes by means of configuration. </t>
	

  <t> The Encapsulation format for IOAM over BIER is defined as follows: </t>
		
     <figure anchor="Figure_1" title="IOAM Encapsulation Format within BIER">
     <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|              BIFT-id                  | TC  |S|     TTL       |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|Nibble |  Ver  |  BSL  |              Entropy                  |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  B
|OAM|Rsv|    DSCP   |Proto = TBD|            BFIR-id            |  I
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  E
|                BitString  (first 32 bits)                     ~  R
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
~                                                               ~  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
~                BitString  (last 32 bits)                      |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|  IOAM-Type    | IOAM HDR Len  |      Reserved     | Next Proto|  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  I
|                                                               |  O
|                                                               |  A
~                 IOAM Option and Data Space                    ~  M
|                                                               |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|                                                               |
|                 Payload + Padding (L2/L3/...)                 |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]>     </artwork>
     </figure>
	 
     <t> The BIER header and fields are defined in <xref target="RFC8296"/>. Within the BIER header, a 6-bit field as 
	 "Proto" (Next Protocol) is used to identify the type of the payload immediately following the BIER header, The "Proto" 
	 value is set to TBD when the IOAM header is present.</t>	
	 
     <t> The IOAM related fields in BIER are defined as follows:</t>	
	 	 
    <t> 
	<list>
     <t> IOAM-Type:  8-bit field defining the IOAM Option Type, as defined in Section 8.1 of <xref target="I-D.ietf-ippm-ioam-data"/>.</t>
	 
	 <t> IOAM HDR Len:  8-bit unsigned integer. Length of the IOAM header in 4-octet units.</t>
	 
     <t> Reserved:  10-bit reserved field MUST be set to zero upon transmission and ignored upon receipt.</t>
	 
     <t> Next Proto:  6-bit unsigned integer that identifies the type of payload immediately following this IOAM option. 
	 The semantics of this field are identical to the "Proto" field in <xref target="RFC8296"/>.</t>
	 
     <t> IOAM Option and Data Space:  IOAM option header and data is present as specified by the IOAM-Type field, and is 
	 defined in Section 5 of <xref target="I-D.ietf-ippm-ioam-data"/>.</t>
	</list>
    </t> 
	
     <t> Multiple IOAM-Option-Types MAY be included within the BIER encapsulation. For example, if a BIER encapsulation 
	 contains two IOAM-Option-Types preceding a data payload, the Next Proto field of the first IOAM option will contain 
	 the value of TBD, while the Next Proto field of the second IOAM option will contain the "BIER Next Protocol" number 
	 indicating the type of the data payload. Each IOAM Option-Type MUST occur at most once within the same BIER encapsulation 
	 header.</t>	
	 
  </section> 

  <section title="Considerations"> 
  
  <t> This section summarizes a set of considerations on the overall approach taken for IOAM data encapsulation in BIER, 
  as well as deployment considerations.</t>
  
  <section title="Discussion of the encapsulation approach"> 
    
  <t> Both the options described in section 4 are supposed to be feasible, nevertheless this document needs to select one
  as standardized encapsulation for IOAM over BIER. Considering the fact that the encapsulation format option 2 using a 
  new next protocol header is more concise than option 1 using a new type of OAM message, and many other transport protocols, 
  e.g. GRE, use a new next protocol header to encapsulate IOAM data, the encapsulation format option 2 is selected as the 
  standardized one. </t>
    
  </section>
	
  <section title="IOAM and the use of the BIER OAM bits"> 
    
  <t> <xref target="RFC8296"/> defines a two-bits long field, referred to as OAM. <xref target="I-D.ietf-bier-pmmm-oam"/> 
  describes how to use the two-bits OAM field for alternate marking performance measurement method, and this document would not 
  change the semantics of the two-bits OAM field. The BIER IOAM header and the BIER two-bits OAM field are orthogonal and can 
  co-exist in the same packet header, i.e. a BIER packet with IOAM data can set the OAM field or not, and a BIER packet with 
  OAM field set can also carry IOAM data or not. </t>
    
  </section>
	
  </section>

  <section title="Security Considerations">
  <t> This document does not raise any additional security issues beyond those of the specifications referred 
  to in the list of normative references.</t>
  </section>
  
  <section title="IANA Considerations"> 
  <t> In the "BIER Next Protocol Identifiers" registry defined in <xref target="RFC8296"/>, a new Next Protocol Value for 
  IOAM is requested from IANA as follows:</t>
     <texttable anchor="Table_1" title="New BIER Next Protocol Identifier for IOAM">

         <ttcol align="left">BIER Next Protocol Identifier</ttcol>

         <ttcol align="left">Description</ttcol>
		 
         <ttcol align="left">Semantics Definition</ttcol>

         <ttcol align="left">Reference</ttcol>

         <c>TBD</c>

         <c>In-situ OAM (IOAM)</c>

         <c>Section 4</c>

         <c>This Document</c>

     </texttable>
  </section>

  <section title="Acknowledgements">
  <t> The authors would like to acknowledge Greg Mirsky for his thorough review and very helpful comments. </t>
  </section>  
  
</middle>
  
<back>

    <references title="Normative References">
	 &rfc8279;
	 &rfc8296;
	 &rfc2119;
     &rfc8174;
	 &I-D.ietf-ippm-ioam-data;
    </references>
	
    <references title="Informative References">
	 &I-D.ietf-bier-ping;
	 &I-D.ietf-bier-use-cases;
	 &I-D.ietf-bier-pmmm-oam;
    </references>
	
</back>
</rfc>
