Introdução à Qualidade de Serviço (QoS) no VyOS
A estabilidade da rede é um pilar fundamental para qualquer organização moderna. Enquanto a largura de banda (bandwidth) determina o volume máximo de dados que pode trafegar, a Qualidade de Serviço (QoS) garante que os pacotes certos cheguem primeiro, especialmente durante períodos de congestionamento. Para administradores de sistemas e engenheiros de rede que utilizam o VyOS como roteador Linux de alto desempenho, implementar QoS não é apenas uma otimização, mas uma necessidade crítica para a continuidade dos negócios.
O VyOS oferece um framework robusto baseado em traffic policies, permitindo a classificação, marcação e limitação de tráfego com granularidade fina. Neste tutorial, abordaremos como configurar políticas de QoS para priorizar aplicações sensíveis à latência, como VoIP (Voz sobre IP) e videoconferência, enquanto controlamos o uso de banda por usuários ou departamentos menos críticos.
Conceitos Fundamentais: Classificação e Marcação
Antes de aplicar as configurações, é essencial compreender os dois mecanismos principais que o VyOS utiliza para gerenciar o tráfego:
- Classificação (Classification): O processo de identificar pacotes com base em critérios como endereço IP de origem/destino, porta TCP/UDP, protocolo ou marcação DSCP existente.
- Marcação (Marking) e Ações: Uma vez classificado, o pacote pode ser marcado com um valor DSCP (Differentiated Services Code Point) para priorização na fila ou limitado a uma taxa específica (shaping/policing).
O protocolo DiffServ, utilizado pelo VyOS, opera sobre o campo DSCP do cabeçalho IP. Valores mais altos indicam maior prioridade. Para VoIP, os valores padrão geralmente incluem EF (Expedited Forwarding) para voz e AF31 ou AF41 para vídeo.
Passo 1: Acessando o Ambiente de Configuração do VyOS
O primeiro passo é acessar a linha de comando do seu roteador VyOS. Você pode fazer isso via SSH ou console físico. Ao entrar no modo operacional, você deve transitar para o modo de configuração.
vtysh
# Ou, se estiver usando o shell nativo do VyOS:
configure
Todo o gerenciamento de tráfego no VyOS ocorre sob a hierarquia set traffic. Não é necessário reiniciar serviços para aplicar mudanças; o VyOS aplica as regras em tempo real.
Passo 2: Definindo Grupos de Endereço e Portas
A primeira etapa prática é definir quais IPs e portas serão priorizados. Vamos criar um grupo de endereços IP para os servidores VoIP da nossa empresa (por exemplo, Asterisk ou FreePBX) e definir as portas padrão SIP (5060-5061) e RTP (portas dinâmicas).
Comece definindo o grupo de hosts:
set traffic host-prefix SERVER_VoIP description 'Rede dos servidores VoIP'
Agora, adicione os IPs específicos dentro desse grupo. Suponha que seus servidores estejam na sub-rede 192.168.10.0/24:
set traffic host-prefix SERVER_VoIP prefix 192.168.10.0/24
Em seguida, defina os grupos de portas para VoIP. O protocolo SIP usa a porta 5060 (UDP/TCP) e o fluxo de mídia RTP geralmente utiliza um range de portas UDP dinâmicas. Para simplificar este exemplo, vamos focar na porta SIP e definir um intervalo comum de RTP:
set traffic port-range RTP_PORTS start 10000
set traffic port-range RTP_PORTS end 20000
Essas definições serão referenciadas posteriormente nas regras de classificação.
Passo 3: Criando a Política de Tráfego (Traffic Policy)
Agora, criamos a estrutura que conterá as regras de priorização. No VyOS, usamos set traffic policy. Vamos nomear nossa política como QoS_CRITICAL.
set traffic policy QoS_CRITICAL description 'Priorização de VoIP e Tráfego Crítico'
Dentro desta política, precisamos definir as regras. As regras são avaliadas em ordem sequencial; a primeira correspondência vence.
3.1: Regra para Voz (VoIP)
Vamos criar uma regra que identifica o tráfego de voz e o marca com EF (Expedited Forwarding), que corresponde ao valor DSCP 46. Isso garante que os pacotes de voz sejam entregues com a menor latência possível.
set traffic policy QoS_CRITICAL rule 10 description 'Priorizar Tráfego de Voz (VoIP)'
set traffic policy QoS_CRITICAL rule 10 match source prefix SERVER_VoIP
set traffic policy QoS_CRITICAL rule 10 match destination port-range RTP_PORTS
set traffic policy QoS_CRITICAL rule 10 match protocol udp
set traffic policy QoS_CRITICAL rule 10 set dscp-value EF
Explicação técnica:
rule 10: O número indica a ordem de precedência.match source prefix SERVER_VoIP: Verifica se o pacote vem dos nossos servidores definidos no Passo 2.match destination port-range RTP_PORTS: Verifica se o destino está nas portas de mídia.set dscp-value EF: Marca o pacote para prioridade máxima.
Não esqueça de adicionar uma regra similar para a sinalização SIP (porta 5060), pois ela também requer baixa latência para evitar atrasos no estabelecimento da chamada:
set traffic policy QoS_CRITICAL rule 20 description 'Priorizar Sinalização SIP'
set traffic policy QoS_CRITICAL rule 20 match source prefix SERVER_VoIP
set traffic policy QoS_CRITICAL rule 20 match destination port 5060
set traffic policy QoS_CRITICAL rule 20 match protocol udp
set traffic policy QoS_CRITICAL rule 20 set dscp-value AF41
3.2: Regra para Tráfego Normal (Default)
Todo tráfego não classificado nas regras anteriores deve ser tratado como padrão. É boa prática marcar o tráfego restante com BE (Best Effort) ou 0 para garantir que ele não interfira no tráfego prioritário.
set traffic policy QoS_CRITICAL rule 100 description 'Tráfego Padrão (Best Effort)'
set traffic policy QoS_CRITICAL rule 100 set dscp-value BE
Passo 4: Configurando o Shaping de Banda (Limitação)
A priorização DSCP diz ao roteador quem tem preferência, mas não limita quanto banda alguém pode usar. Para evitar que um único usuário ou departamento saturar a conexão de internet, utilizamos o traffic shaping.
O VyOS utiliza o módulo tbf (Token Bucket Filter) ou cbq. Para a maioria dos casos domésticos e pequenas empresas, o tbf é suficiente e mais simples de configurar.
4.1: Definir a Taxa de Shaping Global
Suponha que sua banda larga de upload seja de 50 Mbps. É recomendado reservar cerca de 10-20% para controle, deixando o restante disponível. Vamos definir o shaping global na interface WAN (por exemplo, eth1). Primeiro, defina a taxa máxima:
set traffic shaping rate-limit GLOBAL bandwidth 50Mbit
set traffic shaping rate-limit GLOBAL burst 15000
set traffic shaping rate-limit GLOBAL minburst 3750
Agora, aplique essa política de limitação à interface de saída:
set interfaces ethernet eth1 qos shape-default GLOBAL
4.2: Limitar Tráfego Não Crítico
Se você quiser limitar explicitamente o tráfego de baixa prioridade (como downloads pesados ou streaming) para garantir que eles não roubem banda do VoIP, pode criar uma regra de shaping específica.
set traffic shaping class LOW_PRIORITY bandwidth 20Mbit
set traffic shaping class LOW_PRIORITY burst 15000
E então, vincule essa classe às regras de baixa prioridade na sua política de tráfego. Note que o VyOS permite associar classes de shaping diretamente nas rules da policy:
set traffic policy QoS_CRITICAL rule 100 match dscp-value BE
set traffic policy QoS_CRITICAL rule 100 set traffic-shape-class LOW_PRIORITY
Isso garante que, se a rede estiver congestionada, o tráfego "Best Effort" seja limitado a 20 Mbps, enquanto o VoIP continua fluindo livremente dentro dos limites da largura de banda total.
Passo 5: Aplicando a Configuração
Após definir todas as regras, políticas e classes de shaping, é necessário salvar a configuração para que ela persista após uma reinicialização.
save
exit
O VyOS não requer reinicialização do serviço. As mudanças são aplicadas instantaneamente ao kernel Linux via Netfilter e TC (Traffic Control). Para verificar se as regras foram carregadas corretamente, utilize os comandos de diagnóstico.
Passo 6: Validação e Diagnóstico
A verificação da configuração é crucial para garantir que o tráfego está sendo classificado como esperado. O VyOS oferece ferramentas poderosas para isso.
6.1: Verificar Políticas de Tráfego
No modo operacional, execute:
show traffic policy
Isso exibirá a estrutura hierárquica das suas regras. Verifique se as match conditions estão corretas e se os valores DSCP estão definidos.
6.2: Monitorar Estatísticas em Tempo Real
Para ver o tráfego sendo processado, use:
watch traffic policy
Este comando atualiza a tela periodicamente, mostrando o número de pacotes e bytes correspondentes a cada regra. Se você estiver fazendo uma chamada VoIP, deve observar um aumento constante na contagem da rule 10 (VoIP).
6.3: Verificar Filas de Tráfego (TC)
Para uma visão mais técnica das filas no kernel Linux:
show traffic shaping stats
Isso mostra o status dos classes de shaping, útil para depurar problemas de limitação de banda.
Boas Práticas e Considerações Finais
A implementação de QoS no VyOS é uma ferramenta poderosa, mas requer cuidado. Aqui estão algumas diretrizes essenciais para manter a saúde da sua rede:
- Teste em Horários de Baixo Tráfego: Antes de aplicar políticas agressivas, teste-as em momentos de baixa demanda para observar o comportamento baseline.
- Monitore a Latência e Jitter: Use ferramentas como
mtrou soluções de monitoramento (Zabbix, PRTG) para verificar se a latência entre os endpoints VoIP caiu após a implementação. - Evite "Starvation": Não limite demais o tráfego de baixa prioridade. Se você cortar 90% da banda disponível para downloads, seus usuários reclamarão. O objetivo é garantir a qualidade do crítico, não punir o restante.
- Considerações sobre NAT e QoS: O VyOS processa QoS na ordem correta (classificação antes de NAT), mas certifique-se de que suas regras de
matchconsiderem os endereços IP internos ou externos conforme a direção do tráfego (inbound vs outbound). Geralmente, o shaping é aplicado na saída (outbound) da interface WAN.
A configuração de QoS transforma seu roteador VyOS de um simples encaminhador de pacotes em um gestor inteligente de recursos. Ao priorizar VoIP e tráfego crítico, você assegura que a comunicação empresarial permaneça fluida, mesmo sob pressão de uso intensivo da banda larga.
Lembre-se: a documentação oficial do VyOS é atualizada constantemente. Consulte sempre os repositórios oficiais para verificar novas funcionalidades no módulo traffic e ajustar suas estratégias conforme a evolução da infraestrutura de rede.