HOWTO Tunning do Firewall (generalizado)

Started by ludarkstar99, November 04, 2024, 12:27:20 PM

Previous topic - Next topic
November 04, 2024, 12:27:20 PM Last Edit: December 04, 2024, 07:22:19 PM by ludarkstar99
================================================================
===                      OPNSENSE - GUIA GERAL PARA OTIMIZAÇÃO DO FIREWALL                           ===
===                                                        ~ TUNNING                                                              ===
================================================================
Responsável: ludarkstar99
Data: 04/11/2024
Versão: 1.0
================================================================


RESUMO
Este procedimento tem por objetivo habilitar/desabilitar funções no firewall OPNsense para otimizar a performance do processamento de forma geral.


DISCLAIMER
Use por sua própria conta em risco. O que funciona para mim, pode não refletir o seu cenário e o que irá funcionar para você.


ETAPAS

1. Desabilitar Mitigação Spectre e Meltdown
Acessar o menu: System > Settings > Tunables
    Alterar o valor (ou criar caso não exista): vm.pmap.pti para 0
    Alterar o valor (ou criar caso não exista): hw.ibrs_disable para 1


2. Onde não se usa o IDS/IPS, Habilitar o CRC e TSO, mas verificar a performance com IPERF3 para atestar que houve ganho real:
Acessar o menu: Interfaces > Settings
    desmarcar: Disable hardware checksum offload
    desmarcar: Disable hardware TCP segmentation offload


3.Habilitar o processamento de múltiplas filas na placa de rede INTEL (driver igb):
Acessar o menu: System > Settings > Tunables
    Criar o tunable hw.igb.rx_process_limit com valor -1
    Criar o tunable hw.igb.tx_process_limit com valor -1
    Criar o tunable legal.intel_igb.license_ack com valor 1


4. Por padrão o FreeBSD trabalha com uma única thread para interrupções de rede. O tunable abaixo permite 1 threat por núcleo:
Acessar o menu: System > Settings > Tunables
    Criar o tunable net.isr.maxthreads com valor -1


5. E o tunable abaixo força que cada thread seja atribuída em núcleos diferentes:
Acessar o menu: System > Settings > Tunables
    Criar o tunable net.isr.bindthreads com valor 1


6. O tunable abaixo otimiza de forma geral as interrupções de rede:
Acessar o menu: System > Settings > Tunables
    Criar o tunable net.isr.dispatch com valor deferred


7. Habilitando o RSS (receive side scaling) otimiza a performance para sistemas multi-cores:
Acessar o menu: System > Settings > Tunables
    Criar o tunable net.inet.rss.enabled com valor 1


8. Otimização de RSS de acordo com a qtde de cpus:
Acessar o menu: System > Settings > Tunables
    Criar o tunable net.inet.rss.bits com valor (qtde de núcleos / 4)



ANOTAÇÕES
Reinicie o firewall a cada alteração para aplicar imediatamente a função desejada.



REFERENCIAS:


https://notes.xeome.dev/notes/OPNSense-Tuning
https://teklager.se/en/knowledge-base/opnsense-performance-optimization/
https://medium.com/@truvis.thornton/opnsense-firewall-configuration-performance-tuning-for-multi-gigabit-internet-and-better-speeds-in-cfc80c49c544
https://calomel.org/network_performance.html
https://calomel.org/freebsd_network_tuning.html
https://binaryimpulse.com/2022/11/opnsense-performance-tuning-for-multi-gigabit-internet/


*Lembre-se, redes de computadores está mais para engenharia quanto um palhaço está para o circo.
That's all folks.
- nothing broken, nothing missing;

Obrigado por compartilhar Luciano! Para facilitar criei um tópico e fixei para que possa deixar lá também esses HOWTOs.

Abraços!
Cloudfence Open Source Team

Olá Julio.
Não ficou claro se devo continuar criando novos tópicos e apenas colar o link no tópico fixo que criou,
ou se devo criar os howtos como mensagens do tópico fixo que criou.

- nothing broken, nothing missing;

Olá! Pode continuar fazendo da forma como está, criei o tópico fixo, apenas para manter as referências. Com o tempo novos tópicos serão criados e os HOWTOs ficarão mais "abaixo". Tudo bem que uma busca resolve, mas o intuito foi facilitar.

Fique a vontade para fazer como melhor entender.  ;)

Cloudfence Open Source Team