| rfc9830v1.txt | rfc9830.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) S. Previdi | Internet Engineering Task Force (IETF) S. Previdi | |||
| Request for Comments: 9830 Huawei Technologies | Request for Comments: 9830 Huawei Technologies | |||
| Updates: 9012 C. Filsfils | Updates: 9012 C. Filsfils | |||
| Category: Standards Track K. Talaulikar, Ed. | Category: Standards Track K. Talaulikar, Ed. | |||
| ISSN: 2070-1721 Cisco Systems | ISSN: 2070-1721 Cisco Systems | |||
| P. Mattes | P. Mattes | |||
| Microsoft | Microsoft | |||
| D. Jain | D. Jain | |||
| July 2025 | September 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 78 ¶ | skipping to change at line 77 ¶ | |||
| 2. SR Policy Encoding | 2. SR Policy Encoding | |||
| 2.1. SR Policy SAFI and NLRI | 2.1. SR Policy SAFI and NLRI | |||
| 2.2. SR Policy and Tunnel Encapsulation Attribute | 2.2. SR Policy and Tunnel Encapsulation Attribute | |||
| 2.3. Applicability of Tunnel Encapsulation Attribute Sub-TLVs | 2.3. Applicability of Tunnel Encapsulation Attribute Sub-TLVs | |||
| 2.4. SR Policy Sub-TLVs | 2.4. SR Policy Sub-TLVs | |||
| 2.4.1. Preference Sub-TLV | 2.4.1. Preference Sub-TLV | |||
| 2.4.2. Binding SID Sub-TLV | 2.4.2. Binding SID Sub-TLV | |||
| 2.4.3. SRv6 Binding SID Sub-TLV | 2.4.3. SRv6 Binding SID Sub-TLV | |||
| 2.4.4. Segment List Sub-TLV | 2.4.4. Segment List Sub-TLV | |||
| 2.4.5. Explicit NULL Label Policy Sub-TLV | 2.4.5. Explicit NULL Label Policy Sub-TLV | |||
| 2.4.6. Policy Priority Sub-TLV | 2.4.6. SR Policy Priority Sub-TLV | |||
| 2.4.7. Policy Candidate Path Name Sub-TLV | 2.4.7. SR Policy Candidate Path Name Sub-TLV | |||
| 2.4.8. Policy Name Sub-TLV | 2.4.8. SR Policy Name Sub-TLV | |||
| 3. Color Extended Community | 3. Color Extended Community | |||
| 4. SR Policy Operations | 4. SR Policy Operations | |||
| 4.1. Advertisement of SR Policies | 4.1. Advertisement of SR Policies | |||
| 4.2. Reception of an SR Policy NLRI | 4.2. Reception of an SR Policy NLRI | |||
| 4.2.1. Validation of an SR Policy NLRI | 4.2.1. Validation of an SR Policy NLRI | |||
| 4.2.2. Eligibility for Local Use of an SR Policy NLRI | 4.2.2. Eligibility for Local Use of an SR Policy NLRI | |||
| 4.2.3. Propagation of an SR Policy | 4.2.3. Propagation of an SR Policy | |||
| 5. Error Handling and Fault Management | 5. Error Handling and Fault Management | |||
| 6. IANA Considerations | 6. IANA Considerations | |||
| 6.1. Subsequent Address Family Identifiers (SAFI) Parameters | 6.1. Subsequent Address Family Identifiers (SAFI) Parameters | |||
| 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 SR Policy, this will result in one or more CPs being | |||
| candidate paths being installed into the "BGP table". These paths | installed into the "BGP table". These paths are then passed to the | |||
| are then passed to the SRPM. The SRPM may compare them to candidate | SRPM. The SRPM may compare them to CPs learned via other mechanisms | |||
| paths learned via other mechanisms and will choose one or more paths | and will choose one or more paths to be installed in the data plane. | |||
| to be installed in the data plane. BGP itself does not install SR | BGP 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 SR Policy headend routers (typically | |||
| ingress routers). These policy advertisements use the BGP extensions | ingress routers). These SR Policy advertisements use the BGP | |||
| defined in this document. In most cases, the policy advertisement is | extensions defined in this document. In most cases, the SR Policy | |||
| tailored for a specific policy headend; consequently, it may be | advertisement is tailored for a specific SR Policy headend; | |||
| transmitted over a direct BGP session (i.e., without intermediate BGP | consequently, it may be transmitted over a direct BGP session (i.e., | |||
| hops) to that headend and is not propagated any further. In such | without intermediate BGP hops) to that headend and is not propagated | |||
| cases, the policy advertisements will not traverse any Route | any further. In such cases, the SR Policy advertisements will not | |||
| Reflector (RR) (see [RFC4456] and Section 4.2.3). | traverse any Route Reflector (RR) (see [RFC4456] and Section 4.2.3). | |||
| Alternatively, a BGP egress router may advertise SR Policies that | Alternatively, a BGP egress router may advertise SR Policies that | |||
| represent paths 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 SR | |||
| Policy. | ||||
| In some situations, it is undesirable for a controller or BGP egress | In some situations, it is undesirable for a controller or BGP egress | |||
| router to have a BGP session to each policy headend. In these | router to have a BGP session to each SR Policy headend. In these | |||
| situations, BGP 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 | SR Policy. This is done by attaching one or more Route Target | |||
| Target Extended Communities to the advertisement [RFC4360]. | extended communities to the advertisement [RFC4360]. | |||
| The BGP extensions for the advertisement of SR Policies include | The BGP extensions for the advertisement of SR Policies include | |||
| following components: | following components: | |||
| * A 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 AFI/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 266 ¶ | skipping to change at line 263 ¶ | |||
| The SR Policy SAFI with code point 73 is introduced in this document. | The SR Policy SAFI with code point 73 is introduced in this document. | |||
| The AFI used MUST be IPv4(1) or IPv6(2). | The AFI used MUST be IPv4(1) or IPv6(2). | |||
| The SR Policy SAFI uses the NLRI format defined as follows: | The SR Policy SAFI uses the NLRI format defined as follows: | |||
| +------------------+ | +------------------+ | |||
| | NLRI Length | 1 octet | | NLRI Length | 1 octet | |||
| +------------------+ | +------------------+ | |||
| | Distinguisher | 4 octets | | Distinguisher | 4 octets | |||
| +------------------+ | +------------------+ | |||
| | Policy Color | 4 octets | | Color | 4 octets | |||
| +------------------+ | +------------------+ | |||
| | Endpoint | 4 or 16 octets | | Endpoint | 4 or 16 octets | |||
| +------------------+ | +------------------+ | |||
| Figure 1: SR Policy SAFI Format | Figure 1: SR Policy SAFI Format | |||
| Where: | Where: | |||
| NLRI Length: 1 octet indicating the length expressed in bits as | NLRI Length: 1 octet indicating the length expressed in bits as | |||
| defined in [RFC4760]. When AFI = 1, the value MUST be 96; when | defined in [RFC4760]. When AFI = 1, the value MUST be 96; when | |||
| AFI = 2, the value MUST be 192. | AFI = 2, the value MUST be 192. | |||
| Distinguisher: 4-octet value uniquely identifying the policy in the | Distinguisher: 4-octet value uniquely identifying the SR Policy in | |||
| context of <color, endpoint> tuple. The distinguisher has no | the context of <Color, Endpoint> tuple. The distinguisher has no | |||
| semantic value 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 | ||||
| the same Color and Endpoint but meant for different headends. The | ||||
| distinguisher is the discriminator of the SR Policy candidate path | ||||
| as specified in Section 2.5 of [RFC9256]. | ||||
| Policy Color: 4 octets that carry an unsigned non-zero integer value | * to differentiate multiple CPs of the same SR Policy | |||
| 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 | * to differentiate CPs meant for different headends but having | |||
| the same Color and Endpoint | ||||
| The distinguisher is the discriminator of the SR Policy CP as | ||||
| specified in Section 2.5 of [RFC9256]. | ||||
| Color: 4 octets that carry an unsigned non-zero integer value | ||||
| 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 | ||||
| destination prefixes to steer traffic into the SR Policy as | destination prefixes to steer traffic into the SR Policy as | |||
| specified in Section 8 of [RFC9256]. | specified in Section 8 of [RFC9256]. | |||
| Endpoint: a value that identifies the endpoint of a policy. The | Endpoint: a value that identifies the Endpoint of an SR Policy. The | |||
| Endpoint may represent a single node or a set of nodes (e.g., an | Endpoint may represent a single node or a set of nodes (e.g., an | |||
| anycast address). The Endpoint is an IPv4 (4-octet) address or an | anycast address). The Endpoint is an IPv4 (4-octet) address or an | |||
| IPv6 (16-octet) address according to the AFI of the NLRI. The | IPv6 (16-octet) address according to the AFI of the NLRI. The | |||
| address can be either unicast or an unspecified address (0.0.0.0 | address can be either unicast or an unspecified address (0.0.0.0 | |||
| for IPv4, :: for IPv6), known as a null endpoint as specified in | for IPv4, :: for IPv6), known as a null Endpoint as specified in | |||
| Section 2.1 of [RFC9256]. | Section 2.1 of [RFC9256]. | |||
| The color and endpoint are used to automate the steering of BGP | The Color and Endpoint are used to automate the steering of BGP | |||
| service routes on an SR Policy as described in Section 8 of | service routes on an SR Policy as described in Section 8 of | |||
| [RFC9256]. | [RFC9256]. | |||
| 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, 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 | |||
| Priority | Priority | |||
| Policy Name | SR Policy Name | |||
| Policy Candidate Path Name | SR Policy Candidate Path Name | |||
| Explicit NULL Label Policy (ENLP) | Explicit NULL Label Policy (ENLP) | |||
| Segment List | Segment List | |||
| Weight | Weight | |||
| Segment | Segment | |||
| Segment | Segment | |||
| ... | ... | |||
| ... | ... | |||
| 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, SR Policy Name, SR Policy | |||
| Path Name, ENLP, Segment-List, Weight, and Segment sub-TLVs are | Candidate Path Name, ENLP, Segment-List, Weight, and Segment sub- | |||
| defined in Section 2.4. | TLVs are 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]. | |||
| BGP does not need to perform the validation of the tunnel (i.e., SR | BGP does not need to perform the validation of the tunnel (i.e., SR | |||
| Policy) itself as indicated in Section 6 of [RFC9012]. The | Policy) itself as indicated in Section 6 of [RFC9012]. The | |||
| validation of the SR Policy information that is advertised using the | validation of the SR Policy information that is advertised using the | |||
| skipping to change at line 432 ¶ | skipping to change at line 432 ¶ | |||
| Similarly, any other sub-TLVs, including those specified in | Similarly, any other sub-TLVs, including those specified in | |||
| [RFC9012], that do not have explicitly defined applicability to the | [RFC9012], that do not have explicitly defined applicability to the | |||
| SR Policy SAFI MUST be ignored by the BGP speaker and MAY be removed | SR Policy SAFI MUST be ignored by the BGP speaker and MAY be removed | |||
| from the Tunnel Encapsulation Attribute during propagation. | from the Tunnel Encapsulation Attribute during propagation. | |||
| 2.4. SR Policy Sub-TLVs | 2.4. SR Policy Sub-TLVs | |||
| This section specifies the sub-TLVs defined for encoding the | This section specifies the sub-TLVs defined for encoding the | |||
| information about the SR Policy Candidate Path. | information about the SR Policy Candidate Path. | |||
| Preference, Binding SID, SRv6 Binding SID, Segment-List, Priority, | Preference, Binding SID, SRv6 Binding SID, Segment-List, Priority, SR | |||
| Policy Name, Policy Candidate Path Name, and Explicit NULL Label | Policy Name, SR 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 498 ¶ | |||
| 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 556 ¶ | |||
| |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" behavior 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 640 ¶ | |||
| |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 749 ¶ | |||
| 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 | |||
| skipping to change at line 854 ¶ | skipping to change at line 854 ¶ | |||
| * 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 890 ¶ | |||
| 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 Endpoint Behavior and SID 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 Endpoint Behavior and SID Structure | |||
| Where: | Where: | |||
| Endpoint Behavior: 2 octets. It carries the SRv6 Endpoint Behavior | Endpoint Behavior: 2 octets. It carries the SRv6 Endpoint Behavior | |||
| code point for this SRv6 SID as defined in Section 10.2 of | code point for this SRv6 SID as defined in Section 10.2 of | |||
| [RFC8986]. When set with the value 0xFFFF (i.e., Opaque), the | [RFC8986]. When set with the value 0xFFFF (i.e., Opaque), the | |||
| choice of SRv6 Endpoint Behavior is left to the headend. | choice of SRv6 Endpoint Behavior is left to the headend. | |||
| Reserved: 2 octets of reserved bits. This field MUST be set to zero | Reserved: 2 octets 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. | |||
| skipping to change at line 964 ¶ | skipping to change at line 964 ¶ | |||
| 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 | |||
| 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | ENLP | | | ENLP | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Figure 15: ELNP Sub-TLV | Figure 15: ENLP Sub-TLV | |||
| Where: | Where: | |||
| Type: 14 | Type: 14 | |||
| 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 3. | Type and Length fields) in terms of octets. The value MUST be 3. | |||
| 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. SR Policy Priority Sub-TLV | |||
| An operator MAY set the Policy Priority sub-TLV to indicate the order | An operator MAY set the SR Policy Priority sub-TLV to indicate the | |||
| in which the SR policies are recomputed upon topological change. The | order in which the SR policies are recomputed upon topological | |||
| contents of this sub-TLV are used by the SRPM as described in | change. The contents of this sub-TLV are used by the SRPM as | |||
| Section 2.12 of [RFC9256]. | described in 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 | |||
| in the SR Policy encoding. | in the SR Policy encoding. | |||
| The Priority sub-TLV has the following format: | The Priority 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 | Priority | RESERVED | | | Type | Length | Priority | RESERVED | | |||
| skipping to change at line 1068 ¶ | skipping to change at line 1068 ¶ | |||
| 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 2. | Type and Length fields) in terms of octets. The value MUST be 2. | |||
| 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. SR Policy Candidate Path Name Sub-TLV | |||
| An operator MAY set the Policy Candidate Path Name sub-TLV to attach | An operator MAY set the SR Policy Candidate Path Name sub-TLV to | |||
| a symbolic name to the SR Policy candidate path. | attach a symbolic name to the SR Policy CP. | |||
| Usage of the Policy Candidate Path Name sub-TLV is described in | Usage of the SR 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 SR Policy Candidate Path Name sub-TLV may exceed 255 bytes in | |||
| due to a long name. A 2-octet length is thus required. According to | length due to a long name. A 2-octet length is thus required. | |||
| Section 2 of [RFC9012], the sub-TLV type defines the size of the | According to Section 2 of [RFC9012], the sub-TLV type defines the | |||
| length field. Therefore, for the Policy Candidate Path Name sub-TLV, | size of the Length field. Therefore, for the SR Policy Candidate | |||
| a code point of 128 or higher is used. | Path Name sub-TLV, 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 SR 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 SR 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // Policy Candidate Path Name // | // SR Policy Candidate Path Name // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 17: Policy Candidate Path Name Sub-TLV | Figure 17: SR Policy Candidate Path Name Sub-TLV | |||
| Where: | Where: | |||
| 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 | SR 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. SR Policy Name Sub-TLV | |||
| An operator MAY set the Policy Name sub-TLV to associate a symbolic | An operator MAY set the SR Policy Name sub-TLV to associate a | |||
| name with the SR Policy for which the candidate path is being | symbolic name with the SR Policy for which the CP is being advertised | |||
| advertised via the SR Policy NLRI. | via the SR Policy NLRI. | |||
| Usage of the Policy Name sub-TLV is described in Section 2.1 of | Usage of the SR 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 SR Policy Name sub-TLV may exceed 255 bytes in length due to a | |||
| policy name. A 2-octet length is thus required. According to | long SR Policy name. A 2-octet length is thus required. According | |||
| Section 2 of [RFC9012], the sub-TLV type defines the size of the | to 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 SR Policy Name sub-TLV, a code | |||
| of 128 or higher is used. | point 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 SR 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 SR Policy 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 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // Policy Name // | // SR Policy Name // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 18: Policy Name Sub-TLV | Figure 18: SR Policy Name Sub-TLV | |||
| Where: | Where: | |||
| Type: 130 | Type: 130 | |||
| 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 Name: Symbolic name for the SR Policy without a NULL | SR 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 1189 ¶ | |||
| 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 1229 ¶ | |||
| 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 1266 ¶ | |||
| 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 AFI/SAFIs besides SR | |||
| SR Policy are being advertised over the same session. Alternately, | Policy are being advertised over the same session. Alternately, the | |||
| the router MUST perform "session reset" when the session is only | router MUST perform "session reset" when the session is only being | |||
| being used for SR Policy or when a "AFI/SAFI disable" action is not | 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 | |||
| validation of the Tunnel Encapsulation Attribute itself and the other | validation of the Tunnel Encapsulation Attribute itself and the other | |||
| TLVs/sub-TLVs specified in Section 13 of [RFC9012] MUST be done as | TLVs/sub-TLVs specified in Section 13 of [RFC9012] MUST be done as | |||
| described in that document. In case of any error detected, either at | described in that document. In case of any error detected, either at | |||
| the attribute or its TLV/sub-TLV level, the "treat-as-withdraw" | the attribute or its TLV/sub-TLV level, the "treat-as-withdraw" | |||
| strategy MUST be applied. This is because an SR Policy update | strategy MUST be applied. This is because an SR Policy update | |||
| skipping to change at line 1447 ¶ | skipping to change at line 1447 ¶ | |||
| +=======+================+===========+ | +=======+================+===========+ | |||
| | 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 | SR Policy Candidate Path | RFC 9830 | IETF | | |||
| +-------+------------------------------------+-----------+ | | | Name sub-TLV | | | | |||
| | 130 | Policy Name sub-TLV | RFC 9830 | | +-------+--------------------------+-----------+-------------------+ | |||
| +-------+------------------------------------+-----------+ | | 130 | SR 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 1517 ¶ | skipping to change at line 1517 ¶ | |||
| registry is "IETF Review" (see [RFC8126]). | registry is "IETF Review" (see [RFC8126]). | |||
| The following initial sub-TLV code points are assigned by this | The following initial sub-TLV code points are assigned by this | |||
| document: | document: | |||
| +========+========================+===========+ | +========+========================+===========+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +========+========================+===========+ | +========+========================+===========+ | |||
| | 0 | Reserved | RFC 9830 | | | 0 | Reserved | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 1 | Segment Type A sub-TLV | RFC 9830 | | | 1 | Type A Segment sub-TLV | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 2 | Deprecated | RFC 9830 | | | 2 | Deprecated | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 3-8 | Unassigned | | | 3-8 | Unassigned | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 9 | Weight sub-TLV | RFC 9830 | | | 9 | Weight sub-TLV | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 10 | Deprecated | RFC 9830 | | | 10 | Deprecated | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 11 | Deprecated | RFC 9830 | | | 11 | Deprecated | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 12 | Deprecated | RFC 9830 | | | 12 | Deprecated | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 13 | Segment Type B sub-TLV | RFC 9830 | | | 13 | Type B Segment sub-TLV | RFC 9830 | | |||
| +--------+------------------------+-----------+ | +--------+------------------------+-----------+ | |||
| | 14-255 | Unassigned | | | 14-255 | Unassigned | | |||
| +--------+------------------------------------+ | +--------+------------------------------------+ | |||
| Table 5: SR Policy Segment List Sub-TLV | Table 5: SR Policy Segment List Sub-TLV | |||
| Code Points | Code Points | |||
| 6.6. SR Policy Binding SID Flags | 6.6. SR Policy Binding SID Flags | |||
| This document creates a new registry called "SR Policy Binding SID | This document creates a new registry called "SR Policy Binding SID | |||
| skipping to change at line 1553 ¶ | skipping to change at line 1553 ¶ | |||
| 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 1638 ¶ | |||
| | 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 1688 ¶ | |||
| 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 1813 ¶ | |||
| 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 1840 ¶ | skipping to change at line 1849 ¶ | |||
| and Authentication for Routing Protocols (KARP) Design | and Authentication for Routing Protocols (KARP) Design | |||
| Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, | Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, | |||
| <https://www.rfc-editor.org/info/rfc6952>. | <https://www.rfc-editor.org/info/rfc6952>. | |||
| [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 Type Extensions for BGP Segment | |||
| for BGP SR Policy", RFC 9831, DOI 10.17487/RFC9831, July | Routing (SR) Policy", RFC 9831, DOI 10.17487/RFC9831, | |||
| 2025, <https://www.rfc-editor.org/info/rfc9831>. | September 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. 133 change blocks. | ||||
| 305 lines changed or deleted | 306 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||