## 5 IETF ROLL Working Group
### Group Description and Key Protocols
#### 5.1.2 IPv6 Routing Protocol for Low Power and Lossy Networks  
With the specification of RPL in _RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks_ (RFC 6550) [41], the IETF has specified a proactive \"route-over\" architecture where routing and forwarding is implemented at the network layer, according to the IP architecture. The protocol provides a mechanism whereby multipoint-to-point, point-to-multipoint and point-to-point traffic are supported. Although RPL was specified according to the routing requirements for LLNs, its use is not limited to these applications. RPL routes are optimized for traffic to or from a root that acts as a sink/root for the topology. The functioning of the RPL routing protocol is based on the construction of a _Directed Acyclic Graph_ (DAG), which consist of one or more DODAGs (_Destination Oriented DAGs_), for each sink/root a DODAG. The position of an individual node in a DODAG is determined by the rank of the node. This rank is calculated based on the _Objective Function_ (OF), which defines how to translate one or more metrics and constraints, defined in _Routing metrics used for path calculation in low power and lossy networks_ (RFC 6551) [42], into a rank. The OF also specifies how a node has to select his parent. Different DODAGs based on a same OF are represented by a RPLInstanceID. More details concerning OFs can be found in _Objective Function Zero for the Routing Protocol for Low-Power and Lassy Networks (RPL)_ (RFC 6552) [43], _The Minimum Rank with Hysteresis Objective Function_ (RFC 6719) [44] and RFC 6551. When a new node joins a RPL network, it first listens to receive _DODAG Information Object_ (DIO) messages, which are broadcasted periodically when the trickle timer [45] of neighboring nodes fires. When no DIO message is received, the node will broadcast a _DODAG Information Solicitation_ (DIS) message, which will force the neighboring nodes to send a DIO message. Based on the information of the DIO message from the neighboring nodes, the _Objective Function_ (OF) will select the preferred parent. When every node in the network has selected a preferred parent, the DODAG (for a specific OF and for each sink) has been constructed. Routing from a node towards the sink is established by forwarding each message, for collection by the sink, to each nodes parent, until packets reach the sink. Downward routes (root to leaf) are constructed using _Destination Advertisement Object_ (DAO) messages. When a node has selected a preferred parent it will send a DAO message to his preferred parent, which will be forwarded, via the parent's parent, towards the root. Two modes of operation are supported: Storing (fully stateful) or Non-Storing (fully source routed) mode. The mode of operation, for construction of downward routes will also influence the operation for point-to-point routes (Figure 9). In the Non-Storing case, the packet will travel all the way to a DODAG root before traveling down. In the Storing case, the packet may be directed down towards the destination by a common ancestor of the source and the destination prior to reaching a DODAG root. If the destination is on the route towards the root, the destination node of course will not forward the message. RPL messages are encapsulated into a new ICMPv6 message, defined in _Internet Control Message Protocol (ICMPv6) for IPv6 Specification_ (RFC 4443) [46]. For RPL control messages this results in a message structure illustrated by Figure 10, consisting of an ICMPv6 header followed by the actual message body (base) and some (optional) options. Figure 9: Packet flow for point-to-point traffic between two nodes in an RPL network. The code field identifies the type of the RPL control messages. Table 4 gives an overview of the different codes and their corresponding RPL message type. When the high order bit (\(0\times 80\)) in the code field is set, it indicates that security is enabled. In this case between the header and the base field a security field will be added.