I am simulating a network where I limited and modified all the interfaces using TC (traffic control). My interfaces are of the form HTB --- SFQ (it is a little bit more complex but I will simplify that).
The interfaces are limited to 10mbps. Let's say that I send a UDP flow from A to B at 7mbps. After that, from the same host (A), I send a TCP flow to B. Since I have a SFQ at the output interface and there are two flows the scheduler sends 5mbps of each one. So, just to start, the UDP flow will lose 2mbps of bandwidth.
Of course this is what you expect from the Fair queue, you want it to send a fair amount of packets from each flow it sends. However, I would expect the UDP flow taking 7mpbs and the TCP adapting at 3mpbs after some ACK timeouts. But, I never see a timeout. If I remove the SFQ queue, everything is as I expected TCP flow gets 3mpbs and UDP 7mbps.
Is that normal? Is that what I should expect? If this is the normal behaviour I should expect, that would mean that for any given path if there is a big TCP flow, you can only use 50% for UDP traffic if you do not want to have losses.
Is there a solution for that keeping the SFQ queue?.