Presentata la libreria Aya per la creazione di gestori eBPF in linguaggio Rust

È stato presentato il primo rilascio della libreria Aya, che consente di creare gestori eBPF in linguaggio Rust, eseguibili all'interno del kernel Linux in una macchina virtuale con JIT. A differenza di altri strumenti per lo sviluppo di programmi eBPF, Aya non utilizza libbpf e il compilatore bcc, ma offre una propria implementazione scritta in Rust, che utilizza il pacchetto crate libc per un accesso diretto alle chiamate di sistema del kernel. Non è necessario disporre di strumenti per il linguaggio C e file di intestazione del kernel per compilare Aya. Il codice della libreria è distribuito sotto licenze MIT e Apache 2.0.

Caratteristiche principali:

  • Supporto per il formato BTF (BPF Type Format), che fornisce informazioni sui tipi in pseudocodice BPF per la verifica dei tipi e il confronto con i tipi forniti dall'attuale kernel. L'uso di BTF consente di creare gestori eBPF universali, utilizzabili senza ricompilazione con diverse versioni del kernel Linux.
  • Supporto per le chiamate 'bpf-to-bpf', variabili globali e inizializzatori, che consentono di formattare i programmi per eBPF analogamente ai programmi normali, utilizzando aya come runtime, sovrascrivendo le funzioni in relazione al funzionamento in eBPF.
  • Supporto per vari tipi di kernel, inclusi array normali, hash (hash map), stack, code, tracciamento dello stack, oltre a strutture per socket e monitoraggio delle prestazioni.
  • Possibilità di creare vari tipi di programmi eBTF, inclusi programmi per filtrare e gestire il traffico, gestori cgroup e varie operazioni con socket, programmi XDP.
  • Supporto per piattaforme di elaborazione asincrona delle richieste in modalità non bloccante tokio e async-std.
  • Compilazione rapida, senza necessità di legami con la compilazione del kernel e i file di intestazione del kernel.

Il progetto è attualmente considerato sperimentale: l'API non è ancora stabilizzata e continua a evolversi. Inoltre, non tutte le funzionalità pianificate sono state implementate. Entro la fine dell'anno, gli sviluppatori prevedono di portare le funzionalità di Aya al paritario con libbpf e, a gennaio 2022, di formare il primo rilascio stabile. È inoltre previsto di unire le parti di Aya necessarie per scrivere codice Rust per il kernel Linux con i componenti che operano nello spazio utente e vengono utilizzati per caricare, allegare e interagire con i programmi eBPF.

Ricordiamo che eBPF è un interprete di bytecode integrato nel kernel Linux, che consente di creare gestori per operazioni di rete, monitorare il funzionamento dei sistemi, intercepire le chiamate di sistema, controllare l'accesso, gestire eventi mantenendo la registrazione temporale, contare la frequenza e il tempo di esecuzione delle operazioni, eseguire il tracciamento utilizzando kprobes/uprobes/tracepoints. Grazie all'uso della compilazione JIT, il bytecode viene tradotto dinamicamente in istruzioni per la macchina ed eseguito con la performance del codice nativo. XDP fornisce strumenti per eseguire programmi BPF a livello del driver di rete, con la possibilità di accesso diretto al buffer DMA dei pacchetti, consentendo la creazione di gestori ad alte prestazioni per operare in condizioni di elevato carico di rete.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster