eBPF
eBPF
目录
Cilium文档 - 介绍
参考:https://docs.cilium.io/en/stable/bpf/
这边主要是为了学习 eBPF + XDP
这篇文章是在cilium里的,主要是因为他里面使用到了eBPF。这里补充介绍一下:(来源GPT4)
Cilium 是一个开源项目,它提供了用于在 Linux 容器和 Kubernetes 环境中进行网络连接、负载均衡和网络安全的 API。
Cilium 的核心目标是为容器、虚拟机和主机级应用程序提供高效、可靠和可扩展的连接性。
Cilium 依赖于 Linux 内核中的 eBPF(Extended Berkeley Packet Filter)技术,将内核级性能与用户空间灵活性相结合,从而实现高效、现代的网络和安全功能。eBPF 是一种高性能内核执行引擎,可以在不更改内核源代码的情况下通过用户空间程序进行灵活地扩展内核功能。eBPF 提供了 Cilium 在内核级别提供高性能网络转发和安全策略实施的基础设施。
Cilium 使用 eBPF 主要有两个方面:
- 网络转发:
Cilium 利用 eBPF 的高性能网络数据包处理能力来实现可扩展的网络转发。Cilium 实现了 VXLAN 隧道、容器网络策略、负载均衡等网络功能,并通过 eBPF、XDP 和 TC 钩子实现高效的内核级网络传输。- 安全策略:
Cilium 使用 eBPF 直接在内核中实现安全策略,如 API 感知网络安全、网络可见性和可以定义的访问控制列表。这为 Cilium 提供了更高级别的安全和性能,无需在容器之间或通往外部网络的流量中进行嵌套。总之,Cilium 是一个基于 eBPF 技术构建的容器及 Kubernetes 网络和安全解决方案。借助 eBPF 的高性能和灵活性,Cilium 可以实现高效、可扩展且安全的连接性。
介绍
本文档部分面向想要深入了解 BPF 和 XDP 技术的开发人员和用户。虽然阅读本参考指南可能有助于加深您对 Cilium 的理解,但这并不是使用 Cilium 的必要条件。请参阅入门指南和 eBPF Datapath 以获取更高级别的介绍。
BPF 是 Linux 内核中高度灵活且高效的类似虚拟机的构造,允许以安全的方式在各种挂钩点执行字节码。它被用于许多 Linux 内核子系统,最突出的是网络、跟踪和安全(例如沙箱)。
尽管 BPF 自 1992 年以来就已存在,但本文档涵盖了扩展的伯克利数据包过滤器 (eBPF) 版本,该版本首次出现在内核 3.18 中,并使得如今被称为“经典”BPF (cBPF) 的原始版本基本上已过时。许多人都知道 cBPF 是 tcpdump 使用的数据包过滤语言。如今,Linux 内核仅运行 eBPF,加载的 cBPF 字节码在程序执行之前会在内核中透明地转换为 eBPF 表示形式。除非指出 eBPF 和 cBPF 之间的明确差异,否则本文档通常会引用术语 BPF。
尽管伯克利数据包过滤器这个名称暗示了数据包过滤的特定用途,但指令集现在已经足够通用和灵活,除了网络之外,BPF 还有许多用例。请参阅 Further Reading 以获取使用 BPF 的项目列表。
Cilium 在其数据路径中大量使用 BPF,请参阅 eBPF Datapath 以获取更多信息。本章的目标是提供 BPF 参考指南,以便了解 BPF、其网络特定用途,包括使用 tc(流量控制)和 XDP(eXpress 数据路径)加载 BPF 程序,并帮助开发 Cilium 的 BPF 模板。
目录