S'ha introduït la biblioteca Aya per crear controladors eBPF a Rust

Es presenta la primera versió de la biblioteca Aya, que permet crear controladors eBPF en llenguatge Rust que s'executen dins del nucli Linux en una màquina virtual especial amb JIT. A diferència d'altres eines de desenvolupament eBPF, l'Aya no utilitza libbpf i el compilador bcc, sinó que ofereix la seva pròpia implementació escrita en Rust, que utilitza el paquet libc crate per accedir directament a les trucades del sistema del nucli. La creació d'Aya no requereix eines de llenguatge C ni fitxers de capçalera del nucli. El codi de la biblioteca es distribueix sota les llicències MIT i Apache 2.0.

Característiques clau:

  • Suport per a BTF (BPF Type Format), que proporciona informació de tipus en pseudocodi BPF per a la comprovació de tipus i mapeig amb els tipus proporcionats pel nucli actual. L'ús de BTF fa possible crear controladors eBPF universals que es poden utilitzar sense recompilar amb diferents versions del nucli Linux.
  • Suport per a trucades "bpf-to-bpf", variables globals i inicialitzadors, que permet dissenyar programes per a eBPF de manera similar als programes habituals que utilitzen aya com a temps d'execució que redefineix les funcions tenint en compte el treball a eBPF.
  • Suport per a diversos tipus de nucli, com ara matrius normals, mapes hash, piles, cues, traces de pila, així com estructures de seguiment de socket i rendiment.
  • Capacitat per crear diversos tipus de programes eBTF, inclosos programes per filtrar i gestionar el trànsit, gestors de cgroup i diverses operacions de socket, programes XDP.
  • Suport per a plataformes per al processament de sol·licituds asíncrons en mode no bloquejador tokio i async-std.
  • Muntatge ràpid, sense cap connexió amb el muntatge del nucli i els fitxers de capçalera del nucli.

El projecte encara es considera experimental: l'API encara no s'ha estabilitzat i continua desenvolupant-se. A més, encara no s'han realitzat totes les oportunitats previstes. A finals d'any, els desenvolupadors esperen portar la funcionalitat d'Aya a la paritat amb libbpf i, al gener de 2022, crear la primera versió estable. També hi ha plans per combinar les parts d'Aya necessàries per escriure codi Rust per al nucli de Linux amb els components d'espai d'usuari utilitzats per carregar, connectar i interactuar amb programes eBPF.

Recordem que eBPF és un intèrpret de bytecode integrat al nucli de Linux, que us permet crear gestors d'operacions de xarxa, supervisar el funcionament del sistema, interceptar trucades al sistema, controlar l'accés, processar esdeveniments mantenint el temps, calcular la freqüència i el temps de les operacions, realitzar traça mitjançant kprobes/uprobes/tracepoints. Gràcies a l'ús de la compilació JIT, el bytecode es tradueix sobre la marxa a instruccions de màquina i s'executa amb el rendiment del codi natiu. XDP ofereix eines per executar programes BPF a nivell de controlador de xarxa, amb la possibilitat d'accedir directament a la memòria intermèdia de paquets DMA, que us permet crear processadors d'alt rendiment per treballar amb una gran càrrega de xarxa.

Font: opennet.ru

Afegeix comentari