# On the Fairness of Internet Congestion Control over WiFi with Deep Reinforcement Learning
## 5 Experimental Methodology, Results, and Discussion
### Experimental Testbed Setup  
In our experimental testbed setup, as demonstrated in Figure 3, we configured the client, router, and server components to facilitate comprehensive experimentation. As shown in the Table 4, MikroTik RouterOS v6.49.4 serves as the network gateway, complemented by Ubuntu 22.04.4 deployed on both client machines. Network traffic generation is managed using Iperf3, while Wireshark captures data for detailed analysis. Our WiFihAP ax (see [[https://mikrotik.com/product/hap_ax3](https://mikrotik.com/product/hap_ax3)]([https://mikrotik.com/product/hap_ax3](https://mikrotik.com/product/hap_ax3)), accessed on 27 June 2024, for details) network configuration includes a 100 Mbps bottleneck and a queue buffer of 50 packets, utilizing the Pfifo queuing discipline. Clients connect via WiFi, ensuring flexibility and mobility, while the server maintains a stable Ethernet connection for robust data transmission. This setup allows us to rigorously test and analyze various algorithms such as CUBIC, BBR, PCC, BB2, and BBR3 over a duration of 100 s, focusing on metrics like throughput, throughout fairness \(Th_{ratio}\), sending rate, packet loss ratio, RTT, and jitter. We first observed the disparities in throughput within and between the CCAs (throughout fairness \(Th_{ratio}\)) and explored the RTT, jitter, and packet loss ratio within and between the different CCAs before and after switching in both line graphs and box plots. The aim was to minimize flow unfairness, optimize overall performance, and prevent flow starvation. Our investigation encompassed a range of CCAs, including CUBIC, BBR, Reno, PCC, BBR2, and BBR3. Each algorithm's behavior was thoroughly scrutinized across various experimental scenarios, evaluating the network stability, throughput, jitter, RTT, and packet loss ratio under different configurations. We conducted experiments involving specific intervals of CCA switching, such as transitioning from CUBIC, BBR, PCC, BBR2, and BBR3, to capture the intricate interactions between CCAs. Throughout our experiments, spanning 100 s with 1 s intervals, data collection and analysis using Wireshark and iperf3 statistics \begin{table}
\begin{tabular}{l l} \hline \hline
**Testbed Setup** & **Network Setup** \\ \hline Operating System & Ubuntu 22.04.4 \\ \hline Traffic Generator & iperf3 \\ \hline Data Collection Tools & Wireshark, tshark, Scapy \\ \hline RouterOS & MikroTik RouterOS 6.49.4; WiFi hAP ax \\  & ([[https://mikrotik.com/product/hap_ax3](https://mikrotik.com/product/hap_ax3)]([https://mikrotik.com/product/hap_ax3](https://mikrotik.com/product/hap_ax3)), accessed on 27 June 2024) \\ \hline Network Configuration & \\ \hline Bottleneck & 100 Mbps \\ \hline Queue Buffer & 50 packets \\ \hline Queue Discipline & PFIFO \\ \hline TCP CCAs & CUBIC, BBR, PCC, BB2, BBR3 \\ \hline Experiment Duration & 100 s \\ \hline Metrics & Throughput, Sending Rate, Packet Loss Ratio, RTT, Jitter \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Experimental setup and network configuration. Figure 3: Our experimental testbed with 2 clients, one WiFi router, and one server where the clients are contending each other in the wireless bottleneck and the server is connected with ethernet. enabled us to identify performance disparities and fairness issues among the tested algorithms. This rigorous analysis contributed insights toward optimizing and selecting algorithms tailored to diverse networking requirements. The plots in Figure 4 highlight the behaviors of flows using the same CCA flows competing for bandwidth. Figure 4, two CUBIC flows, and Figure 4, two BBR flows, demonstrate that throughput disparities are prevalent within CCA flows, unlike in the case of PCC flows as shown in Figure 4. Such throughput unfairness (quantifying throughout fairness using \(Th_{ratio}\)) observed in BBR and CUBIC flows suggests that both CCAs inherit complex and sensitive congestion mechanisms, which cannot always prevent unfairness among flows.