eBPF
大约 12 分钟
eBPF
目录
学习路线
个人学习路线 + 学后改良
入门阶段
- 先看官网的介绍文档+Lab
- 再看狄卫华博文前两章
- 看B站的《高效入门eBPF》
- 写基础demo
深入阶段
看Cilium文档,学习 XDP
狄卫华 +《Linux内核观测技术BPF》混着看
(《Linux内核观测技术BPF》,但这本书连环境配置的内容,不适合刚开始看)
高级阶段
- 未触及,应该是内核和eBPF源码相关的东西吧
资料收集
官网资料
- 官网 ebpf.io
- 官网介绍文档
- 官网博客,包括的模块:社区、如何、发布、技术、更新、外部
- 官网在线虚拟机
- **【主要资料】**文档
- 详细文档与教程:https://ebpf.io/what-is-ebpf/#documentation(吐槽:这个藏得真深,居然在介绍文档的底部,没有独立入口)
- 社区与文档:https://docs.cilium.io/en/stable/bpf/
- 内核中的BPF文档:https://www.kernel.org/doc/html/latest/bpf/index.html
其他参考资料
博客 / 系列文章
【主要资料】中文个人博客,这是一个专门研究eBPF的人写的专题博客,会有一些对于官网内容的翻译。
重点说一下这个作者 —— “狄卫华”
- 是《Linux内核观测技术BPF》的译者之一
- 个人博客如上,网站第一篇文章,就是对eBPF的介绍:【BPF入门系列-1】eBPF 技术简介
【云原生社区】eBPF 技术简介,内容和上面这篇一样,但图片更模糊了 - Github:https://github.com/DavadDi/bpf_study,但更新不频繁
- B站:https://space.bilibili.com/423716136,更新也很少
- 详见 [[狄卫华博客文章目录]] 的内容
【主要资料】0voice的个人文章,这个也不错,内容挺多
【主要资料】【redhat官网】使用 BCC 进行网络跟踪
文章
文献 / 二次参考资料
(主要是 “BPF入门系列 - 狄卫华” 的引用资料)
- The BSD Packet Filter: A New Architecture for User-level Packet Capture
- [译] Cilium:BPF 和 XDP 参考指南(2019) Cillum BPF and XDP Reference Guide
- Cloudflare架构以及BPF如何占据世界
- 關於 BPF 和 eBPF 的筆記
- Dive into BPF: a list of reading material 中文
- eBPF 简史
- https://www.youtube.com/watch?v=znBGt7oHJyQ
- BPF Documentation HOWTO interact with BPF subsystem
- Linux 内核 BPF 文档
- Linux Extended BPF (eBPF) Tracing Tools Brendan Gregg
- 性能提升40%: 腾讯 TKE 用 eBPF绕过 conntrack 优化K8s Service
- SDN handbook
- Linux BPF 帮助文档 bpf(2) bpf-helpers(7) tc-bpf(8)
国内大厂 eBPF 实践经验
- eBPF 在网易轻舟云原生的应用实践
- 性能提升40%: 腾讯 TKE 用 eBPF绕过 conntrack 优化K8s Service
- 字节跳动:eBPF 技术实践:高性能 ACL
- 阿里:eBPF Internal:Instructions and Runtime
- 使用 ebpf 深入分析容器网络 dup 包问题
- eBay 云计算“网”事:网络超时篇 eBay云计算“网”事|网络丢包篇
- 字节跳动容器化场景下的性能优化实践
社区 / 论坛 / 群
- 官方推荐的论坛与文档:https://docs.cilium.io/en/stable/bpf/
- 似乎没有群,频道、qq、Telegram Desktop、Discord都没有
- 论坛 / 社区:没有说单独的社区,但在Slack、Stack Overflow、reddit、Wikipedia、eCHO、Newsletter、Contribute 中有相应的子分区
Github
开源项目类:
- iovisor/bpftrace, 用于增强eBPF
- iovisor/gobpf, 用于创建 BPF 程序的 Go 绑定
- iovisor/bcc, BCC - 基于 BPF 的 Linux IO 分析、网络、监控等工具。 (里面提供了非常多的案例demo,可以作为学习参考)
- libbpf/libbpf-bootstrap, 使用 libbpf 和 BPF CO-RE 进行 BPF 应用程序开发的脚手架
- google/nsjail, 轻量级进程隔离工具,利用 Linux 命名空间和 seccomp-bpf 系统调用过滤器(借助 kafel bpf 语言)
资料类:
- https://github.com/DavadDi/bpf_study, 狄卫华的源码资料
- https://github.com/bpftools/linux-observability-with-bpf, 《Linux内核观测技术BPF》的附件内容
- cloudflare/bpftools, 数据包分析工具包
官网提供的学习途径
官网提供的学习途径:书、视频、实验室
- 根据官网给的书录:
- 《What Is eBPF ?》
- 《Systems Performance》
- 《BPF Performance Tools》
- 《Linux Observability with BPF》,这本有精译版**《Linux内核观测技术BPF》**,可pdf
- 《Learning eBPF》
- 实验室 开始会有段和官网文档一样内容的PPT,跳过就好。进去之后(可能需要点时间)会给你两个终端程序来运行
- 视频 略
- “进一步阅读”,详见下面
狄卫华博客文章目录
针对 https://www.ebpf.top/ 博客进行目录编辑(该博客最近更新:230506/230719)
博客有一些与eBPF无关的东西,先在分类里筛剩eBPF。推荐首先查看:【BPF入门系列-2】BPF 学习路径总结
BPF入门系列
- 目录:BPF 、eBPF、应用案例、编写BPF程序、国内大厂eBPF实践经验、参考资料
- 目录:为什么要学习BPF、BPF应该怎么学习、BPF资料汇总
BPF网络篇系列
eBPF概述系列
- 【译】eBPF 概述:第 1 部分:介绍
- 【译】eBPF 概述:第 2 部分:机器和字节码
- 【译】eBPF 概述:第 3 部分:软件开发生态
- 【译】eBPF 概述:第 4 部分:在嵌入式系统运行
- 【译】eBPF 概述:第 5 部分:跟踪用户进程
BPF 攻防系列
其他
一些译文
- [译] BPF 可移植性和 CO-RE(一次编译,到处运行)【转载】
- BPF 二进制文件:BTF,CO-RE 和 BPF 性能工具的未来【译】
- 在 Windows 平台上启用 eBPF【译】
- BCC 到 libbpf 的转换指南【译】
- 【译】神奇的 eBPF
- 【译】聊聊对 BPF 程序至关重要的 vmlinux.h 文件
- 【译】BTFGen: 让 eBPF 程序可移植发布更近一步
- 【译】2023 年 6 个值得关注的 eBPF 趋势
原创
狄卫华博客的学习路径
官网中 “进一步阅读”
文档
- BPF & XDP Reference Guide, Cilium Documentation, Aug 2020 BPF 和 XDP 参考指南,Cilium 文档,2020 年 8 月
- BPF Documentation, BPF Documentation in the Linux Kernel BPF 文档、Linux 内核中的 BPF 文档
- BPF Design Q&A, FAQ for kernel-related eBPF questions BPF 设计问答,内核相关 eBPF 问题的常见问题解答
教程
- Learn eBPF Tracing: Tutorial and Examples, Brendan Gregg's Blog, Jan 2019 学习 eBPF 跟踪:教程和示例,Brendan Gregg 的博客,2019 年 1 月
- XDP Hands-On Tutorials, Various authors, 2019 XDP 实践教程,多位作者,2019 年
- BCC, libbpf and BPF CO-RE Tutorials, Facebook's BPF Blog, 2020 BCC、libbpf 和 BPF CO-RE 教程,Facebook 的 BPF 博客,2020
会谈
Generic 通用的
- eBPF and Kubernetes: Little Helper Minions for Scaling Microservices (Slides), Daniel Borkmann, KubeCon EU, Aug 2020 eBPF 和 Kubernetes:用于扩展微服务的 Little Helper Minions(幻灯片),Daniel Borkmann,KubeCon EU,2020 年 8 月
- eBPF - Rethinking the Linux Kernel (Slides), Thomas Graf, QCon London, April 2020 eBPF - 重新思考 Linux 内核(幻灯片),Thomas Graf,QCon 伦敦,2020 年 4 月
- BPF as a revolutionary technology for the container landscape (Slides), Daniel Borkmann, FOSDEM, Feb 2020 BPF 作为容器领域的革命性技术(幻灯片),Daniel Borkmann,FOSDEM,2020 年 2 月
- BPF at Facebook, Alexei Starovoitov, Performance Summit, Dec 2019 Facebook 的 BPF,Alexei Starovoitov,性能峰会,2019 年 12 月
- BPF: A New Type of Software (Slides), Brendan Gregg, Ubuntu Masters, Oct 2019 BPF:一种新型软件(幻灯片),Brendan Gregg,Ubuntu Masters,2019 年 10 月
- The ubiquity but also the necessity of eBPF as a technology, David S. Miller, Kernel Recipes, Oct 2019 eBPF 作为一项技术的普遍性和必要性,David S. Miller,Kernel Recipes,2019 年 10 月
Deep Dives 深潜
- BPF and Spectre: Mitigating transient execution attacks (Slides) , Daniel Borkmann, eBPF Summit, Aug 2021 BPF 和 Spectre:缓解瞬时执行攻击(幻灯片),Daniel Borkmann,eBPF 峰会,2021 年 8 月
- BPF Internals (Slides), Brendan Gregg, USENIX LISA, Jun 2021 BPF 内部结构(幻灯片),Brendan Gregg,USENIX LISA,2021 年 6 月
Cilium 纤毛
- Advanced BPF Kernel Features for the Container Age (Slides), Daniel Borkmann, FOSDEM, Feb 2021 容器时代的高级 BPF 内核功能(幻灯片),Daniel Borkmann,FOSDEM,2021 年 2 月
- Kubernetes Service Load-Balancing at Scale with BPF & XDP (Slides), Daniel Borkmann & Martynas Pumputis, Linux Plumbers, Aug 2020 使用 BPF 和 XDP 进行大规模 Kubernetes 服务负载平衡(幻灯片),Daniel Borkmann 和 Martynas Pumputis,Linux Plumbers,2020 年 8 月
- Liberating Kubernetes from kube-proxy and iptables (Slides), Martynas Pumputis, KubeCon US 2019 将 Kubernetes 从 kube-proxy 和 iptables 中解放出来(幻灯片),Martynas Pumputis,KubeCon US 2019
- Understanding and Troubleshooting the eBPF Datapath in Cilium ([Slides](https://static.sched.com/hosted_files/kccncna19/20/eBPF and the Cilium Datapath.pdf)), Nathan Sweet, KubeCon US 2019 了解 Cilium 中的 eBPF 数据路径并对其进行故障排除(幻灯片),Nathan Sweet,KubeCon US 2019
- Transparent Chaos Testing with Envoy, Cilium and BPF ([Slides](https://static.sched.com/hosted_files/kccnceu19/54/Chaos Testing with Envoy%2C Cilium and eBPF.pdf)), Thomas Graf, KubeCon EU 2019 使用 Envoy、Cilium 和 BPF 进行透明混沌测试(幻灯片),Thomas Graf,KubeCon EU 2019
- Cilium - Bringing the BPF Revolution to Kubernetes Networking and Security (Slides), Thomas Graf, All Systems Go!, Berlin, Sep 2018 Cilium - 将 BPF 革命带入 Kubernetes 网络和安全(幻灯片),Thomas Graf,All Systems Go!,柏林,2018 年 9 月
- How to Make Linux Microservice-Aware with eBPF (Slides), Thomas Graf, QCon San Francisco, 2018 如何使用 eBPF 实现 Linux 微服务感知(幻灯片),Thomas Graf,QCon 旧金山,2018 年
- Accelerating Envoy with the Linux Kernel, Thomas Graf, KubeCon EU 2018 使用 Linux 内核加速 Envoy,Thomas Graf,KubeCon EU 2018
- Cilium - Network and Application Security with BPF and XDP (Slides), Thomas Graf, DockerCon Austin, Apr 2017 Cilium - 使用 BPF 和 XDP 实现网络和应用程序安全(幻灯片),Thomas Graf,DockerCon 奥斯汀,2017 年 4 月
Hubble 哈勃
- Hubble - eBPF Based Observability for Kubernetes, Sebastian Wicki, KubeCon EU, Aug 2020 Hubble - 基于 eBPF 的 Kubernetes 可观测性,Sebastian Wicki,KubeCon EU,2020 年 8 月
图书
- Learning eBPF, Liz Rice, O'Reilly, 2023 学习 eBPF,Liz Rice,O'Reilly,2023
- Security Observability with eBPF, Natália Réka Ivánkó and Jed Salazar, O'Reilly, 2022 eBPF 的安全可观察性,Natália Réka Ivánkó 和 Jed Salazar,O'Reilly,2022 年
- What is eBPF?, Liz Rice, O'Reilly, 2022 什么是 eBPF?,Liz Rice,O'Reilly,2022
- Systems Performance: Enterprise and the Cloud, 2nd Edition, Brendan Gregg, Addison-Wesley Professional Computing Series, 2020 系统性能:企业和云,第二版,Brendan Gregg,Addison-Wesley 专业计算系列,2020 年
- BPF Performance Tools, Brendan Gregg, Addison-Wesley Professional Computing Series, Dec 2019 BPF 性能工具,Brendan Gregg,Addison-Wesley 专业计算系列,2019 年 12 月
- Linux Observability with BPF, David Calavera, Lorenzo Fontana, O'Reilly, Nov 2019 使用 BPF 进行 Linux 可观察性,David Calavera,Lorenzo Fontana,O'Reilly,2019 年 11 月
文章和博客
- BPF for security - and chaos - in Kubernetes, Sean Kerner, LWN, Jun 2019 BPF 在 Kubernetes 中实现安全和混乱,Sean Kerner,LWN,2019 年 6 月
- Linux Technology for the New Year: eBPF, Joab Jackson, Dec 2018 新年 Linux 技术:eBPF,Joab Jackson,2018 年 12 月
- A thorough introduction to eBPF, Matt Fleming, LWN, Dec 2017 eBPF 全面介绍,Matt Fleming,LWN,2017 年 12 月
- Cilium, BPF and XDP, Google Open Source Blog, Nov 2016 Cilium、BPF 和 XDP,Google 开源博客,2016 年 11 月
- Archive of various articles on BPF, LWN, since Apr 2011 自 2011 年 4 月以来 BPF、LWN 上各种文章的存档
- Various articles on BPF by Cloudflare, Cloudflare, since March 2018 自 2018 年 3 月以来,Cloudflare、Cloudflare 有关 BPF 的各种文章
- Various articles on BPF by Facebook, Facebook, since August 2018 自 2018 年 8 月以来 Facebook、Facebook 在 BPF 上发表的各种文章