# Congestion Control Mechanism Based on Backpressure Feedback in Data Center Networks
## 3 Congestion Detection and Identification
### Congestion Determination  
#### 3.2.1 Division of Congestion Degree  
Detecting congestion with only a single signal of queue depth or queue delay can no longer be adapted to complex network environments. To achieve more accurate congestion detection, a combination of multiple congestion signals is required. By dividing congestion into different degrees, the network can develop appropriate forwarding strategies based on the degree of congestion to improve the efficiency and fairness of the network. From the feedback results in Section 3.1, the queue delay in the PDP is also a signal that quickly indicates the degree of congestion. Therefore, the congestion degree can be divided based on queue depth and queue delay. The queue delay of the standard metadata for packets (_standard_metadata. _deq_timedelta_) reflects the time spent in the queue for the current packet. The larger the value of queue delay, the more severe the congestion. Conversely, the smaller the value, the lighter the congestion. Previous research has typically focused on using RTT measurements to evaluate overall end-to-end queue delays across multiple aggregation switches rather than examining queuing conditions at a single switch. Unlike end-to-end RTT, _deq_timedelta_ reflects the time it takes for a packet to pass through the current switch, which provides insight into congestion at the current node. Focusing the congestion determination on a single node in the network provides better information about the node. It is essential to accurately identify congested nodes during traffic transmission. Corresponding measures can be taken in a timely manner by accurately capturing congested nodes in order to optimize network performance and provide a good user experience. We use the standard metadata _enq_q_depth_ as a metric of congestion detection, which is similar to the traditional ECN marking approach. We detect the congestion of the current node by queuing time packet arrivals. Based on testing (as described in Section 3.1), we found that about 40% of packet congestion is detected when the queue length threshold is set to 15. This approach efficiently addresses the congestion problem in a small area while maintaining low buffer characteristics. In addition, we introduce the standard metadata _deq_timedelta_ to further divide congestion into three degrees: mild congestion, moderate congestion, and severe congestion. The current congestion degree is divided according to \(\mathrm{T}_{\mathrm{min}}\) and \(\mathrm{T}_{\mathrm{max}}\), as illustrated in Figure 5. Through extensive testing, we found that by setting \(\mathrm{T}_{\mathrm{min}}\) to 80,000 and \(\mathrm{T}_{\mathrm{max}}\) to 150,000, approximately 40% of congestion is equally divided into the three degrees mentioned above. This helps us treat different degrees of congestion fairly. To represent the degree of congestion in a packet, we define a two-byte bit (_meta.congestion.degree_) in the packet metadata. The specific marking method is shown in Table 1. Analyzing the collected packet data allows us to assess the current degree of congestion at the switches, thus helping control network congestion more effectively. Different degrees of congestion require tailored management strategies. The advantage of dividing the congestion degree is that it provides a more accurate congestion control mechanism, which improves network performance and stability. The frequency of congestion feedback messages increases as the congestion degree is divided, leading to frequent rate control changes. These increase the burden on the switch, reduce the performance of the switch, and affect the stable transmission of network traffic. The  
Figure 5: Division of congestion degree. three degrees of congestion were chosen to provide the switch with simple and clear instructions, ensuring that the rate control for three degrees of congestion still maintains a stable transmission of traffic.