A GCC fordítócsomag része
A bájtkód generálására szolgáló háttérprogramon kívül a GCC tartalmaz egy libgcc portot az eBPF-hez, valamint olyan eszközöket az ELF-fájlok generálására, amelyek lehetővé teszik a kód futtatását az eBPF virtuális gépen a kernel által biztosított betöltőkkel. A javításokat az eBPF támogatására a GCC-ben az Oracle mérnökei készítettek, akik már korábban is
Az eBPF programjai a C nyelv egy részhalmazában definiálhatók, lefordíthatók és betölthetők a kernelbe. A végrehajtás előtt az eBPF értelmező ellenőrzi a bájtkódot az engedélyezett utasítások használatára vonatkozóan, és bizonyos szabályokat ír elő a kódra (például, hogy nincsenek ciklusok).
Kezdetben LLVM-alapú eszközöket használtak az eBPF fordításához Linuxon. Az eBPF-támogatás a GCC-ben azért érdekes, mert lehetővé teszi, hogy egyetlen eszközkészletet használjon a Linux-kernel és az eBPF-programok felépítéséhez további függőségek telepítése nélkül.
eBPF programok formájában hálózati műveletkezelőket hozhat létre, forgalmat szűrhet, sávszélességet kezelhet, rendszereket figyelhet, rendszerhívásokat lehallgathat, hozzáférést vezérelhet, számolhatja a műveletek gyakoriságát és idejét, valamint nyomkövetést végezhet kprobes/uprobes/tracepoints segítségével.
Forrás: opennet.ru