Lets say I have 3 queues (# indicates data):
Q1: (in)[ ###](out)
Q2: (in)[ #####](out)
Q3: (in)[ #############](out)
Lets say I put all my ICMP packets in Q1 and all the constant downloads in Q3.
How do I use the tc
command (from iproute2) to empty Q1 when it has data, and ignore the other 2 queues?
Currently I'm limiting the rate of Q3, but this feels quite crude. I'd like Q3 to download at full rate at times when Q1 has no traffic.
Is this possible?
Update: See my version 1 of my QoS script.
Update 2: I have further updated my script (see version 2), but I've changed ISP since to one that does not do QoS at their end (so no need for the dynamic speed changes). I have however, added -u and -d args so I can change my up/down limits without needing to edit the script. The problem with this script is that the queue speeds never reach the value of ceil; they only ever reach rate
- which I believe is not supposed to happen.
Update 3: I have no idea why, but version 3 of my QoS script works! If someone could explain why, that'd be great... I've only made very minor changes; I can't see how what I did made it work... I altered the burst settings after I discovered it was working.