rfc9703v3.txt | rfc9703.txt | |||
---|---|---|---|---|
skipping to change at line 118 ¶ | skipping to change at line 118 ¶ | |||
| X | \\ | K | | X | \\ | K | |||
| | +===F AS3 | | | | +===F AS3 | | |||
+---------+ +------+ | +---------+ +------+ | |||
Figure 1: Reference Diagram | Figure 1: Reference Diagram | |||
In Figure 1, EPE-SIDs are configured on AS1 towards AS2 and AS3 and | In Figure 1, EPE-SIDs are configured on AS1 towards AS2 and AS3 and | |||
advertised in the Border Gateway Protocol - Link State (BGP-LS) | advertised in the Border Gateway Protocol - Link State (BGP-LS) | |||
[RFC9086]. In certain cases, the EPE-SIDs advertised by the control | [RFC9086]. In certain cases, the EPE-SIDs advertised by the control | |||
plane may not be in synchronization with the label programmed in the | plane may not be in synchronization with the label programmed in the | |||
data plane. For example, on C, a PeerAdj SID sub-TLV could be | data plane. For example, on C, a PeerAdj SID could be advertised to | |||
advertised to indicate it is for the link C->D. Due to some software | indicate it is for the link C->D. Due to some software anomaly, the | |||
anomaly, the actual data forwarding on this PeerAdj SID sub-TLV could | actual data forwarding on this PeerAdj SID could be happening over | |||
be happening over the C->E link. If E had relevant data paths for | the C->E link. If E had relevant data paths for further forwarding | |||
further forwarding the packet, this kind of anomaly would go | the packet, this kind of anomaly would go unnoticed by the network | |||
unnoticed by the network operator. A detailed example of a correctly | operator. A detailed example of a correctly programmed state and an | |||
programmed state and an incorrectly programmed state along with a | incorrectly programmed state along with a description of how the | |||
description of how the incorrect state can be detected is described | incorrect state can be detected is described in Appendix A. A | |||
in Appendix A. A Forwarding Equivalence Class (FEC) definition for | Forwarding Equivalence Class (FEC) definition for the EPE-SIDs will | |||
the EPE-SIDs will detail the control plane association of the SID. | detail the control plane association of the SID. The data plane | |||
The data plane validation of the SID will be done during the MPLS | validation of the SID will be done during the MPLS Traceroute | |||
Traceroute procedure. When there is a multi-hop External BGP (EBGP) | procedure. When there is a multi-hop External BGP (EBGP) session | |||
session between the ASBRs, a PeerNode SID is advertised, and the | between the ASBRs, a PeerNode SID is advertised, and the traffic MAY | |||
traffic MAY be load-balanced between the interfaces connecting the | be load-balanced between the interfaces connecting the two nodes. In | |||
two nodes. In Figure 1, C and F could have a PeerNode SID | Figure 1, C and F could have a PeerNode SID advertised. When the | |||
advertised. When the Operations, Administration, and Maintenance | Operations, Administration, and Maintenance (OAM) packet is received | |||
(OAM) packet is received on F, it needs to be validated that the | on F, it needs to be validated that the packet came from one of the | |||
packet came from one of the two interfaces connected to C. | 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 the node | Stack TLV definitions for EPE-SIDs. This solution requires the node | |||
constructing the Target FEC Stack TLV to determine the types of SIDs | constructing the Target FEC Stack TLV to determine the types of 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 Section 7 of [RFC8287] and clarified in | 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 | |||
skipping to change at line 308 ¶ | skipping to change at line 308 ¶ | |||
Adj type: 1 octet | Adj type: 1 octet | |||
Value: Set to 1 when the Adjacency Segment is IPv4. Set to 2 when | Value: Set to 1 when the Adjacency Segment is IPv4. Set to 2 when | |||
the Adjacency Segment is IPv6. | the Adjacency Segment is IPv6. | |||
RESERVED: 3 octets. MUST be zero when sending and ignored on | RESERVED: 3 octets. MUST be zero when sending and ignored on | |||
receiving. | receiving. | |||
Local AS Number: 4 octets. The unsigned integer representing the AS | Local AS Number: 4 octets. The unsigned integer representing the AS | |||
number [RFC6793] of the AS to which the PeerAdj SID sub-TLV | number [RFC6793] of the AS to which the PeerAdj SID advertising | |||
advertising node belongs. If Confederations [RFC5065] are in use, | node belongs. If Confederations [RFC5065] are in use, and if the | |||
and if the remote node is a member of a different Member-AS within | remote node is a member of a different Member-AS within the local | |||
the local Confederation, this is the Member-AS Number inside the | Confederation, this is the Member-AS Number inside the | |||
Confederation and not the Confederation Identifier. | Confederation and not the Confederation Identifier. | |||
Remote AS Number: 4 octets. The unsigned integer representing the | Remote AS Number: 4 octets. The unsigned integer representing the | |||
AS number [RFC6793] of the remote node's AS for which the PeerAdj | AS number [RFC6793] of the remote node's AS for which the PeerAdj | |||
SID sub-TLV is advertised. If Confederations [RFC5065] are in | SID is advertised. If Confederations [RFC5065] are in use, and if | |||
use, and if the remote node is a member of a different Member-AS | the remote node is a member of a different Member-AS within the | |||
within the local Confederation, this is the Member-AS Number | local Confederation, this is the Member-AS Number inside the | |||
inside the Confederation and not the Confederation Identifier. | Confederation and not the Confederation Identifier. | |||
Local BGP Router ID: 4 octets. The unsigned integer representing | Local BGP Router ID: 4 octets. The unsigned integer representing | |||
the BGP Identifier of the PeerAdj SID sub-TLV advertising node as | the BGP Identifier of the PeerAdj SID advertising node as defined | |||
defined in [RFC4271] and [RFC6286]. | in [RFC4271] and [RFC6286]. | |||
Remote BGP Router ID: 4 octets. The unsigned integer representing | Remote BGP Router ID: 4 octets. The unsigned integer representing | |||
the BGP Identifier of the remote node as defined in [RFC4271] and | the BGP Identifier of the remote node as defined in [RFC4271] and | |||
[RFC6286]. | [RFC6286]. | |||
Local Interface Address: 4 octets or 16 octets. In the case of | Local Interface Address: 4 octets or 16 octets. In the case of | |||
PeerAdj SID sub-TLV, the local interface address corresponding to | PeerAdj SID, the local interface address corresponding to the | |||
the PeerAdj SID sub-TLV should be specified in this field. For | PeerAdj SID should be specified in this field. For IPv4, this | |||
IPv4, this field is 4 octets; for IPv6, this field is 16 octets. | field is 4 octets; for IPv6, this field is 16 octets. Link-local | |||
Link-local IPv6 addresses are not in the scope of this document. | IPv6 addresses are not in the scope of this document. | |||
Remote Interface Address: 4 octets or 16 octets. In the case of | Remote Interface Address: 4 octets or 16 octets. In the case of | |||
PeerAdj SID sub-TLV, the remote interface address corresponding to | PeerAdj SID, the remote interface address corresponding to the | |||
the PeerAdj SID sub-TLV should be specified in this field. For | PeerAdj SID should be specified in this field. For IPv4, this | |||
IPv4, this field is 4 octets; for IPv6, this field is 16 octets. | field is 4 octets; for IPv6, this field is 16 octets. Link-local | |||
Link-local IPv6 addresses are not in the scope of this document. | IPv6 addresses are not in the scope of this document. | |||
[RFC9086] mandates sending a local interface ID and remote interface | [RFC9086] mandates sending a local interface ID and remote interface | |||
ID 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, but if the remote descriptor is 0, this validation is not | OAM packet, but if the remote descriptor is 0, this validation is not | |||
possible. Optional link descriptors of local and remote interface | possible. Optional link descriptors of local and remote interface | |||
addresses are allowed as described in Section 4.2 of [RFC9086]. In | addresses are allowed as described in Section 4.2 of [RFC9086]. In | |||
this document, it is RECOMMENDED to send these optional descriptors | this document, it is RECOMMENDED to send these optional descriptors | |||
and use them to validate incoming interfaces. When these local and | and use them to validate incoming interfaces. When these local and | |||
remote interface addresses are not available, an ingress node can | remote interface addresses are not available, an ingress node can | |||
skipping to change at line 420 ¶ | skipping to change at line 420 ¶ | |||
SID is advertised. If Confederations [RFC5065] are in use, and if | SID is advertised. If Confederations [RFC5065] are in use, and if | |||
the remote node is a member of a different Member-AS within the | the remote node is a member of a different Member-AS within the | |||
local Confederation, this is the Member-AS Number inside the | local Confederation, this is the Member-AS Number inside the | |||
Confederation and not the Confederation Identifier. | Confederation and not the Confederation Identifier. | |||
Remote BGP Router ID: 4 octets. The unsigned integer representing | Remote BGP Router ID: 4 octets. The unsigned integer representing | |||
the BGP Identifier of the remote node as defined in [RFC4271] and | the BGP Identifier of the remote node as defined in [RFC4271] and | |||
[RFC6286]. | [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 SID sub-TLVs. The remote AS number and the Router ID of each | PeerAdj SIDs. The remote AS number and the Router ID of each of | |||
of these PeerNode SIDs and PeerAdj SID sub-TLVs MUST be included in | these PeerNode SIDs and PeerAdj SIDs MUST be included in the FEC. | |||
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 the 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 sub-TLV | 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 5: 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 section below is appended to the procedure given in step | sent. The section below is appended to the procedure given in step | |||
skipping to change at line 726 ¶ | skipping to change at line 725 ¶ | |||
C when the OAM packet reaches it | C when the OAM packet reaches it | |||
* C receives the OAM packet and validates that the top label (16001) | * C receives the OAM packet and validates that the top label (16001) | |||
is indeed corresponding to the entities populated in the PeerAdj | is indeed corresponding to the entities populated in the PeerAdj | |||
SID sub-TLV | SID sub-TLV | |||
Incorrectly programmed 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 that PeerAdj SID sub-TLV label 16001 is | * The controller learns that PeerAdj SID label 16001 is bound to | |||
bound to adjacency C->E (e.g., via BGP-LS) -- this could be a | adjacency C->E (e.g., via BGP-LS) -- this could be a software bug | |||
software bug on C or on the controller | on C or on the controller | |||
* The controller/ingress programs an SR path that has SID/label | * The controller/ingress programs an SR path that has SID/label | |||
16001 to steer the packet on the exit point from C onto adjacency | 16001 to steer the packet on the exit point from C onto adjacency | |||
C->E | C->E | |||
* Using MPLS Traceroute procedures defined in this document, the | * Using MPLS Traceroute procedures defined in this document, the | |||
PeerAdj SID sub-TLV is populated with entities to be validated by | PeerAdj SID sub-TLV is populated with entities to be validated by | |||
C (including a local/remote interface address of C->E) when the | C (including a local/remote interface address of C->E) when the | |||
OAM packet reaches it | OAM packet reaches it | |||
End of changes. 10 change blocks. | ||||
44 lines changed or deleted | 43 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |