eBPF tracing: oktatói anyagok és példák

Címkék

eBPF should stand for something meaningful, like Virtual Kernel Instruction Set (VKIS), but due to its origins it is extended Berkeley Packet Filter. It can be used for many things: network performance, firewalls, security, tracing, and device drivers. Some of these have plenty of free documentation online, like for tracing, and others not yet.

Részletek itt.

Hozzászólások

Ez az eBPF tényleg egy elég érdekes dolog, tracingen kívül is sok dologra használható. Pl. könnyen lehet vele user-kernel adatmegosztást csinálni ráadásul biztonságosan, mert az eBPF verifier nem engedi hogy túlindexeljünk egy tömböt vagy olyan memóriához nyúljunk, ami kívül esik a kontextuson amiben dolgkozunk.
4.14-es kernelbe bekerült egy konténerek közti kommunikáción gyorsító megoldás, a sockmap ami használható kernel spaceben socketek közötti adat redirectionre. Ennek a vezérlő interfésze eBPF-ben lett megírva, pontosabban nagyon könnyen, normál eBPF map-ekkel módosíthatjuk, melyik socketek között szeretnénk kernel space adat átirányítást végezni. Ez némileg gyorsítja az átvitelt.
Sajnos ebben a részben van egy bug, ami miatt nyár óta nem tudok hosszabb blogposztot írni a shadowsocks verziómról (https://github.com/SPYFF/shadowsocks-libev-nocrypto/tree/ebpf), ami kihasználja eBPF-el a sockmap-et, de remélem előbb utóbb fixálják (sajnos nekem egyelőre túl nagy feladat, az eredeti fejlesztő pedig nagyon elfoglalt, háromszor, utóljára 3 hete is megígérte hogy ASAP fixálja).