eunomia-bpf:展望 2023,让 eBPF 插上 Wasm 的翅膀

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

回望过去的 2022 年有两项技术备受瞩目eBPF 和 WebAssembly。

eBPF: 全新的可能性

eBPF 是一项革命性的技术起源于Linux内核可以在操作系统的内核中运行沙盒程序。它被用来安全和有效地扩展内核的功能而不需要改变内核的源代码或加载内核模块。

过去一年中可观测技术得到了极大关注也被 Gartner 列为 2023 年十大战略技术趋势之一。eBPF 本身是对传统观测能力一个非常好的补充在对内核无侵入的前提下它通过动态地向内核中插入一段自己的代码实现定义监控及跟踪等多种多样的能力。同时 eBPF 也促进了网络安全性应用程序配置跟踪和性能故障排除等等领域的新一代工具的开发这些工具不再依赖现有的内核功能而是在不影响执行效率或安全性的情况下主动重新运行。

如今 eBPF 被广泛应用在云原生、可观测、性能调优、安全、硬件加速等领域并且其应用场景还在快速扩展各种场景基于 eBPF 技术的创新项目呈现井喷现象对于操作系统社区而言eBPF 技术带来了一个全新的可能性以及广阔的天地 eBPF 的时代已然来临。

过去的 eBPF summit 2022 中《The future of eBPF in the Linux Kernel》展望了 eBPF 相关技术的发展方向具体的演进方向可能包含几个方面

  • 更完备的编程语义支持当前 eBPF 的编程能力存在一些局限性比如不支持变量边界的循环指令数量受限等未来希望能进一步提供图灵完备的编程能力增强 eBPF 的循环、内存分配等多种语言特性。
  • 更强的安全性支持类型安全增强运行时 Verifier希望 BPF 也能提供媲美 Rust 的安全编程能力以及尝试有没有可能结合 Rust 和 BPF 的特性提供更进一步的、同时保证可移植和安全性的内核功能。
  • 更广泛的移植能力增强 CO-RE加强 Helper 接口可移植能力实现跨体系、平台的移植能力。
  • 更强的内核可编程能力支持访问/修改内核任意参数、返回值实现更强的内核编程能力甚至使用 BPF 来帮助构建和增强内核本身的安全性。

Wasm: 引领下一代计算范式

相对于 eBPF 主要关注于内核态或者和内核相关的应用用户态的 WebAssembly 也成为了 2022 年新的焦点。

WebAssembly简称 Wasm是一个自诞生之日起就充满潜力的技术一开始为了一个可移植的目标而设计的一种类似汇编字节码的指令格式标准可用于编译C/C+/RUST等高级语言使客户端和服务器应用程序能够在浏览器上部署时至今日WebAssembly 正在沿着其名字中 Web 和 Assembly 两个领域之外的方向发展使用与 Wasm 兼容的运行时Wasm 文件可以在客户端和服务器端执行从 “JavaScript 杀手” 到 “云计算的下一个前沿方向” 几乎覆盖了全部新兴领域同时在从云计算、serverless 向边缘计算渗透Wasm 已经远远超出了起作为第四种 Web 标准语言的角色。甚至重新定义了应用软件的开发模式正逐渐接近其 “一次编写随处运行” 的愿景。

Wasm 有几个关键的设计目标使其出生开始就自带令人亮眼的关注

  • 可移植Wasm 被设计为针对低级虚拟机架构其指令由物理机单独翻译成机器代码。这意味着 Wasm 二进制文件最终可以在各种操作系统和芯片架构上运行 —— 无论是在运行 X86 笔记本电脑的浏览器中还是在内部或云端的服务器上在移动设备、物联网设备上等等。
  • 多语言因为 Wasm 是一个编译目标用于编程模块的具体语言并不重要重要的是是否有支持将该语言编译到 Wasm。开发人员可以灵活地使用多种语言如 C、C++、Rust、凹语言等来构建二进制文件并享受 Wasm 带来的红利。
  • 轻量和高效作为一个低级别的二进制指令格式只需要较少的操作来将 Wasm 翻译成优化的机器代码。
  • 安全Wasm 目标之一是安全它在一个沙盒环境中执行对主机运行时没有初始可见性。这意味着对系统资源如文件系统硬件等的访问是受限制的除非明确导入了对应的函数以支持。因此 Wasm 极大限制了攻击面实现了多租户环境中不受信任的代码安全受限地执行。

过去的 2022 年 Wasm 取得了不少激动人心的成就许多新的 Wasm 初创公司涌现老牌云服务商和公司宣布支持 Wasm字节码联盟推出了许多新的 Wasm 标准CNCF主办了两次 WasmDay 活动而 Wasm 最大的用户之一 Figma 被 Adobe 以惊人的 200 亿美元收购。对于 WebAssembly 而言2023 年很有可能也会是爆发的一年

  • 组件模型描述了Wasm二进制文件相互交互的方式正在迅速成熟已经出现了参考实现。开发人员可以声明他们的应用程序需要哪些组件或者更抽象地说他们的应用需要哪些功能而不是用他们首选的源语言查找库然后Wasm运行时可以代表用户组装正确的组件集。2023 年将是组件模型开始重新定义我们如何编写软件的一年。
  • Wasm改变了无服务器环境的潜力。由于几乎即时的启动时间、较小的二进制文件大小以及平台和架构中立性Wasm二进制文件可以用运行当今无服务器基础设施所需的一小部分资源来执行。
  • 2022年底OCI Registry工作组宣布了一种存储容器镜像以外的其他内容的官方方式。这可能包括Helm图表、照片或Wasm应用程序。这个新功能被称为“工件存储”。
  • 所有大型编程语言都将得到Wasm支持Wasm GC提案很可能在 2023 年初就能可用并得到支持因此 Kotlin 和 Dart 将很快发布Wasm编译器Java 也很可能将成为最流行的 Wasm 开发语言。

