Hi Rajesh/All, Please find attached the proposed diffs to clarify the point you have raised. It also includes the part that Russ had raised in his review of the draft-ietf-idr-bgp-sr-segtypes-ext document that covers some of the segment types. Do let us know if there are any follow-up questions or updates needed. Thanks, Ketan On Sat, Nov 2, 2024 at 6:32 AM Ketan Talaulikar <ketant.ietf@xxxxxxxxx> wrote: > > Hi Rajesh, > > Thanks for your review and comments. > > It is necessary to encode the SRv6 SID value first for encoding the > optional SRv6 Endpoint Behavior and Structure. This is something that > was not clear in the text in the two drafts and was brought up by Russ > in his GenART review - please refer to [1]. Your query is related to > the same and we'll clarify the text about the use of value 0 in such > scenarios. > > I'll share the proposed text later today. > > Thanks, > Ketan > > [1] https://mailarchive.ietf.org/arch/msg/idr/eEh7C902VY4FqujW7ul7mRnumt4/ > > On Sat, Nov 2, 2024 at 12:36 AM Rajesh MV <rajmv001@xxxxxxxxx> wrote: > > > > Hello authors, > > > > > > The encoding for the SRv6 BSID TLV requires the BSID to be present for signaling the Endpoint and Structure information. When a controller prefers not to specify the BSID (i.e., dynamic BSID allocation in the router) but still wants to indicate the desired behavior and structure, it can set the SRv6 BSID field to 0 with the S flag set to 0 and the B flag set to 1. Similarly, if the controller wants to specify flags (Eg: I-Flag) without providing a BSID, it can set the SRv6 BSID field to 0 and the S flag to 0. Is this correct ? The draft does not seem to clarify this. This is also the case for the segment types in draft-ietf-idr-bgp-sr-segtypes-ext where the SRv6 SID is optional. > > > > > > Regards > > > > Rajesh > > > > > > ======================================================================================================== > > > > The IESG has received a request from the Inter-Domain Routing WG (idr) to > > consider the following document: - 'Advertising Segment Routing Policies in > > BGP' > > <draft-ietf-idr-sr-policy-safi-09.txt> as Proposed Standard > > > > The IESG plans to make a decision in the next few weeks, and solicits final > > comments on this action. Please send substantive comments to the > > last-call@xxxxxxxx mailing lists by 2024-11-11. Exceptionally, comments may > > be sent to iesg@xxxxxxxx instead. In either case, please retain the beginning > > of the Subject line to allow automated sorting. > > > > Abstract > > > > > > A Segment Routing (SR) Policy is an ordered list of segments (i.e., > > instructions) that represent a source-routed policy. An SR Policy > > consists of one or more candidate paths, each consisting of one or > > more segment lists. A headend may be provisioned with candidate > > paths for an SR Policy via several different mechanisms, e.g., CLI, > > NETCONF, PCEP, or BGP. > > > > This document specifies how BGP may be used to distribute SR Policy > > candidate paths. It introduces a BGP SAFI to advertise a candidate > > path of a Segment Routing (SR) Policy and defines sub-TLVs for the > > Tunnel Encapsulation Attribute for signaling information about these > > candidate paths. > > > > This documents updates RFC9012 with extensions to the Color Extended > > Community to support additional steering modes over SR Policy. > > > > > > > > > > The file can be obtained via > > https://datatracker.ietf.org/doc/draft-ietf-idr-sr-policy-safi/ > > > > > > The following IPR Declarations may be related to this I-D: > > > > https://datatracker.ietf.org/ipr/2984/ > > https://datatracker.ietf.org/ipr/5890/ > > https://datatracker.ietf.org/ipr/5891/ > > > > > > > > The document contains these normative downward references. > > See RFC 3967 for additional information: > > rfc4272: BGP Security Vulnerabilities Analysis (Informational - Internet Engineering Task Force (IETF) stream) > > draft-ietf-idr-bgp-ls-sr-policy: Advertisement of Segment Routing Policies using BGP Link-State (None - Internet Engineering Task Force (IETF) stream) > > draft-ietf-idr-bgp-sr-segtypes-ext: Segment Routing Segment Types Extensions for BGP SR Policy (None - Internet Engineering Task Force (IETF) stream) > > rfc6952: Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide (Informational - Internet Engineering Task Force (IETF) stream) > > > >
Network Working Group K. Talaulikar, Ed. Internet-Draft C. Filsfils Intended status: Experimental Cisco Systems Expires: 7 May 2025 S. Previdi Huawei Technologies P. Mattes Microsoft D. Jain Google 3 November 2024 Segment Routing Segment Types Extensions for BGP SR Policy draft-ietf-idr-bgp-sr-segtypes-ext-06 Abstract This document specifies the signaling of additional Segment Routing Segment Types for signaling of Segment Routing (SR) Policies in BGP using SR Policy Subsequent Address Family Identifier. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on 7 May 2025. Copyright Notice Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components Talaulikar, et al. Expires 7 May 2025 [Page 1] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 2. Segment Type Sub-TLVs . . . . . . . . . . . . . . . . . . . . 3 2.1. Segment Type C . . . . . . . . . . . . . . . . . . . . . 4 2.2. Segment Type D . . . . . . . . . . . . . . . . . . . . . 5 2.3. Segment Type E . . . . . . . . . . . . . . . . . . . . . 5 2.4. Segment Type F . . . . . . . . . . . . . . . . . . . . . 6 2.5. Segment Type G . . . . . . . . . . . . . . . . . . . . . 7 2.6. Segment Type H . . . . . . . . . . . . . . . . . . . . . 9 2.7. Segment Type I . . . . . . . . . . . . . . . . . . . . . 9 2.8. Segment Type J . . . . . . . . . . . . . . . . . . . . . 11 2.9. Segment Type K . . . . . . . . . . . . . . . . . . . . . 12 2.10. SR Policy Segment Flags . . . . . . . . . . . . . . . . . 14 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 3.1. SR Policy Segment List Sub-TLVs . . . . . . . . . . . . . 15 3.2. SR Policy Segment Flags . . . . . . . . . . . . . . . . . 15 4. Security Considerations . . . . . . . . . . . . . . . . . . . 15 5. Manageability Considerations . . . . . . . . . . . . . . . . 16 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 7.1. Normative References . . . . . . . . . . . . . . . . . . 16 7.2. Informational References . . . . . . . . . . . . . . . . 17 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 1. Introduction BGP Segment Routing (SR) Policy Subsequent Address Family Identifier (SAFI) was introduced by [I-D.ietf-idr-sr-policy-safi] for the advertisement of SR Policy [RFC8402]. [I-D.ietf-idr-sr-policy-safi] introduced the base SR Segment Types A and B as specified by the SR Policy Architecture [RFC9256]. This document specifies the extensions for the advertisement of the remaining SR Segment Types defined in [RFC9256] in the SR Policy SAFI for both SR-MPLS [RFC8660] and SRv6 [RFC8754] [RFC8986]. The extensions in this document do not impact the SR Policy operations or fault management as specified in [I-D.ietf-idr-sr-policy-safi]. Talaulikar, et al. Expires 7 May 2025 [Page 2] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 1.1. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. 2. Segment Type Sub-TLVs The Segment List sub-TLV [I-D.ietf-idr-sr-policy-safi] encodes a single explicit path towards the endpoint as described in section 5.1 of [RFC9256]. The Segment List sub-TLV includes the elements of the paths (i.e., segments). A Segment sub-TLV describes a single segment in a segment list (i.e., a single element of the explicit path). Section 4 of [RFC9256] defines several Segment Types for SR-MPLS and SRv6 that are listed below as a reminder: Type A: SR-MPLS Label Type B: SRv6 SID Type C: IPv4 Prefix with optional SR Algorithm Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS Type E: IPv4 Prefix with Local Interface ID Type F: IPv4 Addresses for link endpoints as Local, Remote pair Type G: IPv6 Prefix and Interface ID for link endpoints as Local, Remote pair for SR-MPLS Type H: IPv6 Addresses for link endpoints as Local, Remote pair for SR-MPLS Type I: IPv6 Global Prefix with optional SR Algorithm for SRv6 Type J: IPv6 Prefix and Interface ID for link endpoints as Local, Remote pair for SRv6 Type K: IPv6 Addresses for link endpoints as Local, Remote pair for SRv6 Figure 1: SR Segment Types [I-D.ietf-idr-sr-policy-safi] specifies Segment Type Sub-TLVs for the segment types A and B. The following sub-sections specify the sub- TLVs used for encoding each of the other Segment Types above. Talaulikar, et al. Expires 7 May 2025 [Page 3] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 As specified in sections 2.4.4 and 2.4.4.2 of [I-D.ietf-idr-sr-policy-safi], validation of an explicit path encoded by the Segment List sub-TLV is beyond the scope of BGP and performed by the Segment Routing Policy Module (SRPM) as described in section 5 of [RFC9256]. As specified in section 5.1 of [RFC9256], a mix of SR- MPLS and SRv6 segments make the segment-list invalid. 2.1. Segment Type C The Type C Segment Sub-TLV encodes an IPv4 node address, SR Algorithm, and an optional SR-MPLS SID. The format is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | SR Algorithm | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 Node Address (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SR-MPLS SID (optional, 4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 2: Type C Segment sub-TLV where: * Type: 3. * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 10 when the SR-MPLS SID is present, else it MUST be 6. * Flags: 1 octet of flags as defined in Section 2.10. * SR Algorithm: 1 octet specifying SR Algorithm as described in section 3.1.1 in [RFC8402] when A-Flag as defined in Section 2.10 is present. SR Algorithm is used by SRPM [I-D.ietf-idr-sr-policy-safi] as described in section 4 in [RFC9256]. When A-Flag is not encoded, this field MUST be set to zero on transmission and MUST be ignored on receipt. * IPv4 Node Address: a 4-octet IPv4 address representing a node. * SR-MPLS SID: optional, 4-octet field containing label, TC, S and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. Talaulikar, et al. Expires 7 May 2025 [Page 4] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 2.2. Segment Type D The Type D Segment Sub-TLV encodes an IPv6 node address, SR Algorithm, and an optional SR-MPLS SID. The format is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | SR Algorithm | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // IPv6 Node Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SR-MPLS SID (optional, 4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 3: Type D Segment sub-TLV where: * Type: 4 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 22 when the SR-MPLS SID is present, else it MUST be 18. * Flags: 1 octet of flags as defined in Section 2.10. * SR Algorithm: 1 octet specifying SR Algorithm as described in section 3.1.1 in [RFC8402] when A-Flag as defined in Section 2.10 is present. SR Algorithm is used by SRPM [I-D.ietf-idr-sr-policy-safi] as described in section 4 in [RFC9256]. When A-Flag is not encoded, this field MUST be set to zero on transmission and MUST be ignored on receipt. * IPv6 Node Address: a 16-octet IPv6 address representing a node. * SR-MPLS SID: optional, 4-octet field containing label, TC, S and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. 2.3. Segment Type E The Type E Segment Sub-TLV encodes an IPv4 node address, a local interface Identifier (Local Interface ID), and an optional SR-MPLS SID. The format is as follows: Talaulikar, et al. Expires 7 May 2025 [Page 5] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Local Interface ID (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 Node Address (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SR-MPLS SID (optional, 4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 4: Type E Segment sub-TLV where: * Type: 5. * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 14 when the SR-MPLS SID is present, else it MUST be 10. * Flags: 1 octet of flags as defined in Section 2.10. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * Local Interface ID: 4 octets of interface index of local interface (refer TLV 258 of [RFC9552]). * IPv4 Node Address: a 4-octet IPv4 address representing a node. * SR-MPLS SID: optional, 4-octet field containing label, TC, S and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. 2.4. Segment Type F The Type F Segment Sub-TLV encodes an adjacency local address, an adjacency remote address, and an optional SR-MPLS SID. The format is as follows: Talaulikar, et al. Expires 7 May 2025 [Page 6] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Local IPv4 Address (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Remote IPv4 Address (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SR-MPLS SID (optional, 4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 5: Type F Segment sub-TLV where: * Type: 6. * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 14 when the SR-MPLS SID is present, else it MUST be 10. * Flags: 1 octet of flags as defined in Section 2.10. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * Local IPv4 Address: a 4-octet IPv4 address representing the local link address of the node. * Remote IPv4 Address: a 4-octet IPv4 address representing the link address of the neighbor node. * SR-MPLS SID: optional, 4-octet field containing label, TC, S and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. 2.5. Segment Type G The Type G Segment Sub-TLV encodes an IPv6 link-local adjacency with IPv6 local node address, a local interface identifier (Local Interface ID), IPv6 remote node address, a remote interface identifier (Remote Interface ID), and an optional SR-MPLS SID. The format is as follows: Talaulikar, et al. Expires 7 May 2025 [Page 7] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Local Interface ID (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // IPv6 Local Node Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Remote Interface ID (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // IPv6 Remote Node Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SR-MPLS SID (optional, 4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 6: Type G Segment sub-TLV where: * Type: 7 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 46 when the SR-MPLS SID is present, else it MUST be 42. * Flags: 1 octet of flags as defined in Section 2.10. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * Local Interface ID: 4 octets of interface index of local interface (refer TLV 258 of [RFC9552]). * IPv6 Local Node Address: a 16-octet IPv6 address representing the node. * Remote Interface ID: 4 octets of interface index of remote interface (refer TLV 258 of [RFC9552]). The value MAY be set to zero when the local node address and interface identifiers are sufficient to describe the link. * IPv6 Remote Node Address: a 16-octet IPv6 address. The value MAY be set to zero when the local node address and interface identifiers are sufficient to describe the link. * SR-MPLS SID: optional, 4-octet field containing label, TC, S and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. Talaulikar, et al. Expires 7 May 2025 [Page 8] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 2.6. Segment Type H The Type H Segment Sub-TLV encodes an adjacency local address, an adjacency remote address, and an optional SR-MPLS SID. The format is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Local IPv6 Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Remote IPv6 Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SR-MPLS SID (optional, 4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 7: Type H Segment sub-TLV where: * Type: 8 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 38 when the SR-MPLS SID is present, else it MUST be 34. * Flags: 1 octet of flags as defined in Section 2.10. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * Local IPv6 Address: a 16-octet IPv6 address representing the local link address of the node. * Remote IPv6 Address: a 16-octet IPv6 address representing the link address of the neighbor node. * SR-MPLS SID: optional, 4-octet field containing label, TC, S and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. 2.7. Segment Type I The Type I Segment Sub-TLV encodes an IPv6 node address, SR Algorithm, and an optional SRv6 SID. The format is as follows: Talaulikar, et al. Expires 7 May 2025 [Page 9] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | SR Algorithm | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // IPv6 Node Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 SID (optional, 16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 Endpoint Behavior and SID Structure // // (optional, 8 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 8: Type I Segment sub-TLV where: * Type: 14 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be one of: 42 when both SRv6 SID and SRv6 Endpoint Behavior & SID Structure are present, 34 when only SRv6 SID is present, or 18 when the SRv6 SID is not present. * Flags: 1 octet of flags as defined in Section 2.10. * SR Algorithm: 1 octet specifying SR Algorithm as described in section 3.1.1 in [RFC8402] when A-Flag as defined in Section 2.10 is present. SR Algorithm is used by SRPM [I-D.ietf-idr-sr-policy-safi] as described in section 4 in [RFC9256]. When A-Flag is not encoded, this field MUST be set to zero on transmission and MUST be ignored on receipt. * IPv6 Node Address: a 16-octet IPv6 address representing the node. * SRv6 SID: optional, a 16-octet IPv6 address. The value 0 MAY be used when the controller wants to indicate the desired SRv6 Endpoint Behavior or SID Structure without specifying the SID. * SRv6 Endpoint Behavior and SID Structure: Optional, as defined in section 2.4.4.2.4 of [I-D.ietf-idr-sr-policy-safi]. The SRv6 Endpoint Behavior and SID Structure MUST NOT be included when the SRv6 SID has not been included. The TLV 10 defined for the advertisement of Segment Type I in the early draft versions of [I-D.ietf-idr-sr-policy-safi] has been deprecated to avoid backward compatibility issues. Talaulikar, et al. Expires 7 May 2025 [Page 10] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 2.8. Segment Type J The Type J Segment Sub-TLV encodes an IPv6 link-local adjacency with local node address, a local interface identifier (Local Interface ID), remote IPv6 node address, a remote interface identifier (Remote Interface ID), and an optional SRv6 SID. The format is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | SR Algorithm | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Local Interface ID (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // IPv6 Local Node Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Remote Interface ID (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // IPv6 Remote Node Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 SID (optional, 16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 Endpoint Behavior and SID Structure // // (optional, 8 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 9: Type J Segment sub-TLV where: * Type: 15 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be one of: 66 when both SRv6 SID and SRv6 Endpoint Behavior & SID Structure are present, 58 when only SRv6 SID is present, or 42 when the SRv6 SID is not present. * Flags: 1 octet of flags as defined in Section 2.10. * SR Algorithm: 1 octet specifying SR Algorithm as described in section 3.1.1 in [RFC8402] when A-Flag as defined in Section 2.10 is present. SR Algorithm is used by SRPM [I-D.ietf-idr-sr-policy-safi] as described in section 4 in [RFC9256]. When A-Flag is not encoded, this field MUST be set to zero on transmission and MUST be ignored on receipt. Talaulikar, et al. Expires 7 May 2025 [Page 11] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 * Local Interface ID: 4 octets of interface index of local interface (refer TLV 258 of [RFC9552]). * IPv6 Local Node Address: a 16-octet IPv6 address representing the node. * Remote Interface ID: 4 octets of interface index of remote interface (refer TLV 258 of [RFC9552]). The value MAY be set to zero when the local node address and interface identifiers are sufficient to describe the link. * IPv6 Remote Node Address: a 16-octet IPv6 address. The value MAY be set to zero when the local node address and interface identifiers are sufficient to describe the link. * SRv6 SID: optional, a 16-octet IPv6 address. The value 0 MAY be used when the controller wants to indicate the desired SRv6 Endpoint Behavior or SID Structure without specifying the SID. * SRv6 Endpoint Behavior and SID Structure: Optional, as defined in section 2.4.4.2.4 of [I-D.ietf-idr-sr-policy-safi]. The SRv6 Endpoint Behavior and SID Structure MUST NOT be included when the SRv6 SID has not been included. The TLV 11 defined for the advertisement of Segment Type J in the early draft versions of [I-D.ietf-idr-sr-policy-safi] has been deprecated to avoid backward compatibility issues. 2.9. Segment Type K The Type K Segment Sub-TLV encodes an adjacency local address, an adjacency remote address, and an optional SRv6 SID. The format is as follows: Talaulikar, et al. Expires 7 May 2025 [Page 12] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | SR Algorithm | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Local IPv6 Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Remote IPv6 Address (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 SID (optional, 16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 Endpoint Behavior and SID Structure // // (optional, 8 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 10: Type K Segment sub-TLV where: * Type: 16 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be one of: 58 when both SRv6 SID and SRv6 Endpoint Behavior & SID Structure are present, 50 when only SRv6 SID is present, or 34 when the SRv6 SID is not present. * Flags: 1 octet of flags as defined in Section 2.10. * SR Algorithm: 1 octet specifying SR Algorithm as described in section 3.1.1 in [RFC8402] when A-Flag as defined in Section 2.10 is present. SR Algorithm is used by SRPM [I-D.ietf-idr-sr-policy-safi] as described in section 4 in [RFC9256]. When A-Flag is not encoded, this field MUST be set to zero on transmission and MUST be ignored on receipt. * Local IPv6 Address: a 16-octet IPv6 address representing the local link address of the node. * Remote IPv6 Address: a 16-octet IPv6 address representing the link address of the neighbor node. * SRv6 SID: optional, a 16-octet IPv6 address. The value 0 MAY be used when the controller wants to indicate the desired SRv6 Endpoint Behavior or SID Structure without specifying the SID. Talaulikar, et al. Expires 7 May 2025 [Page 13] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 * SRv6 Endpoint Behavior and SID Structure: Optional, as defined in section 2.4.4.2.4 of [I-D.ietf-idr-sr-policy-safi]. The SRv6 Endpoint Behavior and SID Structure MUST NOT be included when the SRv6 SID has not been included. The TLV 12 defined for the advertisement of Segment Type K in the early draft versions of [I-D.ietf-idr-sr-policy-safi] has been deprecated to avoid backward compatibility issues. 2.10. SR Policy Segment Flags The Segment Types sub-TLVs described above may contain the following SR Policy Segment Flags [I-D.ietf-idr-sr-policy-safi] in their "Flags" field. Also refer to Section 3.2. This document introduces additional flags as below: 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |V|A|S|B| | +-+-+-+-+-+-+-+-+ Figure 11: SR Policy Segment Flags where: V-Flag: existing flag as defined in [I-D.ietf-idr-sr-policy-safi]. A-Flag: This flag, when set, indicates the presence of SR Algorithm id in the "SR Algorithm" field applicable to various Segment Types. SR Algorithm is used by SRPM [I-D.ietf-idr-sr-policy-safi] as described in section 4 of [RFC9256]. S-Flag: This flag, when set, indicates the presence of the SR-MPLS or SRv6 SID depending on the segment type. B-Flag: existing flag as defined in [I-D.ietf-idr-sr-policy-safi]. The following applies to the Segment Flags: * V-Flag applies to all Segment Types including the ones introduced by this document. * A-Flag applies to Segment Types C, D, I, J, and K. If A-Flag appears with Segment Types A, B, E, F, G, and H, it MUST be ignored. Talaulikar, et al. Expires 7 May 2025 [Page 14] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 * S-Flag applies to Segment Types C, D, E, F, G, H, I, J, and K. If S-Flag appears with Segment Types A or B, it MUST be ignored. * B-Flag applies to Segment Types B, I, J, and K. If B-Flag appears with Segment Types A, C, D, E, F, G, and H, it MUST be ignored. 3. IANA Considerations This section covers the IANA considerations for this document. 3.1. SR Policy Segment List Sub-TLVs This document requests the allocation of the following code points from the "SR Policy Segment List Sub-TLVs" registry under the "BGP Tunnel Encapsulation" registry group. Value Description Reference ----------------------------------------------------- 3 Segment Type C sub-TLV This document 4 Segment Type D sub-TLV This document 5 Segment Type E sub-TLV This document 6 Segment Type F sub-TLV This document 7 Segment Type G sub-TLV This document 8 Segment Type H sub-TLV This document 14 Segment Type I sub-TLV This document 15 Segment Type J sub-TLV This document 16 Segment Type K sub-TLV This document Table 1: SR Policy Segment List Code Points 3.2. SR Policy Segment Flags This document requests the allocation of code points from the "SR Policy Segment Flags" registry under the "BGP Tunnel Encapsulation" registry group. Bit Description Reference ------------------------------------------------------------------ 1 SR Algorithm Flag (A-Flag) This document 2 SID Specified Flag (S-Flag) This document Table 2: SR Policy Segment Flags 4. Security Considerations The security considerations in [I-D.ietf-idr-sr-policy-safi] apply to the segment types defined in this document. No additional security considerations are introduced in this document. Talaulikar, et al. Expires 7 May 2025 [Page 15] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 5. Manageability Considerations The operations and manageability considerations in [I-D.ietf-idr-sr-policy-safi] apply to the segment types defined in this document. No additional operations and manageability considerations are introduced in this document. 6. Acknowledgments The authors of this document would like to Dan Romascanu, Stig Venaas, and Russ Housley for their comments and review of this document. The authors would like to thank Susan Hares for her detailed shepherd review that helped in improving the document. 7. References 7.1. Normative References [I-D.ietf-idr-sr-policy-safi] Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., and D. Jain, "Advertising Segment Routing Policies in BGP", Work in Progress, Internet-Draft, draft-ietf-idr-sr- policy-safi-09, 3 October 2024, <https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr- policy-safi-09>. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>. [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018, <https://www.rfc-editor.org/info/rfc8402>. [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing with the MPLS Data Plane", RFC 8660, DOI 10.17487/RFC8660, December 2019, <https://www.rfc-editor.org/info/rfc8660>. Talaulikar, et al. Expires 7 May 2025 [Page 16] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, <https://www.rfc-editor.org/info/rfc8754>. [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 (SRv6) Network Programming", RFC 8986, DOI 10.17487/RFC8986, February 2021, <https://www.rfc-editor.org/info/rfc8986>. [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, A., and P. Mattes, "Segment Routing Policy Architecture", RFC 9256, DOI 10.17487/RFC9256, July 2022, <https://www.rfc-editor.org/info/rfc9256>. [RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and Traffic Engineering Information Using BGP", RFC 9552, DOI 10.17487/RFC9552, December 2023, <https://www.rfc-editor.org/info/rfc9552>. 7.2. Informational References Authors' Addresses Ketan Talaulikar (editor) Cisco Systems India Email: ketant.ietf@xxxxxxxxx Clarence Filsfils Cisco Systems Brussels Belgium Email: cfilsfil@xxxxxxxxx Stefano Previdi Huawei Technologies Italy Email: stefano@xxxxxxxxxxx Talaulikar, et al. Expires 7 May 2025 [Page 17] Internet-Draft SR Segment Type Ext for BGP SR Policy November 2024 Paul Mattes Microsoft One Microsoft Way Redmond, WA 98052 United States of America Email: pamattes@xxxxxxxxxxxxx Dhanendra Jain Google Email: dhanendra.ietf@xxxxxxxxx Talaulikar, et al. Expires 7 May 2025 [Page 18]
<<< text/html; charset="US-ASCII"; name="draft-ietf-idr-sr-policy-safi-10.diff.html": Unrecognized >>>
Network Working Group S. Previdi Internet-Draft Huawei Technologies Updates: 9012 (if approved) C. Filsfils Intended status: Standards Track K. Talaulikar, Ed. Expires: 7 May 2025 Cisco Systems P. Mattes Microsoft D. Jain Google 3 November 2024 Advertising Segment Routing Policies in BGP draft-ietf-idr-sr-policy-safi-10 Abstract A Segment Routing (SR) Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. An SR Policy consists of one or more candidate paths, each consisting of one or more segment lists. A headend may be provisioned with candidate paths for an SR Policy via several different mechanisms, e.g., CLI, NETCONF, PCEP, or BGP. This document specifies how BGP may be used to distribute SR Policy candidate paths. It introduces a BGP SAFI to advertise a candidate path of a Segment Routing (SR) Policy and defines sub-TLVs for the Tunnel Encapsulation Attribute for signaling information about these candidate paths. This documents updates RFC9012 with extensions to the Color Extended Community to support additional steering modes over SR Policy. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." Previdi, et al. Expires 7 May 2025 [Page 1] Internet-Draft Segment Routing Policies in BGP November 2024 This Internet-Draft will expire on 7 May 2025. Copyright Notice Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 6 2. SR Policy Encoding . . . . . . . . . . . . . . . . . . . . . 6 2.1. SR Policy SAFI and NLRI . . . . . . . . . . . . . . . . . 6 2.2. SR Policy and Tunnel Encapsulation Attribute . . . . . . 8 2.3. Applicability of Tunnel Encapsulation Attribute Sub-TLVs . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4. SR Policy Sub-TLVs . . . . . . . . . . . . . . . . . . . 10 2.4.1. Preference Sub-TLV . . . . . . . . . . . . . . . . . 11 2.4.2. Binding SID Sub-TLV . . . . . . . . . . . . . . . . . 11 2.4.3. SRv6 Binding SID Sub-TLV . . . . . . . . . . . . . . 13 2.4.4. Segment List Sub-TLV . . . . . . . . . . . . . . . . 15 2.4.5. Explicit NULL Label Policy Sub-TLV . . . . . . . . . 21 2.4.6. Policy Priority Sub-TLV . . . . . . . . . . . . . . . 23 2.4.7. Policy Candidate Path Name Sub-TLV . . . . . . . . . 23 2.4.8. Policy Name Sub-TLV . . . . . . . . . . . . . . . . . 24 3. Color Extended Community . . . . . . . . . . . . . . . . . . 26 4. SR Policy Operations . . . . . . . . . . . . . . . . . . . . 27 4.1. Advertisement of SR Policies . . . . . . . . . . . . . . 27 4.2. Reception of an SR Policy NLRI . . . . . . . . . . . . . 27 4.2.1. Validation of an SR Policy NLRI . . . . . . . . . . . 28 4.2.2. Eligibility for Local Use of an SR Policy NLRI . . . 28 4.2.3. Propagation of an SR Policy . . . . . . . . . . . . . 29 5. Error Handling and Fault Management . . . . . . . . . . . . . 29 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 6.1. Subsequent Address Family Identifiers (SAFI) Parameters . . . . . . . . . . . . . . . . . . . . . . . 31 6.2. BGP Tunnel Encapsulation Attribute Tunnel Types . . . . . 31 6.3. BGP Tunnel Encapsulation Attribute sub-TLVs . . . . . . . 32 6.4. Color Extended Community Flags . . . . . . . . . . . . . 32 Previdi, et al. Expires 7 May 2025 [Page 2] Internet-Draft Segment Routing Policies in BGP November 2024 6.5. SR Policy Segment List Sub-TLVs . . . . . . . . . . . . . 32 6.6. SR Policy Binding SID Flags . . . . . . . . . . . . . . . 33 6.7. SR Policy SRv6 Binding SID Flags . . . . . . . . . . . . 33 6.8. SR Policy Segment Flags . . . . . . . . . . . . . . . . . 34 6.9. Color Extended Community Color-Only Types . . . . . . . . 34 6.10. SR Policy ENLP Values . . . . . . . . . . . . . . . . . . 35 7. Security Considerations . . . . . . . . . . . . . . . . . . . 35 8. Manageability Considerations . . . . . . . . . . . . . . . . 36 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 36 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 37 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 38 11.1. Normative References . . . . . . . . . . . . . . . . . . 38 11.2. Informational References . . . . . . . . . . . . . . . . 39 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 1. Introduction Segment Routing (SR) [RFC8402] allows a headend node to steer a packet flow along a specific path. Intermediate per-path states are eliminated thanks to source routing. The headend node is said to steer a flow into an SR Policy [RFC8402]. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy. [RFC9256] further details the concepts of SR Policy and steering into an SR Policy. These apply equally to the SR-MPLS and Segment Routing for IPv6 (SRv6) data-plane instantiations of Segment Routing using SR-MPLS and SRv6 Segment Identifiers (SIDs) as described in [RFC8402]. [RFC8660] describes the representation and processing of this ordered list of segments as an MPLS label stack for SR-MPLS. While [RFC8754] and [RFC8986] describe the same for SRv6 with the use of the Segment Routing Header (SRH). The SR Policy related functionality described in [RFC9256] can be conceptually viewed as being incorporated in an SR Policy Module (SRPM). Following is a reminder of the high-level functionality of SRPM: * Learning multiple candidate paths (CP) for an SR Policy via various mechanisms (CLI, NETCONF, PCEP, or BGP). * Selection of the best candidate path for an SR Policy. * Associating a Binding SID (BSID) to the selected candidate path of an SR Policy. Previdi, et al. Expires 7 May 2025 [Page 3] Internet-Draft Segment Routing Policies in BGP November 2024 * Installation of the selected candidate path and its BSID in the forwarding plane. 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 policy. The document describes the functionality provided by BGP and, as appropriate, provides references for the functionality which is outside the scope of BGP (i.e. resides within SRPM on the headend node). This document specifies a way of representing SR Policy candidate paths in BGP UPDATE messages. BGP can then be used to propagate the SR Policy candidate paths to the headend nodes in a network. The usual BGP rules for BGP propagation and best-path selection are used. At the headend of a specific policy, this will result in one or more candidate paths being installed into the "BGP table". These paths are then passed to the SRPM. The SRPM may compare them to candidate paths learned via other mechanisms and will choose one or more paths to be installed in the data plane. BGP itself does not install SR Policy candidate paths into the data plane. This document introduces a BGP subsequent address family (SAFI) for IPv4 and IPv6 address families. In UPDATE messages of those AFI/ SAFIs, the NLRI identifies an SR Policy Candidate Path while the attributes encode the segment lists and other details of that SR Policy Candidate Path. While for simplicity we may write that BGP advertises an SR Policy, it has to be understood that BGP advertises a candidate path of an SR policy and that this SR Policy might have several other candidate paths provided via BGP (via an NLRI with a different distinguisher as defined in Section 2.1), PCEP, NETCONF, or local policy configuration. Typically, a SR Policy Controller [RFC9256] defines the set of policies and advertises them to policy headend routers (typically ingress routers). These policy advertisements use the BGP extensions defined in this document. The policy advertisement is, in most but not all cases, tailored for a specific policy headend; such an advertisement may be sent on a BGP session to that headend and not propagated any further. Alternatively, a router (i.e., a BGP egress router) advertises SR Policies representing paths to itself. In this case, it is possible to send the policy to each headend over a BGP session to that headend, without requiring any further propagation of the policy. Previdi, et al. Expires 7 May 2025 [Page 4] Internet-Draft Segment Routing Policies in BGP November 2024 An SR Policy intended only for the receiver will, in most cases, not traverse any Route Reflector (RR, [RFC4456]) (see Section 4.2.3). In some situations, it is undesirable for a controller or BGP egress router to have a BGP session to each policy headend. In these situations, BGP Route Reflectors may be used to propagate the advertisements. In certain other deployments, it may be necessary for the advertisement to propagate through a sequence of one or more ASes within an SR Domain (refer to Section 7 for the associated security considerations). To make this possible, an attribute needs to be attached to the advertisement that enables a BGP speaker to determine whether it is intended to be a headend for the advertised policy. This is done by attaching one or more Route Target Extended Communities to the advertisement [RFC4360]. The BGP extensions for the advertisement of SR Policies include following components: * A Subsequent Address Family Identifier (SAFI) whose NLRIs identifies an SR Policy candidate path. * A Tunnel Type identifier for SR Policy, and a set of sub-TLVs to be inserted into the Tunnel Encapsulation Attribute (as defined in [RFC9012]) specifying segment lists of the SR Policy candidate path, as well as other information about the SR Policy. * One or more IPv4 address-specific format route target extended community ([RFC4360]) attached to the SR Policy Candidate Path advertisement and that indicates the intended headend of such an SR Policy Candidate Path advertisement. The SR Policy SAFI route updates use the Tunnel Encapsulation Attribute to signal an SR Policy - which is a tunnel itself. Its usage of this attribute is hence very different from [RFC9012] where this attribute is associated with a BGP route update (e.g., for Internet or VPN routes) to specify the tunnel which is used for forwarding traffic for that route. This document does not update or change the usage of the Tunnel Encapsulation Attribute as specified in [RFC9012] for existing AFI/SAFIs as specified in that document. The details of processing of the Tunnel Encapsulation Attribute for the SR Policy SAFI are specified in Section 2.2 and Section 2.3. The northbound advertisement of the operational state of the SR Policy Candidate Paths as part of BGP-LS [RFC9552] topology information is specified in [I-D.ietf-idr-bgp-ls-sr-policy]. Previdi, et al. Expires 7 May 2025 [Page 5] Internet-Draft Segment Routing Policies in BGP November 2024 The signaling of Dynamic and Composite Candidate Paths (sections 5.2 and 5.3 respectively of [RFC9256]) is outside the scope of this document. The Color Extended Community (as defined in [RFC9012]) is used to steer traffic into an SR Policy, as described in section 8.8 of [RFC9256]. The Section 3 of this document updates [RFC9012] with modifications to the format of the Flags field of the Color Extended Community by using the two leftmost bits of that field. 1.1. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. 2. SR Policy Encoding 2.1. SR Policy SAFI and NLRI A SAFI is introduced in this document: the SR Policy SAFI with codepoint 73. The AFI used MUST be IPv4(1) or IPv6(2). The SR Policy SAFI uses the NLRI format defined as follows: +------------------+ | NLRI Length | 1 octet +------------------+ | Distinguisher | 4 octets +------------------+ | Policy Color | 4 octets +------------------+ | Endpoint | 4 or 16 octets +------------------+ Figure 1: SR Policy SAFI Format where: * NLRI Length: 1 octet indicating the length expressed in bits as defined in [RFC4760]. When AFI = 1 the value MUST be 96 and when AFI = 2 the value MUST be 192. * Distinguisher: 4-octet value uniquely identifying the policy in the context of <color, endpoint> tuple. The distinguisher has no semantic value and is solely used by the SR Policy originator to Previdi, et al. Expires 7 May 2025 [Page 6] Internet-Draft Segment Routing Policies in BGP November 2024 make unique (from an NLRI perspective) both for multiple candidate 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-octet value identifying (with the endpoint) the policy. The color is used to match the color of the destination prefixes to steer traffic into the SR Policy as specified in section 8 of [RFC9256]. * Endpoint: value identifies the endpoint of a policy. The 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 IPv6 (16-octet) address according to the AFI of the NLRI. The address can be either a unicast or an unspecified address (0.0.0.0 for IPv4, :: for IPv6), known as null endpoint, as specified in section 2.1 of [RFC9256]. The color and endpoint are used to automate the steering of BGP service routes on SR Policy as described in section 8 of [RFC9256]. The NLRI containing an SR Policy candidate path is carried in a BGP UPDATE message [RFC4271] using BGP multi-protocol extensions [RFC4760] with an AFI of 1 or 2 (IPv4 or IPv6) and with a SAFI of 73. The fault management and error handling in the encoding of the NLRI is specified in Section 5. An update message that carries the MP_REACH_NLRI or MP_UNREACH_NLRI attribute with the SR Policy SAFI MUST also carry the BGP mandatory attributes. In addition, the BGP update message MAY also contain any of the BGP optional attributes. 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, independent of the SR Policy AFI. The length field of 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 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- local IPv6 address. The setting of the next-hop field and its attendant processing is governed by standard BGP procedures as described in section 3 of [RFC4760] and section 3 of [RFC2545]. It is important to note that any BGP speaker receiving a BGP message with an SR Policy NLRI, the SRPM will process it only if the NLRI is among the best paths as per the BGP best-path selection algorithm. Previdi, et al. Expires 7 May 2025 [Page 7] Internet-Draft Segment Routing Policies in BGP November 2024 In other words, this document leverages the existing BGP propagation and best-path selection rules. Details of the procedures are described in Section 4. It has to be noted that if several candidate paths of the same SR Policy (endpoint, color) are signaled via BGP to a headend, then it is RECOMMENDED that each NLRI uses a different distinguisher. If BGP has installed into the BGP table two advertisements whose respective NLRIs have the same color and endpoint, but different distinguishers, both advertisements are passed to the SRPM as different candidate paths along with their respective originator information (i.e., ASN and BGP Router-ID) as described in section 2.4 of [RFC9256]. The ASN would be the ASN of the origin and the BGP Router-ID is determined in the following order: * From the Route Origin Community [RFC4360] if present and carrying an IP Address, or * As the BGP Originator ID [RFC4456] if present, or * As the BGP Router-ID of the peer from which the update was received as a last resort. The Section 2.9 of [RFC9256] specifies the selection of the active candidate path of the SR Policy by the SRPM based on the information provided to it by BGP. 2.2. SR Policy and Tunnel Encapsulation Attribute The content of the SR Policy Candidate Path is encoded in the Tunnel Encapsulation Attribute defined in [RFC9012] using a Tunnel-Type called SR Policy Type with codepoint 15. The use of SR Policy Tunnel-type is applicable only for the AFI/SAFI pairs of (1/73, 2/73). This document specifies the use of the Tunnel Encapsulation Attribute with the SR Policy Tunnel-Type and the use of any other Tunnel-Type with the SR Policy SAFI MUST be considered malformed and handled by the "Treat-as-Withdraw" strategy [RFC7606]. The SR Policy Encoding structure is as follows: Previdi, et al. Expires 7 May 2025 [Page 8] Internet-Draft Segment Routing Policies in BGP November 2024 SR Policy SAFI NLRI: <Distinguisher, Policy-Color, Endpoint> Attributes: Tunnel Encapsulation Attribute (23) Tunnel Type: SR Policy (15) Binding SID SRv6 Binding SID Preference Priority Policy Name Policy Candidate Path Name Explicit NULL Label Policy (ENLP) Segment List Weight Segment Segment ... ... Figure 2: SR Policy Encoding where: * SR Policy SAFI NLRI is defined in Section 2.1. * Tunnel Encapsulation Attribute is defined in [RFC9012]. * Tunnel-Type is set to 15. * Preference, Binding SID, SRv6 Binding SID, Priority, Policy Name, Policy Candidate Path Name, ENLP, Segment-List, Weight, and Segment sub-TLVs are defined in Section 2.4. * Additional sub-TLVs may be defined in the future. A Tunnel Encapsulation Attribute MUST NOT contain more than one TLV of type "SR Policy"; such updates MUST be considered malformed and handled by the "Treat-as-Withdraw" strategy [RFC7606]. BGP does not need to perform the validation of the tunnel (i.e., SR Policy) itself as indicated in section 6 of [RFC9012]. The validation of the SR Policy information that is advertised using the sub-TLVs specified in Section 2.4 is performed by the SRPM. Previdi, et al. Expires 7 May 2025 [Page 9] Internet-Draft Segment Routing Policies in BGP November 2024 2.3. Applicability of Tunnel Encapsulation Attribute Sub-TLVs The Tunnel Egress Endpoint and Color Sub-TLVs of the Tunnel Encapsulation Attribute [RFC9012] are not used for SR Policy encodings and therefore their value is irrelevant in the context of the SR Policy SAFI NLRI. If present, the Tunnel Egress Endpoint sub- TLV and the Color sub-TLV MUST be ignored by the BGP speaker and MAY be removed from the Tunnel Encapsulation Attribute during propagation. Similarly, any other sub-TLVs (including those defined in [RFC9012]) whose applicability is not specifically defined for the SR Policy SAFI MUST be ignored by the BGP speaker and MAY be removed from the Tunnel Encapsulation Attribute during propagation. 2.4. SR Policy Sub-TLVs This section specifies the sub-TLVs defined for encoding the information about the SR Policy Candidate Path. Preference, Binding SID, SRv6 Binding SID, Segment-List, Priority, Policy Name, Policy Candidate Path Name, and Explicit NULL Label Policy are all optional sub-TLVs introduced for the BGP Tunnel Encapsulation Attribute [RFC9012] being defined in this section. Weight and Segment are sub-TLVs of the Segment-List sub-TLV mentioned above. An early version of this document included only the Binding SID sub- TLV that could be used for both SR-MPLS and SRv6 Binding SIDs. The SRv6 Binding SID TLV was introduced in later versions to support the advertisement of additional SRv6 capabilities without affecting backward compatibility for early implementations. 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/sub-TLVs that are specified as single instance, only the first instance of that TLV/sub-TLV is used and the other instances MUST be ignored and MUST NOT considered to be malformed. None of the sub-TLVs defined in the following sub-sections have any effect on the BGP best-path selection or propagation procedures. 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 further processing described in section 2 of [RFC9256]. Previdi, et al. Expires 7 May 2025 [Page 10] Internet-Draft Segment Routing Policies in BGP November 2024 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 applicability to other AFI/SAFI. 2.4.1. Preference Sub-TLV 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 SRPM as described in section 2.7 of [RFC9256]. The Preference sub-TLV is OPTIONAL and it MUST NOT appear more than once in the SR Policy encoding. The Preference sub-TLV has following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Preference (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 3: Preference sub-TLV where: * Type: 12 * 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. * 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 ignored on receipt. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * Preference: a 4-octet value indicating the Preference of the SR Policy Candidate Path as described in section 2.7 of [RFC9256]. 2.4.2. Binding SID Sub-TLV The Binding SID sub-TLV is used to signal the binding SID related information of the SR Policy candidate path. The contents of this sub-TLV are used by the SRPM as described in section 6 in [RFC9256]. Previdi, et al. Expires 7 May 2025 [Page 11] Internet-Draft Segment Routing Policies in BGP November 2024 The Binding SID sub-TLV is OPTIONAL and it MUST NOT appear more than once in the SR Policy encoding. When the Binding SID sub-TLV is used to signal an SRv6 SID, the choice of its SRv6 Endpoint Behavior [RFC8986] to be instantiated is left to the headend node. It is RECOMMENDED that the SRv6 Binding SID sub-TLV defined in Section 2.4.3, that enables the specification of the SRv6 Endpoint Behavior, be used for signaling of an SRv6 Binding SID for an SR Policy candidate path. The Binding SID sub-TLV has the following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Binding SID (variable, optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 4: Binding SID sub-TLV where: * Type: 13 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be one of: 18 when a SRv6 BSID is present, 6 when a SR-MPLS BSID is present, or 2 when no BSID is present. * Flags: 1 octet of flags. The following flags are defined in the registry "SR Policy Binding SID Flags" as described in Section 6.6: 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |S|I| | +-+-+-+-+-+-+-+-+ Figure 5: Binding SID Flags where: - S-Flag: This flag encodes the "Specified-BSID-only" behavior. It is used by SRPM as described in section 6.2.3 in [RFC9256]. Previdi, et al. Expires 7 May 2025 [Page 12] Internet-Draft Segment Routing Policies in BGP November 2024 - I-Flag: This flag encodes the "Drop Upon Invalid" behavior. It is used by SRPM as described in section 8.2 in [RFC9256] to define a specific SR Policy forwarding behavior. The flag indicates that the SR Policy is to perform the "drop upon invalid" behavior when no valid candidate path (CP) is available for this SR Policy. In this situation, the CP with the highest preference amongst those with the "drop upon invalid" config is made active to drop traffic steered over the SR Policy. - The unassigned bits in the Flag octet MUST be set to zero upon transmission and MUST be ignored upon receipt. * RESERVED: 1 octet of reserved bits. MUST be set to zero on transmission and MUST be ignored on receipt. * Binding SID: If the length is 2, then no Binding SID is present. If the length is 6 then the Binding SID is encoded in 4 octets using the format below. Traffic Class (TC), S, and TTL (Total of 12 bits) are RESERVED and MUST be set to zero and MUST be ignored. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label | TC |S| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 6: Binding SID Label Encoding 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 Binding SID contains a 16-octet SRv6 SID. 2.4.3. SRv6 Binding SID Sub-TLV The SRv6 Binding SID sub-TLV is used to signal the SRv6 Binding SID related information of an SR Policy candidate path. It enables the specification of the SRv6 Endpoint Behavior [RFC8986] to be instantiated on the headend node. The contents of this sub-TLV are used by the SRPM as described in section 6 in [RFC9256]. The SRv6 Binding SID sub-TLV is OPTIONAL. More than one SRv6 Binding SID sub-TLVs MAY be signaled in the same SR Policy encoding to indicate one or more SRv6 SIDs, each with potentially different SRv6 Endpoint Behaviors to be instantiated. The SRv6 Binding SID sub-TLV has the following format: Previdi, et al. Expires 7 May 2025 [Page 13] Internet-Draft Segment Routing Policies in BGP November 2024 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SRv6 Binding SID (16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 Endpoint Behavior and SID Structure (optional) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 7: SRv6 Binding SID sub-TLV where: * Type: 20 * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 26 when the SRv6 Endpoint Behavior and SID Structure is present else it MUST be 18. * Flags: 1 octet of flags. The following flags are defined in the registry "SR Policy Binding SID Flags" as described in Section 6.7: 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |S|I|B| | +-+-+-+-+-+-+-+-+ Figure 8: SRv6 Binding SID Flags where: - S-Flag: This flag encodes the "Specified-BSID-only" behavior. It is used by SRPM as described in section 6.2.3 in [RFC9256]. - I-Flag: This flag encodes the "Drop Upon Invalid" behavior. It is used by SRPM as described in section 8.2 in [RFC9256]. - B-Flag: This flag, when set, indicates the presence of the SRv6 Endpoint Behavior and SID Structure encoding specified in Section 2.4.4.2.4. - The unassigned bits in the Flag octet MUST be set to zero upon transmission and MUST be ignored upon receipt. Previdi, et al. Expires 7 May 2025 [Page 14] Internet-Draft Segment Routing Policies in BGP November 2024 * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * SRv6 Binding SID: Contains a 16-octet SRv6 SID. The value 0 MAY be used when the controller wants to indicate the desired SRv6 Endpoint Behavior, SID Structure, or flags without specifying the BSID. * SRv6 Endpoint Behavior and SID Structure: Optional, as defined in 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. 2.4.4. Segment List Sub-TLV The Segment List sub-TLV encodes a single explicit path towards the 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 as an optional Weight sub-TLV. 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. 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 code point of 128 or higher is used. 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 not matter since each sub-TLV encodes a Segment List. The Segment List sub-TLV contains zero or more Segment sub-TLVs and MAY contain a Weight sub-TLV. The Segment List sub-TLV has the following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // sub-TLVs // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 9: Segment List sub-TLV where: * Type: 128. Previdi, et al. Expires 7 May 2025 [Page 15] Internet-Draft Segment Routing Policies in BGP November 2024 * Length: the total length (not including the Type and Length fields) of the sub-TLVs encoded within the Segment List sub-TLV in terms of octets. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * sub-TLVs currently defined: - An optional single Weight sub-TLV. - Zero or more Segment sub-TLVs. Validation of an explicit path encoded by the Segment List sub-TLV is beyond the scope of BGP and performed by the SRPM as described in section 5 of [RFC9256]. 2.4.4.1. Weight Sub-TLV The Weight sub-TLV specifies the weight associated with a given segment list. The contents of this sub-TLV are used only by the SRPM as described in section 2.11 of [RFC9256]. The Weight sub-TLV is OPTIONAL and it MUST NOT appear more than once inside the Segment List sub-TLV. The Weight sub-TLV has the following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Weight | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 10: Weight sub-TLV where: * Type: 9. * 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. Previdi, et al. Expires 7 May 2025 [Page 16] Internet-Draft Segment Routing Policies in BGP November 2024 * 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 ignored on receipt. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * Weight: 4 octets an unsigned integer value indicating the weight associated with a segment list as described in section 2.11 of [RFC9256]. A weight value of zero is invalid. 2.4.4.2. Segment Sub-TLVs 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 constitute an explicit path of the SR Policy candidate path. The contents of these sub-TLVs are used only by the SRPM as described in section 4 in [RFC9256]. The Segment sub-TLVs are OPTIONAL and MAY appear multiple times in the Segment List sub-TLV. Section 4 of [RFC9256] defines several Segment Types: Type A: SR-MPLS Label Type B: SRv6 SID Type C: IPv4 Prefix with optional SR Algorithm Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS Type E: IPv4 Prefix with Local Interface ID Type F: IPv4 Addresses for link endpoints as Local, Remote pair Type G: IPv6 Prefix and Interface ID for link endpoints as Local, Remote pair for SR-MPLS Type H: IPv6 Addresses for link endpoints as Local, Remote pair for SR-MPLS Type I: IPv6 Global Prefix with optional SR Algorithm for SRv6 Type J: IPv6 Prefix and Interface ID for link endpoints as Local, Remote pair for SRv6 Type K: IPv6 Addresses for link endpoints as Local, Remote pair for SRv6 The following sub-sections specify the sub-TLVs used for Segment Types A and B. The other segment types are specified in [I-D.ietf-idr-bgp-sr-segtypes-ext]. As specified in section 5.1 of [RFC9256], a mix of SR-MPLS and SRv6 segments make the segment-list invalid. Previdi, et al. Expires 7 May 2025 [Page 17] Internet-Draft Segment Routing Policies in BGP November 2024 2.4.4.2.1. Segment Type A The Type A Segment Sub-TLV encodes a single SR-MPLS SID. The format is as follows and is used to encode MPLS Label fields as specified in [RFC3032] [RFC5462].: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label | TC |S| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 11: Type A Segment sub-TLV where: * Type: 1. * 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. * Flags: 1 octet of flags as defined in Section 2.4.4.2.3. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * Label: 20 bits of label value. * TC: 3 bits of traffic class. * S: 1 bit of bottom-of-stack. * TTL: 1 octet of TTL. The following applies to the Type-1 Segment sub-TLV: * The S bit MUST be zero upon transmission and MUST be ignored upon reception. * If the originator wants the receiver to choose the TC value, it sets the TC field to zero. * If the originator wants the receiver to choose the TTL value, it sets the TTL field to 255. Previdi, et al. Expires 7 May 2025 [Page 18] Internet-Draft Segment Routing Policies in BGP November 2024 * If the originator wants to recommend a value for these fields, it puts those values in the TC and/or TTL fields. * The receiver MAY override the originator's values for these fields. This would be determined by local policy at the receiver. One possible policy would be to override the fields only if the fields have the default values specified above. 2.4.4.2.2. Segment Type B The Type B Segment Sub-TLV encodes a single SRv6 SID. The format is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 SID (16 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // SRv6 Endpoint Behavior and SID Structure // // (optional, 8 octets) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 12: Type B Segment sub-TLV where: * Type: 13. * Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value MUST be 26 when the SRv6 Endpoint Behavior and SID Structure is present else it MUST be 18. * Flags: 1 octet of flags as defined in Section 2.4.4.2.3. * RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. * SRv6 SID: 16 octets of IPv6 address. * SRv6 Endpoint Behavior and SID Structure: Optional, as defined in 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. Previdi, et al. Expires 7 May 2025 [Page 19] Internet-Draft Segment Routing Policies in BGP November 2024 The Sub-TLV code point 2 defined for the advertisement of Segment Type B in the earlier versions of this document has been deprecated to avoid backward compatibility issues. 2.4.4.2.3. SR Policy Segment Flags The Segment Types sub-TLVs described above may contain the following SR Policy Segment Flags in their "Flags" field. Also refer to Section 6.8: 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |V| |B| | +-+-+-+-+-+-+-+-+ Figure 22: SR Policy Segment Flags where: V-Flag: This flag, when set, is used by SRPM for "SID verification" as described in Section 5.1 of [RFC9256]. B-Flag: This flag, when set, indicates the presence of the SRv6 Endpoint Behavior and SID Structure encoding specified in Section 2.4.4.2.4. The unassigned bits in the Flag octet MUST be set to zero upon transmission and MUST be ignored upon receipt. The following applies to the Segment Flags: * V-Flag applies to all Segment Types. * B-Flag applies to Segment Type B. If B-Flag appears with Segment Type A it MUST be ignored. 2.4.4.2.4. SRv6 SID Endpoint Behavior and Structure The Segment Types sub-TLVs described above MAY contain the SRv6 Endpoint Behavior and SID Structure [RFC8986] encoding as described below: Previdi, et al. Expires 7 May 2025 [Page 20] Internet-Draft Segment Routing Policies in BGP November 2024 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Endpoint Behavior | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LB Length | LN Length | Fun. Length | Arg. Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 23: SRv6 SID Endpoint Behavior and Structure where: Endpoint Behavior: 2 octets. It carries the SRv6 Endpoint Behavior code point for this SRv6 SID as defined in section 10.2 of [RFC8986]. When set with the value 0xFFFF (i.e., Opaque), the choice of SRv6 Endpoint Behavior is left to the headend. Reserved: 2 octets of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. Locator Block Length: 1 octet. SRv6 SID Locator Block length in bits. Locator Node Length: 1 octet. SRv6 SID Locator Node length in bits. Function Length: 1 octet. SRv6 SID Function length in bits. Argument Length: 1 octet. SRv6 SID Arguments length in bits. The total of the locator block, locator node, function, and argument lengths MUST be less than or equal to 128. 2.4.5. Explicit NULL Label Policy Sub-TLV To steer an unlabeled IP packet into an SR policy, it is necessary to push a label stack of one or more labels on that packet. The Explicit NULL Label Policy (ENLP) sub-TLV is used to indicate whether an Explicit NULL Label [RFC3032] must be pushed on an unlabeled IP packet before any other labels. 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 configuration. The ENLP sub-TLV is OPTIONAL and it MUST NOT appear more than once in the SR Policy encoding. Previdi, et al. Expires 7 May 2025 [Page 21] Internet-Draft Segment Routing Policies in BGP November 2024 The contents of this sub-TLV are used by the SRPM as described in section 4.1 of [RFC9256]. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ENLP | +-+-+-+-+-+-+-+-+ Figure 24: ELNP sub-TLV Where: Type: 14. 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. 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 ignored on receipt. RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. ENLP (Explicit NULL Label Policy): Indicates whether Explicit NULL labels are to be pushed on unlabeled IP packets that are being steered into a given SR policy. The following values have been currently defined for this field: - 1: Push an IPv4 Explicit NULL label on an unlabeled IPv4 packet, but do not 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 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 packet. - 4: Do not push an Explicit NULL label. Previdi, et al. Expires 7 May 2025 [Page 22] Internet-Draft Segment Routing Policies in BGP November 2024 This field can have one of the values as specified in Section 6.10. The ENLP unassigned values may be used for future extensions. Implementations adhering to this document SHOULD ignore the ENLP Sub-TLV with unrecognized values (viz. other than 1 through 4). The behavior signaled in this Sub-TLV MAY be overridden by local configuration. The section 4.1 of [RFC9256] describes the behavior on the headend for the handling of the explicit null label. 2.4.6. Policy Priority Sub-TLV An operator MAY set the Policy Priority sub-TLV to indicate the order in which the SR policies are re-computed upon topological change. The contents of this sub-TLV are used by the SRPM as described in section 2.12 of [RFC9256]. The Priority sub-TLV is OPTIONAL and it MUST NOT appear more than once in the SR Policy encoding. The Priority sub-TLV has following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Priority | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 25: Priority sub-TLV Where: Type: 15 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. Priority: a 1-octet value indicating the priority as specified in section 2.12 of [RFC9256]. RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. 2.4.7. Policy Candidate Path Name Sub-TLV An operator MAY set the Policy Candidate Path Name sub-TLV to attach a symbolic name to the SR Policy candidate path. Previdi, et al. Expires 7 May 2025 [Page 23] Internet-Draft Segment Routing Policies in BGP November 2024 Usage of Policy Candidate Path Name sub-TLV is described in section 2.6 of [RFC9256]. The Policy Candidate Path Name sub-TLV may exceed 255 bytes in length due to a long name. A 2-octet length is thus required. According to section 2 of [RFC9012], the sub-TLV type defines the size of the length field. Therefore, for the Policy Candidate 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 candidate path is limited to 255 bytes. Implementations MAY choose to truncate long names to 255 bytes when signaling via BGP. The Policy Candidate Path Name sub-TLV is OPTIONAL and it MUST NOT appear more than once in the SR Policy encoding. The Policy Candidate Path Name sub-TLV has following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Policy Candidate Path Name // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 26: Policy Candidate Path Name sub-TLV Where: Type: 129. Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value is variable. RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. Policy Candidate Path Name: Symbolic name for the SR Policy candidate path without a NULL terminator as specified in section 2.6 of [RFC9256]. 2.4.8. Policy Name Sub-TLV An operator MAY set the Policy Name sub-TLV to associate a symbolic name with the SR Policy for which the candidate path is being advertised via the SR Policy NLRI. Previdi, et al. Expires 7 May 2025 [Page 24] Internet-Draft Segment Routing Policies in BGP November 2024 Usage of Policy Name sub-TLV is described in section 2.1 of [RFC9256]. The Policy Name sub-TLV may exceed 255 bytes in length due to a long policy name. A 2-octet length is thus required. According to 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 of 128 or higher is used. It is RECOMMENDED that the size of the symbolic name for the SR Policy is limited to 255 bytes. Implementations MAY choose to truncate long names to 255 bytes when signaling via BGP. The Policy Name sub-TLV is OPTIONAL and it MUST NOT appear more than once in the SR Policy encoding. The Policy Name sub-TLV has following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Policy Name // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 27: Policy Name sub-TLV Where: Type: 130 Length: Specifies the length of the value field (i.e., not including Type and Length fields) in terms of octets. The value is variable. RESERVED: 1 octet of reserved bits. This field MUST be set to zero on transmission and MUST be ignored on receipt. Policy Name: Symbolic name for the policy. It SHOULD be a string of printable ASCII characters, without a NULL terminator. Previdi, et al. Expires 7 May 2025 [Page 25] Internet-Draft Segment Routing Policies in BGP November 2024 3. Color Extended Community The Color Extended Community [RFC9012] is used to steer traffic corresponding to BGP routes into an SR Policy with matching color 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 (IPv4 Labeled Unicast), 2/4 (IPv6 Labeled Unicast), 1/128 (VPN-IPv4 Labeled Unicast), 2/128 (VPN-IPv6 Labeled Unicast), or 25/70 (Ethernet VPN, usually known as EVPN). Use of the Color Extended Community in BGP UPDATE messages of other AFI/SAFIs is outside the scope of this document. Two bits from the Flags field of the Color Extended Community are used as follows to support the requirements of Color-Only steering as specified in Section 8.8 of [RFC9256]: 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |C O| Unassigned | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 28: Color Extended Community Flags The CO bits together form the Color-Only Type field which indicates the various matching criteria between BGP NH and SR Policy endpoint in addition to the matching of the color value. Following types are defined: * Type 0: Specific Endpoint Match: Request match for the endpoint that is the BGP NH * Type 1: Specific or Null Endpoint Match: Request match for either the endpoint that is the BGP NH or a null endpoint (e.g., like a default gateway) * Type 2: Specific, Null, or Any Endpoint Match: Request match for either the endpoint that is the BGP NH or with a null or any endpoint * Type 3: reserved for future use and SHOULD NOT be used. Upon reception, an implementation MUST treat it like Type 0. The details of the SR Policy steering mechanisms based on these Color-Only types are specified in section 8.8 of [RFC9256]. Previdi, et al. Expires 7 May 2025 [Page 26] Internet-Draft Segment Routing Policies in BGP November 2024 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 the steering behaviors over SR Policies when multiple Color Extended Communities are associated with a BGP route. 4. SR Policy Operations As mentioned in Section 1, BGP is not the actual consumer of an SR Policy NLRI. BGP is in charge of the origination and propagation of the SR Policy NLRI but its installation and use are outside the scope of BGP. The details of SR Policy installation and use are specified in [RFC9256]. 4.1. Advertisement of SR Policies Typically, but not limited to, an SR Policy is computed by a controller or a path computation engine (PCE) and originated by a BGP speaker on its behalf. Multiple SR Policy NLRIs may be present with the same <color, endpoint> tuple but with different distinguishers when these SR policies are intended for different headends. The distinguisher of each SR Policy NLRI prevents undesired BGP route selection among these SR Policy NLRIs and allows their propagation across route reflectors [RFC4456]. Moreover, one or more route targets SHOULD be attached to the advertisement, where each route target identifies one or more intended headends for the advertised SR Policy update. If no route target is attached to the SR Policy NLRI, then it is assumed that the originator sends the SR Policy update directly (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 Policy update (see further details in Section 4.2.3). 4.2. Reception of an SR Policy NLRI On reception of an SR Policy NLRI, a BGP speaker first determines if it is valid as described in Section 4.2.1 and then performs the decision process for selection of the best route (Section 9.1 of [RFC4271]). The key difference from the base BGP decision process is that BGP does not download the selected best routes of SR Policy SAFI into the forwarding and instead considers them "usable" for passing on to the SRPM for further processing as described in Section 4.2.2. The selected best route is "propagated" (Section 9.1.3 of [RFC4271]) as described in Section 4.2.3 irrespective of its "usability" by the Previdi, et al. Expires 7 May 2025 [Page 27] Internet-Draft Segment Routing Policies in BGP November 2024 local router. 4.2.1. Validation of an SR Policy NLRI When a BGP speaker receives an SR Policy NLRI from a neighbor it MUST first perform validation based on the following rules in addition to the validation described in Section 5: * The SR Policy NLRI MUST include a distinguisher, color, and endpoint field which implies that the length of the NLRI MUST be either 12 or 24 octets (depending on the address family of the endpoint). * The SR Policy update MUST have either the NO_ADVERTISE community or at least one route target extended community in IPv4-address format or both. If a router supporting this specification receives an SR Policy update with no route target extended communities and no NO_ADVERTISE community, the update MUST be considered as malformed. * The Tunnel Encapsulation Attribute MUST be attached to the BGP Update and MUST have a Tunnel Type TLV set to SR Policy (codepoint is 15). A router that receives an SR Policy update that is not valid according to these criteria MUST treat the update as malformed and the SR Policy candidate path MUST NOT be passed to the SRPM. 4.2.2. Eligibility for Local Use of an SR Policy NLRI An SR Policy NLRI update without any route target extended community but having the NO_ADVERTISE community is considered usable. 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 to be considered usable. The BGP Identifier is defined in [RFC4271] as a 4-octet IPv4 address. Therefore, the route target extended community MUST be of the same format. 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 usable on the receiver node. When the SR Policy tunnel type includes any sub-TLV that is unrecognized or unsupported, the update SHOULD NOT be considered usable. An implementation MAY provide an option for ignoring unsupported sub-TLVs. Previdi, et al. Expires 7 May 2025 [Page 28] Internet-Draft Segment Routing Policies in BGP November 2024 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 that, along with the candidate path details, BGP also passes the originator information for breaking ties in the candidate path selection process as described in section 2.4 of [RFC9256]. When an update for an SR Policy NLRI results in its becoming unusable, BGP MUST delete its corresponding SR Policy candidate path from the SRPM. The SRPM applies the rules defined in section 2 of [RFC9256] to determine whether the SR Policy candidate path is valid and to select the active candidate path for a given SR Policy. 4.2.3. Propagation of an SR Policy SR Policy NLRIs that have the NO_ADVERTISE community attached to them MUST NOT be propagated. By default, a BGP node receiving an SR Policy NLRI MUST NOT propagate it to any EBGP neighbor. An implementation MAY provide an explicit configuration to override this and enable the propagation of valid SR Policy NLRIs to specific EBGP neighbors where the SR domain comprises multiple-ASes within a single service provider domain (see Section 7 for details). A BGP node advertises a received SR Policy NLRI to its IBGP neighbors according to normal IBGP propagation rules. By default, a BGP node receiving an SR Policy NLRI SHOULD NOT remove route target extended community before propagation. An implementation MAY provide support for configuration to filter and/or remove route target extended community before propagation. A BGP node MUST NOT alter the SR Policy information carried in the Tunnel Encapsulation Attribute during propagation. 5. Error Handling and Fault Management This section describes the error handling actions, as described in [RFC7606], that are to be performed for the handling of the BGP update messages for BGP SR Policy SAFI. Previdi, et al. Expires 7 May 2025 [Page 29] Internet-Draft Segment Routing Policies in BGP November 2024 A BGP Speaker MUST perform the following syntactic validation of 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 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 endpoint address as specified in Section 2.1. When the error determined allows for the router to skip the malformed NLRI(s) and continue the processing of the rest of the update message, then it MUST handle such malformed NLRIs as 'Treat-as- withdraw'. In other cases, where the error in the NLRI encoding results in the inability to process the BGP update message (e.g. length related encoding errors), then the router SHOULD handle such malformed NLRIs as 'AFI/SAFI disable' when other AFI/SAFI besides SR Policy are being advertised over the same session. Alternately, the router MUST perform 'session reset' when the session is only being used for SR Policy or when it 'AFI/SAFI disable' action is not possible. The validation of the TLVs/sub-TLVs introduced in this document and defined in their respective sub-sections of Section 2.4 MUST be performed to determine if they are malformed or invalid. The validation of the Tunnel Encapsulation Attribute itself and the other 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 the attribute or its TLV/sub-TLV level, the "treat-as-withdraw" strategy MUST be applied. This is because an SR Policy update without a valid Tunnel Encapsulation Attribute (comprising of all valid TLVs/sub-TLVs) is not usable. An SR Policy update that is determined to be not valid, and therefore malformed, based on rules described in Section 4.2.1 MUST be handled by the "treat-as-withdraw" strategy. The validation of the individual fields of the TLVs/sub-TLVs defined in Section 2.4 are beyond the scope of BGP as they are handled by the SRPM as described in the individual TLV/sub-TLV sub-sections. A BGP implementation MUST NOT perform semantic verification of such fields nor consider the SR Policy update to be invalid or not usable based on such validation. An implementation SHOULD log any errors found during the above validation for further analysis. 6. IANA Considerations This document uses code point allocations from the following existing registries: Previdi, et al. Expires 7 May 2025 [Page 30] Internet-Draft Segment Routing Policies in BGP November 2024 * Subsequent Address Family Identifiers (SAFI) Parameters registry * BGP Tunnel Encapsulation Attribute Tunnel Types registry under the BGP Tunnel Encapsulation registry * BGP Tunnel Encapsulation Attribute sub-TLVs registry under the BGP Tunnel Encapsulation registry * Color Extended Community Flags registry under the BGP Tunnel Encapsulation registry This document also requests the creation of the following new registries: * SR Policy Segment List Sub-TLVs under the BGP Tunnel Encapsulation registry * SR Policy Binding SID Flags under the BGP Tunnel Encapsulation registry * SR Policy SRv6 Binding SID Flags under the BGP Tunnel Encapsulation registry * SR Policy Segment Flags under the BGP Tunnel Encapsulation registry * Color Extended Community Color-Only Types registry under the BGP Tunnel Encapsulation registry * SR Policy ENLP Values under the Segment Routing registry 6.1. Subsequent Address Family Identifiers (SAFI) Parameters This document introduces a SAFI in the registry "Subsequent Address Family Identifiers (SAFI) Parameters" that has been assigned a code point by IANA. The entry needs to be updated as follows: Code Point Description Reference ----------------------------------------------- 73 SR Policy SAFI This document Table 1: BGP SAFI Code Point 6.2. BGP Tunnel Encapsulation Attribute Tunnel Types This document introduces a Tunnel-Type in the registry "BGP Tunnel Encapsulation Attribute Tunnel Types" that has been assigned a codepoint by IANA. The entry needs to be updated as follows: Previdi, et al. Expires 7 May 2025 [Page 31] Internet-Draft Segment Routing Policies in BGP November 2024 Code Point Description Reference -------------------------------------------------- 15 SR Policy This document Table 2: Tunnel Type Code Point 6.3. BGP Tunnel Encapsulation Attribute sub-TLVs This document defines sub-TLVs in the registry "BGP Tunnel Encapsulation Attribute sub-TLVs" that have been assigned code points by IANA as follows via the early allocation process which needs to be made permanent: Code Point Description Reference ------------------------------------------------------------ 12 Preference sub-TLV This document 13 Binding SID sub-TLV This document 14 ENLP sub-TLV This document 15 Priority sub-TLV This document 20 SRv6 Binding SID sub-TLV This document 128 Segment List sub-TLV This document 129 Policy Candidate Path Name sub-TLV This document 130 Policy Name sub-TLV This document Table 3: BGP Tunnel Encapsulation Attribute Code Points 6.4. Color Extended Community Flags This document defines the use of 2 bits in the registry called "Color Extended Community Flags" under the "BGP Tunnel Encapsulation" registry that have been assigned by IANA via the early allocation process to form the Color-Only Types field which needs to be made permanent: Bit Position Description Reference ------------------------------------------------------------------ 0-1 Color-only Types Field This document Table 4: Color Extended Community Flag Bits 6.5. SR Policy Segment List Sub-TLVs This document requests the creation of a new registry called "SR Policy Segment List Sub-TLVs" under the "BGP Tunnel Encapsulation" registry. The allocation policy of this registry is "IETF Review" according to [RFC8126]. Previdi, et al. Expires 7 May 2025 [Page 32] Internet-Draft Segment Routing Policies in BGP November 2024 Following initial Sub-TLV codepoints are assigned by this document: Value Description Reference ----------------------------------------------------- 0 Reserved This document 1 Segment Type A sub-TLV This document 2 Deprecated This document 3-8 Unassigned 9 Weight sub-TLV This document 10 Deprecated This document 11 Deprecated This document 12 Deprecated This document 13 Segment Type B sub-TLV This document 14-255 Unassigned Table 5: SR Policy Segment List Code Points 6.6. SR Policy Binding SID Flags This document requests the creation of a new registry called "SR Policy Binding SID Flags" under the "BGP Tunnel Encapsulation" registry. The allocation policy of this registry is "Standards Action" according to [RFC8126]. The following flags are defined: Bit Description Reference ----------------------------------------------------------------- 0 Specified-BSID-Only Flag (S-Flag) This document 1 Drop Upon Invalid Flag (I-Flag) This document 2-7 Unassigned Table 6: SR Policy Binding SID Flags 6.7. SR Policy SRv6 Binding SID Flags This document requests the creation of a new registry called "SR Policy SRv6 Binding SID Flags" under the "BGP Tunnel Encapsulation" registry. The allocation policy of this registry is "Standards Action" according to [RFC8126]. The following flags are defined: Previdi, et al. Expires 7 May 2025 [Page 33] Internet-Draft Segment Routing Policies in BGP November 2024 Bit Description Reference ----------------------------------------------------------------- 0 Specified-BSID-Only Flag (S-Flag) This document 1 Drop Upon Invalid Flag (I-Flag) This document 2 SRv6 Endpoint Behavior & SID Structure Flag (B-Flag) This document 3-7 Unassigned Table 7: SR Policy SRv6 Binding SID Flags 6.8. SR Policy Segment Flags This document requests the creation of a new registry called "SR Policy Segment Flags" under the "BGP Tunnel Encapsulation" registry. The allocation policy of this registry is "IETF Review" according to [RFC8126]. The following flags are defined: Bit Description Reference ------------------------------------------------------------------ 0 Segment Verification Flag (V-Flag) This document 1-2 Unassigned 3 SRv6 Endpoint Behavior & SID Structure Flag (B-Flag) This document 4-7 Unassigned Table 8: SR Policy Segment Flags 6.9. Color Extended Community Color-Only Types This document requests the creation of a new registry called "Color Extended Community Color-Only Types" under the "BGP Tunnel Encapsulation" registry for assignment of codepoints (values 0 through 3) in the Color-Only Type field of the Color Extended Community Flags field. The allocation policy of this registry is "Standards Action" according to [RFC8126]. The following types are defined: Type Description Reference ----------------------------------------------------------- 0 Specific Endpoint Match This document 1 Specific or Null Endpoint Match This document 2 Specific, Null, or Any Endpoint Match This document 3 Unassigned This document Table 9: Color Extended Community Color-Only Types Previdi, et al. Expires 7 May 2025 [Page 34] Internet-Draft Segment Routing Policies in BGP November 2024 6.10. SR Policy ENLP Values Note to IANA (RFC editor to remove this before publication): The new registry creation request below is also present in the draft-ietf- pce-segment-routing-policy-cp. IANA is requested to process the registry creation via the first of these two documents to reach publication stage and the authors of the other document would update the IANA considerations suitably. This document requests IANA to maintain a new registry under "Segment Routing Parameters" registry group with the allocation policy of "Standards Action" [RFC8126]. The new registry is called "SR Policy ENLP Values" and contains the codepoints allocated to the "ENLP" field defined in Section 2.4.5. The registry contains the following codepoints, with initial values, to be assigned by IANA with the reference set to this document: +-------+-----------------------------------+---------------+ | Code | | | | Point | Description | Reference | +-------+-----------------------------------+---------------+ | 0 | Reserved (not to be used) | This document | | 1 | Push an IPv4 Explicit NULL label | This document | | | on an unlabeled IPv4 packet, but | | | | do not push an IPv6 Explicit NULL | | | | label on an unlabeled IPv6 packet | | | 2 | Push an IPv6 Explicit NULL label | This document | | | on an unlabeled IPv6 packet, but | | | | do not push an IPv4 Explicit NULL | | | | label on an unlabeled IPv4 packet | | | 3 | Push an IPv6 Explicit NULL label | This document | | | on an unlabeled IPv6 packet, and | | | | push an IPv4 Explicit NULL label | | | | on an unlabeled IPv4 packet | | | 4 | Do not push an Explicit NULL | This document | | | label | | | 5-255 | Unassigned | | +-------+-----------------------------------+---------------+ Table 10: SR Policy ENLP Values 7. Security Considerations The security mechanisms of the base BGP security model apply to the extensions described in this document as well. See the Security Considerations section of [RFC4271] for a discussion of BGP security. Also, refer to [RFC4272] and [RFC6952] for analysis of security issues for BGP. Previdi, et al. Expires 7 May 2025 [Page 35] Internet-Draft Segment Routing Policies in BGP November 2024 The BGP SR Policy extensions specified in this document enable traffic engineering and service programming use-cases within an SR domain as described in [RFC9256]. SR operates within a trusted SR domain [RFC8402] and its security considerations also apply to BGP sessions when carrying SR Policy information. The SR Policies distributed by BGP are expected to be used entirely within this trusted SR domain which comprises a single AS or multiple ASes/ domains within a single provider network. Therefore, precaution is necessary to ensure that the SR Policy information advertised via BGP sessions is limited to nodes in a secure manner within this trusted SR domain. BGP peering sessions for address-families other than SR Policy SAFI may be set up to routers outside the SR domain. The isolation of BGP SR Policy SAFI peering sessions may be used to ensure that the SR Policy information is not advertised by accident or error to an EBGP peering session outside the SR domain. Additionally, it may be considered that the export of SR Policy information, as described in this document, constitutes a risk to confidentiality of mission-critical or commercially sensitive information about the network (more specifically endpoint/node addresses, SR SIDs, and the SR Policies deployed). BGP peerings are not automatic and require configuration; thus, it is the responsibility of the network operator to ensure that only trusted nodes (that include both routers and controller applications) within the SR domain are configured to receive such information. 8. Manageability Considerations The specification of BGP models is an ongoing work based on [I-D.ietf-idr-bgp-model] and its future extensions are expected to cover the SR Policy SAFI. Existing BGP operational procedures also apply to the SAFI specified in this document. The management, operations, and monitoring of BGP speakers and the SR Policy SAFI sessions between them are not very different from other BGP sessions and can be managed using the same data models. The YANG model for the operation and management of SR Policies [I-D.ietf-spring-sr-policy-yang] reports the SR Policies provisioned via BGP SR Policy SAFI along with their operational states. 9. Acknowledgments The authors of this document would like to thank Shyam Sethuram, John Scudder, Przemyslaw Krol, Alex Bogdanov, Nandan Saha, Bruno Decraene, Gurusiddesh Nidasesi, Kausik Majumdar, Zafar Ali, Swadesh Agarwal, Jakob Heitz, Viral Patel, Peng Shaofu, Cheng Li, Martin Vigoureux, John Scudder, Vincent Roca, Brian Haberman, Mohamed Boucadair, Shunwan Zhuang, Andrew Alston, Jeffrey (Zhaohui) Zhang, Nagendra Previdi, et al. Expires 7 May 2025 [Page 36] Internet-Draft Segment Routing Policies in BGP November 2024 Nainar, Rajesh Melarcode Venkateswaran, Nat Kao, Boris Hassanov, Vincent Roca, and Russ Housley for their comments and review of this document. The authors would like to thank Susan Hares for her detailed shepherd review that helped in improving the document. 10. Contributors Eric Rosen Juniper Networks US Email: erosen@xxxxxxxxxxx Arjun Sreekantiah Cisco Systems US Email: asreekan@xxxxxxxxx Acee Lindem Cisco Systems US Email: acee@xxxxxxxxx Siva Sivabalan Cisco Systems US Email: msiva@xxxxxxxxx Imtiyaz Mohammad Arista Networks India Email: imtiyaz@xxxxxxxxxx Gaurav Dawra Cisco Systems US Email: gdawra.ietf@xxxxxxxxx Peng Shaofu ZTE Corporation China Email: peng.shaofu@xxxxxxxxxx Previdi, et al. Expires 7 May 2025 [Page 37] Internet-Draft Segment Routing Policies in BGP November 2024 Steven Lin Calix USA Email: steven.lin@xxxxxxxxx 11. References 11.1. Normative References [RFC1997] Chandra, R., Traina, P., and T. Li, "BGP Communities Attribute", RFC 1997, DOI 10.17487/RFC1997, August 1996, <https://www.rfc-editor.org/info/rfc1997>. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>. [RFC2545] Marques, P. and F. Dupont, "Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing", RFC 2545, DOI 10.17487/RFC2545, March 1999, <https://www.rfc-editor.org/info/rfc2545>. [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, <https://www.rfc-editor.org/info/rfc3032>. [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 10.17487/RFC4271, January 2006, <https://www.rfc-editor.org/info/rfc4271>. [RFC4360] Sangli, S., Tappan, D., and Y. Rekhter, "BGP Extended Communities Attribute", RFC 4360, DOI 10.17487/RFC4360, February 2006, <https://www.rfc-editor.org/info/rfc4360>. [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, "Multiprotocol Extensions for BGP-4", RFC 4760, DOI 10.17487/RFC4760, January 2007, <https://www.rfc-editor.org/info/rfc4760>. [RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field", RFC 5462, DOI 10.17487/RFC5462, February 2009, <https://www.rfc-editor.org/info/rfc5462>. Previdi, et al. Expires 7 May 2025 [Page 38] Internet-Draft Segment Routing Policies in BGP November 2024 [RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. Patel, "Revised Error Handling for BGP UPDATE Messages", RFC 7606, DOI 10.17487/RFC7606, August 2015, <https://www.rfc-editor.org/info/rfc7606>. [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>. [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018, <https://www.rfc-editor.org/info/rfc8402>. [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing with the MPLS Data Plane", RFC 8660, DOI 10.17487/RFC8660, December 2019, <https://www.rfc-editor.org/info/rfc8660>. [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, <https://www.rfc-editor.org/info/rfc8754>. [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 (SRv6) Network Programming", RFC 8986, DOI 10.17487/RFC8986, February 2021, <https://www.rfc-editor.org/info/rfc8986>. [RFC9012] Patel, K., Van de Velde, G., Sangli, S., and J. Scudder, "The BGP Tunnel Encapsulation Attribute", RFC 9012, DOI 10.17487/RFC9012, April 2021, <https://www.rfc-editor.org/info/rfc9012>. [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, A., and P. Mattes, "Segment Routing Policy Architecture", RFC 9256, DOI 10.17487/RFC9256, July 2022, <https://www.rfc-editor.org/info/rfc9256>. 11.2. Informational References Previdi, et al. Expires 7 May 2025 [Page 39] Internet-Draft Segment Routing Policies in BGP November 2024 [I-D.ietf-idr-bgp-ls-sr-policy] Previdi, S., Talaulikar, K., 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-06, 19 October 2024, <https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp- ls-sr-policy-06>. [I-D.ietf-idr-bgp-model] Jethanandani, M., Patel, K., Hares, S., and J. Haas, "YANG Model for Border Gateway Protocol (BGP-4)", Work in Progress, Internet-Draft, draft-ietf-idr-bgp-model-18, 21 October 2024, <https://datatracker.ietf.org/doc/html/ draft-ietf-idr-bgp-model-18>. [I-D.ietf-idr-bgp-sr-segtypes-ext] Talaulikar, K., Filsfils, C., Previdi, S., Mattes, P., and D. Jain, "Segment Routing Segment Types Extensions for BGP SR Policy", Work in Progress, Internet-Draft, draft-ietf- idr-bgp-sr-segtypes-ext-05, 27 September 2024, <https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp- sr-segtypes-ext-05>. [I-D.ietf-spring-sr-policy-yang] Raza, S. K., Saleh, T., Shunwan, Z., Voyer, D., Durrani, M., Matsushima, S., and V. P. Beeram, "YANG Data Model for Segment Routing Policy", Work in Progress, Internet-Draft, draft-ietf-spring-sr-policy-yang-03, 4 March 2024, <https://datatracker.ietf.org/doc/html/draft-ietf-spring- sr-policy-yang-03>. [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", RFC 4272, DOI 10.17487/RFC4272, January 2006, <https://www.rfc-editor.org/info/rfc4272>. [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP)", RFC 4456, DOI 10.17487/RFC4456, April 2006, <https://www.rfc-editor.org/info/rfc4456>. [RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, <https://www.rfc-editor.org/info/rfc6952>. Previdi, et al. Expires 7 May 2025 [Page 40] Internet-Draft Segment Routing Policies in BGP November 2024 [RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and Traffic Engineering Information Using BGP", RFC 9552, DOI 10.17487/RFC9552, December 2023, <https://www.rfc-editor.org/info/rfc9552>. Authors' Addresses Stefano Previdi Huawei Technologies Italy Email: stefano@xxxxxxxxxxx Clarence Filsfils Cisco Systems Brussels Belgium Email: cfilsfil@xxxxxxxxx Ketan Talaulikar (editor) Cisco Systems India Email: ketant.ietf@xxxxxxxxx Paul Mattes Microsoft One Microsoft Way Redmond, WA 98052 United States of America Email: pamattes@xxxxxxxxxxxxx Dhanendra Jain Google Email: dhanendra.ietf@xxxxxxxxx Previdi, et al. Expires 7 May 2025 [Page 41]
<<< text/html; charset="US-ASCII"; name="draft-ietf-idr-bgp-sr-segtypes-ext-06.diff.html": Unrecognized >>>
-- last-call mailing list -- last-call@xxxxxxxx To unsubscribe send an email to last-call-leave@xxxxxxxx