RFC 2519
A Framework for Inter-Domain Route Aggregation
Okay bestie, let's start with the vibe check β¨ This is RFC 2519, called "A Framework for Inter-Domain Route Aggregation." It's an Informational doc from February 1999, so it's giving "here's some helpful info for the Internet community" and not an official standard π Two authors wrote it: E. Chen from Cisco and J. Stewart from Juniper π Its header doesn't list any RFCs it obsoletes or updates, so it's a fresh drop with no drama attached πΈ
Status of this Memo
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited π¦
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved. π
Abstract
So the TL;DR is this: the doc lays out a framework for inter-domain route aggregation and shows a router configuration that "implements" it π§ It's flexible and scales well because it's all about aggregation by the source, both inside routing domains and toward upstream providers π It also really encourages using the "no-export" BGP community to balance what the provider-subscriber relationship wants (more granular routing info) with what the Internet needs (scalable inter-domain routing) π«Ά
1. Introduction β¨
Okay, so route aggregation has been a known need forever π It's good because it shrinks the Internet routing table and slows how fast it grows π That means less CPU and memory get used to process routing info, and route calculation gets faster β‘ Another perk: route flaps get limited in number, frequency, and scope, which saves resources and makes the global routing system more stable π
Ever since CIDR (Classless Inter-Domain Routing) [2] showed up, there's been a lot of progress on aggregation, especially in two areas:
- Top registries have been making IP address allocation policies that follow the CIDR principles [1] π
This policy work is the cornerstone that makes efficient route aggregation technically possible π§±
- Large providers, especially the "Tier 1" ones, have been doing route aggregation π So far, the biggest drops in routing table size have come from efficient aggregation by these large providers π
Here's the catch though π Different levels of the global routing system are way uneven at implementing efficient aggregation schemes. So the size and growth rate of the Internet routing table, plus the route computation it needs, are still major issues today π To keep the Internet growing, it's important to maximize aggregation efficiency at all levels of the routing system π
Since the routing system is so big and so dynamic, the first step is to set up a clearly defined framework where scalable inter-domain route aggregation can actually happen π§ The framework in this document is based on the main, current experience in the Internet πΈ It stresses aggregation by the source, both inside routing domains and toward upstream providers π It also strongly encourages using the "no-export" BGP community, to balance the provider-subscriber need for more granular routing info with the Internet's need for scalable inter-domain routing π«Ά Here are the advantages of this framework:
- Aggregation happens in a distributed way, with the emphasis on the party or parties injecting the aggregatable routing info into the global mesh πΈοΈ
- A routing domain can inject more granular routing info to an adjacent domain to control the resulting traffic patterns, and this doesn't affect the global routing system at all π¦
Besides describing the philosophy, the doc illustrates it with sample configurations π Examples use IPv4 prefixes, BGP4, and ASs, but the principles apply to inter-domain route aggregation in general π
Address allocation policies and technologies for renumbering entire networks are super relevant to successful, sustained inter-domain routing, but they're not the focus here π If you want pointers to those, check the references section, which has [8, 9, 11, 12] π
2. Route Aggregation Framework π¦
The framework is summarized like this, babe π
- Aggregation from the originating AS
So in its outbound route announcements, each AS aggregates the BGP routes it originates itself, plus the ones originated by dedicated ASs and private-ASs [10] π ("Routes originated by an AS" means routes that have that AS first in the AS path attribute. For example, routes statically configured and injected into BGP fall into this category π)
This framework doesn't rely on "proxy aggregation," which is aggregation done by an AS other than the originating one π ββοΈ That keeps a multi-homed site in charge of how granular its routing info is when it gets injected into the global routing system π Proxy aggregation needs coordination across multiple organizations, so the complexity goes up with every party involved π΅βπ« And that complexity affects how practical proxy aggregation is π§©
An AS shall always originate, via a stable mechanism (e.g., static route configuration), the BGP routes for the large aggregates it allocates addresses from to its customers π«§ This makes it safe for those customers to use BGP "no-export" π
- Using BGP community "no-export" toward upstream providers
So in its route announcements toward its upstream provider, an AS tags the BGP community "no-export" on routes it originates that don't need to go beyond that upstream provider (for example, prefixes the upstream provider allocated) π·οΈ
This framework is shown in Figure 1 πΌοΈ A "Tier 1" provider doesn't use "no-export" in its announcements, since it has no upstream provider π€·ββοΈ But it shall aggregate the routes it originates in its outbound announcements toward both peer providers and customers πͺ An AS with an upstream provider shall aggregate the routes it originates, and it uses "no-export" toward that upstream provider for routes that don't need to go beyond the provider's AS β¨ This recursion shall apply to all levels of the routing hierarchy π
Tier 1
+-- Provider <--+
| |
o aggregates routes | | o announces customer routes
it originates | | o aggregates routes it originates
| ^ o uses "no-export" if appropriate
|
+---> Tier 2 <--+
Provider |
V |
| |
o aggregates routes | | o announces customer routes
it originates | | o aggregates routes it originates
| | o uses "no-export" if appropriate
| |
| ^
-> Customer AS
Figure 1 πΈ
This framework scales well because aggregation happens at all levels of the routing system π It's flexible because the originating AS controls whether finer-grained routes get injected into, and/or propagated by, its upstream provider ποΈ And it makes multi-homing possible without messing up route aggregation π«Ά
This framework is detailed in the sections that follow π
3. Aggregation from the Originating AS π
It's well recognized that address allocation and address renumbering are the keys to keeping the Internet routing table from growing out of control [1, 2, 8, 9, 11, 12] π
Even though the strategies in this document don't assume perfect address allocation, it's strongly urged that an AS gets its allocation from its upstream service providers' address block π
3.1 Intra-Domain Aggregation π
To cut down on the number of routes that need to be injected into an AS, a couple of principles should be followed. <!-- placeholder removed below -->
Hold on, I need to correct that: the original says "shall," so here it is with the right wording:
To cut down on the number of routes that need to be injected into an AS, there are a couple of principles that shall be followed:
- Keep the large route block allocated from the upstream provider, or from an address registry (e.g., InterNIC, RIPE, APNIC), in the AS's BGP table π§Ί This can be done either with static configuration of the large block or by aggregating more specific BGP routes π§ The former is recommended because it doesn't depend on other routes π
- Allocate sub-blocks to the access routers where further allocation happens πΊοΈ So the address allocation shall be done so that only a few, less specific routes (instead of many more, specific ones) need to be known to the other routers within the AS π―
For example, a /17 prefix can be further allocated to different access routers as /20s, and those /20s can then be allocated to customers connected to different interfaces on that router (see Figure 2 π¦). Generally, only the /20 needs to be injected into the whole AS π¦ The exception is multi-homed static routes π
access router
+------------+
| x.x.x.x/20 |
+------------+
| | |
| | |
/24 /22 /25
Figure 2 π§
It's worth noting that rehoming customers without renumbering, even inside the same AS, may lead to more specific routes getting injected π In general, though, those more-specifics don't need to be advertised outside that AS π Such routes can either be tagged with the BGP community "no-export" or filtered out by a prefix-based filter so they don't get advertised out π«
Part 1 of 3 is done, bestie! Part 2 is coming next, so stay tuned ππ
3.2 Inter-Domain Aggregation π
okay so an AS has at least two kinds of routes it needs to advertise: the ones it originated itself, and the ones its BGP customers originated π sometimes it has to send full routes to certain BGP customers, which means the announcements can include routes originated by non-customer ASs. π an AS can, and should, safely aggregate the routes originated by itself and by its BGP customers that are multi-homed only to it (using, e.g., the dedicated-AS and by the private-AS mechanism [10]) in its outbound announcement. but aggregating routes originated by customer ASs because of multi-homing is way more dangerous, bestie π
BUT there are several situations where a route originated by a BGP customer (other than using the dedicated AS or private AS) does NOT need to be advertised out by its upstream providers β¨ for example:
- The route is a more-specific of the upstream provider's block. However, the customer is either singly homed; or its connection to this particular upstream provider is used for backup only.
- The more-specifics of a larger block are announced by the customer in order to balance traffic over the multiple links to the upstream provider.
so how do we suppress these routes? π§ we give the control to the ASs that originate the more-specifics (as seen by their upstream providers), and let them tag the BGP community "no-export" to the appropriate routes. it's giving delegation π
The BGP community "no-export" is a well known BGP community [6, 7]. A route with this attribute is not propagated beyond an AS boundary. So, if a route is tagged with this community in its announcement to an upstream provider and is accepted by the upstream provider, the route will not be announced beyond the upstream provider's AS. This achieves the goal of suppressing the more-specifics in the upstream provider's outbound announcement. π¦
In this framework, the BGP community "no-export" shall be tagged to routes that are to be advertized to, but not propagated by, its upstream provider. β¨ Those can include routes allocated out of its upstream provider's block, or the more specific routes announced to its upstream provider for the purpose of load balancing. This aggregation strategy can be implemented via prefix-based filtering, as shown in the example of Section 5. πΈ
for its own protection, a downstream AS shall announce only its own routes and its customer routes to its upstream providers. π«Ά so the outbound announcement and aggregation policy looks like this:
For routes originated by itself/dedicated-AS/private-AS:
tag with "no-export" when appropriate, and advertise the
large block and suppress the more-specifics
For routes originated by customer ASs:
advertise to upstream ASs
For any other routes:
do not advertise to upstream ASs
this approach is flexible and scales well, periodt π₯ because it gives control to the party with the special needs, spreads out the workload, and skips the coordination overhead that proxy aggregation would need.
4. Aggregation by a Provider π
a provider shall aggregate all the routes it originates, exactly like we talked about in Section 3. π the only difference is that the provider may be giving full routes to certain BGP customers where no outbound filtering is in place right now. ngl, experience has shown that inconsistent route announcements (like aggregating at the interconnects but NOT toward certain customers) can cause serious routing problems for the whole Internet, because of longest-match routing π in some cases, announcing the more-specifics to customers might give more accurate IGP metrics and be useful for better load-balancing. but the potential risk seems to outweigh the benefit, especially given how complicated a customer's connectivity can get now. so every effort shall be made to ensure consistent route aggregation for all BGP peers, and that means deploying filters for the BGP peers that receive full routes. β¨
in summary, the aggregation strategy for a provider shall be:
- In announcing customer routes:
For routes originated by itself/dedicated-AS/private-AS:
tag with "no-export" when appropriate, and advertise the
large block and suppress the more-specifics
For routes originated by other customer ASs:
advertise
For any other routes:
do not advertise
- In announcing full routes:
For routes originated by itself/dedicated-AS/private-AS:
tag with "no-export" when appropriate, and advertise the
large block and suppress the more-specifics
For any other routes:
advertise
5. An Example π
okay picture this, bestie π§ AS 1000 is a "Tier 1" provider with two big aggregates, 208.128.0.0/12 and 166.55.0.0/16. AS 2000 is a customer of AS 1000, and it has a "portable address" 160.75.0.0/16 plus an address 208.128.0.0/19 that was allocated from AS 1000. we're assuming 208.128.0.0/19 does not need to be propagated beyond AS 1000. π¦
+----------------+
| AS 1000 |
| 208.128.0.0/12 |
| 166.55.0.0/16 |
+----------------+
|
| BGP
|
|
+----------------+
| AS 2000 |
| 208.128.0.0/19 |
| 160.75.0.0/16 |
+----------------+
Figure 3
so based on the framework we just covered, AS 1000 would:
- originate and advertise the BGP routes 208.128.0.0/12 and 166.55.0.0/16, and suppress more-specifics originated by itself/private-ASs/dedicated-ASs
- advertise the routes received from the customer AS 2000
and AS 2000 would:
- originate BGP route 208.128.0.0/19 and 160.75.0.0/16
- advertise both 160.75.0.0/16 and 208.128.0.0/19 to its provider AS 1000 and suppress the more specifics originated by itself/private-AS/dedicated-AS, tagging the route 208.128.0.0/19 with "no-export"
- advertise both 160.75.0.0/16 and 208.128.0.0/19 to its BGP customers (if any) and suppress the more-specifics originated by itself/private-AS/dedicated-AS, plus any other routes the customers may desire to receive
β¨ the sample configuration that implements these policies (in Cisco syntax) is given in Appendix A. π
Full Copyright Statement β¨
Okay bestie, the legal bit, but make it cute π Copyright (C) The Internet Society (1999). All Rights Reserved. π The Internet Society owns the copyright here, and it's been claimed since 1999.
You can share it, though! This document and translations of it may be copied and furnished to others π¦ Derivative works that comment on or otherwise explain it, or help with implementing it, may also be prepared, copied, published and distributed, in whole or in part, without restriction of any kind π The one catch is that the above copyright notice and this paragraph have to be included on all those copies and derivative works π«Ά
Not so fast π This document itself may not be modified in any way. That covers removing the copyright notice or the references to the Internet Society or other Internet organizations. There are two exceptions: developing Internet standards, where the procedures for copyrights defined in the Internet Standards process must be followed, or translating it into languages other than English.
The permissions are perpetual βΎοΈ and will not be revoked by the Internet Society or its successors or assigns. Forever and ever, no takebacks π
Now the disclaimer, which is giving very serious π This document and the information in it is provided on an "AS IS" basis, and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Basically they're not promising it's perfect, so read the fine print before you ship anything πβ¨
π¦ where this page comes from
- ietf: rfc2519 1999-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms