共计 2062 个字符,预计需要花费 6 分钟才能阅读完成。
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 技术在上游社区影响力。
心愿退出探讨的小伙伴能够通过以下形式申报议题:https://etherpad.openeuler.org/p/sig-ebpf-meetings
参考资料:
[1] https://www.brendangregg.com/…