rfc9830v1.txt | rfc9830.txt | |||
---|---|---|---|---|
skipping to change at line 19 ¶ | skipping to change at line 19 ¶ | |||
D. Jain | D. Jain | |||
July 2025 | July 2025 | |||
Advertising Segment Routing Policies in BGP | Advertising Segment Routing Policies in BGP | |||
Abstract | Abstract | |||
A Segment Routing (SR) Policy is an ordered list of segments (also | A Segment Routing (SR) Policy is an ordered list of segments (also | |||
referred to as "instructions") that define a source-routed policy. | referred to as "instructions") that define a source-routed policy. | |||
An SR Policy consists of one or more candidate paths, each comprising | An SR Policy consists of one or more Candidate Paths (CPs), each | |||
one or more segment lists. A headend can be provisioned with these | comprising one or more segment lists. A headend can be provisioned | |||
candidate paths using various mechanisms such as Command-Line | with these CPs using various mechanisms such as Command-Line | |||
Interface (CLI), Network Configuration Protocol (NETCONF), Path | Interface (CLI), Network Configuration Protocol (NETCONF), Path | |||
Computation Element Communication Protocol (PCEP), or BGP. | Computation Element Communication Protocol (PCEP), or BGP. | |||
This document specifies how BGP can be used to distribute SR Policy | This document specifies how BGP can be used to distribute SR Policy | |||
candidate paths. It introduces a BGP SAFI for advertising a | CPs. It introduces a BGP SAFI for advertising a CP of an SR Policy | |||
candidate path of an SR Policy and defines sub-TLVs for the Tunnel | and defines sub-TLVs for the Tunnel Encapsulation Attribute to signal | |||
Encapsulation Attribute to signal information related to these | information related to these CPs. | |||
candidate paths. | ||||
Furthermore, this document updates RFC 9012 by extending the Color | Furthermore, this document updates RFC 9012 by extending the Color | |||
Extended Community to support additional steering modes over SR | Extended Community to support additional steering modes over SR | |||
Policy. | Policy. | |||
Status of This Memo | Status of This Memo | |||
This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
skipping to change at line 122 ¶ | skipping to change at line 121 ¶ | |||
packet flow along a specific path. Intermediate per-path states are | packet flow along a specific path. Intermediate per-path states are | |||
eliminated thanks to source routing. | eliminated thanks to source routing. | |||
The headend node is said to steer a flow into an SR Policy [RFC9256]. | The headend node is said to steer a flow into an SR Policy [RFC9256]. | |||
The packets steered into an SR Policy carry an ordered list of | The packets steered into an SR Policy carry an ordered list of | |||
segments associated with that SR Policy. | segments associated with that SR Policy. | |||
[RFC9256] further details the concepts of SR Policy and steering into | [RFC9256] further details the concepts of SR Policy and steering into | |||
an SR Policy. These apply equally to the SR-MPLS and Segment Routing | an SR Policy. These apply equally to the SR-MPLS and Segment Routing | |||
for IPv6 (SRv6) data plane instantiations of Segment Routing using | over IPv6 (SRv6) data plane instantiations of Segment Routing using | |||
SR-MPLS and SRv6 Segment Identifiers (SIDs) as described in | SR-MPLS and SRv6 Segment Identifiers (SIDs) as described in | |||
[RFC8402]. [RFC8660] describes the representation and processing of | [RFC8402]. [RFC8660] describes the representation and processing of | |||
this ordered list of segments as an MPLS label stack for SR-MPLS. | this ordered list of segments as an MPLS label stack for SR-MPLS. | |||
[RFC8754] and [RFC8986] describe the same for SRv6 with the use of | [RFC8754] and [RFC8986] describe the same for SRv6 with the use of | |||
the Segment Routing Header (SRH). | the Segment Routing Header (SRH). | |||
The functionality related to SR Policy described in [RFC9256] can be | The functionality related to SR Policy described in [RFC9256] can be | |||
conceptually viewed as being incorporated in an SR Policy Module | conceptually viewed as being incorporated in an SR Policy Module | |||
(SRPM). The following is a reminder of the high-level functionality | (SRPM). The following is a reminder of the high-level functionality | |||
of SRPM: | of SRPM: | |||
* Learning multiple candidate paths (CPs) for an SR Policy via | * Learning multiple CPs for an SR Policy via various mechanisms | |||
various mechanisms (CLI, NETCONF, PCEP, or BGP). | (CLI, NETCONF, PCEP, or BGP). | |||
* Selection of the best candidate path for an SR Policy. | * Selection of the best CP for an SR Policy. | |||
* Associating a Binding SID (BSID) to the selected candidate path of | * Associating a Binding SID (BSID) to the selected CP of an SR | |||
an SR Policy. | Policy. | |||
* Installation of the selected candidate path and its BSID in the | * Installation of the selected CP and its BSID in the forwarding | |||
forwarding plane. | plane. | |||
This document specifies the use of BGP to distribute one or more of | This document specifies the use of BGP to distribute one or more of | |||
the candidate paths of an SR Policy to the headend of that SR Policy. | the CPs of an SR Policy to the headend of that SR Policy. The | |||
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 candidate | This document specifies a way of representing SR Policy CPs in BGP | |||
paths in BGP UPDATE messages. BGP can then be used to propagate the | UPDATE messages. BGP can then be used to propagate the SR Policy CPs | |||
SR Policy candidate paths to the headend nodes in a network. The | to the headend nodes in a network. The usual BGP rules for BGP | |||
usual BGP rules for BGP propagation and best-path selection are used. | propagation and best-path selection are used. At the headend of a | |||
At the headend of a specific policy, this will result in one or more | specific policy, this will result in one or more CPs being installed | |||
candidate paths being installed into the "BGP table". These paths | into the "BGP table". These paths are then passed to the SRPM. The | |||
are then passed to the SRPM. The SRPM may compare them to candidate | SRPM may compare them to CPs learned via other mechanisms and will | |||
paths learned via other mechanisms and will choose one or more paths | choose one or more paths to be installed in the data plane. BGP | |||
to be installed in the data plane. BGP itself does not install SR | itself does not install SR Policy CPs into the data plane. | |||
Policy candidate paths 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 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 Candidate Path while the attributes encode | identifies an SR Policy CP while the attributes encode the segment | |||
the segment lists and other details of that SR Policy Candidate Path. | 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 | |||
candidate path of an SR policy and that this SR Policy might have | CP of an SR Policy and that this SR Policy might have several other | |||
several other candidate paths provided via BGP (via an NLRI with a | CPs provided via BGP (via an NLRI with a different distinguisher as | |||
different distinguisher as defined in Section 2.1), PCEP, NETCONF, or | defined in Section 2.1), PCEP, NETCONF, or local policy | |||
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 policy headend routers (typically | |||
ingress routers). These policy advertisements use the BGP extensions | ingress routers). These policy advertisements use the BGP extensions | |||
defined in this document. In most cases, the policy advertisement is | defined in this document. In most cases, the policy advertisement is | |||
tailored for a specific policy headend; consequently, it may be | tailored for a specific policy headend; consequently, it may be | |||
transmitted over a direct BGP session (i.e., without intermediate BGP | transmitted over a direct BGP session (i.e., without intermediate BGP | |||
hops) to that headend and is not propagated any further. In such | hops) to that headend and is not propagated any further. In such | |||
cases, the policy advertisements will not traverse any Route | cases, the policy advertisements will not traverse any Route | |||
Reflector (RR) (see [RFC4456] and Section 4.2.3). | 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 terminating on itself. 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 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 policy headend. In these | |||
situations, BGP Route Reflectors may be used to propagate the | situations, BGP RRs may be used to propagate the advertisements. In | |||
advertisements. In certain other deployments, it may be necessary | certain other deployments, it may be necessary for the advertisement | |||
for the advertisement to propagate through a sequence of one or more | to propagate through a sequence of one or more Autonomous Systems | |||
Autonomous Systems (ASes) within an SR Domain (refer to Section 7 for | (ASes) within an SR Domain (refer to Section 7 for the associated | |||
the associated security considerations). To make this possible, an | security considerations). To make this possible, an attribute needs | |||
attribute needs to be attached to the advertisement that enables a | to be attached to the advertisement that enables a BGP speaker to | |||
BGP speaker to determine whether it is intended to be a headend for | determine whether it is intended to be a headend for the advertised | |||
the advertised policy. This is done by attaching one or more Route | policy. This is done by attaching one or more Route Target extended | |||
Target Extended Communities to the advertisement [RFC4360]. | 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 Subsequent Address Family Identifier (SAFI) whose NLRIs identify | * A SAFI whose NLRIs identify an SR Policy CP. | |||
an SR Policy candidate path. | ||||
* 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 candidate | [RFC9012]) specifying segment lists of the SR Policy CP as well as | |||
path as well as other information about the SR Policy. | other information about the SR Policy. | |||
* One or more IPv4 address-specific format route target extended | * One or more IPv4 address-specific format Route Target extended | |||
community ([RFC4360]) attached to the SR Policy Candidate Path | community ([RFC4360]) attached to the SR Policy CP advertisement | |||
advertisement that indicates the intended headend of such an SR | that indicates the intended headend of such an SR Policy CP | |||
Policy Candidate Path advertisement. | advertisement. | |||
The SR Policy SAFI route updates utilize the Tunnel Encapsulation | The SR Policy SAFI route updates utilize the Tunnel Encapsulation | |||
Attribute to signal an SR Policy, which itself functions as a tunnel. | Attribute to signal an SR Policy, which itself functions as a tunnel. | |||
This usage differs notably from the approach described in [RFC9012], | This usage differs notably from the approach described in [RFC9012], | |||
where the Tunnel Encapsulation Attribute is associated with a BGP | where the Tunnel Encapsulation Attribute is associated with a BGP | |||
route update (e.g., for Internet or VPN routes) to specify the tunnel | route update (e.g., for Internet or VPN routes) to specify the tunnel | |||
used for forwarding traffic. This document does not modify or | used for forwarding traffic. This document does not modify or | |||
supersede the usage of the Tunnel Encapsulation Attribute for | supersede the usage of the Tunnel Encapsulation Attribute for | |||
existing AFIs/SAFIs as defined in [RFC9012]. Details regarding the | existing AFIs/SAFIs as defined in [RFC9012]. Details regarding the | |||
processing of the Tunnel Encapsulation Attribute for the SR Policy | processing of the Tunnel Encapsulation Attribute for the SR Policy | |||
SAFI are provided in Sections 2.2 and 2.3. | SAFI are provided in Sections 2.2 and 2.3. | |||
The northbound advertisement of the operational state of the SR | The northbound advertisement of the operational state of the SR | |||
Policy Candidate Paths as part of BGP - Link State (BGP-LS) [RFC9552] | Policy CPs as part of BGP - Link State (BGP-LS) [RFC9552] topology | |||
topology information is specified in [SR-BGP-LS]. | information is specified in [BGP-LS-SR-POLICY]. | |||
The signaling of Dynamic and Composite Candidate Paths (Sections 5.2 | The signaling of Dynamic and Composite CPs (Sections 5.2 and 5.3, | |||
and 5.3, respectively, of [RFC9256]) is outside the scope of this | respectively, of [RFC9256]) is outside the scope of this document. | |||
document. | ||||
The Color Extended Community (as defined in [RFC9012]) is used to | The Color Extended Community (as defined in [RFC9012]) is used to | |||
steer traffic into an SR Policy, as described in Section 8.8 of | steer traffic into an SR Policy, as described in Section 8.8 of | |||
[RFC9256]. Section 3 of this document updates [RFC9012] with | [RFC9256]. Section 3 of this document updates [RFC9012] with | |||
modifications to the format of the Flags field of the Color Extended | modifications to the format of the Flags field of the Color Extended | |||
Community by using the two leftmost bits of that field. | Community by using the two leftmost bits of that field. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
skipping to change at line 280 ¶ | 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 policy in the | |||
context of <color, endpoint> tuple. The distinguisher has no | context of <Color, Endpoint> tuple. The distinguisher has no | |||
semantic value and is solely used by the SR Policy originator to | semantic value. It is used by the SR Policy originator to form | |||
make unique (from an NLRI perspective) both for multiple candidate | unique NLRIs the following situations: | |||
paths of the same SR Policy as well as candidate paths of | ||||
different SR Policies (i.e., with different segment lists) with | * to differentiate multiple CPs of the same SR Policy | |||
the same Color and Endpoint but meant for different headends. The | ||||
distinguisher is the discriminator of the SR Policy candidate path | * to differentiate CPs meant for different headends but having | |||
as specified in Section 2.5 of [RFC9256]. | the same Color and Endpoint | |||
The distinguisher is the discriminator of the SR Policy CP as | ||||
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 a 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]. | |||
The NLRI containing an SR Policy candidate path is carried in a BGP | The NLRI containing an SR Policy CP is carried in a BGP UPDATE | |||
UPDATE message [RFC4271] using BGP multiprotocol extensions [RFC4760] | message [RFC4271] using BGP multiprotocol extensions [RFC4760] with | |||
with an AFI of 1 or 2 (IPv4 or IPv6) and with a SAFI of 73. The | an AFI of 1 or 2 (IPv4 or IPv6) and with a SAFI of 73. The fault | |||
fault management and error handling in the encoding of the NLRI are | management and error handling in the encoding of the NLRI are | |||
specified in Section 5. | specified in Section 5. | |||
An update message that carries the MP_REACH_NLRI or MP_UNREACH_NLRI | A BGP UPDATE message that carries the MP_REACH_NLRI or | |||
attribute with the SR Policy SAFI MUST also carry the BGP mandatory | MP_UNREACH_NLRI attribute with the SR Policy SAFI MUST also carry the | |||
attributes. In addition, the BGP update message MAY also contain any | BGP mandatory attributes. In addition, the BGP UPDATE message MAY | |||
of the BGP optional attributes. | also contain any of the BGP optional attributes. | |||
The next-hop network address field in SR Policy SAFI (73) updates may | The next-hop network address field in SR Policy SAFI (73) updates may | |||
be either a 4-octet IPv4 address or a 16-octet IPv6 address, | be either a 4-octet IPv4 address or a 16-octet IPv6 address, | |||
independent of the SR Policy AFI. The length field of the next-hop | independent of the SR Policy AFI. The Length field of the next-hop | |||
address specifies the next-hop address family. If the next-hop | address specifies the next-hop address family. If the next-hop | |||
length is 4, then the next-hop is an IPv4 address. If the next-hop | length is 4, then the next-hop is an IPv4 address. If the next-hop | |||
length is 16, then it is a global IPv6 address. If the next-hop | length is 16, then it is a global IPv6 address. If the next-hop | |||
length is 32, then it has a global IPv6 address followed by a link- | length is 32, then it has a global IPv6 address followed by a link- | |||
local IPv6 address. The setting of the next-hop field and its | local IPv6 address. The setting of the next-hop field and its | |||
attendant processing is governed by standard BGP procedures as | attendant processing is governed by standard BGP procedures as | |||
described in Section 3 of [RFC4760] and Section 3 of [RFC2545]. | described in Section 3 of [RFC4760] and Section 3 of [RFC2545]. | |||
It is important to note that at any BGP speaker receiving BGP updates | It is important to note that at any BGP speaker receiving BGP updates | |||
with SR Policy NLRIs, the SRPM processes only the best path as per | with SR Policy NLRIs, the SRPM processes only the best path as per | |||
the BGP best-path selection algorithm. In other words, this document | the BGP best-path selection algorithm. In other words, this document | |||
leverages the existing BGP propagation and best-path selection rules. | leverages the existing BGP propagation and best-path selection rules. | |||
Details of the procedures are described in Section 4. | Details of the procedures are described in Section 4. | |||
It has to be noted that if several candidate paths of the same SR | It has to be noted that if several CPs of the same SR Policy | |||
Policy (endpoint, color) are signaled via BGP to a headend, then it | (Endpoint, Color) are signaled via BGP to a headend, then it is | |||
is RECOMMENDED that each NLRI use a different distinguisher. If BGP | RECOMMENDED that each NLRI use a different distinguisher. If BGP has | |||
has installed into the BGP table two advertisements whose respective | installed into the BGP table two advertisements whose respective | |||
NLRIs have the same color and endpoint, but different distinguishers, | NLRIs have the same Color and Endpoint, but different distinguishers, | |||
both advertisements are passed to the SRPM as different candidate | both advertisements are passed to the SRPM as different CPs along | |||
paths along with their respective originator information (i.e., | with their respective originator information (i.e., Autonomous System | |||
Autonomous System Number (ASN) and BGP Router-ID) as described in | Number (ASN) and BGP Router-ID) as described in Section 2.4 of | |||
Section 2.4 of [RFC9256]. The ASN would be the ASN of the origin and | [RFC9256]. The ASN would be the ASN of the origin and the BGP | |||
the BGP Router-ID is determined in the following order: | Router-ID is determined in the following order: | |||
* From the Route Origin Community [RFC4360] if present and carrying | * From the Route Origin Community [RFC4360] if present and carrying | |||
an IP Address, or | an IP Address, or | |||
* As the BGP Originator ID [RFC4456] if present, or | * As the BGP ORIGINATOR_ID [RFC4456] if present, or | |||
* As the BGP Router-ID of the peer from which the update was | * As the BGP Router-ID of the peer from which the update was | |||
received as a last resort. | received as a last resort. | |||
Section 2.9 of [RFC9256] specifies the selection of the active | Section 2.9 of [RFC9256] specifies the selection of the active CP of | |||
candidate path of the SR Policy by the SRPM based on the information | the SR Policy by the SRPM based on the information provided to it by | |||
provided to it by BGP. | BGP. | |||
2.2. SR Policy and Tunnel Encapsulation Attribute | 2.2. SR Policy and Tunnel Encapsulation Attribute | |||
The content of the SR Policy Candidate Path is encoded in the Tunnel | The content of the SR Policy CP is encoded in the Tunnel | |||
Encapsulation Attribute defined in [RFC9012] using a Tunnel-Type | Encapsulation Attribute defined in [RFC9012] using a Tunnel Type | |||
called the "SR Policy" type with code point 15. The use of the SR | called the "SR Policy" type with code point 15. The use of the SR | |||
Policy Tunnel-type is applicable only for the AFI/SAFI pairs of | Policy Tunnel Type is applicable only for the AFI/SAFI pairs of | |||
(1/73, 2/73). This document specifies the use of the Tunnel | (1/73, 2/73). This document specifies the use of the Tunnel | |||
Encapsulation Attribute with the SR Policy Tunnel-Type and the use of | Encapsulation Attribute with the SR Policy Tunnel Type and the use of | |||
any other Tunnel-Type with the SR Policy SAFI MUST be considered | any other Tunnel Type with the SR Policy SAFI MUST be considered | |||
malformed and handled by the "treat-as-withdraw" strategy [RFC7606]. | malformed and handled by the "treat-as-withdraw" strategy [RFC7606]. | |||
The SR Policy Encoding structure is as follows: | The SR Policy Encoding structure is as follows: | |||
SR Policy SAFI NLRI: <Distinguisher, Policy-Color, Endpoint> | SR Policy SAFI NLRI: <Distinguisher, Policy-Color, Endpoint> | |||
Attributes: | Attributes: | |||
Tunnel Encapsulation Attribute (23) | Tunnel Encapsulation Attribute (23) | |||
Tunnel Type: SR Policy (15) | Tunnel Type: SR Policy (15) | |||
Binding SID | Binding SID | |||
Preference | Preference | |||
skipping to change at line 396 ¶ | skipping to change at line 395 ¶ | |||
... | ... | |||
Figure 2: SR Policy Encoding | Figure 2: SR Policy Encoding | |||
Where: | Where: | |||
* The SR Policy SAFI NLRI is defined in Section 2.1. | * The SR Policy SAFI NLRI is defined in Section 2.1. | |||
* The Tunnel Encapsulation Attribute is defined in [RFC9012]. | * The Tunnel Encapsulation Attribute is defined in [RFC9012]. | |||
* The Tunnel-Type is set to 15. | * The Tunnel Type is set to 15. | |||
* Preference, Binding SID, Priority, Policy Name, Policy Candidate | * Preference, Binding SID, Priority, Policy Name, Policy Candidate | |||
Path Name, ENLP, Segment-List, Weight, and Segment sub-TLVs are | Path Name, ENLP, Segment-List, Weight, and Segment sub-TLVs are | |||
defined in Section 2.4. | defined in Section 2.4. | |||
* Additional sub-TLVs may be defined in the future. | * Additional sub-TLVs may be defined in the future. | |||
A Tunnel Encapsulation Attribute MUST NOT contain more than one TLV | A Tunnel Encapsulation Attribute MUST NOT contain more than one TLV | |||
of type "SR Policy"; such updates MUST be considered malformed and | of type "SR Policy"; such updates MUST be considered malformed and | |||
handled by the "treat-as-withdraw" strategy [RFC7606]. | handled by the "treat-as-withdraw" strategy [RFC7606]. | |||
skipping to change at line 441 ¶ | skipping to change at line 440 ¶ | |||
Preference, Binding SID, SRv6 Binding SID, Segment-List, Priority, | Preference, Binding SID, SRv6 Binding SID, Segment-List, Priority, | |||
Policy Name, Policy Candidate Path Name, and Explicit NULL Label | Policy Name, Policy Candidate Path Name, and Explicit NULL Label | |||
Policy are all optional sub-TLVs introduced for the BGP Tunnel | Policy are all optional sub-TLVs introduced for the BGP Tunnel | |||
Encapsulation Attribute [RFC9012] being defined in this section. | Encapsulation Attribute [RFC9012] being defined in this section. | |||
Weight and Segment are sub-TLVs of the Segment-List sub-TLV mentioned | Weight and Segment are sub-TLVs of the Segment-List sub-TLV mentioned | |||
above. | above. | |||
An early draft version of this document included only the Binding SID | An early draft version of this document included only the Binding SID | |||
sub-TLV that could be used for both SR-MPLS and SRv6 Binding SIDs. | sub-TLV that could be used for both SR-MPLS and SRv6 BSIDs. The SRv6 | |||
The SRv6 Binding SID TLV was introduced in later versions to support | Binding SID TLV was introduced in later versions to support the | |||
the advertisement of additional SRv6 capabilities without affecting | advertisement of additional SRv6 capabilities without affecting | |||
backward compatibility for early implementations. | backward compatibility for early implementations. | |||
The fault management and error handling in the encoding of the sub- | The fault management and error handling in the encoding of the sub- | |||
TLVs defined in this section are specified in Section 5. For the | TLVs defined in this section are specified in Section 5. For the | |||
TLVs/sub-TLVs that are specified as single instance, only the first | TLVs/sub-TLVs that are specified as single instance, only the first | |||
instance of that TLV/sub-TLV is used: the other instances MUST be | instance of that TLV/sub-TLV is used: the other instances MUST be | |||
ignored and MUST NOT considered to be malformed. | ignored and MUST NOT considered to be malformed. | |||
None of the sub-TLVs defined in the following subsections have any | None of the sub-TLVs defined in the following subsections have any | |||
effect on the BGP best-path selection or propagation procedures. | effect on the BGP best-path selection or propagation procedures. | |||
These sub-TLVs are not used by the BGP path selection process and are | These sub-TLVs are not used by the BGP path selection process and are | |||
instead passed on to SRPM as SR Policy Candidate Path information for | instead passed on to SRPM as SR Policy Candidate Path information for | |||
further processing as described in Section 2 of [RFC9256]. | further processing as described in Section 2 of [RFC9256]. | |||
The use of SR Policy Sub-TLVs is applicable only for the AFI/SAFI | The use of SR Policy sub-TLVs is applicable only for the AFI/SAFI | |||
pairs of (1/73, 2/73). Future documents may extend their | pairs of (1/73, 2/73). Future documents may extend their | |||
applicability to other AFI/SAFI. | applicability to other AFI/SAFI. | |||
2.4.1. Preference Sub-TLV | 2.4.1. Preference Sub-TLV | |||
The Preference sub-TLV is used to carry the Preference of an SR | The Preference sub-TLV is used to carry the Preference of an SR | |||
Policy candidate path. The contents of this sub-TLV are used by the | Policy CP. The contents of this sub-TLV are used by the SRPM as | |||
SRPM as described in Section 2.7 of [RFC9256]. | described in Section 2.7 of [RFC9256]. | |||
The Preference sub-TLV is OPTIONAL; it MUST NOT appear more than once | The Preference sub-TLV is OPTIONAL; it MUST NOT appear more than once | |||
in the SR Policy encoding. | in the SR Policy encoding. | |||
The Preference sub-TLV has the following format: | The Preference sub-TLV has the following format: | |||
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 | Length | Flags | RESERVED | | | Type | Length | Flags | RESERVED | | |||
skipping to change at line 498 ¶ | skipping to change at line 497 ¶ | |||
Type and Length fields) in terms of octets. The value MUST be 6. | Type and Length fields) in terms of octets. The value MUST be 6. | |||
Flags: 1 octet of flags. No flags are defined in this document. | Flags: 1 octet of flags. No flags are defined in this document. | |||
The Flags field MUST be set to zero on transmission and MUST be | The Flags field MUST be set to zero on transmission and MUST be | |||
ignored on receipt. | ignored on receipt. | |||
RESERVED: 1 octet of reserved bits. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
Preference: a 4-octet value indicating the Preference of the SR | Preference: a 4-octet value indicating the Preference of the SR | |||
Policy Candidate Path as described in Section 2.7 of [RFC9256]. | Policy CP as described in Section 2.7 of [RFC9256]. | |||
2.4.2. Binding SID Sub-TLV | 2.4.2. Binding SID Sub-TLV | |||
The Binding SID sub-TLV is used to signal the BSID-related | The Binding SID sub-TLV is used to signal the BSID-related | |||
information of the SR Policy candidate path. The contents of this | information of the SR Policy CP. The contents of this sub-TLV are | |||
sub-TLV are used by the SRPM as described in Section 6 of [RFC9256]. | used by the SRPM as described in Section 6 of [RFC9256]. | |||
The Binding SID sub-TLV is OPTIONAL; it MUST NOT appear more than | The Binding SID sub-TLV is OPTIONAL; it MUST NOT appear more than | |||
once in the SR Policy encoding. | once in the SR Policy encoding. | |||
When the Binding SID sub-TLV is used to signal an SRv6 SID, the | When the Binding SID sub-TLV is used to signal an SRv6 SID, the | |||
selection of the corresponding SRv6 Endpoint Behavior [RFC8986] to be | selection of the corresponding SRv6 Endpoint Behavior [RFC8986] to be | |||
instantiated is determined by the headend node. It is RECOMMENDED | instantiated is determined by the headend node. It is RECOMMENDED | |||
that the SRv6 Binding SID sub-TLV, as defined in Section 2.4.3, be | that the SRv6 Binding SID sub-TLV, as defined in Section 2.4.3, be | |||
used when signaling an SRv6 Binding SID for an SR Policy candidate | used when signaling an SRv6 BSID for an SR Policy CP. The support | |||
path. The support for the use of this Binding SID sub-TLV for the | for the use of this Binding SID sub-TLV for the signaling of an SRv6 | |||
signaling of an SRv6 Binding SID is retained primarily for backward | BSID is retained primarily for backward compatibility with | |||
compatibility with implementations that followed early draft versions | implementations that followed early draft versions of this document | |||
of this document that had not defined the SRv6 Binding SID sub-TLV. | that had not defined the SRv6 Binding SID sub-TLV. | |||
The Binding SID sub-TLV has the following format: | The Binding SID sub-TLV has the following format: | |||
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 | Length | Flags | RESERVED | | | Type | Length | Flags | RESERVED | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Binding SID (variable, optional) | | | Binding SID (variable, optional) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at line 556 ¶ | skipping to change at line 555 ¶ | |||
|S|I| | | |S|I| | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Figure 5: SR Policy Binding SID Flags | Figure 5: SR Policy Binding SID Flags | |||
Where: | Where: | |||
* 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 candidate path (CP) is available for | behavior when no valid CP is available for this SR Policy. In | |||
this SR Policy. In this situation, the CP with the highest | this situation, the CP with the highest preference amongst | |||
preference amongst those with the "drop upon invalid" config is | those with the "Drop-Upon-Invalid" config is made active to | |||
made active to drop traffic steered over the SR Policy. | drop traffic steered over the SR Policy. | |||
* The unassigned bits in the Flag octet 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 Binding SID is present. If | Binding SID: If the length is 2, then no BSID is present. If the | |||
the length is 6, then the Binding SID is encoded in 4 octets using | length is 6, then the BSID is encoded in 4 octets using the format | |||
the format below. Traffic Class (TC), S, and TTL (Total of 12 | below. Traffic Class (TC), S, and TTL (Total of 12 bits) are | |||
bits) are RESERVED and MUST be set to zero and MUST be ignored. | RESERVED and MUST be set to zero and MUST be ignored. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Label | TC |S| TTL | | | Label | TC |S| TTL | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 6: Binding SID Label Encoding | Figure 6: Binding SID Label Encoding | |||
The Label field is validated by the SRPM but MUST NOT contain the | The Label field is validated by the SRPM but MUST NOT contain the | |||
reserved MPLS label values (0-15). If the length is 18, then the | reserved MPLS label values (0-15). If the length is 18, then the | |||
Binding SID contains a 16-octet SRv6 SID. | BSID contains a 16-octet SRv6 SID. | |||
2.4.3. SRv6 Binding SID Sub-TLV | 2.4.3. SRv6 Binding SID Sub-TLV | |||
The SRv6 Binding SID sub-TLV is used to signal the SRv6 Binding SID | The SRv6 Binding SID sub-TLV is used to signal the SRv6-BSID-related | |||
related information of an SR Policy candidate path. It enables the | information of an SR Policy CP. It enables the specification of the | |||
specification of the SRv6 Endpoint Behavior [RFC8986] to be | SRv6 Endpoint Behavior [RFC8986] to be instantiated on the headend | |||
instantiated on the headend node. The contents of this sub-TLV are | node. The contents of this sub-TLV are used by the SRPM as described | |||
used by the SRPM as described in Section 6 of [RFC9256]. | in Section 6 of [RFC9256]. | |||
The SRv6 Binding SID sub-TLV is OPTIONAL. More than one SRv6 Binding | The SRv6 Binding SID sub-TLV is OPTIONAL. More than one SRv6 Binding | |||
SID sub-TLV MAY be signaled in the same SR Policy encoding to | SID sub-TLV MAY be signaled in the same SR Policy encoding to | |||
indicate one or more SRv6 SIDs, each with potentially different SRv6 | indicate one or more SRv6 SIDs, each with potentially different SRv6 | |||
Endpoint Behaviors to be instantiated. | Endpoint Behaviors to be instantiated. | |||
The SRv6 Binding SID sub-TLV has the following format: | The SRv6 Binding SID sub-TLV has the following format: | |||
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 | |||
skipping to change at line 640 ¶ | skipping to change at line 639 ¶ | |||
|S|I|B| | | |S|I|B| | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Figure 8: SR Policy SRv6 Binding SID Flags | Figure 8: SR Policy SRv6 Binding SID Flags | |||
Where: | Where: | |||
* 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]. | used by SRPM as described in Section 8.2 of [RFC9256]. | |||
* The B-Flag, when set, indicates the presence of the "SRv6 | * The B-Flag, when set, indicates the presence of the "SRv6 | |||
Endpoint Behavior & SID Structure" encoding specified in | Endpoint Behavior & SID Structure" encoding specified in | |||
Section 2.4.4.2.4. | Section 2.4.4.2.4. | |||
* The unassigned bits in the Flag octet 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. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
SRv6 Binding SID: Contains a 16-octet SRv6 SID. The value 0 MAY be | SRv6 Binding SID: Contains a 16-octet SRv6 SID. The value 0 MAY be | |||
used when the controller wants to indicate the desired SRv6 | used when the controller wants to indicate the desired SRv6 | |||
Endpoint Behavior, SID Structure, or flags without specifying the | Endpoint Behavior, SID Structure, or flags without specifying the | |||
BSID. | BSID. | |||
SRv6 Endpoint Behavior and SID Structure: Optional, as defined in | SRv6 Endpoint Behavior and SID Structure: Optional, as defined in | |||
Section 2.4.4.2.4. The SRv6 Endpoint Behavior and SID Structure | Section 2.4.4.2.4. The SRv6 Endpoint Behavior and SID Structure | |||
MUST NOT be included when the SRv6 SID has not been included. | MUST NOT be included when the SRv6 SID has not been included. | |||
2.4.4. Segment List Sub-TLV | 2.4.4. Segment List Sub-TLV | |||
The Segment List sub-TLV encodes a single explicit path towards the | The Segment List sub-TLV encodes a single explicit path towards the | |||
endpoint as described in Section 5.1 of [RFC9256]. The Segment List | Endpoint as described in Section 5.1 of [RFC9256]. The Segment List | |||
sub-TLV includes the elements of the paths (i.e., segments) as well | sub-TLV includes the elements of the paths (i.e., segments) as well | |||
as an optional Weight sub-TLV. | as an optional Weight sub-TLV. | |||
The Segment List sub-TLV may exceed 255 bytes in length due to a | The Segment List sub-TLV may exceed 255 bytes in length due to a | |||
large number of segments. A 2-octet length is thus required. | large number of segments. A 2-octet length is thus required. | |||
According to Section 2 of [RFC9012], the sub-TLV type defines the | According to Section 2 of [RFC9012], the sub-TLV type defines the | |||
size of the length field. Therefore, for the Segment List sub-TLV, a | size of the Length field. Therefore, for the Segment List sub-TLV, a | |||
code point of 128 or higher is used. | code point of 128 or higher is used. | |||
The Segment List sub-TLV is OPTIONAL and MAY appear multiple times in | The Segment List sub-TLV is OPTIONAL and MAY appear multiple times in | |||
the SR Policy encoding. The ordering of Segment List sub-TLVs does | the SR Policy encoding. The ordering of Segment List sub-TLVs does | |||
not matter since each sub-TLV encodes a Segment List. | not matter since each sub-TLV encodes a Segment List. | |||
The Segment List sub-TLV contains zero or more Segment sub-TLVs and | The Segment List sub-TLV contains zero or more Segment sub-TLVs and | |||
MAY contain a Weight sub-TLV. | MAY contain a Weight sub-TLV. | |||
The Segment List sub-TLV has the following format: | The Segment List sub-TLV has the following format: | |||
skipping to change at line 749 ¶ | skipping to change at line 748 ¶ | |||
Length: Specifies the length of the value field (i.e., not including | Length: Specifies the length of the value field (i.e., not including | |||
Type and Length fields) in terms of octets. The value MUST be 6. | Type and Length fields) in terms of octets. The value MUST be 6. | |||
Flags: 1 octet of flags. No flags are defined in this document. | Flags: 1 octet of flags. No flags are defined in this document. | |||
The Flags field MUST be set to zero on transmission and MUST be | The Flags field MUST be set to zero on transmission and MUST be | |||
ignored on receipt. | ignored on receipt. | |||
RESERVED: 1 octet of reserved bits. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
Weight: 4 octets an unsigned integer value indicating the weight | Weight: 4 octets carrying an unsigned integer value indicating the | |||
associated with a segment list as described in Section 2.11 of | weight associated with a segment list as described in Section 2.11 | |||
[RFC9256]. A weight value of zero is invalid. | of [RFC9256]. A weight value of zero is invalid. | |||
2.4.4.2. Segment Sub-TLVs | 2.4.4.2. Segment Sub-TLVs | |||
A Segment sub-TLV describes a single segment in a segment list (i.e., | A Segment sub-TLV describes a single segment in a segment list (i.e., | |||
a single element of the explicit path). One or more Segment sub-TLVs | a single element of the explicit path). One or more Segment sub-TLVs | |||
constitute an explicit path of the SR Policy candidate path. The | constitute an explicit path of the SR Policy CP. The contents of | |||
contents of these sub-TLVs are used only by the SRPM as described in | these sub-TLVs are used only by the SRPM as described in Section 4 of | |||
Section 4 of [RFC9256]. | [RFC9256]. | |||
The Segment sub-TLVs are OPTIONAL and MAY appear multiple times in | The Segment sub-TLVs are OPTIONAL and MAY appear multiple times in | |||
the Segment List sub-TLV. | the Segment List sub-TLV. | |||
Section 4 of [RFC9256] defines several Segment Types: | Section 4 of [RFC9256] defines several Segment Types: | |||
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 854 ¶ | skipping to change at line 853 ¶ | |||
* If the originator wants to recommend a value for these fields, it | * If the originator wants to recommend a value for these fields, it | |||
puts those values in the TC and/or TTL fields. | puts those values in the TC and/or TTL fields. | |||
* The receiver MAY override the originator's values for these | * The receiver MAY override the originator's values for these | |||
fields. This would be determined by local policy at the receiver. | fields. This would be determined by local policy at the receiver. | |||
One possible policy would be to override the fields only if the | One possible policy would be to override the fields only if the | |||
fields have the default values specified above. | fields have the default values specified above. | |||
2.4.4.2.2. Segment Type B | 2.4.4.2.2. Segment Type B | |||
The Type B Segment Sub-TLV encodes a single SRv6 SID. The format is | The Type B Segment sub-TLV encodes a single SRv6 SID. The format is | |||
as follows: | as follows: | |||
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 | Length | Flags | RESERVED | | | Type | Length | Flags | RESERVED | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
// SRv6 SID (16 octets) // | // SRv6 SID (16 octets) // | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
// SRv6 Endpoint Behavior and SID Structure // | // SRv6 Endpoint Behavior and SID Structure // | |||
skipping to change at line 890 ¶ | skipping to change at line 889 ¶ | |||
RESERVED: 1 octet of reserved bits. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
SRv6 SID: 16 octets of IPv6 address. | SRv6 SID: 16 octets of IPv6 address. | |||
SRv6 Endpoint Behavior and SID Structure: Optional, as defined in | SRv6 Endpoint Behavior and SID Structure: Optional, as defined in | |||
Section 2.4.4.2.4. The SRv6 Endpoint Behavior and SID Structure | Section 2.4.4.2.4. The SRv6 Endpoint Behavior and SID Structure | |||
MUST NOT be included when the SRv6 SID has not been included. | MUST NOT be included when the SRv6 SID has not been included. | |||
The Sub-TLV code point 2 defined for the advertisement of Segment | The sub-TLV code point 2 defined for the advertisement of Segment | |||
Type B in the earlier draft versions of this document has been | Type B in the earlier draft versions of this document has been | |||
deprecated to avoid backward compatibility issues. | deprecated to avoid backward compatibility issues. | |||
2.4.4.2.3. SR Policy Segment Flags | 2.4.4.2.3. SR Policy Segment Flags | |||
The Segment Types sub-TLVs described above may contain the following | The Segment Type sub-TLVs described above may contain the following | |||
SR Policy Segment Flags in their "Flags" field. Also refer to | SR Policy Segment Flags in their Flags field. Also refer to | |||
Section 6.8: | Section 6.8: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|V| |B| | | |V| |B| | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Figure 13: SR Policy Segment Flags | Figure 13: SR Policy Segment Flags | |||
Where: | Where: | |||
* When the V-Flag is set, it is used by SRPM for "SID verification" | * When the V-Flag is set, it is used by SRPM for "SID verification" | |||
as described in Section 5.1 of [RFC9256]. | as described in Section 5.1 of [RFC9256]. | |||
* When the B-Flag is set, it indicates the presence of the "SRv6 | * When the B-Flag is set, it indicates the presence of the "SRv6 | |||
Endpoint Behavior & SID Structure" encoding specified in | Endpoint Behavior & SID Structure" encoding specified in | |||
Section 2.4.4.2.4. | Section 2.4.4.2.4. | |||
* The unassigned bits in the Flag octet 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. | |||
The following applies to the Segment Flags: | The following applies to the Segment Flags: | |||
* V-Flag applies to all Segment Types. | * V-Flag applies to all Segment Types. | |||
* B-Flag applies to Segment Type B. If B-Flag appears with Segment | * B-Flag applies to Segment Type B. If B-Flag appears with Segment | |||
Type A, it MUST be ignored. | Type A, it MUST be ignored. | |||
2.4.4.2.4. SRv6 SID Endpoint Behavior and Structure | 2.4.4.2.4. SRv6 SID Endpoint Behavior and Structure | |||
The Segment Types sub-TLVs described above MAY contain the SRv6 | The Segment Type sub-TLVs described above MAY contain the SRv6 | |||
Endpoint Behavior and SID Structure [RFC8986] encoding as described | Endpoint Behavior and SID Structure [RFC8986] encoding as described | |||
below: | below: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Endpoint Behavior | Reserved | | | Endpoint Behavior | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| LB Length | LN Length | Fun. Length | Arg. Length | | | LB Length | LN Length | Fun. Length | Arg. Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 14: SRv6 SID Endpoint Behavior and Structure | Figure 14: SRv6 SID Endpoint Behavior and Structure | |||
skipping to change at line 964 ¶ | skipping to change at line 963 ¶ | |||
Function Length: 1 octet. SRv6 SID Function length in bits. | Function Length: 1 octet. SRv6 SID Function length in bits. | |||
Argument Length: 1 octet. SRv6 SID Arguments length in bits. | Argument Length: 1 octet. SRv6 SID Arguments length in bits. | |||
The total of the locator block, locator node, function, and argument | The total of the locator block, locator node, function, and argument | |||
lengths MUST be less than or equal to 128. | lengths MUST be less than or equal to 128. | |||
2.4.5. Explicit NULL Label Policy Sub-TLV | 2.4.5. Explicit NULL Label Policy Sub-TLV | |||
To steer an unlabeled IP packet into an SR policy for the MPLS data | To steer an unlabeled IP packet into an SR Policy for the MPLS data | |||
plane, it is necessary to push a label stack of one or more labels on | plane, it is necessary to push a label stack of one or more labels on | |||
that packet. | that packet. | |||
The Explicit NULL Label Policy (ENLP) sub-TLV is used to indicate | The Explicit NULL Label Policy (ENLP) sub-TLV is used to indicate | |||
whether an Explicit NULL Label [RFC3032] must be pushed on an | whether an Explicit NULL Label [RFC3032] must be pushed on an | |||
unlabeled IP packet before any other labels. | unlabeled IP packet before any other labels. | |||
If an ENLP Sub-TLV is not present, the decision of whether to push an | If an ENLP sub-TLV is not present, the decision of whether to push an | |||
Explicit NULL label on a given packet is a matter of local | Explicit NULL label on a given packet is a matter of local | |||
configuration. | configuration. | |||
The ENLP sub-TLV is OPTIONAL; it MUST NOT appear more than once in | The ENLP sub-TLV is OPTIONAL; it MUST NOT appear more than once in | |||
the SR Policy encoding. | the SR Policy encoding. | |||
The contents of this sub-TLV are used by the SRPM as described in | The contents of this sub-TLV are used by the SRPM as described in | |||
Section 4.1 of [RFC9256]. | Section 4.1 of [RFC9256]. | |||
0 1 2 3 | 0 1 2 3 | |||
skipping to change at line 1008 ¶ | skipping to change at line 1007 ¶ | |||
Flags: 1 octet of flags. No flags are defined in this document. | Flags: 1 octet of flags. No flags are defined in this document. | |||
The Flags field MUST be set to zero on transmission and MUST be | The Flags field MUST be set to zero on transmission and MUST be | |||
ignored on receipt. | ignored on receipt. | |||
RESERVED: 1 octet of reserved bits. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
ENLP (Explicit NULL Label Policy): Indicates whether Explicit NULL | ENLP (Explicit NULL Label Policy): Indicates whether Explicit NULL | |||
labels are to be pushed on unlabeled IP packets that are being | labels are to be pushed on unlabeled IP packets that are being | |||
steered into a given SR policy. The following values have been | steered into a given SR Policy. The following values have been | |||
currently defined for this field: | currently defined for this field: | |||
1: Push an IPv4 Explicit NULL label on an unlabeled IPv4 packet | 1: Push an IPv4 Explicit NULL label on an unlabeled IPv4 packet | |||
but do not push an IPv6 Explicit NULL label on an unlabeled | but do not push an IPv6 Explicit NULL label on an unlabeled | |||
IPv6 packet. | IPv6 packet. | |||
2: Push an IPv6 Explicit NULL label on an unlabeled IPv6 packet | 2: Push an IPv6 Explicit NULL label on an unlabeled IPv6 packet | |||
but do not push an IPv4 Explicit NULL label on an unlabeled | but do not push an IPv4 Explicit NULL label on an unlabeled | |||
IPv4 packet. | IPv4 packet. | |||
3: Push an IPv4 Explicit NULL label on an unlabeled IPv4 packet | 3: Push an IPv4 Explicit NULL label on an unlabeled IPv4 packet | |||
and push an IPv6 Explicit NULL label on an unlabeled IPv6 | and push an IPv6 Explicit NULL label on an unlabeled IPv6 | |||
packet. | packet. | |||
4: Do not push an Explicit NULL label. | 4: Do not push an Explicit NULL label. | |||
This field can have one of the values as specified in | This field can have one of the values as specified in | |||
Section 6.10. The ENLP unassigned values may be used for future | Section 6.10. The ENLP unassigned values may be used for future | |||
extensions. Implementations adhering to this document MUST ignore | extensions. Implementations adhering to this document MUST ignore | |||
the ENLP Sub-TLV with unrecognized values (viz. other than 1 | the ENLP sub-TLV with unrecognized values (viz. other than 1 | |||
through 4). The behavior signaled in this Sub-TLV MAY be | through 4). The behavior signaled in this sub-TLV MAY be | |||
overridden by local configuration by the network operator based on | overridden by local configuration by the network operator based on | |||
their deployment requirements. Section 4.1 of [RFC9256] describes | their deployment requirements. Section 4.1 of [RFC9256] describes | |||
the behavior on the headend for the handling of the explicit null | the behavior on the headend for the handling of the Explicit NULL | |||
label. | label. | |||
2.4.6. Policy Priority Sub-TLV | 2.4.6. Policy Priority Sub-TLV | |||
An operator MAY set the Policy Priority sub-TLV to indicate the order | An operator MAY set the Policy Priority sub-TLV to indicate the order | |||
in which the SR policies are recomputed upon topological change. The | in which the SR policies are recomputed upon topological change. The | |||
contents of this sub-TLV are used by the SRPM as described in | contents of this sub-TLV are used by the SRPM as described in | |||
Section 2.12 of [RFC9256]. | Section 2.12 of [RFC9256]. | |||
The Priority sub-TLV is OPTIONAL; it MUST NOT appear more than once | The Priority sub-TLV is OPTIONAL; it MUST NOT appear more than once | |||
skipping to change at line 1071 ¶ | skipping to change at line 1070 ¶ | |||
Priority: A 1-octet value indicating the priority as specified in | Priority: A 1-octet value indicating the priority as specified in | |||
Section 2.12 of [RFC9256]. | Section 2.12 of [RFC9256]. | |||
RESERVED: 1 octet of reserved bits. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
2.4.7. Policy Candidate Path Name Sub-TLV | 2.4.7. Policy Candidate Path Name Sub-TLV | |||
An operator MAY set the Policy Candidate Path Name sub-TLV to attach | An operator MAY set the Policy Candidate Path Name sub-TLV to attach | |||
a symbolic name to the SR Policy candidate path. | a symbolic name to the SR Policy CP. | |||
Usage of the Policy Candidate Path Name sub-TLV is described in | Usage of the Policy Candidate Path Name sub-TLV is described in | |||
Section 2.6 of [RFC9256]. | Section 2.6 of [RFC9256]. | |||
The Policy Candidate Path Name sub-TLV may exceed 255 bytes in length | The Policy Candidate Path Name sub-TLV may exceed 255 bytes in length | |||
due to a long name. A 2-octet length is thus required. According to | due to a long name. A 2-octet length is thus required. According to | |||
Section 2 of [RFC9012], the sub-TLV type defines the size of the | Section 2 of [RFC9012], the sub-TLV type defines the size of the | |||
length field. Therefore, for the Policy Candidate Path Name sub-TLV, | Length field. Therefore, for the Policy Candidate Path Name sub-TLV, | |||
a code point of 128 or higher is used. | a code point of 128 or higher is used. | |||
It is RECOMMENDED that the size of the symbolic name for the | It is RECOMMENDED that the size of the symbolic name for the CP be | |||
candidate path be limited to 255 bytes. Implementations MAY choose | limited to 255 bytes. Implementations MAY choose to truncate long | |||
to truncate long names to 255 bytes when signaling via BGP. | names to 255 bytes when signaling via BGP. | |||
The Policy Candidate Path Name sub-TLV is OPTIONAL; it MUST NOT | The Policy Candidate Path Name sub-TLV is OPTIONAL; it MUST NOT | |||
appear more than once in the SR Policy encoding. | appear more than once in the SR Policy encoding. | |||
The Policy Candidate Path Name sub-TLV has the following format: | The Policy Candidate Path Name sub-TLV has the following format: | |||
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 | Length | RESERVED | | | Type | Length | RESERVED | | |||
skipping to change at line 1112 ¶ | skipping to change at line 1111 ¶ | |||
Type: 129 | Type: 129 | |||
Length: Specifies the length of the value field (i.e., not including | Length: Specifies the length of the value field (i.e., not including | |||
Type and Length fields) in terms of octets. The value is | Type and Length fields) in terms of octets. The value is | |||
variable. | variable. | |||
RESERVED: 1 octet of reserved bits. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
Policy Candidate Path Name: Symbolic name for the SR Policy | Policy Candidate Path Name: Symbolic name for the SR Policy CP | |||
candidate path without a NULL terminator with encoding as | without a NULL terminator with encoding as specified in | |||
specified in Section 2.6 of [RFC9256]. | Section 2.6 of [RFC9256]. | |||
2.4.8. Policy Name Sub-TLV | 2.4.8. Policy Name Sub-TLV | |||
An operator MAY set the Policy Name sub-TLV to associate a symbolic | An operator MAY set the Policy Name sub-TLV to associate a symbolic | |||
name with the SR Policy for which the candidate path is being | name with the SR Policy for which the CP is being advertised via the | |||
advertised via the SR Policy NLRI. | SR Policy NLRI. | |||
Usage of the Policy Name sub-TLV is described in Section 2.1 of | Usage of the Policy Name sub-TLV is described in Section 2.1 of | |||
[RFC9256]. | [RFC9256]. | |||
The Policy Name sub-TLV may exceed 255 bytes in length due to a long | The Policy Name sub-TLV may exceed 255 bytes in length due to a long | |||
policy name. A 2-octet length is thus required. According to | policy name. A 2-octet length is thus required. According to | |||
Section 2 of [RFC9012], the sub-TLV type defines the size of the | Section 2 of [RFC9012], the sub-TLV type defines the size of the | |||
length field. Therefore, for the Policy Name sub-TLV, a code point | Length field. Therefore, for the Policy Name sub-TLV, a code point | |||
of 128 or higher is used. | of 128 or higher is used. | |||
It is RECOMMENDED that the size of the symbolic name for the SR | It is RECOMMENDED that the size of the symbolic name for the SR | |||
Policy be limited to 255 bytes. Implementations MAY choose to | Policy be limited to 255 bytes. Implementations MAY choose to | |||
truncate long names to 255 bytes when signaling via BGP. | truncate long names to 255 bytes when signaling via BGP. | |||
The Policy Name sub-TLV is OPTIONAL; it MUST NOT appear more than | The Policy Name sub-TLV is OPTIONAL; it MUST NOT appear more than | |||
once in the SR Policy encoding. | once in the SR Policy encoding. | |||
The Policy Name sub-TLV has the following format: | The Policy Name sub-TLV has the following format: | |||
skipping to change at line 1167 ¶ | skipping to change at line 1166 ¶ | |||
RESERVED: 1 octet of reserved bits. This field MUST be set to zero | RESERVED: 1 octet of reserved bits. This field MUST be set to zero | |||
on transmission and MUST be ignored on receipt. | on transmission and MUST be ignored on receipt. | |||
Policy Name: Symbolic name for the SR Policy without a NULL | Policy Name: Symbolic name for the SR Policy without a NULL | |||
terminator with encoding as specified in Section 2.1 of [RFC9256]. | terminator with encoding as specified in Section 2.1 of [RFC9256]. | |||
3. Color Extended Community | 3. Color Extended Community | |||
The Color Extended Community [RFC9012] is used to steer traffic | The Color Extended Community [RFC9012] is used to steer traffic | |||
corresponding to BGP routes into an SR Policy with matching color | corresponding to BGP routes into an SR Policy with matching Color | |||
value. The Color Extended Community MAY be carried in any BGP UPDATE | value. The Color Extended Community MAY be carried in any BGP UPDATE | |||
message whose AFI/SAFI is 1/1 (IPv4 Unicast), 2/1 (IPv6 Unicast), 1/4 | message whose AFI/SAFI is 1/1 (IPv4 Unicast), 2/1 (IPv6 Unicast), 1/4 | |||
(IPv4 Labeled Unicast), 2/4 (IPv6 Labeled Unicast), 1/128 (VPN-IPv4 | (IPv4 Labeled Unicast), 2/4 (IPv6 Labeled Unicast), 1/128 (VPN-IPv4 | |||
Labeled Unicast), 2/128 (VPN-IPv6 Labeled Unicast), or 25/70 | Labeled Unicast), 2/128 (VPN-IPv6 Labeled Unicast), or 25/70 | |||
(Ethernet VPN, usually known as EVPN). Use of the Color Extended | (Ethernet VPN, usually known as EVPN). Use of the Color Extended | |||
Community in BGP UPDATE messages of other AFI/SAFIs is not covered by | Community in BGP UPDATE messages of other AFI/SAFIs is not covered by | |||
[RFC9012]; hence, it is outside the scope of this document as well. | [RFC9012]; hence, it is outside the scope of this document as well. | |||
Two bits from the Flags field of the Color Extended Community are | Two bits from the Flags field of the Color Extended Community are | |||
used as follows to support the requirements of Color-Only steering as | used as follows to support the requirements of Color-Only steering as | |||
skipping to change at line 1189 ¶ | skipping to change at line 1188 ¶ | |||
1 | 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|C O| Unassigned | | |C O| Unassigned | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 19: Color Extended Community Flags | Figure 19: Color Extended Community Flags | |||
The C and O bits together form the Color-Only Type field, which | The C and O bits together form the Color-Only Type field, which | |||
indicates the various matching criteria between the BGP NH and the SR | indicates the various matching criteria between the BGP Next Hop (NH) | |||
Policy endpoint in addition to the matching of the color value. The | and the SR Policy Endpoint in addition to the matching of the Color | |||
following types are defined: | value. The following types are defined: | |||
Type 0 (bits 00): Specific Endpoint Match. Request a match for the | Type 0 (bits 00): Specific Endpoint Match. Request a match for the | |||
endpoint that is the BGP NH. | Endpoint that is the BGP NH. | |||
Type 1 (bits 01): Specific or Null Endpoint Match. Request a match | Type 1 (bits 01): Specific or Null Endpoint Match. Request a match | |||
for either the endpoint that is the BGP NH or a null endpoint | for either the Endpoint that is the BGP NH or a null Endpoint | |||
(e.g., a default gateway). | (e.g., a default gateway). | |||
Type 2 (bits 10): Specific, Null, or Any Endpoint Match. Request a | Type 2 (bits 10): Specific, Null, or Any Endpoint Match. Request a | |||
match for either the endpoint that is the BGP NH or a null or any | match for either the Endpoint that is the BGP NH or a null or any | |||
endpoint. | Endpoint. | |||
Type 3 (bits 11): Reserved for future use and SHOULD NOT be used. | Type 3 (bits 11): Reserved for future use and SHOULD NOT be used. | |||
Upon reception, an implementation MUST treat it like Type 0. | Upon reception, an implementation MUST treat it like Type 0. | |||
The details of the SR Policy steering mechanisms based on these | The details of the SR Policy steering mechanisms based on these | |||
Color-Only types are specified in Section 8.8 of [RFC9256]. | Color-Only types are specified in Section 8.8 of [RFC9256]. | |||
One or more Color Extended Communities MAY be associated with a BGP | One or more Color Extended Communities MAY be associated with a BGP | |||
route update. Sections 8.4.1, 8.5.1, and 8.8.2 of [RFC9256] specify | route update. Sections 8.4.1, 8.5.1, and 8.8.2 of [RFC9256] specify | |||
the steering behaviors over SR Policies when multiple Color Extended | the steering behaviors over SR Policies when multiple Color Extended | |||
skipping to change at line 1229 ¶ | skipping to change at line 1228 ¶ | |||
the SR Policy NLRI, but its installation and use are outside the | the SR Policy NLRI, but its installation and use are outside the | |||
scope of BGP. The details of SR Policy installation and use are | scope of BGP. The details of SR Policy installation and use are | |||
specified in [RFC9256]. | specified in [RFC9256]. | |||
4.1. Advertisement of SR Policies | 4.1. Advertisement of SR Policies | |||
Typically, but not limited to, an SR Policy is computed by a | Typically, but not limited to, an SR Policy is computed by a | |||
controller or a Path Computation Engine (PCE) and originated by a BGP | controller or a Path Computation Engine (PCE) and originated by a BGP | |||
speaker on its behalf. | speaker on its behalf. | |||
Multiple SR Policy NLRIs may be present with the same <color, | Multiple SR Policy NLRIs may be present with the same <Color, | |||
endpoint> tuple but with different distinguishers when these SR | Endpoint> tuple but with different distinguishers when these SR | |||
policies are intended for different headends. | policies are intended for different headends. | |||
The distinguisher of each SR Policy NLRI prevents undesired BGP route | The distinguisher of each SR Policy NLRI prevents undesired BGP route | |||
selection among these SR Policy NLRIs and allows their propagation | selection among these SR Policy NLRIs and allows their propagation | |||
across route reflectors [RFC4456]. | across RRs [RFC4456]. | |||
Moreover, one or more route targets SHOULD be attached to the | Moreover, one or more route targets SHOULD be attached to the | |||
advertisement, where each route target identifies one or more | advertisement, where each route target identifies one or more | |||
intended headends for the advertised SR Policy update. | intended headends for the advertised SR Policy update. | |||
If no route target is attached to the SR Policy NLRI, then it is | If no route target is attached to the SR Policy NLRI, then it is | |||
assumed that the originator sends the SR Policy update directly | assumed that the originator sends the SR Policy update directly | |||
(e.g., through a BGP session) to the intended receiver. In such a | (e.g., through a BGP session) to the intended receiver. In such a | |||
case, the NO_ADVERTISE community [RFC1997] MUST be attached to the SR | case, the NO_ADVERTISE community [RFC1997] MUST be attached to the SR | |||
Policy update (see further details in Section 4.2.3). | Policy update (see further details in Section 4.2.3). | |||
skipping to change at line 1266 ¶ | skipping to change at line 1265 ¶ | |||
processing as described in Section 4.2.2. The selected best route is | processing as described in Section 4.2.2. The selected best route is | |||
"propagated" (Section 9.1.3 of [RFC4271]) as described in | "propagated" (Section 9.1.3 of [RFC4271]) as described in | |||
Section 4.2.3, irrespective of its "usability" by the local router. | Section 4.2.3, irrespective of its "usability" by the local router. | |||
4.2.1. Validation of an SR Policy NLRI | 4.2.1. Validation of an SR Policy NLRI | |||
When a BGP speaker receives an SR Policy NLRI from a neighbor, it | When a BGP speaker receives an SR Policy NLRI from a neighbor, it | |||
MUST first perform validation based on the following rules in | MUST first perform validation based on the following rules in | |||
addition to the validation described in Section 5: | addition to the validation described in Section 5: | |||
* The SR Policy NLRI MUST include a distinguisher, color, and | * The SR Policy NLRI MUST include a distinguisher, Color, and | |||
endpoint field that implies that the length of the NLRI MUST be | Endpoint field that implies that the length of the NLRI MUST be | |||
either 12 or 24 octets (depending on the address family of the | either 12 or 24 octets (depending on the address family of the | |||
endpoint). | Endpoint). | |||
* The SR Policy update MUST have either the NO_ADVERTISE community, | * The SR Policy update MUST have either the NO_ADVERTISE community, | |||
at least one route target extended community in IPv4-address | at least one Route Target extended community in IPv4-address | |||
format, or both. If a router supporting this specification | format, or both. If a router supporting this specification | |||
receives an SR Policy update with no route target extended | receives an SR Policy update with no Route Target extended | |||
communities and no NO_ADVERTISE community, the update MUST be | communities and no NO_ADVERTISE community, the update MUST be | |||
considered to be malformed. | considered to be malformed. | |||
* The Tunnel Encapsulation Attribute MUST be attached to the BGP | * The Tunnel Encapsulation Attribute MUST be attached to the BGP | |||
Update and MUST have a Tunnel Type TLV set to SR Policy (code | UPDATE message and MUST have a Tunnel Type TLV set to SR Policy | |||
point is 15). | (code point is 15). | |||
A router that receives an SR Policy update that is not valid | A router that receives an SR Policy update that is not valid | |||
according to these criteria MUST treat the update as malformed, and | according to these criteria MUST treat the update as malformed, and | |||
the SR Policy candidate path MUST NOT be passed to the SRPM. | the SR Policy CP MUST NOT be passed to the SRPM. | |||
4.2.2. Eligibility for Local Use of an SR Policy NLRI | 4.2.2. Eligibility for Local Use of an SR Policy NLRI | |||
An SR Policy NLRI update that does not have a route target extended | An SR Policy NLRI update that does not have a Route Target extended | |||
community but does have the NO_ADVERTISE community is considered | community but does have the NO_ADVERTISE community is considered | |||
usable. | usable. | |||
If one or more route targets are present, then at least one route | If one or more route targets are present, then at least one route | |||
target MUST match the BGP Identifier of the receiver for the update | target MUST match the BGP Identifier of the receiver for the update | |||
to be considered usable. The BGP Identifier is defined in [RFC4271] | to be considered usable. The BGP Identifier is defined in [RFC4271] | |||
as a 4-octet IPv4 address and is updated by [RFC6286] as a 4-octet, | as a 4-octet IPv4 address and is updated by [RFC6286] as a 4-octet, | |||
unsigned, non-zero integer. Therefore, the route target extended | unsigned, non-zero integer. Therefore, the Route Target extended | |||
community MUST be of the same format. | community MUST be of the same format. | |||
If one or more route targets are present and none matches the local | If one or more route targets are present, and none matches the local | |||
BGP Identifier, then, while the SR Policy NLRI is valid, it is not | BGP Identifier, then, while the SR Policy NLRI is valid, the SR | |||
usable on the receiver node. | Policy NLRI is not usable on the receiver node. | |||
When the SR Policy tunnel type includes any sub-TLV that is | When the SR Policy tunnel type includes any sub-TLV that is | |||
unrecognized or unsupported, the update SHOULD NOT be considered | unrecognized or unsupported, the update SHOULD NOT be considered | |||
usable. An implementation MAY provide an option for ignoring | usable. An implementation MAY provide an option for ignoring | |||
unsupported sub-TLVs. | unsupported sub-TLVs. | |||
Once BGP on the receiving node has determined that the SR Policy NLRI | Once BGP on the receiving node has determined that the SR Policy NLRI | |||
is usable, it passes the SR Policy candidate path to the SRPM. Note | is usable, it passes the SR Policy CP to the SRPM. Note that, along | |||
that, along with the candidate path details, BGP also passes the | with the CP details, BGP also passes the originator information for | |||
originator information for breaking ties in the candidate path | breaking ties in the CP selection process as described in Section 2.4 | |||
selection process as described in Section 2.4 of [RFC9256]. | of [RFC9256]. | |||
When an update for an SR Policy NLRI results in its becoming | When an update for an SR Policy NLRI results in its becoming | |||
unusable, BGP MUST delete its corresponding SR Policy candidate path | unusable, BGP MUST delete its corresponding SR Policy CP from the | |||
from the SRPM. | SRPM. | |||
The SRPM applies the rules defined in Section 2 of [RFC9256] to | The SRPM applies the rules defined in Section 2 of [RFC9256] to | |||
determine whether the SR Policy candidate path is valid and to select | determine whether the SR Policy CP is valid and to select the active | |||
the active candidate path for a given SR Policy. | CP for a given SR Policy. | |||
4.2.3. Propagation of an SR Policy | 4.2.3. Propagation of an SR Policy | |||
SR Policy NLRIs that have the NO_ADVERTISE community attached to them | SR Policy NLRIs that have the NO_ADVERTISE community attached to them | |||
MUST NOT be propagated. | MUST NOT be propagated. | |||
By default, a BGP node receiving an SR Policy NLRI MUST NOT propagate | By default, a BGP node receiving an SR Policy NLRI MUST NOT propagate | |||
it to any External BGP (EBGP) neighbor. An implementation MAY | it to any External BGP (EBGP) neighbor. An implementation MAY | |||
provide an explicit configuration to override this and enable the | provide an explicit configuration to override this and enable the | |||
propagation of valid SR Policy NLRIs to specific EBGP neighbors where | propagation of valid SR Policy NLRIs to specific EBGP neighbors where | |||
the SR domain comprises multiple ASes within a single service | the SR domain comprises multiple ASes within a single service | |||
provider domain (see Section 7 for details). | provider domain (see Section 7 for details). | |||
A BGP node advertises a received SR Policy NLRI to its Internal BGP | A BGP node advertises a received SR Policy NLRI to its Internal BGP | |||
(IBGP) neighbors according to normal IBGP propagation rules. | (IBGP) neighbors according to normal IBGP propagation rules. | |||
By default, a BGP node receiving an SR Policy NLRI SHOULD NOT remove | By default, a BGP node receiving an SR Policy NLRI SHOULD NOT remove | |||
the route target extended community before propagation. An | the Route Target extended community before propagation. An | |||
implementation MAY provide support for configuration to filter and/or | implementation MAY provide support for configuration to filter and/or | |||
remove the route target extended community before propagation. | remove the Route Target extended community before propagation. | |||
A BGP node MUST NOT alter the SR Policy information carried in the | A BGP node MUST NOT alter the SR Policy information carried in the | |||
Tunnel Encapsulation Attribute during propagation. | Tunnel Encapsulation Attribute during propagation. | |||
5. Error Handling and Fault Management | 5. Error Handling and Fault Management | |||
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 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 AFIs/SAFIs besides | malformed NLRIs as "AFI/SAFI disable" when other AFIs/SAFIs besides | |||
SR Policy are being advertised over the same session. Alternately, | SR Policy are being advertised over the same session. Alternately, | |||
the router MUST perform "session reset" when the session is only | the router MUST perform "session reset" when the session is only | |||
being used for SR Policy or when a "AFI/SAFI disable" action is not | being used for SR Policy or when a "AFI/SAFI disable" action is not | |||
possible. | possible. | |||
The validation of the TLVs/sub-TLVs introduced in this document and | The validation of the TLVs/sub-TLVs introduced in this document and | |||
defined in their respective subsections of Section 2.4 MUST be | defined in their respective subsections of Section 2.4 MUST be | |||
performed to determine if they are malformed or invalid. The | performed to determine if they are malformed or invalid. The | |||
skipping to change at line 1447 ¶ | skipping to change at line 1446 ¶ | |||
+=======+================+===========+ | +=======+================+===========+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+=======+================+===========+ | +=======+================+===========+ | |||
| 73 | SR Policy SAFI | RFC 9830 | | | 73 | SR Policy SAFI | RFC 9830 | | |||
+-------+----------------+-----------+ | +-------+----------------+-----------+ | |||
Table 1: BGP SAFI Code Point | Table 1: BGP SAFI Code Point | |||
6.2. BGP Tunnel Encapsulation Attribute Tunnel Types | 6.2. BGP Tunnel Encapsulation Attribute Tunnel Types | |||
This document registers a Tunnel-Type code point in the "BGP Tunnel | This document registers a Tunnel Type code point in the "BGP Tunnel | |||
Encapsulation Attribute Tunnel Types" registry under the "Border | Encapsulation Attribute Tunnel Types" registry under the "Border | |||
Gateway Protocol (BGP) Tunnel Encapsulation" registry group. | Gateway Protocol (BGP) Tunnel Encapsulation" registry group. | |||
+=======+=============+===========+ | +=======+=============+===========+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+=======+=============+===========+ | +=======+=============+===========+ | |||
| 15 | SR Policy | RFC 9830 | | | 15 | SR Policy | RFC 9830 | | |||
+-------+-------------+-----------+ | +-------+-------------+-----------+ | |||
Table 2: Tunnel Type Code Point | Table 2: Tunnel Type Code Point | |||
6.3. BGP Tunnel Encapsulation Attribute Sub-TLVs | 6.3. BGP Tunnel Encapsulation Attribute Sub-TLVs | |||
This document defines sub-TLVs in the "BGP Tunnel Encapsulation | This document defines sub-TLVs in the "BGP Tunnel Encapsulation | |||
Attribute Sub-TLVs" registry under the "Border Gateway Protocol (BGP) | Attribute Sub-TLVs" registry under the "Border Gateway Protocol (BGP) | |||
Tunnel Encapsulation" registry group. | Tunnel Encapsulation" registry group. | |||
+=======+====================================+===========+ | +=======+==========================+===========+===================+ | |||
| Value | Description | Reference | | | Value | Description | Reference | Change Controller | | |||
+=======+====================================+===========+ | +=======+==========================+===========+===================+ | |||
| 12 | Preference sub-TLV | RFC 9830 | | | 12 | Preference sub-TLV | RFC 9830 | IETF | | |||
+-------+------------------------------------+-----------+ | +-------+--------------------------+-----------+-------------------+ | |||
| 13 | Binding SID sub-TLV | RFC 9830 | | | 13 | Binding SID sub-TLV | RFC 9830 | IETF | | |||
+-------+------------------------------------+-----------+ | +-------+--------------------------+-----------+-------------------+ | |||
| 14 | ENLP sub-TLV | RFC 9830 | | | 14 | ENLP sub-TLV | RFC 9830 | IETF | | |||
+-------+------------------------------------+-----------+ | +-------+--------------------------+-----------+-------------------+ | |||
| 15 | Priority sub-TLV | RFC 9830 | | | 15 | Priority sub-TLV | RFC 9830 | IETF | | |||
+-------+------------------------------------+-----------+ | +-------+--------------------------+-----------+-------------------+ | |||
| 20 | SRv6 Binding SID sub-TLV | RFC 9830 | | | 20 | SRv6 Binding SID sub-TLV | RFC 9830 | IETF | | |||
+-------+------------------------------------+-----------+ | +-------+--------------------------+-----------+-------------------+ | |||
| 128 | Segment List sub-TLV | RFC 9830 | | | 128 | Segment List sub-TLV | RFC 9830 | IETF | | |||
+-------+------------------------------------+-----------+ | +-------+--------------------------+-----------+-------------------+ | |||
| 129 | Policy Candidate Path Name sub-TLV | RFC 9830 | | | 129 | Policy Candidate Path | RFC 9830 | IETF | | |||
+-------+------------------------------------+-----------+ | | | Name sub-TLV | | | | |||
| 130 | Policy Name sub-TLV | RFC 9830 | | +-------+--------------------------+-----------+-------------------+ | |||
+-------+------------------------------------+-----------+ | | 130 | Policy Name sub-TLV | RFC 9830 | IETF | | |||
+-------+--------------------------+-----------+-------------------+ | ||||
Table 3: BGP Tunnel Encapsulation Attribute Sub-TLV | Table 3: BGP Tunnel Encapsulation Attribute Sub-TLV Code Points | |||
Code Points | ||||
6.4. Color Extended Community Flags | 6.4. Color Extended Community Flags | |||
This document defines the use of 2 bits in the "Color Extended | This document defines the use of 2 bits in the "Color Extended | |||
Community Flags" registry under the "Border Gateway Protocol (BGP) | Community Flags" registry under the "Border Gateway Protocol (BGP) | |||
Tunnel Encapsulation" registry group. | Tunnel Encapsulation" registry group. | |||
+==============+========================+===========+ | +==============+========================+===========+ | |||
| Bit Position | Description | Reference | | | Bit Position | Description | Reference | | |||
+==============+========================+===========+ | +==============+========================+===========+ | |||
skipping to change at line 1553 ¶ | skipping to change at line 1552 ¶ | |||
registry group. The registration policy of this registry is | registry group. The registration policy of this registry is | |||
"Standards Action" (see [RFC8126]). | "Standards Action" (see [RFC8126]). | |||
The following flags are defined: | The following flags are defined: | |||
+=====+===================================+===========+ | +=====+===================================+===========+ | |||
| Bit | Description | Reference | | | Bit | Description | Reference | | |||
+=====+===================================+===========+ | +=====+===================================+===========+ | |||
| 0 | Specified-BSID-Only Flag (S-Flag) | RFC 9830 | | | 0 | Specified-BSID-Only Flag (S-Flag) | RFC 9830 | | |||
+-----+-----------------------------------+-----------+ | +-----+-----------------------------------+-----------+ | |||
| 1 | Drop Upon Invalid Flag (I-Flag) | RFC 9830 | | | 1 | Drop-Upon-Invalid Flag (I-Flag) | RFC 9830 | | |||
+-----+-----------------------------------+-----------+ | +-----+-----------------------------------+-----------+ | |||
| 2-7 | Unassigned | | | 2-7 | Unassigned | | |||
+-----+-----------------------------------------------+ | +-----+-----------------------------------------------+ | |||
Table 6: SR Policy Binding SID Flags | Table 6: SR Policy Binding SID Flags | |||
6.7. SR Policy SRv6 Binding SID Flags | 6.7. SR Policy SRv6 Binding SID Flags | |||
This document creates a new registry called "SR Policy SRv6 Binding | This document creates a new registry called "SR Policy SRv6 Binding | |||
SID Flags" under the "Border Gateway Protocol (BGP) Tunnel | SID Flags" under the "Border Gateway Protocol (BGP) Tunnel | |||
Encapsulation" registry group. The registration policy of this | Encapsulation" registry group. The registration policy of this | |||
registry is "Standards Action" (see [RFC8126]). | registry is "Standards Action" (see [RFC8126]). | |||
The following flags are defined: | The following flags are defined: | |||
+=====+===================================+===========+ | +=====+===================================+===========+ | |||
| Bit | Description | Reference | | | Bit | Description | Reference | | |||
+=====+===================================+===========+ | +=====+===================================+===========+ | |||
| 0 | Specified-BSID-Only Flag (S-Flag) | RFC 9830 | | | 0 | Specified-BSID-Only Flag (S-Flag) | RFC 9830 | | |||
+-----+-----------------------------------+-----------+ | +-----+-----------------------------------+-----------+ | |||
| 1 | Drop Upon Invalid Flag (I-Flag) | RFC 9830 | | | 1 | Drop-Upon-Invalid Flag (I-Flag) | RFC 9830 | | |||
+-----+-----------------------------------+-----------+ | +-----+-----------------------------------+-----------+ | |||
| 2 | SRv6 Endpoint Behavior & SID | RFC 9830 | | | 2 | SRv6 Endpoint Behavior & SID | RFC 9830 | | |||
| | Structure Flag (B-Flag) | | | | | Structure Flag (B-Flag) | | | |||
+-----+-----------------------------------+-----------+ | +-----+-----------------------------------+-----------+ | |||
| 3-7 | Unassigned | | | 3-7 | Unassigned | | |||
+-----+-----------------------------------------------+ | +-----+-----------------------------------------------+ | |||
Table 7: SR Policy SRv6 Binding SID Flags | Table 7: SR Policy SRv6 Binding SID Flags | |||
6.8. SR Policy Segment Flags | 6.8. SR Policy Segment Flags | |||
skipping to change at line 1638 ¶ | skipping to change at line 1637 ¶ | |||
| 3 | Unassigned | RFC 9830 | | | 3 | Unassigned | RFC 9830 | | |||
+------+---------------------------------------+-----------+ | +------+---------------------------------------+-----------+ | |||
Table 9: Color Extended Community Color-Only Types | Table 9: Color Extended Community Color-Only Types | |||
6.10. SR Policy ENLP Values | 6.10. SR Policy ENLP Values | |||
IANA will maintain a new registry under the "Segment Routing" | IANA will maintain a new registry under the "Segment Routing" | |||
registry group with the registration policy of "Standards Action" | registry group with the registration policy of "Standards Action" | |||
(see [RFC8126]). The new registry is called "SR Policy ENLP Values" | (see [RFC8126]). The new registry is called "SR Policy ENLP Values" | |||
and contains the code points allocated to the "ENLP" field defined in | and contains the code points allocated to the ENLP field defined in | |||
Section 2.4.5. The registry contains the following code points: | Section 2.4.5. The registry contains the following code points: | |||
+=======+===================================+===========+ | +=======+===================================+===========+ | |||
| Code | Description | Reference | | | Code | Description | Reference | | |||
| Point | | | | | Point | | | | |||
+=======+===================================+===========+ | +=======+===================================+===========+ | |||
| 0 | Reserved (not to be used) | RFC 9830 | | | 0 | Reserved | RFC 9830 | | |||
+-------+-----------------------------------+-----------+ | +-------+-----------------------------------+-----------+ | |||
| 1 | Push an IPv4 Explicit NULL label | RFC 9830 | | | 1 | Push an IPv4 Explicit NULL label | RFC 9830 | | |||
| | on an unlabeled IPv4 packet but | | | | | on an unlabeled IPv4 packet but | | | |||
| | do not push an IPv6 Explicit NULL | | | | | do not push an IPv6 Explicit NULL | | | |||
| | label on an unlabeled IPv6 packet | | | | | label on an unlabeled IPv6 packet | | | |||
+-------+-----------------------------------+-----------+ | +-------+-----------------------------------+-----------+ | |||
| 2 | Push an IPv6 Explicit NULL label | RFC 9830 | | | 2 | Push an IPv6 Explicit NULL label | RFC 9830 | | |||
| | on an unlabeled IPv6 packet but | | | | | on an unlabeled IPv6 packet but | | | |||
| | do not push an IPv4 Explicit NULL | | | | | do not push an IPv4 Explicit NULL | | | |||
| | label on an unlabeled IPv4 packet | | | | | label on an unlabeled IPv4 packet | | | |||
skipping to change at line 1688 ¶ | skipping to change at line 1687 ¶ | |||
The BGP SR Policy extensions specified in this document enable | The BGP SR Policy extensions specified in this document enable | |||
traffic engineering and service programming use cases within an SR | traffic engineering and service programming use cases within an SR | |||
domain as described in [RFC9256]. SR operates within a trusted SR | domain as described in [RFC9256]. SR operates within a trusted SR | |||
domain [RFC8402]; its security considerations also apply to BGP | domain [RFC8402]; its security considerations also apply to BGP | |||
sessions when carrying SR Policy information. The SR Policies | sessions when carrying SR Policy information. The SR Policies | |||
distributed by BGP are expected to be used entirely within this | distributed by BGP are expected to be used entirely within this | |||
trusted SR domain, which comprises a single AS or multiple ASes / | trusted SR domain, which comprises a single AS or multiple ASes / | |||
domains within a single provider network. Therefore, precaution is | domains within a single provider network. Therefore, precaution is | |||
necessary to ensure that the SR Policy information advertised via BGP | necessary to ensure that the SR Policy information advertised via BGP | |||
sessions is limited to nodes in a secure manner within this trusted | sessions is limited to nodes in a secure manner within this trusted | |||
SR domain. BGP peering sessions for address families other than SR | SR domain. BGP peering sessions for address families other than | |||
Policy SAFI may be set up to routers outside the SR domain. The | those that use the SR Policy SAFI may be set up to routers outside | |||
isolation of BGP SR Policy SAFI peering sessions may be used to | the SR domain. The isolation of BGP SR Policy SAFI peering sessions | |||
ensure that the SR Policy information is not advertised by accident | may be used to ensure that the SR Policy information is not | |||
or in error to an EBGP peering session outside the SR domain. | advertised by accident or in error to an EBGP peering session outside | |||
the SR domain. | ||||
Additionally, it may be a consideration that the export of SR Policy | Additionally, it may be a consideration that the export of SR Policy | |||
information, as described in this document, constitutes a risk to | information, as described in this document, constitutes a risk to | |||
confidentiality of mission-critical or commercially sensitive | confidentiality of mission-critical or commercially sensitive | |||
information about the network (more specifically endpoint/node | information about the network (more specifically endpoint/node | |||
addresses, SR SIDs, and the SR Policies deployed). BGP peerings are | addresses, SR SIDs, and the SR Policies deployed). BGP peerings are | |||
not automatic and require configuration; thus, it is the | not automatic and require configuration; thus, it is the | |||
responsibility of the network operator to ensure that only trusted | responsibility of the network operator to ensure that only trusted | |||
nodes (that include both routers and controller applications) within | nodes (that include both routers and controller applications) within | |||
the SR domain are configured to receive such information. | the SR domain are configured to receive such information. | |||
skipping to change at line 1812 ¶ | skipping to change at line 1812 ¶ | |||
DOI 10.17487/RFC9012, April 2021, | DOI 10.17487/RFC9012, April 2021, | |||
<https://www.rfc-editor.org/info/rfc9012>. | <https://www.rfc-editor.org/info/rfc9012>. | |||
[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>. | |||
9.2. Informative References | 9.2. Informative References | |||
[BGP-LS-SR-POLICY] | ||||
Previdi, S., Talaulikar, K., Ed., Dong, J., Gredler, H., | ||||
and J. Tantsura, "Advertisement of Segment Routing | ||||
Policies using BGP Link-State", Work in Progress, | ||||
Internet-Draft, draft-ietf-idr-bgp-ls-sr-policy-16, 3 | ||||
March 2025, <https://datatracker.ietf.org/doc/html/draft- | ||||
ietf-idr-bgp-ls-sr-policy-16>. | ||||
[BGP-YANG-MODEL] | [BGP-YANG-MODEL] | |||
Jethanandani, M., Patel, K., Hares, S., and J. Haas, "YANG | Jethanandani, M., Patel, K., Hares, S., and J. Haas, "YANG | |||
Model for Border Gateway Protocol (BGP-4)", Work in | Model for Border Gateway Protocol (BGP-4)", Work in | |||
Progress, Internet-Draft, draft-ietf-idr-bgp-model-18, 21 | Progress, Internet-Draft, draft-ietf-idr-bgp-model-18, 21 | |||
October 2024, <https://datatracker.ietf.org/doc/html/ | October 2024, <https://datatracker.ietf.org/doc/html/ | |||
draft-ietf-idr-bgp-model-18>. | draft-ietf-idr-bgp-model-18>. | |||
[RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", | [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", | |||
RFC 4272, DOI 10.17487/RFC4272, January 2006, | RFC 4272, DOI 10.17487/RFC4272, January 2006, | |||
<https://www.rfc-editor.org/info/rfc4272>. | <https://www.rfc-editor.org/info/rfc4272>. | |||
skipping to change at line 1844 ¶ | skipping to change at line 1852 ¶ | |||
[RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and | [RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and | |||
Traffic Engineering Information Using BGP", RFC 9552, | Traffic Engineering Information Using BGP", RFC 9552, | |||
DOI 10.17487/RFC9552, December 2023, | DOI 10.17487/RFC9552, December 2023, | |||
<https://www.rfc-editor.org/info/rfc9552>. | <https://www.rfc-editor.org/info/rfc9552>. | |||
[RFC9831] Talaulikar, K., Ed., Filsfils, C., Previdi, S., Mattes, | [RFC9831] Talaulikar, K., Ed., Filsfils, C., Previdi, S., Mattes, | |||
P., and D. Jain, "Segment Routing Segment Types Extensions | P., and D. Jain, "Segment Routing Segment Types Extensions | |||
for BGP SR Policy", RFC 9831, DOI 10.17487/RFC9831, July | for BGP SR Policy", RFC 9831, DOI 10.17487/RFC9831, July | |||
2025, <https://www.rfc-editor.org/info/rfc9831>. | 2025, <https://www.rfc-editor.org/info/rfc9831>. | |||
[SR-BGP-LS] | ||||
Previdi, S., Talaulikar, K., Ed., Dong, J., Gredler, H., | ||||
and J. Tantsura, "Advertisement of Segment Routing | ||||
Policies using BGP Link-State", Work in Progress, | ||||
Internet-Draft, draft-ietf-idr-bgp-ls-sr-policy-16, 3 | ||||
March 2025, <https://datatracker.ietf.org/doc/html/draft- | ||||
ietf-idr-bgp-ls-sr-policy-16>. | ||||
[SR-POLICY-YANG] | [SR-POLICY-YANG] | |||
Raza, K., Ed., Saleh, T., Shunwan, Z., Voyer, D., Durrani, | Raza, K., Ed., Saleh, T., Shunwan, Z., Voyer, D., Durrani, | |||
M., Matsushima, S., and V. Beeram, "YANG Data Model for | M., Matsushima, S., and V. Beeram, "YANG Data Model for | |||
Segment Routing Policy", Work in Progress, Internet-Draft, | Segment Routing Policy", Work in Progress, Internet-Draft, | |||
draft-ietf-spring-sr-policy-yang-04, 22 November 2024, | draft-ietf-spring-sr-policy-yang-04, 22 November 2024, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-spring- | <https://datatracker.ietf.org/doc/html/draft-ietf-spring- | |||
sr-policy-yang-04>. | sr-policy-yang-04>. | |||
Acknowledgments | Acknowledgments | |||
End of changes. 108 change blocks. | ||||
245 lines changed or deleted | 245 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |