<?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-03"
     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="12" month="March" 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>

      <section title="In-situ OAM Metadata Transport in GRE">
        <t>GRE encapsulation is defined in <xref target="RFC2784"></xref>.
        IOAM is defined as a "Protocol Type" TBD_IANA_ETHERNET_NUMBER_IOAM and
        follows GRE header. The different IOAM data fields defined in <xref
        target="I-D.brockners-inband-oam-data"></xref> are added as options
        within a new IOAM protocol header following 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><figure>
            <artwork><![CDATA[
In-situ OAM header following GRE header:

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        |  G
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
|      Checksum (optional)      |       Reserved1 (Optional)    |  E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
| Version     |  IOAM HDR len   |     Next Protocol Type        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|                          IOAM options                         |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|                                                               |
|                     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. IOAM specific fields and header are
        defined here:<list style="hanging">
            <t hangText="Version:">8-bit unsigned integer defining IOAM
            protocol version.</t>

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

            <t hangText="Next Protocol Type:">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 options:">Variable-length field, of length such
            that the complete in-situ OAM header is an integer multiple of 8
            octets long. Contains one or more TLV-encoded options of the
            format:</t>
          </list><figure>
            <artwork><![CDATA[

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Option Type  |  Opt Data Len |                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               .
   |                                                               .
   .                                                               .
   .                     Option Data                               .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   Option Type          8-bit identifier of the type of option.

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

   Option Data          Variable-length field.  Option-Type-specific
                        data.]]></artwork>
          </figure>The IOAM data fields defined in <xref
        target="I-D.brockners-inband-oam-data"></xref> are encoded with an
        option type allocated in the new IOAM IANA registry -
        IOAM_PROTOCOL_OPTION_REGISTRY_IANA_TBD. In addition the following
        padding options are defined to be used when necessary to align
        subsequent options and to pad out the containing header to a multiple
        of 8 octets in length.</t>

        <t><figure>
            <artwork><![CDATA[
Pad1 option  (alignment requirement: none)

    +-+-+-+-+-+-+-+-+
    |       0       |
    +-+-+-+-+-+-+-+-+
    NOTE: The format of the Pad1 option is a special case -- it does
          not have length and value fields.

    The Pad1 option is used to insert one octet of padding into the
    Options area of a header.  If more than one octet of padding is
    required, the PadN option, described next, should be used, rather
    than multiple Pad1 options.

PadN option  (alignment requirement: none)

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
    |       1       |  Opt Data Len |  Option Data
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
    The PadN option is used to insert two or more octets of padding
    into the Options area of a header.  For N octets of padding, the
    Opt Data Len field contains the value N-2, and the Option Data
    consists of N-2 zero-valued octets.]]></artwork>
          </figure></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>

      <t><figure>
          <artwork><![CDATA[
In-situ OAM header 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     |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GPE
|     Virtual Network Identifier (VNI)          | Reserved      |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| Type =IOAM    |   IOAM HDR len  |  Reserved   | Next Protocol |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+IOAM
|                         IOAM options                          |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
|                                                               |
|                                                               |
|                     Payload + Padding (L2/L3/ESP/...)         |
|                                                               |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>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:<list style="hanging">
          <t hangText="Type:">8-bit unsigned integer defining IOAM header
          type</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 options:">Variable-length field, of length such
          that the complete IOAM header is an integer multiple of 8 octets
          long. Contains one or more TLV-encoded options of the format:</t>
        </list><figure>
          <artwork><![CDATA[

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Option Type  |  Opt Data Len |         Reserved (MBZ)        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                     Option Data                               .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   Option Type          8-bit identifier of the type of option.

   Opt Data Len         8-bit unsigned integer.  Length of the 
                        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>The in-situ OAM options defined in <xref
      target="I-D.brockners-inband-oam-data"></xref> are encoded with an
      option type allocated in the new in-situ OAM IANA registry - in-situ
      OAM_PROTOCOL_OPTION_REGISTRY_IANA_TBD. In addition the following padding
      options are defined to be used when necessary to align subsequent
      options and to pad out the containing header to a multiple of 8 octets
      in length.</t>

      <t><figure>
          <artwork><![CDATA[
Pad1 option  (alignment requirement: none)

    +-+-+-+-+-+-+-+-+
    |       0       |
    +-+-+-+-+-+-+-+-+
    NOTE: The format of the Pad1 option is a special case -- it does
          not have length and value fields.

    The Pad1 option is used to insert one octet of padding into the
    Options area of a header.  If more than one octet of padding is
    required, the PadN option, described next, should be used, rather
    than multiple Pad1 options.

PadN option  (alignment requirement: none)

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
    |       1       |  Opt Data Len |  Option Data
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
    The PadN option is used to insert two or more octets of padding
    into the Options area of a header.  For N octets of padding, the
    Opt Data Len field contains the value N-2, and the Option Data
    consists of N-2 zero-valued octets.]]></artwork>
        </figure></t>
    </section>

    <section title="In-situ OAM Metadata Transport in NSH">
      <section title="In-situ OAM Tracing in NSH">
        <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 over NSH Type 2
        metadata TLVs.</t>

        <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      TLV Class= TBD           |C|  Type=Trace |R|     Len=n   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         IOAM-Trace-Type       |  Octets-left  |     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
~                             ...                               ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-++]]></artwork>
          </figure><list style="hanging">
            <t hangText="TLV Class:">Describes the scope of the "Type" field.
            In some cases, the TLV Class will identify a specific vendor, in
            others, the TLV Class will identify specific standards body
            allocated types. TRACE is currently defined using the TBD TLV
            class.</t>

            <t hangText="C bit:">Critical bit, See <xref
            target="I-D.ietf-sfc-nsh"></xref> for description.</t>

            <t hangText="Type:">The specific type of information being
            carried, within the scope of a given TLV Class. Value allocation
            is the responsibility of the TLV Class owner. A type value of
            0xTBD_NSH_IOAM_TRACE is used for IOAM Preallocated trace
            option.</t>

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

            <t hangText="Length:">Length of the variable metadata octets.</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="Octets-left:">8-bit unsigned integer as defined in
            <xref target="I-D.brockners-inband-oam-data"></xref>.</t>

            <t hangText="Flags">8-bit field 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[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      TLV Class=TBD            |C|    Type=POT |R|    Len=20   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|IOAM POT Type|P|                    Reserved (MBZ)             |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                           Random                              |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  P
|                        Random(contd.)                         |  O
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  T
|                         Cumulative                            |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                    Cumulative (contd.)                        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+]]></artwork>
          </figure><list style="hanging">
            <t hangText="TLV Class:">Describes the scope of the "Type" field.
            In some cases, the TLV Class will identify a specific vendor, in
            others, the TLV Class will identify specific standards body
            allocated types. POT is currently defined using the Cisco (0x0009)
            TLV class.</t>

            <t hangText="C bit:">Critical bit, See <xref
            target="I-D.ietf-sfc-nsh"></xref> for description.</t>

            <t hangText="Type:">The specific type of information being
            carried, within the scope of a given TLV Class. Value allocation
            is the responsibility of the TLV Class owner. A type value of
            0xTBD_NSH_IOAM_POT is used.</t>

            <t hangText="Reserved bit:">one reserved bit is present for future
            use. The reserved bits MUST be set to 0x0.</t>

            <t hangText="Length:">Length of the variable metadata, in octets.
            Here the length is 20.</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 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 NSH Type 2 metadata:</t>

        <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      TLV Class=TBD            |C|    Type=E2E |R|    Len      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|IOAM E2E Type  |                    Reserved (MBZ)             |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  E2E
|      E2E Option data field determined by IOAM-E2E-Type        |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+

]]></artwork>
          </figure><list style="hanging">
            <t hangText="TLV Class:">Describes the scope of the "Type" field.
            In some cases, the TLV Class will identify a specific vendor, in
            others, the TLV Class will identify specific standards body
            allocated types. POT is currently defined using the Cisco (0x0009)
            TLV class.</t>

            <t hangText="C bit:">Critical bit, See <xref
            target="I-D.ietf-sfc-nsh"></xref> for description.</t>

            <t hangText="Type:">The specific type of information being
            carried, within the scope of a given TLV Class. Value allocation
            is the responsibility of the TLV Class owner. Currently a type
            value of 0xTBD_NSH_IOAM_E2E is used.</t>

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

            <t hangText="Length:">Length of the variable metadata, in
            octets.</t>

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

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