GCC tagad ietver aizmugurprogrammu kompilācijai eBPF

Iekļauts GCC kompilatoru komplektā pieņemts kods programmu kompilēšanai Linux kodolā iebūvētajam baitkoda tulkam eGMP. Pateicoties JIT kompilācijas izmantošanai, kodola baitu kods tiek nekavējoties pārtulkots mašīnas instrukcijās un izpildīts ar vietējā koda veiktspēju. Ielāpi ar eBPF atbalstu pieņemts nozarē, no kuras tiek izstrādāts GCC 10 laidiens.

Papildus baitkoda ģenerēšanas aizmugursistēmai GCC ietver libgcc portu eBPF un rīkus ELF failu ģenerēšanai, kas ļauj izpildīt kodu eBPF virtuālajā mašīnā, izmantojot kodola nodrošinātos ielādētājus. Ielāpus, lai atbalstītu eBPF GCC, sagatavoja Oracle inženieri, kuri jau to bija izdarījuši nodrošināta eBPF atbalsts GNU binutils. Tiek izstrādāts arī simulators un ielāpi GDB, kas ļaus jums atkļūdot eBPF programmas, neielādējot tās kodolā.

eBPF programmas var definēt C valodas apakškopā, apkopot un ielādēt kodolā. Pirms izpildes eBPF tulks pārbauda, ​​vai baitkodā ir izmantotas atļautās instrukcijas, un uzliek kodam noteiktus noteikumus (piemēram, nav cilpu).
Sākotnēji eBPF kompilēšanai operētājsistēmā Linux tika izmantoti uz LLVM balstīti rīki. eBPF atbalsts GCC ir interesants, jo tas ļauj izmantot vienu rīku komplektu, lai izveidotu Linux kodolu un eBPF programmas, neinstalējot papildu atkarības.

eBPF programmu veidā varat izveidot tīkla operāciju apdarinātājus, filtrēt trafiku, pārvaldīt joslas platumu, pārraudzīt sistēmas, pārtvert sistēmas zvanus, kontrolēt piekļuvi, skaitīt darbību biežumu un laiku un veikt izsekošanu, izmantojot kprobes/uprobes/tracepoints.

Avots: opennet.ru

Pievieno komentāru