| < draft-ietf-grow-as-path-prepending-00.txt | draft-ietf-grow-as-path-prepending-01.txt > | |||
|---|---|---|---|---|
| Network Working Group M. McBride | Network Working Group M. McBride | |||
| Internet-Draft Futurewei | Internet-Draft Futurewei | |||
| Intended status: Best Current Practice D. Madory | Intended status: Best Current Practice D. Madory | |||
| Expires: March 12, 2021 Oracle | Expires: May 3, 2021 Oracle | |||
| J. Tantsura | J. Tantsura | |||
| Apstra | Apstra | |||
| R. Raszuk | R. Raszuk | |||
| Bloomberg LP | Bloomberg LP | |||
| H. Li | H. Li | |||
| HPE | HPE | |||
| September 8, 2020 | October 30, 2020 | |||
| AS Path Prepending | AS Path Prepending | |||
| draft-ietf-grow-as-path-prepending-00 | draft-ietf-grow-as-path-prepending-01 | |||
| Abstract | Abstract | |||
| AS Path Prepending provides a tool to manipulate the BGP AS_Path | AS Path Prepending provides a tool to manipulate the BGP AS_Path | |||
| attribute through prepending multiple entries of an AS. AS Path | attribute through prepending multiple entries of an AS. AS Path | |||
| Prepending is used to deprioritize a route or alternate path. By | Prepending is used to deprioritize a route or alternate path. By | |||
| prepending the local ASN multiple times, ASs can make advertised AS | prepending the local ASN multiple times, ASs can make advertised AS | |||
| paths appear artificially longer. Excessive AS Path Prepending has | paths appear artificially longer. Excessive AS Path Prepending has | |||
| caused routing issues in the internet. This document provides | caused routing issues in the internet. This document provides | |||
| guidance,to the internet community, with how best to utilize AS Path | guidance,to the internet community, with how best to utilize AS Path | |||
| skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| 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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 March 12, 2021. | This Internet-Draft will expire on May 3, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://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 ¶ | |||
| 2. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Problems . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Problems . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. Excessive Prepending . . . . . . . . . . . . . . . . . . 4 | 3.1. Excessive Prepending . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Prepending during a routing leak . . . . . . . . . . . . 5 | 3.2. Prepending during a routing leak . . . . . . . . . . . . 5 | |||
| 3.3. Prepending to All . . . . . . . . . . . . . . . . . . . . 6 | 3.3. Prepending to All . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.4. Memory . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.4. Memory . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.5. Errant announcement . . . . . . . . . . . . . . . . . . . 7 | 3.5. Errant announcement . . . . . . . . . . . . . . . . . . . 7 | |||
| 4. Alternatives to AS Path Prepend . . . . . . . . . . . . . . . 7 | 4. Alternatives to AS Path Prepend . . . . . . . . . . . . . . . 7 | |||
| 5. Best Practices . . . . . . . . . . . . . . . . . . . . . . . 7 | 5. Best Practices . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
| 8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 9 | 8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| 9.2. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 9.2. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1. Introduction | 1. Introduction | |||
| The Border Gateway Protocol (BGP) [RFC4271] specifies the AS_PATH | The Border Gateway Protocol (BGP) [RFC4271] specifies the AS_PATH | |||
| attribute which enumerates ASs a route update has traversed. If the | attribute which enumerates ASs a route update has traversed. If the | |||
| UPDATE message is propagated over an external link, then the local AS | UPDATE message is propagated over an external link, then the local AS | |||
| number is prepended to the AS_PATH attribute, and the NEXT_HOP | number is prepended to the AS_PATH attribute, and the NEXT_HOP | |||
| attribute is updated with an IP address of the router that should be | attribute is updated with an IP address of the router that should be | |||
| used as a next hop to the network. If the UPDATE message is | used as a next hop to the network. If the UPDATE message is | |||
| propagated over an internal link, then the AS_PATH attribute and the | propagated over an internal link, then the AS_PATH attribute and the | |||
| skipping to change at page 3, line 39 ¶ | skipping to change at page 3, line 39 ¶ | |||
| different ASBRs | different ASBRs | |||
| o Preferring one ASBR over another ASBR in the same site | o Preferring one ASBR over another ASBR in the same site | |||
| o Utilize one path exclusively and another path solely as a backup | o Utilize one path exclusively and another path solely as a backup | |||
| o Signal to indicate that one path may have a different amount of | o Signal to indicate that one path may have a different amount of | |||
| capacity than another where the lower capacity link still takes | capacity than another where the lower capacity link still takes | |||
| traffic | traffic | |||
| o An ISP doesn't accept traffic engineering using BGP communities. | ||||
| Prepending is the only option. | ||||
| The following illustration, from Geoff Hustons Path Prepending in BGP | The following illustration, from Geoff Hustons Path Prepending in BGP | |||
| [1], shows how AS Prepending is typically used: | [1], shows how AS Prepending is typically used: | |||
| +---+ +---+ | +---+ +---+ | |||
| +---| D |----| F | | +---| D |----| F | | |||
| | +---+ +---+ | | +---+ +---+ | |||
| +---+ +---+ | | +---+ +---+ | | |||
| | A |---| B | | | | A |---| B | | | |||
| +---+ +---+ | | +---+ +---+ | | |||
| | +---+ +---+ | | +---+ +---+ | |||
| skipping to change at page 4, line 27 ¶ | skipping to change at page 4, line 27 ¶ | |||
| two instances of its own AS number when advertising its routes to C, | two instances of its own AS number when advertising its routes to C, | |||
| then B will now see a different situation, where the AS Path via D | then B will now see a different situation, where the AS Path via D | |||
| represents the shorter path. Through the use of selective prepending | represents the shorter path. Through the use of selective prepending | |||
| E is able to alter the routing decision of B, even though B is not an | E is able to alter the routing decision of B, even though B is not an | |||
| adjacent neighbour of E. The result is that traffic from A and B | adjacent neighbour of E. The result is that traffic from A and B | |||
| will be passed via D and F to reach E, rather than via C. In this | will be passed via D and F to reach E, rather than via C. In this | |||
| way prepending implements action at a distance where the routing | way prepending implements action at a distance where the routing | |||
| decisions made by non-adjacent ASs can be influenced by selective AS | decisions made by non-adjacent ASs can be influenced by selective AS | |||
| Path prepending. | Path prepending. | |||
| In August 2020 a large ISP had a network outage that affected their | To illustrate, in August 2020 a large ISP had a network outage that | |||
| customers and other ISPs. One major problem was that the ISP wasn't | affected their customers and other ISPs. One major problem was that | |||
| withdrawing BGP routes, the stale routes were continuing to be | the ISP wasn't withdrawing BGP routes, the stale routes were | |||
| announced as legitimate by the down ISP. This caused blackholing of | continuing to be announced as legitimate by the down ISP. This | |||
| traffic even when customers had backup ISPs. What could customers do | caused blackholing of traffic even when customers had backup ISPs. | |||
| in this situation? They could change local preference to help send | What could customers do in this situation? They could change local | |||
| traffic to the backup ISP. They could send more specifics to the | preference to help send traffic to the backup ISP. They could send | |||
| backup ISP. They could also use AS Path Prepend by prepending the | more specifics to the backup ISP. They could also pre-provision the | |||
| same amount to both primary and backup ISPs before failure. | use of AS Path Prepend to prepend the same AS amount to both primary | |||
| Customers could then, during a failure, remove one prepend to the | and backup ISPs before failure. Customers could then, during a | |||
| backup ISP to make it more preferred over the down ISP. This is one, | failure, remove one prepend to the backup ISP to make it more | |||
| of several, scenarios where using AS Path Prepend can be beneficial. | preferred over the down ISP. This is one, of several, scenarios | |||
| where using AS Path Prepend can be beneficial. | ||||
| 3. Problems | 3. Problems | |||
| Since it is so commonly used, what is the problem with the excessive | Since it is so commonly used, what is the problem with the excessive | |||
| use of AS Path Prepending? Here are a few examples: | use of AS Path Prepending? Here are a few examples: | |||
| 3.1. Excessive Prepending | 3.1. Excessive Prepending | |||
| The risk of excessive use of AS Path Prepending can be illustrated | The risk of excessive use of AS Path Prepending can be illustrated | |||
| with real-world examples that have been anonymized using documention | with real-world examples that have been anonymized using documention | |||
| skipping to change at page 7, line 34 ¶ | skipping to change at page 7, line 36 ¶ | |||
| There are various options to provide path preference without needing | There are various options to provide path preference without needing | |||
| to use AS Path Prepend: | to use AS Path Prepend: | |||
| o Use predefined communities that are mapped to a particular | o Use predefined communities that are mapped to a particular | |||
| behavior when propagated. | behavior when propagated. | |||
| o Announce more specific routes on the preferred path. | o Announce more specific routes on the preferred path. | |||
| o The BGP Origin Code is an attribute that is used for path | o The BGP Origin Code is an attribute that is used for path | |||
| selection. The three origin codes are IGP, EGP and Incomplete. | selection and can be used as a high order tie-breaker. The three | |||
| We could advertise paths with IGP or EGP origin over the preferred | origin codes are IGP, EGP and INCOMPLETE. When AS Paths are of | |||
| path while the other ASBRs (which would otherwise prepend N times) | equivalent length, users could advertise paths, with IGP or EGP | |||
| advertises with an INCOMPLETE origin code. | origin, over the preferred path while the other ASBRs (which would | |||
| otherwise need to prepend N times) advertises with an INCOMPLETE | ||||
| origin code. | ||||
| 5. Best Practices | 5. Best Practices | |||
| Many of the best practices, or lack thereof, can be illustrated from | Many of the best practices, or lack thereof, can be illustrated from | |||
| the preceeding examples. Here's a summary of the best current | the preceeding examples. Here's a summary of the best current | |||
| practices of using AS Path Prepending: | practices when using AS Path Prepending: | |||
| o Network operators should ensure prepending is absolutely | o Network operators should ensure prepending is absolutely necessary | |||
| necessary. Many of your networks have excessive prepending | as many networks have excessive prepending | |||
| o There is no need to prepend more than 5 ASs. The following | o There is no need to prepend more than 5 ASs. The following | |||
| diagram shows that, according to Excessive AS Path Prepending [3], | diagram shows that, according to Excessive AS Path Prepending [3], | |||
| 90% of AS path lengths are 5 ASNs or fewer in length. | 90% of AS path lengths are 5 ASNs or fewer in length. | |||
| +------------------------------------+ | +------------------------------------+ | |||
| 90| | | 90| | | |||
| | X | | | X | | |||
| 80| X X | | 80| X X | | |||
| | X X | | | X X | | |||
| skipping to change at page 8, line 36 ¶ | skipping to change at page 8, line 40 ¶ | |||
| AS Path Length in IPv4 | AS Path Length in IPv4 | |||
| X Axis = unique AS Paths in millions | X Axis = unique AS Paths in millions | |||
| o Don't prepend ASNs that you don't own. | o Don't prepend ASNs that you don't own. | |||
| o Prepending-to-all is a self-inflicted and needless risk that | o Prepending-to-all is a self-inflicted and needless risk that | |||
| serves little purpose. Those excessively prepending their routes | serves little purpose. Those excessively prepending their routes | |||
| should consider this risk and adjust their routing configuration. | should consider this risk and adjust their routing configuration. | |||
| o It is not typical to see more than 20 ASs in a AS_PATH in the | o The Internet is typically around 5 ASs deep with the largest | |||
| Internet today even with the use of AS_Path prepend. The Internet | AS_PATH being 16-20 ASNs. Some have added 100 or more AS Path | |||
| is typically around 5 ASs deep with the largest AS_PATH being | Prepends and operators should therefore consider limiting the | |||
| 16-20 ASNs. Some have added 100 or more AS Path Prepends and | maximum AS-path length being accepted through aggressive filter | |||
| operators should therefore consider limiting the maximum AS-path | policies. | |||
| length being accepted | ||||
| 6. IANA Considerations | 6. IANA Considerations | |||
| 7. Security Considerations | 7. Security Considerations | |||
| There are no security issues introduced by this draft. | Long prepending may make a network more vulernable to route hijacking | |||
| which will exist whenever there is a well connected peer that is | ||||
| willing to forge their AS_PATH or allows announcements with a | ||||
| fabricated AS path. | ||||
| 8. Acknowledgement | 8. Acknowledgement | |||
| The authors would like to thank Greg Skinner, Randy Bush, Dave | The authors would like to thank Greg Skinner, Randy Bush, Dave | |||
| Farmer, Nick Hilliard, Martijn Schmidt, Jakob Heitz, Michael Still | Farmer, Nick Hilliard, Martijn Schmidt, Jakob Heitz, Michael Still, | |||
| and Geoff Huston for contributing to this document. | Geoff Huston and Jeffrey Haas for contributing to this document. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| End of changes. 15 change blocks. | ||||
| 35 lines changed or deleted | 42 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/ | ||||