I want to be able to give a particular multicast stream higher priority from the rest of the traffic on a link so in case of congestion it would still get through without hiccups.
Everything I managed to find in the internet about prioritizing traffic on RouterOS deals with putting the traffic in queues:
Mark all traffic going on that link
Mark traffic that should be prioritized
Put all traffic for that link through a queue tree and make a sub-queue for the priority traffic and give that subqueue a higher priority.
But this method introduces unnecessary queuing and an increase in latency.
Does RouterOS have a simple prioritizing mechanism based on DSCP values? Something like:
Set a priority DSCP value to the priority multicast stream in /ip firewall mangle (prerouting)
RouterOS takes care of the rest and puts high priority packets on the outgoing interface first.
Is there a way to prioritize traffic without piping everything through queues?
Simply: NO
I’s impossible to prioritize something without inspecting it.
It can, using the queues. DSCP is just a way to convey the information about required priority. Any operating system works the same way - classifies the traffic based on some local criteria or accepts external classification received in L3/DSCP or L2/CoS fields, and then uses a queueing mechanism to let higher priority packets overtake the lower priority ones while forwarding them.
But with RouterOS queuing introduces noticeable latency and max-limit should be 80-90% of the ISP’s cap so you’ll basically be wasting 10-20% of your bandwidth. Not good.
Doesn’t have to be, but is the recommended way due to how your upstream ISP buffers things. This is also not just a Mikrotik thing, but any QoS best practice thing