Redundancy & Summarization
Patrick W. Gilmore
patrick at ianai.net
Fri Aug 21 15:08:42 CDT 2009
On Aug 21, 2009, at 3:47 PM, Brian Dickson wrote:
>> My institution has a single /16 spread across 2 sites: the lower /
>> 17 is
>> used at site A, the upper /17 at site B. Sites A & B are connected
>> internally. Currently both sites have their own ISPs and only
>> their own /17's. For redundancy we proposed that each site advertise
>> both their own /17 and the whole /16, so that an ISP failure at
>> site would trigger traffic from both /17s to reconverge towards the
>> unaffected location.
> There are two different ways to achieve almost-identical results.
As much as I like Brian, I am going to have to respectfully disagree.
> However, one is a 50% more "green" than the other, i.e. friendly to
> other network operators.
> These two choices are functionally equivalent, and possible, only
> because things currently work for both your /17's.
> Here are the two ways to do this:
> One is:
> - announce /17 "A" and /16 from uplink ISP-A
> - announce /17 "B" and /16 from uplink ISP-B
> - This results in 3 prefixes globally: A, B, and /16.
> The other is:
> - announce /17 "A" and /17 "B", with different policies (i.e.
> prepend your AS once or twice), at *both* ISPs.
> - This results in 2 prefixes globally: A and B.
> In all cases, as long as one ISP link is up, there is a path to both
> A and B.
> In most cases, the best path to A or B, is *mostly*, but not
> completely, under your influence.
This is highly dependent on variables not in evidence. If your
upstreams are, for instance, Sprint & Level 3, then a large percentage
of the Internet will be traveling through one or the other. And once
it hits your upstream, prepends are irrelevant. Every upstream (for
values of "every" == "100%" to at least one decimal place) localprefs
their downstreams' prefixes.
In this case, anyone downstream of either L3 or Sprint will send _all_
traffic through that upstream's link. While not the whole Internet,
it's still quite a bit. Moreover, many people do things like
localpref Sprint _down_ because they are more expensive. So even
someone multi-homed to both may send all traffic through L3. Etc., etc.
A slight twist on Brian's idea would be to use communities and tell
Upstream A to localpref Prefix B below that of peer routes. Then you
only need two prefixes, and each site only receives its own traffic
except when the other site fails. If Upstream B goes down, Upstream A
will accept Prefix B and propagate it.
Again, dependent upon your upstreams having communities able to do
this. Or if they are "nimble", maybe a call to their operations
> So, the main difference to everyone else is, the presence or absence
> of a routing slot (/16), and/or extra copies of A and/or B.
> The routing slot occupies a slot in data-forwarding-plane hardware
> that is very limited.
> The extra copies of A and B (and extra copies of your AS in the AS-
> path) only eat cheap control-plane memory.
> If everyone did things nicely, we would not have as much of a crisis
> on the hardware side as we (collectively) do.
> Please consider being part of the solution (announcing only /17's,
> but in both places) rather than part of the problem (adding a new
> redundant /16 to everyone's routers, including in the hardware slots.)
More information about the NANOG