BumbleBee: un toolkit per semplificare la creazione e la distribuzione dei programmi eBPF

Solo.io, azienda che sviluppa prodotti per l'esecuzione di sistemi cloud, microservizi, contenitori isolati e serverless computing, ha pubblicato BumbleBee, un toolkit open source volto a semplificare la preparazione, la distribuzione e il lancio di programmi eBPF che vengono eseguiti in una speciale macchina virtuale all'interno il kernel Linux e consentire l'elaborazione delle operazioni di rete, il controllo degli accessi e il monitoraggio dei sistemi. Il codice è scritto in Go e distribuito sotto la licenza Apache 2.0.

BumbleBee consente di impacchettare un programma eBPF come immagine contenitore nel formato OCI (Open Container Initiative), che può essere eseguito su qualsiasi sistema senza ricompilazione e l'utilizzo di componenti aggiuntivi nello spazio utente. L'interazione con il codice eBPF nel core, inclusa l'elaborazione dei dati provenienti dal gestore eBPF, viene gestita da BumbleBee, che esporta automaticamente questi dati sotto forma di parametri, istogrammi o log, a cui è possibile accedere, ad esempio, utilizzando il utilità di arricciatura. L'approccio proposto consente allo sviluppatore di concentrarsi sulla scrittura del codice eBPF e di non essere distratto dall'organizzazione dell'interazione con questo codice dallo spazio utente, dall'assemblaggio e dal caricamento nel kernel.

Per gestire i programmi eBPF viene offerta un'utility “ape” in stile Docker, con la quale è possibile scaricare immediatamente l'handler eBPF di interesse da un repository esterno ed eseguirlo sul sistema locale. Il toolkit consente di generare un framework di codice in C per i gestori eBPF di un argomento selezionato (attualmente sono supportati solo i gestori per operazioni di rete e file che intercettano chiamate allo stack di rete e ai file system). Sulla base del framework generato, lo sviluppatore può implementare rapidamente la funzionalità che gli interessa.

A differenza di BCC (BPF Compiler Collection), BumbleBee non ricostruisce completamente il codice del gestore per ogni versione del kernel Linux (BCC utilizza la compilazione al volo utilizzando Clang ogni volta che viene avviato il programma eBPF). Per risolvere i problemi di portabilità, sono in fase di sviluppo gli strumenti CO-RE e libbpf, che consentono di compilare il codice una sola volta e utilizzare uno speciale caricatore universale che adatta il programma caricato al kernel attuale e al formato del tipo BTF. BumbleBee è un componente aggiuntivo di libbpf e fornisce tipi aggiuntivi per l'interpretazione e la visualizzazione automatica dei dati situati nelle strutture della mappa eBPF standard RingBuffer e HashMap.

Per creare il programma eBPF finale e salvarlo come immagine OCI, è sufficiente eseguire il comando "bee build file_with_code name:version" ed eseguire il comando "bee run name:version". Per impostazione predefinita, gli eventi ricevuti dal gestore verranno inviati alla finestra del terminale, ma, se necessario, è possibile ottenere dati utilizzando le utilità curl o wget sulla porta di rete associata al gestore. I gestori possono essere distribuiti tramite repository compatibili con OCI, ad esempio, per eseguire un gestore esterno dal repository ghcr.io (GitHub Container Registry), è possibile eseguire il comando "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(versione ape)”. Per inserire un gestore nel repository, viene proposto il comando “bee push” e per associare una versione, “bee tag”.

Fonte: opennet.ru

Aggiungi un commento