idnits 2.17.1 draft-ietf-grow-large-communities-usage-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 (March 12, 2017) is 2601 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- -- Looks like a reference, but probably isn't: '1' on line 527 -- Looks like a reference, but probably isn't: '2' on line 529 -- Looks like a reference, but probably isn't: '3' on line 531 -- Looks like a reference, but probably isn't: '4' on line 533 Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Global Routing Operations J. Snijders 3 Internet-Draft J. Heasley 4 Intended status: Informational NTT 5 Expires: September 13, 2017 M. Schmidt 6 i3D.net 7 March 12, 2017 9 Usage of BGP Large Communities 10 draft-ietf-grow-large-communities-usage-03 12 Abstract 14 Examples and inspiration for operators for the use of BGP Large 15 Communities. 17 Status of This Memo 19 This Internet-Draft is submitted in full conformance with the 20 provisions of BCP 78 and BCP 79. 22 Internet-Drafts are working documents of the Internet Engineering 23 Task Force (IETF). Note that other groups may also distribute 24 working documents as Internet-Drafts. The list of current Internet- 25 Drafts is at http://datatracker.ietf.org/drafts/current/. 27 Internet-Drafts are draft documents valid for a maximum of six months 28 and may be updated, replaced, or obsoleted by other documents at any 29 time. It is inappropriate to use Internet-Drafts as reference 30 material or to cite them other than as "work in progress." 32 This Internet-Draft will expire on September 13, 2017. 34 Copyright Notice 36 Copyright (c) 2017 IETF Trust and the persons identified as the 37 document authors. All rights reserved. 39 This document is subject to BCP 78 and the IETF Trust's Legal 40 Provisions Relating to IETF Documents 41 (http://trustee.ietf.org/license-info) in effect on the date of 42 publication of this document. Please review these documents 43 carefully, as they describe your rights and restrictions with respect 44 to this document. Code Components extracted from this document must 45 include Simplified BSD License text as described in Section 4.e of 46 the Trust Legal Provisions and are provided without warranty as 47 described in the Simplified BSD License. 49 Table of Contents 51 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 52 2. The Design Overview . . . . . . . . . . . . . . . . . . . . . 2 53 2.1. Informational Communities . . . . . . . . . . . . . . . . 4 54 2.2. Action Communities . . . . . . . . . . . . . . . . . . . 4 55 3. Examples of Informational Communities . . . . . . . . . . . . 5 56 3.1. Location . . . . . . . . . . . . . . . . . . . . . . . . 5 57 3.1.1. An ISO 3166-1 numeric function . . . . . . . . . . . 5 58 3.1.2. A UN M.49 Region function . . . . . . . . . . . . . . 5 59 3.2. Relation Function . . . . . . . . . . . . . . . . . . . . 6 60 3.3. Combining Informational Communities . . . . . . . . . . . 6 61 4. Examples of Action Communities . . . . . . . . . . . . . . . 7 62 4.1. Selective NO_EXPORT . . . . . . . . . . . . . . . . . . . 7 63 4.1.1. ASN Based Selective NO_EXPORT . . . . . . . . . . . . 7 64 4.1.2. Location Based Selective NO_EXPORT . . . . . . . . . 7 65 4.2. Selective AS_PATH Prepending . . . . . . . . . . . . . . 8 66 4.2.1. ASN Based Selective AS_PATH Prepending . . . . . . . 8 67 4.2.2. Location Based Selective AS_PATH Prepending . . . . . 9 68 4.3. Manipulation of the LOCAL_PREF attribute . . . . . . . . 9 69 4.3.1. Global Manipulation of LOCAL_PREF . . . . . . . . . . 10 70 4.3.2. Location Based Manipulation of LOCAL_PREF . . . . . . 10 71 4.3.3. Note of Caution for LOCAL_PREF Functions . . . . . . 11 72 5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 73 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 74 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 11 75 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 76 8.1. Normative References . . . . . . . . . . . . . . . . . . 12 77 8.2. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 12 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 80 1. Introduction 82 BGP Large Communities [RFC8092] provide a mechanism to signal opaque 83 information between Autonomous Systems. This document presents 84 examples of how operators might utilise BGP Large Communities to 85 achieve various goals. This document draws from experience of 86 operational communities such as NANOG [1] and NLNOG [2]. 88 2. The Design Overview 90 BGP Large Communities are composed of three 4-octet fields. The 91 first is the Global Administrator (GA) field, whose value is the 92 Autonomous System Number (ASN) of the Autonomous System (AS) that has 93 defined the meaning of the remaining two 4-octet fields, known as 94 "Local Data Part 1" and "Local Data Part 2". This document describes 95 an approach where the "Local Data Part 1" field contains a function 96 identifier and the "Local Data Part 2" contains a parameter value. 98 Using the canonical notation the above can be summarized as 99 "ASN:Function:Parameter". 101 +----------------------+---------------+ 102 | RFC 8092 | this document | 103 +----------------------+---------------+ 104 | Global Administrator | ASN | 105 | Local Data Part 1 | Function | 106 | Local Data Part 2 | Parameter | 107 +----------------------+---------------+ 109 A mapping table on the usage of fields in BGP Large Communities 110 between [RFC8092] and this document. 112 Table 1: Field mapping 114 In contemporary deployments of both BGP Communities [RFC1997] and BGP 115 Large Communities, the function of a community can be divided into 116 two categories: 118 o Informational Communities 120 o Action Communities 122 Throughout the document a topology of four Autonomous Systems is used 123 to illustrate the usage of Communities in the following 124 configuration: 126 AS 65551 127 | 128 ^ 129 | 130 AS 64497 131 / \ 132 ^ \ 133 / ^ 134 AS 64498 \ 135 | | 136 `<->- AS 64499 138 AS 64497 obtains transit services from (is a customer of) AS 65551, a 139 32-bit ASN. AS 64497 provides transit services to both AS 64498 and 140 AS 64499. AS 64498 and AS 64499 maintain a peering relationship in 141 which they only exchange their customer routes. 143 The opaque nature of BGP Large Communities allows for rapid 144 deployment of new features or changes to products. Operators are 145 encouraged to publicly publish and maintain documentation of the 146 purpose of each BGP Large Community, both informational and action, 147 that they support or are visible in BGP RIBs. 149 2.1. Informational Communities 151 Informational Communities are labels for attributes such as the 152 origin of the route announcement, the nature of the relation with an 153 EBGP neighbor or the intended propagation audience. Informational 154 Communities can also assist in providing valuable information for 155 day-to-day network operations such as debugging or capacity planning. 157 The Global Administrator field is set to the ASN which labels the 158 routes with the Informational Communities. For example, AS 64497 159 might add a community with the GA 64497 to a route accepted from an 160 IBGP or EBGP neighbor as a means of signaling that it was imported in 161 a certain geographical region. 163 In general, the intended audiences of Informational Communities are 164 downstream networks and the Global Administrator itself, but any 165 Autonomous System could benefit from receiving these communities. 167 2.2. Action Communities 169 Action Communities are added as a label to request non-default 170 treatment of a route within an AS. The operator of that AS defines 171 routing policy which, based upon the communities, adjusts route 172 attributes such as its propagation characteristics, the LOCAL_PREF 173 (local preference), the next-hop, or the number of AS_PATH prepends 174 to be added upon reception or propagation. 176 The Global Administrator field is set to the ASN which has defined 177 the functionality of that BGP Large Community and is therefore the 178 ASN that is expected to perform the action. For instance, AS 64499 179 might label a route with a BGP Large Community containing GA 64497 to 180 request that AS 64497 perform a pre-defined action upon that route. 182 In general, the intended audience of Action Communities are transit 183 providers taking action on behalf of a customer or the Global 184 Administrator itself, but any AS could take action if they chose and 185 any AS could add an action community with the GA of a non-adjacent 186 ASN. However, note that an Action Community could also be 187 informational. Its presence is an indicator that the GA may have 188 performed the action and that an AS in the AS_PATH requested it. 190 3. Examples of Informational Communities 192 3.1. Location 194 An AS, AS 64497 in these examples, may inform other networks about 195 the geographical region where AS 64497 imported a route by labeling 196 it with BGP Large Communities following one of the following schemes 197 or a combination thereof. 199 3.1.1. An ISO 3166-1 numeric function 201 AS 64497 could assign a value of 1 to the Function field to designate 202 the content of the Parameter field as an ISO-3166-1 [3] numeric 203 country identifier. 205 +---------------------+---------------------------------------------+ 206 | BGP Large Community | Description | 207 +---------------------+---------------------------------------------+ 208 | 64497:1:528 | Route learned in the Netherlands | 209 | 64497:1:392 | Route learned in Japan | 210 | 64497:1:840 | Route learned in the United States of | 211 | | America | 212 +---------------------+---------------------------------------------+ 214 Example documentation for Informational Communities deployed by AS 215 64497 to describe the location where a route was imported using ISO 216 3166-1 numeric identifiers. 218 Table 2: Information: ISO 3166-1 220 3.1.2. A UN M.49 Region function 222 AS 64497 could assign a value of 2 to the Function field to designate 223 the content of the Parameter field as the M.49 numeric code published 224 by the United Nations Statistics Division (UNSD) [4] for macro 225 geographical (continental) regions, geographical sub-regions, or 226 selected economic and other groupings. 228 +---------------------+-------------------------------+ 229 | BGP Large Community | Description | 230 +---------------------+-------------------------------+ 231 | 64497:2:2 | Route learned in Africa | 232 | 64497:2:9 | Route learned in Oceania | 233 | 64497:2:145 | Route learned in Western Asia | 234 | 64497:2:150 | Route learned in Europe | 235 +---------------------+-------------------------------+ 237 Example documentation for Informational Communities deployed by AS 238 64497 to describe the location where a route was imported using M.49 239 numeric codes published by the United Nations Statistics Division. 241 Table 3: Information: UNSD Regions 243 3.2. Relation Function 245 An AS, AS 64497 in this example, could assign a value of 3 to the 246 Function field to designate the content of the Parameter field as a 247 number indicating whether the route originated inside its own network 248 or was learned externally, and if learned externally, it might 249 simultaneously characterize the nature of the relation with that 250 specific EBGP neighbor. 252 +---------------------+---------------------------------------+ 253 | BGP Large Community | Description | 254 +---------------------+---------------------------------------+ 255 | 64497:3:1 | Route originated internally | 256 | 64497:3:2 | Route learned from a customer | 257 | 64497:3:3 | Route learned from a peering partner | 258 | 64497:3:4 | Route learned from a transit provider | 259 +---------------------+---------------------------------------+ 261 Example documentation for Informational Communities deployed by AS 262 64497 to describe the relation to the ASN from which the route was 263 learned. 265 Table 4: Information: Relation 267 3.3. Combining Informational Communities 269 A route may be labeled with multiple Informational Communities. For 270 example, a route learned in the Netherlands from a customer might be 271 labeled with communities 64497:1:528, 64497:2:150 and 64497:3:2 at 272 the same time. 274 4. Examples of Action Communities 276 4.1. Selective NO_EXPORT 278 As part of an agreement, often a commercial transit agreement, 279 between AS 64497 and AS 64498, AS 64497 might expose BGP traffic 280 engineering functions to AS 64498. One such BGP traffic engineering 281 function could be selective NO_EXPORT, which is the selective 282 filtering of a route learned from one AS, AS 64498, to certain EBGP 283 neighbors of the GA, AS 64497. 285 4.1.1. ASN Based Selective NO_EXPORT 287 AS 64497 could assign a value of 4 to the Function field to designate 288 the content of the Parameter field as a neighboring ASN to which a 289 route should not be propagated. 291 +---------------------+---------------------------------+ 292 | BGP Large Community | Description | 293 +---------------------+---------------------------------+ 294 | 64497:4:64498 | Do not export route to AS 64498 | 295 | 64497:4:64499 | Do not export route to AS 64499 | 296 | 64497:4:65551 | Do not export route to AS 65551 | 297 +---------------------+---------------------------------+ 299 Example documentation for Action Communities deployed by AS 64497 to 300 expose a BGP traffic engineering function which selectively prevents 301 the propagation of routes to the neighboring ASN specified in the 302 Parameter field. 304 Table 5: Action: ASN NO_EXPORT 306 4.1.2. Location Based Selective NO_EXPORT 308 AS 64497 could assign a value of 5 to the Function field to designate 309 the content of the Parameter field as an ISO 3166-1 numeric country 310 identifier within which a labeled route is not propagated to EBGP 311 neighbors. However this might not prevent one of those EBGP 312 neighbors from learning that route in another country and thereby 313 making it available in the country specified by the BGP Large 314 Community. 316 +-----------------+-------------------------------------------------+ 317 | BGP Large | Description | 318 | Community | | 319 +-----------------+-------------------------------------------------+ 320 | 64497:5:528 | Do not export to EBGP neighbors in the | 321 | | Netherlands | 322 | 64497:5:392 | Do not export to EBGP neighbors in Japan | 323 | 64497:5:840 | Do not export to EBGP neighbors in the United | 324 | | States of America | 325 +-----------------+-------------------------------------------------+ 327 Example documentation for Action Communities deployed by AS 64497 to 328 expose a BGP traffic engineering function which selectively prevents 329 the propagation of routes to all EBGP neighbors in the geographical 330 region specified in the Parameter field. 332 Table 6: Action: NO_EXPORT in Region 334 4.2. Selective AS_PATH Prepending 336 As part of an agreement between AS 64497 and AS 64498, AS 64497 might 337 expose BGP traffic engineering functions to AS 64498. One such BGP 338 traffic engineering function could be selective prepending of the 339 AS_PATH with AS 64497 to certain certain EBGP neighbors of AS 64497. 341 4.2.1. ASN Based Selective AS_PATH Prepending 343 AS 64497 could assign a value of 6 to the Function field to designate 344 the content of the Parameter field as a neighboring ASN to which 345 prepending of the AS_PATH with AS 64497 is requested upon propagation 346 of the route. Additional AS_PATH Prepending functions might also be 347 defined to support multiples of prepending, that is two, three or 348 more prepends of AS 64497. 350 +---------------------+------------------------------------------+ 351 | BGP Large Community | Description | 352 +---------------------+------------------------------------------+ 353 | 64497:6:64498 | Prepend 64497 once on export to AS 64498 | 354 | 64497:6:64499 | Prepend 64497 once on export to AS 64499 | 355 | 64497:6:65551 | Prepend 64497 once on export to AS 65551 | 356 +---------------------+------------------------------------------+ 358 Example documentation for Action Communities deployed by AS 64497 to 359 expose a BGP traffic engineering function which selectively prepends 360 the AS_PATH with AS 64497 when propagating the route to the specified 361 EBGP neighbor. 363 Table 7: Action: Prepend to ASN 365 4.2.2. Location Based Selective AS_PATH Prepending 367 AS 64497 could assign a value of 7 to the Function field to designate 368 the content of the Parameter field as an ISO 3166-1 numeric country 369 identifier to which the prepending of the AS_PATH with AS 64497 is 370 requested upon propagation of the route to all EBGP neighbors in that 371 region. 373 +------------------+------------------------------------------------+ 374 | BGP Large | Description | 375 | Community | | 376 +------------------+------------------------------------------------+ 377 | 64497:7:528 | Prepend once to EBGP neighbors in the | 378 | | Netherlands | 379 | 64497:7:392 | Prepend once to EBGP neighbors in Japan | 380 | 64497:7:840 | Prepend once to EBGP neighbors in United | 381 | | States of America | 382 +------------------+------------------------------------------------+ 384 Example documentation for Action Communities deployed by AS 64497 to 385 expose a BGP traffic engineering function which selectively prepends 386 the AS_PATH with AS 64497 when propagating the route to all EBGP 387 neighbors in the geographical region specified in the Parameter 388 field. 390 Table 8: Action: Prepend in Region 392 4.3. Manipulation of the LOCAL_PREF attribute 394 As part of an agreement between AS 64497 and AS 64498, AS 64497 might 395 expose BGP traffic engineering functions to AS 64498. One such BGP 396 traffic engineering function might allow AS 64498 to manipulate the 397 value of the LOCAL_PREF attribute of routes learned from AS 64498 398 within AS 64497, even though the LOCAL_PREF attribute is non- 399 transitive and therefore is not propagated to EBGP neighbors. 401 The LOCAL_PREF value of routes are locally significant within each 402 Autonomous System and therefore are impossible to list in this 403 document. Instead, the typical LOCAL_PREF values could be classified 404 as a hierarchy and a BGP Large Community function exposed allowing an 405 EBGP neighbor to affect the LOCAL_PREF value within the specified GA. 406 The following non-exhaustive list defines the classes of routes in 407 the order of descending LOCAL_PREF value and assigns a function 408 identifier which could be used in the Function field of a BGP Large 409 Community. 411 +----------+--------------------------------------------------------+ 412 | Function | Preference Class | 413 +----------+--------------------------------------------------------+ 414 | 8 | Normal customer route. | 415 | 9 | Backup customer route. | 416 | 10 | Peering route. | 417 | 11 | Upstream transit route. | 418 | 12 | Fallback route, to be installed if no other path is | 419 | | available. | 420 +----------+--------------------------------------------------------+ 422 Table 9: Action: Preference Function Identifiers 424 4.3.1. Global Manipulation of LOCAL_PREF 426 AS 64497 could place one of the previously defined Preference 427 Function Identifiers in the Function field and set the value 0 in the 428 Parameter field to designate that the LOCAL_PREF associated with that 429 function identifier should be applied for that route throughout the 430 whole Autonomous System. 432 +---------------------+---------------------------------------------+ 433 | BGP Large Community | Description | 434 +---------------------+---------------------------------------------+ 435 | 64497:9:0 | Assign LOCAL_PREF for a customer backup | 436 | | route | 437 | 64497:10:0 | Assign LOCAL_PREF for a peering route | 438 | 64497:12:0 | Assign LOCAL_PREF for a fallback route | 439 +---------------------+---------------------------------------------+ 441 Example documentation for Action Communities deployed by AS 64497 to 442 expose a BGP traffic engineering function which allows a BGP neighbor 443 to globally manipulate the LOCAL_PREF attribute for the route within 444 AS 64497. 446 Table 10: Action: Global LOCAL_PREF Manipulation 448 4.3.2. Location Based Manipulation of LOCAL_PREF 450 AS 64497 could place one of the previously defined Preference 451 Function Identifiers in the Function field and use an ISO 3166-1 452 numeric country identifier in the Parameter field to designate the 453 geographical region within which the non-default LOCAL_PREF 454 associated with that function identifier should be applied to the 455 route. The value of the LOCAL_PREF attribute should not deviate from 456 the default for that route class in any region not specified by one 457 or more of these Action Communities. 459 +--------------+----------------------------------------------------+ 460 | BGP Large | Description | 461 | Community | | 462 +--------------+----------------------------------------------------+ 463 | 64497:9:528 | Assign LOCAL_PREF for a customer backup route on | 464 | | BGP speakers in the Netherlands | 465 | 64497:10:392 | Assign LOCAL_PREF for a peering route on BGP | 466 | | speakers in Japan | 467 | 64497:12:840 | Assign LOCAL_PREF for a fallback route on BGP | 468 | | speakers in United States of America | 469 +--------------+----------------------------------------------------+ 471 Example documentation for Action Communities deployed by AS 64497 to 472 expose a BGP traffic engineering function which allows a BGP neighbor 473 to selectively manipulate the LOCAL_PREF attribute within AS 64497 in 474 the geographical region specified in the Parameter field. 476 Table 11: Action: Regional LOCAL_PREF Manipulation 478 4.3.3. Note of Caution for LOCAL_PREF Functions 480 The LOCAL_PREF attribute strongly influences the BGP Decision 481 Process, which in turn affects the scope of route propagation. 482 Therefore, Operators should take special care when using Action 483 Communities that decrease the LOCAL_PREF value, and therefore the 484 degree of preference, to a value below that of another route class. 485 Some of the unintended BGP states that might arise as a result of 486 these traffic engineering decisions are described as "BGP Wedgies" in 487 [RFC4264]. 489 5. Security Considerations 491 Network operators should note the recommendations in Section 11 of 492 BGP Operations and Security [RFC7454]. 494 6. IANA Considerations 496 None. 498 7. Acknowledgments 500 The authors would like to gratefully acknowledge the insightful 501 comments, contributions, critique and support from Adam Chappell, 502 Jonathan Stewart, and Will Hargrave. 504 8. References 506 8.1. Normative References 508 [RFC1997] Chandra, R., Traina, P., and T. Li, "BGP Communities 509 Attribute", RFC 1997, DOI 10.17487/RFC1997, August 1996, 510 . 512 [RFC4264] Griffin, T. and G. Huston, "BGP Wedgies", RFC 4264, 513 DOI 10.17487/RFC4264, November 2005, 514 . 516 [RFC7454] Durand, J., Pepelnjak, I., and G. Doering, "BGP Operations 517 and Security", BCP 194, RFC 7454, DOI 10.17487/RFC7454, 518 February 2015, . 520 [RFC8092] Heitz, J., Ed., Snijders, J., Ed., Patel, K., Bagdonas, 521 I., and N. Hilliard, "BGP Large Communities Attribute", 522 RFC 8092, DOI 10.17487/RFC8092, February 2017, 523 . 525 8.2. URIs 527 [1] http://nanog.net 529 [2] http://nlnog.net 531 [3] https://www.iso.org/iso-3166-country-codes.html 533 [4] https://unstats.un.org/unsd/methodology/m49/ 535 Authors' Addresses 537 Job Snijders 538 NTT Communications 539 Theodorus Majofskistraat 100 540 Amsterdam 1065 SZ 541 The Netherlands 543 Email: job@ntt.net 544 John Heasley 545 NTT Communications 546 1111 NW 53rd Drive 547 Portland, OR 97210 548 United States of America 550 Email: heas@shrubbery.net 552 Martijn Schmidt 553 i3D.net 554 Rivium 1e Straat 1 555 Capelle aan den IJssel 2909 LE 556 NL 558 Email: martijnschmidt@i3d.net