| rfc9516.original.xml | rfc9516.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?rfc toc="yes"?> | ||||
| <?rfc tonormal="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
| <?rfc tocdepth="3"?> | std" consensus="true" ipr="trust200902" docName="draft-ietf-sfc-multi-layer-oam- | |||
| <?rfc tocindent="yes"?> | 28" number="9516" updates="" obsoletes="" xml:lang="en" tocInclude="true" tocDep | |||
| <?rfc symrefs="yes"?> | th="3" symRefs="true" sortRefs="true" version="3"> | |||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc comments="yes"?> | ||||
| <?rfc inline="yes"?> | ||||
| <?rfc normal="yes"?> | ||||
| <?rfc subnormal="no"?> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" | ||||
| docName="draft-ietf-sfc-multi-layer-oam-28" updates="" obsoletes="" submissionT | ||||
| ype="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs= | ||||
| "true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.6.0 --> | <!-- xml2rfc v2v3 conversion 3.6.0 --> | |||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <front> | <front> | |||
| <title abbrev="Active OAM for SFC">Active OAM for Service Function Chaining | <title abbrev="Active OAM for SFC">Active Operations, Administration, and Ma | |||
| (SFC)</title> | intenance (OAM) for Service Function Chaining (SFC)</title> | |||
| <seriesInfo name="Internet-Draft" value="draft-ietf-sfc-multi-layer-oam-28"/ | <seriesInfo name="RFC" value="9516"/> | |||
| > | ||||
| <author initials="G." surname="Mirsky" fullname="Greg Mirsky"> | <author initials="G." surname="Mirsky" fullname="Greg Mirsky"> | |||
| <organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
| <address> | <address> | |||
| <email>gregimirsky@gmail.com</email> | <email>gregimirsky@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="W" surname="Meng" fullname="Wei Meng"> | <author initials="W" surname="Meng" fullname="Wei Meng"> | |||
| <organization>ZTE Corporation</organization> | <organization>ZTE Corporation</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>No.50 Software Avenue, Yuhuatai District</street> | <extaddr>Yuhuatai District</extaddr> | |||
| <street>No.50 Software Avenue</street> | ||||
| <region>Nanjing</region> | <region>Nanjing</region> | |||
| <country>China</country> | <country>China</country> | |||
| </postal> | </postal> | |||
| <email>meng.wei2@zte.com.cn</email> | <email>meng.wei2@zte.com.cn</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Ting Ao" initials="T." surname="Ao"> | <author fullname="Ting Ao" initials="T." surname="Ao"> | |||
| <organization>China Mobile</organization> | <organization>China Mobile</organization> | |||
| <address> | <address> | |||
| skipping to change at line 71 ¶ | skipping to change at line 64 ¶ | |||
| <address> | <address> | |||
| <email>vumip1@gmail.com</email> | <email>vumip1@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Kent Leung" initials="K." surname="Leung"> | <author fullname="Kent Leung" initials="K." surname="Leung"> | |||
| <organization>Individual contributor</organization> | <organization>Individual contributor</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>530 Showers Drive Ste 7</street> | <street>530 Showers Drive Ste 7</street> | |||
| <city>Mountain View, CA 94040</city> | <city>Mountain View</city> | |||
| <region/> | <region>CA</region> | |||
| <code/> | <code>94040</code> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <phone/> | <phone/> | |||
| <email>mail4kentl@gmail.com</email> | <email>mail4kentl@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Gyan Mishra" initials="G. " surname="Mishra"> | <author fullname="Gyan Mishra" initials="G. " surname="Mishra"> | |||
| <organization>Verizon Inc.</organization> | <organization>Verizon Inc.</organization> | |||
| <address> | <address> | |||
| <email>gyan.s.mishra@verizon.com</email> | <email>gyan.s.mishra@verizon.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2023"/> | <date year="2023" month="November"/> | |||
| <area>Routing</area> | <area>rtg</area> | |||
| <workgroup>SFC WG</workgroup> | <workgroup>sfc</workgroup> | |||
| <keyword>Request for Comments</keyword> | ||||
| <keyword>RFC</keyword> | <keyword>NSH</keyword> | |||
| <keyword>Internet Draft</keyword> | <keyword>Fault Management</keyword> | |||
| <keyword>I-D</keyword> | ||||
| <abstract> | <abstract> | |||
| <t> | <t> | |||
| A set of requirements for active Operation, Administration, | A set of requirements for active Operations, Administration, | |||
| and Maintenance (OAM) of Service Function Chains (SFCs) in a network is presente | and Maintenance (OAM) for Service Function Chaining (SFC) in a network is presen | |||
| d in this document. | ted in this document. | |||
| Based on these requirements, an encapsulation of active OAM messages in SFC and | Based on these requirements, an encapsulation of active OAM messages in SFC and | |||
| a mechanism to detect and localize defects are described. | a mechanism to detect and localize defects are described. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
| <name>Introduction</name> | <name>Introduction</name> | |||
| <t> | <t> | |||
| <xref target="RFC7665" format="default"/> defines data plane elements neces sary to implement | <xref target="RFC7665" format="default"/> defines data plane elements neces sary to implement | |||
| a Service Function Chaining (SFC). These include: | Service Function Chaining (SFC). These include the following: | |||
| </t> | </t> | |||
| <ol spacing="normal" type="1"> | <ol spacing="normal" type="1"> | |||
| <li> | <li> | |||
| Classifiers that perform the classification of incoming packets. Such class ification may result in associating a received packet to a service function chai n. | Classifiers that perform the classification of incoming packets. Such class ification may result in associating a received packet to a service function chai n. | |||
| </li> | </li> | |||
| <li> | <li> | |||
| Service Function Forwarders (SFFs) | Service Function Forwarders (SFFs) | |||
| that are responsible for forwarding traffic to one or more connected Servic e Functions (SFs) according to | that are responsible for forwarding traffic to one or more connected Servic e Functions (SFs) according to | |||
| the information carried in the SFC encapsulation and handling traffic comin g back from | the information carried in the SFC encapsulation and handling traffic comin g back from | |||
| the SFs and forwarding it to the next SFF. | the SFs and forwarding it to the next SFF. | |||
| </li> | </li> | |||
| <li> | <li> | |||
| SFs that are responsible for executing specific service treatment | SFs that are responsible for executing specific service treatment | |||
| on received packets. | on received packets. | |||
| </li> | </li> | |||
| </ol> | </ol> | |||
| <t> | <t> | |||
| There are different views from different levels of the SFC. | There are different views from different levels of SFC. | |||
| One is the service function chain, an entirely abstract view, which defines an ordered set of SFs that must | One is the service function chain, an entirely abstract view, which defines an ordered set of SFs that must | |||
| be applied to packets selected based on classification rules. | be applied to packets selected based on classification rules. | |||
| But service function chain doesn't specify the exact mapping between SFFs a | But the service function chain doesn't specify the exact mapping between SF | |||
| nd SFs. Thus, another | Fs and SFs. Thus, another | |||
| logical construct used in SFC is a Service Function Path (SFP). According | logical construct used in SFC is a Service Function Path (SFP). | |||
| to <xref target="RFC7665" format="default"/>, SFP is | According to <xref target="RFC7665" format="default"/>, an SFP is | |||
| the instantiation of the SFC in the network and provides a level of indirec | the instantiation of SFC in the network and provides a level of indirection | |||
| tion | between the entirely abstract SFCs and a fully specified, ordered | |||
| between the entirely abstract SFCs and a fully specified ordered | list of SFF and SF identities that the packet will visit when | |||
| list of SFFs and SFs identities that the packet will visit when | it traverses SFC. The latter entity is referred to as Rendered Service Path | |||
| it traverses the SFC. The latter entity is referred to as Rendered Service | (RSP). | |||
| Path (RSP). | The main difference between an SFP and RSP is that the former is the logica | |||
| The main difference between SFP and RSP is that the former is the logical c | l construct, | |||
| onstruct, | ||||
| while the latter is the realization of the SFP via the sequence of specific SFC data plane elements. | while the latter is the realization of the SFP via the sequence of specific SFC data plane elements. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| This document defines how active Operation, Administration | This document defines how active Operations, Administration, | |||
| and Maintenance (OAM), per <xref target="RFC7799" format="default"/> d | and Maintenance (OAM), per the definition of active OAM in <xref targe | |||
| efinition of active OAM, is | t="RFC7799" format="default"/>, is | |||
| implemented when Network Service Header (NSH) <xref target="RFC8300"/> | implemented when the Network Service Header (NSH) <xref target="RFC830 | |||
| is used as the SFC encapsulation. | 0"/> is used as the SFC encapsulation. | |||
| Following the analysis of SFC OAM in <xref target="RFC8924" format="default"/> , this document applies and, when necessary, | Following the analysis of SFC OAM in <xref target="RFC8924" format="default"/> , this document applies and, when necessary, | |||
| extends requirements listed in Section 4 of <xref target="RFC8924"/> | extends requirements listed in <xref target="RFC8924" section="4" sectionForma t="of" /> | |||
| for the use of active OAM in an SFP supporting fault management and performanc e monitoring. | for the use of active OAM in an SFP supporting fault management and performanc e monitoring. | |||
| Active OAM tools, conformant to this specification, | Active OAM tools that are conformant to this specification | |||
| improve OAM's ability for Fault Management (FM) by, for example, using the que ry mechanism | improve OAM's ability for Fault Management (FM) by, for example, using the que ry mechanism | |||
| to troubleshoot and localize defects, which conforms to the stateless characte r | to troubleshoot and localize defects, which conforms to the stateless characte r | |||
| of transactions in SFC NSH <xref target="RFC8300"/>. Note that Performance Mon | of transactions in SFC NSH <xref target="RFC8300"/>. | |||
| itoring OAM, as mentioned in <xref target="RFC8924"/>, | Note that Performance Monitoring OAM, as required by <xref target="RFC8924"/>, | |||
| as a requirement, is not satisfied by this document and is out of scope. | is not satisfied by this document and is out of scope. | |||
| For the purpose of FM OAM in SFC, SFC Echo Request and Echo Reply are specifie | For the purpose of FM OAM in SFC, the SFC Echo Request and Echo Reply are spe | |||
| d in <xref target="sfc-echo-request-reply"/>. | cified in <xref target="sfc-echo-request-reply"/>. These mechanisms enable on-de | |||
| These mechanisms enable on-demand Continuity Check and Connectivity Verificati | mand continuity check and connectivity verification, among other operations, ove | |||
| on, among other operations, over SFC in networks | r SFC in networks | |||
| and addresses functionalities discussed in Sections 4.1, 4.2, and 4.3 of <xref | and address functionalities discussed in Sections <xref target="RFC8924" secti | |||
| target="RFC8924" format="default"/>. | on="4.1" sectionFormat="bare"/>, <xref target="RFC8924" section="4.2" sectionFor | |||
| SFC Echo Request and Echo Reply can be used with encapsulations other than NSH, | mat="bare"/>, and <xref target="RFC8924" section="4.3" sectionFormat="bare"/> of | |||
| for example, | <xref target="RFC8924" format="default"/>. | |||
| The SFC Echo Request and Echo Reply can be used with encapsulations other than t | ||||
| he NSH, for example, | ||||
| using MPLS encapsulation, as described in <xref target="RFC8595"/>. The applicab ility of the SFC Echo Request/Reply mechanism | using MPLS encapsulation, as described in <xref target="RFC8595"/>. The applicab ility of the SFC Echo Request/Reply mechanism | |||
| in SFC encapsulations other than NSH is outside the scope of this document. | in SFC encapsulations other than the NSH is outside the scope of this document. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The intended scope of active SFC OAM is for use within a single provider | The intended scope of SFC active OAM is for use within a single provider's | |||
| operational domain. Active SFC OAM deployment scope is deliberately constrai | operational domain. The SFC active OAM deployment scope is deliberately cons | |||
| ned, | trained, | |||
| as explained in <xref target="RFC7665"/> and <xref target="RFC8300"/>, and li mited to a single | as explained in <xref target="RFC7665"/> and <xref target="RFC8300"/>, and li mited to a single | |||
| network administrative domain.</t> | network administrative domain.</t> | |||
| </section> | </section> | |||
| <section anchor="sec_terminology" numbered="true" toc="default"> | <section anchor="sec_terminology" numbered="true" toc="default"> | |||
| <name>Terminology and Conventions</name> | <name>Terminology and Conventions</name> | |||
| <t> | <t> | |||
| The terminology defined in <xref target="RFC7665" format="default"/> is used extensively throughout this document, | The terminology defined in <xref target="RFC7665" format="default"/> is used extensively throughout this document, | |||
| and the reader is expected to be familiar with it. | and the reader is expected to be familiar with it. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| In this document, SFC OAM refers to an active OAM <xref target="RFC7799" f ormat="default"/> in an SFC architecture. | In this document, SFC OAM refers to an active OAM <xref target="RFC7799" f ormat="default"/> in an SFC architecture. | |||
| In this document, "Echo Request/Reply" and "SFC Echo Request/Reply" are us ed interchangeably. | Additionally, "Echo Request/Reply" and "SFC Echo Request/Reply" are used i nterchangeably. | |||
| </t> | </t> | |||
| <section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
| <name>Requirements Language</name> | <name>Requirements Language</name> | |||
| <t> | <t> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "MAY", and "OPTIONAL" in this document are to be interpreted as | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="R | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| FC8174" format="default"/> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| when, and only when, they appear in all capitals, as shown here. | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
| </t> | <xref target="RFC8174"/> when, and only when, they appear in all capitals, | |||
| as shown here. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
| <name>Acronyms</name> | <name>Acronyms</name> | |||
| <t>E2E: End-to-End</t> | <dl newline="false"> | |||
| <t>FM: Fault Management</t> | <dt>E2E:</dt> <dd>End-to-End</dd> | |||
| <t>NSH: Network Service Header</t> | <dt>FM:</dt> <dd>Fault Management</dd> | |||
| <t>OAM: Operations, Administration, and Maintenance</t> | <dt>MAC:</dt> <dd>Message Authentication Code</dd> | |||
| <t>RSP: Rendered Service Path</t> | <dt>NSH:</dt> <dd>Network Service Header</dd> | |||
| <t>SF: Service Function</t> | <dt>OAM:</dt> <dd>Operations, Administration, and Maintenance</dd> | |||
| <t>SFC: Service Function Chain</t> | <dt>RSP:</dt> <dd>Rendered Service Path</dd> | |||
| <t>SFF: Service Function Forwarder</t> | <dt>SF:</dt> <dd>Service Function</dd> | |||
| <t>SFI: Service Function Instance</t> | <dt>SFC:</dt> <dd>Service Function Chaining</dd> | |||
| <t>SFP: Service Function Path</t> | <dt>SFF:</dt> <dd>Service Function Forwarder</dd> | |||
| <t>MAC: Message Authentication Code</t> | <dt>SFI:</dt> <dd>Service Function Instance</dd> | |||
| <dt>SFP:</dt> <dd>Service Function Path</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="oam-req-sec" numbered="true" toc="default"> | <section anchor="oam-req-sec" numbered="true" toc="default"> | |||
| <name>Requirements for Active OAM in SFC</name> | <name>Requirements for Active OAM in SFC</name> | |||
| <t> | <t> | |||
| As discussed in <xref target="RFC8924" format="default"/>, SFC-specific mea ns are needed | As discussed in <xref target="RFC8924" format="default"/>, SFC-specific mea ns are needed | |||
| to perform the FM OAM task in an SFC architecture, including failure detect ion, defect | to perform the FM OAM task in an SFC architecture, including failure detect ion, defect | |||
| characterization, and localization. This document defines the set of requir ements | characterization, and localization. This document defines the set of requir ements | |||
| for active FM OAM mechanisms to be used in an SFC architecture. | for active FM OAM mechanisms to be used in an SFC architecture. | |||
| </t> | </t> | |||
| skipping to change at line 210 ¶ | skipping to change at line 209 ¶ | |||
| <name>Requirements for Active OAM in SFC</name> | <name>Requirements for Active OAM in SFC</name> | |||
| <t> | <t> | |||
| As discussed in <xref target="RFC8924" format="default"/>, SFC-specific mea ns are needed | As discussed in <xref target="RFC8924" format="default"/>, SFC-specific mea ns are needed | |||
| to perform the FM OAM task in an SFC architecture, including failure detect ion, defect | to perform the FM OAM task in an SFC architecture, including failure detect ion, defect | |||
| characterization, and localization. This document defines the set of requir ements | characterization, and localization. This document defines the set of requir ements | |||
| for active FM OAM mechanisms to be used in an SFC architecture. | for active FM OAM mechanisms to be used in an SFC architecture. | |||
| </t> | </t> | |||
| <figure anchor="fig1"> | <figure anchor="fig1"> | |||
| <name>An Example of SFC Data Plane Architecture</name> | <name>An Example of SFC Data Plane Architecture</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ | |||
| |SFI11| |SFI12| |SFI21| |SFI22| |SFI31| |SFI32| | |SFI11| |SFI12| |SFI21| |SFI22| |SFI31| |SFI32| | |||
| +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ | |||
| \ / \ / \ / | \ / \ / \ / | |||
| +----------+ +----+ +----+ +----+ | +----------+ +----+ +----+ +----+ | |||
| |Classifier|---|SFF1|---------|SFF2|----------|SFF3| | |Classifier|---|SFF1|---------|SFF2|----------|SFF3| | |||
| +----------+ +----+ +----+ +----+ | +----------+ +----+ +----+ +----+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| The architecture example depicted in <xref target="fig1" format="default"/> | The architecture example depicted in <xref target="fig1" format="default"/> | |||
| considers a service function chain that includes three distinct service func tions. | considers a service function chain that includes three distinct service func tions. | |||
| In this example, the SFP traverses SFF1, SFF2, and SFF3. Each SFF is connec ted to two | In this example, the SFP traverses SFF1, SFF2, and SFF3. Each SFF is connec ted to two | |||
| service function instances (SFIs) of the same service function. | Service Function Instances (SFIs) of the same SF. | |||
| End-to-end (E2E) SFC OAM has the Classifier as the ingress | End-to-End (E2E) SFC OAM has the Classifier as the ingress | |||
| and SFF3 as its egress. The scope of Segment SFC OAM is between two element s that are part of the same SFP. | and SFF3 as its egress. The scope of Segment SFC OAM is between two element s that are part of the same SFP. | |||
| Following are the requirements for an FM SFC OAM, whether with the E2E or s egment scope: | The following are the requirements for an FM SFC OAM, whether with the E2E or segment scope: | |||
| </t> | </t> | |||
| <dl newline="false" spacing="normal"> | <ol type="REQ%d:" group="reqs"> | |||
| <dt/> | <li>Packets of SFC active OAM <bcp14>SHOULD</bcp14> be fate sharing with the mon | |||
| <dd> | itored SFC data | |||
| REQ#1: Packets of active SFC OAM SHOULD be fate sharing with the monitored | in the forward direction from ingress toward egress endpoint(s) of t | |||
| SFC data | he OAM test. </li></ol> | |||
| in the forward direction from ingress toward egress endpoint(s) of t | ||||
| he OAM test. | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | <t> | |||
| The fate sharing, in the SFC environment, is achieved when a test packet tr averses the same path | The fate sharing, in the SFC environment, is achieved when a test packet tr averses the same path | |||
| and receives the same treatment in the underlay network layer as an SFC-enc apsulated packet. | and receives the same treatment in the underlay network layer as an SFC-enc apsulated packet. | |||
| </t> | </t> | |||
| <dl newline="false" spacing="normal"> | <ol type="REQ%d:" group="reqs"> | |||
| <dt/> | <li> SFC OAM <bcp14>MUST</bcp14> support monitoring of the continuity of the | |||
| <dd> | SFP between any of its elements. | |||
| REQ#2: SFC OAM MUST support monitoring of the continuity of the SFP betwee | </li></ol> | |||
| n any of its elements. | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | <t> | |||
| An SFC failure might be declared when several consecutive test packets are | An SFC failure might be declared when several consecutive test packets ar | |||
| not received within a pre-determined time. | e not received within a predetermined time. | |||
| For example, in the E2E FM SFC OAM case, the egress, SFF3 (<xref target="fi | For example, in the E2E FM SFC OAM case, i.e., the egress, SFF3 (<xref targ | |||
| g1" format="default"/>) | et="fig1" format="default"/>) | |||
| could be the entity that detects the SFP's failure by monitoring a flow | could be the entity that detects the SFP's failure by monitoring a flow | |||
| of periodic test packets. The ingress may be capable of recovering | of periodic test packets. The ingress may be capable of recovering | |||
| from the failure, e.g., using redundant SFC elements. Thus, it is beneficia l for the egress | from the failure, e.g., using redundant SFC elements. Thus, it is beneficia l for the egress | |||
| to signal the new defect state to the ingress, which in this example is the | to signal the new defect state to the ingress, which in this example, is th | |||
| Classifier. | e Classifier, | |||
| Hence the following requirement: | hence, the following requirement: | |||
| </t> | </t> | |||
| <dl newline="false" spacing="normal"> | <ol type="REQ%d:" group="reqs"> | |||
| <dt/> | <li> SFC OAM <bcp14>MUST</bcp14> support Remote Defect Indication notificati | |||
| <dd> | on by the egress to the ingress.</li> | |||
| REQ#3: SFC OAM MUST support Remote Defect Indication notification by the eg | ||||
| ress to the ingress. | <li> SFC OAM <bcp14>MUST</bcp14> support connectivity verification of the SF | |||
| </dd> | P. | |||
| <dt/> | The definitions of the misconnection defect, entry, and exit criteria are o | |||
| <dd> | utside the scope of this document. | |||
| REQ#4: SFC OAM MUST support connectivity verification of the SFP. | </li> | |||
| Definition of the misconnection defect, entry, and exit criteria are outsid | </ol> | |||
| e the scope of this document. | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | <t> | |||
| Once an SFF detects the defect, the objective of the SFC OAM changes from t he detection of a defect | Once an SFF detects the defect, the objective of the SFC OAM changes from t he detection of a defect | |||
| to defect characterization and localization. | to defect characterization and localization. | |||
| </t> | </t> | |||
| <dl newline="false" spacing="normal"> | <ol type="REQ%d:" group="reqs"> | |||
| <dt/> | <li> | |||
| <dd> | SFC OAM <bcp14>MUST</bcp14> support fault localization of the loss of conti | |||
| REQ#5: SFC OAM MUST support fault localization of the Loss of Continuity Ch | nuity check within an SFP. | |||
| eck within an SFP. | </li> | |||
| </dd> | <li> | |||
| <dt/> | SFC OAM <bcp14>MUST</bcp14> support an SFP tracing to discover the RSP. | |||
| <dd> | </li> | |||
| REQ#6: SFC OAM MUST support an SFP tracing to discover the RSP. | </ol> | |||
| </dd> | ||||
| </dl> | ||||
| <t> | <t> | |||
| In the example presented in <xref target="fig1" format="default"/>, two dis | In the example presented in <xref target="fig1" format="default"/>, two dis | |||
| tinct instances of the same service function share the same SFF. | tinct instances of the same SF share the same SFF. | |||
| In this example, the SFP can be realized over several RSPs that use differe | In this example, the SFP can be realized over several RSPs that use differe | |||
| nt instances of SF of the same type. | nt instances of the SF of the same type, | |||
| For instance, RSP1(SFI11--SFI21--SFI31) and RSP2(SFI12--SFI22--SFI32). | for instance, RSP1(SFI11--SFI21--SFI31) and RSP2(SFI12--SFI22--SFI32). | |||
| Available RSPs can be discovered using the trace function discussed in Sect | Available RSPs can be discovered using the trace function discussed in <xre | |||
| ion 4.3 of <xref target="RFC8924" format="default"/> | f target="RFC8924" section="4.3" sectionFormat="of" format="default"/> | |||
| or the procedure defined in <xref target="tracing-sfp"/>. | or the procedure defined in <xref target="tracing-sfp"/>. | |||
| </t> | </t> | |||
| <dl newline="false" spacing="normal"> | <ol type="REQ%d:" group="reqs"> | |||
| <dt/> | <li> | |||
| <dd> | SFC OAM <bcp14>MUST</bcp14> have the ability to discover and exercise all a | |||
| REQ#7: SFC OAM MUST have the ability to discover and exercise all available | vailable RSPs in the network. | |||
| RSPs in the network. | </li> | |||
| </dd> | </ol> | |||
| </dl> | ||||
| <t> | <t> | |||
| The SFC OAM layer model described in <xref target="RFC8924" format="default "/> | The SFC OAM layer model described in <xref target="RFC8924" format="default "/> | |||
| offers an approach for defect localization within a service function chain. | offers an approach for defect localization within a service function chain. | |||
| As the first step, the SFP's continuity for SFFs that are part of the same SFP could be verified. | As the first step, the SFP's continuity for SFFs that are part of the same SFP could be verified. | |||
| After the reachability of SFFs has already been verified, SFFs that serve a n SF may be used as a test packet source. | After the reachability of SFFs has already been verified, SFFs that serve a n SF may be used as a test packet source. | |||
| In such a case, SFF can act as a proxy for another element within the servi ce function chain. | In such a case, an SFF can act as a proxy for another element within the se rvice function chain. | |||
| </t> | </t> | |||
| <dl newline="false" spacing="normal"> | <ol type="REQ%d:" group="reqs"> | |||
| <dt/> | <li> | |||
| <dd> | SFC OAM <bcp14>MUST</bcp14> be able to trigger on-demand FM remotely with | |||
| REQ#8: SFC OAM MUST be able to trigger on-demand FM remotely with | ||||
| responses being directed toward the initiator of the remote request. | responses being directed toward the initiator of the remote request. | |||
| </dd> | </li> | |||
| </dl> | </ol> | |||
| <t>The conformance of the SFC Echo Request/Reply mechanism to these requir | <t>The conformance of the SFC Echo Request/Reply mechanism to these requir | |||
| ements reflected below:</t> | ements is reflected below:</t> | |||
| <ul> | ||||
| <li>REQ#1: Fate sharing via SFC Echo Request/Reply defined in <xref target | <ol type="REQ%d:"> | |||
| ="sfc-echo-request-reply"/>.</li> | <li>Fate sharing via the SFC Echo Request/Reply defined in <xref target="s | |||
| <li>REQ#2: Continuity monitoring via SFF traceroute defined in Tracing an | fc-echo-request-reply"/>.</li> | |||
| SFP <xref target="tracing-sfp"/>.</li> | <li>Continuity monitoring via the SFP tracing defined in <xref target="tra | |||
| <li>REQ#3: Remote defect detection via SFC Echo Request/Reply defined in < | cing-sfp"/>.</li> | |||
| xref target="sfc-echo-request-reply"/>.</li> | <li>Remote defect detection via the SFC Echo Request/Reply defined in <xre | |||
| <li>REQ#4: Connectivity verification via SFF traceroute <xref target="trac | f target="sfc-echo-request-reply"/>.</li> | |||
| ing-sfp"/>.</li> | <li>Connectivity verification via the SFP tracing defined in <xref target= | |||
| <li>REQ#5: Fault localization via Verification of the SFP consistency <xre | "tracing-sfp"/>.</li> | |||
| f target="sf-consist-seq"/>.</li> | <li>Fault localization via verification of the SFP consistency defined in | |||
| <li>REQ#6: SFP tracing via Tracing an SFP in <xref target="tracing-sfp"/> | <xref target="sf-consist-seq"/>.</li> | |||
| and Verification of SFP consistency <xref target="sf-consist-seq"/>.</li> | <li>SFP tracing as described in <xref target="tracing-sfp"/> and verificat | |||
| <li>REQ#7: Discover and exercise available RSPs via Trace <xref target="tr | ion of SFP consistency as defined in <xref target="sf-consist-seq"/>.</li> | |||
| acing-sfp"/>.</li> | <li>Discover and exercise available RSPs via trace defined in <xref target | |||
| <li>REQ#8: Can be addressed by adding the proxying capability to the SFC E | ="tracing-sfp"/>.</li> | |||
| cho Request/Reply described in this document. | <li>Can be addressed by adding the proxying capability to the SFC Echo Req | |||
| uest/Reply described in this document. | ||||
| <xref target="RFC7555"/> describes an example of a proxy function for an E cho Request. | <xref target="RFC7555"/> describes an example of a proxy function for an E cho Request. | |||
| Specification of proxy function for SFC Echo Request is outside the scope | Specification of a proxy function for SFC Echo Request is outside the scop | |||
| of this document.</li> | e of this document.</li> | |||
| </ul> | </ol> | |||
| </section> | </section> | |||
| <section anchor="sfc-active-oam-def" numbered="true" toc="default"> | <section anchor="sfc-active-oam-def" numbered="true" toc="default"> | |||
| <name>Active OAM Identification in the NSH</name> | <name>Active OAM Identification in the NSH</name> | |||
| <t> | <t> | |||
| Active SFC OAM combines OAM commands and/or data included in a message tha | SFC active OAM combines OAM commands and/or data included in a message tha | |||
| t immediately follows the NSH. | t immediately follows the NSH. | |||
| To identify the active SFC OAM message, the "Next Protocol" field MUST be | To identify the SFC active OAM message, the Next Protocol field <bcp14>MUS | |||
| set to Active SFC OAM (TBA1) | T</bcp14> be set to SFC Active OAM (0x07) | |||
| (<xref target="iana-sfc-oam-protocol" format="default"/>). The O bit in th | (<xref target="iana-sfc-oam-protocol" format="default"/>). The O bit in th | |||
| e NSH MUST be set, according to <xref target="I-D.ietf-sfc-oam-packet"/>. | e NSH <bcp14>MUST</bcp14> be set, according to <xref target="RFC9451"/>. | |||
| A case when the O bit is clear and the "Next Protocol" field value is set | A case when the O bit is clear and the Next Protocol field value is set t | |||
| to Active SFC OAM (TBA1) is considered an erroneous combination. | o SFC Active OAM (0x07) is considered an erroneous combination. | |||
| An implementation MUST report it. Although the notification mechanism is | An implementation <bcp14>MUST</bcp14> report it. Although the notificatio | |||
| outside the scope of this specification, note that it MUST include rate-limiting | n mechanism is outside the scope of this specification, note that it <bcp14>MUST | |||
| control. | </bcp14> include rate-limiting control. | |||
| The packet SHOULD be dropped. An implementation MAY have control to | The packet <bcp14>SHOULD</bcp14> be dropped. An implementation <bcp1 | |||
| enable the processing of the OAM payload. | 4>MAY</bcp14> have control to enable the processing of the OAM payload. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="sfc-sfc-active-oam-hdr" numbered="true" toc="default"> | <section anchor="sfc-sfc-active-oam-hdr" numbered="true" toc="default"> | |||
| <name>Active SFC OAM Header</name> | <name>SFC Active OAM Header</name> | |||
| <t> | <t> | |||
| SFC OAM is required to perform multiple tasks. Several active OAM protocol s could be used to address all the requirements. | SFC OAM is required to perform multiple tasks. Several active OAM protocol s could be used to address all the requirements. | |||
| When IP/UDP encapsulation of an SFC OAM control message is used, | When IP/UDP encapsulation of an SFC OAM control message is used, | |||
| protocols can be demultiplexed using the destination UDP port number. But a n extra IP/UDP header, especially | protocols can be demultiplexed using the destination UDP port number. But a n extra IP/UDP header, especially | |||
| in an IPv6 network, adds overhead compared to the length of an active OAM control packet | in an IPv6 network, adds overhead compared to the length of an Active OAM Control Packet | |||
| (e.g., BFD Control packet <xref target="RFC5880"/>). In some environments, for example, when measuring performance metrics, | (e.g., BFD Control packet <xref target="RFC5880"/>). In some environments, for example, when measuring performance metrics, | |||
| it is beneficial to transmit OAM packets in a broad range of lengths to em ulate application traffic closer. | it is beneficial to transmit OAM packets in a broad range of lengths to em ulate application traffic closer. | |||
| This document defines an Active OAM Header (<xref target="sfc-oam-header-p ic" format="default"/>) | This document defines an Active OAM Header (<xref target="sfc-oam-header-p ic" format="default"/>) | |||
| to demultiplex active OAM protocols on an SFC. | to demultiplex active OAM protocols on SFC. | |||
| </t> | </t> | |||
| <figure anchor="sfc-oam-header-pic"> | <figure anchor="sfc-oam-header-pic"> | |||
| <name>SFC Active OAM Header</name> | <name>SFC Active OAM Header</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | V | Msg Type | Reserved | Length | | | V | Msg Type | Reserved | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ~ SFC Active OAM Control Packet ~ | ~ SFC Active OAM Control Packet ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>V - a four-bit field indicates the current version of the SFC active | <dt>V -</dt> <dd>a four-bit field that indicates the current version of | |||
| OAM header. The current value is 0. | the SFC Active OAM Header. The current value is 0. | |||
| The version number is to | The version number is to | |||
| be incremented whenever a change is made that affects the ability of | be incremented whenever a change is made that affects the ability of | |||
| an implementation to parse or process the SFC Active OAM Header correctly. | an implementation to parse or process the SFC Active OAM Header correctly, | |||
| For example, if syntactic or semantic changes are made to any of the fixed fi | for example, if syntactic or semantic changes are made to any of the fixed fi | |||
| elds.</li> | elds.</dd> | |||
| <li>Msg Type - a six-bit field identifies OAM protocol, e.g., Echo Reque | <dt>Msg Type -</dt> <dd>a six-bit field that identifies the OAM protocol, e.g | |||
| st/Reply.</li> | ., the Echo Request/Reply.</dd> | |||
| <!-- | <dt>Reserved -</dt> <dd>a six-bit field. It <bcp14>MUST</bcp14> be zeroed on tra | |||
| <li>Flags - eight bits long field carries bit flags that define optional | nsmission and ignored on receipt.</dd> | |||
| capability and thus processing of the | <dt>Length -</dt> <dd>a two-octet field that is the length of the SFC Ac | |||
| SFC active OAM control packet, e.g., optional timestamping. No flags are defined | tive OAM Control Packet in octets.</dd> | |||
| in this document, and | </dl> | |||
| therefore, the bit flags MUST be zeroed on transmission and ignored on receipt.< | ||||
| /li> | ||||
| <li>Reserved - an six-bit field. It MUST be zeroed on transmission and ignored o | ||||
| n receipt.</li> | ||||
| <li>Length - a two-octet field that is the length of the SFC active OAM | ||||
| control packet in octets.</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="sfc-echo-request-reply" numbered="true" toc="default"> | <section anchor="sfc-echo-request-reply" numbered="true" toc="default"> | |||
| <name>Echo Request/Echo Reply for SFC</name> | <name>Echo Request/Reply for SFC</name> | |||
| <t> | <t> | |||
| Echo Request/Reply is a well-known active OAM mechanism | The Echo Request/Reply is a well-known active OAM mechanism | |||
| extensively used to verify a path's continuity, detect inconsistencies betwee n a state in control | extensively used to verify a path's continuity, detect inconsistencies betwee n a state in control | |||
| and the data planes, and localize defects in the data plane. ICMP (<xref targ et="RFC0792" format="default"/> for IPv4 | and the data planes, and localize defects in the data plane. ICMP (<xref targ et="RFC0792" format="default"/> for IPv4 | |||
| and <xref target="RFC4443" format="default"/> for IPv6 networks) and <xref ta rget="RFC8029" format="default"/> are examples | and <xref target="RFC4443" format="default"/> for IPv6 networks) and MPLS <xr ef target="RFC8029" format="default"/> are examples | |||
| of broadly used active OAM protocols based on the Echo Request/Reply principl e. | of broadly used active OAM protocols based on the Echo Request/Reply principl e. | |||
| The SFC Echo Request/Reply control message (format is presented in <xref targ et="sfc-ping-pic"/>) | The SFC Echo Request/Reply control message (format is presented in <xref targ et="sfc-ping-pic"/>) | |||
| is an instance of the SFC Active OAM Control Packet that is a part of the SFC Active OAM Header (<xref target="sfc-oam-header-pic"/>). | is an instance of the SFC Active OAM Control Packet that is a part of the SFC Active OAM Header (<xref target="sfc-oam-header-pic"/>). | |||
| </t> | </t> | |||
| <figure anchor="sfc-ping-pic"> | <figure anchor="sfc-ping-pic"> | |||
| <name>SFC Echo Request/Reply Format</name> | <name>SFC Echo Request/Reply Format</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Echo Request Flags | Reserved | | | Echo Request Flags | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Echo Type | Reply mode | Return Code |Return Subcode | | | Echo Type | Reply Mode | Return Code |Return Subcode | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sender's Handle | | | Sender's Handle | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sequence Number | | | Sequence Number | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ~ TLVs ~ | ~ TLVs ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| The interpretation of the fields is as follows: | The interpretation of the fields is as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <!-- | <dt>Echo Request Flags -</dt> <dd>a two-octet bit vector field. <xref | |||
| <li> | target="iana-echo-ping-global-flags"/> requests IANA to create | |||
| Version (V) is a four-bit field that indicates the current version of the SFC E | a new registry for flags. This specification defines all flags for futur | |||
| cho Request/Reply. The current value is 0. | e use. Flags <bcp14>MUST</bcp14> be zeroed on transmission and ignored on receip | |||
| The version number is to | t.</dd> | |||
| be incremented whenever a change is made that affects the ability of | <dt>Reserved -</dt> <dd>a two-octet field. It <bcp14>MUST</bcp14> be zer | |||
| an implementation to parse or process the control packet correctly. | oed on transmission and ignored on receipt.</dd> | |||
| If a packet presumed to carry an SFC Echo Request/Reply is received at an SF | <dt>Echo Type -</dt> <dd>a one-octet field that reflects the packet type | |||
| F, and | . SFC Echo Request/Reply Echo Types, | |||
| the SFF does not understand the Version field value, the packet MUST be di | defined in this document, are listed in <xref target="iana-sfc-echo-mess | |||
| scarded, and | age-type"/>.</dd> | |||
| the event SHOULD be logged. Versioning of SFC Echo Request/Reply | <dt>Reply Mode -</dt> <dd>a one-octet field. It defines the type of the | |||
| is independent of the versioning of the SFC Active OAM Header (<xref targe | return path requested by the sender of the Echo Request. </dd> | |||
| t="sfc-sfc-active-oam-hdr"/>). For example, | <dt>Return Code and Return Subcode -</dt> <dd>one-octet fields each. The | |||
| if a new SFC Active OAM Header format with V = 1 is defined, an SFC Echo R | se can be used | |||
| equest/Reply packet | ||||
| with V = 0 MUST be handled as described in this document. | ||||
| </li> | ||||
| --> | ||||
| <li>The Echo Request Flags is a two-octet bit vector field. <xref targ | ||||
| et="iana-echo-ping-global-flags"/> requests IANA to create | ||||
| a new registry for flags. This specification defines all flags for futur | ||||
| e use. Flags MUST be zeroed on transmission and ignored on receipt.</li> | ||||
| <li>Reserved is a two-octet field. It MUST be zeroed on transmission and | ||||
| ignored on receipt.</li> | ||||
| <li>The Echo Type is a one-octet field that reflects the packet type. SF | ||||
| C Echo Request/Echo Reply Echo Types, | ||||
| defined in this document, are listed in <xref target="iana-sfc-echo-mess | ||||
| age-type"/>.</li> | ||||
| <li>The Reply Mode is a one-octet field. It defines the type of the retu | ||||
| rn path requested by the sender of the Echo Request. </li> | ||||
| <li>Return Codes and Subcodes are one-octet fields each. These can be us | ||||
| ed | ||||
| to inform the sender about the result of processing its request. | to inform the sender about the result of processing its request. | |||
| For all Return Code values defined in this document (<xref target="iana-sfc-pi ng-return-codes"/>), | For all Return Code values defined in this document (<xref target="iana-sfc-pi ng-return-codes"/>), | |||
| the value of the Return Subcode field MUST be set to zero.</li> | the value of the Return Subcode field <bcp14>MUST</bcp14> be set to zero.</dd> | |||
| <li>The Sender's Handle is a four-octet field. It MUST be filled in by t | <dt>Sender's Handle -</dt> <dd>a four-octet field. It <bcp14>MUST</bcp14 | |||
| he sender of the Echo Request | > be filled in by the sender of the Echo Request | |||
| and returned unchanged by the Echo Reply sender (if a reply is being sent). Th | and returned unchanged by the Echo Reply sender (if a reply is being sent). Th | |||
| e sender of the Echo Request SHOULD use | e sender of the Echo Request <bcp14>SHOULD</bcp14> use | |||
| a pseudo-random number generator <xref target="RFC4086"/> to set the value of t | a pseudorandom number generator <xref target="RFC4086"/> to set the value of th | |||
| he Sender's Handle field. | e Sender's Handle field. | |||
| In some use cases, an implementation MAY use the Sender's Handle for proprietar | In some use cases, an implementation <bcp14>MAY</bcp14> use the Sender's Handle | |||
| y signaling as long as the system | for proprietary signaling as long as the system | |||
| that receives SFC Echo Request doesn't alter the value of the Sender's Handle f | that receives the SFC Echo Request doesn't alter the value of the Sender's Hand | |||
| ield but copies it into SFC Echo Reply.</li> | le field but copies it into the SFC Echo Reply.</dd> | |||
| <li> | <dt> | |||
| The Sequence Number is a four-octet field, and it is assigned by the sender an | Sequence Number -</dt> <dd>a four-octet field. It is assigned by the sender an | |||
| d can be, for example, used to detect missed replies. | d can be, for example, used to detect missed replies. | |||
| The initial Sequence Number contains an unsigned integer that wraps around. It | The initial Sequence Number contains an unsigned integer that wraps around. It | |||
| MUST be pseudo-randomly generated <xref target="RFC4086"/> | <bcp14>MUST</bcp14> be pseudorandomly generated <xref target="RFC4086"/> | |||
| and then SHOULD be monotonically increasing in the course of the test session. | and then <bcp14>SHOULD</bcp14> be monotonically increasing in the course of th | |||
| If a reply is sent, the sender of the SFC Echo Reply message MUST copy the valu | e test session. If a reply is sent, the sender of the SFC Echo Reply message <bc | |||
| e from the received | p14>MUST</bcp14> copy the value from the received | |||
| SFC Echo Request. | SFC Echo Request. | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| <t> | <t> | |||
| TLV is a variable-length construct whose length is multiple of four-oc | TLV is a variable-length construct whose length is multiple four-octet | |||
| tet words. Multiple TLVs MAY be placed in an | words. Multiple TLVs <bcp14>MAY</bcp14> be placed in an | |||
| SFC Echo Request/Reply packet. None, one or more sub-TLVs may be enclosed | SFC Echo Request/Reply packet. None, one, or more sub-TLVs may be enclosed | |||
| in the value part of a TLV, subject to the semantics of the (outer) TLV. If n o TLVs are included in an SFC Echo Request/Reply, | in the value part of a TLV, subject to the semantics of the (outer) TLV. If n o TLVs are included in an SFC Echo Request/Reply, | |||
| the value of the Length field in the SFC Active OAM Header MUST be 16 octets. | the value of the Length field in the SFC Active OAM Header <bcp14>MUST</bcp14 | |||
| <xref target="sfc-tlv-fig" format="default"/> presents the format of an SFC E | > be 16 octets. | |||
| cho Request/Reply TLV, where fields are defined as follows: | <xref target="sfc-tlv-fig" format="default"/> presents the format of an SFC E | |||
| cho Request/Reply TLV, where the fields are defined as follows: | ||||
| </t> | </t> | |||
| <figure anchor="sfc-tlv-fig"> | <figure anchor="sfc-tlv-fig"> | |||
| <name>SFC Echo Request/Reply TLV Format</name> | <name>SFC Echo Request/Reply TLV Format</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Reserved | Length | | | Type | Reserved | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ~ Value ~ | ~ Value ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li> | <dt> | |||
| Type - a one-octet field that characterizes the interpretation of the Value fiel | Type -</dt> <dd>a one-octet field that characterizes the interpretation of the V | |||
| d. | alue field. | |||
| <!-- The value of the Type field determines its interpretation and encoding. --> | ||||
| Type values are allocated according to <xref target="iana-sfc-active-oam-tlv" format="default"/>. | Type values are allocated according to <xref target="iana-sfc-active-oam-tlv" format="default"/>. | |||
| </li> | </dd> | |||
| <li>Reserved - a one-octet field. The field MUST be zeroed on transmissi | <dt>Reserved -</dt> <dd>a one-octet field. The field <bcp14>MUST</bcp14> | |||
| on and ignored on receipt.</li> | be zeroed on transmission and ignored on receipt.</dd> | |||
| <li> | <dt> | |||
| Length - a two-octet field equal to the Value field's length in octets as an uns | Length -</dt> <dd>a two-octet field equal to the Value field's length in octets | |||
| igned integer. | as an unsigned integer. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| Value - a variable-length field. The value of the Type field determines its inte | Value -</dt> <dd>a variable-length field. The value of the Type field determines | |||
| rpretation and encoding. | its interpretation and encoding. | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| <section anchor="return-codes-sec" numbered="true" toc="default"> | <section anchor="return-codes-sec" numbered="true" toc="default"> | |||
| <name>Return Codes</name> | <name>Return Codes</name> | |||
| <t> | <t> | |||
| The value of the Return Code field MUST be set to zero by the sender of an Ec | The value of the Return Code field <bcp14>MUST</bcp14> be set to zero by the | |||
| ho Request. The | sender of an Echo Request. The | |||
| receiver of said Echo Request MUST set it to one of the values | receiver of said Echo Request <bcp14>MUST</bcp14> set it to one of the values | |||
| in IANA's SFC Echo Return Codes sub-registry (<xref target="iana-sfc-ping-ret | in IANA's "SFC Echo Return Codes" registry (<xref target="iana-sfc-ping-retur | |||
| urn-codes"/>) | n-codes"/>) | |||
| in the corresponding Echo Reply that it generates. | in the corresponding Echo Reply that it generates. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="authen-sec" numbered="true" toc="default"> | <section anchor="authen-sec" numbered="true" toc="default"> | |||
| <name>Authentication in Echo Request/Reply</name> | <name>Authentication in Echo Request/Reply</name> | |||
| <t> | <t> | |||
| Authentication can be used to protect the integrity of the information in SFC Ec | Authentication can be used to protect the integrity of the information in the SF | |||
| ho Request and/or Echo Reply. | C Echo Request and/or Echo Reply. | |||
| In the <xref target="RFC9145" format="default"/> a variable-length Context Heade | In <xref target="RFC9145" format="default"/>, a variable-length Context Header h | |||
| r has been defined to protect the integrity | as been defined to protect the integrity | |||
| of the NSH and the payload. The header can also be used for the optional encrypt ion of sensitive metadata. | of the NSH and the payload. The header can also be used for the optional encrypt ion of sensitive metadata. | |||
| MAC#1 (Message Authentication Code) Context Header is more suitable for the inte | The MAC#1 Context Header is more suitable for the integrity protection of SFC ac | |||
| grity protection of active SFC OAM, | tive OAM, | |||
| particularly of the SFC Echo Request and Echo Reply, defined in this document. O | particularly of the SFC Echo Request and Echo Reply, as defined in this document | |||
| n the other hand, using MAC#2 Context Header allows the detection | . On the other hand, using the MAC#2 Context Header allows the detection | |||
| of mishandling of the O-bit by a transient SFC element. | of mishandling of the O bit by a transient SFC element. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="echo-request-send" numbered="true" toc="default"> | <section anchor="echo-request-send" numbered="true" toc="default"> | |||
| <name>SFC Echo Request Transmission</name> | <name>SFC Echo Request Transmission</name> | |||
| <t> | <t> | |||
| SFC Echo Request control packet MUST use the appropriate underlay network encaps | The SFC Echo Request control packet <bcp14>MUST</bcp14> use the appropriate unde | |||
| ulation of the monitored | rlay network encapsulation of the monitored | |||
| SFP. Echo Request MUST set O bit in the NSH, as defined in <xref target="I-D.iet | SFP. The Echo Request <bcp14>MUST</bcp14> set the O bit in the NSH, as defined i | |||
| f-sfc-oam-packet" format="default"/>. | n <xref target="RFC9451" format="default"/>. | |||
| NSH MUST be immediately followed by the SFC Active OAM Header defined in <xref | The NSH <bcp14>MUST</bcp14> be immediately followed by the SFC Active OAM Header | |||
| target="sfc-active-oam-def" format="default"/>. The Echo Type field's value | defined in <xref target="sfc-active-oam-def" format="default"/>. | |||
| in the SFC Active OAM Header MUST be set to SFC Echo Request/Echo Reply value (1 | The Echo Type field's value in the SFC Active OAM Header <bcp14>MUST</bcp14> be | |||
| ) per <xref target="iana-sfc-oam-msg-type" format="default"/>. | set to the SFC Echo Request/Reply value (1), per <xref target="iana-sfc-oam-msg- | |||
| type" format="default"/>. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Value of the Reply Mode field MUST be set to one of the following: | The value of the Reply Mode field <bcp14>MUST</bcp14> be set to one of the follo | |||
| </t> | wing: | |||
| <ul spacing="normal"> | </t> | |||
| <li> | <dl newline="false" spacing="normal"> | |||
| Do Not Reply (1) if one-way monitoring is desired. If the Echo Request is used t | <dt> | |||
| o measure synthetic packet loss, | Do Not Reply (1) -</dt> <dd>This is the value if one-way monitoring is desired. | |||
| If the Echo Request is used to measure synthetic packet loss, | ||||
| the receiver may report loss measurement results to a remote node. Ways of learn ing the identity of that node are | the receiver may report loss measurement results to a remote node. Ways of learn ing the identity of that node are | |||
| outside the scope of this specification. | outside the scope of this specification. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| Reply via an IPv4/IPv6 UDP Packet (2). If an SFC Echo Request is not encapsulate | Reply via an IPv4/IPv6 UDP Packet (2) -</dt> <dd>If an SFC Echo Request is not e | |||
| d in IP/UDP, | ncapsulated in IP/UDP, | |||
| then this value requests the use of the Source ID TLV (<xref target="source-tlv- | then this value requests the use of the Source ID TLV <xref target="source-tlv-s | |||
| sec"/>). | ec"/>). | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| Reply via Specified Path (4). This value requests the use of the particular | Reply via Specified Path (4) -</dt> <dd>This value requests the use of the parti | |||
| return path specified in the included TLV to verify bi-directional continuity an | cular | |||
| d | return path specified in the included TLV to verify bidirectional continuity and | |||
| may also increase the robustness of the monitoring by selecting a more stable pa th. | may also increase the robustness of the monitoring by selecting a more stable pa th. | |||
| <xref target="sfc-reply-tlv-sec"/> provides an example of communicating an expli cit path for the Echo Reply. | <xref target="sfc-reply-tlv-sec"/> provides an example of communicating an expli cit path for the Echo Reply. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| Reply via an IPv4/IPv6 UDP Packet with the data integrity protection (5). This v | Reply via an IPv4/IPv6 UDP Packet with the data integrity protection (5) -</dt> | |||
| alue requests the use of the MAC Context Header <xref target="RFC9145"/>. | <dd>This value requests the use of the MAC Context Header <xref target="RFC9145" | |||
| </li> | />. | |||
| <li> | </dd> | |||
| Reply via Specified Path with the the data integrity protection (7). This value | <dt> | |||
| requests the use of the MAC Context Header <xref target="RFC9145"/>. | Reply via Specified Path with the data integrity protection (7) -</dt> <dd>This | |||
| </li> | value requests the use of the MAC Context Header <xref target="RFC9145"/>. | |||
| </ul> | </dd> | |||
| </dl> | ||||
| <section anchor="source-tlv-sec" numbered="true" toc="default"> | <section anchor="source-tlv-sec" numbered="true" toc="default"> | |||
| <name>Source ID TLV</name> | <name>Source ID TLV</name> | |||
| <t> | <t> | |||
| The responder to the SFC Echo Request encapsulates the SFC Echo Reply messa ge in IP/UDP packet if the Reply mode is | The responder to the SFC Echo Request encapsulates the SFC Echo Reply messa ge in the IP/UDP packet if the Reply Mode is | |||
| "Reply via an IPv4/IPv6 UDP Packet" or "Reply via an IPv4/IPv6 UDP Packet w ith the data integrity protection". | "Reply via an IPv4/IPv6 UDP Packet" or "Reply via an IPv4/IPv6 UDP Packet w ith the data integrity protection". | |||
| Because the NSH does not identify the ingress node that generated | Because the NSH does not identify the ingress node that generated | |||
| the Echo Request, information that sufficiently identifies the source MUST be included in the message so that | the Echo Request, information that sufficiently identifies the source <bcp1 4>MUST</bcp14> be included in the message so that | |||
| the IP destination address and destination UDP port number for IP/UDP encaps ulation of the SFC Echo Reply could be derived. | the IP destination address and destination UDP port number for IP/UDP encaps ulation of the SFC Echo Reply could be derived. | |||
| The sender of the SFC Echo Request MUST include the Source ID TLV (<xref ta rget="sfc-source-tlv-fig" format="default"/>). | The sender of the SFC Echo Request <bcp14>MUST</bcp14> include the Source I D TLV (<xref target="sfc-source-tlv-fig" format="default"/>). | |||
| </t> | </t> | |||
| <figure anchor="sfc-source-tlv-fig"> | <figure anchor="sfc-source-tlv-fig"> | |||
| <name>SFC Source ID TLV</name> | <name>SFC Source ID TLV</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Source ID | Reserved1 | Length | | | Source ID | Reserved1 | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Port Number | Reserved2 | | | Port Number | Reserved2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ~ IP Address ~ | ~ IP Address ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| </figure> | </figure> | |||
| <t> | <t> | |||
| where | The fields are defined as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li> | <dt> | |||
| Source ID - the value MUST be set to 1 (<xref target="iana-sfc-active-oa | Source ID -</dt> <dd>the value <bcp14>MUST</bcp14> be set to 1 (<xref ta | |||
| m-tlv" format="default"/>). | rget="iana-sfc-active-oam-tlv" format="default"/>). | |||
| </li> | </dd> | |||
| <li>Reserved1 - a one-octet field. The field MUST be zeroed on transmi | <dt>Reserved1 -</dt> <dd>a one-octet field. The field <bcp14>MUST</bcp | |||
| ssion and ignored on receipt.</li> | 14> be zeroed on transmission and ignored on receipt.</dd> | |||
| <li> | <dt> | |||
| Length - the value equals the length of the data following the Length fi | Length -</dt> <dd>the value equals the length of the data following the | |||
| eld counted in octets. | Length field counted in octets. | |||
| The value of the Length field can be 8 or 20. If the value of the field is neither, the Source ID TLV is considered to be malformed. | The value of the Length field can be 8 or 20. If the value of the field is neither, the Source ID TLV is considered to be malformed. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| Port Number is a two-octet field. It contains the UDP port number of the | Port Number -</dt> <dd>a two-octet field. It contains the UDP port numbe | |||
| sender of the SFC OAM control message. | r of the sender of the SFC OAM control message. | |||
| The value of the field MUST be used as the destination UDP port number | The value of the field <bcp14>MUST</bcp14> be used as the destination UD | |||
| P port number | ||||
| in the IP/UDP encapsulation of the SFC Echo Reply message. | in the IP/UDP encapsulation of the SFC Echo Reply message. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| Reserved2 is a two-octet field. The field MUST be zeroed on transmit and | Reserved2 -</dt> <dd>a two-octet field. The field <bcp14>MUST</bcp14> be | |||
| ignored on receipt. | zeroed on transmit and ignored on receipt. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| IP Address field contains the IP address of the sender of the SFC OAM co | IP Address -</dt> <dd>a field that contains the IP address of the sender | |||
| ntrol message, IPv4 or IPv6. | of the SFC OAM control message, i.e., IPv4 or IPv6. | |||
| The value of the field MUST be used as the destination IP address | The value of the field <bcp14>MUST</bcp14> be used as the destination IP | |||
| address | ||||
| in the IP/UDP encapsulation of the SFC Echo Reply message. | in the IP/UDP encapsulation of the SFC Echo Reply message. | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| <t> | <t> | |||
| A single Source ID TLV for each address family, i.e., IPv4 and IPv6, MAY be present in an SFC Echo Request message. | A single Source ID TLV for each address family, i.e., IPv4 and IPv6, <bc p14>MAY</bcp14> be present in an SFC Echo Request message. | |||
| If the Source ID TLVs for both address families are present in an SFC Ec ho Request message, | If the Source ID TLVs for both address families are present in an SFC Ec ho Request message, | |||
| the SFF MUST NOT replicate an SFC Echo Reply | the SFF <bcp14>MUST NOT</bcp14> replicate an SFC Echo Reply | |||
| but choose the destination IP address for the one SFC Echo Reply it send s based on the local policy. | but choose the destination IP address for the one SFC Echo Reply it send s based on the local policy. | |||
| The source IP address used in the IP/UDP encapsulation of SFC Echo Reply | The source IP address used in the IP/UDP encapsulation of the SFC Echo R | |||
| is one of the IP addresses associated with the responder. | eply is one of the IP addresses associated with the responder. | |||
| The value of the Port Number field MUST be used as the destination UDP po | The value of the Port Number field <bcp14>MUST</bcp14> be used as the des | |||
| rt number | tination UDP port number | |||
| in the IP/UDP encapsulation of the SFC Echo Reply message. The responder selects | in the IP/UDP encapsulation of the SFC Echo Reply message. The responder selects | |||
| the source UDP port number from the dynamic range of port numbers. | the source UDP port number from the dynamic range of port numbers. | |||
| If more than one Source ID TLV per the address family is present, the re ceiver MUST use the first TLV and ignore the rest. | If more than one Source ID TLV per the address family is present, the re ceiver <bcp14>MUST</bcp14> use the first TLV and ignore the rest. | |||
| The Echo Reply message, including relevant TLVs, follows the IP/UDP head ers immediately. | The Echo Reply message, including relevant TLVs, follows the IP/UDP head ers immediately. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="echo-request-recieve" numbered="true" toc="default"> | <section anchor="echo-request-recieve" numbered="true" toc="default"> | |||
| <name>Processing Received SFC Echo Request</name> | <name>Processing a Received SFC Echo Request</name> | |||
| <t> | <t> | |||
| Punting a received SFC Echo Request to the control plane for validation and p rocessing is triggered by one | Punting a received SFC Echo Request to the control plane for validation and p rocessing is triggered by one | |||
| of the following packet processing exceptions: | of the following packet processing exceptions: | |||
| NSH TTL expiration, NSH Service Index (SI) expiration, or the receiver is the terminal SFF for an SFP. | NSH TTL expiration, NSH Service Index expiration, or the receiver is the term inal SFF for an SFP. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An SFF that received the SFC Echo Request MUST validate the packet as fo llows: | An SFF that received the SFC Echo Request <bcp14>MUST</bcp14> validate t he packet as follows: | |||
| </t> | </t> | |||
| <ul spacing="normal" empty="true"> | <ol spacing="normal" type="1"> | |||
| <li>1. If the SFC Echo Request is integrity-protected, the receiving SFF | <li><t>If the SFC Echo Request is integrity protected, the receiving SFF | |||
| first MUST verify the authentication.</li> | first <bcp14>MUST</bcp14> verify the authentication.</t> | |||
| <li>1.1 Suppose the authentication validation has failed and the | <t>1.1. Suppose the authentication validation has failed and the | |||
| Source ID TLV is considered properly formatted. | Source ID TLV is considered properly formatted. | |||
| In that case, the SFF MUST send to the system identified in the Source I | In that case, the SFF <bcp14>MUST</bcp14> send an SFC Echo Reply with th | |||
| D TLV (see <xref target="echo-reply-send"/>), | e Return Code | |||
| according to a rate-limit control mechanism, an SFC Echo Reply with the | set to 3 ("Authentication failed") and the Subcode set to zero to the sy | |||
| Return Code | stem identified in the Source ID TLV (see <xref target="echo-reply-send"/>), | |||
| set to "Authentication failed" and the Subcode set to zero.</li> | according to a rate-limit control mechanism.</t> | |||
| <li>1.2 If the authentication is validated successfully, the SFF | <t>1.2. If the authentication is validated successfully, the SFF | |||
| that has received | that has received | |||
| an SFC Echo Request verifies the rest of the packet's general sanity.</l | an SFC Echo Request verifies the rest of the packet's general consistenc | |||
| i> | y.</t></li> | |||
| <li>2. Validate the Source ID TLV, as defined in <xref target="source-tl | <li><t>Validate the Source ID TLV, as defined in <xref target="source-tl | |||
| v-sec"/>.</li> | v-sec"/>.</t> | |||
| <li>2.1 If the Source ID TLV is determined malformed, the received SFC E | <t>2.1. If the Source ID TLV is determined to be malformed, the received | |||
| cho Request processing is stopped, | SFC Echo Request processing is stopped, | |||
| the message is dropped, and the event SHOULD be logged, according to a r | the message is dropped, and the event <bcp14>SHOULD</bcp14> be logged, a | |||
| ate-limiting control for logging.</li> | ccording to a rate-limiting control for logging.</t></li> | |||
| <li>3. Sender's Handle and Sequence Number fields are not examined but a | <li>The Sender's Handle and Sequence Number fields are not examined but | |||
| re copied in the SFC Echo Reply message.</li> | are copied in the SFC Echo Reply message.</li> | |||
| <li>4. If the packet is not well-formed, i.e., not formed according to t | <li>If the packet is not well formed, i.e., not formed according to this | |||
| his specification, | specification, | |||
| the receiver SFF SHOULD send an SFC Echo Reply with the Return Code | the receiving SFF <bcp14>SHOULD</bcp14> send an SFC Echo Reply with the | |||
| set to "Malformed Echo Request received" and the Subcode set to zero und | Return Code | |||
| er the control of the rate-limiting mechanism | set to 1 ("Malformed Echo Request received") and the Subcode set to zero | |||
| under the control of the rate-limiting mechanism | ||||
| to the system identified in the Source ID TLV (see <xref target="echo-re ply-send"/>).</li> | to the system identified in the Source ID TLV (see <xref target="echo-re ply-send"/>).</li> | |||
| <li>5. If there are any TLVs that the SFF does not understand, the SFF M | <li>If there are any TLVs that the SFF does not understand, the SFF <bcp | |||
| UST send | 14>MUST</bcp14> send | |||
| an SFC Echo Reply with the Return Code set to 2 ("One or more TLVs was n | an SFC Echo Reply with the Return Code set to 2 ("One or more of the TLV | |||
| ot understood") and set the Subcode to zero. Also, | s was not understood") and set the Subcode to zero. Also, | |||
| the SFF MAY include an Errored TLVs TLV (<xref target="errored-tlv-sec" | the SFF <bcp14>MAY</bcp14> include an Errored TLVs TLV (<xref target="er | |||
| format="default"/>) that, | rored-tlv-sec" format="default"/>) that, | |||
| as sub-TLVs, contains only the misunderstood TLVs.</li> | as sub-TLVs, contains only the misunderstood TLVs.</li> | |||
| <li>6. If the sanity check of the received Echo Request succeeded, i.e., | <li>If the consistency check of the received Echo Request succeeded, i.e | |||
| the Echo Request is deemed properly formed, | ., the Echo Request is deemed properly formed, | |||
| then the SFF at the end of the SFP MUST | then the SFF at the end of the SFP <bcp14>MUST</bcp14> | |||
| send an SFC Echo Reply with the Return Code value to 5 ("End of the SFP | send an SFC Echo Reply with the Return Code set to 5 ("End of the SFP") | |||
| ") and the Subcode set to zero.</li> | and the Subcode set to zero.</li> | |||
| <li>7. If the SFF is not at the end of the SFP and the NSH TTL value is | <li>If the SFF is not at the end of the SFP and the NSH TTL value is 1, | |||
| 1, the SFF MUST send | the SFF <bcp14>MUST</bcp14> send | |||
| an SFC Echo Reply with the Return Code set to 4 ("SFC TTL Exceeded") and the Subcode set to zero.</li> | an SFC Echo Reply with the Return Code set to 4 ("SFC TTL Exceeded") and the Subcode set to zero.</li> | |||
| <li>8. In all other cases, for the validated Echo Request message, a tra | <li>In all other cases, for the validated Echo Request message, a transi | |||
| nsit, i.e., not at the end of the SFP, | t, i.e., not at the end of the SFP, | |||
| SFF MUST send an SFC Echo Reply with the Return Code value to 0 ("No Err | SFF <bcp14>MUST</bcp14> send an SFC Echo Reply with the Return Code set | |||
| or") and the Subcode set to zero.</li> | to 0 ("No Error") and the Subcode set to zero.</li> | |||
| </ul> | </ol> | |||
| <section anchor="errored-tlv-sec" numbered="true" toc="default"> | <section anchor="errored-tlv-sec" numbered="true" toc="default"> | |||
| <name>Errored TLVs TLV</name> | <name>Errored TLVs TLV</name> | |||
| <t> | <t> | |||
| If the Return Code for the Echo Reply is determined as 2 ("One or more TLVs w as not understood"), | If the Return Code for the Echo Reply is determined as 2 ("One or more of the TLVs was not understood"), | |||
| the Errored TLVs TLV might be included in an Echo Reply. The use of this TLV | the Errored TLVs TLV might be included in an Echo Reply. The use of this TLV | |||
| is meant to inform the sender of an Echo Request of TLVs either not | is meant to inform the sender of an Echo Request of TLVs either not | |||
| supported by an implementation or parsed and found to be in error. | supported by an implementation or parsed and found to be in error. | |||
| </t> | </t> | |||
| <figure anchor="errored-tlv-fig"> | <figure anchor="errored-tlv-fig"> | |||
| <name>Errored TLVs TLV</name> | <name>Errored TLVs TLV</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at line 667 ¶ | skipping to change at line 630 ¶ | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Errored TLVs | Reserved | Length | | | Errored TLVs | Reserved | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Value | | | Value | | |||
| . . | . . | |||
| . . | . . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| where | The fields are defined as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li> | <dt> | |||
| The Errored TLVs Type MUST be set to 2 (<xref target="iana-sfc-active-oam-tlv" f | Errored TLVs -</dt> <dd>the field <bcp14>MUST</bcp14> be set to 2 (<xref target= | |||
| ormat="default"/>). | "iana-sfc-active-oam-tlv" format="default"/>). | |||
| </li> | </dd> | |||
| <li>Reserved - the field MUST be zeroed on transmission and ignored | <dt>Reserved -</dt> <dd>the field <bcp14>MUST</bcp14> be zeroed on t | |||
| on receipt.</li> | ransmission and ignored on receipt.</dd> | |||
| <li> | <dt> | |||
| Length - the value equals to the length of the Value field in octets. | Length -</dt> <dd>the value equals to length of the Value field in octets. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| The Value field contains the TLVs, encoded as sub-TLVs (as shown in <xref tar | Value -</dt> <dd>the field contains the TLVs, encoded as sub-TLVs (as shown i | |||
| get="failed-tlv-fig"/>), | n <xref target="failed-tlv-fig"/>), | |||
| that were not understood or failed to be parsed correctly. | that were not understood or failed to be parsed correctly. | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| <figure anchor="failed-tlv-fig"> | <figure anchor="failed-tlv-fig"> | |||
| <name>Not Understood or Failed TLV as Sub-TLV</name> | <name>Not Understood or Failed TLV as a Sub-TLV</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sub-TLV Type | Reserved | Sub-TLV Length | | | Sub-TLV Type | Reserved | Sub-TLV Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ~ Sub-TLV Value ~ | ~ Sub-TLV Value ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| where | The fields are defined as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li> | <dt> | |||
| The Sub-TLV's Type - a copy of the first octet of the not understood or failed t | Sub-TLV Type -</dt> <dd>a copy of the first octet of the TLV that is not underst | |||
| o be parsed TLV. | ood or failed to be parsed. | |||
| </li> | </dd> | |||
| <li>Reserved - MUST be zeroed on transmission and ignored on receipt | <dt>Reserved -</dt> <dd><bcp14>MUST</bcp14> be zeroed on transmissio | |||
| .</li> | n and ignored on receipt.</dd> | |||
| <li> | <dt> | |||
| Sub-TLV Length - the value equals to the value of the Length field of the errore | Sub-TLV Length -</dt> <dd>the value equals the value of the Length field of the | |||
| d TLV. | errored TLV. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| The Sub-TLV Value field contains data that follow the Length field in the err | Sub-TLV Value -</dt> <dd>the field contains data that follows the Length fiel | |||
| ored TLV. | d in the errored TLV. | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="echo-reply-send" numbered="true" toc="default"> | <section anchor="echo-reply-send" numbered="true" toc="default"> | |||
| <name>SFC Echo Reply Transmission</name> | <name>SFC Echo Reply Transmission</name> | |||
| <t> | <t> | |||
| The "Reply Mode" field directs whether and how the Echo Reply message should be | The Reply Mode field directs whether and how the Echo Reply message should be se | |||
| sent. | nt. | |||
| The Echo Request sender MAY use TLVs to request that the corresponding Echo Repl | The Echo Request sender <bcp14>MAY</bcp14> use TLVs to request that the correspo | |||
| y | nding Echo Reply | |||
| be transmitted over the specified path. For example, a TLV | be transmitted over the specified path. For example, a TLV | |||
| that specifies the return path of the Echo Reply if the Return Mode in the Echo Request is set | that specifies the return path of the Echo Reply if the Return Mode in the Echo Request is set | |||
| to Reply via Specified Path (4) is described in <xref target="sfc-reply-tlv-sec" />. | to Reply via Specified Path (4) is described in <xref target="sfc-reply-tlv-sec" />. | |||
| Value 1 is the "Do not reply" mode and | Value 1 is the "Do Not Reply" mode and | |||
| suppresses the Echo Reply packet transmission. The value 2 of the Reply mode fie | suppresses the Echo Reply packet transmission. The value 2 of the Reply Mode fie | |||
| ld requests | ld requests | |||
| sending the Echo Reply packet out-of-band as an IPv4 or IPv6 UDP packet. | sending the Echo Reply packet out-of-band as an IPv4/IPv6 UDP packet. | |||
| </t> | </t> | |||
| <section anchor="sfc-reply-tlv-sec" numbered="true" toc="default"> | <section anchor="sfc-reply-tlv-sec" numbered="true" toc="default"> | |||
| <name>Reply Service Function Path TLV</name> | <name>Reply Service Function Path TLV</name> | |||
| <t> | <t> | |||
| While SFC Echo Request always traverses the SFP it is directed to by | While the SFC Echo Request always traverses the SFP it is directed to by | |||
| using NSH, the corresponding Echo Reply usually is sent without NSH. | using the NSH, the corresponding Echo Reply usually is sent without the NSH. | |||
| In some cases, an operator might choose to direct the responder | In some cases, an operator might choose to direct the responder | |||
| to send the Echo Reply with NSH over a particular SFP. | to send and Echo Reply with the NSH over a particular SFP. | |||
| This section defines a new Type-Length-Value (TLV), Reply | This section defines a new TLV, i.e., Reply | |||
| Service Function Path TLV, for Reply via Specified Path mode of SFC Echo | Service Function Path TLV, for Reply via Specified Path mode of the SFC | |||
| Reply. | Echo Reply. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The Reply Service Function Path TLV can provide an efficient mechanism to test | The Reply Service Function Path TLV can provide an efficient mechanism to test | |||
| SFCs, such as bidirectional and hybrid SFC, as defined in Section 2.2 of <xref target="RFC7665" format="default"/>. | SFCs, such as bidirectional and hybrid SFC, as defined in <xref target="R FC7665" section="2.2" sectionFormat="of" format="default"/>. | |||
| For example, it allows an operator to test both directions of the bidirec tional or | For example, it allows an operator to test both directions of the bidirec tional or | |||
| hybrid SFP with a single SFC Echo Request/Echo Reply operation. | hybrid SFP with a single SFC Echo Request/Reply operation. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The Reply Service Function Path TLV carries the information that sufficie ntly | The Reply Service Function Path TLV carries the information that sufficie ntly | |||
| identifies the return SFP that the SFC Echo Reply message is | identifies the return SFP that the SFC Echo Reply message is | |||
| expected to follow. The format of Reply Service Function Path TLV is sho wn | expected to follow. The format of Reply Service Function Path TLV is sho wn | |||
| in <xref target="sfc-reply-path-tlv-fig" format="default"/>. | in <xref target="sfc-reply-path-tlv-fig" format="default"/>. | |||
| </t> | </t> | |||
| <figure anchor="sfc-reply-path-tlv-fig"> | <figure anchor="sfc-reply-path-tlv-fig"> | |||
| <name>SFC Reply TLV Format</name> | <name>SFC Reply TLV Format</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reply SFP | Reserved | Length | | | Reply SFP | Reserved | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reply Service Function Path Identifier | Service Index | | | Reply Service Function Path Identifier | Service Index | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>where:</t> | <t>The fields are defined as follows:</t> | |||
| <ul spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>Reply SFP (Service Function Path) (3) - identifies the TLV that cont | <dt>Reply SFP (3) -</dt> <dd>identifies the TLV that contains informatio | |||
| ains information about | n about | |||
| the SFC Reply path.</li> | the SFC Reply path.</dd> | |||
| <li>Reserved MUST be zeroed on transmission and ignored on receipt.</li> | <dt>Reserved -</dt> <dd><bcp14>MUST</bcp14> be zeroed on transmission an | |||
| <li>Length - the value MUST be equal to 4</li> | d ignored on receipt.</dd> | |||
| <li> | <dt>Length -</dt> <dd>the value <bcp14>MUST</bcp14> be equal to 4.</dd> | |||
| Reply Service Function Path Identifier - a three-octet field that conta | <dt> | |||
| ins SFP identifier for the path that | Reply Service Function Path Identifier -</dt> <dd>a three-octet field t | |||
| hat contains the SFP identifier for the path that | ||||
| the SFC Echo Reply message is requested to be sent over. | the SFC Echo Reply message is requested to be sent over. | |||
| </li> | </dd> | |||
| <li> | <dt> | |||
| Service Index - a one-octet field. The value is set to the value of the | Service Index -</dt> <dd>a one-octet field. The value is set to the val | |||
| Service Index field in the NSH | ue of the Service Index field in the NSH | |||
| of the SFC Echo Reply message. | of the SFC Echo Reply message. | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| </section> | </section> | |||
| <section anchor="theory-operation-sec" numbered="true" toc="default"> | <section anchor="theory-operation-sec" numbered="true" toc="default"> | |||
| <name>Theory of Operation</name> | <name>Theory of Operation</name> | |||
| <t> | <t> | |||
| <xref target="RFC7110" format="default"/> defined mechanism to control re | <xref target="RFC7110" format="default"/> defines a mechanism to control | |||
| turn path | the return path | |||
| for MPLS LSP Echo Reply. In SFC's case, the return path is an SFP along w | for the MPLS Label Switched Path (LSP) Echo Reply. In the SFC's case, the | |||
| hich the SFC Echo | return path is an SFP along which the SFC Echo | |||
| Reply message MUST be transmitted. Hence, the Reply Service Function Path | Reply message <bcp14>MUST</bcp14> be transmitted. Hence, the Reply Servic | |||
| TLV included | e Function Path TLV included | |||
| in the SFC Echo Request message MUST sufficiently identify the SFP | in the SFC Echo Request message <bcp14>MUST</bcp14> sufficiently identify | |||
| the SFP | ||||
| that the sender of the Echo Request message expects the receiver to use | that the sender of the Echo Request message expects the receiver to use | |||
| for the corresponding SFC Echo Reply. | for the corresponding SFC Echo Reply. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| When sending an Echo Request, the sender MUST set the value of Reply Mode field to | When sending an Echo Request, the sender <bcp14>MUST</bcp14> set the valu e of the Reply Mode field to | |||
| "Reply via Specified Path", defined in <xref target="echo-request-send" f ormat="default"/>, | "Reply via Specified Path", defined in <xref target="echo-request-send" f ormat="default"/>, | |||
| and if the specified path is an SFC path, the Request MUST include Reply Service Function Path TLV. | and if the specified path is an SFC path, the Request <bcp14>MUST</bcp14> include the Reply Service Function Path TLV. | |||
| The Reply Service Function Path TLV consists of the identifier of the rev erse SFP and an appropriate Service Index. | The Reply Service Function Path TLV consists of the identifier of the rev erse SFP and an appropriate Service Index. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If the NSH of the received SFC Echo Request includes the MAC Context Head er, | If the NSH of the received SFC Echo Request includes the MAC Context Head er, | |||
| the packet's authentication MUST be verified before using any data as defined in <xref target="echo-request-recieve"/>. | the packet's authentication <bcp14>MUST</bcp14> be verified before using any data, as defined in <xref target="echo-request-recieve"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The destination SFF of the SFP being tested or the SFF at which NSH TTL e xpired | The destination SFF of the SFP being tested and the SFF at which the NSH TTL expired | |||
| (as per <xref target="RFC8300" format="default"/>) | (as per <xref target="RFC8300" format="default"/>) | |||
| are referred to as responding SFF. The processing described | are referred to as responding SFFs. The processing described | |||
| below equally applies to both cases. | below equally applies to both cases. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If the Echo Request message with Reply Service Function Path TLV, receive | If the Echo Request message with the Reply Service Function Path TLV rece | |||
| d by the responding | ived by the responding | |||
| SFF, has Reply Mode value of "Reply via Specified Path" but no Reply Serv | SFF has the Reply Mode value of "Reply via Specified Path" but no Reply S | |||
| ice Function Path TLV is present, | ervice Function Path TLV is present, | |||
| then the responding SFF MUST send Echo Reply with Return Code set to 6 (" | then the responding SFF <bcp14>MUST</bcp14> send an Echo Reply with the R | |||
| Reply Service Function Path TLV is missing"). | eturn Code set to 6 ("Reply Service Function Path TLV is missing"). | |||
| If the responding SFF cannot find the requested SFP it MUST send Echo Rep | If the responding SFF cannot find the requested SFP, it <bcp14>MUST</bcp1 | |||
| ly with Return Code set to 7 | 4> send an Echo Reply with the Return Code set to 7 | |||
| ("Reply SFP was not found") and include the Reply Service Function Path T LV from the Echo Request message. | ("Reply SFP was not found") and include the Reply Service Function Path T LV from the Echo Request message. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Suppose the SFC Echo Request receiver cannot determine | Suppose the SFC Echo Request receiver cannot determine | |||
| whether the specified return path SFP has the route to the initiator. | whether the specified return path SFP has the route to the initiator. | |||
| In that case, it SHOULD set the value of the Return Codes field to | In that case, it <bcp14>SHOULD</bcp14> set the value of the Return Code field t o | |||
| 8 ("Unverifiable Reply Service Function Path"). | 8 ("Unverifiable Reply Service Function Path"). | |||
| The receiver MAY drop the Echo Request when it cannot | The receiver <bcp14>MAY</bcp14> drop the Echo Request when it cannot | |||
| determine whether SFP's return path has the route to the | determine whether the SFP's return path has the route to the | |||
| initiator. When sending Echo Request, the sender | initiator. When sending the Echo Request, the sender | |||
| SHOULD choose a proper source address according to the specified return | <bcp14>SHOULD</bcp14> choose a proper source address according to the specifi | |||
| ed return | ||||
| path SFP to help the receiver find the viable return path. | path SFP to help the receiver find the viable return path. | |||
| </t> | </t> | |||
| <section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
| <name>Bi-directional SFC Case</name> | <name>Bidirectional SFC Case</name> | |||
| <t> | <t> | |||
| The ability to specify the return path for an Echo Reply might be used in the case of bi-directional | The ability to specify the return path for an Echo Reply might be used in the case of bidirectional | |||
| SFC. The egress SFF of the forward SFP might not be | SFC. The egress SFF of the forward SFP might not be | |||
| co-located with a classifier of the reverse SFP, and thus the egress SFF | co-located with a classifier of the reverse SFP, and thus, the egress SFF | |||
| has no | has no | |||
| information about the reverse path of an SFC. Because of that, even for b | information about the reverse path of SFC. Because of that, even for bidi | |||
| i-directional SFC, a | rectional SFC, a | |||
| reverse SFP needs to be indicated in a Reply Service Function Path TLV in the Echo Request | reverse SFP needs to be indicated in a Reply Service Function Path TLV in the Echo Request | |||
| message. | message. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="echo-reply-recieve" numbered="true" toc="default"> | <section anchor="echo-reply-recieve" numbered="true" toc="default"> | |||
| <name>SFC Echo Reply Reception</name> | <name>SFC Echo Reply Reception</name> | |||
| <t> | <t> | |||
| An SFF SHOULD NOT accept SFC Echo Reply unless the received message passes th e following checks: | An SFF <bcp14>SHOULD NOT</bcp14> accept the SFC Echo Reply unless the receive d message passes the following checks: | |||
| </t> | </t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li>the received SFC Echo Reply is well-formed;</li> | <li>the received SFC Echo Reply is well formed;</li> | |||
| <li>the matching SFC Echo Request is found, that is, the value of the Sender's Handle | <li>the matching SFC Echo Request is found, that is, the value of the Sender's Handle | |||
| in the Echo Request sent is equal to the value of Sender's Handle in the | in the Echo Request sent is equal to the value of Sender's Handle in the | |||
| Echo Reply received;</li> | Echo Reply received;</li> | |||
| <li>all other checks passed, and the Sequence Number in the Echo Reply | <li>the Sequence Number in the Echo Reply received | |||
| received | matches the Sequence Number of one of the outstanding transmitted Echo Reques | |||
| matches the Sequence Number of one of outstanding transmitted Echo Requests.< | ts; and</li> | |||
| /li> | <li>all other checks passed.</li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="tracing-sfp" numbered="true" toc="default"> | <section anchor="tracing-sfp" numbered="true" toc="default"> | |||
| <name>Tracing an SFP</name> | <name>Tracing an SFP</name> | |||
| <t> | <t> | |||
| SFC Echo Request/Reply can be used to isolate a defect detected in the S | The SFC Echo Request/Reply can be used to isolate a defect detected in t | |||
| FP and trace an RSP. | he SFP and trace an RSP. | |||
| As with ICMP echo request/reply <xref target="RFC0792"/> and MPLS echo r | As with the ICMP Echo Request/Reply <xref target="RFC0792"/> and the MPL | |||
| equest/reply <xref target="RFC8029"/>, | S Echo Request/Reply <xref target="RFC8029"/>, | |||
| this mode is referred to as "traceroute". In the traceroute mode, the se nder transmits a sequence of SFC Echo Request | this mode is referred to as "traceroute". In the traceroute mode, the se nder transmits a sequence of SFC Echo Request | |||
| messages starting with the NSH TTL value set to 1 and is incremented by 1 in each next Echo Request packet. | messages starting with the NSH TTL value set to 1 and is incremented by 1 in each next Echo Request packet. | |||
| The sender stops transmitting SFC Echo Request packets when the Return C ode in the received Echo Reply equals | The sender stops transmitting SFC Echo Request packets when the Return C ode in the received Echo Reply equals | |||
| 5 ("End of the SFP"). | 5 ("End of the SFP"). | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Suppose a specialized information element (e.g., IPv6 Flow Label <xref t arget="RFC6437"/> or | Suppose a specialized information element (e.g., IPv6 Flow Label <xref t arget="RFC6437"/> or | |||
| Flow ID <xref target="RFC9263"/>) is used for distributing | Flow ID <xref target="RFC9263"/>) is used for distributing | |||
| the load across Equal Cost Multi-Path or Link | the load across Equal Cost Multipath or Link | |||
| Aggregation Group paths. In that case, such an element SHOULD also be | Aggregation Group paths. In that case, such an element <bcp14>SHOULD</bcp14> | |||
| also be | ||||
| used for the SFC OAM traffic. Doing so is meant to induce the SFC Echo Reques t to follow the same RSP as the | used for the SFC OAM traffic. Doing so is meant to induce the SFC Echo Reques t to follow the same RSP as the | |||
| monitored flow. | monitored flow. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sf-consist-seq" numbered="true" toc="default"> | <section anchor="sf-consist-seq" numbered="true" toc="default"> | |||
| <name>The Use of Consistency Verification Request Message</name> | <name>The Use of the Consistency Verification Request Message</name> | |||
| <t> | <t> | |||
| The consistency of an SFP can be verified by comparing the view of the SF P from the control or management plane with | The consistency of an SFP can be verified by comparing the view of the SF P from the control or management plane with | |||
| information collected from traversing by an SFC Echo Request/Reply messag e (<xref target="sfc-ping-pic"/>). | information collected from traversing by an SFC Echo Request/Reply messag e (<xref target="sfc-ping-pic"/>). | |||
| The sender of an SFP Consistency Verification Request (CVReq) message MUS | The sender of an SFP Consistency Verification Request (CVReq) message <bc | |||
| T set the value | p14>MUST</bcp14> set the value | |||
| of the SFC Echo Request/Reply Echo Type field to SFP Consistency Verifica | of the SFC Echo Request/Reply Echo Type field to 3 ("SFP Consistency Veri | |||
| tion Request (3). | fication Request"). | |||
| The sender of an SFP Consistency Verification Reply (CVRep) message MUST | The sender of an SFP Consistency Verification Reply (CVRep) message <bcp | |||
| set the value | 14>MUST</bcp14> set the value | |||
| of the SFC Echo Request/Reply Echo Type field to SFP Consistency Verifica | of the SFC Echo Request/Reply Echo Type field to 4 ("SFP Consistency Veri | |||
| tion Reply (4). | fication Reply"). | |||
| All processing steps of SFC Echo Request and Echo Reply messages describe | All processing steps of SFC Echo Request and Echo Reply messages describe | |||
| d in <xref target="echo-request-send"/> through <xref target="echo-reply-send"/> | d in Sections <xref target="echo-request-send" format="counter"/> through <xref | |||
| apply to the processing of CVReq and CVRep respectively. | target="echo-reply-send" format="counter"/> | |||
| apply to the processing of CVReq and CVRep, respectively. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Every SFF that | Every SFF that | |||
| receives a CVReq message MUST perform the following actions: | receives a CVReq message <bcp14>MUST</bcp14> perform the following action s: | |||
| </t> | </t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| Collect information about the SFs traversed by the CVReq packet and send it to the ingress SFF as CVRep packet over IP network; | Collect information about the SFs traversed by the CVReq packet and send it to the ingress SFF as a CVRep packet over an IP network. | |||
| </li> | </li> | |||
| <li>Forward the CVReq to the next downstream SFF if the one exists.</li> | <li>Forward the CVReq to the next downstream SFF if the one exists.</li> | |||
| </ul> | </ul> | |||
| <t>As a result, the ingress SFF collects information about all traversed S FFs and SFs, | <t>As a result, the ingress SFF collects information about all traversed S FFs and SFs, i.e., | |||
| information on the actual path the CVReq packet has traveled. That | information on the actual path the CVReq packet has traveled. That | |||
| information can be used to verify the SFC's path consistency. The mechan ism for the SFP consistency | information can be used to verify the SFC's path consistency. The mechan ism for the SFP consistency | |||
| verification is outside the scope of this document.</t> | verification is outside the scope of this document.</t> | |||
| <!-- | ||||
| <t> | ||||
| For the verification of an SFP consistency, two types of SFC Active OAM | ||||
| messages are defined in addition to the SFC Echo Request/Reply messages. | ||||
| Their SFC Echo Request/Echo Response Echo Types are as follows: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>3 - SFP Consistency Verification Request</li> | ||||
| <li>4 - SFP Consistency Verification Reply</li> | ||||
| </ul> | ||||
| <t> | ||||
| Upon receiving the CVReq, the SFF MUST respond with the Consistency Verificati | ||||
| on Reply (CVRep). The SFF MUST include the SFs | ||||
| information, as described in <xref target="sf-sub-tlv-sec" format="defaul | ||||
| t"/> and <xref target="sff-record-tlv-sec" format="default"/>. | ||||
| </t> | ||||
| --> | ||||
| <section anchor="sff-record-tlv-sec" numbered="true" toc="default"> | <section anchor="sff-record-tlv-sec" numbered="true" toc="default"> | |||
| <name>SFF Information Record TLV</name> | <name>SFF Information Record TLV</name> | |||
| <t> | <t> | |||
| For the received CVReq, an SFF, that supports this specification, MUST in | For the received CVReq, an SFF that supports this specification <bcp14>MU | |||
| clude in the CVRep message | ST</bcp14> include in the CVRep message | |||
| the information about SFs that are available from that SFF instance for t | the information about SFs that are available from that SFF instance for t | |||
| he specified SFP. The SFF MUST include | he specified SFP. The SFF <bcp14>MUST</bcp14> include the | |||
| SFF Information Record TLV (<xref target="sff-record-tlv"/>) in CVRep mes | SFF Information Record TLV (<xref target="sff-record-tlv"/>) in the CVRep | |||
| sage. | message. | |||
| Every SFF sends back a single CVRep message, including information on all the SFs | Every SFF sends back a single CVRep message, including information on all the SFs | |||
| attached to that SFF on the SFP, as requested in the received CVReq messa ge | attached to that SFF on the SFP, as requested in the received CVReq messa ge | |||
| using the SF Information sub-TLV (<xref target="sf-sub-tlv-sec"/>). | using the SF Information Sub-TLV (<xref target="sf-sub-tlv-sec"/>). | |||
| </t> | </t> | |||
| <figure anchor="sff-record-tlv"> | <figure anchor="sff-record-tlv"> | |||
| <name>SFF Information Record TLV</name> | <name>SFF Information Record TLV</name> | |||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |SFF Record TLV | Reserved | Length | | |SFF Record TLV | Reserved | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Service Path Identifier (SPI) | Reserved | | | Service Path Identifier (SPI) | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| | SF Information Sub-TLV | | | SF Information Sub-TLV | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t keepWithPrevious="true"/> | <t keepWithPrevious="true"/> | |||
| <t> | <t> | |||
| The SFF Information Record TLV is a variable-length TLV that includes | The SFF Information Record TLV is a variable-length TLV that includes | |||
| the information of all SFs available from the particular SFF instance for the specified SFP. | the information of all SFs available from the particular SFF instance for the specified SFP. | |||
| <xref target="sff-record-tlv" format="default"/> presents the format of | <xref target="sff-record-tlv" format="default"/> presents the format of | |||
| an SFF Information Record TLV, where fields are defined as the following: | an SFF Information Record TLV, where the fields are defined as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>SFF Record TLV - The value is (4) (<xref target="iana-sfc-active-oam | <dt>SFF Record TLV -</dt> <dd>the value is (4) (<xref target="iana-sfc-a | |||
| -tlv"/>).</li> | ctive-oam-tlv"/>).</dd> | |||
| <li>Reserved - MUST be zeroed on transmission and ignored on receipt.< | <dt>Reserved -</dt> <dd><bcp14>MUST</bcp14> be zeroed on transmission an | |||
| /li> | d ignored on receipt.</dd> | |||
| <li>Service Path Identifier (SPI): The identifier of SFP to which all | <dt>Length -</dt> <dd>the value equals the sum of lengths of the Service | |||
| the SFs in this TLV belong. </li> | Path Identifier, reserved, and SF Information Sub-TLV fields in | |||
| <li>SF Information Sub-TLV: The sub-TLV is as defined in <xref target= | octets.</dd> | |||
| "sf-sub-tlv-sec" format="default"/>.</li> | <dt>Service Path Identifier (SPI) -</dt> <dd>the identifier of SFP to | |||
| </ul> | which all the SFs in this TLV belong. </dd> | |||
| <dt>SF Information Sub-TLV -</dt> <dd>the sub-TLV is as defined in <xr | ||||
| ef target="sf-sub-tlv-sec" format="default"/>.</dd> | ||||
| </dl> | ||||
| <t> | <t> | |||
| If the NSH of the received SFC Echo Reply includes the MAC Context Header <xref target="RFC9145" format="default"/>, | If the NSH of the received SFC Echo Reply includes the MAC Context Header <xref target="RFC9145" format="default"/>, | |||
| the authentication of the packet MUST be verified before using any data. If t | the authentication of the packet <bcp14>MUST</bcp14> be verified before using | |||
| he verification fails, | any data. If the verification fails, | |||
| the receiver MUST stop processing the SFF Information Record TLV and notify a | the receiver <bcp14>MUST</bcp14> stop processing the SFF Information Record T | |||
| n operator. | LV and notify an operator. | |||
| The notification mechanism SHOULD include control of rate-limited messages. | The notification mechanism <bcp14>SHOULD</bcp14> include control of rate-limit | |||
| ed messages. | ||||
| Specification of the notification mechanism is outside the scope of this docum ent. | Specification of the notification mechanism is outside the scope of this docum ent. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="sf-sub-tlv-sec" numbered="true" toc="default"> | <section anchor="sf-sub-tlv-sec" numbered="true" toc="default"> | |||
| <name>SF Information Sub-TLV</name> | <name>SF Information Sub-TLV</name> | |||
| <t> | <t> | |||
| Every SFF receiving a CVReq packet MUST include the SF characteristic dat | Every SFF receiving a CVReq packet <bcp14>MUST</bcp14> include the SF cha | |||
| a into the CVRep | racteristic data into the CVRep | |||
| packet. The format of an SF Information sub-TLV, included in | packet. The format of an SF Information Sub-TLV, included in | |||
| a CVRep packet, is shown in <xref target="sf-data-sub-tlv" format="defaul t"/>. | a CVRep packet, is shown in <xref target="sf-data-sub-tlv" format="defaul t"/>. | |||
| </t> | </t> | |||
| <t>After the CVReq message traverses the SFP, all the information about the SFs on the SFP is available | <t>After the CVReq message traverses the SFP, all the information about the SFs on the SFP is available | |||
| from the TLVs included in CVRep messages. </t> | from the TLVs included in CVRep messages. </t> | |||
| <figure anchor="sf-data-sub-tlv"> | <figure anchor="sf-data-sub-tlv"> | |||
| <name>Service Function Information Sub-TLV</name> | <name>Service Function Information Sub-TLV</name> | |||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SF sub-TLV | Reserved | Length | | | SF Sub-TLV | Reserved | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |Service Index | SF Type | SF ID Type | | |Service Index | SF Type | SF ID Type | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SF Identifier | | | SF Identifier | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t keepWithPrevious="true"/> | <t keepWithPrevious="true"/> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>SF sub-TLV Type: one-octet long field. The value is (5) (<xref targe | <dt>SF Sub-TLV -</dt> <dd>one-octet field. The value is (5) (<xref targe | |||
| t="iana-sfc-active-oam-tlv"/>).</li> | t="iana-sfc-active-oam-tlv"/>).</dd> | |||
| <li>Reserved - one-octet field. The field MUST be zeroed on transmissi | <dt>Reserved -</dt> <dd>one-octet field. The field <bcp14>MUST</bcp14> | |||
| on and ignored on receipt.</li> | be zeroed on transmission and ignored on receipt.</dd> | |||
| <li>Length - two-octet long field. The value of this field is the leng | <dt>Length -</dt> <dd>two-octet field. The value of this field is the | |||
| th of the data following the Length field counted in octets.</li> | length of the data following the Length field counted in octets.</dd> | |||
| <li>Service Index - indicates the SF's position on the SFP.</li> | <dt>Service Index -</dt> <dd>indicates the SF's position on the SFP.</ | |||
| <li>SF Type - two-octet field. It is defined in <xref target="RFC9015" | dd> | |||
| format="default"/> | <dt>SF Type -</dt> <dd>two-octet field. It is defined in <xref target= | |||
| and indicates the type of SF, e.g., Firewall, Deep Packet Inspection, WAN | "RFC9015" format="default"/> | |||
| optimization controller, etc.</li> | and indicates the type of SF, e.g., firewall, Deep Packet Inspection, WAN | |||
| <li>SF ID Type - one-octet field with values defined as <xref target="coa | optimization controller, etc.</dd> | |||
| m-sf-id-type-sec" format="default"/>.</li> | <dt>SF ID Type -</dt> <dd>one-octet field with values defined as in <xref | |||
| <li>SF Identifier - an identifier of the SF. The length of the SF Identif | target="coam-sf-id-type-sec" format="default"/>.</dd> | |||
| ier depends on the type of the SF ID Type. | <dt>SF Identifier -</dt> <dd>an identifier of the SF. The length of the S | |||
| For example, if the SF Identifier is its IPv4 address, the SF Identifier | F Identifier depends on the type of the SF ID Type. | |||
| should be 32 bits. </li> | For example, if the SF Identifier is its IPv4 address, the SF Identifier | |||
| </ul> | should be 32 bits. </dd> | |||
| <!-- <t>SF ID Type and SF Identifier may be a list, | </dl> | |||
| of the SFs included in a load balance group.</t> --> | ||||
| </section> | </section> | |||
| <section anchor="information-sub-tlv" numbered="true" toc="default"> | <section anchor="information-sub-tlv" numbered="true" toc="default"> | |||
| <name>SF Information Sub-TLV Construction</name> | <name>SF Information Sub-TLV Construction</name> | |||
| <t>Each SFF in the SFP MUST send one and only one CVRep corresponding to | <t>Each SFF in the SFP <bcp14>MUST</bcp14> send one and only one CVRep c | |||
| the CVReq. | orresponding to the CVReq. | |||
| If only one SF is attached to the SFF in such SFP, only one SF informatio | If only one SF is attached to the SFF in the SFP, only one SF Information | |||
| n sub-TLV is included in the CVRep. | Sub-TLV is included in the CVRep. | |||
| If several SFs attached to the SFF in the SFP, SF Information sub-TLV MUS | If several SFs are attached to the SFF in the SFP, the SF Information Sub | |||
| T be constructed as described below in either <xref target="multi-hops" format=" | -TLV <bcp14>MUST</bcp14> be constructed as described below in either Section <xr | |||
| default"/> | ef target="multi-hops" format="counter"/> | |||
| and <xref target="load-balance" format="default"/>. </t> | or <xref target="load-balance" format="counter"/>. </t> | |||
| <section anchor="multi-hops" numbered="true" toc="default"> | <section anchor="multi-hops" numbered="true" toc="default"> | |||
| <name>Multiple SFs as Hops of an SFP</name> | <name>Multiple SFs as Hops of an SFP</name> | |||
| <t> | <t> | |||
| Multiple SFs attached to the same SFF can be the hops of the SFP. | Multiple SFs attached to the same SFF can be the hops of the SFP. | |||
| The service indexes of these SFs on that SFP will be different. Servic e | The service indexes of these SFs on that SFP will be different. Servic e | |||
| function types of these SFs could be different or be the same. Informatio | Function Types of these SFs could be different or be the same. Informatio | |||
| n about all SFs MAY be included in the CVRep message. | n about all SFs <bcp14>MAY</bcp14> be included in the CVRep message. | |||
| Information about each SF MUST be listed as separate SF Information sub-T | Information about each SF <bcp14>MUST</bcp14> be listed as separate SF In | |||
| LVs in the CVRep message. | formation Sub-TLVs in the CVRep message. | |||
| The same SF can even appear more than once in an SFP with a different ser vice index. | The same SF can even appear more than once in an SFP with a different ser vice index. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An example of the SFP consistency verification procedure for this case is shown in <xref target="coam-reply-fig" format="default"/>. | An example of the SFP consistency verification procedure for this case is shown in <xref target="coam-reply-fig" format="default"/>. | |||
| The Service Function Path (SPI=x) | The Service Function Path (SPI=x) | |||
| is SF1->SF2->SF4->SF3. The SF1, SF2, and SF3 are attached to SFF 1, and SF4 is attached to SFF2. | is SF1->SF2->SF4->SF3. SF1, SF2, and SF3 are attached to SFF1, a nd SF4 is attached to SFF2. | |||
| The CVReq message is sent to the SFFs in the sequence of the | The CVReq message is sent to the SFFs in the sequence of the | |||
| SFP(SFF1->SFF2->SFF1). Every SFF(SFF1, SFF2) replies with the informatio n of SFs belonging | SFP(SFF1->SFF2->SFF1). Every SFF(SFF1, SFF2) replies with the informatio n of SFs belonging | |||
| to the SFP. The SF information Sub-TLV in <xref target="sf-data-sub-tlv" format="default"/> | to the SFP. The SF Information Sub-TLV in <xref target="sf-data-sub-tlv" format="default"/> | |||
| contains information for each SF (SF1, SF2, SF3, and SF4). | contains information for each SF (SF1, SF2, SF3, and SF4). | |||
| </t> | </t> | |||
| <figure anchor="coam-reply-fig"> | <figure anchor="coam-reply-fig"> | |||
| <name>Example 1 for CVRep with multiple SFs</name> | <name>Example 1 for CVRep with Multiple SFs</name> | |||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
| SF1 SF2 SF4 SF3 | SF1 SF2 SF4 SF3 | |||
| +------+------+ | | | +------+------+ | | | |||
| CVReq ......> SFF1 ......> SFF2 ......> SFF1 | CVReq ......> SFF1 ......> SFF2 ......> SFF1 | |||
| (SPI=x) . . . | (SPI=x) . . . | |||
| <............ <.......... <........... | <............ <.......... <........... | |||
| CVRep1(SF1,SF2) CVRep2(SF4) CVRep3(SF3) | CVRep1(SF1,SF2) CVRep2(SF4) CVRep3(SF3) | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t keepWithPrevious="true"/> | <t keepWithPrevious="true"/> | |||
| </section> | </section> | |||
| <section anchor="load-balance" numbered="true" toc="default"> | <section anchor="load-balance" numbered="true" toc="default"> | |||
| <name>Multiple SFs for load balance</name> | <name>Multiple SFs for Load Balance</name> | |||
| <t> | <t> | |||
| Multiple SFs may be attached to the same SFF to spread the load; in other words, that means that the particular traffic flow will traverse only one of th ese SFs. | Multiple SFs may be attached to the same SFF to spread the load; in other words, that means that the particular traffic flow will traverse only one of th ese SFs. | |||
| These SFs have the same Service Function Type and Service Index. | These SFs have the same Service Function Type and Service Index. | |||
| For this case, the SF ID Type, which must be the same for all of | For this case, the SF ID Type, which must be the same for all of | |||
| these SFs, appears once but all of their SF Identifiers will | these SFs, appears once, but all the respective SF Identifiers will | |||
| appear concatenated in the SF Identifier area of the Sub-TLV | be listed sequentially in the SF Identifier field of the Service Function | |||
| Information Sub-TLV | ||||
| (see <xref target="sf-data-sub-tlv"/>). The number of these SFs can be cal culated from | (see <xref target="sf-data-sub-tlv"/>). The number of these SFs can be cal culated from | |||
| the SF ID Type and the value of the Length field of the sub-TLV. | the SF ID Type and the value of the Length field of the sub-TLV. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An example of the SFP consistency verification procedure for this case is shown in <xref target="coam-reply-fig2" format="default"/>. The Service Functio n Path (SPI=x) | An example of the SFP consistency verification procedure for this case is shown in <xref target="coam-reply-fig2" format="default"/>. The Service Functio n Path (SPI=x) | |||
| is SF1a/SF1b->SF2a/SF2b. The Service Functions SF1a and SF1b are attac hed to SFF1, which balances the load among them. | is SF1a/SF1b->SF2a/SF2b. The Service Functions SF1a and SF1b are attac hed to SFF1, which balances the load among them. | |||
| The Service Functions SF2a and SF2b are attached to SFF2, which, in turn, | The Service Functions SF2a and SF2b are attached to SFF2, which in turn, | |||
| balances its load between them. | balances its load between them. | |||
| The CVReq message is sent to the SFFs in the sequence of the SFP (i.e. SF | The CVReq message is sent to the SFFs in the sequence of the SFP (i.e., S | |||
| F1->SFF2). | FF1->SFF2). | |||
| Every SFF (SFF1, SFF2) replies with the information of SFs belonging to t | Every SFF (SFF1, SFF2) replies with the information of SFs belonging to t | |||
| he SFP. The SF information Sub-TLV in <xref target="sf-data-sub-tlv" format="def | he SFP. The SF Information Sub-TLV in <xref target="sf-data-sub-tlv" format="def | |||
| ault"/> | ault"/> | |||
| contains information for all SFs at that hop. | contains information for all SFs at that hop. | |||
| </t> | </t> | |||
| <figure anchor="coam-reply-fig2"> | <figure anchor="coam-reply-fig2"> | |||
| <name>Example 2 for CVRep with multiple SFs</name> | <name>Example 2 for CVRep with Multiple SFs</name> | |||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
| /SF1a /SF2a | /SF1a /SF2a | |||
| \SF1b \SF2b | \SF1b \SF2b | |||
| | | | | | | |||
| SFF1 SFF2 | SFF1 SFF2 | |||
| CVReq .........> . .........> . | CVReq .........> . .........> . | |||
| (SPI=x) . . | (SPI=x) . . | |||
| <............ <............... | <............ <............... | |||
| CVRep1(SF1a,SF1b) CVRep2(SF2a,SF2b) | CVRep1(SF1a,SF1b) CVRep2(SF2a,SF2b) | |||
| ]]></artwork> | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t keepWithPrevious="true"/> | <t keepWithPrevious="true"/> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec_security" numbered="true" toc="default"> | <section anchor="sec_security" numbered="true" toc="default"> | |||
| <name>Security Considerations</name> | <name>Security Considerations</name> | |||
| <t> | <t> | |||
| As an element of SFC OAM and, specifically, NSH-based, the Echo Request/Re | As an element of SFC OAM and, specifically, based on the NSH, the Echo Req | |||
| ply mechanism described in this document inherits | uest/Reply mechanism described in this document inherits | |||
| Security Considerations discussed in <xref target="RFC7665"/> and <xref ta | security considerations discussed in <xref target="RFC7665"/> and <xref ta | |||
| rget="RFC8300"/>. | rget="RFC8300"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| When the integrity protection for SFC active OAM, and SFC Echo Request/Reply in | When the integrity protection for SFC active OAM, particularly the SFC Echo Requ | |||
| particular, is required, | est/Reply, is required, | |||
| using one of the Context Headers defined in <xref target="RFC9145" format="defau | using one of the Context Headers defined in <xref target="RFC9145" format="defau | |||
| lt"/> is RECOMMENDED. | lt"/> is <bcp14>RECOMMENDED</bcp14>. | |||
| MAC#1 Context Header could be more suitable for active SFC OAM because it does n | The MAC#1 Context Header could be more suitable for SFC active OAM because it do | |||
| ot require re-calculation of the | es not require recalculation of the | |||
| MAC when the value of the NSH Base Header's TTL field is changed. | MAC when the value of the NSH Base Header's TTL field is changed. | |||
| Integrity protection for SFC active OAM can also be achieved | Integrity protection for SFC active OAM can also be achieved | |||
| using mechanisms in the underlay data plane. | using mechanisms in the underlay data plane. | |||
| For example, if the underlay is an IPv6 network, IP Authentication Header <xref | For example, if the underlay is an IPv6 network, i.e., an IP Authentication Head | |||
| target="RFC4302" format="default"/> | er <xref target="RFC4302" format="default"/> | |||
| or IP Encapsulating Security Payload Header <xref target="RFC4303" format="defau | or IP Encapsulating Security Payload Header <xref target="RFC4303" format="defau | |||
| lt"/> can be used to provide integrity protection. | lt"/>, it can be used to provide integrity protection. | |||
| Confidentiality for the SFC Echo Request/Reply exchanges can be achieved using t he IP Encapsulating Security | Confidentiality for the SFC Echo Request/Reply exchanges can be achieved using t he IP Encapsulating Security | |||
| Payload Header <xref target="RFC4303" format="default"/>. | Payload Header <xref target="RFC4303" format="default"/>. | |||
| Also, the security needs for SFC Echo Request/Reply are similar to those of ICMP ping <xref target="RFC0792" format="default"/>, <xref target="RFC4443" format=" default"/> | Also, the security needs for the SFC Echo Request/Reply are similar to those of ICMP ping <xref target="RFC0792" format="default"/> <xref target="RFC4443" forma t="default"/> | |||
| and MPLS LSP ping <xref target="RFC8029" format="default"/>. | and MPLS LSP ping <xref target="RFC8029" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| There are at least three approaches to attacking a node in the overlay networ k using the | There are at least three approaches to attacking a node in the overlay networ k using the | |||
| mechanisms defined in the document. One is a Denial-of-Service attack, | mechanisms defined in the document. One is a Denial-of-Service attack, i.e., | |||
| sending SFC Echo Requests to overload an element of the SFC. | sending SFC Echo Requests to overload an element of SFC. | |||
| The second may use spoofing, hijacking, replying, or otherwise | The second may use spoofing, hijacking, replying, or otherwise | |||
| tampering with SFC Echo Requests and/or replies to | tampering with SFC Echo Requests and/or Replies to | |||
| misrepresent, alter the operator's view of the state of the SFC. | misrepresent and alter the operator's view of the state of the SFC. | |||
| The third is an unauthorized source using an SFC | The third is an unauthorized source using an SFC | |||
| Echo Request/Reply to obtain information about the | Echo Request/Reply to obtain information about the | |||
| SFC and/or its elements, e.g., SFFs and/or SFs. | SFC and/or its elements, e.g., SFFs and/or SFs. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| It is RECOMMENDED that | It is <bcp14>RECOMMENDED</bcp14> that | |||
| implementations throttle the number of SFC Echo Request/Echo Reply messages g | implementations throttle the number of SFC Echo Request/Reply messages going | |||
| oing to the control plane | to the control plane | |||
| to mitigate potential Denial-of-Service attacks. | to mitigate potential Denial-of-Service attacks. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Reply and spoofing attacks involving faking or | Reply and spoofing attacks involving faking or | |||
| replying to SFC Echo Reply messages would have to | replying to SFC Echo Reply messages would have to | |||
| match the Sender's Handle and Sequence Number of | match the Sender's Handle and Sequence Number of | |||
| an outstanding SFC Echo Request message, which is highly unlikely for off-pat h attackers. | an outstanding SFC Echo Request message, which is highly unlikely for off-pat h attackers. | |||
| A non-matching reply would be discarded. | A non-matching reply would be discarded. | |||
| <!--But since "even a broken clock is right twice a day" | ||||
| implementations MAY use Timestamp control block <xref target="I-D.ooamdt-rtgw | ||||
| g-ooam-header"/> | ||||
| to validate the TimeStamp Sent by requiring an exact match on this field.--> | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| To protect against unauthorized sources trying to obtain information about th e overlay and/or underlay, | To protect against unauthorized sources trying to obtain information about th e overlay and/or underlay, | |||
| an implementation MUST have means to check that the source of the Echo Reques t is part of the SFP. | an implementation <bcp14>MUST</bcp14> have means to check that the source of the Echo Request is part of the SFP. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Also, since the Service Function Information sub-TLV discloses information about | Also, since the SF Information Sub-TLV discloses information about the SFP, the | |||
| the SFP, the spoofed CVReq packet | spoofed CVReq packet | |||
| may be used to obtain network information. Thus, implementations MUST | may be used to obtain network information. Thus, implementations <bcp14>MUST</bc | |||
| provide a means of checking the source addresses of CVReq messages, | p14> | |||
| specified in Source ID TLV (<xref target="source-tlv-sec" format="default"/>) | provide a means of checking the source addresses of CVReq messages, as | |||
| , | specified in <xref target="source-tlv-sec" format="default"/> ("Source ID TLV | |||
| "), | ||||
| against an access list before accepting the message. | against an access list before accepting the message. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
| <name>Operational Considerations</name> | <name>Operational Considerations</name> | |||
| <t> | <t> | |||
| This section provides information about operational aspects of the SFC NSH Echo Request/Reply | This section provides information about operational aspects of the SFC NSH Echo Request/Reply | |||
| according to recommendations in <xref target="RFC5706"/>. | according to recommendations in <xref target="RFC5706"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| SFC NSH Echo Request/Reply provides essential OAM functions for network op | The SFC NSH Echo Request/Reply provides essential OAM functions for networ | |||
| erators. SFC NSH Echo Request/Reply | k operators. The SFC NSH Echo Request/Reply | |||
| is intended to detect and localize defects in an SFC. For example, by com | is intended to detect and localize defects in SFC. For example, by compar | |||
| paring results of the trace function in operational and failed states, | ing results of the trace function in operational and failed states, | |||
| an operator can locate the defect, e.g., the connection between SFF1 and S FF2 (<xref target="fig1"/>). | an operator can locate the defect, e.g., the connection between SFF1 and S FF2 (<xref target="fig1"/>). | |||
| After narrowing down a failure to an overlay link, a more specific failure location | After narrowing down a failure to an overlay link, a more specific failure location | |||
| can be determined using OAM tools in the underlay network. | can be determined using OAM tools in the underlay network. | |||
| The mechanism defined in this document can be used on-demand or | The mechanism defined in this document can be used on demand or | |||
| for periodic validation of an SFP or RSP. Because the protocol makes use o | for periodic validation of an SFP or RSP. Because the protocol makes use o | |||
| f the control plane which may | f the control plane, which may | |||
| have limited capacity, an operator must be able to rate limit | have limited capacity, an operator must be able to rate limit | |||
| Echo Request and Echo Reply messages. A reasonably | Echo Request and Echo Reply messages. A reasonably | |||
| selected default interval between Echo Request control packets | selected default interval between Echo Request control packets | |||
| can provide additional benefit for an operator. If the protocol is increme ntally | can provide additional benefit for an operator. If the protocol is increme ntally | |||
| deployed in the NSH domain, SFC elements, e.g., Classifier or SFF, | deployed in the NSH domain, SFC elements, e.g., Classifier or SFF, | |||
| that don't support Active SFC OAM will discard protocol's packets. | that don't support SFC active OAM will discard the protocol's packets. | |||
| If an SFC uses a re-classification along the SFP or when the principle of load b | If SFC uses a reclassification along the SFP or when the principle of load balan | |||
| alancing is unknown, | cing is unknown, | |||
| the fate-sharing between data and active OAM packets cannot be guaranteed. | the fate sharing between data and active OAM packets cannot be guaranteed. | |||
| As a result, the OAM outcome might not reflect the state of the entire SFC prope rly but only its segment. | As a result, the OAM outcome might not reflect the state of the entire SFC prope rly but only its segment. | |||
| In general, it is an operational task to consider the cases where active OAM may | In general, it is an operational task to consider the cases where active OAM may | |||
| not share fate with monitored SFP. | not share fate with the monitored SFP. | |||
| SFC NSH Echo Request/Reply also can be used in combination with the existi | The SFC NSH Echo Request/Reply also can be used in combination with the ex | |||
| ng | isting | |||
| mechanisms discussed in <xref target="RFC8924"/>, filling the gaps and ext ending their functionalities. | mechanisms discussed in <xref target="RFC8924"/>, filling the gaps and ext ending their functionalities. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Management of the SFC NSH Echo Request/Reply protocol can be provided by a proprietary tool, e.g., command line interface, | Management of the SFC NSH Echo Request/Reply protocol can be provided by a proprietary tool, e.g., command line interface, | |||
| or based on a data model, structured or standardized. | or based on a data model that is structured or standardized. | |||
| </t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t> | ||||
| The authors greatly appreciate the thorough review and the most helpful | ||||
| comments from Dan Wing, Dirk von Hugo, | ||||
| Mohamed Boucadair, Donald Eastlake, Carlos Pignataro, and Frank Brockner | ||||
| s. The authors are thankful to John Drake for his review | ||||
| and the reference to the work on BGP Control Plane for NSH SFC. | ||||
| The authors express their appreciation to Joel M. Halpern for his sugges | ||||
| tion about the load-balancing scenario. | ||||
| The authors greatly appreciate the thoroughness of comments and thoughtf | ||||
| ul suggestions by Darren Dukes that significantly improved the document. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="iana-considerations" numbered="true" toc="default"> | <section anchor="iana-considerations" numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <t> | <t> | |||
| The terms used in the IANA Considerations below are intended to be consist ent with <xref target="RFC8126"/>. | The terms used in the IANA considerations below are intended to be consist ent with <xref target="RFC8126"/>. | |||
| </t> | </t> | |||
| <section anchor="iana-sfc-oam-protocol" numbered="true" toc="default"> | <section anchor="iana-sfc-oam-protocol" numbered="true" toc="default"> | |||
| <name>SFC Active OAM Protocol</name> | <name>SFC Active OAM Protocol</name> | |||
| <t> | <t> | |||
| IANA is requested to assign a new type from the sub-registry NSH Next Protocol of the Network Service Header (NSH) Parameters registry as follows: | IANA has assigned the following new type in the "NSH Next Protocol" registry wit hin the "Network Service Header (NSH) Parameters" group of registries: | |||
| </t> | </t> | |||
| <table anchor="iana-sfc-oam-tbl" align="center"> | <table anchor="iana-sfc-oam-tbl" align="center"> | |||
| <name>SFC Active OAM Protocol</name> | <name>SFC Active OAM Protocol</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Value</th> | <th align="left">Next Protocol</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">TBA1</td> | <td align="left">0x07</td> | |||
| <td align="center">SFC Active OAM</td> | <td align="left">SFC Active OAM</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| <section anchor="iana-sfc-active-oam-parameters" numbered="true" toc="de fault"> | <section anchor="iana-sfc-active-oam-parameters" numbered="true" toc="de fault"> | |||
| <name>SFC Active OAM</name> | <name>SFC Active OAM</name> | |||
| <t> | <t> | |||
| IANA is requested to create an SFC Active OAM registry containing the sub-regist ries listed below. | IANA has created the "Service Function Chaining (SFC) Active Operations, Adminis tration, and Maintenance (OAM)" group of registries, which contains the registri es described in the following subsections. | |||
| </t> | </t> | |||
| <section anchor="iana-sfc-oam-msg-type" numbered="true" toc="default"> | <section anchor="iana-sfc-oam-msg-type" numbered="true" toc="default"> | |||
| <name>SFC Active OAM Message Type</name> | <name>SFC Active OAM Message Types</name> | |||
| <t> | <t> | |||
| IANA is requested to create in the SFC Active OAM registry a sub-registry as follows: | IANA has created the "SFC Active OAM Message Types" registry as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>Sub-registry Name: SFC Active OAM Message Type.</li> | <dt>Registry Name:</dt> <dd>SFC Active OAM Message Types</dd></dl> | |||
| <li>Assignment Policy:</li> | <dl newline="true" spacing="normal"> | |||
| <li>2-31 IETF Review</li> | <dt>Assignment Policy:</dt> | |||
| <li>32-62 First Come First Served</li> | <dd><dl newline="false" spacing="compact"> | |||
| <li>Reference: [this document]</li> | <dt>0 - 31</dt> <dd>IETF Review</dd> | |||
| </ul> | <dt>32 - 62</dt> <dd>First Come First Served</dd> | |||
| </dl></dd></dl> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Reference:</dt> <dd>RFC 9516</dd> | ||||
| </dl> | ||||
| <table anchor="iana-sfc-header-type-tbl" align="center"> | <table anchor="iana-sfc-header-type-tbl" align="center"> | |||
| <name>SFC Active OAM Message Type</name> | <name>SFC Active OAM Message Types</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Value</th> | <th align="left">Value</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">0</td> | <td align="left">0</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left">1</td> | |||
| <td align="center">SFC Echo Request/Echo Reply</td> | <td align="left">SFC Echo Request/Reply</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | ||||
| <tr> | ||||
| <td align="left">2 - 31</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">32-62</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">63</td> | <td align="left">2 - 62</td> | |||
| <td align="center">Reserved</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | </tr> | |||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <!-- | ||||
| <section anchor="iana-sfc-oam-flags" numbered="true" toc="default"> | ||||
| <name>SFC Active OAM Header Flags</name> | ||||
| <t> | ||||
| IANA is requested to create in the SFC Active OAM Registry the sub-registry | ||||
| SFC Active OAM Flags. | ||||
| </t> | ||||
| <t> | ||||
| This sub-registry tracks the assignment of 8 flags in the Flags | ||||
| field of the SFC Active OAM Header. The flags are | ||||
| numbered from 0 (most significant bit, transmitted first) to 7. | ||||
| </t> | ||||
| <t> | ||||
| New entries are assigned by Standards Action. | ||||
| </t> | ||||
| <table anchor="iana-sfc-active-oam-flags-tbl" align="center"> | ||||
| <name>SFC Active OAM Header Flags</name> | ||||
| <thead> | ||||
| <tr> | <tr> | |||
| <th align="left">Bit Number</th> | <td align="left">63</td> | |||
| <th align="center">Description</th> | <td align="left">Reserved</td> | |||
| <th align="left">Reference</th> | <td align="left">RFC 9516</td> | |||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">7-0</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| --> | ||||
| </section> | ||||
| <section anchor="iana-echo-ping-parameters" numbered="true" toc="default"> | ||||
| <name>SFC Echo Request/Echo Reply Parameters</name> | ||||
| <t> | ||||
| IANA is requested to create in the SFC Active OAM Registry the sub-registry SF | ||||
| C Echo Request/Echo Reply Parameters. | ||||
| </t> | ||||
| <section anchor="iana-echo-ping-global-flags" numbered="true" toc="de fault"> | <section anchor="iana-echo-ping-global-flags" numbered="true" toc="de fault"> | |||
| <name>SFC Echo Request Flags</name> | <name>SFC Echo Request Flags</name> | |||
| <t> | <t> | |||
| IANA is requested to create in the SFC Echo Request/Echo Reply | IANA has created the "SFC Echo Request Flags" registry to track the assignme | |||
| Parameters the SFC Echo Request Flags sub-registry. | nt of the 16 flags in the SFC Echo Request Flags | |||
| </t> | ||||
| <t> | ||||
| This sub-registry tracks the assignment of 16 flags in the SFC Echo R | ||||
| equest Flags | ||||
| field of the SFC Echo Request message. The flags are | field of the SFC Echo Request message. The flags are | |||
| numbered from 0 (most significant bit, transmitted first) to 15. | numbered from 0 (the most significant bit is transmitted first) to 15. | |||
| </t> | </t><t>IANA has created the "SFC Echo Request Flags" registry as follows:</t> | |||
| <t> | <dl><dt>Registry Name:</dt><dd>SFC Echo Request Flags</dd></dl> | |||
| New entries are assigned by Standards Action. | <dl newline="true"><dt>Assignment Policy:</dt><dd> | |||
| </t> | <dl spacing="compact"><dt>0 - 15</dt><dd>Standards Action</dd></dl></dd> | |||
| <dt>Reference:</dt><dd>RFC 9516</dd> | ||||
| </dl> | ||||
| <table anchor="iana-sfc-global-flags-tbl" align="center"> | <table anchor="iana-sfc-global-flags-tbl" align="center"> | |||
| <name>SFC Echo Request Flags</name> | <name>SFC Echo Request Flags</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Bit Number</th> | <th align="left">Bit Number</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">15-0</td> | <td align="left">0 - 15</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| <section anchor="iana-sfc-echo-message-type" numbered="true" toc="default" > | <section anchor="iana-sfc-echo-message-type" numbered="true" toc="default" > | |||
| <name>SFC Echo Types</name> | <name>SFC Echo Types</name> | |||
| <t> | <t> | |||
| IANA is requested to create in the SFC Echo Request/Echo Reply | IANA has created the "SFC Echo Types" registry as follows: | |||
| Parameters the SFC Echo Types sub-registry as follows: | ||||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>Sub-registry Name: SFC Echo Types</li> | <dt>Registry Name:</dt> <dd>SFC Echo Types</dd></dl> | |||
| <li>Assignment Policy:</li> | <dl newline="true" spacing="normal"> | |||
| <li>5 - 175 IETF Review</li> | <dt>Assignment Policy:</dt> | |||
| <li>176 - 239 First Come First Served</li> | <dd><dl newline="false" spacing="compact"> | |||
| <!-- | <dt>0 - 175</dt> <dd>IETF Review</dd> | |||
| <li>240 - 251 Experimental</li> | <dt>176 - 239</dt> <dd>First Come First Served</dd> | |||
| <li>252 - 254 Private Use</li> | <dt>240 - 251</dt> <dd>Experimental Use</dd> | |||
| --> | <dt>252 - 254</dt> <dd>Private Use</dd></dl></dd> | |||
| <li>Reference: [this document]</li> | </dl> | |||
| </ul> | <dl newline="false" spacing="normal"> | |||
| <dt>Reference:</dt> <dd>RFC 9516</dd> | ||||
| </dl> | ||||
| <table anchor="iana-sfc-msg-type-tbl" align="center"> | <table anchor="iana-sfc-msg-type-tbl" align="center"> | |||
| <name>SFC Echo Types</name> | <name>SFC Echo Types</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Value</th> | <th align="left">Value</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">0</td> | <td align="left">0</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left">1</td> | |||
| <td align="center">SFC Echo Request</td> | <td align="left">SFC Echo Request</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">2</td> | <td align="left">2</td> | |||
| <td align="center">SFC Echo Reply</td> | <td align="left">SFC Echo Reply</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">3</td> | <td align="left">3</td> | |||
| <td align="center">SFP Consistency Verification Request</td> | <td align="left">SFP Consistency Verification Request</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">4</td> | <td align="left">4</td> | |||
| <td align="center">SFP Consistency Verification Reply</td> | <td align="left">SFP Consistency Verification Reply</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">5 - 175</td> | <td align="left">5 - 239</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | ||||
| <tr> | ||||
| <td align="left">176 - 239</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">240 - 251</td> | <td align="left">240 - 251</td> | |||
| <td align="center">Experimental</td> | <td align="left">Reserved for Experimental Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">252 - 254</td> | <td align="left">252 - 254</td> | |||
| <td align="center">Private Use</td> | <td align="left">Reserved for Private Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">255</td> | <td align="left">255</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| <section anchor="iana-sfc-ping-reply-mode" numbered="true" toc="default"> | <section anchor="iana-sfc-ping-reply-mode" numbered="true" toc="default"> | |||
| <name>SFC Echo Reply Modes</name> | <name>SFC Echo Reply Modes</name> | |||
| <t> | <t> | |||
| IANA is requested to create in the SFC Echo Request/Echo Reply | IANA has created the "SFC Echo Reply Modes" registry as follows: | |||
| Parameters registry the new sub-registry as follows: | ||||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>Sub-registry Name: SFC Echo Reply Mode</li> | <dt>Registry Name:</dt> <dd>SFC Echo Reply Modes</dd></dl> | |||
| <li>Assignment Policy:</li> | <dl newline="true" spacing="normal"> | |||
| <li>8 - 175 IETF Review</li> | <dt>Assignment Policy:</dt> | |||
| <li>176 - 239 First Come First Served</li> | <dd><dl newline="false" spacing="compact"> | |||
| <!-- | <dt>0 - 175</dt> <dd>IETF Review</dd> | |||
| <li>240 - 251 Experimental</li> | <dt>176 - 239</dt> <dd>First Come First Served</dd> | |||
| <li>252 - 254 Private Use</li> | <dt>240 - 251</dt> <dd>Experimental Use</dd> | |||
| --> | <dt>252 - 254</dt> <dd>Private Use</dd> | |||
| <li>Reference: [this document]</li> | </dl></dd></dl> | |||
| </ul> | <dl newline="false" spacing="normal"> | |||
| <dt>Reference:</dt> <dd>RFC 9516</dd> | ||||
| </dl> | ||||
| <table anchor="iana-sfc-reply-modes-tbl" align="center"> | <table anchor="iana-sfc-reply-modes-tbl" align="center"> | |||
| <name>SFC Echo Reply Modes</name> | <name>SFC Echo Reply Modes</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Value</th> | <th align="left">Value</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">0</td> | <td align="left">0</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left">1</td> | |||
| <td align="center">Do Not Reply</td> | <td align="left">Do Not Reply</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">2</td> | <td align="left">2</td> | |||
| <td align="center">Reply via an IPv4/IPv6 UDP Packet</td> | <td align="left">Reply via an IPv4/IPv6 UDP Packet</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">3</td> | <td align="left">3</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">4</td> | <td align="left">4</td> | |||
| <td align="center">Reply via Specified Path</td> | <td align="left">Reply via Specified Path</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">5</td> | <td align="left">5</td> | |||
| <td align="center">Reply via an IPv4/IPv6 UDP Packet with the data | <td align="left">Reply via an IPv4/IPv6 UDP Packet with the data i | |||
| integrity protection</td> | ntegrity protection</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">6</td> | <td align="left">6</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">7</td> | <td align="left">7</td> | |||
| <td align="center">Reply via Specified Path with the data integrit | <td align="left">Reply via Specified Path with the data integrity | |||
| y protection</td> | protection</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">8 - 175</td> | <td align="left">8 - 239</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | ||||
| <tr> | ||||
| <td align="left">176 - 239</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">240 - 251</td> | <td align="left">240 - 251</td> | |||
| <td align="center">Experiemntal</td> | <td align="left">Reserved for Experimental Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">252 - 254</td> | <td align="left">252 - 254</td> | |||
| <td align="center">Private Use</td> | <td align="left">Reserved for Private Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">255</td> | <td align="left">255</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| <section anchor="iana-sfc-ping-return-codes" numbered="true" toc="default" > | <section anchor="iana-sfc-ping-return-codes" numbered="true" toc="default" > | |||
| <name>SFC Echo Return Codes</name> | <name>SFC Echo Return Codes</name> | |||
| <t> | <t> | |||
| IANA is requested to create in the SFC Echo Request/Echo Reply | IANA has created the "SFC Echo Return Codes" registry as follows: | |||
| Parameters registry the new sub-registry as follows: | ||||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>Sub-registry Name: SFC Echo Return Codes</li> | <dt>Registry Name:</dt> <dd>SFC Echo Return Codes</dd></dl> | |||
| <li>Assignment Policy:</li> | <dl newline="true" spacing="normal"> | |||
| <li>9 - 191 IETF Review</li> | <dt>Assignment Policy:</dt> | |||
| <li>192 - 251 First Come First Served</li> | <dd><dl newline="false" spacing="compact"> | |||
| <!-- <li>252 - 254 Private Use</li> --> | <dt>0 - 191</dt> <dd>IETF Review</dd> | |||
| <li>Reference: [this document]</li> | <dt>192 - 251</dt> <dd>First Come First Served</dd> | |||
| </ul> | <dt>252 - 254</dt> <dd>Private Use</dd> | |||
| </dl></dd></dl> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Reference:</dt> <dd>RFC 9516</dd> | ||||
| </dl> | ||||
| <table anchor="iana-sfc-ping-return-codes-tbl" align="center"> | <table anchor="iana-sfc-ping-return-codes-tbl" align="center"> | |||
| <name>SFC Echo Return Codes</name> | <name>SFC Echo Return Codes</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Value</th> | <th align="left">Value</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">0</td> | <td align="left">0</td> | |||
| <td align="center">No Error</td> | <td align="left">No Error</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left">1</td> | |||
| <td align="center">Malformed Echo Request received</td> | <td align="left">Malformed Echo Request received</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">2</td> | <td align="left">2</td> | |||
| <td align="center">One or more of the TLVs was not understood</td> | <td align="left">One or more of the TLVs was not understood</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">3</td> | <td align="left">3</td> | |||
| <td align="center">Authentication failed</td> | <td align="left">Authentication failed</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">4</td> | <td align="left">4</td> | |||
| <td align="center">SFC TTL Exceeded</td> | <td align="left">SFC TTL Exceeded</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">5</td> | <td align="left">5</td> | |||
| <td align="center">End of the SFP</td> | <td align="left">End of the SFP</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">6 </td> | <td align="left">6</td> | |||
| <td align="left">Reply Service Function Path TLV is missing < | <td align="left">Reply Service Function Path TLV is missing</td> | |||
| /td> | <td align="left">RFC 9516</td> | |||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">7 </td> | <td align="left">7</td> | |||
| <td align="left">Reply SFP was not found </td> | <td align="left">Reply SFP was not found</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">8 </td> | <td align="left">8</td> | |||
| <td align="left">Unverifiable Reply Service Function Path </t | <td align="left">Unverifiable Reply Service Function Path</td> | |||
| d> | <td align="left">RFC 9516</td> | |||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">9 -191</td> | <td align="left">9 - 251</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | ||||
| <tr> | ||||
| <td align="left">192-251</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">252-254</td> | <td align="left">252 - 254</td> | |||
| <td align="center">Private Use</td> | <td align="left">Reserved for Private Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">255</td> | <td align="left">255</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| </section> | ||||
| <section anchor="iana-sfc-active-oam-tlv" numbered="true" toc="default"> | <section anchor="iana-sfc-active-oam-tlv" numbered="true" toc="default"> | |||
| <name>SFC Active OAM TLV Type</name> | <name>SFC Active OAM TLV Types</name> | |||
| <t> | <t> | |||
| IANA is requested to create in the in the SFC Active OAM Registry the sub-re gistry as follows: | IANA has created the "SFC Active OAM TLV Types" registry as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>Registry Name: SFC Active OAM TLV Type</li> | <dt>Registry Name:</dt> <dd>SFC Active OAM TLV Types</dd></dl> | |||
| <li>Assignment Policy:</li> | <dl newline="true" spacing="normal"> | |||
| <li>6 -175 IETF Review</li> | <dt>Assignment Policy:</dt> | |||
| <li>176 - 239 First Come First Served</li> | <dd><dl newline="false" spacing="compact"> | |||
| <!-- | <dt>0 - 175</dt> <dd>IETF Review</dd> | |||
| <li>240 - 251 Experimental</li> | <dt>176 - 239</dt> <dd>First Come First Served</dd> | |||
| <li>252 - 254 Private Use</li> | <dt>240 - 251</dt> <dd>Experimental Use</dd> | |||
| --> | <dt>252 - 254</dt> <dd>Private Use</dd></dl></dd></dl> | |||
| <li>Reference: [this document]</li> | <dl newline="false" spacing="normal"> | |||
| </ul> | <dt>Reference:</dt> <dd>RFC 9516</dd> | |||
| </dl> | ||||
| <table anchor="iana-sfc-active-oam-type-tbl" align="center"> | <table anchor="iana-sfc-active-oam-type-tbl" align="center"> | |||
| <name>SFC Active OAM TLV Type Registry</name> | <name>SFC Active OAM TLV Types</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Value</th> | <th align="left">Value</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">0</td> | <td align="left">0</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left">1</td> | |||
| <td align="center">Source ID TLV</td> | <td align="left">Source ID TLV</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">2</td> | <td align="left">2</td> | |||
| <td align="center">Errored TLVs</td> | <td align="left">Errored TLVs</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">3 </td> | <td align="left">3</td> | |||
| <td align="left">Reply Service Function Path Type </td> | <td align="left">Reply Service Function Path Type</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">4</td> | <td align="left">4</td> | |||
| <td align="center">SFF Information Record Type</td> | <td align="left">SFF Information Record Type</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">5</td> | <td align="left">5</td> | |||
| <td align="center">SF Information</td> | <td align="left">SF Information</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | ||||
| <tr> | ||||
| <td align="left">6 - 175</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">176 - 239</td> | <td align="left">6 - 239</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">240 - 251</td> | <td align="left">240 - 251</td> | |||
| <td align="center">Experimental</td> | <td align="left">Reserved for Experimental Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">252 - 254</td> | <td align="left">252 - 254</td> | |||
| <td align="center">Private Use</td> | <td align="left">Reserved for Private Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">255</td> | <td align="left">255</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| <section anchor="coam-sf-id-type-sec" numbered="true" toc="default"> | <section anchor="coam-sf-id-type-sec" numbered="true" toc="default"> | |||
| <name>SF Identifier Types</name> | <name>SF Identifier Types</name> | |||
| <t> | <t> | |||
| IANA is requested to create in the SF Types registry <xref target="RFC9263"/ > the sub-registry as follows: | IANA has created the "SF Identifier Types" as follows: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
| <li>Registry Name: SF Identifier Types</li> | <dt>Registry Name:</dt> <dd>SF Identifier Types</dd> | |||
| <li>Assignment Policy:</li> | </dl> | |||
| <li>4 -191 IETF Review</li> | <dl newline="true" spacing="normal"> | |||
| <li>192 - 251 First Come First Served</li> | <dt>Assignment Policy:</dt> | |||
| <!-- <li>252 - 254 Private Use</li> --> | <dd><dl newline="false" spacing="compact"> | |||
| <li>Reference: [this document]</li> | <dt>0 - 191</dt> <dd>IETF Review</dd> | |||
| </ul> | <dt>192 - 251</dt> <dd>First Come First Served</dd> | |||
| <dt>252 - 254</dt> <dd>Private Use</dd> | ||||
| </dl></dd></dl> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Reference:</dt> <dd>RFC 9516</dd> | ||||
| </dl> | ||||
| <table anchor="iana-sf-id-type-tbl" align="center"> | <table anchor="iana-sf-id-type-tbl" align="center"> | |||
| <name>SF Identifier Type</name> | <name>SF Identifier Types</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Value</th> | <th align="left">Value</th> | |||
| <th align="center">Description</th> | <th align="left">Description</th> | |||
| <th align="left">Reference</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">0</td> | <td align="left">0</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left">1</td> | |||
| <td align="center">IPv4</td> | <td align="left">IPv4</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">2</td> | <td align="left">2</td> | |||
| <td align="center">IPv6</td> | <td align="left">IPv6</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">3</td> | <td align="left">3</td> | |||
| <td align="center">MAC</td> | <td align="left">MAC</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | ||||
| <tr> | ||||
| <td align="left">4 -191</td> | ||||
| <td align="center">Unassigned</td> | ||||
| <td align="left">This document</td> | ||||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">192-251</td> | <td align="left">4 - 251</td> | |||
| <td align="center">Unassigned</td> | <td align="left">Unassigned</td> | |||
| <td align="left">This document</td> | <td align="left"></td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">252-254</td> | <td align="left">252 - 254</td> | |||
| <td align="center">Private Use</td> | <td align="left">Reserved for Private Use</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">255</td> | <td align="left">255</td> | |||
| <td align="center">Reserved</td> | <td align="left">Reserved</td> | |||
| <td align="left">This document</td> | <td align="left">RFC 9516</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references> | <references> | |||
| <name>References</name> | <name>References</name> | |||
| <references> | <references> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| FC.2119.xml"/> | 119.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| FC.8174.xml"/> | 174.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| FC.8300.xml"/> | 300.xml"/> | |||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-sf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| c-oam-packet.xml"/> | 451.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| C.9145.xml"/> | 145.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| C.9015.xml"/> | 015.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| FC.7665.xml"/> | 665.xml"/> | |||
| <!-- <?rfc include="reference.RFC.2104"?> --> | ||||
| </references> | </references> | |||
| <references> | <references> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| C.7110.xml"/> | 110.xml"/> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0 | ||||
| <!-- <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC. | 792.xml"/> | |||
| 8126.xml"/> --> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | 799.xml"/> | |||
| FC.0792.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | 443.xml"/> | |||
| FC.7799.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | 029.xml"/> | |||
| FC.4443.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | 302.xml"/> | |||
| FC.8029.xml"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
| <!-- <?rfc include="reference.RFC.1423"?> --> | 303.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| .4302.xml"/> | 924.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| FC.4303.xml"/> | 263.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.75 | |||
| FC.8924.xml"/> | 55.xml"/> | |||
| <!-- <?rfc include="reference.RFC.4868"?> --> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| 437.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| FC.9263.xml"/> | 595.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7555. | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
| xml"/> | 706.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/re | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
| ference.RFC.6437.xml"/> | 086.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/re | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| ference.RFC.8595.xml"/> | 126.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/ref | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
| erence.RFC.5706.xml"/> | 880.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/ref | ||||
| erence.RFC.4086.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/ref | ||||
| erence.RFC.8126.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/ref | ||||
| erence.RFC.5880.xml"/> | ||||
| </references> | </references> | |||
| </references> | </references> | |||
| <section numbered="false" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t> | ||||
| The authors greatly appreciate the thorough review and the most helpful | ||||
| comments from <contact fullname="Dan Wing"/>, <contact fullname="Dirk von Hugo" | ||||
| />, | ||||
| <contact fullname="Mohamed Boucadair"/>, <contact fullname="Donald Eastl | ||||
| ake 3rd"/>, <contact fullname="Carlos Pignataro"/>, and <contact fullname="Frank | ||||
| Brockners"/>. The authors are thankful to <contact fullname="John Drake"/> for | ||||
| his review | ||||
| and the reference to the work on BGP control plane for NSH SFC. | ||||
| The authors express their appreciation to <contact fullname="Joel M. Hal | ||||
| pern"/> for his suggestion about the load-balancing scenario. | ||||
| The authors greatly appreciate the thoroughness of comments and thoughtf | ||||
| ul suggestions by <contact fullname="Darren Dukes"/> that significantly improved | ||||
| the document. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="contr-sec" numbered="false" toc="default"> | <section anchor="contr-sec" numbered="false" toc="default"> | |||
| <name>Contributors' Addresses</name> | <name>Contributors</name> | |||
| <contact initials="C" surname="Wang" fullname="Cui Wang"> | <contact initials="C" surname="Wang" fullname="Cui Wang"> | |||
| <organization>Individual contributor</organization> | <organization>Individual contributor</organization> | |||
| <address> | <address> | |||
| <email>lindawangjoy@gmail.com</email> | <email>lindawangjoy@gmail.com</email> | |||
| </address> | </address> | |||
| </contact> | </contact> | |||
| <!-- | ||||
| <contact initials="B" surname="Khasnabish" fullname="Bhumip Khasnabish"> | ||||
| <organization>Individual contributor</organization> | ||||
| <address> | ||||
| <email>vumip1@gmail.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| --> | ||||
| <contact fullname="Zhonghua Chen" initials="Z." surname="Chen"> | <contact fullname="Zhonghua Chen" initials="Z." surname="Chen"> | |||
| <organization>China Telecom</organization> | <organization>China Telecom</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>No.1835, South PuDong Road</street> | <street>No.1835, South PuDong Road</street> | |||
| <city>Shanghai</city> | <city>Shanghai</city> | |||
| <region> | <region> | |||
| </region> | </region> | |||
| <code>201203</code> | <code>201203</code> | |||
| <country>China</country> | <country>China</country> | |||
| </postal> | </postal> | |||
| <phone>+86 18918588897</phone> | <phone>+86 18918588897</phone> | |||
| <email>chenzhongh@chinatelecom.cn</email> | <email>chenzhongh@chinatelecom.cn</email> | |||
| </address> | </address> | |||
| </contact> | </contact> | |||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 261 change blocks. | ||||
| 1103 lines changed or deleted | 979 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||