U skup GCC-a prihvaćen backend za kompilaciju u eBPF

U setu GCC kompajlera usvojen kod za kompajliranje programa za interpreter bajtkoda ugrađen u Linux kernel eBPF. Zahvaljujući upotrebi JIT kompajliranja, bajtkod se u jezgru u trenutku prevodi u mašinske instrukcije i izvršava s performansama nativnog koda. Patchevi sa podrškom za eBPF su prihvaćene u grani koja se koristi za razvoj izdanja GCC 10.

Osim backend-a za generisanje bajtkoda, GCC uključuje port libgcc za eBPF i alate za formiranje ELF datoteka, koji omogućavaju izvršavanje koda u eBPF virtuelnoj mašini koristeći učitavače koje pruža kernel. Patchevi za podršku eBPF u GCC pripremljeni su od strane inženjera iz Oracle-a, koji su prethodno već obezbedili podršku eBPF u GNU binutils. U razvoju se takođe nalazi simulator i patchevi za GDB, koji će omogućiti debagovanje eBPF programa bez učitavanja u kernel.

Programi za eBPF mogu biti definišu na podskupu jezika C, kompajlirati i učitati u kernel. Pre izvršavanja, eBPF interpreter proverava bajtkod na korišćenje dozvoljenih instrukcija i postavlja određena pravila za kod (na primer, bez petlji).
Prvobitno je za kompajliranje eBPF u Linuxu korišćen alat na bazi LLVM. Podrška eBPF u GCC predstavlja interes jer omogućava korišćenje jednog alata za izgradnju Linux kernela i eBPF programa, bez potrebe za instaliranjem dodatnih zavisnosti.

U obliku eBPF programa mogu se kreirati rukovaoci mrežnim operacijama, filtrirati saobraćaj, upravljati propusnošću, pratiti rad sistema, presretati sistemske pozive, kontrolisati pristup, brojati učestalost i vreme izvršavanja operacija, sprovoditi praćenje koristeći kprobes/uprobes/tracepoints.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster