Re: I-D ACTION:draft-bagnulo-ipv6-rfc3484-update-00.txt

Francis Dupont <Francis.Dupont@enst-bretagne.fr> Wed, 07 December 2005 02:09 UTC

Received: from localhost.cnri.reston.va.us ([127.0.0.1] helo=megatron.ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1Ejokm-0002u2-T5; Tue, 06 Dec 2005 21:09:56 -0500
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1Ejokl-0002tx-EK for ipv6@megatron.ietf.org; Tue, 06 Dec 2005 21:09:55 -0500
Received: from ietf-mx.ietf.org (ietf-mx [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id VAA22052 for <ipv6@ietf.org>; Tue, 6 Dec 2005 21:09:03 -0500 (EST)
Received: from laposte.rennes.enst-bretagne.fr ([192.44.77.17]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1Ejp6N-0002lJ-6A for ipv6@ietf.org; Tue, 06 Dec 2005 21:32:15 -0500
Received: from givry.rennes.enst-bretagne.fr (givry.rennes.enst-bretagne.fr [193.52.74.194]) by laposte.rennes.enst-bretagne.fr (8.11.6p2/8.11.6/2003.04.01) with ESMTP id jB729dP02182; Wed, 7 Dec 2005 03:09:39 +0100
Received: from givry.rennes.enst-bretagne.fr (localhost.rennes.enst-bretagne.fr [127.0.0.1]) by givry.rennes.enst-bretagne.fr (8.13.1/8.13.1) with ESMTP id jB729dHY077351; Wed, 7 Dec 2005 03:09:39 +0100 (CET) (envelope-from dupont@givry.rennes.enst-bretagne.fr)
Message-Id: <200512070209.jB729dHY077351@givry.rennes.enst-bretagne.fr>
From: Francis Dupont <Francis.Dupont@enst-bretagne.fr>
To: marcelo bagnulo braun <marcelo@it.uc3m.es>
In-reply-to: Your message of Tue, 06 Dec 2005 20:49:50 +0100. <309b3c8cd3f23764d9c3dc5a11624d3f@it.uc3m.es>
Date: Wed, 07 Dec 2005 03:09:39 +0100
X-Virus-Scanned: by amavisd-milter (http://amavis.org/) at enst-bretagne.fr
X-Spam-Score: 0.0 (/)
X-Scan-Signature: d890c9ddd0b0a61e8c597ad30c1c2176
Cc: ipv6@ietf.org
Subject: Re: I-D ACTION:draft-bagnulo-ipv6-rfc3484-update-00.txt
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "IP Version 6 Working Group \(ipv6\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
Sender: ipv6-bounces@ietf.org
Errors-To: ipv6-bounces@ietf.org

 In your previous mail you wrote:

   i agree this is a useful tool for multihomed environments (i have 
   included it in draft-bagnulo-shim6-addr-selection-00.txt) and i agree 
   that this should be detailed in a document related to initiating 
   communications in multihomed environments
   However, i am not sure if this would belong to a new version of RFC3484 
   which is the goal of this document...
   
=> to be complete the document in its introduction should explain
there are some cases without solutions so should list the possible
solutions to find cases where none applies. This is the way I'll
quickly explain the deprectation of prefixes from broken ISPs.

   >  - the document should address as soon as possible the orders between
   >    destination and source addresses, i.e., it is S1-D1, S2-D1, S1-D2,
   >    S2-D2 or S1-D1, S1-D2, S2-D1, S2-D2?
   >
   
   right, this would be the optimal approach, since it would provide an 

=> note I didn't ask for a solution but for the set out of the problem
(it seems I was not clear enough, I apologize).

   order of address pairs (as opposed to an order of destiantion addresses 
   and for each deatiantion address, an ordered list of source addresses) 
   but the difficulty with this is that current functions do not return 
   address pairs, but destination addresses and source addresses 
   separately. I guess that one option would be to define new function 
   calls that return list of src,dst address pairs, but this wouldn't be 
   compatible with current apps, since they don't use these to-be-defined 
   functions

=> this can be easily done by a middleware (aka bump in the API),
including the very special one named the shim6 layer...

   I guess that an option would be to define the two approaches, on one 
   hand the approach to define the list of dest addresses and for each 
   dest address an ordered list of source addresses and the other approach 
   (for updated apps) the returns an ordered list of src,dst address pairs
   
=> I don't believe in updated apps: we have to support this idea but
we have more to never rely on it!

   >  - note that many applications which specify source addresses in
   >    fact simply use source addresses returned by the selection
   >    mechanism (connect() then getsockname())...
   
   right
   the idea would be that the src addresses returned are ordered. The 
   difficulty is that this fucntion call does not refers to any specific 
   destiantion address

=> in the common mechanism I describe the destination is clearly taken
into account (it is the argument of connect()).

   and providing an order independent of the 
   destiantion is of little use imho
   so, the option would be to define a new function call that returns an 
   ordered list of source address available for a particular destiantion 
   address
   
=> a function or a simpler mechanism.

   >  - the Rule 0 is not enough accurate: it assumes some state is kept
   >    (what state? how? lifetime? etc). IMHO the document has to
   >    provide guidelines!
   
   agree
   in draft-bagnulo-shim6-addr-selection-00.txt there is a proposal to use 
   information in incoming packets as hints to determine which address 
   pairs are working. This information is cached and can be used to 
   determine if an address pair is working
   
=> so you have to cite this document and even to explain how to use
its ideas outside the shim6 context.

   >  - in the Rule 0 the term "unreachable" is not the right one, IMHO
   >    it is more "not working for D"?
   >
   
   agree
   an alternative would be to talk about working/non-working address pairs
   
=> you can't talk about an address pair in a function about an argument:
you have to find a better wording.

   >  - it is not true that RFC 3484 provides an ordered list of destination
   >    address, it only orders the list provided by DNS & co.
   
   I am not sure i understand the difference here...
   
=> it does not create the destination address list. BTW it is just
a wording issue.

   the rationale behind this is that a host wants to communicate with a 
   given host identified by a fqdn
   It then obtains the list of destiantion addresses for that fqdn from 
   the dns
   then rfc3484 orders the list provided by the dns
   so, i would say that rfc3484 returns an ordered list of destiantion 
   addresses...
   
   what is the aspect that i am missing here?
   
=> a function is not defined by its return value but by its return value
in function of its arguments (this is why it is named "function").
Sorry but I began in functional programming and I do important
differences for things which can be considered as details, like
"(f x) y" is not the same than "f (x,y)" cf a previous comment.

   >  BTW it should
   >    be useful to know when the tail of a list contains unusable
   >    addresses or to remove them.
   
   yes this could be an option
   otoh, an address pair working/non-working status may change over time 
   (and quite fast)
   so, possibly it may worth trying with address pairs that were not 
   working some minutes ago, if there are no other options (i.e. other 
   options have been tried later and they are not working)
   
   so including the addresses that were not working at the end of the list 
   may be of some use
   
=> a good alternative is to provide a reliability judgement so
a clever implementation can adapt its strategy in looking for
a working pair (I think about a sorting on address pairs).

   >  - IMHO it should be fine to get a support for address pairs because
   >    it is needed for any scheme which replaces the last "longest
   >    prefix match" rules by a better thing. I think about NAROS but
   >    there should be many similar ideas.
   
   i am not sure i understand this point...
   
=> look at draft-de-launois-multi6-naros-00.txt or read Cedric's PhD
document. To apply this kind of ideas you both have to replace
last rules and to give address pairs to the application.
So to be able to handle address pairs is an important goal in a
larger scope than this I-D.

   >  - in 3.2.2 the amount of tried source addresses has to be controlled.
   >    IMHO a better mechanism for both TCP and UDP is a new setsockopt()
   >    which the N first elements of the source address list.
   
   in this case the application would be:
   - first obtaining the src address list for a given destiantion with a 
   new call setting, and then

=> no, I don't see why this step is useful. Even the src address list
length is not important.

   - it would be setting the list of source addresses to be tried by 
   TCP/UDP using this new option, passing the list (or part of) obtained 
   in the previous point
   right?
   
=> you didn't understand my idea. In place to handle in the application
the source address list per destination you just specify the destination
and the number of the item of the source address list.
Of course you can get by connect() then getsockname() the source
address but you don't need to do this.

   This is an interesting middle ground option indeed, where the 
   application does not select a single address (as with bind()) nor it 
   leaves the src address unspecified (which is the actual scenario 
   considered in section 3.2.2)
   
=> the idea is to replace the bind() by a simpler setsockopt()
with a counter.

Thanks

Francis.Dupont@enst-bretagne.fr

--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www1.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------