# 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  
A relevant example of IEEE 802.15.4-oriented mesh protocol is given by ZigBee Pro [52] (and its successor ZigBee 3.0 [53]), a very low-cost, low-power consumption, multi-band (across 2.4 GHz and sub-GHz--868 MHz and 915 MHz--bands), and two-way wireless standard that can be embedded in several scenarios, ranging from domestic appliances to security systems, environmental control, automated meter reading, industrial automation, and medical applications. ZigBee Pro can be considered as the network infrastructure standard for networks based on ZigBee products, together with being used for robust proprietary IoT implementations and enhancing the IEEE 802.15.4 standard by adding mesh network and security features along with an application framework, bringing to a full stack and inter-operable ZigBee solution [54]. As highlighted before, ZigBee Pro takes full advantage of the IEEE 802.15.4 physical radio standard and can operate (i) in the 2.4 GHz band, with a raw data throughput of 250 kbps on 16 channels, (ii) in the 915 MHz band, with a 10 kbps data throughput on 27 channels, and (iii) in the 868 MHz, with a 100 kbps on 63 channels. Based on these characteristics, transmission distances can range: in the 2.4 GHz band from 10 m to 100 m, depending on the output power and environmental characteristics; in the sub-GHz channels, up to 1 Km. Moreover, ZigBee incorporates an IEEE 802.15.4-defined Carrier Sense, Multiple Access with Collision Avoidance (CSMA/CA) protocol that reduces the probability of cross-user interference together with an automatic data retransmission strategy to ensure network robustness. In addition, focusing on the communication reliability, ZigBee employs different techniques to guarantee that transmitted packets reach their destinations without corruption (i.e., poor transmission or reception can generate the packets corruption), including: (i) data coding, with a Quadrature Phase-Shift Keying (QPSK) modulation, and a conversion of 4-bit data symbols into 32-bit chip sequences; (ii) listen-before-send, which delays the transmission of data for a random amount of time before listening again, when there is activity on the chosen channel; (iii) end-to-end acknowledgments, between the destination and the source nodes; (iv) next-hop acknowledgments, activated when a message is routed through an intermediate node, among the next and the previous routing nodes; (v) frequency agility, which allows the whole network to be moved to a different radio channel in the case that the one in use become too noisy (generally, the best channel is the least energetic one, detected through an energy scan across the band); and (vi) route repair, which discovers alternative routes for messages when the default route to a destination node is broken. In the end, these reliability features allow a ZigBee-based network to operate even in the presence of adjacent ZigBee networks operating in the same frequency band or based on other standards (e.g., Bluetooth and Wi-Fi). Looking at the network organization, a ZigBee-based network includes the following three types of nodes. * **Coordinator**: each ZigBee Pro network can contain one and only one coordinator. This node is started before the other since it is responsible for network formation. The coordinator, in fact, selects the frequency channel to use and manages the operations related to the join of new child nodes in the network. After the establishment of the network, the coordinator performs routing-related activities, relaying messages among the nodes, sending and receiving messages. * **Router**: is another type of node with routing capabilities. It sends and receives data, and allows other child nodes to join the mesh network. A ZigBee-based network can contain several routers which must always be available to maintain routing among nodes. * **End device**: is a node which simply sends or receives data to or from its parent node, without routing functionality.