<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Fred Baker (private) -->
<!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 RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2890 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2890.xml">
<!ENTITY RFC4303 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC2784 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2784.xml">
<!ENTITY RFC8926 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8926.xml">
<!ENTITY I-D.ietf-ippm-ioam-data SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ippm-ioam-data.xml">
<!ENTITY I-D.ietf-ippm-ioam-data-integrity SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ippm-ioam-data-integrity.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="no"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<rfc category="std" docName="draft-weis-ippm-ioam-eth-05" ipr="trust200902">
  <front>
    <title abbrev="EtherType IOAM">EtherType Protocol Identification of
    In-situ OAM Data</title>

    <author fullname="Brian Weis" initials="B.W." surname="Weis" role="editor">
      <organization>Independent</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <region/>

          <country>USA</country>
        </postal>

        <phone/>

        <email>bew.stds@gmail.com</email>
      </address>
    </author>

    <author fullname="Frank Brockners" initials="F." surname="Brockners" role="editor">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>Hansaallee 249, 3rd Floor</street>

          <!-- Reorder these if your country does things differently -->

          <city>DUESSELDORF</city>

          <region>NORDRHEIN-WESTFALEN</region>

          <code>40549</code>

          <country>Germany</country>
        </postal>

        <email>fbrockne@cisco.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Craig Hill" initials="C." surname="Hill">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>13600 Dulles Technology Drive</street>

          <!-- Reorder these if your country does things differently -->

          <city>Herndon</city>

          <region>Virginia</region>

          <code>20171</code>

          <country>United States</country>
        </postal>

        <email>crhill@cisco.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari">
        <organization abbrev="Thoughtspot">Thoughtspot</organization>

        <address>
         <postal>
          <street>3rd Floor, Indiqube Orion, 24th Main Rd, Garden Layout, HSR Layout</street>

          <city>Bangalore, KARNATAKA 560 102</city>

          <country>India</country>
         </postal>

         <email>shwetha.bhandari@thoughtspot.com</email>
        </address>
    </author>

    <author fullname="Vengada Prasad Govindan" initials="V."
            surname="Govindan">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <email>venggovi@cisco.com</email>
      </address>
    </author>

    <author fullname="Carlos Pignataro" initials="C." surname="Pignataro" role="editor">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>7200-11 Kit Creek Road</street>

          <city>Research Triangle Park</city>

          <region>NC</region>

          <code>27709</code>

          <country>United States</country>
        </postal>

        <email>cpignata@cisco.com</email>
      </address>
    </author>

    <author fullname="Nagendra Kumar Nainar" initials="N." surname="Nainar" role="editor">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>7200-11 Kit Creek Road</street>

          <city>Research Triangle Park</city>

          <region>NC</region>

          <code>27709</code>

          <country>United States</country>
        </postal>

        <email>naikumar@cisco.com</email>
      </address>
    </author>

    <author fullname="Hannes Gredler" initials="H." surname="Gredler">
      <organization>RtBrick Inc.</organization>

      <address>
        <email>hannes@rtbrick.com</email>
      </address>
    </author>

    <author fullname="John Leddy" initials="J." surname="Leddy">
      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>United States</country>
        </postal>

        <email>john@leddy.net</email>
      </address>
    </author>

    <author fullname="Stephen Youell" initials="S." surname="Youell">
      <organization abbrev="JMPC">JP Morgan Chase</organization>

      <address>
        <postal>
          <street>25 Bank Street</street>

          <city>London</city>

          <code>E14 5JP</code>

          <country>United Kingdom</country>
        </postal>

        <email>stephen.youell@jpmorgan.com</email>
      </address>
    </author>

    <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
      <organization abbrev="">Huawei Network.IO Innovation Lab</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>Israel</country>
        </postal>

        <email>tal.mizrahi.phd@gmail.com</email>
      </address>
    </author>

    <author fullname="Aviv Kfir" initials="A." surname="Kfir">
      <organization abbrev="">Nvidia</organization>

      <address>
        <postal>
          <street>350 Oakmead Parkway, Suite 100</street>

          <city>Sunnyvale, CA</city>

          <code>94085</code>

          <country>U.S.A.</country>
        </postal>

        <email>avivk@nvidia.com</email>
      </address>
    </author>

    <author fullname="Barak Gafni" initials="B." surname="Gafni">
      <organization abbrev="">Nvidia</organization>

      <address>
        <postal>
          <street>350 Oakmead Parkway, Suite 100</street>

          <city>Sunnyvale, CA</city>

          <code>94085</code>

          <country>U.S.A.</country>
        </postal>

	<email>gbarak@nvidia.com</email>
      </address>
    </author>

    <author fullname="Petr Lapukhov" initials="P." surname="Lapukhov">
      <organization abbrev="">Facebook</organization>

      <address>
        <postal>
          <street>1 Hacker Way</street>

          <city>Menlo Park, CA</city>

          <code>94025</code>

          <country>US</country>
        </postal>

        <email>petr@fb.com</email>
      </address>
    </author>

    <author fullname="Mickey Spiegel" initials="M." surname="Spiegel">
      <organization abbrev="">Barefoot Networks, an Intel
      company</organization>

      <address>
        <postal>
          <street>4750 Patrick Henry Drive</street>

          <city>Santa Clara, CA</city>

          <code>95054</code>

          <country>US</country>
        </postal>

        <email>mickey.spiegel@intel.com</email>
      </address>
    </author>

    <date day="21" month="February" year="2022"/>

    <area>Transport Area</area>

    <workgroup>ippm</workgroup>

    <abstract>
      <t>In-situ Operations, Administration, and Maintenance (IOAM) records
      operational and telemetry information in the packet while the packet
      traverses a path between two points in the network. This document
      defines an EtherType that identifies IOAM data fields as being the next
      protocol in a packet, and a header that encapsulates the IOAM data
      fields.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>In-situ Operations, Administration, and Maintenance (IOAM) records
      operational and telemetry information in the packet while the packet
      traverses a particular network domain. 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. This document
      proposes a new Ethertype for IOAM and defines how IOAM data fields are 
      carried as part of encapsulations where
      the IOAM data fields follows an encapsulation header that uses an EtherType to 
      denote the type of protocol data unit. Examples of these protocols are GRE <xref
      target="RFC2784"/> <xref
      target="RFC2890"/> and Geneve <xref target="RFC8926"/>).
      This document outlines how IOAM data fields are encoded in these
      encapsultion headers.</t>
    </section>

    <section title="Conventions">
      <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><list hangIndent="11" style="hanging">
            <t hangText="E2E:">Edge-to-Edge</t>

            <t hangText="Geneve:">Generic Network Virtualization
            Encapsulation</t>

            <t hangText="GRE:">Generic Routing Encapsulation</t>

            <t hangText="IOAM:">In-situ Operations, Administration, and
            Maintenance</t>

            <t hangText="OAM:">Operations, Administration, and Maintenance</t>

            <t hangText="POT:">Proof of Transit</t>
          </list></t>
      </section>
    </section>

    <section title="IOAM EtherType">
      <t>When the IOAM data fields are included within an encapsulation that
      identifies the next protocol using an EtherType (e.g., GRE or Geneve)
      the presence of IOAM data fields are identified with TBD_IOAM. When this
      EtherType is used, an additional IOAM header is also included. This
      header indicates the type of IOAM data fields that follows, and the next
      protocol that follows the IOAM data fields.</t>

      <figure>
        <artwork align="center"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   IOAM-Type   |   IOAM HDR len|        Next Protocol          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!                                                               |
