# Congestion Control in CoAP Observe Group Communication
## 1 Introduction  
The Internet of Things (IoT) is a technology which has been developed to provide internet connectivity in various networking systems, everyday objects, and electronic devices. Such connectivity works under the IEEE 802.15.4 standard [1] and relies on IP-based systems which employ IP for communication; e.g., Thread and 6 LoWPAN. To account for such communication, the Internet Engineering Task Force (IETF) [2] developed a Constrained Application Protocol (CoAP), which is a specialized web transfer protocol for constrained devices and constrained networks. Its operations are similar to those of a Hypertext Transfer Protocol (HTTP) [3]. In addition, the CoAP runs over the User Datagram Protocol (UDP) instead of the Transmission Control Protocol (TCP) and does not require a three-way handshake and the maintenance of a connection status; it is therefore considered to be more suitable for constrained devices and technological operations that support communications between objects or devices or so-called machine-to-machine (M2M) protocols. A commonplace example canbe taken from an application that helps monitor and send warnings/alerts about natural disasters. This application generates continuous traffic and burst traffic. Sensor nodes in a network tend to receive or cache sets of captured sensory data together and then deliver them to a base station, resulting in a huge load of information in the network [4; 5; 6; 7; 8].  
Generally, there are two communication patterns, both CoAP-based and Observing Resource (Obs), which are considered as one-to-one communication [9]. Since a variety of application domains require data from IoT devices, data communication between a sender and a receiver is essential, contributing to the emergence of group communication [10; 11; 12; 13]. At the same time, congestion control for group communication has also been developed as a crucial communication platform for networks with a large number of sensor nodes [14; 15; 16; 17; 18]. Under these circumstances, only the congestion control for CoAP-based Group Communication, or the so-called default CoAP mechanism, has been developed. This functions similarly to TCP congestion control, but it is based on the CoAP message exchange via UDP by a request message (a confirmable message) which is transferred from a client to a server. This also requires the client to wait for an acknowledgement message with the data/response that the client needs. The default CoAP mechanism is, however, not suitable for Obs congestion control. When notifications are sent from the server to the client, the system users are unable to determine the duration of the delay before each notification, and they cannot determine the data rate for such notifications. These problems have led to the development of the congestion control mechanism for CoAP in order to facilitate the observation of group communication.  
In this article, we introduce the Congestion Control Random Early Detection (CoCo-RED) mechanism which combines the use of the RevRED algorithm for buffer management and the FPB algorithm to obtain retransmission timeout (RTO) estimations for the transmission of the CoAP messages. CoCo-RED was designed to deliver a congestion control that is not only adaptive to network conditions but suitable for IoT characteristics.  
The rest of the paper is organized as follows. In Section 2, we summarize how the CoAP yields congestion control mechanisms and then derive two core mechanisms from it. We also analyze how these two core mechanisms are implemented in the CoAP. In Section 3, we propose a new approach to a congestion control mechanism for CoAP Observe Group Communication: CoCo-RED. In Section 4, we introduce a simulation setup and communication protocol stack configurations that can be used to carry out performance evaluations of CoCo-RED and compare them to the default CoAP mechanism. The results of these evaluations are presented in Section 5, and the conclusions of this paper are provided in Section 6.