Articulo de referencia

Dirección de paquetes de red multinúcleo

Gráfico simple que muestra la ruta que deben seguir los paquetes receptores para llegar a las colas de los núcleos. La dirección de paquetes de red para el tráfico transmitido y...

Gráfico simple que muestra la ruta que deben seguir los paquetes receptores para llegar a las colas de los núcleos.

La dirección de paquetes de red para el tráfico transmitido y recibido en arquitecturas multinúcleo ( dirección de paquetes de red multinúcleo ) es necesaria en los entornos de computación de red modernos, especialmente en los centros de datos , donde el alto ancho de banda y las cargas pesadas congestionarían fácilmente la cola de un solo núcleo . [ 1 ]

Por este motivo, se utilizan numerosas técnicas, tanto de hardware como de software, para distribuir los paquetes entrantes entre los núcleos del procesador . En el lado de recepción de tráfico, las técnicas más importantes son RSS, aRFS, RPS y RFS. Para la transmisión, XPS es fundamental. [ 2 ] [ 3 ]

Los paquetes que llegan a la tarjeta de interfaz de red (NIC) se procesan y se cargan en las colas de recepción gestionadas por los núcleos (que normalmente se implementan como búferes circulares dentro del espacio del kernel ). El objetivo principal es poder utilizar todos los núcleos disponibles de la CPU para procesar los paquetes entrantes, mejorando al mismo tiempo la latencia y el rendimiento . [ 4 ] [ 5 ] [ 6 ]

Técnicas de hardware

Las técnicas aceleradas por hardware, como RSS y aRFS, se utilizan para enrutar y equilibrar la carga de los paquetes entrantes entre las colas de los múltiples núcleos de un procesador. [ 1 ] Estos métodos con soporte de hardware logran latencias extremadamente bajas y reducen la carga de la CPU, en comparación con los basados ​​en software. Sin embargo, requieren un hardware especializado integrado en el controlador de la interfaz de red (que, por ejemplo, suele estar disponible en tarjetas más avanzadas, como la SmartNIC ). [ 7 ] [ 8 ]

RSS

Vista simplificada de la arquitectura de escalado del lado receptor.

El escalado del lado de recepción (RSS) es una técnica con soporte de hardware que aprovecha una tabla de indirección indexada por los últimos bits del resultado proporcionado por una función hash , tomando como entrada los campos de encabezado de los paquetes. La entrada de la función hash suele ser personalizable y los campos de encabezado utilizados pueden variar según el caso de uso y las implementaciones. Algunos ejemplos notables de campos de encabezado elegidos como claves para el hash son las direcciones IP de origen y destino de la capa 3, el protocolo y los puertos de origen y destino de la capa 4. De esta forma, los paquetes correspondientes al mismo flujo se dirigirán a la misma cola de recepción, sin perder el orden original, lo que provocaría una entrega fuera de orden . Además, todos los flujos entrantes se equilibrarán en todos los núcleos disponibles gracias a las propiedades de la función hash. [ 5 ] Otra característica importante introducida por la tabla de indirección es la capacidad de cambiar la asignación de flujos a los núcleos sin tener que cambiar la función hash, sino simplemente actualizando las entradas de la tabla. [ 9 ] [ 10 ] [ 4 ] [ 11 ]

aRFS

Vista simplificada de la arquitectura de direccionamiento de flujo de recepción acelerado.

El Accelerated Receive Flow Steering (aRFS) es otra técnica con soporte de hardware, nacida con la idea de aprovechar la localidad de caché para mejorar el rendimiento enrutando los flujos de paquetes entrantes a núcleos específicos. A diferencia de RSS, que es una implementación de hardware totalmente independiente, aRFS necesita interactuar con el software (el kernel ) para funcionar correctamente. [ 12 ] RSS simplemente equilibra la carga del tráfico entrante entre los núcleos; sin embargo, si un flujo de paquetes se dirige al núcleo i (como resultado de la función hash) mientras que la aplicación que necesita el paquete recibido se ejecuta en el núcleo j , se podrían evitar muchos fallos de caché simplemente forzando i=j , de modo que los paquetes se reciban exactamente donde se necesitan y se consumen. [ 8 ] Para hacer esto, aRFS no reenvía los paquetes directamente desde el resultado de la función hash, sino que utilizando una tabla de enrutamiento configurable (que puede ser llenada y actualizada, por ejemplo, por el planificador a través de una API ) los flujos de paquetes se pueden dirigir al núcleo consumidor específico. [ 8 ] [ 7 ]

Técnicas de software

Las técnicas de software como RPS y RFS emplean uno de los núcleos de la CPU para dirigir los paquetes entrantes a través de los demás núcleos del procesador. Esto conlleva la introducción de interrupciones entre procesadores (IPI) adicionales ; sin embargo, el número de interrupciones de hardware no aumentará y, potencialmente, mediante el uso de una técnica de agregación de interrupciones , incluso podría reducirse. [ 13 ] La ventaja de las soluciones de software radica en la facilidad de implementación, sin necesidad de modificar ningún componente (como la NIC ) de la arquitectura actualmente utilizada, sino simplemente desplegando el módulo del kernel adecuado . Esta ventaja puede ser crucial, especialmente en casos donde la máquina servidora no puede personalizarse ni accederse (como en entornos de computación en la nube ), incluso si el rendimiento de la red se reduce en comparación con el soportado por el hardware. [ 14 ] [ 15 ] [ 16 ]