!                                                               |
~                 IOAM Option and Data Space                    ~
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
      </figure>

      <t>The IOAM encapsulation is defined as follows.</t>

      <t><list style="hanging">
          <t hangText="IOAM Type:">8-bit field defining the IOAM Option type,
          as defined in Section 5.1 of <xref
          target="I-D.ietf-ippm-ioam-data"/>.</t>

          <t hangText="IOAM HDR Len:">8 bit Length field contains the length
          of the IOAM header in 4-octet units.</t>

          <t hangText="Next Protocol:">16 bits Next Protocol Type field
          contains the protocol type of the protocol data unit following IOAM protocol
          header. Protocol Type is defined to be an EtherType value from <xref
          target="ETYPES"/>. An implementation receiving a packet containing a
          Protocol Type which is not listed in one of those registries SHOULD
          discard the packet.</t>

          <t hangText="IOAM Option and Data Space:">IOAM option header and
          data is present as specified by the IOAM-Option-Type field, and is defined
          in Section 5 of <xref target="I-D.ietf-ippm-ioam-data"/>.</t>
        </list>Multiple IOAM options MAY be included within the encapsulation header. 
        For example, if a GRE encapsulation contains two IOAM options before the data 
        payload, the Next Protocol field of the first IOAM option will contain the value of
      TBD_IOAM, while the Next Protocol field of the second IOAM option will
      contain the EtherType indicating the type of the data payload.</t>
    </section>

    <section title="Usage Examples of the IOAM EtherType">
      <t>The IOAM EtherType can be used with any encapsulation that uses EtherType
      to denote the type of the protocol data unit. The
      following sections show how it can be used when GRE and Geneve are used as 
      the encapsulation header.</t>

      <section title="Example: GRE Encapsulation of IOAM Data Fields">
        <t>When IOAM data fields are carried in GRE, the IOAM encapsulation
        defined above follows the GRE header, as shown in <xref
        target="gre-encap"/>.</t>

        <t><figure anchor="gre-encap" height=""
            title="GRE Encapsulation Example">
            <artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|C| |K|S| Reserved0       | Ver | Protocol Type = <TBD_IOAM>    |  |  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|      Checksum (optional)      |       Reserved1 (Optional)    |  G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
