<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml2rfc.tools.ietf.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 RFC7665 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7665.xml">
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC6830 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6830.xml">
<!ENTITY RFC6833 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6833.xml">
<!ENTITY RFC2460 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2460.xml">
<!ENTITY RFC7276 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7276.xml">
<!ENTITY RFC7112 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7112.xml">
<!ENTITY RFC791 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml">
<!ENTITY RFC6564 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6564.xml">
<!ENTITY RFC2784 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2784.xml">
<!ENTITY RFC3232 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3232.xml">
<!ENTITY I-D.brockners-inband-oam-data SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.brockners-inband-oam-data.xml">
<!ENTITY I-D.brockners-inband-oam-requirements SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.brockners-inband-oam-requirements.xml">
<!ENTITY I-D.brockners-inband-oam-transport SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.brockners-inband-oam-transport.xml">
<!ENTITY I-D.brockners-proof-of-transit SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.brockners-proof-of-transit.xml">
<!ENTITY I-D.penno-sfc-trace SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.penno-sfc-trace.xml">
<!ENTITY I-D.ietf-spring-segment-routing SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-spring-segment-routing.xml">
<!ENTITY I-D.previdi-isis-segment-routing-extensions SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.previdi-isis-segment-routing-extensions.xml">
<!ENTITY I-D.ietf-ippm-6man-pdm-option SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ippm-6man-pdm-option.xml">
<!ENTITY I-D.gont-v6ops-ipv6-ehs-in-real-world SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.gont-v6ops-ipv6-ehs-in-real-world.xml">
<!ENTITY I-D.brockners-lisp-sr SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.brockners-lisp-sr.xml">
<!ENTITY I-D.hildebrand-spud-prototype SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.hildebrand-spud-prototype.xml">
<!ENTITY I-D.ietf-sfc-nsh SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-sfc-nsh.xml">
<!ENTITY I-D.ietf-6man-segment-routing-header SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6man-segment-routing-header.xml">
<!ENTITY I-D.ietf-nvo3-vxlan-gpe SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-nvo3-vxlan-gpe.xml">
<!ENTITY I-D.lapukhov-dataplane-probe SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.lapukhov-dataplane-probe.xml">
<!ENTITY I-D.SPUD SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.hildebrand-spud-prototype.xml">
<!ENTITY AFI SYSTEM "http://www.iana.org/assignments/address-family-numbers/address-family-numbers.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://xml2rfc.tools.ietf.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?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="4"?>
<!-- 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-brockners-inband-oam-transport-04"
     ipr="trust200902">
  <!-- ipr="full3978"-->

  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN"
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the
         full title is longer than 39 characters -->

    <title abbrev="In-situ OAM Data Transport">Encapsulations for In-situ OAM
    Data</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Frank Brockners" initials="F." surname="Brockners">
      <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="Shwetha Bhandari" initials="S." surname="Bhandari">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>Cessna Business Park, Sarjapura Marathalli Outer Ring
          Road</street>

          <city>Bangalore, KARNATAKA 560 087</city>

          <country>India</country>
        </postal>

        <email>shwethab@cisco.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">
      <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="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">
      <organization abbrev="Comcast">Comcast</organization>

      <address>
        <email>John_Leddy@cable.comcast.com</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="">Marvell</organization>

      <address>
        <postal>
          <street>6 Hamada St.</street>

          <city>Yokneam</city>

          <code>20692</code>

          <country>Israel</country>
        </postal>

        <email>talmi@marvell.com</email>
      </address>
    </author>

    <author fullname="David Mozes" initials="D." surname="Mozes">
      <organization abbrev="">Mellanox Technologies Ltd.</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <code></code>

          <country></country>
        </postal>

        <email>davidm@mellanox.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="Remy Chang" initials="R." surname="Chang">
      <organization abbrev="">Barefoot Networks</organization>

      <address>
        <postal>
          <street>2185 Park Boulevard</street>

          <city>Palo Alto, CA</city>

          <code>94306</code>

          <country>US</country>
        </postal>

        <email></email>
      </address>
    </author>

    <date day="02" month="July" year="2017" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill
         in the current day for you. If only the current year is specified, xml2rfc will fill
	 in the current day and month for you. If the year is not the current one, it is
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>tsv</area>

    <workgroup>ippm</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>inband</keyword>

    <keyword>Telemetry, Tracing,</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>In-situ Operations, Administration, and Maintenance (OAM) records
      operational and telemetry information in the packet while the packet
      traverses a path between two points in the network. In-situ OAM is to
      complement current out-of-band OAM mechanisms based on ICMP or other
      types of probe packets. This document outlines how in-situ OAM data
      fields can be transported in protocols such as NSH, Segment Routing,
      VXLAN-GPE, native IPv6 (via extension headers), and IPv4. Transport
      options are currently investigated as part of an implementation study.
      This document is intended to only serve informational purposes.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction" toc="default">
      <t>This document discusses transport mechanisms for "in-situ"
      Operations, Administration, and Maintenance (OAM) data fields. In-situ
      OAM records OAM information within the packet while the packet traverses
      a particular network domain. The term "in-situ" refers to the fact that
      the OAM data is added to the data packets rather than is being sent
      within packets specifically dedicated to OAM. A discussion of the
      motivation and requirements for in-situ OAM can be found in <xref
      target="I-D.brockners-inband-oam-requirements"></xref>. Data types and
      data formats for in-situ OAM are defined in <xref
      target="I-D.brockners-inband-oam-data"></xref>.</t>

      <t>This document outlines transport encapsulations for the in-situ OAM
      data defined in <xref target="I-D.brockners-inband-oam-data"></xref>.
      This document is to serve informational purposes only. As part of an
      in-situ OAM implementation study different protocol encapsulations for
      in-situ OAM data are being explored. Once data formats and encapsulation
      approaches are settled, protocol specific specifications for in-situ OAM
      data transport will address the standardization aspect.</t>

      <t>The data for in-situ OAM defined in <xref
      target="I-D.brockners-inband-oam-data"></xref> can be carried in a
      variety of protocols based on the deployment needs. This document
      discusses transport of in-situ OAM data for the following protocols:</t>

      <t><list style="symbols">
          <t>IPv6</t>

          <t>IPv4</t>

          <t>VXLAN-GPE</t>

          <t>NSH</t>

          <t>Segment Routing (IPv6 and MPLS)</t>
        </list></t>

      <t>This list is non-exhaustive, as it is possible to carry the in-situ
      OAM data in several other protocols and transports.</t>

      <t>A feasibility study of in-situ OAM is currently underway as part of
      the FD.io project <xref target="FD.io"></xref>. The in-situ OAM
      implementation study should be considered as a "tool box" to showcase
      how "in-situ" OAM can complement probe-packet based OAM mechanisms for
      different deployments and packet transport formats. For details, see the
      open source code in the FD.io <xref target="FD.io"></xref>.</t>
    </section>

    <section anchor="Conventions" title="Conventions">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119"></xref>.</t>

      <t>Abbreviations used in this document:</t>

      <t><list hangIndent="11" style="hanging">
          <t hangText="IOAM:">In-situ Operations, Administration, and
          Maintenance</t>

          <t hangText="MTU:">Maximum Transmit Unit</t>

          <t hangText="NSH:">Network Service Header</t>

          <t hangText="OAM:">Operations, Administration, and Maintenance</t>

          <t hangText="POT:">Proof of Transit</t>

          <t hangText="SFC:">Service Function Chain</t>

          <t hangText="SID:">Segment Identifier</t>

          <t hangText="SR:">Segment Routing</t>

          <t hangText="VXLAN-GPE:">Virtual eXtensible Local Area Network,
          Generic Protocol Extension</t>
        </list></t>
    </section>

    <section title="In-Situ OAM Metadata Transport in IPv6">
      <t>This mechanisms of in-situ OAM in IPv6 complement others proposed to
      enhance diagnostics of IPv6 networks, such as the IPv6 Performance and
      Diagnostic Metrics Destination Option described in <xref
      target="I-D.ietf-ippm-6man-pdm-option"></xref>. The IP Performance and
      Diagnostic Metrics Destination Option is destination focused and
      specific to IPv6, whereas in-situ OAM is performed between end-points of
      the network or a network domain where it is enabled and used.</t>

      <t>A historical note: The idea of IPv6 route recording was originally
      introduced by <xref target="I-D.kitamura-ipv6-record-route"></xref> back
      in year 2000. With IPv6 now being generally deployed and new concepts
      such as Segment Routing <xref
      target="I-D.ietf-spring-segment-routing"></xref> being introduced, it is
      imperative to further mature the Operations, Administration, and
      Maintenance mechanisms available to IPv6 networks.</t>

      <t>The in-situ OAM options translate into options for an IPv6 hop by hop
      extension header. The extension header would be inserted by either a
      host source of the packet, or by a transit/domain-edge node. If the
      addition of the in-situ OAM Hop-by-Hop Option header would lead to the
      packet exceeding the MTU of the domain an error should be reported. The
      methods and procedures of how the error is reported are outside the
      scope of this document. Likewise if an ICMPv6 forwarding error occurs
      between encapsulating and decapsulating nodes, the node generating the
      ICMPv6 error should strip the in-situ OAM Hop-by-Hop Option header
      before sending the ICMPv6 message to the source.</t>

      <section title="In-situ OAM in IPv6 Hop by Hop Extension Header">
        <t>This section defines in-situ OAM for IPv6 transport. In-situ OAM
        Options are transported in IPv6 hop-by-hop extension header.</t>

        <section title="In-situ OAM Hop by Hop Options">
          <t>IPv6 hop-by-hop option format for carrying in-situ OAM data
          fields:</t>

          <t><figure>
              <artwork><![CDATA[

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Option Type  |  Opt Data Len |         Reserved (MBZ)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
.                                                               .  I
.                     Option Data                               .  O
.                                                               .  A
.                                                               .  M
.                                                               .  .
.                                                               .  O
.                                                               .  P
.                                                               .  T
.                                                               .  I
.                                                               .  O
.                                                               .  N
.                                                               .  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+

Option Type          8-bit identifier of the type of option.

Opt Data Len         8-bit unsigned integer.  Length of the
                     Reserved and Option Data field of this option,
                     in octets.

Reserved (MBZ)       16-bit field MUST be filled with zeroes.

Option Data          Variable-length field.  Option-Type-specific
                     data.

]]></artwork>
            </figure></t>

          <t>In-situ OAM Options are inserted as Option data as follows:</t>

          <t><list style="numbers">
              <t>Pre-allocated Tracing Option: The in-situ OAM Preallocated
              Tracing option defined in <xref
              target="I-D.brockners-inband-oam-data"></xref> is represented as
              a IPv6 option in hop by hop extension header by allocating
              following type: <list style="hanging">
                  <t hangText="Option Type:">001xxxxxx 8-bit identifier of the
                  type of option. xxxxxx=TBD_IANA_PRE_TRACE_OPTION_IPV6.</t>
                </list></t>

              <t>Incremental Tracing Option: The in-situ OAM Incremental
              Tracing option defined in <xref
              target="I-D.brockners-inband-oam-data"></xref> is represented as
              a IPv6 option in hop by hop extension header by allocating
              following type: <list style="hanging">
                  <t hangText="Option Type:">001xxxxxx 8-bit identifier of the
                  type of option. xxxxxx=TBD_IANA_INCR_TRACE_OPTION_IPV6.</t>
                </list></t>

              <t>Proof of Transit Option: The in-situ OAM POT option defined
              in <xref target="I-D.brockners-inband-oam-data"></xref> is
              represented as a IPv6 option in hop by hop extension header by
              allocating following type: <list style="hanging">
                  <t hangText="Option Type:">001xxxxxx 8-bit identifier of the
                  type of option. xxxxxx=TBD_IANA_POT_OPTION_IPV6.</t>
                </list></t>

              <t>Edge to Edge Option: The in-situ OAM E2E option defined in
              <xref target="I-D.brockners-inband-oam-data"></xref> is
              represented as a IPv6 option in hop by hop extension header by
              allocating following type: <list style="hanging">
                  <t hangText="Option Type:">000xxxxxx 8-bit identifier of the
                  type of option. xxxxxx=TBD_IANA_E2E_OPTION_IPV6.</t>
                </list></t>
            </list></t>
        </section>
      </section>
    </section>

    <section title="In-situ OAM Metadata Transport in IPv4">
      <t>Transport of in-situ OAM data in IPv4 will use GRE encapsulation.</t>

      <t>GRE encapsulation is defined in <xref target="RFC2784"></xref>. IOAM
      is defined as a "set of Protocol Types" TBD_IANA_ETHERNET_NUMBER_IOAM_*
      and follows GRE header. These Protocol Types are defined in <xref
      target="RFC3232"></xref> as "ETHER TYPES" and in <xref
      target="ETYPES"></xref>.</t>

      <t>The different IOAM data fields defined in <xref
      target="I-D.brockners-inband-oam-data"></xref> are added as TLVs
      following the GRE header. In an administrative domain where IOAM is
      used, insertion of the IOAM protocol header in GRE is enabled at the GRE
      tunnel endpoints which also serve as IOAM encapsulating/decapsulating
      nodes by means of configuration.</t>

      <t>For IOAM the following new GRE protocol types are requested:</t>

      <t><list style="numbers">
          <t>IOAM_Trace_Preallocated:
          TBD_IANA_ETHERNET_NUMBER_IOAM_TRACE_PREALLOCATED</t>

          <t>IOAM_Trace_Incremental:
          TBD_IANA_ETHERNET_NUMBER_IOAM_TRACE_INCREMENTAL</t>

          <t>IOAM_POT: TBD_IANA_ETHERNET_NUMBER_IOAM_POT</t>

          <t>IOAM_End-to_End: TBD_IANA_ETHERNET_NUMBER_IOAM_E2E</t>
        </list></t>

      <section title="In-situ OAM Tracing in GRE">
        <t>The packet formats of the pre-allocated IOAM trace and incremental
        IOAM trace when transported using GRE are defined as below. See <xref
        target="I-D.brockners-inband-oam-data"></xref> for details about
        pre-allocated and incremental IOAM trace options.</t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM Trace header following GRE header(Preallocated IOAM trace):

 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|       Reserved0       | Ver | Protocol Type = IOAM_Trace    |  G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
