Articulo de referencia

Ruta de datos exprés

Tom Herbert"},"developer":{"wt":"Open source community, [[Google]], [[Amazon (company)|Amazon]], [[Intel]], [[Microsoft]] {{cite web|url=https://www.neowin.net/news/microsoft-br...

XDP ( eXpress Data Path ) es una ruta de datos de red de alto rendimiento basada en eBPF que se utiliza para enviar y recibir paquetes de red a altas velocidades, evitando la mayor parte de la pila de red del sistema operativo . Está integrada en el kernel de Linux desde la versión 4.8. [ 2 ] Esta implementación tiene licencia GPL . Grandes empresas tecnológicas 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 . [ 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 kernel y permitir que un programa eBPF proporcionado por el usuario decida el destino del paquete. El gancho se coloca en el controlador de la interfaz de red (NIC) justo después del procesamiento de la interrupción y antes de cualquier asignación de memoria necesaria para la propia pila de red , ya que la asignación de memoria puede ser una operación costosa. Gracias a este diseño, XDP puede descartar 26 millones de paquetes por segundo por núcleo con hardware estándar . [ 4 ]

El programa eBPF debe pasar una prueba de preverificación [ 5 ] antes de cargarse, para evitar la ejecución de código malicioso en el espacio del kernel. La preverificación comprueba que el programa no contenga accesos fuera de límites, bucles ni variables globales.

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

  • XDP_PASS: dejar que el paquete continúe a través de la pila de red
  • XDP_DROP: descartar silenciosamente el paquete
  • XDP_ABORTED: descartar el paquete con excepción de punto de rastreo
  • XDP_TX: reenvía el paquete a la misma NIC en la que llegó.
  • XDP_REDIRECT: redirigir el paquete a otra NIC o socket de espacio de usuario a través de la familia de direcciones AF_XDP.

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 cuenta con infraestructura para descargar el programa eBPF a un controlador de interfaz de red que lo admita, reduciendo así la carga de la CPU. En 2023, solo las tarjetas Netronome [ 7 ] lo admiten.

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 se incorporó al kernel de Linux a partir de la versión 4.18. [ 8 ] AF_XDP, anteriormente conocida como AF_PACKETv4 (que nunca se incluyó en el kernel principal), [ 9 ] es un socket sin procesar optimizado para el procesamiento de paquetes de alto rendimiento y permite la copia cero entre el kernel y las aplicaciones. Dado que el socket puede utilizarse tanto para recibir como para transmitir, admite aplicaciones de red de alto rendimiento exclusivamente en el espacio de usuario. [ 10 ]

Véase también

Referencias

  1. 1 2 3 Jawad, Usama (25 de mayo de 2022). "Microsoft lleva el proyecto Linux XDP a Windows" . Neowin . Recuperado el 26 de mayo de 2022 .
  2. " [ GIT ] Redes - 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 . Archivado del original el 25 de mayo de 2022. Recuperado 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 . Archivado del original el 24 de septiembre de 2020. 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. Corbet, Jonathan (9 de abril de 2018). "Acelerando la creación de redes con AF_XDP [ LWN.net ] " . lwn.net . Consultado el 16 de mayo de 2019 .
  • Documentación de XDP en Read the Docs
  • Documentación de AF_XDP en kernel.org
  • xdp-for-windows en GitHub
  • Presentación de XDP en FOSDEM 2017 por Daniel Borkmann, Cilium.
  • AF_XDP en FOSDEM 2018 por Magnus Karlsson, Intel
  • eBPF.io - Introducción, tutoriales y recursos de la comunidad
  • L4Drop: Mitigación de ataques DDoS mediante XDP , Cloudflare
  • Unimog: Balanceador de carga perimetral de Cloudflare , Cloudflare
  • Facebook libera el código fuente de Katran, un balanceador de carga de red escalable .
  • L4LB de Cilium: equilibrador de carga XDP independiente , Cilium
  • Reemplazo de Kube-proxy en la capa XDP , Cilium
  • Podcast de eCHO sobre XDP y balanceo de carga
Obtenido de " https://en.wikipedia.org/w/index.php?title=Express_Data_Path&oldid=1359149849 "