rfc-9033

6TiSCH Minimal Scheduling Function (MSF)

T. Chang (Editor), M. Vučinić, X. Vilajosana, S. Duquennoy, D. Dujovne
date2021-05 streamIETF areaint wg6tisch statusPROPOSED STANDARD pages20 canonicalhttps://www.rfc-editor.org/rfc/rfc9033 doi10.17487/RFC9033
This specification defines the "IPv6 over the TSCH mode of IEEE 802.15.4" (6TiSCH) Minimal Scheduling Function (MSF). This Scheduling Function describes both the behavior of a node when joining the network and how the communication schedule is managed in a distributed fashion. MSF is built upon the 6TiSCH Operation Sublayer Protocol (6P) and the minimal security framework for 6TiSCH.

Extracted elements (27)

design-rationale §5.1

A larger MAX_NUM_CELLS value improves cell-usage calculation accuracy and reduces 6P overhead but introduces higher scheduling latency for bursty traffic. MSF intentionally trades latency for energy by scheduling more cells than immediately needed. Setting MAX_NUM_CELLS to at least four times the recent maximum cells used per slotframe is RECOMMENDED.

design-rationale §5.3

MAX_NUMTX MUST be a power of two to allow exact integer division of NumTx and NumTxAck by 2 without introducing division error. This halving mechanism keeps the counters from saturating while preserving the PDR value, allowing ongoing statistical accumulation.

design-rationale §8

MSF uses two-step 6P Transactions exclusively, initiated only by a node towards its parent. This asymmetry means the initiating node is responsible for choosing cells in the CellList, simplifying coordination: the parent only selects from the candidate list provided.

design-rationale §6

The 6P SIGNAL command is explicitly not used by MSF (Section 6), and the Metadata field is not used by MSF (Section 11). These are defined in 6P (RFC 8480) but MSF has no need for them, keeping the scheduling function simple.

design-rationale §2

The same slotframe length is RECOMMENDED for Slotframes 0, 1, and 2 because it allows a node to determine which slotOffset values are already used by its AutoRxCell when generating a CellList for 6P negotiated cells, thereby avoiding scheduling collisions between autonomous and negotiated cells at the same [slotOffset, channelOffset].

interoperability-note §A

For interoperability, Appendix A specifies SAX hash function parameters h0=0, l_bit=0, r_bit=1, with slotframe length as T and the node's 8-byte EUI-64 as the input string. Other h0/l_bit/r_bit values may be broadcast in EB frames or preconfigured, but the reference values in Appendix A MUST be used for interoperability.

normative-requirement §5.1 MUST

A cleanup mechanism MUST be provided to detect and remove negotiated cells reserved for nodes that have booted or disappeared, confirming those cells are no longer used by the associated neighbors.

normative-requirement §5.1 MUST

A node MUST maintain separate NumCellsElapsed and NumCellsUsed counter pairs for negotiated Tx cells and negotiated Rx cells to the selected parent. When NumCellsElapsed reaches MAX_NUM_CELLS, if NumCellsUsed exceeds LIM_NUMCELLSUSED_HIGH a 6P ADD is issued; if below LIM_NUMCELLSUSED_LOW a 6P DELETE is issued; both counters are then reset to 0.

normative-requirement §8 MUST

In the CellList of a 6P ADD or RELOCATE command, each cell MUST have a unique slotOffset, the node MUST NOT already have a scheduled cell at that slotOffset, and the slotOffset MUST NOT equal the minimal cell's slotOffset (0). The CellList is RECOMMENDED to contain five or more cells.

normative-requirement §3 MUST

Nodes MUST use the SAX hash function (as defined in SAX-DASFAA Section 2) with consistent input parameters to compute [slotOffset, channelOffset] for autonomous cells from an EUI-64 address, distributing cells across all channel offsets and all but the first slot offset of Slotframe 1.

normative-requirement §5.3 MUST

NumTx and NumTxAck MUST be reset to 0 each time the node switches parent (or first selects a parent). When NumTx reaches MAX_NUMTX, both MUST be divided by 2; MAX_NUMTX MUST be a power of two to avoid division error.

normative-requirement §4.6 MUST

Once a routing parent is selected, the joined node MUST generate a 6P ADD Request with CellOptions TX=1, RX=0, SHARED=0 and NumCells=1, containing at least 5 cells in the CellList. If the transaction fails, the node MUST repeat until a Tx cell is installed.

normative-requirement §3 MUST

The AutoRxCell MUST always remain scheduled after synchronization, and 6P CLEAR MUST NOT erase any autonomous cells. In a conflict between autonomous and negotiated cells, autonomous cells take precedence per IEEE 802.15.4.

normative-requirement §5.3 MUST

The node MUST maintain NumTx and NumTxAck for each negotiated Tx cell to the selected parent. Every HOUSEKEEPINGCOLLISION_PERIOD, a cell whose PDR is more than RELOCATE_PDRTHRES below the highest-PDR cell is relocated via a 6P RELOCATE command, provided NumTx has been divided by 2 at least once since last reset.

normative-requirement §2 SHOULD NOT

To ensure sufficient bandwidth on the minimal cell, broadcast traffic among a node and its neighbors SHOULD NOT exceed one-third of the bandwidth of the minimal cell. Trickle timer (RFC 6206) applied to DIOs is cited as one compliant algorithm.

protocol-element §3

An Autonomous Rx Cell (AutoRxCell) is a unicast receive cell at [slotOffset, channelOffset] computed as a SAX hash of the node's own EUI-64, with cell option bits TX=0, RX=1, SHARED=0. It is installed at Slotframe 1 and MUST always remain scheduled after synchronization.

protocol-element §3

An Autonomous Tx Cell (AutoTxCell) is a unicast transmit cell at [slotOffset, channelOffset] computed as a SAX hash of the Layer 2 EUI-64 destination address, with cell option bits TX=1, RX=0, SHARED=1. It is added on demand when no 6P negotiated Tx cell exists for the destination and removed when no frame is pending or a negotiated Tx cell is available.

protocol-element §14

MSF defines eleven constants with recommended values: SLOTFRAME_LENGTH=101, NUM_CH_OFFSET=16, MAX_NUM_CELLS=100, LIM_NUMCELLSUSED_HIGH=75, LIM_NUMCELLSUSED_LOW=25, MAX_NUMTX=256, HOUSEKEEPINGCOLLISION_PERIOD=1 min, RELOCATE_PDRTHRES=50%, QUARANTINE_DURATION=5 min, WAIT_DURATION_MIN=30 s, WAIT_DURATION_MAX=60 s.

protocol-element §15

MSF defines four statistics counters with recommended 1-byte widths: NumCellsElapsed, NumCellsUsed (used for traffic adaptation), NumTx, and NumTxAck (used for schedule collision detection).

protocol-element §5.1

MSF maintains two pairs of counters per selected parent: NumCellsElapsed (counts elapsed negotiated cells, incremented by 1 per elapsed cell regardless of use) and NumCellsUsed (counts cells where a frame was sent or a valid frame received). Both are initialized to 0 at boot.

protocol-element §2

MSF uses three slotframes: Slotframe 0 (bootstrap/minimal cell per RFC 8180), Slotframe 1 (autonomous cells), and Slotframe 2 (6P negotiated cells). The same slotframe length for all three is RECOMMENDED to avoid scheduling collisions between autonomous and negotiated cells.

protocol-element §5.3

Per-cell transmission statistics NumTx (count of transmission attempts) and NumTxAck (count of acknowledged transmissions) are maintained for each negotiated Tx cell to the selected parent. Packet Delivery Ratio (PDR) = NumTxAck/NumTx expressed as a percentage.

protocol-element §12

The 6P error handling table specifies recommended behavior for each 6P return code: RC_SUCCESS and RC_EOL require no action; RC_ERR_SEQNUM and RC_ERR_CELLLIST trigger 'clear' (abort transaction, issue CLEAR, remove all cells); RC_ERR and RC_RESET trigger 'quarantine' (clear plus remove from neighbor/routing tables and blacklist); RC_ERR_BUSY and RC_ERR_LOCKED trigger 'waitretry'.

registry §17.1

RFC 9033 registers SFID=0 as 'Minimal Scheduling Function (MSF)' in the '6P Scheduling Function Identifiers' subregistry of the 'IPv6 Over the TSCH Mode of IEEE 802.15.4 (6TiSCH)' registry. The value was chosen from the 0–127 range requiring IETF Review or IESG Approval.

registry

security-consideration §16

Autonomous cell coordinates are derived from EUI-64 addresses that are visible on the wire and unencrypted by link-layer security, making them easy targets for selective jamming. An attacker can jam a JP's AutoRxCell to block pledges from joining; the recommended countermeasure is pseudorandom JP selection when the link to the current JP appears bad.

security

security-consideration §16 SHOULD

Unauthenticated pledges may inject traffic with nonzero DSCP values that MSF counts as normal traffic, potentially exhausting link-layer resources on intermediate nodes. The IPv6 layer SHOULD rate-limit join traffic before it reaches the 6top sublayer; without rate limiting, intermediate nodes are vulnerable to resource exhaustion attacks.

security

state-machine §4

A node booting with MSF transitions through six sequential steps: (1) choose frequency, (2) receive EBs, (3) set up autonomous cells for join, (4) acquire RPL Rank, (5) set up first Tx negotiated cells, (6) send EBs and DIOs. The end state is synchronization, mutual authentication, a selected routing parent, one AutoRxCell, and one negotiated Tx cell to the parent.

registry, security