# Routing Protocol for Low power and Lossy Networks

Routing Protocol for Low power and Lossy Networks (RPL) [rip′əl] (deutsch „Routing-Protokoll für leistungsarme und verlustbehaftete Netzwerke“) ist ein Internet-Routing-Protokoll, welches speziell für drahtlose Sensornetze optimiert ist und von der IETF spezifiziert wird. Das Protokoll ist nicht mehr für IPv4, sondern nur noch für IPv6 spezifiziert.

## Entstehung

Als die IETF-Arbeitsgruppe ROLL (Routing Over LoW power Lossy networks) existierende Routing-Protokolle wie OSPF, IS-IS, AODV und OLSR analysierte, stellte sie fest, dass diese Protokolle in ihrer jetzigen Form die Anforderungen an ein Routingprotokoll für Sensornetze nicht erfüllten.
Daher begann die IETF mit der Entwicklung eines neuen Routingprotokolls, das „RPL“ genannt wurde. Das Design von RPL ist eng mit der Entwicklung von 6LoWPAN verbunden.
RPL ist im RFC 6550 spezifiziert. Weitere wichtige Spezifikationen der ROLL-Gruppe sind der Trickle-Algorithmus (RFC 6206) für das Timing der Informationspakete, Routingmetriken (RFC 6551), sowie die Objective Function Zero (RFC 6552), die für die Wahl des bevorzugten Elternknotens benötigt wird.

## Funktionsweise

RPL ist ein dynamisches Routing-Protokoll und basiert auf einem Distanzvektoralgorithmus (vgl. RIP). Hierdurch konstruiert RPL zielorientierte, gerichtete, azyklische Graphen (englisch DODAG – Destination Oriented Directed Acyclic Graph). Im Gegensatz zu einem DAG kann ein DODAG nur einen Zielknoten haben.
Jeder Knoten teilt seinen Status periodisch in einem DODAG Information Object (DIO) mit. Hier enthaltene Informationen sind u. a. der Rang des Knotens im DODAG, die DODAG-ID, die RPL-Instanz-ID, die Iteration der RPL-Instanz und die Information, ob es sich bei dem Knoten um einen Zielknoten handelt. Mit diesen Informationen ist jeder Knoten durch Anwendung des Distanzvektoralgorithmus in der Lage, den für ihn besten Elternknoten (der sogenannte Next Hop auf dem Weg zum Ziel) auszuwählen.
Da Sensornetze oft hinsichtlich ihrer Rechenleistung beschränkt sind oder mit Batteriestrom betrieben werden, kann es vorkommen, dass sie längere Zeit keine Informationen senden – z. B. um Energie zu sparen, wenn keine neuen Anwendungsdaten vorhanden sind.
In diesem Fall kann ein Knoten explizit ein DIO mit einer DODAG Information Solicitation (DIS) anfordern.
Auf diese Weise ist jeder Knoten im DODAG in der Lage den Zielknoten zu erreichen. Elternknoten wissen jedoch nichts von ihren Kinderknoten. Damit der Zielknoten die anderen Knoten erreichen kann, schicken diese ein Destination Advertisement Object (DAO) an ihren Elternknoten. Darin befinden sich Informationen, welche Knoten über diesen Knoten erreicht werden können. Handelt es sich um einen Knoten ohne Kinderknoten, sendet dieser also nur die Information, dass er selbst zu erreichen ist. Der Elternknoten leitet daraufhin die DAO-Nachricht an seinen eigenen Elternknoten weiter, mit der Information, dass dieser Knoten über ihn zu erreichen ist.
Die Abbildung rechts zeigt einen DODAG mit Zielknoten E. Die roten Verbindungen stellen den bevorzugten Verbindungspfad, die blauen Verbindungen einen alternativen Verbindungspfad dar.

## Kritik

Thomas Clausen, Ulrich Herberg und Matthias Philipp veröffentlichten im Jahr 2011 eine kritische Evaluierung des Protokolls. Sie kritisieren unter anderem, dass bisherige Implementierungen mit 50KByte bei Sensoren bereits einen großen Teil des Speichers wegnähmen. Außerdem sei das Protokoll hauptsächlich für eine Kommunikation von den Knoten zum Zielknoten ausgelegt und führe bei Kommunikation der Knoten untereinander zu einem erhöhten Routingaufwand und Overhead.

## Simulationswerkzeuge

Simulation von komplexen RPL-Szenarien können mit z. B. dem rpl-simulator durchgeführt werden.