Windows 支持 eBPF 的关键时间节点和事实依据

6 阅读2分钟

虽然 eBPF 起源于 Linux 并在那里大放异彩,但微软在 2021 年 5 月 正式宣布了 "eBPF on Windows" 开源项目,旨在让 eBPF 程序能够在 Windows 10 和 Windows 11 上运行。

以下是关于 Windows 支持 eBPF 的关键时间节点和事实依据:


1. 核心时间线

  • 2021 年 5 月: 微软在 GitHub 上开源了 ebpf-for-windows 项目。这标志着 Windows 开始正式拥抱 eBPF 技术。
  • 2021 年 8 月: 微软联合 Google、Isovalent、Facebook (Meta) 和 Red Hat 共同成立了 eBPF 基金会,进一步确认了其在跨平台 eBPF 上的投入。

2. 支持的操作系统版本

eBPF on Windows 并不是内核内置的组件(不像 Linux 那样原生集成在内核源码树中),它是一个通过驱动程序实现的运行库。它支持以下系统:

  • Windows 10 及更高版本(x64 和 Arm64 架构)。
  • Windows Server 2019 及更高版本。

3. 实现原理与 Linux 的区别

Windows 的实现方式比较独特。由于 Windows 内核与 Linux 内核架构完全不同,微软采用了一个名为 "ebpf-for-windows" 的中间层:

  • Libbpf API: 提供与 Linux 相同的 API 接口,让开发者可以编写跨平台的 eBPF 代码。
  • Pre-compilation (JIT): eBPF 字节码会被转换成 Windows 内核可理解的机器码。
  • Verification: 微软使用了基于静态分析的校验器(由 PREfast 驱动),确保 eBPF 程序不会导致内核崩溃。

4. 现状:目前能做什么?

目前 Windows 上的 eBPF 主要集中在 网络(Networking) 领域,尚未像 Linux 那样在可观测性(Tracing/Profiling)方面全面开花:

  • XDP (Express Data Path): 支持在网络堆栈的最底层处理数据包,性能极高。
  • Socket 绑定: 监控和过滤网络连接。
  • 初步的可观测性: 正在开发针对 Windows 事件跟踪(ETW)的挂钩。