# Multiple Instances QoS Routing in RPL: Application to Smart Grids +
## 2 Related Work  
### RPL Protocol Overview  
RPL is a Distance Vector routing protocol based on IPv6 for LLNs. It divides the network into multiple logical graphs called DODAGs (Direction-Oriented Directed Acyclic Graphs). DODAGs are tree-like structures oriented towards the root sink of the network built in order to avoid loops. Each node in a DODAG has a rank (hop-distance from the root), that increases by going down the tree from the root. RPL can use multiple overlapping DODAGs over the entire network to provide different levels of QoS in the network layer. In this case, each level/DODAG is called an instance. Thus an RPL network contains at least one instance. An instance is composed of one or more DODAGs. A node can join a single DODAG per example, but it can participate in multiple instances to carry different types of traffic simultaneously. An RPL instance is associated with an objective function in order to optimize the topology based on several metrics/constraints such as the shortest path or the quality of the links. Minimum Rank with Hysteresis Objective Function (\(MRHOF\)) [15] and Objective Function Zero (\(OF0\)) [16] are the two standardized objective functions in RPL. \(MRHOF\) uses the \(ETX\) metric [17] by default. \(OF0\) uses the \"step_of_rank\" to compute the amount by which to increase the rank along a particular link using static (Hop count) or dynamic metrics (\(ETX\)). Whatever the metric, a DODAG construction starts from the root by sending DODAG Information Object (DIO) messages to  
Figure 2: Smart Grid metering data collection.  
its neighbors. The DIO contains the metric/constraint used by the objective function and the rules to join a DODAG (e.g., DIO sending interval). Nodes will receive and process DIO messages potentially from multiple nodes and make a decision to join the graph or not according to the objective function and local policies (if existing). Once a node joins a graph, it automatically has a route towards the sink through its parent node. The node then computes its rank within the graph, which indicates its position within the DODAG. If configured to act as a root, it starts advertising the graph information with the new information to its own neighboring nodes. If the node is a leaf node, it simply joins the graph and does not send any DIO message. The neighboring nodes will repeat this process and perform parent selection, route addition and graph information advertisement using DIO messages. At the end of this process, only upward routes (i.e., to the root) are built. To establish downward routes, a node must send a Destination Advertisement Object (DAO) to its parent containing prefix information of the nodes in its sub-DODAG, when the DAO message arrives to the root, the prefixes are aggregated and the downward routes are then built and made available to the parents, and so on. RPL nodes can also send DODAG Information Solicitation (DIS) messages to solicit DIO messages from neighbors. RPL uses the trickle algorithm to reduce the DIO messages rate. For example, if the number of DIO messages sent within an interval is not consistent with the network state, RPL resets the trickle timer to a minimum value. Otherwise, if the number of DIO messages is bigger than a certain threshold, the trickle interval (DIO message rate sending) is doubled up to a maximum value.