<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Fred Baker (private) -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced.
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2784 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2784.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8200 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC8250 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8250.xml">
<!ENTITY RFC5036 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5036.xml">
<!ENTITY RFC4193 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4193.xml">
<!ENTITY RFC1772 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1772.xml">
<!ENTITY RFC9197 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9197.xml">
<!ENTITY I-D.ietf-ippm-ioam-direct-export SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-direct-export.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="no"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<rfc category="std" docName="draft-ietf-ippm-ioam-ipv6-options-08"
     ipr="trust200902">
  <front>
    <title abbrev="In-situ OAM IPv6 encapsulation">In-situ OAM IPv6
    Options</title>

    <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari" role="editor">
      <organization abbrev="Thoughtspot">Thoughtspot</organization>
            <address>
	            <postal>
	              <street>3rd Floor, Indiqube Orion, 24th Main Rd, Garden Layout, HSR Layout</street>
		      <city>Bangalore, KARNATAKA 560 102</city>
		      <country>India</country>
	            </postal>
	            <email>shwetha.bhandari@thoughtspot.com</email>
	    </address>
    </author>

    <author fullname="Frank Brockners" initials="F." surname="Brockners" role="editor">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>Hansaallee 249, 3rd Floor</street>

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

          <city>DUESSELDORF</city>

          <region>NORDRHEIN-WESTFALEN</region>

          <code>40549</code>

          <country>Germany</country>
        </postal>

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

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



    <date day="16" month="June" year="2022"/>

    <area>Transport Area</area>

    <workgroup>ippm</workgroup>

    <abstract>
      <t>In-situ Operations, Administration, and Maintenance (IOAM) records
      operational and telemetry information in the packet while the packet
      traverses a path between two points in the network. This document
      outlines how IOAM data fields are encapsulated in IPv6.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>In-situ Operations, Administration, and Maintenance (IOAM) records
      operational and telemetry information in the packet while the packet
      traverses a path between two points in the network. This document
      outlines how IOAM data fields are encapsulated in the IPv6 <xref
      target="RFC8200"/> and discusses deployment options for networks that
      use IPv6-encapsulated IOAM data fields. These options have distinct
      deployment considerations; for example, the IOAM domain can either be
      between hosts, or be between IOAM encapsulating and decapsulating network
      nodes that forward traffic, such as routers.</t>
    </section>

    <section title="Contributors">
          <t>This document was the collective effort of several authors. The text
          and content were contributed by the editors and the co-authors listed
          below. The contact information of the co-authors appears at the end of
          this document.</t>

        <t><list style="symbols">
            <t>Carlos Pignataro</t>
            <t>Hannes Gredler</t>
            <t>John Leddy</t>
            <t>Stephen Youell</t>
            <t>Tal Mizrahi</t>
            <t>Aviv Kfir</t>
            <t>Barak Gafni</t>
            <t>Petr Lapukhov</t>
            <t>Mickey Spiegel</t>
            <t>Suresh Krishnan</t>
            <t>Rajiv Asati</t>
            <t>Mark Smith</t>
          </list></t>
    </section>

    <section title="Conventions">
      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in BCP
        14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>

      <section title="Abbreviations">
        <t>Abbreviations used in this document:</t>

        <t><list hangIndent="11" style="hanging">
            <t hangText="E2E:">Edge-to-Edge</t>

            <t hangText="IOAM:">In-situ Operations, Administration, and
            Maintenance</t>

            <t hangText="ION:">IOAM Overlay Network</t>

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

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

    <section title="In-situ OAM Metadata Transport in IPv6">
      <t>In-situ OAM in IPv6 is used to enhance diagnostics of IPv6 networks.
      It complements other mechanisms designed to enhance diagnostics of IPv6
      networks, such as the IPv6 Performance and Diagnostic Metrics
      Destination Option described in <xref target="RFC8250"/>.</t>

      <t>IOAM data fields can be encapsulated in &ldquo;option data&rdquo; fields
      using two types of extension headers in IPv6 packets - either Hop-by-Hop
      Options header or Destination options header.  Multiple options
      with the same Option Type MAY appear in the same Hop-by-Hop Options or
      Destination Options header, with distinct content.</t>

      <t>In order for IOAM to work in IPv6 networks, IOAM MUST be explicitly
         enabled per interface on every node within the IOAM domain.  Unless a
         particular interface is explicitly enabled (i.e., explicitly
         configured) for IOAM, a router MUST ignore IOAM Options.  As
         additional security, IOAM domains SHOULD provide a mechanism to
	 prevent injections at ingress or leaks at egress.</t>

      <t>An IPv6 packet carrying IOAM data in an Extension header can have
      other extension headers, compliant with <xref target="RFC8200"/>.</t>

      <t>IPv6 Hop-by-Hop and Destination Option format for carrying in-situ
      OAM data fields:<figure>
          <artwork><![CDATA[

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

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

      <t><list style="hanging">
          <t hangText="Option Type:">8-bit option type identifier as defined
          in<xref target="IANA"/>.</t>

          <t hangText="Opt Data Len:">8-bit unsigned integer. Length of this
          option, in octets, not including the first 2 octets.</t>

          <t hangText="Reserved:">8-bit field MUST be set to zero upon
          transmission and ignored upon reception.</t>

          <t hangText="IOAM Type:">8-bit field as defined in section 7.1 in
          <xref target="RFC9197"/>.</t>

          <t hangText="Option Data:">Variable-length field.
          Option-Type-specific data.</t>
        </list></t>

      <t>IOAM Option data is inserted as follows:<list style="numbers">
          <t>Pre-allocated Trace Option: The in-situ OAM Preallocated Trace
          Option-Type defined in <xref target="RFC9197"/> is
          represented as an IPv6 option in the Hop-by-Hop extension header: <list
              style="hanging">
              <t hangText="Option Type:">TBD_1_1 8-bit identifier of the
              IPv6 Option Type for IOAM.</t>

              <t hangText="IOAM Type:">IOAM Pre-allocated Trace Option-Type.</t>
            </list></t>

          <t>Incremental Trace Option: The in-situ OAM Incremental Trace
          Option-Type defined in <xref target="RFC9197"/> is
          represented as an IPv6 option in the Hop-by-Hop extension header: <list
              style="hanging">
              <t hangText="Option Type:">TBD_1_1 8-bit identifier of the
              IPv6 Option Type for IOAM.</t>

              <t hangText="IOAM Type:">IOAM Incremental Trace Option-Type.</t>
            </list></t>

          <t>Proof of Transit Option: The in-situ OAM POT Option-Type defined in
          <xref target="RFC9197"/> is represented as an IPv6
          option in the Hop-by-Hop extension header: <list style="hanging">
              <t hangText="Option Type:">TBD_1_1 8-bit identifier of the
              IPv6 Option Type for IOAM.</t>

              <t hangText="IOAM Type:">IOAM POT Option-Type.</t>
            </list></t>

          <t>Edge to Edge Option: The in-situ OAM E2E option defined in <xref
          target="RFC9197"/> is represented as an IPv6 option
          in Destination extension header: <list style="hanging">
              <t hangText="Option Type:">TBD_1_0 8-bit identifier of the
              IPv6 Option Type for IOAM.</t>

              <t hangText="IOAM Type:">IOAM E2E Option-Type.</t>
            </list></t>

          <t>Direct Export (DEX) Option: The in-situ OAM Direct Export Option-Type defined in <xref
          target="I-D.ietf-ippm-ioam-direct-export"/> is represented as an IPv6 option
          in the Hop-by-Hop extension header: <list style="hanging">
              <t hangText="Option Type:">TBD_1_0 8-bit identifier of the
              IPv6 Option Type for IOAM.</t>

              <t hangText="IOAM Type:">IOAM Direct Export (DEX) Option-Type.</t>
            </list></t>

        </list>All the in-situ OAM IPv6 options defined here have alignment
      requirements. Specifically, they all require 4n alignment. This ensures
      that fields specified in <xref target="RFC9197"/> are
      aligned at a multiple-of-4 offset from the start of the Hop-by-Hop and
      Destination Options header. In addition, to maintain IPv6 extension
      header 8-octet alignment and avoid the need to add or remove padding at
      every hop, the Trace-Type for Incremental Trace Option in IPv6 MUST be
      selected such that the IOAM node data length is a multiple of
      8-octets.</t>

      <t>IPv6 options can have a maximum length of 255 octets. Consequently,
	      the total length of IOAM Option-Types including all data fields
	      is also limited to 255 octets when encapsulated into IPv6.</t>
    </section>

    <section title="IOAM Deployment In IPv6 Networks">
      <t/>

      <section anchor="v6_requirement"
               title="Considerations for IOAM deployment in IPv6 networks">
        <t>IOAM deployments in IPv6 networks should take the following
        considerations and requirements into account:<list style="hanging">
            <t hangText="C1">It is desirable that the addition of IOAM data
            fields neither changes the way routers forward packets nor
            the forwarding decisions the routers take. Packets with
            added OAM information should follow the same path within the
            domain that an identical packet without OAM information would
            follow, even in the presence of ECMP. Such behavior
            is particularly important for deployments where IOAM
            data fields are only added "on-demand", e.g., to provide further
            insights in case of undesired network behavior for certain flows.
            Implementations of IOAM SHOULD ensure that ECMP behavior for
            packets with and without IOAM data fields is the same.</t>

            <t hangText="C2">Given that IOAM data fields increase the total
            size of a packet, the size of a packet including the IOAM data
            could exceed the PMTU. In particular, the incremental trace IOAM
            Hop-by-Hop (HbH) Option, which is intended to support hardware implementations
            of IOAM, changes Option Data Length en-route. Operators of an IOAM
            domain SHOULD ensure that the addition of OAM information does not
            lead to fragmentation of the packet, e.g., by configuring the MTU
            of transit routers and switches to a sufficiently high value.
            Careful control of the MTU in a network is one of the reasons why
            IOAM is considered a domain-specific feature (see also <xref
            target="RFC9197"/>). In addition, the PMTU
            tolerance range in the IOAM domain should be identified (e.g.,
            through configuration) and IOAM encapsulation operations and/or
            IOAM data field insertion (in case of incremental tracing) should
            not be performed if it exceeds the packet size beyond PMTU.</t>

            <t hangText="C3">Packets with IOAM data or associated ICMP errors,
            should not arrive at destinations that have no knowledge of IOAM.
            For exmample, if IOAM is used in in transit devices, misleading ICMP
            errors due to addition and/or presence of OAM data in a packet could
            confuse the host that sent the packet if it did not insert the OAM
            information.</t>

            <t hangText="C4">OAM data leaks can affect the forwarding behavior
            and state of network elements outside an IOAM domain. IOAM domains
            SHOULD provide a mechanism to prevent data leaks or be able to
            ensure that if a leak occurs, network elements outside the domain are
            not affected (i.e., they continue to process other valid packets).</t>

            <t hangText="C5">An Autonomous System (AS) that inserts and leaks the IOAM
            data needs to be easy to identify for the purpose of troubleshooting,
            due to the high complexity in identifying the source of the leak.
            Such a troubleshooting process might require coordination between
            multiple operators, complex configuration verification,
            packet capture analysis, etc.</t>

            <t hangText="C6">Compliance with <xref target="RFC8200"/>
            requires OAM data to be encapsulated instead of header/option
            insertion directly into in-flight packets using the original IPv6
            header.</t>
          </list></t>
      </section>

      <section title="IOAM domains bounded by hosts">
        <t>For deployments where the IOAM domain is bounded by hosts, hosts
        will perform the operation of IOAM data field encapsulation and
        decapsulation. IOAM data is carried in IPv6 packets as Hop-by-Hop or
        Destination options as specified in this document.</t>
      </section>

      <section title="IOAM domains bounded by network devices">
        <t>For deployments where the IOAM domain is bounded by network
        devices, network devices such as routers form the edge of an IOAM
        domain. Network devices will perform the operation of IOAM data field
        encapsulation and decapsulation.</t>
      </section>

      <section title="Deployment options">
        <t>This section lists out possible deployment options that can be
        employed to meet the requirements listed in <xref
        target="v6_requirement"/>.</t>

        <section title="IP-in-IPv6 encapsulation with ULA">
          <t>The "IP-in-IPv6 encapsulation with ULA" <xref target="RFC4193"/>
          approach can be used to apply IOAM to either an IPv6 or an IPv4
          network. In addition, it fulfills requirement C4 (avoid leaks) by
          using ULA for the IOAM Overlay Network (ION).
          The original IP packet is preserved. An IPv6 header
          including IOAM data fields in an extension header is added in front
          of it, to forward traffic within and across the IOAM domain. IPv6
          addresses for the ION, i.e. the outer IPv6 addresses are assigned
          from the ULA space. Addressing and routing in the ION are to be
          configured so that the IP-in-IPv6 encapsulated packets follow the
          same path as the original, non-encapsulated packet would have taken.
          This would create an internal IPv6 forwarding topology using the
          IOAM domain's interior ULA address space which is parallel with the
          forwarding topology that exists with the non-IOAM address space (the
          topology and address space that would be followed by packets that do
          not have supplemental IOAM information). Establishment and
          maintenance of the parallel IOAM ULA forwarding topology could be
          automated, e.g., similar to how LDP <xref target="RFC5036"/> is used
          in MPLS to establish and maintain an LSP forwarding topology that is
          parallel to the network's IGP forwarding topology.</t>

          <t>Transit across the ION could leverage the transit approach for
          traffic between BGP border routers, as described in <xref
          target="RFC1772"/>, "A.2.3 Encapsulation". Assuming that the
          operational guidelines specified in Section 4 of <xref
          target="RFC4193"/> are properly followed, the probability of leaks
          in this approach will be almost close to zero. If the packets do
          leak through IOAM egress device misconfiguration or partial IOAM
          egress device failure, the packets' ULA destination address is
          invalid outside of the IOAM domain. There is no exterior destination
          to be reached, and the packets will be dropped when they encounter
          either a router external to the IOAM domain that has a packet filter
          that drops packets with ULA destinations, or a router that does not
          have a default route.</t>
        </section>

        <section title="x-in-IPv6 Encapsulation that is used Independently">
          <t>In some cases it is desirable to monitor a domain that uses an
          overlay network that is deployed independently of the need for IOAM,
          e.g., an overlay network that runs Geneve-in-IPv6, or VXLAN-in-IPv6.
          In this case IOAM can be encapsulated in as an extension header in
          the tunnel (outer) IPv6 header. Thus, the tunnel encapsulating node
          is also the IOAM encapsulating node, and the tunnel end point is
          also the IOAM decapsulating node.</t>
        </section>
      </section>
    </section>

    <section title="Security Considerations">
      <t>This document describes the encapsulation of IOAM data fields in
      IPv6. Security considerations of the specific IOAM data fields for each
      case (i.e., Trace, Proof of Transit, and E2E) are described and defined
      in <xref target="RFC9197"/>.</t>

      <t>As this document describes new options for IPv6, these are similar to
      the security considerations of <xref target="RFC8200"/> and the
      weakness documented in <xref target="RFC8250"/>.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This draft requests the following IPv6 Option Type assignments from
      the Destination Options and Hop-by-Hop Options sub-registry of Internet
      Protocol Version 6 (IPv6) Parameters.</t>

      <t>http://www.iana.org/assignments/ipv6-parameters/ipv6-
      parameters.xhtml#ipv6-parameters-2</t>

      <t><figure>
          <artwork><![CDATA[
   Hex Value    Binary Value      Description           Reference
                act chg rest
   ----------------------------------------------------------------
   TBD_1_0      00   0  TBD_1     IOAM                  [This draft]
   TBD_1_1      00   1  TBD_1     IOAM                  [This draft]
]]></artwork>
        </figure></t>
    </section>

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

    <!---->

    <!-- -->
  </middle>

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

      &RFC8174;

      &RFC9197;

      &I-D.ietf-ippm-ioam-direct-export;

    </references>

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

      &RFC8250;

      &RFC5036;

      &RFC1772;

      &RFC4193;

      <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"/>

          <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>

    </references>
    <section numbered="no" title="Contributors' Addresses">
          <t><figure>
              <artwork><![CDATA[

   Carlos Pignataro
   Cisco Systems, Inc.
   7200-11 Kit Creek Road
   Research Triangle Park, NC  27709
   United States
   Email: cpignata@cisco.com


   Hannes Gredler
   RtBrick Inc.
   Email: hannes@rtbrick.com


   John Leddy
   Email: john@leddy.net


   Stephen Youell
   JP Morgan Chase
   25 Bank Street
   London  E14 5JP
   United Kingdom
   Email: stephen.youell@jpmorgan.com


   Tal Mizrahi
   Huawei Network.IO Innovation Lab
   Israel
   Email: tal.mizrahi.phd@gmail.com


   Aviv Kfir
   Mellanox Technologies, Inc.
   350 Oakmead Parkway, Suite 100
   Sunnyvale, CA  94085
   U.S.A.
   Email: avivk@mellanox.com


   Barak Gafni
   Mellanox Technologies, Inc.
   350 Oakmead Parkway, Suite 100
   Sunnyvale, CA  94085
   U.S.A.
   Email: gbarak@mellanox.com


   Petr Lapukhov
   Facebook
   1 Hacker Way
   Menlo Park, CA  94025
   US
   Email: petr@fb.com


   Mickey Spiegel
   Barefoot Networks, an Intel company
   4750 Patrick Henry Drive
   Santa Clara, CA  95054
   US
   Email: mickey.spiegel@intel.com


   Suresh Krishnan
   Kaloom
   Email: suresh@kaloom.com

   Rajiv Asati
   Cisco Systems, Inc.
   7200 Kit Creek Road
   Research Triangle Park, NC  27709
   US
   Email: rajiva@cisco.com


   Mark Smith
   PO BOX 521
   HEIDELBERG, VIC  3084
   AU
   Email: markzzzsmith+id@gmail.com
              ]]></artwork>
          </figure></t>
    </section>
  </back>
</rfc>