|      Checksum (optional)      |       Reserved1 (Optional)    |  E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|     Type      |   IOAM HDR len|        Next Protocol          |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|         IOAM-Trace-Type       |NodeLen|  Flags  | Octets-left |Trace
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |  IOAM
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             ...                               ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Pre-allocated Trace Option Data MUST be 4-byte aligned:
]]></artwork>
          </figure></t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM Trace header following GRE header(Incremental IOAM trace):

 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|       Reserved0       | Ver |Protocol Type = IOAM_Trace     |  G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
|      Checksum (optional)      |       Reserved1 (Optional)    |  E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|     Type      |   IOAM HDR len|        Next Protocol          |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|        IOAM-Trace-Type        |NodeLen|  Flags  | Max Length  |Trace
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |  IOAM
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             ...                               ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

In-situ OAM Incremental Trace Option Data MUST be 4-byte aligned:
]]></artwork>
          </figure> The GRE header and fields are defined in <xref
        target="RFC2784"></xref> with Protocol Type set to
        TBD_IANA_ETHERNET_NUMBER_IOAM_TRACE. IOAM specific fields and header
        are defined here:<list style="hanging">
            <t hangText="Type:">8-bit unsigned integer defining IOAM header
            type IOAM_TRACE_Preallocated or IOAM_Trace_Incremental are defined
            here.</t>

            <t hangText="IOAM HDR Len:">8 bits Length field contains the
            length of the variable metadata octets.</t>

            <t hangText="Next Protocol:">16 bits Next Protocol Type field
            contains the protocol type of the packet following IOAM protocol
            header. These Protocol Types are defined in <xref
            target="RFC3232"></xref> as "ETHER TYPES" and in <xref
            target="ETYPES"></xref>. An implementation receiving a packet
            containing a Protocol Type which is not listed in <xref
            target="RFC3232"></xref> or <xref target="ETYPES"></xref> SHOULD
            discard the packet.</t>

            <t hangText="IOAM-Trace-Type:">16-bit identifier of IOAM Trace
            Type as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>
            IOAM-Trace-Types.</t>

            <t hangText="Node Data Length:">4-bit unsigned integer as defined
            in <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Flags:">5-bit field as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Octets-left:">7-bit unsigned integer as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Maximum-length:">7-bit unsigned integer as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Node data List [n]:">Variable-length field as defined
            in <xref target="I-D.brockners-inband-oam-data"></xref>.</t>
          </list></t>
      </section>

      <section title="In-situ OAM POT in GRE">
        <t><figure>
            <artwork><![CDATA[
In-situ OAM POT header following GRE header:

 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|       Reserved0       | Ver | Protocol Type = IOAM_POT      |  G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
|      Checksum (optional)      |       Reserved1 (Optional)    |  E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|IOAM POT Type|P|   IOAM HDR len|     Next Protocol             |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|                           Random                              |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  P
|                        Random(contd.)                         |  O
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  T
|                         Cumulative                            |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                    Cumulative (contd.)                        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure> The GRE header and fields are defined in <xref
        target="RFC2784"></xref> with Protocol Type set to
        TBD_IANA_ETHERNET_NUMBER_IOAM_POT. IOAM specific fields and header are
        defined here:<list style="hanging">
            <t hangText="IOAM POT Type:">7-bit identifier of a particular POT
            variant that dictates the POT data that is included as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Profile to use (P):">1-bit as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref> IOAM POT
            Option.</t>

            <t hangText="IOAM HDR Len:">8 bits Length field contains the
            length of the variable metadata octets.</t>

            <t hangText="Next Protocol:">16 bits Next Protocol Type field
            contains the protocol type of the packet following IOAM protocol
            header. These Protocol Types are defined in <xref
            target="RFC3232"></xref> as "ETHER TYPES" and in <xref
            target="ETYPES"></xref>. An implementation receiving a packet
            containing a Protocol Type which is not listed in <xref
            target="RFC3232"></xref> or <xref target="ETYPES"></xref> SHOULD
            discard the packet.</t>

            <t hangText="Random:">64-bit Per-packet random number.</t>

            <t hangText="Cumulative:">64-bit Cumulative value that is updated
            by the Service Functions.</t>
          </list></t>
      </section>

      <section title="In-situ OAM End-to-End in GRE">
        <t><figure>
            <artwork><![CDATA[
In-situ OAM End-to-End header following GRE header:

 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|       Reserved0       | Ver | Protocol Type = IOAM_E2E      |  G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
|      Checksum (optional)      |       Reserved1 (Optional)    |  E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|IOAM_E2E_Type  |   IOAM HDR len|     Next Protocol             |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|      E2E Option data field determined by IOAM-E2E-Type        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure><list style="hanging">
            <t hangText="IOAM E2E Type:">8-bit identifier of a particular E2E
            variant that dictates the E2E data that is included as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="IOAM HDR Len:">8 bits Length field contains the
            length of the variable metadata octets.</t>

            <t hangText="Next Protocol:">16 bits Next Protocol Type field
            contains the protocol type of the packet following IOAM protocol
            header. These Protocol Types are defined in <xref
            target="RFC3232"></xref> as "ETHER TYPES" and in <xref
            target="ETYPES"></xref>. An implementation receiving a packet
            containing a Protocol Type which is not listed in <xref
            target="RFC3232"></xref> or <xref target="ETYPES"></xref> SHOULD
            discard the packet.</t>

            <t hangText="E2E Option data field:">Variable length field as
            defined in <xref target="I-D.brockners-inband-oam-data"></xref>
            IOAM E2E Option.</t>
          </list></t>
      </section>
    </section>

    <section title="In-situ OAM Metadata Transport in VXLAN-GPE">
      <t>VXLAN-GPE <xref target="I-D.ietf-nvo3-vxlan-gpe"></xref>
      encapsulation is somewhat similar to IPv6 extension headers in that a
      series of headers can be contained in the header as a linked list. The
      different iIOAM types are added as options within a new IOAM protocol
      header in VXLAN GPE. In an administrative domain where IOAM is used,
      insertion of the IOAM protocol header in VXLAN GPE is enabled at the
      VXLAN GPE tunnel endpoint which also serve as IOAM
      encapsulating/decapsulating nodes by means of configuration.</t>

      <section title="In-situ OAM Tracing in VXLAN-GPE">
        <t>The packet formats of the pre-allocated IOAM trace and incremental
        IOAM trace when transported in VXLAN-GPE are defined as below. See
        <xref target="I-D.brockners-inband-oam-data"></xref> for details about
        pre-allocated and incremental IOAM trace options.</t>

        <t>The VXLAN-GPE header and fields are defined in <xref
        target="I-D.ietf-nvo3-vxlan-gpe"></xref>. IOAM specific fields and
        header are defined here:</t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM Trace header following VXLAN GPE header
(Pre-allocated trace):

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Outer Ethernet Header                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Outer IP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Outer UDP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|R|R|Ver|I|P|R|O|          Reserved             |NP=IOAM_Trace  |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GPE
|     Virtual Network Identifier (VNI)          | Reserved      |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|      Type     |   IOAM HDR len|    Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|         IOAM-Trace-Type       |NodeLen|  Flags  | Octets-left |Trace
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |  IOAM
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             ...                               ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-<--+
|                                                               |
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Pre-allocated Trace Option Data MUST be 4-byte aligned:
]]></artwork>
          </figure></t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM Trace header following VXLAN GPE header
(Incremental IOAM trace):

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Outer Ethernet Header                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Outer IP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Outer UDP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|R|R|Ver|I|P|R|O|          Reserved             | NP=IOAM_Trace |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GPE
|     Virtual Network Identifier (VNI)          | Reserved      |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|      Type     |   IOAM HDR len|    Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|        IOAM-Trace-Type        |NodeLen|  Flags  | Max Length  |Trace
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |  IOAM
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             ...                               ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-<--+
|                                                               |
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
In-situ OAM Incremental Trace Option Data MUST be 4-byte aligned:
]]></artwork>
          </figure> <list style="hanging">
            <t hangText="Type:">8-bit unsigned integer defining IOAM header
            type IOAM_TRACE_Preallocated or IOAM_Trace_Incremental are defined
            here.</t>

            <t hangText="IOAM HDR len:">8-bit unsigned integer. Length of the
            in-situ OAM HDR in 8-octet units.</t>

            <t hangText="Reserved:">8-bit reserved field MUST be set to
            zero.</t>

            <t hangText="Next Protocol:">8-bit unsigned integer that
            determines the type of header following IOAM protocol. The value
            is from the IANA registry setup for VXLAN GPE Next Protocol
            defined in <xref target="I-D.ietf-nvo3-vxlan-gpe"></xref>.</t>

            <t hangText="IOAM-Trace-Type:">16-bit identifier of IOAM Trace
            Type as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>
            IOAM-Trace-Types.</t>

            <t hangText="Node Data Length:">4-bit unsigned integer as defined
            in <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Flags:">5-bit field as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Octets-left:">7-bit unsigned integer as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Maximum-length:">7-bit unsigned integer as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Node data List [n]:">Variable-length field as defined
            in <xref target="I-D.brockners-inband-oam-data"></xref>.</t>
          </list></t>
      </section>

      <section title="In-situ OAM POT in VXLAN-GPE">
        <t>The VXLAN-GPE header and fields are defined in <xref
        target="I-D.ietf-nvo3-vxlan-gpe"></xref>. IOAM specific fields and
        header are defined here:</t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM POT header following VXLAN GPE header:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Outer Ethernet Header                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Outer IP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Outer UDP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|R|R|Ver|I|P|R|O|          Reserved(MBZ)        |NP = IOAM_POT  |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GPE
