Os servidores Linux exibem um desempenho ruim de download por trás do firewall Sonicwall

7

Estou trabalhando com dois servidores CentOS Linux localizados junto a um firewall Sonicwall PRO 2040 em execução no modo de ponte transparente.

Esses servidores estão tendo um problema estranho ao baixar arquivos com mais de alguns megabytes de tamanho. Por exemplo, se eu tentar enviar por FTP ou FTP uma cópia do kernel do Linux do kernel.org, o primeiro ~ 1-2MB será baixado a 600 + K / s, e então a taxa de transferência cairá de um penhasco para 1K / s. / p>

Revi todas as configurações do firewall para algo suspeito, mas não encontrei nada. Mais interessante, eu realizei o mesmo download com um servidor Windows sentado atrás do mesmo firewall, e ele navegou até 600 + K / s o caminho todo.

Alguém viu isso? Onde devo começar a procurar solucionar esse problema?

    
por Joshua Penix 26.02.2010 / 22:28

6 respostas

4

Nós também estamos experimentando o mesmo problema. Qualquer coisa maior do que o que pode ser transferido no estouro do download inicial (~ 3.7mb para nós), diminui para ~ 1-4kb por segundo, independentemente da largura de banda disponível.

Parece ser um problema específico e comum com o Firewall SonicWall PRO 2040 - link

A raiz do problema é o firewall e a melhor correção a longo prazo é encontrar uma configuração no firewall para permitir que a opção TCP Window Scaling seja ativada e também usar o fator de escala TCP Window da máquina iniciadora corretamente inicialização da conexão.

Embora este artigo se refira aos roteadores, a mesma lógica se aplica ao que está acontecendo com o SonicWall Pro 2040 Firewall, link :

The details are still being figured out, but it would appear that some routers on the net are rewriting the window scale TCP option on SYN packets as they pass through. In particular, they seem to be setting the scale factor to zero, but leaving the option in place. The receiving side sees the option, and responds with a window scale factor of its own. At this point, the initiating system believes that its scale factor has been accepted, and scales its windows accordingly. The other end, however, believes that the scale factor is zero. The result is a misunderstanding over the real size of the receive window, with the system behind the firewall believing it to be much smaller than it really is. If the expected scale factor (and thus the discrepancy) is large, the result is, at best, very slow communication. In many cases, the small window can cause no packets to be transmitted at all, breaking TCP between the two affected systems entirely.

Semelhante ao que foi mencionado acima, existem soluções alternativas para máquinas individuais - link , desativando o rfc1323 Extensão TCP, o firewall nunca tem a oportunidade de passar um Fator de Escala de Janela TCP de 0 e passa adiante que a extensão rfc1323 não está habilitada, presumivelmente usando o tamanho máximo permitido da janela por TCP sem a extensão rfc1323, que é 64kb.

Comandos que usamos em nossas várias máquinas como solução temporária:

Ubuntu 10.10:
A alteração entra em vigor imediatamente:

sudo sysctl -w net.ipv4.tcp_window_scaling=0

Mudança permanente após a próxima reinicialização:

sudo sh -c 'echo "net.ipv4.tcp_window_scaling=0" >> /etc/sysctl.conf'


Mac OSx:
A alteração entra em vigor imediatamente:

sudo sysctl -w net.inet.tcp.rfc1323=0 

Mudança permanente após a próxima reinicialização:

sudo sh -c 'echo "net.inet.tcp.rfc1323=0" >> /etc/sysctl.conf'


Win7:
Veja as opções disponíveis:

netsh interface tcp show global

Desativar comando (persistente):

netsh interface tcp set global autotuning=disabled


Em resposta ao motivo pelo qual o Windows Server não estava tendo problemas, encontrei este artigo - link

TCP window scaling is negotiated on demand in Windows Server 2003, based on the value set for the SO_RCVBUF Windows Sockets option when a connection is initiated. Additionally, the Window Scale option is used by default on a connection if the received SYN segment for that connection as initiated by a TCP peer contains the Window Scale option. Windows Server 2003 TCP does not initiate connections with window scaling by default. To instruct the Windows Server 2003 TCP stack to attempt to negotiate a larger receive window size by making use of the Window Scale option, set the Tcp1323Opts registry value to 1.

    
por 29.04.2011 / 19:41
3

Esses firewalls ficarão sobrecarregados se você tiver a Prevenção contra intrusões e / ou o Antivírus ativado. Especialmente se você tiver o TCP Stream selecionado como um dos tipos a serem verificados. Ele tentará construir o arquivo inteiro em sua memória para escaneá-lo ...
Desative temporariamente esses recursos e veja se seu desempenho aumenta novamente. Em caso afirmativo, analise a adição de seus servidores à lista de exceções para que você não tenha suas calças largas para toda a rede.

    
por 26.02.2010 / 23:20
1

Você vê os problemas de download para o servidor Linux de dentro da rede? Se não, isso deve ser algo a ver com a combinação do Linux e do Firewall. No firewall, você pode observar o uso da CPU ou procurar por avisos? Que tal redefinir o firewall?

Talvez após o primeiro MB ou mais, um ajuste seja feito automaticamente pelo Linux para as opções TCP (ou talvez para a Camada 2), e o firewall não gosta disso? Observar as várias opções de rede no / proc pode lhe dar uma ideia. Além disso, um dump de pacote no Linux pode mostrar alguma mudança no que está acontecendo quando a desaceleração acontece.

    
por 26.02.2010 / 23:01
1

Embora não tenha encontrado a causa raiz disso, encontrei uma solução rápida que me permite transferir arquivos através de:

sysctl -w net.ipv4.tcp_window_scaling = 0

O padrão do kernel para escalonamento da janela TCP está ativado, mas esse comando me permite desativá-lo temporariamente. Eu não tenho persistido a configuração permanentemente via sysctl.conf porque eu não tenho certeza sobre seus efeitos gerais de desempenho, mas funciona em um piscar de olhos e então eu posso voltar para 1 quando eu terminar.

    
por 14.07.2010 / 01:33
1

Tente alterar as janelas do TCP no Sonicwall.

  1. Faça login na página de administração do SonicWALL
  2. Alterar o final do URL de main.html para diag.html
  3. Clique em Configurações Internas, vá para Configurações de Serviços de Segurança
  4. Marque "Ativar a imposição de um limite na janela TCP máxima anunciada permitida com qualquer serviço baseado em DPI"
  5. Lembre-se de voltar a página e pressionar APLICAR!
por 09.06.2011 / 18:10
0

Existem muitos diagnósticos iniciais para serem realizados aqui.

Erros em /var/log/messages ?

Erros em dmesg ?

Perda de pacotes evidenciada em /sbin/ifconfig ?

Problemas com a negociação de links?

Há alguma diferença, física ou não, entre a caixa do Windows e a caixa do Linux?

Editar 1

Você consegue reproduzir o desempenho usando diferentes protocolos e sites?

    
por 26.02.2010 / 22:35