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

Re: survivability, rewriting



On 1 nov 2003, at 20:07, marcelo bagnulo wrote:

Also, it
might be beneficial to find out which alternatives still work before
selecting them to continue the session over.

Ok, but wouldn't this delay the reovery? i.e. the response time would be
worse

That is a possibility, but on the other hand rehoming in the blind also has its risks. For instance, if an upper layer protocol provides too many hints, we could be rehoming when there was just some incidental packet loss. I'm pretty sure rehoming will have to trigger slow start in TCP, which is not something you want to happen if isn't absolutely necessary. Or, in the case of a relatively large number of possible paths, several paths may share some infrastructure and go down at the same time. In that case, checking all paths helps avoid choosing a backup path that is also down. If we indeed go for the ping bomb approach there is the advantage that we immediately see which path is fastest, which is also a good feature and it only takes a single round trip.


Yes. But I don't think we want to do this with actual data packets. In
fact, there may not be any data packets available when this is
triggered by a hint.

I can think of two types of hints:
- a first type where the sending endpoint timeouts, so it detects the
failure by itself. This is the case where ack are used such as tcp. In this
case the ULP of the endpoint that is sending hints the M6 layer of the
sending endpoint (this is the easy case, i guess)

- a second type where no ack are used, so the ones that detects the failure
is the receiving end who detects the failure because it no longer receives
packets at the expected rate. In this case, the receiving end has to
communicate the problem to the sending endpoint. So in this case, the ULP of
the receiving endpoint has to hint the M6 layer of the sending endpoint.

Hm, doesn't the other side determine that something is wrong because it doesn't see any acks? If the ULP supports nacks then the receiving end can send those to get the message across sooner.


Does thus makes sense? can you think of other scenarios?

Another possibility would be that a receiver sees consistent duplicate packets, which indicates that the acks aren't getting back to the sender.


We may also want to trigger re-evaluation of reachability in some other cases. For instance, when a session has been idle for a long time, or upon some kind of hardware or routing event.

Then in the first case, the sending enpoint always has packets, since it has
detected the failure because of retransmissions, i guess. So, why don't you
think it should not try every possible path with data packets?

Might be an implementation issue. Might not be a problem, though.


In the second case, in order to discover which path is working, you will
need a message exchange, since probably there will be no packets back from
the receiving endpoint to the sending endpoint that allow the sending
endpoint to find out which is the combination of source and destination
address that it is actually working. So i guess that in this case, it would
make sense to have a protocol in the M6 layer to perform the available path
discovery.

Yes.


BGP is a non-starter as there can always be failures that don't show up
in BGP because of aggregation.

IMHO BGP is too slow, as we already agreed, but i am not uderstanding your
point about the aggregation.

I do understand it when you use bgp from the sending endpoint, so you cannot
see if the target endpoint is really reachable because aggregation hides it
from you.

Right, that was my point.


But if you use BGP plus rewriting as Erik suggests, then aggregation is not
a problem, because you use bgp as a mean to discover the available path, not
to see which address you should use.

Ah, I see: the host selects a destination address, then the router uses BGP to determine which ISP would be the best one to use to reach this address. Yes, this makes sense. However, there are two problems that are somewhat related to this:


1. the source address may be incompatible with the exit ISP
2. the destination address may be unreachable

The first can be fixed by rewriting. The second must be handled by the host. But if the host must handle selecting a destination address anyway, why not slightly extend this capability and let the host select a source/destination combo?

Assume hosts X and Y, X has ISPs A and B, Y has C and D and R means "rewriting allowed". Assume BGP prefers path X->A->C->Y and X->B->E->F->D->Y.

1 = routers with no special capabilities
2 = routers support source address based routing but not rewriting
3 = routers support source address based routing and also rewriting

              1   2   3
X(A)->Y(C):   +   +   +
X(A)->Y(D):   -   +   +
X(B)->Y(C):   -   +   +
X(B)->Y(D):   +   +   +
X(R)->Y(C):   -   -   +
X(R)->Y(D):   -   -   +

I think it's pretty clear that situation 1 is very sub-optimal but the added value of the rewriting feature is quationable. In situation 2 all the paths that are available in situation 3 are also available, it just may take a little longer to find the best one.

I was suggesting using a routing header to allow the host to force the exit
ISP i.e. as an alternative to the source address based routing

That wouldn't work, as "legacy" IPv6 hosts would have to insert such a header in order to function in a multihomed site.


Iljitsch