eBPF:革命性的内核技术
1. eBPF简介
eBPF 是一项革命性的内核技术,允许开发者编写自定义代码并动态加载到内核中,从而改变内核的行为。它催生了新一代高性能的网络、可观测性和安全工具。借助 eBPF 视角处于内核内部的优势,使用基于 eBPF 的工具来检测应用时,无需对应用进行任何修改或重新配置。
使用 eBPF 可以实现以下功能:
- 对系统几乎任何方面进行性能追踪。
- 实现具有内置可见性的高性能网络。
- 检测并(可选)阻止恶意活动。
2. eBPF 的历史根源:伯克利数据包过滤器
如今所说的 “eBPF” 起源于 1993 年劳伦斯伯克利国家实验室的 Steven McCanne 和 Van Jacobson 撰写的一篇论文中描述的 BSD 数据包过滤器。该论文讨论了一种可以运行过滤器的伪机器,这些过滤器是用于确定是否接受或拒绝网络数据包的程序,使用 BPF 指令集编写,这是一组类似于汇编语言的 32 位通用指令集。
以下是一个直接从论文中提取的示例代码:
ldh [12]
jeq #ETHERTYPE IP, L1, L2
L1: ret #TRUE
L2: ret #0
这段代码用于过滤掉非 Internet 协议(IP)数据包。输入是一个以太网数据包,第一条指令 ldh
加载该数据包中从第 12 字节开始的 2 字节值,第二条指令 jeq
将该值与