# Dynamic-RPL: Enhancing RPL-Based IoT Networks with Effective Support of Dynamic Topology Management
## 1 Introduction  
The proliferation of the Internet of Things (IoT) technology has opened the doors for a myriad of technological advancements and opportunities. Advanced provisioning of smart IoT services in different domains such as healthcare [1], industry [2], and agriculture [3] becomes remarkably evident. A revolutionary development of a variety of new smart IoT solutions is being widely witnessed nowadays for a broad scope of IoT applications. Examples are industrial automation, a smart city, environmental monitoring, and smart metering. The widespread deployment of IoT with expanding scope and scale has led to exponential growth in the number of IoT-connected objects during recent years. This has been forecasted to increase to more than 30 billion IoT devices in 2030 [4]. It has also been estimated that the IoT industry will generate USD 3.9-11.1 trillion a year in revenue by 2025 [5]. For energy-efficient wireless IoT networking, Low Power and Lossy Networks (LLNs) are widely adopted. It enables the establishment of effective IoT network infrastructures interconnecting resource-constrained IoT devices over wireless links of a limited bandwidth and high loss rate. Addressing effective network routing at the network layer of the LLN architecture is achieved with an IETF-standardized routing protocol referred to as the IPv6 Routing Protocol for Low Power and Lossy Networks (RPL). The development of the protocol is based on strict adherence to the inherent LLN features and limitations. However, RPL provides no standard support to rectify adverse network performance situations. Thepresence of stability and load issues across the network makes it hard for the standard RPL to operate effectively and maintain high network performance. The potential damages of a network collapse as well as complete communication disruption and data loss would then become inevitable. Its potential vulnerability to performance degradation is still a major design challenge. Therefore, there is a vital need to provide RPL with effective and advanced support to address these limitations and sustain high performance under challenging network conditions. To such a critical end, this paper proposes an innovative approach for dynamic RPL topology management, referred to as Dynamic-RPL. It provides an effective solution toward more topology flexibility and dynamicity in varying-scale networks deployed for any IoT application. It introduces simple in-protocol modifications to the standard RPL for extending its functionality to a further effective limit. Dynamic-RPL incorporates modified RPL topology establishment, customized RPL objective function and parent selection, a new dynamic topology management algorithm, and additional inter-routing support. These practically integrated protocol properties represent the novelty of this research work. Dynamic-RPL leverages the standard support of multi-instance and multi-sink topology formation to realize dynamic topology management. It is based on applying effective topology partitioning and aggregation in response to any load and stability changes in an RPL network. These operations are performed in a dynamic and distributed manner to optimize the network toward better performance and stability. To enable effective and informative decisions, cooperative communications among only the relevant nodes in the network are realized with a simple RPL setup. Dynamic-RPL ensures that a multi-sink network is always kept well-maintained from the topological and performance perspective. It also works effectively when the network is formed with a single sink setup. This research work provides a four-fold contribution. First, it provides a novel lightweight and distributed scheme to enhance RPL functionality with dynamic topology management. Second, it introduces a customized RPL objective function and dynamic parent selection strategy that only requires simple modifications to limited RPL operational aspects.