Eliminando o Neighbour table overflow
Dica publicada em Linux / Configuração
Eliminando o Neighbour table overflow
Há muito tempo faço conectividade de condomínios e um problema que comumente quem faz este tipo de serviço tem é o de isolar cada uma das máquinas, de forma que elas não se "enxerguem" nem façam difusão de nomes netbios. Elimino este inconveniente criando tantas sub-redes quanto o necessário, mas isso vai ficar para um artigo que estou preparando.
Esta técnica sempre funcionou muito bem com redes pequenas com até 40 máquinas, mas surgiu um problema quando empreguei a mesma técnica com uma rede de mais de 500 máquinas. Após alguns minutos de operação, o sistema começava a dar a mensagem de erro "Neighbour table overflow" e a rede começava a ficar lenta até parar de vez.
Após muito pesquisar descobri o que ocorria. O kernel, ao ter que manipular uma enorme quantidade de requisições ARP, gerava uma tabela ARP gigantesca e, por padrão, ele não manipula tabelas superiores a 1024 entradas, passando disso ele provocava um transbordamento da tabela ARP que paralizava o sistema.
A solução para o problema foi a seguinte: Alteramos o valor de entradas ARP que o kernel pode suportar para seu limite máximo da seguinte forma:
# echo 16384 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
# echo 32768 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
# echo 65535 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
Pronto, basta inserir as linhas acima em seu rc.local antes que seu firewall seja levantado.
No meu caso eu as inseri no /etc/rc.d/rc.S do Slackware 10.2 antes mesmo da inicialização das interfaces de rede. Está funcionando pefeitamente desde então.
Até a próxima! E um fraternal abraço a todos.
Esta técnica sempre funcionou muito bem com redes pequenas com até 40 máquinas, mas surgiu um problema quando empreguei a mesma técnica com uma rede de mais de 500 máquinas. Após alguns minutos de operação, o sistema começava a dar a mensagem de erro "Neighbour table overflow" e a rede começava a ficar lenta até parar de vez.
Após muito pesquisar descobri o que ocorria. O kernel, ao ter que manipular uma enorme quantidade de requisições ARP, gerava uma tabela ARP gigantesca e, por padrão, ele não manipula tabelas superiores a 1024 entradas, passando disso ele provocava um transbordamento da tabela ARP que paralizava o sistema.
A solução para o problema foi a seguinte: Alteramos o valor de entradas ARP que o kernel pode suportar para seu limite máximo da seguinte forma:
# echo 16384 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
# echo 32768 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
# echo 65535 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
Pronto, basta inserir as linhas acima em seu rc.local antes que seu firewall seja levantado.
No meu caso eu as inseri no /etc/rc.d/rc.S do Slackware 10.2 antes mesmo da inicialização das interfaces de rede. Está funcionando pefeitamente desde então.
Até a próxima! E um fraternal abraço a todos.
Uma dúvida: Aumentar o tamanho de entradas não vai somente retardar o aparecimento do problema? Ou minha preocupação não procede?
Valeu!