## 3 RPL Protocol Overview  
RPL [5] is a distance vector protocol designed for IP-enabled smart objects. These entities are known to be highly constrained in terms of energy, memory, and computational capacity [6]. They form what we call Low power and Lossy Networks (LLNs). The LLNs are characterized by their dynamism, links' unreliability, low data rates, and tolerance for packet loss.  
The main function of RPL [5] is to establish the organization/topology connecting the nodes in a network, ensuring cycle-free paths, between every node and the root (or sink). The obtained topology has a tree-like structure that is a Destination Oriented Directed Acyclic Graph, commonly referred to as DODAG (see Figure 1). It is worthy to note that the standard RPL, supports the creation and superposition of several DODAGs in the same network, each of which is rooted at a different sink node. For the sake of simplicity, we limit ourselves to one single sink node and a single DODAG.  
The DODAG is gradually created through pro-actively sending DODAG Information Object (DIO) messages. The root node, i.e., the sink, initiates the building process. It sends the first DIO message, allowing its immediate neighbors (potential children), to join the DODAG by selecting the root as a parent. A second wave of DIO messages is generated by the already joined neighbors to invite their own immediate neighboring nodes (new potential children) to also join the DODAG: as such, former children become parents and the original root becomes grand parent. Consequently, a node could receive more than one DIO coming from higher layer neighbors. It selects a preferred parent based on an objective function (OF).  
To avoid loops formation, a node maintains a Rank reflecting its depth relatively to the root. This particular information is calculated using the Rank of the preferred parent, to which a node adds a positive quantity, qualifying the wireless link, linking both of them (i.e., 1 if the rank represents the number of hops to the root [23], or more generally, the local Expected Transmission Count (ETX) [24] value if the Rank that represents the path ETX value to the root [25], etc.).  
Figure 1: An example of RPL built routing topology (Destination Oriented Directed Acyclic Graph (DODAG)).  
Hence, the Rank of a sensor needs to be carried over to its neighborhood by its dissemination in the DIO messages. Upon its reception, a neighbor node updates its own information if it finds that its own Rank is larger than the one included in the received message (i.e., the one used by the parent node).  
The built DODAG is used for routing purposes. In fact, RPL defines two directions for communication: \(UP\) and \(DOWN\). While the first refers to the direction \"leaf sensor nodes \(\rightarrow\) DODAG root\", the second refers to the opposite direction. In both directions, data-flows travel using the DODAG edges either \(UP\) or \(DOWN\). With such routing structure, RPL supports three types of communication: (i) Many-to-One (i.e., Multi-point to Point: MP2P), representing a communication in the \(UP\) direction. (ii) One-to-Many (i.e., Point to Multi-point: P2 MP), representing a communication in the \(DOWN\) direction. (iii) One-to-One (i.e., Point to Point: P2P), representing a communication in the either directions or in both simultaneously: from a node to another, thus we may need to go \(UP\), and then \(DOWN\) to reach the destination.  
It is worth mentioning that besides the DODAG Information Object (DIO) messages, RPL defines two additional types of messages. The first is called the DODAG Information Solicitation (DIS) message, which is periodically sent by a node, to solicit from its neighborhood any information regarding the formation of a DODAG. The second is called the DODAG Destination Advertisement Object (DAO) used to enable downward traffic. For this, a node advertises a so-called \"prefix reachability towards the leaf nodes of a DODAG\".