# Wireless Mesh Networking: An IoT-Oriented Perspective Survey on Relevant Technologies
## 4 Mesh in Bluetooth/BLE Networks
### Standard
One of these keys is called NetKey and all nodes in the mesh network must possess at least one NetKey, as the possession of this key (together with other requirements) makes a device a member of the network and, namely, a node. Some BLE nodes can have multiple constituent parts, each of which can be independently controlled. In Bluetooth Mesh terminology, these parts are called \"elements\". An example of a BLE device with multiple elements can be a LED lighting product which, if added to a Bluetooth mesh network, would form a single node with three elements, one for each individual LED light. Communication in the mesh network is message-oriented. Messages exchanged between nodes can have different types, each one with a defined unique \"opcode\". Moreover, messages can be acknowledged or unacknowledged. An acknowledged message requires a response from the node that receives it, which has two purposes: (i) it confirms that the message has been received and (ii) it returns data to the sender, if needed. The sender of an acknowledged message may resend the message if it does not receive the expected response(s) and, therefore, acknowledged messages must be idempotent. This means that the effect of a given acknowledged message, arriving at a node multiple times, will be the same as it had only been received once. Unacknowledged messages, instead, do not require any response. Messages must be sent by nodes to an address. The Bluetooth Mesh standard defines the following three types of addresses. * **Unicast address**, identifying a single element or a node in the network in a unique way. A unicast address is assigned to a device during the provisioning process, when it becomes part of the network. * **Group address**, corresponding to a multicast address able to represent either a single element or node, as well as multiple elements or nodes. Moreover, group addresses can be either assigned dynamically (i.e., established by the user via a configuration application), as well as fixed by the official SIG group (in this case, denoted as SIG Fixed Group Addresses). * **Virtual address**, corresponding to a 128-bit UUID that can be assigned to either one or more elements, as well as to a single or multiple nodes. The Bluetooth Mesh standard architecture follows, as communication paradigm, the publish/subscribe model, in which the publisher node sends its data on a well-defined topic, while several subscriber nodes, manifesting their interest in such data information, listen to one or more of the available topics. Moreover, nodes are thus configured to select messages sent to specific addresses for processing, and in the Bluetooth Mesh standard this is the \"subscribing\" operation. A node in a Bluetooth mesh network maintains a subscriber list (containing the subscribers addresses and its unicast address) and the publish address with the single address onto which publish contents. Before joining a selected mesh group \(G_{i}\), a node \(N_{1}\) has to add \(G_{i}\) in the subscriber addresses list; after that a node \(N_{2}\) is able to forward a packet to \(N_{1}\) addressing the unicast identified of \(N_{1}\) or through the \(G_{i}\) address to which \(N_{1}\) belongs to. The links created in the network among publishers and subscribers generate a mesh topology, with the main advantage that if nodes are removed, replaced or a new node is added, other nodes in the network should not be reconfigured. To implement the communication, the BLE standard provide two kinds of procedures, namely _advertising_ and _scanning_ operations. In detail, flooding is the mechanism through which messages are exchanged in a BLE mesh network, thus ensuring that each intermediate node \(N\) is able to relay incoming messages till the target node. In addition, Bluetooth mesh nodes differ from BLE advertising ones in the way that they do not consider an advertising interval for sending their packets, instead directly sending them after a back-off time which is randomly generated.