Hi all. I have a question. In my network I have what is called a IPMux device at the remote end. Because this devices is used for dispatch communications it requires as little latency and jitter as possible or it looses its peer state.
Recently I migrated from Cisco to CCR1009 Mikrotik routers and all seemed well but the underflow/overflow counters on the IPMux elevated to the point where it is unusable.
On the cisco there was a legacy config for trust dscp and some other settings below
srr-queue bandwidth share 1 20 15 20
srr-queue bandwidth shape 0 0 0 0
priority-queue out
mls qos trust dscp
The topology for this IPMux is a layer 2 pass-thru making it look like a directly connected subnet.
There is a marking on the packet of 46 when using touch to look at the flow.
However because of the layer 2 pass-thru I cannot get mangle to work because it only works layer 3
My question is how to map what was on the Cisco to Mikrotik.
Ping response and standard divination look ok so I think because everything is in a general Q it just treats this traffic as any other traffic where this traffic should be prioritized even though bandwidth is not an issue.
Thanks Paul
For some reason routeros does not support something so simple. But you should be able to do something similiar. under bridge filter you can mark the packets, then create a queue that prioritizes those marks. This will probably take some experienting to figure out.
Seems like an option. I will look at that also. Appreciate the quick response.
Hi, so I tried a couple of options using Mangle rules and marking the packets. Once marked I created a Q-Tree to prioritize the traffic and leave the no-mark at 8. This seemed to work as I could see the counters taking hits and I also saw the drop counter on the no-mark taking hits. However this still did not solve the issue in getting the two end points working properly. I put everything back on the Cisco switches and everything worked fine. I am not a QOS expert but it seems CIsco can get much more granular than Mikrotik.
Keep in mind I am using the router chip and not the switch chip as this is what I am forced to use from the previous vendor that selected Mikrotik as the replacement for CIsco.
Just an update i found something similiar to what cisco offers in the documentation they may help you. This would only apply to the crs series.
https://help.mikrotik.com/docs/pages/viewpage.action?pageId=103841835
priority-to-queue (priority-range:queue; Default: 0-15:0,1:1,2:2,3:3) Internal priority (0..15) mapping to queue (0..7) per port.
per-queue-scheduling (Scheduling-type:Weight;
Default: wrr-group0:1,wrr-group0:2,wrr-group0:4,wrr-group0:8,wrr-group0:16,wrr-group0:32,
wrr-group0:64,wrr-group0:128) Set port to use either strict or weighted round robin policy for traffic shaping for each queue group, each queue is separated by a comma.
Thanks for the reply. I am trying this in version 7.3.1 and the options don’t seem to be available.
you must use mangle to mark traffic: this is, taking DSCP marks into internal RouterOS packet marks, once you have the packets marked you can use queues to apply priorities, limits etc to that packets in a differentiated way
You must mark all traffic to differentiate priority traffic from others
make sure that all traffic passing through passes through the defined RouterOS mangle rules and respective queues.
If there is traffic going through that is not marked and queued, RouterOS cannot know when the connection becomes full.
I have used mangle to mark the traffic I need per below
LIST ADDRESS CREATION-TIME
0 Cam-IPMux 10.248.162.100
1 Cam-IPMux 10.248.160.100
chain=forward action=mark-connection new-connection-mark=Cam-Rev-Cmark passthrough=yes connection-state=new protocol=udp dst-address-list=Cam-IPMux dst-port=2142 log=no log-prefix="" chain=forward action=mark-packet new-packet-mark=Cam-Rev-Pmark passthrough=no connection-mark=Cam-Rev-Cmark dscp=46 log=no log-prefix=""
Then my Q Tree
name="queue1" parent=sfp9 - EvtWH 60MhZ packet-mark="" limit-at=0 queue=default-small priority=8 max-limit=500M burst-limit=0 burst-threshold=0
burst-time=0s bucket-size=0.1
name="queue2" parent=queue1 packet-mark=Cam-Rev-Pmark limit-at=200k queue=IPMux-Q priority=1 max-limit=3M burst-limit=0 burst-threshold=0
burst-time=0s bucket-size=0.1
name="queue3" parent=queue1 packet-mark=no-mark limit-at=0 queue=default-small priority=8 max-limit=500M burst-limit=0 burst-threshold=0
burst-time=0s bucket-size=0.1
name="queue4" parent=sfp3 - IPMux packet-mark="" limit-at=0 queue=default-small priority=8 max-limit=5M burst-limit=0 burst-threshold=0 burst-time=0s
bucket-size=0.1
name="queue5" parent=queue4 packet-mark=Cam-Rev-Pmark limit-at=200k queue=IPMux-Q priority=1 max-limit=1M burst-limit=0 burst-threshold=0
burst-time=0s bucket-size=0.1
name="queue6" parent=queue4 packet-mark=no-mark limit-at=0 queue=default-small priority=8 max-limit=5M burst-limit=0 burst-threshold=0 burst-time=0s
bucket-size=0.1
so when you say ALL packets need to be marked doesn't the "no-mark" take care of that?