eBPF 是一个能够在内核运行沙箱程序的技能,供给了一种在内核事情和用户程序事情产生时安全注入代码的机制,使得非内核开发人员也能够对内核进行控制。跟着内核的开展,eBPF 逐渐从最初的数据包过滤扩展到了网络、内核、安全、盯梢等,而且它的功能特性还在快速开展中,前期的 BPF 被称为经典 BPF,简称 cBPF,正是这种功能扩展,使得现在的 BPF 被称为扩展 BPF,简称 eBPF。
如今 eBPF 被广泛运用在云原生、可观测、功能调优、安全、硬件加速等范畴,而且其运用场景还在快速扩展,各种场景基于 eBPF 技能的创新 idea 出现井喷现象,eBPF 的年代已经来临。
eBPF 技能现状
虽然 eBPF 技能运用出现井喷现象,可是开发、发布、装置等相关的根底技能出现碎片化现象,导致技能成果无法快速平移至行业客户出产环境;类似 eBPF 技能运用在重复实践。这些问题阻碍 eBPF 技能的普及与推广。
如下图所示,总结目前 eBPF 的开发、发布方法根本能够划分红 2 种技能道路:
开发态、运行态别离(典型代表 libbpf)
长处:ELF 文件方法(或者链接进运用程序)发布,运行时轻量化,合适出产环境大规模运用。
缺点:运用技能门槛高,且不具有可移植性(比方高内核版别的 eBPF 程序无法移植至低内核版别中)。
开发态、运行态交融(典型代表 BCC)
长处:源码方法发布天然具有可移植性;封装笼统运行时,供给高档言语 API,下降开发难度。
缺点:运行时重型化,对出产环境要求较高(需要装置开发态一系列工具);高度笼统后,下降运用灵活度,不合适大型运用开发。
这两种技能道路都存在弊端,跟着 eBPF 技能的开展,出现 BumbleBee 、eunomia-bpf 等项目致力于综合这两类技能道路的长处,但仍旧缺乏对 eBPF 根底技能的整体规划。
eBPF 开展展望
eBPF summit 2022 《The future of eBPF in the Linux Kernel》展望了 eBPF 的开展方向,详细的演进方向包含几个方面:
更齐备的编程才能:当时 eBPF 的编程才能存在一些局限性(比方不支撑变量边界的循环,指令数量受限等),演进方针供给图灵齐备的编程才能。
更强的安全性:支撑类型安全,增强运行时 Verifier,演进方针是供给媲美 Rust 的安全编程才能。
更广泛的移植才能:增强 CO-RE,加强 Helper 接口可移植才能,实现跨系统、渠道的移植才能。
更强的可编程才能:支撑访问/修正内核任意参数、返回值,实现更强的内核编程才能。
归纳其演进方针是期望将 eBPF 打造成一款针对内核(包含硬件)运行时的安全编程言语,经过该言语构建 eBPF 软件,用来承载内核(或硬件)的才能。演进成果产生一个风趣现象:按照传统软件类型划分方法,咱们很难将 eBPF 软件归类成运用软件或是系统软件。所以,爽性将其界说成一种独立软件形态:内核态服务(eBPF as Service)。
树立 eBPF 行业标准的思路
eBPF 软件有别于系统软件、运用软件,从软件本身特点而言,其应具有契合其本身特点的开发、编译、打包、发布、装置、晋级等工具系列。
当时 eBPF 的开发框架、发布方法开展迅速,但也存在一些问题,包含跨版别移植才能、多场景支撑才能、开发易用性、服务可获得性等问题。openEuler 可编程内核 SIG 期望标准化 eBPF 软件相关根底技能(包含打包、发布、装置、晋级等),便利 eBPF 技能在各行业、场景的推广。为此,由多家企业/高校在 openEuler 社区倡议树立行业标准,经过标准化发布将内核定制才能、硬件卸载才能向社区用户供给功能加速、安全加固、智能观测等服务。
预计咱们将在 12 月份安排一次线上 meetup,当时参加企业/安排包含天翼云、深信服、华为、西邮、中山大学、中科驭数、信通院、锐捷等,期望国内对 eBPF 技能有诉求、规划的厂商参加本次 meetup,树立 eBPF 技能相关标准,为 eBPF 技能运用、科研供给较好的根底渠道。
详细讨论范围划分红三个方向:
eBPF runtime:担任供给具有可移植性的软件装置才能,软件热晋级才能,包办理等才能。
eBPF Development Kit:担任供给一站式开发、调试、编译工具,供给具有跨系统、渠道移植才能的软件包发布才能。
eBPF Service HUB:担任供给 eBPF Service 集市化办理,供给 eBPF Service 推送、分发等才能。
openEuler 可编程内核 SIG 方针
openEuler 可编程内核 SIG 方针之一就是推进 eBPF as Service 标准化作业,将内核才能、硬件加速才能服务化、集市化,惠及更多的社区用户。
与此同时,openEuler 社区会将行业标准内的一些根底软件、技能标准推送至 Linux 上游社区,加强 eBPF 技能生态建设,提升国内 eBPF 技能在上游社区影响力。
期望参加讨论的小伙伴能够经过以下方法申报议题:etherpad.openeuler.org/p/sig-ebpf-…
参考资料:
[1] www.brendangregg.com/blog/2019-1…