GCC sada uključuje pozadinu za kompilaciju u eBPF

Uključeno u paket GCC prevoditelja prihvaćen kod za kompajliranje programa za tumač bajt koda ugrađen u Linux kernel eGMP. Zahvaljujući korištenju JIT kompilacije, bajt kod jezgre se u hodu prevodi u strojne instrukcije i izvršava s izvedbom izvornog koda. Zakrpe s podrškom za eBPF prihvaćeno u granu iz koje je razvijeno izdanje GCC 10.

Uz pozadinu za generiranje bajt koda, GCC uključuje libgcc priključak za eBPF i alate za generiranje ELF datoteka koje omogućuju izvršavanje koda u eBPF virtualnom stroju pomoću učitavača koje pruža kernel. Zakrpe za podršku eBPF-u u GCC-u pripremili su inženjeri iz Oraclea, koji su to već učinili pod uvjetom eBPF podrška u GNU binutils. Simulator i zakrpe za GDB također su u razvoju, što će vam omogućiti debugiranje eBPF programa bez njihovog učitavanja u kernel.

Programi za eBPF mogu se definirati u podskupu jezika C, kompajlirati i učitati u kernel. Prije izvršenja, eBPF interpreter provjerava bajt kod za korištenje dopuštenih instrukcija i nameće određena pravila kodu (na primjer, bez petlji).
U početku su se za kompajliranje eBPF-a na Linuxu koristili alati temeljeni na LLVM-u. Podrška za eBPF u GCC-u je zanimljiva jer vam omogućuje korištenje jednog skupa alata za izgradnju Linux kernela i eBPF programa, bez instaliranja dodatnih ovisnosti.

U obliku eBPF programa, možete kreirati rukovatelje mrežnim operacijama, filtrirati promet, upravljati širinom pojasa, nadzirati sustave, presresti sistemske pozive, kontrolirati pristup, brojati učestalost i vrijeme operacija i izvoditi praćenje pomoću kprobes/uprobes/tracepoints.

Izvor: opennet.ru

Dodajte komentar