| < draft-ietf-idr-bgp-prefix-sid-22.txt | draft-ietf-idr-bgp-prefix-sid-23.txt > | |||
|---|---|---|---|---|
| IDR S. Previdi, Ed. | IDR S. Previdi, Ed. | |||
| Internet-Draft C. Filsfils | Internet-Draft C. Filsfils | |||
| Intended status: Standards Track A. Lindem, Ed. | Intended status: Standards Track A. Lindem, Ed. | |||
| Expires: December 15, 2018 Cisco Systems | Expires: December 16, 2018 Cisco Systems | |||
| A. Sreekantiah | A. Sreekantiah | |||
| H. Gredler | H. Gredler | |||
| RtBrick Inc. | RtBrick Inc. | |||
| June 13, 2018 | June 14, 2018 | |||
| Segment Routing Prefix SID extensions for BGP | Segment Routing Prefix SID extensions for BGP | |||
| draft-ietf-idr-bgp-prefix-sid-22 | draft-ietf-idr-bgp-prefix-sid-23 | |||
| Abstract | Abstract | |||
| The Segment Routing (SR) architecture allows a node to steer a packet | The Segment Routing (SR) architecture allows a node to steer a packet | |||
| flow through any topological path and service chain by leveraging | flow through any topological path and service chain by leveraging | |||
| source routing. The ingress node prepends an SR header to a packet | source routing. The ingress node prepends an SR header to a packet | |||
| containing a set of segment identifiers (SID). Each SID represents a | containing a set of segment identifiers (SID). Each SID represents a | |||
| topological or a service-based instruction. Per-flow state is | topological or a service-based instruction. Per-flow state is | |||
| maintained only on the ingress node of the SR domain. An SR domain | maintained only on the ingress node of the SR domain. An SR domain | |||
| is defined as a single administrative domain for global SID | is defined as a single administrative domain for global SID | |||
| skipping to change at page 2, line 10 ¶ | skipping to change at page 2, line 10 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on December 15, 2018. | This Internet-Draft will expire on December 16, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 34 ¶ | skipping to change at page 2, line 34 ¶ | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. BGP-Prefix-SID . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. BGP-Prefix-SID . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. MPLS BGP Prefix SID . . . . . . . . . . . . . . . . . . . 4 | 2.1. MPLS BGP Prefix SID . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. BGP Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5 | 3. BGP Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 7 | 3.2. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Receiving BGP Prefix-SID Attribute . . . . . . . . . . . . . 8 | 4. Receiving BGP Prefix-SID Attribute . . . . . . . . . . . . . 8 | |||
| 4.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 8 | 4.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 8 | |||
| 5. Advertising BGP Prefix-SID Attribute . . . . . . . . . . . . 10 | 5. Advertising BGP Prefix-SID Attribute . . . . . . . . . . . . 9 | |||
| 5.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 10 | 5.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 10 | |||
| 6. Error Handling of BGP Prefix-SID Attribute . . . . . . . . . 11 | 6. Error Handling of BGP Prefix-SID Attribute . . . . . . . . . 10 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 8. Manageability Considerations . . . . . . . . . . . . . . . . 12 | 8. Manageability Considerations . . . . . . . . . . . . . . . . 12 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 13 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 15 | 12.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 1. Introduction | 1. Introduction | |||
| The Segment Routing (SR) architecture leverages the source routing | The Segment Routing (SR) architecture leverages the source routing | |||
| paradigm. A group of inter-connected nodes that use SR forms an SR | paradigm. A group of inter-connected nodes that use SR forms an SR | |||
| domain. A segment represents either a topological instruction such | domain. A segment represents either a topological instruction such | |||
| skipping to change at page 3, line 31 ¶ | skipping to change at page 3, line 31 ¶ | |||
| to the MPLS dataplane ([I-D.ietf-spring-segment-routing-mpls]), the | to the MPLS dataplane ([I-D.ietf-spring-segment-routing-mpls]), the | |||
| SID consists of a label. | SID consists of a label. | |||
| [I-D.ietf-spring-segment-routing] also describes how segment routing | [I-D.ietf-spring-segment-routing] also describes how segment routing | |||
| can be applied to an IPv6 dataplane (SRv6) using an IPv6 routing | can be applied to an IPv6 dataplane (SRv6) using an IPv6 routing | |||
| header containing a stack of SR SIDs encoded as IPv6 addresses | header containing a stack of SR SIDs encoded as IPv6 addresses | |||
| [I-D.ietf-6man-segment-routing-header]. The applicability and | [I-D.ietf-6man-segment-routing-header]. The applicability and | |||
| support for Segment Routing over IPv6 is beyond the scope of this | support for Segment Routing over IPv6 is beyond the scope of this | |||
| document. | document. | |||
| A BGP-Prefix Segment (and its BGP Prefix-SID) is a BGP segment | A BGP-Prefix Segment is a BGP prefix with a Prefix-SID attached. A | |||
| attached to a BGP prefix. A BGP Prefix-SID is always a global SID | BGP Prefix-SID is always a global SID | |||
| ([I-D.ietf-spring-segment-routing]) within the SR/BGP domain (i.e., | ([I-D.ietf-spring-segment-routing]) within the SR domain (i.e., the | |||
| the set of Autonomous Systems under a common administration and | set of Autonomous Systems under a common administration and control | |||
| control and where SR is used) and identifies an instruction to | and where SR is used) and identifies an instruction to forward the | |||
| forward the packet over the Equal-Cost Multi-Path (ECMP) best-path | packet over the Equal-Cost Multi-Path (ECMP) best-path computed by | |||
| computed by BGP to the related prefix. The BGP Prefix-SID is the | BGP to the related prefix. The BGP Prefix-SID is the identifier of | |||
| identifier of the BGP prefix segment. In this document, we always | the BGP prefix segment. In this document, we always refer to the BGP | |||
| refer to the BGP segment by the BGP Prefix-SID. | segment by the BGP Prefix-SID. | |||
| This document describes the BGP extension to signal the BGP Prefix- | This document describes the BGP extension to signal the BGP Prefix- | |||
| SID. Specifically, this document defines a BGP attribute known as | SID. Specifically, this document defines a BGP attribute known as | |||
| the BGP Prefix-SID attribute and specifies the rules to originate, | the BGP Prefix-SID attribute and specifies the rules to originate, | |||
| receive, and handle error conditions for the attribute. | receive, and handle error conditions for the attribute. | |||
| The BGP Prefix-SID attribute defined in this document can be attached | The BGP Prefix-SID attribute defined in this document can be attached | |||
| to prefixes from Multiprotocol BGP labeled IPv4/IPv6 Unicast | to prefixes from Multiprotocol BGP IPv4/IPv6 Labeled Unicast | |||
| ([RFC4760], [RFC8277]). Usage of the BGP Prefix-SID attribute for | ([RFC4760], [RFC8277]). Usage of the BGP Prefix-SID attribute for | |||
| other Address Family Identifier (AFI)/ Subsequent Address Family | other Address Family Identifier (AFI)/ Subsequent Address Family | |||
| Identifier (SAFI) combinations is not defined herein but may be | Identifier (SAFI) combinations is not defined herein but may be | |||
| specified in future specifications. | specified in future specifications. | |||
| [I-D.ietf-spring-segment-routing-msdc] describes example use cases | [I-D.ietf-spring-segment-routing-msdc] describes example use cases | |||
| where the BGP Prefix-SID is used for the above AFI/SAFI combinations. | where the BGP Prefix-SID is used for the above AFI/SAFI combinations. | |||
| It should be noted that: | It should be noted that: | |||
| o A BGP Prefix-SID MAY be global between domains when the | o A BGP Prefix-SID MAY be global across ASes when the interconnected | |||
| interconnected domains agree on the SID allocation scheme. | ASes agree on the SID allocation scheme. Alternatively, when | |||
| Alternatively, when interconnecting domains, the ASBRs of each | interconnecting ASes, the ASBRs of each domain will have to handle | |||
| domain will have to handle the advertisement of unique SIDs. The | the advertisement of unique SIDs. The mechanisms for such | |||
| mechanisms for such interconnection are outside the scope of the | interconnection are outside the scope of the protocol extensions | |||
| protocol extensions defined in this document. | defined in this document. | |||
| o A BGP Prefix-SID MAY be attached to a prefix. In addition, each | o A BGP Prefix-SID MAY be attached to a prefix. This implies that | |||
| prefix will likely have a different AS_PATH attribute. This | each prefix is advertised individually, reducing the ability to | |||
| implies that each prefix is advertised individually, reducing the | pack BGP advertisements (when sharing common attributes). | |||
| ability to pack BGP advertisements (when sharing common | ||||
| attributes). | ||||
| 2. BGP-Prefix-SID | 2. BGP-Prefix-SID | |||
| The BGP Prefix-SID advertised for BGP prefix P indicates that the | The BGP Prefix-SID advertised for BGP prefix P indicates that the | |||
| segment routed path should be used (as described below) if the BGP | segment routed path should be used (as described below) if the BGP | |||
| best path selects the corresponding Network Layer Reachability | best path selects the corresponding Network Layer Reachability | |||
| Information (NLRI). | Information (NLRI). | |||
| 2.1. MPLS BGP Prefix SID | 2.1. MPLS BGP Prefix SID | |||
| The BGP Prefix-SID is realized on the MPLS dataplane | The BGP Prefix-SID is realized on the MPLS dataplane | |||
| ([I-D.ietf-spring-segment-routing-mpls]) in the following way: | ([I-D.ietf-spring-segment-routing-mpls]) in the following way: | |||
| The operator assigns a globally unique label index, L_I, to a | The operator assigns a globally unique label index, L_I, to a | |||
| locally sourced prefix of a BGP speaker N which is advertised to | locally originated prefix of a BGP speaker N which is advertised | |||
| all other BGP speakers in the SR domain. | to all other BGP speakers in the SR domain. | |||
| According to [I-D.ietf-spring-segment-routing], each BGP speaker | According to [I-D.ietf-spring-segment-routing], each BGP speaker | |||
| is configured with a label block called the Segment Routing Global | is configured with a label block called the Segment Routing Global | |||
| Block (SRGB). While [I-D.ietf-spring-segment-routing] recommends | Block (SRGB). While [I-D.ietf-spring-segment-routing] recommends | |||
| using the same SRGB across all the nodes within the SR domain, the | using the same SRGB across all the nodes within the SR domain, the | |||
| SRGB of a node is a local property and could be different on | SRGB of a node is a local property and could be different on | |||
| different speakers. The drawbacks of the use case where BGP | different speakers. The drawbacks of the use case where BGP | |||
| speakers have different SRGBs are documented in | speakers have different SRGBs are documented in | |||
| [I-D.ietf-spring-segment-routing] and | [I-D.ietf-spring-segment-routing] and | |||
| [I-D.ietf-spring-segment-routing-msdc]. | [I-D.ietf-spring-segment-routing-msdc]. | |||
| skipping to change at page 5, line 22 ¶ | skipping to change at page 5, line 21 ¶ | |||
| This document assumes that BGP-LS is the preferred method for | This document assumes that BGP-LS is the preferred method for | |||
| collecting both peer segments (Peer SIDs) and SRGB information | collecting both peer segments (Peer SIDs) and SRGB information | |||
| through [RFC7752], [I-D.ietf-idr-bgpls-segment-routing-epe], and | through [RFC7752], [I-D.ietf-idr-bgpls-segment-routing-epe], and | |||
| [I-D.ietf-idr-bgp-ls-segment-routing-ext]. However, as an | [I-D.ietf-idr-bgp-ls-segment-routing-ext]. However, as an | |||
| optional alternative for the advertisement of the local SRGB | optional alternative for the advertisement of the local SRGB | |||
| without the topology nor the peer SIDs, hence without | without the topology nor the peer SIDs, hence without | |||
| applicability for TE, the Originator SRGB TLV of the BGP Prefix- | applicability for TE, the Originator SRGB TLV of the BGP Prefix- | |||
| SID attribute is specified in Section 3.2 of this document. | SID attribute is specified in Section 3.2 of this document. | |||
| As defined in [I-D.ietf-spring-segment-routing], the label index | A BGP speaker will derive its local MPLS label L from the label | |||
| L_I is an offset into the SRGB. Each BGP speaker derives its | index L_I and its local SRGB as described in | |||
| local MPLS label, L, by adding L_I to the start value of its own | [I-D.ietf-spring-segment-routing-mpls]. The BGP speaker then | |||
| SRGB, and programs L in its MPLS dataplane as its incoming/local | programs the MPLS label L in its MPLS dataplane as its incoming/ | |||
| label for the prefix. It should be noted that while SRGBs and | local label for the prefix. See Section 4.1 for more details. | |||
| 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 | The outgoing label for the prefix is found in the NLRI of the | |||
| Multiprotocol BGP labeled IPv4/IPv6 Unicast prefix advertisement | Multiprotocol BGP IPv4/IPv6 Labeled Unicast prefix advertisement | |||
| as defined in [RFC8277]. The label index L_I is only used as a | as defined in [RFC8277]. The label index L_I is only used as a | |||
| hint to derive the local/incoming label. | hint to derive the local/incoming label. | |||
| Section 3.1 of this document specifies the Label-Index TLV of the | 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 | BGP Prefix-SID attribute; this TLV can be used to advertise the | |||
| label index for a given prefix. | 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. | ||||
| 3. BGP Prefix-SID Attribute | 3. BGP Prefix-SID Attribute | |||
| The BGP Prefix-SID attribute is an optional, transitive BGP path | The BGP Prefix-SID attribute is an optional, transitive BGP path | |||
| attribute. The attribute type code 40 has been assigned by IANA (see | attribute. The attribute type code 40 has been assigned by IANA (see | |||
| Section 7). | Section 7). | |||
| The BGP Prefix-SID attribute is defined here to be a set of elements | The BGP Prefix-SID attribute is defined here to be a set of elements | |||
| encoded as "Type/Length/Value" tuples (i.e., a set of TLVs). All BGP | encoded as "Type/Length/Value" tuples (i.e., a set of TLVs). All BGP | |||
| Prefix-SID attribute TLVs will start with a 1-octet type and a | Prefix-SID attribute TLVs will start with a 1-octet type and a | |||
| 2-octet length. The following TLVs are defined in this document: | 2-octet length. The following TLVs are defined in this document: | |||
| skipping to change at page 6, line 10 ¶ | skipping to change at page 6, line 4 ¶ | |||
| Section 7). | Section 7). | |||
| The BGP Prefix-SID attribute is defined here to be a set of elements | The BGP Prefix-SID attribute is defined here to be a set of elements | |||
| encoded as "Type/Length/Value" tuples (i.e., a set of TLVs). All BGP | encoded as "Type/Length/Value" tuples (i.e., a set of TLVs). All BGP | |||
| Prefix-SID attribute TLVs will start with a 1-octet type and a | Prefix-SID attribute TLVs will start with a 1-octet type and a | |||
| 2-octet length. The following TLVs are defined in this document: | 2-octet length. The following TLVs are defined in this document: | |||
| o Label-Index TLV | o Label-Index TLV | |||
| o Originator SRGB TLV | o Originator SRGB TLV | |||
| The Label-Index and Originator SRGB TLVs are used only when SR is | The Label-Index and Originator SRGB TLVs are used only when SR is | |||
| applied to the MPLS dataplane. | applied to the MPLS dataplane. | |||
| For future extensibility, unknown TLVs MUST be ignored and propagated | For future extensibility, unknown TLVs MUST be ignored and propagated | |||
| unmodified. | unmodified. | |||
| 3.1. Label-Index TLV | 3.1. Label-Index TLV | |||
| The Label-Index TLV MUST be present in the BGP Prefix-SID attribute | The Label-Index TLV MUST be present in the BGP Prefix-SID attribute | |||
| attached to Labeled IPv4/IPv6 unicast prefixes ([RFC8277]). It MUST | attached to IPv4/IPv6 Labeled Unicast prefixes ([RFC8277]). It MUST | |||
| be ignored when received for other BGP AFI/SAFI combinations. The | be ignored when received for other BGP AFI/SAFI combinations. The | |||
| Label-Index TLV has the following format: | Label-Index TLV has the following format: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length | RESERVED | | | Type | Length | RESERVED | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Flags | Label Index | | | Flags | Label Index | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 7, line 41 ¶ | skipping to change at page 7, line 36 ¶ | |||
| o Type is 3. | o Type is 3. | |||
| o Length is the total length in octets of the value portion of the | o Length is the total length in octets of the value portion of the | |||
| TLV: 2 + (non-zero multiple of 6). | TLV: 2 + (non-zero multiple of 6). | |||
| o Flags: 16 bits of flags. None are defined in this document. | o Flags: 16 bits of flags. None are defined in this document. | |||
| Flags MUST be clear on transmission and MUST be ignored on | Flags MUST be clear on transmission and MUST be ignored on | |||
| reception. | reception. | |||
| o SRGB: 3 octets of base followed by 3 octets of range. Note that | o SRGB: 3 octets specifying the first label in the range followed by | |||
| 3 octets specifying the number of labels in the range. Note that | ||||
| the SRGB field MAY appear multiple times. If the SRGB field | the SRGB field MAY appear multiple times. If the SRGB field | |||
| appears multiple times, the SRGB consists of multiple ranges that | appears multiple times, the SRGB consists of multiple ranges that | |||
| are concatenated. | are concatenated. | |||
| The Originator SRGB TLV contains the SRGB of the node originating the | The Originator SRGB TLV contains the SRGB of the node originating the | |||
| prefix to which the BGP Prefix-SID is attached. The Originator SRGB | prefix to which the BGP Prefix-SID is attached. The Originator SRGB | |||
| TLV MUST NOT be changed during the propagation of the BGP update. | TLV MUST NOT be changed during the propagation of the BGP update. It | |||
| is used to build segment routing policies when different SRGBs are | ||||
| The originator SRGB describes the SRGB of the node where the BGP | used in the fabric, for example | |||
| 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]). | ([I-D.ietf-spring-segment-routing-msdc]). | |||
| The receiving routers concatenate the ranges and build the Segment | Examples of how the receiving routers concatenate the ranges and | |||
| Routing Global Block (SRGB) as follows: | build their neighbor's Segment Routing Global Block (SRGB) are | |||
| included in [I-D.ietf-spring-segment-routing-mpls]). | ||||
| 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 | The originator SRGB may only appear in a BGP Prefix-SID attribute | |||
| attached to Labeled IPv4/IPv6 unicast prefixes ([RFC8277]). It MUST | attached to IPv4/IPv6 Labeled Unicast prefixes ([RFC8277]). It MUST | |||
| be ignored when received for other BGP AFI/SAFI combinations. Since | be ignored when received for other BGP AFI/SAFI combinations. Since | |||
| the Label-Index TLV is required for IPv4/IPv6 prefix applicability, | the Label-Index TLV is required for IPv4/IPv6 prefix applicability, | |||
| the originator SRGB will be ignored if it is not specified consistent | the originator SRGB will be ignored if it is not specified consistent | |||
| with Section 6. | with Section 6. | |||
| 4. Receiving BGP Prefix-SID Attribute | 4. Receiving BGP Prefix-SID Attribute | |||
| A BGP speaker receiving a BGP Prefix-SID attribute from an External | A BGP speaker receiving a BGP Prefix-SID attribute from an External | |||
| BGP (EBGP) neighbor residing outside the boundaries of the SR domain | BGP (EBGP) neighbor residing outside the boundaries of the SR domain | |||
| MUST discard the attribute unless it is configured to accept the | MUST discard the attribute unless it is configured to accept the | |||
| attribute from the EBGP neighbor. A BGP speaker SHOULD log an error | attribute from the EBGP neighbor. A BGP speaker SHOULD log an error | |||
| for further analysis when discarding an attribute. | for further analysis when discarding an attribute. | |||
| 4.1. MPLS Dataplane: Labeled Unicast | 4.1. MPLS Dataplane: Labeled Unicast | |||
| A BGP session supporting the Multiprotocol BGP labeled IPv4 or IPv6 | A BGP session supporting the Multiprotocol BGP labeled IPv4 or IPv6 | |||
| Unicast ([RFC8277]) AFI/SAFI is required. | Unicast ([RFC8277]) AFI/SAFI is required. | |||
| The BGP Prefix-SID attribute MUST contain the Label-Index TLV and MAY | When the BGP Prefix-SID attribute is attached to a BGP labeled IPv4 | |||
| contain the Originator SRGB TLV. A BGP Prefix-SID attribute received | or IPv6 Unicast [RFC8277] AFI/SAFI, it MUST contain the Label-Index | |||
| without a Label-Index TLV MUST be considered as "invalid" by the | TLV and MAY contain the Originator SRGB TLV. A BGP Prefix-SID | |||
| receiving speaker. | attribute received without a Label-Index TLV MUST be considered as | |||
| "invalid" by the receiving speaker. | ||||
| The label index provides the receiving BGP speaker with guidance as | The label index provides guidance to the receiving BGP speaker as to | |||
| to the incoming label that SHOULD be assigned by that BGP speaker. | the incoming label that SHOULD be allocated to the prefix. | |||
| A BGP speaker may be locally configured with an SRGB=[SRGB_Start, | A BGP speaker may be locally configured with an SRGB=[SRGB_Start, | |||
| SRGB_End]. The preferred method for deriving the SRGB is a matter of | SRGB_End]. The preferred method for deriving the SRGB is a matter of | |||
| local node configuration. | local node configuration. | |||
| The mechanisms through which a given label index value is assigned to | The mechanisms through which a given label index value is assigned to | |||
| a given prefix are outside the scope of this document. | a given prefix are outside the scope of this document. | |||
| Given a label index L_I, we refer to (L = L_I + SRGB_Start) as the | 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 | derived label. A BGP Prefix-SID attribute is designated | |||
| skipping to change at page 9, line 44 ¶ | skipping to change at page 9, line 21 ¶ | |||
| the best path, it SHOULD program the derived label as the label for | the best path, it SHOULD program the derived label as the label for | |||
| the prefix in its local MPLS dataplane. | the prefix in its local MPLS dataplane. | |||
| When a BGP speaker receives a path from a neighbor with an "invalid" | When a BGP speaker receives a path from a neighbor with an "invalid" | |||
| or "conflicting" BGP Prefix-SID attribute or when a BGP speaker | or "conflicting" BGP Prefix-SID attribute or when a BGP speaker | |||
| receives a path from a neighbor with a BGP Prefix-SID attribute but | receives a path from a neighbor with a BGP Prefix-SID attribute but | |||
| is unable to process it (e.g., local policy disables the | is unable to process it (e.g., local policy disables the | |||
| functionality), it MUST ignore the BGP Prefix-SID attribute. For the | functionality), it MUST ignore the BGP Prefix-SID attribute. For the | |||
| purposes of label allocation, a BGP speaker MUST assign a local (also | purposes of label allocation, a BGP speaker MUST assign a local (also | |||
| called dynamic) label (non-SRGB) for such a prefix as per classic | called dynamic) label (non-SRGB) for such a prefix as per classic | |||
| Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]) operation. | Multiprotocol BGP IPv4/IPv6 Labeled Unicast ([RFC8277]) operation. | |||
| In the case of an "invalid" BGP Prefix-SID attribute, a BGP speaker | In the case of an "invalid" BGP Prefix-SID attribute, a BGP speaker | |||
| MUST follow the error handling rules specified in Section 6. A BGP | MUST follow the error handling rules specified in Section 6. A BGP | |||
| speaker SHOULD log an error for further analysis. In the case of a | speaker SHOULD log an error for further analysis. In the case of a | |||
| "conflicting" BGP Prefix-SID attribute, a BGP speaker SHOULD NOT | "conflicting" BGP Prefix-SID attribute, a BGP speaker SHOULD NOT | |||
| treat it as error and SHOULD propagate the attribute unchanged. A | treat it as error and SHOULD propagate the attribute unchanged. A | |||
| BGP Speaker SHOULD log a warning for further analysis, i.e., in the | BGP Speaker SHOULD log a warning for further analysis, i.e., in the | |||
| case the conflict is not due to a label index transition. | case the conflict is not due to a label index transition. | |||
| When a BGP Prefix-SID attribute changes and transitions from | When a BGP Prefix-SID attribute changes and transitions from | |||
| "conflicting" to "acceptable", the BGP Prefix-SID attributes for | "conflicting" to "acceptable", the BGP Prefix-SID attributes for | |||
| other prefixes may also transition to "acceptable" as well. | other prefixes may also transition to "acceptable" as well. | |||
| Implementations SHOULD assure all impacted prefixes revert to using | Implementations SHOULD assure all impacted prefixes revert to using | |||
| the label indices corresponding to these newly "acceptable" BGP | the label indices corresponding to these newly "acceptable" BGP | |||
| Prefix-SID attributes. | Prefix-SID attributes. | |||
| The outgoing label is always programmed as per classic Multiprotocol | The outgoing label is always programmed as per classic Multiprotocol | |||
| BGP labeled IPv4/IPv6 Unicast ([RFC8277]) operation. Specifically, a | BGP IPv4/IPv6 Labeled Unicast ([RFC8277]) operation. Specifically, a | |||
| BGP speaker receiving a prefix with a BGP Prefix-SID attribute and a | BGP speaker receiving a prefix with a BGP Prefix-SID attribute and a | |||
| label NLRI field of Implicit NULL [RFC3032] from a neighbor MUST | label NLRI field of Implicit NULL [RFC3032] from a neighbor MUST | |||
| adhere to standard behavior and program its MPLS dataplane to pop the | adhere to standard behavior and program its MPLS dataplane to pop the | |||
| top label when forwarding traffic to the prefix. The label NLRI | top label when forwarding traffic to the prefix. The label NLRI | |||
| defines the outbound label that MUST be used by the receiving node. | defines the outbound label that MUST be used by the receiving node. | |||
| 5. Advertising BGP Prefix-SID Attribute | 5. Advertising BGP Prefix-SID Attribute | |||
| The BGP Prefix-SID attribute MAY be attached to labeled BGP prefixes | The BGP Prefix-SID attribute MAY be attached to BGP IPv4/IPv6 Label | |||
| (IPv4/IPv6) [RFC8277]. In order to prevent distribution of the BGP | Unicast prefixes [RFC8277]. In order to prevent distribution of the | |||
| Prefix-SID attribute beyond its intended scope of applicability, | BGP Prefix-SID attribute beyond its intended scope of applicability, | |||
| attribute filtering SHOULD be deployed to remove the BGP Prefix-SID | attribute filtering SHOULD be deployed to remove the BGP Prefix-SID | |||
| attribute at the administrative boundary of the segment routing | attribute at the administrative boundary of the segment routing | |||
| domain. | domain. | |||
| A BGP speaker that advertises a path received from one of its | A BGP speaker that advertises a path received from one of its | |||
| neighbors SHOULD advertise the BGP Prefix-SID received with the path | neighbors SHOULD advertise the BGP Prefix-SID received with the path | |||
| without modification, as long as the BGP Prefix-SID was acceptable. | without modification, as long as the BGP Prefix-SID was acceptable. | |||
| If the path did not come with a BGP Prefix-SID attribute, the speaker | If the path did not come with a BGP Prefix-SID attribute, the speaker | |||
| MAY attach a BGP Prefix-SID to the path if configured to do so. The | MAY attach a BGP Prefix-SID to the path if configured to do so. The | |||
| content of the TLVs present in the BGP Prefix-SID is determined by | content of the TLVs present in the BGP Prefix-SID is determined by | |||
| the configuration. | the configuration. | |||
| 5.1. MPLS Dataplane: Labeled Unicast | 5.1. MPLS Dataplane: Labeled Unicast | |||
| A BGP speaker that originates a prefix attaches the BGP Prefix-SID | A BGP speaker that originates a prefix attaches the BGP Prefix-SID | |||
| attribute when it advertises the prefix to its neighbors via | attribute when it advertises the prefix to its neighbors via | |||
| Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]). The value | Multiprotocol BGP IPv4/IPv6 Labeled Unicast ([RFC8277]). The value | |||
| of the label index in the Label-Index TLV is determined by | of the label index in the Label-Index TLV is determined by | |||
| configuration. | configuration. | |||
| A BGP speaker that originates a BGP Prefix-SID attribute MAY | A BGP speaker that originates a BGP Prefix-SID attribute MAY | |||
| optionally announce the Originator SRGB TLV along with the mandatory | optionally announce the Originator SRGB TLV along with the mandatory | |||
| Label-Index TLV. The content of the Originator SRGB TLV is | Label-Index TLV. The content of the Originator SRGB TLV is | |||
| determined by configuration. | determined by configuration. | |||
| Since the label index value must be unique within an SR domain, by | Since the label index value must be unique within an SR domain, by | |||
| default an implementation SHOULD NOT advertise the BGP Prefix-SID | default an implementation SHOULD NOT advertise the BGP Prefix-SID | |||
| skipping to change at page 11, line 17 ¶ | skipping to change at page 10, line 43 ¶ | |||
| In all cases, the label field of the advertised NLRI ([RFC8277], | In all cases, the label field of the advertised NLRI ([RFC8277], | |||
| [RFC4364]) MUST be set to the local/incoming label programmed in the | [RFC4364]) MUST be set to the local/incoming label programmed in the | |||
| MPLS dataplane for the given advertised prefix. If the prefix is | MPLS dataplane for the given advertised prefix. If the prefix is | |||
| associated with one of the BGP speaker's interfaces, this is the | associated with one of the BGP speaker's interfaces, this is the | |||
| usual MPLS label (such as the Implicit or Explicit NULL label | usual MPLS label (such as the Implicit or Explicit NULL label | |||
| [RFC3032]). | [RFC3032]). | |||
| 6. Error Handling of BGP Prefix-SID Attribute | 6. Error Handling of BGP Prefix-SID Attribute | |||
| When a BGP Speaker receives a BGP Update message containing a | When a BGP Speaker receives a BGP Update message containing a | |||
| malformed or invalid BGP Prefix-SID attribute attached to a Labeled | malformed or invalid BGP Prefix-SID attribute attached to a IPv4/IPv6 | |||
| IPv4/IPv6 unicast prefix [RFC8277], it MUST ignore the received BGP | Labeled Unicast prefix [RFC8277], it MUST ignore the received BGP | |||
| Prefix-SID attributes and not advertise it to other BGP peers. In | Prefix-SID attributes and not advertise it to other BGP peers. In | |||
| this context, a malformed BGP Prefix-SID attribute is one that cannot | this context, a malformed BGP Prefix-SID attribute is one that cannot | |||
| be parsed due to not meeting the minimum attribute length | be parsed due to not meeting the minimum attribute length | |||
| requirement, contains a TLV length that doesn't conform to the length | requirement, contains a TLV length that doesn't conform to the length | |||
| constraints for the TLV, or a contains TLV length that would extend | constraints for the TLV, or a contains TLV length that would extend | |||
| beyond the end of the attribute (as defined by the attribute length). | beyond the end of the attribute (as defined by the attribute length). | |||
| This is equivalent to the "Attribute discard" action specified in | This is equivalent to the "Attribute discard" action specified in | |||
| [RFC7606]. When discarding an attribute, a BGP speaker SHOULD log an | [RFC7606]. When discarding an attribute, a BGP speaker SHOULD log an | |||
| error for further analysis. | error for further analysis. | |||
| Consistent with [RFC7606], only the first occurrence of the BGP | As per with [RFC7606], if the BGP Prefix-SID attribute appears more | |||
| Prefix-SID attribute will be considered and subsequent occurrences | than once in an UPDATE message, then all the occurrences of the | |||
| will be discarded. Similarly, only the first occurrence of a BGP | attribute other than the first one SHALL be discarded and the UPDATE | |||
| Prefix-SID attribute TLV of a given TLV type will be considered | message will continue to be processed. Similarly, if a recognized | |||
| unless the specification of that TLV type allows for multiple | TLV appears more than once in an BGP Prefix-SID attribute while the | |||
| occurrences. | specification only allows for a single occurrence, then all the | |||
| occurrences of the TLV other than the first one SHALL be discarded | ||||
| and the Prefix-SID attribute will continue to be processed. | ||||
| For future extensibility, unknown TLVs MUST be ignored and propagated | For future extensibility, unknown TLVs MUST be ignored and propagated | |||
| unmodified. | unmodified. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document defines a BGP path attribute known as the BGP Prefix- | This document defines a BGP path attribute known as the BGP Prefix- | |||
| SID attribute. This document requests IANA to assign an attribute | SID attribute. This document requests IANA to assign an attribute | |||
| code type (suggested value: 40) to the BGP Prefix-SID attribute from | code type (suggested value: 40) to the BGP Prefix-SID attribute from | |||
| the BGP Path Attributes registry. | the BGP Path Attributes registry. | |||
| skipping to change at page 12, line 25 ¶ | skipping to change at page 11, line 52 ¶ | |||
| 0 Reserved this document | 0 Reserved this document | |||
| 1 Label-Index this document | 1 Label-Index this document | |||
| 2 Deprecated this document | 2 Deprecated this document | |||
| 3 Originator SRGB this document | 3 Originator SRGB this document | |||
| 4-254 Unassigned | 4-254 Unassigned | |||
| 255 Reserved this document | 255 Reserved this document | |||
| This document also requests creation of the "BGP Prefix-SID Label- | This document also requests creation of the "BGP Prefix-SID Label- | |||
| Index TLV Flags" registry under the "Border Gateway Protocol (BGP) | Index TLV Flags" registry under the "Border Gateway Protocol (BGP) | |||
| Parameters" registry, Reference: draft-ietf-idr-bgp-prefix-sid. | Parameters" registry, Reference: draft-ietf-idr-bgp-prefix-sid. | |||
| Initially, this 16 bit flags registry will be empty. Flag bits will | Initially, this 16-bit flags registry will be empty. Flag bits will | |||
| be allocated First Come First Served (FCFS) consistent with the BGP | be allocated First Come First Served (FCFS) consistent with the BGP | |||
| Prefix-SID TLV Types registry. | Prefix-SID TLV Types registry. | |||
| Finally, this document requests creation of the "BGP Prefix-SID | Finally, this document requests creation of the "BGP Prefix-SID | |||
| Originator SRGB TLV Flags" registry under the "Border Gateway | Originator SRGB TLV Flags" registry under the "Border Gateway | |||
| Protocol (BGP) Parameters" registry, Reference: draft-ietf-idr-bgp- | Protocol (BGP) Parameters" registry, Reference: draft-ietf-idr-bgp- | |||
| prefix-sid. Initially, this 16 bit flags registry will be empty. | prefix-sid. Initially, this 16-bit flags registry will be empty. | |||
| Flag bits will be allocated First Come First Served (FCFS) consistent | Flag bits will be allocated First Come First Served (FCFS) consistent | |||
| with the BGP Prefix-SID TLV Types registry. | with the BGP Prefix-SID TLV Types registry. | |||
| 8. Manageability Considerations | 8. Manageability Considerations | |||
| This document defines a BGP attribute to address use cases such as | This document defines a BGP attribute to address use cases such as | |||
| the one described in [I-D.ietf-spring-segment-routing-msdc]. It is | the one described in [I-D.ietf-spring-segment-routing-msdc]. It is | |||
| assumed that advertisement of the BGP Prefix-SID attribute is | assumed that advertisement of the BGP Prefix-SID attribute is | |||
| controlled by the operator in order to: | controlled by the operator in order to: | |||
| skipping to change at page 13, line 36 ¶ | skipping to change at page 13, line 15 ¶ | |||
| doesn't want to leak any information related to internal prefixes and | doesn't want to leak any information related to internal prefixes and | |||
| topology outside of the administrative domain. The internal | topology outside of the administrative domain. The internal | |||
| information includes the BGP Prefix-SID. In order to prevent such | information includes the BGP Prefix-SID. In order to prevent such | |||
| leaking, the common BGP mechanisms (filters) are applied at the | leaking, the common BGP mechanisms (filters) are applied at the | |||
| boundary of the SR/administrative domain. Local BGP attribute | boundary of the SR/administrative domain. Local BGP attribute | |||
| filtering policies and mechanisms are not standardized and, | filtering policies and mechanisms are not standardized and, | |||
| consequently, beyond the scope of this document. | consequently, beyond the scope of this document. | |||
| To prevent a Denial-of-Service (DoS) or Distributed-Denial-of-Service | To prevent a Denial-of-Service (DoS) or Distributed-Denial-of-Service | |||
| (DDoS) attack due to excessive BGP updates with an invalid or | (DDoS) attack due to excessive BGP updates with an invalid or | |||
| conflicting BGP Prefix-SID attribute, message rate-limiting as well | conflicting BGP Prefix-SID attribute, error log message rate-limiting | |||
| as suppression of duplicate messages SHOULD be deployed. | as well as suppression of duplicate error log messages SHOULD be | |||
| deployed. | ||||
| 10. Contributors | 10. Contributors | |||
| Keyur Patel | Keyur Patel | |||
| Arrcus, Inc. | Arrcus, Inc. | |||
| US | US | |||
| Email: Keyur@arrcus.com | Email: Keyur@arrcus.com | |||
| Saikat Ray | Saikat Ray | |||
| skipping to change at page 14, line 13 ¶ | skipping to change at page 13, line 41 ¶ | |||
| Email: raysaikat@gmail.com | Email: raysaikat@gmail.com | |||
| 11. Acknowledgements | 11. Acknowledgements | |||
| The authors would like to thank Satya Mohanty for his contribution to | The authors would like to thank Satya Mohanty for his contribution to | |||
| this document. | this document. | |||
| The authors would like to thank Alvaro Retana for substantive | The authors would like to thank Alvaro Retana for substantive | |||
| comments as part of the Routing AD review. | comments as part of the Routing AD review. | |||
| The authors would like to thank Bruno Decraene for substantive | ||||
| comments and suggested text as part of the Routing Directorate | ||||
| review. | ||||
| The authors would like to thank Shyam Sethuram for comments and | The authors would like to thank Shyam Sethuram for comments and | |||
| discussion of TLV processing and validation. | discussion of TLV processing and validation. | |||
| The authors would like to thank Robert Raszuk for comments and | The authors would like to thank Robert Raszuk for comments and | |||
| suggestions regarding the MPLS data plane behavior. | suggestions regarding the MPLS data plane behavior. | |||
| The authors would like to thank Krishna Deevi, Juan Alcaide, Howard | The authors would like to thank Krishna Deevi, Juan Alcaide, Howard | |||
| Yang, and Jakob Heitz for discussions on conflicting BGP Prefix-SID | Yang, and Jakob Heitz for discussions on conflicting BGP Prefix-SID | |||
| label indices and BGP add paths. | label indices and BGP add paths. | |||
| End of changes. 36 change blocks. | ||||
| 95 lines changed or deleted | 79 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||