stringtranslate.com

Ruta de datos expresa

XDP ( eXpress Data Path ) es una ruta de datos de alto rendimiento basada en eBPF que se utiliza para enviar y recibir paquetes de red a altas velocidades sin pasar por la mayor parte de la pila de red del sistema operativo . Está integrado en el kernel de Linux desde la versión 4.8. [2] Esta implementación tiene licencia GPL . Grandes empresas de tecnología como Amazon, Google e Intel apoyan su desarrollo. Microsoft lanzó su implementación gratuita y de código abierto XDP para Windows en mayo de 2022. [1] Tiene licencia MIT License . [3]

Ruta de datos

Rutas de flujo de paquetes en el kernel de Linux . XDP omite la pila de red y la asignación de memoria para los metadatos de los paquetes .

La idea detrás de XDP es agregar un gancho temprano en la ruta RX del núcleo y dejar que un programa eBPF provisto por el usuario decida el destino del paquete. El gancho se coloca en el controlador de interfaz de red (NIC) justo después del procesamiento de la interrupción y antes de cualquier asignación de memoria que necesite la propia pila de red , porque la asignación de memoria puede ser una operación costosa. Debido a este diseño, XDP puede descartar 26 millones de paquetes por segundo por núcleo con hardware básico. [4]

El programa eBPF debe pasar una prueba de preverificación [5] antes de ser cargado, para evitar la ejecución de código malicioso en el espacio del núcleo. El preverificador verifica que el programa no contenga accesos fuera de límites, bucles o variables globales.

El programa puede editar los datos del paquete y, después de que el programa eBPF regresa, un código de acción determina qué hacer con el paquete:

XDP requiere soporte en el controlador NIC pero, como no todos los controladores lo admiten, puede recurrir a una implementación genérica, que realiza el procesamiento eBPF en la pila de red, aunque con un rendimiento más lento. [6]

XDP tiene infraestructura para descargar el programa eBPF a un controlador de interfaz de red que lo soporta, reduciendo la carga de la CPU. En 2023, solo las tarjetas Netronome [7] lo soportan.

Microsoft se está asociando con otras empresas y agregando soporte para XDP en su implementación MsQuic del protocolo QUIC . [1]

AF_XDP

Junto con XDP, una nueva familia de direcciones que se incorporó al núcleo Linux a partir de la versión 4.18. [8] AF_XDP, anteriormente conocido como AF_PACKETv4 (que nunca se incluyó en el núcleo principal), [9] es un socket sin formato optimizado para el procesamiento de paquetes de alto rendimiento y permite la copia cero entre el núcleo y las aplicaciones. Como el socket se puede utilizar tanto para recibir como para transmitir, admite aplicaciones de red de alto rendimiento puramente en el espacio de usuario. [10]

Véase también

Referencias

  1. ^ abc Jawad, Usama (25 de mayo de 2022). "Microsoft lleva el proyecto Linux XDP a Windows". Neowin . Consultado el 26 de mayo de 2022 .
  2. ^ "[GIT] Networking - David Miller". lore.kernel.org . Consultado el 14 de mayo de 2019 .
  3. ^ Yasar, Erdem (25 de mayo de 2022). «Microsoft presentó XDP de código abierto para Windows». cloud7 . Consultado el 26 de mayo de 2022 .
  4. ^ Høiland-Jørgensen, Toke (3 de mayo de 2019), Texto fuente y datos experimentales de nuestro artículo que describe XDP: tohojo/xdp-paper , consultado el 21 de mayo de 2019
  5. ^ "Una introducción completa a eBPF [LWN.net]". lwn.net . Consultado el 14 de mayo de 2019 .
  6. ^ "net: Generic XDP". www.mail-archive.com . Consultado el 14 de mayo de 2019 .
  7. ^ "BPF, eBPF, XDP y Bpfilter... ¿Qué son estas cosas y qué significan para la empresa? - Netronome". www.netronome.com . Consultado el 14 de mayo de 2019 .
  8. ^ "kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux". git.kernel.org . Consultado el 16 de mayo de 2019 .
  9. ^ "Preguntas sobre AF_PACKET V4 y AF_XDP". Kernel.org .
  10. ^ "Aceleración de la creación de redes con AF_XDP [LWN.net]". lwn.net . Consultado el 16 de mayo de 2019 .

Enlaces externos