I am running a large number of vlans (>1000) and need to prioritise traffic between the vlans. So for example I have a total capacity of 2Gb for the interface (that holds all the vlans) and need to make sure that each vlan gets the right priority within that 2Gb. However I can't seem to do this without overloading the CCR1036 I am using. The router will happily manage the shaping on the individual vlans (with the target as the vlan interface) using simple queues - but doesn't give me the ability to prioritise the traffic. However once I try to use simple queues with a parent (and I have to change to using IP addresses rather than the interface name), the router's CPU maxes out.
I would rather use queue trees, however then I get into issues with the ip firewall mangle rules - once you have a large number of rules it takes too long to traverse them (a rule for each vlan). I have tried using connection marking which seems to be a lot quicker (or rather only new connections need to traverse the long list), however then it takes too long to mark the packets based on the connection mark because we're back to the long list again. What would be ideal is a rule that makes the packet mark the same as the connection mark (or alternatively have the queue tree accept connection marks).
Anyone got any ideas about how to do QoS with a large number of data streams?