Aya, la prima libreria per creare controller eBPF in Rust

Linus Torvalds così come molti sviluppatori Kernel e diverse distribuzioni hanno espresso la loro simpatia per Rust e anche in più di un'occasione è stato presentato il problema dell'implementazione dei driver in questo linguaggio di programmazione sul kernel Linux.

E su questo sono già usciti vari lavori, di cui ne abbiamo già parlato qui sul blog e possiamo citare, ad esempio, esperimento exitoso dal set alternativo di utilità, coreutils, riscritto in Rust (Ciò include utilità come sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln e ls).

Premesso ciò, Linus Torvalds non ha espresso pienamente il suo punto a favore di questa iniziativa ed ha espresso i punti negativi (potete consultare i Al seguente link.)

Nonostante le dure critiche di Linus, i lavori sull'implementazione La ruggine nel kernel non ha smesso di andare avanti e recentemente è stata presentata la prima versione della libreria Aya, che consente di creare driver eBPF in Rust che vengono eseguiti all'interno del kernel Linux in una speciale macchina virtuale JIT.

A differenza di altri strumenti di sviluppo EBPF, Aya non usa libbpf e il compilatore BCC, Ma offre la propria implementazione scritta in Rust che usa il pacchetto libc drawer per accedere direttamente alle chiamate di sistema del kernel. La compilazione di Aya non richiede strumenti del linguaggio C o intestazioni del kernel.

Per coloro che non sono a conoscenza di eBPF, dovrebbero sapere che questo è un interprete di bytecode integrato nel kernel Linux che consente di creare gestori di operazioni di rete, monitorare il funzionamento del sistema, intercettare chiamate di sistema, controllare l'accesso, elaborare eventi con tempistiche, calcolare la frequenza e il tempo delle operazioni e tenere traccia utilizzando kprobes / uprobes / tracepoint.

Grazie alla compilazione JIT, il bytecode viene tradotto in istruzioni macchina al volo e funziona con le prestazioni del codice nativo. XDP fornisce un mezzo per eseguire programmi BPF a livello di driver di rete, con accesso diretto al buffer dei pacchetti DMA, consentendo di creare driver ad alte prestazioni per condizioni di carico di rete elevato.

A proposito di Aya

Delle caratteristiche chiave menzionate da Aya possiamo scoprire che ha il supporto per BTF (formato tipo BPF), che fornisce informazioni sul tipo in pseudocodice BPF per controllare e confrontare i tipi forniti dal kernel corrente. L'utilizzo di BTF consente di creare driver eBPF universali che possono essere utilizzati senza doverli ricompilare con diverse versioni del kernel Linux.

Così come il supporto per chiamate da bpf a bpff, variabili globali e inizializzatori, che permette di progettare programmi per eBPF per analogia con i programmi convenzionali utilizzando aya come tempo di esecuzione, annullando le funzioni che tengono conto del lavoro in eBPF.

D'altra parte, ha anche il supporto per i tipi di kernel interni, inclusi array regolari, hashmap, stack, code, stack trace e strutture per socket e monitoraggio delle prestazioni.

Pure ha la capacità di creare vari tipi di programmi eBTF, inclusi programmi per il filtraggio e la gestione del traffico, cgroup e vari driver socket, programmi XDP e anche il supporto della piattaforma per l'elaborazione asincrona delle richieste in modalità tokyo non bloccante e async-std.
Compilazione veloce, senza essere vincolata alla compilazione del kernel o alle intestazioni del kernel.

È importante menzionarlo il progetto è ancora considerato sperimentale in quanto l'API non è ancora stabilizzata e continua ad evolversi. Inoltre, non tutte le funzioni concepite sono state ancora implementate.

Entro la fine dell'anno, gli sviluppatori sperano di portare la funzionalità di Aya alla pari con libbpf e nel gennaio 2022 formano la prima versione stabile. Si prevede inoltre di combinare le parti di Aya necessarie per scrivere il codice Rust per il kernel Linux con i componenti dello spazio utente utilizzati per caricare, collegare e interagire con i programmi eBPF.

Infine se sei interessato a saperne di più a riguardo, puoi controllare i dettagli nel seguente link.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.