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
