idnits 2.17.1 draft-keyupate-idr-bgp-prefix-sid-03.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 3217 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 July 6, 2015 11 Segment Routing Prefix SID extensions for BGP 12 draft-keyupate-idr-bgp-prefix-sid-03 14 Abstract 16 Segment Routing (SR) architecture allows a node to steer a packet 17 flow through any topological path and service chain by leveraging 18 source routing. The ingress node prepends a SR header to a packet 19 containing a set of "segments". Each segment represents a 20 topological or a service-based instruction. Per-flow state is 21 maintained only at the ingress node of the SR domain. 23 This document describes the BGP extension for announcing BGP Prefix 24 Segment Identifier (BGP Prefix SID) information. 26 Requirements Language 28 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 29 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 30 document are to be interpreted as described in RFC 2119 [RFC2119] 31 only when they appear in all upper case. They may also appear in 32 lower or mixed case as English words, without any normative meaning. 34 Status of This Memo 36 This Internet-Draft is submitted in full conformance with the 37 provisions of BCP 78 and BCP 79. 39 Internet-Drafts are working documents of the Internet Engineering 40 Task Force (IETF). Note that other groups may also distribute 41 working documents as Internet-Drafts. The list of current Internet- 42 Drafts is at http://datatracker.ietf.org/drafts/current/. 44 Internet-Drafts are draft documents valid for a maximum of six months 45 and may be updated, replaced, or obsoleted by other documents at any 46 time. It is inappropriate to use Internet-Drafts as reference 47 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on January 7, 2016. 50 Copyright Notice 52 Copyright (c) 2015 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (http://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Segment Routing Documents . . . . . . . . . . . . . . . . . . 3 68 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 69 3. BGP-Prefix-SID . . . . . . . . . . . . . . . . . . . . . . . 4 70 3.1. MPLS Prefix Segment . . . . . . . . . . . . . . . . . . . 4 71 3.2. IPv6 Prefix Segment . . . . . . . . . . . . . . . . . . . 5 72 4. BGP-Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5 73 4.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 6 74 4.2. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 7 75 4.3. Neighbor SRGB TLV . . . . . . . . . . . . . . . . . . . . 7 76 5. Receiving BGP-Prefix-SID Attribute . . . . . . . . . . . . . 9 77 5.1. MPLS Dataplane . . . . . . . . . . . . . . . . . . . . . 10 78 5.1.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . 10 79 5.1.2. MPLS Dataplane: Unlabeled Unicast . . . . . . . . . . 10 80 5.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 10 81 6. Announcing BGP-Prefix-SID Attribute . . . . . . . . . . . . . 11 82 6.1. MPLS Dataplane . . . . . . . . . . . . . . . . . . . . . 11 83 6.1.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . 11 84 6.1.2. MPLS Dataplane: Unlabeled Unicast . . . . . . . . . . 12 85 6.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 12 86 7. Error Handling of BGP-Prefix-SID Attribute . . . . . . . . . 12 87 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 88 9. Security Considerations . . . . . . . . . . . . . . . . . . . 13 89 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 90 11. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 13 91 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 92 12.1. Normative References . . . . . . . . . . . . . . . . . . 13 93 12.2. Informative References . . . . . . . . . . . . . . . . . 14 94 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 96 1. Segment Routing Documents 98 The main references for this document are the SR architecture defined 99 in [I-D.ietf-spring-segment-routing]and the related use case 100 illustrated in [I-D.filsfils-spring-segment-routing-msdc]. 102 The Segment Routing Egress Peer Engineering architecture is described 103 in [I-D.filsfils-spring-segment-routing-central-epe]. 105 The Segment Routing Egress Peer Engineering BGPLS extensions are 106 described in [I-D.ietf-idr-bgpls-segment-routing-epe]. 108 2. Introduction 110 Segment Routing (SR) architecture leverages the source routing 111 paradigm. A group of inter-connected nodes that use SR forms a SR 112 domain. The ingress node of the SR domain prepends a SR header 113 containing "segments" to an incoming packet. Each segment represents 114 a topological instruction such as "go to prefix P following shortest 115 path" or a service instruction (e.g.: "pass through deep packet 116 inspection"). By inserting the desired sequence of instructions, the 117 ingress node is able to steer a packet via any topological path and/ 118 or service chain; per-flow state is maintained only at the ingress 119 node of the SR domain. 121 Each segment is identified by a Segment Identifier (SID). As 122 described in [I-D.ietf-spring-segment-routing], when SR is applied to 123 the MPLS dataplane the SID consists of a label while when SR is 124 applied to the IPv6 dataplane the SID consists of an IPv6 prefix (see 125 [I-D.previdi-6man-segment-routing-header]). 127 A BGP-Prefix Segment (aka BGP-Prefix-SID), is a BGP segment attached 128 to a BGP prefix. A BGP-Prefix-SID is always global within the SR/BGP 129 domain and identifies an instruction to forward the packet over the 130 ECMP-aware best-path computed by BGP to the related prefix. The BGP- 131 Prefix-SID is the identifier of the BGP prefix segment. 133 This document describes the BGP extension to signal the BGP-Prefix- 134 SID. Specifically, this document defines a new BGP attribute known 135 as the BGP Prefix SID attribute and specifies the rules to originate, 136 receive and handle error conditions of the new attribute. 138 As described in [I-D.filsfils-spring-segment-routing-msdc], the newly 139 proposed BGP Prefix-SID attribute can be attached to prefixes from 140 different AFI/SAFI: 142 Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC3107]). 144 Multiprotocol BGP ([RFC4760]) unlabeled IPv4/IPv6 Unicast. 146 BGP4 ([RFC4271]). 148 [I-D.filsfils-spring-segment-routing-msdc] describes use cases where 149 the Prefix-SID is used for all the above BGP flavors. 151 3. BGP-Prefix-SID 153 The BGP-Prefix-SID attached to a BGP prefix P represents the 154 instruction "go to Prefix P" along its BGP bestpath (potentially 155 ECMP-enabled). 157 3.1. MPLS Prefix Segment 159 The BGP Prefix Segment is realized on the MPLS dataplane in the 160 following way: 162 According to [I-D.ietf-spring-segment-routing], each BGP speaker 163 is configured with a label block called the Segment Routing Global 164 Block (SRGB). The SRGB of a node is a local property and could be 165 different on different speakers. 167 As described in [I-D.filsfils-spring-segment-routing-msdc] the 168 operator assigns a globally unique "index", L_I, to a locally 169 sourced prefix of a BGP speaker N which is advertised to all other 170 BGP speakers in the SR domain. 172 The index L_I is a 32 bit offset in the SRGB. Each BGP speaker 173 derives its local MPLS label, L, by adding L_I to the start value 174 of its own SRGB, and programs L in its MPLS dataplane as its 175 incoming/local label for the prefix. 177 If the BGP speakers are configured with the same SRGB start value, 178 they will all program the same MPLS label for a given prefix P. 179 This has the effect of having a single label for prefix P across 180 all BGP speakers despite that the MPLS paradigm of "local label" 181 is preserved and this clearly simplifies the deployment and 182 operations of traffic engineering in BGP driven networks, as 183 described in [I-D.filsfils-spring-segment-routing-msdc]. 185 If the BGP speakers cannot be configured with the same SRGB, the 186 proposed BGP Prefix-SID attribute allows the advertisement of the 187 SRGB so each node can advertise the SRGB it's configured with. The 188 drawbacks of the use case where BGP speakers have different SRGBs are 189 documented in [I-D.filsfils-spring-segment-routing-msdc]. 191 In order to advertise the label index of a given prefix P and, 192 optionally, the SRGB, a new extension to BGP is needed: the BGP 193 Prefix SID attribute. This extension is described in subsequent 194 sections. 196 3.2. IPv6 Prefix Segment 198 As defined in [I-D.previdi-6man-segment-routing-header], in SR for 199 the IPv6 dataplane, the SRGB consists of the set of IPv6 addresses 200 used within the SR domain (as described in 201 [I-D.previdi-6man-segment-routing-header]), therefore the BGP speaker 202 willing to process SR IPv6 packets MUST advertise an IPv6 prefix with 203 the attached Prefix SID attribute and related SR IPv6 flag (see 204 subsequent section). 206 As described in [I-D.filsfils-spring-segment-routing-msdc], when SR 207 is used over an IPv6 dataplane, the BGP Prefix Segment is 208 instantiated by an IPv6 prefix originated by the BGP speaker. 210 Each node advertises a globally unique IPv6 address representing 211 itself in the domain. This prefix (e.g.: its loopback interface 212 address) is advertised to all other BGP speakers in the SR domain. 214 Also, each node MUST advertise its support of Segment Routing for 215 IPv6 dataplane. This is realized using the Prefix SID Attribute 216 defined here below. 218 4. BGP-Prefix-SID Attribute 220 BGP Prefix SID attribute is an optional, transitive BGP path 221 attribute. The attribute type code is to be assigned by IANA 222 (suggested value: 40). The value field of the BGP-Prefix-SID 223 attribute has the following format: 225 The value field of the BGP Prefix SID attribute is defined here to be 226 a set of elements encoded as "Type/Length/Value" (i.e., a set of 227 TLVs). Following TLVs are defined: 229 o Label-Index TLV 231 o Originator SRGB TLV 233 o Neighbor SRGB TLV 235 Originator SRGB and Neighbor SRGB TLVs are used only when SR is 236 applied to the MPLS dataplane. 238 4.1. Label-Index TLV 240 The Label-Index TLV MUST be present in the Prefix-SID attribute and 241 has the following format: 243 0 1 2 3 244 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 245 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 246 | Type | Length | RESERVED | 247 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 248 | Flags | Label Index | 249 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 250 | Label Index | 251 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 253 where: 255 o Type is 1. 257 o Length: is 7, the total length of the value portion of the TLV. 259 o RESERVED: 8 bit field. SHOULD be 0 on transmission and MUST be 260 ignored on reception. 262 o Flags: 16 bits of flags. Following is defined: 264 0 1 265 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 266 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 267 |S| | 268 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 270 where: 272 * S flag: if set then it means that the BGP speaker attaching the 273 Prefix-SID Attribute to a prefix it originates is capable of 274 processing the IPv6 Segment Routing Header (SRH, 275 [I-D.previdi-6man-segment-routing-header]) for the segment 276 corresponding to the originated IPv6 prefix. The use case 277 leveraging the S flag is described in 278 [I-D.filsfils-spring-segment-routing-msdc]. 280 The other bits of the flag field SHOULD be clear on transmission 281 an MUST be ignored at reception. 283 o Label Index: 32 bit value representing the index value in the SRGB 284 space. If the S flag is set, the index SHOULD be clear on 285 transmission an MUST be ignored at reception. 287 4.2. Originator SRGB TLV 289 The Originator SRGB TLV is an optional TLV and has the following 290 format: 292 0 1 2 3 293 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 294 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 295 | Type | Length | Flags | 296 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 297 | Flags | SRGB Base (3 octets) | 298 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 299 | SRGB Range (3 octets) | 300 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 302 where: 304 o Type is 2. 306 o Length: is 8, the total length of the value portion of the TLV. 308 o Flags: 16 bits of flags. None are defined in this document. 309 Flags SHOULD be clear on transmission an MUST be ignored at 310 reception. 312 o SRGB Base: the value of the first label in the SRGB. 314 o SRGB Range: the size of the SRGB (i.e.: number of labels). 316 The Originator SRGB TLV contains the SRGB of the router originating 317 the prefix to which the BGP Prefix SID is attached and MUST be kept 318 in the Prefix-SID Attribute unchanged during the propagation of the 319 BGP update. 321 The originator SRGB describes the SRGB of the node where the BGP 322 Prefix Segment end. It is used to build SRTE policies when different 323 SRGB's are used in the fabric 324 ([I-D.filsfils-spring-segment-routing-msdc]). 326 The originator SRGB may only appear on Prefix-SID attribute attached 327 to prefixes of SAFI 4 (labeled unicast, [RFC3107]). 329 4.3. Neighbor SRGB TLV 331 The Neighbor SRGB TLV is an optional TLV and has the following 332 format: 334 0 1 2 3 335 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 336 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 337 | Type | Length | Flags | 338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 339 | Flags | SRGB Base (3 octets) | 340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 341 | SRGB Range (3 octets) | Local Address | 342 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 343 | Local Address (4 or 16 octets) | 344 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 346 where: 348 o Type is 3. 350 o Length: is 12 or 24, the total length of the value portion of the 351 TLV. 353 o Flags: 16 bits of flags. None are defined in this document. 354 Flags SHOULD be clear on transmission an MUST be ignored at 355 reception. 357 o SRGB Base: the value of the first label in the SRGB. 359 o SRGB Range: the size of the SRGB (i.e.: number of labels). 361 o Local Address: if "Length" is 12, then Local Address MUST contain 362 a 4-octet IPv4 address. If "Length" is 24, then Local Address 363 MUST contain a 16-octet IPv6 address. 365 The Neighbor SRGB TLV contains the local SRGB of the BGP speaker 366 originating the Neighbor SRGB TLV. 368 The Neighbor SRGB TLV may only be present on Prefix-SID attribute 369 attached to an unlabeled prefix: BGP4 ([RFC4271]) or SAFI 1. 371 The BGP speaker originating the Neighbor SRGB TLV MUST specify the 372 local IPv4 or IPv6 address for the BGP session on which the 373 corresponding NLRI is being advertised. 375 The Neighbor SRGB TLV has a significance only for the neighbors of 376 the BGP speaker originating it. The Neighbor SRGB TLV MUST be 377 rewritten at each hop during the advertisement/propagation of the 378 prefix. At each hop the BGP speaker receiving a prefix with a 379 Prefix-SID attached to it and with a "Local Address" MUST override 380 the "Local Address" value. 382 The Neighbor SRGB TLV is only used when the dataplane is MPLS and the 383 the BGP Prefix SID is associated with an NLRI propagated by unlabeled 384 BGP signaling (BGP4 or SAFI 1). It allows the receiving BGP speaker 385 to determine the outgoing label to program in the dataplane (see 386 [I-D.filsfils-spring-segment-routing-msdc]). 388 In case of a labeled unicast IPv4 or IPv6 prefixes ([RFC3107]), the 389 label value in the NLRI MUST be used as outgoing label value for the 390 prefix the Prefix-SID attribute is attached to and the Neighbor SRGB 391 TLV MUST NOT be used. 393 5. Receiving BGP-Prefix-SID Attribute 395 A BGP speaker may be locally configured with an SRGB=[GB_S, GB_E]. 396 The preferred method for deriving the SRGB is a matter of local 397 router configuration. 399 Given a label index L_I, we call L = L_I + GB_S as the derived label. 400 A BGP Prefix-SID attribute is called "unacceptable" for a speaker M 401 if the derived label value L lies outside the SRGB configured on M. 402 Otherwise the Label Index attribute is called "acceptable" to speaker 403 M. 405 The mechanisms through which a given label_index value is assigned to 406 a given prefix are outside the scope of this document. The label- 407 index value associated with a prefix is locally configured at the BGP 408 router originating the prefix. 410 The Prefix-SID attribute MUST contain the Label-Index TLV and MAY 411 contain the Originator SRGB and Neighbor SRGB TLVs. A BGP Prefix-SID 412 attribute received without a Label-Index TLV MUST be considered as 413 "unacceptable" by the receiving speaker. 415 When a BGP speaker receives a path from a neighbor with an acceptable 416 BGP Prefix-SID attribute, it SHOULD program the derived label as the 417 local label for the prefix in its MPLS dataplane. In case of any 418 error, a BGP speaker MUST resort to the error handling rules 419 specified in Section 7. A BGP speaker MAY log an error for further 420 analysis. 422 A BGP speaker receiving a BGP Prefix-SID attribute from an EBGP 423 neighbor residing outside the boundaries of the SR domain, SHOULD 424 discard the attribute unless it is configured to accept the attribute 425 from the EBGP neighbor. A BGP speaker MAY log an error for further 426 analysis when discarding an attribute. 428 5.1. MPLS Dataplane 430 5.1.1. MPLS Dataplane: Labeled Unicast 432 When a BGP speaker receives a path from a neighbor with an 433 unacceptable BGP Prefix-SID attribute, for the purpose of label 434 allocation, it SHOULD treat the path as if it came without a Prefix- 435 SID attribute. A BGP speaker MAY choose to assign a local (also 436 called dynamic) label (non-SRGB) for such a prefix. A BGP speaker 437 MAY log an error for further analysis. 439 A BGP speaker receiving a prefix with a Prefix-SID attribute and a 440 label NLRI field of implicit-null from a neighbor MUST adhere to 441 standard behavior and program its MPLS dataplane to pop the top label 442 when forwarding traffic to the prefix. The label NLRI defines the 443 outbound label that MUST be used by the receiving node. The Label 444 Index gives a hint to the receiving node on which local/incoming 445 label the BGP speaker SHOULD use. 447 5.1.2. MPLS Dataplane: Unlabeled Unicast 449 When a BGP speaker receives a path from a neighbor with an 450 unacceptable BGP Prefix-SID attribute, for the purpose of label 451 allocation, it SHOULD treat the path as if it came without a Prefix- 452 SID attribute. A BGP speaker MAY choose to assign a local (also 453 called dynamic) label (non-SRGB) for such a prefix. A BGP speaker 454 MAY log an error for further analysis. 456 When a BGP speaker receives a path from a neighbor with an 457 unacceptable BGP Prefix-SID attribute, for the purpose of label 458 allocation, it SHOULD treat the path as if it came without a Prefix- 459 SID attribute and remove the Prefix-SID attribute from the prefix 460 prior to advertising it to its neighbors. A BGP speaker MAY choose 461 to assign a local (also called dynamic) label (non-SRGB) for such a 462 prefix. A BGP speaker MAY log an error for further analysis. 464 A BGP speaker receiving an unlabeled prefix (IPv4 or IPv6) with a 465 Prefix-SID attribute derives the outgoing label for the prefix by 466 applying the received index to the received Neighbor SRGB TLV. Then, 467 it replaces the Neighbor SRGB TLV with its own local SRGB values 468 (base, range) prior to advertising the prefix to its neighbors. 470 5.2. IPv6 Dataplane 472 When a SR IPv6 BGP speaker receives a BGP Update with a prefix having 473 the BGP Prefix SID attribute attached, it checks whether the S flag 474 is set in the Index TLV. If the S flag is set, then the Index value 475 MUST be ignored. 477 The Originator SRGB and Neighbor SRGB TLVs are ignored on reception. 479 A BGP speaker receiving a BGP Prefix-SID attribute from a EBGP 480 neighbor residing outside the boundaries of the SR domain, SHOULD 481 discard the attribute unless it is configured to accept the attribute 482 from the EBGP neighbor. A BGP speaker MAY log an error for further 483 analysis when discarding an attribute. 485 6. Announcing BGP-Prefix-SID Attribute 487 The BGP Prefix-SID attribute MAY be announced with BGP Prefixes 488 carried in either label and unlabeled BGP (or Multiprotocol BGP) 489 updates (IPv4 and IPv6). In order to prevent distribution of the BGP 490 Prefix-SID attribute beyond its intended scope of applicability, 491 attribute filtering MAY be deployed. 493 6.1. MPLS Dataplane 495 A BGP speaker that originates a prefix attaches the Prefix-SID 496 attribute when it advertises the prefix to its neighbors. The value 497 of the Label-Index in the Label-Index TLV is determined by 498 configuration. 500 A BGP speaker that originates a Prefix-SID attribute MAY optionally 501 announce Originator SRGB and Neighbor SRGB TLVs along with the 502 mandatory Label-Index TLV. The content of the Originator SRGB and 503 Neighbor SRGB TLVs is determined by the configuration. 505 Since the Label-index value must be unique within an SR domain, by 506 default an implementation SHOULD NOT advertise the BGP Prefix-SID 507 attribute outside an Autonomous System unless it is explicitly 508 configured to do so. 510 6.1.1. MPLS Dataplane: Labeled Unicast 512 A BGP speaker that advertises a path received from one of its 513 neighbors SHOULD advertise the Prefix-SID received with the path 514 without modification regardless of whether the Prefix-SID was 515 acceptable. If the path did not come with a Prefix-SID attribute, 516 the speaker MAY attach a Prefix-SID to the path if configured to do 517 so. The content of the TLVs present in the Prefix-SID is determined 518 by the configuration. 520 In all cases, the label field of the NLRI ([RFC3107], [RFC4364]) MUST 521 be set to the local/incoming label programmed in the MPLS dataplane 522 for the given prefix. If the prefix is associated with one of the 523 BGP speakers interfaces, this label is the usual MPLS label (such as 524 the implicit or explicit NULL label). 526 6.1.2. MPLS Dataplane: Unlabeled Unicast 528 A BGP speaker that advertises a path received from one of its 529 neighbors SHOULD advertise the Prefix-SID received with the path 530 without modification only if the Prefix-SID is acceptable. If the 531 path did not come with a Prefix-SID attribute, the speaker MAY attach 532 a Prefix-SID to the path if configured to do so. The value of the 533 TLVs present in the Prefix-SID is determined by the configuration. 535 When the Prefix SID attribute is attached to an unlabeled prefix, the 536 BGP speaker MUST originate the Index and the Neighbor SRGB TLVs. The 537 Index TLV MUST contain the globally unique index value allocated to 538 the prefix. The Neighbor SRGB TLV MUST contain the SRGB of the 539 speaker in the form of base and range. 541 6.2. IPv6 Dataplane 543 A BGP speaker that originates a prefix attaches the Prefix-SID 544 attribute when it advertises the prefix to its neighbors. The value 545 of the Label-Index is set to null and the S flag is set. 547 A BGP speaker that advertises a path received from one of its 548 neighbors SHOULD advertise the Prefix-SID received with the path 549 without modification regardless of whether the Prefix-SID was 550 acceptable. If the path did not come with a Prefix-SID attribute, 551 the speaker MAY attach a Prefix-SID to the path if configured to do 552 so. The value of the TLVs present in the Prefix-SID is determined by 553 the configuration. 555 7. Error Handling of BGP-Prefix-SID Attribute 557 When a BGP Speaker receives a BGP Update message containing a 558 malformed BGP Prefix-SID attribute, it MUST ignore the received BGP 559 Prefix-SID attributes and not pass it to other BGP peers. This is 560 equivalent to the -attribute discard- action specified in 561 [I-D.ietf-idr-error-handling]. When discarding an attribute, a BGP 562 speaker MAY log an error for further analysis. 564 If the BGP Prefix-SID attribute appears more than once in an BGP 565 Update message message, then, according to 566 [I-D.ietf-idr-error-handling], all the occurrences of the attribute 567 other than the first one SHALL be discarded and the BGP Update 568 message shall continue to be processed. 570 When a BGP speaker receives an unacceptable Prefix-SID attribute, it 571 MAY log an error for further analysis. 573 8. IANA Considerations 575 This document defines a new BGP path attribute known as the BGP 576 Prefix-SID attribute. This document requests IANA to assign a new 577 attribute code type (suggested value: 40) for BGP the Prefix-SID 578 attribute from the BGP Path Attributes registry. 580 This document defines three new TLVs for BGP Prefix-SID attribute. 581 These TLVs need to be registered with IANA. We request IANA to 582 create a new registry for BGP Prefix-SID Attribute TLVs as follows: 584 Under "Border Gateway Protocol (BGP) Parameters" registry, "BGP 585 Prefix SID attribute Types" Reference: draft-keyupate-idr-bgp-prefix- 586 side-03 Registration Procedure(s): Values 1-254 First Come, First 587 Served, Value 0 and 255 reserved 589 Value Type Reference 590 0 Reserved draft-keyupate-idr-bgp-prefix-side-03 591 1 Label-Index draft-keyupate-idr-bgp-prefix-side-03 592 2 Originator SRGB draft-keyupate-idr-bgp-prefix-side-03 593 3 Neighbor SRGB draft-keyupate-idr-bgp-prefix-side-03 594 4-254 Unassigned 595 255 Reserved draft-keyupate-idr-bgp-prefix-side-03 597 9. Security Considerations 599 This document introduces no new security considerations above and 600 beyond those already specified in [RFC4271] and [RFC3107]. 602 10. Acknowledgements 604 The authors would like to thanks Satya Mohanty and Acee Lindem for 605 their contribution to this document. 607 11. Change Log 609 Initial Version: Sep 21 2014 611 12. References 613 12.1. Normative References 615 [I-D.ietf-idr-error-handling] 616 Chen, E., Scudder, J., Mohapatra, P., and K. Patel, 617 "Revised Error Handling for BGP UPDATE Messages", draft- 618 ietf-idr-error-handling-19 (work in progress), April 2015. 620 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 621 Requirement Levels", BCP 14, RFC 2119, March 1997. 623 [RFC3107] Rekhter, Y. and E. Rosen, "Carrying Label Information in 624 BGP-4", RFC 3107, May 2001. 626 [RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway 627 Protocol 4 (BGP-4)", RFC 4271, January 2006. 629 [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private 630 Networks (VPNs)", RFC 4364, February 2006. 632 12.2. Informative References 634 [I-D.filsfils-spring-segment-routing-central-epe] 635 Filsfils, C., Previdi, S., Patel, K., Aries, E., 636 shaw@fb.com, s., Ginsburg, D., and D. Afanasiev, "Segment 637 Routing Centralized Egress Peer Engineering", draft- 638 filsfils-spring-segment-routing-central-epe-03 (work in 639 progress), January 2015. 641 [I-D.filsfils-spring-segment-routing-msdc] 642 Filsfils, C., Previdi, S., Mitchell, J., Black, B., 643 Afanasiev, D., Ray, S., and K. Patel, "BGP-Prefix Segment 644 in large-scale data centers", draft-filsfils-spring- 645 segment-routing-msdc-01 (work in progress), April 2015. 647 [I-D.ietf-idr-bgpls-segment-routing-epe] 648 Previdi, S., Filsfils, C., Ray, S., Patel, K., Dong, J., 649 and M. Chen, "Segment Routing Egress Peer Engineering BGP- 650 LS Extensions", draft-ietf-idr-bgpls-segment-routing- 651 epe-00 (work in progress), June 2015. 653 [I-D.ietf-spring-segment-routing] 654 Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., 655 and R. Shakir, "Segment Routing Architecture", draft-ietf- 656 spring-segment-routing-03 (work in progress), May 2015. 658 [I-D.previdi-6man-segment-routing-header] 659 Previdi, S., Filsfils, C., Field, B., and I. Leung, "IPv6 660 Segment Routing Header (SRH)", draft-previdi-6man-segment- 661 routing-header-06 (work in progress), May 2015. 663 [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, 664 "Multiprotocol Extensions for BGP-4", RFC 4760, January 665 2007. 667 Authors' Addresses 669 Keyur Patel 670 Cisco Systems 671 170 W. Tasman Drive 672 San Jose, CA 95124 95134 673 USA 675 Email: keyupate@cisco.com 677 Stefano Previdi 678 Cisco Systems 679 Via Del Serafico, 200 680 Rome 00142 681 Italy 683 Email: sprevidi@cisco.com 685 Clarence Filsfils 686 Cisco Systems 687 Brussels 688 Belgium 690 Email: cfilsfils@cisco.com 692 Arjun Sreekantiah 693 Cisco Systems 694 170 W. Tasman Drive 695 San Jose, CA 95124 95134 696 USA 698 Email: asreekan@cisco.com 700 Saikat Ray 701 Unaffiliated 703 Email: raysaikat@gmail.com