Keeping RouterOS Queues on Top

One frustration I have recently dealt with is the dynamic simple queue behavior in MikroTik RouterOS that started sometime after version 3. Somewhere in there, they started adding new, dynamically created queues (created by MikroTik HotSpot or UserManager/PPPOE) to the top of the list instead of at the bottom.
This really causes an issue with static queues you might have in place for prioritizing traffic like VOIP. When the dynamic user queues are inserted above your VOIP queue, VOIP traffic from that user’s target IP no longer has priority. I contacted and Janis Megis from MikroTik indicated it was a requested feature that would be added at some point in the future. This caused me a lot of grief recently workign with a large HotSpot deployment on a RouterBoard RB1200.

Until then, here is a solution.

Create a script with the following code:

/queue simple move [find name=”VOIP”] [:pick [find] 0]

In this code, I have a simple queue named UDP that I always want at the top of the list of queues. You can repeat this code for other queues to be placed below this queue like this:

/queue simple move [find name=”VOIP”] [:pick [find] 0]
/queue simple move [find name=”VIDEO”] [:pick [find] 1]
/queue simple move [find name=”SSH”] [:pick [find] 2]

Then, create a scheduler job to run the script every 10 seconds or so and you should be in QOS heaven!