Re: [Roll] Part 2 Re: G.RE: ROLL WG Last Call on draft-ietf-roll-p2p-rpl-09

Mukul Goyal <mukul@uwm.edu> Mon, 02 April 2012 23:25 UTC

Return-Path: <prvs=43216d518=mukul@uwm.edu>
X-Original-To: roll@ietfa.amsl.com
Delivered-To: roll@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C188821F8659 for <roll@ietfa.amsl.com>; Mon, 2 Apr 2012 16:25:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.05
X-Spam-Level:
X-Spam-Status: No, score=-5.05 tagged_above=-999 required=5 tests=[AWL=0.309, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, SARE_LWSHORTT=1.24]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oIvHATpVD9Lo for <roll@ietfa.amsl.com>; Mon, 2 Apr 2012 16:25:56 -0700 (PDT)
Received: from ip2mta.uwm.edu (smtp.uwm.edu [129.89.7.20]) by ietfa.amsl.com (Postfix) with ESMTP id 532DE21F8656 for <roll@ietf.org>; Mon, 2 Apr 2012 16:25:55 -0700 (PDT)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApwEAIQ0ek9/AAAB/2dsb2JhbABDhVS1TyNPBxsaAg0ZAlkGLAKHbq0piQaBIYEviVEKAYRLgRgEiFiNCZAvgwWBNgEW
Received: from localhost (localhost.localdomain [127.0.0.1]) by mta03.pantherlink.uwm.edu (Postfix) with ESMTP id 0CE481FD0CF; Mon, 2 Apr 2012 18:20:55 -0500 (CDT)
X-Virus-Scanned: amavisd-new at mta03.pantherlink.uwm.edu
Received: from mta03.pantherlink.uwm.edu ([127.0.0.1]) by localhost (mta03.pantherlink.uwm.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QH1XB28egXoZ; Mon, 2 Apr 2012 18:20:54 -0500 (CDT)
Received: from mail17.pantherlink.uwm.edu (mail17.pantherlink.uwm.edu [129.89.7.177]) by mta03.pantherlink.uwm.edu (Postfix) with ESMTP id 7E5F91FD0B7; Mon, 2 Apr 2012 18:20:54 -0500 (CDT)
Date: Mon, 02 Apr 2012 18:20:54 -0500
From: Mukul Goyal <mukul@uwm.edu>
To: "Pascal Thubert (pthubert)" <pthubert@cisco.com>
Message-ID: <1986142471.1786230.1333408854376.JavaMail.root@mail17.pantherlink.uwm.edu>
In-Reply-To: <BDF2740C082F6942820D95BAEB9E1A8401520B16@XMB-AMS-108.cisco.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [129.89.7.91]
X-Mailer: Zimbra 6.0.13_GA_2918 (ZimbraWebClient - IE8 (Win)/6.0.13_GA_2918)
X-Authenticated-User: mukul@uwm.edu
Cc: ROLL WG <roll@ietf.org>
Subject: Re: [Roll] Part 2 Re: G.RE: ROLL WG Last Call on draft-ietf-roll-p2p-rpl-09
X-BeenThere: roll@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Routing Over Low power and Lossy networks <roll.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/roll>, <mailto:roll-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/roll>
List-Post: <mailto:roll@ietf.org>
List-Help: <mailto:roll-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/roll>, <mailto:roll-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Apr 2012 23:25:57 -0000

Hi Pascal

*******************************************************************

[Pascal2] 
2) Same question if you want to create states at the target to route back. How long does the target need to maintain the route? Who controls that, the origin or the target? I'd expect to find a suggested lifetime in the RDO with a confirmation in the DRO to let the target amend it.

[Mukul2]
If the target wants DRO-ACK it needs to maintain state until DRO-ACK is received. Otherwise, the target needs to remember things until it is done sending all the DROs. I will add the text to this effect.

[Pascal3] 
If you are setting up a short term conversation, how long exactly is that before the origin has to refresh the route? What controls clean up in both sides? Usually you want a lifetime (see MIP6 for instance)

[Mukul3]
Is it that you are talking about the lifetime of the hop-by-hop routing state? That is specified in the life time parameters in the DODAG configuration option. The draft says that on page 9 while describing how the DODAG configuration option should be set inside a P2P mode DIO:

"The Default Lifetime and Lifetime Unit parameters in DODAG
      Configuration option indicate the life time of the state the
      routers maintain for a hop-by-hop route established using P2P-RPL
      and may be set as desired.
"

*************************************************************************************

[Pascal]
"RPLInstanceID: RPLInstanceID MUST be a local value as described in Section 5.1 of [I-D.ietf-roll-rpl]. The origin MUST NOT use the same RPLInstanceID in two or more concurrent route discoveries."

I'd suggest that you enforce a round robin or an opaque circulation so that the new instanceID is the least recently used one out of the 64 possible.

[Mukul]
I think we should leave it to the origin to decide which value it wants to use for RPLInstanceID. I know some implementations are planning to use a fixed RPLInstanceID value for all route discoveries.

[Pascal2] Changing the instance ID will help debug the network and avoid conflicts with stale states. What's really up to the device is the initial sequence. Leaving it up to the origin may help the origin defeat some attacks to some degree. OTOH, after all the instances have been played, LRU forces to replay the same sequence again so the shield drops. My preferred approach would be a SHOULD that would say that the next instance ID SHOULD NOT be one of the (16?) most recently used and MUST NOT be one for which states might still exist in the network. IOW either the states deletion was acknowledged, or all pending lifetimes are exhausted.

[Mukul2] Makes sense. I think it is sufficient to caution (with a SHOULD NOT) against reusing instance ids for which the stale state might exist in the nodes. Using a "MUST NOT" may not be OK since a node may never be 100% sure about non-existence of stale state with a particular instance id (thus, all possible instance id values will become suspect and hence unusable after a while).

[Pascal3] Agreed. Note that a circulation is a bonus to defeat replays. And now we're back to the issue above. How does the device know that there is no state left? A lifetime definition would be very useful. That lifetime is different from the DAG's one in RDO. I think we have an open issue here.

[Mukul3] As I mentioned above, the life time parameters inside the DODAG configuration option specify the life time of the hop-by-hop routing state for the routes discovered using P2P-RPL. 

****************************************************************************************

[Pascal]
" Grounded (G) Flag: MUST be set to zero since this DAG is temporary in nature, is created solely for the purpose of P2P-RPL route discovery and MUST NOT be used for packet routing."

On the contrary I'd set it to 1. The goal -being to reach the origin- is actually achieved by this DAG.

[Mukul]
Actually, the DAG is temporary in nature and vanishes after a short while. Even when it exists, it must/should not be used for routing packets back to the origin. So, I think the Grounded flag should be zero.

[Pascal2] Please revisit RFC 6650 page 12. 
G means that a goal is achieved. So first you define the goal and then the bit becomes obvious. What's your goal? 
Can there be P2P DAGs that achieve the goal and others that make sense to build and yet do not achieve the goal?
If you accept that your operation can actually depend on OF logic, then the setting of the goal influences that logic.
By forcing a value to the goal in the PTP spec, we actually limit the applicability of the draft. 
Maybe you can define a default goal and a default setting. But do not MUST that it is set to 0...

[Mukul2]
When a node joins a temporary P2P DAG, it does not get any additional routing information. The DAG is going to disappear after some time, should not be used for routing while it exists and which nodes end up being on the discovered route is not known until the DRO message comes back. So, I think, by default, the G flag has to be zero. However, if the setting of G flag may affect how an intermediate node may calculate its rank (as per the OF being used), the origin should have the flexibility of setting the flag to 1. So, I could modify the text to say that "the origin sets the G flag based on its perception of how the flag's value would affect the rank calculation under the OF being used. By default, the G flag is set to zero given the temporary nature of the DAG being created."

[Pascal3] Why do you feel the need to add anything above what RFC 6550 says? I do not see any benefit or additional clarity from doing this.

[Mukul3] RFC 6550 is actually kind of confusing in this regard. On page 9, it says

"A typical Goal is to construct the DODAG
         according to a specific Objective Function and to keep
         connectivity to a set of hosts (e.g., to use an Objective
         Function that minimizes a metric and is connected to a specific
         database host to store the collected data)."

This seems to associate the goal with both OF and reachability to certain hosts. Later invocations of the term "goal" seem to refer just to the connectivity aspect, e.g., on page 18 RFC 6550 says

"A grounded DODAG offers connectivity to hosts that are
   required for satisfying the application-defined goal."

