I have a server (Lenovo using Ubuntu) and 2 clients (both Mac). The server is connected with a Wi-Fi router over Eth interface. The two clients are connected with Wi-Fi router over WLAN interface. All are connected and can communicate.
Now, I am using iperf3 (TCP) to test download and upload throughput (Mbps) of the clients. To do so, the server runs iperf3 on two terminals
Terminal 1 :
iperf3 -s -p 5001
Terminal 2 :
iperf3 -s -p 5002
On the other hand, Client 1 (downloading) runs
iperf3 -c 192.168.1.10 -p 5001 -R
And Client 2 (Uploading) runs
iperf3 -c 192.168.1.10 -p 5002
Both the client command executed at the same time. It is observed that client 2 (uploading) does not get fair share of the bandwidth, rather the upload rate goes down to 0 Mbps at times. While client 1 (downloading) has data rate > 70 Mbps.
Instead of uplpoad-download, I have also tested the scenario where both the clients are downloading simultaniously. This test works perfectly fine (both clients get fare share of the bandwidth (each 30 to 35 Mbps).
I do not have any traffic control rule / QoS rule in any of my router/machines.
Question: What is causing this unfairness of bandwidth sharing in TCP? And what might be a good way to troubleshoot this issue ?