# Study of Mobility Enhancements for RPL in Convergecast Scenarios
## 4 The RSSI, Rank, and Dynamic+ (RRD+) Mechanism
### Loop Avoidance and Rank Update
If the new RSSI is smaller than or equal to \(THRESHOLD\_2\), as in the case of node E and F, the receiver checks the difference between the new RSSI and the old RSSI to estimate movement direction without using hysteresis. In this case the receiver node is at the edge of transmission range of the sender, thus, updating information fast is imperative, therefore the receiver ignores the hysteresis test. In this situation, if the new RSSI value is bigger than the old one, as in the case of node E, this means that the receiver is at the edge of transmission range but is moving forwards node A. In this case, node E gives a short lifetime for node A and updates its own rank according to \(Rank\_r=Rank\_s+MinIncrease\). Otherwise, if the new RSSI value is smaller than the old one, as in the case of node F, this means that receiver node is getting away from the sender. In this case, node F increments its own rank by \(Rank\_r=Rank\_r+MinIncrease\). Finally, in case \(Rank\_r\) is smaller than \(Rank\_s\) we ignore the control messages. ### Ripple Control Message Management

The trickle algorithm is used by RPL in order to reduce overhead in static networks. The trickle algorithm starts with a short interval between two DIOs in order to construct the network fast. Each time, the interval will be increased until it reaches \(I_{max}\). However, when the interval increases, the trickle algorithm cannot cope with information update in a timely manner, which is important in mobility. Therefore, we propose a new DIO interval management called ripple control message management, which copes with topology changes and reduces overhead. This algorithm dynamically modifies the sending interval of DIOs according to rank updates as described in what follows. DIO messages are broadcast by the sink node and propagated by other nodes until they reach leaf nodes. The main function of DIO messages is to help children nodes find parent nodes. If we consider the rank as a virtual range, based on the sink, the rank in the network will be like ripples in the water and the sink is the center of the ripples. We think a DIO message that comes from a lower rank is more important than a DIO message that comes from a higher rank due to the fact that lower rank DIO messages will help more nodes find parent nodes. Thus, nodes that are closer to the sink should send DIO messages more frequently and the frequency of DIO messages may be reduced for nodes with higher ranks. Hence, we designed a dynamic DIO interval management according to rank updates to reduce overhead. The DIO interval calculation is shown in Equation (3). \[DIO\_interval=Base\_interval+Rank\times Time\_unit \tag{3}\]

where \(DIO\_interval\) dynamically changes due to the change of rank of nodes in mobility. The \(Base\_interval\) is the smallest \(DIO\_interval\). \(Rank\) stands for the current rank value of a node. The \(Time\_unit\) is the incremental step in the DIO frequency. ## 5 Evaluation Results

In this section we describe our simulation set-ups and we present the evaluation results by comparing RRD+ to other RPL mobility enhancements. ### Simulations Parameters

Many network simulators exist, such as Network Simulator 2 and 3, OMNeT++ (Objective Modular Network Testbed in C++), Cooja, TOSSIM (Tiny OS SIMulator), etc. We chose to use the Cooja simulator (Contiki 3.0, [PERSON], Sweden). It is a emulator for Contiki systems. It is compatible with real hardware and the simulation code can be used on real-life nodes. In addition, Contiki comes with standard RPL implementation on which we added all the different enhancements including RRD+. We made some modifications on the default parameters of Cooja in order to make it more realistic, especially when it comes to emulating signal propagation. There are four propagation models in Cooja [16]. One of them is Multi-path Ray-tracer Medium (MRM) which takes reflections and refractions into account to simulate real environment.