QoS Advice or Best Practice in my configuration

Hi All

I hope someone can give me some advice on the best way to do quality of service on a Mikrotik RB1100.
We have 10 branch office’s within South Africa nationwide.
Branch offices had various types of physical connections to our Head Office.
2X Wireless direct, 2X Diginet service provider MPLS, the rest ADSL with PPPoE dialup into service provider hosted MPLS
Most of them have different speed capabilities and a custom QoS for each branch would give the best result, or that is what I think.
I do connection marking then packet marking per port for each service that is of importance and one for each branch.
So i would mark for example port 25 traffic for each branch src address on the head office RB1100 and also do the mangle on the branch office router. the branch office would only have about 30 mangle “rules” but on the head office router I have more than 800 which I think isn’t very good.

What do you think? Should I mark less traffic? Or could this be ok for the RB1100 and overall latecy etc?

The only reason I have for not just having 1X mark on the HQ router is because branch1 would have a 2Mbps link and branch2 would have a 4Mbps link which would have different max limits in queue tree etc.

Or maybe simply only using the priority will be fine? How accurate is the priority, could it completely replace the limit functions in queue tree? Basically I need to guarantee that terminal services and remote support always have enough available bandwidth.

Sorry for this long explanation but I believe giving a good explanation helps and makes it worth it in the end

Would this be a good or at least one of the best ways of doing quality of service for a branch headoffice connection?

Branchrouter:
ip firewall mangle print
;;; Terminal services
chain=postrouting action=mark-connection new-connection-mark=RDPout
passthrough=yes protocol=tcp out-interface=ether5-wan dst-port=3389

chain=postrouting action=mark-packet new-packet-mark=RDPout passthrough=yes
protocol=tcp out-interface=ether5-wan dst-port=3389 connection-mark=RDPout

chain=prerouting action=mark-connection new-connection-mark=RDPin
passthrough=yes protocol=tcp in-interface=ether5-wan src-port=3389

chain=prerouting action=mark-packet new-packet-mark=RDPin passthrough=yes
protocol=tcp in-interface=ether5-wan src-port=3389 connection-mark=RDPin

queue tree print

name=“RDPBranch” parent=Branchmain packet-mark=RDPout,RDPin limit-at=0
queue=default priority=2 max-limit=0 burst-limit=0 burst-threshold=0
burst-time=0s

and then exact same at the HeadOffice router where the services are hosted?
I have more mangle and queues but I just took this snip as a sample

Hope someone can provide some advice on possible improvements