|     Virtual Network Identifier (VNI)          | Reserved      |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|IOAM POT Type|P|   IOAM HDR len|    Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|                           Random                              |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  P
|                        Random(contd.)                         |  O
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  T
|                         Cumulative                            |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                    Cumulative (contd.)                        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+]]></artwork>
          </figure><list style="hanging">
            <t hangText="IOAM POT Type:">7-bit identifier of a particular POT
            variant that dictates the POT data that is included as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Profile to use (P):">1-bit as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref> IOAM POT
            Option.</t>

            <t hangText="IOAM HDR len:">8-bit unsigned integer. Length of the
            in-situ OAM HDR in 8-octet units</t>

            <t hangText="Reserved:">8-bit reserved field MUST be set to
            zero.</t>

            <t hangText="Next Protocol:">8-bit unsigned integer that
            determines the type of header following IOAM protocol. The value
            is from the IANA registry setup for VXLAN GPE Next Protocol
            defined in <xref target="I-D.ietf-nvo3-vxlan-gpe"></xref>.</t>

            <t hangText="Random:">64-bit Per-packet random number.</t>

            <t hangText="Cumulative:">64-bit Cumulative value that is updated
            by the Service Functions.</t>
          </list></t>
      </section>

      <section title="In-situ OAM Edge-to-Edge in VXLAN-GPE">
        <t><figure>
            <artwork><![CDATA[
In-situ OAM Edge-to-Edge in VXLAN GPE header:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Outer Ethernet Header                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Outer IP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Outer UDP Header                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|R|R|Ver|I|P|R|O|          Reserved             |NP = IOAM_E2E  |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GPE
|     Virtual Network Identifier (VNI)          | Reserved      |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
|Type=IOAM_E2E  |   IOAM HDR len  |  Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|      E2E Option data field determined by IOAM-E2E-Type        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+

]]></artwork>
          </figure><list style="hanging">
            <t hangText="Type:">8-bit identifier of a particular E2E variant
            that dictates the E2E data that is included as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="IOAM HDR len:">8-bit unsigned integer. Length of the
            in-situ OAM HDR in 8-octet units</t>

            <t hangText="Reserved:">8-bit reserved field MUST be set to
            zero.</t>

            <t hangText="Next Protocol:">8-bit unsigned integer that
            determines the type of header following IOAM protocol. The value
            is from the IANA registry setup for VXLAN GPE Next Protocol
            defined in <xref target="I-D.ietf-nvo3-vxlan-gpe"></xref>.</t>

            <t hangText="E2E Option data field:">Variable length field as
            defined in <xref target="I-D.brockners-inband-oam-data"></xref>
            IOAM E2E Option.</t>
          </list></t>
      </section>
    </section>

    <section title="In-situ OAM Metadata Transport in NSH">
      <section title="In-situ OAM Tracing in NSH">
        <t>The packet formats of the pre-allocated IOAM trace and incremental
        IOAM trace when transported in NSH are defined as below. See <xref
        target="I-D.brockners-inband-oam-data"></xref> for details about
        pre-allocated and incremental IOAM trace options.</t>

        <t>In Service Function Chaining (SFC) <xref target="RFC7665"></xref>,
        the Network Service Header (NSH) <xref
        target="I-D.ietf-sfc-nsh"></xref> already includes path tracing
        capabilities <xref target="I-D.penno-sfc-trace"></xref>. Tracing
        information can be carried in-situ as IOAM data fields following NSH
        MDx metadata TLVs.</t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM Trace header following NSH MDx header
