--- 1/draft-ietf-idr-bgp-prefix-sid-11.txt 2018-02-04 15:13:09.850834785 -0800 +++ 2/draft-ietf-idr-bgp-prefix-sid-12.txt 2018-02-04 15:13:09.886835651 -0800 @@ -1,23 +1,23 @@ IDR S. Previdi, Ed. Internet-Draft C. Filsfils Intended status: Standards Track A. Lindem -Expires: August 4, 2018 Cisco Systems +Expires: August 8, 2018 Cisco Systems A. Sreekantiah H. Gredler RtBrick Inc. - January 31, 2018 + February 4, 2018 Segment Routing Prefix SID extensions for BGP - draft-ietf-idr-bgp-prefix-sid-11 + draft-ietf-idr-bgp-prefix-sid-12 Abstract Segment Routing (SR) architecture allows a node to steer a packet flow through any topological path and service chain by leveraging source routing. The ingress node prepends an SR header to a packet containing a set of segment identifiers (SID). Each SID represents a topological or a service-based instruction. Per-flow state is maintained only on the ingress node of the SR domain. @@ -41,21 +41,21 @@ 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 http://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 August 4, 2018. + This Internet-Draft will expire on August 8, 2018. Copyright Notice Copyright (c) 2018 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 (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -71,53 +71,53 @@ 2. BGP-Prefix-SID . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. MPLS BGP Prefix SID . . . . . . . . . . . . . . . . . . . 4 2.2. IPv6 Prefix Segment . . . . . . . . . . . . . . . . . . . 5 3. BGP Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5 3.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 6 3.2. IPv6 SID . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 7 4. Receiving BGP Prefix-SID Attribute . . . . . . . . . . . . . 9 4.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 9 4.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 10 - 5. Advertising BGP Prefix-SID Attribute . . . . . . . . . . . . 10 + 5. Advertising BGP Prefix-SID Attribute . . . . . . . . . . . . 11 5.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 11 - 5.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 11 - 6. Error Handling of BGP Prefix-SID Attribute . . . . . . . . . 11 + 5.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 12 + 6. Error Handling of BGP Prefix-SID Attribute . . . . . . . . . 12 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 8. Manageability Considerations . . . . . . . . . . . . . . . . 13 - 9. Security Considerations . . . . . . . . . . . . . . . . . . . 13 - 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 13 + 9. Security Considerations . . . . . . . . . . . . . . . . . . . 14 + 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 14 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 - 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 - 12.1. Normative References . . . . . . . . . . . . . . . . . . 14 - 12.2. Informative References . . . . . . . . . . . . . . . . . 15 + 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 + 12.1. Normative References . . . . . . . . . . . . . . . . . . 15 + 12.2. Informative References . . . . . . . . . . . . . . . . . 16 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 1. Introduction Segment Routing (SR) architecture leverages the source routing paradigm. A group of inter-connected nodes that use SR forms an SR domain. A segment represents either a topological instruction such as "go to prefix P following shortest path" or a service instruction (e.g., "pass through deep packet inspection"). Other types of segments may be defined in the future. A segment is identified through a Segment Identifier (SID). Typically, the ingress node of the SR domain prepends an SR header containing segments identifiers (SIDs) to an incoming packet. As described in [I-D.ietf-spring-segment-routing], when SR is applied to the MPLS dataplane ([I-D.ietf-spring-segment-routing-mpls]), the SID consists of a label while when SR is applied to the IPv6 dataplane the SID consists of an IPv6 address. - A BGP-Prefix Segment (and its BGP Prefix-SID), is a BGP segment + A BGP-Prefix Segment (and its BGP Prefix-SID) is a BGP segment attached to a BGP prefix. A BGP Prefix-SID is always a global SID ([I-D.ietf-spring-segment-routing]) within the SR/BGP domain (i.e., the set of Autonomous Systems under a common administration and control and where SR is used) and identifies an instruction to forward the packet over the ECMP-aware best-path computed by BGP to the related prefix. The BGP Prefix-SID is the identifier of the BGP prefix segment. In this document, we always refer to the BGP segment by the BGP Prefix-SID. This document describes the BGP extension to signal the BGP Prefix- @@ -125,43 +125,46 @@ the BGP Prefix-SID attribute and specifies the rules to originate, receive, and handle error conditions for the attribute. The BGP Prefix-SID attribute defined in this document can be attached to prefixes from AFI/SAFI combinations: Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]). Multiprotocol BGP ([RFC4760]) unlabeled IPv6 Unicast. + Usage of the BGP Prefix-SID attribute for other AFI/SAFI combinations + is not defined herein but may be specified in future specifications. + [I-D.ietf-spring-segment-routing-msdc] describes example use cases where the BGP Prefix-SID is used for the above AFI/SAFI combinations. It should be noted that: o A BGP Prefix-SID MAY be global between domains when the interconnected domains agree on the SID allocation scheme. Alternatively, when interconnecting domains, the ASBRs of each domain will have to handle the advertisement of unique SIDs. The mechanisms for such interconnection are outside the scope of the protocol extensions defined in this document. o A BGP Prefix-SID MAY be attached to a prefix. In addition, each prefix will likely have a different AS_PATH attribute. This implies that each prefix is advertised individually, reducing the ability to pack BGP advertisements (when sharing common attributes). 2. BGP-Prefix-SID - The BGP Prefix-SID attached to a BGP prefix P represents the - instruction "go to Prefix P" along its BGP best path (potentially - ECMP-enabled). + The BGP Prefix-SID advertised for BGP prefix P indicates that the + segment routed path should be used (as described below) if the BGP + best path selects the corresponding NLRI. 2.1. MPLS BGP Prefix SID The BGP Prefix-SID is realized on the MPLS dataplane ([I-D.ietf-spring-segment-routing-mpls]) in the following way: The operator assigns a globally unique label index, L_I, to a locally sourced prefix of a BGP speaker N which is advertised to all other BGP speakers in the SR domain. @@ -200,23 +203,23 @@ As defined in [I-D.ietf-spring-segment-routing], the label index L_I is an offset into the SRGB. Each BGP speaker derives its local MPLS label, L, by adding L_I to the start value of its own SRGB, and programs L in its MPLS dataplane as its incoming/local label for the prefix. It should be noted that while SRGBs and SIDs are advertised using 32-bit values, the derived label is advertised in the 20 right-most bits. See Section 4.1 for more details. The outgoing label for the prefix is found in the NLRI of the - Multiprotocol BGP labeled IPv4/IPv6 Unicast prefix advertisement. - The label index L_I is only used as a hint to derive the local/ - incoming label. + Multiprotocol BGP labeled IPv4/IPv6 Unicast prefix advertisement + as defined in [RFC8277]. The label index L_I is only used as a + hint to derive the local/incoming label. Section 3.1 of this document specifies the Label-Index TLV of the BGP Prefix-SID attribute; this TLV can be used to advertise the label index for a given prefix. In order to advertise the label index of a given prefix P and, optionally, the SRGB, an extension to BGP is needed: the BGP Prefix- SID attribute. This extension is described in subsequent sections. 2.2. IPv6 Prefix Segment @@ -347,34 +351,56 @@ o Length is the total length in octets of the value portion of the TLV: 2 + (multiple of 6). o Flags: 16 bits of flags. None are defined in this document. Flags MUST be clear on transmission and MUST be ignored on reception. o SRGB: 3 octets of base followed by 3 octets of range. Note that the SRGB field MAY appear multiple times. If the SRGB field - appears multiple times, the SRGB consists of multiple ranges. + appears multiple times, the SRGB consists of multiple ranges that + are concatenated. The Originator SRGB TLV contains the SRGB of the node originating the prefix to which the BGP Prefix-SID is attached. The Originator SRGB TLV MUST NOT be changed during the propagation of the BGP update. The originator SRGB describes the SRGB of the node where the BGP Prefix SID is attached. It is used to build segment routing policies when different SRGBs are used in the fabric, for example ([I-D.ietf-spring-segment-routing-msdc]). + The receiving routers concatenate the ranges and build the Segment + Routing Global Block (SRGB) as follows: + + SRGB = [100, 199] + [1000, 1099] + [500, 599] + + The indexes span multiple ranges: + + index=0 means label 100 + ... + index 99 means label 199 + index 100 means label 1000 + index 199 means label 1099 + ... + index 200 means label 500 + ... + The originator SRGB may only appear in a BGP Prefix-SID attribute attached to Labeled IPv4/IPv6 unicast prefixes ([RFC8277]). It MUST - be ignored when received for other BGP AFI/SAFI combinations. + be ignored when received for other BGP AFI/SAFI combinations. Since + the Label-Index TLV is required for IPv4/IPv6 prefix applicability, + the originator SRGB will be ignored if it is not specified consistent + with Section 6. 4. Receiving BGP Prefix-SID Attribute A BGP speaker receiving a BGP Prefix-SID attribute from an EBGP neighbor residing outside the boundaries of the SR domain MUST discard the attribute unless it is configured to accept the attribute from the EBGP neighbor. A BGP speaker MAY log an error for further analysis when discarding an attribute. 4.1. MPLS Dataplane: Labeled Unicast @@ -386,23 +412,21 @@ SRGB_End]. The preferred method for deriving the SRGB is a matter of local node configuration. Given a label index L_I, we refer to (L = L_I + SRGB_Start) as the derived label. A BGP Prefix-SID attribute is designated "unacceptable" for a speaker M if the derived label value L lies outside the SRGB configured on M. Otherwise the Label-Index TLV is designated "acceptable" to speaker M. The mechanisms through which a given label index value is assigned to - a given prefix are outside the scope of this document. The label- - index value associated with a prefix is locally configured at the BGP - node originating the prefix. + a given prefix are outside the scope of this document. The BGP Prefix-SID attribute MUST contain the Label-Index TLV and MAY contain the Originator SRGB TLV. A BGP Prefix-SID attribute received without a Label-Index TLV MUST be considered as "unacceptable" by the receiving speaker. If multiple prefixes are received with the same label index value, all these prefixes MUST have their BGP Prefix-SID attribute considered as "unacceptable" by the receiving speaker. @@ -418,29 +442,29 @@ a path from a neighbor with a BGP Prefix-SID attribute but is unable to process it (it does not have the capability or local policy disables the capability), it MUST treat the path as if it came without a BGP Prefix-SID attribute. For the purposes of local label allocation, a BGP speaker MUST assign a local (also called dynamic) label (non-SRGB) for such a prefix as per classic Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]) operation. A BGP speaker MAY log an error for further analysis. The outgoing label is always programmed as per classic Multiprotocol - BGP labeled IPv4/IPv6 Unicast ([RFC8277]) operation. + BGP labeled IPv4/IPv6 Unicast ([RFC8277]) operation. Specifically, a + BGP speaker receiving a prefix with a BGP Prefix-SID attribute and a + label NLRI field of Implicit NULL from a neighbor MUST adhere to + standard behavior and program its MPLS dataplane to pop the top label + when forwarding traffic to the prefix. The label NLRI defines the + outbound label that MUST be used by the receiving node. - Specifically, a BGP speaker receiving a prefix with a BGP Prefix-SID - attribute and a label NLRI field of Implicit NULL from a neighbor - MUST adhere to standard behavior and program its MPLS dataplane to - pop the top label when forwarding traffic to the prefix. The label - NLRI defines the outbound label that MUST be used by the receiving - node. The label index gives the information to the receiving node on - which local/incoming label the BGP speaker SHOULD assign. + The label index provides the receiving BGP speaker with guidance as + to the incoming label that SHOULD be assigned by that BGP speaker. 4.2. IPv6 Dataplane When an SR IPv6 BGP speaker receives an IPv6 Unicast BGP Update with a prefix having the BGP Prefix-SID attribute attached, it checks whether the IPv6 SID TLV is present. If present and chosen as the best path, the prefix is installed into the Segment Routing IPv6 dataplane as described in [I-D.ietf-spring-segment-routing]. The Label-Index and Originator SRGB TLVs MUST be ignored on @@ -620,21 +645,22 @@ The authors would like to thank Satya Mohanty for his contribution to this document. The authors would like to thank Alvaro Retana for substantive comments as part of the Routing AD review. The authors would like to thank Shyam Sethuram for comments and discussion of TLV processing and validation. - The authors would like to thank Peter Lee for IETF last call review. + The authors would like to thank Peter Yee and Tony Przygienda for + IETF last call directorate reviews. 12. References 12.1. Normative References [I-D.ietf-spring-segment-routing] Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", draft-ietf-spring-segment-routing-15 (work in progress), January 2018.