Piedra, papel o tijera

Diagrama que muestra cómo RPS distribuye la carga de los paquetes entrantes entre los núcleos de la CPU.

El direccionamiento de paquetes recibidos (RPS) es el equivalente a RSS implementado en software. Todos los paquetes recibidos por la NIC se distribuyen mediante balanceo de carga entre las colas de los núcleos mediante la implementación de una función hash que utiliza como clave configurable los campos de la cabecera (como la IP de origen y destino de la capa 3 y los puertos de origen y destino de la capa 4), de la misma manera que lo hace RSS. Además, gracias a las propiedades hash, los paquetes pertenecientes al mismo flujo siempre se dirigirán al mismo núcleo. [ 15 ] Esto se suele hacer en el kernel, justo después del controlador de la NIC. Tras gestionar la interrupción de red y antes de que pueda procesarse, el paquete se envía a la cola de recepción de un núcleo, que luego recibe una notificación mediante una interrupción entre procesos. [ 14 ] RPS puede utilizarse junto con RSS, en caso de que el número de colas gestionadas por el hardware sea inferior al número de núcleos. En este caso, después de haber distribuido los paquetes entrantes entre las colas RSS, se puede asignar un grupo de núcleos a cada cola y se utilizará RPS para distribuir nuevamente los flujos entrantes entre el grupo especificado. [ 13 ]

RFS

Diagrama que muestra cómo la lógica RFS distribuye cada paquete entrante al núcleo que ejecuta la aplicación correspondiente.

El enrutamiento de flujo de recepción (RFS) mejora el RPS en la misma dirección que la solución de hardware aRFS. Al enrutar los flujos de paquetes al mismo núcleo de CPU que ejecuta la aplicación consumidora, se puede mejorar y aprovechar la localidad de la caché, evitando muchos fallos y reduciendo las latencias introducidas por la recuperación de los datos de la memoria central . [ 17 ] Para ello, después de haber calculado el hash de los campos de encabezado para el paquete actual, el resultado se utiliza para indexar una tabla de búsqueda. Esta tabla es administrada por el planificador, que actualiza sus entradas cuando los procesos de la aplicación se mueven entre los núcleos. [ 18 ] La distribución general de la carga de la CPU está equilibrada siempre que las aplicaciones en el espacio de usuario estén distribuidas uniformemente entre los múltiples núcleos. [ 16 ] [ 18 ]

XPS (en transmisión)

Transmit Packet Steering (XPS) es un protocolo de transmisión, a diferencia de los demás mencionados hasta ahora. Cuando los paquetes necesitan cargarse en una de las colas de transmisión expuestas por la NIC, existen muchas optimizaciones posibles. [ 19 ] Por ejemplo, si se asignan varias colas de transmisión a un solo núcleo, se podría usar una función hash para equilibrar la carga de los paquetes salientes entre las colas (de forma similar a como lo hace RPS en la recepción). Además, para mejorar la localidad de caché y la tasa de aciertos (de forma similar a como lo hace RFS), XPS garantiza que las aplicaciones que producen el tráfico saliente y se ejecutan en el núcleo i favorecerán las colas de transmisión asociadas con el mismo núcleo i . Esto reduce la sobrecarga de los protocolos de comunicación entre núcleos y coherencia de caché, lo que resulta en un mejor rendimiento en entornos de carga pesada. [ 20 ] [ 21 ] [ 2 ]

Véase también