Coolbpf + eunomia-bpf = eunomia-lcc

在过去的一年中阿里云龙蜥社区系统运维SIGSpecial Interest Group 正式开源了 Coolbpf 项目。Coolbpf 以 CO-RECompile Once-Run Everywhere为基础实现保留了资源占用低、可移植性强等优点融合了BCC动态编译特性通过远程服务能力极大简化开发编译和运行效率适合在生产环境批量部署应用。Coolbpf 还支持在没有 eBPF 特性的低内核版本上通过提供的 eBPF 驱动帮助它安全的在低版本上运行从内核态和批量部署两个角度充分增强了 eBPF 程序"一次编译到处运行” 的能力。

eunomia-bpf 也是一个结合 Wasm 的通用、轻量级、多语言的下一代 eBPF 开发框架/组件库2022 年下半年在龙蜥社区 eBPF 技术探索 SIG [3] [5] 发起并孵化。eunomia-bpf 包含一个运行时和编译工具链主要关注于改进 eBPF 程序用户态的开发和使用体验主要有三个特性

  1. 只需编写内核态代码即可运行 eBPF 程序内核态前端完全兼容 bcc、原生 libbpf 等多种语法可以降低 eBPF 开发的学习成本提高开发效率
  2. 编译工具链和运行时完全分离保证不同版本编译工具链和运行时之间的兼容性以 CO-RE一次编译、到处运行的方式加载降低部署和使用的资源消耗还可以让 BCC/bpftrace 类型的代码也支持 AOT 编译在加载的的时候不依赖 llvm 等库同时保留 bpftrace 类似脚本一样的简单使用方式
  3. 用户态也支持多种语言例如 C++/C/Rust 等可以使用多种语言在 Wasm 中开发 eBPF 的用户态程序并且以 Wasm 模块或者 JSON/YAML 配置文件的方式分发和动态加载 eBPF 程序同时以 Wasm OCI 镜像的形式存储和管理任意包含用户态和内核态的 eBPF 应用。

eunomia-bpf 希望成为一个以类库或者松散组合的框架的方式提供让其他公司和个人想要基于自己的内核态 ebpf 基础设施搭建一个类似的用户态开发运行环境或者完整的开发平台、插件运行时变得更容易很多。希望在编译方面做更多的探索。

在 2022 年底我们尝试将 Coolbpf 和 eunomia-bpf 结合起来借助 Coolbpf 提供的低内核版本支持的内核态基础设施以及批量部署应用的能力以及 eunomia-bpf 提供的结合 Wasm 的用户态开发、分发特性在 Coolbpf 的大框架下创建了一个新的 eBPF 用户态开发库eunomia-lcc希望让 Coolbpf 也能

  • 在编写 eBPF 程序或工具时只编写内核态代码就能自动获取内核态导出信息自动生成命令行参数、直方图输出等
  • 使用 WASM 进行用户态交互程序的开发在 WASM 虚拟机内部控制整个 eBPF 程序的加载和执行以及处理 eBPF 上报的数据
  • 可以将预编译的 eBPF 程序打包为通用的 JSON 或 WASM 模块跨架构和内核版本进行分发无需重新编译即可动态加载运行。

同时还能保留 Coolbpf 的低版本兼容、BTF 自动获取、远程编译等特性让 eBPF 程序的开发更加简便易行。

展望未来eunomia-bpf 的团队在 2023 年也希望尝试探索、改进、完善 eBPF 程序开发、编译、打包、发布、安装、升级等的流程和工具、SDK并积极向上游社区反馈进一步增强 eBPF 的编程体验和语言能力以及更进一步地和 WebAssembly 相结合在可观测性、serverless、可编程内核等诸多方面做更多的探索和实践朝着图灵完备和更完善的语言支持迈进。

参考资料

  1. WASM 将引领下一代计算范式 [译]https://www.oschina.net/news/214580
  2. WebAssembly2023年的5个预测: https://www.sohu.com/a/626985661_121119003
  3. eBPF 技术探索 SIG 主页 https://openanolis.cn/sig/ebpfresearch
  4. Coolbpf 项目开源仓库: https://gitee.com/anolis/coolbpf
  5. eunomia-bpf Github 仓库https://github.com/eunomia-bpf/eunomia-bpf
  6. eunomia-bpf 龙蜥社区镜像仓库https://gitee.com/anolis/eunomia
  7. 当 WASM 遇见 eBPF使用 WebAssembly 编写、分发、加载运行 eBPF 程序 | 龙蜥技术: https://developer.aliyun.com/article/1050439
  8. 2023可观测性需求将迎来“爆发之年”https://36kr.com/p/dp2063589382737542
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“eunomia-bpf:展望 2023,让 eBPF 插上 Wasm 的翅膀” 的相关文章