Skip to content

Orchestra

Atis Elsts edited this page Jan 19, 2022 · 2 revisions

Orchestra is the Contiki/Contiki-NG scheduler. It is an autonomous scheduler that exploint RPL state in order to set up the TSCH schedule at zero overhead in the TSCH protocol level.

The Orchestra scheduler is described in the paper:

  • "Orchestra: Robust Mesh Networks Through Autonomously Scheduled TSCH", ACM SenSys'15

For description of the more recent Orchestra rules and its performance evaluation consult the papers:

  • "An Empirical Survey of Autonomous Scheduling Methods for TSCH", Atis Elsts, Seohyang Kim, Hyung-Sin Kim, Chongkwon Kim, IEEE Access, 2020
  • "ALICE: autonomous link-based cell scheduling for TSCH", Seohyang Kim, Hyung-Sin Kim, Chongkwon Kim, IEEE Access, ACM/IEEE IPSN, 2019.

Orchestra rules

An Orchestra schedule uses a set of rules. The rules determine which slotframes and cells to add, the priority of these slotframes, as well as which cells to use for sending which packets.

The following rules are supported in the TSCH-Sim:

  • orchestra_rule_eb_per_time_source - Schedules a single cell for EB packet transmission and a single cell for EB packet reception from the timesource node, if any.
  • orchestra_rule_unicast_per_neighbor_rpl_storing - Rule for unicast packets. Allocates a single cell for the node itself, a single cell to the parent, and a single cell for each neighbor which has a direct route installed. Can be used in sender based and receiver based modes. Requires the RPL storing mode to be enabled.
  • orchestra_rule_unicast_per_neighbor_rpl_ns - Alternative rule for unicast packets. Can be used only in the receiver based mode. On the other hand, works both with RPL storing and non-storing modes.
  • orchestra_rule_unicast_per_neighbor_link_based - Alternative rule for unicast packets. Adds a Tx and a Rx cell for each link, to the parent and to each direct neighbor with route. Requires RPL storing mode to be enabled.
  • orchestra_rule_default_common - Rule for broadcast traffic and for all unicast traffic that's not matched by the unicast-specific rules.

The slotframes must be configured in their priority order. Upon queueing a new packet, rules are examined one by one in their configuration order. As soon as a rule matches a packet, the packet is assigned to that rule, and further processing is stopped.

Normally, the orchestra_rule_eb_per_time_source rule, one of the unicast rules, and the orchestra_rule_default_common are used, in this order.

Configuration parameters

  • ORCHESTRA_RULES - An array with names of Orchestra rules to use. See above for details.
  • ORCHESTRA_EBSF_PERIOD - Slotframe size for orchestra_rule_eb_per_time_source rule. Positive integer, default: 397.
  • ORCHESTRA_COMMON_SHARED_PERIOD - Slotframe size for orchestra_rule_default_common rule. Positive integer, default: 31.
  • ORCHESTRA_UNICAST_PERIOD - Slotframe size for the unicast rules. Positive integer, default: 17.
  • ORCHESTRA_UNICAST_ACTIVE_PERIOD - If the value of this setting is set lower than the size of the unicast slotframe (ORCHESTRA_UNICAST_PERIOD), then all active slots are grouped in the specific part of the slotframe. Positive integer, default: same as ORCHESTRA_UNICAST_PERIOD.
  • ORCHESTRA_UNICAST_SENDER_BASED - Determines whether to use the orchestra_rule_unicast_per_neighbor_rpl_storing rule in sender or receiver based mode. Boolean, default: false.
  • ORCHESTRA_LINKADDR_HASH - The hash function used to assign timeslot to a given node, based on its link-layer address. For rules with multiple channel offsets, it is also used to select the channel offset. Default: use the last byte of the node's address.
  • ORCHESTRA_LINKADDR_HASH2 - The hash function used to assign timeslot to a pair of nodes, based on their link-layer addresses. Default: use a simple function of the the last bytes of the nodes' addresses.
  • ORCHESTRA_MAX_HASH - The maximum hash value. Positive integer, default: 0x7fff.
  • ORCHESTRA_COLLISION_FREE_HASH - Is the "hash" function collision-free? It is free if it maps to unique node-ids in the range [0..ORCHESTRA_MAX_HASH]. Boolean, default: false.
  • ORCHESTRA_EB_CHANNEL_OFFSET - Channel offset for the EB rule. Non-negative integer, default: 0.
  • ORCHESTRA_DEFAULT_COMMON_CHANNEL_OFFSET - Channel offset for the default common rule. Non-negative integer, default: 1.
  • ORCHESTRA_UNICAST_MIN_CHANNEL_OFFSET - The minimal channel offset for the unicast rules. Default: 2.
  • ORCHESTRA_UNICAST_MAX_CHANNEL_OFFSET - The maximal channel offset for the unicast rules. Default: 255.
Clone this wiki locally