eBPF是一种可以在内核中运行沙盒程序的技术,提供了一种在内核事件和用户程序事件发生时安全注入代码的机制,让非内核开发者也可以内核取得控制权。随着内核的发展,eBPF从最初的包过滤逐渐扩展到网络、内核、安全、跟踪等,其功能特性仍在快速发展。早期的BPF称为classicBPF,简称cBPF。这种功能扩展使得当前的BPF称为扩展BPF,简称eBPF。如今,eBPF广泛应用于云原生、可观察、性能调优、安全、硬件加速等领域,其应用场景还在快速扩展。基于eBPF技术的创新思路在各种场景下呈现井喷现象。eBPF时代已经到来。eBPF技术现状虽然eBPF技术的应用呈现井喷现象,但开发、发布、安装等相关基础技术各自为政,导致技术成果无法快速转化到行业客户的生产环境;类似的eBPF技术应用在实践中不断重复。这些问题阻碍了eBPF技术的普及和推广。如下图所示,总结目前eBPF的开发和发布方式,基本上可以分为两条技术路线:开发态和运行态分离(典型代表是libbpf)。量化,适合在生产环境大规模应用。缺点:应用技术门槛高,不可移植(例如高内核版本的eBPF程序无法移植到低内核版本)。开发态和运行态一体化的优点(典型的BCC):源代码的发布自然是可移植的;封装抽象运行时,提供高级语言API,降低开发难度。缺点:运行时重,对生产环境要求高(开发状态需要安装一系列工具);高度抽象降低了使用的灵活性,不适合大规模应用开发。这两种技术路线都存在缺点。随着eBPF技术的发展,出现了BumbleBee、eunomia-bpf等项目,整合了这两种技术路线的优势,但目前还缺乏对eBPF基础技术的整体规划。eBPF发展展望eBPF峰会2022《The future of eBPF in the Linux Kernel》展望eBPF的发展方向。具体的演化方向包括几个方面:更完备的编程能力:目前的eBPF编程能力存在一定的局限性(例如不支持可变边界循环、指令数量有限等),演化目标提供图灵完备的编程能力.更强的安全性:支持类型安全,增强runtimeVerifier,进化目标是提供媲美Rust的安全编程能力。更广泛的可移植性:增强CO-RE,增强Helper接口的可移植性,实现跨系统、跨平台的可移植性。更强的可编程性:支持访问/修改内核的任意参数和返回值,实现更强的内核编程能力。总结一下它的演化目标就是将eBPF打造成内核(包括硬件)运行时的安全编程语言,通过这种语言构建eBPF软件承载内核(或硬件)能力。演化的结果是一个有趣的现象:按照传统的软件类型分类方法,我们很难将eBPF软件归类为应用软件或系统软件。因此,简单地将其定义为一种独立的软件形式:内核态服务(eBPFasService)。建立eBPF行业标准的思路eBPF软件不同于系统软件和应用软件。就软件本身的特点而言,应该有一系列符合自身特点的开发、编译、打包、发布、安装、升级等工具。目前eBPF的开发框架和发布形式发展迅速,但仍存在一些问题,包括跨版本可移植性、多场景支持、开发易用性、服务可用性等。openEulerProgrammableKernelSIG希望将eBPF软件相关的基础技术(包括打包、发布、安装、升级等)标准化,以方便eBPF技术在各行业、各场景的推广。为此,多家企业/高校已在openEuler社区发起行业标准的制定,通过标准化发布,通过内核定制能力和技术为社区用户提供性能加速、安全加固、智能观察等服务。硬件卸载功能。预计我们将在12月组织一次在线聚会。目前参与的公司/组织包括天翼云、深信服、华为、西邮、中山大学、中科玉树、信通院、锐捷等,希望国内对eBPF技术有需求的厂商加入本次meetup建立eBPF技术相关标准,为eBPF技术应用和科学研究提供更好的基础平台。具体讨论范围分为三个方向:eBPF运行时:负责提供可移植的软件安装能力、软件热升级能力、包管理能力。eBPFDevelopmentKit:负责提供一站式的开发、调试、编译工具,提供具有跨系统、跨平台移植性的软件包发布能力。eBPFServiceHUB:负责提供eBPFService市场管理,提供eBPFService推送和分发能力。OpenEulerProgrammableKernelSIGGoalsopenEulerProgrammableKernelSIG的目标之一是推动eBPFasService的标准化,服务和营销内核能力和硬件加速能力,造福更多社区用户。同时,openEuler社区会将行业标准内的一些基础软件和技术标准推送给Linux上游社区,加强eBPF技术的生态建设,提升国产eBPF技术在上游社区的影响力。想加入讨论的朋友可以通过以下方式声明话题:https://etherpad.openeuler.org/p/sig-ebpf-meetings参考资料:[1]https://www.brendangregg.com/...
