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

Re: API for SHIM



Hi Marcelo,

please find my replies inline.

On Tue, 18 Apr 2006 13:33:34 +0300
marcelo bagnulo braun <marcelo@it.uc3m.es> wrote:

> 
> El 12/04/2006, a las 18:01, Shinta Sugimoto escribis:
> 
> ...
> >> Right, but it is also the case that the connect by name functionality
> >> can be used without the shim and it is really useful in that case too.
> >> I mean first of all, it is important to note that in order to make  
> >> this
> >> work we don't need the shim. This is so, because at the moment that
> >> connect by name is performed , the ulid for that communication is  
> >> being
> >> determined, and it is possible to select one that is working since the
> >> application has only specified the name of the target.
> >> So, for this communication there is no real need to have a locator  
> >> that
> >> differ from the ulid used for the communication, it is just enough to
> >> select the ulid/locator in a smart fashion, so that  a working address
> >> is selected. So no need to perform the shim translation between ulid
> >> and locators in this case (Which is the main function of the shim)
> >
> > Yes, I understand your statement above.  connect_by_name() is a kind of
> > wrapper to connect() system call in a sense that it only requires app
> > to provide hostname rather than the IP address.  Then the library would
> > take care of name resolution and session establishment for each
> > resolved address.  As you pointed out, SHIM6 is not required to make
> > this work.  What I want to point out is that connect_by_name() might
> > be able to coordinate with SHIM6 REAP mechanism.
> >
> I am not sure if i am following you here, but i would think it this way:
> 
> suppose that the app performs a connect-by-name call to www.foo.com
> the resolver returns 3 addresses
> 
> Now, i guess the first interaction with the shim6 may be to find out if  
> there is an established context with one of these target addresses with  
> any of the local addresses available. If there is, it may be worthy to  
> preffer this address and initiate the communication using it, rather  
> than the other addresses for which there is no establihsed shim6  
> context. (this would be a first inter

Yes, this makes sense.

> 
> If none of them has an established context, then i guess we could have  
> two options:
> - one would be to use multiple TCP SYNs packets in parallel (this  
> option is nice because does not require shim support from the other  
> end)
> - the other one would be to  use the shim6 protocol to establish a  
> context and once the context is up, then initiate the communication.

Ok.

> >>
> >> IMHO this is very good because the connect by shim funtiobality can be
> >> used even when the peer does no supports the shim and it would allow  
> >> to
> >> establish new communications in the case of a failure in the  
> >> multihomed
> >> site.
> >
> > Agree.
> >
> >>
> >> Of course, if we don't use the shim we will need to use other than  
> >> shim
> >> messages to figure out if the address pair is working. however,
> >> considering that this is connect by name, probing with TCP syns seems
> >> the natural options and i don't see any drawback, do you?
> >
> > No.  I am not saying that probing by TCP SYNs should be replaced by
> > SHIM6 probe message.  I am saying that unnecessary attempt of sending
> > TCP SYNs to the un-working locator pairs *can* be avoided if the
> > SHIM6 REAP state indicates that the locator pair is supposedly
> > unreachable.
> 
> were you thinking about something in the lines that i described above  
> or something else?

Yes, mostly similar to the one you described above (the first bullet about
simultaneous TCP SYNs).  In a case there is already established ULID-pair
context with the peer (and associated REAP status with locator pairs),
that can be taken into account for establishing the TCP connection.

> 
> >
> ....
> >>>> - Forking related options. In particular, the
> >>>>    application should be able to request the creation
> >>>>    of a Forked Instance for a context, and should be
> >>>>    able to set the preferences for that forked instance,
> >>>>    the same as a regular context.
> >>>
> >>> This is one of the main issues of API.
> >>> I understand that forked context can be specifically used by
> >>> each application (process).  IMO, the question is how could
> >>> application have a reference to specific forked context.
> >>> Forked context could be identified by the FII, of course.
> >>> But it does not seem to be suitable/easy for application to use
> >>> it as a referral of locator.  So far, I think it would make
> >>> sense to allow application to specify ULID as well as
> >>> preferred locator (if any) to send/receive packet to/from
> >>> given socket.
> >>>
> >>
> >> but this could identify more than one forked contexts, right?
> >> i mean, there is nothing precluding that two forked contexts of the
> >> same original context use the same locator pair... in this case,
> >> locator pair and ulid pair does not identifies a single forked
> >> context... not sure if this is problem though....
> >
> > Yes, but what can SHIM6 API provide application then ?
> > Do you think that app should specify FII via socket API ?
> >
> 
> i am not sure.... perhaps a good way forward with this would be to  
> figure out how would an application that need this interact with the  
> shim in a reasonable way and then provide the interface to support such  
> interaction... but not sure...

Ok.

> ...
> >>>> - Interaction between RFC3484 and the shim. In this case,
> >>>>    the information available in the shim could be used to
> >>>>    influence RFC3484 selection procedure, so that
> >>>>    unreachable locators are avoided.
> >>>
> >>> I see.  And I tend to think that application may also want to
> >>> distinguish locator with its type.  In case of running SHIM6
> >>> over MIPv6, application may want to distinguish HoA and CoA
> >>> for achieving better performance (maybe by taking advantage of
> >>> SHIM6 based RO mode), for instance.
> >>
> >> but this is already built in the rfc3484 right? i mean, rfc3484  
> >> already
> >> preffers HoAs over Coas... besides, the basic SHIM over MIP scenario
> >> does not assumes that CoAs are exposed to the shim, i guess
> >
> > Yes, RFC3484 mentions about HoA and CoA.  It recommends to have higher
> > preference on HoA over CoA.  In plain Mobile IPv6 environment,
> > behavior following the recommendation would probably fulfill users
> > desire.  But in some advanced scenarios, app may prefer CoA for
> > better performance (SHIM6 based RO).  RFC3484 does not help to do this.
> >
> 
> but not as a ulid but as a locator right?

Right.

> from previous discussion with Erik, seemed that we may need a locator  
> selection algorithm that is shim6 specific, i.e. in order to select  
> locators withinh a context (as oposed to having to select initial  
> addresses which will be the ulids of the context and that are selected  
> by RFC3484 and possible extensions.)
> In the case of locator selection, i agree that we may need to change  
> the priorities.
> 
> The result is that a locator selection mechanisms different from  
> rfc3484 may be needed, because there are different priorities when  
> selecting locator pairs than when selecting ulid pairs.

Agree.
 
> I have wrote a proposal for this locator pair selection algorithm (but  
> i still haven't submitted it to the wg)
> 
> You can find it at:
> 
> http://www.it.uc3m.es/marcelo/draft-bagnulo-shim6-locator-pair- 
> selection-00.txt
> 
> in case anyone cares to comment...

Thanks, I will take a look at it.

> 
> >>>> Others??
> >>>
> >>> In addition, we would probably need a mechanism for providing
> >>> application ancillary data that are related to SHIM6 behavior.
> >>> For instance, application may want to know which locator was
> >>> *actually* used to receive/send given IP datagram.
> >>>
> >>
> >> you mean about packets sent in the past?
> >
> > No.  I am talking about the ancillary data which (extended)
> > Socket API may provide from SHIM6 perspective.  What I have in mind
> > is that application may want to know src/dst locators
> > which were actually used to deliver the packet to the host.
> > Well, it may sound contradictory to the basic concept of SHIM6
> > which is to make locator information transparent to the ULP.
> > But some application may still want to know (for some reason)
> >
> 
> yes, this is the question, what would be the motivations for this  
> feature?

Hmm, I don't persuasive answer for the question at the moment...

> I mean i am all for doing a richer api but i guess we need at least one  
> use case per feature :-)

Yes.  Let me come back if I find any good usecase.


Regards,
Shinta