Pequeno número máximo de conexões em um roteador Linux

2

Eu tenho uma caixa Linux atuando como um roteador sem iptables ou outro firewall e nenhum aplicativo de rede rodando nele, apenas roteador puro. Eu coloquei em um ambiente de teste que gera muitas conexões TCP, cada uma com fonte única e IP de destino, e essas conexões passam por esse roteador. Eu estou observando que o número de conexões criadas com sucesso sobe para aproximadamente 500 e então nenhuma outra conexão pode ser criada por vários minutos, então outras 100 conexões podem ser criadas e há outra pausa, e assim por diante. Se 10 conexões para cada par origem-destino forem criadas, então os números máximos vão aproximadamente 10 vezes, então o problema provavelmente está com muitas conexões de diferentes IPs.

Como o tráfego é simplesmente roteado, não tem a ver com o número de descritores de arquivos, o rastreamento de conexões do iptables e outras coisas frequentemente propostas para verificar casos semelhantes. A caixa tem bastante RAM livre e CPU, ambos os NICs são gigabit. O kernel é 2.6.32.

Eu já tentei aumentar o net.core. * mem_max, net.core.netdev_max_backlog e txqueuelen em ambos os NICs, sem nenhum efeito. O que mais devo verificar? Existe algum limite de taxa no próprio kernel?

    
por Eugene 03.12.2012 / 14:54

2 respostas

0

Não está claro por que você tem certeza de que o problema não é causado por um de seus endpoints (cliente ou servidor), que tipo de tráfego você está gerando? Funciona com dispositivo diferente?

    
por 03.12.2012 / 23:21
0

Eu encontrei a resposta e foi muito engraçado - estouro da tabela ARP. O tráfego no ambiente de teste foi gerado a partir de muitos IPs que residiam em redes diretamente conectadas, então o sistema teve que usar o ARP primeiro para descobrir MACs, e o limite rígido padrão da tabela ARP no Linux é apenas 1024 entradas, o que dá número de conexões entre redes conectadas a 2 interfaces diferentes próximas a 512. Quando eu aumentei net.ipv4.neigh.gc_thresh1 e também .gc_thresh2 e .gc_thresh3, o problema foi resolvido.

    
por 20.12.2012 / 17:57