# Enhancements and Challenges in CoAP--A Survey
## 1 Introduction  
Wireless Sensor Networks are used widely in many applications such as in the Internet of Things (IoT) domain, Internet of Underwater Things (IoUT), Internet of Everything (IoE), etc. The nodes in wireless sensor networks (WSN) are interconnected to each other for the purpose of monitoring, detecting and gathering data from environments and communicating it among different nodes or propagating it to a data collection point [1]. These nodes are usually equipped with limited memory, low battery power, and constrained processing capabilities. Moreover, these devices are typically employed in low bit error rate environments with lossy communication link. The limitations of these devices and communication links requires a lighter and reliable application protocol with an efficient congestion control mechanism for IoT and WSNs. To fulfil the need for a lighter application protocol for IoT devices a specialized web transfer protocol called the Constrained Application Protocol (CoAP) was developed by IETF for low power constrained network devices [2]. The CoAP functionality is based on the REST (Representational State Transfer) architecture [3]. Figure 1 represents an overview of the CoAP architecture. The transport layer protocol in CoAP is User Datagram Protocol (UDP). Unlike the Transmission Control Protocol (TCP), UDP is unreliable and vulnerable to congestion in network [4]. Therefore, a congestion control mechanism is required in CoAP. A default congestion control mechanism is established for CoAP [2], which uses a simple binary exponential backoff (BEB) [5]. The default mechanism of CoAP, however,is not efficient or effective. To overcome the issues in default congestion control mechanism of CoAP, a number of other schemes have been developed such as CoCoA [6], CoCoA+ [7], pCoCoA [8], etc. These schemes are further discussed in detail in the upcoming sections. Since default congestion control mechanism hardly fulfils the requirements of WSNs and IoT networks, another congestion control mechanism named as Congestion Control/Advance (CoCoA) is standardized by IETF [6]. The CoCoA provides better congestion control mechanism for CoAP with minimal additional resources; however, several problems in CoCoA are also detected which causes it to work even worse than default congestion control mechanism of CoAP under various network conditions [7]. This led to the development of number of advance congestion control mechanisms for CoAP to overcome the shortcomings of default CoAP and CoCoA. Most of these methods are for reliable communication in CoAP, whereas some are presented for unreliable communication as well. These solutions are based on Round Trip Time (RTT) calculations, queueing delay, traffic rate conditions, and bandwidth delay product. Along with enhancements in congestion control mechanism of CoAP, research was done to enhance CoAP in other domains as well. CoAP being a new protocol is not fully explored in many domains. As it is being employed in different applications, more and more application specific enhancements are being performed. Much research was carried out to enhance CoAP for security, end-to-end authentication, streaming services, etc. The details of these mentioned enhancements in CoAP are presented later in this paper. In order to highlight the use of enhanced versions of CoAP congestion control schemes, the survey also provides the qualitative and quantitative analysis of these schemes. The analysis provides clear insight of average percentage improvements in various performance metrics of proposed schemes compared to the default congestion control mechanism of CoAP. The presented survey discusses the enhancements in CoAP in an application-oriented manner. Due to the increased demands and diverse requirements of the IoT communication solutions, the survey first introduces an overview of CoAP protocol in Section 2 following with an overview of applications of CoAP in Section 3.