|                         Key (optional)                        |  E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                 Sequence Number (Optional)                    |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|   IOAM-Type   |   IOAM HDR len|        Next Protocol          |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  I
!                                                               |  O
!                                                               |  A
~                 IOAM Option and Data Space                    ~  M
|                                                               |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|             Payload + Padding (L2/L3/ESP/...)                 |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>The GRE header and fields are defined in <xref
        target="RFC2890"/>. The GRE Protocol Type value is set to TBD_IOAM.</t>

        <t><xref target="GRE-example"/> shows two example protocol header
        stacks that use GRE along with IOAM. IOAM Option-Types (the below
        diagram uses "IOAM" as shorthand for IOAM Option-Types) are sequenced
        in behind the GRE header that follows the "outer" header of the 
        next protocol unit.</t>

        <t><figure align="center" anchor="GRE-example"
            title="GRE with IOAM examples">
            <artwork align="left"><![CDATA[
        Example 1                     Example 2

   |      ...       |            |       ...      |  
   +----------------+            +----------------+
   | TCP/UDP header |            |    IP, ...     |  
   +----------------+            +----------------+
   |    IP header   |            |   Eth. header  |
   +----------------+            +----------------+
   |      IOAM      |            |      IOAM      |
   +----------------+            +----------------+
   |    GRE header  |            |    GRE header  |
   +----------------+            +----------------+
   |    IP header   |            |    IP header   |
   +----------------+            +----------------+
   |     Layer 2    |            |     Layer 2    |
   +----------------+            +----------------+
   |     Layer 1    |            |     Layer 1    |      
   +----------------+            +----------------+

]]></artwork>
          </figure></t>
      </section>

      <section title="Example: Geneve Encapsulation of IOAM Data Fields">
        <t>When IOAM data fields are carried in Geneve, the IOAM encapsulation
        defined above follows the Geneve header, as shown in <xref
        target="geneve-encap"/>.<figure anchor="geneve-encap"
            title="Geneve Encapsulation Example">
            <artwork align="center"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|Ver|  Opt Len  |O|C|    Rsvd.  | Protocol Type = <TBD_IOAM>    |  |G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |E
|        Virtual Network Identifier (VNI)       |    Reserved   |  |N
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |E
|                    Variable Length Options                    |  |V
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+E
|   IOAM-Type   |   IOAM HDR len|        Next Protocol          |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  I
!                                                               |  O
!                                                               |  A
~                 IOAM Option and Data Space                    ~  M
|                                                               |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|  Inner header + Payload + Padding (L2/L3/ESP/...)             |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>The Geneve header and fields are defined in <xref
        target="RFC8926"/>. The Geneve Protocol Type value is
        TBD_IOAM.</t>
      </section>
    </section>

    <section title="Security Considerations">
      <t>This document describes the encapsulation of IOAM data fields in the encapsulation
      header such as GRE and Geneve that uses EtherType to denote the protocol data unit.
      Security considerations of the specific IOAM data fields for each case
      (i.e., Trace, Proof of Transit, and E2E) are described in
      <xref target="I-D.ietf-ippm-ioam-data"/>.</t>

      <t>As this document describes new protocol fields within the existing
      encapsulation, any security considerations of the respective encapsulation
      header is applicable. When the encapsulation is GRE, the security considerations of
      <xref target="RFC2890"/> is applicable.  When the encapsulation is Geneve, the 
      security considerations of <xref target="RFC8926"/> is applicable.</t>

      <t>IOAM data fields SHOULD be integrity
	      protected (e.g., with <xref target="I-D.ietf-ippm-ioam-data-integrity"/>) to detect
      changes made by a device between the IOAM encapsulating node and the IOAM decapsulating node. 
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>A new EtherType value is requested to be added to the <xref
      target="ETYPES"/> IANA registry by IEEE Registration Authority. The description should be "In-situ OAM
      (IOAM)".</t>
    </section>

    <section anchor="Acknowledgments" title="Acknowledgements">
      <t>We would like to thank Nagendra Kumar Nainar for the contribution.
      </t>
    </section>
    <!-- <section anchor="Acknowledgements" title="Acknowledgements"> -->

    <!-- </section> -->
  </middle>

  <back>
    <references title="Normative References">
      &RFC2119;

      &RFC8174;

      &RFC2890;

      &RFC2784;

      &RFC8926;

      &I-D.ietf-ippm-ioam-data;


      <reference anchor="ETYPES"
                 target="https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml">
        <front>
          <title>IANA Ethernet Numbers</title>

          <author/>

          <date/>
        </front>
      </reference>
    </references>

    <references title="Informative References">
      &I-D.ietf-ippm-ioam-data-integrity;
    </references>
  </back>
</rfc>
