Eliminando o Neighbour table overflow

Publicado por Carlos Affonso Henriques. em 01/05/2006

[ Hits: 25.570 ]

 


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.

Outras dicas deste autor

Acertando o relógio do sistema via http e DNS

Construindo bridges Tor com Docker

Wine rodando Dreamweaver MX

Sincronizando relógios de hardware e de sistema

Executando comandos do Shell Bash pelo Python

Leitura recomendada

Acelerando o yum com Axel

Could not associate wlan0 - try increasing WIRELESS_TIMEOUT and check network is WEP or has no security

Configurando vídeo no Debian Lenny

Migrando todos os pacotes DEB de uma instalação para outra

Variáveis de internacionalização no Slackware

  

Comentários
[1] Comentário enviado por removido em 02/05/2006 - 18:45h

Oi Carlos,

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!

[2] Comentário enviado por capitainkurn em 03/05/2006 - 10:20h

Está funcionando até hoje!

[3] Comentário enviado por fmpfmp em 04/10/2006 - 10:31h

Esta dica na verdade não resolve o problema. Esse erro é causado porque provavelmente a configuração de rede do servidor ou roteador está errada. Comigo bastou alterar a máscara de subrede para o valor correto, de /24 para /26, que resolveu.

[4] Comentário enviado por jg_bru em 07/11/2006 - 14:55h

Esta dica resolveu meu problema, tenho um Red Hat 9, rodando como server de internet pra 500 maquinas...

Valew!!!

Guilherme Moura

[5] Comentário enviado por fernandofat em 10/11/2006 - 08:28h

Apenas para compartilhar com os companheiros...

Tenho um "roteador" (leia-se encaminhamento de pacotes) que roteia 5 redes com mais de 250 hosts por rede, tive a mesma mensagem de erro (Neighbour table overflow) porém sem parada de rede.

Não pretendo aumentar o limite da tabela ARP vou pesquisar alguma outra alternativa, se achar coloco aqui....

[]'s

Fernando

[6] Comentário enviado por fabio em 26/07/2007 - 16:21h

Só uma dúvida, vizinho em inglês significa neighbor, não seria assim ao invés de neighbour?

Um abraço.

[7] Comentário enviado por LFer em 27/07/2007 - 11:50h

Para o fabio:
As duas formas de vizinho estão corretas, só que uma é a forma escrita no inglês britânico e a outra é a forma utilizada pelo inglês americado.

[8] Comentário enviado por pankdo em 30/07/2007 - 18:54h

boa solucao simples e funcional
gostei muito

[9] Comentário enviado por alessandro_ufms em 08/09/2007 - 15:33h

Tive esse problema quando baixava arquivos por torrent. O torrent baixava normal, porém depois de um tempo, a internet parava (mas o torrent continuava de boa). Dava ping em um site e ele retornava um erro falando que tava com buffer cheio e tals. Essa dica funciona perfeitamente, porém no Ubuntu não existe o arquivo /etc/rc.d/rc.S. No Ubuntu tem que colocar, essas linhas no final do /etc/sysctl.conf:

net.ipv4.neigh.default.gc_thresh1=4096
net.ipv4.neigh.default.gc_thresh2=16384
net.ipv4.neigh.default.gc_thresh3=32768

para toda vez que rebootar a maquina ela pegar esses valores.

Lembrando que o número de conexões fica a gosto do freguês... =D

[10] Comentário enviado por pieriqueiroz em 01/10/2007 - 17:08h

Depois destas alterações não consigo receber mensagens pelo Outlook e não acesso o msn.
Alguém tem alguma idéia do que pode ser?

Grata.

[11] Comentário enviado por rodrigo-nunes em 27/08/2008 - 11:12h

Obrigado!!! Problema resolvido.
Valeu!!!!

[12] Comentário enviado por Credmann em 13/09/2009 - 02:54h

O arpd pode ser uma alternativa?

[13] Comentário enviado por rafaelalmeida em 17/09/2009 - 19:17h

A dica valeu demais! Trabalho em uma rede gigantesca e ultimamente estava pasando por este problema em meu servidores de firewall.

VLW

[14] Comentário enviado por jbrasil em 07/12/2009 - 15:40h

Opa, funcionou d +
Valeu.
Obrigado.

[15] Comentário enviado por Marcus-RJ em 26/02/2010 - 09:02h

Boa! =)

[16] Comentário enviado por billsmoura em 21/01/2013 - 13:32h

Boa dica. Apliquei as alterações e as mensagens terminaram. Obrigado pela dica!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts