GCC kompilaatorite kogusse. kood programmid nende kompileerimiseks, mis töötavad Linuxi kernelis siseselt interpreteeritud baitkoodiga. . JIT-kompileerimise kasutamise tõttu tõlgitakse kärbitud kood reaalajas masinainstruktsioonideks ja täidetakse natiivse koodi toimivusega. eBPF-i toetavad patchid harusse, mille põhjal arendatakse GCC 10 väljaannet.
Lisaks baitkoodi genereerimise taustale on GCC-s hõlmatud ka libgcc port eBPF-i jaoks ning ELF-failide loomiseks vajalikud tööriistad, mis võimaldavad koodi täita eBPF-i virtuaalkeskkonnas koos tuuma poolt pakutud laadijatega. eBPF-i toetavad patchid GCC-s on koostatud Oracle'i inseneride poolt, kes on eelnevalt juba eBPF-i toe GNU binutilsis. Arendamisel on ka simulaator ja patchid GDB-le, mis võimaldavad eBPF-programme siluda ilma tuuma laadimiseta.
eBPF-i programmid võivad olla määratud C keele alamsüsteemis, neid saab kompileerida ja laadida tuuma. Enne täitmist kontrollib eBPF-i interpreter baitkoodi lubatud käskude osas ja kehtestab koodile teatud reeglid (näiteks silmade puudumine).
Alguses kasutati eBPF-i kompileerimiseks Linuxis LLVM-i alapõhjaliste tööriistade komplekti. eBPF-i tugi GCC-s on huvitav, kuna see võimaldab kasutada ühte tööriistade komplekti Linuxi tuumakoodi ja eBPF-programmide koostamiseks, ilma lisade sõltuvusi paigaldamata.
eBPF programmide kujul on võimalik luua võrgutegevuste töötlejaid, filtreerida liiklust, kontrollida ribalaiust, jälgida süsteemide tööd, püüda süsteemi kutseid, kontrollida juurdepääsu, lugeda toimingute sagedust ja kestust, teha jälgimist kprobesi/uprobesi/tracepointide abil.
Allikas: opennet.ru
