### Routing Protocol for Low Power and Lossy Network (RPL)  
Due to the constrained environment of LLN, it is obligatory to conserve the energy of such devices while transmitting and transferring information among networks' nodes. Therefore, several protocols have been devised and standardized to allow and manage the communication amongst LLN's resource-constrained devices. One of the most popular proposed protocols for routing purposes in LLNs is RPL [11].  
The RPL is a standard routing protocol for LLNs established by the IETF Routing Over Low power and Lossy network (ROLL) task force in 2012 and detailed in Request for Comment (RFC) 6550 [12]. IEEE licensed the development of RPL to overcome the current gap in the routing of IoT networks and attain the limited capabilities of LLN's devices. The fundamental concept underlying RPL is the topological concept of Destination-Oriented Directed Acyclic Graphs (DODAGs).  
The DODAG is a directed graph with no loops oriented towards a root node. The nodes that provide Internet access (gateways) are called root nodes, and the other nodes in the network are linked with it either directly or indirectly through a sequence of parent nodes. Furthermore, each node is responsible for selecting the desired parent, who is then used for forwarding the application packets. The parent node selection depends on the rank value that a device (node) can achieve. Moreover, the rank value refers to the position of a node in the DODAG. Hence, the rank value is affected by the node's distance from the root and the Objective Function (OF). The OF determines numerous metrics, such as rank of nodes, selection of the parent node, and route optimization. The versatility of RPL to interact with many limited devices is the primary reason for its adoption in LLNs [11].  
The RPL adds five new control messages for constructing and maintaining the DODAG and communication routes. The RPL control messages are a specific type of Internet Control Messages Protocol version 6 (ICMPv6) control message, as follows:  
* **DODAG Information Solicitation (DIS).** Nodes intending to join a network but have yet to receive DODAG Information Object (DIO message advertise a DIS message to inquire for available DODAG to create a connection).
* **DODAG Information Object (DIO)**. Nodes use the DIO message for locating RPL instances, learning about DODAG configurations, choosing a preferred parent, keeping DODAG structure in place, and knowing the current rank of the node and the IPv6 address of the root [13].
* A **Destination Advertisement Object (DAO)** message is used for advertising backward route information by building upward and downward routes between nodes and then creating routing tables on receiving nodes [14].
* A **Destination Advertisement Object Acknowledgement (DAO-ACK)** message is a response message to a DAO message.
* **Consistency Check (CC)**. The RPL protocol employs CC to ensure the synchronization of the \"security counter or timestamp between each pair of nodes\" [15].  
The RPL supports various communication paradigms, Point-to-MultiPoint (P2 MP), Point-to-Point (P2P), and MultiPoint-to-Point (MP2P) [15]. In addition, the RPL supports two modes of operation. First, the storing mode, where each node maintains a downward routing table for its sub-DODAG and uses it to transmit P2P traffic. Consequently, the traffic will go upward until it arrives at a common predecessor (of the sender and destination), then it will be forwarded downward to the destination node. Second, the non-storing mode, where the root node is the sole device that retains. Application packets are first sent to the root node, then re-routed to their destination in this mode. Those looking for further explanations of the architecture and implementation of the RPL protocol can find them in [16].