eBPF——Linux系统地图上的“沙盒游戏”
简单介绍eBPF
eBPF is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in an operating system kernel. It is used to safely and efficiently extend the capabilities of the kernel without requiring to change kernel source code or load kernel modules.
摘自ebpf.io。eBPF是出自linux内核的一种能在开源系统上运行沙盒程序的革命性技术,经常用于安全且高效的扩展kernel的性能,这也是除“修改内核源码”和“载入kernel模块”的第三种方法。
eBPF最大的特点是,eBPF程序使得在系统运行的状态下,linux内核可编程。如果类比,eBPF程序像是包裹“物品”的“快件”,目的是将“物品”送到特定位置。kernel Helper API是内核上的埋点,eBPF通过“探针”的形式在bpf的点上注入eBPF程序。
和载入kernel模块的不同,eBPF只会在kernel开放的资源上“工作”。然而本身,eBPF就是一个内核模块。
eBPF为什么叫eBPF
extended Berkeley Packet Filter,简称eBPF,一看就和BPF逃不开关系。
BPF早初就是包过滤机制,用来过滤网卡捕获的数据包。Linux上的netfilter工具大多都是依靠BPF创造的,最有名的莫过于tcpdump,经常被网络人用于跟踪数据包和采样分析。
但