Sobre o desempenho das implementações TCP do Linux e Windows

13

Eu entendo a implementação da pilha TCP no Windows e Linux são diferentes. O Windows usa um algoritmo de controle de congestionamento conhecido como TCP Reno, enquanto o Linux usa o Cubic.

Como os 2 protocolos se comparam quando coexistem na mesma rede? É verdade que o Cubic (Linux) é mais agressivo e pode acabar ficando com uma parcela maior da largura de banda?

AIB
fonte

Respostas:

4

Observe que o algoritmo de controle de congestionamento afeta apenas o tráfego upstream e, portanto, apenas a largura de banda upstream.

Dito isso, o Cubic, na verdade, é mais agressivo, especialmente para redes com um produto com alto atraso de largura de banda. Existe até uma regra embutida na implementação do Linux para nunca usar uma taxa de envio menor do que o reno usaria na mesma situação:

O algoritmo cúbico do Linux também inclui código que garante que o algoritmo cúbico seja pelo menos tão agressivo quanto o TCP padrão

- Leith, Shorten, McCullagh, Avaliação experimental do Cubic-TCP

Portanto, ao baixar as atualizações do Windows enquanto assiste aos vídeos do YouTube, o tráfego do YouTube pode atrapalhar o tráfego da Microsoft e não há nada que você possa fazer.

artistoex
fonte
12

Primeiro, o que você diz não é factualmente correto:

  • O Linux até o kernel versão 2.6.18 usa o BIC por padrão.
  • O kernel Linux 2.6.19 e posterior usa CUBIC por padrão.
  • Os mecanismos de controle de congestionamento TCP do Linux são conectáveis , por exemplo, você pode alterá-los no arquivo.
  • O Windows XP e versões anteriores usam TCP Reno (ou New Reno )
  • O Windows Vista e versões posteriores também possuem o TCP composto , que é ativado por padrão no Server 2008 e pode ser ativado no Vista e Windows 7, se necessário.

Todos esses algoritmos são auto-ajustados de acordo com a largura de banda de rede disponível, latência, memória disponível etc. Eles também possuem muitos parâmetros de configuração que permitem ajustá-los manualmente.

Portanto, você não pode realmente comparar um com o outro, sem observar a topologia exata exata da rede, o hardware e o software usados, etc. É verdade que o CUBIC é menos agressivo que o BIC, mas, na prática, outras considerações costumam ser mais importantes do que o tipo de algoritmo de congestionamento TCP usado.

A menos que você esteja tentando ajustar um cenário de rede incomum e de escopo muito restrito, todos esses algoritmos funcionam suficientemente bem e são justos e prontos para uso.

haimg
fonte
O cenário de rede é uma LAN de 100Mbps congestionada com 1000 computadores ímpares. Conectividade à Internet via servidor proxy. Alguns dos PCs são Linux, enquanto a maioria é baseada em Windows. Parece que a navegação no Linux é mais rápida. Eu estava tentando racionalizar essa observação #
AIB
Sem medir e sem ver o que realmente está acontecendo na sua rede, é difícil dizer. Mas acho que a chance de diferença entre os algoritmos de congestionamento TCP e muito baixa, especialmente se sua rede não estiver 100% congestionada o tempo todo. Existem muitos outros fatores que podem afetar a velocidade da navegação.
haimg