rfc9655xml2.original.xml | rfc9655.xml | |||
---|---|---|---|---|
<?xml version="1.0"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.2119.xml"> | ||||
<!ENTITY RFC8287 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8287.xml"> | ||||
<!ENTITY RFC8029 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8029.xml"> | ||||
<!ENTITY RFC3443 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.3443.xml"> | ||||
<!ENTITY RFC5226 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.5226.xml"> | ||||
<!ENTITY RFC8402 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8402.xml"> | ||||
<!ENTITY RFC9041 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.9041.xml"> | ||||
<!ENTITY RFC7942 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.7942.xml"> | ||||
]> | ||||
<?rfc toc="yes"?> | ||||
<?rfc tocompact="yes"?> | ||||
<?rfc tocdepth="3"?> | ||||
<?rfc tocindent="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc submissionType="IETF" category="std" docName="draft-ietf-mpls-egress-tlv-fo | ||||
r-nil-fec-15" | ||||
ipr="trust200902" consensus="true" version="2"> | ||||
<front> | ||||
<title abbrev="Egress Validation in LSP Ping/Traceroute "> | ||||
Egress Validation in Label Switched Path Ping and Traceroute Mechanisms</title | ||||
> | ||||
<author initials="D." surname="Rathi" fullname="Deepti N. Rathi" | ||||
role="editor"> | ||||
<organization>Nokia</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Manyata Embassy Business Park</street> | ||||
<city>Bangalore</city> | ||||
<region>Karnataka</region> | ||||
<code>560045</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>deepti.nirmalkumarji_rathi@nokia.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="S." surname="Hegde" fullname="Shraddha Hegde" | ||||
role="editor"> | ||||
<organization>Juniper Networks Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Exora Business Park</street> | ||||
<city>Bangalore</city> | ||||
<region>KA</region> | ||||
<code>560103</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>shraddha@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="K." surname="Arora" fullname="Kapil Arora"> | ||||
<organization>Individual Contributor</organization> | ||||
<address> | ||||
<email>kapil.it@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="Z." surname="Ali" fullname="Zafar Ali"> | ||||
<organization>Cisco Systems, Inc.</organization> | ||||
<address> | ||||
<email>zali@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="N." surname="Nainar" fullname="Nagendra Kumar Nainar"> | <!DOCTYPE rfc [ | |||
<organization>Cisco Systems, Inc.</organization> | <!ENTITY nbsp " "> | |||
<address> | <!ENTITY zwsp "​"> | |||
<email>naikumar@cisco.com</email> | <!ENTITY nbhy "‑"> | |||
</address> | <!ENTITY wj "⁠"> | |||
</author> | ]> | |||
<date year="2024"/> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
<area>Routing</area> | std" docName="draft-ietf-mpls-egress-tlv-for-nil-fec-15" number="9655" ipr="trus | |||
<workgroup>Routing area</workgroup> | t200902" consensus="true" version="3" obsoletes="" updates="" xml:lang="en" tocI | |||
<keyword>FEC</keyword> | nclude="true" tocDepth="3" symRefs="true" sortRefs="true"> | |||
<keyword>OAM</keyword> | ||||
<keyword>OSPF</keyword> | ||||
<keyword>IS-IS</keyword> | ||||
<keyword>SPRING</keyword> | ||||
<abstract> | ||||
<t> | ||||
The MPLS ping and traceroute mechanisms, as described in <xref target="RF | ||||
C8029"/> | ||||
and the related extensions for Segment Routing (SR) defined in <xref targ | ||||
et="RFC8287"/>, | ||||
is highly valuable for validating control plane and data plane synchroniz | ||||
ation. | ||||
In certain environments, only some intermediate or transit nodes may have | ||||
been | ||||
upgraded to support these validation procedures. A straightforward MPLS p | ||||
ing | ||||
and traceroute mechanism allows traversing any path without validating th | ||||
e | ||||
control plane state. <xref target="RFC8029"/> supports this mechanism wit | ||||
h the Nil | ||||
Forwarding Equivalence Class (FEC). The procedures outlined in <xref targ | ||||
et="RFC8029"/> | ||||
is primarily applicable when the Nil FEC is used as an intermediate FEC | ||||
in the label stack. However, challenges arise when all labels in the labe | ||||
l | ||||
stack are represented using the Nil FEC.</t> | ||||
<t>This document introduces a new Type-Length-Value (TLV) as an extension | <front> | |||
<title abbrev="Egress Validation in LSP Ping/Traceroute">Egress Validation | ||||
in Label Switched Path Ping and Traceroute Mechanisms</title> | ||||
<seriesInfo name="RFC" value="9655"/> | ||||
<author initials="D." surname="Rathi" fullname="Deepti N. Rathi" role="edito | ||||
r"> | ||||
<organization>Nokia</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Manyata Embassy Business Park</street> | ||||
<city>Bangalore</city> | ||||
<region>Karnataka</region> | ||||
<code>560045</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>deepti.nirmalkumarji_rathi@nokia.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="S." surname="Hegde" fullname="Shraddha Hegde" role="editor | ||||
"> | ||||
<organization>Juniper Networks Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Exora Business Park</street> | ||||
<city>Bangalore</city> | ||||
<region>Karnataka</region> | ||||
<code>560103</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>shraddha@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="K." surname="Arora" fullname="Kapil Arora"> | ||||
<organization>Individual Contributor</organization> | ||||
<address> | ||||
<email>kapil.it@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="Z." surname="Ali" fullname="Zafar Ali"> | ||||
<organization>Cisco Systems, Inc.</organization> | ||||
<address> | ||||
<email>zali@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="N." surname="Nainar" fullname="Nagendra Kumar Nainar"> | ||||
<organization>Cisco Systems, Inc.</organization> | ||||
<address> | ||||
<email>naikumar@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<date year="2024" month="September"/> | ||||
<area>RTG</area> | ||||
<workgroup>mpls</workgroup> | ||||
<keyword>FEC</keyword> | ||||
<keyword>OAM</keyword> | ||||
<keyword>OSPF</keyword> | ||||
<keyword>IS-IS</keyword> | ||||
<keyword>SPRING</keyword> | ||||
<abstract> | ||||
<t> | ||||
The MPLS ping and traceroute mechanisms described in RFC 8029 and the | ||||
related extensions for Segment Routing (SR) defined in RFC 8287 are | ||||
highly valuable for validating control plane and data plane | ||||
synchronization. In certain environments, only some intermediate or | ||||
transit nodes may have been upgraded to support these validation | ||||
procedures. A straightforward MPLS ping and traceroute mechanism | ||||
allows traversal of any path without validation of the control plane | ||||
state. RFC 8029 supports this mechanism with the Nil Forwarding | ||||
Equivalence Class (FEC). The procedures outlined in RFC 8029 are | ||||
primarily applicable when the Nil FEC is used as an intermediate FEC | ||||
in the FEC stack. However, challenges arise when all labels in the | ||||
label stack are represented using the Nil FEC.</t> | ||||
<t>This document introduces a new Type-Length-Value (TLV) as an extension | ||||
to the existing Nil FEC. It describes MPLS ping and traceroute procedures | to the existing Nil FEC. It describes MPLS ping and traceroute procedures | |||
using the Nil FEC with this extension to address and overcome these chall enges.</t> | using the Nil FEC with this extension to address and overcome these chall enges.</t> | |||
</abstract> | ||||
</abstract> | </front> | |||
<middle> | ||||
<note title="Requirements Language"> | <section anchor="intro" numbered="true" toc="default"> | |||
<t> | <name>Introduction</name> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOU | <t>Segment routing supports the creation of explicit paths by using one or | |||
LD", | more | |||
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" | Link-State IGP Segments or BGP Segments defined in <xref target="RFC8402" | |||
in this document are to be interpreted as described in BCP 14 | format="default"/>. | |||
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
</t> | ||||
</note> | ||||
</front> | ||||
<middle> | ||||
<section title="Introduction" anchor='intro'> | ||||
<t>Segment routing supports the creation of explicit paths by using one o | ||||
r more | ||||
Link State IGP Segments or BGP Segments defined in <xref target="RFC8402" | ||||
/>. | ||||
In certain use cases, the TE paths are | In certain use cases, the TE paths are | |||
built using mechanisms described in <xref target="RFC9256"/> | built using mechanisms described in <xref target="RFC9256" format="defaul t"/> | |||
by stacking the labels that represent the nodes and links in the explicit path. | by stacking the labels that represent the nodes and links in the explicit path. | |||
Controllers are often deployed to construct paths across multi-domain net works. | Controllers are often deployed to construct paths across multi-domain net works. | |||
In such deployments, the head-end routers may | In such deployments, the headend routers may | |||
have the link state database of its domain and may not be aware of the FE | have the link-state database of their domain and may not be aware of the | |||
C | FEC | |||
associated with labels that are used by the controller to build | associated with labels that are used by the controller to build | |||
paths across multiple domains. A very useful | paths across multiple domains. A very useful | |||
Operations, Administration, and Maintenance (OAM) requirement | Operations, Administration, and Maintenance (OAM) requirement | |||
is to be able to ping and trace these paths. </t> | is to be able to ping and trace these paths. </t> | |||
<t> | <t> | |||
<xref target="RFC8029"/> describes a simple and efficient mechanism to de | ||||
tect | ||||
data-plane failures in MPLS Label Switched Paths (LSPs). It defines | ||||
a probe message called an "MPLS echo request" and a response message | ||||
called an "MPLS echo reply" for returning the result of the probe. | ||||
SR-related extensions to Echo Request/Echo Reply are specified in | ||||
<xref target="RFC8287"/>. <xref target="RFC8029"/> primarily provides | ||||
mechanisms to validate the data plane and, secondarily, to verify the | ||||
consistency of the data plane with the control plane. | ||||
It also provides the ability to traverse | ||||
Equal-cost Multiple Paths (ECMP) and validate each of the ECMP paths. | ||||
Target FEC Stack TLV <xref target="RFC8029"/> contains sub-TLVs that | ||||
carry information about | ||||
the label. This information gets validated on each node for traceroute | ||||
and on the egress for ping. | ||||
The use of Target FEC | ||||
requires all nodes in the network to have implemented the validation | ||||
procedures. All intermediate nodes may not have been upgraded to support | ||||
validation procedures. In such cases, it is useful to have the ability to | ||||
traverse the paths in ping/traceroute mode without having to obtain the | ||||
FEC for each label. </t> | ||||
<t>A simple MPLS | <xref target="RFC8029" format="default"/> describes a simple and | |||
Echo Request/Echo Reply mechanism allows for traversing the SR Policy | efficient mechanism to detect data plane failures in MPLS Label | |||
path without validating the control plane state. <xref target="RFC8029"/> | Switched Paths (LSPs). It defines a probe message called an "MPLS | |||
supports this mechanism with FECs like Nil FEC and Generic FEC. | echo request" and a response message called an "MPLS echo reply" for | |||
However, there are challenges in reusing the Generic FEC and Nil FEC for | returning the result of the probe. SR-related extensions for these | |||
validation of SR policies <xref target="RFC9256"/>. | are specified in <xref target="RFC8287" format="default"/>. <xref | |||
Generic IPv4 prefix and Generic IPv6 prefix FECs are used when the | target="RFC8029" format="default"/> provides mechanisms primarily to | |||
protocol that is advertising | validate the data plane and secondarily to verify the consistency of | |||
the label is unknown. The information that is carried in Generic FEC is | the data plane with the control plane. It also provides the ability | |||
the IPv4 or IPv6 prefix and prefix length. Thus Generic FEC types perform | to traverse Equal-Cost Multipaths (ECMPs) and validate each of the | |||
an additional control plane validation. However, the details of Generic F | ECMP paths. The Target FEC Stack TLV <xref target="RFC8029" | |||
EC and | format="default"/> contains sub-TLVs that carry information about the | |||
validation procedures are not very detailed in the <xref target="RFC8029" | label. This information gets validated on each node for traceroute and | |||
/>. | on the egress for ping. The use of the Target FEC Stack TLV requires all | |||
The use-case mostly specifies inter-AS VPNs as the motivation. | nodes | |||
Certain aspects of SR such as anycast SIDs require clear guidelines | in the network to have implemented the validation procedures, but all | |||
on how the validation procedure should work. Also, Generic FEC may not be | intermediate nodes may not have been upgraded to support validation | |||
widely | procedures. In such cases, it is useful to have the ability to | |||
supported and if transit routers are not upgraded to support validation o | traverse the paths in ping/traceroute mode without having to obtain | |||
f Generic | the FEC for each label. </t> | |||
FEC, traceroute may fail. | ||||
On the other hand, Nil FEC consists of the label and there is no other as | <t>A simple MPLS echo request/reply mechanism allows for traversing the | |||
sociated | SR Policy path without validating the control plane state. <xref | |||
FEC information. Nil FEC is used to traverse the path without validation | target="RFC8029" format="default"/> supports this mechanism with FECs | |||
for | like the Nil FEC and the Generic | |||
FECs (i.e., Generic IPv4 prefix and Generic IPv6 prefix). However, there are c | ||||
hallenges in reusing | ||||
the Nil FEC and Generic FECs for validation of SR Policies <xref | ||||
target="RFC9256" format="default"/>. The Generic IPv4 prefix and Generic | ||||
IPv6 prefix FECs are used when the protocol that is advertising the | ||||
label is unknown. The information that is carried in the Generic FECs is t | ||||
he | ||||
IPv4 or IPv6 prefix and prefix length. Thus, the Generic FEC types perform | ||||
an additional control plane validation. However, the Generic | ||||
FECs and relevant validation procedures are not thoroughly detailed in <xr | ||||
ef | ||||
target="RFC8029" format="default"/>. | ||||
The use case mostly specifies inter-AS (Autonomous System) VPNs as the mo | ||||
tivation. | ||||
Certain aspects of SR, such as anycast Segment Identifiers (SIDs), requir | ||||
e clear guidelines | ||||
on how the validation procedure should work. Also, the Generic FECs may n | ||||
ot be widely | ||||
supported, and if transit routers are not upgraded to support validation | ||||
of Generic | ||||
FECs, traceroute may fail. | ||||
On the other hand, the Nil FEC consists of the label, and there is no oth | ||||
er associated | ||||
FEC information. The Nil FEC is used to traverse the path without validat | ||||
ion for | ||||
cases where the FEC is not defined or routers are not upgraded to support the | cases where the FEC is not defined or routers are not upgraded to support the | |||
FECs. Thus, it can be used to check any combination of segments on any da ta path. | FECs. Thus, it can be used to check any combination of segments on any da ta path. | |||
The procedures described in <xref target="RFC8029"/> are mostly applicabl | The procedures described in <xref target="RFC8029" format="default"/> are | |||
e | mostly applicable when the | |||
when the Nil FEC is used where the Nil FEC is intermediate in the | Nil FEC is used as an intermediate FEC in the FEC stack. | |||
label stack. When all labels in the label-stack is represented using Nil | Challenges arise when all labels in the label stack are represented | |||
FEC, | using the Nil FEC.</t> | |||
it poses some challenges.</t> | <t> <xref target="Problems_with_Nil_FEC" format="default"/> discusses the | |||
<t> <xref target="Problems_with_Nil_FEC"/> discusses the problems | problems | |||
associated with using Nil FEC in an MPLS ping/traceroute procedure and | associated with using the Nil FEC in an MPLS ping/traceroute procedure, a | |||
<xref target="egress_tlv"/> and <xref target="detail_procedure"/> discuss | nd Sections | |||
<xref target="egress_tlv" format="counter"/> and <xref target="detail_pro | ||||
cedure" format="counter"/> discuss | ||||
simple extensions needed to solve the problem. | simple extensions needed to solve the problem. | |||
</t> | </t> | |||
<t>The problems and the solutions described in this document apply to | <t>The problems and the solutions described in this document apply to the | |||
MPLS data plane. SRv6 is out-of-scope for this document.</t> | MPLS data plane. Segment Routing over IPv6 (SRv6) is out of scope for thi | |||
s document.</t> | ||||
<section anchor="Requirements_Language" numbered="true" toc="default"> | ||||
<name>Requirements Language</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section anchor='Problems_with_Nil_FEC' title='Problem with Nil FEC'> | </section> | |||
<t>The purpose of Nil FEC as described in <xref target="RFC8029"/> is to | <section anchor="Problems_with_Nil_FEC" numbered="true" toc="default"> | |||
ensure hiding of transit tunnel information and in some cases to avoid fa | <name>Problem with Nil FEC</name> | |||
lse | <t>The purpose of the Nil FEC, as described in <xref target="RFC8029" form | |||
at="default"/>, is to | ||||
ensure that transit tunnel information is hidden and, in some cases, to a | ||||
void false | ||||
negatives when the FEC information is unknown.</t> | negatives when the FEC information is unknown.</t> | |||
<t>This document uses a Nil FEC to represent the complete label stack in | <t>This document uses a Nil FEC to represent the complete label stack in a | |||
an | n | |||
MPLS Echo Request message in ping and traceroute mode. A single Nil FEC i | MPLS echo request message in ping and traceroute mode. A single Nil FEC i | |||
s used | s used | |||
in the MPLS Echo Request message irrespective of the number of segments i | in the MPLS echo request message irrespective of the number of segments i | |||
n the | n the | |||
label stack. As described in sec 4.4.1 of <xref target="RFC8029"/>, | label stack. <xref target="RFC8029" format="default" sectionFormat="of" se | |||
"If the outermost FEC of the Target FEC stack is the Nil FEC, then the | ction="4.4.1"/> notes:</t> | |||
node MUST skip the Target FEC validation completely." | <blockquote><t> | |||
When a router in the label-stack path receives an MPLS | If the outermost FEC of the Target FEC stack is the Nil FEC, then the | |||
Echo Request message, there is no definite way to decide whether it is | node <bcp14>MUST</bcp14> skip the Target FEC validation completely.</t> | |||
the intended egress router since Nil FEC does not carry any information a | </blockquote> | |||
nd no validation | <t>When a router in the label stack path receives an MPLS | |||
echo request message, there is no definite way to decide whether it is | ||||
the intended egress router since the Nil FEC does not carry any informati | ||||
on and no validation | ||||
is performed by the router. | is performed by the router. | |||
So there is a high possibility that the packet may be mis-forwarded to an | Thus, there is a high possibility that the packet may be misforwarded to | |||
incorrect | an incorrect | |||
destination but the MPLS Echo Reply might still return success.</t> | destination but the MPLS echo reply might still return success.</t> | |||
<t> | ||||
<t> | To mitigate this issue, it is necessary to include additional information, | |||
To mitigate this issue, it is necessary to include additional | along with the Nil FEC, in the MPLS echo request message in both ping and | |||
information in the MPLS Echo Request message in both ping and traceroute | traceroute modes and to perform minimal validation on the egress/destination | |||
modes, along with the Nil FEC, to perform minimal validation on the | router. | |||
egress/destination router. This will enable the router to send appropriat | This will enable the router to send appropriate | |||
e | ||||
success and failure information to the headend router of the SR Policy. T his supplementary | success and failure information to the headend router of the SR Policy. T his supplementary | |||
information should assist in reporting transit router details to the | information should assist in reporting transit router details to the | |||
headend router, which can be utilized by an offline application | headend router, which can be utilized by an offline application | |||
to validate the traceroute path. | to validate the traceroute path. | |||
</t> | </t> | |||
<t>Consequently, the inclusion of egress information in the MPLS | <t>Consequently, the inclusion of egress information in the MPLS | |||
Echo Request messages in ping and traceroute modes will facilitate | echo request messages in ping and traceroute modes will facilitate | |||
the validation of Nil FEC on the egress router ensuring the correct | the validation of the Nil FEC on the egress router, ensuring the correct | |||
destination. It can be employed to | destination. Egress information can be employed to | |||
verify any combination of segments on any path without requiring | verify any combination of segments on any path without requiring | |||
upgrades to transit nodes. The code point used for | upgrades to transit nodes. | |||
Egress TLV is from the range 32768-65535 and can be silently dropped | The Egress TLV can be silently dropped if not recognized; alternately, | |||
if not recognized as per <xref target="RFC8029"/> and as per clarificatio | it may be stepped over, or an error message may be sent (per | |||
ns from | <xref target="RFC8029" format="default"/> and the clarifications in | |||
<xref target="RFC9041"/>. Alternately, the un-recognized TLV may be stepp | <xref target="RFC9041" format="default"/> regarding code points in the ra | |||
ed over or | nge 32768-65535). | |||
an error message may be sent. </t> | </t> | |||
<t>If a transit node does not recognize the Egress TLV and chooses to sil | ||||
ently | <t>If a transit node does not recognize the Egress TLV and chooses to sile | |||
drop or step over the Egress TLV, | ntly | |||
headend will continue to send Egress TLV in the next echo request | drop or step over the Egress TLV, the | |||
message and if egress recognizes the Egress TLV, egress validation | headend will continue to send the Egress TLV in the next echo request | |||
message, and if egress recognizes the Egress TLV, egress validation | ||||
will be executed at the egress. | will be executed at the egress. | |||
If a transit node does not recognize the Egress TLV and chooses to send a n error | If a transit node does not recognize the Egress TLV and chooses to send a n error | |||
message, the headend will log the message for informational purposes and | message, the headend will log the message for informational purposes and | |||
continue to send echo requests with Egress TLV, with TTL incremented. | continue to send echo requests with the Egress TLV, with the TTL incremen ted. | |||
If the egress node does not recognize the Egress TLV and chooses to silen tly | If the egress node does not recognize the Egress TLV and chooses to silen tly | |||
drop or step over the Egress TLV, egress validation will not be done | drop or step over the Egress TLV, egress validation will not be done, | |||
and the ping/traceroute procedure will proceed as if Egress TLV is | and the ping/traceroute procedure will proceed as if the Egress TLV were | |||
not received. | not received. | |||
</t> | </t> | |||
</section> | ||||
</section> | <section anchor="egress_tlv" numbered="true" toc="default"> | |||
<name>Egress TLV</name> | ||||
<section title="Egress TLV" anchor='egress_tlv'> | ||||
<t> | <t> | |||
The Egress TLV MAY be included in an MPLS Echo Request message. | The Egress TLV <bcp14>MAY</bcp14> be included in an MPLS echo request mes | |||
It is an optional TLV and, if present, MUST appear before the | sage. | |||
FEC stack TLV in the MPLS Echo Request packet. This TLV can | It is an optional TLV and, if present, <bcp14>MUST</bcp14> appear before | |||
only be used in LSP ping/traceroute requests, generated by | the | |||
the head-end node of an LSP or SR policy for which verification | Target FEC Stack TLV in the MPLS echo request packet. This TLV can | |||
only be used in LSP ping/traceroute requests that are generated by | ||||
the headend node of an LSP or SR Policy for which verification | ||||
is performed. In cases where multiple Nil FECs are present in | is performed. In cases where multiple Nil FECs are present in | |||
the Target FEC Stack TLV, the Egress TLV must be added corresponding | the Target FEC Stack TLV, the Egress TLV must be added corresponding | |||
to the ultimate egress of the label stack. Explicit paths can be | to the ultimate egress of the label stack. Explicit paths can be | |||
created using Node-SID, Adj-SID, | created using Node-SID, Adj-SID, | |||
Binding-SID, etc. The address field of the Egress TLV must be derived | Binding SID, etc. The Address field of the Egress TLV must be derived | |||
from the path egress/destination. The format is as specified below: | from the path egress/destination. The format is as specified in <xref tar | |||
</t> | get="pic_egress_tlv"/>. | |||
</t> | ||||
<figure anchor="pic_egress_tlv" title="Egress TLV"> | <figure anchor="pic_egress_tlv"> | |||
<artwork> | <name>Egress TLV</name> | |||
<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 = 32771 (Egress TLV) | Length | | | Type = 32771 (Egress TLV) | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Address (4 or 16 octets) | | | Address (4 or 16 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ||||
</figure> | ||||
</artwork> | <dl> | |||
</figure> | <dt>Type:</dt> | |||
<t>Type : 32771 (<xref target="tlv"/>)</t> | <dd>32771 (<xref target="tlv" format="default"/>)</dd> | |||
<t>Length : variable based on IPV4/IPV6 address. | ||||
Length excludes the length of the Type and Length | ||||
fields. Length will be 4 octets for IPv4 and | ||||
16 octets for IPv6.</t> | ||||
<t>Address : This field carries a valid IPv4 address of length | ||||
4 octets or a valid IPv6 address of length 16 octe | ||||
ts. | ||||
It can be obtained from the egress of the path. | ||||
It corresponds to the last label in the label stac | ||||
k or | ||||
the SR policy endpoint field | ||||
<xref target="I.D-ietf-idr-sr-policy-safi"/>. | ||||
</t> | ||||
</section> | ||||
<section title="Procedure" anchor='detail_procedure'> | ||||
<t>This section describes aspects of LSP ping and traceroute operations that | <dt>Length:</dt> | |||
require further considerations beyond <xref target="RFC8029"/>.</t> | <dd>Variable (4 octets for IPv4 addresses and 16 octets for IPv6 addresses). | |||
<section title="Sending Egress TLV in MPLS Echo Request" anchor='send_proced | Length excludes the length of the Type and Length fields. | |||
ure'> | </dd> | |||
<t>As previously mentioned, when the sender node constructs | ||||
an Echo Request with a Target FEC Stack TLV, the Egress TLV, | ||||
if present, MUST appear before the Target FEC Stack TLV in | ||||
the MPLS Echo Request packet.</t> | ||||
<section title="Ping Mode" anchor='ping_procedure'> | ||||
<t>When the sender node constructs an Echo Request with target FEC Stack | <dt>Address:</dt> | |||
TLV | <dd>This field carries a valid 4-octet IPv4 address or a valid | |||
16-octet IPv6 address. The address can be obtained from the egress of the | ||||
path and corresponds to the last label in the label stack or the SR Policy | ||||
Endpoint field <xref target="I-D.ietf-idr-sr-policy-safi" | ||||
format="default"/>.</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="detail_procedure" numbered="true" toc="default"> | ||||
<name>Procedure</name> | ||||
<t>This section describes aspects of LSP ping and traceroute operations th | ||||
at | ||||
require further considerations beyond those detailed in <xref target="RFC | ||||
8029" format="default"/>.</t> | ||||
<section anchor="send_procedure" numbered="true" toc="default"> | ||||
<name>Sending Egress TLV in MPLS Echo Request</name> | ||||
<t>As previously mentioned, when the sender node constructs | ||||
an echo request with a Target FEC Stack TLV, the Egress TLV, | ||||
if present, <bcp14>MUST</bcp14> appear before the Target FEC Stack TLV | ||||
in | ||||
the MPLS echo request packet.</t> | ||||
<section anchor="ping_procedure" numbered="true" toc="default"> | ||||
<name>Ping Mode</name> | ||||
<t>When the sender node constructs an echo request with a Target FEC S | ||||
tack TLV | ||||
that contains a single Nil FEC corresponding to the last segment of the | that contains a single Nil FEC corresponding to the last segment of the | |||
SR Policy path, the sender node MUST add an Egress TLV with the a | SR Policy path, the sender node <bcp14>MUST</bcp14> add an Egress | |||
ddress obtained from | TLV with the address obtained from | |||
the SR policy endpoint field <xref target="I.D-ietf-idr-sr-policy | the SR Policy Endpoint field <xref target="I-D.ietf-idr-sr-policy | |||
-safi"/>. | -safi" format="default"/>. | |||
The Label value in the Nil FEC MAY be set to zero when a single N | The Label value in the Nil FEC <bcp14>MAY</bcp14> be set to zero | |||
il FEC is | when a single Nil FEC is | |||
added for multiple labels in the label stack. | added for multiple labels in the label stack. | |||
In case the endpoint is not specified or is equal to zero | In case the endpoint is not specified or is equal to zero | |||
(Sec 8.8.1 <xref target="RFC9256"/>), the sender MUST use the | (<xref target="RFC9256" format="default" sectionFormat="of" secti on="8.8.1"/>), the sender <bcp14>MUST</bcp14> use the | |||
address corresponding to the last segment of the SR Policy | address corresponding to the last segment of the SR Policy | |||
in the address field for | in the Address field of | |||
Egress TLV. Some specific cases on how to derive the address fiel | the Egress TLV. Some specific cases on how to derive the Address | |||
d | field | |||
in the Egress TLV are listed below:</t> | in the Egress TLV are listed below:</t> | |||
<t> | <ul spacing="normal"> | |||
<list> | <li> | |||
<t>a. If the last SID in the SR policy is an Adj-SID, | <t>If the last SID in the SR Policy is an Adj-SID, | |||
the address field in the Egress TLV is derived from the node | the Address field in the Egress TLV is derived from the node | |||
at the remote end of the corresponding adjacency.</t> | at the remote end of the corresponding adjacency.</t> | |||
<t>b. If the last SID in the SR policy is a Binding SID, | </li> | |||
the address field in the Egress TLV is derived from the | <li> | |||
<t>If the last SID in the SR Policy is a Binding SID, | ||||
the Address field in the Egress TLV is derived from the | ||||
last node of the path represented by the Binding SID.</t> | last node of the path represented by the Binding SID.</t> | |||
</list> | </li> | |||
</t> | </ul> | |||
</section> | ||||
</section> | <section anchor="traceroute_procedure" numbered="true" toc="default"> | |||
<name>Traceroute Mode</name> | ||||
<section title="Traceroute Mode" anchor='traceroute_procedure'> | <t>When the sender node builds an echo request with a Target FEC Stack | |||
TLV | ||||
<t>When the sender node builds an Echo Request with target FEC Stack TLV | that contains a Nil FEC corresponding to the last segment of the | |||
that contains Nil FEC corresponding to the last segment of the se | segment list of | |||
gment-list of | the SR Policy, the sender node <bcp14>MUST</bcp14> add an Egress | |||
the SR Policy, the sender node MUST add an Egress TLV with the ad | TLV with the address obtained | |||
dress obtained | from the SR Policy Endpoint field | |||
from the SR policy endpoint field | <xref target="I-D.ietf-idr-sr-policy-safi" format="default"/>. | |||
<xref target="I.D-ietf-idr-sr-policy-safi"/>. | </t> | |||
</t> | ||||
<t> Although there is no requirement to do so, an implementatio | <t> Although there is no requirement to do so, an implementation | |||
n MAY | <bcp14>MAY</bcp14> send multiple Nil FECs if that makes it easier | |||
send multiple Nil FECs if that makes it easier for the | for the implementation. If the SR Policy headend sends | |||
implementation. | multiple Nil FECs, the last one <bcp14>MUST</bcp14> correspond to | |||
In case the SR Policy headend sends multiple Nil FECs the last one MUST | the Egress TLV. The Label value in the Nil FEC <bcp14>MAY</bcp14> | |||
correspond to the Egress TLV. | be set to zero for the last Nil FEC. If the endpoint is not | |||
The Label value in the Nil FEC MAY be set to zero for the last Ni | specified or is equal to zero (<xref target="RFC9256" | |||
l FEC. | format="default" sectionFormat="of" section="8.8.1"/>), the sender | |||
In case the endpoint is not specified or is equal to zero | <bcp14>MUST</bcp14> use the address corresponding to the last | |||
(Sec 8.8.1 <xref target="RFC9256"/>), the sender MUST use the add | segment endpoint of the SR Policy path (i.e., the ultimate egress is u | |||
ress corresponding | sed as the | |||
to the last segment endpoint of the SR Policy path i.e. ultimate | address in the Egress TLV). | |||
egress | </t> | |||
as the address for the Egress TLV. | </section> | |||
</t> | <section anchor="detail_example" numbered="true" toc="default"> | |||
</section> | <name>Detailed Example</name> | |||
<section title="Detailed Example" anchor='detail_example'> | <figure anchor="example_topology"> | |||
<figure anchor="example_topology" title="Egress TLV processing on sample | <name>Egress TLV Processing in Sample Topology</name> | |||
topology"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork> | ||||
----R3---- | ----R3---- | |||
/ (1003) \ | / (1003) \ | |||
(1001) / \(1005) (1007) | (1001) / \(1005) (1007) | |||
R1----R2(1002) R5----R6----R7(address X) | R1----R2(1002) R5----R6----R7(address X) | |||
\ / (1006) | \ / (1006) | |||
\ (1004) / | \ (1004) / | |||
----R4---- | ----R4---- | |||
</artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>Consider the SR Policy configured on router R1, to destination X, | <t>Consider the SR Policy configured on router R1 to destination X, | |||
configured with label-stack as 1002, 1004, 1007. | configured with label stack as 1002, 1004, 1007. | |||
Segment 1007 belongs to R7, which has the address X | Segment 1007 belongs to R7, which has the address X | |||
locally configured on it. | locally configured on it. | |||
</t> | </t> | |||
<t>Let us look at an example of a ping Echo Request message. | <t>Let us look at an example of a ping echo request message. The | |||
The Echo Request message contains a Target FEC stack TLV with the | echo request message contains a Target FEC Stack TLV with the Nil | |||
Nil FEC sub-TLV. | FEC sub-TLV. An Egress TLV is added before the Target FEC Stack | |||
An Egress TLV is added before the Target FEC Stack TLV. The addre | TLV. The Address field contains X (corresponding to a locally | |||
ss field contains | configured address on R7). X could be an IPv4 or IPv6 address, and | |||
X (corresponding to a locally configured address on R7). X could | the Length field in the Egress TLV will be either 4 or 16 octets, | |||
be an | based on the address type of address X. | |||
IPv4 or IPv6 address and the Length field in the Egress TLV will | </t> | |||
be 4 or 16 | <t>Let us look at an example of an echo request message in a | |||
based on the address X's address type. | traceroute packet. The echo request message contains a Target FEC | |||
</t> | Stack TLV with the Nil FEC sub-TLV corresponding to the complete | |||
<t>Let us look at an example of an Echo Request message in a tracerou | label stack (1002, 1004, 1007). An Egress TLV is added before the | |||
te packet. | Target FEC Stack TLV. The Address field contains X (corresponding | |||
The Echo Request message contains a Target FEC stack TLV with the Nil FE | to a locally configured address on destination R7). X could be an | |||
C sub-TLV | IPv4 or IPv6 address, and the Length field in the Egress TLV will be e | |||
corresponding to the complete label-stack (1002, 1004, 1007). | ither | |||
An Egress TLV is added before the Target FEC Stack TLV. | 4 or 16 octets, based on the address type of address X. If the | |||
The address field contains | destination/endpoint is set to zero (as in the case of the | |||
X (corresponding to a locally configured address on destination R | color-only SR Policy), the sender should use the endpoint of segment | |||
7). X could be an | 1007 (the last segment in the segment list) as the address for the | |||
IPv4 or IPv6 address and the Length field in the Egress TLV will | Egress TLV. | |||
be 4 or 16 | ||||
based on the address X's address type. | ||||
If the destination/endpoint is set to zero (as in the case of the | ||||
color-only SR Policy) | ||||
sender should use the endpoint of segment 1007 (the last segment | ||||
in the segment list) | ||||
as an address for the Egress TLV. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="Receiving Egress TLV in MPLS Echo Request" | ||||
anchor='recv_procedure'> | ||||
<t>Any node that receives the MPLS Echo Request message and processes it, | </t> | |||
is referred to as the "receiver". In case of the ping procedure, | </section> | |||
</section> | ||||
<section anchor="recv_procedure" numbered="true" toc="default"> | ||||
<name>Receiving Egress TLV in MPLS Echo Request</name> | ||||
<t>Any node that receives an MPLS echo request message and processes it | ||||
is referred to as the "receiver". In the case of the ping procedure, | ||||
the actual destination/egress is the receiver. | the actual destination/egress is the receiver. | |||
In the case of traceroute, every node is a receiver. | In the case of traceroute, every node is a receiver. | |||
This document does not propose any change in the processing | ||||
for Nil FEC as defined in | This document does not propose any change in the processing of the | |||
<xref target="RFC8029"/> in the Target FEC stack TLV Node that receives | Nil FEC (as defined in <xref target="RFC8029" format="default"/>) in | |||
an MPLS echo request. The presence of Egress TLV does not affect the | the node that receives an MPLS echo request with a Target FEC Stack | |||
validation of Target FEC Stack sub-TLV at FEC-stack-depth | TLV. The presence of the Egress TLV does not affect the validation | |||
if it is different than Nil FEC.</t> | of the Target FEC Stack sub-TLV at FEC-stack-depth if it is | |||
<t>Additional processing MUST be done for the Egress TLV on | different than Nil FEC.</t> | |||
the receiver node as follows: | <t>Additional processing <bcp14>MUST</bcp14> be done for the Egress TLV | |||
</t> | on | |||
<t>1. If the Label-stack-depth is greater than 0 and the Target FEC Stack | the receiver node as follows. Note that <RSC> refers to the Retur | |||
n Subcode. | ||||
</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li><t>If the Label-stack-depth is greater than 0 and the Target FEC Sta | ||||
ck | ||||
sub-TLV at FEC-stack-depth is Nil FEC, | sub-TLV at FEC-stack-depth is Nil FEC, | |||
set Best-return-code to 8 ("Label switched at stack-depth") | set Best-return-code to 8 ("Label switched at stack-depth <RSC>") | |||
and Best-return-subcode to Label-stack-depth to report transit switchin | and Best-rtn-subcode to Label-stack-depth to report transit switching | |||
g | in the MPLS echo reply message.</t></li> | |||
in MPLS Echo Reply message.</t> | <li><t>If the Label-stack-depth is 0 and the Target FEC Stack sub-TLV at | |||
<t>2. If the Label-stack-depth is 0 and the Target FEC Stack sub-TLV at | FEC-stack-depth is Nil FEC, then do a lookup for an exact match of the | |||
FEC-stack-depth is Nil FEC then do the lookup for an exact match of the | Address field of the Egress TLV to any of the locally configured inter | |||
Egress TLV address field to any of the locally configured interfaces | faces | |||
or loopback addresses.</t> | or loopback addresses.</t> | |||
<t> 2a. If the Egress TLV address lookup succeeds, | <ol spacing="normal" type="a"> | |||
<li>If the Egress TLV address lookup succeeds, | ||||
set Best-return-code to 36 ("Replying router is an egress for the | set Best-return-code to 36 ("Replying router is an egress for the | |||
address in Egress TLV for the FEC at stack depth RSC") | address in the Egress TLV for the FEC at stack depth <RSC>") | |||
(<xref target="ret_code"/>) in MPLS Echo Reply message.</t> | ||||
<t> 2b. If the Egress TLV address lookup fails, | ||||
set the Best-return-code to 10, "Mapping for this FEC is not the given | ||||
label at stack-depth RSC" </t> | ||||
<t> 3. In cases where multiple Nil FECs are sent from the SR Policy hea | ||||
dend, | ||||
one each corresponding to the | ||||
labels in the label stack along with Egress TLV, when the packet reache | ||||
s the egress, | ||||
the number of labels in the received packet (Size of stack-R) becomes z | ||||
ero or | ||||
a label with Bottom-of-Stack bit set to 1 is processed, all Nil FEC | ||||
sub-TLVs MUST be removed and the Egress TLV MUST be validated. | ||||
</t> | ||||
</section> | (<xref target="ret_code" format="default"/>) in the MPLS echo reply mes | |||
</section> | sage.</li> | |||
<li>If the Egress TLV address lookup fails, | ||||
set the Best-return-code to 10 ("Mapping for this FEC is not the given | ||||
label at stack-depth <RSC>").</li> | ||||
</ol> | ||||
</li> | ||||
<!-- This long sentence is difficult to follow. May we break it up into | ||||
several sentences to improve readability? Also, please clarify "one each | ||||
corresponding to the labels in the label stack along with Egress TLV". | ||||
<section anchor='backward_compatibility' title='Backward Compatibility'> | Original: | |||
<t>The extensions defined in this document is backward compatible with | 3. In cases where multiple Nil FECs are sent from the SR Policy headend, one | |||
procedures described in <xref target="RFC8029"/>. A Router that does not | each corresponding to the labels in the label stack along with Egress TLV, | |||
support Egress TLV, will ignore it and use current the Nil-FEC procedures | when the packet reaches the egress, the number of labels in the received | |||
described in <xref target="RFC8029"/>. | packet (Size of stack-R) becomes zero or a label with Bottom-of-Stack bit set | |||
</t> | to 1 is processed, all Nil FEC sub-TLVs MUST be removed and the Egress TLV | |||
<t>When the egress node in the path does not support the extensions defined | MUST be validated. | |||
in this document egress validation will not be done and Best-return-code | ||||
as 3 | ||||
("Replying router is an egress for the FEC at stack-depth") and Best-retu | ||||
rn- | ||||
subcode set to stack-depth to will be set in the MPLS Echo Reply message. | ||||
</t> | ||||
<t>When the transit node in the path does not support the extensions defined | ||||
in this document Best-return-code as 8 ("Label switched at stack-depth") | ||||
and | ||||
Best-return-subcode as Label-stack-depth to report transit switching will | ||||
be | ||||
set in the MPLS Echo Reply message. | ||||
</t> | ||||
</section> | ||||
<section anchor="iana_con" title="IANA Considerations"> | ||||
<t>The code points in section <xref target="tlv"/> and <xref target="ret_cod | ||||
e"/> | ||||
have been assigned by <xref target="IANA"/> by early allocation on 2023-1 | ||||
0-05 | ||||
and 2021-11-08 respectively. | ||||
</t> | ||||
<section anchor="tlv" title="New TLV"> | ||||
<t> <xref target="IANA"/> is requested to update the early | Perhaps: | |||
allocation for Egress TLV in the | 3. In some cases, multiple Nil FECs (one corresponding to each label in the | |||
"Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping | label stack), along with the Egress TLV, are sent from the SR Policy headend. | |||
Parameters" in the "TLVs" sub-registry to reference this | When the packet reaches the egress in such cases, the number of labels in the | |||
document when published as an RFC. | received packet (size of stack-R) becomes zero, or a label with the | |||
</t> | Bottom-of-Stack bit set to 1 is processed. In addition, all Nil FEC sub-TLVs | |||
<texttable anchor="iana_tlvs_tbl" title="TLVs Sub-Registry"> | MUST be removed, and the Egress TLV MUST be validated. | |||
<ttcol align="left">Value</ttcol> | --> | |||
<ttcol align="center">Description</ttcol> | <li><t>In cases where multiple Nil FECs are sent from the SR Policy head | |||
<ttcol align="left">Reference</ttcol> | end, | |||
<c>32771</c> | one each corresponding to the labels in the label stack along with the | |||
<c>Egress TLV</c> | Egress TLV, when the packet reaches the egress, the number of labels in the rece | |||
<c><xref target="egress_tlv"/> of this document</c> | ived packet (Size of stack-R) becomes zero or a label with the Bottom-of-Stack b | |||
</texttable> | it set to 1 is processed, all Nil FEC sub-TLVs <bcp14>MUST</bcp14> be removed an | |||
d the Egress TLV <bcp14>MUST</bcp14> be validated.</t></li> | ||||
</ol> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="ret_code" title="New Return code"> | <section anchor="backward_compatibility" numbered="true" toc="default"> | |||
<name>Backward Compatibility</name> | ||||
<t>The extensions defined in this document are backward compatible with th | ||||
e | ||||
procedures described in <xref target="RFC8029" format="default"/>. A rout | ||||
er that does not | ||||
support the Egress TLV will ignore it and use the Nil FEC procedures | ||||
described in <xref target="RFC8029" format="default"/>. | ||||
</t> | ||||
<t> | ||||
When the egress node in the path does not support the extensions | ||||
defined in this document, egress validation will not be done, and Best-return-c | ||||
ode will be set to 3 ("Replying router is an egress for the FEC at stack-depth & | ||||
lt;RSC>") and Best-rtn-subcode to stack-depth in | ||||
the MPLS echo reply message. | ||||
</t> | ||||
<t>When the transit node in the path does not support the extensions defin | ||||
ed | ||||
in this document, Best-return-code will be set to 8 ("Label switched at s | ||||
tack-depth <RSC>") and | ||||
Best-rtn-subcode to Label-stack-depth to report transit switching | ||||
in the MPLS echo reply message. | ||||
</t> | ||||
</section> | ||||
<section anchor="iana_con" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t> <xref target="IANA"/> is requested to update the | <section anchor="tlv" numbered="true" toc="default"> | |||
early allocation of the Return Code for | <name>New TLV</name> | |||
"Replying router is an egress for the address in Egress TLV" in the | <t>IANA has added the following entry to the "TLVs" registry within | |||
"Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping | the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Pi | |||
Parameters" in the "Return Codes" sub-registry to reference this | ng Parameters" registry group <xref target="IANA-MPLS-LSP" format="default"/>: | |||
document when published as an RFC. | </t> | |||
</t> | <table anchor="iana_tlvs_tbl" align="center"> | |||
<texttable anchor="iana_return_code_tbl" title="Return code Sub-Registr | <name>TLVs Registry</name> | |||
y"> | <thead> | |||
<ttcol align="left">Value</ttcol> | <tr> | |||
<ttcol align="center">Description</ttcol> | <th align="left">Type</th> | |||
<ttcol align="left">Reference</ttcol> | <th align="left">TLV Name</th> | |||
<c>36</c> | <th align="left">Reference</th> | |||
<c>Replying router is an egress for the | </tr> | |||
address in Egress TLV for the FEC at stack depth RSC</c> | </thead> | |||
<c><xref target="recv_procedure"/> of this document</c> | <tbody> | |||
</texttable> | <tr> | |||
<td align="left">32771</td> | ||||
<td align="left">Egress TLV</td> | ||||
<td align="left">RFC 9655</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="ret_code" numbered="true" toc="default"> | ||||
<name>New Return Code</name> | ||||
<t> IANA has added the following entry to the "Return Codes" registry | ||||
within the "Multiprotocol Label Switching (MPLS) Label Switched Paths (L | ||||
SPs) Ping Parameters" registry group <xref target="IANA-MPLS-LSP" | ||||
format="default"/>: | ||||
</t> | ||||
<table anchor="iana_return_code_tbl" align="center"> | ||||
<name>Return Codes Registry</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">Value</th> | ||||
<th align="left">Meaning</th> | ||||
<th align="left">Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">36</td> | ||||
<td align="left">Replying router is an egress for the | ||||
address in the Egress TLV for the FEC at stack depth <RSC>></td> | ||||
<td align="left">RFC 9655</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
</section> | </section> | |||
</section> | <section anchor="sec-con" numbered="true" toc="default"> | |||
<section title='Security Considerations' anchor='sec-con'> | <name>Security Considerations</name> | |||
<t>This document defines additional MPLS LSP ping TLVs and follows | ||||
the mechanisms defined in <xref target="RFC8029"/>. | ||||
All the security considerations defined in <xref target="RFC8287"/> will | ||||
be applicable for this document and, in addition, they do not impose any | ||||
additional security challenges to be considered. | ||||
</t> | ||||
</section> | ||||
<section title='Implementation Status'> | <t>This document defines an additional TLV for MPLS LSP ping and conforms to | |||
<t>This section is to be removed before publishing as an RFC.</t> | the mechanisms defined in <xref target="RFC8029" format="default"/>. | |||
All the security considerations defined in <xref target="RFC8287" format= | ||||
"default"/> apply to this document. This document does not | ||||
introduce any additional security challenges to be considered. | ||||
</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<displayreference target="I-D.ietf-idr-sr-policy-safi" to="SR-POLICY-BGP"/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
041.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
402.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
029.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
287.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
256.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<t>RFC-Editor: Please clean up the references cited by this section | <reference anchor="IANA-MPLS-LSP" target="http://www.iana.org/assignment | |||
before publication.</t> | s/mpls-lsp-ping-parameters"> | |||
<t>This section records the status of known implementations of the | <front> | |||
protocol defined by this specification at the time of posting of this | <title>Multiprotocol Label Switching (MPLS) Label Switched Paths (LS | |||
Internet-Draft, and is based on a proposal described in <xref target="RFC7942 | Ps) | |||
"/>. | Ping Parameters</title> | |||
The description of implementations in this section is intended to | <author> | |||
assist the IETF in its decision processes in progressing drafts to | <organization>IANA</organization> | |||
RFCs. Please note that the listing of any individual implementation | </author> | |||
here does not imply endorsement by the IETF. Furthermore, no effort | <date/> | |||
has been spent to verify the information presented here that was | </front> | |||
supplied by IETF contributors. This is not intended as, and must not | </reference> | |||
be construed to be, a catalog of available implementations or their | ||||
features. Readers are advised to note that other implementations may | <!-- [I-D.ietf-idr-sr-policy-safi] IESG state: I-D Exists as of 9/5/24; Updated | |||
exist.</t> | to long way to add "Ed." for K. Talaulikar--> | |||
<section title='Juniper Networks'> | ||||
<t>Organization: Juniper Networks</t> | <reference anchor="I-D.ietf-idr-sr-policy-safi" target="https://datatracker.ietf | |||
<t>Implementation: JUNOS</t> | .org/doc/html/draft-ietf-idr-sr-policy-safi-06"> | |||
<t>Description: Implementation for sending and validating Egress TLV</t> | <front> | |||
<t>Maturity Level: Released</t> | <title>Advertising Segment Routing Policies in BGP</title> | |||
<t>Coverage: Full</t> | <author initials="S." surname="Previdi" fullname="Stefano Previdi"> | |||
<t>Contact: shraddha@juniper.net</t> | <organization>Huawei Technologies</organization> | |||
</section> | </author> | |||
<author initials="C." surname="Filsfils" fullname="Clarence Filsfils"> | ||||
<organization>Cisco Systems</organization> | ||||
</author> | ||||
<author initials="K." surname="Talaulikar" fullname="Ketan Talaulikar" role="edi | ||||
tor"> | ||||
<organization>Cisco Systems</organization> | ||||
</author> | ||||
<author initials="P." surname="Mattes" fullname="Paul Mattes"> | ||||
<organization>Microsoft</organization> | ||||
</author> | ||||
<author initials="D." surname="Jain" fullname="Dhanendra Jain"> | ||||
<organization>Google</organization> | ||||
</author> | ||||
<date month="July" day="26" year="2024"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-idr-sr-policy-safi-06"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="ack" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t> The authors would like to thank <contact fullname="Stewart | ||||
Bryant"/>, <contact fullname="Greg Mirsky"/>, <contact | ||||
fullname="Alexander Vainshtein"/>, <contact fullname="Sanga Mitra | ||||
Rajgopal"/>, and <contact fullname="Adrian Farrel"/> for their careful | ||||
review and comments.</t> | ||||
</section> | </section> | |||
<section title='Acknowledgements' anchor='ack'> | </back> | |||
<t> The authors would like to thank Stewart Bryant, Greg Mirsky, Alexander V | ||||
ainshtein, | ||||
Sanga Mitra Rajgopal, and Adrian Farrel for their careful review and comm | ||||
ents.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | <!-- [rfced] Terminology | |||
<references title='Normative References'> | ||||
&RFC9041; | ||||
&RFC8402; | ||||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119 | a) We note inconsistencies in the terms listed below. We chose the form on the | |||
"> | right. Please let us know any objections. | |||
<front> | ||||
<title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
<author initials="S." surname="Bradner" fullname="S. Bradner"/> | ||||
<date year="1997" month="March"/> | ||||
<abstract> | ||||
<t>In many standards track documents several words are used to | ||||
signify the requirements in the specification. These words ar | ||||
e often | ||||
capitalized. This document defines these words as they should | ||||
be | ||||
interpreted in IETF documents. This document specifies an Int | ||||
ernet | ||||
Best Current Practices for the Internet Community, and request | ||||
s | ||||
discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC8029" target="https://www.rfc-editor.org/info/rfc8029 | ||||
"> | ||||
<front> | ||||
<title>Detecting Multiprotocol Label Switched (MPLS) Data-Plane | ||||
Failures</title> | ||||
<author initials="K." surname="Kompella" fullname="K. Kompella"/> | ||||
<author initials="G." surname="Swallow" fullname="G. Swallow"/> | ||||
<author initials="C." surname="Pignataro" fullname="C. Pignataro" | ||||
role="editor"/> | ||||
<author initials="N." surname="Kumar" fullname="N. Kumar"/> | ||||
<author initials="S." surname="Aldrin" fullname="S. Aldrin"/> | ||||
<author initials="M." surname="Chen" fullname="M. Chen"/> | ||||
<date year="2017" month="March"/> | ||||
<abstract> | ||||
<t>This document describes a simple and efficient mechanism to detect | ||||
data-plane failures in Multiprotocol Label Switching (MPLS) La | ||||
bel | ||||
Switched Paths (LSPs). It defines a probe message called an " | ||||
MPLS | ||||
echo request" and a response message called an "MPLS echo repl | ||||
y" for | ||||
returning the result of the probe. The MPLS echo request is i | ||||
ntended | ||||
to contain sufficient information to check correct operation o | ||||
f the | ||||
data plane and to verify the data plane against the control pl | ||||
ane, | ||||
thereby localizing faults.</t> | ||||
<t>This document obsoletes RFCs 4379, 6424, 6829, and 7537, | ||||
and updates RFC 1122.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8029"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8029"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174 | ||||
"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title | ||||
> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"/> | ||||
<date year="2017" month="May"/> | ||||
<abstract> | ||||
<t>RFC 2119 specifies common key words that may be used in protocol | ||||
specifications. This document aims to reduce the ambiguity by | ||||
clarifying that only UPPERCASE usage of the key words have the | ||||
defined special meanings.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
<reference anchor="RFC8287" target="https://www.rfc-editor.org/info/rfc8287 | ||||
"> | ||||
<front> | ||||
<title>Label Switched Path (LSP) Ping/Traceroute for Segment Routing | ||||
(SR) IGP-Prefix and IGP-Adjacency Segment Identifiers (SIDs) wit | ||||
h MPLS | ||||
Data Planes</title> | ||||
<author initials="N." surname="Kumar" fullname="N. Kumar" | ||||
role="editor"/> | ||||
<author initials="C." surname="Pignataro" fullname="C. Pignataro" | ||||
role="editor"/> | ||||
<author initials="G." surname="Swallow" fullname="G. Swallow"/> | ||||
<author initials="N." surname="Akiya" fullname="N. Akiya"/> | ||||
<author initials="S." surname="Kini" fullname="S. Kini"/> | ||||
<author initials="M." surname="Chen" fullname="M. Chen"/> | ||||
<date year="2017" month="December"/> | ||||
<abstract> | ||||
<t>A Segment Routing (SR) architecture leverages source routing and | ||||
tunneling paradigms and can be directly applied to the use of | ||||
a | ||||
Multiprotocol Label Switching (MPLS) data plane. A node steers | ||||
a | ||||
packet through a controlled set of instructions called "segmen | ||||
ts" by | ||||
prepending the packet with an SR header. | ||||
</t> | ||||
<t>The segment assignment and forwarding semantic nature of SR raises | ||||
additional considerations for connectivity verification and fa | ||||
ult | ||||
isolation for a Label Switched Path (LSP) within an SR archite | ||||
cture. | ||||
This document illustrates the problem and defines extensions t | ||||
o | ||||
perform LSP ping and traceroute for Segment Routing IGP-Prefix | ||||
and | ||||
IGP-Adjacency Segment Identifiers (SIDs) with an MPLS data pla | ||||
ne. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8287"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8287"/> | ||||
</reference> | ||||
<reference anchor="RFC9256" target="https://www.rfc-editor.org/info/rfc9256 | ||||
"> | ||||
<front> | ||||
<title>Segment Routing Policy Architecture</title> | ||||
<author initials="C." surname="Filsfils" fullname="C. Filsfils"/> | ||||
<author initials="K." surname="Talaulikar " fullname="K. Talaulikar" | ||||
role="editor"/> | ||||
<author initials="A." surname="Bogdanov" fullname="A. Bogdanov"/> | ||||
<author initials="P." surname="Mattes" fullname="P. Mattes"/> | ||||
<author initials="D." surname="Voyer" fullname="D. Voyer"/> | ||||
<date year="2020" month="July"/> | ||||
<abstract> | ||||
<t>Segment Routing (SR) allows a headend node to steer a packet flow | ||||
along any path. Intermediate per-flow states are eliminated th | ||||
anks to | ||||
source routing. The headend node steers a flow into an SR Poli | ||||
cy. The | ||||
header of a packet steered in an SR Policy is augmented with a | ||||
n | ||||
ordered list of segments associated with that SR Policy. | ||||
This document details the concepts of SR Policy and steering i | ||||
nto an | ||||
SR Policy. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9256"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9256"/> | ||||
</reference> | ||||
</references> | Target FEC stack TLV vs. target FEC Stack TLV vs. FEC stack TLV vs. Target FEC S | |||
<references title='Informative References'> | tack TLV | |||
<reference anchor="IANA" target="http://www.iana.org/assignments/mpls-lsp-p | ||||
ing-parameters"> | SR policy vs. SR Policy | |||
<front> | Note: The capitalized form is more common in the RFC Series (e.g., it is | |||
<title>Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) | used in RFC 9256) | |||
Ping Parameters</title> | ||||
<author fullname="IANA"/> | Echo Reply vs. echo reply | |||
<date/> | Note: Per usage in RFCs 8029 and 8287. | |||
<abstract> | ||||
<t></t> | Echo Request vs. echo request | |||
</abstract> | Note: Per usage in RFCs 8029 and 8287. | |||
</front> | ||||
</reference> | head-end vs. headend | |||
<reference anchor="I.D-ietf-idr-sr-policy-safi" | ||||
target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-s | b) FYI - We updated "address field" to "Address field" (capitalized) per the | |||
afi-04"> | name of the field in Figure 1. We also updated "endpoint field" to "Endpoint | |||
<front> | field" (capitalized) per the name of the field in Figure 1 in | |||
<title>Advertising Segment Routing Policies in BGP</title> | draft-ietf-idr-sr-policy-safi. | |||
<author initials="C." surname="Filsfils" fullname="C. Filsfils" | ||||
role="editor"/> | c) We see both "Nil FEC" and "Nil FEC sub-TLV" used in the document. Please | |||
<author initials="S." surname="Previdi" fullname="S. Previdi" | review and let us know if any updates would be helpful. | |||
role="editor"/> | ||||
<author initials="K." surname="Talaulikar " fullname="K. Talaulikar"/> | d) Article usage (i.e, "the", "a", and "an") before "Nil FEC" and "General FEC" | |||
<author initials="P." surname="Mattes" fullname="P. Mattes"/> | is inconsistent. We added articles as there seems to be precedence in RFC | |||
<author initials="E." surname="Rosen" fullname="Eric C. Rosen"/> | 8029. Please review in the diff and confirm that these additions are | |||
<author initials="D." surname="Jain" fullname="D. Jain"/> | appropriate. Some examples: | |||
<author initials="S." surname="Lin" fullname="S. Lin"/> | ||||
<date year="2024" month="April"/> | Original: | |||
<abstract> | ||||
<t>A Segment Routing (SR) Policy is an ordered list of segments | With article ("the Nil FEC", "a Nil FEC"): | |||
(i.e., instructions) that represent a source-routed policy. | The procedures outlined in | |||
An SR Policy consists of one or more candidate paths, each con | [RFC8029] is primarily applicable when the Nil FEC is used as an | |||
sisting | intermediate FEC in the label stack. | |||
of one or more segment lists. A headend may be provisioned wit | ||||
h candidate | This document uses a Nil FEC to represent the complete label stack in | |||
paths for an SR Policy via several different mechanisms, e.g., | an MPLS Echo Request message in ping and traceroute mode. | |||
CLI, NETCONF, | ||||
PCEP, or BGP.This document specifies how BGP may be used to di | Without article ("Nil Fec"): | |||
stribute SR | [RFC8029] supports this mechanism with FECs like Nil FEC and Generic | |||
Policy candidate paths. It introduces a BGP SAFI to advertise | FEC. | |||
a candidate | ||||
path of a Segment Routing (SR) Policy and defines sub-TLVs for | On the other hand, Nil FEC consists of the | |||
the Tunnel | label and there is no other associated FEC information. Nil FEC is | |||
Encapsulation Attribute for signaling information about these | used to traverse the path without validation for cases where the FEC | |||
candidate | is not defined or routers are not upgraded to support the FECs. | |||
paths.This documents updates RFC9012 with extensions to the Co | --> | |||
lor Extended | ||||
Community to support additional steering modes over SR Policy. | <!-- [rfced] FYI - We have added expansions for abbreviations upon first use | |||
</t> | per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each | |||
</abstract> | expansion in the document carefully to ensure correctness. | |||
</front> | ||||
<seriesInfo name="" value="draft-ietf-idr-sr-policy-safi-04"/> | SR over IPv6 (SRv6) | |||
<seriesInfo name="" value="work in progress"/> | Autonomous System (AS) | |||
</reference> | Segment Identifier (SID) | |||
&RFC7942; | --> | |||
</references> | ||||
</back> | <!-- [rfced] Please review the "Inclusive Language" portion of the online | |||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Updates of this nature typically | ||||
result in more precise language, which is helpful for readers. | ||||
Note that our script did not flag any words in particular, but this should | ||||
still be reviewed as a best practice. | ||||
--> | ||||
</rfc> | </rfc> | |||
End of changes. 54 change blocks. | ||||
741 lines changed or deleted | 657 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |