<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category="std" consensus="true" docName="draft-ietf-ippm-ioam-direct-export-11" number="9326" ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3">

  <!-- xml2rfc v2v3 conversion 3.15.0 -->
  <front>
    <title abbrev="IOAM Direct Exporting">In Situ Operations, Administration, and Maintenance (IOAM) Direct Exporting</title>


    
    <seriesInfo name="RFC" value="9326"/>
    <author fullname="Haoyu Song" initials="H." surname="Song">
      <organization abbrev="">Futurewei</organization>
      <address>
        <postal>
          <street>2330 Central Expressway</street>
          <city>Santa Clara</city>
          <code>95050</code>
          <country>United States of America</country>
        </postal>
        <email>haoyu.song@futurewei.com</email>
      </address>
    </author>
    <author fullname="Barak Gafni" initials="B." surname="Gafni">
      <organization abbrev="">Nvidia</organization>
      <address>
        <postal>
	  <extaddr>Suite 100</extaddr>
          <street>350 Oakmead Parkway</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94085</code>
          <country>United States of America</country>
        </postal>
        <email>gbarak@nvidia.com</email>
      </address>
    </author>
    <author fullname="Frank Brockners" initials="F." surname="Brockners">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Hansaallee 249</street>
          <city>Duesseldorf</city>
          <code>40549</code>
          <country>Germany</country>
        </postal>
        <email>fbrockne@cisco.com</email>
      </address>
    </author>
    <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari">
      <organization abbrev="Thoughtspot">Thoughtspot</organization>
      <address>
        <postal>
	  <extaddr>3rd Floor, Indiqube Orion, Garden Layout, HSR Layout</extaddr>
          <street>24th Main Rd</street>
          <city>Bangalore</city>
	  <region>Karnataka</region>
	  <code>560 102</code>
          <country>India</country>
        </postal>
        <email>shwetha.bhandari@thoughtspot.com</email>
      </address>
    </author>
    <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
      <organization abbrev="">Huawei</organization>
      <address>
        <postal>
          <street>8-2 Matam</street>
          <city>Haifa</city>
          <code>3190501</code>
          <country>Israel</country>
        </postal>
        <email>tal.mizrahi.phd@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="November" />
    <area>tsv</area>
    <workgroup>ippm</workgroup>

    <keyword>IOAM</keyword>
    <keyword>Telemetry</keyword>

    <abstract>
      <t>In situ Operations, Administration, and Maintenance (IOAM) is used
      for recording and collecting operational and telemetry information.
      Specifically, IOAM allows telemetry data to be pushed into data packets
      while they traverse the network. This document introduces a new IOAM
      option type (denoted IOAM-Option-Type) called the "IOAM Direct Export (DEX) Option-Type". This Option-Type is used as a trigger for IOAM data to be directly
      exported or locally aggregated without being pushed into in-flight data
      packets. The exporting method and format are outside the scope of this
      document.</t>
    </abstract>
    
  </front>
  <middle>
    <section toc="default" numbered="true">
      <name>Introduction</name>
      <t>IOAM <xref target="RFC9197" format="default"/> is used for monitoring traffic in the
      network and for incorporating IOAM data fields (denoted
      IOAM-Data-Fields) into in-flight data packets.</t>
      <t>IOAM makes use of four possible IOAM-Option-Types, defined in <xref target="RFC9197" format="default"/>: Pre-allocated Trace, Incremental Trace, Proof of Transit (POT), and Edge-to-Edge.</t>
      <t>This document defines a new IOAM-Option-Type called the "IOAM Direct Export (DEX)
      Option-Type". This Option-Type is used as a trigger for IOAM nodes
      to locally aggregate and process IOAM data and/or to export it to a
      receiving entity (or entities). Throughout the document, this
      functionality is referred to as "collection" and/or "exporting". In this context, a
      "receiving entity" is an entity
      that resides within the IOAM domain such as a collector, analyzer, 
	  controller, decapsulating node, or software module in one of the IOAM nodes.</t>
      <t>Note that even though the IOAM-Option-Type is called "Direct Export",
      it depends on the deployment whether the receipt of a packet with a DEX
      Option-Type leads to the creation of another packet. Some deployments
      might simply use the packet with the DEX Option-Type to trigger local
      processing of Operations, Administration, and Maintenance (OAM) data. The functionality of this local processing is
      not within the scope of this document.</t>
    </section>
    <section anchor="Conventions" numbered="true" toc="default">
      <name>Conventions</name>
      <section numbered="true" toc="default">
        <name>Requirements Language</name>
	  <t>
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
    NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
      <section numbered="true" toc="default">
        <name>Terminology</name>
        <t>Abbreviations used in this document:</t>
        <dl newline="false" spacing="normal" indent="8">
          <dt>IOAM:</dt>
          <dd>In situ Operations, Administration, and
            Maintenance</dd>
          <dt>OAM:</dt>
          <dd>Operations, Administration, and Maintenance
          <xref target="RFC6291" format="default"/></dd>	  
          <dt>DEX:</dt>
          <dd>Direct Exporting</dd>
        </dl>
      </section>
    </section>
    <section anchor="OptionTypeSec" numbered="true" toc="default">
      <name>The Direct Exporting (DEX) IOAM-Option-Type</name>
      <section numbered="true" toc="default">
        <name>Overview</name>
        <t>The DEX Option-Type is used as a trigger for collecting IOAM data
        locally or exporting it to a receiving entity (or entities).
        Specifically, the DEX Option-Type can be used as a trigger for
        collecting IOAM data by an IOAM node and locally aggregating it; thus,
        this aggregated data can be periodically pushed to a receiving entity
        or pulled by a receiving entity on-demand.</t>
        <t>This Option-Type is incorporated into data packets by an IOAM
        encapsulating node and removed by an IOAM decapsulating node, as
        illustrated in <xref target="DEXArch" format="default"/>. The Option-Type can be read,
        but not modified, by transit nodes. Note that the terms "IOAM encapsulating node",
        "IOAM decapsulating node", and "IOAM transit node" are as defined in <xref target="RFC9197" format="default"/>.</t>
        <figure anchor="DEXArch">
          <name>DEX Architecture</name>
          <artwork align="left" name="" type="" alt=""><![CDATA[
                                    ^
                                    |Exported IOAM data
                                    |
                                    |
                                    |
              +--------------+------+-------+--------------+
              |              |              |              |
              |              |              |              |
User      +---+----+     +---+----+     +---+----+     +---+----+
packets   |Encapsu-|     | Transit|     | Transit|     |Decapsu-|
--------->|lating  |====>| Node   |====>| Node   |====>|lating  |---->
          |Node    |     | A      |     | B      |     |Node    |
          +--------+     +--------+     +--------+     +--------+
          Insert DEX       Export         Export       Remove DEX
          option and      IOAM data      IOAM data     option and
          export data                                  export data]]></artwork>
        </figure>
        <t>The DEX Option-Type is used as a trigger to collect and/or export
        IOAM data. The trigger applies to transit nodes, the decapsulating
        node, and the encapsulating node:</t>
	
        <ul spacing="normal">
          <li> An IOAM encapsulating node configured to incorporate the DEX
