# mDARAL: A Multi-Radio Version for the DARAL Routing Algorithm
## 2 Routing Algorithms and Multi-Radio Techniques for WSN  
Smart City and Internet of Things (IoT) projects require the use routing algorithms to create the network topology. Several routing methods are used in these scenarios, like multicast, mesh or graphed based, clustering algorithms focused on improving the QoS, the energy consumption, the traffic reduction, the network lifetime, or the network adaptability. Our proposal, DARAL, falls within the clustering-based routing algorithms. Despite the fact that these algorithms are mainly hierarchical cluster-tree algorithms, there also exist interesting alternatives like the one proposed by [PERSON] et al. in [15], [PERSON] et al. in [16] or the one proposed by [PERSON] et al. in [17]. It is usual to find two different roles for the nodes of a cluster-based network, a central node or cluster-head and another node, usually called the end-node. Clusters are formed by at least one cluster-head and several end-nodes. In the pure cluster tree algorithms, the cluster-head receives the traffic from all of the end-nodes, and sends it to the proper destination. Furthermore, it is also responsible for the communications between other cluster-heads from clusters with lower/higher hierarchy level. However, clustering mesh-like algorithms allow end-node to end-node communication, reducing the bottle neck in cluster-heads [18]. Therefore, the role selection mechanism is a fundamental aspect of these algorithms. There exist different cluster-head selection mechanisms that cover different approaches depending on different parameters such as location, Link Quality Indicator [19] (LQI) or residual energy [20]. In addition to the diversity of scenarios, there are also a wide number of different approaches to hierarchical cluster-based routing algorithms. Every routing algorithm intends to improve a particular group of parameters related to a specific scenario. However, [PERSON] et al. discussed in their article the dynamical nature of a Smart City or IoT scenario [21]. Therefore, routing solutions for those applications should take into account different traffic patterns such as one-to-many, many-to-one and many-to-many. [PERSON] et al. [22] proposed a many-to-many routing algorithm which uses the multi-user gain capability of Multiple-Input Multiple-Output (MIMO) by controlling the number of ongoing transmissions in order to increase the end-to-end throughput and, thus, to guarantee the required QoS constraints. These concepts have led most of the proposals for Smart Cities or IoT applications to use two well-known routing algorithms: an Ad-Hoc On Demand Vector (AODV) and IPv6 Routing Protocol for Low-Power and Lossy Networks (RPL), due to their appropriate performance in these scenarios. Recent hierarchical routing algorithms such as _DARAL_[5] have proved themselves as interesting alternatives to the commonly used protocols. AODV is an on-demand routing algorithm that discovers routes according to the network necessities. It uses request and reply messages to find the shortest path between the sender and the receiver. The network connections create a mesh structure, where all the nodes present the same hierarchy level. On the other hand, RPL routes are formed around a central node, which acts as a network root or network coordinator. This node broadcasts messages with its information in order to expand the network range as well as to keep the nodes connected. However, neither of these two protocols is ideally designed to be used in a Smart City scenario. AODV does not optimize the traffic overhead (the control messages sent to form the routes), obtaining poor energy consumption results, and RPL does not present an efficient consumption either, as it was discussed in [23]. Consequently, _DARAL_ intended to solve the lack of these protocols. _DARAL_ can be described as a centralized non-beaconing routing algorithm based on dynamic clustering, which is achieved using the sub-network concept. A node must be defined as the network root or coordinator.