So, my understanding so far was that the "goal" defines connectivity to a certain hosts. The relation to objective function is not clear at all (if one restricts oneself to reading RFC 6550). The temporary DAGs created in P2P-RPL route discovery provide no connectivity whatsoever to the joining nodes. So, the only reason to set the G flag to 1 would be to allow correct use of an OF. So, I think P2P-RPL spec should use the text I offered above (and repeat below):

"The origin sets the G flag based on its perception of whether joining how the flag's value would affect the rank calculation under the OF being used. By default, the G flag is set to zero given the temporary nature of the DAG being created."

What do you think?
****************************************************************************************

[Pascal]" MAY carry one or more RPL Target Options to specify additional unicast/multicast addresses for the target."
Now here I would have a MUST carry at least one target. That is indeed what makes is a lookup DIO...

[Mukul]
As I stated in the previous message, we need to include the target in the P2P-RDO to save bytes for the common case (discover route to one unicast/multicast target). So, we cannot make using the target option a MUST.

[Pascal2] Certainly. I prefer the split, in which case the MUST IMHO goes to the target as opposed to the RDO. In a case where the RDO is not needed, the target only message is actually shorter...

[Mukul2] As I said before, I think a P2P mode DIO always needs to have one P2P-RDO. I guess, in this case, we agree to disagree!

[Pascal3] Certainly. And there's nothing blocking with that disagreement, mostly if the draft targets experimental. 
 I think it's OK to keep your response as the proposed resolution for the issue. Still I'd like advice from others so exposing the issue as LC will help. Let's see on which side the coin falls.

[Mukul3] OK. I will be happy to hear additional opinions.

************************************************************************************************
[Pascal]
Can the data option be different from one DIO to the next? 

[Mukul]
The contents of the data option are specified by the origin (for the DIO) or the target (for the DRO). In theory, an origin can send different data options in different DIOs it generates for a particular route discovery (assuming that it does generate multiple DIOs; it is very much possible that the origin generates just one DIO and then sits silent). But, then the origin is taking the risk that some of the data options would never each the target(s). I guess the origin might do this if the data sent earlier is now stale and the origin would like the target(s) to receive newer data.


[Pascal2] This should be discussed in the draft. You need to set the expectation for the upper layer(s). Is there a way to differentiate different data sets? Eg instance or sequence nb?
My suggestion so far is that the data should have 3 bits of next header and 5 bits of sequence.

[Mukul2] This sounds good to me. I will incorporate this in the draft unless I hear a better proposal. 

[Pascal3] Cool. Please make that another LC issue and the proposed resolution, see if there is anyone adding anything to it.

[Mukul3] Actually, I would like the next header to be 4 bits and the sequence number to be 4 bits. 4-bit sequence number will still allow up to 16 different messages to be sent during a P2P-RPL discovery. 4 bit next header will allow 16 different possibilities. We can have so many different ways to compress UDP/TCP headers. I think 3 bit next header may not be sufficient.  

***********************************************************************************************
[Pascal]
"When an
intermediate router adds itself to a route, it MUST ensure that the
IPv6 address added to the route is reachable in both forward and backward directions."
This is written with the vision that the router has a single interface and acts as a repeater. 
But really a router could have 2 interfaces on a same subnet in which case that clause does not fly.

[Mukul]
All I mean is that the accumulated route MUST NOT have an address that cannot be accessed in one of the directions. If the address cannot be accessed in the backward direction, then the DRO would not be able to travel to the origin.

[Pascal2] Then you're preventing a router with 2 interfaces. That's sad. I'm fine for an experimental draft   but for standard track that will have to be changed.

[Mukul2] OK, I am keeping it the way it is.

[Pascal3] This also need to be logged as a last call issue and its proposed resolution. Nothing wrong with having limitations, yet I think we must have specific text to indicate that the spec so far is limited to devices with a single interface. When we make the Standard Track version, I expect we'll have to go beyond that limitation. The drawback is for experimental  implementations that may not be interoperable with the final solution.

[Mukul3] Could you please explain how does the requirement regarding addresses to be accessible in both forward and backward directions limits P2P-RPL to only single interface devices? I think this requirement means that P2P-RPL cannot be used across link layers. Is that what you mean? I think allowing operation across link layers would require P2P-RDO to accumulate additional information (backward address to be used for forward addresses not accessible in backward direction). I think at the moment we want to avoid this complexity.
*******************************************************************************

Thanks
Mukul