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 -p 5001 -R

And Client 2 (Uploading) runs

iperf3 -c -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 ?

1 Answer 1


A server should always connected with a wired interface, not wireless.

It is observed that client 2 (uploading) does not get fair share of the bandwidth

On a wireless, half-duplex medium, all nodes compete for bandwidth. Depending on the nodes, their implementation, the access point and local circumstances (airways, link rates, MU-MIMO parameters, noise and attenuation sources, ...), bandwidth sharing might not be fair at all. What you see is more or less to be expected.

If you want fair sharing, a wired network and sufficient server performance would be a good start.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.