Reserving bandwidth with queue trees?

Hi,

I’d like to know if it is possible to reserve bandwidth with queue trees when a certain queue is active?
Like what I’d like to achieve is to allow my HTTP downloads to go at full speed (of 2Mbps) when I’m not playing any games, but it has to be limited to just like 100kbps as soon as game packets are found. See the left column of my diagram.

Currently I can only utilize queue trees like shown in the middle and right columns of my diagram.
The middle column would ensure that I always have a good latency when I’m playing games, but it would imply that I’ll never reach my full 2Mbps when just downloading.

The right column would give the game traffic first priority, but if the game will only utilize 50kbps, then the downloads will automatically use the rest of the bandwidth, causing terrible lagg in the game.

Now, I’ve tried to setup my queue tree as shown in the other diagram, but the Http-in_B queue is never being used.
I’d like Http-in_A queue to be used whilst I’m playing games, and then Http-in_B queue to be used when I’m only downloading.

At this moment I’m running RouterOS 5.18 on an HP Microserver, and my queue tree is shaping my Usenet (low priority) and HTTP (higher priority) traffic beautifully, because both can fully utilize their Max-Limits on their queues. Unfortunately I don’t know what to do in the gaming situation, where the games cannot fully utilize their queue Max-Limit :frowning:

Is there perhaps a script that I can schedule to run every minute to check for gaming packets, and if found, that it would disable certain parent queue’s and enable others, so that I can basically have 2 sets of queue trees: one for gaming and another when I’m only downloading/browsing?
Like the Traffic Monitor tool would’ve been ideal, but it cannot listen on queues. The only option that I can think of is to route my games over another ISP account, but that is really not ideal and pretty tricky since I’ll have to know all the ports & protocols.

Thanks in advance!
my-situation.png
queue-tree-diagram.png

Hi sir

Http-in_B will not be used becasue you are using the same packet mark as on Http-in_A. Now if traffic is entering the child queue Http-in_A it will never come back to go also trough Http-in_B queue.

On the other hand , in my opinion you do not need queue Http-in_B but just increase the max limit on the Http-in_A to 2M, such that:

  1. without gaming ongoing, the full bandwidth can be used to surf the Internet

  2. while gaming, because the gaming queue has higher priority, it will get limit at bandwidth (50k) , the http brosing will get assigned 100kb of limit-at quota. At this point, because we have free bandwidth (1.85 Mbits), and gaming has higher priority, it will have the chance to get this bandwidth to reach the 2M max-limit limit.

Hoping this will fit your goal
have a nice day

Thanks greencomputing. I knew exactly how to do that (as seen in my first diagram on the right).

It is perhaps the best compromise at this moment, seeing that it does give a higher priority to the game packets. I’ll give it a shot, in combination with shaping the outgoing packets too.