# Collision Avoidance Geographic P2P-RPL in Multi-Hop Indoor Wireless Networks
## 3 Collision Avoidance Geographic Point-to-Point RPL
### Collision Avoidance Geographic P2P-RPL with Elastic Trickle Algorithm  
In standard P2P-RPL, the recommended value of the redundancy constant \(k\) is 1 to reduce the number of messages generated during a route discovery procedure [6]. This setting reduces the energy consumption of each node but increases the time required for the route discovery procedure to complete. Especially when high message suppression is performed (e.g., \(k=1\)), the non-deterministic nature of trickle leads to suboptimal route formation. Low minimum interval size \(I_{min}\) values result in the creation of the first DODAG within a short period of time; however, a long listen-only period problem inherently increases the DODAG formation time. In order to mitigate these problems, we propose the collision avoidance elastic trickle timer algorithm for P2P route discovery. To make the network convergence time faster, the relay nodes send a P2P-DIO faster than other nodes. The collision avoidance elastic trickle timer algorithm allows a node to select the listen-only period dynamically depending on the priority value related to the geographic position of each node. Given a higher transmission priority value, the listen-only period will become shorter. The priority value is determined by the distance from the sender node, and the angle difference between the connecting line of sender-target nodes and the connecting line of sender-destination nodes. The farther distance and the smaller angle difference assigns the higher transmission priority value. Each node has own interval \(I\), and this interval is halved into two subsequent time intervals: the listening interval (i.e., listen-only period) and the transmitting interval, respectively. The trickle algorithm begins with \(I_{min}\) as the first interval. At the start of new  
Figure 3: The process of (**a**) Determining the location-constrained forwarding zone and (**b**) location-aided P2P route discovery. interval, a DIO message transmission is scheduled at a time \(t\) in the range of \([I/2,I]\) and the redundancy constant \(c\) is reset to 0. A node only listens and receives messages from its neighbors until time \(t\). During the listening interval, a node keeps track of the received DIO messages by increasing \(c\) each time a consistent DIO message is received. At time \(t\), if \(c\) is lower than \(k\), the node transmits DIO. If not, it suppresses DIO message transmission. At the end of the interval, the next interval size is doubled with respect to current one until the interval reaches \(I_{max}\). The procedure is summarized as follows. 1. The transmission priority constant \(s\) is added, and it is used when dynamically selecting the listen-only period. The priority constant \(s\) is initialized every time a new interval starts. 2. The specific time \(t\) is chosen randomly in \([I/2^{s+1},I]\). 3. When a node \(N_{i}\) receives DIO transmission from sender node \(A\), node \(N_{i}\) calculates \(d_{AN_{i}}\) and \(\angle AN_{i}D\) using the location information piggybacked in the received message, where \(d_{AN_{i}}\) denotes the distance between node \(A\) and node \(N_{i}\), \(\angle AN_{i}D\) denotes the angle difference from node \(N_{i}\) to the line connecting node \(A\) and node \(D\). 4. The node counts the transmission priority constant \(s\) when the calculated distance from the sender is greater than the predefined threshold value \(D_{TH}\) or when the calculated angle difference to sender-destination line is greater than the predefined threshold value \(\theta_{TH}\). A pseudo-code of collision avoidance elastic trickle timer algorithm is presented in Algorithm 1. Algorithm 1 describes how a relay node selects the length of listen-only period according to the locations of the sender and destination nodes. The \"\(+\)\" and \"\(-\)\" signs in Algorithm 1 indicate the modifications with respect to the standard, which has been added and removed respectively [1]. Figure 4 shows an example of a collision avoidance elastic trickle operation with four nodes, \(k=1\).