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

Re: On the use of multiple PA prefixes or a single PI prefix for IPv6 multihoming



Iljitsch van Beijnum wrote:

Avoiding non-working paths goes to the core of what's multihoming all about, so this is something we absolutely need. But I'm not sure it's all we need. What I'm worried about is the situation where there are multiple working paths, but there is a large difference in quality between them. For instance, one path has a capacity of 100 Mbps and another a capacity of 1 Mbps. In this case, selecting the latter path as part of regular operation would hardly be acceptable.

I agree that we have some remaining issues. To give you another example, switching from a 50 Mbps LAN to a 20 Kbps GRPS might be needed when the LAN goes down at some point. However, what do we do when the LAN comes back up again later? The slower interface still works, so there's no need to do failover. But you'd really want to switch...

We _may_ be able to bring this problem back to manageable proportions by taking advantage of the information both ends have. So if either end knows that the second path is much slower, they'll avoid it as long as the first path is operational. This leaves only the cases where there is congestion in the core, which is pretty rare these days. (But this hasn't always been the case...)

Hmm... I guess the issue is whether either end knows. I'm not sure the assumption that you know/test what the L2 does is any better than the assumption that you know/test what the core does.

I'm not really afraid of testing the speed of a path, but what
I am afraid is the interaction with ULPs. We really don't want
Multi6 and TCP and whatnot testing all the same thing and second
guessing each other.

Note that the whole reachability detection problem isn't as simple as it may seem at first, especially when we want to make use of unidirectional paths. Until not very long ago, I was favoring a "cartesian ping bomb" approach where there are reachability probes for all { src, dst } combinations. However, this can cause massive congestion when a link fails for a busy site, and it's also complex and most likely slow.

Yes. In http://www.arkko.com/publications/multi6/faildet.html#anchor9 we did the math, and with the quite reasonable assumption of exponential back-off, testing all combinations of addresses with just four addresses on each side would last 3200 seconds.

My current homework for the design team is to look how protocols such as OSPF and especially STUN implement similar features and see what we can borrow there. Unless this provides significant new insights I want so see if we can make a "be optimistic but check first" approach work. This means that when the reachability heuristics determine that there may be a path failure, we check the current path. If there is a failure, we check the next best path (for whatever "best" means locally) and so on, until we find one that works. In order to detect unidirectional reachability without excessive numbers of packets, each probe contains information about the last few multihoming signaling packets received from the other side. So unidirectional reachability won't be detected as fast as bidirectional reachability, but eventually it will.

This is the algorithm in http://www.arkko.com/publications/multi6/faildet.html#sketch

The part about using heuristics to try the address (pairs) is
good.

But I think the worst case behaviour is still bad. Remember that
even getting a packet from A to B means that you both have to have
the source set so that its currently routable, the destination
so that its currently routable, and that its routable from this
source.

Another way to get around selecting a working, but non-optimal path is allowing applications to set an "impatient" flag which then triggers more extensive path evaluation. :-)

Do you mean the "I am in a hurry, screw the others if this causes congestion" -flag? ;-)

I fear that the things that we want to do would really require
better good knowledge of the current RTTs of the paths. This
can be measured, but there's a tradeoff in how far we want
to venture in the territory of TCP vs. how good our information
is.

--Jari