I'm trying to achieve total
redundancy on a multihomed environment:
ISP 1 <=> Router 1 <= X
=> Router 2 <=> ISP 2
Where X is my Network.
The hardest part can be handling a failure of either of the routers
and having X still be able to talk to the other in smaller networks.
While VRRP, MC-LAG, and MPLS do exist, platform, vendor, and your
requirements all make for a lot of fun. It's easy to accidentally
make routers do things the vendor hadn't intended (What do you mean
subscriber services aren't designed to work with mc-ae? Is that why
dhcp sync only works with vrrp and mpls and not mc-ae with
unnumbered interfaces?)
I'll try not to cover what others have said, but there are a few
things to consider on dealing with your ISPs. They may run RPF
filtering, so even if you don't want them to route traffic for a
network to you, if you might send traffic from that network out,
they'll need a route, so always send the aggregates to everyone you
send outbound traffic to. If you have trouble getting a network
added to a peer, you may have to not send any outbound their way.
Many ISPs run local prefs to prefer directly connected networks over
more costly paths. This will override AS prepends. Some may let you
change it with a community. Some will not. If you must force
traffic, use a more specific route. Even if others filter it out, it
should still get enough distance to force traffic the way you want.
If your redundancy is slightly oversold and you need rough load
balancing, more specific routes are the way to handle that, but try
and minimize their use. We do have routing table bloat.