Option-Type encapsulates the packets (or possibly a subset of the
packets) it forwards with the DEX Option-Type and <bcp14>MAY</bcp14> export and/or collect
            the requested IOAM data immediately. Only IOAM encapsulating nodes
            are allowed to add the DEX Option-Type to a packet. An IOAM
            encapsulating node can generate probe packets that incorporate the
            DEX Option-Type. These probe packets can be generated periodically
            or on-demand (for example, triggered by the management plane). The
            specification of such probe packets is outside the scope of this
            document.</li>
          <li>A transit node that processes a packet with the DEX Option-Type
            <bcp14>MAY</bcp14> export and/or collect the requested IOAM data.</li>
          <li>An IOAM decapsulating node that processes a packet with the DEX
            Option-Type <bcp14>MAY</bcp14> export and/or collect the requested IOAM data and
            <bcp14>MUST</bcp14> decapsulate the IOAM header.</li>
        </ul>
        <t>As in <xref target="RFC9197" format="default"/>, the DEX Option-Type can be
        incorporated into all or a subset of the traffic that is forwarded by
        the encapsulating node, as further discussed in <xref target="SelectionSec" format="default"/>. Moreover, IOAM nodes respond to the DEX
        trigger by exporting and/or collecting IOAM data either for all
        traversing packets that carry the DEX Option-Type or selectively only
        for a subset of these packets, as further discussed in <xref target="ExportSec" format="default"/>.</t>
        <section anchor="SelectionSec" numbered="true" toc="default">
          <name>DEX Packet Selection</name>
          <t>If an IOAM encapsulating node incorporates the DEX Option-Type
          into all the traffic it forwards, it may lead to an excessive amount
          of exported data, which may overload the network and the receiving
          entity.  Therefore, an IOAM encapsulating node that supports the DEX
Option-Type <bcp14>MUST</bcp14> support the ability to incorporate the DEX
Option-Type selectively into a subset of the packets that are
forwarded by the IOAM encapsulating node.</t>
          <t>Various methods of packet selection and sampling have been
          previously defined, such as <xref target="RFC7014" format="default"/> and <xref target="RFC5475" format="default"/>. Similar techniques can be applied by an IOAM
          encapsulating node to apply DEX to a subset of the forwarded
          traffic.</t>
          <t>The subset of traffic that is forwarded or transmitted with a DEX
          Option-Type <bcp14>SHOULD NOT</bcp14> exceed 1/N of the interface capacity on any
          of the IOAM encapsulating node's interfaces. It is noted that this
          requirement applies to the total traffic that incorporates a DEX
          Option-Type, including traffic that is forwarded by the IOAM
          encapsulating node and probe packets that are generated by the IOAM
          encapsulating node. In this context, N is a parameter that can be
          configurable by network operators. If there is an upper bound, M, on
          the number of IOAM transit nodes in any path in the network, then it
          is <bcp14>RECOMMENDED</bcp14> to use an N such that N &gt;&gt; M (i.e., N is much greater
		  than M). The rationale is
          that a packet that includes a DEX Option-Type may trigger an
          exported packet from each IOAM transit node along the path for a
          total of M exported packets. Thus, if N &gt;&gt; M, then the number
          of exported packets is significantly lower than the number of data
          packets forwarded by the IOAM encapsulating node. If there is no
          prior knowledge about the network topology or size, it is
          <bcp14>RECOMMENDED</bcp14> to use N&gt;100.</t>
        </section>
        <section anchor="ExportSec" numbered="true" toc="default">
          <name>Responding to the DEX Trigger</name>
          <t>The DEX Option-Type specifies which IOAM-Data-Fields should be
          exported and/or collected, as specified in <xref target="OptionSec" format="default"/>.  As mentioned above, the data can be locally collected, aggregated, and/or
