Estou usando 3G como minha conexão principal com a Internet, e o TCP está ficando cada vez mais intrigante a cada dia. Por exemplo:
Baixar do kernel.org é muito rápido:
$wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.8.tar.bz2
aumenta para ~ 500kB / s após alguns segundos!
Alguns servidores são incrivelmente lentos, por exemplo www.graphic-pc.com: A
mesma coisa, o download de um arquivo grande com o wget começa em ~ 30kB / s por uma fração de segundo e depois cai para 5-10k ou até pior.A navegação na Web é decente, mas pouco confiável. Aleatoriamente, uma página levará muito tempo para carregar ou até falhar, mas uma recarga pode ser bem-sucedida quase imediatamente.
Agora, por acaso, comecei a jogar com o OpenVPN sobre UDP no topo da conexão 3G e, de repente, OMG tudo é extremamente rápido!
O mesmo www.graphic-pc.com agora dispara a 100-200kB / s!
- O que está acontecendo aqui ???
- Como é que é muito melhor com a VPN do que sem?
- E por que o graphic-pc.com rastreia quando o kernel.org voa?
Algo a ver com minha pilha tcp (ou o servidor) ou algum roteador de buggy no meio?
Notas:
O programa de instalação é um laptop executando Ubuntu Lucid e um dongle Huawei 3G (conexão pppd tão direta).
Posso reproduzir isso praticamente a qualquer hora do dia e não estou me mexendo, portanto, claramente não é o ambiente celular ou o congestionamento da Internet. (embora o kernel.org sem VPN às vezes melhore à noite, 60kB ou mais - mas ainda 500kB com VPN!)
Para 2) o wireshark mostra pacotes retransmitidos, dup ack, mesmo fora de ordem às vezes.
Eu tentei jogar com diferentes parâmetros / proc / sys / net / ipv4 (tcp_rmem, window_scaling, tcp_congestion ...) não parece fazer diferença.
Atualização:
Tentei no Windows 7 (sem VPN) com alguns resultados interessantes:
tcp settings : default tcp_optimizer
kernel.org : 10 kB/s 20 kB/s
graphic-pc.com: 8 kB/s 70 kB/s !
O tcp_optimizer ativou o ctcp entre outras coisas. Tenho que verificar o que os graphic-pc.com está executando, minha aposta é o tcp_westwood do linux e o ms ctcp não se mistura bem aqui ...