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