eBPF-Programme mit Pythoncode erzeugen

Mit PythonBPF kann man eBPF-Programme direkt von Python-Code aus erzeugen, ohne selbst den C-Code schreiben zu müssen. PythonBPF generiert und compiliert das Programm im Hintergrund, und die entstehende Objektdatei kann man direkt ins System laden. Auch Hashmaps können mit Python-Mitteln definiert werden.

Dieser Blog-Post beschreibt das Vorgehen anhand eines Beispiels, und es gibt eine Präsentation dazu.

Was ist eBPF überhaupt? „Extended Berkeley Packet Filter“ steht für eine Methode, Code in den Linux-Kernel einzubringen, ohne Kernelmodule zu schreiben und in den Kernel hineinzubinden. Außerdem wird dieser Code formal verifiziert, damit er möglichst nicht den Kernel lahmlegen oder kompromittieren kann.