exported to a receiving entity proactively or on-demand. If IOAM data is
          exported, the format and encapsulation of the packet that contains
          the exported data is not within the scope of the current document.
          For example, the export format can be based on <xref target="I-D.spiegel-ippm-ioam-rawexport" format="default"/>.</t>
          <t>An IOAM node that performs DEX-triggered exporting <bcp14>MUST</bcp14> support
          the ability to limit the rate of the exported packets. The rate of
          exported packets <bcp14>SHOULD</bcp14> be limited so that the number of exported
          packets is significantly lower than the number of packets that are
          forwarded by the device. The exported data rate <bcp14>SHOULD NOT</bcp14> exceed
          1/N of the interface capacity on any of the IOAM node's interfaces.
          It is <bcp14>RECOMMENDED</bcp14> to use N&gt;100. Depending on the IOAM node's
          architecture considerations, the export rate may be limited to a
          lower number in order to avoid loading the IOAM node. An IOAM node
          <bcp14>MAY</bcp14> maintain a counter or a set of counters that count the events in
          which the IOAM node receives a packet with the DEX Option-Type and
          does not collect and/or export data due to the rate limits.</t>
          <t>IOAM nodes <bcp14>SHOULD NOT</bcp14> be configured to export packets
		  over a path or a tunnel
          that is subject to IOAM direct exporting. Furthermore, IOAM
          encapsulating nodes that can identify a packet as an IOAM exported
          packet <bcp14>MUST NOT</bcp14> push a DEX Option-Type into such a packet. This
          requirement is intended to prevent nested exporting and/or exporting
          loops.</t>
          <t>A transit or decapsulating IOAM node that receives an unknown
          IOAM-Option-Type ignores it (as defined in <xref target="RFC9197" format="default"/>); specifically, nodes that do not support the
          DEX Option-Type ignore it. As per <xref target="RFC9197" format="default"/>, note that
          a decapsulating node removes the IOAM encapsulation and all its
          IOAM-Option-Types. Specifically, this applies to the case where one of these
          options is a (possibly unknown) DEX Option-Type. The ability to skip
          over a (possibly unknown) DEX Option-Type in the parsing or in the
          decapsulation procedure is dependent on the specific encapsulation,
          which is outside the scope of this document. For example, when IOAM
          is encapsulated in IPv6 <xref target="I-D.ietf-ippm-ioam-ipv6-options" format="default"/>, the DEX Option-Type is
          incorporated either in a Hop-by-Hop options header or in a
          Destination options header; thus, it can be skipped using the length
          field in the options header.</t>
        </section>
      </section>
      <section anchor="OptionSec" numbered="true" toc="default">
        <name>The DEX Option-Type Format</name>
        <t>The format of the DEX Option-Type is depicted in <xref target="OptionFormat" format="default"/>. The length of the DEX Option-Type is at least
        8 octets. The DEX Option-Type <bcp14>MAY</bcp14> include one or more optional fields.
        The existence of the optional fields is indicated by the corresponding
        flags in the Extension-Flags field. Two optional fields are defined in
        this document: the Flow ID and Sequence Number fields. Every
        optional field <bcp14>MUST</bcp14> be exactly 4 octets long. Thus, the
        Extension-Flags field explicitly indicates the length of the DEX
        Option-Type. Defining a new optional field requires an allocation of a
        corresponding flag in the Extension-Flags field, as specified in <xref target="IANAflags" format="default"/>.</t>
        <figure anchor="OptionFormat">
          <name>DEX Option-Type Format</name>
          <artwork align="left" name="" type="" alt=""><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Namespace-ID           |     Flags     |Extension-Flags|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               IOAM-Trace-Type                 |   Reserved    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Flow ID (Optional)                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Sequence Number  (Optional)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
        </figure>
	
        <dl newline="true" spacing="normal">
          <dt>Namespace-ID:</dt>
          <dd>A 16-bit identifier of the IOAM
            namespace, as defined in <xref target="RFC9197" format="default"/>.</dd>
          <dt>Flags:</dt>
          <dd>An 8-bit field, comprised of 8 1-bit
            subfields. Flags are allocated by IANA, as defined in <xref target="IANAflags" format="default"/>.</dd>
          <dt>Extension-Flags:</dt>
          <dd>An 8-bit field, comprised of 8
            1-bit subfields. Extension-Flags are allocated by IANA, as
            defined in <xref target="IANAExtensionflags" format="default"/>. Every bit in the
            Extension-Flag field that is set to 1 indicates the existence of a
            corresponding optional 4-octet field. An IOAM node that receives a
            DEX Option-Type with an unknown flag set to 1 <bcp14>MUST</bcp14> ignore the
            corresponding optional field.</dd>
          <dt>IOAM-Trace-Type:</dt>
          <dd>A 24-bit identifier that specifies
            which IOAM-Data-Fields should be exported. The format of this
            field is as defined in <xref target="RFC9197" format="default"/>. Specifically, the
            bit that corresponds to the Checksum Complement IOAM-Data-Field
            <bcp14>SHOULD</bcp14> be assigned to be zero by the IOAM encapsulating node and
            ignored by transit and decapsulating nodes. The reason for this is
            that the Checksum Complement is intended for in-flight packet
            modifications and is not relevant for direct exporting.</dd>
          <dt>Reserved:</dt>
          <dd>This field <bcp14>MUST</bcp14> be ignored by the
            receiver.</dd>
          <dt>Optional fields:</dt>
          <dd><t>The optional fields, if present,
            reside after the Reserved field. The order of the optional fields
            is according to the order of the respective bits, starting from
			the most significant bit, that are enabled in the
			Extension-Flags field. Each optional field is 4 octets long.</t>
			  <dl spacing="normal" newline="true">
          <dt>Flow ID:</dt>
          <dd>An optional 32-bit field representing the
            flow identifier. If the actual Flow ID is shorter than 32 bits, it
            is zero padded in its most significant bits. The field is set at
            the encapsulating node. The Flow ID can be used to correlate the
            exported data of the same flow from multiple nodes and from
            multiple packets. Flow ID values are expected to be allocated in a
            way that avoids collisions. For example, random assignment of Flow
            ID values can be subject to collisions, while
            centralized allocation can avoid this problem. The specification
            of the Flow ID allocation method is not within the scope of this
            document.</dd>
          <dt>Sequence Number:</dt>
          <dd>An optional 32-bit sequence number
            starting from 0 and incremented by 1 for each 
            packet from the same flow at the encapsulating node that includes
			the DEX option. The Sequence
            Number, when combined with the Flow ID, provides a convenient
            approach to correlate the exported data from the same user
            packet.</dd>
			  </dl>
	  </dd>
	</dl>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="IANAtype" numbered="true" toc="default">
        <name>IOAM Type</name>
        <t>The "IOAM Option-Type" registry is defined in <xref target="RFC9197" sectionFormat="of" section="7.1"/>. IANA has allocated the following code
        point from the "IOAM Option-Type" registry as follows:</t>
        <dl newline="false" spacing="normal">
          <dt>Code Point:</dt><dd>4</dd>
          <dt>Name</dt><dd>IOAM Direct Export (DEX) Option-Type</dd>
	  <dt>Description:</dt><dd>Direct exporting</dd>
	  <dt>Reference:</dt><dd>This document</dd>
        </dl>
      </section>
      <section anchor="IANAflags" numbered="true" toc="default">
        <name>IOAM DEX Flags</name>
        <t>IANA has created the "IOAM DEX Flags" registry. This
        registry includes 8 flag bits. Allocation is based on the "IETF
        Review" procedure defined in <xref target="RFC8126" format="default"/>.</t>
        <t>New registration requests <bcp14>MUST</bcp14> use the following template:</t>
        <dl newline="false" spacing="normal">
          <dt>Bit:</dt>
          <dd>Desired bit to be allocated in the 8-bit Flags
            field of the DEX Option-Type.</dd>
          <dt>Description:</dt>
          <dd>Brief description of the newly
            registered bit.</dd>
          <dt>Reference:</dt>
          <dd>Reference to the document that defines
            the new bit.</dd>
        </dl>
      </section>
      <section anchor="IANAExtensionflags" numbered="true" toc="default">
        <name>IOAM DEX Extension-Flags</name>
        <t>IANA has created the "IOAM DEX Extension-Flags" registry.
        This registry includes 8 flag bits. Bit 0 (the most significant bit)
        and bit 1 in the registry are allocated by this document and
        described in <xref target="OptionSec" format="default"/>. Allocation of the other bits
        should be performed based on the "IETF Review" procedure defined
        in <xref target="RFC8126" format="default"/>.</t>
        <dl newline="false" spacing="normal">
          <dt>Bit 0:</dt>
          <dd>"Flow ID [RFC9326]"</dd>
          <dt>Bit 1:</dt>
          <dd>"Sequence Number [RFC9326]"</dd>
        </dl>
        <t>New registration requests <bcp14>MUST</bcp14> use the following template:</t>
        <dl newline="false" spacing="normal">
          <dt>Bit:</dt>
          <dd>Desired bit to be allocated in the 8-bit
            Extension-Flags field of the DEX Option-Type.</dd>
          <dt>Description:</dt>
          <dd>Brief description of the newly
            registered bit.</dd>
          <dt>Reference:</dt>
          <dd>Reference to the document that defines
            the new bit.</dd>
        </dl>
      </section>
    </section>
    <section anchor="Performance" numbered="true" toc="default">
      <name>Performance Considerations</name>
      <t>The DEX Option-Type triggers IOAM data to be collected and/or
      exported packets to be exported to a receiving entity (or entities). In
      some cases, this may impact the receiving entity's performance or the
      performance along the paths leading to it.</t>
      <t>Therefore, the performance impact of these exported packets is
      limited by taking two measures: at the encapsulating nodes by selective
      DEX encapsulation (<xref target="SelectionSec" format="default"/>) and at the transit
      nodes by limiting exporting rate (<xref target="ExportSec" format="default"/>). These
      two measures ensure that direct exporting is used at a rate that does
      not significantly affect the network bandwidth and does not overload
      the receiving entity. Moreover, it is possible to load balance the
      exported data among multiple receiving entities, although the exporting
      method is not within the scope of this document.</t>
      <t>It should be noted that, in some networks, DEX data may be exported
      over an out-of-band network in which a large volume of exported traffic
      does not compromise user traffic. In this case, an operator may choose to
      disable the exporting rate limiting.</t>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The security considerations of IOAM in general are discussed in <xref target="RFC9197" format="default"/>. Specifically, an attacker may try to use the
      functionality that is defined in this document to attack the
      network.</t>
      <t>An attacker may attempt to overload network devices by injecting
      synthetic packets that include the DEX Option-Type. Similarly, an
      on-path attacker may maliciously incorporate the DEX Option-Type into
      transit packets or maliciously remove it from packets in which it is
      incorporated.</t>
      <t>Forcing DEX, either in synthetic packets or in transit packets, may
      overload the IOAM nodes and/or the receiving entity (or entities). Since
      this mechanism affects multiple devices along the network path, it
      potentially amplifies the effect on the network bandwidth, the
      storage of the devices that collect the data, and the receiving
      entity's load.</t>
      <t>The amplification effect of DEX may be worse in wide area networks in
      which there are multiple IOAM-Domains. For example, if DEX is used in
      IOAM-Domain 1 for exporting IOAM data to a receiving entity, then the
      exported packets of IOAM-Domain 1 can be forwarded through IOAM-Domain 2, in
      which they are subject to DEX. In turn, the exported packets of IOAM-Domain 2 may be forwarded through another IOAM domain (or through IOAM-Domain 1);
      theoretically, this recursive amplification may continue infinitely.</t>
      <t>In order to mitigate the attacks described above, the following
      requirements (<xref target="OptionTypeSec" format="default"/>) have been defined:</t>
      <ul spacing="normal">
        <li>Selective DEX (<xref target="SelectionSec" format="default"/>) is applied by IOAM
          encapsulating nodes in order to limit the potential impact of DEX
          attacks to a small fraction of the traffic.</li>
        <li>Rate limiting of exported traffic (<xref target="ExportSec" format="default"/>) is
          applied by IOAM nodes in order to prevent overloading attacks and 
          to significantly limit the scale of amplification attacks.</li>
        <li>IOAM encapsulating nodes are required to avoid pushing the DEX
          Option-Type into IOAM exported packets (<xref target="ExportSec" format="default"/>),
          thus preventing some of the amplification and export loop
          scenarios.</li>
      </ul>
      <t>Although the exporting method is not within the scope of this
      document, any exporting method <bcp14>MUST</bcp14> secure the exported data from the
      IOAM node to the receiving entity in order to protect the 
	  confidentiality and guarantee the integrity of the exported data. 
	  Specifically, an IOAM node that
      performs DEX exporting <bcp14>MUST</bcp14> send the exported data to a pre-configured
      trusted receiving entity that is in the same IOAM-Domain as the exporting
	  IOAM node. 
	  Furthermore, an IOAM node <bcp14>MUST</bcp14> gain explicit
      consent to export data to a receiving entity before starting to send
      exported data.</t>
      <t>An attacker may keep track of the information sent in DEX headers as
      a means of reconnaissance. This form of recon can be mitigated to some
      extent by careful allocation of the Flow ID and Sequence Number space
      in a way that does not compromise privacy aspects, such as customer
      identities.</t>
      <t>The integrity of the DEX Option-Type can be protected through a
      mechanism of the encapsulating protocol. While <xref target="I-D.ietf-ippm-ioam-data-integrity" format="default"/> introduces an integrity
      protection mechanism that protects the integrity of IOAM-Data-Fields,
      the DEX Option-Type does not include IOAM-Data-Fields; therefore,
      these integrity protection mechanisms are not applicable to the DEX
      Option-Type. As discussed in the threat analysis of <xref target="I-D.ietf-ippm-ioam-data-integrity" format="default"/>, injection or modification
      of IOAM-Option-Type headers are threats that are not addressed in
      IOAM.</t>
      <t>IOAM is assumed to be deployed in a restricted administrative domain,
      thus limiting the scope of the threats above and their effect. This is a
      fundamental assumption with respect to the security aspects of IOAM, as
      further discussed in <xref target="RFC9197" format="default"/>.</t>
    </section>
  </middle>
  <back>

