paint-brush
Los gigantes de la nube gastan una fortuna en balanceadores de carga: esta investigación podría cambiar esopor@loadbalancer
Nueva Historia

Los gigantes de la nube gastan una fortuna en balanceadores de carga: esta investigación podría cambiar eso

por Load Balancer5m2025/02/14
Read on Terminal Reader

Demasiado Largo; Para Leer

Los investigadores han optimizado el equilibrio de carga de capa 7 utilizando SmartNIC programables para mejorar la eficiencia, los costos y el uso de energía en los centros de datos en la nube.
featured image - Los gigantes de la nube gastan una fortuna en balanceadores de carga: esta investigación podría cambiar eso
Load Balancer HackerNoon profile picture
0-item

Autores:

(1) Tianyi Cui, Universidad de Washington ([email protected]);

(2) Chenxingyu Zhao, Universidad de Washington ([email protected]);

(3) Wei Zhang, Microsoft ([email protected]);

(4) Kaiyuan Zhang, Universidad de Washington ([email protected]).

Nota del editor: Esta es la parte 1 de 6 de un estudio que detalla los intentos de optimizar el equilibrio de carga de la capa 7. Lea el resto a continuación.

Tabla de enlaces

Abstracto

Los balanceadores de carga se utilizan ampliamente en las nubes actuales para distribuir de forma escalable las solicitudes de red entre los servidores de los centros de datos. Dado el uso extensivo de los balanceadores de carga y sus costos operativos asociados, varios esfuerzos se han centrado en mejorar su eficiencia mediante la implementación de la lógica de balanceo de carga de Capa 4 dentro del núcleo o mediante el uso de aceleración de hardware. Este trabajo explora si la capacidad de balanceo de carga de Capa 7, más compleja y orientada a la conexión, también puede beneficiarse de la aceleración de hardware. En particular, apuntamos a la descarga de la capacidad de balanceo de carga en SmartNIC programables. Aprovechamos al máximo el costo y la eficiencia energética de los SmartNIC utilizando tres ideas clave. Primero, argumentamos que no se requiere una pila TCP/IP completa y compleja para los balanceadores de carga de Capa 7 y, en su lugar, proponemos un agente de reenvío liviano en el SmartNIC. Segundo, desarrollamos estructuras de datos de gestión de conexión con un alto grado de concurrencia con una sincronización mínima cuando se ejecutan en SmartNIC de múltiples núcleos. Finalmente, describimos cómo se podría acelerar la lógica de balanceo de carga utilizando aceleradores de procesamiento de paquetes personalizados en SmartNIC. Creamos prototipos de Laconic en dos tipos de hardware SmartNIC, logrando un rendimiento de más de 150 Gbps utilizando todos los núcleos en BlueField-2, mientras que un solo núcleo SmartNIC logra un rendimiento 8,7 veces mayor y una latencia comparable a Nginx en un solo núcleo x86.

1 Introducción

Los balanceadores de carga son un componente fundamental para los centros de datos, ya que equilibran la carga de servicio entre conjuntos de servidores de aplicaciones [38, 45, 46]. Los balanceadores de carga se construyeron inicialmente como dispositivos de hardware especializados, pero ahora se implementan normalmente como software que se ejecuta en servidores básicos o máquinas virtuales. Este modelo de implementación proporciona un mayor grado de personalización y adaptabilidad que los diseños antiguos basados en hardware, pero también puede resultar en altos costos para los proveedores de la nube y los servicios de aplicaciones, dados los costos de compra y el consumo de energía de los servidores de propósito general [8]. Los servicios de aplicaciones a menudo hacen grandes esfuerzos para consolidar y reducir su uso de balanceadores de carga para obtener los ahorros de costos deseados [2, 4, 5].


Dado el uso extensivo y el costo de los balanceadores de carga, varios esfuerzos se han enfocado en mejorar su eficiencia, especialmente los balanceadores de carga de Capa 4 (L4), al incorporar la lógica de balanceo de carga en una capa inferior, posiblemente acelerada por hardware. Katran [16] se acelera utilizando código eBPF dentro del núcleo Linux, interceptando y procesando paquetes dentro del núcleo y minimizando la cantidad de transiciones al código de balanceo de carga de nivel de usuario. ClickNP [32] aborda algunos aspectos de la lógica de balanceo de carga L4 (especialmente capacidades similares a NAT) en un SmartNIC habilitado para FPGA y explota las capacidades de procesamiento paralelo de los dispositivos FPGA. SilkRoad [38] utiliza una combinación de un conmutador programable y un host final para almacenar el estado asociado con los balanceadores de carga L4 y realizar las transformaciones del plano de datos relacionadas con la operación de balanceo de carga dentro de una tubería de conmutación.


