AIMD, o Additive Increase, Multiplicative Decrease, es un principio fundamental en los algoritmos de control de congestión de redes. Su objetivo es optimizar el uso del ancho de banda disponible y evitar el colapso de la red debido a la sobrecarga. El algoritmo opera ajustando el tamaño de la 'ventana de congestión' (congestion window - CWND) de un emisor. Cuando no se detecta congestión (es decir, los paquetes son confirmados exitosamente), la CWND se incrementa aditivamente, típicamente en una unidad (un segmento o MSS) por cada RTT (Round Trip Time) o por cada ACK recibido. Esto permite explorar la capacidad de la red de manera gradual y controlada. Sin embargo, cuando se detecta congestión (generalmente inferida por la pérdida de paquetes, ya sea por timeouts o ACKs duplicados), la CWND se reduce multiplicativamente, comúnmente a la mitad. Esta reducción drástica busca aliviar rápidamente la presión sobre la red y dar tiempo para que se disipe la congestión.

El ejemplo más prominente de la implementación de AIMD se encuentra en el Transmission Control Protocol (TCP). Variantes de TCP como TCP Reno, TCP NewReno, y TCP CUBIC (aunque CUBIC modifica la fase de incremento para ser más agresiva en redes de alto ancho de banda y latencia) utilizan el principio AIMD para gestionar la congestión. Por ejemplo, en TCP Reno, después de la fase de 'slow start', el algoritmo entra en 'congestion avoidance', donde la CWND crece aditivamente. Si se detecta una pérdida de paquete, la CWND se reduce multiplicativamente. Más allá de TCP, los principios de AIMD se han aplicado o inspirado algoritmos en otros contextos donde es necesario un control de flujo adaptativo, como en sistemas de streaming de video adaptativo o en la gestión de recursos en entornos de computación distribuida, aunque con adaptaciones para sus dominios específicos.

Para un Arquitecto de Sistemas, comprender AIMD es crucial porque subyace al comportamiento de la mayoría de las comunicaciones de red de larga distancia y alto volumen. Afecta directamente el rendimiento percibido de las aplicaciones, la latencia y el throughput. Al diseñar sistemas distribuidos, un arquitecto debe considerar cómo el control de congestión de TCP impactará la capacidad de los servicios para comunicarse eficientemente, especialmente en entornos con ancho de banda limitado o alta latencia. Por ejemplo, una aplicación que realiza muchas transacciones pequeñas y rápidas podría ser más sensible a la fase de 'slow start' y a las reducciones multiplicativas de AIMD que una aplicación que transfiere grandes bloques de datos. Entender los trade-offs entre la agresividad del incremento (que busca maximizar el throughput) y la severidad de la reducción (que busca prevenir el colapso de la red) es vital para optimizar la configuración de la red, seleccionar protocolos de transporte adecuados o incluso diseñar mecanismos de control de flujo a nivel de aplicación que coexistan armoniosamente con el comportamiento de la red subyacente. Un diseño deficiente que ignore AIMD puede llevar a un rendimiento subóptimo, 'bufferbloat' o incluso a la inanición de recursos en escenarios de alta congestión.