<displayreference target="I-D.spiegel-ippm-ioam-rawexport" to="IOAM-RAWEXPORT"/>
<displayreference target="I-D.song-ippm-postcard-based-telemetry" to="POSTCARD-BASED-TELEMETRY"/>
<displayreference target="I-D.ietf-ippm-ioam-data-integrity" to="IOAM-DATA-INTEGRITY"/>
<displayreference target="I-D.ietf-ippm-ioam-ipv6-options" to="IOAM-IPV6-OPTIONS"/>

    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>

<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/> 
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/> 
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9197.xml"/> 

      </references>
      <references>
        <name>Informative References</name>
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6291.xml"/>
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8126.xml"/>
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5475.xml"/>
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7014.xml"/>

<!-- [I-D.spiegel-ippm-ioam-rawexport] IESG state Expired -->

        <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.spiegel-ippm-ioam-rawexport.xml"/>

<!-- [I-D.song-ippm-postcard-based-telemetry] IESG state I-D Exists -->

        <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.song-ippm-postcard-based-telemetry.xml"/>

<!-- [I-D.ietf-ippm-ioam-flags] in AUTH48 state as of 09/30/22 as RFC 9322; confirm publication -->


<reference anchor='RFC9322' target='https://www.rfc-editor.org/info/rfc9322'>
<front>
<title>In Situ Operations, Administration, and Maintanence (IOAM) Loopback and 
Active Flags</title>
<author initials='T' surname='Mizrahi' fullname='Tal Mizrahi'>
<organization />
</author>
<author initials='F' surname='Brockners' fullname='Frank Brockners'>
<organization />
</author>
<author initials='S' surname='Bhandari' fullname='Shwetha Bhandari'>
<organization />
</author>
<author initials='B' surname='Gafni' fullname='Barak Gafni'>
<organization />
</author>
<author initials='M' surname='Spiegel' fullname='Mickey Spiegel'>
<organization />
</author>
<date year='2022' month='November'/>
</front>
<seriesInfo name="RFC" value="9322"/>
<seriesInfo name="DOI" value="10.17487/RFC9322"/>
</reference>


