Desempenho de encaminhamento de pacotes do kernel Linux

2

Estou usando uma caixa do Linux como roteador há algum tempo. Nada muito chique, apenas permitindo o encaminhamento no kernel, ativando o mascaramento e configurando o iptables para fazer alguns furos no firewall.

Recentemente, um amigo meu apontou um problema de desempenho. Conexões TCP individuais parecem ter um desempenho muito ruim. Você precisa abrir várias conexões TCP paralelas para obter uma velocidade decente.

Por exemplo, tenho uma conexão com a Internet de 10 Mbit. Quando eu faço o download de um arquivo de uma fonte conhecida e rápida usando algo como o DownThemAll! extensão para o Firefox (que abre várias conexões TCP paralelas) Eu posso chegar ao máximo a minha largura de banda a cerca de 1 MB / s. No entanto, quando eu faço o download do mesmo arquivo usando o gerenciador de downloads integrado no Firefox (usa apenas uma única conexão TCP), ele é iniciado rapidamente e a velocidade cai até 100 KB / se 350 KB / s.

Eu verifiquei a rede interna e não parece ter nenhum problema. Tudo passa por um comutador de 100 Mbits. Eu também executei o iperf tanto internamente (do roteador ao meu desktop) quanto externamente (do meu desktop para uma caixa do Linux que possuo na net) e não vi nenhum problema. Ele atinge cerca de 1 MB / s como deveria. O Speedtest.net também informa 10 velocidades de Mbits.

A carga na máquina Linux gira em torno de 0,00, 0,00, 0,00 o tempo todo e tem bastante RAM livre. É um laptop antigo com um processador Pentium M de 1,6 GHz e 1 GB de RAM. A rede interna é conectada ao Intel NIC integrado e o modem a cabo é conectado a um Netgear FA511 Placa de rede PCMCIA de 32 bits.

Eu acho que o problema é com o encaminhamento de pacotes no roteador, mas eu honestamente não tenho certeza de onde o problema poderia estar. Existe alguma coisa que possa diminuir substancialmente um único fluxo TCP?

    
por Bob Somers 20.09.2009 / 22:53

2 respostas

1

O problema foi corrigido. Houve algum tipo de problema de hardware (ainda não sei o que) na máquina. Depois de instalar a mesma distribuição Linux e reconfigurar o firewall e o encaminhamento de pacotes da mesma maneira em uma máquina diferente, não estou mais com o problema.

Estranho.

    
por 21.09.2009 / 11:42
0

Este é provavelmente um problema de desempenho por transmissão no terminal remoto ou no seu provedor de serviços de Internet - cada fluxo individual está sendo acelerado, seja deliberadamente (pelo seu provedor) ou devido a congestionamento (no site remoto, no ISP) , ou em qualquer lugar entre).

É improvável que seja uma falha no seu final.

Como exemplo de como isso funciona quando o problema é congestionamento, imagine um servidor da Web com uma conexão de 10000Kbyte / seg e nenhum outro limite / gargalo. Se houver 100 conexões ativas baixando objetos grandes, cada uma delas (ignorando as variações causadas pela latência e as diferenças de congestionamento entre cada cliente e o servidor) obterá cerca de 100 Kbytes / s em média. Se você tivesse aberto cinco conexões ao invés de uma, você obteria algo mais como 480Kbyte / seg (10000/104 * 5) enquanto cada fluxo simples receberia algo ao longo das linhas de 95Kbyte / seg (10000/104 * 1). É claro que neste exemplo você é o único usando múltiplas conexões, o que é improvável que seja o caso na vida real. E também essa matemática só funciona se o gerenciamento de tráfego sob congestionamento resultar em uma taxa média justa dada a cada fluxo, novamente na vida real há muitos fatores que farão com que isso varie, e o gerenciamento de tráfego pode impor alguns limites por host no topo de qualquer fluxo explícito ou implícito por stream.

    
por 20.09.2009 / 23:03