We have links to two differnt ISPs. We recieve partial routing entries and default from both, however only one default route appears in the routing table. This is a problem for us as large amounts of traffic are still using the default route, which means traffic is substantially higher on that link.
Is there a way of getting the router to load balance between the two, as would happen with an internal routing protocol?
I can see that:
BGP routing table entry for 0.0.0.0/0, version 4392067
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Not advertised to any peer
x.x.x.x from x.x.x.x(x.x.x.x)
Origin IGP, metric 0, localpref 100, valid, external
x.x.x.x from x.x.x.x (x.x.x.x)
Origin IGP, metric 0, localpref 100, valid, external, best
I have found lots of examples of having a primary and a backup, but we really need to have both acting as primary.
Any help much appreciated.
To configure multipath load sharing for external BGP (eBGP) and internal (iBGP) routes, use the maximum-paths eibgp command in address family configuration mode. To disable multipath load sharing for eBGP and iBGP routes, use the no form of this command.
maximum-paths eibgp number [import number]
no maximum-paths eibgp number [import number]
Many thanks for your quick response. Just looking at the book I have, though, it states the following on the maximum-paths command:
"Load balancing in this manner works only when dealing with identical routing updates coming into the same router from the same provider. This method does not work to load balance in a mulitprovider environment"
So I don't think this is suitable for my situation...any thoughts?
There are some good examples here.
basic idea is to prefer half of prefixes from one ISP and other half from another.
In ur case since u have 2 defaults routes, I cannot see how this can be achieved.
typical set up with 2 ISPs is one provides full internet table, and the other a default route.
From a capacity planning angle, i think it would be better to have one link capable of carrying all traffic and the other is a simple backup (so backup instead of load sharing).
I shall keep a close eye on this post to see if there are any solutions.
BGP can only perform load balancing between two links terminated in the same router (both sides). Other than that, BGP can only perform load-sharing.
Ask your providers to advertise to you full internet route. Make sure you have the power to received full internet route, i.e. Memory (512MB recommended).
Though you can loadblance your outbound connections using multipath, it will not alter the traffic inbound into your AS
If you want to load balance try this
bgp bestpath as-path multipath-relax
This will ensure you have both the entries in the routing table
One side effect of relaxing as-path might be it will do the same for your existing partials?
Two other possibilities.
First, instead of using the provider's defaults, perhaps just hard-configure your own static defaults.
Second, a technique posted within these forums (which I haven't yet tried), is to prepend your own AS to inbound routes so the next AS hop is the same. In this case, it could be done to just the provider default routes. (This would also require, I suspect, usage of maximum-paths.)
I have seen few posts advising against multipath towards 2 ISPs as it would affect ur TCP timers and packets delivery order.
I have not tested it, so this was just a word of caution before u go live with this implementation.
This should not be an issue as CEF will do per destination (which is really per flow) load balancing by default.
Thank you all for your responses
So I think I have 3 options:
1) keep with having a primary and backup
2) use static routes
3) advertise all routes
What is the general consensus for using 2 static routes? Would this automatically failover?
The default static routes should failover fine provided the next hop is seen as down, e.g. far side address of a p-2-p link.
BTW: Even if you accept all routes, you may find traffic prefers one path vs. the other if the AS path count is the same. Perhaps the "bgp bestpath as-path ignore" command would address this, but then your links selection likely wouldn't differ much from just using outbound defaults.
You might want to look into OER/PfR, if supported on your router, to obtain best outbound link utilization.
If the links to the ISPs are Ethernet then you might want to configure reliable static routes (static routes + IP SLA).
Please refer to the following document for more information on this feature.
Thank you guys for your responses.
Is IP SLA used in this situation, as the article only discusses it as a backup option.
Also, just discussing static routes, I have 2 ethernet interfaces, one for ISP 1 and one for ISP 2, and 2 peers on ISP1. So I would need 3 static routes, right? One for each peer.
Also in what circumstances would the static routes be removed out of the r-t? I would think that it would only be in the event of the interface going down, so what happens if a network becomes unreachable from ISP 2 for instance? I guess this is no different from having the default routes advertised by BGP though.
I believe that's correct, i.e. you'll need 3 statics, however it makes for a new problem, you'll get a 2:1 load balance.
Having a static withdrawn by object tracking shouldn't require the interface to go down. It should also be usable in other than as a backup path option.
When you ask about a destination network being unreachable via ISP 2, if you have in mind an individual destination (network or networks), only full BGP tables would avoid this.
BTW: OER/PfR handles both the load balancing problem, including your having two BGP peers on one link, and unreachable networks without full BGP tables.