# Routing Protocols for Low Power and Lossy Networks in Internet of Things Applications
## 4 Enhanced Routing Solutions for Internet of Things Networks
### Mobile Nodes' Support
All the others' operations performed by mobile nodes (DIS and DAO sending, parent selection, and rank computation) are done like in the default RPL. In the end, mod-RPL regulates the transmission of control messages in the same way as the default RPL considering that the mobility in healthcare applications is not high. Another routing solution for supporting mobile nodes in LLNs was proposed by [PERSON] et al. in [PERSON] et al. (2018). Based on RPL, the Extended Kalman Filter for Mobile RPL (EKR-MRPL) aims to reduce the signaling overhead and energy consumption caused by constant changes of attachment points of mobile nodes. EKF-MRPL assumes that MNs do not execute any routing task. Thus, MNs just send and receive data from their preferred parent. EKF-MRPL operates following the basic concepts of RPL to construct the routing tree and execute the message forwarding. However, the new approach gives particular attention to the movement of MNs. This proposal is divided into three phases: movement detection, reaction, and notification. During the first phase, when MN is sending data messages to its Preferred Parent (PP), the PP should compute the RSSI for each packet received. Whether or not the RSSI value degrades below a predefined threshold, PP identifies that MN is moving away and should indicate it to find a new association node, i.e., a new PP. The current PP realizes this indication using a DIS message (flag = 1). After receiving the indication, MN starts the second phase. During this phase, MN should consider its direction and neighbor list to choose the new PP that can offer greater linkage time. For this purpose, MN broadcasts DIS (flag = 2) messages requesting the reception of DIO messages (flag = 1) from its static neighbors. After receiving DIO messages, MN should compute the RSSI of each neighbor. The computed RSSIs are used by the Extended Kalman Filter (EKF) to predict the MN movement trajectory. Posteriorly, MN should select its new PP considering its future movement and start the third phase. In this last phase, MN should send a DAO message to notify its neighbor that it was selected as the new PP. Furthermore, if possible, the MN should transmit a DAO \"no-path\" message to its previous PP to inform the disconnection. Notice that, between Phases 2 and 3, the MN can stop the sending of data messages to avoid packet loss and energy consumption. Hence, EKF-MRPL, through its movement prediction mechanism that allows MNs to select PPs with greater linkage time, reduces the number of preferred parent changes, contributing to the reduction of control message usage. Consequently, the protocol helps to reduce energy consumption and increase packet delivery. Aiming to provide mobile support to LLN with highly dynamic network traffic, [PERSON] et al. proposed the Backpressure RPL (BRPL) [PERSON] et al. (2018). BRPL, according to the authors, is the first routing protocol for LLN that merges RPL and the concepts of backpressure routing [PERSON] et al. (2018) to provide support to mobility and adaptability to various throughputs. As RPL, BRPL allows the use of multiple logical topologies (multiple DAGs) that can be created according to different OFs. However, contrary to RPL, each BRPL node maintains a queue of buffered packets for each DAG. Information such as RPL rank, queue length, and maximum queue length are exchanged among the nodes using DIO messages. Thus, each node that received a DIO message should update the information about the packet sender in the neighbor table. In the packet forwarding, the link weight of each neighbor is computed considering both its rank value and queue length. BRPL also uses a \(\theta\) (theta) parameter to represent the tradeoff among the variables employed in the link cost computation (length of queues and rank of nodes). The \(\theta\) value, which varies between zero and one, is dynamically adjusted by the QuickThetaalgorithm. QuickTheta defines the \(\theta\) value according to the congestion level and the mobility of nodes.