Incluso nella suite del compilatore GCC
Oltre a un backend per la generazione di bytecode, GCC include una porta libgcc per eBPF e strumenti per generare file ELF che consentono di eseguire codice nella macchina virtuale eBPF utilizzando caricatori forniti dal kernel. Le patch per supportare eBPF in GCC sono state preparate dagli ingegneri di Oracle, che lo avevano già fatto
I programmi per eBPF possono essere definiti in un sottoinsieme del linguaggio C, compilati e caricati nel kernel. Prima dell'esecuzione, l'interprete eBPF controlla il bytecode per l'utilizzo delle istruzioni consentite e impone determinate regole al codice (ad esempio, nessun loop).
Inizialmente, per compilare eBPF su Linux venivano utilizzati strumenti basati su LLVM. Il supporto eBPF in GCC è interessante perché consente di utilizzare un toolkit per creare il kernel Linux e i programmi eBPF, senza installare dipendenze aggiuntive.
Sotto forma di programmi eBPF, è possibile creare gestori delle operazioni di rete, filtrare il traffico, gestire la larghezza di banda, monitorare i sistemi, intercettare le chiamate di sistema, controllare l'accesso, contare la frequenza e il tempo delle operazioni ed eseguire il tracciamento utilizzando kprobes/uprobes/tracepoint.
Fonte: opennet.ru