Subject: Last Call: <draft-ietf-6tisch-minimal-17.txt> (Minimal 6TiSCH Configuration) to Best Current Practice

From: [email-masked] (Dale R. Worley)
Date: Mon, 19 Dec 2016 17:34:58 -0500

Comments on draft-ietf-6tisch-minimal-17

5.1.1.  Rank Computation

   The Rank computation is described at [RFC6552], Section 4.1.  A
   node's Rank (see Figure 4 for an example) is computed by the
   following equations:

      R(N) = R(P) + rank_increment

      rank_increment = (Rf*Sp + Sr) * MinHopRankIncrease

There's clearly something omitted from this computation, since there's
no specification for computing the rank of the (a?) root node.  (The
above formula can't be applied since a root node has no "R(P)".)

6.1.  Value of the Join Metric Field

   In
   case that the network uses RPL, the Join Metric of any node
   (including the DAG root) MUST be set to DAGRank(rank)-1.  According
   to Section 5.1.1, DAGRank(rank(0)) = 1.  DAGRank(rank(0))-1 = 0 is
   compliant IEEE802.15.4's requirement of having the root use Join
   Metric = 0.

The items "DAGRank(rank)" and "DAGRank(rank(0))" aren't clear from
this context.  If I understand correctly from skimming RFC 6550,
"rank" is an attribute of each node and DAGRank() is a function that
can operate on "rank".  To make this clear without requiring one to
have learned RFC 6550 first, it would help to say

   In case that the network uses RPL, the Join Metric of any node
   (including the DAG root) MUST be set to DAGRank(rank)-1, where rank
   is the node's RPL rank.

I'm having more trouble finding a meaning for "DAGRank(rank(0))".  Is
"rank(0)" suppose to mean "rank when rank = 0"?  Or is it an
abbreviation for "the rank of the root node" (which requires that "0"
somehow be the name of the root node)?

6.5.  Hysteresis

   Per [RFC6719], the PARENT_SWITCH_THRESHOLD
   SHOULD be set to 192 when ETX metric is used (in the form 128*ETX),
   the recommendation for this document is to use
   PARENT_SWITCH_THRESHOLD equal to 640 if the metric being used is
   ((3*ETX)-2)*minHopRankIncrease, or a proportional value.

This sentence is confusing.  I think it contains two separate
recommendations, and if so, it would be clearer if they were
separated:

   Per [RFC6719], the PARENT_SWITCH_THRESHOLD
   SHOULD be set to 192 when ETX metric is used (in the form 128*ETX).

   The recommendation in this document is to use
   PARENT_SWITCH_THRESHOLD equal to 640 if the metric being used is
   ((3*ETX)-2)*minHopRankIncrease, or a proportional value.

Assuming that change is made, there are some further improvements that
could be made:

The sentences could be constructed so that the conditions under which
they were operative ("when ETX metric is used (in the form 128*ETX)"
and "the metric being used is ((3*ETX)-2)*minHopRankIncrease" are
placed in front, rather than placing in front the statements of where
the recommendations come from.

The phrase "in the form 128*ETX" is unclear.  Is that a restatement of
"the ETX metric" (in which case it's redundant)?  Is it a variety of
"the ETX metric" (in which case, it's critical and should be changed
to "the 128*ETC form of the ETC metric")?  Is is some sort of
description of "192"?

What phrase "or a proportional value" applies to is unclear.

7.3.  Recommended Settings

           +-------------------------+-------------------+
           | Parameter               | RECOMMENDED Value |
           +-------------------------+-------------------+
           | MAX_EB_DELAY            |               180 |
           +-------------------------+-------------------+
           | NUM_NEIGHBOURS_TO_WAIT  |                 2 |
           +-------------------------+-------------------+
           | PARENT_SWITCH_THRESHOLD |               640 |
           +-------------------------+-------------------+
           | NUM_UPPERLAYER_PACKETS  |                 1 |
           +-------------------------+-------------------+
           | MAX_JOIN_TIME           |               300 |
           +-------------------------+-------------------+

Of these settings, MAX_EB_DELAY and MAX_JOIN_TIME are quantities that
have units.  As such, this figure cannot be interpreted in isolation
since it does not specify the units involved.  For instance, the
statement that MAX_EB_DELAY is measured in seconds is only in section
6.2, and the units for MAX_JOIN_TIME are not stated anywhere.

I recommend that these two quantities be conceptualized as having
units, and so the table would be presented

           +-------------------------+------------------------+
           | Parameter               | RECOMMENDED Value      |
           +-------------------------+------------------------+
           | MAX_EB_DELAY            |               180 secs |
           +-------------------------+------------------------+
           | NUM_NEIGHBOURS_TO_WAIT  |                 2      |
           +-------------------------+------------------------+
           | PARENT_SWITCH_THRESHOLD |               640      |
           +-------------------------+------------------------+
           | NUM_UPPERLAYER_PACKETS  |                 1      |
           +-------------------------+------------------------+
           | MAX_JOIN_TIME           |               300 secs |
           +-------------------------+------------------------+

and revising 6.2 to say

   For example, after having received the first EB, a node MAY listen
   for at most MAX_EB_DELAY until it has received EBs from
   NUM_NEIGHBOURS_TO_WAIT distinct neighbors.

8.  IANA Considerations

   This document requests no immediate action by IANA.

Are there non-immediate actions that can be requested of IANA by a
document?  I suspect that "immediate" is redundant.

Appendix A.  Examples

   This section contains several example packets.  Each example contains
   (1) a schematic header diagram, (2) the corresponding bytestream, (3)
   a description of each of the IEs that form the packet.

As far as I can tell, none of the examples contains a schematic header
diagram, but only the detailed structure of the IEs.

Dale