## 1 Introduction  
The popularization of wireless and sensor technologies, allied to the demand for new Internet of Things (IoT) applications, is creating a new ubiquitous and smart IoT applications era. The IoT [1] is composed of a set of technologies that provide connectivity at all times, everywhere, and about everything. IoT is based on the principle that objects or things interact and cooperate with each other by using wireless links to ensure ubiquitous communications. They might be Radio-Frequency IDentification (RFID) tags, sensor nodes, actuators, or mobile phones, among others. In this context, Wireless Sensor Networks (WSNs) [2,3] play an important role in providing ubiquitous computing that is capable of connecting both real and virtual worlds. WSNs/IoT applications have a great impact on the quality of life of people and also lead to economic benefits. Thus, IoT/WSNs are attracting considerable attention from universities, industries and governments in assisting the development of new technologies and applications, such as comfortable homes and offices, healthcare, environmental monitoring and smart cities. For example, the ubiquitous systems and wireless sensor technologies offer suitable solution for improving the efficiency of the food supply chain [4,5]. In the case of applications for healthcare, patients can carry medical sensors to monitor key parameters, such as body temperature, blood pressure, ECG (electrocardiogram) and breathing. Furthermore, medical centers will be able to perform advanced remote monitoring to assess a patients condition [6]. Regarding real implementations, the SmartSantander project [7] proposes an experimental research facility in a city to support typical applications and services for smart cities [8]. The facility comprises more than 20,000 IoT devices, divided into topologies that have tens or hundreds of nodes, depending on the applications, such as environmental monitoring and smart parking. In many IoT applications, the sensed data must be sent to the Base Station (BS) for further operations. This should be accomplished through efficient routing protocols that are key components to improve the data transmission, energy-efficiency, and scalability in WSNs. However, the characteristics of WSNs/IoT raise many challenges in designing efficient communication protocols, owing to limited resources and the unreliability of low-power wireless links that typically lack in terms of Quality of Service (QoS) requirements. At the same time, there still remains a need to find a multipath-aware routing protocol that assures data transmission with low delay, latency, loss rate and minimum energy consumption for various IoT applications [9]. In the context of routing protocols, one important criterion used in the route discovery process is the quality estimation of the communication links between nodes. This quality is usually measured as a single value, such as Received Signal Strength Indicator (RSSI) or Link Quality Indicator (LQI) [10]. However, LQI/RSSI only represents a snapshot at a specific point in time for one link between two nodes, and lacks any additional information about remaining energy, hop count and end-to-end link quality. Thus, there is still an urgent need to find a reliable scheme to estimate the end-to-end link quality based on information of different layers (cross-layer) [11], and it is important to enable the nodes that can transmit packets with a high degree of reliability, while increasing the network lifetime and the overall QoS support for IoT applications. According to [PERSON] _et al_. [12], as a result of recent technological advances in embedded systems, the processing and memory constraints in WSNs are tending to disappear. However, the problem of energy constraint remains a critical issue. Furthermore, an external energy supply is usually unavailable and the replacement of batteries is not feasible for large-scale networks as expected for IoT systems.