Introdotta la libreria Aya per la creazione di gestori eBPF in Rust

Viene presentata la prima release della libreria Aya, che permette di creare gestori eBPF in linguaggio Rust che girano all'interno del kernel Linux in un'apposita macchina virtuale con JIT. A differenza di altri strumenti di sviluppo eBPF, Aya non utilizza libbpf e il compilatore bcc, ma offre invece la propria implementazione scritta in Rust, che utilizza il pacchetto libc crate per accedere direttamente alle chiamate di sistema del kernel. La creazione di Aya non richiede strumenti del linguaggio C o file di intestazione del kernel. Il codice della libreria è distribuito sotto le licenze MIT e Apache 2.0.

Caratteristiche principali:

  • Supporto per BTF (BPF Type Format), che fornisce informazioni sul tipo nello pseudocodice BPF per il controllo del tipo e la mappatura sui tipi forniti dal kernel corrente. L'uso di BTF rende possibile creare gestori eBPF universali che possono essere utilizzati senza ricompilazione con diverse versioni del kernel Linux.
  • Supporto per chiamate "bpf-to-bpf", variabili globali e inizializzatori, che consente di progettare programmi per eBPF in modo simile ai normali programmi che utilizzano aya come runtime che ridefinisce le funzioni tenendo conto del lavoro in eBPF.
  • Supporto per vari tipi di kernel, inclusi array regolari, mappe hash, stack, code, tracce di stack, nonché strutture di rilevamento di socket e prestazioni.
  • Possibilità di creare vari tipi di programmi eBTF, inclusi programmi per il filtraggio e la gestione del traffico, gestori di cgroup e varie operazioni socket, programmi XDP.
  • Supporto per piattaforme per l'elaborazione di richieste asincrone in modalità non bloccante tokio e async-std.
  • Assemblaggio veloce, senza alcuna connessione all'assembly del kernel e ai file di intestazione del kernel.

Il progetto è ancora considerato sperimentale: l'API non è stata ancora stabilizzata e continua a svilupparsi. Inoltre, tutte le opportunità previste non sono ancora state realizzate. Entro la fine dell'anno, gli sviluppatori prevedono di portare le funzionalità di Aya alla parità con libbpf e di creare la prima versione stabile nel gennaio 2022. Ci sono anche piani per 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.

Ricordiamo che eBPF è 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 mantenendo i tempi, calcolare la frequenza e il tempo delle operazioni, eseguire tracciamento utilizzando kprobes/uprobes/tracepoints. Grazie all'utilizzo della compilazione JIT, il bytecode viene tradotto al volo in istruzioni macchina ed eseguito con l'esecuzione del codice nativo. XDP fornisce strumenti per l'esecuzione di programmi BPF a livello di driver di rete, con la possibilità di accedere direttamente al buffer dei pacchetti DMA, che consente di creare processori ad alte prestazioni per lavorare con un carico di rete pesante.

Fonte: opennet.ru

Aggiungi un commento