We are a small company which is dual-homed using BGP to two seperate providers. We have two routers each speaking EBGP to our providers and speaking IBGP to each other. Router A has a DS3 to provider A and router B has a 3MBps multilink pipe to provider B. We want traffic to both come in and go out through provider A as much as possible. What we used to do to achieve this is set the local preference on Router B for routes learned via Provider B to be lower and then set the local preference for routes learned via Provider A on Router A to be higher for outbound traffic. For inbound traffic we would set as-path prepend on RouterB for our block announcements. We are announcing a single /24 network.
Recently we switched provider B to a new provider. This provider has numerous private peering arrangments with different networks. So when I as-path prepend, I still get some traffic inbound over link B because of the peering our provider has with the networks we are trying to access and that are trying to access us. This has always been the case but now many more prefixes reach us via the B link than before. Recently I abandoned this as-path prepending in favor of a community that I send to our provider B which essentially sets the local preference on their network for our prefix to be lower than what is learned through our provider A. The problem with this is that despite us setting the local preference on routes learned from provider B lower in our AS (mostly because the routes being learned are of a more specific prefix from provider B), a certain number of prefixes still get installed in my AS as going out through Provider B. Since the local preference is set on their network for my announced prefixes, when I try and send traffic through them that traffic dies at their peer router. This results in certain prefixes not being able to reach us. Another issue is that my community setup for provider B would work good if they were to summarize routes some, which they don't seem to be doing. for example, I get a route for x.x.0.0/17 and a route for x.x.0.0/18 for them. Same network just different lengths. Provider A only sends the /17 so when connecting to this network BGP uses the /18 route through provider B where the traffic dies. If they would summarize then I would just get the /17 from both providers, the local preference would install the route to provider A and everything would work fine.
So I would like some creative ideas of how to fix this issue. My ideas are:
1. Send the local-preference community to them and filter routes learned from them such that no routes get learned from provider B. Then add a static default route to them on Router B.
2. Have provider B only send a default route to me so that if a failure occurs on provider A then networks will fall out and the static route will take over on router B and send traffic through provider B.
3. Have provider B summarize on their router so more specific routes are install in my AS learned from provider A.
Would like to keep getting full route tables from both providers for routing flexibility in my AS. I understand the path prepending debate amongst Internet engineers and if its really an effective solution to drive inbound traffic through one link over another. It seems to be the standard way to do this though based on my reading. I am including our configurations as well to see if anyone can spot an error in my setup. Hopefully I have explained this fully in such a way that it makes sense.
Thanks in advance for your help.
EDIT: Posted in wrong section. Apologies. Moved to WAN Routing.
You have a bad provider there :)
I recommend going with option 2 for egress traffic from your AS.
For ingress traffic into your AS, advertise (if allowed) longer mask of your public segment towards provider A (2 /25, for instance) and send the /24 towards provider B.
Thanks for the reply. I was able to finally talk to one of the BGP guys at provider B. They cannot do anything with regards to summarizing for me. They suggested I set local pref for inbound routes from them. I am already doing that and that would only work on the same prefixes from two providers. They send different ones so local pref does nothing.
I like the idea of sending the /25 to Provider A. After talking with my provider B though I think I am going to drop getting routes from them and just take a default, still accept routes from Provider A, and then just have the B link be a pure backup. Then send the 70 pref community to Provider B so no one uses that link. Hate to do it this way but since the BW is so bad on that side anyway, having it be a backup really probably makes sense. This issue has shown me this is not a good provider for doing this with.
Really appreciate your reply.
Use a BGP conditional advertisement towards ISP B and use them purely as backup.
Please refer to this document:
Please rate helpful posts