rfc9830v2.txt | rfc9830.txt | |||
---|---|---|---|---|
skipping to change at line 155 ¶ | skipping to change at line 155 ¶ | |||
the CPs of an SR Policy to the headend of that SR Policy. The | the CPs of an SR Policy to the headend of that SR Policy. The | |||
document describes the functionality provided by BGP and, as | document describes the functionality provided by BGP and, as | |||
appropriate, provides references for the functionality, which is | appropriate, provides references for the functionality, which is | |||
outside the scope of BGP (i.e., resides within SRPM on the headend | outside the scope of BGP (i.e., resides within SRPM on the headend | |||
node). | node). | |||
This document specifies a way of representing SR Policy CPs in BGP | This document specifies a way of representing SR Policy CPs in BGP | |||
UPDATE messages. BGP can then be used to propagate the SR Policy CPs | UPDATE messages. BGP can then be used to propagate the SR Policy CPs | |||
to the headend nodes in a network. The usual BGP rules for BGP | to the headend nodes in a network. The usual BGP rules for BGP | |||
propagation and best-path selection are used. At the headend of a | propagation and best-path selection are used. At the headend of a | |||
specific policy, this will result in one or more CPs being installed | specific SR Policy, this will result in one or more CPs being | |||
into the "BGP table". These paths are then passed to the SRPM. The | installed into the "BGP table". These paths are then passed to the | |||
SRPM may compare them to CPs learned via other mechanisms and will | SRPM. The SRPM may compare them to CPs learned via other mechanisms | |||
choose one or more paths to be installed in the data plane. BGP | and will choose one or more paths to be installed in the data plane. | |||
itself does not install SR Policy CPs into the data plane. | BGP itself does not install SR Policy CPs into the data plane. | |||
This document introduces a BGP Subsequent Address Family Identifier | This document introduces a BGP Subsequent Address Family Identifier | |||
(SAFI) for IPv4 and IPv6 address families. In BGP UPDATE messages of | (SAFI) for IPv4 and IPv6 address families. In BGP UPDATE messages of | |||
those AFI/SAFIs, the Network Layer Reachability Information (NLRI) | those AFI/SAFIs, the Network Layer Reachability Information (NLRI) | |||
identifies an SR Policy CP while the attributes encode the segment | identifies an SR Policy CP while the attributes encode the segment | |||
lists and other details of that SR Policy CP. | lists and other details of that SR Policy CP. | |||
While, for simplicity, the text in this document states that BGP | While, for simplicity, the text in this document states that BGP | |||
advertises an SR Policy, it is to be understood that BGP advertises a | advertises an SR Policy, it is to be understood that BGP advertises a | |||
CP of an SR Policy and that this SR Policy might have several other | CP of an SR Policy and that this SR Policy might have several other | |||
CPs provided via BGP (via an NLRI with a different distinguisher as | CPs provided via BGP (via an NLRI with a different distinguisher as | |||
defined in Section 2.1), PCEP, NETCONF, or local policy | defined in Section 2.1), PCEP, NETCONF, or local policy | |||
configuration. | configuration. | |||
Typically, an SR Policy Controller [RFC9256] defines the set of | Typically, an SR Policy Controller [RFC9256] defines the set of | |||
policies and advertises them to policy headend routers (typically | policies and advertises them to SR Policy headend routers (typically | |||
ingress routers). These policy advertisements use the BGP extensions | ingress routers). These SR Policy advertisements use the BGP | |||
defined in this document. In most cases, the policy advertisement is | extensions defined in this document. In most cases, the SR Policy | |||
tailored for a specific policy headend; consequently, it may be | advertisement is tailored for a specific SR Policy headend; | |||
transmitted over a direct BGP session (i.e., without intermediate BGP | consequently, it may be transmitted over a direct BGP session (i.e., | |||
hops) to that headend and is not propagated any further. In such | without intermediate BGP hops) to that headend and is not propagated | |||
cases, the policy advertisements will not traverse any Route | any further. In such cases, the SR Policy advertisements will not | |||
Reflector (RR) (see [RFC4456] and Section 4.2.3). | traverse any Route Reflector (RR) (see [RFC4456] and Section 4.2.3). | |||
Alternatively, a BGP egress router may advertise SR Policies that | Alternatively, a BGP egress router may advertise SR Policies that | |||
represent paths that terminate on it. In such cases, the router can | represent paths that terminate on it. In such cases, the router can | |||
send these policies directly to each headend over a dedicated BGP | send these policies directly to each headend over a dedicated BGP | |||
session, without necessitating any further propagation of the policy. | session, without necessitating any further propagation of the SR | |||
Policy. | ||||
In some situations, it is undesirable for a controller or BGP egress | In some situations, it is undesirable for a controller or BGP egress | |||
router to have a BGP session to each policy headend. In these | router to have a BGP session to each SR Policy headend. In these | |||
situations, BGP RRs may be used to propagate the advertisements. In | situations, BGP RRs may be used to propagate the advertisements. In | |||
certain other deployments, it may be necessary for the advertisement | certain other deployments, it may be necessary for the advertisement | |||
to propagate through a sequence of one or more Autonomous Systems | to propagate through a sequence of one or more Autonomous Systems | |||
(ASes) within an SR Domain (refer to Section 7 for the associated | (ASes) within an SR Domain (refer to Section 7 for the associated | |||
security considerations). To make this possible, an attribute needs | security considerations). To make this possible, an attribute needs | |||
to be attached to the advertisement that enables a BGP speaker to | to be attached to the advertisement that enables a BGP speaker to | |||
determine whether it is intended to be a headend for the advertised | determine whether it is intended to be a headend for the advertised | |||
policy. This is done by attaching one or more Route Target extended | SR Policy. This is done by attaching one or more Route Target | |||
communities to the advertisement [RFC4360]. | extended communities to the advertisement [RFC4360]. | |||
The BGP extensions for the advertisement of SR Policies include | The BGP extensions for the advertisement of SR Policies include | |||
following components: | following components: | |||
* A SAFI whose NLRIs identify an SR Policy CP. | * A SAFI whose NLRIs identify an SR Policy CP. | |||
* A Tunnel Type identifier for SR Policy and a set of sub-TLVs to be | * A Tunnel Type identifier for SR Policy and a set of sub-TLVs to be | |||
inserted into the Tunnel Encapsulation Attribute (as defined in | inserted into the Tunnel Encapsulation Attribute (as defined in | |||
[RFC9012]) specifying segment lists of the SR Policy CP as well as | [RFC9012]) specifying segment lists of the SR Policy CP as well as | |||
other information about the SR Policy. | other information about the SR Policy. | |||
skipping to change at line 275 ¶ | skipping to change at line 276 ¶ | |||
+------------------+ | +------------------+ | |||
Figure 1: SR Policy SAFI Format | Figure 1: SR Policy SAFI Format | |||
Where: | Where: | |||
NLRI Length: 1 octet indicating the length expressed in bits as | NLRI Length: 1 octet indicating the length expressed in bits as | |||
defined in [RFC4760]. When AFI = 1, the value MUST be 96; when | defined in [RFC4760]. When AFI = 1, the value MUST be 96; when | |||
AFI = 2, the value MUST be 192. | AFI = 2, the value MUST be 192. | |||
Distinguisher: 4-octet value uniquely identifying the policy in the | Distinguisher: 4-octet value uniquely identifying the SR Policy in | |||
context of <Color, Endpoint> tuple. The distinguisher has no | the context of <Color, Endpoint> tuple. The distinguisher has no | |||
semantic value. It is used by the SR Policy originator to form | semantic value. It is used by the SR Policy originator to form | |||
unique NLRIs the following situations: | unique NLRIs the following situations: | |||
* to differentiate multiple CPs of the same SR Policy | * to differentiate multiple CPs of the same SR Policy | |||
* to differentiate CPs meant for different headends but having | * to differentiate CPs meant for different headends but having | |||
the same Color and Endpoint | the same Color and Endpoint | |||
The distinguisher is the discriminator of the SR Policy CP as | The distinguisher is the discriminator of the SR Policy CP as | |||
specified in Section 2.5 of [RFC9256]. | specified in Section 2.5 of [RFC9256]. | |||
Policy Color: 4 octets that carry an unsigned non-zero integer value | Policy Color: 4 octets that carry an unsigned non-zero integer value | |||
indicating the Color of the SR Policy as specified in Section 2.1 | indicating the Color of the SR Policy as specified in Section 2.1 | |||
of [RFC9256]. The Color is used to match the Color of the | of [RFC9256]. The Color is used to match the Color of the | |||
destination prefixes to steer traffic into the SR Policy as | destination prefixes to steer traffic into the SR Policy as | |||
specified in Section 8 of [RFC9256]. | specified in Section 8 of [RFC9256]. | |||
Endpoint: a value that identifies the Endpoint of a policy. The | Endpoint: a value that identifies the Endpoint of an SR Policy. The | |||
Endpoint may represent a single node or a set of nodes (e.g., an | Endpoint may represent a single node or a set of nodes (e.g., an | |||
anycast address). The Endpoint is an IPv4 (4-octet) address or an | anycast address). The Endpoint is an IPv4 (4-octet) address or an | |||
IPv6 (16-octet) address according to the AFI of the NLRI. The | IPv6 (16-octet) address according to the AFI of the NLRI. The | |||
address can be either unicast or an unspecified address (0.0.0.0 | address can be either unicast or an unspecified address (0.0.0.0 | |||
for IPv4, :: for IPv6), known as a null Endpoint as specified in | for IPv4, :: for IPv6), known as a null Endpoint as specified in | |||
Section 2.1 of [RFC9256]. | Section 2.1 of [RFC9256]. | |||
The Color and Endpoint are used to automate the steering of BGP | The Color and Endpoint are used to automate the steering of BGP | |||
service routes on an SR Policy as described in Section 8 of | service routes on an SR Policy as described in Section 8 of | |||
[RFC9256]. | [RFC9256]. | |||
skipping to change at line 561 ¶ | skipping to change at line 562 ¶ | |||
* The S-Flag encodes the "Specified-BSID-Only" behavior. It is | * The S-Flag encodes the "Specified-BSID-Only" behavior. It is | |||
used by SRPM as described in Section 6.2.3 of [RFC9256]. | used by SRPM as described in Section 6.2.3 of [RFC9256]. | |||
* The I-Flag encodes the "Drop-Upon-Invalid" behavior. It is | * The I-Flag encodes the "Drop-Upon-Invalid" behavior. It is | |||
used by SRPM as described in Section 8.2 of [RFC9256] to define | used by SRPM as described in Section 8.2 of [RFC9256] to define | |||
a specific SR Policy forwarding behavior. The flag indicates | a specific SR Policy forwarding behavior. The flag indicates | |||
that the SR Policy is to perform the "Drop-Upon-Invalid" | that the SR Policy is to perform the "Drop-Upon-Invalid" | |||
behavior when no valid CP is available for this SR Policy. In | behavior when no valid CP is available for this SR Policy. In | |||
this situation, the CP with the highest preference amongst | this situation, the CP with the highest preference amongst | |||
those with the "Drop-Upon-Invalid" config is made active to | those with the "Drop-Upon-Invalid" behavior is made active to | |||
drop traffic steered over the SR Policy. | drop traffic steered over the SR Policy. | |||
* The unassigned bits in the Flags field MUST be set to zero upon | * The unassigned bits in the Flags field MUST be set to zero upon | |||
transmission and MUST be ignored upon receipt. | transmission and MUST be ignored upon receipt. | |||
RESERVED: 1 octet of reserved bits. MUST be set to zero on | RESERVED: 1 octet of reserved bits. MUST be set to zero on | |||
transmission and MUST be ignored on receipt. | transmission and MUST be ignored on receipt. | |||
Binding SID: If the length is 2, then no BSID is present. If the | Binding SID: If the length is 2, then no BSID is present. If the | |||
length is 6, then the BSID is encoded in 4 octets using the format | length is 6, then the BSID is encoded in 4 octets using the format | |||
skipping to change at line 775 ¶ | skipping to change at line 776 ¶ | |||
Type A: SR-MPLS Label | Type A: SR-MPLS Label | |||
Type B: SRv6 SID | Type B: SRv6 SID | |||
Type C: IPv4 Prefix with optional SR Algorithm | Type C: IPv4 Prefix with optional SR Algorithm | |||
Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS | Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS | |||
Type E: IPv4 Prefix with Local Interface ID | Type E: IPv4 Prefix with Local Interface ID | |||
Type F: IPv4 Addresses for link Endpoints as Local, Remote pair | Type F: IPv4 Addresses for link endpoints as Local, Remote pair | |||
Type G: IPv6 Prefix and Interface ID for link Endpoints as Local, | Type G: IPv6 Prefix and Interface ID for link endpoints as Local, | |||
Remote pair for SR-MPLS | Remote pair for SR-MPLS | |||
Type H: IPv6 Addresses for link Endpoints as Local, Remote pair for | Type H: IPv6 Addresses for link endpoints as Local, Remote pair for | |||
SR-MPLS | SR-MPLS | |||
Type I: IPv6 Global Prefix with optional SR Algorithm for SRv6 | Type I: IPv6 Global Prefix with optional SR Algorithm for SRv6 | |||
Type J: IPv6 Prefix and Interface ID for link Endpoints as Local, | Type J: IPv6 Prefix and Interface ID for link endpoints as Local, | |||
Remote pair for SRv6 | Remote pair for SRv6 | |||
Type K: IPv6 Addresses for link Endpoints as Local, Remote pair for | Type K: IPv6 Addresses for link endpoints as Local, Remote pair for | |||
SRv6 | SRv6 | |||
The following subsections specify the sub-TLVs used for Segment Types | The following subsections specify the sub-TLVs used for Segment Types | |||
A and B. The other segment types are specified in [RFC9831]. As | A and B. The other segment types are specified in [RFC9831]. As | |||
specified in Section 5.1 of [RFC9256], a mix of SR-MPLS and SRv6 | specified in Section 5.1 of [RFC9256], a mix of SR-MPLS and SRv6 | |||
segments make the segment-list invalid. | segments make the segment-list invalid. | |||
2.4.4.2.1. Segment Type A | 2.4.4.2.1. Segment Type A | |||
The Type A Segment sub-TLV encodes a single SR-MPLS SID. The format | The Type A Segment sub-TLV encodes a single SR-MPLS SID. The format | |||
skipping to change at line 1355 ¶ | skipping to change at line 1356 ¶ | |||
This section describes the error-handling actions, as described in | This section describes the error-handling actions, as described in | |||
[RFC7606], that are to be performed for the handling of the BGP | [RFC7606], that are to be performed for the handling of the BGP | |||
UPDATE messages for the BGP SR Policy SAFI. | UPDATE messages for the BGP SR Policy SAFI. | |||
A BGP speaker MUST perform the following syntactic validation of the | A BGP speaker MUST perform the following syntactic validation of the | |||
SR Policy NLRI to determine if it is malformed. This includes the | SR Policy NLRI to determine if it is malformed. This includes the | |||
validation of the length of each NLRI and the total length of the | validation of the length of each NLRI and the total length of the | |||
MP_REACH_NLRI and MP_UNREACH_NLRI attributes. It also includes the | MP_REACH_NLRI and MP_UNREACH_NLRI attributes. It also includes the | |||
validation of the consistency of the NLRI length with the AFI and the | validation of the consistency of the NLRI length with the AFI and the | |||
Endpoint address as specified in Section 2.1. | endpoint address as specified in Section 2.1. | |||
When the error determined allows for the router to skip the malformed | When the error determined allows for the router to skip the malformed | |||
NLRI(s) and continue the processing of the rest of the BGP UPDATE | NLRI(s) and continue the processing of the rest of the BGP UPDATE | |||
message, then it MUST handle such malformed NLRIs as 'treat-as- | message, then it MUST handle such malformed NLRIs as 'treat-as- | |||
withdraw'. In other cases, where the error in the NLRI encoding | withdraw'. In other cases, where the error in the NLRI encoding | |||
results in the inability to process the BGP UPDATE message (e.g., | results in the inability to process the BGP UPDATE message (e.g., | |||
length-related encoding errors), then the router SHOULD handle such | length-related encoding errors), then the router SHOULD handle such | |||
malformed NLRIs as "AFI/SAFI disable" when other AFI/SAFIs besides SR | malformed NLRIs as "AFI/SAFI disable" when other AFI/SAFIs besides SR | |||
Policy are being advertised over the same session. Alternately, the | Policy are being advertised over the same session. Alternately, the | |||
router MUST perform "session reset" when the session is only being | router MUST perform "session reset" when the session is only being | |||
End of changes. 14 change blocks. | ||||
27 lines changed or deleted | 28 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |