Re: [Roll] Review of rpl-03
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Roll] Review of rpl-03
Thanks Anders,
We will work to incorporate your feedback into the upcoming -04. Some more
comments inline below:
Regards,
-Tim
Anders Jagd wrote:
> Roll mailing list,
>
> I recently started monitoring this mailing list as well as catching up on
> RPL, specifically draft-ietf-roll-rpl-03. Through this mail, I would like to
> offer my "first time reader" feedback.
>
> I am aware of various mail threads addressing some of the below topics. I
> have tried not to repeat comments/questions made by others, and it is
> generally not my intention to reopen old debates. However, being new to this
> list, I am less than 100% in sync with all previous discussions, and thus
> run the risk of repeating old comments. In these cases, please feel free to
> refer me to the "FAQ" :)
>
> BTW, my name is Anders Jagd, and I work for Eka Systems.
>
> Here goes:
>
> Section 1.1
>
> 319 each instantiation of the protocol to be optimized in terms of
> 320 required code space. It must be noted that RPL is not restricted
>
> Suggest change to "required code space and other limited computation
> resources"
>
> Section 2
>
> 407 each DAG that a node is a member of, the node will maintain a
> 408 set of DAG siblings. If a node is a member of multiple DAGs
>
> Suggest change to "may maintain a set of DAG siblings"
>
> Section 3.3.1
>
> Should RPL discourage "soft greediness", where a node initially joining a
> DAG chooses to enter at a higher rank than it could have done ?
>
> Section 3.3.4
>
> 1263 has subsequently cleaned up the state. This loop happens when a no-
> 1264 DAO was missed till a heartbeat cleans up all states. The DAO loop
>
> General comment: Document includes some "forward references".
> In this example "no-DAO" has not been defined previously.
>
> Section 5.1.1
>
> 1545 Length: 8-bit unsigned integer set to 4 when there is no suboption.
> 1546 The length of the option (including the type and length fields
>
> "4" does not match Figure 1 (Figure one has 4.5 "8 octet units")
>
> 1662 The following values MUST NOT change during the propagation of RA-DIO
> 1663 messages outwards along the DAG: Type, Length, G, DAGPreference,
> 1664 DAGDelay and DAGID. All other fields of the RA-DIO message are
> 1665 updated at each hop of the propagation.
>
> List not complete - what about D, A, Sequence number, DIOIntDouble,
> DIOIntMin ?
Indeed- A, SeqNum, DIO... should be unchanged. Nodes should be free to
tweak `D', e.g. from modifying their parent set
>
> Section 5.1.1 (general)
>
> - Do we need 8 bit for sequence number ?
>
> - Do we need 8 bit for DAGPreference ?
I would agree probably not. 256 levels of DAG preference does seem a bit
excessive in practice ;)
>
> - Is one byte enough for DAGRank ?
>
> - Do we need BootTimeRandom, NodePref at all, and if so, do they need to
> be so big ?
>
> I understand the collision scenario with associated "risk window", but do we
> need this tie-breaker, as opposed to simply discarding everything within
> risk window regardless of any tie-breaker ? If the answer is "yes, we need
> it", then should we at least consider making it less costly (less bits ?)
>
> - Can we come up with less "expensive" PathDigest ?
>
> Meaning less than 32 bit, and something less computationally intensive than
> CRC. Also, do we need PathDigest at all, given that we have the "D" bit to
> trigger DA ?
Hmm... I think you may be onto something. One thing to consider is that
`PathDigest' could be much longer lived as compared to the D bit, e.g. in
case of loss a modified PathDigest can be observed over several sequence
numbers, while a `D bit' would typically only remain set during one NA-DAO
cycle. But there is definitely something here to consider...
>
> - DAGRank: Is rank of root "typically 1" or "always 1" ?
>
> Document not quite consistent. Since a root could "exaggerate" it's rank, I
> assume "typically" is correct, but 5.3.1 seems to indicate otherwise:
>
> 2040 1. A node that does not have any DAG parents in a DAG is the root
> 2041 of its own floating DAG. It's rank is 1. A node will end up in
>
> Section 5.1.1.1.5
>
> 1803 The Destination Prefix suboption has an alignment requirement of
> 1804 4n+1. Its format is as follows:
>
> "4n+1" is a bit unclear to me.
This is obsolete, wrong, and will be updated (we had added a control octet
for preference anyway that padded the option header out to a multiple of 4
bytes and removed the need for `+1')
>
> Section 5.2.2
>
> 1913 it is expected to produce a different and unique DAGID for each of
> 1914 the multiple DAGs.
>
> Suggest change: "expected to" to be replaced with "MUST"
>
> Section 5.3.1
>
> 2099 rank, or whatever metrics the LLN cares to use. A node may jump
>
> Suggest change: "whatever metric the LLN cares to use" replaced by
> "metrics defined by the OCP"
>
> Section 5.3.2.2
>
> 2227 If the other DAG is now empty of candidate parents, then
> 2228 directly follow SRC into the new DAG by adding it as a DAG
>
> Could the node have another choice (jumping to a parent in a third DAG) ?
>
> 2252 described in Section 5.3. When a node adds another node to its set
> 2253 of candidate parents, the node becomes attached to the DAG through
> 2254 the parent node.
>
> Not exactly - the new node simply becomes another "candidate parent"
>
> Section 5.3.3
>
> 2302 overhead and saving energy consumption (which is of utmost
> 2303 importance for battery-operated nodes).
>
> Suggest to delete "(which is of .....)"
> (Not to say it is not true, but may not belong in section 5)
>
> 2344 (2^DIOIntervalMin)ms. The default value is
> 2345 DEFAULT_DIO_INTERVAL_MIN.
>
> Suggest to clarify that the default at this point is simply given a
> "name". This (I assume) to facilitate later reference to this when actual
> values are discussed.
>
> Section 5.3.4.1. Resetting the Trickle Timer
>
> It wasn't obvious to me at first that this is all done in order to limit
> the amount of localized traffic/congestion due to broadcasts from parent
> nodes (i.e. "make children be quiet if their parents are talking a lot", if
> I understand it correctly). May want to clarify for sake of readability.
>
> Section 5.7
>
> 2490 preferred DAG parent and its rank. At that time any
> 2491 remaining DAG parents of greater rank than this node must
>
> Shouldn't it be "greater than or equal rank" ?
>
> Section 5.7.1
>
> 2534 A new DAG is discovered upon receiving a RA message with or without a
> 2535 DIO. The node joins the DAG by selecting the source of the RA
>
> It took me a while to realize this must be coming from a "non RPL" node.
> Suggest to clarify for readability (incl. the whole "rank 0" concept).
>
> 2553 The duration of the DAG Hop timer depends on the DAG Delay of the new
> 2554 DAG and on the rank of candidate parent that triggers it: (candidates
> 2555 rank + random) * candidate's DAG_delay (where 0 <= random < 1). It
> 2556 is randomized in order to limit collisions and synchronizations.
>
> I understand "random" may be important in order to manage nodes that
> somehow get in sync. But I suggest "random" may also be
> difficult/"expensive" to implement (sure, it doesn't say how random it has
> to be, but still). I believe I understand the intention behind making the
> timer depend on the "candidate rank that would be achieved in DAG"; in the
> sense that it allows for other/better parents to be discovered within this
> time. However, could we somehow avoid "random" ?
>
> How is this impacted by the ongoing thread regarding use of "Sequence
> number" vs "Hop timer" ?
>
> Section 5.7.3. Collision
>
> As discussed above, can this "risk window" be handled less expensively ?
> (less bits in RA-DIO for "tie-breaker" or no "tie-breaker" at all)
>
> Section 5.7.4
>
> 2623 A node is instable when it is prepared to shortly replace a set of
> 2624 DAG parents in order to jump to a different DAGID. This happens
>
> Suggest to rephrase (node jumps to a different DAG, not a different DAGID)
>
> Section 5.8.1
>
> 2695 o The OF scans all the candidate neighbors on the possible
> 2696 interfaces to check whether they can act as an attachment router
>
> Suggest to replace "attachment router" with "router"
>
> 2702 o The OF computes self's rank by adding the step of rank to that
> 2703 candidate to the rank of that candidate. The step of rank is
> 2704 estimated as follows:
>
> Suggest to replace "estimated" with "based upon"
>
> 2757 * Candidate neighbors that are of worse rank than self are
> 2758 ignored
> 2759
> 2760 * Candidate neighbors of a better rank than self (non-siblings)
> 2761 are preferred
>
> For completeness: There is no description of handling of "Candidate
> neighbors of same rank" (siblings)
>
> Also, suggest to replace "worse rank" with "higher rank".
>
> Section 5.8.2
>
> 2766 corresponding to OCP codepoint 0. This is a very simple reference to
> 2767 help design more complex Objective Functions. In particular, the
>
> This makes it sound like OCP-0 is merely a "template". It is of course
> more than that, being the "default" OCP.
>
> 2773 This document specifies a default objective metric, called OF0, and
> 2774 using the OCP 0. OF0 is the default objective function of RPL, and
>
> Is OFO "default objective metric" or "default objective function" (acronym
> matches neither)
>
> Section 5.8.2.2
>
> 2819 4. If none are grounded then a DAG with a more preferred
> 2820 administrative preference is better.
>
> Is this DAGPreference from RA-DIO ? (unclear to me)
Yes- we will make it more clear
>
> Section 5.9.2.1
>
> 3183 o A counter of retries to count how many RA-DIO messages were sent
> 3184 on the interface to the advertising neighbor without reachability
> 3185 confirmation for the prefix.
>
> At this point it may not be quite clear to the reader that this is related
> to requesting a DA but not receiving it (if I understand correctly).
> Suggest to clarify.
>
In -04 we will go for some FSM embodiment that should hopefully make this
much more clear.
> Section 5.9.2.4
>
> 3369 o Destination advertisement operation stopped: All entries in the
> 3370 abstract lists are freed. All the routes learned from NA-DAO
> 3371 messages are removed.
>
> Why would a node stop DA operation once commenced ?
>
> Section 7.1.2
>
> 3677 A RPL implementation SHOULD allow configuring the following routing
> 3678 protocol parameters, which are further described in Section 5.1.1:
>
> I don't think PathDigest belongs in this list (nothing to configure, it is
> by definition initialized to zero by root)
>
> 3715 DAG Hop Timer: A RPL implementation MUST provide the ability to
>
> Wouldn't it be more precise to describe configuration of DagDelay, since
> "Hop Timer" is based on DagDelay.
>
> Section 7.1.5
>
> 3771 o The Remove timer
>
> "Remove timer" or "DestroyTimer" ? (Document seems to be inconsistent)
>
> /Anders (Jagd)
>
>
> _______________________________________________
> Roll mailing list
> Roll at ietf.org
> https://www.ietf.org/mailman/listinfo/roll
>
Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.