# CoAR: Congestion-Aware Routing Protocol for Low Power and Lossy Networks for IoT Applications
## 1 Introduction  
Internet of Things (IoT) is an emerging technology that has received great attention among researchers across the world. It has provided a promising opportunity to build powerful applications in areas such as industrial monitoring, healthcare, agriculture, smart grid, and transportation due to such features as being able to work with IP-based network and heterogeneous devices [1]. IoT enables thousands of intelligent devices such as sensors, and the convergence of information technology such as wireless communication, to be connected and integrated with computer networks [2]. Generally, sensing devices employed in the IoT network are typically resource constrained in terms of processing, battery power, memory, reliability, etc. In order to cope with those challenges, a number of solutions have been developed, for instance, emerging IPv6 over low-power wireless personal area networks (6 LoWPANs) [3]. The IETF, IEEE, and ZigBee have developed various standards in recent years to enable resource-constrained devices to communicate effectively. Routing over low power and lossy networks (ROLL) group of IETF has provided protocol specifications for the routing protocol for low power and lossy networks (RPL) [4]. Using RPL, devices can communicate at the network level and be easily connected to the internet; therefore, it is considered the routing protocol for IoT. RPL is designed to address resource constraints of embedded devices and to support the particular low power and lossy network (LLN) environments. It constructs the directed acyclic graphs (DAGs) according to routing metrics and constraints. Depending on the specific application, different routing metrics can be designed and adopted, which is also one of the issues in this paper. Moreover, in RPL a node selects the routing parent according to its objective function (OF) and establishes a routing topology as a destination oriented directed acyclic graph (DODAG). RPL separates the concept of objective function from core specification that enables the users to define routing strategies and local policies to fulfill the network and application requirements. So far, two OFs have been standardized in RPL that optimizes the parent selections towards the root node. However, both of them relying solely on a single metric as the routing decision metric and perform poorly in LLNs under heavy and dynamic traffic [5]. In most scenarios, different from an ordinary environment, the industrial monitoring system under emergency scenarios needs to not only periodically collect the information from sensing region, but also respond rapidly to some unusual situations. Although RPL has been mainly used for low rate traffic scenarios, it needs to be capable of handling the heavy traffic load. This is because during the events in a sensing region, nodes may generate and forward high traffic towards the root and it may cause congestion at parent nodes. Therefore, congestion-aware routing metrics and parent selection mechanism in RPL becomes critical. In RPL specification [4], there is no explicit mechanism to detect and control the occurrence of congestion. Basically, RPL specifies a simple parent selection technique to avoid selecting parents with larger hop count or with a bad link quality. In fact, congestion in LLNs may occur at a particular node when the offered load exceeds the available capacity and, consequently, the received data has to be dropped. Besides this, congestion also happens due to the unfair utilization of the network resources. Generally, congestion occurs either at the sensor node or at the wireless link which is commonly known as node-level congestion and link-level congestion, respectively. Both types of congestion have a direct impact on quality of service (QoS) in IoT applications. Usually, node-level congestion is examined either by monitoring the buffer utilization or measuring the incoming and outgoing traffic rate, whereas link-level congestion is examined by monitoring the channel utilization.