[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: v6 multihoming and route filters



On 5-jul-2006, at 3:12, Christian Huitema wrote:

What would be the purpose of filtering at /48?

That allows for 2^45 = 351 trillion prefixes in the routing table,
which I suspect won't work too well on current routers. And it only
takes a handful of /32s deaggregated into /48s to inflate the IPv6
global routing table to a size larger than the current IPv4 routing
table.

But then, filtering at /32 allows for 2^30 = 1 billion prefixes, which I
suspect also won't work too well on current routers.

Yes, that's true. But a billion is still a lot closer to something reasonable than another nearly six orders of magnitude. And the crucial difference is that there is little chance of the the full ::/ 3 space being deaggregated into individual /32s, while leaking of significant numbers of "private" /48s into the global routing table is something I fully expect to happen based on experiences with IPv4.

Setting narrow filtering constraints is also counter-productive, as it
encourage a rush on the short prefixes. An organization that could have
done just fine with a /48 or maybe a /40 will request a /32 just in
case, so that organization can eventually multi-home.

This assumes that people will get anything they request. Currently, you can't really get a /40: ISPs get /32 or shorter, end-users rarely get something shorter than /48.

In the end, the size of the routing table will equal the number of
entities that want multi-homing hard enough. Playing around with prefix
sizes will not change that, and will probably generate undesirable
counter effects.

Besides, there are networks in which advertizing /48 or even /64 in BGP makes perfect sense. Take for example the "metropolitan aggregation" in
which all users in an area get numbered from the same long prefix. The
local ISP will have to exchange the short prefixes with each other. The
will use BGP. Do we want to have a rule cast in stone that prevents
them?

We should really think twice before asking the IETF to publish a
position on this subject. Silence may well be the right approach.

On the other hand, no filtering at all is asking for trouble, so it would make sense for us to come up with a good filtering strategy. One would be to make a filter based on actual allocations, which is still possible in IPv6 today because of the small size of the global table.

Another approach is to filter on prefix size depending on the size of the prefixes RIRs give out in a certain part of the address space. (Possibly allowing one or two extra bits for traffic engineering purposes.) I think this is the best way to do it currently, but the problem is that the RIRs are still coming up with new stuff here so if we write this up it's likely that the list of parts of the address space where /48s are given out will change soon after, so the resulting document won't be all that useful in practice. (I'm also VERY much annoyed by the fact that the RIRs say you can filter on /32 (see quote yesterday) but give out /48s at the same time, I've brought this up YEARS ago and no action so far. The fact that each RIR reinvents the wheel with little global coordination but we're dealing with a GLOBAL routing table and not several regional ones doesn't help.)

Third approach: use prefixes shorter than /48 for anything that should be in the routing table and then filter at /47. This avoids problems with accidental leaking of /48s from internal routing, but the ship has sailed on /48 for "micro allocations" so this approach would have to be combined with the previous one.

Finally, it would be possible to tag prefixes longer than /32 that are injected into global routing intentionally, especially in the case of shorter prefixes that are drawn from a larger address block for multihoming purposes, with a BGP community that indicates why this is done so that people can filter appropriately. For instance, as a network operator I may want to allow such prefixes from "close by" but not from other continents, so that there is a more or less dynamic tradeoff between routing table size and optimum traffic flow through the network, which is really what we want. (With PI you're forced to carry the route or the destination is unreachable, not a very nice choice.)