(Pre-allocated IOAM trace):


 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|O|C|R|R|R|R|R|R|   Length  |  MD Type      | NP=IOAM_Trace |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  N
|          Service Path Identifer               | Service Index |  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  H
|                            ...                                |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|      Type     |   IOAM HDR len|    Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|         IOAM-Trace-Type       |NodeLen|  Flags  | Octets-left |Trace
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |IOAM
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             ...                               ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-<--+
|                                                               |
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

In-situ OAM Pre-allocated Trace Option Data MUST be 4-byte aligned:

]]></artwork>
          </figure></t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM Trace header following NSH MDx header
(Incremental IOAM trace):

 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|O|C|R|R|R|R|R|R|   Length  |  MD Type      | NP=IOAM_Trace |  N
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  S
|          Service Path Identifer               | Service Index |  H
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                            ...                                |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|      Type     |  IOAM HDR len |    Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|        IOAM-Trace-Type        |NodeLen|  Flags  | Max Length  |Trace
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |IOAM
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             ...                               ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-<--+
|                                                               |
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


In-situ OAM Incremental Trace Option Data MUST be 4-byte aligned:
]]></artwork>
          </figure> <list style="hanging">
            <t hangText="Next Protocol of NSH:">TBD value for IOAM_Trace.</t>

            <t hangText="Type:">8-bit unsigned integer defining IOAM header
            type IOAM_TRACE_Preallocated or IOAM_Trace_Incremental are defined
            here.</t>

            <t hangText="IOAM HDR len:">8-bit unsigned integer. Length of the
            in-situ OAM HDR in 8-octet units.</t>

            <t hangText="Reserved bits and R bits:">Reserved bits are present
            for future use. The reserved bits MUST be set to 0x0.</t>

            <t hangText="Next Protocol:">8-bit unsigned integer that
            determines the type of header following IOAM protocol.</t>

            <t hangText="IOAM-Trace-Type:">16-bit identifier of IOAM Trace
            Type as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>
            IOAM-Trace-Types.</t>

            <t hangText="Node Data Length:">4-bit unsigned integer as defined
            in <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Flags:">5-bit field as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Octets-left:">7-bit unsigned integer as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Maximum-length:">7-bit unsigned integer as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Node data List [n]:">Variable-length field as defined
            in <xref target="I-D.brockners-inband-oam-data"></xref>.</t>
          </list></t>
      </section>

      <section title="In-situ OAM POT in NSH">
        <t>The "Proof of Transit" capabilities (see <xref
        target="I-D.brockners-inband-oam-requirements"></xref> and <xref
        target="I-D.brockners-proof-of-transit"></xref>) of in-situ OAM can be
        leveraged within NSH. In an administrative domain where in-situ OAM is
        used, insertion of the in-situ OAM data into the NSH header is enabled
        at the required nodes (i.e. at the in-situ OAM
        encapsulating/decapsulating nodes) by means of configuration.</t>

        <t>Proof of transit in-situ OAM data is added as NSH Type 2
        metadata:</t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM POT header following NSH MDx header:

 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|O|C|R|R|R|R|R|R|   Length  |  MD Type      |NP = IOAM_POT  |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  N
