## 3 IPv6 Routing Protocol for Low-Power and Lossy Networks: State-of-the-Art  
RPL is a standard designed exclusively for routing in LLNs with the expectation of joining thousands of conventional WSN nodes in the network. It supports three traffic patterns: MP2P, P2 MP and point-to-point (P2P). The basic idea of RPL is that the high degree of autonomy in the WSN nodes level through building a Destination Oriented DAGs (DODAGs) rooted towards one sink. In the RPL-based network, three types of control messages are used. DODAG Information Object (DIO) messages (sent in multicast way) are used to construct and maintain upwards routes of the DODAG for MP2P traffic pattern. Moreover, downward routes (for P2 MP) are managed by Destination Advertisement Object (DAO) messages that are sent by router nodes and used for the propagation of routing tables. Another common message is DODAG Information Solicitation (DIS) that can be sent by any node in the RPL to solicit DIO messages from its neighborhood to update routing information. In the RPL specification [10], there are more detailed explanations that the reader can find and comprehend, and a better organized and clarified statement of RPL in [24, 25]. ROLL WG has a long vision for the development of RPL routing protocol. OFs introduce high flexibility into its framework. DODAGs can be optimized according to a specialized OF and be identified by an Objective Code Point (OCP), which indicates the dynamic constraints and the metrics (listed in Table 1) [26]. Therefore, RPL is easily to be adapted to meet the requirements of different LLNs and application scenarios thanks to the flexibility and scalability of OFs. Starting from the documented OF0 in [27], numerous contributions have been undertaken to achieve QoS aware routing in various LLNs use cases [7, 23, 28], and to test RPL framework by modeling and experiments. RPL is designed to be widely applicable, and it provides a set of available configuration options. The RPL specification [10] presents a number of design choices and configuration parameters that are references to build a more efficient RPL implementation. In [29], an overview and evaluation profile (_i.e._, two use cases: a small outdoor nodes deployment for building automation and a large-scale smart meter network) of RPL are presented. Furthermore, the above RPL implementations usually require a protocol stack as a structure to build a low-power and reliable mesh network that can be fully integrated into the Internet. To the best of our knowledge, ZigBee IP [30], 6 TiSCH [31], OpenWSN [32] and Contiki uIPv6 [33] are the current four most promising and viable protocol stack solutions for IoT including RPL as default routing protocol. In addition, the Contiki COOJA [34] platform is adopted by the authors of [35] to evaluate network overhead, throughput and end-to-end delay for different network sizes. For real world devices, ContikiRPL is the first RPL implementation. It has been built into Contiki OS as a \begin{table}
\begin{tabular}{c c} \hline
**Routing Metric/Constraint Objects** & **Description** \\ \hline
**Node State and Attribute** & CPU, Memory, congestion situation \\
**Node ENERGY** & Power mode, estimated remaining lifetime \\
**Hop Count** & Number of hops \\
**Link Throughput** & Maximum or minimum value \\
**Link Latency** & Sum of all latencies, pruning links higher than certain threshold \\
**Link Reliability** & Packet reception ratio, BER, mean time between failures... Link Quality Level (LQL); ETX \\
**Link Color** & 10-bit encoded color to links, avoid or attract specific links/ traffic types \\ \hline \end{tabular}
\end{table} 
Table 1: A list of routing metric/constraint objects for RPL. default routing protocol. Moreover, Contiki is a comprehensive platform including simulation, experimentation, and evaluation of IoT protocol stack. The flexibility of RPL can tackle the specific requirements from the characteristics of A-LLNs.