第二届 eBPF 开发者大会分享回顾 - Pipy 与 eBPF:重塑系统级编程的新范式

💡 原文中文,约4500字,阅读约需11分钟。
📝

内容提要

四月的西安举办了第二届eBPF开发者大会,探讨和分享eBPF技术的最新发展和应用。Flomesh参会并分享了Pipy与eBPF结合的新编程模式及其在网络场景中的潜力。eBPF在可观测性、安全和网络方面的应用表现出上升趋势。Pipy是一个可编程应用引擎,通过JS编程实现网络流量处理和复杂应用逻辑。Pipy与eBPF的结合可以降低解决方案的复杂度。

🔎

延伸解读

eBPF 在 L7 的挑战与 Pipy 的应对

eBPF 在 L3/L4 层处理数据包具有高性能优势,但在 L7 应用层,由于需要解析 HTTP 头部、支持 WebSocket 等复杂逻辑,直接实现面临性能和复杂性挑战。Cilium 通过引入 per-node sidecar 代理和多组件协作解决,但这增加了系统复杂性和运维成本。Pipy 作为可编程应用引擎,通过 JS 编程处理网络流量和应用逻辑,与 eBPF 结合,能在同一进程内操作 BPF 程序和应用层处理,从而降低解决方案的复杂度。

Pipy 的架构与动态更新能力

Pipy 是一个单一可执行文件,无其他依赖,采用分层架构:底层依赖少,中层 API 封装网络流处理、BPF、NetLink 等,上层为自研 JS 引擎。它支持从网络加载文件(包括 JS、静态资源、证书甚至 BPF .o 文件),类似 GitOps 模型。运行于 Repo 模式的 Pipy 提供 Admin API 管理文件,并通过网络实时同步,节点收到更新后可热加载而无需重启,这增强了动态可编程性。

Pipy 与 eBPF 结合的实际应用

Pipy 的 BPF API 支持 BPF 程序的加载、挂载、分离以及 Map 更新。通过一个透明代理示例,展示了如何在同一个进程甚至同一个 JS 脚本文件中,既操作 BPF 程序又实现 Pipy 代理,从而在同一技术栈内完成对 BPF 程序的操作和应用层网络处理。此外,Pipy NetLink API 可将 XDP 类型的 BPF 程序挂载到网络设备上。这些能力为网络场景提供了更简洁的设计。

eBPF 与 Pipy 的共同理念

eBPF 和 Pipy 都强调动态可编程性作为核心特性,并基于稳定的微核心提供可编程能力:eBPF 之于 Linux 内核,PipyJS 之于 Pipy。大会上预测未来内核可能更加轻量级,部分功能可通过 eBPF 提供。这种理念使得两者在各自领域内灵活且有用,结合后能扩展 eBPF 的应用到更多基础设施,如服务网格中的容器内流量拦截。

❓

Q&A

eBPF技术的主要应用领域有哪些?

eBPF技术主要应用于可观测性、安全和网络领域。

Pipy是什么,它的主要功能是什么?

Pipy是一个开源的可编程应用引擎,支持通过JS编程实现网络流量处理和复杂应用逻辑。

Pipy与eBPF结合的优势是什么?

Pipy与eBPF结合可以降低解决方案的复杂度,实现更灵活和高效的编程和运维实践。

eBPF如何在安全领域发挥作用?

eBPF允许开发人员创建细粒度的安全策略,监控和控制系统调用、文件访问和网络访问,有效防范安全威胁。

Cilium是什么,它与eBPF的关系是什么?

Cilium是基于eBPF的开源项目,广泛应用于容器和Kubernetes环境,提供网络安全和流量管理功能。

eBPF在网络技术领域的应用趋势如何?

eBPF在网络技术领域的应用表现出上升趋势,支持包过滤、路由决策和负载均衡等操作。

🏷️

标签

➡️

继续阅读