-
Notifications
You must be signed in to change notification settings - Fork 2
OSNP over IEEE 802.15.4
OSNP over IEEE 802.15.4 is designed for embedded and possibly battery powered devices. It provides a way to exchange OSNP Application Layer messages over an IEEE 802.15.4-2003 interface.
The protocol is designed to work with any IEEE 802.15.4-2003 (or above) transceiver, and maintains its frame structure, although it redefines some of its MAC Commands to better fit the needs of an OSNP network.
Security is defined according the IEEE 802.15.4-2003 standard, with additional commands meant to make session persistence resistant to sudden power losses or other events.
If you are not familiar with OSNP yet, please read the OSNP Application Layer specifications first. If you are not familiar with IEEE 802.15.4-2003 standard, I suggest you read that first, but most concepts will be repeated here.
In a 802.15.4 network a device must assume the role of PAN (Personal Area Network) coordinator, which controls communication between all other devices and allocates short addresses. In an OSNP network, this role is performed by the Hub. The Hub always starts a non-beacon enabled PAN. This allows battery powered devices to save power by determining their own duty cycle independently.
Each PAN has its own 2-bytes identifier, which must be unique in the radio range of the hub and its associated devices.
Devices communicate with the hub by exchanging frames.
Unlike most network protocols, the IEEE 802.15.4 header fields are encoded using little-endian.
The frame structure is according the IEEE 802.15.4-2003 standard. This was a practical choice, since many compatible transceiver supporting this frame format exist on the market. In the 2006 version of the standard the security header has been redefined. Since most 802.15.4-2003 transceiver offer hardware encryption/decryption support and many support only the older header format, we decided to use that.
The frame structure is as follow:
| Octets: 2 | 1 | 0/2 | 0/2/8 | 0/2 | 0/2/8 | variable | 2 |
|---|---|---|---|---|---|---|---|
| Frame control | Sequence Number | Destination PAN | Destination Address | Source PAN | Source Address | Payload | FCS |
The sequence number is a number incremented by one for each frame sent. It is used to as a reference number to acknowledge frames. This counter is allowed to roll over (i.e. after 255 it will be 0 again)
This is the destination PAN identifier. It is only present if the Destination Addressing Mode is not set to "Address not present"
This is the destination address. It can be either the extended address (8 bytes) or the assigned short address (2 bytes). If the Destination Addressing Mode is set to "Address not present" this field is omitted.
This field is the source PAN identifier. It is only present if the Source Addressing Mode is not set to "Address not present" and the Intra-PAN bit of the Frame Control field is not set.
This is the source address. It can be either the extended address (8 bytes) or the assigned short address (2 bytes). If the Source Addressing Mode is set to "Address not present" this field is omitted.
The payload contains the actual data to be sent. If security is enabled (Security Enabled bit in the Frame Control field is set), this field has the following format
| Octets: 4 | 1 | variable | 0/4/8/16 |
|---|---|---|---|
| Frame counter | Key Counter | Data | MIC |
This field is a 2-byte checksum. It is usually appended/verified by the transceiver. It is defined in the IEEE 802.15.4 specifications.