|          Service Path Identifer               | Service Index |  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  H
|                            ...                                |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|IOAM_POT Type|P|   IOAM HDR len|    Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                           Random                              |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  P
|                        Random(contd.)                         |  O
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  T
|                         Cumulative                            |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                    Cumulative (contd.)                        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+]]></artwork>
          </figure><list style="hanging">
            <t hangText="Next Protocol of NSH:">TBD value for IOAM_POT.</t>

            <t hangText="IOAM POT Type:">7-bit identifier of a particular POT
            variant that dictates the POT data that is included as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Profile to use (P):">1-bit as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref> IOAM POT
            Option.</t>

            <t hangText="IOAM HDR len:">8-bit unsigned integer. Length of the
            in-situ OAM HDR in 8-octet units</t>

            <t hangText="Reserved bits and R bits:">Reserved bits are present
            for future use. The reserved bits MUST be set to 0x0.</t>

            <t hangText="Next Protocol:">8-bit unsigned integer that
            determines the type of header following IOAM protocol.</t>

            <t hangText="Random:">64-bit Per-packet random number.</t>

            <t hangText="Cumulative:">64-bit Cumulative value that is updated
            by the Service Functions.</t>
          </list></t>
      </section>

      <section title="In-situ OAM Edge-to-Edge in NSH">
        <t>The "Edge-to-Edge" capabilities (see <xref
        target="I-D.brockners-inband-oam-requirements"></xref>) of in-situ OAM
        can be leveraged within NSH. In an administrative domain where in-situ
        OAM is used, insertion of the in-situ OAM data into the NSH header is
        enabled at the required nodes (i.e. at the in-situ OAM
        encapsulating/decapsulating nodes) by means of configuration.</t>

        <t>Edge-to-Edge in-situ OAM data is added as a TLV following NSH MDx
        metadata:</t>

        <t><figure>
            <artwork><![CDATA[
In-situ OAM E2E header following NSH MDx header:

 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|O|C|R|R|R|R|R|R|   Length  |  MD Type      |NP = IOAM_E2E  |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  N
|          Service Path Identifer               | Service Index |  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  H
|                            ...                                |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|IOAM_E2E_Type  |   IOAM HDR len|    Reserved   | Next Protocol | IOAM
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  E2E
|      E2E Option data field determined by IOAM-E2E-Type        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+

]]></artwork>
          </figure><list style="hanging">
            <t hangText="Next Protocol of NSH:">TBD value for IOAM_E2E.</t>

            <t hangText="IOAM E2E Type:">8-bit identifier of a particular E2E
            variant that dictates the IOAM E2E data that is included as
            defined in <xref
            target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="IOAM HDR len:">8-bit unsigned integer. Length of the
            in-situ OAM HDR in 8-octet units</t>

            <t hangText="Reserved bits and R bits:">Reserved bits are present
            for future use. The reserved bits MUST be set to 0x0.</t>

            <t hangText="Next Protocol:">8-bit unsigned integer that
            determines the type of header following IOAM protocol.</t>

            <t hangText="E2E Option data field:">Variable length field as
            defined in <xref target="I-D.brockners-inband-oam-data"></xref>
            IOAM E2E Option.</t>
          </list></t>
      </section>
    </section>

    <section title="In-situ OAM Metadata Transport in Segment Routing">
      <t></t>

      <section title="In-situ OAM in SR with IPv6 Transport">
        <t>Similar to NSH, a policy defined using Segment Routing for IPv6 can
        be verified using the in-situ OAM "Proof of Transit" approach. The
        Segment Routing Header (SRH) for IPv6 offers the ability to transport
        TLV structured data, similar to what NSH does (see <xref
        target="I-D.ietf-6man-segment-routing-header"></xref>). In an domain
        where in-situ OAM is used, insertion of the in-situ OAM data is
        enabled at the required edge nodes (i.e. at the in-situ OAM
        encapsulating/decapsulating nodes) by means of configuration.</t>

        <t>A new "POT TLV" is defined for the SRH which is to carry proof of
        transit in situ OAM data.</t>

        <figure>
          <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Type     |    Length     |   RESERVED    |F|   Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|IOAM POT Type|P|                    Reserved (MBZ)             |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                           Random                              |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  P
