CUBIC TCP - CUBIC TCP

CUBIC é um algoritmo de prevenção de congestionamento de rede para TCP que pode alcançar conexões de alta largura de banda em redes de forma mais rápida e confiável em face de alta latência do que os algoritmos anteriores. Ajuda a otimizar redes longas e gordas .

CUBIC TCP é implementado e usado por padrão nos kernels Linux 2.6.19 e superiores a partir de 2006.

O MacOS adotou o CUBIC pelo menos no lançamento do OS X Yosemite em 2014.

A Microsoft o adotou por padrão no Windows 10.1709 Fall Creators Update (2017) e na atualização do Windows Server 2016 1709.

Características

CUBIC é uma derivada menos agressiva e mais sistemática do BIC TCP , em que o tamanho da janela é uma função cúbica do tempo desde o último evento de congestionamento, com o ponto de inflexão definido para o tamanho da janela anterior ao evento. Por ser uma função cúbica, há dois componentes no crescimento da janela. A primeira é uma parte côncava onde o tamanho da janela aumenta rapidamente para o tamanho anterior ao último evento de congestionamento. O próximo é o crescimento convexo, onde o CUBIC procura mais largura de banda, lentamente no início e depois muito rapidamente. O CUBIC passa muito tempo em um platô entre a região de crescimento côncava e convexa, o que permite que a rede se estabilize antes que o CUBIC comece a procurar por mais largura de banda.

Outra diferença importante entre o CUBIC e muitos algoritmos TCP anteriores é que ele não depende da cadência dos RTTs para aumentar o tamanho da janela. O tamanho da janela do CUBIC depende apenas do último evento de congestionamento. Com algoritmos anteriores como TCP New Reno, fluxos com tempos de retardo de ida e volta (RTTs) muito curtos receberão ACKs mais rápido e, portanto, terão suas janelas de congestionamento crescendo mais rapidamente do que outros fluxos com RTTs mais longos. CUBIC permite mais justiça entre os fluxos, uma vez que o crescimento da janela é independente do RTT.

Algoritmo

CUBIC aumenta sua janela para ser dependente em tempo real, não dependente de RTT como o BIC. O cálculo para cwnd (janela de congestionamento) também é mais simples do que o BIC.

Defina as seguintes variáveis:

  • β : fator de diminuição multiplicativo
  • w max : tamanho da janela imediatamente antes da última redução
  • T : Tempo decorrido desde a última redução da janela
  • C : uma constante de escala
  • cwnd : a janela de congestionamento no momento atual

RFC 8312 indica o seguinte:

  • A unidade de todos os tamanhos de janela neste documento são os segmentos do tamanho máximo do segmento (MSS), e a unidade de todos os tempos são os segundos. (Seção 4)
  • β DEVE ser definido como 0,7 (Seção 4.5)
  • C DEVE ser definido como 0,4 (Seção 5)

Então cwnd pode ser modelado por:

Veja também

Além de algoritmos baseados em janela como o Cubic, existem algoritmos baseados em taxa (incluindo BBR do Google) que funcionam de forma diferente usando "taxa de envio" em vez da janela

Referências

links externos