GCC prijal backend na kompiláciu do eBPF

Súčasťou súpravy kompilátorov GCC prijatý kód na kompiláciu programov pre integrovaný do jadra Linux interpret bytecode eBPF. Vďaka použitiu JIT kompilácie sa bytecode v jadre prekladá na strojové príkazy za behu a vykonáva sa s výkonom natívneho kódu. Patche s podporou eBPF boli prijaté v branch, na základe ktorého sa vyvíja verzia GCC 10.

Okrem backendu na generovanie bytecode je v GCC zahrnutý port libgcc pre eBPF a nástroje na vytváranie ELF súborov, ktoré umožňujú vykonanie kódu vo virtuálnej mašine eBPF s využitím poskytovaných jadrom bootloaderov. Patche pre podporu eBPF v GCC pripravili inžinieri zo spoločnosti Oracle, ktorí predtým už zabezpečili podporu eBPF v GNU binutils. V súčasnosti sa vyvíja aj simulátor a patche pre GDB, ktoré umožnia ladenie eBPF programov bez načítania do jadra.

Programy pre eBPF môžu byť definované v podmnožine jazyka C, kompilované a načítané do jadra. Pred vykonaním interpret eBPF kontroluje bytecode na použitie povolených inštrukcií a ukladá určité pravidlá pre kód (napríklad absenciu cyklov).
Pôvodne sa na kompiláciu eBPF v Linuxe používal nástrojový balík založený na LLVM. Podpora eBPF v GCC je zaujímavá tým, že umožňuje použitie jedného nástrojového balíka na zostavenie jadra Linux a eBPF programov bez inštalácie ďalších závislostí.

Vo forme programov eBPF je možné vytvárať spracovatele sieťových operácií, filtrovať prevádzku, riadiť šírku pásma, sledovať činnosť systémov, zachytávať systémové volania, kontrolovať prístup, počítať frekvenciu a čas vykonania operácií, vykonávať trasovanie pomocou kprobes/uprobes/tracepoints.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster