I am in need of simulating a high latency and low bandwidth connection for a performance test of my application. I have gone through a number of pages describing the
tc command. But, I haven't been able to validate the numbers that I set. For example:
I took the following command values from: https://www.excentis.com/blog/use-linux-traffic-control-impairment-node-test-environment-part-2
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
With that applied on (say, machine A), according to the description on the page, I am assuming my output rate should be 128 kBps (at least approximately). To test this, I started transferring a 2 GB file using scp from machine A to another machine "B" which are in the same LAN. Transfer rates without any added impairment reach up to 12 MBps in this network. But, when the transfer started the rate was at 2 MBps, then it kept stalling and falling down until when it started to swing and stall between 11 kBps and 24 kBps.
I used nmon to monitor network throughput on both sides during the transfer, but it never went above 24 kBps (except for a couple of values reading 54 and 62).
I have also tried increasing the rate and bucket size, but the behavior during scp is the same. I tried the following command to increase the bucket size and the rate:
tc qdisc add dev eth0 root tbf rate 1024kbps burst 1024kb latency 500
And scp still stalled and swung around the same rates (11-30 kBps).
Am I inferring the term "rate" wrong here? I have looked at the man page for tc and it appears that my interpretation is correct. Could anyone explain to me what would be the best way to test the set parameters (assuming I did it correctly)?