idnits 2.17.1 draft-keyupate-idr-bgp-prefix-sid-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (July 6, 2015) is 3211 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 3107 (Obsoleted by RFC 8277) == Outdated reference: A later version (-05) exists of draft-filsfils-spring-segment-routing-central-epe-03 == Outdated reference: A later version (-03) exists of draft-filsfils-spring-segment-routing-msdc-01 == Outdated reference: A later version (-19) exists of draft-ietf-idr-bgpls-segment-routing-epe-00 == Outdated reference: A later version (-15) exists of draft-ietf-spring-segment-routing-03 == Outdated reference: A later version (-08) exists of draft-previdi-6man-segment-routing-header-06 Summary: 1 error (**), 0 flaws (~~), 6 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IDR K. Patel 3 Internet-Draft S. Previdi 4 Intended status: Standards Track C. Filsfils 5 Expires: January 7, 2016 A. Sreekantiah 6 Cisco Systems 7 S. Ray 8 Unaffiliated 9 H. Gredler 10 Juniper Networks 11 July 6, 2015 13 Segment Routing Prefix SID extensions for BGP 14 draft-keyupate-idr-bgp-prefix-sid-04 16 Abstract 18 Segment Routing (SR) architecture allows a node to steer a packet 19 flow through any topological path and service chain by leveraging 20 source routing. The ingress node prepends a SR header to a packet 21 containing a set of "segments". Each segment represents a 22 topological or a service-based instruction. Per-flow state is 23 maintained only at the ingress node of the SR domain. 25 This document describes the BGP extension for announcing BGP Prefix 26 Segment Identifier (BGP Prefix SID) information. 28 Requirements Language 30 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 31 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 32 document are to be interpreted as described in RFC 2119 [RFC2119] 33 only when they appear in all upper case. They may also appear in 34 lower or mixed case as English words, without any normative meaning. 36 Status of This Memo 38 This Internet-Draft is submitted in full conformance with the 39 provisions of BCP 78 and BCP 79. 41 Internet-Drafts are working documents of the Internet Engineering 42 Task Force (IETF). Note that other groups may also distribute 43 working documents as Internet-Drafts. The list of current Internet- 44 Drafts is at http://datatracker.ietf.org/drafts/current/. 46 Internet-Drafts are draft documents valid for a maximum of six months 47 and may be updated, replaced, or obsoleted by other documents at any 48 time. It is inappropriate to use Internet-Drafts as reference 49 material or to cite them other than as "work in progress." 51 This Internet-Draft will expire on January 7, 2016. 53 Copyright Notice 55 Copyright (c) 2015 IETF Trust and the persons identified as the 56 document authors. All rights reserved. 58 This document is subject to BCP 78 and the IETF Trust's Legal 59 Provisions Relating to IETF Documents 60 (http://trustee.ietf.org/license-info) in effect on the date of 61 publication of this document. Please review these documents 62 carefully, as they describe your rights and restrictions with respect 63 to this document. Code Components extracted from this document must 64 include Simplified BSD License text as described in Section 4.e of 65 the Trust Legal Provisions and are provided without warranty as 66 described in the Simplified BSD License. 68 Table of Contents 70 1. Segment Routing Documents . . . . . . . . . . . . . . . . . . 3 71 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 72 3. BGP-Prefix-SID . . . . . . . . . . . . . . . . . . . . . . . 4 73 3.1. MPLS Prefix Segment . . . . . . . . . . . . . . . . . . . 4 74 3.2. IPv6 Prefix Segment . . . . . . . . . . . . . . . . . . . 5 75 4. BGP-Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5 76 4.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 6 77 4.2. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 7 78 4.3. Neighbor SRGB TLV . . . . . . . . . . . . . . . . . . . . 8 79 5. Receiving BGP-Prefix-SID Attribute . . . . . . . . . . . . . 9 80 5.1. MPLS Dataplane . . . . . . . . . . . . . . . . . . . . . 10 81 5.1.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . 10 82 5.1.2. MPLS Dataplane: Unlabeled Unicast . . . . . . . . . . 10 83 5.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 11 84 6. Announcing BGP-Prefix-SID Attribute . . . . . . . . . . . . . 11 85 6.1. MPLS Dataplane . . . . . . . . . . . . . . . . . . . . . 11 86 6.1.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . 12 87 6.1.2. MPLS Dataplane: Unlabeled Unicast . . . . . . . . . . 12 88 6.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 12 89 7. Error Handling of BGP-Prefix-SID Attribute . . . . . . . . . 13 90 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 91 9. Security Considerations . . . . . . . . . . . . . . . . . . . 14 92 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 93 11. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 14 94 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 95 12.1. Normative References . . . . . . . . . . . . . . . . . . 14 96 12.2. Informative References . . . . . . . . . . . . . . . . . 14 97 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 99 1. Segment Routing Documents 101 The main references for this document are the SR architecture defined 102 in [I-D.ietf-spring-segment-routing]and the related use case 103 illustrated in [I-D.filsfils-spring-segment-routing-msdc]. 105 The Segment Routing Egress Peer Engineering architecture is described 106 in [I-D.filsfils-spring-segment-routing-central-epe]. 108 The Segment Routing Egress Peer Engineering BGPLS extensions are 109 described in [I-D.ietf-idr-bgpls-segment-routing-epe]. 111 2. Introduction 113 Segment Routing (SR) architecture leverages the source routing 114 paradigm. A group of inter-connected nodes that use SR forms a SR 115 domain. The ingress node of the SR domain prepends a SR header 116 containing "segments" to an incoming packet. Each segment represents 117 a topological instruction such as "go to prefix P following shortest 118 path" or a service instruction (e.g.: "pass through deep packet 119 inspection"). By inserting the desired sequence of instructions, the 120 ingress node is able to steer a packet via any topological path and/ 121 or service chain; per-flow state is maintained only at the ingress 122 node of the SR domain. 124 Each segment is identified by a Segment Identifier (SID). As 125 described in [I-D.ietf-spring-segment-routing], when SR is applied to 126 the MPLS dataplane the SID consists of a label while when SR is 127 applied to the IPv6 dataplane the SID consists of an IPv6 prefix (see 128 [I-D.previdi-6man-segment-routing-header]). 130 A BGP-Prefix Segment (aka BGP-Prefix-SID), is a BGP segment attached 131 to a BGP prefix. A BGP-Prefix-SID is always global within the SR/BGP 132 domain and identifies an instruction to forward the packet over the 133 ECMP-aware best-path computed by BGP to the related prefix. The BGP- 134 Prefix-SID is the identifier of the BGP prefix segment. 136 This document describes the BGP extension to signal the BGP-Prefix- 137 SID. Specifically, this document defines a new BGP attribute known 138 as the BGP Prefix SID attribute and specifies the rules to originate, 139 receive and handle error conditions of the new attribute. 141 As described in [I-D.filsfils-spring-segment-routing-msdc], the newly 142 proposed BGP Prefix-SID attribute can be attached to prefixes from 143 different AFI/SAFI: 145 Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC3107]). 147 Multiprotocol BGP ([RFC4760]) unlabeled IPv4/IPv6 Unicast. 149 BGP4 ([RFC4271]). 151 [I-D.filsfils-spring-segment-routing-msdc] describes use cases where 152 the Prefix-SID is used for all the above BGP flavors. 154 3. BGP-Prefix-SID 156 The BGP-Prefix-SID attached to a BGP prefix P represents the 157 instruction "go to Prefix P" along its BGP bestpath (potentially 158 ECMP-enabled). 160 3.1. MPLS Prefix Segment 162 The BGP Prefix Segment is realized on the MPLS dataplane in the 163 following way: 165 According to [I-D.ietf-spring-segment-routing], each BGP speaker 166 is configured with a label block called the Segment Routing Global 167 Block (SRGB). The SRGB of a node is a local property and could be 168 different on different speakers. 170 As described in [I-D.filsfils-spring-segment-routing-msdc] the 171 operator assigns a globally unique "index", L_I, to a locally 172 sourced prefix of a BGP speaker N which is advertised to all other 173 BGP speakers in the SR domain. 175 The index L_I is a 32 bit offset in the SRGB. Each BGP speaker 176 derives its local MPLS label, L, by adding L_I to the start value 177 of its own SRGB, and programs L in its MPLS dataplane as its 178 incoming/local label for the prefix. 180 If the BGP speakers are configured with the same SRGB start value, 181 they will all program the same MPLS label for a given prefix P. 182 This has the effect of having a single label for prefix P across 183 all BGP speakers despite that the MPLS paradigm of "local label" 184 is preserved and this clearly simplifies the deployment and 185 operations of traffic engineering in BGP driven networks, as 186 described in [I-D.filsfils-spring-segment-routing-msdc]. 188 If the BGP speakers cannot be configured with the same SRGB, the 189 proposed BGP Prefix-SID attribute allows the advertisement of the 190 SRGB so each node can advertise the SRGB it's configured with. The 191 drawbacks of the use case where BGP speakers have different SRGBs are 192 documented in [I-D.filsfils-spring-segment-routing-msdc]. 194 In order to advertise the label index of a given prefix P and, 195 optionally, the SRGB, a new extension to BGP is needed: the BGP 196 Prefix SID attribute. This extension is described in subsequent 197 sections. 199 3.2. IPv6 Prefix Segment 201 As defined in [I-D.previdi-6man-segment-routing-header], in SR for 202 the IPv6 dataplane, the SRGB consists of the set of IPv6 addresses 203 used within the SR domain (as described in 204 [I-D.previdi-6man-segment-routing-header]), therefore the BGP speaker 205 willing to process SR IPv6 packets MUST advertise an IPv6 prefix with 206 the attached Prefix SID attribute and related SR IPv6 flag (see 207 subsequent section). 209 As described in [I-D.filsfils-spring-segment-routing-msdc], when SR 210 is used over an IPv6 dataplane, the BGP Prefix Segment is 211 instantiated by an IPv6 prefix originated by the BGP speaker. 213 Each node advertises a globally unique IPv6 address representing 214 itself in the domain. This prefix (e.g.: its loopback interface 215 address) is advertised to all other BGP speakers in the SR domain. 217 Also, each node MUST advertise its support of Segment Routing for 218 IPv6 dataplane. This is realized using the Prefix SID Attribute 219 defined here below. 221 4. BGP-Prefix-SID Attribute 223 BGP Prefix SID attribute is an optional, transitive BGP path 224 attribute. The attribute type code is to be assigned by IANA 225 (suggested value: 40). The value field of the BGP-Prefix-SID 226 attribute has the following format: 228 The value field of the BGP Prefix SID attribute is defined here to be 229 a set of elements encoded as "Type/Length/Value" (i.e., a set of 230 TLVs). Following TLVs are defined: 232 o Label-Index TLV 234 o Originator SRGB TLV 236 o Neighbor SRGB TLV 238 Originator SRGB and Neighbor SRGB TLVs are used only when SR is 239 applied to the MPLS dataplane. 241 4.1. Label-Index TLV 243 The Label-Index TLV MUST be present in the Prefix-SID attribute and 244 has the following format: 246 0 1 2 3 247 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 248 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 249 | Type | Length | RESERVED | 250 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 251 | Flags | Label Index | 252 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 253 | Label Index | 254 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 256 where: 258 o Type is 1. 260 o Length: is 7, the total length of the value portion of the TLV. 262 o RESERVED: 8 bit field. SHOULD be 0 on transmission and MUST be 263 ignored on reception. 265 o Flags: 16 bits of flags. Following is defined: 267 0 1 268 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 269 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 270 |S| | 271 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 273 where: 275 * S flag: if set then it means that the BGP speaker attaching the 276 Prefix-SID Attribute to a prefix it originates is capable of 277 processing the IPv6 Segment Routing Header (SRH, 278 [I-D.previdi-6man-segment-routing-header]) for the segment 279 corresponding to the originated IPv6 prefix. The use case 280 leveraging the S flag is described in 281 [I-D.filsfils-spring-segment-routing-msdc]. 283 The other bits of the flag field SHOULD be clear on transmission 284 an MUST be ignored at reception. 286 o Label Index: 32 bit value representing the index value in the SRGB 287 space. If the S flag is set, the index SHOULD be clear on 288 transmission an MUST be ignored at reception. 290 4.2. Originator SRGB TLV 292 The Originator SRGB TLV is an optional TLV and has the following 293 format: 295 0 1 2 3 296 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 297 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 298 | Type | Length | Flags | 299 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 300 | Flags | 301 +-+-+-+-+-+-+-+-+ 303 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 304 | SRGB 1 (6 octets) | 305 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 306 | | 307 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 309 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 310 | SRGB n (6 octets) | 311 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 312 | | 313 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 315 where: 317 o Type is 2. 319 o Length is the total length of the value portion of the TLV: 5 + 320 multiple of 12. 322 o Flags: 16 bits of flags. None are defined in this document. 323 Flags SHOULD be clear on transmission an MUST be ignored at 324 reception. 326 o SRGB: 3 octets of base followed by 3 octets of range. Note that 327 SRGB field MAY appear multiple times. 329 The Originator SRGB TLV contains the SRGB of the router originating 330 the prefix to which the BGP Prefix SID is attached and MUST be kept 331 in the Prefix-SID Attribute unchanged during the propagation of the 332 BGP update. 334 The originator SRGB describes the SRGB of the node where the BGP 335 Prefix Segment end. It is used to build SRTE policies when different 336 SRGB's are used in the fabric 337 ([I-D.filsfils-spring-segment-routing-msdc]). 339 The originator SRGB may only appear on Prefix-SID attribute attached 340 to prefixes of SAFI 4 (labeled unicast, [RFC3107]). 342 4.3. Neighbor SRGB TLV 344 The Neighbor SRGB TLV is an optional TLV and has the following 345 format: 347 0 1 2 3 348 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 349 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 350 | Type | Length | Flags | 351 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 352 | Flags | 353 +-+-+-+-+-+-+-+-+ 355 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 356 | Local Address (4 or 16 octets) | 357 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 359 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 360 | SRGB 1 (6 octets) | 361 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 362 | | 363 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 365 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 366 | SRGB n (6 octets) | 367 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 368 | | 369 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 371 where: 373 o Type is 3. 375 o Length is the total length of the value portion of the TLV. When 376 the BGP Update contains an IPv4 prefix (AFI 1 or BGP4) the length 377 is 4 + multiple of 12. When the BGP update contains an IPv6 378 prefix (AFI 2) the length is 16 + multiple of 12. 380 o Flags: 16 bits of flags. None are defined in this document. 381 Flags SHOULD be clear on transmission an MUST be ignored at 382 reception. 384 o Local Address: when the BGP Update contains an IPv4 prefix (AFI 1 385 or BGP4) the Local Address MUST contain a 4 octet IPv4 address. 387 When the BGP Update contains an IPv6 prefix (AFI 2) the Local 388 Address MUST contain a 4 octet IPv4 address. 390 o SRGB: 3 octets of base followed by 3 octets of range. Note that 391 SRGB field MAY appear multiple times. 393 The Neighbor SRGB TLV contains the local SRGB of the BGP speaker 394 originating the Neighbor SRGB TLV. 396 The Neighbor SRGB TLV may only be present on Prefix-SID attribute 397 attached to an unlabeled prefix: BGP4 ([RFC4271]) or SAFI 1. 399 The BGP speaker originating the Neighbor SRGB TLV MUST specify the 400 local IPv4 or IPv6 address for the BGP session on which the 401 corresponding NLRI is being advertised. 403 The Neighbor SRGB TLV has a significance only for the neighbors of 404 the BGP speaker originating it. The Neighbor SRGB TLV MUST be 405 rewritten at each hop during the advertisement/propagation of the 406 prefix. At each hop the BGP speaker receiving a prefix with a 407 Prefix-SID attached to it and with a "Local Address" MUST override 408 the "Local Address" value. 410 The Neighbor SRGB TLV is only used when the dataplane is MPLS and the 411 the BGP Prefix SID is associated with an NLRI propagated by unlabeled 412 BGP signaling (BGP4 or SAFI 1). It allows the receiving BGP speaker 413 to determine the outgoing label to program in the dataplane (see 414 [I-D.filsfils-spring-segment-routing-msdc]). 416 In case of a labeled unicast IPv4 or IPv6 prefixes ([RFC3107]), the 417 label value in the NLRI MUST be used as outgoing label value for the 418 prefix the Prefix-SID attribute is attached to and the Neighbor SRGB 419 TLV MUST NOT be used. 421 5. Receiving BGP-Prefix-SID Attribute 423 A BGP speaker may be locally configured with an SRGB=[GB_S, GB_E]. 424 The preferred method for deriving the SRGB is a matter of local 425 router configuration. 427 Given a label index L_I, we call L = L_I + GB_S as the derived label. 428 A BGP Prefix-SID attribute is called "unacceptable" for a speaker M 429 if the derived label value L lies outside the SRGB configured on M. 430 Otherwise the Label Index attribute is called "acceptable" to speaker 431 M. 433 The mechanisms through which a given label_index value is assigned to 434 a given prefix are outside the scope of this document. The label- 435 index value associated with a prefix is locally configured at the BGP 436 router originating the prefix. 438 The Prefix-SID attribute MUST contain the Label-Index TLV and MAY 439 contain the Originator SRGB and Neighbor SRGB TLVs. A BGP Prefix-SID 440 attribute received without a Label-Index TLV MUST be considered as 441 "unacceptable" by the receiving speaker. 443 When a BGP speaker receives a path from a neighbor with an acceptable 444 BGP Prefix-SID attribute, it SHOULD program the derived label as the 445 local label for the prefix in its MPLS dataplane. In case of any 446 error, a BGP speaker MUST resort to the error handling rules 447 specified in Section 7. A BGP speaker MAY log an error for further 448 analysis. 450 A BGP speaker receiving a BGP Prefix-SID attribute from an EBGP 451 neighbor residing outside the boundaries of the SR domain, SHOULD 452 discard the attribute unless it is configured to accept the attribute 453 from the EBGP neighbor. A BGP speaker MAY log an error for further 454 analysis when discarding an attribute. 456 5.1. MPLS Dataplane 458 5.1.1. MPLS Dataplane: Labeled Unicast 460 When a BGP speaker receives a path from a neighbor with an 461 unacceptable BGP Prefix-SID attribute, for the purpose of label 462 allocation, it SHOULD treat the path as if it came without a Prefix- 463 SID attribute. A BGP speaker MAY choose to assign a local (also 464 called dynamic) label (non-SRGB) for such a prefix. A BGP speaker 465 MAY log an error for further analysis. 467 A BGP speaker receiving a prefix with a Prefix-SID attribute and a 468 label NLRI field of implicit-null from a neighbor MUST adhere to 469 standard behavior and program its MPLS dataplane to pop the top label 470 when forwarding traffic to the prefix. The label NLRI defines the 471 outbound label that MUST be used by the receiving node. The Label 472 Index gives a hint to the receiving node on which local/incoming 473 label the BGP speaker SHOULD use. 475 5.1.2. MPLS Dataplane: Unlabeled Unicast 477 When a BGP speaker receives a path from a neighbor with an 478 unacceptable BGP Prefix-SID attribute, for the purpose of label 479 allocation, it SHOULD treat the path as if it came without a Prefix- 480 SID attribute. A BGP speaker MAY choose to assign a local (also 481 called dynamic) label (non-SRGB) for such a prefix. A BGP speaker 482 MAY log an error for further analysis. 484 When a BGP speaker receives a path from a neighbor with an 485 unacceptable BGP Prefix-SID attribute, for the purpose of label 486 allocation, it SHOULD treat the path as if it came without a Prefix- 487 SID attribute and remove the Prefix-SID attribute from the prefix 488 prior to advertising it to its neighbors. A BGP speaker MAY choose 489 to assign a local (also called dynamic) label (non-SRGB) for such a 490 prefix. A BGP speaker MAY log an error for further analysis. 492 A BGP speaker receiving an unlabeled prefix (IPv4 or IPv6) with a 493 Prefix-SID attribute derives the outgoing label for the prefix by 494 applying the received index to the received Neighbor SRGB TLV. Then, 495 it replaces the Neighbor SRGB TLV with its own local SRGB values 496 (base, range) prior to advertising the prefix to its neighbors. 498 5.2. IPv6 Dataplane 500 When a SR IPv6 BGP speaker receives a BGP Update with a prefix having 501 the BGP Prefix SID attribute attached, it checks whether the S flag 502 is set in the Index TLV. If the S flag is set, then the Index value 503 MUST be ignored. 505 The Originator SRGB and Neighbor SRGB TLVs are ignored on reception. 507 A BGP speaker receiving a BGP Prefix-SID attribute from a EBGP 508 neighbor residing outside the boundaries of the SR domain, SHOULD 509 discard the attribute unless it is configured to accept the attribute 510 from the EBGP neighbor. A BGP speaker MAY log an error for further 511 analysis when discarding an attribute. 513 6. Announcing BGP-Prefix-SID Attribute 515 The BGP Prefix-SID attribute MAY be announced with BGP Prefixes 516 carried in either label and unlabeled BGP (or Multiprotocol BGP) 517 updates (IPv4 and IPv6). In order to prevent distribution of the BGP 518 Prefix-SID attribute beyond its intended scope of applicability, 519 attribute filtering MAY be deployed. 521 6.1. MPLS Dataplane 523 A BGP speaker that originates a prefix attaches the Prefix-SID 524 attribute when it advertises the prefix to its neighbors. The value 525 of the Label-Index in the Label-Index TLV is determined by 526 configuration. 528 A BGP speaker that originates a Prefix-SID attribute MAY optionally 529 announce Originator SRGB and Neighbor SRGB TLVs along with the 530 mandatory Label-Index TLV. The content of the Originator SRGB and 531 Neighbor SRGB TLVs is determined by the configuration. 533 Since the Label-index value must be unique within an SR domain, by 534 default an implementation SHOULD NOT advertise the BGP Prefix-SID 535 attribute outside an Autonomous System unless it is explicitly 536 configured to do so. 538 6.1.1. MPLS Dataplane: Labeled Unicast 540 A BGP speaker that advertises a path received from one of its 541 neighbors SHOULD advertise the Prefix-SID received with the path 542 without modification regardless of whether the Prefix-SID was 543 acceptable. If the path did not come with a Prefix-SID attribute, 544 the speaker MAY attach a Prefix-SID to the path if configured to do 545 so. The content of the TLVs present in the Prefix-SID is determined 546 by the configuration. 548 In all cases, the label field of the NLRI ([RFC3107], [RFC4364]) MUST 549 be set to the local/incoming label programmed in the MPLS dataplane 550 for the given prefix. If the prefix is associated with one of the 551 BGP speakers interfaces, this label is the usual MPLS label (such as 552 the implicit or explicit NULL label). 554 6.1.2. MPLS Dataplane: Unlabeled Unicast 556 A BGP speaker that advertises a path received from one of its 557 neighbors SHOULD advertise the Prefix-SID received with the path 558 without modification only if the Prefix-SID is acceptable. If the 559 path did not come with a Prefix-SID attribute, the speaker MAY attach 560 a Prefix-SID to the path if configured to do so. The value of the 561 TLVs present in the Prefix-SID is determined by the configuration. 563 When the Prefix SID attribute is attached to an unlabeled prefix, the 564 BGP speaker MUST originate the Index and the Neighbor SRGB TLVs. The 565 Index TLV MUST contain the globally unique index value allocated to 566 the prefix. The Neighbor SRGB TLV MUST contain the SRGB of the 567 speaker in the form of base and range. 569 6.2. IPv6 Dataplane 571 A BGP speaker that originates a prefix attaches the Prefix-SID 572 attribute when it advertises the prefix to its neighbors. The value 573 of the Label-Index is set to null and the S flag is set. 575 A BGP speaker that advertises a path received from one of its 576 neighbors SHOULD advertise the Prefix-SID received with the path 577 without modification regardless of whether the Prefix-SID was 578 acceptable. If the path did not come with a Prefix-SID attribute, 579 the speaker MAY attach a Prefix-SID to the path if configured to do 580 so. The value of the TLVs present in the Prefix-SID is determined by 581 the configuration. 583 7. Error Handling of BGP-Prefix-SID Attribute 585 When a BGP Speaker receives a BGP Update message containing a 586 malformed BGP Prefix-SID attribute, it MUST ignore the received BGP 587 Prefix-SID attributes and not pass it to other BGP peers. This is 588 equivalent to the -attribute discard- action specified in 589 [I-D.ietf-idr-error-handling]. When discarding an attribute, a BGP 590 speaker MAY log an error for further analysis. 592 If the BGP Prefix-SID attribute appears more than once in an BGP 593 Update message message, then, according to 594 [I-D.ietf-idr-error-handling], all the occurrences of the attribute 595 other than the first one SHALL be discarded and the BGP Update 596 message shall continue to be processed. 598 When a BGP speaker receives an unacceptable Prefix-SID attribute, it 599 MAY log an error for further analysis. 601 8. IANA Considerations 603 This document defines a new BGP path attribute known as the BGP 604 Prefix-SID attribute. This document requests IANA to assign a new 605 attribute code type (suggested value: 40) for BGP the Prefix-SID 606 attribute from the BGP Path Attributes registry. 608 This document defines three new TLVs for BGP Prefix-SID attribute. 609 These TLVs need to be registered with IANA. We request IANA to 610 create a new registry for BGP Prefix-SID Attribute TLVs as follows: 612 Under "Border Gateway Protocol (BGP) Parameters" registry, "BGP 613 Prefix SID attribute Types" Reference: draft-keyupate-idr-bgp-prefix- 614 side-03 Registration Procedure(s): Values 1-254 First Come, First 615 Served, Value 0 and 255 reserved 617 Value Type Reference 618 0 Reserved draft-keyupate-idr-bgp-prefix-side-03 619 1 Label-Index draft-keyupate-idr-bgp-prefix-side-03 620 2 Originator SRGB draft-keyupate-idr-bgp-prefix-side-03 621 3 Neighbor SRGB draft-keyupate-idr-bgp-prefix-side-03 622 4-254 Unassigned 623 255 Reserved draft-keyupate-idr-bgp-prefix-side-03 625 9. Security Considerations 627 This document introduces no new security considerations above and 628 beyond those already specified in [RFC4271] and [RFC3107]. 630 10. Acknowledgements 632 The authors would like to thanks Satya Mohanty and Acee Lindem for 633 their contribution to this document. 635 11. Change Log 637 Initial Version: Sep 21 2014 639 12. References 641 12.1. Normative References 643 [I-D.ietf-idr-error-handling] 644 Chen, E., Scudder, J., Mohapatra, P., and K. Patel, 645 "Revised Error Handling for BGP UPDATE Messages", draft- 646 ietf-idr-error-handling-19 (work in progress), April 2015. 648 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 649 Requirement Levels", BCP 14, RFC 2119, March 1997. 651 [RFC3107] Rekhter, Y. and E. Rosen, "Carrying Label Information in 652 BGP-4", RFC 3107, May 2001. 654 [RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway 655 Protocol 4 (BGP-4)", RFC 4271, January 2006. 657 [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private 658 Networks (VPNs)", RFC 4364, February 2006. 660 12.2. Informative References 662 [I-D.filsfils-spring-segment-routing-central-epe] 663 Filsfils, C., Previdi, S., Patel, K., Aries, E., 664 shaw@fb.com, s., Ginsburg, D., and D. Afanasiev, "Segment 665 Routing Centralized Egress Peer Engineering", draft- 666 filsfils-spring-segment-routing-central-epe-03 (work in 667 progress), January 2015. 669 [I-D.filsfils-spring-segment-routing-msdc] 670 Filsfils, C., Previdi, S., Mitchell, J., Black, B., 671 Afanasiev, D., Ray, S., and K. Patel, "BGP-Prefix Segment 672 in large-scale data centers", draft-filsfils-spring- 673 segment-routing-msdc-01 (work in progress), April 2015. 675 [I-D.ietf-idr-bgpls-segment-routing-epe] 676 Previdi, S., Filsfils, C., Ray, S., Patel, K., Dong, J., 677 and M. Chen, "Segment Routing Egress Peer Engineering BGP- 678 LS Extensions", draft-ietf-idr-bgpls-segment-routing- 679 epe-00 (work in progress), June 2015. 681 [I-D.ietf-spring-segment-routing] 682 Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., 683 and R. Shakir, "Segment Routing Architecture", draft-ietf- 684 spring-segment-routing-03 (work in progress), May 2015. 686 [I-D.previdi-6man-segment-routing-header] 687 Previdi, S., Filsfils, C., Field, B., and I. Leung, "IPv6 688 Segment Routing Header (SRH)", draft-previdi-6man-segment- 689 routing-header-06 (work in progress), May 2015. 691 [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, 692 "Multiprotocol Extensions for BGP-4", RFC 4760, January 693 2007. 695 Authors' Addresses 697 Keyur Patel 698 Cisco Systems 699 170 W. Tasman Drive 700 San Jose, CA 95124 95134 701 USA 703 Email: keyupate@cisco.com 705 Stefano Previdi 706 Cisco Systems 707 Via Del Serafico, 200 708 Rome 00142 709 Italy 711 Email: sprevidi@cisco.com 712 Clarence Filsfils 713 Cisco Systems 714 Brussels 715 Belgium 717 Email: cfilsfils@cisco.com 719 Arjun Sreekantiah 720 Cisco Systems 721 170 W. Tasman Drive 722 San Jose, CA 95124 95134 723 USA 725 Email: asreekan@cisco.com 727 Saikat Ray 728 Unaffiliated 730 Email: raysaikat@gmail.com 732 Hannes Gredler 733 Juniper Networks 735 Email: hannes@juniper.net