Em outubro de 1986, a internet primitiva sofreu seu primeiro colapso por congestionamento: a taxa de transferência do Lawrence Berkeley Lab para a UC Berkeley, a 400 jardas de distância, caiu de 32 Kbps para 40 bps. Os hosts retransmitiam pacotes perdidos em velocidade máxima, inundando ainda mais a rede.
O artigo de Van Jacobson de 1988, Congestion Avoidance and Control, explicou o mecanismo e prescreveu a correção: os remetentes deveriam aumentar sua janela em um pacote por round trip quando não houvesse perda, e reduzi-la pela metade quando um pacote fosse perdido, uma política de aumento aditivo e diminuição multiplicativa.
Como todo remetente TCP segue o mesmo algoritmo, a rede alcança um equilíbrio estável e aproximadamente justo sem nenhum controlador central. A ideia foi adotada no TCP e mais tarde codificada na RFC 5681, junto com slow start, fast retransmit e fast recovery.
Detectar perda, reduzir a velocidade pela metade; depois voltar a subir aos poucos
A perda é um sinal de congestionamento que todo remetente já recebe, então nenhuma maquinaria extra de rede é necessária.
A diminuição multiplicativa responde rápido ao problema; o aumento aditivo sonda a capacidade lentamente.
Todos os remetentes que compartilham a regra fazem a justiça emergir do comportamento individual.
Corrigiu a falha sem alterar roteadores nem adicionar largura de banda.
Quando a resposta racional de cada ator piora um recurso compartilhado, mude a regra que todos seguem: faça a ação segura crescer lentamente e a ação prejudicial diminuir bruscamente.
O algoritmo tornou-se o comportamento padrão do TCP, o protocolo de transporte que carrega a maior parte do tráfego da internet. A RFC 5681, publicada em 2009, ainda lista slow start, congestion avoidance, fast retransmit e fast recovery como o padrão, e a pesquisa em controle de congestionamento cresceu a partir deste artigo até se tornar um campo próprio.
CONFIRA AS EVIDÊNCIAS
As fontes
- Congestion Avoidance and Control (Van Jacobson & Michael Karels, November 1988) Lawrence Berkeley National Laboratory · ee.lbl.gov
- RFC 5681 — TCP Congestion Control Internet Engineering Task Force · rfc-editor.org