Express Data Path
Tipus | sistemes operatius |
---|---|
Característiques tècniques | |
Sistema operatiu | Linux |
Escrit en | C |
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]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 xarxaXDP_DROP
: deixa anar el paquet en silenciXDP_ABORTED
: deixa anar el paquet amb l'excepció del punt de traçaXDP_TX
: retorna el paquet a la mateixa NIC on va arribarXDP_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]- ↑ «[GIT Networking - David Miller]» (en anglès). lore.kernel.org. [Consulta: 14 maig 2019].
- ↑ Yasar, Erdem. «Microsoft introduced open-source XDP for Windows» (en anglès). cloud7, 25-05-2022. [Consulta: 26 maig 2022].
- ↑ «A thorough introduction to eBPF [LWN.net]» (en anglès). lwn.net. [Consulta: 14 maig 2019].
- ↑ «net: Generic XDP» (en anglès). www.mail-archive.com. [Consulta: 14 maig 2019].
- ↑ «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].
- ↑ «kernel/git/torvalds/linux.git - Linux kernel source tree» (en anglès). git.kernel.org. [Consulta: 16 maig 2019].
- ↑ «Questions about AF_PACKET V4 and AF_XDP» (en anglès). Kernel.org.
- ↑ «Accelerating networking with AF_XDP [LWN.net]» (en anglès). lwn.net. [Consulta: 16 maig 2019].