[homenet] Alia Atlas' Discuss on draft-ietf-homenet-dncp-09: (with DISCUSS and COMMENT)

"Alia Atlas" <akatlas@gmail.com> Wed, 16 September 2015 22:18 UTC

Return-Path: <akatlas@gmail.com>
X-Original-To: homenet@ietfa.amsl.com
Delivered-To: homenet@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EA5C21A70E1; Wed, 16 Sep 2015 15:18:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.898
X-Spam-Level:
X-Spam-Status: No, score=-101.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FREEMAIL_FROM=0.001, USER_IN_WHITELIST=-100] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6HBwmcoxRMVP; Wed, 16 Sep 2015 15:18:25 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id A54A21A6FF1; Wed, 16 Sep 2015 15:18:25 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: Alia Atlas <akatlas@gmail.com>
To: The IESG <iesg@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 6.4.1
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20150916221825.25125.13814.idtracker@ietfa.amsl.com>
Date: Wed, 16 Sep 2015 15:18:25 -0700
Archived-At: <http://mailarchive.ietf.org/arch/msg/homenet/b62-vvWL-l813PfiEMRNKggu3CI>
Cc: homenet-chairs@ietf.org, Mark Townsley <mark@townsley.net>, draft-ietf-homenet-dncp.shepherd@ietf.org, draft-ietf-homenet-dncp@ietf.org, homenet@ietf.org, draft-ietf-homenet-dncp.ad@ietf.org
Subject: [homenet] Alia Atlas' Discuss on draft-ietf-homenet-dncp-09: (with DISCUSS and COMMENT)
X-BeenThere: homenet@ietf.org
X-Mailman-Version: 2.1.15
List-Id: IETF Homenet WG mailing list <homenet.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/homenet>, <mailto:homenet-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/homenet/>
List-Post: <mailto:homenet@ietf.org>
List-Help: <mailto:homenet-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/homenet>, <mailto:homenet-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Sep 2015 22:18:28 -0000

Alia Atlas has entered the following ballot position for
draft-ietf-homenet-dncp-09: Discuss

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)


Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.


The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-homenet-dncp/



----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

First,  I have a number of specific comments.   Some of these are hazards
to technical interoperability; I've tried
to include those in my discuss - but the general point is that it is very
hard to tell a number of details because the
structure is assumed.   Having read this document, I do not think that I
could properly implement DNCP from scratch.

Obviously, I can guess at the answers - but that doesn't let everyone
interoperate well.   Examples include:

a) What is a topology graph?  When is it created, modified, or destroyed?
 Is it a conceptual artifact constructed
from the various TLVs?  I think a quick paragraph describing it would
help.

b) How are peer relationships discovered and established and destroyed? 
I really can't tell from the draft and even a quick scan of 
RFC 6206 doesn't give any hints.

c) It looks like the TLVs are sent one after another in a datagram or
stream across a socket.  The closest I see to any detail
is "TLVs are sent across the transport as is".  

d) As far as I can tell, Trickle is used to decide basically how often to
send information - but the details of this and the interactions
aren't clear to me.

I suspect that there are dependencies on the HNCP draft that would make
this a lot easier to understand but since we want it to progress
separately, the document does need to stand alone.

Although not noted in the Shepherd's report, I did have a thorough
Routing Directorate review done and the draft was improved from that.

8) In Sec 4.6 "   o  The origination time (in milliseconds) of R's node
data is greater
      than current time in - 2^32 + 2^15."  Since origination time hasn't
yet been introduced, I'm going
on an assumption that it means when R's node data was originated from R. 
So - this requirement is
saying that R's node data must have been generated in the future (but
already known by the local node)???

9) In Sec 4.6 "They MAY be removed immediately after the topology graph
traversal"  The DNCP nodes can
be removed from what??  The topology graph?  From some type of received
TLV??  How would they be
added back in later?

11) In sec 6.1: "Trickle-driven status updates (Section 4.3) provide a
mechanism for
   handling of new peer detection on an endpoint, as well as state
   change notifications."   Nothing in Sec 4.3 talked about a mechanism
for detecting
new peers on an endpoint.  It is entirely possible that Trickle does
provide this (but what
about the modes where Trickle isn't used/needed??) but there needs to be
a description of how
new peer detection is done - even if it's just a pointer to Trickle
RFCs.

12) In Sec 6.1.4: "   On receipt of a Network State TLV (Section 7.2.2)
which is consistent
   with the locally calculated network state hash, the Last contact
   timestamp for the peer MUST be updated."   Could you add some
rationale for why this
is needed?  I suspect that part of my confusion is that the "locally
calculated network state
hash" could mean two different things.  Is it the hash computed by the
local node on the
data received in the Network State TLV to validate that the Network State
TLV is not
corrupted?  Or is it the hash computed by the local node on its
arbitrarily wide 1-hash tree
that represents the local node's network state?   Since the term is never
defined, it's hard
to guess here.  The bottom of Sec 7.2.2 uses "current locally calculated
network state hash"
to refer to, I believe, the latter.

13) In Sec 6.2: "normally form peer relationships with all peers."  Where
is forming a peer
relationship defined?  Is this tied solely to Trickle instances?  What
about with reliable unicast 
where presumably Trickle isn't used between peers as the Overview states
"If used in pure unicast mode with unreliable transport, Trickle is also
used between peers"?

14) In Sec 7: "   For example, type=123 (0x7b) TLV with value 'x' (120 =
0x78) is
   encoded as: 007B 0001 7800 0000.  If it were to have sub-TLV of
   type=124 (0x7c) with value 'y', it would be encoded as 007B 0009 7800
   0000 007C 0001 7900 0000."   In this case, the padding between the
TLV's value
and the sub-TLV is included but the padding after the sub-TLV is not. 
What would
happen if there were multiple sub-TLVs??  Would the padding between those
sub-TLVs
be included?

Also related :"In this case the length field includes the length of the
original TLV, the 
length of the padding that are inserted before the embedded TLVs and the
length of the 
added TLVs."  Here, the phrase "length of the TLV" means different
things.  In the first case,
"length of the original TLV" means the "length of the value in the
encapsulating TLV".  In
the second case, "length of the added TLVs" appears to mean the length of
the sub-TLVs 
including the type/length header.  As I mentioned above, I can't tell
what happens to the 
padding in between sub-TLVs.


----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

1) In Sec 4.1, I think it would be clearer if you moved the sentence
"These leaves are ordered in ascending
   order of the respective node identifiers. " to after the first
sentence with appropriate text changes.  I was left
confused by why the leaf would be represented by a node's sequence
number.  I think it's that a leaf represents
 a node and is ordered based upon that node's identifier.   The value of
a leaf is a tuple of the node's sequence
number and the hash value...  

2) In Sec 4.2, it says "As multicast is used only to identify potential
new DNCP
   nodes and to send status messages which merely notify that a unicast
   exchange should be triggered, the multicast transport does not have
   to be secured."   There aren't attacks from processing fake potential
new DNCP node
  or triggering lots of unneeded/unterminated unicast exchanges?

3) In Sec 4.3, it says "Imin, Imax and k.   Imin and Imax represent the
minimum and maximum values for I"
I believe this isn't quite accurate.  Imax is a max multiplier of Imin
for I and not a maximum value.
I've seen this error in another draft also; I think it's important to be
correct & clear here.

4) There are multiple references to different unintroduced TLVs.  There
is also the idea that
each DNCP protocol can have its own TLVs.  It'd be very useful in the
Introduction to simply state
what TLVs are required by DNCP and conceptually what they are for.

5) In Sec 4.3, it says "The Trickle state for all Trickle instances is
considered
   inconsistent and reset if and only if the locally calculated network
   state hash changes."  but I have no idea yet what a Trickle instance
is, when
   a Trickle instance is created or associated with a node?  an
interface? or something else?

6) I think it would be more useful to describe generally at least what is
in a DNCP profile earlier in the
document.  This may be bringing Section 9 forward or it may be listing it
earlier.  I'm seeing numerous
forward references.

7) Start of Sec 4.6 talks about the topology graph - but there's been
absolutely no introduction of
what the topology graph is or how it was created, updated, etc.

10) In Sec 5:  This is a helpful section.  It tells me that a Trickle
instance is per interface.  I don't see anything
like a topology graph in it.  It clarifies origination time slightly.  It
talks about "For each remote (peer, endpoint) 
pair detected on a local endpoint" but I still have no ideas how that
detection is done.  It implies some policy
restrictions "Set of addresses: the DNCP nodes from which connections are
accepted." but has no details on whether
that is created via multicast messaging or via local configuration or
something else.






15) Also, in Sec. 4.6, the terminology for the fields of the Peer TLV is
different than defined
in Sec 7.3.1 - just "Endpoint Identifier" instead of "Local Endpoint
Identifier".

16) In Sec 7.3.2: "   Endpoint identifier is used to identify the
particular endpoint for
   which the interval applies.  If 0, it applies for ALL endpoints for
   which no specific TLV exists."   Is this the Local Endpoint Identifier
or the remote?
   The same question applies for Sec 7.2.1.