Queue Tree e PCQ no MikroTik: divida a banda por cliente
|

Queue Tree e PCQ no MikroTik: divida a banda por cliente

Simple Queue resolve banda em rede pequena, mas não escala: cada regra é avaliada pacote a pacote, em ordem, e cada cliente novo exige uma linha manual no Winbox. Queue Tree combinado com PCQ (Per Connection Queue) troca essa lista crescente por uma única fila elástica que se divide sozinha a cada IP novo — sem cadastrar ninguém. Este guia monta o fluxo completo no RouterOS 7: mangle marcando o tráfego, queue type com PCQ e queue tree aplicando o limite.

Por que Queue Tree + PCQ em vez de Simple Queue

O Simple Queue tem ordem estrita: o RouterOS percorre a lista de regras uma a uma para cada pacote, então uma rede com centenas de clientes cadastrados individualmente pesa no processamento. O Queue Tree não tem essa ordem — todo o tráfego passa junto, classificado por marca do mangle — e é a única forma de pendurar uma fila em uma interface separada da interface de saída padrão.

O PCQ (Per Connection Queue) é o que faz a mágica: em vez de uma fila fixa por IP, ele cria sub-streams automaticamente a partir de um classificador (endereço de origem ou destino) e divide a banda disponível entre eles de forma igualitária. Um cliente novo entra na rede e já tem sua fatia, sem qualquer regra adicional.

Duas pegadinhas que custam uma tarde de troubleshooting:

  • FastTrack bypassa filas por completo. Se o tráfego do cliente está marcado como fasttrack no firewall, o Queue Tree nunca vê esse pacote — o limite simplesmente não aplica.
  • A marcação do mangle para Simple Queue precisa ocorrer antes da fila global-in. Na prática, isso significa marcar em prerouting, que é a única chain anterior a esse ponto do pipeline.

Passo a passo: mangle, queue type e queue tree

  1. Desative o FastTrack para a faixa de IPs que você vai limitar. Se a regra de fasttrack no firewall filter cobrir a rede dos clientes, mova-a para depois das regras de mangle ou restrinja o src-address dela — senão o restante dos passos não terá efeito nenhum.
  2. Marque upload e download separadamente no mangle, usando a interface de entrada para diferenciar o sentido do tráfego:
    /ip firewall mangle
    add chain=prerouting in-interface=ether2-LAN action=mark-packet new-packet-mark=cliente-upload passthrough=yes
    add chain=prerouting in-interface=ether1-WAN action=mark-packet new-packet-mark=cliente-download passthrough=yes

    Troque ether2-LAN e ether1-WAN pelas interfaces reais de rede local e de internet.

  3. Crie os dois queue types PCQ, um para cada sentido, com o classificador invertido entre eles — upload classifica por quem envia (origem), download por quem recebe (destino):
    /queue type
    add name=pcq-upload kind=pcq pcq-rate=2M pcq-classifier=src-address
    add name=pcq-download kind=pcq pcq-rate=8M pcq-classifier=dst-address

    pcq-rate é o teto por sub-stream (por cliente). Ajuste para o limite que cada conexão deve ter — aqui, 2 Mbps de upload e 8 Mbps de download por IP.

  4. Anexe os queue types ao parent global no queue tree, filtrando pela marca criada no passo 2:
    /queue tree
    add name=fila-upload parent=global queue=pcq-upload packet-mark=cliente-upload
    add name=fila-download parent=global queue=pcq-download packet-mark=cliente-download

    A partir daqui, qualquer pacote marcado já entra na fila certa — não precisa recriar nada quando um cliente novo aparece na rede.

  5. Alternativa mais simples para redes pequenas: aplique o PCQ direto em uma Simple Queue, sem mangle, apontando para a subnet inteira:
    /queue simple
    add name=fila-clientes target=192.168.88.0/24 queue=pcq-upload/pcq-download

    Funciona bem até algumas dezenas de clientes; acima disso, o caminho do mangle + queue tree compensa o esforço extra.

Validando e ajustando os limites

Depois de aplicar, confira se os sub-streams estão sendo criados e se o limite está valendo de fato:

/queue tree print stats
/queue tree monitor fila-download once

Cada linha representa um sub-stream ativo (um IP com tráfego passando). Se a lista ficar vazia mesmo com clientes navegando, volte ao passo 1 — na grande maioria dos casos o culpado é o FastTrack ainda ativo para aquela faixa de IP.

Para medir o efeito real, rode um teste de velocidade de dois clientes ao mesmo tempo e observe se a banda se divide de forma equilibrada entre eles — esse é o comportamento esperado do PCQ quando pcq-rate=0 (compartilhamento igualitário) ou o teto configurado quando o valor é fixo, como nos exemplos acima.

Perguntas frequentes

Simple Queue e Queue Tree podem coexistir no mesmo roteador?
Podem, mas evite aplicar os dois no mesmo tráfego — o pacote processado por um Simple Queue antes do ponto global-in pode chegar ao Queue Tree já sem a banda esperada, distorcendo as métricas.

O PCQ limita por IP ou por conexão TCP/UDP?
Por IP, quando o classificador é src-address ou dst-address (o uso mais comum). É possível classificar por porta também, mas aí o agrupamento passa a ser por serviço, não por cliente.

Por que a fila aparece zerada mesmo com os clientes navegando?
Quase sempre é o FastTrack: tráfego que passa por ele nunca chega às filas. Confirme em /ip firewall filter print se a regra de fasttrack está ativa para a faixa de IP que você está limitando.

Dá para ter um teto diferente por cliente, em vez de banda igual para todos?
Sim, mas nesse caso o PCQ de classificador único não ajuda — é preciso voltar ao Simple Queue por IP, ou combinar address-lists diferentes com queue trees separadas por faixa.

Esse esquema funciona para limitar tráfego de VPN ou só de LAN?
Funciona para qualquer interface, incluindo túneis WireGuard ou IPSec — troque a interface de entrada no mangle pela interface virtual do túnel.

Conclusão

Queue Tree com PCQ substitui uma lista de Simple Queues que só cresce por uma estrutura que se adapta sozinha a cada cliente novo, com duas pegadinhas simples de evitar: desligar o FastTrack na faixa certa e marcar o tráfego em prerouting. Para redes já balanceando dois links, vale revisar também a configuração de PCC no MikroTik — o PCQ funciona igual em cima de qualquer uma das rotas. E para acompanhar o consumo de cada fila ao longo do tempo, um Zabbix monitorando por SNMP mostra exatamente quando vale subir o teto.

Gostou? Compartilhe.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *