QoSmate: Qualidade de Serviço para OpenWrt
QoSmate é uma solução de Qualidade de Serviço (QoS) para roteadores OpenWrt que visa otimizar o desempenho da rede, permitindo a priorização controlada de tipos específicos de tráfego. Ele utiliza nftables para a classificação de pacotes e oferece tanto as disciplinas de enfileiramento CAKE (Common Applications Kept Enhanced) quanto HFSC (Hierarchical Fair Service Curve) para o gerenciamento de tráfego. O QoSmate usa tc-ctinfo para restaurar marcas DSCP na entrada.
O projeto baseia-se no incrível trabalho de @dlakelan e seu SimpleHFSCgamerscript, estendendo suas capacidades e adicionando uma interface amigável. O QoSmate integra conceitos de vários sistemas de QoS, incluindo SQM, DSCPCLASSIFY e cake-qos-simple para fornecer uma abordagem abrangente ao controle de tráfego.
Aspectos principais do QoSmate incluem:
- Suporte para as disciplinas de enfileiramento HFSC e CAKE
- Uma interface baseada em LuCI para fácil configuração
- Opções de marcação DSCP e priorização de tráfego via CLI e UI
- Instalação e configuração automática dos pacotes
Embora o QoSmate possa beneficiar vários tipos de tráfego de rede, incluindo jogos e outras aplicações sensíveis à latência, ele é projetado para melhorar o desempenho geral da rede quando configurado corretamente.
Nota Importante:
A QoS eficaz é sobre priorização estratégica, não a elevação geral de todo o tráfego. O QoSmate permite priorizar tipos específicos de tráfego, mas é crucial usar essa capacidade com discernimento. A priorização excessiva pode anular os benefícios da QoS, já que elevar muito tráfego é essencialmente o mesmo que não priorizar nada. Lembre-se de que para cada pacote que recebe tratamento preferencial, outros podem experimentar atrasos aumentados ou até mesmo perdas. O objetivo é criar um ambiente de rede equilibrado e eficiente, não priorizar tudo.
1. Instalação
Antes de instalar o QoSmate, certifique-se de que:
- Qualquer serviço ou script de QoS existente (por exemplo, SQM, Qosify, DSCPCLASSIFY, SimpleHFSCgamerscript...) esteja desativado e parado para evitar conflitos.
- Seu roteador tenha sido reiniciado para limpar as configurações antigas e começar do zero.
a) Instalação do Backend
Instale o backend do QoSmate (que contém um script principal / script init / hotplug e um arquivo de configuração) com o seguinte comando:
wget -O /etc/init.d/qosmate https://raw.githubusercontent.com/hudra0/qosmate/main/etc/init.d/qosmate && chmod +x /etc/init.d/qosmate && wget -O /etc/qosmate.sh https://raw.githubusercontent.com/hudra0/qosmate/main/etc/qosmate.sh && chmod +x /etc/qosmate.sh && wget -O /etc/config/qosmate https://raw.githubusercontent.com/hudra0/qosmate/main/etc/config/qosmate
b) Instalação Frontend
Instale luci-app-qosmate com este comando:
mkdir -p /www/luci-static/resources/view/qosmate /usr/share/luci/menu.d /usr/share/rpcd/acl.d /usr/libexec/rpcd && \
wget -O /www/luci-static/resources/view/qosmate/settings.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/settings.js && \
wget -O /www/luci-static/resources/view/qosmate/hfsc.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/hfsc.js && \
wget -O /www/luci-static/resources/view/qosmate/cake.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/cake.js && \
wget -O /www/luci-static/resources/view/qosmate/advanced.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/advanced.js && \
wget -O /www/luci-static/resources/view/qosmate/rules.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/rules.js && \
wget -O /www/luci-static/resources/view/qosmate/connections.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/connections.js && \
wget -O /www/luci-static/resources/view/qosmate/custom_rules.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/custom_rules.js && \
wget -O /usr/share/luci/menu.d/luci-app-qosmate.json https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/root/usr/share/luci/menu.d/luci-app-qosmate.json && \
wget -O /usr/share/rpcd/acl.d/luci-app-qosmate.json https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/root/usr/share/rpcd/acl.d/luci-app-qosmate.json && \
wget -O /usr/libexec/rpcd/luci.qosmate https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/root/usr/libexec/rpcd/luci.qosmate && \
chmod +x /usr/libexec/rpcd/luci.qosmate && \
/etc/init.d/rpcd restart && \
/etc/init.d/uhttpd restart
c) Utilização
1. Após a instalação, inicie o serviço QoSmate:
/etc/init.d/qosmate start
E) Gráficos e Conexões em Tempo Real
Atenção, não é preciso instalar caso não for monitorar as marcações de classes Dscp.
opkg update && opkg install luci-lib-jsonc lua && \
mkdir -p /www/luci-static/resources/view/qosmate /usr/share/luci/menu.d /usr/share/rpcd/acl.d /usr/libexec/rpcd && \
wget -O /www/luci-static/resources/view/qosmate/settings.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/settings.js && \
wget -O /www/luci-static/resources/view/qosmate/hfsc.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/hfsc.js && \
wget -O /www/luci-static/resources/view/qosmate/cake.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/cake.js && \
wget -O /www/luci-static/resources/view/qosmate/advanced.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/advanced.js && \
wget -O /www/luci-static/resources/view/qosmate/rules.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/rules.js && \
wget -O /www/luci-static/resources/view/qosmate/connections.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/dev/connections.js && \
wget -O /usr/libexec/rpcd/luci.qosmate https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/dev/luci.qosmate && \
wget -O /usr/share/luci/menu.d/luci-app-qosmate.json https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/dev/menu.d/luci-app-qosmate.json && \
wget -O /usr/share/rpcd/acl.d/luci-app-qosmate.json https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/dev/luci-app-qosmate.json && \
chmod +x /usr/libexec/rpcd/luci.qosmate && \
/etc/init.d/rpcd restart && \
/etc/init.d/uhttpd restart
Configuração do QoSmate
1. Configuração Manual
Acesse a interface web do LuCI e navegue até Rede > QoSmate.
Configure as configurações básicas ajustando os seguintes parâmetros principais:
- Interface WAN: Selecione sua interface WAN
- Taxa de download (kbps): Defina como 80-90% da sua velocidade real de download
- Taxa de upload (kbps): Defina como 80-90% da sua velocidade real de upload
- Disciplina de enfileiramento de raiz: Escolha entre HFSC (padrão) e CAKE
Após configurar, clique em Aplicar as alterações.
2. Função de Configuração Automática
Para usuários que preferem configuração automática, o QoSmate oferece uma função de configuração automática:
- Na página de configurações do QoSmate, clique em Iniciar configuração automática
- Opcionalmente, insira o endereço IP do seu dispositivo de jogo para priorização
- Aguarde a conclusão do teste de velocidade e da configuração
Nota: Testes de velocidade baseados em roteador podem subestimar sua velocidade de conexão real. Para configurações mais precisas, execute um teste de velocidade de um dispositivo LAN e insira manualmente os resultados. A configuração automática fornece um ponto de partida útil, mas o ajuste fino manual pode ser necessário para um desempenho ideal.
Regras de Marcação DSCP
O QoSmate permite que você defina regras de marcação DSCP (Differentiated Services Code Point) personalizadas para priorizar tipos específicos de tráfego. Essas regras são definidas no /etc/config/qosmate e via luci-app-qosmate.
Exemplo de configuração de regra:
config rule
option name 'gaming_traffic'
option proto 'udp'
option src_ip '192.168.1.100' #Adicionar seu ip
option dest_port '3074'
option class 'cs5'
option counter '1'
Esta regra marcaria o tráfego UDP do IP 192.168.1.100 para a porta 3074 com a classe CS5 DSCP, que normalmente é usada para tráfego de jogos, e habilitaria a contagem de pacotes para esta regra.
Exemplos adicionais de regras de marcação DSCP.
#Priorizando o tráfego de videoconferência:
config rule
option name 'zoom_traffic'
option proto 'tcp udp'
list dest_port '3478-3479'
list dest_port '8801-8802'
option class 'af41'
option counter '1'
#Baixa prioridade para tráfego ponto a ponto:
config rule
option name 'p2p_traffic'
option proto 'tcp udp'
list src_port '6881-6889'
list dest_port '6881-6889'
option class 'cs1'
option counter '1'
#Tráfego do Jogos:
config rule
option name 'CallofDuty01'
option proto 'udp'
option src_ip '192.168.1.208'
option src_port '3074'
option dest_port '30000-65535'
option class 'cs5'
option counter '1'
config rule
option name 'CallofDuty02'
option proto 'udp'
option dest_ip '192.168.1.208'
option dest_port '3074'
option class 'cs5'
option counter '1'
#Tráfego genérico de consoles de jogos/PCs para jogos:
config rule
option name 'Game_Console_Outbound'
option proto 'udp'
option src_ip '192.168.1.208'
list dest_port '!=80'
list dest_port '!=443'
option class 'cs5'
option counter '1'
config rule
option name 'Game_Console_Inbound'
option proto 'udp'
option dest_ip '192.168.1.208'
list src_port '!=80'
list src_port '!=443'
option class 'cs5'
option counter '1'
Tráfego genérico de consoles de jogos/PCs para jogos, Essas regras fornecem uma abordagem mais genérica para priorizar o tráfego do console de jogos/PC de jogos. A regra de saída prioriza todo o tráfego UDP do console (192.168.1.208), exceto as portas 80 e 443 (tráfego comum da Web). A regra de entrada faz o mesmo para o tráfego de entrada. Essa abordagem garante que o tráfego relacionado ao jogo tenha prioridade, permitindo que a navegação normal na Web use as prioridades padrão. O uso de '!=' (diferente) nas listas de portas demonstra como excluir portas específicas da regra. Isso é mais ou menos equivalente às variáveis realtime4e realtime6do script SimpleHFSCgamer. No entanto, essa regra é ainda melhor, pois exclui as portas UDP 80 e 443, que geralmente são usadas para QUIC. Isso provavelmente é menos problemático em um console de jogos do que em um PC de jogos, onde um vídeo do YouTube usando QUIC pode estar sendo executado junto com o jogo. Esta regra também é aplicada quando a configuração automática é usada via CLI ou UI e um IP de dispositivo de jogo (opcional) é inserido.
Desinstalação
Para remover o QoSmate do seu roteador OpenWrt:
1. Pare e desabilite o serviço QoSmate:
/etc/init.d/qosmate stop
2. Remova os arquivos QoSmate:
rm /etc/init.d/qosmate /etc/qosmate.sh /etc/config/qosmate
3. Remova os arquivos do frontend LuCI:
rm -r /www/luci-static/resources/view/qosmate
rm /usr/share/luci/menu.d/luci-app-qosmate.json
rm /usr/share/rpcd/acl.d/luci-app-qosmate.json
4. Reinicie os serviços rpcd e uhttpd:
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
5. Reinicie o roteador para limpar todas as configurações restantes.
Todo o conteudo original para mais detalhes pode ser acessado nos links:
Confira o tópico do fórum OpenWrt sobre QOSMate para mais detalhes.
Veja o repositório do GitHub para QOSMate e instruções de uso.