eBPF 即将登陆 Windows

图片

作者 | Joab Jackson
译者 | 王强
策划 | Tina

在 IETF 和微软的帮助下,eBPF 将很快为 Linux 和 Windows 的内核程序提供跨平台兼容性。

在上个月的虚拟 eBPF 峰会上,Isovalent 的首席技术官兼联合创始人 Thomas Graf 谈到了这款开源的,由过滤器转型而成的内核引擎的未来。他指出,这个未来包括了微软 Windows 的版本。

微软研究人员已启动了一个项目,为 Windows 制作一个 eBPF 版本,也就是说为 Windows 内核提供一个类似的可编程接口。

自十年前被纳入内核以来,基于 Linux 的 eBPF 得到了广泛采用,尤其是可观察性、安全性和合规性工具对它的使用非常多。这些工具利用其可编程的高速特性来分析和过滤数据包,而无需繁琐的模块或危险的内核修改。

借助它承诺的 Windows 和 Linux 之间的跨平台兼容性,工具开发商就能写出同时支持两大平台的二进制文件了。

适用于 Windows 的 eBPF

与 Linux eBPF 一样,Windows eBPF 将提供一个沙箱,用于在内核本身内执行小程序,一旦代码得到验证,就会使用一个封闭的内核解释器来执行 eBPF 字节码。

GitHub 上发布的这个微软项目显示有 43 位贡献者,代码主要用 C 编写,还有少量 C++。

Graf 表示,该软件包将实现与 Linux eBPF 的字节码兼容性,并且还有类似的解释器和即时编译器来执行字节码。但是,考虑到 Windows 系统调用的差别,eBPF 连接到内核的挂钩点可能会有所不同。

图片

微软的 eBPF Windows 版本架构

Graf 表示,为 Linux eBPF 开发的所有工具也将在“未来几年”移植到 Windows 环境中。

他警告说,这将给社区带来更多挑战。展望未来,工具开发商需要确保他们的产品在两种环境中都能正常工作。

因此它需要标准化。

eBPF 标准化

Graf 指出,最初,eBPF(现在,管理员们一致认为,这个名字不再代表任何东西)是作为一组代码发展起来的;当时它并没有遵循什么预先定义的规范。因此,代码本身“就是工具开发商必须遵循的标准”,他说。

互联网工程任务组(IETF)已着手开展一个项目,以尽可能保证 Windows 和 Linux 之间的“跨平台”兼容性,该工作组的技术顾问、也是微软 eBPF 项目的主要贡献者之一的 Dave Thaler 在今年早些时候的 Linux 基金会存储峰会上提到了这一点。

IETF eBPF 工作组的首要任务是巩固运行 eBPF 程序的虚拟机的指令集架构(ISA)。该机构已基本完成描述 ISA 的文档,只剩下一些最后的反馈。

ISA 工作完成后,该小组还计划为验证器制定一套期望机制,以保证不受信任的 eBPF 程序能够安全执行。验证器应该做什么来确保代码安全?验证器保证哪些安全属性?对于这项工作,该小组可以从 Linux 内核的 verifier.rst for eBPF 开始构建。

该小组还计划通过 ABI(应用程序二进制接口)规范创建一种用于生成可移植 eBPF 二进制文件的格式,也许基于现有的格式之一打造。

声明:本文由 InfoQ 翻译,未经许可禁止转载。