Vés al contingut

Express Data Path

De la Viquipèdia, l'enciclopèdia lliure
Express Data Path

Tipussistemes operatius
Característiques tècniques
Sistema operatiuLinux Modifica el valor a Wikidata
Escrit enC Modifica el valor a Wikidata

XDP (eXpress Data Path) és una ruta de dades d'alt rendiment basada en eBPF que s'utilitza per enviar i rebre paquets de xarxa a altes velocitats evitant la majoria de la pila de xarxa del sistema operatiu. Es fusiona al nucli Linux des de la versió 4.8. [1] Aquesta implementació té llicència GPL. Grans empreses tecnològiques com Amazon, Google i Intel donen suport al seu desenvolupament. Microsoft va llançar la seva implementació gratuïta i de codi obert XDP per a Windows el maig de 2022. Té llicència sota la llicència MIT. [2]

Ruta de dades

[modifica]
Rutes de flux de paquets al nucli Linux. XDP passa per alt la pila de xarxa i l'assignació de memòria per a les metadades de paquets.

La idea darrere de XDP és afegir un ganxo primerenc a la ruta RX del nucli i deixar que un programa eBPF subministrat per l'usuari decideixi el destí del paquet. El ganxo es col·loca al controlador del controlador d'interfície de xarxa (NIC) just després del processament d'interrupció i abans de qualsevol assignació de memòria necessària per la pròpia pila de xarxa, perquè l'assignació de memòria pot ser una operació costosa. A causa d'aquest disseny, XDP pot deixar caure 26 milions de paquets per segon per nucli amb maquinari bàsic.

El programa eBPF ha de passar una prova de verificador [3] abans de carregar-se, per evitar executar codi maliciós a l'espai del nucli. El verificador comprova que el programa no conté accessos fora de límits, bucles o variables globals.

El programa pot editar les dades del paquet i, després que el programa eBPF torni, un codi d'acció determina què fer amb el paquet:

  • XDP_PASS: permet que el paquet continuï a través de la pila de xarxa
  • XDP_DROP: deixa anar el paquet en silenci
  • XDP_ABORTED: deixa anar el paquet amb l'excepció del punt de traça
  • XDP_TX: retorna el paquet a la mateixa NIC on va arribar
  • XDP_REDIRECT: redirigeix el paquet a un altre NIC o un sòcol d'espai d'usuari mitjançant la família d'adreces AF_XDP

XDP requereix suport al controlador NIC però, com que no tots els controladors ho admeten, pot tornar a una implementació genèrica, que realitza el processament eBPF a la pila de xarxa, tot i que amb un rendiment més lent. [4]

XDP disposa d'una infraestructura per descarregar el programa eBPF a un controlador d'interfície de xarxa que l'admet, reduint la càrrega de la CPU. El 2023, només les targetes Netronome [5] ho admeten.

Microsoft s'ha associat amb altres empreses i afegeix suport per a XDP en la seva implementació MsQuic del protocol QUIC.

AF_XDP

[modifica]

Juntament amb XDP, una nova família d'adreces va entrar al nucli Linux a partir de 4.18. [6] AF_XDP, abans conegut com AF_PACKETv4 (que mai es va incloure al nucli de la línia principal), [7] és un sòcol en brut optimitzat per al processament de paquets d'alt rendiment i permet la còpia zero entre el nucli i les aplicacions. Com que el sòcol es pot utilitzar tant per rebre com per transmetre, admet aplicacions de xarxa d'alt rendiment exclusivament a l'espai d'usuari. [8]

Referències

[modifica]
  1. «[GIT Networking - David Miller]» (en anglès). lore.kernel.org. [Consulta: 14 maig 2019].
  2. Yasar, Erdem. «Microsoft introduced open-source XDP for Windows» (en anglès). cloud7, 25-05-2022. [Consulta: 26 maig 2022].
  3. «A thorough introduction to eBPF [LWN.net]» (en anglès). lwn.net. [Consulta: 14 maig 2019].
  4. «net: Generic XDP» (en anglès). www.mail-archive.com. [Consulta: 14 maig 2019].
  5. «BPF, eBPF, XDP and Bpfilter… What are these things and what do they mean for the enterprise? - Netronome» (en anglès). www.netronome.com. [Consulta: 14 maig 2019].
  6. «kernel/git/torvalds/linux.git - Linux kernel source tree» (en anglès). git.kernel.org. [Consulta: 16 maig 2019].
  7. «Questions about AF_PACKET V4 and AF_XDP» (en anglès). Kernel.org.
  8. «Accelerating networking with AF_XDP [LWN.net]» (en anglès). lwn.net. [Consulta: 16 maig 2019].