En octubre de 1986 la internet temprana sufrió su primer colapso por congestión: el rendimiento desde el Lawrence Berkeley Lab hasta UC Berkeley, a 400 yardas de distancia, cayó de 32 Kbps a 40 bps. Los hosts retransmitían los paquetes perdidos a toda velocidad, inundando aún más la red.

El artículo de Van Jacobson de 1988, Congestion Avoidance and Control, explicó el mecanismo y prescribió la solución: los emisores debían aumentar su ventana en un paquete por viaje de ida y vuelta cuando no hubiera pérdidas, y reducirla a la mitad cuando se perdiera un paquete, una política de incremento aditivo y decremento multiplicativo.

Como todos los emisores TCP siguen el mismo algoritmo, la red alcanza un equilibrio estable y aproximadamente justo sin ningún controlador central. La idea se adoptó en TCP y más tarde se codificó en el RFC 5681 junto con el arranque lento, la retransmisión rápida y la recuperación rápida.

Detectar la pérdida, reducir la velocidad a la mitad; luego volver a subir poco a poco

La pérdida es una señal de congestión que todo emisor ya recibe, así que no se necesita maquinaria de red adicional.

El decremento multiplicativo responde rápido a los problemas; el incremento aditivo sondea la capacidad lentamente.

Que todos los emisores compartan la regla significa que la equidad surge del comportamiento individual.

Resolvió el fallo sin cambiar los routers ni añadir ancho de banda.

Cuando la respuesta racional de cada actor empeora un recurso compartido, cambia la regla que todos siguen: haz que la acción segura escale lentamente y que la acción dañina escale de forma abrupta.

El algoritmo se convirtió en el comportamiento predeterminado de TCP, el protocolo de transporte que lleva la mayor parte del tráfico de internet. El RFC 5681, publicado en 2009, sigue enumerando el arranque lento, la evitación de congestión, la retransmisión rápida y la recuperación rápida como el estándar, y la investigación sobre control de congestión creció a partir de este artículo hasta convertirse en un campo propio.

CONSULTA LAS PRUEBAS

Las fuentes

  1. Congestion Avoidance and Control (Van Jacobson & Michael Karels, November 1988) Lawrence Berkeley National Laboratory · ee.lbl.gov
  2. RFC 5681 — TCP Congestion Control Internet Engineering Task Force · rfc-editor.org