IPv6 Routing Protocol for Low-Power and Lossy Networks

RPL (Routing Protocol for Low-Power and Lossy Networks) is a routing protocol for wireless networks with low power consumption and generally susceptible to packet loss. It is a proactive protocol based on distance vectors and operates on IEEE 802.15.4, optimized for multi-hop and many-to-one communication, but also supports one-to-one messages.

This protocol is specified in with special applications in RFCs. RPL can support a wide variety of link layers, including those with limitations, with potential losses or that are used in devices with limited resources. This protocol can quickly create network routes, share routing knowledge and adapt the topology in an efficient way.

Protocol configuration
RPL creates a topology similar to a tree (DAG or directed acyclic graph). Each node within the network has an assigned rank (Rank), which increases as the teams move away from the root node (DODAG ). The nodes resend packets using the lowest range as the route selection criteria.

Three control messages are defined in ICMPv6 via :


 * DIS (information request DODAG ): Used to request information from nearby DODAG, analogous to router request messages used to discover existing networks.
 * DIO (object of information of the DAG): Message that shares information from the DAG, sent in response to DIS messages, as well as used periodically to refresh the information of the nodes on the topology of the network.
 * DAO (object of update to the destination): Sent in the direction of the DODAG, it is a message sent by the teams to update the information of their "parent" nodes throughout the DAG.

Implementation
The implementation of the RPL protocol occurs in wireless sensors and networks, the most used operating system for its implementation is Contiki which is a small open source operating system developed for use in a number of small systems ranging from 8-bit computers to integrated systems on microcontrollers, including sensor network nodes.

Other operating systems
The RPL protocol is implemented in other operating systems, such as:


 * LiteOS is an edition of the Zorin OS operating system designed for low-resource computers, developed in principle for calculators, but which has also been used for sensor networks.
 * TinyOs was the first operating system oriented to the wireless sensor network (WSN), works through events and guided tasks, and uses an extension of the C language, called nesC. TinyOS is implemented as a set of cooperating tasks and processes and it determines the priorities between tasks and events.
 * T-Kernel is an operating system that accepts applications as executable images in basic instructions. Therefore, it will not matter if it is written in C++ or Assembly language.
 * EyeOS is defined as a desktop environment based on Web, which allows monitoring and access to a remote system through a simple search engine.
 * RIOT is a small operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of Things (IoT) devices.