Thanks Pascal for the feedback. @Xavi, would you have a second to turn
those suggestions into issue on the bitbucket repo?

On Fri, Sep 29, 2017 at 12:31 PM, Pascal Thubert (pthubert) <
pthub...@cisco.com> wrote:

> Dear authors:
>
>
>
> All in all, I think the document is ready but believe that a pass on
> language from a native person may help.
>
>
>
> Also, the document should include a terminology where all the terms are
> defined, e.g. NumCandidates and so on.
>
>
>
> Still, Please find my comments, with a [PT] tag associated with text
> snippets, below:
>
>
>
> <snip>
>
>
>
> Abstract
>
>
>
>    This document defines the 6top Protocol (6P), which enables
>
>    distributed scheduling in 6TiSCH networks.  6P allows neighbor nodes
>
>    to add/delete TSCH cells to one another.  6P is part of the 6TiSCH
>
>    Operation Sublayer (6top), the next higher layer to the IEEE Std
>
>    802.15.4 TSCH medium access control layer.  The 6top Scheduling
>
>    Function (SF) decides when to add/delete cells, and triggers 6P
>
>    Transactions.  Several SFs can be defined, each identified by a
>
>    different 6top Scheduling Function Identifier (SFID).  This document
>
>    lists the requirements for an SF, but leaves the definition of the SF
>
>    out of scope.  SFs are expected to be defined in future companion
>
>    specifications.
>
>
>
> [PT] that’s too much text on SF which is out of scope. Enough to say that
> the 6top sublayer comprises the 6P protocol defined here, and a SF that
> “decides when to add/delete cells, and triggers 6P Transactions”
>
> This must be repeated in the intro to position 6P vs. 6top vs. SF
>
>
>
> <snip>
>
>
>
> 1.  Introduction
>
>
>
>    All communication in a 6TiSCH network is orchestrated by a schedule
>
>    [RFC7554].  This specification defines the 6top Protocol (6P), part
>
>    of the 6TiSCH Operation sublayer (6top).  6P allows a node to
>
> [PT] that’s concise! Please introduce that the schedule indicates
> transmission cells in the [slotOffset,channelOffset] CDU matrix and point
> at the terminology draft and RFC 7554 for more information.
>
> You’ll be needing this a few lines below.
>
>
>
>    communicate with a neighbor to add/delete TSCH cells to one another.
>
>    This results in distributed schedule management in a 6TiSCH network.
>
>
>
> <snip>
>
>
>
>    In the context of this specification, all the cells used by 6top are
>
>    soft cells.  Hard cells can be used for example when "hard-coding" a
>
>    schedule [RFC8180].
>
>
>
> [PT] Also ref the 6TiSCH architecture.
>
>
>
> <snip>
>
>
>
>
>
>
>
>
>
>    The 6P messages exchanged between nodes A and B during a 6P
>
>    Transaction SHOULD be exchanged on dedicated cells between A and B.
>
>    If no dedicated cells are scheduled between nodes A and B, shared
>
>    cells MAY be used.
>
>
>
> [PT] Define dedicated, the reader does not necessarily know what is meant
> here. Do we need a terminology?
>
>
>
>
>
> <snip>
>
>
>
>
>
>    A 6P Transaction can consist of 2 or 3 steps.  An SF MUST specify
>
>    whether to use 2-step transactions, 3-step transactions, or both.
>
>
>
> [PT] Hum, the fact that 2 step and 3 steps are meant to enable
> respectively the requester or the responder to allocate the cells should be
> said clearly here, before 3.1.1.
>
> When the reader is here, he does not figure why there are 2 models.
>
>
>
> <snip>
>
>
>
>
>
> 3.1.1.  2-step 6P Transaction
>
>
>
>    Figure 4 shows an example 2-step 6P Transaction.  In a 2-step
>
>    transaction, node A selects the candidate cells.  Several elements
>
>    are left out to simplify understanding.
>
>
>
>
>
>
>
>             +----------+                           +----------+
>
>             |  Node A  |                           |  Node B  |
>
>             +----+-----+                           +-----+----+
>
>                  |                                       |
>
>                  | 6P ADD Request                        |
>
>                  |   Type         = REQUEST              |
>
>                  |   Code         = ADD                  |
>
>                  |   SeqNum       = 123                  |
>
>                  |   NumCells     = 2                    |
>
>          timeout |   CellList     = [(1,2),(2,2),(3,5)]  |
>
>            ---   |-------------------------------------->|
>
>             |    |                                       |
>
>             |    | 6P Response                           |
>
>             |    |   Type         = RESPONSE             |
>
>             |    |   Code         = SUCCESS              |
>
>             |    |   SeqNum       = 123                  |
>
>             |    |   CellList     = [(2,2),(3,5)]        |
>
>             X    |<--------------------------------------|
>
>                  |                                       |
>
>
>
>                 Figure 4: An example 2-step 6P Transaction.
>
>
>
>    In this example, the 2-step transaction occurs as follows:
>
>
>
>
>
> [PT] MAC-layer acks should be shown for completeness, since they are
> being  used in the logic of the protocol.
>
>
>
> <snip>
>
>
>
>    6P messages travel over a single hop.  6P messages are carried as
>
>    payload of an IEEE 802.15.4 Payload Information Element (IE)
>
>    [IEEE802154].  The messages are encapsulated with the Payload IE
>
>    Header (per Section 7.4.3 of the [IEEE802154]).  The Group ID is set
>
>
>
>
>
> [PT] Be careful when citing down to a section. I think that this implies
> that you place a dated reference to the IEEE spec, like 2015. And you do
> not want that.
>
> => I think you have to omit “per Section 7.4.3 of the”
>
>
>
> <snip>
>
>
>
>   Other Fields:  The list of other fields depends on the type of
>
>          messages, and is detailed in Section 3.3.
>
>
>
> [PT] More precisely the other fields are the options below and how they
> are used is detailed in 3.3, no?
>
>
>
>       +-------------+-------------------------------------------------+
>
>       | CellOptions | cells scheduled with A that are to be selected  |
>
>       | Value       | by B when receiving a 6P message from A         |
>
>       +-------------+-------------------------------------------------+
>
>      |TX=0,RX=0,S=0| select all cells                                |
>
>       +-------------+-------------------------------------------------+
>
>       |TX=1,RX=0,S=0| select the cells scheduled marked as RX         |
>
>       +-------------+-------------------------------------------------+
>
>       |TX=0,RX=1,S=0| select the cells marked as TX                   |
>
>       +-------------+-------------------------------------------------+
>
>
>
> [PT] Did you mix up RX and TX above?
>
>
>
> <snip>
>
>
>
>
>
> 3.2.4.  6P CellList
>
>
>
>    A CellList field MAY be present in a 6P ADD Request, a 6P DELETE
>
>    Request, a 6P RELOCATE Request, a 6P Response or a 6P Confirmation.
>
>    It is composed of zero, one or more 6P Cell containers.  The contents
>
>    of the CellOptions field specify the options associated with all
>
>    cells in the CellList.  This necessarily means that the same options
>
>    are associated with all cells in the CellList.
>
>
>
> [PT] If a CellList is as I expect the concatenation of 6P Cells, then
> maybe you should clarify it; also clarify where NumCandidate is found.
>
>
>
> <snip>
>
>
>
>
>
>    The 6P Cell is a 4-byte field, its RECOMMENDED format is:
>
>
>
>
>
> [PT] Is there another format less RECOMMENDED? If not, just say, “its
> format is” or something:
>
>
>
> <snip>
>
>
>
>
>
>
>
>                [Page 12]
>
>
>
> Internet-Draft            6tisch-6top-protocol            September 2017
>
>
>
>
>
>    Figure 10 defines the format of a 6P ADD Response and Confirmation.
>
>
>
>                           1                   2                   3
>
>       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
>
>      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>
>      |Version| T | R |     Code      |     SFID      |     SeqNum    |
>
>      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>
>      | CellList ...
>
>      +-+-+-+-+-+-+-+-+-
>
>
>
>            Figure 10: 6P ADD Response and Confirmation Formats.
>
>
>
>    CellList:  A list of 0, 1 or multiple 6P Cells.
>
>
>
>    Consider the topology in Figure 1 where the SF on node A decides to
>
>    add NumCells cells to node B.
>
>
>
>   Node A's SF selects NumCandidate cells from its schedule as candidate
>
>
>
>
>
> [PT] First use of NumCandidate. Is that a definition? Should be in
> introduced and defined better. Maybe a terminology?
>
>
>
> <snip>
>
>
>
>
>
>
>
>
>
>
>
>    In a 2-step 6P RELOCATE Transaction, the candidate CellList MUST
>
>    therefore contain at least NumCells entries.
>
>
>
>
>
>
>
> [PT] No, it must contain exactly NumCells entries; otherwise, how do we
> know where the first CellList ends?
>
>
>
> <snip>
>
>
>
>
>
>    specified offset.  Node B SHOULD include as many cells as fit in the
>
>    frame.  If the response contains the last cell, Node B MUST set the
>
>    Code field in the response to EOL, indicating to Node A that there no
>
>    more cells that match the request.  Node B MUST return at least one
>
>    cell, unless the specified Offset is beyond the end of B's cell list
>
>    in its schedule.  If node B has less than Offset cells that match the
>
>    request, node B returns an empty CellList and a Code field set to
>
>    EOL.
>
>
>
>
>
>
>
> [PT] define EOL. Is there a table of Codes?
>
>
>
> <snip>
>
>
>
>
>
>
>
>
>
> 3.4.  Protocol Functional Details
>
>
>
> 3.4.1.  Version Checking
>
>
>
>    All messages contain a Version field.  If multiple Versions of the 6P
>
>    protocol have been defined (in future specifications for Version
>
>    values different from 0), a node MAY implement multiple protocol
>
>    versions at the same time.  When receiving a 6P message with a
>
>    Version number it does not implement, a node MUST reply with a 6P
>
>    Response with a Return Code field set to VER_ERR.  The Version field
>
>    in the 6P Response MUST be the same as the Version field in the
>
>    corresponding 6P Request.  In a 3-step transaction, the Version field
>
>    in the 6P Confirmation MUST match that of the 6P Request and 6P
>
>    Response in the same transaction.
>
>
>
>
>
> [PT] How does the node signal the version it supports? How can it even
> build a message that matches the version it does not know? I think it
> should respond with a format that it understands and hat hopefully the
> requester also understands.
>
>
>
> I wonder if there should not be an ERROR message used to report any error.
> It would be defined in this version and would be mandatory to implement in
> all further versions with this version number.
>
> For instance, If a node with an old version receives a message with an
> unknown version, it could return error, wrong version, with the supported
> version as data.
>
>
>
> <snip>
>
>
>
>
>
> 3.4.2.  SFID Checking
>
>
>
> Similar, there is now way to enumerate which SFs are supported.
>
>
>
> <snip>
>
>
>
>    Response with return code BUSY.  In case the requested cells are
>
>    locked, it MUST reply to that request with a 6P Response with return
>
>    code NORES.  The node receiving BUSY or a NORES MAY implement a retry
>
>    mechanism, defined by the SF.
>
>
>
> Again, all these codes should have been introduced earlier, at least by a
> forward pointer to table 34.
>
>
>
> <snip>
>
>
>
>
>
>
>
> 3.4.4.  Timeout
>
>
>
>    A timeout occurs when the node sending the 6P Request has not
>
>    received the 6P Response within a specified amount of time determined
>
>    by the SF.  In a 3-step transaction, a timeout also occurs when the
>
>    node sending the 6P Response has not received the 6P Confirmation.
>
>    The timeout should be longer than the longest possible time it can
>
>    take for the exchange to finish.  The value of the timeout hence
>
>    depends on the number of cells scheduled between the neighbor nodes,
>
>    the maximum number of link-layer retransmissions, etc.  The SF MUST
>
>    determine the value of the timeout.  The value of the timeout is out
>
>    of scope of this document.
>
>
>
>
>
> Is there a dependency on the value of a timer on one side vs. the other?
> Eg in a 3-step, do we want the requester to time out first and retry, or
> the responder to retry his response before the requester times out?
>
>
>
> <snip>
>
>
>
> 3.4.6.2.  Detecting and Handling Schedule Inconsistency
>
>    Inconsistency may happen when L2 acknowledgment of the last packet in
>
>    a transaction is lost, i.e. RESPONSE (in 2-step 6P transaction) or
>
>    CONFIRMATION (in 3-step 6P transaction) have been received on one
>
>    side while timeout happens on the other side.  Take 2-step 6P
>
>    transaction as example, i.e. timeout happens when node B is waiting
>
>    for L2 acknowledgment to its Response message.  Upon the timeout, the
>
>    SF running on the node that timeout (e.g node B) MUST take action to
>
>    validate the schedule state on both sides.
>
>
>
> What makes the node decide what the best course is? Shouldn’t you
> RECOMMEND a way?
>
> Isn’t the last transaction the one that brings an issue? Can we ask the
> number of the last transaction on the other side and use to figure if it is
> the req or the ack that was missed?
>
>
>
> <snip>
>
>
>
>    inconsistency is detected.  When such inconsistency is detected, node
>
>    B MUST respond with the return code INCON_ERR and the transaction
>
>    MUST be discarded.  It is up to the SF to decide what to do next.
>
>   For example, upon receiving INCON_ERR, node A starts a LIST
>
>    transaction to node B to obtain the scheduled cells with B.
>
>
>
>
>
> I disagree, it is not up to the SF. The SF asks something, and should be
> answered whether it happened or not. Trouble and cleaning trouble should be
> done at 6P.
>
> OTOH, SF needs to know when an action happens like a clear or something,
> otherwise we have an inconsistency between 6P and SF.
>
> BTW upon a clear that is not on both sides, the right action is probably
> to clear again, no? After a number of tries, failure means a software issue.
>
>
>
> <snip>
>
>
>
> 4.  Guidelines for 6top Scheduling Functions (SF)
>
>
>
> This is more like a dependency, things that SF MUST do. The title above
> should be changed, and real guidelines should go to appendix (e.g. 4.3)
>
>
>
> <snip>
>
>
>
>
>
>    o  MAY redefine the format of the CellList field.
>
>    o  MAY redefine the format of the CellOptions field.
>
>    o  MAY redefine the meaning of the CellOptions field.
>
>
>
>
>
>
>
> No, all SF knows about Cells is via APIs, not packet formats.
>
> The format on the wire is 6P business. 6P must parse it and it must
> understand it.
>
> If this is changed, then we need a new protocol version.
>
>
>
> <snip>
>
>
>
> 4.3.  Recommended Structure of an SF Specification
>
>
>
> These are guideline that should go in the appendix sc
>
>
>
> <snip>
>
>
>
>
>
> 5.  Implementation Status
>
>
>
>    This section records the status of known implementations of the
>
>    protocol defined by this specification at the time of posting of this
>
>    Internet-Draft, and is based on a proposal described in [RFC6982].
>
>    The description of implementations in this section is intended to
>
>    assist the IETF in its decision processes in progressing drafts to
>
>    RFCs.  Please note that the listing of any individual implementation
>
>    here does not imply endorsement by the IETF.  Furthermore, no effort
>
>    has been spent to verify the information presented here that was
>
>    supplied by IETF contributors.  This is not intended as, and must not
>
>    be construed to be, a catalog of available implementations or their
>
>    features.  Readers are advised to note that other implementations may
>
>    exist.
>
>
>
>    According to [RFC6982], "this will allow reviewers and working groups
>
>    to assign due consideration to documents that have the benefit of
>
>    running code, which may serve as evidence of valuable experimentation
>
>    and feedback that have made the implemented protocols more mature.
>
>    It is up to the individual working groups to use this information as
>
>    they see fit".
>
>
>
>
>
> The 2 sections above should go.
>
>
>
> <snip>
>
>
>
>
>
> 6.  Security Considerations
>
>
>
>    6P messages are carried inside 802.15.4 Payload Information Elements
>
>    (IEs).  Those Payload IEs are encrypted and authenticated at the link
>
>    layer through CCM*.  6P benefits from the same level of security as
>
>
>
>
>
> Nede ref on CCM*
>
>
>
> <snip>
>
>
>
>
>
>
>
>    The IANA policy for future additions to this sub-registry is "IETF
>
>    Review or IESG Approval" as described in [RFC5226].
>
>
>
> Please reference normatively  https://tools.ietf.org/html/rfc8126 Instead
> of RFC 5226
>
> Several occurences
>
>
>
> <snip>
>
>
>
> Voila!
>
>
>
> Take care,
>
>
>
> Pascal
>
>
>
>
>
> _______________________________________________
> 6tisch mailing list
> 6tisch@ietf.org
> https://www.ietf.org/mailman/listinfo/6tisch
>
>


-- 
_______________________________________

Thomas Watteyne, PhD
Research Scientist & Innovator, Inria
Sr Networking Design Eng, Linear Tech
Founder & co-lead, UC Berkeley OpenWSN
Co-chair, IETF 6TiSCH

www.thomaswatteyne.com
_______________________________________
_______________________________________________
6tisch mailing list
6tisch@ietf.org
https://www.ietf.org/mailman/listinfo/6tisch

Reply via email to