eBPF 是一个能够在内核运行沙箱程序的技能,供给了一种在内核事情和用户程序事情产生时安全注入代码的机制,使得非内核开发人员也能够对内核进行控制。跟着内核的开展,eBPF 逐渐从最初的数据包过滤扩展到了网络、内核、安全、盯梢等,而且它的功能特性还在快速开展中,前期的 BPF 被称为经典 BPF,简称 cBPF,正是这种功能扩展,使得现在的 BPF 被称为扩展 BPF,简称 eBPF。

如今 eBPF 被广泛运用在云原生、可观测、功能调优、安全、硬件加速等范畴,而且其运用场景还在快速扩展,各种场景基于 eBPF 技能的创新 idea 出现井喷现象,eBPF 的年代已经来临。

eBPF 技能现状

虽然 eBPF 技能运用出现井喷现象,可是开发、发布、装置等相关的根底技能出现碎片化现象,导致技能成果无法快速平移至行业客户出产环境;类似 eBPF 技能运用在重复实践。这些问题阻碍 eBPF 技能的普及与推广。

如下图所示,总结目前 eBPF 的开发、发布方法根本能够划分红 2 种技能道路:

开发态、运行态别离(典型代表 libbpf)

长处:ELF 文件方法(或者链接进运用程序)发布,运行时轻量化,合适出产环境大规模运用。

缺点:运用技能门槛高,且不具有可移植性(比方高内核版别的 eBPF 程序无法移植至低内核版别中)。

开发态、运行态交融(典型代表 BCC)

长处:源码方法发布天然具有可移植性;封装笼统运行时,供给高档言语 API,下降开发难度。

缺点:运行时重型化,对出产环境要求较高(需要装置开发态一系列工具);高度笼统后,下降运用灵活度,不合适大型运用开发。

openEuler 倡议建立 eBPF 软件发布标准

这两种技能道路都存在弊端,跟着 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)。

openEuler 倡议建立 eBPF 软件发布标准

树立 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 倡议建立 eBPF 软件发布标准

openEuler 可编程内核 SIG 方针

openEuler 可编程内核 SIG 方针之一就是推进 eBPF as Service 标准化作业,将内核才能、硬件加速才能服务化、集市化,惠及更多的社区用户。

与此同时,openEuler 社区会将行业标准内的一些根底软件、技能标准推送至 Linux 上游社区,加强 eBPF 技能生态建设,提升国内 eBPF 技能在上游社区影响力。

期望参加讨论的小伙伴能够经过以下方法申报议题:etherpad.openeuler.org/p/sig-ebpf-…

参考资料:

[1] www.brendangregg.com/blog/2019-1…