Aspectos destacados de investigación
Perspectiva técnica: hXDP: descarga de procesamiento de paquetes ligera y eficiente
Por Noa Zilberman
Comunicaciones de la ACM, agosto de 2022, vol. 65 No. 8, Página 91
10.1145/3543844
Comentarios
Durante mucho tiempo, la red se consideró la parte lenta de un sistema. Incluso hoy en día, nuestra CPU funciona a velocidades de reloj de varios GHz, mientras que es probable que nuestra red doméstica siga funcionando a decenas o cientos de megabits por segundo. Esto, sin embargo, está lejos de ser el caso en el mundo de los sistemas cableados. Los conmutadores de red procesan decenas de terabits cada segundo y muchas tarjetas de interfaz de red (NIC) tienen uno o más puertos 100G. De repente, la CPU es lenta en comparación con la tasa de datos que llegan de la red.
Como era de esperar, las soluciones para cerrar la brecha de rendimiento entre la CPU y la red están basadas en software o hardware. En el siguiente artículo, los autores ofrecen una solución interesante: tomar una solución basada en software (Linux’s eXpress Data Path—XDP) y descargarla en el hardware (Field Programmable Gate Arrays—FPGA). En eso, logra lo mejor de ambos mundos: facilidad de adopción y uso, combinado con beneficios de rendimiento.
XDP proporciona un entorno de ejecución seguro para el procesamiento de paquetes programables, mientras se ejecuta dentro del kernel. Esto contrasta con algunas otras soluciones, como DPDK, que utilizan la omisión del kernel. La ejecución dentro del kernel proporciona mecanismos para el aislamiento y la seguridad de las aplicaciones, así como una mejor capacidad de administración. XDP ejecuta sus programas dentro de máquinas virtuales eBPF, con programas escritos en C (restringido) y compilados en eBPF.
La NIC es un objetivo ideal para la descarga de procesamiento de paquetes: está ubicada entre la red y la CPU, puede lograr una alta tasa de procesamiento de paquetes y, lo que es más importante, puede liberar ciclos en la CPU. Este tipo de NIC a menudo se denomina NIC inteligente. Las NIC inteligentes basadas en FPGA se consideran más flexibles que otros tipos de NIC inteligentes y pueden admitir una variedad de arquitecturas de acelerador personalizadas. Sin embargo, la programación de FPGA requiere experiencia y las soluciones de procesamiento de paquetes tienden a consumir recursos significativos en la FPGA. Si bien las soluciones existentes simplifican el desarrollo de FPGA y usan lenguajes de programación de alto nivel, tienden a limitar la funcionalidad disponible para el usuario, limitan el rendimiento o consumen recursos de hardware significativos.
La solución sugerida en el documento, denominada hXDP, se enfoca en dos objetivos: poder ejecutar programas XDP de manera eficiente en NIC basadas en FPGA y consumir la menor cantidad posible de recursos de hardware.
Mediante el uso de XDP, los autores liberan a los programadores del aprendizaje de nuevos lenguajes de programación, paradigmas de diseño o arquitecturas de hardware, y permiten el uso de un modelo de programación conocido. Al minimizar el consumo de recursos de hardware, los autores permiten usar la NIC para algo más que el procesamiento de paquetes, es decir, para aceleradores específicos de aplicaciones.
También es interesante notar los no objetivos de hXDP. En primer lugar, hXDP no intenta superar la tasa de procesamiento de paquetes de los trabajos anteriores basados en NIC. En su lugar, se enfoca en proporcionar el mismo o mejor rendimiento que el que se ejecuta en una CPU. Esta distinción permite adoptar un modelo de ejecución que requiere una cantidad fija de recursos de hardware.
Un segundo no objetivo es proporcionar una solución de descarga transparente a la FPGA-NIC. Los programadores aún deben saber que su programa XDP se ejecutará en una NIC, pero mantienen el modelo de programación XDP como en Linux.
A través de un trabajo cuidadoso, los autores brindan información interesante sobre el conjunto de instrucciones XDP, que ahorra recursos y optimiza el compilador de hXDP. Con ese fin, los autores reducen y amplían el conjunto de instrucciones. La reducción proviene de la eliminación de las instrucciones para las verificaciones del verificador del kernel y, en su lugar, del uso de verificaciones de hardware más baratas. Las extensiones aprovechan la capacidad de programación de FPGA, por ejemplo, para admitir operaciones de tres operandos.
hXDP se implementa como un módulo lógico independiente para un FPGA, lo que significa que se puede agregar o quitar de un diseño de FPGA-NIC. Con la eficiencia de los recursos como objetivo, hXDP consume solo el 10 % de los recursos lógicos de la FPGA, en una FPGA de rango medio, y menos del 4 % de su memoria. Esto deja suficientes recursos para que otros aceleradores coincidan dentro de la misma NIC, como se esperaba.
El rendimiento de hXDP es superior al de algunas CPU de gama alta, mientras se ejecuta al 10 % de la frecuencia de la CPU. Además, la latencia de reenvío de paquetes es un orden de magnitud menor que el uso de una CPU y menor que una NIC basada en SoC comparable.
Dado que hXDP logra un rendimiento superior al de las CPU para aplicaciones de red intensivas en el mundo real, como un firewall o un equilibrador de carga, mientras que al mismo tiempo libera recursos de la CPU, es fácil ver por qué este trabajo es tan interesante. Los autores exploran lugares para mejoras adicionales, como un diseño multinúcleo y el uso de memorias más grandes. Combinado con la migración a ASIC o FPGA de gama alta, las ganancias de rendimiento adicionales están casi garantizadas.
El mundo de las NIC inteligentes se está desarrollando rápidamente, con gigantes como Intel y NVIDIA presentando nuevas soluciones que combinan arquitectura SoC estándar, canalizaciones programables y aceleradores. Sería fascinante mirar este trabajo en retrospectiva dentro de 10 años y ver qué ha prevalecido: la facilidad de programación y uso, el rendimiento en bruto o tal vez una combinación de ambos.
Volver arriba
Autor
Noa Zilberman es profesor asociado y dirige el Grupo de Infraestructura Informática en el Departamento de Ciencias de la Ingeniería de la Universidad de Oxford, Reino Unido
Volver arriba
Copyright propiedad del autor.
Solicitar permiso para (re) publicar del propietario/autor
La Biblioteca digital es una publicación de la Association for Computing Machinery. Derechos de autor © 2022 ACM, Inc.
entradas no encontradas