Si bien estos esfuerzos han logrado avances considerables en la optimización del balanceo de carga L4 que equilibra el tráfico en la capa de red, los servicios de centros de datos a menudo dependen de capacidades de balanceo de carga de la capa de aplicación que solo se encuentran en los balanceadores de carga de capa 7 (L7). En particular, los servicios desearían enrutar flujos en función de los atributos de la solicitud del cliente, preservar la afinidad de sesión para las solicitudes del cliente, proporcionar control de acceso, etc. [7]. Pero estas características dificultan que los balanceadores de carga L7 adopten las técnicas de aceleración de hardware utilizadas para los balanceadores de carga L4. Un desafío fundamental es que la operación de balanceo de carga L7 se basa en información incorporada dentro de protocolos de transporte orientados a la conexión, por lo que parece requerir un agente de procesamiento de red de pila completa en el balanceador de carga para manejar conexiones TCP/HTTP. En consecuencia, los balanceadores de carga L7 actuales son soluciones de software genéricas que incurren en altos costos de procesamiento en servidores básicos.


En este trabajo, examinamos si podemos mejorar la eficiencia de los balanceadores de carga L7 utilizando hardware de red programable. Nos centramos en las SmartNIC que proporcionan núcleos informáticos de propósito general ampliados con hardware de procesamiento de paquetes. Las SmartNIC son objetivos particularmente atractivos ya que sus núcleos informáticos pueden alojar lógica de protocolo arbitraria mientras que sus aceleradores de procesamiento de paquetes pueden realizar transformaciones del plano de datos de manera eficiente. Por lo tanto, una SmartNIC combina las capacidades de la computación host tradicional con las capacidades emergentes de los conmutadores programables y es un objetivo apropiado para los balanceadores de carga L7. Nuestro trabajo también está motivado en parte por la creciente implementación de SmartNIC dentro de los centros de datos como un sustrato informático rentable y energéticamente eficiente para tareas de red.


Hay varios desafíos que deben abordarse para transferir la funcionalidad de equilibrio de carga a las SmartNIC. En primer lugar, los núcleos de las SmartNIC son débiles, están equipados con una memoria limitada y son ineficientes para ejecutar cálculos de propósito general. En la medida de lo posible, deberíamos utilizar pilas de red livianas en lugar de pilas genéricas con todas las funciones presentes dentro de los núcleos del sistema operativo. En segundo lugar, el procesamiento multinúcleo eficiente en las SmartNIC presupone una sincronización liviana para el acceso a estructuras de datos concurrentes, y esto es particularmente relevante a medida que reducimos la lógica de procesamiento de la red. En tercer lugar, el uso eficaz de aceleradores para las transformaciones de paquetes es necesario para mejorar la capacidad de computación de las SmartNIC.


Diseñamos e implementamos Laconic , un balanceador de carga sin carga de SmartNIC que aborda los desafíos planteados anteriormente. Un componente clave de nuestro sistema es una pila de red liviana que representa un diseño conjunto de la lógica de balanceo de carga de la capa de aplicación con las tareas de la capa de transporte. Esta pila de red liviana realiza un procesamiento complejo de paquetes solo en un subconjunto de los paquetes transmitidos a través del balanceador de carga. Para el resto de los paquetes, la pila de red realiza una reescritura simple de paquetes y se basa en el cliente y el servidor para proporcionar confiabilidad de extremo a extremo y control de congestión. Para SmartNIC con aceleradores de procesamiento de paquetes, este diseño permite que la mayoría de los paquetes se procesen utilizando motores de procesamiento de flujo basados en hardware, lo que proporciona ganancias de eficiencia significativas. También desarrollamos estructuras de datos de administración de conexión que son altamente concurrentes y minimizan las costosas operaciones de exclusión mutua. Observamos que algunas de nuestras contribuciones de diseño también se aplican a un diseño genérico basado en servidor, pero tienen un efecto multiplicador en SmartNIC al factorizar una ruta rápida que se puede ejecutar en los motores de paquetes de hardware.


Desarrollamos Laconic y lo adaptamos a dos tipos diferentes de SmartNIC: Marvell LiquidIO3 y Nvidia BlueField-2. Laconic proporciona funcionalidad de capa 4 y capa 7 e implementa la lógica de interposición de capa 7 comúnmente utilizada para equilibrar las conexiones a los servicios de backend. Para mensajes grandes, Laconic ejecutándose en BlueField-2 con un solo núcleo ARM puede lograr un rendimiento hasta 8,7 veces mayor que el ampliamente utilizado Nginx ejecutándose en un núcleo x86 más potente. Para mensajes pequeños, Laconic en BlueField-2 puede lograr un mayor rendimiento con una latencia comparable o incluso menor en comparación con Nginx. En LiquidIO3, el rendimiento de Laconic es 4,5 veces mayor en comparación con Nginx x86. También demostramos el rendimiento de Laconic con una carga de trabajo del mundo real y presentamos microbenchmarks detallados sobre los beneficios de las ideas clave.


Figura 1: Arquitecturas comunes de SmartNIC


Este artículo está disponible en arxiv bajo la licencia CC BY-NC-ND 4.0 DEED.