# Wireless Mesh Networking: An IoT-Oriented Perspective Survey on Relevant Technologies
## 5 Mesh Networking with IEEE 802.15.4
### Reference Standard: ZigBee Pro & ZigBee 3.0
Since end devices can be battery-powered, when they are not transmitting or receiving data, they can sleep in order to preserve power; hence, messages addressed to a sleeping end device \(E\) will be buffered by the parent node until \(E\) awakens. A ZigBee network can comprise many end devices, which cannot have child nodes, since they cannot relay messages or admit new nodes in the network. Thanks to their \"special\" role, a coordinator or a router can be started with a time interval during which the admission of new nodes is enabled, controlled by their \"joining permit\" status (it follows that an infinite join period allows child nodes to be able to join the parent node at any time). In order help an orphaned node when it tries to rejoin the network, ZigBee Pro does not take into account the \"joining permit\" status of parent nodes in this particular operation: in this way, the node is able to enter again in the network even when the parent \"joining permit\" is disabled. To secure communications among the entities participating to the lifecycle of a ZigBee-based network, the IEEE 802.15.4-oriented protocol incorporates features to avoid the intrusion of unknown or dangerous entities from neighboring ZigBee networks. Moreover, privacy is taken into account in the management of communications between pairs of nodes belonging to the same network. Among these security features, the following three are the most interesting ones: (i) Access Control Lists (ACLs), allowing only predefined \"friendly\" nodes to join the network; (ii) frame counters, in order to prevent sending the same message twice and to replay attacks on the network; and (iii) key-based encryption, based on the AES-128 symmetric scheme, with both pre-configured keys during the system installation, as well as distributed through a central \"Trust Centre\" node, which, in turn, controls the keys and security policies--e.g., issuing keys for node pairs and defining the time slots in which specific events or interactions are allowed. Even though any node in the network can act as Trust Centre, by default it is the coordinator. As highlighted before for similar routing protocols and as it is normal to expect from a mesh-oriented protocol, even ZigBee allows devices to have more details about the capabilities of other network node (e.g., their addresses, their power source and sleep behavior, which kind of applications are running onto them, etc.). This information is used by the requesting node to tune its behavior according to the general network constraints, and can be retrieved in various ways, through device discovery, service discovery, and route discovery. * **Device discovery**: returns to the requesting node the addresses of a network node. If the node starting the request is the network coordinator or a router, it may supply the addresses on behalf of all the devices that are under its control, in addition to its own address [55]. In this way, all devices in a network can be discovered with a request from the coordinator to all children, in a recursive way [56]. * **Service discovery**: allows a node to known the capabilities of a remote node directly to the remote node itself [57]. For example, it is possible to know the power characteristics of the node, what kind of applications are running on a node, as well as other optional information [58]. * **Route discovery**: allows to know the best available route for an outgoing message from a source to the destination node. If a route already exists, the message is routed along it; otherwise, the routing node sending the message (which can be, as already mentioned, the coordinator or an intermediate router) initiates the discovery procedure that, once completed, returns the calculated route along which the outgoing message will be sent.