第 11 章 eBPF 的未来发展
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
eBPF 尚未完成!和大多数软件一样,它在 Linux 内核中也在持续开发中,而且还在不断被添加到 Windows 操作系统中。在本章中,我们将探讨这项技术未来可能的发展方向。
自从在 Linux 内核中引入以来,BPF 已经发展成为自己的子系统,拥有自己的邮件列表和维护者。1随着 eBPF 越来越受欢迎,Linux 内核社区对它的兴趣也越来越浓厚,因此成立一个中立机构来协调相关各方的工作就显得尤为重要。这个机构就是 eBPF 基金会。
eBPF 基金会
eBPF 基金会于 2021 年由谷歌、Isovalent、Meta(当时名为 Facebook)、微软和 Netflix 在 Linux 基金会的支持下成立。该基金会作为一个中立机构,可以持有资金和知识产权,以便各商业公司可以相互合作。
其意图是不改变任何有关 Linux 内核社区和 Linux BPF 子系统贡献者开发 eBPF 技术的方式。基金会的活动由 BPF 指导委员会指导,该委员会完全由构建该技术的技术专家组成,包括 Linux 内核 BPF 维护者和其他核心 eBPF 项目的代表。
eBPF 基金会专注于作为技术平台的 eBPF 以及支持 eBPF 开发的工具生态系统。建立在 eBPF 基础之上、寻求中立所有权的项目可能会在其他基金会找到更好的归宿。例如,Cilium、Pixie 和 Falco 都是 CNCF 的一部分,这是有道理的,因为它们都打算用于云原生环境。
除了现有的 Linux 维护者之外,推动这一合作的关键因素之一是微软有意在 Windows 操作系统中开发 eBPF。这就需要为 eBPF 定义一个标准、2这样,为一种操作系统编写的程序就可以在另一种操作系统上使用。这项工作正在 eBPF 基金会的支持下进行。
Windows 版 eBPF
微软支持Windows eBPF 的工作正在顺利进行。当我在 2022 年的最后几个月写这篇文章时,已经有功能演示显示 Cilium 第 4 层负载均衡和基于 eBPF 的连接跟踪在 Windows 上运行。
我曾经说过,eBPF 编程就是内核编程,乍一看,一个写在 Linux 内核中运行并能访问 Linux 内核数据结构的程序,无论如何都能在一个完全不同的操作系统中运行,这似乎有些不直观。但实际上,特别是在网络方面,所有操作系统都有很多共同点。不管是在 Windows 还是 Linux 机器上创建的网络数据包,其结构都是一样的,网络堆栈的各层也必须以同样的方式处理。
您还会记得,eBPF 程序由一组字节码指令组成,这些指令由内核中的虚拟机(VM)处理。虚拟机也可以在 Windows 中实现!
图 11-1显示了 eBPF for Windows 的架构概览,摘自该项目的 GitHub repo。从图中可以看出,Windows 版 eBPF 重用了现有 eBPF 生态系统中的一些开源组件,如libbpf,以及 Clang 中用于生成 eBPF 字节码的支持。Linux 内核采用 GPL 许可,而 Windows 则是专有的,因此 Windows 项目无法重复使用 Linux 内核实现校验器的任何部分。3取而代之的是使用PREVAIL 校验器和uBPF JIT编译器(两者都获得了许可,因此可以被更多项目和组织使用)。