# A Single-Rate Multicast Congestion Control (SRMCC) Mechanism in Information-Centric Networking
## 3 Design Overview
### Main Network Elements  
According to Figure 1, this section focuses on the capabilities of the three main network elements (multicast receiver, MTN, and multicast source) designed for multicast congestion control. The multicast receiver is responsible for periodically generating MCC messages, which are transmitted along the reverse path of the multicast tree. The format of MCC messages is shown in Figure 2. Among them, the initial minimum fair shared rate (_Min fair shared rate_) is set to the link bandwidth \(C_{access}\) between the multicast receiver and the access router, and the initial maximum queue occupancy ratio (_Max qocc_) and the initial minimum queue occupancy ratio (_Min qocc_) are set to 0 and 1, respectively. The multicast receiver obtains the \(C_{access}\) through the active probe when joining the multicast. This operation only needs to be performed once before multicast transmission and does not need to be performed in real time. Therefore, this operation does not generate overhead in the implementation of SRMCC. Furthermore, the mechanism proposed in this paper is aimed at wired networks. The MTN is responsible for perceiving the network state, estimating the fair shared rate, and aggregating MCC messages. Specifically, we designed an MCC table in the MTN to achieve feedback message aggregation. As shown in Figure 3, each MTN maintains an MCC table, which records information on fields relating to the maximum occupancy ratio (_Max qocc_), minimum occupancy ratio (_Min qocc_), and minimum fair shared rate (_Min fair shared rate_) of each multicast group. Figure 2: The format of MCC messages. The multicast tree node \(MTN_{i}\) obtains the current queue length and calculates the queue occupancy ratio \(qocc_{i}\), and then perceives the current network congestion state through a weighted moving average queue occupancy ratio \(qocc_{av,i}\),  
\[qocc_{av,i}=\alpha\times qocc_{i}+(1-\alpha)\times qocc_{av,i-1} \tag{1}\]  
where \(\alpha\) (\(0<\alpha<1\)) is a weighting factor. \(qocc_{av,i}\) is recorded as the maximum occupancy ratio (_Max qocc_) and minimum occupancy ratio (_Min qocc_) in the MCC table of \(MTN_{i}\). Inspired by [37; 38], we propose a fair shared rate estimation method. The \(MTN_{i}\) checks the number of GUMGID in the MNFT so that it knows the current number of multicast groups. It then randomly samples the received data packets, and different unicast flows are distinguished based on source ID and destination ID, or the source IP and destination IP in IP packets. Thereby, \(MTN_{i}\) gets the estimated total number of flows \(N_{i}(t)\). The ratio of the link bandwidth \(C_{i}\) between the \(MTN_{i}\) and the upstream node to \(N_{i}(t)\) is the estimated fair shared rate, which is recorded as the minimum fair shared rate (_Min fair shared rate_) in the MCC table of \(MTN_{i}\). Next, we introduce the MCC messages aggregation mechanism. As shown in Figure 3, when receiving the MCC message from the downstream, the MTN extracts the three fields in the message, and then uses the GUMGID as an index to look up the MCC table. The MTN then compares the values of the three fields in the message with the values recorded in the MCC table. If the _Min fair shared rate_ in the message is less than the value recorded in the MCC table, then the _Min fair shared rate_ in the MCC table is updated. Similarly, the values of _Max qocc_ and _Min qocc_ are updated by comparing the _Max qocc_ and _Min qocc_ in the message and the _Max qocc_ and _Min qocc_ in the MCC table. A new MCC message is then generated according to the MCC table in the MTN after a period of time, so that only one MCC message is forwarded upstream. The multicast source initially transmits multicast data at the initial rate, and then dynamically adjusts the sending rate according to the network conditions.