Facebook Resultados de experimentos com um novo algoritmo de controle de congestionamento - O COPA é um algoritmo otimizado para transmissão de conteúdo de vídeo, proposto por pesquisadores do Instituto de Tecnologia de Massachusetts (MIT). O protótipo do COPA submetido para testes foi escrito em C++. sob a licença MIT e incluído em — a implementação do protocolo QUIC que está sendo desenvolvido no Facebook.
O algoritmo COPA foi projetado para lidar com os desafios da transmissão de vídeo em redes. Dependendo do tipo de vídeo, os algoritmos de controle de congestionamento enfrentam requisitos aparentemente contraditórios: vídeos interativos exigem latência mínima, mesmo que isso signifique sacrificar a qualidade, enquanto vídeos pré-produzidos de alta qualidade priorizam a manutenção da qualidade. Anteriormente, os desenvolvedores de aplicativos estavam limitados a usar algoritmos diferentes com base nos requisitos de qualidade ou latência. Os pesquisadores que desenvolveram o COPA buscaram criar um algoritmo universal para o gerenciamento de congestionamento TCP durante a transmissão de vídeo, que pudesse ser ajustado às necessidades específicas de cada vídeo.
O algoritmo de controle de congestionamento determina o equilíbrio ideal no envio de pacotes. O envio de pacotes em excesso pode levar à perda de pacotes e a uma penalidade de desempenho devido à necessidade de reenviá-los, enquanto o envio muito lento resulta em latência, o que também impacta negativamente o desempenho. O protocolo QUIC foi escolhido para os experimentos porque permite que os algoritmos de controle de congestionamento sejam implementados no espaço do usuário sem interferir no kernel.
Para evitar congestionamento do canal, o COPA utiliza modelagem de desempenho do canal baseada em uma análise das variações no atraso de entrega de pacotes (o COPA reduz o tamanho da janela de congestionamento à medida que os atrasos aumentam, explorando o fato de que os atrasos começam a aumentar mesmo antes que ocorra a perda de pacotes). O equilíbrio entre atrasos e vazão é controlado por meio de um parâmetro especial, delta. Aumentar o delta aumenta a sensibilidade ao atraso, mas reduz a vazão, enquanto diminuir o delta permite maior vazão à custa de maiores atrasos. Um valor de delta de 0.04 é definido como o equilíbrio ideal entre qualidade e atrasos.
O COPA foi testado em comparação com os populares algoritmos CUBIC e BBR usando o serviço de transmissão ao vivo do Facebook. O algoritmo CUBIC é usado por padrão no Linux e se resume a um aumento gradual no tamanho da janela de congestionamento até que ocorra a perda de pacotes, após o que o tamanho da janela retorna ao valor anterior ao início da perda.
O armazenamento em buffer de pacotes intermediários do CUBIC em equipamentos de rede modernos deixa muito a desejar, pois atrasa a perda de pacotes. O algoritmo de controle de congestionamento não leva em consideração esse armazenamento em buffer e continua aumentando a velocidade mesmo que o link já esteja fisicamente congestionado. Pacotes não enviados são armazenados em buffer em vez de descartados, e o algoritmo de controle de congestionamento do TCP só entra em ação quando o buffer está cheio e não consegue equilibrar a taxa de fluxo adequadamente com a velocidade física do link. Para solucionar esse problema, o Google propôs um algoritmo BBR aprimorado que prevê a largura de banda disponível por meio de verificações sequenciais e estimativa do tempo de ida e volta (RTT).
Com delta=0.04, o desempenho do COPA foi próximo ao do CUBIC e do BBR. Em testes realizados em uma conexão de rede de alta velocidade com baixa latência de pacotes, o COPA alcançou uma latência menor (479 ms) do que o CUBIC (499 ms), mas ficou ligeiramente atrás do BBR (462 ms). Quando a qualidade da conexão se deteriorou, o COPA demonstrou os melhores resultados — a latência foi 27% menor do que a do CUBIC e do BBR.
Além disso, em um canal de comunicação de baixa qualidade, o COPA e o BBR alcançaram taxas de transferência significativamente maiores em comparação com o CUBIC. Os ganhos de taxa de transferência do BBR em relação ao CUBIC foram de 4.8% e 5.5%, enquanto os do COPA foram de 6.2% e 16.3%.
Fonte: opennet.ru
