rfc9326xml2.original.xml | rfc9326.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!-- This template is for creating an Internet Draft using xml2rfc, | ||||
which is available here: http://xml.resource.org. --> | <!DOCTYPE rfc [ | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!ENTITY nbsp " "> | |||
<!-- One method to get references from the online citation libraries. | <!ENTITY zwsp "​"> | |||
There has to be one entity for each item to be referenced. | <!ENTITY nbhy "‑"> | |||
An alternate method (rfc include) is described in the references. --> | <!ENTITY wj "⁠"> | |||
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2119.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8174.xml"> | ||||
<!ENTITY RFC7799 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7799.xml"> | ||||
<!ENTITY RFC8126 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8126.xml"> | ||||
<!ENTITY RFC5475 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5475.xml"> | ||||
<!ENTITY RFC7014 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7014.xml"> | ||||
<!ENTITY RFC6291 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6291.xml"> | ||||
<!ENTITY RFC9197 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.9197.xml"> | ||||
<!ENTITY I-D.spiegel-ippm-ioam-rawexport SYSTEM "http://xml2rfc.tools.ietf.org/p | ||||
ublic/rfc/bibxml-ids/reference.I-D.spiegel-ippm-ioam-rawexport.xml"> | ||||
<!ENTITY I-D.ietf-sfc-ioam-nsh SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/ | ||||
bibxml-ids/reference.I-D.ietf-sfc-ioam-nsh.xml"> | ||||
<!ENTITY I-D.ietf-ippm-ioam-ipv6-options SYSTEM "http://xml2rfc.tools.ietf.org/p | ||||
ublic/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-ipv6-options.xml"> | ||||
<!ENTITY I-D.ietf-ippm-ioam-data-integrity SYSTEM "http://xml2rfc.tools.ietf.org | ||||
/public/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-data-integrity.xml"> | ||||
<!ENTITY I-D.song-ippm-postcard-based-telemetry SYSTEM "http://xml2rfc.tools.iet | ||||
f.org/public/rfc/bibxml-ids/reference.I-D.song-ippm-postcard-based-telemetry.xml | ||||
"> | ||||
<!ENTITY I-D.ietf-ippm-ioam-flags SYSTEM "http://xml2rfc.tools.ietf.org/public/r | ||||
fc/bibxml-ids/reference.I-D.ietf-ippm-ioam-flags.xml"> | ||||
<!ENTITY AFI SYSTEM "http://www.iana.org/assignments/address-family-numbers/addr | ||||
ess-family-numbers.xml"> | ||||
]> | ]> | |||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc strict="yes" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
<?rfc toc="yes"?> | std" consensus="true" docName="draft-ietf-ippm-ioam-direct-export-11" number="93 | |||
<?rfc tocdepth="4"?> | 26" ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" to | |||
<?rfc symrefs="yes"?> | cDepth="4" symRefs="true" sortRefs="true" version="3"> | |||
<?rfc sortrefs="yes" ?> | ||||
<?rfc compact="yes" ?> | <!-- xml2rfc v2v3 conversion 3.15.0 --> | |||
<?rfc subcompact="no" ?> | ||||
<rfc category="std" docName="draft-ietf-ippm-ioam-direct-export-11" | ||||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="IOAM Direct Exporting">In-situ OAM Direct Exporting</title> | <title abbrev="IOAM Direct Exporting">In Situ Operations, Administration, an d Maintenance (IOAM) Direct Exporting</title> | |||
<seriesInfo name="RFC" value="9326"/> | ||||
<author fullname="Haoyu Song" initials="H." surname="Song"> | <author fullname="Haoyu Song" initials="H." surname="Song"> | |||
<organization abbrev="">Futurewei</organization> | <organization abbrev="">Futurewei</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>2330 Central Expressway</street> | <street>2330 Central Expressway</street> | |||
<city>Santa Clara</city> | <city>Santa Clara</city> | |||
<code>95050</code> | <code>95050</code> | |||
<country>United States of America</country> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<email>haoyu.song@futurewei.com</email> | <email>haoyu.song@futurewei.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Barak Gafni" initials="B." surname="Gafni"> | <author fullname="Barak Gafni" initials="B." surname="Gafni"> | |||
<organization abbrev="">Nvidia</organization> | <organization abbrev="">Nvidia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>350 Oakmead Parkway, Suite 100</street> | <extaddr>Suite 100</extaddr> | |||
<street>350 Oakmead Parkway</street> | ||||
<city>Sunnyvale, CA</city> | <city>Sunnyvale</city> | |||
<region>CA</region> | ||||
<code>94085</code> | <code>94085</code> | |||
<country>United States of America</country> | ||||
<country>U.S.A.</country> | ||||
</postal> | </postal> | |||
<email>gbarak@nvidia.com</email> | <email>gbarak@nvidia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Frank Brockners" initials="F." surname="Brockners"> | <author fullname="Frank Brockners" initials="F." surname="Brockners"> | |||
<organization abbrev="Cisco">Cisco Systems, Inc.</organization> | <organization abbrev="Cisco">Cisco Systems, Inc.</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Hansaallee 249, 3rd Floor</street> | <street>Hansaallee 249</street> | |||
<city>Duesseldorf</city> | ||||
<!-- Reorder these if your country does things differently --> | ||||
<city>DUESSELDORF</city> | ||||
<region>NORDRHEIN-WESTFALEN</region> | ||||
<code>40549</code> | <code>40549</code> | |||
<country>Germany</country> | <country>Germany</country> | |||
</postal> | </postal> | |||
<email>fbrockne@cisco.com</email> | <email>fbrockne@cisco.com</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Shwetha Bhandari" initials="S." surname="Bhandari"> | <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari"> | |||
<organization abbrev="Thoughtspot">Thoughtspot</organization> | <organization abbrev="Thoughtspot">Thoughtspot</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>3rd Floor, Indiqube Orion, 24th Main Rd, Garden Layout, HSR | <extaddr>3rd Floor, Indiqube Orion, Garden Layout, HSR Layout</extaddr> | |||
Layout</street> | <street>24th Main Rd</street> | |||
<city>Bangalore</city> | ||||
<city>Bangalore, KARNATAKA 560 102</city> | <region>Karnataka</region> | |||
<code>560 102</code> | ||||
<country>India</country> | <country>India</country> | |||
</postal> | </postal> | |||
<email>shwetha.bhandari@thoughtspot.com</email> | <email>shwetha.bhandari@thoughtspot.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | |||
<organization abbrev="">Huawei</organization> | <organization abbrev="">Huawei</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>8-2 Matam</street> | <street>8-2 Matam</street> | |||
<city>Haifa</city> | <city>Haifa</city> | |||
<code>3190501</code> | <code>3190501</code> | |||
<country>Israel</country> | <country>Israel</country> | |||
</postal> | </postal> | |||
<email>tal.mizrahi.phd@gmail.com</email> | <email>tal.mizrahi.phd@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2022" month="October" /> | ||||
<date year="2022"/> | <area>tsv</area> | |||
<workgroup>ippm</workgroup> | ||||
<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>IOAM</keyword> | <keyword>IOAM</keyword> | |||
<keyword>Telemetry</keyword> | <keyword>Telemetry</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> | <abstract> | |||
<t>In-situ Operations, Administration, and Maintenance (IOAM) is used | <t>In situ Operations, Administration, and Maintenance (IOAM) is used | |||
for recording and collecting operational and telemetry information. | for recording and collecting operational and telemetry information. | |||
Specifically, IOAM allows telemetry data to be pushed into data packets | Specifically, IOAM allows telemetry data to be pushed into data packets | |||
while they traverse the network. This document introduces a new IOAM | while they traverse the network. This document introduces a new IOAM | |||
option type (denoted IOAM-Option-Type) called the Direct Export (DEX) | option type (denoted IOAM-Option-Type) called the "IOAM Direct Export (DEX | |||
Option-Type, which is used as a trigger for IOAM data to be directly | ) Option-Type". This Option-Type is used as a trigger for IOAM data to be direct | |||
ly | ||||
exported or locally aggregated without being pushed into in-flight data | exported or locally aggregated without being pushed into in-flight data | |||
packets. The exporting method and format are outside the scope of this | packets. The exporting method and format are outside the scope of this | |||
document.</t> | document.</t> | |||
</abstract> | </abstract> | |||
</front> | ||||
</front> | ||||
<middle> | <middle> | |||
<section title="Introduction" toc="default"> | <section toc="default" numbered="true"> | |||
<t>IOAM <xref target="RFC9197"/> is used for monitoring traffic in the | <name>Introduction</name> | |||
network, and for incorporating IOAM data fields (denoted | <t>IOAM <xref target="RFC9197" format="default"/> is used for monitoring t | |||
raffic in the | ||||
network and for incorporating IOAM data fields (denoted | ||||
IOAM-Data-Fields) into in-flight data packets.</t> | IOAM-Data-Fields) into in-flight data packets.</t> | |||
<t>IOAM makes use of four possible IOAM-Option-Types, defined in <xref tar | ||||
<t>IOAM makes use of four possible IOAM-Option-Types, defined in <xref | get="RFC9197" format="default"/>: Pre-allocated Trace, Incremental Trace, Proof | |||
target="RFC9197"/>: Pre-allocated Trace Option-Type, Incremental Trace | of Transit (POT), and Edge-to-Edge.</t> | |||
Option-Type, Proof of Transit (POT) Option-Type, and Edge-to-Edge | <t>This document defines a new IOAM-Option-Type called the "IOAM Direct Ex | |||
Option-Type.</t> | port (DEX) | |||
Option-Type". This Option-Type is used as a trigger for IOAM nodes | ||||
<t>This document defines a new IOAM-Option-Type called the Direct Export | to locally aggregate and process IOAM data and/or to export it to a | |||
(DEX) Option-Type. This Option-Type is used as a trigger for IOAM nodes | receiving entity (or entities). Throughout the document, this | |||
to locally aggregate and process IOAM data, and/or to export it to a | functionality is referred to as "collection" and/or "exporting". In this c | |||
receiving entity (or entities). Throughout the document this | ontext, a | |||
functionality is referred to as collection and/or exporting. A | "receiving entity" is an entity | |||
"receiving entity" in this context is an entity | ||||
that resides within the IOAM domain such as a collector, analyzer, | that resides within the IOAM domain such as a collector, analyzer, | |||
controller, decapsulating node, or a software module in one of the IOAM | controller, decapsulating node, or software module in one of the IOAM n | |||
nodes.</t> | odes.</t> | |||
<t>Note that even though the IOAM-Option-Type is called "Direct Export", | <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 DEX | 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 | Option-Type leads to the creation of another packet. Some deployments | |||
might simply use the packet with the DEX Option-Type to trigger local | might simply use the packet with the DEX Option-Type to trigger local | |||
processing of OAM data. The functionality of this local processing is | processing of Operations, Administration, and Maintenance (OAM) data. The functionality of this local processing is | |||
not within the scope of this document.</t> | not within the scope of this document.</t> | |||
</section> | </section> | |||
<section anchor="Conventions" numbered="true" toc="default"> | ||||
<section anchor="Conventions" title="Conventions"> | <name>Conventions</name> | |||
<section title="Requirement Language"> | <section numbered="true" toc="default"> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <name>Requirements Language</name> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | <t> | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
when, they appear in all capitals, as shown here.</t> | 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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Terminology"> | <name>Terminology</name> | |||
<t>Abbreviations used in this document:</t> | <t>Abbreviations used in this document:</t> | |||
<dl newline="false" spacing="normal" indent="8"> | ||||
<t><list hangIndent="11" style="hanging"> | <dt>IOAM:</dt> | |||
<t hangText="IOAM:">In-situ Operations, Administration, and | <dd>In situ Operations, Administration, and | |||
Maintenance</t> | Maintenance</dd> | |||
<dt>OAM:</dt> | ||||
<t hangText="OAM:">Operations, Administration, and Maintenance | <dd>Operations, Administration, and Maintenance | |||
<xref target="RFC6291"/></t> | <xref target="RFC6291" format="default"/></dd> | |||
<dt>DEX:</dt> | ||||
<t hangText="DEX:">Direct EXporting</t> | <dd>Direct Exporting</dd> | |||
</list></t> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="OptionTypeSec" numbered="true" toc="default"> | ||||
<section anchor="OptionTypeSec" | <name>The Direct Exporting (DEX) IOAM-Option-Type</name> | |||
title="The Direct Exporting (DEX) IOAM-Option-Type"> | <section numbered="true" toc="default"> | |||
<section title="Overview"> | <name>Overview</name> | |||
<t>The DEX Option-Type is used as a trigger for collecting IOAM data | <t>The DEX Option-Type is used as a trigger for collecting IOAM data | |||
locally or for exporting it to a receiving entity (or entities). | locally or exporting it to a receiving entity (or entities). | |||
Specifically, the DEX Option-Type can be used as a trigger for | Specifically, the DEX Option-Type can be used as a trigger for | |||
collecting IOAM data by an IOAM node and locally aggregating it; thus, | collecting IOAM data by an IOAM node and locally aggregating it; thus, | |||
this aggregated data can be periodically pushed to a receiving entity, | this aggregated data can be periodically pushed to a receiving entity | |||
or pulled by a receiving entity on-demand.</t> | or pulled by a receiving entity on-demand.</t> | |||
<t>This Option-Type is incorporated into data packets by an IOAM | <t>This Option-Type is incorporated into data packets by an IOAM | |||
encapsulating node, and removed by an IOAM decapsulating node, as | encapsulating node and removed by an IOAM decapsulating node, as | |||
illustrated in <xref target="DEXArch"/>. The Option-Type can be read | illustrated in <xref target="DEXArch" format="default"/>. The Option-Typ | |||
but not modified by transit nodes. Note: the terms IOAM encapsulating, | e can be read, | |||
decapsulating and transit nodes are as defined in <xref | but not modified, by transit nodes. Note that the terms "IOAM encapsulat | |||
target="RFC9197"/>.</t> | ing node", | |||
"IOAM decapsulating node", and "IOAM transit node" are as defined in <xr | ||||
<figure align="center" anchor="DEXArch" title="DEX Architecture"> | ef target="RFC9197" format="default"/>.</t> | |||
<artwork align="left"><![CDATA[ | <figure anchor="DEXArch"> | |||
<name>DEX Architecture</name> | ||||
<artwork align="left" name="" type="" alt=""><![CDATA[ | ||||
^ | ^ | |||
|Exported IOAM data | |Exported IOAM data | |||
| | | | |||
| | | | |||
| | | | |||
+--------------+------+-------+--------------+ | +--------------+------+-------+--------------+ | |||
| | | | | | | | | | |||
| | | | | | | | | | |||
User +---+----+ +---+----+ +---+----+ +---+----+ | User +---+----+ +---+----+ +---+----+ +---+----+ | |||
packets |Encapsu-| | Transit| | Transit| |Decapsu-| | packets |Encapsu-| | Transit| | Transit| |Decapsu-| | |||
--------->|lating |====>| Node |====>| Node |====>|lating |----> | --------->|lating |====>| Node |====>| Node |====>|lating |----> | |||
|Node | | A | | B | |Node | | |Node | | A | | B | |Node | | |||
+--------+ +--------+ +--------+ +--------+ | +--------+ +--------+ +--------+ +--------+ | |||
Insert DEX Export Export Remove DEX | Insert DEX Export Export Remove DEX | |||
option and IOAM data IOAM data option and | option and IOAM data IOAM data option and | |||
export data export data | export data export data]]></artwork> | |||
]]></artwork> | ||||
</figure> | </figure> | |||
<t>The DEX Option-Type is used as a trigger to collect and/or export | <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 | IOAM data. The trigger applies to transit nodes, the decapsulating | |||
node, and the encapsulating node:</t> | node, and the encapsulating node:</t> | |||
<t><list style="symbols"> | <ul spacing="normal"> | |||
<t>An IOAM encapsulating node configured to incorporate the DEX | <li> An IOAM encapsulating node configured to incorporate the DEX | |||
Option-Type encapsulates (possibly a subset of) the packets it | Option-Type encapsulates the packets (or possibly a subset of the | |||
forwards with the DEX Option-Type, and MAY export and/or collect | 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 | the requested IOAM data immediately. Only IOAM encapsulating nodes | |||
are allowed to add the DEX Option-Type to a packet. An IOAM | are allowed to add the DEX Option-Type to a packet. An IOAM | |||
encapsulating node can generate probe packets that incorporate the | encapsulating node can generate probe packets that incorporate the | |||
DEX Option-Type. These probe packets can be generated periodically | DEX Option-Type. These probe packets can be generated periodically | |||
or on-demand (for example triggered by the management plane). The | or on-demand (for example, triggered by the management plane). The | |||
specification of such probe packets is outside the scope of this | specification of such probe packets is outside the scope of this | |||
document.</t> | document.</li> | |||
<li>A transit node that processes a packet with the DEX Option-Type | ||||
<t>A transit node that processes a packet with the DEX Option-Type | <bcp14>MAY</bcp14> export and/or collect the requested IOAM data.</l | |||
MAY export and/or collect the requested IOAM data.</t> | i> | |||
<li>An IOAM decapsulating node that processes a packet with the DEX | ||||
<t>An IOAM decapsulating node that processes a packet with the DEX | Option-Type <bcp14>MAY</bcp14> export and/or collect the requested I | |||
Option-Type MAY export and/or collect the requested IOAM data, and | OAM data and | |||
MUST decapsulate the IOAM header.</t> | <bcp14>MUST</bcp14> decapsulate the IOAM header.</li> | |||
</list></t> | </ul> | |||
<t>As in <xref target="RFC9197" format="default"/>, the DEX Option-Type | ||||
<t>As in <xref target="RFC9197"/>, the DEX Option-Type can be | can be | |||
incorporated into all or a subset of the traffic that is forwarded by | incorporated into all or a subset of the traffic that is forwarded by | |||
the encapsulating node, as further discussed in <xref | the encapsulating node, as further discussed in <xref target="SelectionS | |||
target="SelectionSec"/> below. Moreover, IOAM nodes respond to the DEX | ec" format="default"/>. Moreover, IOAM nodes respond to the DEX | |||
trigger by exporting and/or collecting IOAM data either for all | trigger by exporting and/or collecting IOAM data either for all | |||
traversing packets that carry the DEX Option-Type, or selectively only | traversing packets that carry the DEX Option-Type or selectively only | |||
for a subset of these packets, as further discussed in <xref | for a subset of these packets, as further discussed in <xref target="Exp | |||
target="ExportSec"/> below.</t> | ortSec" format="default"/>.</t> | |||
<section anchor="SelectionSec" numbered="true" toc="default"> | ||||
<section anchor="SelectionSec" title="DEX Packet Selection"> | <name>DEX Packet Selection</name> | |||
<t>If an IOAM encapsulating node incorporates the DEX Option-Type | <t>If an IOAM encapsulating node incorporates the DEX Option-Type | |||
into all the traffic it forwards it may lead to an excessive amount | into all the traffic it forwards, it may lead to an excessive amount | |||
of exported data, which may overload the network and the receiving | of exported data, which may overload the network and the receiving | |||
entity. Therefore, an IOAM encapsulating node that supports the DEX | entity. Therefore, an IOAM encapsulating node that supports the DEX | |||
Option-Type MUST support the ability to incorporate 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 | Option-Type selectively into a subset of the packets that are | |||
forwarded by it.</t> | forwarded by the IOAM encapsulating node.</t> | |||
<t>Various methods of packet selection and sampling have been | <t>Various methods of packet selection and sampling have been | |||
previously defined, such as <xref target="RFC7014"/> and <xref | previously defined, such as <xref target="RFC7014" format="default"/> | |||
target="RFC5475"/>. Similar techniques can be applied by an IOAM | 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 | encapsulating node to apply DEX to a subset of the forwarded | |||
traffic.</t> | traffic.</t> | |||
<t>The subset of traffic that is forwarded or transmitted with a DEX | <t>The subset of traffic that is forwarded or transmitted with a DEX | |||
Option-Type SHOULD NOT exceed 1/N of the interface capacity on any | Option-Type <bcp14>SHOULD NOT</bcp14> exceed 1/N of the interface capa city on any | |||
of the IOAM encapsulating node's interfaces. It is noted that this | of the IOAM encapsulating node's interfaces. It is noted that this | |||
requirement applies to the total traffic that incorporates a DEX | requirement applies to the total traffic that incorporates a DEX | |||
Option-Type, including traffic that is forwarded by the IOAM | Option-Type, including traffic that is forwarded by the IOAM | |||
encapsulating node and probe packets that are generated 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 | encapsulating node. In this context, N is a parameter that can be | |||
configurable by network operators. If there is an upper bound, M, on | 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 | the number of IOAM transit nodes in any path in the network, then it | |||
is RECOMMENDED to use an N such that N >> M (i.e., N is much gre ater | is <bcp14>RECOMMENDED</bcp14> to use an N such that N >> M (i.e. , N is much greater | |||
than M). The rationale is | than M). The rationale is | |||
that a packet that includes a DEX Option-Type may trigger an | that a packet that includes a DEX Option-Type may trigger an | |||
exported packet from each IOAM transit node along the path for a | exported packet from each IOAM transit node along the path for a | |||
total of M exported packets. Thus, if N >> M then the number | total of M exported packets. Thus, if N >> M, then the number | |||
of exported packets is significantly lower than the number of data | of exported packets is significantly lower than the number of data | |||
packets forwarded by the IOAM encapsulating node. If there is no | packets forwarded by the IOAM encapsulating node. If there is no | |||
prior knowledge about the network topology or size, it is | prior knowledge about the network topology or size, it is | |||
RECOMMENDED to use N>100.</t> | <bcp14>RECOMMENDED</bcp14> to use N>100.</t> | |||
</section> | </section> | |||
<section anchor="ExportSec" numbered="true" toc="default"> | ||||
<section anchor="ExportSec" title="Responding to the DEX Trigger"> | <name>Responding to the DEX Trigger</name> | |||
<t>The DEX Option-Type specifies which IOAM-Data-Fields should be | <t>The DEX Option-Type specifies which IOAM-Data-Fields should be | |||
exported and/or collected, as specified in <xref | exported and/or collected, as specified in <xref target="OptionSec" fo | |||
target="OptionSec"/>. As mentioned above, the data can be locally | rmat="default"/>. As mentioned above, the data can be locally collected, aggreg | |||
collected, and optionally can be aggregated and exported to a | ated, and/or | |||
receiving entity, either proactively or on-demand. If IOAM data is | exported to a receiving entity proactively or on-demand. If IOAM data is | |||
exported, the format and encapsulation of the packet that contains | exported, the format and encapsulation of the packet that contains | |||
the exported data is not within the scope of the current document. | the exported data is not within the scope of the current document. | |||
For example, the export format can be based on <xref | For example, the export format can be based on <xref target="I-D.spieg | |||
target="I-D.spiegel-ippm-ioam-rawexport"/>.</t> | el-ippm-ioam-rawexport" format="default"/>.</t> | |||
<t>An IOAM node that performs DEX-triggered exporting <bcp14>MUST</bcp | ||||
<t>An IOAM node that performs DEX-triggered exporting MUST support | 14> support | |||
the ability to limit the rate of the exported packets. The rate of | the ability to limit the rate of the exported packets. The rate of | |||
exported packets SHOULD be limited so that the number of exported | exported packets <bcp14>SHOULD</bcp14> be limited so that the number o f exported | |||
packets is significantly lower than the number of packets that are | packets is significantly lower than the number of packets that are | |||
forwarded by the device. The exported data rate SHOULD NOT exceed | forwarded by the device. The exported data rate <bcp14>SHOULD NOT</bcp 14> exceed | |||
1/N of the interface capacity on any of the IOAM node's interfaces. | 1/N of the interface capacity on any of the IOAM node's interfaces. | |||
It is RECOMMENDED to use N>100. Depending on the IOAM node's | It is <bcp14>RECOMMENDED</bcp14> to use N>100. Depending on the IOA M node's | |||
architecture considerations, the export rate may be limited to a | architecture considerations, the export rate may be limited to a | |||
lower number in order to avoid loading the IOAM node. An IOAM node | lower number in order to avoid loading the IOAM node. An IOAM node | |||
MAY maintain a counter or a set of counters that count the events in | <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 | 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> | does not collect and/or export data due to the rate limits.</t> | |||
<t>IOAM nodes <bcp14>SHOULD NOT</bcp14> be configured to export packet | ||||
<t>IOAM nodes SHOULD NOT be configured to export packets | s | |||
over a path or a tunnel | over a path or a tunnel | |||
that is subject to IOAM direct exporting. Furthermore, IOAM | that is subject to IOAM direct exporting. Furthermore, IOAM | |||
encapsulating nodes that can identify a packet as an IOAM exported | encapsulating nodes that can identify a packet as an IOAM exported | |||
packet MUST NOT push a DEX Option-Type into such a packet. This | packet <bcp14>MUST NOT</bcp14> push a DEX Option-Type into such a pack et. This | |||
requirement is intended to prevent nested exporting and/or exporting | requirement is intended to prevent nested exporting and/or exporting | |||
loops.</t> | loops.</t> | |||
<t>A transit or decapsulating IOAM node that receives an unknown | <t>A transit or decapsulating IOAM node that receives an unknown | |||
IOAM-Option-Type ignores it (as defined in <xref | IOAM-Option-Type ignores it (as defined in <xref target="RFC9197" form | |||
target="RFC9197"/>), and specifically nodes that do not support the | at="default"/>); specifically, nodes that do not support the | |||
DEX Option-Type ignore it. Note that as per <xref target="RFC9197"/> | DEX Option-Type ignore it. As per <xref target="RFC9197" format="defau | |||
lt"/>, note that | ||||
a decapsulating node removes the IOAM encapsulation and all its | a decapsulating node removes the IOAM encapsulation and all its | |||
IOAM-Option-Types. Specifically, this applies to the case where one of these | 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 | 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 | over a (possibly unknown) DEX Option-Type in the parsing or in the | |||
decapsulation procedure is dependent on the specific encapsulation, | decapsulation procedure is dependent on the specific encapsulation, | |||
which is outside the scope of this document. For example, when IOAM | which is outside the scope of this document. For example, when IOAM | |||
is encapsulated in IPv6 <xref | is encapsulated in IPv6 <xref target="I-D.ietf-ippm-ioam-ipv6-options" | |||
target="I-D.ietf-ippm-ioam-ipv6-options"/> the DEX Option-Type is | format="default"/>, the DEX Option-Type is | |||
incorporated either in a Hop-by-Hop options header or in a | incorporated either in a Hop-by-Hop options header or in a | |||
Destination options header, and thus can be skipped using the length | Destination options header; thus, it can be skipped using the length | |||
field in the options header.</t> | field in the options header.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="OptionSec" numbered="true" toc="default"> | ||||
<section anchor="OptionSec" title="The DEX Option-Type Format"> | <name>The DEX Option-Type Format</name> | |||
<t>The format of the DEX Option-Type is depicted in <xref | <t>The format of the DEX Option-Type is depicted in <xref target="Option | |||
target="OptionFormat"/>. The length of the DEX Option-Type is at least | Format" format="default"/>. The length of the DEX Option-Type is at least | |||
8 octets. The DEX Option-Type MAY include one or more optional fields. | 8 octets. The DEX Option-Type <bcp14>MAY</bcp14> include one or more opt | |||
ional fields. | ||||
The existence of the optional fields is indicated by the corresponding | The existence of the optional fields is indicated by the corresponding | |||
flags in the Extension-Flags field. Two optional fields are defined in | flags in the Extension-Flags field. Two optional fields are defined in | |||
this document, the Flow ID and the Sequence Number fields. Every | this document: the Flow ID and Sequence Number fields. Every | |||
optional field MUST be exactly 4 octets long. Thus, the | optional field <bcp14>MUST</bcp14> be exactly 4 octets long. Thus, the | |||
Extension-Flags field explicitly indicates the length of the DEX | Extension-Flags field explicitly indicates the length of the DEX | |||
Option-Type. Defining a new optional field requires an allocation of a | Option-Type. Defining a new optional field requires an allocation of a | |||
corresponding flag in the Extension-Flags field, as specified in <xref | corresponding flag in the Extension-Flags field, as specified in <xref t | |||
target="IANAflags"/>.</t> | arget="IANAflags" format="default"/>.</t> | |||
<figure anchor="OptionFormat"> | ||||
<figure align="center" anchor="OptionFormat" | <name>DEX Option-Type Format</name> | |||
title="DEX Option-Type Format"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
0 1 2 3 | 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 | 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| | | Namespace-ID | Flags |Extension-Flags| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IOAM-Trace-Type | Reserved | | | IOAM-Trace-Type | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flow ID (optional) | | | Flow ID (Optional) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sequence Number (Optional) | | | Sequence Number (Optional) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork | |||
]]></artwork> | > | |||
</figure> | </figure> | |||
<t><list hangIndent="16" style="hanging"> | <dl newline="true" spacing="normal"> | |||
<t hangText="Namespace-ID">A 16-bit identifier of the IOAM | <dt>Namespace-ID:</dt> | |||
namespace, as defined in <xref target="RFC9197"/>.</t> | <dd>A 16-bit identifier of the IOAM | |||
namespace, as defined in <xref target="RFC9197" format="default"/>.< | ||||
<t hangText="Flags">An 8-bit field, comprised of 8 one-bit | /dd> | |||
subfields. Flags are allocated by IANA, as defined in <xref | <dt>Flags:</dt> | |||
target="IANAflags"/>.</t> | <dd>An 8-bit field, comprised of 8 1-bit | |||
subfields. Flags are allocated by IANA, as defined in <xref target=" | ||||
<t hangText="Extension-Flags">An 8-bit field, comprised of 8 | IANAflags" format="default"/>.</dd> | |||
one-bit subfields. Extension-Flags are allocated by IANA, as | <dt>Extension-Flags:</dt> | |||
defined in <xref target="IANAExtensionflags"/>. Every bit in the | <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"/>. Eve | ||||
ry bit in the | ||||
Extension-Flag field that is set to 1 indicates the existence of a | Extension-Flag field that is set to 1 indicates the existence of a | |||
corresponding optional 4-octet field. An IOAM node that receives a | corresponding optional 4-octet field. An IOAM node that receives a | |||
DEX Option-Type with an unknown flag set to 1 MUST ignore the | DEX Option-Type with an unknown flag set to 1 <bcp14>MUST</bcp14> ig | |||
corresponding optional field.</t> | nore the | |||
corresponding optional field.</dd> | ||||
<t hangText="IOAM-Trace-Type">A 24-bit identifier which specifies | <dt>IOAM-Trace-Type:</dt> | |||
<dd>A 24-bit identifier that specifies | ||||
which IOAM-Data-Fields should be exported. The format of this | which IOAM-Data-Fields should be exported. The format of this | |||
field is as defined in <xref target="RFC9197"/>. Specifically, the | field is as defined in <xref target="RFC9197" format="default"/>. Sp ecifically, the | |||
bit that corresponds to the Checksum Complement IOAM-Data-Field | bit that corresponds to the Checksum Complement IOAM-Data-Field | |||
SHOULD be assigned to be zero by the IOAM encapsulating node, and | <bcp14>SHOULD</bcp14> be assigned to be zero by the IOAM encapsulati ng node and | |||
ignored by transit and decapsulating nodes. The reason for this is | ignored by transit and decapsulating nodes. The reason for this is | |||
that the Checksum Complement is intended for in-flight packet | that the Checksum Complement is intended for in-flight packet | |||
modifications and is not relevant for direct exporting.</t> | modifications and is not relevant for direct exporting.</dd> | |||
<dt>Reserved:</dt> | ||||
<t hangText="Reserved">This field MUST be ignored by the | <dd>This field <bcp14>MUST</bcp14> be ignored by the | |||
receiver.</t> | receiver.</dd> | |||
<dt>Optional fields:</dt> | ||||
<t hangText="Optional fields">The optional fields, if present, | <dd><t>The optional fields, if present, | |||
reside after the Reserved field. The order of the optional fields | reside after the Reserved field. The order of the optional fields | |||
is according to the order of the respective bits, starting from | is according to the order of the respective bits, starting from | |||
the most significant bit, that are enabled in the | the most significant bit, that are enabled in the | |||
Extension-Flags field. Each optional field is 4 octets long.</t> | Extension-Flags field. Each optional field is 4 octets lo | |||
ng.</t> | ||||
<t hangText="Flow ID">An optional 32-bit field representing the | <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 | 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 | 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 | the encapsulating node. The Flow ID can be used to correlate the | |||
exported data of the same flow from multiple nodes and from | exported data of the same flow from multiple nodes and from | |||
multiple packets. Flow ID values are expected to be allocated in a | multiple packets. Flow ID values are expected to be allocated in a | |||
way that avoids collisions. For example, random assignment of Flow | way that avoids collisions. For example, random assignment of Flow | |||
ID values can be subject to collisions, while | ID values can be subject to collisions, while | |||
centralized allocation can avoid this problem. The specification | centralized allocation can avoid this problem. The specification | |||
of the Flow ID allocation method is not within the scope of this | of the Flow ID allocation method is not within the scope of this | |||
document.</t> | document.</dd> | |||
<dt>Sequence Number:</dt> | ||||
<t hangText="Sequence Number">An optional 32-bit sequence number | <dd>An optional 32-bit sequence number | |||
starting from 0 and incremented by 1 for each | starting from 0 and incremented by 1 for each | |||
packet from the same flow at the encapsulating node that includes | packet from the same flow at the encapsulating node that includes | |||
the DEX option. The Sequence | the DEX option. The Sequence | |||
Number, when combined with the Flow ID, provides a convenient | Number, when combined with the Flow ID, provides a convenient | |||
approach to correlate the exported data from the same user | approach to correlate the exported data from the same user | |||
packet.</t> | packet.</dd> | |||
</list></t> | </dl> | |||
</dd> | ||||
</dl> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<section anchor="IANAtype" title="IOAM Type"> | <section anchor="IANAtype" numbered="true" toc="default"> | |||
<t>The "IOAM Option-Type Registry" was defined in Section 7.1 of <xref | <name>IOAM Type</name> | |||
target="RFC9197"/>. IANA is requested to allocate the following code | <t>The "IOAM Option-Type" registry is defined in <xref target="RFC9197" | |||
point from the "IOAM Option-Type Registry" as follows:</t> | sectionFormat="of" section="7.1"/>. IANA has allocated the following code | |||
point from the "IOAM Option-Type" registry as follows:</t> | ||||
<t><list hangIndent="11" style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="TBD-type">IOAM Direct Export (DEX) Option-Type</t> | <dt>Code Point:</dt><dd>4</dd> | |||
</list></t> | <dt>Name</dt><dd>IOAM Direct Export (DEX) Option-Type</dd> | |||
<dt>Description:</dt><dd>Direct exporting</dd> | ||||
<t>If possible, IANA is requested to allocate code point 4 | <dt>Reference:</dt><dd>This document</dd> | |||
(TBD-type). The "Description" for the new option should be | </dl> | |||
"Direct exporting" and the "Reference" should be the current docu | ||||
ment. | ||||
</t> | ||||
</section> | </section> | |||
<section anchor="IANAflags" numbered="true" toc="default"> | ||||
<section anchor="IANAflags" title="IOAM DEX Flags"> | <name>IOAM DEX Flags</name> | |||
<t>IANA is requested to define an "IOAM DEX Flags" registry. This | <t>IANA has created the "IOAM DEX Flags" registry. This | |||
registry includes 8 flag bits. Allocation is based on the "IETF | registry includes 8 flag bits. Allocation is based on the "IETF | |||
Review" procedure, as defined in <xref target="RFC8126"/>.</t> | Review" procedure defined in <xref target="RFC8126" format="default"/>.< | |||
/t> | ||||
<t>New registration requests MUST use the following template:</t> | <t>New registration requests <bcp14>MUST</bcp14> use the following templ | |||
ate:</t> | ||||
<t><list style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="Bit:">Desired bit to be allocated in the 8 bit Flags | <dt>Bit:</dt> | |||
field of the DEX Option-Type.</t> | <dd>Desired bit to be allocated in the 8-bit Flags | |||
field of the DEX Option-Type.</dd> | ||||
<t hangText="Description:">Brief description of the newly | <dt>Description:</dt> | |||
registered bit.</t> | <dd>Brief description of the newly | |||
registered bit.</dd> | ||||
<t hangText="Reference:">Reference to the document that defines | <dt>Reference:</dt> | |||
the new bit.</t> | <dd>Reference to the document that defines | |||
</list></t> | the new bit.</dd> | |||
</dl> | ||||
</section> | </section> | |||
<section anchor="IANAExtensionflags" numbered="true" toc="default"> | ||||
<section anchor="IANAExtensionflags" title="IOAM DEX Extension-Flags"> | <name>IOAM DEX Extension-Flags</name> | |||
<t>IANA is requested to define an "IOAM DEX Extension-Flags" registry. | <t>IANA has created the "IOAM DEX Extension-Flags" registry. | |||
This registry includes 8 flag bits. Bit 0 (the most significant bit) | This registry includes 8 flag bits. Bit 0 (the most significant bit) | |||
and bit 1 in the registry are allocated by this document, and | and bit 1 in the registry are allocated by this document and | |||
described in <xref target="OptionSec"/>. Allocation of the other bits | described in <xref target="OptionSec" format="default"/>. Allocation of | |||
should be performed based on the "IETF Review" procedure, as defined | the other bits | |||
in <xref target="RFC8126"/>.</t> | should be performed based on the "IETF Review" procedure defined | |||
in <xref target="RFC8126" format="default"/>.</t> | ||||
<t><list style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="Bit 0">"Flow ID [RFC XXXX] [RFC Editor: please | <dt>Bit 0:</dt> | |||
replace with the RFC number of the current document]"</t> | <dd>"Flow ID [RFC9326]"</dd> | |||
<dt>Bit 1:</dt> | ||||
<t hangText="Bit 1">"Sequence Number [RFC XXXX] [RFC Editor: | <dd>"Sequence Number [RFC9326]"</dd> | |||
please replace with the RFC number of the current document]"</t> | </dl> | |||
</list></t> | <t>New registration requests <bcp14>MUST</bcp14> use the following templ | |||
ate:</t> | ||||
<t>New registration requests MUST use the following template:</t> | <dl newline="false" spacing="normal"> | |||
<dt>Bit:</dt> | ||||
<t><list style="hanging"> | <dd>Desired bit to be allocated in the 8-bit | |||
<t hangText="Bit:">Desired bit to be allocated in the 8 bit | Extension-Flags field of the DEX Option-Type.</dd> | |||
Extension-Flags field of the DEX Option-Type.</t> | <dt>Description:</dt> | |||
<dd>Brief description of the newly | ||||
<t hangText="Description:">Brief description of the newly | registered bit.</dd> | |||
registered bit.</t> | <dt>Reference:</dt> | |||
<dd>Reference to the document that defines | ||||
<t hangText="Reference:">Reference to the document that defines | the new bit.</dd> | |||
the new bit.</t> | </dl> | |||
</list></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Performance" numbered="true" toc="default"> | ||||
<section anchor="Performance" title="Performance Considerations"> | <name>Performance Considerations</name> | |||
<t>The DEX Option-Type triggers IOAM data to be collected and/or | <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 | exported packets to be exported to a receiving entity (or entities). In | |||
some cases this may impact the receiving entity's performance, or the | some cases, this may impact the receiving entity's performance or the | |||
performance along the paths leading to it.</t> | performance along the paths leading to it.</t> | |||
<t>Therefore, the performance impact of these exported packets is | <t>Therefore, the performance impact of these exported packets is | |||
limited by taking two measures: at the encapsulating nodes, by selective | limited by taking two measures: at the encapsulating nodes by selective | |||
DEX encapsulation (<xref target="SelectionSec"/>), and at the transit | DEX encapsulation (<xref target="SelectionSec" format="default"/>) and at | |||
nodes, by limiting exporting rate (<xref target="ExportSec"/>). These | 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 | two measures ensure that direct exporting is used at a rate that does | |||
not significantly affect the network bandwidth, and does not overload | not significantly affect the network bandwidth and does not overload | |||
the receiving entity. Moreover, it is possible to load balance the | the receiving entity. Moreover, it is possible to load balance the | |||
exported data among multiple receiving entities, although the exporting | exported data among multiple receiving entities, although the exporting | |||
method is not within the scope of this document.</t> | method is not within the scope of this document.</t> | |||
<t>It should be noted that, in some networks, DEX data may be exported | ||||
<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 | |||
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 | |||
does not compromise user traffic. In this case an operator may choose to | ||||
disable the exporting rate limiting.</t> | disable the exporting rate limiting.</t> | |||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | ||||
<section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>The security considerations of IOAM in general are discussed in <xref | <t>The security considerations of IOAM in general are discussed in <xref t | |||
target="RFC9197"/>. Specifically, an attacker may try to use the | arget="RFC9197" format="default"/>. Specifically, an attacker may try to use the | |||
functionality that is defined in this document to attack the | functionality that is defined in this document to attack the | |||
network.</t> | network.</t> | |||
<t>An attacker may attempt to overload network devices by injecting | <t>An attacker may attempt to overload network devices by injecting | |||
synthetic packets that include the DEX Option-Type. Similarly, an | synthetic packets that include the DEX Option-Type. Similarly, an | |||
on-path attacker may maliciously incorporate the DEX Option-Type into | on-path attacker may maliciously incorporate the DEX Option-Type into | |||
transit packets, or maliciously remove it from packets in which it is | transit packets or maliciously remove it from packets in which it is | |||
incorporated.</t> | incorporated.</t> | |||
<t>Forcing DEX, either in synthetic packets or in transit packets, may | ||||
<t>Forcing DEX, either in synthetic packets or in transit packets may | ||||
overload the IOAM nodes and/or the receiving entity (or entities). Since | overload the IOAM nodes and/or the receiving entity (or entities). Since | |||
this mechanism affects multiple devices along the network path, it | this mechanism affects multiple devices along the network path, it | |||
potentially amplifies the effect on the network bandwidth, on the | potentially amplifies the effect on the network bandwidth, the | |||
storage of the devices that collect the data, and on the receiving | storage of the devices that collect the data, and the receiving | |||
entity's load.</t> | entity's load.</t> | |||
<t>The amplification effect of DEX may be worse in wide area networks in | <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 | 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 | IOAM-Domain 1 for exporting IOAM data to a receiving entity, then the | |||
exported packets of domain 1 can be forwarded through IOAM domain 2, in | exported packets of IOAM-Domain 1 can be forwarded through IOAM-Domain 2, | |||
which they are subject to DEX. The exported packets of domain 2 may in | in | |||
turn be forwarded through another IOAM domain (or through domain 1), and | which they are subject to DEX. In turn, the exported packets of IOAM-Domai | |||
theoretically this recursive amplification may continue infinitely.</t> | n 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 | <t>In order to mitigate the attacks described above, the following | |||
requirements (<xref target="OptionTypeSec"/>) have been defined:</t> | requirements (<xref target="OptionTypeSec" format="default"/>) have been d | |||
efined:</t> | ||||
<t><list style="symbols"> | <ul spacing="normal"> | |||
<t>Selective DEX (<xref target="SelectionSec"/>) is applied by IOAM | <li>Selective DEX (<xref target="SelectionSec" format="default"/>) is ap | |||
plied by IOAM | ||||
encapsulating nodes in order to limit the potential impact of DEX | encapsulating nodes in order to limit the potential impact of DEX | |||
attacks to a small fraction of the traffic.</t> | attacks to a small fraction of the traffic.</li> | |||
<li>Rate limiting of exported traffic (<xref target="ExportSec" format=" | ||||
<t>Rate limiting of exported traffic (<xref target="ExportSec"/>) is | default"/>) is | |||
applied by IOAM nodes in order to prevent overloading attacks and in | applied by IOAM nodes in order to prevent overloading attacks and | |||
order to significantly limit the scale of amplification attacks.</t> | to significantly limit the scale of amplification attacks.</li> | |||
<li>IOAM encapsulating nodes are required to avoid pushing the DEX | ||||
<t>IOAM encapsulating nodes are required to avoid pushing the DEX | Option-Type into IOAM exported packets (<xref target="ExportSec" forma | |||
Option-Type into IOAM exported packets (<xref target="ExportSec"/>), | t="default"/>), | |||
thus preventing some of the amplification and export loop | thus preventing some of the amplification and export loop | |||
scenarios.</t> | scenarios.</li> | |||
</list></t> | </ul> | |||
<t>Although the exporting method is not within the scope of this | <t>Although the exporting method is not within the scope of this | |||
document, any exporting method MUST secure the exported data from the | document, any exporting method <bcp14>MUST</bcp14> secure the exported dat | |||
IOAM node to the receiving entity, in order to protect the | a from the | |||
IOAM node to the receiving entity in order to protect the | ||||
confidentiality and guarantee the integrity of the exported data. | confidentiality and guarantee the integrity of the exported data. | |||
Specifically, an IOAM node that | Specifically, an IOAM node that | |||
performs DEX exporting MUST send the exported data to a pre-configured | performs DEX exporting <bcp14>MUST</bcp14> send the exported data to a pre | |||
trusted receiving entity that is in the same IOAM domain as the exporting | -configured | |||
trusted receiving entity that is in the same IOAM-Domain as the exporting | ||||
IOAM node. | IOAM node. | |||
Furthermore, an IOAM node MUST gain explicit | Furthermore, an IOAM node <bcp14>MUST</bcp14> gain explicit | |||
consent to export data to a receiving entity before starting to send | consent to export data to a receiving entity before starting to send | |||
exported data.</t> | exported data.</t> | |||
<t>An attacker may keep track of the information sent in DEX headers as | <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 | 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, | extent by careful allocation of the Flow ID and Sequence Number space | |||
in a way that does not compromise privacy aspects such as customer | in a way that does not compromise privacy aspects, such as customer | |||
identities.</t> | identities.</t> | |||
<t>The integrity of the DEX Option-Type can be protected through a | <t>The integrity of the DEX Option-Type can be protected through a | |||
mechanism of the encapsulating protocol. While <xref | mechanism of the encapsulating protocol. While <xref target="I-D.ietf-ippm | |||
target="I-D.ietf-ippm-ioam-data-integrity"/> introduces an integrity | -ioam-data-integrity" format="default"/> introduces an integrity | |||
protection mechanism that protects the integrity of IOAM-Data-Fields, | protection mechanism that protects the integrity of IOAM-Data-Fields, | |||
the DEX Option-Type does not include IOAM-Data-Fields, and therefore | the DEX Option-Type does not include IOAM-Data-Fields; therefore, | |||
these integrity protection mechanisms are not applicable to the DEX | these integrity protection mechanisms are not applicable to the DEX | |||
Option-Type. As discussed in the threat analysis of <xref | Option-Type. As discussed in the threat analysis of <xref target="I-D.ietf | |||
target="I-D.ietf-ippm-ioam-data-integrity"/>, injection or modification | -ippm-ioam-data-integrity" format="default"/>, injection or modification | |||
of IOAM-Option-Type headers are threats that are not addressed in | of IOAM-Option-Type headers are threats that are not addressed in | |||
IOAM.</t> | IOAM.</t> | |||
<t>IOAM is assumed to be deployed in a restricted administrative domain, | <t>IOAM is assumed to be deployed in a restricted administrative domain, | |||
thus limiting the scope of the threats above and their affect. This is a | 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 | fundamental assumption with respect to the security aspects of IOAM, as | |||
further discussed in <xref target="RFC9197"/>.</t> | further discussed in <xref target="RFC9197" format="default"/>.</t> | |||
</section> | ||||
<section anchor="Acknowledgments" title="Acknowledgments"> | ||||
<t>The authors thank Martin Duke, Tommy Pauly, Meral Shirazipour, Colin | ||||
Perkins, Stephen Farrell, Linda Dunbar, Justin Iurman, Greg Mirsky, and | ||||
other members of the IPPM working group for many helpful comments.</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | ||||
&RFC2119; | ||||
&RFC8174; | <displayreference target="I-D.spiegel-ippm-ioam-rawexport" to="IOAM-RAWEXPORT"/> | |||
<displayreference target="I-D.song-ippm-postcard-based-telemetry" to="POSTCARD-B | ||||
ASED-TELEMETRY"/> | ||||
<displayreference target="I-D.ietf-ippm-ioam-data-integrity" to="IOAM-DATA-INTEG | ||||
RITY"/> | ||||
<displayreference target="I-D.ietf-ippm-ioam-ipv6-options" to="IOAM-IPV6-OPTIONS | ||||
"/> | ||||
&RFC9197; | <references> | |||
</references> | <name>References</name> | |||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
197.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
291.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
126.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
475.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
014.xml"/> | ||||
<references title="Informative References"> | <!-- [I-D.spiegel-ippm-ioam-rawexport] IESG state Expired --> | |||
&RFC6291; | ||||
&RFC8126; | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D .spiegel-ippm-ioam-rawexport.xml"/> | |||
&RFC5475; | <!-- [I-D.song-ippm-postcard-based-telemetry] IESG state I-D Exists --> | |||
&RFC7014; | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D .song-ippm-postcard-based-telemetry.xml"/> | |||
&I-D.spiegel-ippm-ioam-rawexport; | <!-- [I-D.ietf-ippm-ioam-flags] in AUTH48 state as of 09/30/22 as RFC 9322; conf irm publication --> | |||
&I-D.song-ippm-postcard-based-telemetry; | <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-flags; | <!-- [I-D.ietf-ippm-ioam-data-integrity] IESG state I-D Exists --> | |||
&I-D.ietf-ippm-ioam-data-integrity; | <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; | <!-- [I-D.ietf-ippm-ioam-ipv6-options] IESG state Waiting for AD Go-Ahead::Revis | |||
</references> | ed I-D Needed --> | |||
<section anchor="appendix" title="Notes About the History of this Document"> | <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 | <t>This document evolved from combining some of the concepts of PBT-I | |||
from <xref target="I-D.song-ippm-postcard-based-telemetry"/> with | from <xref target="I-D.song-ippm-postcard-based-telemetry" format="default "/> with | |||
immediate exporting from early versions of | immediate exporting from early versions of | |||
<xref target="I-D.ietf-ippm-ioam-flags"/>.</t> | <xref target="RFC9322" format="default"/>.</t> | |||
<t>In order to help correlate and order the exported packets, it is | ||||
<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 | possible to include the Hop_Lim/Node_ID IOAM-Data-Field in exported | |||
packets; if the IOAM-Trace-Type <xref target="RFC9197"/> has the | 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 bit set, then exported packets include the | |||
Hop_Lim/Node_ID IOAM-Data-Field, which contains the TTL/Hop Limit value | Hop_Lim/Node_ID IOAM-Data-Field, which contains the TTL/Hop Limit value | |||
from a lower layer protocol. | from a lower layer protocol. | |||
An alternative approach was considered during the design of this | An alternative approach was considered during the design of this | |||
document, according to which a 1-octet Hop Count field would be included | 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 | in the DEX header (presumably by claiming some space from the Flags | |||
field). The Hop Limit would starts from 0 at the encapsulating node and | field). The Hop Limit would start from 0 at the encapsulating node and | |||
be incremented by each IOAM transit node that supports the DEX | be incremented by each IOAM transit node that supports the DEX | |||
Option-Type. In this approach the Hop Count field value would also be | Option-Type. In this approach, the Hop Count field value would also be | |||
included in the exported packet.</t> | included in the exported packet.</t> | |||
</section> | </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 m | ||||
embers of the IPPM | ||||
working group for many helpful comments.</t> | ||||
</section> | ||||
<section numbered="false" title="Contributors" toc="default"> | <section numbered="false" toc="default"> | |||
<name>Contributors</name> | ||||
<t>The Editors would like to recognize the contributions of the | <t>The Editors would like to recognize the contributions of the | |||
following individuals to this document.</t> | 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> | ||||
<t> | <contact fullname="Zhenbin Li"> | |||
<figure> | <organization>Huawei</organization> | |||
<artwork><![CDATA[ | <address> | |||
Tianran Zhou | <postal> | |||
Huawei | <street>156 Beiqing Rd.</street> | |||
156 Beiqing Rd. | <city>Beijing</city> | |||
Beijing 100095 | <region></region><code>100095</code> | |||
China | <country>China</country> | |||
</postal> | ||||
Email: zhoutianran@huawei.com | <email>lizhenbin@huawei.com</email> | |||
</address> | ||||
Zhenbin Li | </contact> | |||
Huawei | ||||
156 Beiqing Rd. | ||||
Beijing 100095 | ||||
China | ||||
Email: lizhenbin@huawei.com | ||||
Ramesh Sivakolundu | ||||
Cisco Systems, Inc. | ||||
170 West Tasman Dr. | ||||
SAN JOSE, CA 95134 | ||||
U.S.A. | ||||
Email: sramesh@cisco.com | ||||
]]></artwork> | <contact fullname="Ramesh Sivakolundu"> | |||
</figure> | <organization>Cisco Systems, Inc.</organization> | |||
</t> | <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> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 150 change blocks. | ||||
468 lines changed or deleted | 453 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |