draft-ietf-6tisch-6top-interface-03.txt   draft-ietf-6tisch-6top-interface-04.txt 
6TiSCH Q. Wang, Ed. 6TiSCH Q. Wang, Ed.
Internet-Draft Univ. of Sci. and Tech. Beijing Internet-Draft Univ. of Sci. and Tech. Beijing
Intended status: Informational X. Vilajosana Intended status: Informational X. Vilajosana
Expires: September 10, 2015 Universitat Oberta de Catalunya Expires: January 7, 2016 Universitat Oberta de Catalunya
T. Watteyne July 6, 2015
Linear Technology
March 9, 2015
6TiSCH Operation Sublayer (6top) Interface 6TiSCH Operation Sublayer (6top) Interface
draft-ietf-6tisch-6top-interface-03 draft-ietf-6tisch-6top-interface-04
Abstract Abstract
This document defines a generic data model for the 6TiSCH Operation This document defines a generic data model for the 6TiSCH Operation
Sublayer (6top), using the YANG data modeling language. This data Sublayer (6top), using the YANG data modeling language. This data
model can be used for future network management solutions defined by model can be used for network management solutions defined by the
the 6TiSCH working group. This document also defines a list of 6TiSCH working group.
commands for the internal use of the 6top sublayer and/or to be used
by implementers as an API guideline or basic specification.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 10, 2015. This Internet-Draft will expire on January 7, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 15 skipping to change at page 2, line 11
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3
3. 6TiSCH Operation Sublayer (6top) Overview . . . . . . . . . . 3 3. 6TiSCH Operation Sublayer (6top) Overview . . . . . . . . . . 3
3.1. Cell Model . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Cell Model . . . . . . . . . . . . . . . . . . . . . . . 4
3.1.1. hard cells . . . . . . . . . . . . . . . . . . . . . 6 3.1.1. hard cells . . . . . . . . . . . . . . . . . . . . . 5
3.1.2. soft cells . . . . . . . . . . . . . . . . . . . . . 6 3.1.2. soft cells . . . . . . . . . . . . . . . . . . . . . 6
3.2. Data Transfer Model . . . . . . . . . . . . . . . . . . . 6 3.2. Data Transfer Model . . . . . . . . . . . . . . . . . . . 6
4. Generic Data Model . . . . . . . . . . . . . . . . . . . . . 8 4. Generic Data Model . . . . . . . . . . . . . . . . . . . . . 8
4.1. YANG model of the 6top MIB . . . . . . . . . . . . . . . 8 4.1. YANG model of the 6top MIB . . . . . . . . . . . . . . . 8
4.2. YANG model of the IEEE802.15.4 PIB . . . . . . . . . . . 27 4.2. Yang Model for the Security aspects of 6top . . . . . . . 32
4.3. Yang Model for the Security aspects of 6top . . . . . . . 32 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 32
5. Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.1. Normative References . . . . . . . . . . . . . . . . . . 32
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2. Informative References . . . . . . . . . . . . . . . . . 32
6.1. Normative References . . . . . . . . . . . . . . . . . . 37 5.3. External Informative References . . . . . . . . . . . . . 33
6.2. Informative References . . . . . . . . . . . . . . . . . 37 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33
6.3. External Informative References . . . . . . . . . . . . . 38
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39
1. Introduction 1. Introduction
This document defines a generic data model for the 6TiSCH Operation This document defines a generic data model for the 6TiSCH Operation
Sublayer (6top), using the YANG data modeling language defined in Sublayer (6top), using the YANG data modeling language defined in
[RFC6020]. This data model can be used for future network management [RFC6020]. This data model can be used for future network management
solutions defined by the 6TiSCH working group. This document also solutions defined by the 6TiSCH working group. This data model gives
defines a list commands internal to the 6top sublayer. This data access to metrics (e.g. cell state), TSCH configuration and control
model gives access to metrics (e.g. cell state), TSCH configuration procedures, and support for the different scheduling mechanisms
and control procedures, and support for the different scheduling described in [I-D.ietf-6tisch-architecture]. The 6top sublayer
mechanisms described in [I-D.ietf-6tisch-architecture]. The 6top addresses the set of management information and functionalities
sublayer addresses the set of management information and described in [I-D.ietf-6tisch-tsch].
functionalities described in [I-D.ietf-6tisch-tsch].
For example, network formation in a TSCH network is handled by the For example, network formation in a TSCH network is handled by the
use of Enhanced Beacons (EB). EBs include information for joining use of Enhanced Beacons (EB). EBs include information for joining
nodes to be able to synchronize and set up an initial network nodes to be able to synchronize and set up an initial network
topology. However, [IEEE802154e] does not specify how the period of topology. However, [IEEE802154e] does not specify how the period of
EBs is configured, nor the rules for a node to select a particular EBs is configured, nor the rules for a node to select a particular
node to join. 6top offers a set of commands so control mechanisms can node to join. 6top offers a set of commands so control mechanisms
be introduced on top of TSCH to configure nodes to join a specific can be introduced on top of TSCH to configure nodes to join a
node and obtain a unique 16-bit identifier from the network. Once a specific node and obtain a unique 16-bit identifier from the network.
network is formed, 6top maintains the network's health, allowing for Once a network is formed, 6top maintains the network's health,
nodes to stay synchronized. It supplies mechanisms to manage each allowing for nodes to stay synchronized. It supplies mechanisms to
node's time source neighbor and configure the EB interval. Network manage each node's time source neighbor and configure the EB
layers running on top of 6top take advantage of the TSCH MAC layer interval. Network layers running on top of 6top take advantage of
information so routing metrics, topological information, energy the TSCH MAC layer information so routing metrics, topological
consumption and latency requirements can be adjusted to TSCH, and information, energy consumption and latency requirements can be
adapted to application requirements. adjusted to TSCH, and adapted to application requirements.
TSCH requires a mechanism to manage its schedule; 6top provides a set TSCH requires a mechanism to manage its schedule; 6top provides a set
of commands for upper layers to set up specific schedules, either of commands for upper layers to set up specific schedules, either
explicitly by detailing specific cell information, or by allowing explicitly by detailing specific cell information, or by allowing
6top to establish a schedule given a bandwidth or latency 6top to establish a schedule given a bandwidth or latency
requirement. 6top is designed to enable decentralized, centralized or requirement. 6top is designed to enable decentralized, centralized or
hybrid scheduling solutions. 6top enables internal TSCH queuing hybrid scheduling solutions. 6top enables internal TSCH queuing
configuration, size of buffers, packet priorities, transmission configuration, size of buffers, packet priorities, transmission
failure behavior, and defines mechanisms to encrypt and authenticate failure behavior, and defines mechanisms to encrypt and authenticate
MAC slotframes. MAC slotframes.
skipping to change at page 4, line 36 skipping to change at page 4, line 36
requires an extra flag to all cells in the TSCH schedule, as detailed requires an extra flag to all cells in the TSCH schedule, as detailed
in Section 3.1. in Section 3.1.
When a higher layer gives 6top a 6LoWPAN packet for transmission, When a higher layer gives 6top a 6LoWPAN packet for transmission,
6top maps it to the appropriate outgoing priority-based queue, as 6top maps it to the appropriate outgoing priority-based queue, as
detailed in Section 3.2. detailed in Section 3.2.
Section 4 contains a generic data model for the 6top sublayer, Section 4 contains a generic data model for the 6top sublayer,
described in the YANG data modeling language. described in the YANG data modeling language.
The commands of the management and data interfaces are listed in
Section 5. This set of commands is designed to support
decentralized, centralized and hybrid scheduling solutions.
3.1. Cell Model 3.1. Cell Model
[IEEE802154e] defines a set of options attached to each cell. A cell [IEEE802154e] defines a set of options attached to each cell. A cell
can be a Transmit cell, a Receive cell, a Shared cell or a can be a Transmit cell, a Receive cell, a Shared cell or a
Timekeeping cell. These options are not exclusive, as a cell can be Timekeeping cell. These options are not exclusive, as a cell can be
qualified with more than one of them. The MLME-SET-LINK.request qualified with more than one of them. The MLME-SET-LINK.request
command defined in [IEEE802154e] uses a linkOptions bitmap to specify command defined in [IEEE802154e] uses a linkOptions bitmap to specify
the options of a cell. Acceptable values are: the options of a cell. Acceptable values are:
b0 = Transmit b0 = Transmit
skipping to change at page 7, line 43 skipping to change at page 7, line 43
Figure 2 Figure 2
In Figure 2, Qi represents a queue, which is either broadcast or In Figure 2, Qi represents a queue, which is either broadcast or
unicast, and has an assigned priority. The number of queues is unicast, and has an assigned priority. The number of queues is
configurable. The relationship between queues and tracks is configurable. The relationship between queues and tracks is
configurable. For example, for a given queue, only one specific configurable. For example, for a given queue, only one specific
track can be used, all of the tracks can be used, or a subset of the track can be used, all of the tracks can be used, or a subset of the
tracks can be used. tracks can be used.
When 6top receives a packet to transmit through a Send.data command When 6top receives a packet to transmit, the I-MUX module selects a
(Section 5), the I-MUX module selects a queue in which to insert it. queue in which to insert it. If the packet's destination address is
If the packet's destination address is a unicast (resp. broadcast) a unicast (resp. broadcast) address, it will be inserted into a
address, it will be inserted into a unicast (resp. broadcast) queue. unicast (resp. broadcast) queue.
The MUX module is invoked at each scheduled transmit cell by TSCH. The MUX module is invoked at each scheduled transmit cell by TSCH.
When invoked, the MUX module goes through the queues, looking for the When invoked, the MUX module goes through the queues, looking for the
best matching frame to send. If it finds a frame, it hands it over best matching frame to send. If it finds a frame, it hands it over
to TSCH for transmission. If the next active cell is a broadcast to TSCH for transmission. If the next active cell is a broadcast
cell, it selects a fragment only from broadcast queues. cell, it selects a fragment only from broadcast queues.
How the MUX module selects the best frame is configurable. The How the MUX module selects the best frame is configurable. The
following rules are a typical example: following rules are a typical example:
skipping to change at page 8, line 32 skipping to change at page 8, line 32
This section presents the generic data model of the 6top sublayer, This section presents the generic data model of the 6top sublayer,
using the YANG data modeling langage. This data model can be used using the YANG data modeling langage. This data model can be used
for future network management solutions defined by the 6TiSCH working for future network management solutions defined by the 6TiSCH working
group. The data model consists of the MIB (management information group. The data model consists of the MIB (management information
base) defined in 6top, and part of the PIB (personal area network base) defined in 6top, and part of the PIB (personal area network
information base) defined in [IEEE802154e] and [IEEE802154]. information base) defined in [IEEE802154e] and [IEEE802154].
4.1. YANG model of the 6top MIB 4.1. YANG model of the 6top MIB
typedef nodeaddresstype { module ietf-6top {
type uint64;
description
"The type to store node address. It can be 64bits EUI address;
or the short address defined by 6top, constrained by TSCH
macNodeAddress size, 2-octets. If using TSCH as MAC, the
higher 6-octets should be filled with 0, and lowest 2-octets
is neighbor short address";
}
list CellList { namespace
key "CellID"; "urn:ietf:params:xml:ns:yang:ietf-6top";
min-elements 1; prefix
unique "SlotframeID SlotOffset ChannelOffset"; "ietf";
description
"List of scheduled cells of a node with all of its neighbors,
in all of its slotframes.";
leaf CellID { contact
type uint16; "WG Web: <http://tools.ietf.org/wg/6tisch/>
description WG List: <mailto:6tisch@ietf.org>
"Equal to Linkhandle in the linkTable of TSCH";
reference
"IEEE802154e";
}
leaf SlotframeID {
type leafref {
path "/SlotframeList/SlotframeID";
}
description
"SlotframeID, one in SlotframeList, indicates the slotframe
the cell belongs to.";
reference
"IEEE802154e";
}
leaf SlotOffset {
type uint16;
description
"Defined in IEEE802154e.";
reference
"IEEE802154e";
}
leaf ChannelOffset {
type uint16;
description
"Defined in IEEE802154e. Value range is 0..15";
reference
"IEEE802154e";
}
leaf LinkOption {
type bits {
bit Transmit {
position 0;
}
bit Receive {
position 1;
}
bit Share {
position 2;
}
bit Timekeeping {
position 3;
}
bit Reserved1 {
position 4;
}
bit Reserved2 {
position 5;
} WG Chair: Pascal Thubert
bit Reserved3 { <mailto:pthubert@cisco.com>
position 6;
}
bit Reserved4 {
position 7;
}
}
description
"Defined in IEEE802154e.";
reference
"IEEE802154e";
}
leaf LinkType {
type enumeration {
enum NORMAL;
enum ADVERTISING;
}
description
"Defined in IEEE802154";
reference
"IEEE802154";
}
leaf CellType {
type enumeration {
enum SOFT;
enum HARD;
}
description
"Defined in 6top";
}
leaf NodeAddress {
type nodeaddresstype;
description
"specify the target node address.";
}
leaf TrackID {
type leafref {
path "/TrackList/TrackId";
}
description
"A TrackID is one in the TrackList, pointing to a tuple
(TrackOwnerAddr,InstanceID) , where TrackOwnerAddr is the
address of the node which initializes the process of
creating the track, i.e., the owner of the track; and
InstanceID is an instance identifier given by the owner of
the track.";
}
container Statistic {
leaf NumOfStatistic {
mandatory true;
type uint8;
description
"Number of statistics collected on the cell";
}
list MeasureList {
key "StatisticsMetricsID";
min-elements 1;
leaf StatisticsMetricsID{ WG Chair: Thomas Watteyne
type leafref { <mailto:thomas.watteyne@inria.fr>
path "/StatisticsMetricsList/StatisticsMetricsID";
}
description
"An index of StatisticsMetricList, which defines how
to collect data and get the statistice value";
}
leaf StatisticsValue{
type uint16;
config false;
description
"updated by 6top according to the statistics method
specified by StatisticsMetricsID";
}
}
}
}
list SlotframeList { Editor: Qin Wang
key "SlotframeID"; <mailto:wangqin@ies.ustb.edu.cn>";
min-elements 1;
description
"List of all of the slotframes used by the node.";
leaf SlotframeID { description
mandatory true; "Data model for the 6top sublayer";
type uint8; organization
description "IETF 6TiSCH Working Group";
"Equal to SlotframeHandle defined in TSCH"; revision 2015-06-16 {
reference description
"IEEE802154e"; "v4 revision.";
} reference
leaf NumOfSlots { "draft-ietf-6tisch-6top-interface";
mandatory true; }
type uint16 {
range "1..max"; typedef nodeaddresstype {
} type uint64;
description description
"indicates how many timeslots in the slotframe"; "The type to store a node's address. It can be a 64-bit EUI;
} or the short address defined by 6top, constrained by TSCH
macNodeAddress size, 2-octets. If using TSCH as MAC, the
higher 6 octets should be filled with 0, and lowest 2-octets
is neighbor short address";
}
typedef asntype {
type string {
length "0..5";
} }
description
"The type to store ASN. String of 5 bytes";
}
list Version { list Version {
key "Version"; key "major minor";
description description
"Provides a unique identification for the set of resources "Provides a unique identification for the set of resources
defined in this draft. Provides a major and minor version defined in this draft. Provides a major and minor version
number that may be accessible independently"; number that may be accessible independently";
leaf major { leaf major {
type uint8; type uint8;
} description
leaf minor { "major revision number";
type uint8; }
} leaf minor {
} type uint8;
description
"minor revision number";
}
}
list SlotframeList {
key "SlotframeID";
min-elements 1;
description
"List of all of the slotframes used by the node.";
list MonitoringStatusList { leaf SlotframeID {
key "MonitoringStatusID"; type uint8;
min-elements 1; mandatory true;
unique "SlotframeID NodeAddress"; description
description "Equal to SlotframeHandle defined in TSCH";
"List of the monitoring configuration and results per reference
slotframe and neighbor. Basically, it is used for Monitoring "IEEE802154e";
Function of 6top to re-allocate softcells or initial the }
softcell negotiation process to increase/decrease number of leaf NumOfSlots {
softcells. Upper layer can use it also."; mandatory true;
type uint16 {
range "1..max";
}
description
"indicates how many timeslots in the slotframe";
}
}
leaf MonitoringStatusID { list CellList {
type uint16; key "CellID";
} min-elements 1;
leaf SlotframeID { unique "SlotframeID SlotOffset ChannelOffset";
type leafref { description
path "/SlotframeList/SlotframeID"; "List of scheduled cells of a node with all of its neighbors,
} in all of its slotframes.";
description
"SlotframeID, one in SlotframeList, indicates the slotframe leaf CellID {
being monitored"; type uint16;
reference description
"IEEE802154e"; "Equal to Linkhandle in the linkTable of TSCH";
} reference
leaf NodeAddress { "IEEE802154e";
type nodeaddresstype; }
} leaf SlotframeID {
leaf EnforcePolicy { type leafref {
type enumeration { path "/SlotframeList/SlotframeID";
enum DISABLE; }
enum BESTEFFORT; description
enum STRICT; "SlotframeID, one in SlotframeList, indicates the slotframe
enum OVERPROVISION; the cell belongs to.";
}
default DISABLE; reference
description "IEEE802154e";
"Currently enforced QoS policy. DISABLE-no QoS; }
BESTEFFORT- best effort policy is used; STRICT- Strict leaf SlotOffset {
Priority Queueing; OVERPROVISION- cell overprovision"; type uint16;
description
"Defined in IEEE802154e.";
reference
"IEEE802154e";
}
leaf ChannelOffset {
type uint16;
description
"Defined in IEEE802154e. Value range is 0..15";
reference
"IEEE802154e";
}
leaf LinkOption {
type bits {
bit Transmit {
position 0;
} }
leaf AllocatedHard { bit Receive {
type uint16; position 1;
config false;
description
"Number of hard cells allocated";
} }
leaf AllocatedSoft { bit Share {
type uint16; position 2;
config false;
description
"Number of soft cells allocated";
} }
leaf OverProvision { bit Timekeeping {
type uint16; position 3;
config false;
must "../EnforcePolicy < > DISABLE ./";
description
"Overprovisioned cells. 0 if EnforcePolicy is
DISABLE";
} }
leaf QoS { }
type uint16; description
config false; "Defined in IEEE802154e.";
description reference
"Current QoS including overprovisioned cells, i.e. the "IEEE802154e";
bandwidth obtained including the overprovisioned cells."; }
leaf LinkType {
type enumeration {
enum NORMAL;
enum ADVERTISING;
}
description
"Defined in IEEE802154";
reference
"IEEE802154";
}
leaf CellType {
type enumeration {
enum SOFT;
enum HARD;
}
description
"Defined in 6top";
}
leaf NodeAddress {
type nodeaddresstype;
description
"specify the target node address.";
}
leaf TrackID {
type leafref {
path "/TrackList/TrackId";
}
description
"A TrackID is one in the TrackList, pointing to a tuple
(TrackOwnerAddr,InstanceID) , where TrackOwnerAddr is the
address of the node which initializes the process of
creating the track, i.e., the owner of the track; and
InstanceID is an instance identifier given by the owner of
the track.";
}
container Statistic {
description
"The Statistic container";
leaf NumOfStatistic {
mandatory true;
type uint8;
description
"Number of statistics collected on the cell";
}
list MeasureList {
key "StatisticsMetricsID";
min-elements 1;
description
"The list of measures.";
leaf StatisticsMetricsID{
type leafref {
path "/StatisticsMetricsList/StatisticsMetricsID";
}
description
"An index of StatisticsMetricList, which defines how
to collect data and get the statistic value";
} }
leaf NQoS { leaf StatisticsValue{
type uint16; type uint16;
config false; config false;
description description
"Real QoS without over provisioned cells, i.e. the actual "updated by 6top according to the statistics method
bandwidth without taking into account the overprovisioned specified by StatisticsMetricsID";
cells.";
} }
} }
}
}
list StatisticsMetricsList { list MonitoringStatusList {
key "StatisticsMetricsID"; key "MonitoringStatusID";
min-elements 1; min-elements 1;
unique "SlotframeID SlotOffset ChannelOffset NodeAddress"; unique "SlotframeID NodeAddress";
description description
"List of Statistics Metrics used in the node."; "List of the monitoring configuration and results per
slotframe and neighbor. Basically, it is used for Monitoring
Function of 6top to re-allocate softcells or initial the
softcell negotiation process to increase/decrease number of
softcells. Upper layer can use it also.";
leaf StatisticsMetricsID { leaf MonitoringStatusID {
type uint16; type uint16;
} description
leaf SlotframeID { "The monitoring status ID.";
type leafref { }
path "/SlotframeList/SlotframeID"; leaf SlotframeID {
} type leafref {
description path "/SlotframeList/SlotframeID";
"SlotframeID, one in SlotframeList, specifies the slotframe to }
which the statistics metrics applies to. If empty, applies to description
all slotframes"; "SlotframeID, one in SlotframeList, indicates the slotframe
reference being monitored";
"IEEE802154e"; reference
} "IEEE802154e";
leaf SlotOffset { }
type uint16; leaf NodeAddress {
type nodeaddresstype;
description description
"Specific slotOffset to which the statistics metrics applies "The lead node address";
to. If empty, applies to all timeslots"; }
reference leaf EnforcePolicy {
"IEEE802154e"; type enumeration {
enum DISABLE;
enum BESTEFFORT;
enum STRICT;
enum OVERPROVISION;
}
default DISABLE;
description
"Currently enforced QoS policy. DISABLE-no QoS;
BESTEFFORT- best effort policy is used; STRICT- Strict
Priority Queueing; OVERPROVISION- cell overprovision";
}
leaf AllocatedHard {
type uint16;
config false;
description
"Number of hard cells allocated";
}
leaf AllocatedSoft {
type uint16;
config false;
description
"Number of soft cells allocated";
}
leaf OverProvision {
type uint16;
config false;
must "../EnforcePolicy <> DISABLE ./";
description
"Overprovisioned cells. 0 if EnforcePolicy is
DISABLE";
}
leaf QoS {
type uint16;
config false;
description
"Current QoS including overprovisioned cells, i.e. the
bandwidth obtained including the overprovisioned cells.";
}
leaf NQoS {
type uint16;
config false;
description
"Real QoS without over provisioned cells, i.e. the actual
bandwidth without taking into account the overprovisioned
cells.";
}
}
} list StatisticsMetricsList {
leaf ChannelOffset { key "StatisticsMetricsID";
type uint16; min-elements 1;
description unique "SlotframeID SlotOffset ChannelOffset NodeAddress";
"Specific channelOffset to which the statistics metrics applies description
to. If empty, applies to all channels"; "List of Statistics Metrics used in the node.";
reference
"IEEE802154e";
}
leaf NodeAddress { leaf StatisticsMetricsID {
type nodeaddresstype; type uint16;
description description
"If NodeAddress is empty, applies to all neighbor nodes."; "The metrics ID for statistics.";
} }
leaf SlotframeID {
type leafref {
path "/SlotframeList/SlotframeID";
}
description
"SlotframeID, one in SlotframeList, specifies the
slotframe to which the statistics metrics applies to.
If empty, applies to all slotframes";
reference
"IEEE802154e";
}
leaf SlotOffset {
type uint16;
description
"Specific slotOffset to which the statistics metrics applies
to. If empty, applies to all timeslots";
reference
"IEEE802154e";
}
leaf ChannelOffset {
type uint16;
description
"Specific channelOffset to which the statistics metrics
applies to. If empty, applies to all channels";
reference
"IEEE802154e";
}
leaf Metrics { leaf NodeAddress {
type enumeration { type nodeaddresstype;
enum macCounterOctets description
enum macRetryCount "If NodeAddress is empty, applies to all neighbor nodes.";
enum macMultipleRetryCount }
enum macTXFailCount
enum macTXSuccessCount
enum macFCSErrorCount
enum macSecurityFailure
enum macDuplicateFrameCount
enum macRXSuccessCount
enum macNACKcount
enum PDR;
enum ETX;
enum RSSI;
enum LQI;
}
description
"The metric to be monitored. Include those provided by underlying
IEEE 802.15.4e TSCH -- see table 4i (2012).
PDR,ETX,RSSI,LQI are maintained by 6top. ";
}
leaf Window {
type uint16;
description
"measurement period, in Number of the slotframe size";
}
leaf Enable {
type enumeration {
enum DISABLE;
enum ENABLE;
}
default DISABLE;
description
"indicates the StatisticsMetric is active or not";
}
}
list EBList {
key "EbID";
min-elements 1;
description
"List of information related with the EBs used by the node";
leaf EbID { leaf Metrics {
type uint8; type enumeration {
} enum macCounterOctets;
leaf CellID { enum macRetryCount;
type leafref { enum macMultipleRetryCount;
path "/CellList/CellID"; enum macTXFailCount;
} enum macTXSuccessCount;
description enum macFCSErrorCount;
"CellID, one in CellList, indicates the cell used to send enum macSecurityFailure;
EB"; enum macDuplicateFrameCount;
} enum macRXSuccessCount;
leaf Peroid { enum macNACKcount;
type uint16; enum PDR;
description enum ETX;
"The EBs period, in seconds, indicates the interval between enum RSSI;
two EB sendings"; enum LQI;
} }
leaf Expiration { description
type enumeration { "The metric to be monitored. Include those provided by
enum NEVERSTOP; underlying IEEE 802.15.4e TSCH -- see table 4i (2012).
enum EXPIRATION; PDR,ETX,RSSI,LQI are maintained by 6top. ";
} }
description leaf Window {
"NEVERSTOP- the period of the EB never stops; EXPIRATION- type uint16;
when the Period arrives, the EB will stop."; description
} "measurement period, in Number of the slotframe size";
leaf Priority { }
type uint8; leaf Enable {
description type enumeration {
"The joining priority model that will be used for enum DISABLE;
advertisements. Joining priority MAY be for example enum ENABLE;
SAME_AS_PARENT, RANDOM, BEST_PARENT+1 or }
DAGRANK(rank)."; default DISABLE;
} description
} "indicates the StatisticsMetric is active or not";
}
}
container TimeSource { list EBList {
description key "EbID";
"specify the timesource selection policy and some relative min-elements 1;
statistics. "; description
"List of information related with the EBs used by the node";
leaf policy { leaf EbID {
type enumeration { type uint8;
enum ALLPARENT; description
enum BESTCONNECTED; "The EB id.";
enum LOWESTJOINPRIORITY;
}
default LOWESTJOINPRIORITY;
description
"indicates the policy to choose timesource. ALLPARENT- choose
from all parents; BESTCONNECTED- choose the best-connected
node; LOWESTJOINPRIORITY- choose the node with lowest priority
in its EB.";
}
leaf NodeAddress { }
type nodeaddresstype; leaf CellID {
description type leafref {
path "/CellList/CellID";
}
description
"CellID, one in CellList, indicates the cell used
to send EB";
}
leaf Peroid {
type uint16;
description
"The EBs period, in seconds, indicates the interval between
two EB sendings";
}
leaf Expiration {
type enumeration {
enum NEVERSTOP;
enum EXPIRATION;
}
description
"NEVERSTOP- the period of the EB never stops; EXPIRATION-
when the Period arrives, the EB will stop.";
}
leaf Priority {
type uint8;
description
"The joining priority model that will be used for
advertisements. Joining priority MAY be for example
SAME_AS_PARENT, RANDOM, BEST_PARENT+1 or
DAGRANK(rank).";
}
}
container TimeSource {
description
"specify the timesource selection policy and some relative
statistics. ";
leaf policy {
type enumeration {
enum ALLPARENT;
enum BESTCONNECTED;
enum LOWESTJOINPRIORITY;
}
default LOWESTJOINPRIORITY;
description
"indicates the policy to choose timesource.
ALLPARENT- choose from all parents;
BESTCONNECTED- choose the best-connected node;
LOWESTJOINPRIORITY- choose the node with lowest
priority in its EB.";
}
leaf NodeAddress {
type nodeaddresstype;
description
"Specifies the address of selected time source neighbors."; "Specifies the address of selected time source neighbors.";
}
leaf MinTimeCorrection { }
type uint16; leaf MinTimeCorrection {
config false; type uint16;
description config false;
description
"measured in microsecond"; "measured in microsecond";
} }
leaf MaxTimeCorrection { leaf MaxTimeCorrection {
type uint16; type uint16;
config false; config false;
description description
"measured in microsecond"; "measured in microsecond";
} }
leaf AveTimeCorrection { leaf AveTimeCorrection {
type uint16; type uint16;
config false; config false;
description description
"measured and computed in microsecond"; "measured and computed in microsecond";
}
}
typedef asntype {
description
"The type to store ASN. String of 5 bytes";
type string {
length "0..5";
}
} }
}
list NeighborList { list NeighborList {
key "NodeAddress"; key "NodeAddress";
description description
"statistics per communication link. "; "statistics per communication link. ";
leaf NodeAddress {
leaf NodeAddress { type nodeaddresstype;
type nodeaddresstype; description
description "Specifies the address of the neighbor.";
"Specifies the address of the neighbor."; }
} leaf RSSI {
type uint8;
leaf RSSI { config false;
type uint8; description
config false; "The received signal strength";
description
"The received signal strength";
}
leaf LinkQuality {
type uint8;
config false;
description
"The LQI metric";
}
leaf ASN {
type asntype;
config false;
description
"The 5 ASN bytes, indicates the most recent timeslot when a
packet from the neighbor was received";
}
} }
leaf LinkQuality {
type uint8;
config false;
description
"The LQI metric";
}
leaf ASN {
type asntype;
config false;
description
"The 5 ASN bytes, indicates the most recent
timeslot when a packet from the neighbor was received";
list QueueList { }
key "QueueId"; }
min-elements 1;
description
"List of Queues, including configuration and statistics.";
leaf QueueId { list QueueList {
type uint8; key "QueueId";
description min-elements 1;
"Queue Identifier"; description
} "List of Queues, including configuration and statistics.";
leaf TxqLength { leaf QueueId {
type uint8; type uint8;
description description
"The TX queue length in number of packets"; "Queue Identifier";
} }
leaf RxqLength { leaf TxqLength {
type uint8; type uint8;
description description
"The RX queue length in number of packets"; "The TX queue length in number of packets";
} }
leaf NumrTx { leaf RxqLength {
type uint8; type uint8;
description description
"Number of allowed retransmissions."; "The RX queue length in number of packets";
} }
leaf Age { leaf NumrTx {
type uint16; type uint8;
description description
"In seconds. Discard packet according to its age "Number of allowed retransmissions.";
on the queue. 0 if no discards are allowed."; }
} leaf Age {
leaf RTXbackoff { type uint16;
type uint8; description
description "In seconds. Discard packet according to its age
"retransmission backoff in number of slotframes. on the queue. 0 if no discards are allowed.";
0 if next available timeslot wants to be used."; }
} leaf RTXbackoff {
leaf StatsWindow { type uint8;
type uint16; description
description "retransmission backoff in number of slotframes.
"In second, window of time used to compute stats."; 0 if next available timeslot wants to be used.";
} }
leaf QueuePriority { leaf StatsWindow {
type uint8; type uint16;
description description
"The priority for this queue."; "In second, window of time used to compute stats.";
} }
list TrackIds { leaf QueuePriority {
key "TrackID"; type uint8;
leaf TrackID{ description
type leafref { "The priority for this queue.";
path "/TrackList/TrackId"; }
} list TrackIds {
description key "TrackID";
"The TrackID, one in TrackList, indicates the Track is leaf TrackID{
associated with the Queue."; type leafref {
} path "/TrackList/TrackId";
} }
leaf MinLenTXQueue { description
type uint8; "The TrackID, one in TrackList, indicates the Track is
config false; associated with the Queue.";
description }
"Statistics, lowest TX queue length registered in the window."; description
} "The track IDs.";
leaf MaxLenTXQueue { }
type uint8; leaf MinLenTXQueue {
config false; type uint8;
description config false;
"Statistics, largest TX queue length registered in the description
window."; "Statistics, lowest TX queue length registered
} in the window.";
leaf AvgLenTXQueue { }
type uint8; leaf MaxLenTXQueue {
config false; type uint8;
description config false;
"Statistics, avg TX queue length registered in the window."; description
} "Statistics, largest TX queue length registered
leaf MinLenRXQueue { in the window.";
type uint8; }
config false; leaf AvgLenTXQueue {
description type uint8;
"Statistics, lowest RX queue length registered in the window."; config false;
} description
leaf MaxLenRXQueue { "Statistics, avg TX queue length registered
type uint8;
config false;
description
"Statistics, largest RX queue len registered in the window.";
}
leaf AvgLenRXQueue {
type uint8;
config false;
description
"Statistics, avg RX queue length registered in the window.";
}
leaf MinRetransmissions {
type uint8;
config false;
description
"Statistics, lowest number of retransmissions registered in
the window.";
}
leaf MaxRetransmissions {
type uint8;
config false;
description
"Statistics, largest number of retransmissions registered
in the window.";
}
leaf AvgRetransmissions {
type uint8;
config false;
description
"Statistics, average number of retransmissions registered
in the window."; in the window.";
} }
leaf MinPacketAge { leaf MinLenRXQueue {
type uint16; type uint8;
config false; config false;
description description
"Statistics, in seconds, minimum time a packet stayed in "Statistics, lowest RX queue length registered
the queue during the observed window."; in the window.";
} }
leaf MaxPacketAge { leaf MaxLenRXQueue {
type uint16; type uint8;
config false; config false;
description description
"Statistics, in seconds, maximum time a packet stayed "Statistics, largest RX queue len registered
in the queue during the observed window."; in the window.";
} }
leaf AvgPacketAge { leaf AvgLenRXQueue {
type uint16; type uint8;
config false; config false;
description description
"Statistics, in seconds, average time a packet stayed in "Statistics, avg RX queue length registered
the queue during the observed window."; in the window.";
} }
leaf MinBackoff { leaf MinRetransmissions {
type uint8; type uint8;
config false; config false;
description description
"Statistics, in number of slotframes, minimum Backoff "Statistics, lowest number of retransmissions registered
for a packet in the queue during the observed window."; in the window.";
} }
leaf MaxBackoff { leaf MaxRetransmissions {
type uint8; type uint8;
config false; config false;
description description
"Statistics, in number of slotframes, maximum Backoff "Statistics, largest number of retransmissions registered
for a packet in the queue during the observed window."; in the window.";
}
leaf AvgRetransmissions {
type uint8;
config false;
description
"Statistics, average number of retransmissions registered
in the window.";
}
leaf MinPacketAge {
type uint16;
config false;
description
"Statistics, in seconds, minimum time a packet stayed in
the queue during the observed window.";
}
leaf MaxPacketAge {
type uint16;
config false;
description
"Statistics, in seconds, maximum time a packet stayed
in the queue during the observed window.";
}
leaf AvgPacketAge {
type uint16;
config false;
description
"Statistics, in seconds, average time a packet stayed in
the queue during the observed window.";
}
leaf MinBackoff {
type uint8;
config false;
description
"Statistics, in number of slotframes, minimum Backoff
for a packet in the queue during the observed window.";
}
leaf MaxBackoff {
type uint8;
config false;
description
"Statistics, in number of slotframes, maximum Backoff
for a packet in the queue during the observed window.";
}
leaf AvgBackoff {
type uint8;
config false;
description
"Statistics, in number of slotframes, average Backoff
for a packet in the queue during the observed window.";
}
}
} list LabelSwitchList {
leaf AvgBackoff { key "LabelSwitchID";
type uint8; description
config false; "List of Label switch' configuration on the node";
description
"Statistics, in number of slotframes, average Backoff
for a packet in the queue during the observed window.";
}
}
list LabelSwitchList {
key "LabelSwitchID";
description
"List of Label switch' configuration on the node";
leaf LabelSwitchID { leaf LabelSwitchID {
type uint16; type uint16;
} description
list InputCellIds { "The label switch ID.";
key "CellID";
leaf CellID{
type leafref {
path "/CellList/CellID";
}
description
"The CellID, indicates the Rx cell on which the packet will
come in.";
}
}
list OutputCellIds {
key "CellID";
leaf CellID{
type leafref {
path "/CellList/CellID";
}
description
"The CellID, indicates the Tx cell on which the received
packet should be sent out.";
}
}
leaf LoadBalancingPolicy {
type enumeration {
enum ROUNDROBIN;
enum OTHER;
}
description
"The load-balancing policy. ROUNDROBIN- Round robin algorithm
is used for forwarding scheduling.";
}
}
list TrackList {
key "TrackId";
min-elements 1;
unique "TrackOwnerAddr InstanceID";
description
"List of the tracks through the node. At lease the best effort
track is existing";
leaf TrackId { }
type uint16; list InputCellIds {
description key "CellID";
"Track Identifier, named locally. It is used to refer to the leaf CellID{
tuple (TrackOwnerAddr, InstanceID)."; type leafref {
} path "/CellList/CellID";
leaf TrackOwnerAddr { }
type uint64;
description description
"The address of the node which initializes the process of "The CellID, indicates the Rx cell on which the packet
creating the track, i.e., the owner of the track;"; will come in.";
} }
leaf InstanceID { description
type uint16; "The input cell IDs.";
}
list OutputCellIds {
key "CellID";
leaf CellID{
type leafref {
path "/CellList/CellID";
}
description description
"InstanceID is an instance identifier given by the owner of "The CellID, indicates the Tx cell on which the received
the track. InstanceID comes from upper layer; InstanceID could packet should be sent out.";
for example be the local instance ID defined in RPL."; }
} description
} "The output cell IDs.";
list ChunkList {
key "ChunkId";
description
"List of the chunks assigned to the node.";
leaf ChunkId{ }
type uint16; leaf LoadBalancingPolicy {
description type enumeration {
"The identifier of a chunk"; enum ROUNDROBIN;
} enum OTHER;
leaf SlotframeId{ }
type leafref { description
path "/SlotframeList/SlotframeID"; "The load-balancing policy.
} ROUNDROBIN- Round Robin algorithm is used for
description forwarding scheduling.";
"SlotframeID, one in SlotframeList, indicates the }
slotframe to which the chunk belongs"; }
}
leaf SlotBase {
type uint16;
description
"the base slotOffset of the chunk in the slotframe";
}
leaf SlotStep {
type uint8;
description
"the slot incremental of the chunk";
}
leaf ChannelBase {
type uint16;
description
"the base channelOffset of the chunk";
}
leaf ChannelStep {
type uint8;
description
"the channel incremental of the chunk";
}
leaf ChunkSize {
type uint8;
description
"the number of cells in the chunk. The chunk is the set
of (slotOffset(i), channelOffset(i)),
i=0..Chunksize-1,
slotOffset(i)= (slotBase + i * slotStep) % slotframeLen,
channelOffset(i) = (channelBase + i * channelStep) % 16";
}
}
list ChunkCellList {
key "SlotOffset ChannelOffset";
description
"List of all of the cells assigned to the node via the
assignment of chunks.";
leaf SlotOffset{ list TrackList {
type uint16; key "TrackId";
description min-elements 1;
"The slotoffset of a cell which belongs to a Chunk"; unique "TrackOwnerAddr InstanceID";
} description
leaf ChannelOffset{ "List of the tracks through the node. At lease the best effort
type uint16; track is existing";
description
"The channeloffset of a cell which belongs to a chunk."; leaf TrackId {
} type uint16;
leaf ChunkId { description
type leafref{ "Track Identifier, named locally. It is used to refer to the
path "/ChunkList/ChunkId"; tuple (TrackOwnerAddr, InstanceID).";
} }
description leaf TrackOwnerAddr {
"Identifier of the chunk the cell belongs to"; type uint64;
} description
leaf CellID{ "The address of the node which initializes the process of
type leafref { creating the track, i.e., the owner of the track;";
path "/CellList/CellID"; }
} leaf InstanceID {
description type uint16;
"Initial value of CellID is 0xFFFF. When the cell is description
scheduled, the value of CellID is same as that in "InstanceID is an instance identifier given by
CellList"; the owner of the track. InstanceID comes from
} upper layer; InstanceID could for example be
leaf ChunkCellStatus { the local instance ID defined in RPL.";
type enumeration { }
enum UNSCHEDULED;
enum SCHEDULED;
}
}
} }
4.2. YANG model of the IEEE802.15.4 PIB list ChunkList {
key "ChunkId";
description
"List of the chunks assigned to the node.";
This section describes the YANG model of the part of PIB leaf ChunkId{
([IEEE802154] and [IEEE802154e]) used by 6top, such as security type uint16;
related attributes, TSCH related attributes. This part of data will description
be accessed through the MLME-GET and MLME-SET primitive [IEEE802154] "The identifier of a chunk";
directly, instead of using 6top comannds. }
leaf SlotframeId{
type leafref {
path "/SlotframeList/SlotframeID";
}
description
"SlotframeID, one in SlotframeList, indicates the
slotframe to which the chunk belongs";
}
leaf SlotBase {
type uint16;
description
"the base slotOffset of the chunk in the slotframe";
}
leaf SlotStep {
type uint8;
description
"the slot incremental of the chunk";
}
leaf ChannelBase {
type uint16;
description
"the base channelOffset of the chunk";
}
leaf ChannelStep {
type uint8;
description
"the channel incremental of the chunk";
}
leaf ChunkSize {
type uint8;
description
"the number of cells in the chunk. The chunk is the set
of (slotOffset(i), channelOffset(i)),
i=0..Chunksize-1,
slotOffset(i)= (slotBase + i * slotStep) % slotframeLen,
channelOffset(i) = (channelBase + i * channelStep) % 16";
}
}
TODO the security related attributes will be added after 6TiSCH WG list ChunkCellList {
has consensus on the security scheme of 6top key "SlotOffset ChannelOffset";
description
"List of all of the cells assigned to the node via the
assignment of chunks.";
container TSCHSpecificPIBAttributes { leaf SlotOffset{
description type uint16;
"TSCH specific MAC PIB attributes."; description
reference "The slotoffset of a cell which belongs to a Chunk";
"table 52b in IEEE802.15.4e-2012."; }
leaf ChannelOffset{
type uint16;
description
"The channeloffset of a cell which belongs to a chunk.";
}
leaf ChunkId {
type leafref{
path "/ChunkList/ChunkId";
}
description
"Identifier of the chunk the cell belongs to";
}
leaf CellID{
type leafref {
path "/CellList/CellID";
}
description
"Initial value of CellID is 0xFFFF. When the cell is
scheduled, the value of CellID is same as that in
CellList";
}
leaf ChunkCellStatus {
type enumeration {
enum UNSCHEDULED;
enum SCHEDULED;
}
description
"The Cell status in a Chunk.";
leaf macMinBE { }
type uint8; }
description
"defined in Table 52b of IEEE802.15.4e-2012,
The minimum value of the backoff exponent (BE) in the
CSMA-CA algorithm or the TSCH-CA algorithm. default:
3-CSMA-CA, 1-TSCH-CA";
}
leaf macMaxBE {
type uint8;
description
"defined in Table 52b of IEEE802.15.4e-2012,
The maximum value of the backoff exponent (BE) in the
CSMA-CA algorithm or the TSCH-CA algorithm. default:
5-CSMA-CA, 7-TSCH-CA";
}
leaf macDisconnectTime {
type uint16;
description
"defined in Table 52b of IEEE802.15.4e-2012,
Time (in Timeslots) to send out Disassociate frames
before disconnecting, default: 0x00ff";
}
leaf macJoinPriority {
type uint8;
description
"defined in Table 52b of IEEE802.15.4e-2012,
The lowest join priority from the TSCH Synchronization
IE in an Enhanced beacon, default: 1";
}
leaf macASN {
type asntype;
description
"defined in Table 52b of IEEE802.15.4e-2012,
The Absolute Slot Number, i.e., the number of slots
that ha elapsed since the start of the network.";
}
leaf macNoHLBuffers {
type enumeration {
enum TRUE;
enum FALSE;
}
description
"defined in Table 52b of IEEE802.15.4e-2012,
If the value is TRUE, the higher layer receiving the
frame payload cannot buffer it, and the device should
acknowledge frames with a NACK; If FALSE, the higher
layer can accept the frame payload. default: FALSE";
}
}
list TSCHmacTimeslotTemplate { container TSCHSpecificPIBAttributes {
key "macTimeslotTemplateId"; description
min-elements 1; "TSCH specific MAC PIB attributes.";
description reference
"List of all timeslot templates used in the node."; "table 52b in IEEE802.15.4e-2012.";
reference
"table 52e in IEEE802.15.4e-2012.";
leaf macTimeslotTemplateId { leaf macMinBE {
type uint8; type uint8;
description description
"defined in Table 52e of IEEE802.15.4e-2012. "defined in Table 52b of IEEE802.15.4e-2012,
Identifier of Timeslot Template. default: 0"; The minimum value of the backoff exponent (BE) in the
} CSMA-CA algorithm or the TSCH-CA algorithm. default:
leaf macTsCCAOffset { 3-CSMA-CA, 1-TSCH-CA";
type uint16; }
description leaf macMaxBE {
"The time between the beginning of timeslot and start type uint8;
of CCA operation, in microsecond. default: 1800"; description
} "defined in Table 52b of IEEE802.15.4e-2012,
leaf macTsCCA { The maximum value of the backoff exponent (BE) in the
type uint16; CSMA-CA algorithm or the TSCH-CA algorithm. default:
description 5-CSMA-CA, 7-TSCH-CA";
"Duration of CCA, in microsecond. default: 128"; }
} leaf macDisconnectTime {
leaf macTsTxOffset { type uint16;
type uint16; description
description "defined in Table 52b of IEEE802.15.4e-2012,
"The time between the beginning of the timeslot and Time (in Timeslots) to send out Disassociate frames
the start of frame transmission, in microsecond. before disconnecting, default: 0x00ff";
default: 2120"; }
} leaf macJoinPriority {
leaf macTsRxOffset { type uint8;
type uint16; description
description "defined in Table 52b of IEEE802.15.4e-2012,
"Beginning of the timeslot to when the receiver shall The lowest join priority from the TSCH Synchronization
be listening, in microsecond. default: 1120"; IE in an Enhanced beacon, default: 1";
} }
leaf macTsRxAckDelay { leaf macASN {
type uint16; type asntype;
description description
"End of frame to when the transmitter shall listen for "defined in Table 52b of IEEE802.15.4e-2012,
Acknowledgment, in microsecond. default: 800"; The Absolute Slot Number, i.e., the number of slots
} that ha elapsed since the start of the network.";
leaf macTsTxAckDelay {
type uint16; }
description leaf macNoHLBuffers {
"End of frame to start of Acknowledgment, in type enumeration {
microsecond. enum TRUE;
default: 1000"; enum FALSE;
}
leaf macTsRxWait {
type uint16;
description
"The time to wait for start of frame, in microsecond.
default: 2200";
}
leaf macTsAckWait {
type uint16;
description
"The minimum time to wait for start of an
Acknowledgment, in microsecond. default: 400";
}
leaf macTsRxTx {
type uint16;
description
"Transmit to Receive turnaround, in microsecond.
default: 192";
}
leaf macTsMaxAck {
type uint16;
description
"Transmission time to send Acknowledgment,in
microsecond. default: 2400";
}
leaf macTsMaxTx {
type uint16;
description
"Transmission time to send the maximum length frame,
in microsecond. default: 4256";
}
leaf macTsTimeslotLength {
type uint16;
description
"The total length of the timeslot including any unused
time after frame transmission and Acknowledgment,
in microsecond. default: 10000";
}
} }
description
"defined in Table 52b of IEEE802.15.4e-2012,
If the value is TRUE, the higher layer receiving the
frame payload cannot buffer it, and the device should
acknowledge frames with a NACK; If FALSE, the higher
layer can accept the frame payload. default: FALSE";
}
}
list TSCHHoppingSequence { list TSCHmacTimeslotTemplate {
key "macTimeslotTemplateId";
min-elements 1;
description
"List of all timeslot templates used in the node.";
reference
"table 52e in IEEE802.15.4e-2012.";
leaf macTimeslotTemplateId {
type uint8;
description
"defined in Table 52e of IEEE802.15.4e-2012.
Identifier of Timeslot Template. default: 0";
}
leaf macTsCCAOffset {
type uint16;
description
"The time between the beginning of timeslot and start
of CCA operation, in microsecond. default: 1800";
}
leaf macTsCCA {
type uint16;
description
"Duration of CCA, in microsecond. default: 128";
}
leaf macTsTxOffset {
type uint16;
description
"The time between the beginning of the timeslot and
the start of frame transmission, in microsecond.
default: 2120";
}
leaf macTsRxOffset {
type uint16;
description
"Beginning of the timeslot to when the receiver shall
be listening, in microsecond. default: 1120";
}
leaf macTsRxAckDelay {
type uint16;
description
"End of frame to when the transmitter shall listen for
Acknowledgment, in microsecond. default: 800";
}
leaf macTsTxAckDelay {
type uint16;
description
"End of frame to start of Acknowledgment, in
microsecond.
default: 1000";
}
leaf macTsRxWait {
type uint16;
description
"The time to wait for start of frame, in microsecond.
default: 2200";
}
leaf macTsAckWait {
type uint16;
description
"The minimum time to wait for start of an
Acknowledgment, in microsecond. default: 400";
}
leaf macTsRxTx {
type uint16;
description
"Transmit to Receive turnaround, in microsecond.
default: 192";
}
leaf macTsMaxAck {
type uint16;
description
"Transmission time to send Acknowledgment,in
microsecond. default: 2400";
}
leaf macTsMaxTx {
type uint16;
description
"Transmission time to send the maximum length frame,
in microsecond. default: 4256";
}
leaf macTsTimeslotLength {
type uint16;
description
"The total length of the timeslot including any unused
time after frame transmission and Acknowledgment,
in microsecond. default: 10000";
}
}
list TSCHHoppingSequence {
key "macHoppingSequenceID"; key "macHoppingSequenceID";
min-elements 1; min-elements 1;
description description
"List of all channel hopping sequences used in the "List of all channel hopping sequences used in the
nodes"; nodes";
reference reference
"Table 52f of IEEE802.15.4e-2012"; "Table 52f of IEEE802.15.4e-2012";
leaf macHoppingSequenceID { leaf macHoppingSequenceID {
type uint8; type uint8;
description description
"defined in Table 52f of IEEE802.15.4e-2012. "defined in Table 52f of IEEE802.15.4e-2012.
Each hopping sequence has a unique ID. default: 0"; Each hopping sequence has a unique ID. default: 0";
} }
leaf macChannelPage { leaf macChannelPage {
type uint8; type uint8;
description description
"Corresponds to the 5 MSBs (b27, ..., b31) of a row "Corresponds to the 5 MSBs (b27, ..., b31) of a row
in phyChannelsSupported. Note this may not correspond in phyChannelsSupported. Note this may not correspond
to the current channelPage in use."; to the current channelPage in use.";
} }
leaf macNumberOfChannels { leaf macNumberOfChannels {
type uint16; type uint16;
description description
"Number of channels supported by the PHY on this "Number of channels supported by the PHY on this
channelPage."; channelPage.";
} }
leaf macPhyConfiguration { leaf macPhyConfiguration {
type uint32; type uint32;
description description
"For channel pages 0 to 6, the 27 LSBs(b0, b1, ..., "For channel pages 0 to 6, the 27 LSBs(b0, b1, ...,
b26) indicate the status (1 = to be used, 0 = not to b26) indicate the status (1 = to be used, 0 = not to
be used) for each of the up to 27 valid channels be used) for each of the up to 27 valid channels
available to the PHY. For pages 7 and 8, the 27 LSBs available to the PHY. For pages 7 and 8, the 27 LSBs
indicate the configuration of the PHY, and the channel indicate the configuration of the PHY, and the channel
list is contained in the extendedBitmap."; list is contained in the extendedBitmap.";
} }
leaf macExtendedBitmap { leaf macExtendedBitmap {
type uint64; type uint64;
description description
"For pages 7 and 8, a bitmap of numberOfChannels bits, "For pages 7 and 8, a bitmap of numberOfChannels bits,
where bk shall indicate the status of channel k for where bk shall indicate the status of channel k for
each of the up to numberOfChannels valid channels each of the up to numberOfChannels valid channels
supported by that channel page and phyConfiguration. supported by that channel page and phyConfiguration.
Otherwise field is empty."; Otherwise field is empty.";
} }
leaf macHoppingSequenceLength { leaf macHoppingSequenceLength {
type uint16; type uint16;
description description
"The number of channels in the Hopping Sequence. "The number of channels in the Hopping Sequence.
Does not necessarily equal numberOfChannels."; Does not necessarily equal numberOfChannels.";
} }
list macHoppingSequenceList { list macHoppingSequenceList {
key "HoppingChannelID"; key "HoppingChannelID";
leaf HoppingChannelID { leaf HoppingChannelID {
type uint16; type uint16;
description description
"channels to be hopped over"; "channels to be hopped over";
} }
description
"The hopping sequence";
} }
leaf macCurrentHop { leaf macCurrentHop {
type uint16; type uint16;
config false; config false;
description description
"Index of the current position in the hopping sequence "Index of the current position in the hopping sequence
list."; list.";
} }
}
4.3. Yang Model for the Security aspects of 6top
The [I-D.ietf-6tisch-architecture] and
[I-D.richardson-6tisch--security-6top] define the attributes needed
to secure network bootstraping and joining and authentication
processes. The following attributes are exposed by 6top interface to
enable access and configuration to the security mechanisms carried
out by 6top management entity.
container SecurityAttributes{
leaf SecurityMode {
type enumeration {
enum NO_SECURITY;
enum NETWORK_WIDE_MIC;
enum NETWORK_WIDE_DHE_PSK;
enum NETWORK_WIDE_IKE2_PSK;
enum PK_DTLS_ECDSA;
enum PK_IKEv2_ECDSA;
enum OTHER;
}
description
"The security mode is to be used.";
}
leaf-list Certificate{
type uint8;
min-elements 128;
description "A list of bytes for the
certificate ECDSA PKIX or PSK";
}
leaf DevID {
type enumeration {
enum IDevID;
enum LDevID;
}
description " indicate the feature of DevID.";
}
leaf-list PSK{
type uint8;
min-elements 128;
description "A list of bytes for the PSK while using PSK method";
} }
leaf PanID { container SecurityAttributes{
type uint16; description
description "2 Bytes the network PANID"; "The Security Attributes Container.";
}
leaf JoinAssistant {
type enumeration {
enum TRUE;
enum FALSE;
}
description "a toggle which enables a node to
become a join assistant.";
}
leaf-list ULA{ leaf-list K1{
type uint8; type uint8;
min-elements 16; config true;
description "A ULA to be announced in the min-elements 16;
RA for joining nodes. It is 128bits+prefixlen. description
A device with multiple interfaces "The key is used to authenticate EBs.
should configure different 64-bit prefixes."; The default value of the key is
36 54 69 53 43 48 20 6D 69 6E 69 6D 61 6C 31 35
,i.e. 6TiSCH minimal15.";
}
} leaf EBSecurityLevel{
type enumeration {
enum NONE;
enum MIC-32;
}
description
"The security level respective to the EB key.";
}
leaf BeaconWellKnownKey{ list K2List{
type string; key "NodeAddress";
default "6TISCHJOIN"; description
description "the well known beacon key"; "The keys are shared with neighbors, used to authenticate
} and/or encrypt DATA, ACKNOWLEDGEMENT, MAC COMMAND frame.";
leaf-list JCEAddress{ leaf NodeAddress {
type uint8; type nodeaddresstype;
min-elements 8; description
description "the address of the JCE, "Specifies the address of the neighbor(s) sharing the key.
for the ACL about The address could be broadcast/unicast address.";
who can contact joining nodes."; }
leaf-list K2{
type uint8;
min-elements 16;
config true;
description
"The key is used as shared key with
the specific neighbor";
}
leaf SecurityLevel{
type enumeration {
enum NONE;
enum MIC-32;
enum MIC-64;
enum MIC-128;
enum ENC;
enum ENC-MIC-32;
enum ENC-MIC-64;
enum ENC-MIC-128;
}
description
"The security level respective to
the specific shared key.";
}
}
} }
} }
5. Commands
6top provides a set of commands as the interface with the higher
layer. Most of these commands are related to the management of
slotframes, cells and scheduling information. 6top also provides an
interface allowing an upper layer to retrieve status information and
statistics. The command set aims to facilitate 6top implementation
by describing the main operations that higher layers may use to
interact with 6top. The listed commands aim at providing semantics
to manipulate 6top MIB, IEEE802.15.4 PIB and IEEE802.15.4e PIB
programmatically.
CREATE.hardcell: Creates one or more hard cells in the schedule.
Fails if the cell already exists. A cell is uniquely identified
by the tuple (slotframe ID, slotOffset, channelOffset). 6top
schedules the cell and marks it as a hard cell, indicating that it
cannot reschedule this cell. The return value is CellID and the
created cell is also filled in CellList(Section 4.1).
CREATE.softcell: To create soft cell(s). 6top is responsible for
picking the exact slotOffset and channelOffset in the schedule,
and ensure that the target node chooses the same cell and TrackID.
6top marks these cells as soft cell, indicating that it will
continuously monitor their performance and reschedule if needed.
The return value is CellID, and the created cell is also filled in
CellList (Section 4.1).
READ.cell: Given a (slotframe ID, slotOffset, channelOffset),
retrieves the cell information. A read command can be issued for
any cell, hard or soft. 6top gets cell information from CellList
(Section 4.1).
UPDATE.cell: Update a hard cell, i.e., re-allocate it to a
different slotOffset and/or channelOffset. Fails if the cell does
not exist. CellList (Section 4.1) will be modified.
DELETE.hardcell: To remove a hard cell. This removes the hard
cell from the node's schedule, from CellList (Section 4.1).
DELETE.softcell: To remove a (number of) soft cell(s). This
command leads the pair of nodes figure out the specific cell(s) to
be removed. After that, the cell(s) will be removed from the
CellLists (Section 4.1) on both sides.
REALLOCATE.softcell: To force a re-allocation of a soft cell. The
reallocated cell will be installed in a different slotOffset,
channelOffset but slotframe and TrackID remain the same. Hard
cells MUST NOT be reallocated. This command will result in the
modificaition of CellLists (Section 4.1) on both sides.
CREATE.slotframe: Creates a new slotframe. Adds a entry to the
SlotframeList (Section 4.1).
READ.slotframe: Returns the information of a slotframe given its
slotframeID from SlotframeList (Section 4.1).
UPDATE.slotframe: Change the number of timeslots in a slotframe
given its slotframeID in SlotframeList (Section 4.1).
DELETE.slotframe: Deletes a slotframe, remove it from
SlotframeList (Section 4.1).
CONFIGURE.monitoring: Configures the level of QoS the Monitoring
process MUST enforce, i.e. config MonitoringStatusList
(Section 4.1).
READ.monitoring: Reads the current Monitoring status from
MonitoringStatusList (Section 4.1).
CONFIGURE.statistics: Configures the statistics process in
StatisticsMetricsList(Section 4.1). The CONFIGURE.statistics
enables flexible configuration and supports empty parameters that
will force 6top to conduct statistics on all members of that
dimension. For example, if ChannelOffset is empty and metric is
set as PDR, then, 6top will conduct the statistics of PDR on all
of channels.
READ.statistics: Reads a metric for the specified dimension.
Information is aggregated according to the parameters from
CellList (Section 4.1).
RESET.statistics: Resets the gathered statistics in CellList
(Section 4.1).
CONFIGURE.eb: Configures EBs, i.e. configures EBlist
(Section 4.1).
READ.eb: Reads the EBs configuration from EBList (Section 4.1).
CONFIGURE.timesource: Configures the Time Source Neighbor
selection process, i.e. configure TimeSource (Section 4.1).
READ.timesource: Retrieves information about the time source
neighbors of that node from TimeSource (Section 4.1).
CREATE.neighbor: Creates an entry for a neighbor in the neighbor
table, i.e. NeighborList (Section 4.1).
READ.all.neighbor: Returns the list of neighbors of that node
according to NeighborList (Section 4.1).
READ.neighbor: Returns the information of a specific neighbor of
that node specified by its neighbor address according to
NeighborList (Section 4.1).
UPDATE.neighbor: Updates the last status for a given
TargetNodeAddress in the NeighborList (Section 4.1).
DELETE.neighbor: Deletes a neighbor given its address from
NeighborList (Section 4.1).
CREATE.queue: Creates and Configures a queue in QueueList
(Section 4.1).
READ.queue: Reads the queue configuration for given QueueId from
QueueList (Section 4.1).
READ.queue.stats: For a given QueueId, reads the queue statistics
information from the QueueList (Section 4.1).
UPDATE.queue: For a given QueueId, update its configuration in the
QueueList (Section 4.1).
DELETE.queue: Deletes a Queue for a given QueueId from the
QueueList (Section 4.1).
LabelSwitching.map: Maps an input cell or a bundle of input cells
to an output cell or a bundle of output cells, i.e. adds a entry
to the LabelSwitchList (Section 4.1).
LabelSwitching.unmap: Unmap one input cell or a bundle of input
cells to an output cell or a bundle of output cells, i.e. modifies
the LabelSwitchList (Section 4.1).
CREATE.chunk: Creates a chunk which consists of one or more
unscheduled cells, i.e. add an entry to the ChunkList
(Section 4.1).
READ.chunk: Returns the information of a chunk given its ChunkID
from ChunkList (Section 4.1).
DELETE.chunk: For given ChunkId, removes a chunk from the
ChunkList (Section 4.1), which also causes all of the scheduled
cells in the chunk to be deleted from the TSCH schedule and
CellList (Section 4.1).
CREATE.hardcell.fromchunk: Creates one or more hard cells from a
chunk. 6top schedules the cell and marks it as a hard cell,
indicating that it cannot reschedule this cell. The cell will be
added into the CellList (Section 4.1). In addition, 6top will
change the attributes corresponding to the cell in the
ChunkCellList (Section 4.1), i.e. its CellID is changed to the
same CellID in the CellList, and its Status is changed to
SCHEDULED.
READ.chunkcell: Returns the information of all cells in a chunk 4.2. Yang Model for the Security aspects of 6top
given its ChunkID from ChunkCellList (Section 4.1).
DELETE.hardcell.fromchunk: To remove a hard cell which comes from The [I-D.ietf-6tisch-architecture] and
a chunk. This removes the hard cell from the node's schedule and [I-D.richardson-6tisch--security-6top] define the attributes needed
CellList (Section 4.1). In addition, it changes the attributes to secure network bootstraping and joining and authentication
corresponding to the cell in the ChunkCellList (Section 4.1), i.e. processes. The SecurityAttributes container in the included yang
its CellID is changed back to 0xFFFF, and its Status is changed to model above contains attributes that are exposed by 6top interface to
UNSCHEDULED. enable access and configuration to the security mechanisms carried
out by 6top management entity.
6. References 5. References
6.1. Normative References 5.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
6.2. Informative References 5.2. Informative References
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020, Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010. October 2010.
[I-D.ietf-6tisch-tsch] [I-D.ietf-6tisch-tsch]
Watteyne, T., Palattella, M., and L. Grieco, "Using Watteyne, T., Palattella, M., and L. Grieco, "Using
IEEE802.15.4e TSCH in an IoT context: Overview, Problem IEEE802.15.4e TSCH in an IoT context: Overview, Problem
Statement and Goals", draft-ietf-6tisch-tsch-05 (work in Statement and Goals", draft-ietf-6tisch-tsch-06 (work in
progress), January 2015. progress), March 2015.
[I-D.ietf-6tisch-architecture] [I-D.ietf-6tisch-architecture]
Thubert, P., Watteyne, T., Struik, R., and M. Richardson, Thubert, P., "An Architecture for IPv6 over the TSCH mode
"An Architecture for IPv6 over the TSCH mode of IEEE of IEEE 802.15.4", draft-ietf-6tisch-architecture-08 (work
802.15.4e", draft-ietf-6tisch-architecture-06 (work in in progress), May 2015.
progress), March 2015.
[I-D.ietf-6tisch-terminology] [I-D.ietf-6tisch-terminology]
Palattella, M., Thubert, P., Watteyne, T., and Q. Wang, Palattella, M., Thubert, P., Watteyne, T., and Q. Wang,
"Terminology in IPv6 over the TSCH mode of IEEE "Terminology in IPv6 over the TSCH mode of IEEE
802.15.4e", draft-ietf-6tisch-terminology-03 (work in 802.15.4e", draft-ietf-6tisch-terminology-04 (work in
progress), January 2015. progress), March 2015.
[I-D.ietf-6tisch-minimal] [I-D.ietf-6tisch-minimal]
Vilajosana, X. and K. Pister, "Minimal 6TiSCH Vilajosana, X. and K. Pister, "Minimal 6TiSCH
Configuration", draft-ietf-6tisch-minimal-06 (work in Configuration", draft-ietf-6tisch-minimal-09 (work in
progress), March 2015. progress), June 2015.
[I-D.wang-6tisch-6top-sublayer] [I-D.wang-6tisch-6top-sublayer]
Wang, Q., Vilajosana, X., and T. Watteyne, "6TiSCH Wang, Q., Vilajosana, X., and T. Watteyne, "6TiSCH
Operation Sublayer (6top)", draft-wang-6tisch-6top- Operation Sublayer (6top)", draft-wang-6tisch-6top-
sublayer-01 (work in progress), July 2014. sublayer-01 (work in progress), July 2014.
[I-D.ietf-6tisch-coap] [I-D.ietf-6tisch-coap]
Sudhaakar, R. and P. Zand, "6TiSCH Resource Management and Sudhaakar, R. and P. Zand, "6TiSCH Resource Management and
Interaction using CoAP", draft-ietf-6tisch-coap-02 (work Interaction using CoAP", draft-ietf-6tisch-coap-03 (work
in progress), December 2014. in progress), March 2015.
[I-D.richardson-6tisch--security-6top] [I-D.richardson-6tisch--security-6top]
Richardson, M., "6tisch secure join using 6top", draft- Richardson, M., "6tisch secure join using 6top", draft-
richardson-6tisch--security-6top-04 (work in progress), richardson-6tisch--security-6top-04 (work in progress),
November 2014. November 2014.
6.3. External Informative References 5.3. External Informative References
[IEEE802154e] [IEEE802154e]
IEEE standard for Information Technology, "IEEE std. IEEE standard for Information Technology, "IEEE std.
802.15.4e, Part. 15.4: Low-Rate Wireless Personal Area 802.15.4e, Part. 15.4: Low-Rate Wireless Personal Area
Networks (LR-WPANs) Amendment 1: MAC sublayer", April Networks (LR-WPANs) Amendment 1: MAC sublayer", April
2012. 2012.
[IEEE802154] [IEEE802154]
IEEE standard for Information Technology, "IEEE std. IEEE standard for Information Technology, "IEEE std.
802.15.4, Part. 15.4: Wireless Medium Access Control (MAC) 802.15.4, Part. 15.4: Wireless Medium Access Control (MAC)
skipping to change at page 39, line 42 skipping to change at line 1550
Email: wangqin@ies.ustb.edu.cn Email: wangqin@ies.ustb.edu.cn
Xavier Vilajosana Xavier Vilajosana
Universitat Oberta de Catalunya Universitat Oberta de Catalunya
156 Rambla Poblenou 156 Rambla Poblenou
Barcelona, Catalonia 08018 Barcelona, Catalonia 08018
Spain Spain
Phone: +34 (646) 633 681 Phone: +34 (646) 633 681
Email: xvilajosana@uoc.edu Email: xvilajosana@uoc.edu
Thomas Watteyne
Linear Technology
30695 Huntwood Avenue
Hayward, CA 94544
USA
Phone: +1 (510) 400-2978
Email: twatteyne@linear.com
 End of changes. 94 change blocks. 
1239 lines changed or deleted 1098 lines changed or added

This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/