GCC inkluderer nu en backend til kompilering til eBPF

Inkluderet i GCC compiler suite vedtaget kode til kompilering af programmer til bytecode-fortolkeren indbygget i Linux-kernen eGMP. Takket være brugen af ​​JIT-kompilering bliver kernebytekoden oversat til maskininstruktioner og eksekveret med native kodes ydeevne. Patches med eBPF-understøttelse accepteret ind i den gren, hvorfra GCC 10-udgivelsen er udviklet.

Udover en backend til bytekodegenerering inkluderer GCC en libgcc-port til eBPF og værktøjer til generering af ELF-filer, der gør det muligt at eksekvere kode i den virtuelle eBPF-maskine ved hjælp af kerne-leverede loaders. Patches til at understøtte eBPF i GCC blev udarbejdet af ingeniører fra Oracle, som allerede havde stillet til rådighed eBPF-understøttelse i GNU-binutils. En simulator og patches til GDB er også under udvikling, som vil give dig mulighed for at fejlsøge eBPF-programmer uden at indlæse dem i kernen.

Programmer til eBPF kan defineres i en delmængde af C-sproget, kompileres og indlæses i kernen. Før udførelse kontrollerer eBPF-fortolkeren bytekoden for brug af tilladte instruktioner og pålægger koden visse regler (for eksempel ingen sløjfer).
Oprindeligt blev LLVM-baserede værktøjer brugt til at kompilere eBPF på Linux. eBPF-understøttelse i GCC er interessant, fordi den giver dig mulighed for at bruge ét værktøjssæt til at bygge Linux-kernen og eBPF-programmerne uden at installere yderligere afhængigheder.

I form af eBPF-programmer kan du oprette netværksoperationshandlere, filtrere trafik, administrere båndbredde, overvåge systemer, opsnappe systemkald, kontrollere adgang, tælle frekvens og tidspunkt for operationer og udføre sporing ved hjælp af kprobes/uprobes/tracepoints.

Kilde: opennet.ru

Tilføj en kommentar