Addressing in the WiSense low power wireless mesh network (LPWMN)

In the WiSense LPWMN, every node has a 16 bit “short” address. Each LPWMN has one coordinator and the rest of the nodes can be  a mix of FFDs (full function devices capable of routing) and RFDs (reduced function devices which spend most of the time sleeping).

The LPWMN coordinator has a fixed address (0x0001). The broadcast address is also fixed (0xffff). The range of unicast addresses is from 0x0001 to 0x7fff. Multicast addresses range from 0x8000 to 0xfffe.

Each WiSense node has a permanent IEEE provided 64 bit globally unique extended address. This address is embedded in the AT24MAC602 I2C EEPROM on the node. This address allows the node to be uniquely identified by the coordinator irrespective of the 16 bit short address assigned to the node when it joins the network.

Note that only the 16 bit short addresses are used in the MAC header and the mesh header. Routing uses the 16 bit short addresses. The 64 bit extended address is only used to identify a node to the coordinator and the external world since the 16 bit short address allocated to a node can change during the life time of the network.

The LPWMN coordinator allocates addresses to each node which joins the network. As part of the joining/registration process, a node sends out an “ASSOC_REQUEST” command frame containing the node’s 64 bit extended address. This command is relayed to the network coordinator through one or more FFD nodes if the joining node is not a neighbor of the network coordinator.  In response, the network coordinator will allocate a short address and send an “ASSOC_RESPONSE” command frame conveying this short address to the joining node. Once the joining node receives the short address, it is ready to send/receive data traffic (in addition to network traffic).  The coordinator maintains a list of all registered/joined nodes. Each entry in this list stores the node’s 64 bit extended address and the allocated short address among other information.

The first allocated address (by the coordinator) is 0x0002, the second is 0x0003 and so on until 0x7fff (the highest unicast short address). The next address allocated is back to 0x0002 assuming 0x0002 is not currently allocated to any node. If not, the next address tested is 0x0003 and so on until an un-allocated short address is found. You can see the code in the function “NM_allocShortAddr( )” in the file “node_mgr/src/node_mgr.c”.

What happens when a node (which has already joined the network) is reset ? It will try to rejoin the network. When the coordinator gets an “ASSOC_REQUEST” message sent by the re-joining node, it will realize that this node is re-joining when it finds the node’s entry in the list of registered nodes (the search is done using the 64 bit extended address received in the ASSOC_REQUEST). The coordinator allocates a fresh short address to the node and sends this address to the joining node. The node’s entry in the list of registered nodes is updated with the newly allocated 16 bit short address.

When a reduced function device (RFD) is not able to communicate with it’s parent node, the RFD will try to rejoin the network. It will select another parent (if available) and send a ASSOC_REQUEST to the coordinator. The process is exactly similar to the one described just above.

Posted on December 27, 2014, in Uncategorized. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: