[shim6] review draft version 12
Sébastien Barré <sebastien.barre@uclouvain.be> Thu, 14 January 2010 11:50 UTC
Return-Path: <sebastien.barre@uclouvain.be>
X-Original-To: shim6@core3.amsl.com
Delivered-To: shim6@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AE2F63A67B3 for <shim6@core3.amsl.com>; Thu, 14 Jan 2010 03:50:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.711
X-Spam-Level:
X-Spam-Status: No, score=-1.711 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FRT_STOCK2=3.988, J_CHICKENPOX_61=0.6, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1Lj1eZSL7kQm for <shim6@core3.amsl.com>; Thu, 14 Jan 2010 03:50:32 -0800 (PST)
Received: from smtp3.sgsi.ucl.ac.be (smtp.sgsi.ucl.ac.be [130.104.5.67]) by core3.amsl.com (Postfix) with ESMTP id CCB7C3A68A8 for <shim6@ietf.org>; Thu, 14 Jan 2010 03:50:31 -0800 (PST)
Received: from [130.104.228.99] (marguerite.dhcp.info.ucl.ac.be [130.104.228.99]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: sbarre@smtp3.sgsi.ucl.ac.be) by smtp3.sgsi.ucl.ac.be (Postfix) with ESMTPSA id AECC21C5FB2; Thu, 14 Jan 2010 12:50:09 +0100 (CET)
Message-ID: <4B4F04F1.8080505@uclouvain.be>
Date: Thu, 14 Jan 2010 12:50:09 +0100
From: Sébastien Barré <sebastien.barre@uclouvain.be>
User-Agent: Thunderbird 2.0.0.23 (X11/20090817)
MIME-Version: 1.0
To: Miika Komu <miika.komu@hiit.fi>, marcelo bagnulo braun <marcelo@it.uc3m.es>, Shinta Sugimoto <shinta@sfc.wide.ad.jp>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: clamav-milter 0.95.2 at smtp-3.sipr-dc.ucl.ac.be
X-Virus-Status: Clean
Received-SPF: Pass (sender authenticated); receiver=; client-ip=130.104.228.99; helo=
Received-SPF: Pass (sender authenticated); receiver=; client-ip=130.104.228.99; envelope-from=<sebastien.barre@uclouvain.be>
X-Sgsi-Spamcheck: SASL authenticated,
X-SGSI-MailScanner-ID: AECC21C5FB2.00000
X-SGSI-MailScanner: Found to be clean
X-SGSI-From: sebastien.barre@uclouvain.be
X-SGSI-Spam-Status: No
Cc: shim6@ietf.org
Subject: [shim6] review draft version 12
X-BeenThere: shim6@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SHIM6 Working Group Mailing List <shim6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/shim6>, <mailto:shim6-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/shim6>
List-Post: <mailto:shim6@ietf.org>
List-Help: <mailto:shim6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/shim6>, <mailto:shim6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Jan 2010 11:50:33 -0000
Hi Miika, all, I finally found time to review the API draft. Sorry for reviewing so late ! Note the comments hereafter are about draft version 12, and are a mix of editorial fixes and quite important high level disagreements. I hope it is clear :-) . *section 1, §4: ...means a singed integer of... -> a signed integer *Section 4, 3rd bullet, 2nd star: "Besides, a receipt of an ICMP error message could be a clue for the application to detect problems" I am not sure that this is a good idea. IMO, this is equivalent to say that when a stack receives an ICMP packet too big, the application should listen to it and inform TCP that it should reduce its MSS. This is not what happens: the stack intercepts the ICMP and propagates the information about new MTU to the interested layers. Based on this existing example, I tend to think that, while an application *can* listen to ICMP error messages for any reason, it should *not* use it to inform the shim layer, since that layer has already got the information. To summarize, the only useful feedback from app to shim IMO is information that only the app can get (e.g. repeatingly loosing app messages). *Section 4, 8th bullet: "A deferred context setup means that the initiation of communication should not be blocked to wait for completion of the context establishment." : I do not understand why such an option would be useful. I mean, we have two possible situations. First is that we technically *must* wait for completion because routing is not possible before the completion of the context establishment. This happens if we have non-routable EIDs. Second situation is when we *could* wait for completion, but not mandatorily. This happens when the EIDs are routable. In the first situation, the option has no effect anyway, since there is no choice. In the second situation, why would I prefer to wait for the context to be established, when nothing stops me from immediately speaking with my peer ? OTOH, I see as useful another definition of this option, that would be something like "Applications should be able to differ context establishment. A deferred context setup means that the application does not want to start the context establishment immediately when starting the communication." And this requirement is fulfilled with the SHIM_DONTSHIM option. The app can first set the option, and then unset it as soon as it wants the context to be established. If we do it that way, we can specify that by default the Shim applies any internal heuristic to decide when to start context establishment, but SHIM_DONTSHIM overrides that behaviour, so that when it is set we dont negotiate, and when it is cleared again, we negotiate immediately without waiting for the internal heuristic. Makes sense ? *Table 1 - SHIM_ASSOCIATED: whether if the socket -> whether the socket *legend of table 1: *1 and *2: why to separate this in two definitions, is it not the same ? I would merge this into one reference. *Section 5.4 and 7.2 : the name pe_keepaliveto is somewhat misleading. I would call it rather pe_sendto, since it is actually the send timeout option that you are defining. The SEND timer the timer that triggers the exploration, as you are defining. The keepalive timer, OTOH, is the timer the decides for how long we send keepalives. What the REAP RFC tells about that, is that when a shim6 peer decides to change the send timeout, it must inform the peer about that, copying the *send* timeout value in a Shim6 option called the *keepalive* option (rfc5534, section 5.3). That may cause some confusion indeed, but makes sense since the send timeout of one peer is the keepalive timeout of the other peer. At least, this is what I have understood from the RFC, and what is implemented in LinShim6. This comment has implications on other parts of the draft: *Section 5.13, SHIM_APP_TIMEOUT: now you are speaking about the send timeout, but you give it the definition that RFC5534 gives to the keepalive timeout. Anyway,I believe that we can remove this option altogether. Reason is that an application *cannot* have control on the keepalive timeout. As indicated above, *you* decide about your send timeout (that triggers the path exploration), and *your peer* decides about your keepalive timeout. There is no reason why you would decide yourself about the keepalive timeout since it *must* be tuned according to the send timeout of the peer. BTW, about the following paragraph from section 5.13:"If the timeout value specified is longer than the Send Timeout configured in the REAP component, the REAP Keepalive message should be suppressed." ->Why would there be any reason to suppress that message ? Stopping to send that message almost completely disables REAP. *Section 5.14, SHIM_DEFERRED_CONTEXT_SETUP: Again, I would remove that option altogether. See above comment about deferred context setup. BTW, I do not follow why to "defer" a context establishment would mean "do it immediately" as specified in the draft. "To defer", means postpone to later, which is exactly the opposite. *Section 5.5 and 5.6 : SHIM_LOC_LOCAL_PREF and SHIM_LOC_PEER_PREF: As defined, these options are duplicate of SHIM_LOC_LOCAL_SEND and SHIM_LOC_PEER_SEND. Thus I would remove two of them, and keep preferably the SHIM_LOC_*_SEND version, since the SHIM_LOC_*_PREF version is confusing due to section 5.15.3 of rfc 5533 that defines differently the locator preferences. *Section 5.5, §4: shall verify requested locator before it updating -> shall verify *the* requested locator before it *updates* *Section 5.5, code snippet: memcpy(lc.lc_addr,... -> memcpy(&lc.lc_addr,... *Section 5.6, §4: it updating -> it updates *Section 5.9, §7: when invalid locator -> when an invalid locator *Section 5.10,last §: is as the same as -> is the same as *Section 5.11,§4:an array of locator list -> an array of locator structures *Section 5.11,§6:the validation of the specified locator -> the validation of *any of* the specified *locators* *Section 5.11: It would be great to specify what happens when we provide too small a buffer. Because this is the situation that could well happen. Do we return ETOOMANYLOCATORS ? I guess the definition you give is for the setsockopt, but it could serve as well for the getsockopt, when the kernel has more locators to provide than allowed by the space that the app has allocated. *Section 5.12, §4: pointed by optval argument -> pointed to by the optval argument (I think at least... If this is true, you should do a replace all, this appears at several places in the draft). *Section 5.12,§6: the validation of the specified locator -> the validation of *any of* the specified *locators* *Section 6.5: A care is needed -> Care is needed (I think) *Section 7.1: The list of options that use the shim_locator structure does not mention SHIM_LOC_*_SEND. I guess it should. *Section 8: "Note that the shim sub-layer should be able to backtrack the socket from which the user data was originated." : Probably it is true, but is it not dependent on the implementation ? I guess we could design an implementation where no backtrack is necessary, and all requirements are satisfied. *Section 9, §2, again, confusion between SHIM_LOC_*_SEND and SHIM_LOC_*_PREF *Section 10.1,§2: "When a forked context is torn down, the SHIM6 implementation should notify the peer about the deletion of forked context." : This is contrary to rfc5533, that specifies no message to notify the peer of context deletion. Instead, it defines all the necessary stuff to live well with the fact that one of the peers can unilaterally decide that it drops a context, without telling anything. *high level comment: An interest conflict may happen between one peer and the other. Imagine we have A and B that communicate. A learns the locators from B: B1,B2,B3. The app prefers receiving segments through B2, so it sets a high preference value to that locator. Shim6 will communicate this to the peer through a locator preference option. But if the peer has itself set a SHIM_LOC_LOCAL_SEND option, we have a conflict. Who wins ? I guess the best it that when local and remote end are in conflict, the winner is the local end. Right ? So if everyone agree with that detail, maybe it is worth mentioning it in the API as well. regards, and sorry again for having read the draft so late ! Sébastien. -- Sébastien Barré Researcher, CSE department, UCLouvain, Belgium http://inl.info.ucl.ac.be/sbarre
- [shim6] review draft version 12 Sébastien Barré
- Re: [shim6] review draft version 12 Shinta Sugimoto
- [shim6] SHIM_LOC_*_PREF and SHIM_LOC_*_SEND (was:… Shinta Sugimoto
- Re: [shim6] SHIM_LOC_*_PREF and SHIM_LOC_*_SEND Sébastien Barré
- Re: [shim6] SHIM_LOC_*_PREF and SHIM_LOC_*_SEND Shinta Sugimoto