openEuler介绍,eBPF是一种可以在内核中运行沙盒程序的技术,提供了一种在内核事件和用户程序事件发生时安全注入代码的机制,使得非内核开发者也可以控制内核伴随着内核的发展,eBPF已经从最初的数据包过滤逐渐扩展到网络,内核,安全,跟踪等方面,其功能特点仍在快速发展早期的BPF被称为经典BPF,简称c BPF正是这种功能的扩展使得现在的BPF被称为扩展BPF,简称eBPF
如今eBPF广泛应用于云原生,可观测,性能调优,安全,硬件加速等领域,应用场景仍在快速拓展。
虽然eBPF技术应用呈现井喷现象,但相关的开发,发布,安装等基础技术碎片化,导致技术成果无法快速转化为行业客户的生产环境,类似的eBPF技术应用于反复练习这些问题阻碍了eBPF技术的推广
如下图所示,总结目前eBPF的开发和发布方式,基本可以分为两条技术路线:
开发状态和运行状态的分离
优点:ELF文件在运行时以轻量级的形式发布,适合在生产环境下大规模应用。
缺点:应用技术门槛高,不可移植。
开发状态和运行状态的集成
优点:源代码分发天然便携,封装运行时,提供高级语言API,降低开发难度。
缺点:操作繁重,对生产环境要求高,高度抽象后,降低了使用的灵活性,不适合大规模应用开发。
目前,eBPF的开发和发布方法
这两种技术路线都有缺点伴随着eBPF技术的发展,BumbleBee,eunomia—bpf等项目致力于整合这两种技术路线的优势,但仍然缺乏对eBPF基础技术的整体规划
EBPF峰会2022EBPF在Linux内核中的未来展望EBPF的发展方向。具体的演进方向包括几个方面:
更完整的编程能力:目前的eBPF编程能力有一定的局限性,进化目标提供了图灵的完整编程能力。
更强的安全性:支持类型安全,增强了运行时验证器,演进目标是提供可与Rust媲美的安全编程能力。
更广的可移植性:增强CO—RE,增强Helper接口的可移植性,实现跨系统,跨平台的可移植性。
更强的可编程性:支持访问/修改内核的任意参数和返回值,实现更强的内核编程能力。
总之,它的发展目标是使eBPF成为内核运行时的安全编程语言,通过它可以构建eBPF软件来承载内核的能力由此,出现了一个有趣的现象:按照传统的软件类型划分方法,eBPF软件很难划分为应用软件或系统软件所以简单定义为一种独立的软件形式:内核态服务
EBPF服务表单
本站了解到,openEuler可编程内核SIG希望将eBPF软件相关的基础技术标准化,以利于eBPF技术在各行业,各场景的普及因此,多家企业/大学在openEuler社区发起建立行业标准,并提供性能加速,安全加固,智能观察等服务通过标准化的出版方式提供给社区用户
具体讨论范围分为三个方向:
EBPF运行时:负责提供可移植的软件安装能力,软件热升级能力,包管理等能力。
EBPF开发包:负责提供一站式开发,调试和编译工具,以及具有跨系统和平台迁移能力的软件包分发能力。
EBPF服务中心:负责提供eBPF服务市场管理,并提供EBPF服务推送和分发能力。
OpenEuler可编程内核签名目标
openEuler可编程内核SIG的目标之一,将推动eBPF as Service的标准化,使内核能力和硬件加速能力服务化和市场化,惠及更多社区用户同时,openEuler社区将把行业标准中的一些基础软件和技术标准推送到Linux的上游社区,加强eBPF技术的生态建设