GCC kompilaatorite komplekti kuulub kood, mis kompileerib programme Linuxi tuumasse sisseehitatud bytecode'i tõlgendamiseks . JIT-kompileerimise kasutamine võimaldab kernelil kiirelt tõlkida bytecode'i masinakeele käskudeks, saavutades natiivse koodi jõudluse. eBPF toe parandused on vastu võetud haru, mille alusel arendatakse GCC 10 välja.
Lisaks bytecode'i genereerimise backendile sisaldab GCC ka eBPF jaoks mõeldud libgcc porti ja ELF-failide loomise tööriistu, mis võimaldavad käivitada koodi eBPF virtuaalmasinas, kasutades tuuma poolt pakutavaid loader'eid. eBPF toe parandused GCC-s on ette valmistanud Oracle'i insenerid, kes olid eelnevalt eBPF toe GNU binutils'is. Samuti on arendamisel simulaator ja parandused GDB-le, mis võimaldavad eBPF programme tõrkeotsinguks ilma tuumasse laadimata.
eBPF programme saab määratleda C keele osahulga abil, need kompileeritakse ja laaditakse tuuma. Enne täitmist kontrollib eBPF tõlgendaja bytecode'i, et tagada lubatud käskude kasutamine ja seadma koodile teatud reeglid (näiteks silmade puudumine).
Algselt kasutati eBPF kompileerimiseks Linuxis LLVM-põhist tööriistade komplekti. eBPF toe toomine GCC-sse on huvitav, kuna see võimaldab kasutada ühte tööriistade komplekti Linuxi tuuma ja eBPF programmide kompileerimiseks ilma täiendavate sõltuvusteta.
eBPF programmide vormis saab luua võrguoperatsioonide töötlejaid, filtreerida liiklust, hallata ribalaiust, jälgida süsteemide tööd, pealt kuulata süstemaatilisi kutseid, kontrollida juurdepääsu, arvestada sündmuste sagedust ja kestust, ning teostada jälgimist kasutades kprobes/uprobes/tracepoints.
Allikas: opennet.ru