<!-- [I-D.ietf-ippm-ioam-data-integrity] IESG state I-D Exists -->

        <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-ippm-ioam-data-integrity.xml"/>

<!-- [I-D.ietf-ippm-ioam-ipv6-options] IESG state Waiting for AD Go-Ahead::Revised I-D Needed -->

        <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-ippm-ioam-ipv6-options.xml"/>
      </references>
    </references>
    <section anchor="appendix" numbered="true" toc="default">
      <name>Notes about the History of This Document</name>
      <t>This document evolved from combining some of the concepts of PBT-I
      from <xref target="I-D.song-ippm-postcard-based-telemetry" format="default"/> with
      immediate exporting from early versions of 
	  <xref target="RFC9322" format="default"/>.</t>
      <t>In order to help correlate and order the exported packets, it is
      possible to include the Hop_Lim/Node_ID IOAM-Data-Field in exported
      packets. If the IOAM-Trace-Type <xref target="RFC9197" format="default"/> has the
      Hop_Lim/Node_ID bit set, then exported packets include the
      Hop_Lim/Node_ID IOAM-Data-Field, which contains the TTL/Hop Limit value
      from a lower layer protocol.
      An alternative approach was considered during the design of this
      document, according to which a 1-octet Hop Count field would be included
      in the DEX header (presumably by claiming some space from the Flags
      field). The Hop Limit would start from 0 at the encapsulating node and
      be incremented by each IOAM transit node that supports the DEX
      Option-Type. In this approach, the Hop Count field value would also be
      included in the exported packet.</t>
    </section>
        <section anchor="Acknowledgments" numbered="false" toc="default">
      <name>Acknowledgments</name>
      <t>The authors thank <contact fullname="Martin Duke"/>, <contact
      fullname="Tommy Pauly"/>, <contact fullname="Meral Shirazipour"/>,
      <contact fullname="Colin Perkin"/>s, <contact fullname="Stephen
      Farrell"/>, <contact fullname="Linda Dunbar"/>, <contact
      fullname="Justin Iurman"/>, <contact fullname="Greg Mirsky"/>, and other members of the IPPM
      working group for many helpful comments.</t>
    </section>
    
    <section numbered="false" toc="default">
      <name>Contributors</name>
      <t>The Editors would like to recognize the contributions of the
      following individuals to this document.</t>
<contact fullname="Tianran Zhou">
        <organization>Huawei</organization>
        <address>
          <postal>
            <street>156 Beiqing Rd.</street>
            <city>Beijing</city>
            <region></region><code>100095</code>
            <country>China</country>
          </postal>
          <email>zhoutianran@huawei.com</email>
        </address>
      </contact>

<contact fullname="Zhenbin Li">
        <organization>Huawei</organization>
        <address>
          <postal>
            <street>156 Beiqing Rd.</street>
            <city>Beijing</city>
            <region></region><code>100095</code>
            <country>China</country>
          </postal>
          <email>lizhenbin@huawei.com</email>
        </address>
      </contact>

<contact fullname="Ramesh Sivakolundu">
        <organization>Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street>170 West Tasman Dr.</street>
            <city>San Jose</city>
            <region>CA</region><code>95134</code>
            <country>United States of America</country>
          </postal>
          <email>sramesh@cisco.com</email>
        </address>
      </contact>
    </section>
  </back>
</rfc>
