Kaasup dina GCC compiler suite kode pikeun ngompilasi program pikeun kernel Linux juru basa bytecode . Hatur nuhun kana pamakéan kompilasi JIT, nu bytecode kernel ditarjamahkeun on fly kana parentah mesin sarta dieksekusi kalawan kinerja kode asli. Patch kalayan dukungan eBPF ka cabang ti mana GCC 10 release dimekarkeun.
Salian backend pikeun generasi bytecode, GCC ngawengku port libgcc pikeun eBPF sarta parabot pikeun generating file ELF nu ngamungkinkeun pikeun ngaéksekusi kode dina mesin virtual eBPF ngagunakeun loaders-disadiakeun kernel. Patch pikeun ngadukung eBPF di GCC disiapkeun ku insinyur ti Oracle, anu parantos rojongan eBPF di GNU binutils. Simulator sareng patch pikeun GDB ogé nuju dikembangkeun, anu bakal ngamungkinkeun anjeun nga-debug program eBPF tanpa ngamuat kana kernel.
Program pikeun eBPF tiasa dihartikeun dina sawaréh tina basa C, disusun sareng dimuat kana kernel. Sateuacan palaksanaan, juru eBPF pariksa bytecode pikeun pamakéan parentah diidinan sarta maksakeun aturan nu tangtu dina kode (contona, euweuh loop).
Mimitina, pikeun ngompilasi eBPF dina Linux Toolchain berbasis LLVM dianggo. Dukungan eBPF dina GCC pikaresepeun sabab ngamungkinkeun panggunaan hiji toolchain pikeun kompilasi kernel. Linux sareng program eBPF, tanpa masang dependensi tambahan.
Dina bentuk program eBPF, anjeun tiasa ngadamel pawang operasi jaringan, lalu lintas nyaring, ngatur rubakpita, sistem monitor, telepon sistem intercept, aksés kontrol, ngitung frékuénsi sareng waktos operasi, sareng ngalaksanakeun tracing nganggo kprobes / uprobes / tracepoints.
sumber: opennet.ru
