GCC inkluderer nå en backend for kompilering til eBPF

Inkludert i GCC-kompilatorpakken adoptert kode for kompilering av programmer for bytekode-tolkeren innebygd i Linux-kjernen eGMP. Takket være bruken av JIT-kompilering, blir kjernebytekoden oversatt til maskininstruksjoner og utført med ytelsen til opprinnelig kode. Patcher med eBPF-støtte akseptert til grenen som GCC 10-utgivelsen er utviklet fra.

I tillegg til en backend for bytekodegenerering, inkluderer GCC en libgcc-port for eBPF og verktøy for å generere ELF-filer som gjør det mulig å kjøre kode i den virtuelle eBPF-maskinen ved hjelp av kjerneleverte lastere. Patcher for å støtte eBPF i GCC ble utarbeidet av ingeniører fra Oracle, som allerede hadde gjort det sørget for eBPF-støtte i GNU-binutils. En simulator og patcher for GDB er også under utvikling, som lar deg feilsøke eBPF-programmer uten å laste dem inn i kjernen.

Programmer for eBPF kan defineres i et undersett av C-språket, kompileres og lastes inn i kjernen. Før utførelse sjekker eBPF-tolken bytekoden for bruk av tillatte instruksjoner og pålegger koden visse regler (for eksempel ingen løkker).
Opprinnelig ble LLVM-baserte verktøy brukt til å kompilere eBPF på Linux. eBPF-støtte i GCC er interessant fordi den lar deg bruke ett verktøysett for å bygge Linux-kjernen og eBPF-programmer, uten å installere ytterligere avhengigheter.

I form av eBPF-programmer kan du opprette nettverksoperasjonsbehandlere, filtrere trafikk, administrere båndbredde, overvåke systemer, avlytte systemanrop, kontrollere tilgang, telle frekvens og tidspunkt for operasjoner og utføre sporing ved hjelp av kprobes/uprobes/tracepoints.

Kilde: opennet.ru

Legg til en kommentar