# Dynamic-RPL: Enhancing RPL-Based IoT Networks with Effective Support of Dynamic Topology Management
## 2 RPL Overview
Other parameters such as IPv6 addresses and node-ranking values are also disseminated to support recipients making effective DODAG attachment decisions. Figure 1: An example of a multi-instance RPL network. In addition, information regarding the Objective Function (OF) being currently implemented for the instance is contained in the DIO messages. Each instance is associated with only one OF to be applied in all its DODAGs. The topology formation of the DODAGs is then dictated using the applied OF to achieve certain routing optimization objectives and fulfill application-specific routing requirements. The OF design is made customizable to flexibly implement specific optimization goals and address certain network requirements such as reliability and energy reservation. Application-oriented OF formulation can be realized using single or composite routing metrics and constraints. Each one of these is a quantitative value calculated using specific networking parameters to represent a defined network characteristic. RFC 6551 [13] presents a set of common choices that are categorized into node and link routing metrics and constraints. There are two default standard OFs specified for RPL. These are Objective Function Zero (OF0) and Minimum Rank with Hysteresis Objective Function (MRHOF), which are specified in RFC 6552 [14] and RFC 6719 [15], respectively. OF0 provides a simple single-node-metric-OF that is based on the hop-count metric. MRHOF was developed to address network reliability using a single link metric. It utilizes the Estimated Transmission Count (ETX), which enables the calculation of the total number of transmissions/retransmissions made to successfully deliver data packets. Upon the reception of a DIO message, the advertised OF is applied by the recipient for node ranking and preferred parent selection. The rank information included in the received message is first utilized for the calculation of the recipient's rank. The rank value then represents the virtual distance of the node to the sink node of its current DODAG. By having the rank values increased when going deeper in the topology of the DODAG, routing loops can be prevented. Each node maintains a parent set containing all the lower-ranked neighbor nodes. OF-based selection of a preferred parent from the parent set is then performed. This enables the node to complete the attachment to the DODAG and establish a default route for upward DODAG routing. Following the establishment of upward routes, downward routing is initiated to establish internal routing paths for all the destinations across the network. Upon the reception of a DIO message and successful attachment to the DODAG, the node propagates its routing information over its default upward route. It unicasts a Destination Advertisement Object (DAO) message containing its IPv6 address to its preferred parent node. The DAO information is then kept disseminated using all the nodes along the upward paths to the sink node. These nodes also update their routing tables accordingly as long as they run RPL in a storing mode. Data packets destined for this node can then be internally routed via a common parent or ancestor node. If the nodes operate in a non-storing mode, no state can be maintained and internal routing of data packets is performed commonly via the sink node. In addition, RPL design incorporates the implementation of the Trickle algorithm [16] to realize low-cost DODAG construction and topology maintenance. It limits network overhead in a DODAG by controlling the transmission of DIO messages according to the stability of its topology. The algorithm defines the configurable minimum and maximum transmission interval values. It allows RPL to initially broadcast DIO messages based on the minimum interval value. As long as the DODAG remains stable with no changes to its topology, the transmission interval is increased exponentially until it reaches the maximum interval value.