Control de Congestión Palermo

El Control de Congestión Palermo está basado en un nuevo método para estimar la porción de la capacidad disponible utilizada por las conexiones TCP.

Los algoritmos tradicionales buscan maximizar el throughput y evitar la congestión de la red. El Control de Congestión Palermo agrega a estos, los objetivos de minimizar la latencia y de lograr una distribución más justa de la capacidad disponible entre las conexiones que compiten en los cuellos de botella de la red.

Estos objetivos muchas veces se oponen entre sí, y la mejor solución consiste en encontrar un comportamiento para la conexión basado en una solución de compromiso, que puede variar en función del tipo de servicio o del tipo de aplicación. El comportamiento que debe tomar una conexión para encontrar esta solución, y los resultados obtenidos dependen no solo del comportamiento propio, sino también del comportamiento del resto de las otras conexiones con las que comparte el cuello de botella del propio camino. Y además debe actuar en base a información incompleta, ya que las características y condiciones de su camino de red, deben estimarse en forma indirecta, y son además muy variables en el tiempo, tanto en el corto como en el mediano plazo.

El algoritmo de Control de Congestión Palermo se basa entonces en nuestra nueva metodología de estimación de la porción utilizada por una conexión TCP de la capacidad conjunta disponible en el cuello de botella del camino de red, presentada en el congreso IETF 95 - Internet Control Congestion Research Group (ICCRG) 2016. También se basa en un comportamiento adaptativo que varía en función de si la conexión comparte el cuello de botella con otras conexiones bien comportadas o no, y de la cantidad de conexiones con la que lo comparte, condiciones que son estimadas con el nuevo método.

La primera versión del algoritmo fue desarrollada en 2016 y es un algoritmo de control de congestión desde el receptor de los datos (receiver side congestión control). Es decir que se orientaba a mejorar las características del tráfico entrante a hosts de usuarios y servidores, que reciben información desde otros servers que no necesariamente utilizan algoritmos de congestión bien comportados, sino los más difundidos, que causan buffer-bloat en el cuello de botella de su camino de red y por lo tanto causan grandes latencias a todas las conexiones que comparten el cuello de botella, incluyendo las del mismo usuario (por ejemplo todas las conexiones paralelas con las que se baja una página web y sus gráficos).

Esta primera versión fue puesta a prueba en los web proxies de la Universidad de Palermo que manejaban el tráfico entrante de los alumnos y profesores, mejorando sensiblemente la latencia de transacciones web y otros servicios transaccionales.

Nuestro grupo de trabajo publicó en noviembre 2021 una nueva versión para tráfico saliente (sender side), para optimizar el tráfico de servidores de contenido y hosts en general. La presente versión está desarrollada como módulo de carga dinámica para el kernel de Linux versión 5.9 y superiores, se publica con licencia GNU GPL. Se puede descargar el código fuente y el instalador desde el link que figura más abajo.

El desarrollo de la versión sender side es financiada por el Latin America and Caribbean Network Information Centre (LACNIC), en dónde el proyecto resultó ganador del premio de los premios del programa FRIDA 2020 en el área Estabilidad y seguridad.

Actualmente estamos trabajando en la documentación y presentación para congreso. Para consultas y contacto, por favor escribir a telco@palermo.edu.


Publications and Lectures:

• Popovsky, Alejandro. (2023). Control de congestión Palermo:
Prevención de bufferbloat y distribución justa de capacidad. LACNIC 39. Mérida. México. https://apievt.lacnic.net/wp-content/uploads/2023/05/control-de-congestion-palermo-prevencion-de-bufferbloat-y-distribucion-justa-de-capacidad.pdf

• Popovsky, Alejandro & Muzillo, Gustavo. (2022). Palermo Congestion Control: buffer bloat prevention based on capacity share estimation. 2022 IEEE Biennial Congress of Argentina (ARGENCON). San Juan, Argentina. doi: https://doi.org/10.1109/ARGENCON55245.2022.9976391

• Muzillo, Gustavo. Popovsky, Alejandro. "Palermo Congestion Control, Sender Side". IX Encuentro Nacional de Técnicos, Argentine Network Operators Group (ARNOG), Rosario, Argentina, 2022.

• Popovsky, Alejandro. Muzzillo, Gustavo. Palermo Congestion Control, Sender Side. IETF 113, Pre IETF-LAC, March 2022.

• Popovsky, Alejandro. Available Capacity Share Estimation for Buffer Bloat Prevention. Repositorio institucional, Facultad de Ingeniería, Universidad de Palermo, November 2016.

• Popovsky, Alejandro. New buffer bloat mitigation alternatives: infrastructure versus congestion control. IETF Day 2016, JAIIO 45. September 2016.

• Popovsky, Alejandro. Peeking at the bottleneck, opportunities for bufferbloat prevention. Internet Congestion Control Research Group, IETF 95. April 2016.


Premios:

“Ampliación de algoritmos de control de congestión para optimización de latencia”, Área Estabilidad y Seguridad, Programa FRIDA, LACNIC, Octubre 2020.


Referencias al Proyecto y Noticias.

“Una clave para que internet siga creciendo”, Perfil, Julio 2023.

“Un proyecto para mejorar la experiencia de usuario en Internet”, LACNIC News, Febrero 2021.

“FRIDA Supports 17 Projects for Internet Access, Stability and Security in the Region”, LACNIC News, Agosto 2020.

“¿Por qué Internet es tan lento en Argentina?”, El Cronista, Agosto de 2016.


Participantes
:

• Ing. Alejandro Popovsky, project director.
• Gustavo Muzzillo, research collaborator, 2020-2023.
• Felix Cuello, research collaborator 2020-2021.
• Ing. Juan López, collaborator, 2016.


Downloads
:

Palermo congestion Control Sender Side, v2.07b, Loadable Kernel Module (LKM) for Linux 5.9 and above, source code, version 2.07b, March 2023


For further information of this and other related projects please call
+54-11-4964-4620 or email: telco@palermo.edu, or research@palermo.edu.