GCC ara inclou un backend per a la compilació a eBPF

Inclòs a la suite de compiladors GCC adoptat codi per compilar programes per a l'intèrpret de bytecode integrat al nucli de Linux eBPF. Gràcies a l'ús de la compilació JIT, el bytecode del nucli es tradueix sobre la marxa a instruccions de màquina i s'executa amb el rendiment del codi natiu. Pedaços amb suport eBPF acceptat a la branca des de la qual es desenvolupa la versió GCC 10.

A més d'un backend per a la generació de bytecode, GCC inclou un port libgcc per a eBPF i eines per generar fitxers ELF que permeten executar codi a la màquina virtual eBPF mitjançant carregadors proporcionats pel nucli. Els pedaços per donar suport a eBPF a GCC van ser preparats pels enginyers d'Oracle, que ja ho havien fet proporcionat Suport eBPF a GNU binutils. També s'està desenvolupant un simulador i pedaços per a GDB, que us permetran depurar programes eBPF sense carregar-los al nucli.

Els programes per a eBPF es poden definir en un subconjunt del llenguatge C, compilar i carregar al nucli. Abans de l'execució, l'intèrpret d'eBPF verifica el bytecode per a l'ús d'instruccions permeses i imposa determinades regles al codi (per exemple, sense bucles).
Inicialment, es van utilitzar eines basades en LLVM per compilar eBPF a Linux. El suport d'eBPF a GCC és interessant perquè us permet utilitzar un conjunt d'eines per construir el nucli de Linux i els programes eBPF, sense instal·lar dependències addicionals.

En forma de programes eBPF, podeu crear gestors d'operacions de xarxa, filtrar el trànsit, gestionar l'amplada de banda, supervisar sistemes, interceptar trucades al sistema, controlar l'accés, comptar la freqüència i el temps de les operacions i fer el seguiment mitjançant kprobes/uprobes/tracepoints.

Font: opennet.ru

Afegeix comentari