|                        Random(contd.)                         |  O
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  T
|                         Cumulative                            |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                    Cumulative (contd.)                        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+]]></artwork>
        </figure>

        <t><list style="hanging">
            <t hangText="Type:">To be assigned by IANA.</t>

            <t hangText="Length:">20.</t>

            <t hangText="RESERVED:">8 bits. SHOULD be unset on transmission
            and MUST be ignored on receipt.</t>

            <t hangText="F:">1 bit. Indicates which POT-profile is active. 0
            means the even POT-profile is active, 1 means the odd POT-profile
            is active.</t>

            <t hangText="Flags:">8 bits. No flags are defined in this
            document.</t>

            <t hangText="IOAM POT Type:">7-bit identifier of a particular POT
            variant that dictates the POT data that is included as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Profile to use (P):">1-bit as defined in <xref
            target="I-D.brockners-inband-oam-data"></xref> IOAM POT
            Option.</t>

            <t hangText="Reserved (MBZ):">24-bit field MUST be filled with
            zeroes.</t>

            <t hangText="Random:">64-bit per-packet random number.</t>

            <t hangText="Cumulative:">64-bit cumulative value that is updated
            at specific nodes that form the service path to be verified.</t>
          </list></t>
      </section>

      <section title="In-situ OAM in SR with MPLS Transport">
        <t>In-situ OAM "Proof of Transit" data can also be carried as part of
        the MPLS label stack. Details will be addressed in a future version of
        this document.</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA considerations will be added in a future version of this
      document.</t>
    </section>

    <section title="Manageability Considerations">
      <t>Manageability considerations will be addressed &iacute;n a later
      version of this document..</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Security considerations will be addressed &iacute;n a later version
      of this document. For a discussion of security requirements of in-situ
      OAM, please refer to <xref
      target="I-D.brockners-inband-oam-requirements"></xref>.</t>
    </section>

    <section title="Acknowledgements">
      <t>The authors would like to thank Eric Vyncke, Nalini Elkins, Srihari
      Raghavan, Ranganathan T S, Karthik Babu Harichandra Babu, Akshaya
      Nadahalli, Stefano Previdi, Hemant Singh, Erik Nordmark, LJ Wobker, and
      Andrew Yourtchenko for the comments and advice. The authors would like
      to acknowledge Craig Hill for contributing GRE IOAM encapsulation. For
      the IPv6 encapsulation, this document leverages and builds on top of
      several concepts described in <xref
      target="I-D.kitamura-ipv6-record-route"></xref>. The authors would like
      to acknowledge the work done by the author Hiroshi Kitamura and people
      involved in writing it.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      &RFC2119;

      &I-D.brockners-inband-oam-requirements;

      &I-D.brockners-inband-oam-data;

      &I-D.ietf-nvo3-vxlan-gpe;

      &I-D.ietf-sfc-nsh;

      &I-D.ietf-6man-segment-routing-header;

      &RFC2784;

      &RFC3232;

      <reference anchor="ETYPES"
                 target="https://www.iana.org/assignments/ethernet-numbers/ethernet-numbers.xhtml">
        <front>
          <title>IANA Ethernet Numbers</title>

          <author></author>

          <date />
        </front>
      </reference>
    </references>

    <references title="Informative References">
      &RFC7665;

      &I-D.ietf-spring-segment-routing;

      <reference anchor="I-D.kitamura-ipv6-record-route">
        <front>
          <title>Record Route for IPv6 (PR6) Hop-by-Hop Option
          Extension</title>

          <author fullname="Hiroshi Kitamura" initials="H" surname="Kitamura"></author>

          <date month="November" year="2000" />
        </front>

        <seriesInfo name="Internet-Draft"
                    value="draft-kitamura-ipv6-record-route-00" />

        <format target="https://tools.ietf.org/id/draft-kitamura-ipv6-record-route-00.txt"
                type="TXT" />
      </reference>

      &I-D.brockners-proof-of-transit;

      &I-D.ietf-ippm-6man-pdm-option;

      <reference anchor="FD.io" target="https://fd.io/">
        <front>
          <title>Fast Data Project: FD.io</title>

          <author></author>

          <date />
        </front>
      </reference>

      &I-D.penno-sfc-trace;
    </references>
  </back>
</rfc>
