| rfc9378xml2.original.xml | rfc9378.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 SYSTEM "rfc2629.dtd" [ | ||||
| <!-- One method to get references from the online citation libraries. | ||||
| There has to be one entity for each item to be referenced. | ||||
| An alternate method (rfc include) is described in the references. --> | ||||
| <!ENTITY RFC8799 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8799.xml"> | ||||
| <!ENTITY RFC9326 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.9326.xml"> | ||||
| <!ENTITY RFC2784 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.2784.xml"> | ||||
| <!ENTITY RFC8279 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8279.xml"> | ||||
| <!ENTITY RFC9322 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.9322.xml"> | ||||
| <!ENTITY RFC9197 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.9197.xml"> | ||||
| <!ENTITY RFC8926 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8926.xml"> | ||||
| <!ENTITY RFC7665 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7665.xml"> | ||||
| <!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.2119.xml"> | ||||
| <!ENTITY RFC7799 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7799.xml"> | ||||
| <!ENTITY RFC6830 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6830.xml"> | ||||
| <!ENTITY RFC7276 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7276.xml"> | ||||
| <!ENTITY RFC7112 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7112.xml"> | ||||
| <!ENTITY RFC6833 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6833.xml"> | ||||
| <!ENTITY RFC2460 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.2460.xml"> | ||||
| <!ENTITY RFC791 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referenc | ||||
| e.RFC.0791.xml"> | ||||
| <!ENTITY RFC6564 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6564.xml"> | ||||
| <!ENTITY RFC7820 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7820.xml"> | ||||
| <!ENTITY RFC7821 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7821.xml"> | ||||
| <!ENTITY RFC8126 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8126.xml"> | ||||
| <!ENTITY RFC5905 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.5905.xml"> | ||||
| <!ENTITY RFC7384 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7384.xml"> | ||||
| <!ENTITY RFC8915 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8915.xml"> | ||||
| <!ENTITY RFC5905 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.5905.xml"> | ||||
| <!ENTITY RFC8039 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8039.xml"> | ||||
| <!ENTITY RFC8300 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8300.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8174.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.ietf-sfc-proof-of-transit SYSTEM "http://xml2rfc.tools.ietf.org/pub | ||||
| lic/rfc/bibxml-ids/reference.I-D.ietf-sfc-proof-of-transit.xml"> | ||||
| <!ENTITY I-D.ietf-spring-segment-routing SYSTEM "http://xml2rfc.tools.ietf.org/p | ||||
| ublic/rfc/bibxml-ids/reference.I-D.ietf-spring-segment-routing.xml"> | ||||
| <!ENTITY I-D.previdi-isis-segment-routing-extensions SYSTEM "http://xml2rfc.tool | ||||
| s.ietf.org/public/rfc/bibxml-ids/reference.I-D.previdi-isis-segment-routing-exte | ||||
| nsions.xml"> | ||||
| <!ENTITY I-D.ietf-ippm-6man-pdm-option SYSTEM "http://xml2rfc.tools.ietf.org/pub | ||||
| lic/rfc/bibxml-ids/reference.I-D.ietf-ippm-6man-pdm-option.xml"> | ||||
| <!ENTITY I-D.gont-v6ops-ipv6-ehs-in-real-world SYSTEM "http://xml2rfc.tools.ietf | ||||
| .org/public/rfc/bibxml-ids/reference.I-D.gont-v6ops-ipv6-ehs-in-real-world.xml"> | ||||
| <!ENTITY I-D.brockners-lisp-sr SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/ | ||||
| bibxml-ids/reference.I-D.brockners-lisp-sr.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-6man-segment-routing-header SYSTEM "http://xml2rfc.tools.ietf. | ||||
| org/public/rfc/bibxml-ids/reference.I-D.ietf-6man-segment-routing-header.xml"> | ||||
| <!ENTITY I-D.ietf-nvo3-vxlan-gpe SYSTEM "http://xml2rfc.tools.ietf.org/public/rf | ||||
| c/bibxml-ids/reference.I-D.ietf-nvo3-vxlan-gpe.xml"> | ||||
| <!ENTITY I-D.ietf-ippm-ioam-conf-state SYSTEM "http://xml2rfc.tools.ietf.org/pub | ||||
| lic/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-conf-state.xml"> | ||||
| <!ENTITY I-D.lapukhov-dataplane-probe SYSTEM "http://xml2rfc.tools.ietf.org/publ | ||||
| ic/rfc/bibxml-ids/reference.I-D.lapukhov-dataplane-probe.xml"> | ||||
| <!ENTITY I-D.ietf-ntp-packet-timestamps SYSTEM "http://xml2rfc.tools.ietf.org/pu | ||||
| blic/rfc/bibxml-ids/reference.I-D.ietf-ntp-packet-timestamps.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.zhou-ippm-ioam-yang SYSTEM "http://xml2rfc.tools.ietf.org/public/rf | ||||
| c/bibxml-ids/reference.I-D.zhou-ippm-ioam-yang.xml"> | ||||
| <!ENTITY I-D.mizrahi-ippm-ioam-profile SYSTEM "http://xml2rfc.tools.ietf.org/pub | ||||
| lic/rfc/bibxml-ids/reference.I-D.mizrahi-ippm-ioam-profile.xml"> | ||||
| <!ENTITY I-D.weis-ippm-ioam-eth SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc | ||||
| /bibxml-ids/reference.I-D.weis-ippm-ioam-eth.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.xzlnp-bier-ioam SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bi | ||||
| bxml-ids/reference.I-D.xzlnp-bier-ioam.xml"> | ||||
| <!ENTITY I-D.brockners-ippm-ioam-geneve SYSTEM "http://xml2rfc.tools.ietf.org/pu | ||||
| blic/rfc/bibxml-ids/reference.I-D.brockners-ippm-ioam-geneve.xml"> | ||||
| <!ENTITY I-D.gandhi-spring-ioam-sr-mpls SYSTEM "http://xml2rfc.tools.ietf.org/pu | ||||
| blic/rfc/bibxml-ids/reference.I-D.gandhi-spring-ioam-sr-mpls.xml"> | ||||
| <!ENTITY I-D.ali-spring-ioam-srv6 SYSTEM "http://xml2rfc.tools.ietf.org/public/r | ||||
| fc/bibxml-ids/reference.I-D.ali-spring-ioam-srv6.xml"> | ||||
| <!ENTITY I-D.brockners-ippm-ioam-vxlan-gpe SYSTEM "http://xml2rfc.tools.ietf.org | ||||
| /public/rfc/bibxml-ids/reference.I-D.brockners-ippm-ioam-vxlan-gpe.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' ?> | ||||
| <!-- used by XSLT processors --> | ||||
| <!-- For a complete list and description of processing instructions (PIs), | ||||
| please see http://xml.resource.org/authoring/README.html. --> | ||||
| <!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | ||||
| might want to use. | ||||
| (Here they are set differently than their defaults in xml2rfc v1.32) --> | ||||
| <?rfc strict="yes" ?> | ||||
| <!-- give errors regarding ID-nits and DTD validation --> | ||||
| <!-- control the table of contents (ToC) --> | ||||
| <?rfc toc="yes"?> | ||||
| <!-- generate a ToC --> | ||||
| <?rfc tocdepth="4"?> | ||||
| <!-- the number of levels of subsections in ToC. default: 3 --> | ||||
| <!-- control references --> | ||||
| <?rfc symrefs="yes"?> | ||||
| <!-- use symbolic references tags, i.e, [RFC2119] instead of [1] --> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <!-- sort the reference entries alphabetically --> | ||||
| <!-- control vertical white space | ||||
| (using these PIs as follows is recommended by the RFC Editor) --> | ||||
| <?rfc compact="yes" ?> | ||||
| <!-- do not start each main section on a new page --> | ||||
| <?rfc subcompact="no" ?> | ||||
| <!-- keep one blank line between list items --> | ||||
| <!-- end of list of popular I-D processing instructions --> | ||||
| <rfc category="info" docName="draft-ietf-ippm-ioam-deployment-05" ipr="trust2009 | ||||
| 02"> | ||||
| <!-- ipr="full3978"--> | ||||
| <!-- category values: std, bcp, info, exp, and historic | <!DOCTYPE rfc [ | |||
| ipr values: full3667, noModification3667, noDerivatives3667 | <!ENTITY nbsp " "> | |||
| you can add the attributes updates="NNNN" and obsoletes="NNNN" | <!ENTITY zwsp "​"> | |||
| they will automatically be output with "(if approved)" --> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | ||||
| ]> | ||||
| <!-- ***** FRONT MATTER ***** --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" info" consensus="true" docName="draft-ietf-ippm-ioam-deployment-05" number="9378 " ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" tocD epth="4" symRefs="true" sortRefs="true" version="3"> | |||
| <front> | <front> | |||
| <!-- The abbreviated title is used in the page header - it is only necessary | <title abbrev="IOAM Deployment">In Situ Operations, Administration, and Main | |||
| if the | tenance (IOAM) Deployment</title> | |||
| full title is longer than 39 characters --> | <seriesInfo name="RFC" value="9378"/> | |||
| <title abbrev="In-situ OAM Deployment">In-situ OAM Deployment</title> | ||||
| <!-- add 'role="editor"' below for the editors if appropriate --> | ||||
| <!-- Another author who claims to be an editor --> | ||||
| <author fullname="Frank Brockners" initials="F." surname="Brockners" role="e ditor"> | <author fullname="Frank Brockners" initials="F." surname="Brockners" role="e ditor"> | |||
| <organization abbrev="Cisco">Cisco Systems, Inc.</organization> | <organization abbrev="Cisco">Cisco Systems, Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Hansaallee 249, 3rd Floor</street> | <extaddr>3rd Floor</extaddr> | |||
| <street>Hansaallee 249</street> | ||||
| <!-- Reorder these if your country does things differently --> | ||||
| <city>DUESSELDORF</city> | <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" role="e ditor"> | <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari" role="e ditor"> | |||
| <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 La | <extaddr>3rd Floor, Indiqube Orion</extaddr> | |||
| yout</street> | <extaddr>Garden Layout, HSR Layout</extaddr> | |||
| <city>Bangalore, KARNATAKA 560 102</city> | <street>24th Main Rd</street> | |||
| <city>Bangalore</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="Daniel Bernier" initials="D." surname="Bernier"> | <author fullname="Daniel Bernier" initials="D." surname="Bernier"> | |||
| <organization abbrev="">Bell Canada</organization> | <organization abbrev="">Bell Canada</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <city/> | <city/> | |||
| <code/> | <code/> | |||
| <country>Canada</country> | <country>Canada</country> | |||
| </postal> | </postal> | |||
| <email>daniel.bernier@bell.ca</email> | <email>daniel.bernier@bell.ca</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi" role="editor" > | <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi" role="editor" > | |||
| <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 month="April" year="2023"/> | ||||
| <date day="4" month="January" year="2023"/> | ||||
| <!-- If the month and year are both specified and are the current ones, xml2 | ||||
| rfc will fill | ||||
| in the current day for you. If only the current year is specified, xml2 | ||||
| rfc will fill | ||||
| in the current day and month for you. If the year is not the current one | ||||
| , it is | ||||
| necessary to specify at least a month (xml2rfc assumes day="1" if not sp | ||||
| ecified for the | ||||
| purpose of calculating the expiry date). With drafts it is normally suf | ||||
| ficient to | ||||
| specify just the year. --> | ||||
| <!-- Meta-data Declarations --> | ||||
| <area>tsv</area> | <area>tsv</area> | |||
| <workgroup>ippm</workgroup> | <workgroup>ippm</workgroup> | |||
| <!-- WG name at the upperleft corner of the doc, | <keyword>Telemetry</keyword> | |||
| IETF is fine for individual submissions. | <keyword>Tracing</keyword> | |||
| 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>Telemetry, Tracing,</keyword> | ||||
| <!-- Keywords will be incorporated into HTML output | ||||
| files in a meta tag but they have no effect on text or nroff | ||||
| output. If you submit your draft to the RFC Editor, the | ||||
| keywords will be used for the search engine. --> | ||||
| <abstract> | <abstract> | |||
| <t>In-situ Operations, Administration, and Maintenance (IOAM) collects | <t>In situ Operations, Administration, and Maintenance (IOAM) collects | |||
| operational and telemetry information in the packet while the packet | operational and telemetry information in the packet while the packet | |||
| traverses a path between two points in the network. This document | traverses a path between two points in the network. This document | |||
| provides a framework for IOAM deployment and provides IOAM deployment | provides a framework for IOAM deployment and provides IOAM deployment | |||
| considerations and guidance.</t> | considerations and guidance.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction" toc="default"> | <section toc="default" numbered="true"> | |||
| <t>"In-situ" Operations, Administration, and Maintenance (IOAM) collects | <name>Introduction</name> | |||
| <t>In situ Operations, Administration, and Maintenance (IOAM) collects | ||||
| OAM information within the packet while the packet traverses a | OAM information within the packet while the packet traverses a | |||
| particular network domain. The term "in-situ" refers to the fact that | particular network domain. The term "in situ" refers to the fact that | |||
| the OAM data is added to the data packets rather than is being sent | the OAM data is added to the data packets rather than being sent within | |||
| within packets specifically dedicated to OAM. IOAM is to complement | packets specifically dedicated to OAM. IOAM complements mechanisms such | |||
| mechanisms such as Ping, Traceroute, or other active probing mechanisms. | as Ping, Traceroute, or other active probing mechanisms. In terms of | |||
| In terms of "active" or "passive" OAM, "in-situ" OAM can be considered a | "active" or "passive" OAM, IOAM can be considered a hybrid OAM type. In | |||
| hybrid OAM type. "In-situ" mechanisms do not require extra packets to be | situ mechanisms do not require extra packets to be sent. IOAM adds | |||
| sent. IOAM adds information to the already available data packets and | information to the already available data packets and, therefore, cannot | |||
| therefore cannot be considered passive. In terms of the classification | be considered passive. In terms of the classification given in <xref | |||
| given in <xref target="RFC7799"/> IOAM could be portrayed as Hybrid Type | target="RFC7799" format="default"/>, IOAM could be portrayed as Hybrid | |||
| I. IOAM mechanisms can be leveraged where mechanisms using e.g., ICMP do | Type I. IOAM mechanisms can be leveraged where mechanisms using, e.g., | |||
| not apply or do not offer the desired results, such as proving that a | ICMP do not apply or do not offer the desired results. These situations | |||
| certain traffic flow takes a pre-defined path, SLA verification for the | could include:</t> | |||
| live data traffic, detailed statistics on traffic distribution paths in | <ul spacing="normal"> | |||
| networks that distribute traffic across multiple paths, or scenarios in | <li>proving that a certain traffic flow takes a predefined | |||
| which probe traffic is potentially handled differently from regular data | path,</li> | |||
| traffic by the network devices.</t> | <li>verifying the Service Level Agreement (SLA) verification for | |||
| the live data traffic,</li> | ||||
| <li>providing detailed statistics on traffic distribution paths in | ||||
| networks that distribute traffic across multiple paths, or</li> | ||||
| <li>providing scenarios in which probe traffic is potentially | ||||
| handled differently from regular data traffic by the network | ||||
| devices.</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="Conventions" numbered="true" toc="default"> | ||||
| <section anchor="Conventions" title="Conventions"> | <name>Conventions</name> | |||
| <t>Abbreviations used in this document:</t> | <t>Abbreviations used in this document:</t> | |||
| <dl newline="false" spacing="normal" indent="11"> | ||||
| <t><list hangIndent="11" style="hanging"> | <dt>BIER:</dt> | |||
| <t hangText="BIER:">Bit Index Explicit Replication | <dd>Bit Index Explicit Replication | |||
| <xref target="RFC8279"/></t> | <xref target="RFC8279" format="default"/></dd> | |||
| <dt>Geneve:</dt> | ||||
| <t hangText="Geneve:">Generic Network Virtualization Encapsulation | <dd>Generic Network Virtualization Encapsulation | |||
| <xref target="RFC8926"/></t> | <xref target="RFC8926" format="default"/></dd> | |||
| <dt>GRE:</dt> | ||||
| <t hangText="GRE:">Generic Routing Encapsulation | <dd>Generic Routing Encapsulation | |||
| <xref target="RFC2784"/></t> | <xref target="RFC2784" format="default"/></dd> | |||
| <dt>IOAM:</dt> | ||||
| <t hangText="IOAM:">In-situ Operations, Administration, and | <dd>In situ Operations, Administration, and | |||
| Maintenance</t> | Maintenance</dd> | |||
| <dt>MTU:</dt> | ||||
| <t hangText="MTU:">Maximum Transmit Unit</t> | <dd>Maximum Transmission Unit</dd> | |||
| <dt>NSH:</dt> | ||||
| <t hangText="NSH:">Network Service Header <xref | <dd>Network Service Header <xref target="RFC8300" format="default"/></dd | |||
| target="RFC8300"/></t> | > | |||
| <dt>OAM:</dt> | ||||
| <t hangText="OAM:">Operations, Administration, and Maintenance</t> | <dd>Operations, Administration, and Maintenance</dd> | |||
| <dt>POT:</dt> | ||||
| <t hangText="POT:">Proof of Transit</t> | <dd>Proof of Transit</dd> | |||
| <dt>VXLAN-GPE:</dt> | ||||
| <t hangText="VXLAN-GPE:">Virtual eXtensible Local Area Network, | <dd>Virtual eXtensible Local Area Network - | |||
| Generic Protocol Extension <xref | Generic Protocol Extension <xref target="I-D.ietf-nvo3-vxlan-gpe" form | |||
| target="I-D.ietf-nvo3-vxlan-gpe"/></t> | at="default"/></dd> | |||
| </list></t> | </dl> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="IOAM Deployment: Domains And Nodes"> | <name>IOAM Deployment: Domains and Nodes</name> | |||
| <t>IOAM is focused on "limited domains" as defined in | <t><xref target="RFC9197" format="default"/> defines the scope of IOAM | |||
| <xref target="RFC8799" format="default"/>. | as well as the different types of IOAM nodes. For improved readability, | |||
| IOAM is not targeted for a deployment on the global | this section provides a brief overview of where IOAM applies, along with | |||
| Internet. The part of the network which employs IOAM is referred to as | explaining the main roles of nodes that employ IOAM. Please refer to | |||
| the "IOAM-Domain". For example, an IOAM-domain can include an enterprise | <xref target="RFC9197" format="default"/> for further details.</t> | |||
| campus using physical connections between devices or an overlay network | <t>IOAM is focused on "limited domains", as defined in <xref | |||
| using virtual connections / tunnels for connectivity between said | target="RFC8799" format="default"/>. IOAM is not targeted for a | |||
| devices. An IOAM-domain is defined by its perimeter or edge. The | deployment on the global Internet. The part of the network that employs | |||
| operator of an IOAM-domain is expected to put provisions in place to | IOAM is referred to as the "IOAM-Domain". For example, an IOAM-Domain | |||
| ensure that packets which contain IOAM data fields do not leak beyond | can include an enterprise campus using physical connections between | |||
| the edge of an IOAM domain, e.g., using for example packet filtering | devices or an overlay network using virtual connections or tunnels for | |||
| methods. The operator should consider the potential operational impact | connectivity between said devices. An IOAM-Domain is defined by its | |||
| of IOAM to mechanisms such as ECMP load-balancing schemes (e.g., load-bala | perimeter or edge. The operator of an IOAM-Domain is expected to put | |||
| ncing | provisions in place to ensure that packets that contain IOAM data fields | |||
| schemes based on packet length could be impacted by the increased packet | do not leak beyond the edge of an IOAM-Domain, e.g., using packet | |||
| size due to IOAM), path MTU (i.e., ensure that the MTU of all links | filtering methods. The operator should consider the potential | |||
| within a domain is sufficiently large to support the increased packet | operational impact of IOAM on mechanisms such as ECMP load-balancing | |||
| size due to IOAM) and ICMP message handling.</t> | schemes (e.g., load-balancing schemes based on packet length could be | |||
| impacted by the increased packet size due to IOAM), path MTU (i.e., | ||||
| ensure that the MTU of all links within a domain is sufficiently large | ||||
| enough to support the increased packet size due to IOAM), and ICMP | ||||
| message handling.</t> | ||||
| <t>An IOAM-Domain consists of "IOAM encapsulating nodes", "IOAM | <t>An IOAM-Domain consists of "IOAM encapsulating nodes", "IOAM | |||
| decapsulating nodes" and "IOAM transit nodes". The role of a node (i.e., | decapsulating nodes", and "IOAM transit nodes". The role of a node (i.e., | |||
| encapsulating, transit, decapsulating) is defined within an | encapsulating, transit, decapsulating) is defined within an | |||
| IOAM-Namespace (see below). A node can have different roles in different | IOAM-Namespace (see below). A node can have different roles in different | |||
| IOAM-Namespaces.</t> | IOAM-Namespaces.</t> | |||
| <t>An IOAM encapsulating node incorporates one or more | ||||
| <t>An "IOAM encapsulating node" incorporates one or more | IOAM Option-Types into packets that IOAM is enabled for. If IOAM is | |||
| IOAM-Option-Types into packets that IOAM is enabled for. If IOAM is | ||||
| enabled for a selected subset of the traffic, the IOAM encapsulating | enabled for a selected subset of the traffic, the IOAM encapsulating | |||
| node is responsible for applying the IOAM functionality to the selected | node is responsible for applying the IOAM functionality to the selected | |||
| subset.</t> | subset.</t> | |||
| <t>An IOAM transit node updates one or more of the IOAM-Data-Fields. | ||||
| <t>An "IOAM transit node" updates one or more of the IOAM-Data-Fields. | ||||
| If both the Pre-allocated and the Incremental Trace Option-Types are | If both the Pre-allocated and the Incremental Trace Option-Types are | |||
| present in the packet, each IOAM transit node will update at most one of | present in the packet, each IOAM transit node will update at most one of | |||
| these Option-Types. | these Option-Types. | |||
| Note that in case both Trace Option-Types are present in a packet, it | Note that in case both Trace Option-Types are present in a packet, it | |||
| is up to the IOAM data processing systems (see <xref target="export"/>) | is up to the IOAM data processing systems (see <xref target="export" forma t="default"/>) | |||
| to integrate the data from the two Trace Option-Types to form | to integrate the data from the two Trace Option-Types to form | |||
| a view of the entire journey of the packet. | a view of the entire journey of the packet. | |||
| A transit node does not add new IOAM-Option-Types to | A transit node does not add new IOAM Option-Types to | |||
| a packet, and does not change the IOAM-Data-Fields of an IOAM | a packet and does not change the IOAM-Data-Fields of an IOAM | |||
| Edge-to-Edge Option-Type. | Edge-to-Edge (E2E) Option-Type. | |||
| </t> | </t> | |||
| <t>An IOAM decapsulating node removes any IOAM Option-Types from | ||||
| <t>An "IOAM decapsulating node" removes IOAM-Option-Type(s) from | ||||
| packets.</t> | packets.</t> | |||
| <t>The role of an IOAM encapsulating, IOAM transit, or IOAM decapsulating | ||||
| <t>The role of an IOAM-encapsulating, IOAM-transit or IOAM-decapsulating | ||||
| node is always performed within a specific IOAM-Namespace. This means | node is always performed within a specific IOAM-Namespace. This means | |||
| that an IOAM node which is e.g., an IOAM-decapsulating node for | that an IOAM node that is, e.g., an IOAM decapsulating node for | |||
| IOAM-Namespace "A" but not for IOAM-Namespace "B" will only remove the | IOAM-Namespace "A" but not for IOAM-Namespace "B" will only remove the | |||
| IOAM-Option-Types for IOAM-Namespace "A" from the packet. An IOAM | IOAM Option-Types for IOAM-Namespace "A" from the packet. An IOAM | |||
| decapsulating node situated at the edge of an IOAM domain removes all | decapsulating node situated at the edge of an IOAM-Domain removes all | |||
| IOAM-Option-Types and associated encapsulation headers for all | IOAM Option-Types and associated encapsulation headers for all | |||
| IOAM-Namespaces from the packet.</t> | IOAM-Namespaces from the packet.</t> | |||
| <t>IOAM-Namespaces allow for a namespace-specific definition and | <t>IOAM-Namespaces allow for a namespace-specific definition and | |||
| interpretation of IOAM-Data-Fields. Please refer to <xref | interpretation of IOAM-Data-Fields. Please refer to <xref target="ioam_nam | |||
| target="ioam_namespaces"/> for a discussion of IOAM-Namespaces.</t> | espaces" format="default"/> for a discussion of IOAM-Namespaces.</t> | |||
| <figure align="center" anchor="IOAM-roles" title="Roles of IOAM nodes"> | <figure anchor="IOAM-roles"> | |||
| <artwork align="left"><![CDATA[ | <name>Roles of IOAM Nodes</name> | |||
| <artwork align="left" name="" type="" alt=""><![CDATA[ | ||||
| Export of Export of Export of Export of | Export of Export of Export of Export of | |||
| IOAM data IOAM data IOAM data IOAM data | IOAM data IOAM data IOAM data IOAM data | |||
| (optional) (optional) (optional) (optional) | (optional) (optional) (optional) (optional) | |||
| ^ ^ ^ ^ | ^ ^ ^ ^ | |||
| | | | | | | | | | | |||
| | | | | | | | | | | |||
| 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 | | |||
| skipping to change at line 340 ¶ | skipping to change at line 217 ¶ | |||
| IOAM data IOAM data IOAM data IOAM data | IOAM data IOAM data IOAM data IOAM data | |||
| (optional) (optional) (optional) (optional) | (optional) (optional) (optional) (optional) | |||
| ^ ^ ^ ^ | ^ ^ ^ ^ | |||
| | | | | | | | | | | |||
| | | | | | | | | | | |||
| 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 | | |||
| +--------+ +--------+ +--------+ +--------+ | +--------+ +--------+ +--------+ +--------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>IOAM nodes which add or remove the IOAM-Data-Fields can also update | <t>IOAM nodes that add or remove the IOAM-Data-Fields can also update | |||
| the IOAM-Data-Fields at the same time. Or in other words, IOAM | the IOAM-Data-Fields at the same time. Or, in other words, IOAM | |||
| encapsulating or decapsulating nodes can also serve as IOAM transit | encapsulating or decapsulating nodes can also serve as IOAM transit | |||
| nodes at the same time. Note that not every node in an IOAM domain needs | nodes at the same time. Note that not every node in an IOAM-Domain needs | |||
| to be an IOAM transit node. For example, a deployment might require that | to be an IOAM transit node. For example, a deployment might require that | |||
| packets traverse a set of firewalls which support IOAM. In that case, | packets traverse a set of firewalls that support IOAM. In that case, | |||
| only the set of firewall nodes would be IOAM transit nodes rather than | only the set of firewall nodes would be IOAM transit nodes rather than | |||
| all nodes.</t> | all nodes.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Types of IOAM"> | <name>Types of IOAM</name> | |||
| <t>IOAM supports different modes of operation, which are differentiated | <t>IOAM supports different modes of operation. These modes are | |||
| by the type of IOAM data fields being carried in the packet, the data | differentiated by the type of IOAM data fields that are being carried in | |||
| being collected, the type of nodes which collect or update data as well | the packet, the data being collected, the type of nodes that | |||
| as whether and how nodes export IOAM information. <list style="symbols"> | collect or update data, and if and how nodes export IOAM | |||
| <t>Per-hop tracing: OAM information about each IOAM node a packet | information. </t> | |||
| <dl spacing="normal" newline="false"> | ||||
| <dt>Per-hop tracing:</dt> | ||||
| <dd><t>OAM information about each IOAM node a packet | ||||
| traverses is collected and stored within the user data packet as the | traverses is collected and stored within the user data packet as the | |||
| packet progresses through the IOAM domain. Potential uses of IOAM | packet progresses through the IOAM-Domain. Potential uses of IOAM | |||
| per-hop tracing include:<list style="symbols"> | per-hop tracing include:</t> | |||
| <t> | <ul spacing="normal"> | |||
| Understand the different paths different packets | <li>Understanding the different paths that different packets | |||
| traverse between an IOAM encapsulating and an IOAM | traverse between an IOAM encapsulating node and an IOAM | |||
| decapsulating node in a network that uses | decapsulating node in a network that uses load balancing, such as | |||
| load balancing such as Equal Cost Multi-Path (ECMP). This | Equal Cost Multi-Path (ECMP). This information could be used to | |||
| information could be used to tune the algorithm for ECMP for | tune the algorithm for ECMP for optimized network resource | |||
| optimized network resource usage.</t> | usage.</li> | |||
| <li>With regard to operations and troubleshooting, understanding | ||||
| <t>Operations/Troubleshooting: | which path a particular packet or set of packets take as well as | |||
| Understand which path a particular | what amount of jitter and delay different IOAM nodes in the path | |||
| packet or set of packets take as well as what amount of jitter | contribute to the overall delay and jitter between the IOAM | |||
| and delay different IOAM nodes in the path contribute to the ov | encapsulating node and the IOAM decapsulating node.</li> | |||
| erall | </ul></dd> | |||
| delay and jitter between the IOAM encapsulating node and the IO | <dt>Proof of Transit:</dt> | |||
| AM | <dd>Information that a verifier node can use to verify whether a | |||
| decapsulating node.</t> | packet has traversed all nodes that it is supposed to traverse is | |||
| </list></t> | stored within the user data packet. For example, Proof of Transit | |||
| could be used to verify that a packet indeed passes through all | ||||
| <t>Proof-of-transit: Information that a verifier node can use to | services of a service function chain (e.g., verify whether a packet | |||
| verify whether a packet has traversed all nodes that is supposed to | indeed traversed the set of firewalls that it is expected to traverse) | |||
| traverse is stored within the user data packet. Proof-of-transit | or whether a packet indeed took the expected path.</dd> | |||
| could for example be used to verify that a packet indeed passes | <dt>Edge-to-Edge (E2E):</dt> | |||
| through all services of a service function chain (e.g., verify | <dd>OAM information that is specific to the edges of an IOAM-Domain | |||
| whether a packet indeed traversed the set of firewalls that it is | is collected and stored within the user data packet. E2E OAM | |||
| expected to traverse), or whether a packet indeed took the expected | could be used to gather operational information about a particular | |||
| path.</t> | network domain, such as the delay and jitter incurred by that network | |||
| domain or the traffic matrix of the network domain.</dd> | ||||
| <t>Edge-to-edge: OAM information which is specific to the edges of | <dt>Direct Export:</dt> | |||
| an IOAM domain is collected and stored within the user data packet. | <dd>OAM information about each IOAM node a packet traverses is | |||
| Edge-to-Edge OAM could be used to gather operational information | collected and immediately exported to a collector. Direct Export | |||
| about a particular network domain, such as the delay and jitter | could be used in situations where per-hop tracing information is | |||
| incurred by that network domain or the traffic matrix of the network | desired, but gathering the information within the packet -- as with | |||
| domain.</t> | per-hop tracing -- is not feasible. Rather than automatically | |||
| correlating the per-hop tracing information, as done with per-hop | ||||
| <t>Direct export: OAM information about each IOAM node a packet | tracing, Direct Export requires a collector to correlate the | |||
| traverses is collected and immediately exported to a collector. | information from the individual nodes. In addition, all nodes enabled | |||
| Direct export could be used in situations where per-hop tracing | for Direct Export need to be capable of exporting the IOAM information | |||
| information is desired, but gathering the information within the | to the collector.</dd> | |||
| packet - as with per-hop tracing - is not feasible. Rather than | </dl> | |||
| automatically correlating the per-hop tracing information, as done | <section anchor="IOAM-tracing" numbered="true" toc="default"> | |||
| with per-hop tracing, direct export requires a collector to | <name>Per-Hop Tracing IOAM</name> | |||
| correlate the information from the individual nodes. In addition, | ||||
| all nodes enabled for direct export need to be capable to export the | ||||
| IOAM information to the collector.</t> | ||||
| </list></t> | ||||
| <section anchor="IOAM-tracing" title="Per-hop Tracing IOAM"> | ||||
| <t>"IOAM tracing data" is expected to be collected at every IOAM | <t>"IOAM tracing data" is expected to be collected at every IOAM | |||
| transit node that a packet traverses to ensure visibility into the | transit node that a packet traverses to ensure visibility into the | |||
| entire path a packet takes within an IOAM-Domain. I.e., in a typical | entire path that a packet takes within an IOAM-Domain. In other words, | |||
| deployment all nodes in an IOAM-Domain would participate in IOAM and | in a typical deployment, all nodes in an IOAM-Domain would participate | |||
| thus be IOAM transit nodes, IOAM encapsulating or IOAM decapsulating | in IOAM and, thus, be IOAM transit nodes, IOAM encapsulating nodes, or | |||
| nodes. If not all nodes within a domain are IOAM capable, IOAM tracing | IOAM decapsulating nodes. If not all nodes within a domain are IOAM | |||
| information (i.e., node data, see below) will only be collected on | capable, IOAM tracing information (i.e., node data, see below) will | |||
| those nodes which are IOAM capable. Nodes which are not IOAM capable | only be collected on those nodes that are IOAM capable. Nodes that | |||
| will forward the packet without any changes to the IOAM-Data-Fields. | are not IOAM capable will forward the packet without any changes to | |||
| The maximum number of hops and the minimum path MTU of the IOAM domain | the IOAM-Data-Fields. The maximum number of hops and the minimum path | |||
| is assumed to be known.</t> | MTU of the IOAM-Domain are assumed to be known.</t> | |||
| <t>IOAM offers two different Trace Option-Types: the "Incremental" | ||||
| <t>IOAM offers two different trace Option-Types, the "incremental" | Trace Option-Type and the "Pre-allocated" Trace Option-Type. For a | |||
| Option-Type as well as the "pre-allocated" Option-Type. For a | discussion about which of the two option types is the most suitable | |||
| discussion which of the two option types is the most suitable for an | for an implementation and/or deployment, see <xref | |||
| implementation and/or deployment, see <xref | target="IOAM-trace-options" format="default"/>.</t> | |||
| target="IOAM-trace-options"/>.</t> | ||||
| <t>Every node data entry holds information for a particular IOAM | <t>Every node data entry holds information for a particular IOAM | |||
| transit node that is traversed by a packet. The IOAM decapsulating | transit node that is traversed by a packet. The IOAM decapsulating | |||
| node removes the IOAM-Option-Type(s) and processes and/or exports the | node removes any IOAM Option-Types and processes and/or exports the | |||
| associated data. All IOAM-Data-Fields are defined in the context of an | associated data. All IOAM-Data-Fields are defined in the context of an | |||
| IOAM-Namespace.</t> | IOAM-Namespace.</t> | |||
| <t>IOAM tracing can, for example, collect the following | ||||
| <t>IOAM tracing can for example collect the following | ||||
| types of information:</t> | types of information:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>Identification of the IOAM node. An IOAM node identifier can | |||
| <t>Identification of the IOAM node. An IOAM node identifier can | ||||
| match to a device identifier or a particular control point or | match to a device identifier or a particular control point or | |||
| subsystem within a device. </t> | subsystem within a device. </li> | |||
| <li>Identification of the interface that a packet was received on, | ||||
| <t>Identification of the interface that a packet was received on, | i.e., ingress interface.</li> | |||
| i.e. ingress interface.</t> | <li>Identification of the interface that a packet was sent out on, | |||
| i.e., egress interface.</li> | ||||
| <t>Identification of the interface that a packet was sent out on, | <li>Time of day when the packet was processed by the node as well | |||
| i.e. egress interface.</t> | ||||
| <t>Time of day when the packet was processed by the node as well | ||||
| as the transit delay. Different definitions of processing time are | as the transit delay. Different definitions of processing time are | |||
| feasible and expected, though it is important that all devices of | feasible and expected, though it is important that all devices of | |||
| an in-situ OAM domain follow the same definition.</t> | an IOAM-Domain follow the same definition.</li> | |||
| <li>Generic data, which is format-free information, where the syntax | ||||
| <t>Generic data: Format-free information where syntax and semantic | and semantics of the information are defined by the operator in a | |||
| of the information is defined by the operator in a specific | specific deployment. For a specific IOAM-Namespace, all IOAM nodes | |||
| deployment. For a specific IOAM-Namespace, all IOAM nodes should | should interpret the generic data the same way. Examples for generic | |||
| interpret the generic data the same way. Examples for generic IOAM | IOAM data include geolocation information (location of the node at | |||
| data include geolocation information (location of the node at the | the time the packet was processed), buffer queue fill level or cache | |||
| time the packet was processed), buffer queue fill level or cache | fill level at the time the packet was processed, or even a battery | |||
| fill level at the time the packet was processed, or even a battery | charge level.</li> | |||
| charge level.</t> | <li>Information to detect whether IOAM trace data was added at | |||
| <t>Information to detect whether IOAM trace data was added at | ||||
| every hop or whether certain hops in the domain weren't IOAM | every hop or whether certain hops in the domain weren't IOAM | |||
| transit nodes.</t> | transit nodes.</li> | |||
| <li>Data that relates to how the packet traversed a node (transit | ||||
| <t>Data that relates to how the packet traversed a node (transit | delay, buffer occupancy in case the packet was buffered, and queue | |||
| delay, buffer occupancy in case the packet was buffered, queue | depth in case the packet was queued).</li> | |||
| depth in case the packet was queued)</t> | </ul> | |||
| </list>The Option-Types of incremental tracing and pre-allocated | <t>The Incremental Trace Option-Type and Pre-allocated Trace | |||
| tracing are defined in <xref target="RFC9197"/>.</t> | Option-Type are defined in <xref target="RFC9197" | |||
| format="default"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="IOAM-proof-of-transit" numbered="true" toc="default"> | ||||
| <section anchor="IOAM-proof-of-transit" title="Proof of Transit IOAM"> | <name>Proof of Transit IOAM</name> | |||
| <t>IOAM Proof of Transit Option-Type is to support path or service | <t>The IOAM Proof of Transit Option-Type is to support path or service | |||
| function chain <xref target="RFC7665"/> verification use cases. | function chain <xref target="RFC7665" format="default"/> verification | |||
| Proof-of-transit could use methods like nested hashing or nested encrypt | use cases. Proof of transit could use methods like nested hashing or | |||
| ion | nested encryption of the IOAM data.</t> | |||
| of the IOAM data.</t> | <t>The IOAM Proof of Transit Option-Type consists of a fixed-size | |||
| "IOAM Proof of Transit Option header" and "IOAM Proof of Transit | ||||
| <t>The IOAM Proof of Transit Option-Type consist of a fixed size "IOAM | Option data fields". For details, see <xref target="RFC9197" | |||
| proof of transit option header" and "IOAM proof of transit option data | format="default"/>.</t> | |||
| fields". For details see <xref target="RFC9197"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="IOAM-edge-to-edge" numbered="true" toc="default"> | ||||
| <section anchor="IOAM-edge-to-edge" title="Edge to Edge IOAM"> | <name>E2E IOAM</name> | |||
| <t>The IOAM Edge-to-Edge Option-Type is to carry data that is added by | <t>The IOAM E2E Option-Type is to carry the data that is | |||
| the IOAM encapsulating node and interpreted by IOAM decapsulating | added by the IOAM encapsulating node and interpreted by IOAM | |||
| node. The IOAM transit nodes may process the data but must not modify | decapsulating node. The IOAM transit nodes may process the data but | |||
| it.</t> | must not modify it.</t> | |||
| <t>The IOAM E2E Option-Type consists of a fixed-size "IOAM | ||||
| <t>The IOAM Edge-to-Edge Option-Type consist of a fixed size "IOAM | ||||
| Edge-to-Edge Option-Type header" and "IOAM Edge-to-Edge Option-Type | Edge-to-Edge Option-Type header" and "IOAM Edge-to-Edge Option-Type | |||
| data fields". For details see <xref | data fields". For details, see <xref target="RFC9197" format="default"/> | |||
| target="RFC9197"/>.</t> | .</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Direct Export IOAM"> | <name>Direct Export IOAM</name> | |||
| <t>Direct Export is an IOAM mode of operation within which IOAM data | <t>Direct Export is an IOAM mode of operation within which IOAM data | |||
| to be directly exported to a collector rather than being collected | are to be directly exported to a collector rather than be collected | |||
| within the data packets. The IOAM Direct Export Option-Type consist of | within the data packets. The IOAM Direct Export Option-Type consists of | |||
| a fixed size "IOAM direct export option header". Direct Export for | a fixed-size "IOAM direct export option header". Direct Export for | |||
| IOAM is defined in <xref | IOAM is defined in <xref target="RFC9326" format="default"/>.</t> | |||
| target="RFC9326"/>.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ioam-encap" numbered="true" toc="default"> | ||||
| <name>IOAM Encapsulations</name> | ||||
| <section anchor="ioam-encap" title="IOAM Encapsulations"> | <t>IOAM data fields and associated data types for IOAM are | |||
| <t>IOAM data fields and associated data types for in-situ OAM are | defined in <xref target="RFC9197" format="default"/>. The IOAM | |||
| defined in <xref target="RFC9197"/>. The in-situ OAM | ||||
| data field can be transported by a variety of transport protocols, | data field can be transported by a variety of transport protocols, | |||
| including NSH, Segment Routing, Geneve, BIER, IPv6, etc.</t> | including NSH, Segment Routing, Geneve, BIER, IPv6, etc.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="IPv6"> | <name>IPv6</name> | |||
| <t>IOAM encapsulation for IPv6 is defined in <xref | <t>IOAM encapsulation for IPv6 is defined in <xref | |||
| target="I-D.ietf-ippm-ioam-ipv6-options"/>, which also discussed | target="I-D.ietf-ippm-ioam-ipv6-options" format="default"/>, which | |||
| IOAM deployment considerations for IPv6 networks</t> | also discusses IOAM deployment considerations for IPv6 networks.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="NSH"> | <name>NSH</name> | |||
| <t>IOAM encapsulation for NSH is defined in <xref | <t>IOAM encapsulation for NSH is defined in <xref target="I-D.ietf-sfc-i | |||
| target="I-D.ietf-sfc-ioam-nsh"/>.</t> | oam-nsh" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="BIER"> | <name>BIER</name> | |||
| <t>IOAM encapsulation for BIER is defined in <xref | <t>IOAM encapsulation for BIER is defined in <xref target="I-D.xzlnp-bie | |||
| target="I-D.xzlnp-bier-ioam"/>.</t> | r-ioam" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="GRE"> | <name>GRE</name> | |||
| <t>IOAM encapsulation for GRE is outlined as part of the "EtherType | <t>IOAM encapsulation for GRE is outlined as part of the "EtherType | |||
| Protocol Identification of In-situ OAM Data" in <xref | Protocol Identification of In-situ OAM Data" in <xref target="I-D.weis-i | |||
| target="I-D.weis-ippm-ioam-eth"/>.</t> | ppm-ioam-eth" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Geneve"> | <name>Geneve</name> | |||
| <t>IOAM encapsulation for Geneve is defined in <xref | <t>IOAM encapsulation for Geneve is defined in <xref target="I-D.brockne | |||
| target="I-D.brockners-ippm-ioam-geneve"/>.</t> | rs-ippm-ioam-geneve" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Segment Routing"> | <name>Segment Routing</name> | |||
| <t>IOAM encapsulation for Segment Routing is defined in <xref | <t>IOAM encapsulation for Segment Routing is defined in <xref target="I- | |||
| target="I-D.gandhi-spring-ioam-sr-mpls"/>.</t> | D.gandhi-mpls-ioam" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Segment Routing for IPv6"> | <name>Segment Routing for IPv6</name> | |||
| <t>IOAM encapsulation for Segment Routing over IPv6 is defined in | <t>IOAM encapsulation for Segment Routing over IPv6 is defined in | |||
| <xref target="I-D.ali-spring-ioam-srv6"/>.</t> | <xref target="I-D.ali-spring-ioam-srv6" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="VXLAN-GPE"> | <name>VXLAN-GPE</name> | |||
| <t>IOAM encapsulation for VXLAN-GPE is defined in <xref | <t>IOAM encapsulation for VXLAN-GPE is defined in <xref target="I-D.broc | |||
| target="I-D.brockners-ippm-ioam-vxlan-gpe"/>.</t> | kners-ippm-ioam-vxlan-gpe" format="default"/>.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="export" numbered="true" toc="default"> | ||||
| <section anchor="export" title="IOAM Data Export"> | <name>IOAM Data Export</name> | |||
| <t>IOAM nodes collect information for packets traversing a domain that | <t>IOAM nodes collect information for packets traversing a domain that | |||
| supports IOAM. IOAM decapsulating nodes as well as IOAM transit nodes | supports IOAM. IOAM decapsulating nodes, as well as IOAM transit nodes, | |||
| can choose to retrieve IOAM information from the packet, process the | can choose to retrieve IOAM information from the packet, process the | |||
| information further and export the information using e.g., IPFIX.</t> | information further, and export the information using, e.g., IP Flow Infor | |||
| mation Export (IPFIX).</t> | ||||
| <t>Raw data export of IOAM data using IPFIX is discussed in <xref | <t>Raw data export of IOAM data using IPFIX is discussed in <xref | |||
| target="I-D.spiegel-ippm-ioam-rawexport"/>. "Raw export of IOAM data" | target="I-D.spiegel-ippm-ioam-rawexport" format="default"/>. "Raw export | |||
| refers to a mode of operation where a node exports the IOAM data as it | of IOAM data" refers to a mode of operation where a node exports the | |||
| is received in the packet. The exporting node neither interprets, | IOAM data as it is received in the packet. The exporting node does not | |||
| aggregates nor reformats the IOAM data before it is exported. Raw export | interpret, aggregate, or reformat the IOAM data before it is | |||
| of IOAM data is to support an operational model where the processing and | exported. Raw export of IOAM data is to support an operational model | |||
| interpretation of IOAM data is decoupled from the operation of | where the processing and interpretation of IOAM data is decoupled from | |||
| encapsulating/updating/decapsulating IOAM data, which is also referred | the operation of encapsulating/updating/decapsulating IOAM data, which | |||
| to as IOAM data-plane operation. The figure below shows the separation | is also referred to as "IOAM data-plane operation". <xref | |||
| of concerns for IOAM export: Exporting IOAM data is performed by the | target="export-arch"/> shows the separation of concerns for IOAM export. | |||
| "IOAM node" which performs IOAM data-plane operation, whereas the | Exporting IOAM data is performed by the "IOAM node", which performs IOAM | |||
| interpretation of IOAM data is performed by one or several IOAM data | data-plane operation, whereas the interpretation of IOAM data is | |||
| processing systems. The separation of concerns is to off-load | performed by one or several IOAM data processing systems. The separation | |||
| interpretation, aggregation and formatting of IOAM data from the node | of concerns is to offload interpretation, aggregation, and formatting | |||
| which performs data-plane operations. In other words, a node which is | of IOAM data from the node that performs data-plane operations. In other | |||
| focused on data-plane operations, i.e. forwarding of packets and | words, a node that is focused on data-plane operations, i.e., forwarding | |||
| handling IOAM data will not be tasked to also interpret the IOAM data, | of packets and handling IOAM data, will not be tasked to also interpret | |||
| but can leave this task to another system or a set of systems. For | the IOAM data. Instead, that node can leave this task to another system | |||
| scalability reasons, a single IOAM node could choose to export IOAM data | or a set of systems. For scalability reasons, a single IOAM node could | |||
| to several IOAM data processing systems. Similarly, there several | choose to export IOAM data to several systems that process IOAM | |||
| monitoring systems or analytics systems can be used to further process | data. Similarly, several monitoring systems or analytics systems | |||
| the data received from the IOAM preprocessing systems. <xref | can be used to further process the data received from the IOAM | |||
| target="export-arch"/> shows an overview of IOAM export, including IOAM | preprocessing systems. <xref target="export-arch" format="default"/> | |||
| data processing systems and monitoring/analytics systems.</t> | shows an overview of IOAM export, including IOAM data processing systems | |||
| and monitoring and analytics systems.</t> | ||||
| <figure align="center" anchor="export-arch" | <figure anchor="export-arch"> | |||
| title="IOAM framework with data export"> | <name>IOAM Framework with Data Export</name> | |||
| <artwork align="left"><![CDATA[ | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| +--------------+ | +--------------+ | |||
| +-------------+ | | +-------------+ | | |||
| | Monitoring/ | | | | Monitoring/ | | | |||
| | Analytics | | | | Analytics | | | |||
| | system(s) |-+ | | system(s) |-+ | |||
| +-------------+ | +-------------+ | |||
| ^ | ^ | |||
| | Processed/interpreted/ | | Processed/interpreted/ | |||
| | aggregated IOAM data | | aggregated IOAM data | |||
| | | | | |||
| skipping to change at line 615 ¶ | skipping to change at line 473 ¶ | |||
| | IOAM data | | 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 | | |||
| +--------+ +--------+ +--------+ +--------+ | +--------+ +--------+ +--------+ +--------+ | |||
| ]]></artwork> | ||||
| </figure> | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | </section> | |||
| <section anchor="IOAM-framework" numbered="true" toc="default"> | ||||
| <section anchor="IOAM-framework" title="IOAM Deployment Considerations"> | <name>IOAM Deployment Considerations</name> | |||
| <t>This section describes several concepts of IOAM, and provides considera | <t>This section describes several concepts of IOAM and provides | |||
| tions | considerations that need to be taken into account when implementing IOAM | |||
| that need to be taken to account when implementing IOAM in a network domai | in a network domain. This includes concepts like IOAM-Namespaces, IOAM | |||
| n. | Layering, traffic-sets that IOAM is applied to, and IOAM Loopback. For a | |||
| This includes concepts like IOAM Namespaces, IOAM Layering, traffic-sets t | definition of IOAM-Namespaces and IOAM Layering, please refer to <xref | |||
| hat IOAM is | target="RFC9197" format="default"/>. IOAM Loopback is defined in <xref | |||
| applied to and IOAM loopback mode. For a definition of IOAM Namespaces | target="RFC9322" format="default"/>.</t> | |||
| and IOAM layering, please refer to <xref target="RFC9197"/>. | <section anchor="ioam_namespaces" numbered="true" toc="default"> | |||
| IOAM loopback mode is defined in <xref target="RFC9322"/>.</t> | <name>IOAM-Namespaces</name> | |||
| <t>IOAM-Namespaces add further context to IOAM Option-Types and | ||||
| <section anchor="ioam_namespaces" title="IOAM Namespaces"> | associated IOAM-Data-Fields. IOAM-Namespaces are defined in <xref | |||
| <t>IOAM-Namespaces add further context to IOAM-Option-Types and | target="RFC9197" sectionFormat="of" section="4.3"/>. The Namespace-ID | |||
| associated IOAM-Data-Fields. IOAM-Namespaces are defined in | is part of the IOAM Option-Type definition. See <xref target="RFC9197" | |||
| Section 4.3 of <xref target="RFC9197"/>. The Namespace-ID is | sectionFormat="of" section="4.4"/> for IOAM Trace Option-Types or | |||
| part of the IOAM Option-Type definition, see e.g., Section | <xref target="RFC9197" sectionFormat="of" section="4.6"/> for the IOAM | |||
| 4.4 of <xref target="RFC9197"/> for IOAM Trace Option-Types | E2E Option-Type. IOAM-Namespaces support several uses:</t> | |||
| or Section 4.6 of <xref target="RFC9197"/> for the IOAM Edge-to-Edge Opti | <ul spacing="normal"> | |||
| on-Type. | <li>IOAM-Namespaces can be used by an operator to distinguish | |||
| IOAM-Namespaces support several uses:</t> | between different operational domains. Devices at domain edges can | |||
| filter on Namespace-IDs to provide for proper IOAM-Domain | ||||
| <t><list style="symbols"> | isolation.</li> | |||
| <t>IOAM-Namespaces can be used by an operator to distinguish | <li>IOAM-Namespaces provide additional context for IOAM-Data-Fields; t | |||
| different operational domains. Devices at domain edges can filter | hus, they ensure that IOAM-Data-Fields are unique and can be | |||
| on Namespace-IDs to provide for proper IOAM-Domain isolation.</t> | interpreted properly by management stations or network | |||
| controllers. While, for example, the node identifier field does not | ||||
| <t>IOAM-Namespaces provide additional context for IOAM-Data-Fields | need to be unique in a deployment (e.g., an operator may wish to use | |||
| and thus ensure that IOAM-Data-Fields are unique and can be | different node identifiers for different IOAM layers, even within | |||
| interpreted properly by management stations or network | the same device; or node identifiers might not be unique for other | |||
| controllers. While, for example, the node identifier field does | organizational reasons, such as after a merger of two formerly | |||
| not need to be unique in a deployment (e.g., an operator may wish | separated organizations), the combination of node_id and | |||
| to use different node identifiers for different IOAM layers, even | Namespace-ID should always be unique. Similarly, IOAM-Namespaces can | |||
| within the same device; or node identifiers might not be unique | be used to define how certain IOAM-Data-Fields are interpreted. IOAM | |||
| for other organizational reasons, such as after a merger of two | offers three different timestamp format options. The Namespace-ID | |||
| formerly separated organizations), the combination of node_id and | can be used to determine the timestamp format. IOAM-Data-Fields | |||
| Namespace-ID should always be unique. Similarly, IOAM-Namespaces can | (e.g., buffer occupancy) that do not have a unit associated are to | |||
| be used to define how certain IOAM-Data-Fields are interpreted: | be interpreted within the context of an IOAM-Namespace. The | |||
| IOAM offers three different timestamp format options. The | Namespace-ID could also be used to distinguish between different | |||
| Namespace-ID can be used to determine the timestamp format. | types of interfaces. An interface-id could, for example, point to a | |||
| IOAM-Data-Fields (e.g., buffer occupancy) which do not have a unit | physical interface (e.g., to understand which physical interface of | |||
| associated are to be interpreted within the context of a | an aggregated link is used when receiving or transmitting a packet). | |||
| IOAM-Namespace. The Namespace-ID could also be used to distinguish | Whereas, in another case, an interface-id could refer to a logical | |||
| between different types of interfaces: An interface-id could for exam | interface (e.g., in case of tunnels). Namespace-IDs could be used to | |||
| ple | distinguish between the different types of interfaces. | |||
| point to a physical interface (e.g., to understand which physical | </li> | |||
| interface of an aggregated link is used when receiving or transmittin | <li> | |||
| g a | ||||
| packet) whereas in another case it could refer to a logical interface | ||||
| (e.g., in case of tunnels). Namespace-IDs could be used to | ||||
| distinguish between the different types of interfaces. | ||||
| </t> | ||||
| <t>IOAM-Namespaces can be used to identify different sets of | <t>IOAM-Namespaces can be used to identify different sets of | |||
| devices (e.g., different types of devices) in a deployment: If an | devices (e.g., different types of devices) in a deployment. If an | |||
| operator desires to insert different IOAM-Data-Fields based on the | operator desires to insert different IOAM-Data-Fields based on the | |||
| device, the devices could be grouped into multiple | device, the devices could be grouped into multiple | |||
| IOAM-Namespaces. This could be due to the fact that the IOAM | IOAM-Namespaces. This could be due to the fact that the IOAM | |||
| feature set differs between different sets of devices, or it could | feature set differs between different sets of devices, or it could | |||
| be for reasons of optimized space usage in the packet header. It | be for reasons of optimized space usage in the packet header. It | |||
| could also stem from hardware or operational limitations on the | could also stem from hardware or operational limitations on the | |||
| size of the trace data that can be added and processed, preventing | size of the trace data that can be added and processed, preventing | |||
| collection of a full trace for a flow.<list style="symbols"> | collection of a full trace for a flow.</t> | |||
| <t>Assigning different IOAM Namespace-IDs to different sets of | <ul spacing="normal"> | |||
| nodes or network partitions and using the Namespace-ID as a | <li>Assigning different IOAM Namespace-IDs to different sets of | |||
| selector at the IOAM encapsulating node, a full trace for a | nodes or network partitions and using the Namespace-ID as a | |||
| flow could be collected and constructed via partial traces in | selector at the IOAM encapsulating node, a full trace for a flow | |||
| different packets of the same flow. Example: An operator could | could be collected and constructed via partial traces in | |||
| choose to group the devices of a domain into two | different packets of the same flow. For example, an operator | |||
| IOAM-Namespaces, in a way that at average, only every second | could choose to group the devices of a domain into two | |||
| hop would be recorded by any device. To retrieve a full view | IOAM-Namespaces in a way that, on average, only every second hop | |||
| of the deployment, the captured IOAM-Data-Fields of the two | would be recorded by any device. To retrieve a full view of the | |||
| IOAM-Namespaces need to be correlated.</t> | deployment, the captured IOAM-Data-Fields of the two | |||
| IOAM-Namespaces need to be correlated.</li> | ||||
| <t>Assigning different IOAM Namespace-IDs to different sets of | <li>Assigning different IOAM Namespace-IDs to different sets of | |||
| nodes or network partitions and using a separate instance of | nodes or network partitions and using a separate instance of an | |||
| an IOAM-Option-Type for each Namespace-ID, a full trace for a | IOAM Option-Type for each Namespace-ID, a full trace for a flow | |||
| flow could be collected and constructed via partial traces | could be collected and constructed via partial traces from each | |||
| from each IOAM-Option-Type in each of the packets in the flow. | IOAM Option-Type in each of the packets in the flow. For | |||
| Example: An operator could choose to group the devices of a | example, an operator could choose to group the devices of a | |||
| domain into two IOAM-Namespaces, in a way that each | domain into two IOAM-Namespaces in a way that each | |||
| IOAM-Namespace is represented by one of two IOAM-Option-Types | IOAM-Namespace is represented by one of two IOAM Option-Types in | |||
| in the packet. Each node would record data only for the | the packet. Each node would record data only for the | |||
| IOAM-Namespace that it belongs to, ignoring the other | IOAM-Namespace that it belongs to, ignoring the other | |||
| IOAM-Option-Type with a IOAM-Namespace to which it doesn't | IOAM Option-Type with an IOAM-Namespace it doesn't belong to. To | |||
| belong. To retrieve a full view of the deployment, the | retrieve a full view of the deployment, the captured | |||
| captured IOAM-Data-Fields of the two IOAM-Namespaces need to | IOAM-Data-Fields of the two IOAM-Namespaces need to be | |||
| be correlated.</t> | correlated.</li> | |||
| </list></t> | </ul> | |||
| </list></t> | </li> | |||
| </ul> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="IOAM Layering"> | <name>IOAM Layering</name> | |||
| <t>If several encapsulation protocols (e.g., in case of tunneling) are | <t>If several encapsulation protocols (e.g., in case of tunneling) are | |||
| stacked on top of each other, IOAM-Data-Fields could be present in | stacked on top of each other, IOAM-Data-Fields could be present in | |||
| different protocol fields at different layers. Layering allows | different protocol fields at different layers. Layering allows | |||
| operators to instrument the protocol layer they want to measure. The | operators to instrument the protocol layer they want to measure. The | |||
| behavior follows the ships-in-the-night model, i.e., IOAM-Data-Fields | behavior follows the ships-in-the-night model, i.e., IOAM-Data-Fields | |||
| in one layer are independent of IOAM-Data-Fields in another layer. | in one layer are independent of IOAM-Data-Fields in another layer. Or | |||
| Or in other words: Even though the term "layering" often implies some | in other words, even though the term "layering" often implies there is | |||
| form of hierarchy and relationship, in IOAM, layers are independent | some form of hierarchy and relationship, in IOAM, layers are | |||
| of each other and don't assume any relationship among them. The | independent of each other and don't assume any relationship among | |||
| different layers could, but do not have to share the same IOAM | them. The different layers could, but do not have to, share the same | |||
| encapsulation mechanisms. Similarly, the semantics of the IOAM-Data- | IOAM encapsulation mechanisms. Similarly, the semantics of the | |||
| Fields, can, but do not have to be associated to cross different layers. | IOAM-Data-Fields can, but do not have to, be associated to cross | |||
| For example, a node which inserts node-id | different layers. For example, a node that inserts node-id | |||
| information into two different layers could use "node-id=10" for one | information into two different layers could use "node-id=10" for one | |||
| layer and "node-id=1000" for the second layer.</t> | layer and "node-id=1000" for the second layer.</t> | |||
| <t><xref target="IOAM-layering" format="default"/> shows an example of | ||||
| IOAM Layering. The figure shows a Geneve tunnel carried over IPv6, | ||||
| which starts at node A and ends at node D. IOAM information is | ||||
| encapsulated in IPv6 as well as in Geneve. At the IPv6 layer, node A | ||||
| is the IOAM encapsulating node (into IPv6), node D is the IOAM | ||||
| decapsulating node, and nodes B and C are IOAM transit nodes. At the | ||||
| Geneve layer, node A is the IOAM encapsulating node (into Geneve), and | ||||
| node D is the IOAM decapsulating node (from Geneve). The use of IOAM | ||||
| at both layers, as shown in the example here, could be used to reveal | ||||
| which nodes of an underlay (here the IPv6 network) are traversed by a | ||||
| tunneled packet in an overlay (here the Geneve network) -- which | ||||
| assumes that the IOAM information encapsulated by nodes A and D into | ||||
| Geneve and IPv6 is associated to each other.</t> | ||||
| <t><xref target="IOAM-layering"/> shows an example of IOAM layering. | <figure anchor="IOAM-layering"> | |||
| The figure shows a Geneve tunnel carried over IPv6 which starts at | <name>IOAM Layering Example</name> | |||
| node A and ends at node D. IOAM information is encapsulated in IPv6 as | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| well as in Geneve. At the IPv6 layer, node A is the IOAM encapsulating | ||||
| node (into IPv6), node D is the IOAM decapsulating node and node B and | ||||
| node C are IOAM transit nodes. At the Geneve layer, node A is the IOAM | ||||
| encapsulating node (into Geneve) and node D is the IOAM decapsulating no | ||||
| de | ||||
| (from Geneve). The use of IOAM at both layers as shown in the example | ||||
| here could be used to reveal which nodes of an underlay (here the IPv6 | ||||
| network) are traversed by tunneled packet in an overlay (here the | ||||
| Geneve network) - which assumes that the IOAM information encapsulated | ||||
| by nodes A and D into Geneve and IPv6 is associated to each other.</t> | ||||
| <figure align="center" anchor="IOAM-layering" | ||||
| title="IOAM layering example"> | ||||
| <artwork align="left"><![CDATA[ | ||||
| +---+----+ +---+----+ | +---+----+ +---+----+ | |||
| User |Geneve | |Geneve | | User |Geneve | |Geneve | | |||
| packets |Encapsu-| |Decapsu-| | packets |Encapsu-| |Decapsu-| | |||
| -------->|lating |==================================>|lating |--> | -------->|lating |==================================>|lating |--> | |||
| | Node | | Node | | | Node | | Node | | |||
| | A | | D | | | A | | D | | |||
| +--------+ +--------+ | +--------+ +--------+ | |||
| ^ ^ | ^ ^ | |||
| | | | | | | |||
| v v | v v | |||
| skipping to change at line 755 ¶ | skipping to change at line 613 ¶ | |||
| ^ ^ | ^ ^ | |||
| | | | | | | |||
| v v | v v | |||
| +--------+ +--------+ +--------+ +--------+ | +--------+ +--------+ +--------+ +--------+ | |||
| |IPv6 | | IPv6 | | IPv6 | |IPv6 | | |IPv6 | | IPv6 | | IPv6 | |IPv6 | | |||
| |Encapsu-| | Transit| | Transit| |Decapsu-| | |Encapsu-| | Transit| | Transit| |Decapsu-| | |||
| |lating |====>| Node |====>| Node |====>|lating | | |lating |====>| Node |====>| Node |====>|lating | | |||
| | Node | | | | | | Node | | | Node | | | | | | Node | | |||
| | A | | B | | C | | D | | | A | | B | | C | | D | | |||
| +--------+ +--------+ +--------+ +--------+ | +--------+ +--------+ +--------+ +--------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| </section> | ||||
| <section anchor="IOAM-trace-options" title="IOAM Trace Option Types"> | </section> | |||
| <section anchor="IOAM-trace-options" numbered="true" toc="default"> | ||||
| <name>IOAM Trace Option-Types</name> | ||||
| <t>IOAM offers two different IOAM Option-Types for tracing: | <t>IOAM offers two different IOAM Option-Types for tracing: | |||
| "Incremental" Trace-Option-Type and "Pre-allocated" Trace-Option-Type. | "Incremental" Trace Option-Type and "Pre-allocated" Trace Option-Type. | |||
| "Incremental" refers to a mode of operation where the packet is | "Incremental" refers to a mode of operation where the packet is | |||
| expanded at every IOAM node that adds IOAM-Data-Fields. | expanded at every IOAM node that adds IOAM-Data-Fields. | |||
| "Pre-Allocated" describes a mode of operation where the IOAM | "Pre-allocated" describes a mode of operation where the IOAM | |||
| encapsulating node allocates room for all IOAM-Data-Fields in the | encapsulating node allocates room for all IOAM-Data-Fields in the | |||
| entire IOAM domain. More specifically:</t> | entire IOAM-Domain. More specifically:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t><list style="hanging"> | <dt>Pre-allocated Trace Option:</dt> | |||
| <t hangText="Pre-allocated Trace-Option:">This trace option is | <dd>This trace option is defined as a container of node data fields | |||
| defined as a container of node data fields with pre-allocated | with pre-allocated space for each node to populate its | |||
| space for each node to populate its information. This option is | information. This option is useful for implementations where it is | |||
| useful for implementations where it is efficient to allocate the | efficient to allocate the space once and index into the array to | |||
| space once and index into the array to populate the data during | populate the data during transit (e.g., software forwarders often | |||
| transit (e.g., software forwarders often fall into this | fall into this class).</dd> | |||
| class).</t> | <dt>Incremental Trace Option:</dt> | |||
| <dd>This trace option is defined as a container of node data fields | ||||
| <t hangText="Incremental Trace-Option:">This trace option is | where each node allocates and pushes its node data immediately | |||
| defined as a container of node data fields where each node | following the option header.</dd> | |||
| allocates and pushes its node data immediately following the | </dl> | |||
| option header.</t> | <t>Which IOAM Trace Option-Types can be supported is not only a | |||
| </list> | function of operator-defined configuration but may also be limited by | |||
| protocol constraints unique to a given encapsulating protocol. | ||||
| Which IOAM Trace-Option-Types can be supported is not only a function of | ||||
| operator-defined configuration, but may also be limited by protocol | ||||
| constraints unique to a given encapsulating protocol. | ||||
| For encapsulating protocols which support both IOAM Trace-Option-Types, | ||||
| the operator decides by means of configuration which | ||||
| Trace-Option-Type(s) will be used for a particular domain. | ||||
| In this case, deployments can mix devices which include either the | ||||
| Incremental Trace-Option-Type or the Pre-allocated Trace-Option-Type. | ||||
| If for example different types of packet forwarders and associated | ||||
| different types of IOAM implementations exist in a deployment and | ||||
| the encapsulating protocol supports both IOAM Trace-Option-Types, | ||||
| a deployment can mix devices which include either the | ||||
| Incremental Trace-Option-Type or the Pre-allocated Trace-Option-Type. | ||||
| As a result, both Option-Types can be present in a packet. IOAM | ||||
| decapsulating nodes remove both types of Trace-Option-Types from the | ||||
| packet.</t> | ||||
| <t>The two different Option-Types cater to different packet forwarding | ||||
| infrastructures and are to allow an optimized implementation of IOAM | ||||
| tracing:<list style="hanging"> | ||||
| <t hangText="Pre-allocated Trace-Option:">For some implementations | ||||
| of packet forwarders it is efficient to allocate the space for the | ||||
| maximum number of nodes that IOAM Trace Data-Fields should be | ||||
| collected from and insert/update information in the packet at | ||||
| flexible locations, based on a pointer retrieved from a field in | ||||
| the packet. The IOAM encapsulating node allocates an array of the | ||||
| size of the maximum number of nodes that IOAM Trace Data-Fields | ||||
| should be collected from. IOAM transit nodes index into the array | ||||
| to populate the data during transit. Software forwarders often | ||||
| fall into this class of packet forwarder implementations. The | ||||
| maximum number of nodes that IOAM information could be collected | ||||
| from is configured by the operator on the IOAM encapsulating node. | ||||
| The operator has to ensure that the packet with the pre-allocated | ||||
| array that carries the IOAM Data-Fields does not exceed the MTU of | ||||
| any of the links in the IOAM domain.</t> | ||||
| <t hangText="Incremental Trace-Option:">Looking up a pointer | For encapsulating protocols that support both IOAM Trace Option-Types, | |||
| contained in the packet and inserting/updating information at a | the operator decides, by means of configuration, which | |||
| flexible location in the packet as a result of the pointer lookup | Trace Option-Type(s) will be used for a particular domain. In this | |||
| is costly for some forwarding infrastructures. Hardware-based | case, deployments can mix devices that include either the Incremental | |||
| packet forwarding infrastructures often fall into this category. | Trace Option-Type or the Pre-allocated Trace Option-Type. For | |||
| Consequently, hardware-based packet forwarders could choose to | example, if different types of packet forwarders and associated | |||
| support the incremental IOAM-Trace-Option-Type. The incremental | different types of IOAM implementations exist in a deployment and the | |||
| IOAM-Trace-Option-Type eliminates the need for the IOAM transit | encapsulating protocol supports both IOAM Trace Option-Types, a | |||
| nodes to read the full array in the Trace-Option-Type and allows | deployment can mix devices that include either the Incremental | |||
| packets to grow to the size of the MTU of the IOAM domain. IOAM | Trace Option-Type or the Pre-allocated Trace Option-Type. As a | |||
| transit nodes will expand the packet and insert the | result, both Option-Types can be present in a packet. IOAM | |||
| IOAM-Data-Fields as long as there is space available in the | decapsulating nodes remove both types of Trace Option-Types from the | |||
| packet, i.e. as long as the size of the packet stays within the | packet.</t> | |||
| bounds of the MTU of the links in the IOAM domain. There is | <t>The two different Option-Types cater to different packet-forwarding | |||
| no need for the operator to configure the IOAM encapsulation node | infrastructures and allow an optimized implementation of IOAM | |||
| with the maximum number of nodes that IOAM information could be | tracing:</t> | |||
| collected from. The operator has to ensure that the minimum MTU of | <dl newline="false" spacing="normal"> | |||
| the links in the IOAM domain is known to all IOAM transit | <dt>Pre-allocated Trace Option:</dt> | |||
| nodes.</t> | <dd>For some implementations of packet forwarders, it is efficient | |||
| </list></t> | to allocate the space for the maximum number of nodes that IOAM | |||
| Trace Data-Fields should be collected from and insert/update | ||||
| information in the packet at flexible locations based on a pointer | ||||
| retrieved from a field in the packet. The IOAM encapsulating node | ||||
| allocates an array of the size of the maximum number of nodes that | ||||
| IOAM Trace Data-Fields should be collected from. IOAM transit nodes | ||||
| index into the array to populate the data during transit. Software | ||||
| forwarders often fall into this class of packet-forwarder | ||||
| implementations. The maximum number of nodes that IOAM information | ||||
| could be collected from is configured by the operator on the IOAM | ||||
| encapsulating node. The operator has to ensure that the packet with | ||||
| the pre-allocated array that carries the IOAM Data-Fields does not | ||||
| exceed the MTU of any of the links in the IOAM-Domain.</dd> | ||||
| <dt>Incremental Trace Option:</dt> | ||||
| <dd>Looking up a pointer contained in the packet and | ||||
| inserting/updating information at a flexible location in the packet | ||||
| as a result of the pointer lookup is costly for some forwarding | ||||
| infrastructures. Hardware-based packet-forwarding infrastructures | ||||
| often fall into this category. Consequently, hardware-based packet | ||||
| forwarders could choose to support the IOAM Incremental Trace | ||||
| Option-Type. The IOAM Incremental Trace Option-Type eliminates the | ||||
| need for the IOAM transit nodes to read the full array in the Trace | ||||
| Option-Type and allows packets to grow to the size of the MTU of the | ||||
| IOAM-Domain. IOAM transit nodes will expand the packet and insert | ||||
| the IOAM-Data-Fields as long as there is space available in the | ||||
| packet, i.e., as long as the size of the packet stays within the | ||||
| bounds of the MTU of the links in the IOAM-Domain. There is no need | ||||
| for the operator to configure the IOAM encapsulation node with the | ||||
| maximum number of nodes that IOAM information could be collected | ||||
| from. The operator has to ensure that the minimum MTU of the links | ||||
| in the IOAM-Domain is known to all IOAM transit nodes.</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Traffic-sets that IOAM Is Applied To"> | <name>Traffic-Sets That IOAM Is Applied To</name> | |||
| <t>IOAM can be deployed on all or only on subsets of the live user | <t>IOAM can be deployed on all or only on subsets of the live user | |||
| traffic, e.g., per interface, based on an access control list or flow | traffic, e.g., per interface, based on an access control list or flow | |||
| specification defining a specific set of traffic, etc.</t> | specification defining a specific set of traffic, etc.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="IOAM Loopback Mode"> | <name>Loopback Flag</name> | |||
| <t>IOAM Loopback is used to trigger each transit device along the path | <t>IOAM Loopback is used to trigger each transit device along the path | |||
| of a packet to send a copy of the data packet back to the source. | of a packet to send a copy of the data packet back to the source. | |||
| Loopback allows an IOAM encapsulating node to trace the path to a | Loopback allows an IOAM encapsulating node to trace the path to a | |||
| given destination, and to receive per-hop data about both the forward | given destination and to receive per-hop data about both the forward | |||
| and the return path. Loopback is enabled by the encapsulating node | and the return path. Loopback is enabled by the encapsulating node | |||
| setting the loopback flag. Looped-back packets use the source address | setting the Loopback flag. Looped-back packets use the source address | |||
| of the original packet as destination address and the address of the | of the original packet as a destination address and the address of the | |||
| node which performs the loopback operation as source address. Nodes | node that performs the Loopback operation as source address. Nodes | |||
| which loop back a packet clear the loopback flag before sending the | that loop back a packet clear the Loopback flag before sending the | |||
| copy back towards the source. Loopack applies to IOAM deployments | copy back towards the source. Loopack applies to IOAM deployments | |||
| where the encapsulating node is either a host or the start of a | where the encapsulating node is either a host or the start of a | |||
| tunnel: For details on IOAM loopback, please refer to <xref | tunnel. For details on IOAM Loopback, please refer to <xref | |||
| target="RFC9322"/>.</t> | target="RFC9322" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="IOAM Active Mode"> | <name>Active Flag</name> | |||
| <t>The IOAM active mode flag indicates that a packet is an active OAM | <t>The Active flag indicates that a packet is an active OAM | |||
| packet as opposed to regular user data traffic. Active mode is | packet as opposed to regular user data traffic. Active flag is | |||
| expected to be used for active measurement using IOAM. | expected to be used for active measurement using IOAM. For details on | |||
| For details on IOAM active mode, please refer to <xref | the Active flag, please refer to <xref target="RFC9322" | |||
| target="RFC9322"/>.</t> | format="default"/>.</t> | |||
| <t>Example use cases for the Active flag include:</t> | ||||
| <t>Example use-cases for IOAM Active Mode include:<list style="symbols"> | <dl spacing="normal" newline="false"> | |||
| <t>Endpoint detailed active measurement: Synthetic probe packets | <dt>Endpoint detailed active measurement:</dt> | |||
| are sent between the source and destination. | <dd>Synthetic probe packets are sent between the source and | |||
| These probe packets include a Trace Option-Type (i.e., | destination. These probe packets include a Trace Option-Type (i.e., | |||
| either incremental or pre-allocated). Since the probe packets are | either incremental or pre-allocated). Since the probe packets are | |||
| sent between the endpoints, these packets are treated as data | sent between the endpoints, these packets are treated as data | |||
| packets by the IOAM domain, and do not require special treatment | packets by the IOAM-Domain and do not require special treatment at | |||
| at the IOAM layer. The source, which is also the | the IOAM layer. The source, which is also the IOAM encapsulating | |||
| IOAM encapsulating node can choose to set the | node, can choose to set the Active flag, providing an explicit | |||
| Active flag, providing an explicit indication that these probe | indication that these probe packets are meant for telemetry | |||
| packets are meant for telemetry collection.</t> | collection.</dd> | |||
| <dt>IOAM active measurement using probe packets:</dt> | ||||
| <t>IOAM active measurement using probe packets: Probe packets are | <dd>Probe packets are generated and transmitted by an IOAM | |||
| generated and transmitted by an IOAM encapsulating node towards | encapsulating node towards a destination that is also the IOAM | |||
| a destination which is also the IOAM decapsulating node. | decapsulating node. Probe packets include a Trace Option-Type | |||
| Probe packets include a Trace Option-Type (i.e., either incremental | (i.e., either incremental or pre-allocated) that has its Active | |||
| or | flag set.</dd> | |||
| pre-allocated) which has its Active flag set.</t> | <dt>IOAM active measurement using replicated data packets:</dt> | |||
| <dd>Probe packets are created by an IOAM encapsulating node by | ||||
| <t>IOAM active measurement using replicated data packets: Probe | selecting some or all of the en route data packets and replicating | |||
| packets are created by an IOAM encapsulating node by selecting some | them. A selected data packet that is replicated and its (possibly | |||
| or | truncated) copy are forwarded with one or more IOAM options, while | |||
| all of the en route data packets and replicating them. A selected | the original packet is forwarded, normally, without IOAM options. To | |||
| data packet that is replicated, and its (possibly truncated) copy | the extent possible, the original data packet and its replica are | |||
| is forwarded with one or more IOAM option, while the original | forwarded through the same path. The replica includes a Trace | |||
| packet is forwarded normally, without IOAM options. To the extent | Option-Type that has its Active flag set, indicating that the IOAM | |||
| possible, the original data packet and its replica are forwarded | decapsulating node should terminate it. In this case, the IOAM Active | |||
| through the same path. The replica includes a Trace Option-Type | flag ensures that the replicated traffic is not forwarded beyond the | |||
| that has its Active flag set, indicating that the IOAM decapsulating | IOAM-Domain.</dd> | |||
| node should terminate it. In this case the IOAM Active flag | </dl> | |||
| ensures that the replicated traffic is not forwarded beyond the | ||||
| IOAM domain.</t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section anchor="ioam-brown-field" numbered="true" toc="default"> | ||||
| <section anchor="ioam-brown-field" | <name>Brown Field Deployments: IOAM-Unaware Nodes</name> | |||
| title="Brown Field Deployments: IOAM Unaware Nodes"> | <t>A network can consist of a mix of IOAM-aware and IOAM-unaware | |||
| <t>A network can consist of a mix of IOAM aware and IOAM unaware | ||||
| nodes. The encapsulation of IOAM-Data-Fields into different protocols | nodes. The encapsulation of IOAM-Data-Fields into different protocols | |||
| (see also <xref target="ioam-encap"/>) are defined such that data | (see also <xref target="ioam-encap" format="default"/>) are defined | |||
| packets that include IOAM-Data-Fields do not get dropped by IOAM | such that data packets that include IOAM-Data-Fields do not get | |||
| unaware nodes. For example, packets which contain the | dropped by IOAM-unaware nodes. For example, packets that contain the | |||
| IOAM-Trace-Option-Types in IPv6 Hop by Hop extension headers are | IOAM Trace Option-Types in IPv6 Hop-by-Hop extension headers are | |||
| defined with bits to indicate "00 - skip over this option and continue | defined with bits to indicate "00 - skip over this option and continue | |||
| processing the header". This will ensure that when a node that is IOAM | processing the header". This will ensure that when an IOAM-unaware | |||
| unaware receives a packet with IOAM-Data-Fields included, does not | node receives a packet with IOAM-Data-Fields included, it does not | |||
| drop the packet.</t> | drop the packet.</t> | |||
| <t>Deployments that leverage the IOAM Trace Option-Type(s) could | ||||
| <t>Deployments which leverage the IOAM-Trace-Option-Type(s) could | benefit from the ability to detect the presence of IOAM-unaware nodes, | |||
| benefit from the ability to detect the presence of IOAM unaware nodes, | i.e., nodes that forward the packet but do not update or add | |||
| i.e. nodes which forward the packet but do not update/add | IOAM-Data-Fields in IOAM Trace Option-Types. The node data that is | |||
| IOAM-Data-Fields in IOAM-Trace-Option-Type(s). The node data that is | defined as part of the IOAM Trace Option-Type(s) includes a Hop_Lim | |||
| defined as part of the IOAM-Trace-Option-Type(s) includes a Hop_Lim | field associated to the node identifier to detect missed nodes, i.e., | |||
| field associated to the node identifier to detect missed nodes, i.e. | "holes" in the trace. Monitoring/Analytics systems could utilize | |||
| "holes" in the trace. Monitoring/Analytics system(s) could utilize | this information to account for the presence of IOAM-unaware nodes in | |||
| this information to account for the presence of IOAM unaware nodes in | ||||
| the network.</t> | the network.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="IOAM Manageability"> | <name>IOAM Manageability</name> | |||
| <t>The YANG model for configuring IOAM in network nodes which support | <t>The YANG model for configuring IOAM in network nodes that support | |||
| IOAM is defined in <xref target="I-D.zhou-ippm-ioam-yang"/>.</t> | IOAM is defined in <xref target="I-D.ietf-ippm-ioam-yang" | |||
| format="default"/>.</t> | ||||
| <t>A deployment can leverage IOAM profiles to limit the scope of IOAM | <t>A deployment can leverage IOAM profiles to limit the scope of IOAM | |||
| features, allowing simpler implementation, verification, and | features, allowing simpler implementation, verification, and | |||
| interoperability testing in the context of specific use cases that do | interoperability testing in the context of specific use cases that do | |||
| not require the full functionality of IOAM. An IOAM profile defines a | not require the full functionality of IOAM. An IOAM profile defines a | |||
| use case or a set of use cases for IOAM, and an associated set of rules | use case or a set of use cases for IOAM and an associated set of rules | |||
| that restrict the scope and features of the IOAM specification, thereby | that restrict the scope and features of the IOAM specification, thereby | |||
| limiting it to a subset of the full functionality. IOAM profiles are | limiting it to a subset of the full functionality. IOAM profiles are | |||
| defined in <xref target="I-D.mizrahi-ippm-ioam-profile"/>.</t> | defined in <xref target="I-D.mizrahi-ippm-ioam-profile" | |||
| format="default"/>.</t> | ||||
| <t>For deployments where the IOAM capabilities of a node are unknown, | <t>For deployments where the IOAM capabilities of a node are unknown, | |||
| <xref target="I-D.ietf-ippm-ioam-conf-state"/> could be used | <xref target="RFC9359" format="default"/> could be used to discover the | |||
| to discover the enabled IOAM capabilities of nodes. </t> | enabled IOAM capabilities of nodes. </t> | |||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
| <t>This document does not request any IANA actions.</t> | <t>This document has no IANA actions.</t> | |||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>As discussed in <xref target="RFC7276"/>, a successful attack on an | <t>As discussed in <xref target="RFC7276" format="default"/>, a | |||
| OAM protocol in general, and specifically on IOAM, can prevent the | successful attack on an OAM protocol in general and, specifically, on | |||
| detection of failures or anomalies, or create a false illusion of | IOAM can prevent the detection of failures or anomalies or can create a | |||
| nonexistent ones.</t> | false illusion of nonexistent ones.</t> | |||
| <t>The Proof of Transit Option-Type (<xref | <t>The Proof of Transit Option-Type (<xref | |||
| target="IOAM-proof-of-transit"/>) is used for verifying the path of data | target="IOAM-proof-of-transit" format="default"/>) is used for verifying | |||
| packets. The security considerations of POT are further discussed in | the path of data packets. The security considerations of POT are further | |||
| <xref target="I-D.ietf-sfc-proof-of-transit"/>.</t> | discussed in <xref target="I-D.ietf-sfc-proof-of-transit" | |||
| format="default"/>.</t> | ||||
| <t>Security considerations related to the use of IOAM flags, in | <t>Security considerations related to the use of IOAM flags, | |||
| particular the loopback flag are found in <xref | particularly the Loopback flag, are found in <xref target="RFC9322" | |||
| target="RFC9322"/>.</t> | format="default"/>.</t> | |||
| <t>IOAM data can be subject to eavesdropping. Although the | <t>IOAM data can be subject to eavesdropping. Although the | |||
| confidentiality of the user data is not at risk in this context, | confidentiality of the user data is not at risk in this context, the | |||
| the IOAM data elements can be used for network reconnaissance, | IOAM data elements can be used for network reconnaissance, allowing | |||
| allowing attackers to collect information about network paths, | attackers to collect information about network paths, performance, queue | |||
| performance, queue states, buffer occupancy and other information. | states, buffer occupancy, and other information. Recon is an improbable | |||
| Recon is an improbable security threat in an IOAM deployment that | security threat in an IOAM deployment that is within a confined physical | |||
| is within a confined physical domain. However, in deployments that | domain. However, in deployments that are not confined to a single LAN | |||
| are not confined to a single LAN, but span multiple interconnected | but span multiple interconnected sites (for example, using an overlay | |||
| sites (for example, using an overlay network), the inter-site links | network), the inter-site links are expected to be secured (e.g., by | |||
| are expected to be secured (e.g., by IPsec) | IPsec) in order to avoid external eavesdropping and introduction of | |||
| in order to avoid external eavesdropping and introduction | malicious or false data. Another possible mitigation approach is to use | |||
| of malicious or false data. | "Direct Exporting" <xref target="RFC9326" format="default"/>. | |||
| Another possible mitigation approach is to use the "direct exporting" | In this case, the IOAM-related trace information would not be available | |||
| mode <xref target="RFC9326"/>. | in the customer data packets but would trigger the exporting of (secured) | |||
| In this case the IOAM related trace information would | packet-related IOAM information at every node. IOAM data export and | |||
| not be available in the customer data packets, but would trigger | securing IOAM data export is outside the scope of this document.</t> | |||
| exporting of (secured) packet-related IOAM information at every node. | <t>IOAM can be used as a means for implementing or amplifying Denial-of-Se | |||
| IOAM data export and securing IOAM data export is outside the scope of | rvice (DoS) attacks. For example, a malicious attacker can add an IOAM | |||
| this document.</t> | header to packets or modify an IOAM header in en route packets in order | |||
| to consume the resources of network devices that take part in IOAM or | ||||
| <t>IOAM can be used as a means for implementing Denial of Service (DoS) | collectors that analyze the IOAM data. Another example is a packet-length | |||
| attacks, or for amplifying them. For example, a malicious attacker can | attack, in which an attacker pushes headers associated with IOAM | |||
| add an IOAM header to packets or modify an IOAM header in en route | Option-Types into data packets, causing these packets to be increased | |||
| packets in order to consume the resources of | beyond the MTU size, resulting in fragmentation or in packet drops. | |||
| network devices that take part in IOAM or collectors that analyze the | ||||
| IOAM data. Another example is a packet length attack, in which an | ||||
| attacker pushes headers associated with IOAM Option-Types into data | ||||
| packets, causing these packets to be increased beyond the MTU size, | ||||
| resulting in fragmentation or in packet drops. | ||||
| Such DoS attacks can be mitigated by deploying IOAM in confined | Such DoS attacks can be mitigated by deploying IOAM in confined | |||
| administrative domains, and by limiting the rate and/or the percentage | administrative domains and by limiting the rate and/or the percentage of | |||
| of packets that an IOAM encapsulating node adds IOAM information to, | packets that an IOAM encapsulating node adds IOAM information to as well | |||
| as well as limiting rate and/or percentage of packets that an IOAM | as limiting rate and/or percentage of packets that an IOAM transit or an | |||
| transit or an IOAM decapsulating node creates to export | IOAM decapsulating node creates to export IOAM information extracted | |||
| IOAM information extracted from the data packets that carry IOAM informati | from the data packets that carry IOAM information.</t> | |||
| on.</t> | <t>Even though IOAM focused on limited domains <xref target="RFC8799" | |||
| format="default"/>, there might be deployments for which it is important | ||||
| <t>Even though IOAM focused on limited domains <xref target="RFC8799"/>, t | for IOAM transit nodes and IOAM decapsulating nodes to know that the | |||
| here might | data received haven't been tampered with. In those cases, the IOAM data | |||
| be deployments for which it is important for IOAM transit nodes | should be integrity protected. Integrity protection of IOAM data fields | |||
| and IOAM decapsulating nodes to know that the data received hadn't been ta | is described in <xref target="I-D.ietf-ippm-ioam-data-integrity" | |||
| mpered with. | format="default"/>. In addition, since IOAM options may include | |||
| In those cases, the IOAM data should be integrity protected. | timestamps, if network devices use synchronization protocols, then any | |||
| Integrity protection of IOAM data | attack on the time protocol <xref target="RFC7384" format="default"/> | |||
| fields is described in <xref target="I-D.ietf-ippm-ioam-data-integrity"/>. | can compromise the integrity of the timestamp-related data | |||
| In addition, since IOAM options may include timestamps, if network devices | fields. Synchronization attacks can be mitigated by combining a secured | |||
| use | time distribution scheme, e.g., <xref target="RFC8915" | |||
| synchronization protocols then any attack on the time protocol <xref targe | format="default"/>, and by using redundant clock sources <xref | |||
| t="RFC7384"/> | target="RFC5905" format="default"/> and/or redundant network paths for | |||
| can compromise the integrity of the timestamp-related | the time distribution protocol <xref target="RFC8039" | |||
| data fields. Synchronization attacks can be mitigated by combining a | format="default"/>. | |||
| secured time distribution scheme, e.g., <xref target="RFC8915"/>, and by | ||||
| using redundant clock sources <xref target="RFC5905"/> and/or redundant | ||||
| network paths for the time distribution protocol <xref target="RFC8039"/>. | ||||
| </t> | </t> | |||
| <t>At the management plane, attacks may be implemented by misconfiguring | <t>At the management plane, attacks may be implemented by misconfiguring | |||
| or by maliciously configuring IOAM-enabled nodes in a way that enables | or by maliciously configuring IOAM-enabled nodes in a way that enables | |||
| other attacks. Thus, IOAM configuration should be secured in a way that | other attacks. Thus, IOAM configuration should be secured in a way that | |||
| authenticates authorized users and verifies the integrity of | authenticates authorized users and verifies the integrity of | |||
| configuration procedures.</t> | configuration procedures.</t> | |||
| <t>Notably, IOAM is expected to be deployed in limited network domains | ||||
| <t>Notably, IOAM is expected to be deployed in limited network domains (<x | <xref target="RFC8799" format="default"/>, thus, confining the potential | |||
| ref target="RFC8799"/>), | attack vectors within the limited domain. Indeed, in order to limit the | |||
| thus confining the potential attack vectors to within the limited | scope of threats within the current network domain, the network operator | |||
| domain. Indeed, in order to limit the scope of threats to within the | is expected to enforce policies that prevent IOAM traffic from leaking | |||
| current network domain the network operator is expected to enforce | outside the IOAM-Domain and prevent an attacker from introducing | |||
| policies that prevent IOAM traffic from leaking outside the IOAM | malicious or false IOAM data to be processed and used within the | |||
| domain, and prevent an attacker from introducing malicious or false | IOAM-Domain. IOAM data leakage could lead to privacy issues. Consider | |||
| IOAM data to be processed and used within the IOAM domain. | an IOAM encapsulating node that is a home gateway in an operator's | |||
| IOAM data leakage could lead to privacy | network. A home gateway is often identified with an | |||
| issues. Consider an IOAM encapsulating node that is a home gateway | individual. Revealing IOAM data, such as "IOAM node identifier" or | |||
| in an operator's network. A home gateway is often identified with an indiv | geolocation information outside of the limited domain, could be harmful | |||
| idual, | for that user. Note that Direct Exporting <xref | |||
| and revealing IOAM data such as "IOAM node identifier" | target="RFC9326" format="default"/> can mitigate the potential threat of | |||
| or geolocation information outside of the limited domain | IOAM data leaking through data packets.</t> | |||
| could be harmful for that user. | ||||
| Note that the Direct Export mode | ||||
| <xref target="RFC9326"/> can mitigate the potential | ||||
| threat of IOAM data leaking through data packets.</t> | ||||
| </section> | ||||
| <section title="Acknowledgements"> | ||||
| <t>The authors would like to thank Tal Mizrahi, Eric Vyncke, Nalini | ||||
| Elkins, Srihari Raghavan, Ranganathan T S, Barak Gafni, Karthik Babu | ||||
| Harichandra Babu, Akshaya Nadahalli, LJ Wobker, Erik Nordmark, Vengada | ||||
| Prasad Govindan, Andrew Yourtchenko, Aviv Kfir, Tianran Zhou, Zhenbin | ||||
| (Robin), Joe Clarke, Al Morton, Tom Herbet, Haoyu song, and Mickey | ||||
| Spiegel for the comments and advice on IOAM.</t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <!-- *****BACK MATTER ***** --> | ||||
| <back> | <back> | |||
| <!-- References split into informative and normative --> | ||||
| <!-- There are 2 ways to insert reference entries from the citation librarie | ||||
| s: | ||||
| 1. define an ENTITY at the top, and use "ampersand character"RFC2629; here | ||||
| (as shown) | ||||
| 2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xm | ||||
| l"?> here | ||||
| (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis. | ||||
| xml") | ||||
| Both are cited textually in the same manner: by using xref elements. | ||||
| If you use the PI option, xml2rfc will, by default, try to find included fi | ||||
| les in the same | ||||
| directory as the including file. You can also define the XML_LIBRARY enviro | ||||
| nment variable | ||||
| with a value containing a set of directories to search. These can be eithe | ||||
| r in the local | ||||
| filing system or remote ones accessed by http (http://domain/dir/... ).--> | ||||
| <!-- &RFC5905; --> | ||||
| <!-- | ||||
| <reference anchor="POSIX" | ||||
| target="https://standards.ieee.org/findstds/standard/1003.1-200 | ||||
| 8.html"> | ||||
| <front> | ||||
| <title>IEEE Std 1003.1-2008 (Revision of IEEE Std 1003.1-2004) - | ||||
| IEEE Standard for Information Technology - Portable Operating System | ||||
| Interface (POSIX(R))</title> | ||||
| <author> | <displayreference target="I-D.ietf-nvo3-vxlan-gpe" to="VXLAN-GPE"/> | |||
| <organization>Institute of Electrical and Electronics | <displayreference target="I-D.ietf-ippm-ioam-yang" to="IOAM-YANG"/> | |||
| Engineers</organization> | <displayreference target="I-D.mizrahi-ippm-ioam-profile" to="IOAM-PROFILES"/> | |||
| </author> | <displayreference target="I-D.spiegel-ippm-ioam-rawexport" to="IOAM-RAWEXPORT"/> | |||
| <displayreference target="I-D.ietf-sfc-proof-of-transit" to="PROOF-OF-TRANSIT"/> | ||||
| <date year="2008"/> | <displayreference target="I-D.ietf-ippm-ioam-ipv6-options" to="IOAM-IPV6-OPTIONS | |||
| </front> | "/> | |||
| <displayreference target="I-D.ietf-ippm-ioam-data-integrity" to="IOAM-DATA-INTEG | ||||
| <seriesInfo name="" value="IEEE Std 1003.1-2008"/> | RITY"/> | |||
| </reference> | <displayreference target="I-D.weis-ippm-ioam-eth" to="IOAM-ETH"/> | |||
| <displayreference target="I-D.ietf-sfc-ioam-nsh" to="IOAM-NSH"/> | ||||
| <reference anchor="IEEE1588v2" | <displayreference target="I-D.xzlnp-bier-ioam" to="BIER-IOAM"/> | |||
| target="http://standards.ieee.org/findstds/standard/1588-2008.h | <displayreference target="I-D.brockners-ippm-ioam-geneve" to="IOAM-GENEVE"/> | |||
| tml"> | <displayreference target="I-D.gandhi-mpls-ioam" to="MPLS-IOAM"/> | |||
| <front> | <displayreference target="I-D.ali-spring-ioam-srv6" to="IOAM-SRV6"/> | |||
| <title>IEEE Std 1588-2008 - IEEE Standard for a Precision Clock | <displayreference target="I-D.brockners-ippm-ioam-vxlan-gpe" to="IOAM-VXLAN-GPE" | |||
| Synchronization Protocol for Networked Measurement and Control | /> | |||
| Systems</title> | ||||
| <author> | ||||
| <organization>Institute of Electrical and Electronics | ||||
| Engineers</organization> | ||||
| </author> | ||||
| <date year="2008"/> | ||||
| </front> | ||||
| <seriesInfo name="" value="IEEE Std 1588-2008"/> | ||||
| </reference> | ||||
| <references title="Informative References"> | ||||
| &RFC7665; | ||||
| &RFC7799; | ||||
| &RFC7384; | ||||
| &RFC7276; | ||||
| &RFC8300; | ||||
| &RFC8915; | ||||
| &RFC5905; | ||||
| &RFC8039; | ||||
| &RFC8799; | ||||
| &RFC9197; | ||||
| &RFC9322; | ||||
| &RFC9326; | ||||
| &RFC8279; | ||||
| &RFC8926; | <references> | |||
| <name>Informative References</name> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.766 | ||||
| 5.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.779 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.738 | ||||
| 4.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.727 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.830 | ||||
| 0.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.891 | ||||
| 5.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.590 | ||||
| 5.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.803 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.879 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.919 | ||||
| 7.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.932 | ||||
| 2.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.932 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.827 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.892 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.278 | ||||
| 4.xml"/> | ||||
| &RFC2784; | <reference anchor="I-D.ietf-nvo3-vxlan-gpe" target="https://datatracker.ietf.org | |||
| /doc/html/draft-ietf-nvo3-vxlan-gpe-12"> | ||||
| <front> | ||||
| <title>Generic Protocol Extension for VXLAN (VXLAN-GPE)</title> | ||||
| <author initials="F." surname="Maino" fullname="Fabio Maino" role="editor"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="L." surname="Kreeger" fullname="Larry Kreeger" role="editor"> | ||||
| <organization>Arrcus</organization> | ||||
| </author> | ||||
| <author initials="U." surname="Elzur" fullname="Uri Elzur" role="editor"> | ||||
| <organization>Intel</organization> | ||||
| </author> | ||||
| <date month="September" day="22" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-nvo3-vxlan-gpe-12"/> | ||||
| </reference> | ||||
| &I-D.ietf-nvo3-vxlan-gpe; | <reference anchor="I-D.ietf-ippm-ioam-yang" target="https://datatracker.ietf.org | |||
| /doc/html/draft-ietf-ippm-ioam-yang-06"> | ||||
| <front> | ||||
| <title>A YANG Data Model for In-Situ OAM</title> | ||||
| <author initials="T." surname="Zhou" fullname="Tianran Zhou" role="editor"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Guichard" fullname="Jim Guichard"> | ||||
| <organization>Futurewei</organization> | ||||
| </author> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Raghavan" fullname="Srihari Raghavan"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <date month="February" day="27" year="2023"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-ioam-yang-06"/> | ||||
| </reference> | ||||
| &I-D.zhou-ippm-ioam-yang; | <reference anchor="I-D.mizrahi-ippm-ioam-profile" target="https://datatracker.ie | |||
| tf.org/doc/html/draft-mizrahi-ippm-ioam-profile-06"> | ||||
| <front> | ||||
| <title>In Situ OAM Profiles</title> | ||||
| <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari" role="edito | ||||
| r"> | ||||
| <organization>Thoughtspot</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Sivakolundu" fullname="Ramesh Sivakolundu"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Pignataro" fullname="Carlos Pignataro"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="A." surname="Kfir" fullname="Aviv Kfir"> | ||||
| <organization>Nvidia</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Gafni" fullname="Barak Gafni"> | ||||
| <organization>Nvidia</organization> | ||||
| </author> | ||||
| <author initials="M." surname="Spiegel" fullname="Mickey Spiegel"> | ||||
| <organization>Barefoot Networks</organization> | ||||
| </author> | ||||
| <author initials="T." surname="Zhou" fullname="Tianran Zhou"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <date month="February" day="17" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-mizrahi-ippm-ioam-profile-06"/> | ||||
| </reference> | ||||
| &I-D.mizrahi-ippm-ioam-profile; | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.s piegel-ippm-ioam-rawexport.xml"/> | |||
| &I-D.spiegel-ippm-ioam-rawexport; | <reference anchor="I-D.ietf-sfc-proof-of-transit" target="https://datatracker.ie | |||
| tf.org/doc/html/draft-ietf-sfc-proof-of-transit-08"> | ||||
| <front> | ||||
| <title>Proof of Transit</title> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners" role="edito | ||||
| r"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari" role="edito | ||||
| r"> | ||||
| <organization>Thoughtspot</organization> | ||||
| </author> | ||||
| <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi" role="editor"> | ||||
| <organization>Huawei Network.IO Innovation Lab</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Dara" fullname="Sashank Dara"> | ||||
| <organization>Seconize</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Youell" fullname="Stephen Youell"> | ||||
| <organization>JP Morgan Chase</organization> | ||||
| </author> | ||||
| <date month="October" day="31" year="2020"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-sfc-proof-of-transit-08"/> | ||||
| </reference> | ||||
| &I-D.ietf-sfc-proof-of-transit; | <reference anchor="I-D.ietf-ippm-ioam-ipv6-options" target="https://datatracker. | |||
| ietf.org/doc/html/draft-ietf-ippm-ioam-ipv6-options-10"> | ||||
| <front> | ||||
| <title>In-situ OAM IPv6 Options</title> | ||||
| <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari" role="edito | ||||
| r"> | ||||
| <organization>Thoughtspot</organization> | ||||
| </author> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners" role="edito | ||||
| r"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <date month="February" day="28" year="2023"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-ioam-ipv6-options-10"/> | ||||
| </reference> | ||||
| &I-D.ietf-ippm-ioam-ipv6-options; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.935 | |||
| 9.xml"/> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.i | ||||
| etf-ippm-ioam-data-integrity.xml"/> | ||||
| &I-D.ietf-ippm-ioam-conf-state; | <reference anchor="I-D.weis-ippm-ioam-eth" target="https://datatracker.ietf.org/ | |||
| doc/html/draft-weis-ippm-ioam-eth-05"> | ||||
| <front> | ||||
| <title> | ||||
| EtherType Protocol Identification of In-situ OAM Data | ||||
| </title> | ||||
| <author initials="B." surname="Weis" fullname="Brian Weis" role="editor"> | ||||
| <organization>Independent</organization> | ||||
| </author> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners" role="edito | ||||
| r"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Hill" fullname="Craig Hill"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari"> | ||||
| <organization>Thoughtspot</organization> | ||||
| </author> | ||||
| <author initials="V." surname="Govindan" fullname="Vengada Prasad Govindan"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Pignataro" fullname="Carlos Pignataro" role="edit | ||||
| or"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="N." surname="Nainar" fullname="Nagendra Kumar Nainar" role="ed | ||||
| itor"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="H." surname="Gredler" fullname="Hannes Gredler"> | ||||
| <organization>RtBrick Inc.</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Leddy" fullname="John Leddy"> </author> | ||||
| <author initials="S." surname="Youell" fullname="Stephen Youell"> | ||||
| <organization>JP Morgan Chase</organization> | ||||
| </author> | ||||
| <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi"> | ||||
| <organization>Huawei Network.IO Innovation Lab</organization> | ||||
| </author> | ||||
| <author initials="A." surname="Kfir" fullname="Aviv Kfir"> | ||||
| <organization>Nvidia</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Gafni" fullname="Barak Gafni"> | ||||
| <organization>Nvidia</organization> | ||||
| </author> | ||||
| <author initials="P." surname="Lapukhov" fullname="Petr Lapukhov"> | ||||
| <organization>Facebook</organization> | ||||
| </author> | ||||
| <author initials="M." surname="Spiegel" fullname="Mickey Spiegel"> | ||||
| <organization>Barefoot Networks, an Intel company</organization> | ||||
| </author> | ||||
| <date month="February" day="21" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-weis-ippm-ioam-eth-05"/> | ||||
| </reference> | ||||
| &I-D.ietf-ippm-ioam-data-integrity; | <reference anchor="I-D.ietf-sfc-ioam-nsh" target="https://datatracker.ietf.org/d | |||
| oc/html/draft-ietf-sfc-ioam-nsh-11"> | ||||
| <front> | ||||
| <title> | ||||
| Network Service Header (NSH) Encapsulation for In-situ OAM (IOAM) Data | ||||
| </title> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners" role="edito | ||||
| r"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari" role="edito | ||||
| r"> | ||||
| <organization>Thoughtspot</organization> | ||||
| </author> | ||||
| <date month="September" day="30" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-sfc-ioam-nsh-11"/> | ||||
| </reference> | ||||
| &I-D.weis-ippm-ioam-eth; | <reference anchor="I-D.xzlnp-bier-ioam" target="https://datatracker.ietf.org/doc | |||
| /html/draft-xzlnp-bier-ioam-05"> | ||||
| <front> | ||||
| <title>BIER Encapsulation for IOAM Data</title> | ||||
| <author initials="X." surname="Min" fullname="Xiao Min"> | ||||
| <organization>ZTE Corp.</organization> | ||||
| </author> | ||||
| <author initials="Z." surname="Zhang" fullname="Zheng Zhang"> | ||||
| <organization>ZTE Corp.</organization> | ||||
| </author> | ||||
| <author initials="Y." surname="Liu" fullname="Yisong Liu"> | ||||
| <organization>China Mobile</organization> | ||||
| </author> | ||||
| <author initials="N." surname="Nainar" fullname="Nagendra Nainar"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Pignataro" fullname="Carlos Pignataro"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <date month="January" day="27" year="2023"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-xzlnp-bier-ioam-05"/> | ||||
| </reference> | ||||
| &I-D.ietf-sfc-ioam-nsh; | <reference anchor="I-D.brockners-ippm-ioam-geneve" target="https://datatracker.i | |||
| etf.org/doc/html/draft-brockners-ippm-ioam-geneve-05"> | ||||
| <front> | ||||
| <title>Geneve encapsulation for In-situ OAM Data</title> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners" role="edito | ||||
| r"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari"> | ||||
| <organization>Thoughtspot</organization> | ||||
| </author> | ||||
| <author initials="V." surname="Govindan" fullname="Vengada Prasad Govindan"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Pignataro" fullname="Carlos Pignataro" role="edit | ||||
| or"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="N." surname="Nainar" fullname="Nagendra Nainar" role="editor"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="H." surname="Gredler" fullname="Hannes Gredler"> | ||||
| <organization>RtBrick Inc.</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Leddy" fullname="John Leddy"> </author> | ||||
| <author initials="S." surname="Youell" fullname="Stephen Youell"> | ||||
| <organization>JMPC</organization> | ||||
| </author> | ||||
| <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi"> | ||||
| <organization>Huawei Network.IO Innovation Lab</organization> | ||||
| </author> | ||||
| <author initials="P." surname="Lapukhov" fullname="Petr Lapukhov"> | ||||
| <organization>Facebook</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Gafni" fullname="Barak Gafni"> | ||||
| <organization>Mellanox Technologies</organization> | ||||
| </author> | ||||
| <author initials="A." surname="Kfir" fullname="Aviv Kfir"> | ||||
| <organization>Mellanox Technologies</organization> | ||||
| </author> | ||||
| <author initials="M." surname="Spiegel" fullname="Mickey Spiegel"> | ||||
| <organization>Barefoot Networks</organization> | ||||
| </author> | ||||
| <date month="November" day="19" year="2020"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-brockners-ippm-ioam-geneve-05"/> | ||||
| </reference> | ||||
| &I-D.xzlnp-bier-ioam; | <reference anchor="I-D.gandhi-mpls-ioam" target="https://datatracker.ietf.org/do | |||
| c/html/draft-gandhi-mpls-ioam-10"> | ||||
| <front> | ||||
| <title>MPLS Data Plane Encapsulation for In Situ OAM Data</title> | ||||
| <author initials="R." surname="Gandhi" fullname="Rakesh Gandhi" role="editor"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Wen" fullname="Bin Wen"> | ||||
| <organization>Comcast</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Decraene" fullname="Bruno Decraene"> | ||||
| <organization>Orange</organization> | ||||
| </author> | ||||
| <author initials="H." surname="Song" fullname="Haoyu Song"> | ||||
| <organization>Futurewei Technologies</organization> | ||||
| </author> | ||||
| <date month="March" day="10" year="2023"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-gandhi-mpls-ioam-10"/> | ||||
| </reference> | ||||
| &I-D.brockners-ippm-ioam-geneve; | <reference anchor="I-D.ali-spring-ioam-srv6" target="https://datatracker.ietf.or | |||
| g/doc/html/draft-ali-spring-ioam-srv6-06"> | ||||
| <front> | ||||
| <title> | ||||
| Segment Routing Header encapsulation for In-situ OAM Data | ||||
| </title> | ||||
| <author initials="Z." surname="Ali" fullname="Zafar Ali"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Gandhi" fullname="Rakesh Gandhi"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Filsfils" fullname="Clarence Filsfils"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="F." surname="Brockners" fullname="Frank Brockners"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="N." surname="Nainar" fullname="Nagendra Nainar"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Pignataro" fullname="Carlos Pignataro"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Li" fullname="Cheng Li"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author initials="M." surname="Chen" fullname="Mach Chen"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author initials="G." surname="Dawra" fullname="Gaurav Dawra"> | ||||
| <organization>LinkedIn</organization> | ||||
| </author> | ||||
| <date month="July" day="10" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ali-spring-ioam-srv6-06"/> | ||||
| </reference> | ||||
| &I-D.gandhi-spring-ioam-sr-mpls; | <reference anchor="I-D.brockners-ippm-ioam-vxlan-gpe" | |||
| target="https://datatracker.ietf.org/doc/html/draft-brockners-ippm-ioam-vxlan-gp | ||||
| e-03"> | ||||
| <front> | ||||
| <title>VXLAN-GPE Encapsulation for In-situ OAM Data | ||||
| </title> | ||||
| <author initials="F." surname="Brockners" fullname="F. Brockners"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <author initials="S." surname="Bhandari" fullname="S. Bhandari"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <author initials="V." surname="Govindan" fullname="V. Govindan"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <author initials="C." surname="Pignataro" fullname="C. Pignataro"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <author initials="H." surname="Gredler" fullname="H. Gredler"> | ||||
| <organization>RtBrick Inc.</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Leddy" fullname="J. Leddy"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <author initials="S." surname="Youell" fullname="S. Youell"> | ||||
| <organization>JMPC</organization> | ||||
| </author> | ||||
| <author initials="T." surname="Mizrahi" fullname="T. Mizrahi"> | ||||
| <organization>Huawei Network.IO Innovation Lab</organization> | ||||
| </author> | ||||
| <author initials="A." surname="Kfir" fullname="A. Kfir"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <author initials="B." surname="Gafni" fullname="B. Gafni"> | ||||
| <organization>Mellanox Technologies, Inc.</organization> | ||||
| </author> | ||||
| <author initials="P." surname="Lapukhov" fullname="P. Lapukhov"> | ||||
| <organization>Facebook</organization> | ||||
| </author> | ||||
| <author initials="M." surname="Spiegel" fullname="M. Spiegel"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <date month="November" day="4" year="2019"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-brockners-ipxpm-ioam-vxlan-gpe-03 | ||||
| "/> | ||||
| </reference> | ||||
| &I-D.ali-spring-ioam-srv6; | </references> | |||
| &I-D.brockners-ippm-ioam-vxlan-gpe; | <section numbered="false" toc="default"> | |||
| <name>Acknowledgements</name> | ||||
| <t>The authors would like to thank <contact fullname="Tal Mizrahi"/>, | ||||
| <contact fullname="Eric Vyncke"/>, <contact fullname="Nalini Elkins"/>, | ||||
| <contact fullname="Srihari Raghavan"/>, <contact fullname="Ranganathan T | ||||
| S"/>, <contact fullname="Barak Gafni"/>, <contact fullname="Karthik Babu | ||||
| Harichandra Babu"/>, <contact fullname="Akshaya Nadahalli"/>, <contact | ||||
| fullname="LJ Wobker"/>, <contact fullname="Erik Nordmark"/>, <contact | ||||
| fullname="Vengada Prasad Govindan"/>, <contact fullname="Andrew | ||||
| Yourtchenko"/>, <contact fullname="Aviv Kfir"/>, <contact | ||||
| fullname="Tianran Zhou"/>, <contact fullname="Zhenbin (Robin)"/>, | ||||
| <contact fullname="Joe Clarke"/>, <contact fullname="Al Morton"/>, | ||||
| <contact fullname="Tom Herbet"/>, <contact fullname="Haoyu Song"/>, and | ||||
| <contact fullname="Mickey Spiegel"/> for the comments and advice on | ||||
| IOAM.</t> | ||||
| </section> | ||||
| </references> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 142 change blocks. | ||||
| 993 lines changed or deleted | 1084 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||