# Study of Mobility Enhancements for RPL in Convergecast Scenarios
## 4 The RSSI, Rank, and Dynamic+ (RRD+) Mechanism
### Link Existence and Movement Direction Monitoring  
It is important to be able to estimate if a link is about the break in order to anticipate and find a new next-hop. In order to do so, we monitor the existence of links and try to anticipate if the link is about the break or not based on the variation of RSSI values.  
In RRD+ every node monitors links between itself and nodes in the parents set in order to avoid packet loss when link does not exist. The parents set contains neighbour nodes that have lower rank values. We use the RSSI values to estimate link quality. RSSI values are obtained from acknowledgement messages (ACK) and DIO messages. At the initial stage, network topology is constructed using DIO messages and RSSI values are obtained from these messages. After topology construction, for each successfully received data packet, receivers will send an ACK. This way senders will continuously get RSSI values from these ACK. A node may store two RSSI values for each node in its parents set, the old RSSI value and the new RSSI value. The old RSSI comes from the previous ACK or DIO and the new RSSI value is obtained from the current ACK or DIO. We use these two RSSI values to estimate the direction of movement. When the new RSSI is smaller than the old RSSI, we suppose the node is moving away from its parent node. When the new RSSI is bigger than old RSSI, we suppose the node is moving closer to its parent node.  
RSSI values might vary even when both nodes are not moving. Indeed, cover zones of transmitting nodes are very unstable especially in confined and complex environments. In order to take into account this phenomenon, we use two RSSI thresholds that we call \(THRESHOLD\_1\) and \(THRESHOLD\_2\), where \(THRESHOLD\_1>THRESHOLD\_2\) as shown in Figure 1. These two thresholds will help better estimate the link quality between two nodes as follows. When a new RSSI is smaller than or equal to \(THRESHOLD\_1\), the node considers that it has a good link quality with its parent node. If new RSSI is within the interval \([THRESHOLD\_2\), \(THRESHOLD\_1]\), the node needs to detect movement direction first and then to consider whether to stop using the link or not. In order to reduce the influence of variable coverage zone, we add a hysteresis value on the old RSSI when comparing new RSSI to old RSSI values. When the new RSSI is smaller than \(THRESHOLD\_2\), only new RSSI and old RSSI will be used to estimate direction without using hysteresis. If the node is getting closer to itsparent, we consider that this parent node can still be used as a next-hop. Otherwise, the parent node should be replaced.  
At the initial stage, each time a node receives a DIO and adds a new node into its parents set, a timer is set for this parent. We call this timer the lifetime of a parent. A parent is kept in the parents set for the duration of its lifetime timer and can be selected as the next-hops. A parent is deleted from the parents set when the timer expires. However, before the timer expires, if a new control message is received from this parent, the timer will be reset and lifetime is renewed. According to the RRD+ mechanism, we set two sorts of lifetimes: long lifetime and short lifetime.  
A long lifetime is given to the parent node in the case that the new RSSI is bigger than \(THRESHOLD\_1\). In the case the new RSSI is smaller than \(THRESHOLD\_1\), movement direction will be estimated first and a short lifetime is given to parent node when the movement direction is towards parent node, otherwise the rank value will be updated. When the rank value is updated, the current parent is removed from the parents set. Indeed, when the parent node is in a zone where the radio link is about to fail, a short lifetime will help avoid using this parent node for a long period in case we no longer receive its control messages.