eBPF笔记
什么是eBPF
eBPF(extend Berkeley Packet Filter),让Kernel内核实现可编程化。
为什么需要eBPF
可以把ebpf程序放到内核中动态的执行,实际是一个sandbox环境,不会改变内核本身。
内核中的验证器(图verification)会检验ebpf程序是否安全。
程序能运行且不需要重启。
用户空间(User Space)和内核空间(Kernel Space)
1.用户空间(User Space)是所有应用程序运行的地方
2.内核空间(Kernel Space)位于 用户空间(User Space)和 物理硬件(Physical Hardware)之间。
用户空间中的应用程序无法直接访问硬件,它们会向内核发出系统调用,然后由内核再访问硬件。
eBPF工作原理
- 基于事件驱动,在特定事件发生时触发Hooks,调用eBPF程序来获取数据。
- Hooks可以在用户空间和内核空间,也可以是静态和动态的。
- 静态的Hooks一般是内核开发人员预定义的一些事件。
- 动态的Hooks,比如
kprobes
和uprobes
是最常用的。