[j-nsp] full table?
Pavel Lunin
plunin at senetsy.ru
Tue Sep 20 15:21:59 EDT 2011
> Is it always necessary to take in a full table? Why or why not? In light
> of the Saudi Telekom fiasco I'm curious what others thing. This question is
> understandably subjective. We have datacenters with no more than three
> upstreams. We would obviously have to have a few copies of the table for
> customers that want to receive it from us, but I'm curious if it is still
> necessary to have a full table advertised from every peering. Several ISP's
> will allow you to filter everything longer than say /20 and then receive a
> default. Just curious what others think and if anyone is doing this.
1. If you have downstream ASes, than full table is [most probably]
needed to be not just received but also used for forwarding (this is by
default, but you can alter, see below). Otherwise loops/blackholes are
possible in specific scenarios (split customer's AS, etc). Workarounds
exist for this, but they are rather too complicated to maintain and make
everyone in NOC to remember how it works. Some folks (especially DCs)
don't care and just send full table to customers, not having it in data
plane. For DCs with just few customers with their own ASes, this
approach works well almost always (until something breaks). When issues
arise, they troubleshot it and rewrite policies to accept additional
routes. Not very good, but I saw this many times.
2. You must remember (people forget these basics surprisingly often),
that full table, you receive from upstreams or IX-peer, is used to
_send_ traffic. So when you think it's useful to have full table to
analyze or somehow intellectually influence traffic balancing across
uplinks, you must remember that it only relates to traffic going _out_
your AS. Every couple of weeks I talk to someone who believes, he needs
to receive full table, since he wants to "balance traffic". When I ask
them, how much traffic they send out, it usually turns out to be not
more than 10% of a single link capacity, and they don't experience any
problem with it at all. And yes, most of them need to balance incoming
traffic, but full table has nothing to do with this.
4. Most platform allow using two or more defaults with ECMP enabled.
Real routers (like MX series) also allow using bandwidth-communities to
make LB really asymmetrical (30% through ISP1, 70% through ISP2). If you
need it, say, in case of different uplink capacities (10G and 1G). L3
switches (e.g. EX series) can't do this because of their much simpler
(and cheaper) PFEs.
5. It does not depend on ISP, if you want to strip things out the full
table (this is _your_ import policies), you can write any policy you
wish, but all these tricks with not receiving "anything longer than"
eliminates most of the full table advantages. If you want partial table,
you better filter routes somehow more consciously. E. g.
international/domestic, routes to your/customers' remote locations,
routes to ASes, to which you send most of your traffic, etc. Of course,
you customers won't be much happy, if you send them a partial instead of
full table. So if you filter something out, you most probably need to
play games (not without cheating) with forwarding along partial but
sending full table to customers. See rule number 1: first, be afraid of
loops and blackholes, second, this is an art and not easy to maintain,
especially when different NOC shifts have to troubleshoot and resolve
issues quickly.
6. If, after checking rules 1–5, you are still not sure if you need full
table — you definitely don't.
Having this said, I'd say, full table is needed because of the
downstream ASes. Playing the games described above does not worth it.
More information about the juniper-nsp
mailing list