【性能工程 - eBPF 技术】小白也能学会的 eBPF 技术——初步了解 eBPF 技术(一)

2024-07-13 08:54:53 浏览数 (2)

eBPF,即扩展的伯克利包过滤器(Extended Berkeley Packet Filter),是从早期的BPF技术发展而来,起初用于高效地过滤网络数据包。随着时间的推移,eBPF已经成为一个强大的、灵活的内核技术,不仅限于网络数据包处理,还可以用于跟踪、安全、网络策略实施、性能分析等多个领域。

知道名字和缩写

起源与发展
  • BPF起源:BPF首次出现在1992年的BSD操作系统中,由Steven McCanne和Van Jacobson设计。它作为一种高效的用户级数据包捕获机制,利用内核中的虚拟机执行用户定义的过滤程序,避免了不必要的用户空间到内核空间的数据复制。
  • eBPF的进化:随着时间的推移,BPF经历了多次改进和扩展,形成了今天的eBPF。eBPF拥有更丰富的指令集、更大的寄存器集合,以及更强的安全性和灵活性。它可以编写更为复杂的程序,并且能够在内核中执行各种任务,远远超出了最初的包过滤功能。

知道最初的起源,来源于 BPF,用于处理网络包。

核心特点
  1. 字节码执行:用户编写eBPF程序,然后使用LLVM/CLang等编译器将其编译成字节码。这个字节码随后被加载到内核中。
  2. 安全验证内核在执行eBPF字节码前会进行严格的验证,确保程序没有死循环、不会消耗过多资源或影响内核稳定性,这是通过一个复杂的验证器实现的。(因为要放到内核中运行,严格的检查是很好理解的,不然就崩溃了)
  3. 动态加载与执行:通过bpf()系统调用,eBPF程序可以动态加载到内核中,并在需要时执行。JIT(即时编译)技术可进一步将字节码转换成本地机器码,以提高执行效率。
  4. 广泛的钩子函数:eBPF程序可以通过各种钩子(hook)插入到内核的多个位置,包括但不限于系统调用入口/出口、网络栈的各个层级(如XDP,即eXpress Data Path)、kprobes(内核函数探测点)和uprobes(用户空间函数探测点)等,使得它能够对系统行为进行深度监控和操控。
  5. 应用领域
    • 网络:eBPF可用于高级网络策略实施,比如使用XDP进行高性能的数据包处理。
    • 性能监控:eBPF可以帮助收集详细的性能指标,如CPU使用情况、磁盘I/O、系统调用跟踪等。
    • 安全:实现细粒度的安全策略,比如进程监控、审计、防火墙规则等。
    • 调试与诊断:提供强大的内核和用户空间程序的调试能力。
工作流程
  1. 编写与编译:开发者使用eBPF语言或LLVM前端语言编写程序,并通过LLVM编译成字节码。
  2. 加载与验证:通过bpf()系统调用将字节码加载到内核,内核验证程序的安全性。
  3. 即时编译(JIT):内核使用JIT技术将字节码编译成本地机器码,提高执行效率。
  4. 挂载与触发:根据程序的用途,将其挂载到相应的内核钩子点。当钩子点被触发时,eBPF程序自动执行。

这个工作流程就是一个简单的总结,实际上开发人员在编写 eBPF 时可以通过现在各种前端或者框架,很方便的进行使用。 eBPF技术以其高度的灵活性、安全性以及低开销的特点,正在成为现代云原生、容器化环境、以及需要高性能监控和安全控制场景下的关键技术。随着持续的发展和社区的支持,eBPF的应用前景非常广阔。

参考资料

1.超细节!十年码农讲述eBPF和XDP技术!知乎 https://zhuanlan.zhihu.com/p/558509760 2.eBPF怎么玩(一)哔哩哔哩 https://m.bilibili.com/read/cv15768069/ 3.全面介绍eBPF-概念-charlieroro-博客园 https://www.cnblogs.com/charlieroro/articles/13403672.html 4.ebpf深入理解和应用介绍-CSDN博客 https://m.blog.csdn.net/gengzhikui1992/article/details/105364645 5.01|技术概览:eBPF的发展历程及工作原理-知乎 https://zhuanlan.zhihu.com/p/458753388 6.【万字干货!eBPF的原理与入门技巧-知乎 https://zhuanlan.zhihu.com/p/529225001 7.游戏王 把卡破坏和把卡送入墓地有什么区别?芝士回答 https://page.sm.cn/blm/midpage-317/ 8.游戏王特召只能攻击表示?芝士回答 https://page.sm.cn/blm/midpage-317 9.罗克韦尔ABPF40P系列变频器-变频器产业网 http://m.ebpq.cn/mall/41722.html 10.一文看懂eBPF、eBPF的使用(超详细)哔哩哔哩 https://www.bilibili.com/read/mobile?id=16232093

0 人点赞