rfc9703.original | rfc9703.txt | |||
---|---|---|---|---|
Routing area S. Hegde | Internet Engineering Task Force (IETF) S. Hegde | |||
Internet-Draft M. Srivastava | Request for Comments: 9703 M. Srivastava | |||
Intended status: Standards Track Juniper Networks Inc. | Category: Standards Track Juniper Networks Inc. | |||
Expires: 29 January 2025 K. Arora | ISSN: 2070-1721 K. Arora | |||
Individual Contributor | Individual Contributor | |||
S. Ninan | S. Ninan | |||
Ciena | Ciena | |||
X. Xu | X. Xu | |||
China Mobile | China Mobile | |||
28 July 2024 | December 2024 | |||
Label Switched Path (LSP) Ping/Traceroute for Segment Routing (SR) | Label Switched Path (LSP) Ping/Traceroute for Segment Routing (SR) | |||
Egress Peer Engineering Segment Identifiers (SIDs) with MPLS Data Plane | Egress Peer Engineering (EPE) Segment Identifiers (SIDs) with MPLS Data | |||
draft-ietf-mpls-sr-epe-oam-19 | Plane | |||
Abstract | Abstract | |||
Egress Peer Engineering (EPE) is an application of Segment Routing to | Egress Peer Engineering (EPE) is an application of Segment Routing | |||
solve the problem of egress peer selection. The Segment Routing | (SR) that solves the problem of egress peer selection. The SR-based | |||
based BGP-EPE solution allows a centralized controller, e.g. a | BGP-EPE solution allows a centralized controller, e.g., a Software- | |||
Software Defined Network (SDN) controller to program any egress peer. | Defined Network (SDN) controller, to program any egress peer. The | |||
The EPE solution requires the node or the SDN controller to program | EPE solution requires the node or the SDN controller to program 1) | |||
the PeerNode Segment Identifier(SID) describing a session between two | the PeerNode Segment Identifier (SID) describing a session between | |||
nodes, the PeerAdj SID describing the link (one or more) that is used | two nodes, 2) the PeerAdj SID describing the link or links that are | |||
by sessions between peer nodes, and the PeerSet SID describing any | used by the sessions between peer nodes, and 3) the PeerSet SID | |||
connected interface to any peer in the related group. This document | describing any connected interface to any peer in the related group. | |||
provides new sub-TLVs for EPE Segment Identifiers (SID) that would be | This document provides new sub-TLVs for EPE-SIDs that are used in the | |||
used in the MPLS Target stack TLV (Type 1), in MPLS Ping and | Target FEC Stack TLV (Type 1) in MPLS Ping and Traceroute procedures. | |||
Traceroute procedures. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 29 January 2025. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9703. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Theory of Operation . . . . . . . . . . . . . . . . . . . . . 4 | 2. Theory of Operation | |||
3. Requirements Language . . . . . . . . . . . . . . . . . . . . 5 | 3. Requirements Language | |||
4. FEC Definitions . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. FEC Definitions | |||
4.1. PeerNode SID Sub-TLV . . . . . . . . . . . . . . . . . . 5 | 4.1. PeerNode SID Sub-TLV | |||
4.2. PeerAdj SID Sub-TLV . . . . . . . . . . . . . . . . . . . 7 | 4.2. PeerAdj SID Sub-TLV | |||
4.3. PeerSet SID Sub-TLV . . . . . . . . . . . . . . . . . . . 9 | 4.3. PeerSet SID Sub-TLV | |||
5. EPE-SID FEC validation . . . . . . . . . . . . . . . . . . . 11 | 5. EPE-SID FEC Validation | |||
5.1. EPE-SID FEC validiation . . . . . . . . . . . . . . . . . 11 | 5.1. EPE-SID FEC Validation Rules | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 6. IANA Considerations | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 7. Security Considerations | |||
8. Implementation Status . . . . . . . . . . . . . . . . . . . . 14 | 8. References | |||
8.1. Juniper Networks . . . . . . . . . . . . . . . . . . . . 15 | 8.1. Normative References | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 | 8.2. Informative References | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | Appendix A. Examples of Programmed States | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 15 | Acknowledgments | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 16 | Authors' Addresses | |||
Appendix A. APPENDIX . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
1. Introduction | 1. Introduction | |||
Egress Peer Engineering (EPE) as defined in [RFC9087] is an effective | Egress Peer Engineering (EPE), as defined in [RFC9087], is an | |||
mechanism to select the egress peer link based on different criteria. | effective mechanism that is used to select the egress peer link based | |||
In this scenario, egress peers may belong to a completely different | on different criteria. In this scenario, egress peers may belong to | |||
ownership. The EPE-SIDs provide means to represent egress peer | a completely different ownership. The EPE-SIDs provide the means to | |||
nodes, links, sets of links and sets of nodes. Many network | represent egress peer nodes, links, sets of links, and sets of nodes. | |||
deployments have built their networks consisting of multiple | Many network deployments have built their networks consisting of | |||
Autonomous Systems, either for the ease of operations or as a result | multiple Autonomous Systems (ASes) either for the ease of operations | |||
of network mergers and acquisitions. The inter-AS links connecting | or as a result of network mergers and acquisitions. The inter-AS | |||
any two Autonomous Systems could be traffic-engineered using EPE-SIDs | links connecting any two ASes could be traffic-engineered using EPE- | |||
in this case, where there is single ownership but different AS | SIDs in this case, where there is single ownership but different AS | |||
numbers. It is important to validate the control plane to forwarding | numbers. It is important to validate the control plane to forwarding | |||
plane synchronization for these SIDs so that any anomaly can be | plane synchronization for these SIDs so that any anomaly can be | |||
detected easily by the network operator. EPE-SIDs may also be used | easily detected by the network operator. EPE-SIDs may also be used | |||
in ingress SR policy [RFC9256]to choose exit points where the remote | in an ingress Segment Routing (SR) policy [RFC9256] to choose exit | |||
AS belongs to completely different ownership. This scenario is out | points where the remote AS has a completely different ownership. | |||
of scope of this document. | This scenario is out of scope for this document. | |||
+---------+ +------+ | +---------+ +------+ | |||
| | | | | | | | | | |||
| 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 | | |||
+---------+ +------+ | +---------+ +------+ | |||
Figure 1: Reference Diagram | Figure 1: Reference Diagram | |||
In this reference diagram, EPE-SIDs are configured on AS1 towards AS2 | In Figure 1, EPE-SIDs are configured on AS1 towards AS2 and AS3 and | |||
and AS3 and advertised in BGP-LS [RFC9086]. In certain cases the | advertised in the Border Gateway Protocol - Link State (BGP-LS) | |||
EPE-SIDs advertised by the control plane may not be in | [RFC9086]. In certain cases, the EPE-SIDs advertised by the control | |||
synchronization with the label programmed in the data plane. For | plane may not be in synchronization with the label programmed in the | |||
example, on C a PeerAdj SID could be advertised to indicate it is for | data plane. For example, on C, a PeerAdj SID could be advertised to | |||
the link C->D. Due to some software anomaly, the actual data | indicate it is for the link C->D. Due to some software anomaly, the | |||
forwarding on this PeerAdj SID could be happening over the C->E link. | actual data forwarding on this PeerAdj SID could be happening over | |||
If E had relevant data paths for further forwarding the packet, this | the C->E link. If E had relevant data paths for further forwarding | |||
kind of anomaly will go unnoticed by the network operator. A | the packet, this kind of anomaly would go unnoticed by the network | |||
detailed example of a correctly programmed state and an incorrectly | operator. A detailed example of a correctly programmed state and an | |||
programmed state along with a description of how the incorrect state | incorrectly programmed state along with a description of how the | |||
can be detected is described in Appendix A. A FEC definition for the | incorrect state can be detected is described in Appendix A. A | |||
EPE-SIDs will define the details of the control plane association of | Forwarding Equivalence Class (FEC) definition for the EPE-SIDs will | |||
the SID. The data plane validation of the SID will be done during | detail the control plane association of the SID. The data plane | |||
the MPLS traceroute procedure. When there is a multi-hop EBGP | validation of the SID will be done during the MPLS Traceroute | |||
session between the ASBRs, PeerNode SID is advertised, and the | procedure. When there is a multi-hop External BGP (EBGP) session | |||
traffic MAY be load-balanced between the interfaces connecting the | between the ASBRs, a PeerNode SID is advertised, and the traffic MAY | |||
two nodes. In the reference diagram, C and F could have a PeerNode- | be load-balanced between the interfaces connecting the two nodes. In | |||
SID advertised. When the OAM packet is received on F, it needs to be | Figure 1, C and F could have a PeerNode SID advertised. When the | |||
validated that the packet came from one of the two interfaces | Operations, Administration, and Maintenance (OAM) packet is received | |||
connected to C. | on F, it needs to be validated that the packet came from one of the | |||
two interfaces connected to C. | ||||
This document provides Target Forwarding Equivalence Class (FEC) | This document provides Target Forwarding Equivalence Class (FEC) | |||
stack TLV definitions for EPE-SIDs. This solution requires that the | Stack TLV definitions for EPE-SIDs. This solution requires the node | |||
node constructing the target FEC stack can determine the type of the | constructing the Target FEC Stack TLV to determine the types of SIDs | |||
SIDs along the path of the LSP. Other procedures for MPLS Ping and | along the path of the LSP. Other procedures for MPLS Ping and | |||
Traceroute as defined in [RFC8287] section 7 and clarified by | Traceroute, as defined in Section 7 of [RFC8287] and clarified in | |||
[RFC8690] are applicable for EPE-SIDs as well. | [RFC8690], are applicable for EPE-SIDs as well. | |||
2. Theory of Operation | 2. Theory of Operation | |||
[RFC9086] provides mechanisms to advertise the EPE-SIDs in BGP-LS. | [RFC9086] provides mechanisms to advertise the EPE-SIDs in BGP-LS. | |||
These EPE-SIDs may be used to build Segment Routing paths as | These EPE-SIDs may be used to build SR paths and may be communicated | |||
described in [I-D.ietf-idr-segment-routing-te-policy] or using Path | using extensions described in [BGP-SR-SEGTYPES-EXT] and | |||
Computation Element Protocol (PCEP) extensions as defined in | [SR-BGP-POLICY] or Path Computation Element Protocol (PCEP) | |||
[RFC8664]. Data plane monitoring for such paths which consist of | extensions as defined in [RFC8664]. Data plane monitoring for such | |||
EPE-SIDs will use extensions defined in this document to build the | paths that consist of EPE-SIDs will use extensions defined in this | |||
Target FEC stack TLV. The MPLS Ping and Traceroute procedures MAY be | document to build the Target FEC Stack TLV. The MPLS Ping and | |||
initiated by the head-end of the Segment Routing path or a | Traceroute procedures MAY be initiated by the head-end of the SR path | |||
centralized topology-aware data plane monitoring system as described | or a centralized topology-aware data plane monitoring system, as | |||
in [RFC8403]. The extensions in | described in [RFC8403]. The extensions in [BGP-SR-SEGTYPES-EXT], | |||
[I-D.ietf-idr-segment-routing-te-policy] and [RFC8664] do not define | [SR-BGP-POLICY], and [RFC8664] do not define how to acquire and carry | |||
how to carry the details of the SID that can be used to construct the | the details of the SID that can be used to construct the FEC. Such | |||
FEC. Such extensions are out of the scope for this document. The | extensions are out of scope for this document. The node initiating | |||
node initiating the data plane monitoring may acquire the details of | the data plane monitoring may acquire the details of EPE-SIDs through | |||
EPE-SIDs through BGP-LS advertisements as described in [RFC9086]. | BGP-LS advertisements, as described in [RFC9086]. There may be other | |||
There may be other possible mechanisms to learn the definition of the | possible mechanisms that can be used to learn the definition of the | |||
SID from controller. Details of such mechanisms are out of scope for | SID from the controller. Details of such mechanisms are out of scope | |||
this document. | for this document. | |||
The EPE-SIDs are advertised for inter-AS links which run EBGP | The EPE-SIDs are advertised for inter-AS links that run EBGP | |||
sessions. [RFC9086] does not define the detailed procedures to | sessions. [RFC9086] does not define the detailed procedures of how | |||
operate EBGP sessions in a scenario with unnumbered interfaces. | to operate EBGP sessions in a scenario with unnumbered interfaces. | |||
Therefore, these scenarios are out of scope for this document. | Therefore, these scenarios are out of scope for this document. | |||
Anycast and multicast addresses are not in the scope of this | Anycast and multicast addresses are not in the scope of this | |||
document. During AS migration scenario procedures described in | document. During the AS migration scenario, procedures described in | |||
[RFC7705] may be in force. In these scenarios, if the local and | [RFC7705] may be in force. In these scenarios, if the local and | |||
remote AS fields in the FEC as described in Section 4 carries the | remote AS fields in the FEC (as described in Section 4) carry the | |||
globally configured ASN and not the "local AS" as defined in | globally configured AS Number and not the "local AS" (as defined in | |||
[RFC7705], the FEC validation procedures may fail. | [RFC7705]), then the FEC validation procedures may fail. | |||
As described in Section 1, this document defines FEC stack TLVs for | As described in Section 1, this document defines Target FEC Stack | |||
EPE-SIDs, that can be used in detecting MPLS data plane failures | TLVs for EPE-SIDs that can be used in detecting MPLS data plane | |||
[RFC8029]. This mechanism applies to paths created across across | failures [RFC8029]. This mechanism applies to paths created across | |||
ASes of co-operating administrations. If the ping or traceroute | ASes of cooperating administrations. If the ping or traceroute | |||
packet enters a non co-operating AS domain, it might be dropped by | packet enters a non-cooperating AS domain, it might be dropped by the | |||
the routers in the non co-operating domain. Although complete path | routers in the non-cooperating domain. Although a complete path | |||
validation cannot be done across, non co-operating domains, it still | validation cannot be done across non-cooperating domains, it still | |||
provides useful information that the ping/traceroute packet entered a | provides useful information that the ping or traceroute packet | |||
non co-operating domain. | entered a non-cooperating domain. | |||
3. Requirements Language | 3. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14, [RFC2119], [RFC8174] when, and only when, they appear in all | 14, [RFC2119], [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
4. FEC Definitions | 4. FEC Definitions | |||
Three new sub-TLVs are defined for the Target FEC Stack TLV (Type 1), | In this document, three new sub-TLVs are defined for the Target FEC | |||
the Reverse-Path Target FEC Stack TLV (Type 16), and the Reply Path | Stack TLV (Type 1), the Reverse-Path Target FEC Stack TLV (Type 16), | |||
TLV (Type 21). | and the Reply Path TLV (Type 21); see Table 1. | |||
Sub-Type Sub-TLV Name | ||||
-------- --------------- | ||||
TBD1 PeerAdj SID Sub-TLV | ||||
TBD2 PeerNode SID Sub-TLV | ||||
TBD3 PeerSet SID Sub-TLV | ||||
Figure 2: New sub-TLV types | ||||
4.1. PeerNode SID Sub-TLV | 4.1. PeerNode SID Sub-TLV | |||
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 = TBD2 | Length | | |Type = 39 | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Local AS Number (4 octets) | | | Local AS Number (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote AS Number (4 octets) | | | Remote AS Number (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Local BGP router ID (4 octets) | | | Local BGP Router ID (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote BGP Router ID (4 octets) | | | Remote BGP Router ID (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 3: PeerNode SID Sub-TLV | ||||
Type : 2 octets | ||||
Value:TBD2 | ||||
Length : 2 octets | ||||
Value: 16 | Figure 2: PeerNode SID Sub-TLV | |||
Local AS Number : 4 octets | Type: 2 octets | |||
The unsigned integer representing the AS number [RFC6793] of the AS | Value: 39 | |||
to which the PeerNode SID advertising node belongs. If | ||||
Confederations [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 Confederation and not the | ||||
Confederation Identifier. | ||||
Remote AS Number : 4 octets | Length: 2 octets | |||
The unsigned integer representing the AS number [RFC6793] of the AS | Value: 16 | |||
of the remote node for which the PeerNode SID is advertised. If | ||||
Confederations [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 Confederation and not the | ||||
Confederation Identifier. | ||||
Local BGP Router ID : 4 octets | Local AS Number: 4 octets. The unsigned integer representing the AS | |||
number [RFC6793] of the AS to which the PeerNode SID advertising | ||||
node belongs. If Confederations [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 | ||||
Confederation and not the Confederation Identifier. | ||||
unsigned integer representing the BGP Identifier of the PeerNode SID | Remote AS Number: 4 octets. The unsigned integer representing the | |||
advertising node as defined in [RFC4271] and [RFC6286]. | AS number [RFC6793] of the AS of the remote node for which the | |||
PeerNode SID is advertised. If Confederations [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 Confederation and not the Confederation Identifier. | ||||
Remote BGP Router ID : 4 octets | Local BGP Router ID: 4 octets. The unsigned integer representing | |||
the BGP Identifier of the PeerNode SID advertising node as defined | ||||
in [RFC4271] and [RFC6286]. | ||||
unsigned integer representing the BGP Identifier of the remote node | Remote BGP Router ID: 4 octets. The unsigned integer representing | |||
as defined in [RFC4271] and [RFC6286]. | the BGP Identifier of the remote node as defined in [RFC4271] and | |||
[RFC6286]. | ||||
When there is a multi-hop EBGP session between two ASBRs, PeerNode | 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 | SID is advertised for this session, and traffic can be load-balanced | |||
across these interfaces. An EPE controller that does bandwidth | across these interfaces. An EPE controller that performs bandwidth | |||
management for these links should be aware of the links on which the | management for these links should be aware of the links on which the | |||
traffic will be load-balanced. As per [RFC8029], the node | traffic will be load-balanced. As per [RFC8029], the node | |||
advertising the EPE SIDs will send Downstream Detailed Mapping TLV | advertising the EPE-SIDs will send a Downstream Detailed Mapping | |||
(DDMAP TLV) specifying the details of nexthop interfaces, the OAM | (DDMAP) TLV specifying the details of the next-hop interfaces. Based | |||
packet will be sent out. Based on this information controller MAY | on this information, the controller MAY choose to verify the actual | |||
choose to verify the actual forwarding state with the topology | forwarding state with the topology information that the controller | |||
information controller has. On the router, the validation procedures | has. On the router, the validation procedures will include the | |||
will include, received DDMAP validation as specified in [RFC8029] to | received DDMAP validation, as specified in [RFC8029], to verify the | |||
verify the control and forwarding state synchronization on the two | control state and the forwarding state synchronization on the two | |||
routers. Any discrepancies between controller's state and forwarding | routers. Any discrepancies between the controller's state and the | |||
state will not be detected by the procedures described in the | forwarding state will not be detected by the procedures described in | |||
document. | this document. | |||
4.2. PeerAdj SID Sub-TLV | 4.2. PeerAdj SID Sub-TLV | |||
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 = TBD1 | Length | | |Type = 38 | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Adj-Type | RESERVED | | | Adj type | RESERVED | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Local AS Number (4 octets) | | | Local AS Number (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote AS Number (4 octets) | | | Remote AS Number (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Local BGP router ID (4 octets) | | | Local BGP Router ID (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote BGP Router ID (4 octets) | | | Remote BGP Router ID (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Local Interface address (4/16 octets) | | | Local Interface Address (4/16 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote Interface address (4/16 octets) | | | Remote Interface Address (4/16 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 4: PeerAdj SID Sub-TLV | ||||
Type : 2 octets | ||||
Value: TBD1 | ||||
Length : 2 octets | ||||
Value: variable based on IPv4/IPv6 interface address. 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. | ||||
Adj-Type : 1 octet | Figure 3: PeerAdj SID Sub-TLV | |||
Value: Set to 1 when the Adjacency Segment is IPv4 Set to 2 when the | Type: 2 octets | |||
Adjacency Segment is IPv6 | ||||
RESERVED : 3 octets. MUST be zero when sending, and ignored on | ||||
receiving. | ||||
Local AS Number : 4 octets | Value: 38 | |||
The unsigned integer representing the AS number [RFC6793] of the AS | Length: 2 octets | |||
to which the PeerAdj SID advertising node belongs. If Confederations | ||||
[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 Confederation and not the Confederation | ||||
Identifier. | ||||
Remote AS Number : 4 octets | Value: 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. | ||||
The unsigned integer representing the AS number[RFC6793] of the AS of | Adj type: 1 octet | |||
the remote node for which the PeerAdj SID is advertised. If | ||||
Confederations [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 Confederation and not the | ||||
Confederation Identifier. | ||||
Local BGP Router ID : 4 octets | Value: Set to 1 when the Adjacency Segment is IPv4. Set to 2 when | |||
the Adjacency Segment is IPv6. | ||||
unsigned integer representing the BGP Identifier of the PeerAdj SID | RESERVED: 3 octets. MUST be zero when sending and ignored on | |||
advertising node as defined in [RFC4271] and [RFC6286]. | receiving. | |||
Remote BGP Router ID : 4 octets | Local AS Number: 4 octets. The unsigned integer representing the AS | |||
number [RFC6793] of the AS to which the PeerAdj SID advertising | ||||
node belongs. If Confederations [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 | ||||
Confederation and not the Confederation Identifier. | ||||
unsigned integer representing the BGP Identifier of the remote node | Remote AS Number: 4 octets. The unsigned integer representing the | |||
as defined in [RFC4271] and [RFC6286]. | AS number [RFC6793] of the remote node's AS for which the PeerAdj | |||
SID is advertised. If Confederations [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 | ||||
Confederation and not the Confederation Identifier. | ||||
Local Interface Address :4 octets/16 octets | Local BGP Router ID: 4 octets. The unsigned integer representing | |||
the BGP Identifier of the PeerAdj SID advertising node as defined | ||||
in [RFC4271] and [RFC6286]. | ||||
In case of PeerAdj SID, Local interface address corresponding to the | Remote BGP Router ID: 4 octets. The unsigned integer representing | |||
PeerAdj SID should be specified in this field. For IPv4,this field | the BGP Identifier of the remote node as defined in [RFC4271] and | |||
is 4 octets; for IPv6, this field is 16 octets. Link-local IPv6 | [RFC6286]. | |||
addresses are not in the scope of this document. | ||||
Remote Interface Address :4 octets/16 octets | Local Interface Address: 4 octets or 16 octets. In the case of | |||
PeerAdj SID, the 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 document. | ||||
In case of PeerAdj SID Remote interface address corresponding to the | Remote Interface Address: 4 octets or 16 octets. In the case of | |||
PeerAdj SID should be apecified in this field. For IPv4, this field | PeerAdj SID, the remote interface address corresponding to the | |||
is 4 octets; for IPv6, this field is 16 octets. Link-local IPv6 | PeerAdj SID should be specified in this field. For IPv4, this | |||
addresses are not in the scope of this document.. | field is 4 octets; for IPv6, this field is 16 octets. Link-local | |||
IPv6 addresses are not in the scope of this document. | ||||
[RFC9086] mandates sending local interface ID and remote interface ID | [RFC9086] mandates sending a local interface ID and remote interface | |||
in the Link Descriptors and allows a value of 0 in the remote | 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 | descriptors. It is useful to validate the incoming interface for an | |||
OAM packet and if the remote descriptor is 0 this validation is not | OAM packet, but if the remote descriptor is 0, this validation is not | |||
possible. [RFC9086] allows optional link descriptors of local and | possible. Optional link descriptors of local and remote interface | |||
remote interface addresses as described in section 4.2. This | addresses are allowed as described in Section 4.2 of [RFC9086]. In | |||
document RECOMMENDs sending these optional descriptors and using them | this document, it is RECOMMENDED to send these optional descriptors | |||
to validate incoming interface. When these local and remote | and use them to validate incoming interfaces. When these local and | |||
interface addresses are not available, an ingress node can send 0 in | remote interface addresses are not available, an ingress node can | |||
the local and/or remote interface address field. The receiver SHOULD | send 0 in the local and/or remote interface address field. The | |||
skip the validation for the incoming interface if the address field | receiver SHOULD skip the validation for the incoming interface if the | |||
contains 0. | address field contains 0. | |||
4.3. PeerSet SID Sub-TLV | 4.3. PeerSet SID Sub-TLV | |||
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 = TBD3 | Length | | |Type = 40 | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Local AS Number (4 octets) | | | Local AS Number (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Local BGP router ID (4 octets) | | | Local BGP Router ID (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| No.of elements in set | Reserved | | | No. of elements in set | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote AS Number (4 octets) | | | Remote AS Number (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote BGP Router ID (4 octets) | | | Remote BGP Router ID (4 octets) | | |||
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | |||
One element in set consists of below details | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | ||||
Figure 5: PeerSet SID Sub-TLV | ||||
Type : 2 octets | ||||
Value: TBD3 | ||||
Length : 2 octets | ||||
Value: Expressed in octets and variable based on the number of | One element in set consists of the details below | |||
elements in the set. The length field does not include the length of | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Type and Length fields. | | Remote AS Number (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | ||||
Local AS Number :4 octets | Figure 4: PeerSet SID Sub-TLV | |||
The unsigned integer representing the AS number [RFC6793] of the AS | Type: 2 octets | |||
to which the PeerSet SID advertising node belongs. If Confederations | ||||
[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 Confederation and not the Confederation | ||||
Identifier. | ||||
Local BGP Router ID : 4 octets | Value: 40 | |||
unsigned integer representing the BGP Identifier of the PeerSet SID | Length: 2 octets | |||
advertising node as defined in [RFC4271] and [RFC6286]. | ||||
No.of elements in set: 2 octets | Value: 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. | ||||
The number of remote ASes over which the set SID performs load | Local AS Number: 4 octets. The unsigned integer representing the AS | |||
balancing. | number [RFC6793] of the AS to which the PeerSet SID advertising | |||
node belongs. If Confederations [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 | ||||
Confederation and not the Confederation Identifier. | ||||
Reserved : 2 octets. MUST be zero when sent and ignored when | Local BGP Router ID: 4 octets. The unsigned integer representing | |||
received. | the BGP Identifier of the PeerSet SID advertising node, as defined | |||
in [RFC4271] and [RFC6286]. | ||||
Remote AS Number : 4 octets | No. of elements in set: 2 octets. The number of remote ASes over | |||
which the set SID performs load-balancing. | ||||
The unsigned integer representing the AS number [RFC6793] of the AS | Reserved: 2 octets. MUST be zero when sent and ignored when | |||
of the remote node for which the PeerSet SID is advertised. If | received. | |||
Confederations [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 Confederation and not the | ||||
Confederation Identifier. | ||||
Remote BGP Router ID : 4 octets | Remote AS Number: 4 octets. The unsigned integer representing the | |||
AS number [RFC6793] of the remote node's AS for which the PeerSet | ||||
SID is advertised. If Confederations [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 | ||||
Confederation and not the Confederation Identifier. | ||||
unsigned integer representing the BGP Identifier of the remote node | Remote BGP Router ID: 4 octets. The unsigned integer representing | |||
as defined in [RFC4271] and [RFC6286]. | the BGP Identifier of the remote node as defined in [RFC4271] and | |||
[RFC6286]. | ||||
PeerSet SID may be associated with a number of PeerNode SIDs and | 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 | PeerAdj SIDs. The remote AS number and the Router ID of each of | |||
these PeerNode SIDs PeerAdj SIDs MUST be included in the FEC. | these PeerNode SIDs and PeerAdj SIDs MUST be included in the FEC. | |||
5. EPE-SID FEC validation | 5. EPE-SID FEC Validation | |||
When a remote ASBR of the EPE-SID advertisement receives the MPLS OAM | When a remote ASBR of the EPE-SID advertisement receives the MPLS OAM | |||
packet with top FEC being the EPE-SID, it MUST perform validity | packet with the top FEC being the EPE-SID, it MUST perform validity | |||
checks on the content of the EPE-SID FEC sub-TLV. The basic length | checks on the content of the EPE-SID FEC sub-TLV. The basic length | |||
check should be performed on the received FEC. | check should be performed on the received FEC. | |||
PeerAdj SID | PeerAdj SID sub-TLV | |||
----------- | ----------- | |||
if Adj type = 1 Length should be 28 octets | If Adj type = 1, Length should be 28 octets | |||
If Adj type =2 Length should be 52 octets | If Adj type = 2, Length should be 52 octets | |||
PeerNode SID | PeerNode SID sub-TLV | |||
------------- | ------------- | |||
Length = ( 20 + No.of IPv4 interface pairs * 8 + | Length = (20 + No. of IPv4 interface pairs * 8 + | |||
No.of IPv6 interface pairs * 32 ) octets | No. of IPv6 interface pairs * 32) octets | |||
PeerSet SID | PeerSet SID sub-TLV | |||
----------- | ----------- | |||
Length = (9 + No.of elements in the set * | Length = (9 + No. of elements in the set * | |||
(8 + No.of IPv4 interface pairs * 8 + | (8 + No. of IPv4 interface pairs * 8 + | |||
No.of IPv6 interface pairs * 32)) octets | No. of IPv6 interface pairs * 32) octets | |||
Figure 6: Length Validation | Figure 5: Length Validation | |||
If a malformed FEC sub-TLV is received, then a return code of 1, | If a malformed FEC sub-TLV is received, then a return code of 1, | |||
"Malformed echo request received" as defined in [RFC8029] MUST be | "Malformed echo request received", as defined in [RFC8029] MUST be | |||
sent. The below section is appended to the procedure given in | sent. The section below is appended to the procedure given in step | |||
Section 7.4 point 4a of [RFC8287]. | 4a of Section 7.4 of [RFC8287]. | |||
5.1. EPE-SID FEC validiation | 5.1. EPE-SID FEC Validation Rules | |||
Segment Routing IGP-Prefix, IGP-Adjacency SID and EPE-SID Validation | This is an example of Segment Routing IGP-Prefix, IGP-Adjacency SID, | |||
: Receiving node term used in this section implies the node that | and EPE-SID validations. Note that the term "receiving node" in this | |||
receives OAM message with the FEC stack TLV. | section corresponds to the node that receives the OAM message with | |||
the Target FEC Stack TLV. | ||||
Else, if the Label-stack-depth is 0 and the Target FEC Stack sub-TLV | 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), { | at FEC stack-depth is 38 (PeerAdj SID sub-TLV), { | |||
Set the Best-return-code to 10, "Mapping for this FEC is not | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
the given label at stack-depth if any below | the given label at stack-depth <RSC>" [RFC8029]. Check if | |||
conditions fail: | any below conditions fail: | |||
- Validate that the receiving node's BGP Local AS matches | - Validate that the receiving node's BGP Local AS matches | |||
with the remote AS field in the received PeerAdj SID | with the remote AS field in the received PeerAdj SID | |||
FEC sub-TLV. | sub-TLV. | |||
- Validate that the receiving node's BGP Router-ID | - Validate that the receiving node's BGP Router-ID | |||
matches with the Remote Router ID field in the | matches with the Remote Router ID field in the | |||
received PeerAdj SID FEC. | received PeerAdj SID sub-TLV. | |||
- Validate that there is a EBGP session with a peer | - Validate that there is an EBGP session with a peer | |||
having local AS number and BGP Router-ID as | having a local AS number and BGP Router-ID as | |||
specified in the Local AS number and Local Router-ID | specified in the local AS number and Local Router-ID | |||
field in the received PeerAdj SID FEC sub-TLV. | field in the received PeerAdj SID sub-TLV. | |||
If the Remote interface address is not zero, validate the | If the remote interface address is not zero, validate the | |||
incoming interface. | incoming interface. Set the Best-return-code to 35, | |||
Set the Best-return-code to 35 "Mapping for this FEC is not | "Mapping for this FEC is not associated with the incoming | |||
associated with the incoming interface" [RFC8287] if any below | interface" [RFC8287]. Check if any below conditions fail: | |||
conditions fail: | ||||
- Validate the incoming interface on which the OAM | - Validate that the incoming interface on which the | |||
packet was receieved, matches with the remote | OAM packet was received matches with the remote | |||
interface specified in the PeerAdj SID FEC sub-TLV | interface specified in the PeerAdj SID sub-TLV. | |||
If all above validations have passed, set the return code to 3 | If all above validations have passed, set the return code to 3, | |||
"Replying router is an egress for the FEC at stack-depth" | "Replying router is an egress for the FEC at stack-depth <RSC>" | |||
} | [RFC8029]. | |||
} | ||||
Else, if the Target FEC sub-TLV at FEC-stack-depth is TBD2 | Else, if the Target FEC Stack sub-TLV at FEC stack-depth is 39 | |||
(PeerNode SID sub-TLV), { | (PeerNode SID sub-TLV), { | |||
Set the Best-return-code to 10, "Mapping for this FEC is not | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
the given label at stack-depth if any below | the given label at stack-depth <RSC>" [RFC8029]. Check if any | |||
conditions fail: | below conditions fail: | |||
- Validate that the receiving node's BGP Local AS matches | - Validate that the receiving node's BGP Local AS matches | |||
with the remote AS field in the | with the remote AS field in the received PeerNode SID | |||
received PeerNode SID FEC sub-TLV. | FEC sub-TLV. | |||
- Validate that the receiving node's BGP Router-ID matches | - Validate that the receiving node's BGP Router-ID matches | |||
with the Remote Router ID field in the received | with the Remote Router ID field in the received | |||
PeerNode SID FEC. | PeerNode SID FEC. | |||
- Validate that there is a EBGP session with a peer | - Validate that there is an EBGP session with a peer | |||
having local AS number and BGP Router-ID as | having a local AS number and BGP Router-ID as | |||
specified in the Local AS number and Local Router-ID | specified in the local AS number and Local Router-ID | |||
field in the received PeerNode SID FEC sub-TLV. | field in the received PeerNode SID FEC sub-TLV. | |||
If all above validations have passed, set the return code to 3 | If all above validations have passed, set the return code to 3, | |||
"Replying router is an egress for the FEC at stack-depth". | "Replying router is an egress for the FEC at stack-depth <RSC>" | |||
} | [RFC8029]. | |||
Else, if the Target FEC sub-TLV at FEC-stack-depth is TBD3 | } | |||
(PeerSet SID sub-TLV), { | Else, if the Target FEC Stack sub-TLV at FEC stack-depth is 40 | |||
(PeerSet SID sub-TLV), { | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
the given label at stack-depth" if any below | the given label at stack-depth <RSC>" [RFC8029]. Check if any | |||
conditions fail: | below conditions fail: | |||
- Validate that the Receiving Node BGP Local AS matches | - Validate that the receiving node's BGP Local AS matches | |||
with one of the remote AS field in the received PeerSet | with one of the remote AS fields in the received | |||
SID FEC sub-TLV. | PeerSet SID FEC sub-TLV. | |||
- Validate that the Receiving Node BGP Router-ID matches | - Validate that the receiving node's BGP Router-ID matches | |||
with one of the Remote Router ID field in the received | with one of the Remote Router ID fields in the | |||
PeerSet SID FEC sub-TLV. | received PeerSet SID FEC sub-TLV. | |||
- Validate that there is a EBGP session with a peer having | - Validate that there is an EBGP session with a peer having | |||
local AS number and BGP Router-ID as | a local AS number and BGP Router-ID as specified in the | |||
specified in the Local AS number and Local Router-ID | local AS number and Local Router-ID fields in the received | |||
field in the received PeerSet SID FEC sub-TLV. | PeerSet SID FEC sub-TLV. | |||
If all above validations have passed, set the return code to 3 | If all above validations have passed, set the return code to 3, | |||
"Replying router is an egress for the FEC at stack-depth" | "Replying router is an egress for the FEC at stack-depth <RSC>" | |||
} | [RFC8029]. | |||
} | ||||
6. IANA Considerations | 6. IANA Considerations | |||
IANA is requested to allocate three new Target FEC stack sub-TLVs | IANA has allocated three new Target FEC Stack sub-TLVs in the "Sub- | |||
from the "Sub-TLVs for TLV types 1,16 and 21" subregistry in the | TLVs for TLV Types 1, 16, and 21" registry | |||
"TLVs" registry of the "Multi-Protocol Label switching (MPLS) Label | [IANA-MPLS-LSP-PING-Parameters] within the "TLVs" registry of the | |||
Switched Paths (LSPs) Ping parameters" namespace. | "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) | |||
Ping Parameters" registry group. | ||||
PeerAdj SID Sub-TLV : TBD1 | ||||
PeerNode SID Sub-TLV: TBD2 | ||||
PeerSet SID Sub-TLV : TBD3 | +==========+==============+ | |||
| Sub-Type | Sub-TLV Name | | ||||
+==========+==============+ | ||||
| 38 | PeerAdj SID | | ||||
+----------+--------------+ | ||||
| 39 | PeerNode SID | | ||||
+----------+--------------+ | ||||
| 40 | PeerSet SID | | ||||
+----------+--------------+ | ||||
The three lowest free values from the Standard Tracks range should be | Table 1: Sub-TLVs for | |||
allocated if possible. | TLV Types 1, 16, and 21 | |||
Registry | ||||
7. Security Considerations | 7. Security Considerations | |||
The EPE-SIDs are advertised for egress links for Egress Peer | The EPE-SIDs are advertised for egress links for EPE purposes or for | |||
Engineering purposes or for inter-AS links between co-operating ASes. | inter-AS links between cooperating ASes. When cooperating domains | |||
When co-operating domains are involved, they can allow the packets | are involved, they can allow the packets arriving on trusted | |||
arriving on trusted interfaces to reach the control plane and get | interfaces to reach the control plane and be processed. | |||
processed. | ||||
When EPE-SIDs are created for egress TE links where the neighbor AS | When EPE-SIDs are created for egress TE links where the neighbor AS | |||
is an independent entity, it may not allow packets arriving from | is an independent entity, it may not allow the packets arriving from | |||
external world to reach the control plane. In such deployments MPLS | the external world to reach the control plane. In such deployments, | |||
OAM packets will be dropped by the neighboring AS that receives the | the MPLS OAM packets will be dropped by the neighboring AS that | |||
MPLS OAM packet. | receives the MPLS OAM packet. | |||
In MPLS traceroute applications, when the AS boundary is crossed with | In MPLS Traceroute applications, when the AS boundary is crossed with | |||
the EPE-SIDs, the FEC stack is changed. [RFC8287] does not mandate | the EPE-SIDs, the Target FEC Stack TLV is changed. [RFC8287] does | |||
that the initiator upon receiving an MPLS Echo Reply message that | not mandate that the initiator, upon receiving an MPLS Echo Reply | |||
includes the FEC Stack Change TLV with one or more of the original | message that includes the Target FEC Stack Change TLV with one or | |||
segments being popped remove a corresponding FEC(s) from the Target | more of the original segments being popped, remove the corresponding | |||
FEC Stack TLV in the next (TTL+1) traceroute request. | FEC(s) from the Target FEC Stack TLV in the next (TTL+1) traceroute | |||
request. | ||||
If an initiator does not remove the FECs belonging to the previous AS | 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 | that has traversed, it may expose the internal AS information to the | |||
following AS being traversed in traceroute. | following AS being traversed in the traceroute. | |||
8. Implementation Status | ||||
This section is to be removed before publishing as an RFC. | ||||
RFC-Editor: Please clean up the references cited by this section | ||||
before publication. | ||||
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 [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. | ||||
8.1. Juniper Networks | ||||
Juniper networks reported a prototype implementation of this draft. | ||||
9. Acknowledgments | ||||
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. | ||||
10. References | 8. References | |||
10.1. Normative References | 8.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet | [RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet | |||
Autonomous System (AS) Number Space", RFC 6793, | Autonomous System (AS) Number Space", RFC 6793, | |||
DOI 10.17487/RFC6793, December 2012, | DOI 10.17487/RFC6793, December 2012, | |||
<https://www.rfc-editor.org/info/rfc6793>. | <https://www.rfc-editor.org/info/rfc6793>. | |||
skipping to change at page 16, line 11 ¶ | skipping to change at line 631 ¶ | |||
"Clarification of Segment ID Sub-TLV Length for RFC 8287", | "Clarification of Segment ID Sub-TLV Length for RFC 8287", | |||
RFC 8690, DOI 10.17487/RFC8690, December 2019, | RFC 8690, DOI 10.17487/RFC8690, December 2019, | |||
<https://www.rfc-editor.org/info/rfc8690>. | <https://www.rfc-editor.org/info/rfc8690>. | |||
[RFC9086] Previdi, S., Talaulikar, K., Ed., Filsfils, C., Patel, K., | [RFC9086] Previdi, S., Talaulikar, K., Ed., Filsfils, C., Patel, K., | |||
Ray, S., and J. Dong, "Border Gateway Protocol - Link | Ray, S., and J. Dong, "Border Gateway Protocol - Link | |||
State (BGP-LS) Extensions for Segment Routing BGP Egress | State (BGP-LS) Extensions for Segment Routing BGP Egress | |||
Peer Engineering", RFC 9086, DOI 10.17487/RFC9086, August | Peer Engineering", RFC 9086, DOI 10.17487/RFC9086, August | |||
2021, <https://www.rfc-editor.org/info/rfc9086>. | 2021, <https://www.rfc-editor.org/info/rfc9086>. | |||
10.2. Informative References | 8.2. Informative References | |||
[I-D.ietf-idr-segment-routing-te-policy] | [BGP-SR-SEGTYPES-EXT] | |||
Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., and | Talaulikar, K., Filsfils, C., Previdi, S., Mattes, P., and | |||
D. Jain, "Advertising Segment Routing Policies in BGP", | D. Jain, "Segment Routing Segment Types Extensions for BGP | |||
Work in Progress, Internet-Draft, draft-ietf-idr-segment- | SR Policy", Work in Progress, Internet-Draft, draft-ietf- | |||
routing-te-policy-26, 23 October 2023, | idr-bgp-sr-segtypes-ext-06, 7 November 2024, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-idr- | <https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp- | |||
segment-routing-te-policy-26>. | sr-segtypes-ext-06>. | |||
[IANA-MPLS-LSP-PING-Parameters] | ||||
IANA, "Sub-TLVs for TLV Types 1, 16, and 21", | ||||
<https://www.iana.org/assignments/mpls-lsp-ping- | ||||
parameters>. | ||||
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | |||
Border Gateway Protocol 4 (BGP-4)", RFC 4271, | Border Gateway Protocol 4 (BGP-4)", RFC 4271, | |||
DOI 10.17487/RFC4271, January 2006, | DOI 10.17487/RFC4271, January 2006, | |||
<https://www.rfc-editor.org/info/rfc4271>. | <https://www.rfc-editor.org/info/rfc4271>. | |||
[RFC5065] Traina, P., McPherson, D., and J. Scudder, "Autonomous | [RFC5065] Traina, P., McPherson, D., and J. Scudder, "Autonomous | |||
System Confederations for BGP", RFC 5065, | System Confederations for BGP", RFC 5065, | |||
DOI 10.17487/RFC5065, August 2007, | DOI 10.17487/RFC5065, August 2007, | |||
<https://www.rfc-editor.org/info/rfc5065>. | <https://www.rfc-editor.org/info/rfc5065>. | |||
[RFC6286] Chen, E. and J. Yuan, "Autonomous-System-Wide Unique BGP | [RFC6286] Chen, E. and J. Yuan, "Autonomous-System-Wide Unique BGP | |||
Identifier for BGP-4", RFC 6286, DOI 10.17487/RFC6286, | Identifier for BGP-4", RFC 6286, DOI 10.17487/RFC6286, | |||
June 2011, <https://www.rfc-editor.org/info/rfc6286>. | June 2011, <https://www.rfc-editor.org/info/rfc6286>. | |||
[RFC7705] George, W. and S. Amante, "Autonomous System Migration | [RFC7705] George, W. and S. Amante, "Autonomous System Migration | |||
Mechanisms and Their Effects on the BGP AS_PATH | Mechanisms and Their Effects on the BGP AS_PATH | |||
Attribute", RFC 7705, DOI 10.17487/RFC7705, November 2015, | Attribute", RFC 7705, DOI 10.17487/RFC7705, November 2015, | |||
<https://www.rfc-editor.org/info/rfc7705>. | <https://www.rfc-editor.org/info/rfc7705>. | |||
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | ||||
Code: The Implementation Status Section", BCP 205, | ||||
RFC 7942, DOI 10.17487/RFC7942, July 2016, | ||||
<https://www.rfc-editor.org/info/rfc7942>. | ||||
[RFC8403] Geib, R., Ed., Filsfils, C., Pignataro, C., Ed., and N. | [RFC8403] Geib, R., Ed., Filsfils, C., Pignataro, C., Ed., and N. | |||
Kumar, "A Scalable and Topology-Aware MPLS Data-Plane | Kumar, "A Scalable and Topology-Aware MPLS Data-Plane | |||
Monitoring System", RFC 8403, DOI 10.17487/RFC8403, July | Monitoring System", RFC 8403, DOI 10.17487/RFC8403, July | |||
2018, <https://www.rfc-editor.org/info/rfc8403>. | 2018, <https://www.rfc-editor.org/info/rfc8403>. | |||
[RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., | [RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., | |||
and J. Hardwick, "Path Computation Element Communication | and J. Hardwick, "Path Computation Element Communication | |||
Protocol (PCEP) Extensions for Segment Routing", RFC 8664, | Protocol (PCEP) Extensions for Segment Routing", RFC 8664, | |||
DOI 10.17487/RFC8664, December 2019, | DOI 10.17487/RFC8664, December 2019, | |||
<https://www.rfc-editor.org/info/rfc8664>. | <https://www.rfc-editor.org/info/rfc8664>. | |||
skipping to change at page 17, line 21 ¶ | skipping to change at line 686 ¶ | |||
[RFC9087] Filsfils, C., Ed., Previdi, S., Dawra, G., Ed., Aries, E., | [RFC9087] Filsfils, C., Ed., Previdi, S., Dawra, G., Ed., Aries, E., | |||
and D. Afanasiev, "Segment Routing Centralized BGP Egress | and D. Afanasiev, "Segment Routing Centralized BGP Egress | |||
Peer Engineering", RFC 9087, DOI 10.17487/RFC9087, August | Peer Engineering", RFC 9087, DOI 10.17487/RFC9087, August | |||
2021, <https://www.rfc-editor.org/info/rfc9087>. | 2021, <https://www.rfc-editor.org/info/rfc9087>. | |||
[RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, | [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, | |||
A., and P. Mattes, "Segment Routing Policy Architecture", | A., and P. Mattes, "Segment Routing Policy Architecture", | |||
RFC 9256, DOI 10.17487/RFC9256, July 2022, | RFC 9256, DOI 10.17487/RFC9256, July 2022, | |||
<https://www.rfc-editor.org/info/rfc9256>. | <https://www.rfc-editor.org/info/rfc9256>. | |||
Appendix A. APPENDIX | [SR-BGP-POLICY] | |||
Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., and | ||||
D. Jain, "Advertising Segment Routing Policies in BGP", | ||||
Work in Progress, Internet-Draft, draft-ietf-idr-sr- | ||||
policy-safi-10, 7 November 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr- | ||||
policy-safi-10>. | ||||
This section describes an example of correctly programmed state and | Appendix A. Examples of Programmed States | |||
This section describes examples of both a correctly and an | ||||
incorrectly programmed state and provides details on how the new sub- | incorrectly programmed state and provides details on how the new sub- | |||
TLVs described in this document can be used to validate the | TLVs described in this document can be used to validate the | |||
correctness. Consider the diagram from Figure 1, | correctness. Consider the diagram from Figure 1. | |||
Correctly programed state: | Correctly programmed state: | |||
• C assigns label 16001 and binds it to adjacency C->E | * C assigns label 16001 and binds it to adjacency C->E | |||
• C signals label 16001 is bound to adjacency C->E (e.g. via BGP- | * C signals that label 16001 is bound to adjacency C->E (e.g., via | |||
LS) | BGP-LS) | |||
• Controller/Ingress programs an SR path that has SID/label 16001 | * The controller/ingress programs an SR path that has SID/label | |||
to steer packet on the exit point from C onto adjacency C->E | 16001 to steer the packet on the exit point from C onto adjacency | |||
C->E | ||||
• Using MPLS trace procedures defined in this document, the | * Using MPLS Traceroute procedures defined in this document, the | |||
PeerAdj SID Sub-TLV is populates with entities to be validated by | PeerAdj SID sub-TLV is populated with entities to be validated by | |||
C when OAM packet reaches it. | C when the OAM packet reaches it | |||
• C receives the OAM packet, it validates the top label (16001) is | * C receives the OAM packet and validates that the top label (16001) | |||
indeed corresponding to the entities populated in the PeerAdj SID | is indeed corresponding to the entities populated in the PeerAdj | |||
Sub-TLV | SID sub-TLV | |||
Incorrectly programed state: | Incorrectly programmed state: | |||
• C assigns label 16001 and binds it to adjacency C->D | * C assigns label 16001 and binds it to adjacency C->D | |||
• The controller learns of PeerAdj SID label 16001 is bound to | * 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 | adjacency C->E (e.g., via BGP-LS) -- this could be a software bug | |||
C or on controller | on C or on the controller | |||
• Controller/Ingress programs an SR path that has SID/label 16001 | ||||
to steer packet on the exit point from C onto adjacency C->E | ||||
• Using MPLS trace procedures defined in this document, the | * The controller/ingress programs an SR path that has SID/label | |||
PeerAdj SID Sub-TLV is populates with entities to be validated by | 16001 to steer the packet on the exit point from C onto adjacency | |||
C (including local/remote interface address of C->E) when OAM | C->E | |||
packet reaches it. | ||||
• C receives the OAM packet, it validates the top label (16001) is | * Using MPLS Traceroute procedures defined in this document, the | |||
NOT bound to C->E as populated in the PeerAdj SID Sub-TLV and can | PeerAdj SID sub-TLV is populated with entities to be validated by | |||
respond with the respective error code | C (including a local/remote interface address of C->E) when the | |||
OAM packet reaches it | ||||
* 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 | ||||
Acknowledgments | ||||
Thanks to Loa Andersson, Dhruv Dhody, Ketan Talaulikar, Italo Busi, | ||||
Alexander Vainshtein, and Deepti Rathi for careful reviews and | ||||
comments. Thanks to Tarek Saad for providing the example described | ||||
in Appendix A. | ||||
Authors' Addresses | Authors' Addresses | |||
Shraddha Hegde | Shraddha Hegde | |||
Juniper Networks Inc. | Juniper Networks Inc. | |||
Exora Business Park | Exora Business Park | |||
Bangalore 560103 | Bangalore 560103 | |||
KA | Karnataka | |||
India | India | |||
Email: shraddha@juniper.net | Email: shraddha@juniper.net | |||
Mukul Srivastava | Mukul Srivastava | |||
Juniper Networks Inc. | Juniper Networks Inc. | |||
Email: msri@juniper.net | Email: msri@juniper.net | |||
Kapil Arora | Kapil Arora | |||
Individual Contributor | Individual Contributor | |||
Email: kapil.it@gmail.com | Email: kapil.it@gmail.com | |||
End of changes. 123 change blocks. | ||||
521 lines changed or deleted | 484 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |