# Effective IoT Congestion Control Algorithm
## 2 Related Work
Specifically, during periods of low congestion, TCP YeAH uses a concave control mechanism to gradually increase the CWND size at a rate proportional to the square root of the current CWND value. This helps to prevent sudden spikes in network traffic that may lead to congestion. During congestion, TCP YeAH switches to an additive increase/multiplicative decrease (AIMD) approach to congestion control, reducing the CWND size by a certain percentage to slow down the sending rate and prevent further congestion. While TCP YeAH offers significant advantages in terms of improving TCP performance under challenging network conditions, its complexity, potential fairness issues, and compatibility limitations must be carefully weighed against its benefits when deciding whether to implement it in a particular network environment, especially in an IoT environment. Bottleneck Bandwidth and Round-trip propagation time (BBR) [15] is a CCA developed by Google in 2016. It is designed to improve network performance by more efficiently utilizing available network bandwidth and reducing network latency. The TCP BBR algorithm works by continuously measuring the available bandwidth and the RTT of data packets as they traverse the network. Based on these measurements, the algorithm determines the ideal sending rate for the connection. TCP BBR operates by dynamically adjusting the sending rate based on the network's available bandwidth and RTT. It uses a model of the network to estimate the maximum amount of data that can be transmitted without causing congestion, and it calculates the ideal sending rate based on this estimate. TCP BBR aims to provide fair sharing of network resources; however, there is some concern that it may prioritize traffic from larger RTT over smaller RTT nodes. This could potentially create an uneven playing field and limit access to network resources for some nodes [16]. [PERSON] et al. [17] developed a CCA intended for use with lightweight IoT application protocols such as Message Queuing Telemetry Transport (MQTT) and Extensible Messaging and Presence Protocol (XMPP). It defines a new window initialization method and modifies the SS and CA phases by defining new parameters in order to work in two modes: reactive and proactive modes. There are two parameters in this context: rho and beta. The basic rule is that TCP works in a reactive mode when beta is less than rho and in a proactive mode when beta is greater than rho. The author compares the suggested algorithm with other standard protocols. The author claims that the algorithm increases the throughput and maintain fairness in TCP Cubic. [PERSON] et al. [18] proposed an Adaptive Congestion Window (ACW) for IoT devices. The design of the ACW depends on three parameters: sending rate, receiving rate and the available bandwidth of the path. The authors assume that there is a communication between the nodes to share connection information. The connection information is used to adjust the sending window when some nodes release/share the link; however, this information may burden the node and increase the packet overhead, which in turn reduces the link utilization and consumes the node resources and energy. [PERSON] et al. [19] proposes a novel STCP approach to control congestion in the IoT environment. In this approach, a new window initialization technique is used based on the current available bandwidth of the path in order to reach the available bandwidth as fast as possible. However, this method is not recommended according to [3]; SS phase is preferable. This process develops a new approach for detecting congestion prior to collapse and sets the CWND limits accordingly. This approach is called Early Congestion Detection; this factor is computed depending on the queue size of the most congested link on the path, available bandwidth and RTT. Due to a prior set of window limits, it may underutilize the available bandwidth. A small segment size window is available in microcontrollers with limited capabilities.