Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-ebpf-zh
与 eBPF 相关的精选项目的中文清单
https://github.com/eunomia-bpf/awesome-ebpf-zh
Last synced: 1 day ago
JSON representation
-
文章和演示
-
硬件卸载
- 全面的 XDP 卸载——处理边缘情况 - 上述主题的更新。
-
通用的 eBPF 演示文稿和文章
- BPF参考指南 - 关于BPF C和bcc Python助手,来自bcc存储库。
- XDP 和 eBPF 简介 - 一篇通俗易懂的介绍,提供了关于 eBPF 的背景、历史和运作细节。
- 第一部分:介绍
- 第二部分:机器和字节码
- 使用BPF和XDP使内核的网络数据通路可编程化 - 一组幻灯片,涵盖了有关eBPF和XDP的所有基础知识(主要用于网络处理)。
- BSD数据包过滤器 - 主要介绍跟踪方面。
- IO Visor - 也介绍了[IO Visor项目](https://www.iovisor.org/)。
- BPF - 内核虚拟机 - eBPF的作者发表的演讲。
- 扩展扩展BPF - 2014年的一篇博客文章,介绍BPF的开发并演示了如何使用它进行有状态套接字过滤,通过将eBPF程序附加到套接字。
- 程序类型之旅 - 描述了所有现有的BPF程序类型的挂钩及其相关的兴趣点。
- BPF助手函数 - 对内核函数的回顾,这些函数可以从eBPF程序中调用。
- 与用户空间通信 - BPF如何与用户空间通信 - BPF映射、perf事件、bpf_trace_printk。
- 构建BPF程序 - 设置您的环境以构建BPF程序。
- BPF字节码和BPF验证器 - BPF如何确保程序安全?
- 使用BPF进行数据包转换 - 关于数据包转换的一个eBPF用法。
- 通过eBPF观测Linux内核 - 一篇博客文章,介绍了eBPF的基础知识以及如何在Go中编写和加载最小的eBPF程序到内核中的代码示例。
- eBPF - 程序员的视角 - 一篇简短的论文,描述了eBPF的基本原理以及如何开始编写eBPF程序。
- Linux扩展BPF(eBPF)跟踪工具 - 深入收集了使用eBPF的性能分析工具示例的信息。页面最后还有其他资源的部分。
- Cloudflare关于eBPF的博客文章 - 不同的博客文章,涉及关于网络使用案例和eBPF低级方面的内容。
-
BPF 内部机制
- Linux tc 和 eBPF
- IO Visor 博客
- Linux 网络解析 - Linux 网络内部,其中包括关于 eBPF 的一部分。
-
内核跟踪
- Linux下的全系统动态追踪:eBPF和bpftrace - 详细介绍了使用eBPF进行追踪的过程,包括列出可用的追踪点和运行bpftrace程序等。
- eBPF和内核跟踪的初次相遇 - Kprobes、uprobes、ftrace等。
-
XDP
- The eXpress Data Path - 一篇介绍XDP的非常易懂的入门文章,提供了示例代码以展示如何处理数据包。
- XDP正在进行中的文档
- XDP项目概述
- BoF - BPF能为您做些什么?
- Linux 上的高速数据包过滤 - 关于 Linux 上的数据包过滤、DDoS 保护、内核中的数据包处理、内核旁路、XDP 和 eBPF。
- eXpress Data Path - 包含mlx4驱动程序获得的一些基准测试结果。
- 如何每秒丢弃 1000 万个数据包 - Cloudflare 的博客文章,介绍了他们使用 XDP 进行数据包过滤的经验。
-
AF_XDP
- AF_XDP - AF_XDP地址族的内核文档。
- 在Linux中使用AF_XDP实现快速数据包处理
-
bpfilter
- 为什么内核社区要用BPF替换iptables? - Cilium的一篇博客文章,介绍eBPF和bpfilter的动机,并提供一些例子和链接到使用eBPF和bpfilter的其他项目。
- bpfilter:配有eBPF的Linux防火墙 - Quentin Monnet的演讲幻灯片,介绍eBPF背景,将bpfilter与iptables进行比较。
-
BTF
- BPF类型格式(BTF) - 有关BTF的内核文档,解释了如何使用它。
- 使用BTF类型信息增强Linux内核 - 介绍了使用BTF为BPF程序提供调试信息的工作。
-
传统BPF
- Linux 的 packet mmap(2), BPF 和 Netsniff-NG
- tc 和 cls bpf:使用 BPF 进行轻量级数据包分类
- 介绍 Cloudflare 的 BPF 工具 - 使用 `xt_bpf` 模块和 BPF 字节码来操作 iptables。
-
-
教程
-
硬件卸载
- bcc Python 开发者教程 - 随 bcc 一起提供,但针对 Python 代码,共包含十七个“课程”。
- 使用 libbpf-bootstrap 构建 BPF 应用程序 - 帮助生成启动自己应用程序的最小或高级模板(内核侧和用户空间管理映射和程序),具有诸如 CO-RE、全局变量和环形缓冲区之类的功能。
- 使用 Linux tracepoints、perf 和 eBPF 跟踪数据包行程 - 使用 perf 和 bcc 程序解决 ping 请求和响应的问题。
- Open NFP 平台 - 由 Netronome 运营:一些与网络相关的 eBPF 应用实例教程,包括 eBPF 拦截入门指南。
- XDP for the Rest of Us - 第二版,带有新的内容。
- 使用 ip(iproute2)命令加载 XDP 程序
-
-
示例
-
硬件卸载
- linux/tools/testing/selftests/bpf - 内核树:Linux BPF 自测,包含许多 eBPF 程序。
- prototype-kernel/kernel/samples/bpf - Jesper Dangaard Brouer 的原型内核存储库包含一些可以在内核基础设施之外编译的附加示例。
- iproute2/examples/bpf/ - 一些网络程序用于连接到 TC 接口。
- bcc/examples - 与 bcc 工具一起提供的示例,主要与跟踪有关。
- bcc/tools - 这些工具本身可以被视为 BPF 程序的示例用例,主要用于追踪和监视。 bcc 工具已针对一些 Linux 发行版进行了打包。
- redbpf examples - 使用 RedBPF 编写 Rust eBPF 程序的示例程序。
-
-
eBPF 工作流程:工具和实用程序
-
抄送
- 用于BCC的Lua前端 - 另一种替代C,甚至是bcc中大多数Python代码的选择。
-
iproute2
- iproute2 - 这个软件包包含了在 Linux 上进行网络管理的工具,其中包括了用于管理 eBPF 过滤器和动作的 `tc`,以及用于管理 XDP 程序的 `ip`。大多数与 BPF 相关的代码都在 lib/bpf.c 中。
- iproute2-next - 这是 iproute2 的开发树,与 net-next 同步更新。
-
LLVM
-
bpftool和内核树中的其他工具
- `bpf_asm` - 一个最小的cBPF汇编器。
- `bpf_dbg` - 一个用于cBPF程序的小型调试器。
- `bpf_jit_disasm` - 一种适用于两种BPF语言的反汇编器,对JIT调试非常有用。
- `bpftool` - 一个通用的实用工具,可用于与eBPF程序和用户空间映射进行交互,例如显示、转储、加载、反汇编、附着和分离程序到控制组,或显示、创建、固定、更新、删除映射。
-
在虚拟环境中进行测试
- Vagrant设置 - 方便测试XDP。现在通用的XDP已经存在,所以用处较少(独立于驱动程序,主要用于测试)。
-
-
与 eBPF 相关的项目
-
网络
- P4 on the Edge - 使用 eBPF 创建高性能可编程交换机的 P4。
- OvS Orbit episode (#11),名为 P4 on the Edge - 相关于前一条项目。由 Open vSwitch 核心维护者之一的 Ben Pfaff 对 John Fastabend 进行的音频采访。
- P4、EBPF 和 Linux TC Offload - 部分与 Netronome NFP 网络流处理器架构上的 eBPF 硬件卸载相关的 P4。
- P4 使用 eBPF 的旧文档 - 来自 bcc 存储库;由下面链接的 P4_16 后端弃用。
- Cilium
- Cilium的通用介绍
- DPDK有一个基于AF_XDP的轮询模式驱动程序(PMD)
- 一只浣熊的视角看eBPF和XDP
- Cilium:使用BPF和XDP为容器提供网络和安全性 - 还包括负载均衡用例
-
可观测性
- InKeV: In-Kernel Distributed Network Virtualization for DCN
- DEEP-mon - 用于测量服务器能耗的工具,利用eBPF程序进行数据聚合处理。
-
安全
- Falco - 一款云原生的运行时安全项目,用作 Kubernetes 威胁检测引擎。
- Red Canary Linux Agent - Red Canary 已经开始将 eBPF 纳入其 Linux 安全传感器。
-
工具
- bpftrace - 一个使用自己的高级跟踪语言进行跟踪的工具。它足够灵活,可以被想象成 DTrace 和 SystemTap 的 Linux 替代品。
- bpftrace Cheat Sheet - bpftrace 编程的摘要和备忘单。 包含有关语法,探针类型,变量和函数的信息。
- eBPF: Block Linux Fileless Payload "Malware" Execution with BPF LSM - 关于BPF如何帮助检测和阻止无文件恶意软件的博客文章。
- Blackhat 2021: With Friends Like eBPF, Who Needs Enemies? - 讲述一种eBPF rootkit以及eBPF能力的滥用。此rootkit也成为Defcon上的一个演讲主题,[eBPF, I thought we were friends !](https://defcon.org/html/defcon-29/dc-29-speakers.html#fournier)。
-
-
代码
-
工具
- `syscall.c` - 系统调用允许的各种操作,如程序加载或映射管理。
- `core.c` - BPF 解释器。
- `verifier.c` - BPF 验证器。
-
-
开发和社区
-
工具
- IO Visor 邮件列表 - BPF 是该项目的核心,经常在邮件列表上讨论。
- @IOVisor Twitter 账号
-
-
eBPF相关资源列表
-
致谢
-
参考文档
-
eBPF 基础知识
- ebpf.io - 一个查找 eBPF 的所有基础知识的门户网站,包括相关主要项目和社区资源的列表。
-
内核文档
- BPF文档 - 包含Linux内核相关BPF文档的索引。
- linux/Documentation/networking/filter.rst - eBPF规范(略有过时;信息仍然有效,但不全面)。
- BPF设计问答 - 关于BPF基础设施决策的常见问题。
- 如何与BPF子系统交互 - eBPF开发贡献的常见问题。
-
其他
- IO Visor的非官方eBPF规范 - eBPF语法和操作码的摘要。
- Jesper Dangaard Brouer的文档 - 正在进行中,欢迎贡献。
- bpf.h 和您…
- 从上下文角度讲...
- BPF 验证器概述
- 内核版本中的 BPF 特性列表
-
-
许可证
-
工具
-
Categories