rfc9703xml2.original.xml | rfc9703.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 RFC7705 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.7705.xml"> | ||||
<!ENTITY RFC8690 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8690.xml"> | ||||
<!ENTITY RFC8174 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8174.xml"> | ||||
<!ENTITY RFC8403 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8403.xml"> | ||||
<!ENTITY RFC8664 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8664.xml"> | ||||
<!ENTITY RFC4271 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.4271.xml"> | ||||
<!ENTITY RFC5065 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.5065.xml"> | ||||
<!ENTITY RFC6286 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.6286.xml"> | ||||
<!ENTITY RFC9086 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.9086.xml"> | ||||
<!ENTITY RFC9087 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.9087.xml"> | ||||
<!ENTITY RFC7942 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.7942.xml"> | ||||
<!ENTITY RFC9256 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.9256.xml"> | ||||
<!ENTITY RFC6793 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.6793.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 category="std" docName="draft-ietf-mpls-sr-epe-oam-19" ipr="trust200902"> | ||||
<front> | ||||
<title abbrev="EPE-OAM">Label Switched Path (LSP) Ping/Traceroute for Segment | ||||
Routing (SR) | ||||
Egress Peer Engineering Segment Identifiers (SIDs) | ||||
with MPLS Data Plane</title> | ||||
<author initials="S." surname="Hegde" fullname="Shraddha Hegde"> | <!DOCTYPE rfc [ | |||
<organization>Juniper Networks Inc.</organization> | <!ENTITY nbsp " "> | |||
<address> | <!ENTITY zwsp "​"> | |||
<postal> | <!ENTITY nbhy "‑"> | |||
<street>Exora Business Park</street> | <!ENTITY wj "⁠"> | |||
<city>Bangalore</city> | ]> | |||
<region>KA</region> | ||||
<code>560103</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>shraddha@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="M." surname="Srivastava" fullname="Mukul Srivastava"> | ||||
<organization>Juniper Networks Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city></city> | ||||
<region></region> | ||||
<code></code> | ||||
<country></country> | ||||
</postal> | ||||
<email>msri@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="K." surname="Arora" fullname="Kapil Arora"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
<organization>Individual Contributor</organization> | tf-mpls-sr-epe-oam-19" number="9703" consensus="true" ipr="trust200902" obsolete | |||
<address> | s="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth=" | |||
<postal> | 3" symRefs="true" sortRefs="true" version="3"> | |||
<street></street> | ||||
<city></city> | ||||
<region></region> | ||||
<code></code> | ||||
<country></country> | ||||
</postal> | ||||
<email>kapil.it@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<front> | ||||
<title abbrev="LSP Ping/Traceroute for SR EPE-SIDs with MPLS">Label Switched | ||||
Path (LSP) Ping/Traceroute for | ||||
Segment Routing (SR) Egress Peer Engineering (EPE) Segment Identifiers (SIDs | ||||
) | ||||
with MPLS Data Plane</title> | ||||
<seriesInfo name="RFC" value="9703"/> | ||||
<author initials="S." surname="Hegde" fullname="Shraddha Hegde"> | ||||
<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="M." surname="Srivastava" fullname="Mukul Srivastava"> | ||||
<organization>Juniper Networks Inc.</organization> | ||||
<address> | ||||
<email>msri@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="S." surname="Ninan" fullname="Samson Ninan"> | <author initials="S." surname="Ninan" fullname="Samson Ninan"> | |||
<organization>Ciena</organization> | <organization>Ciena</organization> | |||
<address> | <address> | |||
<postal> | <email>samson.cse@gmail.com</email> | |||
<street></street> | </address> | |||
<city></city> | </author> | |||
<region></region> | <author initials="X." surname="Xu" fullname="Xiaohu Xu"> | |||
<code></code> | <organization>China Mobile</organization> | |||
<country></country> | <address> | |||
</postal> | <postal> | |||
<email>samson.cse@gmail.com</email> | <city>Beijing</city> | |||
</address> | <country>China</country> | |||
</author> | </postal> | |||
<author initials="X." surname="Xu" fullname="Xiaohu Xu"> | <email>xuxiaohu_ietf@hotmail.com </email> | |||
<organization>China Mobile</organization> | </address> | |||
<address> | </author> | |||
<postal> | <date year="2024" month="December"/> | |||
<street></street> | <area>RTG</area> | |||
<city>Beijing</city> | <workgroup>mpls</workgroup> | |||
<region></region> | <keyword>OAM</keyword> | |||
<code></code> | <keyword>EPE</keyword> | |||
<country>China</country> | <keyword>BGP-LS</keyword> | |||
</postal> | <keyword>BGP</keyword> | |||
<email>xuxiaohu_ietf@hotmail.com </email> | <keyword>SPRING</keyword> | |||
</address> | <keyword>SDN</keyword> | |||
</author> | <keyword>SID</keyword> | |||
<date year="2024"/> | <abstract> | |||
<area>Routing</area> | <t>Egress Peer Engineering (EPE) is an application of Segment Routing | |||
<workgroup>Routing area</workgroup> | (SR) that solves the problem of egress peer selection. The SR-based | |||
<keyword>OAM</keyword> | BGP-EPE solution allows a centralized controller, e.g., a | |||
<keyword>EPE</keyword> | Software-Defined Network (SDN) controller, to program any egress peer. | |||
<keyword>BGP-LS</keyword> | The EPE solution requires the node or the SDN controller to program 1) the | |||
<keyword>BGP</keyword> | PeerNode Segment Identifier (SID) describing a session between two | |||
<keyword>SPRING</keyword> | nodes, 2) the PeerAdj SID sub-TLV describing the link or links that are | |||
<keyword>SDN</keyword> | used by the sessions between peer nodes, and 3) the PeerSet SID | |||
<keyword>SID</keyword> | describing any connected interface to any peer in the related group. | |||
This document provides new sub-TLVs for EPE-SIDs that are used in | ||||
<abstract> | the Target FEC Stack TLV (Type 1) in MPLS Ping and Traceroute | |||
<t>Egress Peer Engineering (EPE) is an application of Segment Routing to | procedures.</t> | |||
solve the problem of egress peer selection. The Segment Routing based | </abstract> | |||
BGP-EPE solution allows a centralized controller, e.g. a Software | </front> | |||
Defined Network (SDN) controller to program any egress peer. | <middle> | |||
The EPE solution requires the node or the SDN controller to program | <section anchor="intro" numbered="true" toc="default"> | |||
the PeerNode Segment | <name>Introduction</name> | |||
Identifier(SID) describing a session between two nodes, the PeerAdj SID | <t> Egress Peer Engineering (EPE), as defined in <xref target="RFC9087" | |||
describing the link (one or more) that is used by sessions between peer nodes | format="default"/>, is an effective mechanism that is used to select the e | |||
, | gress peer | |||
and the PeerSet SID describing any connected interface to any peer in the rel | link based on different criteria. In this scenario, egress peers may | |||
ated group. | belong to a completely different ownership. The EPE-SIDs provide the | |||
This document provides new sub-TLVs for EPE Segment | means to represent egress peer nodes, links, sets of links, and sets of | |||
Identifiers (SID) that would be used in | nodes. Many network deployments have built their networks consisting of | |||
the MPLS Target stack TLV (Type 1), in MPLS Ping and Traceroute procedures. | multiple Autonomous Systems (ASes) either for the ease of operations or as | |||
a | ||||
</t> | result of network mergers and acquisitions. The inter-AS links | |||
</abstract> | connecting any two ASes could be traffic-engineered using | |||
EPE-SIDs in this case, where there is single ownership but different | ||||
</front> | AS numbers. It is important to validate the control | |||
plane to forwarding plane synchronization for these SIDs so that any | ||||
<middle> | anomaly can be easily detected by the network operator. EPE-SIDs may | |||
<section title="Introduction" anchor='intro'> | also be used in an ingress Segment Routing (SR) policy <xref target="RFC92 | |||
<t> Egress Peer Engineering (EPE) as defined in | 56" | |||
<xref target ='RFC9087'/> is | format="default"/> to choose exit points where the remote AS has | |||
an effective mechanism to select the egress peer link based on different criteri | a completely different ownership. This scenario is out of scope for this | |||
a. | document. | |||
In this scenario, egress peers may belong to a completely different ownership. | </t> | |||
The EPE-SIDs provide means to represent egress peer nodes, links, sets of links | <figure anchor="reference_diagram"> | |||
and sets of nodes. | <name>Reference Diagram</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Many network | ||||
deployments have built their networks consisting of multiple Autonomous | ||||
Systems, either for the ease of operations or as a result of network mergers and | ||||
acquisitions. | ||||
The inter-AS links connecting any two Autonomous Systems could be traffic-engine | ||||
ered | ||||
using EPE-SIDs in this case, where there is single ownership but different AS | ||||
numbers. | ||||
It is important to validate | ||||
the control plane to forwarding plane synchronization for these SIDs so | ||||
that any anomaly can be detected easily by the network operator. | ||||
EPE-SIDs may also be used in ingress SR policy <xref target ='RFC9256'/>to choos | ||||
e exit points | ||||
where the remote AS belongs to completely different | ||||
ownership. This scenario is out of scope of this document. | ||||
</t> | ||||
<t> | ||||
<figure anchor="reference_diagram" title="Reference Diagram"> | ||||
<artwork> | ||||
+---------+ +------+ | +---------+ +------+ | |||
| | | | | | | | | | |||
| H B------D G | | H B------D G | |||
| | +---/| AS 2 |\ +------+ | | | +---/| AS2 |\ +------+ | |||
| |/ +------+ \ | |---L/8 | | |/ +------+ \ | |---L/8 | |||
A AS1 C---+ \| | | A AS1 C---+ \| | | |||
| |\\ \ +------+ /| AS 4 |---M/8 | | |\\ \ +------+ /| AS4 |---M/8 | |||
| | \\ +-E |/ +------+ | | | \\ +-E |/ +------+ | |||
| X | \\ | K | | X | \\ | K | |||
| | +===F AS 3 | | | | +===F AS3 | | |||
+---------+ +------+ | +---------+ +------+]]></artwork> | |||
</figure> | ||||
</artwork> | <t>In <xref target="reference_diagram" format="default"/>, EPE-SIDs are | |||
</figure> | configured on AS1 towards AS2 and AS3 and advertised in the Border | |||
In this reference diagram, EPE-SIDs are | Gateway Protocol - Link State (BGP-LS) <xref target="RFC9086" | |||
configured on AS1 towards AS2 and AS3 and | format="default"/>. In certain cases, the EPE-SIDs advertised by the | |||
advertised in BGP-LS <xref target="RFC9086"/>. | control plane may not be in synchronization with the label programmed in | |||
In certain cases the EPE-SIDs advertised by the control plane may not be in | the data plane. For example, on C, a PeerAdj SID could be advertised to | |||
synchronization with the label programmed in the data plane. For example, | indicate it is for the link C->D. Due to some software anomaly, the | |||
on C a PeerAdj SID could be advertised to indicate it is for the link C->D. | actual data forwarding on this PeerAdj SID could be happening over the | |||
Due to some software anomaly, the actual data forwarding on this PeerAdj SID | C->E link. If E had relevant data paths for further forwarding the | |||
could be happening over the C->E link. If E had relevant data paths for fur | packet, this kind of anomaly would go unnoticed by the network operator. | |||
ther | A detailed example of a correctly programmed state and an incorrectly | |||
forwarding the packet, this kind of anomaly will go unnoticed by the network | programmed state along with a description of how the incorrect state can | |||
operator. | be detected is described in <xref target="Appendix" format="default"/>. | |||
A detailed example of a correctly programmed state and an incorrectly progra | A Forwarding Equivalence Class (FEC) definition for the EPE-SIDs will | |||
mmed | detail the control plane association of the SID. The | |||
state along with a description of how the incorrect state can be detected | data plane validation of the SID will be done during the MPLS Traceroute | |||
is | procedure. When there is a multi-hop External BGP (EBGP) session | |||
described in <xref target="APPENDIX"/>. | between the ASBRs, a PeerNode SID is advertised, and the traffic | |||
A FEC definition for the EPE-SIDs will define the details of the control | <bcp14>MAY</bcp14> be load-balanced between the interfaces connecting | |||
plane association of the SID. The data plane validation of the SID will | the two nodes. In <xref target="reference_diagram" format="default"/>, | |||
be done during the MPLS traceroute procedure. When there is a multi-hop EBG | C and F could have a PeerNode SID advertised. When the Operations, | |||
P | Administration, and Maintenance (OAM) packet is received on F, it needs | |||
session between the ASBRs, PeerNode SID is advertised, and the traffic MAY b | to be validated that the packet came from one of the two interfaces | |||
e | connected to C. | |||
load-balanced between the interfaces connecting the two nodes. In the refer | </t> | |||
ence | <t> This document provides Target Forwarding Equivalence Class (FEC) | |||
diagram, C and F could have a PeerNode-SID advertised. When the OAM packet | Stack TLV definitions for EPE-SIDs. This solution requires the | |||
is | node constructing the Target FEC Stack TLV to determine the types of | |||
received on F, it needs to be validated that the packet came from one of | SIDs along the path of the LSP. Other procedures for MPLS Ping and | |||
the two interfaces connected to C. | Traceroute, as defined in <xref target="RFC8287" sectionFormat="of" | |||
</t> | section="7"/> and clarified in <xref target="RFC8690" format="default"/>, | |||
<t> This document provides Target Forwarding Equivalence Class (FEC) | are applicable for EPE-SIDs as well.</t> | |||
stack TLV definitions for EPE-SIDs. This solution requires that the node | </section> | |||
constructing the target FEC stack can | <section anchor="operation" numbered="true" toc="default"> | |||
determine the type of the SIDs along the path of the | <name>Theory of Operation</name> | |||
LSP. Other procedures for MPLS Ping and Traceroute | <t><xref target="RFC9086" format="default"/> provides mechanisms to | |||
as defined in <xref target="RFC8287"/> section 7 and clarified by <xref target | advertise the EPE-SIDs in BGP-LS. These EPE-SIDs may be used to build SR | |||
="RFC8690"/> | paths and may be communicated using extensions described in <xref | |||
are applicable for EPE-SIDs as well.</t> | target="I-D.ietf-idr-bgp-sr-segtypes-ext" format="default"/> and <xref | |||
target="I-D.ietf-idr-sr-policy-safi" format="default"/> or Path | ||||
</section> | Computation Element Protocol (PCEP) extensions as defined in <xref | |||
target="RFC8664" format="default"/>. Data plane monitoring for such | ||||
<section title="Theory of Operation" anchor='operation'> | paths that consist of EPE-SIDs will use extensions defined in this | |||
<t><xref target ='RFC9086'/> provides | document to build the Target FEC Stack TLV. The MPLS Ping and | |||
mechanisms to advertise the EPE-SIDs in BGP-LS. These EPE-SIDs | Traceroute procedures <bcp14>MAY</bcp14> be initiated by the head-end of | |||
may be used to build Segment Routing paths as | the SR path or a centralized topology-aware data plane monitoring | |||
described in | system, as described in <xref target="RFC8403" format="default"/>. The | |||
<xref target ='I-D.ietf-idr-segment-routing-te-policy'/> or | extensions in <xref target="I-D.ietf-idr-bgp-sr-segtypes-ext" | |||
using Path Computation Element Protocol (PCEP) extensions as defined | format="default"/>, <xref target="I-D.ietf-idr-sr-policy-safi" | |||
in <xref target="RFC8664"/>. Data plane monitoring for such paths which | format="default"/>, and <xref target="RFC8664" format="default"/> do not | |||
consist of EPE-SIDs will use extensions defined in this document to | define how to acquire and carry the details of the SID that can be used | |||
build the Target FEC stack TLV. The MPLS Ping and Traceroute procedures | to construct the FEC. Such extensions are out of scope for this | |||
MAY be initiated by the head-end of the Segment Routing path or a centralized | document. The node initiating the data plane monitoring may acquire the | |||
topology-aware data plane monitoring system as described in | details of EPE-SIDs through BGP-LS advertisements, as described in <xref | |||
<xref target="RFC8403"/>. The extensions in | target="RFC9086" format="default"/>. There may be other possible | |||
<xref target ='I-D.ietf-idr-segment-routing-te-policy'/> and | mechanisms that can be used to learn the definition of the SID from the | |||
<xref target="RFC8664"/> do not define how to carry the details | controller. Details of such mechanisms are out of scope for this | |||
of the SID that can be used to construct the FEC. Such | document.</t> | |||
extensions are out of the scope for this document. | <t>The EPE-SIDs are advertised for inter-AS links that run EBGP | |||
The node initiating the data plane monitoring | sessions. <xref target="RFC9086" format="default"/> does not define the | |||
may acquire the details of EPE-SIDs through BGP-LS advertisements as | detailed procedures of how to operate EBGP sessions in a scenario with | |||
described in <xref target ='RFC9086'/>. There may be other | unnumbered interfaces. Therefore, these scenarios are out of scope for | |||
possible mechanisms to learn the definition of the SID | this document. Anycast and multicast addresses are not in the scope of | |||
from controller. Details of such mechanisms are | this document. During the AS migration scenario, procedures described in | |||
out of scope for this document.</t> | <xref target="RFC7705" format="default"/> may be in force. In these | |||
<t>The EPE-SIDs are advertised for inter-AS links which run EBGP sessions. | scenarios, if the local and remote AS fields in the FEC (as described in | |||
<xref target ='RFC9086'/> | <xref target="FEC_definitions" format="default"/>) carry the globally | |||
does not define the detailed procedures to operate EBGP sessions in a scenario w | configured AS Number and not the "local AS" (as defined in <xref | |||
ith | target="RFC7705" format="default"/>), then the FEC validation procedures m | |||
unnumbered interfaces. Therefore, these scenarios are | ay | |||
out of scope for this document. | fail. </t> | |||
Anycast and multicast addresses are not in the scope of this document. | <t>As described in <xref target="intro" format="default"/>, this | |||
document defines Target FEC Stack TLVs for EPE-SIDs that can be used in | ||||
detecting MPLS data plane failures <xref target="RFC8029" | ||||
format="default"/>. This mechanism applies to paths created across | ||||
ASes of cooperating administrations. If the ping or traceroute | ||||
packet enters a non-cooperating AS domain, it might be dropped by the | ||||
routers in the non-cooperating domain. Although a complete path | ||||
validation cannot be done across non-cooperating domains, it still | ||||
provides useful information that the ping or traceroute packet entered a | ||||
non-cooperating domain.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Requirements Language</name> | ||||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</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" | ||||
format="default"/>, <xref target="RFC8174" format="default"/> when, and | ||||
only when, they appear in all capitals, as shown here. </t> | ||||
</section> | ||||
<section anchor="FEC_definitions" numbered="true" toc="default"> | ||||
<name>FEC Definitions</name> | ||||
<t> In this document, three new sub-TLVs are defined for the Target FEC St | ||||
ack TLV (Type | ||||
1), the Reverse-Path Target FEC Stack TLV (Type 16), and the Reply Path | ||||
TLV (Type 21); see <xref target="sub_tlv"/>.</t> | ||||
During AS migration scenario procedures | <section anchor="peer_node_sid" numbered="true" toc="default"> | |||
described in <xref target="RFC7705"/> may be in force. In these scenarios, | <name>PeerNode SID Sub-TLV</name> | |||
if the local and remote AS fields in the FEC | <figure anchor="peer_node_sid_tlv"> | |||
as described in <xref target="FEC_definitions"/> carries the | <name>PeerNode SID Sub-TLV</name> | |||
globally configured ASN and not the "local AS" as defined in <xref target="RFC77 | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
05"/>, | 0 1 2 3 | |||
the FEC validation procedures may fail. </t> | 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 | |||
<t> As described in <xref target="intro"/>, this document defines FEC stack TLVs | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
for EPE-SIDs, that can be used in detecting MPLS data plane | |Type = 39 | Length | | |||
failures <xref target="RFC8029"/>. This mechanism applies to paths created acros | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
s | | Local AS Number (4 octets) | | |||
across ASes of co-operating administrations. If the ping or traceroute packet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
enters a non co-operating AS domain, it might be dropped by the routers in the | | Remote AS Number (4 octets) | | |||
non co-operating domain. Although complete path validation cannot be done across | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
, | | Local BGP Router ID (4 octets) | | |||
non co-operating domains, it still provides useful information that the | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
ping/traceroute packet entered a non co-operating domain.</t> | | Remote BGP Router ID (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> | ||||
</figure> | ||||
</section> | <dl> | |||
<section title="Requirements Language"> | <dt>Type:</dt><dd>2 octets</dd> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <dt>Value:</dt><dd>39</dd> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | <dt>Length:</dt><dd>2 octets</dd> | |||
"OPTIONAL" in this document are to be interpreted as described in BCP 14, | <dt>Value:</dt><dd>16</dd> | |||
<xref target="RFC2119"/>, <xref target="RFC8174"/> when, and | <dt>Local AS Number:</dt><dd>4 octets. The unsigned integer | |||
only when, they appear in all capitals, as shown here. </t> | representing the AS number <xref target="RFC6793" format="default"/> | |||
</section> | of the AS to which the PeerNode SID advertising node belongs. If | |||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Remote AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the AS of the remote node for which the PeerNode SID is | ||||
advertised. If Confederations <xref target="RFC5065" | ||||
format="default"/> are in use, and if the remote node is a member of | ||||
a different Member-AS within the local Confederation, this is the | ||||
Member-AS Number inside the Confederation and not the Confederation | ||||
Identifier.</dd> | ||||
<dt>Local BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the PeerNode SID advertising node | ||||
as defined in <xref target="RFC4271" format="default"/> and <xref | ||||
target="RFC6286" format="default"/>. </dd> | ||||
<dt>Remote BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the remote node as defined in | ||||
<xref target="RFC4271" format="default"/> and <xref target="RFC6286" | ||||
format="default"/>. </dd> | ||||
</dl> | ||||
<section anchor='FEC_definitions' title='FEC Definitions'> | <t>When there is a multi-hop EBGP session between two ASBRs, a | |||
PeerNode SID is advertised for this session, and traffic can be | ||||
load-balanced across these interfaces. An EPE controller that | ||||
performs bandwidth management for these links should be aware of the | ||||
links on which the traffic will be load-balanced. As per <xref | ||||
target="RFC8029" format="default"/>, the node advertising the EPE-SIDs | ||||
will send a Downstream Detailed Mapping (DDMAP) TLV specifying the | ||||
details of the next-hop interfaces. Based on this information, the | ||||
controller <bcp14>MAY</bcp14> choose to verify the actual forwarding | ||||
state with the topology information that the controller has. On the | ||||
router, the validation procedures will include the received DDMAP | ||||
validation, as specified in <xref target="RFC8029" format="default"/>, | ||||
to verify the control state and the forwarding state synchronization | ||||
on the two routers. Any discrepancies between the controller's state | ||||
and the forwarding state will not be detected by the procedures | ||||
described in this document.</t> | ||||
</section> | ||||
<section anchor="peer_adj_sid" numbered="true" toc="default"> | ||||
<name>PeerAdj SID Sub-TLV</name> | ||||
<figure anchor="peer_adj_sid_tlv"> | ||||
<name>PeerAdj SID Sub-TLV</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|Type = 38 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Adj type | RESERVED | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local Interface Address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote Interface Address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> | ||||
</figure> | ||||
<t> | <dl> | |||
Three new sub-TLVs are defined for the Target FEC Stack TLV (Type 1), | ||||
the Reverse-Path Target FEC Stack TLV (Type 16), and the Reply Path | ||||
TLV (Type 21).</t> | ||||
<figure anchor="sub_tlv" title="New sub-TLV types"> | ||||
<artwork> | ||||
Sub-Type Sub-TLV Name | ||||
-------- --------------- | ||||
TBD1 PeerAdj SID Sub-TLV | ||||
TBD2 PeerNode SID Sub-TLV | ||||
TBD3 PeerSet SID Sub-TLV | ||||
</artwork> | <dt>Type:</dt><dd>2 octets </dd> | |||
</figure> | <dt>Value:</dt><dd>38</dd> | |||
<dt>Length:</dt><dd>2 octets</dd> | ||||
<dt>Value:</dt><dd>Variable based on the IPv4/IPv6 interface | ||||
address. Length excludes the length of the Type and Length fields. For | ||||
IPv4 interface addresses, the length will be 28 octets. In the case of | ||||
an | ||||
IPv6 address, the length will be 52 octets.</dd> | ||||
<dt>Adj type:</dt><dd>1 octet</dd> | ||||
<dt>Value:</dt><dd>Set to 1 when the Adjacency Segment is IPv4. Set to | ||||
2 when the Adjacency Segment is IPv6.</dd> | ||||
<dt>RESERVED:</dt><dd>3 octets. <bcp14>MUST</bcp14> be zero when | ||||
sending and ignored on receiving.</dd> | ||||
<dt>Local AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the AS to which the PeerAdj SID advertising node belongs. If | ||||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within the | ||||
local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Remote AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> of | ||||
the remote node's AS for which the PeerAdj SID is advertised. If | ||||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within the | ||||
local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Local BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the PeerAdj SID advertising node as | ||||
defined in <xref target="RFC4271" format="default"/> and <xref | ||||
target="RFC6286" format="default"/>.</dd> | ||||
<dt>Remote BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the remote node as defined in <xref | ||||
target="RFC4271" format="default"/> and <xref target="RFC6286" | ||||
format="default"/>.</dd> | ||||
<dt>Local Interface Address:</dt><dd>4 octets or 16 octets. In the case | ||||
of | ||||
PeerAdj SID, the local interface address corresponding to the PeerAdj SI | ||||
D | ||||
should be specified in this field. For IPv4, this field is 4 octets; | ||||
for IPv6, this field is 16 octets. Link-local IPv6 addresses are not | ||||
in the scope of this document.</dd> | ||||
<dt>Remote Interface Address:</dt><dd>4 octets or 16 octets. In the | ||||
case of PeerAdj SID, the remote interface address corresponding to the | ||||
PeerAdj SID should be specified in this field. For IPv4, this field | ||||
is 4 octets; for IPv6, this field is 16 octets. Link-local IPv6 | ||||
addresses are not in the scope of this document.</dd> | ||||
</dl> | ||||
<section anchor='peer_node_sid' title='PeerNode SID Sub-TLV'> | <t><xref target="RFC9086" format="default"/> mandates sending a local | |||
interface ID and remote interface ID in the link descriptors and | ||||
allows a value of 0 in the remote descriptors. It is useful to | ||||
validate the incoming interface for an OAM packet, but if the remote | ||||
descriptor is 0, this validation is not possible. Optional link | ||||
descriptors of local and remote interface addresses are allowed as | ||||
described in <xref target="RFC9086" sectionFormat="of" | ||||
section="4.2"/>. In this document, it is <bcp14>RECOMMENDED</bcp14> | ||||
to send these optional descriptors and use them to validate incoming | ||||
interfaces. When these local and remote interface addresses are not | ||||
available, an ingress node can send 0 in the local and/or remote | ||||
interface address field. The receiver <bcp14>SHOULD</bcp14> skip the | ||||
validation for the incoming interface if the address field contains | ||||
0.</t> | ||||
</section> | ||||
<section anchor="peer_set_sid" numbered="true" toc="default"> | ||||
<name>PeerSet SID Sub-TLV</name> | ||||
<figure anchor="peer_set_sid_tlv"> | ||||
<name>PeerSet SID Sub-TLV</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|Type = 40 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| No. of elements in set | Reserved | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
<figure anchor="peer_node_sid_tlv" title="PeerNode SID Sub-TLV"> | One element in set consists of the details below | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
</figure> | ||||
<artwork> | <dl> | |||
<dt>Type:</dt><dd>2 octets</dd> | ||||
<dt>Value:</dt><dd>40</dd> | ||||
<dt>Length:</dt><dd>2 octets</dd> | ||||
<dt>Value:</dt><dd>Expressed in octets and is a variable based on the | ||||
number of elements in the set. The length field does not include the | ||||
length of Type and Length fields.</dd> | ||||
<dt>Local AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the AS to which the PeerSet SID advertising node belongs. If | ||||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within the | ||||
local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Local BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the PeerSet SID advertising node, as | ||||
defined in <xref target="RFC4271" format="default"/> and <xref | ||||
target="RFC6286" format="default"/>. </dd> | ||||
<dt>No. of elements in set:</dt><dd>2 octets. The number of remote | ||||
ASes over which the set SID performs load-balancing.</dd> | ||||
<dt>Reserved:</dt><dd>2 octets. <bcp14>MUST</bcp14> be zero when sent | ||||
and ignored when received.</dd> | ||||
<dt>Remote AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the remote node's AS for which the PeerSet SID is | ||||
advertised. If Confederations <xref target="RFC5065" | ||||
format="default"/> are in use, and if the remote node is a member of a | ||||
different Member-AS within the local Confederation, this is the | ||||
Member-AS Number inside the Confederation and not the Confederation | ||||
Identifier.</dd> | ||||
<dt>Remote BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the remote node as defined in <xref | ||||
target="RFC4271" format="default"/> and <xref target="RFC6286" | ||||
format="default"/>. </dd> | ||||
</dl> | ||||
<t>PeerSet SID may be associated with a number of PeerNode SIDs and | ||||
PeerAdj SIDs. The remote AS number and the Router ID of each of these | ||||
PeerNode SIDs and PeerAdj SIDs <bcp14>MUST</bcp14> be included in the | ||||
FEC.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="validation" numbered="true" toc="default"> | ||||
<name>EPE-SID FEC Validation</name> | ||||
<t>When a remote ASBR of the EPE-SID advertisement receives the MPLS OAM | ||||
packet with the top FEC being the EPE-SID, it <bcp14>MUST</bcp14> | ||||
perform validity checks on the content of the EPE-SID FEC sub-TLV. The | ||||
basic length check should be performed on the received FEC.</t> | ||||
<figure anchor="length_check"> | ||||
<name>Length Validation</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
PeerAdj SID sub-TLV | ||||
----------- | ||||
If Adj type = 1, Length should be 28 octets | ||||
If Adj type = 2, Length should be 52 octets | ||||
0 1 2 3 | PeerNode SID sub-TLV | |||
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 | ------------- | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length = (20 + No. of IPv4 interface pairs * 8 + | |||
|Type = TBD2 | Length | | No. of IPv6 interface pairs * 32) octets | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
</artwork> | PeerSet SID sub-TLV | |||
----------- | ||||
Length = (9 + No. of elements in the set * | ||||
(8 + No. of IPv4 interface pairs * 8 + | ||||
No. of IPv6 interface pairs * 32) octets]]></artwork> | ||||
</figure> | </figure> | |||
<t>Type : 2 octets </t> | ||||
<t> Value:TBD2</t> | ||||
<t>Length : 2 octets </t> | ||||
<t> Value: 16 | ||||
</t> | ||||
<t>Local AS Number : 4 octets</t> | ||||
<t>The unsigned integer representing the AS number <xref | ||||
target ='RFC6793'/> | ||||
of the AS to which the PeerNode SID advertising | ||||
node belongs. If Confederations <xref target ='RFC5065'/> are in | ||||
use, and if the | ||||
remote node is a member of a different Member-AS within the local | ||||
Confederation, this is the Member-AS Number inside the Confederat | ||||
ion | ||||
and not the Confederation Identifier.</t> | ||||
<t>Remote AS Number : 4 octets</t> | <t>If a malformed FEC sub-TLV is received, then a return code of 1, | |||
"Malformed echo request received", as defined in <xref target="RFC8029" | ||||
<t>The unsigned integer representing the AS number <xref | format="default"/> <bcp14>MUST</bcp14> be sent. The section below is | |||
target ='RFC6793'/> | appended to the procedure given in step 4a of <xref target="RFC8287" | |||
of the AS of the remote node for which the | sectionFormat="of" section="7.4"/>. | |||
PeerNode SID is advertised. If Confederations <xref target ='RFC5 | </t> | |||
065'/> are in use, | ||||
and if the remote node is a member of a different Member-AS withi | ||||
n | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</t> | ||||
<t>Local BGP Router ID : 4 octets </t> | <!--[rfced] Section 5.1. | |||
<t>unsigned integer representing the BGP Identifier | ||||
of the PeerNode SID advertising node as defined in | ||||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>Remote BGP Router ID : 4 octets</t> | ||||
<t>unsigned integer representing | ||||
the BGP Identifier of the remote node as defined in | ||||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>When there is a multi-hop EBGP session between two ASBRs, PeerNode SID i | d) Should "the remote AS field" or "one of the remote AS | |||
s | fields" be used for consistency? | |||
advertised for this session and traffic can be | ||||
load balanced across these interfaces. | ||||
An EPE controller that does bandwidth management for these links should be | ||||
aware of the links on which the traffic will be load-balanced. As per | ||||
<xref target ='RFC8029'/>, the node advertising the EPE SIDs will send | ||||
Downstream Detailed Mapping TLV (DDMAP TLV) specifying the details of nextho | ||||
p | ||||
interfaces, the OAM packet will be sent out. Based on this information | ||||
controller MAY choose to verify the actual forwarding state with the topolog | ||||
y | ||||
information controller has. On the router, the validation procedures will i | ||||
nclude, | ||||
received DDMAP validation as specified in <xref target ='RFC8029'/> to verif | ||||
y the | ||||
control and forwarding state synchronization on the two routers. Any discrep | ||||
ancies | ||||
between controller's state and forwarding state will not be detected by the | ||||
procedures described in the document.</t> | ||||
</section> | Original: | |||
- Validate that the receiving node's BGP Local AS matches | ||||
with the remote AS field in the received PeerNode SID | ||||
FEC sub-TLV. | ||||
<section anchor='peer_adj_sid' title='PeerAdj SID Sub-TLV'> | - Validate that the Receiving Node BGP Local AS matches | |||
with one of the remote AS field in the received | ||||
PeerSet SID FEC sub-TLV. | ||||
--> | ||||
<figure anchor="peer_adj_sid_tlv" title="PeerAdj SID Sub-TLV"> | <section anchor="fec_validation" numbered="true" toc="default"> | |||
<name>EPE-SID FEC Validation Rules</name> | ||||
<t>This is an example of Segment Routing IGP-Prefix, IGP-Adjacency | ||||
SID, and EPE-SID validations. Note that the term "receiving node" in | ||||
this section corresponds to the node that receives the OAM message | ||||
with the Target FEC Stack TLV.</t> | ||||
<artwork> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
Else, if the Label-stack-depth is 0 and the Target FEC Stack sub-TLV | ||||
at FEC stack-depth is 38 (PeerAdj SID sub-TLV), { | ||||
0 1 2 3 | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
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 | the given label at stack-depth <RSC>" [RFC8029]. Check if | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | any below conditions fail: | |||
|Type = TBD1 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Adj-Type | RESERVED | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local Interface address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote Interface address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
</artwork> | - Validate that the receiving node's BGP Local AS matches | |||
</figure> | with the remote AS field in the received PeerAdj SID | |||
<t>Type : 2 octets </t> | sub-TLV. | |||
<t> Value: TBD1</t> | ||||
<t>Length : 2 octets</t> | - Validate that the receiving node's BGP Router-ID | |||
<t> Value: variable based on IPv4/IPv6 interfac | matches with the Remote Router ID field in the | |||
e address. | received PeerAdj SID sub-TLV. | |||
Length excludes the length of Type and Length | ||||
fields.For IPv4 interface addresses length will | ||||
be 28 octets. In case of IPv6 address length will | ||||
be | ||||
52 octets.</t> | ||||
<t>Adj-Type : 1 octet</t> | ||||
<t> Value: Set to 1 when the Adjacency Segment | ||||
is IPv4 | ||||
Set to 2 when the Adjacency Segment is IPv6 | ||||
</t> | ||||
<t> RESERVED : 3 octets. MUST be zero when sending, and ig | ||||
nored on receiving.</t> | ||||
<t>Local AS Number : 4 octets</t> | ||||
<t>The unsigned integer representing the AS number <xref target ='RFC679 | ||||
3'/> of the AS to which the PeerAdj SID advertising | ||||
node belongs. If Confederations <xref target ='RFC5065'/> are in | ||||
use, and if the | ||||
remote node is a member of a different Member-AS within the local | ||||
Confederation, this is the Member-AS Number inside the Confederat | ||||
ion | ||||
and not the Confederation Identifier.</t> | ||||
<t>Remote AS Number : 4 octets</t> | ||||
<t>The unsigned integer representing the AS number<xref target ='RFC | ||||
6793'/> of the AS of the remote node for which the | ||||
PeerAdj SID is advertised. If Confederations <xref target ='RFC50 | ||||
65'/> are in use, | ||||
and if the remote node is a member of a different Member-AS withi | ||||
n | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</t> | ||||
<t>Local BGP Router ID : 4 octets </t> | ||||
<t> unsigned integer representing the | ||||
BGP Identifier of the PeerAdj SID advertising node as def | ||||
ined in | ||||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>Remote BGP Router ID : 4 octets </t> | ||||
<t> unsigned integer representing | ||||
the BGP Identifier of the remote node | ||||
as defined in <xref target ='RFC4271'/> and <xref target ='RFC628 | ||||
6'/>. </t> | ||||
<t>Local Interface Address :4 octets/16 octets</t> | ||||
<t>In case of PeerAdj SID, Local interface address corresponding | ||||
to the PeerAdj SID should be specified in this field. | ||||
For IPv4,this field is 4 octets; for IPv6, this field is 16 | ||||
octets. | ||||
Link-local IPv6 addresses are not in the scope of this d | ||||
ocument.</t> | ||||
<t>Remote Interface Address :4 octets/16 octets</t> | - Validate that there is an EBGP session with a peer | |||
<t>In case of PeerAdj SID Remote interface address corresponding | having a local AS number and BGP Router-ID as | |||
to the PeerAdj SID should be apecified in this field. For IPv4, | specified in the local AS number and Local Router-ID | |||
this field is 4 octets; for IPv6, this field is 16 | field in the received PeerAdj SID sub-TLV. | |||
octets. | ||||
Link-local IPv6 addresses are not in the scope of this d | ||||
ocument..</t> | ||||
<t><xref target ='RFC9086'/> mandates sending | If the remote interface address is not zero, validate the | |||
local interface ID and remote interface ID in the Link Descriptors and a | incoming interface. Set the Best-return-code to 35, | |||
llows | "Mapping for this FEC is not associated with the incoming | |||
a value of 0 in the remote descriptors. It is useful to validate the | interface" [RFC8287]. Check if any below conditions fail: | |||
incoming interface for an OAM packet and if the remote descriptor is 0 | ||||
this validation is not possible. | ||||
<xref target ='RFC9086'/> allows optional | ||||
link descriptors of local and remote interface addresses as | ||||
described in section 4.2. This document RECOMMENDs sending these option | ||||
al | ||||
descriptors and using them to validate incoming interface. When these | ||||
local and remote interface addresses are not available, an ingress | ||||
node can send 0 in the local and/or remote interface address field. | ||||
The receiver SHOULD skip the validation for the incoming interface | ||||
if the address field contains 0.</t> | ||||
</section> | - Validate that the incoming interface on which the | |||
OAM packet was received matches with the remote | ||||
interface specified in the PeerAdj SID sub-TLV. | ||||
<section anchor='peer_set_sid' title='PeerSet SID Sub-TLV'> | If all above validations have passed, set the return code to 3, | |||
<figure anchor="peer_set_sid_tlv" title="PeerSet SID Sub-TLV"> | "Replying router is an egress for the FEC at stack-depth <RSC>" | |||
[RFC8029]. | ||||
} | ||||
<artwork> | Else, if the Target FEC Stack sub-TLV at FEC stack-depth is 39 | |||
(PeerNode SID sub-TLV), { | ||||
0 1 2 3 | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
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 | the given label at stack-depth <RSC>" [RFC8029]. Check if any | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | below conditions fail: | |||
|Type = TBD3 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| No.of elements in set | Reserved | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | ||||
One element in set consists of below details | - Validate that the receiving node's BGP Local AS matches | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | with the remote AS field in the received PeerNode SID | |||
| Remote AS Number (4 octets) | | FEC sub-TLV. | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | ||||
</artwork> | - Validate that the receiving node's BGP Router-ID matches | |||
</figure> | with the Remote Router ID field in the received | |||
<t>Type : 2 octets </t> | PeerNode SID FEC. | |||
<t> Value: TBD3</t> | ||||
<t>Length : 2 octets </t> | ||||
<t> Value: Expressed in octets and variable base | ||||
d on the number of | ||||
elements in the set. The length field | ||||
does not include the length of | ||||
Type and Length fields.</t> | ||||
<t>Local AS Number :4 octets </t> | - Validate that there is an EBGP session with a peer | |||
<t>The unsigned integer representing the AS number <xref target ='RFC | having a local AS number and BGP Router-ID as | |||
6793'/> of the AS to which the PeerSet SID advertising | specified in the local AS number and Local Router-ID | |||
node belongs. If Confederations <xref target ='RFC5065'/> are in | field in the received PeerNode SID FEC sub-TLV. | |||
use, and if the | ||||
remote node is a member of a different Member-AS within the local | ||||
Confederation, this is the Member-AS Number inside the Confederat | ||||
ion | ||||
and not the Confederation Identifier.</t> | ||||
<t>Local BGP Router ID : 4 octets </t> | ||||
<t> unsigned integer representing | ||||
the BGP Identifier of the PeerSet SID advertising node as defined in | ||||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>No.of elements in set: 2 octets</t> | ||||
<t> The number of remote ASes over | ||||
which the set SID performs load balancin | ||||
g.</t> | ||||
<t> Reserved : 2 octets. MUST be zero when sent and ignored when | ||||
received.</t> | ||||
<t>Remote AS Number : 4 octets </t> | If all above validations have passed, set the return code to 3, | |||
<t>The unsigned integer representing the AS number <xref target ='RF | "Replying router is an egress for the FEC at stack-depth <RSC>" | |||
C6793'/> of the AS of the remote node for which the | [RFC8029]. | |||
PeerSet SID is advertised. If Confederations <xref target ='RFC50 | } | |||
65'/> are in use, | Else, if the Target FEC Stack sub-TLV at FEC stack-depth is 40 | |||
and if the remote node is a member of a different Member-AS withi | (PeerSet SID sub-TLV), { | |||
n | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</t> | ||||
<t>Remote BGP Router ID : 4 octets </t> | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
<t>unsigned integer representing | the given label at stack-depth <RSC>" [RFC8029]. Check if any | |||
the BGP Identifier of the remote node | below conditions fail: | |||
as defined in <xref target ='RFC4271'/> and <xref target | ||||
='RFC6286'/>. </t> | ||||
<t>PeerSet SID may be associated with a number of PeerNode | - Validate that the receiving node's BGP Local AS matches | |||
SIDs and PeerAdj SIDs. The remote AS number and the Router ID of each o | with one of the remote AS fields in the received | |||
f these PeerNode SIDs | PeerSet SID FEC sub-TLV. | |||
PeerAdj SIDs MUST be included in the FEC.</t> | ||||
</section> | - Validate that the receiving node's BGP Router-ID matches | |||
with one of the Remote Router ID fields in the | ||||
received PeerSet SID FEC sub-TLV. | ||||
</section> | - Validate that there is an EBGP session with a peer having | |||
a local AS number and BGP Router-ID as specified in the | ||||
local AS number and Local Router-ID fields in the received | ||||
PeerSet SID FEC sub-TLV. | ||||
<section anchor="validation" title="EPE-SID FEC validation"> | If all above validations have passed, set the return code to 3, | |||
<t> | "Replying router is an egress for the FEC at stack-depth <RSC>" | |||
When a remote ASBR of the EPE-SID advertisement receives the MPLS | [RFC8029]. | |||
OAM packet with top FEC being the EPE-SID, | }]]></artwork> | |||
it MUST perform validity checks on the | </section> | |||
content of the EPE-SID FEC sub-TLV. | </section> | |||
The basic length check should be performed on the received FEC. | <section anchor="IANA" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | ||||
<figure anchor="length_check" title="Length Validation"> | <!-- [rfced] We have included some specific questions about the IANA | |||
text below. In addition to responding to those questions, please | ||||
review all of the IANA-related updates carefully and let us know | ||||
if any further updates are needed. | ||||
<artwork> | a) It appears that the "IANA Considerations" section references the | |||
PeerAdj SID | "Sub-TLVs for TLV Types 1, 16, and 21" registry in the "Multiprotocol | |||
----------- | Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" | |||
if Adj type = 1 Length should be 28 octets | registry group, but it does not include a citation for this registry | |||
If Adj type =2 Length should be 52 octets | here or in the references section. | |||
PeerNode SID | May we add the following citation as a normative or informative | |||
------------- | reference as shown below? | |||
Length = ( 20 + No.of IPv4 interface pairs * 8 + | ||||
No.of IPv6 interface pairs * 32 ) octets | ||||
PeerSet SID | Original: | |||
----------- | IANA is requested to allocate three new Target FEC stack sub-TLVs | |||
Length = (9 + No.of elements in the set * | from the "Sub-TLVs for TLV types 1,16 and 21" subregistry in the | |||
(8 + No.of IPv4 interface pairs * 8 + | "TLVs" registry of the "Multi-Protocol Label switching (MPLS) Label | |||
No.of IPv6 interface pairs * 32)) octets | Switched Paths (LSPs) Ping parameters" namespace. | |||
</artwork> | Perhaps: | |||
</figure> | IANA has allocated three new Target FEC stack sub-TLVs in the | |||
</t> | "Sub-TLVs for TLV Types 1, 16, and 21" registry | |||
<t> | [IANA-MPLS-LSP-PING-Parameters] within the "TLVs" registry of the | |||
If a malformed FEC sub-TLV | "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) | |||
is received, then a return code of | Ping Parameters" registry group. | |||
1, "Malformed echo request received" as defined in <xref target="RFC8029"/> | ||||
MUST be sent. The below section is appended to the procedure given in Secti | ||||
on 7.4 | ||||
point 4a of <xref target="RFC8287"/>. | ||||
</t> | ||||
<section anchor="fec_validation" title="EPE-SID FEC validiation"> | ||||
<t> | ||||
<t> Segment Routing IGP-Prefix, IGP-Adjacency SID and EPE-SID Validation | Reference: | |||
: | [IANA-MPLS-LSP-PING-Parameters] | |||
Receiving node term used in this section implies the node that receives | IANA, "Sub-TLVs for TLV Types 1, 16, and 21", | |||
OAM message | <https://www.iana.org/assignments/mpls-lsp-ping-parameters>. | |||
with the FEC stack TLV.</t> | ||||
<artwork> | ||||
Else, if the Label-stack-depth is 0 and the Target FEC Stack sub-TLV | ||||
at FEC-stack-depth is TBD1 (PeerAdj SID sub-TLV), { | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | b) We have removed "Sub-TLV" from the entries in Tables 1 and 2 per | |||
the given label at stack-depth if any below | IANA's note. Please let us know if "Sub-TLV" should be | |||
conditions fail: | removed from any other instances in the running text for consistency. | |||
We note the following variations: | ||||
- Validate that the receiving node's BGP Local AS matches | PeerAdj SID | |||
with the remote AS field in the received PeerAdj SID | PeerAdj SID FEC | |||
FEC sub-TLV. | PeerAdj SID FEC sub-TLV | |||
PeerAdj SID Sub-TLV | ||||
PeerAdj SID sub-TLV | ||||
- Validate that the receiving node's BGP Router-ID | PeerSet SID sub-TLV | |||
matches with the Remote Router ID field in the | PeerNode SID sub-TLV | |||
received PeerAdj SID FEC. | --> | |||
- Validate that there is a EBGP session with a peer | <t>IANA has allocated three new Target FEC Stack sub-TLVs | |||
having local AS number and BGP Router-ID as | in the "Sub-TLVs for TLV Types 1, 16, and 21" registry <xref target="IANA-MP | |||
specified in the Local AS number and Local Router-ID | LS-LSP-PING-Parameters" format="default"/> | |||
field in the received PeerAdj SID FEC sub-TLV. | within the "TLVs" registry of the "Multiprotocol Label Switching (MPLS) | |||
Label Switched Paths (LSPs) Ping Parameters" registry group. </t> | ||||
If the Remote interface address is not zero, validate the | <table anchor="sub_tlv" align="center"> | |||
incoming interface. | <name>Sub-TLVs for TLV Types 1, 16, and 21 Registry</name> | |||
Set the Best-return-code to 35 "Mapping for this FEC is not | <thead> | |||
associated with the incoming interface" [RFC8287] if any below | <tr> | |||
conditions fail: | <th>Sub-Type</th> | |||
<th>Sub-TLV Name</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>38</td> | ||||
<td>PeerAdj SID</td> | ||||
</tr> | ||||
<tr> | ||||
<td>39</td> | ||||
<td>PeerNode SID</td> | ||||
</tr> | ||||
<tr> | ||||
<td>40</td> | ||||
<td>PeerSet SID</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="sec-con" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>The EPE-SIDs are advertised for egress links for EPE | ||||
purposes or for inter-AS links between cooperating ASes. | ||||
When cooperating domains are involved, they can allow the packets | ||||
arriving on trusted interfaces to reach the control plane | ||||
and be processed.</t> | ||||
<t> When EPE-SIDs are created for egress | ||||
TE links where the neighbor AS is an independent entity, it may | ||||
not allow the packets arriving from the external world to reach the | ||||
control plane. In such deployments, the MPLS OAM packets will be | ||||
dropped by the neighboring AS that receives the MPLS OAM packet.</t> | ||||
<t>In MPLS Traceroute applications, when the AS boundary is | ||||
crossed with the EPE-SIDs, the Target FEC Stack TLV is changed. | ||||
<xref target="RFC8287" format="default"/> does not mandate that the initi | ||||
ator, | ||||
upon receiving an MPLS Echo Reply message that includes the | ||||
Target FEC Stack Change TLV with one or more of the original | ||||
segments being popped, remove the corresponding FEC(s) from | ||||
the Target FEC Stack TLV in the next (TTL+1) traceroute | ||||
request. </t> | ||||
<t>If an initiator does not remove the FECs belonging | ||||
to the previous AS that has traversed, it may expose the | ||||
internal AS information to the following AS being traversed in | ||||
the traceroute. | ||||
</t> | ||||
</section> | ||||
- Validate the incoming interface on which the OAM | </middle> | |||
packet was receieved, matches with the remote | <back> | |||
interface specified in the PeerAdj SID FEC sub-TLV | <displayreference target="I-D.ietf-idr-bgp-sr-segtypes-ext" to="BGP-SR-SEGTY | |||
PES-EXT"/> | ||||
<displayreference target="I-D.ietf-idr-sr-policy-safi" to="SR-BGP-POLICY"/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<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.8 | ||||
029.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
086.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 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
690.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
793.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
087.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
705.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
403.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
664.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
271.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
065.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
286.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
256.xml"/> | ||||
If all above validations have passed, set the return code to 3 | <reference anchor="IANA-MPLS-LSP-PING-Parameters" target="https://www.ian | |||
"Replying router is an egress for the FEC at stack-depth" | a.org/assignments/mpls-lsp-ping-parameters"> | |||
} | <front> | |||
<title>Sub-TLVs for TLV Types 1, 16, and 21</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
</front> | ||||
</reference> | ||||
Else, if the Target FEC sub-TLV at FEC-stack-depth is TBD2 | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.i | |||
(PeerNode SID sub-TLV), { | etf-idr-bgp-sr-segtypes-ext.xml"/> | |||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.i | ||||
etf-idr-sr-policy-safi.xml"/> | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | </references> | |||
the given label at stack-depth if any below | </references> | |||
conditions fail: | <section anchor="Appendix" numbered="true" toc="default"> | |||
<name>Examples of Programmed States</name> | ||||
<t> This section describes examples of both a correctly and an | ||||
incorrectly programmed state and provides details on how the new | ||||
sub-TLVs described in this document can be used to validate the | ||||
correctness. Consider the diagram from <xref target="reference_diagram" | ||||
format="default"/>.</t> | ||||
<t>Correctly programmed state:</t> | ||||
- Validate that the receiving node's BGP Local AS matches | <ul spacing="normal"> | |||
with the remote AS field in the | <li> | |||
received PeerNode SID FEC sub-TLV. | <t>C assigns label 16001 and binds it to adjacency C->E </t> | |||
</li> | ||||
<li> | ||||
<t>C signals that label 16001 is bound to adjacency C->E (e.g., via | ||||
BGP-LS)</t> | ||||
</li> | ||||
<li> | ||||
<t>The controller/ingress programs an SR path that has SID/label 16001 | ||||
to steer the packet on the exit point from C onto adjacency C->E</t | ||||
> | ||||
</li> | ||||
<li> | ||||
<t>Using MPLS Traceroute procedures defined in this document, the Peer | ||||
Adj | ||||
SID sub-TLV is populated with entities to be validated by C when the | ||||
OAM packet reaches it</t> | ||||
</li> | ||||
<li> | ||||
<t>C receives the OAM packet and validates that the top label | ||||
(16001) is indeed corresponding to the entities populated in the | ||||
PeerAdj SID sub-TLV</t> | ||||
</li> | ||||
</ul> | ||||
<t>Incorrectly programmed state:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>C assigns label 16001 and binds it to adjacency C->D</t> | ||||
</li> | ||||
<li> | ||||
<t>The controller learns that PeerAdj SID label 16001 is bound to | ||||
adjacency C->E (e.g., via BGP-LS) -- this could be a software bug | ||||
on C or on the controller</t> | ||||
</li> | ||||
<li> | ||||
<t>The controller/ingress programs an SR path that has SID/label | ||||
16001 to steer the packet on the exit point from C onto adjacency | ||||
C->E</t> | ||||
</li> | ||||
<li> | ||||
<t>Using MPLS Traceroute procedures defined in this document, the Peer | ||||
Adj | ||||
SID sub-TLV is populated with entities to be validated by C | ||||
(including a local/remote interface address of C->E) when the OAM | ||||
packet reaches it</t> | ||||
</li> | ||||
<li> | ||||
<t>C receives the OAM packet and validates that the top label | ||||
(16001) is NOT bound to C->E as populated in the PeerAdj SID | ||||
sub-TLV and then responds with the respective error code</t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
- Validate that the receiving node's BGP Router-ID matches | <t>Thanks to <contact fullname="Loa Andersson"/>, <contact | |||
with the Remote Router ID field in the received | fullname="Dhruv Dhody"/>, <contact fullname="Ketan Talaulikar"/>, | |||
PeerNode SID FEC. | <contact fullname="Italo Busi"/>, <contact fullname="Alexander | |||
Vainshtein"/>, and <contact fullname="Deepti Rathi"/> for careful reviews | ||||
and | ||||
comments. Thanks to <contact fullname="Tarek Saad"/> for providing the | ||||
example described in <xref target="Appendix"/>.</t> | ||||
</section> | ||||
- Validate that there is a EBGP session with a peer | </back> | |||
having local AS number and BGP Router-ID as | ||||
specified in the Local AS number and Local Router-ID | ||||
field in the received PeerNode SID FEC sub-TLV. | ||||
If all above validations have passed, set the return code to 3 | <!-- [rfced] Terminology and Abbreviations | |||
"Replying router is an egress for the FEC at stack-depth". | ||||
} | ||||
Else, if the Target FEC sub-TLV at FEC-stack-depth is TBD3 | ||||
(PeerSet SID sub-TLV), { | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | a) Throughout the text, the following terminology appears to be capitalized | |||
the given label at stack-depth" if any below | inconsistently. Please review these occurrences and let us know if/how they | |||
conditions fail: | may be made consistent. | |||
- Validate that the Receiving Node BGP Local AS matches | Adj-Type vs. Adj type | |||
with one of the remote AS field in the received PeerSet | Integer vs. integer | |||
SID FEC sub-TLV. | Local AS number vs. local AS number | |||
Local interface vs. local interface | ||||
Link Descriptors vs. link descriptors | ||||
Remote interface vs. remote interface | ||||
- Validate that the Receiving Node BGP Router-ID matches | b) How may we make these terms consistent? For the case, we suggest | |||
with one of the Remote Router ID field in the received | capitalizing "Target" and "Stack" to match use in RFC 8287 and | |||
PeerSet SID FEC sub-TLV. | other past RFCs. | |||
- Validate that there is a EBGP session with a peer having | Target FEC Stack TLV vs. | |||
local AS number and BGP Router-ID as | Target FEC stack TLV vs. | |||
specified in the Local AS number and Local Router-ID | target FEC stack TLV vs. | |||
field in the received PeerSet SID FEC sub-TLV. | target FEC stack | |||
[Note: should the last instance contain "TLV"?] | ||||
If all above validations have passed, set the return code to 3 | FEC stack TLV vs. | |||
"Replying router is an egress for the FEC at stack-depth" | FEC stack | |||
} | [Note: should "Target" be added to these instances? And | |||
</artwork> | should the last instance contain "TLV"?] | |||
</t> | Target FEC Stack sub-TLV vs. | |||
</section> | Target FEC stack sub-TLV vs. | |||
Target FEC sub-TLV | ||||
[Note: should "Stack" be added to the last instance?] | ||||
</section> | c) In the text, "Type 1" appears to have two different names. Are these meant | |||
<section anchor="IANA" title="IANA Considerations"> | to be the same or different? We see "Target FEC Stack TLV (Type 1)" in RFC 8287. | |||
<t>IANA is requested to allocate three new Target FEC stack sub-TLVs | Please let us know how/if we may update. Note that we recommend making "stack" | |||
from the "Sub-TLVs for TLV types 1,16 and 21" subregistry in the | uppercase for consistency. | |||
"TLVs" registry of the "Multi-Protocol Label switching (MPLS) | ||||
Label Switched Paths (LSPs) Ping parameters" namespace. | ||||
<list> | Abstract: | |||
<t>PeerAdj SID Sub-TLV : TBD1</t> | MPLS Target stack TLV (Type 1) | |||
<t>PeerNode SID Sub-TLV: TBD2</t> | ||||
<t>PeerSet SID Sub-TLV : TBD3</t> | ||||
</list> | ||||
The three lowest free values from the Standard Tracks range should be | ||||
allocated if possible. | ||||
</t> | Section 4: | |||
Target FEC Stack TLV (Type 1) | ||||
</section> | d) It appears that in past RFCs, the term "FEC stack-depth" is used instead of | |||
<section title='Security Considerations' anchor='sec-con'> | "FEC-stack-depth". Should we update to only one hyphen? | |||
<t>The EPE-SIDs are advertised for egress links for Egress Peer Engineering | ||||
purposes or for inter-AS links between co-operating ASes. | ||||
When co-operating domains are involved, they can allow the packets | ||||
arriving on trusted interfaces to reach the control plane | ||||
and get processed.</t> | ||||
<t> When EPE-SIDs are created for egress | ||||
TE links where the neighbor AS is an independent entity, it may | ||||
not allow packets arriving from external world to reach the | ||||
control plane. In such deployments MPLS OAM packets will be | ||||
dropped by the neighboring AS that receives the MPLS OAM packet.</t> | ||||
<t>In MPLS traceroute applications, when the AS boundary is | ||||
crossed with the EPE-SIDs, the FEC stack is changed. | ||||
<xref target="RFC8287"/> does not mandate that the initiator | ||||
upon receiving an MPLS Echo Reply message that includes the | ||||
FEC Stack Change TLV with one or more of the original | ||||
segments being popped remove a corresponding FEC(s) from | ||||
the Target FEC Stack TLV in the next (TTL+1) traceroute | ||||
request. </t> | ||||
<t>If an initiator does not remove the FECs belonging | ||||
to the previous AS that has traversed, it may expose the | ||||
internal AS information to the following AS being traversed in | ||||
traceroute. | ||||
</t> | ||||
</section> | e) We see "MPLS Ping and Traceroute procedures" and "ping or traceroute packets" | |||
<section title='Implementation Status'> | in the running text. Should 1 instance of "MPLS traceroute procedure" perhaps be | |||
<t> This section is to be removed before publishing as an RFC. | "MPLS Ping and Traceroute procedures" for consistency? | |||
</t> | ||||
<t> | ||||
RFC-Editor: Please clean up the references cited by this section | ||||
before publication. | ||||
</t> | ||||
<t> | ||||
This section records the status of known implementations of the | ||||
protocol defined by this specification at the time of posting of this | ||||
Internet-Draft, and is based on a proposal described in | ||||
<xref target ='RFC7942'/>. | ||||
The description of implementations in this section is intended to | ||||
assist the IETF in its decision processes in progressing drafts to | ||||
RFCs. Please note that the listing of any individual implementation | ||||
here does not imply endorsement by the IETF. Furthermore, no effort | ||||
has been spent to verify the information presented here that was | ||||
supplied by IETF contributors. This is not intended as, and must not | ||||
be construed to be, a catalog of available implementations or their | ||||
features. Readers are advised to note that other implementations may | ||||
exist. | ||||
</t> | ||||
<section title='Juniper Networks'> | ||||
<t>Juniper networks reported a prototype implementation of this draft.</t> | Original: | |||
The data plane validation of the SID will be done during the | ||||
MPLS traceroute procedure. | ||||
</section> | Perhaps: | |||
</section> | The data plane validation of the SID will be done during the | |||
<section title='Acknowledgments'> | MPLS Ping and Traceroute procedures. | |||
<t>Thanks to Loa Andersson, Dhruv Dhody, Ketan Talaulikar, | ||||
Italo Busi and Alexander Vainshtein, Deepti Rathi for | ||||
careful review and comments. Thanks to Tarek Saad for providing the example | ||||
described in Appendix section. </t> | ||||
</section> | ||||
</middle> | f) FYI - We added expansions for the following abbreviations in the text. | |||
Please review for accuracy. | ||||
<back> | ASN: Access Service Network | |||
<references title='Normative References'> | BGP-LS: Border Gateway Protocol - Link State | |||
&RFC8287; | EBGP: External BGP | |||
&RFC8029; | OAM: Operations, Administration, and Maintenance | |||
&RFC9086; | --> | |||
&RFC2119; | ||||
&RFC8174; | ||||
&RFC8690; | ||||
&RFC6793; | ||||
</references> | ||||
<references title='Informative References'> | ||||
&RFC9087; | ||||
&RFC7705; | ||||
&RFC8403; | ||||
&RFC8664; | ||||
&RFC4271; | ||||
&RFC5065; | ||||
&RFC6286; | ||||
&RFC7942; | ||||
&RFC9256; | ||||
<?rfc include="reference.I-D.ietf-idr-segment-routing-te-policy"?> | ||||
</references> | <!-- [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. | ||||
<section title='APPENDIX' anchor='APPENDIX'> | Note that our script did not flag any words in particular, but this should | |||
<t> This section describes an example of correctly programmed state and incorr | still be reviewed as a best practice. | |||
ectly | --> | |||
programmed state and provides details on how the new sub-TLVs described in thi | ||||
s | ||||
document can be used to validate the correctness. | ||||
Consider the diagram from <xref target ='reference_diagram'/>, | ||||
<t>Correctly programed state:</t> | ||||
<list> | ||||
<t>• C assigns label 16001 and binds it to adjacency C->E </t> | ||||
<t>• C signals label 16001 is bound to adjacency C->E (e.g. via BGP-LS)</t> | ||||
<t>• Controller/Ingress programs an SR path that has SID/label 16001 | ||||
to steer packet on the exit point from C onto adjacency C->E</t> | ||||
<t>• Using MPLS trace procedures defined in this document, the PeerAdj SID | ||||
Sub-TLV is populates with entities to be validated by C when OAM packet reaches | ||||
it.</t> | ||||
<t>• C receives the OAM packet, it validates the top label (16001) | ||||
is indeed corresponding to the entities populated in the PeerAdj SID Sub-TLV</t> | ||||
</list> | ||||
<t>Incorrectly programed state:</t> | ||||
<list> | ||||
<t>• C assigns label 16001 and binds it to adjacency C->D</t> | ||||
<t>• The controller learns of PeerAdj SID label 16001 is bound to | ||||
adjacency C->E (e.g. via BGP-LS) – this could be a software bug on C or on contr | ||||
oller</t> | ||||
<t>• Controller/Ingress programs an SR path that has SID/label | ||||
16001 to steer packet on the exit point from C onto adjacency C->E</t> | ||||
<t>• Using MPLS trace procedures defined in this document, the PeerAdj SID | ||||
Sub-TLV is populates with entities to be validated by C | ||||
(including local/remote interface address of C->E) when OAM packet reaches it.</ | ||||
t> | ||||
<t>• C receives the OAM packet, it validates the top label (16001) is NOT boun | ||||
d | ||||
to C->E as populated in the PeerAdj SID Sub-TLV and can respond with the | ||||
respective error code</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 81 change blocks. | ||||
784 lines changed or deleted | 831 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |