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

Re: reachability also for non-shim protocols



On 29-jun-2006, at 12:33, marcelo bagnulo braun wrote:

4. Schedule probes, considering exponential backoff

5. When packets are received, update 2

6. Choose an address pair and perform a return routability check

this is funny, i would say that probes of step 4,5 could be used for this...

You're going way too fast.  :-)

Step 1 must be done by the client protocol, and if it supports preferences, those will probably be per session rather than the same for all sessions.

yes, but again, there are two aspects here.

on one hand we have the protocol specific preferences, like the locator preferences options of shim6 then we have that each protocol may have different usage for different type of addresses, like preffering temp over stabel addresses and so on

Right.

For step 2 there is no client protocol specific information so it can be done host-wide.

well, different hosts may decide to include different locators sets in the contexts, so the list will vary depending on the particular context, and particular protocol, right?

Yes, but I'm assuming by this point there is a big fat list of address pairs, where some address pairs may only be of interest to one client protocol but others may be used by more than one client protocol.

It's also very useful to include information from other sessions, contexts and client protocols, including upper layer feedback. For instance, if a host has two addresses and a dozen of sessions tied to each, and suddenly there are problems with stuff tied to address 1 but not address 2, it makes sense to avoid pairs with source address 1.

right, but maybe the sessions have different sets of addresses, so the addresses available for one session are not available for the other one. In this case, you need to probe with different addresses for different sessions...

I don't think I understand...

6 is again something that must happen in the client protocol. In theory, making sure the other side is who we think it is can be done for more than one client protocol at the same time (this is what I tried to accomplish in http://www.muada.com/drafts/draft- van-beijnum-shim6-reach-detect-00.txt which the secretariat still hasn't posted...) but in practice that is the firewall problem, which can make it such that a certain path is usable for one client protocol, but not for another, because the second one is filtered out by a firewall.

but this is the case for all the probes imho

Sure, but if a firewall filters ALL shim packets then you don't have a problem because you're simply not going to be using shim6. The problems start when you can negotiate shim6 but not send probes or some other combinations of parts that work and other parts that don't.

i mean, you can use the probes as a return routability test.

The point here is that in order to be able to trust a return routability test, this must be something encapsulated in the client protocol. So maybe A1<->B1 works for proto=shim, but not for proto=mip.

I guess that what you are proposing is to make the probing using a general protocol and then perform a return routability check using the client protocol specific encapsulation in order to verify if the particular client protocol is filtered by the firewall.

Right!

The other option is to perform the probes using the client protocol encpasulation and then you don't need to perform the additional return routability. The trade off here is that you do a joint path exploration for all protocols but you need an additional return routability check per client protocol (and the added complexity of coordinating among protocols...) i am not sure is worth it

Well if you read on you'll see that I wrote:

So the return routability check must be performed by each client protocol itself. Considering all the ways in which this can go wrong, performing the return routability checks involves most of the complexity of probing reachability in the first place, so we must invoke the end-to-end principle which I think applies in the following way: if all cient protocols must do all this work themselves anyway, having another instance of the same mechanism in the middle serves no purpose.

In other words: nice idea, shame about the firewalls that make in unusable in practice.

But essentially, every communciation where we send something and the other side sends something back where we can determine which addresses we used in our packet and that this wasn't too long ago, can serve as a probe. So if an address pair works for MIP, we know it's extremely likely it will work for shim as well so we only need to make sure by sending a probe in shim encapsulation. The other way around, if a shim probe for a certain address pair has timed out, it makes much more sense for mip to try other pairs first as it's unlikely that this pair will work for mip but not for shim.

So a good use of hints makes having a shared probing protocol mostly unnecessary.