# Study of Mobility Enhancements for RPL in Convergecast Scenarios
## 4 The RSSI, Rank, and Dynamic+ (RRD+) Mechanism
### Loop Avoidance and Rank Update  
Routing loop avoidance is a challenging task in mobility scenarios. In order to avoid this, RPL uses the rank value. The rank of a node must be greater than the rank of all nodes in its potential parents set and nodes cannot forward data packets to nodes with higher or equal ranks. However, RPL does not support rank update. A current next-hop may become a descendant due to untimely update of the rank value, and loops will occur. We propose monitoring link existence and movement direction to allow nodes to update their ranks in a timely manner. The goal is to update the rank of a node when it is about to lose its link with its current parent based on the link monitoring mechanism. Algorithm 1 depicts the rank update process. \(Rank\_r\) stands for the rank of the receiver of the control message and \(Rank\_s\) stands for the rank of the sender of the control message. \(Lifetime\_l\) stands for the long lifetime and \(Lifetime\_s\) represents the short lifetime. \(MinIncrease\) stands for the value of MinHopRankIncrease. Figure 1 shows a scenario with four nodes A, B, C, D, E, F and G. A is neighbour of nodes B, C, D, E and F. D and F are neighbours of G. We use a dotted circle to represent RSSI \(THRESHOLD\_1\) of node A and dashed circle to represent RSSI \(THRESHOLD\_2\) of node A. Note that due to the nature of wireless signal propagation, in reality both RSSI thresholds and transmission range are most likely to look like a cloud that changes from one transmission to another. Indeed, in our simulation model we used a probabilistic propagation model to take into account coverage zone instability. B, C, D, E and F  
Figure 1: The position of node B is within \(THRESHOLD\_1\) of node A. Node C and node D are between \(THRESHOLD\_1\) and \(THRESHOLD\_2\) of node A. Node E and node F are between \(THRESHOLD\_2\) and the transmission range of node A. Node G is out of the transmission range of node A, but is the neighbour of node D and node F. RSSI: received signal strength indicator. will execute Algorithm 1 whenever they receive a DIO message from A. G will execute Algorithm 1 whenever it receives a DIO message from D and F.  
Algorithm 1 is explained in what follows and the scenario of Figure 1 is used as an example. When a control message is received, if the rank of receiver node (\(Rank\_r\)) is bigger than the rank of sender nodes (\(Rank\_s\)), as in the case of node B, C, D, E and F, they need to check the new RSSI value (\(NewRSSI\)) of the control message. If the new RSSI is bigger than \(THRESHOLD\_1\), as in the case of node B, the receiver node sets a long lifetime for this parent and updates its rank \(Rank\_r=Rank\_s+\ MinIncrease\). ``` whiletruedo if\(Rank\_r>Rank\_s\)then if\(NewRSSI>THRESHOLD\_1\)then \(Rank\_r=Rank\_s+MinIncrease\);  Set \(Lifetime\_1\) for this parent node;  end if if\(THRESHOLD\_2<NewRSSI\leq THRESHOLD\_1\)then if\((NewRSSI-OldRSSI)<HYSTERESIS\)then \(Rank\_r=Rank\_r+MinIncrease\);  end if else \(Rank\_r=Rank\_s+MinIncrease\);  Set \(Lifetime\_s\) for this parent node;  end if elseif\(NewRSSI\leq THRESHOLD\_2\)then if\(NewRSSI\leq OldRSSI\)then \(Rank\_r=Rank\_r+MinIncrease\);  end if else \(Rank\_r=Rank\_s+MinIncrease\);  Set \(Lifetime\_s\) for this parent node;  end if  end if  end if else \(Rank\_r=Rank\_s+MinIncrease\);  Set \(Lifetime\_s\) for this parent node;  end if  end if  end if else  end if else \(Rank\_r=Rank\_s+MinIncrease\);  Set \(Lifetime\_s\) for this parent node



Otherwise, in the case \((NewRSSI-OldRSSI)\geq HYSTEREIS\), the receiver node gives a short lifetime for the sender node and updates its own rank according to \(Rank\_r=Rank\_s+MinIncrease\). By this way the receiver node is only one level below the sender node. This is the case of node C. The receiver node set the parent with a short lifetime in order to avoid keeping the sender node as a parent in case the receiver node moves away from the sender node.