Referencias

  1. 1 2 Barbette, Tom; Katsikas, Georgios P.; Maguire, Gerald Q.; Kostić, Dejan (2019-12-03). "RSS++: Escalado del lado de recepción con conciencia de carga y estado" . Actas de la 15.ª Conferencia Internacional sobre Experimentos y Tecnologías de Redes Emergentes . Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 318–333 . doi : 10.1145/3359989.3365412 . hdl : 2078.1/262641 . ISBN  978-1-4503-6998-5.
  2. 1 2 Madden, Michael M. (2019-01-06), "Desafíos del uso de la pila de red de Linux para la comunicación en tiempo real" , AIAA Scitech 2019 Forum , AIAA SciTech Forum, American Institute of Aeronautics and Astronautics, pp. 9–11 , doi : 10.2514/6.2019-0503 , ISBN  978-1-62410-578-4, consultado el 10 de julio de 2025
  3. Herbert, Tom (24 de febrero de 2025). "La sopa de letras del enrutamiento de paquetes recibidos: RSS, RPS, RFS y aRFS" . Medium . Recuperado el 10 de julio de 2025 .
  4. 1 2 "RSS kernel linux docs" . kernel.org . La documentación del kernel de Linux . Consultado el 8 de julio de 2025 .
  5. 1 2 "Descripción general de RSS por Microsoft" . learn.microsoft.com . Consultado el 8 de julio de 2025 .
  6. Wu, Wenji; DeMar, Phil; Crawford, Matt (1 de febrero de 2011). "¿Por qué algunas NIC Ethernet avanzadas pueden causar reordenamiento de paquetes?". IEEE Communications Letters . 15 (2): 253– 255. arXiv : 1106.0443 . Bibcode : 2011IComL..15..253W . doi : 10.1109/LCOMM.2011.122010.102022 . ISSN 1558-2558 . 
  7. 1 2 "aRFS de redhat" . docs.redhat.com . Documentación de Red Hat . Consultado el 8 de julio de 2025 .
  8. 1 2 3 "aRFS de nvidia" . docs.nvidia.com . Centro de documentación de NVIDIA. 20 de febrero de 2023. Consultado el 8 de julio de 2025 .
  9. "Documento de inteligencia RSS" (PDF) . earn.microsoft.com . Consultado el 8 de julio de 2025 .
  10. "RSS de redhat" . docs.redhat.com . Documentación de Red Hat . Consultado el 8 de julio de 2025 .
  11. "Mejoras en el escalado del lado de recepción en Windows Server 2008" . microsoft.com . Microsoft . Consultado el 8 de julio de 2025 .
  12. "Documentación del kernel de Linux aRFS" . kernel.org . La documentación del kernel de Linux . Consultado el 8 de julio de 2025 .
  13. 1 2 "Documentación del kernel de Linux RPS" . kernel.org . La documentación del kernel de Linux . Consultado el 8 de julio de 2025 .
  14. 1 2 Corbet, Jonathan (17 de noviembre de 2009). "RPS linux news (LWM)" . lwn.net . Linux Weekly News . Recuperado el 8 de julio de 2025 .
  15. 1 2 "RPS by redhat" . docs.redhat.com . Documentación de Red Hat . Consultado el 8 de julio de 2025 .
  16. 1 2 "RFS de nvidia" . docs.nvidia.com . Centro de documentación de NVIDIA. 20 de febrero de 2023. Consultado el 8 de julio de 2025 .
  17. "RFS de redhat" . docs.redhat.com . Documentación de Red Hat . Consultado el 8 de julio de 2025 .
  18. 1 2 "Documentación del kernel de Linux RFS" . kernel.org . La documentación del kernel de Linux . Consultado el 8 de julio de 2025 .
  19. "XPS linux news (LWM)" . lwn.net . Noticias semanales de Linux . Consultado el 08-07-2025 .
  20. "Descripción general de Intel XPS" . intel.com . Intel corp . Consultado el 8 de julio de 2025 .
  21. "Documentación del kernel de Linux XPS" . kernel.org . La documentación del kernel de Linux . Consultado el 8 de julio de 2025 .

Lecturas adicionales

  • Enberg, Pekka; Rao, Ashwin; Tarkoma, Sasu (09/12/2019). «Direccionamiento de paquetes con reconocimiento de particiones mediante XDP y eBPF para mejorar el paralelismo a nivel de aplicación» . Actas del 1.er Taller ACM CoNEXT sobre paradigmas emergentes de computación en red . Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 27-33 . doi : 10.1145/3359993.3366766 . hdl : 10138/326309 . ISBN  978-1-4503-7000-4.
  • Helbig, Maike; Kim, Younghoon (1 de enero de 2025). «IAPS: Reducción de la sobrecarga de la gestión de paquetes basada en software mediante la reducción de interrupciones». Conferencia Internacional de Redes de Información (ICOIN) de 2025. págs. 127-130 . doi : 10.1109/ICOIN63865.2025.10993154 . ISBN  979-8-3315-0694-0.
  • Kumar, Ashwin; Katkam, Rajneesh; Chaudhary, Pranav; Naik, Priyanka; Vutukuru, Mythili (1 de mayo de 2024). «AppSteer: Marco para mejorar la escalabilidad multinúcleo de las funciones de red mediante la dirección de paquetes con reconocimiento de aplicaciones». 24.º Simposio Internacional IEEE de Computación en Clúster, Nube e Internet (CCGrid) de 2024. págs. 18-27 . doi : 10.1109/CCGrid59990.2024.00012 . ISBN  979-8-3503-9566-2.
  • Tyunyayev, Nikita; Delzotti, Clément; Eran, Haggai; Barbette, Tom (2025-06-09). "ASNI: Redefiniendo la interfaz entre SmartNICs y aplicaciones" . Actas de la ACM sobre redes . 3 : 1–22 . doi : 10.1145/3730966 . hdl : 2078.1/302406 .
  • Escalado del lado de recepción (RSS) con eBPF en QEMU y virtio-net en YouTube
  • Dirección de paquetes para aplicaciones de red virtual multinúcleo sobre DPDK en YouTube
  • Descarga de la clasificación del tráfico de red al hardware en YouTube
  • Dirección de paquetes para aplicaciones de red virtual multinúcleo sobre DPDK