BumbleBee - 一个简化 eBPF 程序的创建和分发的工具包

Solo.io 是一家为云系统、微服务、隔离容器和无服务器计算开发产品的公司,该公司发布了开源的 BumbleBee 工具包,旨在简化在内核内部的特殊虚拟机中运行的 eBPF 程序的准备、分发和执行。 Linux 并支持处理网络操作、访问控制和系统监控。代码使用 Go 语言编写,并以 Apache 2.0 许可证发布。

BumbleBee 使得将 eBPF 程序打包为 OCI(开放容器计划)格式的容器镜像成为可能,该镜像可以在任何系统上运行,无需重新编译,也无需在用户空间使用其他组件。 与核心中的 eBPF 代码的交互,包括处理来自 eBPF 处理程序的数据,由 BumbleBee 接管,它自动以指标、直方图或日志的形式导出这些数据,例如可以使用卷曲实用程序。 所提出的方法允许开发人员专注于编写 eBPF 代码,而不会因组织与用户空间、汇编和加载到内核中的代码的交互而分心。

为了管理 eBPF 程序,提供了 Docker 风格的“bee”实用程序,使用它您可以立即从外部存储库下载感兴趣的 eBPF 处理程序并在本地系统上运行它。 该工具包允许您为选定主题的 eBPF 处理程序生成 C 代码框架(当前仅支持拦截对网络堆栈和文件系统的调用的网络和文件操作的处理程序)。 基于生成的框架,开发人员可以快速实现他感兴趣的功能。

与 BCC(BPF 编译器集合)不同,BumbleBee 不会为每个内核版本执行完整的处理程序代码重建。 Linux (BCC 每次运行 eBPF 程序时都会使用 Clang 进行即时编译。)为了解决可移植性问题,CO-RE 和 libbpf 工具包正在开发中,它们允许代码只需编译一次,并使用一个特殊的通用加载器,该加载器会将加载的程序适配到当前内核和 BTF(BPF 类型格式)类型。BumbleBee 是 libbpf 的一个附加组件,它提供了额外的类型,用于自动解释和显示存储在标准 eBPF 映射结构(RingBuffer 和 HashMap)中的数据。

要构建最终的 eBPF 程序并将其保存为 OCI 映像,只需运行命令“bee build file_with_code name:version”,然后运行命令“bee run name:version”。 默认情况下,从处理程序接收到的事件将输出到终端窗口,但如果需要,您可以通过使用curl或wget实用程序到绑定到处理程序的网络端口来获取数据。 处理程序可以通过 OCI 兼容的存储库进行分发,例如,要从 ghcr.io 存储库(GitHub 容器注册表)运行外部处理程序,您可以运行命令“bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(蜜蜂版本)”。 为了在存储库中放置处理程序,建议使用“bee Push”命令,并绑定版本“bee tag”。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster