Todos vocês não me levem a mal, mas vamos pensar um pouquinho???
Primeira coisa você terá que ter 3 pares de regras marcando os pacotes do mangle (nesse caso vou mostrar como faz no MK):
/ip fir man
add action=mark-connection chain=output comment=\
"PROXYFULL 0-4M (CATVBRASIL)" connection-bytes=0-4000000 disabled=no \
dscp=4 new-connection-mark=proxyfull_4m passthrough=yes protocol=tcp
add action=mark-packet chain=output comment="" connection-mark=proxyfull_4m \
disabled=no new-packet-mark=proxyfull4m passthrough=no
add action=mark-connection chain=output comment=\
"PROXYFULL 4M-8M (CATVBRASIL)" connection-bytes=4000000-8000000 \
disabled=no dscp=4 new-connection-mark=proxyfull_8m passthrough=yes \
protocol=tcp
add action=mark-packet chain=output comment="" connection-mark=proxyfull_8m \
disabled=no new-packet-mark=proxyfull8m passthrough=no
add action=mark-connection chain=output comment=\
"PROXYFULL 8M-12M (CATVBRASIL)" connection-bytes=8000000-12000000 \
disabled=no dscp=4 new-connection-mark=proxyfull_12m passthrough=yes \
protocol=tcp
add action=mark-packet chain=output comment="" connection-mark=proxyfull_12m \
disabled=no new-packet-mark=proxyfull12m passthrough=no
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=4000000 name=proxyfull_4m packet-mark=proxyfull4m parent=\
global-out priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=3000000 name=proxyfull_8m packet-mark=proxyfull8m parent=\
global-out priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=2000000 name=proxyfull_12m packet-mark=proxyfull8m parent=\
global-out priority=8 queue=default
Lembrando que as regras acima são para a versão 3.xx... Viram como é fácil?? Não tem mistério nenhum. O pessoal que desenvolve esses tipos de regras, nem precisa conhecer muito para desenvolver regras "avançadas" no Mikrotik, basta ter um conceito mínimo.