We have two Cisco routers RA and RB
connected to two upstreams A and B using BGP. Between the routers we have IBGP.
One network of interest we can see differently over the two upstreams: as a single /16 over upstream A and as two separate /17s over upstream B. Traffic to this network thus always goes towards upstream B.
If for some reason we would like to send this traffic over upstream A, how can we achieve this in the most elegant way?
I can think of the following options:
- Filter the two /17s on router RB: This will leave the /16 unreachable when the BGP session to upstream B fails.
- aggregate-address the /16 on router RB: As far as I can see, this will change the AS-path and make the /16 appear to originate in our network. Am I wrong?
- Use conditional route injection to inject two /17s on RA as soon as the /16 is seen.
What do people use in such a situation?
If you use the command aggregate-address with the as-set option (aggregate-address as-set), then, according to documentation, "the path advertised for this route will be an AS_SET consisting of all elements contained in all paths that are being summarized". I have not seen this actually work, but I would prefer to try this option, compared to the others. I would perhaps try instead to put some static routes to force traffic flow for simplicity (if this situation is not very common and not many routers need to know about this choice).
Have in mind, that for the originating AS to split their aggregate, it means the other way is not prefered for some reason (which could be a congested link for example, interests in the Internet can be conflicting).