eBPF技术学习
目录
重要网站
- https://ebpf.io/
- 内核中的BPF文档汇总
- 深入浅出 eBPF
- eBPF学习教程
- ARTHURCHIAO'S BLOG
- https://www.bolipi.com/ebpf/index
- https://github.com/iovisor
- https://github.com/libbpf
- https://github.com/cilium/
- 深入理解 BPF:一个阅读清单
- libbpf API 列表
- bpf doc
- Andrii Nakryiko's Blog
- ebpf-slide
- Collection of Linux eBPF slides/documents.
eBPF大会
编程
- 不同类型的eBPF程序可以调用内核函数
- 使用
bpftool feature probe
可以得到,下面是6.5版本内核的系统中输出的结果
- 使用
eBPF 汇编
- LLVM eBPF 汇编编程
eBPF的汇编指令集、如何将字节码反汇编等 - BPF Standardization
- eBPF Spec
- eBPF assembly with LLVM
- 内核中实现的ebpf汇编器、反汇编器和调试器
ebpf-libraries
libbpf-bootstrap
- https://github.com/libbpf/libbpf-bootstrap
- libbpf-bootstrap 基础
- 一文搞懂如何从头开发一个Hello World级eBPF程序
- 使用libbpf-bootstrap构建第一个libbpf+BPF CO-RE程序
- libbpf-bootstrap Makefile阅读
- BPF编程-使用libbpf-bootstrap构建BPF应用程序【译】
- Building BPF applications with libbpf-bootstrap
libbpf
- 内核中的libbpf文档
- BCC to libbpf conversion guide
- HOWTO: BCC to libbpf conversion
- BTF:实践指南,以XDP为例
- Linux内核中的参考程序
- samples/bpf
- tools/testing/selftests/bpf
- BCC中的基于libbpf开发的实用工具
BCC
- bcc参考手册
- BCC python前端开发
- BCC中基于python开发的实用工具:bcc/tools
- 使能eBPF需要开启的内核配置
- eBPF的不同特性分别是在哪个内核版本引入的
bpftrace
bpftime
ubpf
rbpf
技术专题
入门
- What is eBPF?
- eBPF 工作原理浅析
- eBPF 概述
- eBPF 技术简介
- Linux超能力BPF技术介绍及学习分享
- linux-bpf-learning
- BPF Documentation
- Cilium:BPF 和 XDP 参考指南(2021)
- BPF and XDP Reference Guide
- Cilium:BPF和XDP参考指南
- 高效入门eBPF
- Linux Tracing System浅析 & eBPF开发经验分享
- Linux 核心設計: 透過 eBPF 觀察作業系統行為
- 内核之旅文档
- Lifetime of BPF objects
- 深入理解 Linux eBPF:一个完整阅读清单(转载)
- eBPF application development: Beyond the basics
man手册
编译器
- clang
- gcc
Kfunc/Fentry
- fentry/fexit (aka kfunc/kretfunc) BPF trampoline support
- libbpf-bootstrap中fentry的示例程序
- BPF Kernel Functions (kfuncs)
CO-RE
- BPF 可移植性和 CO-RE(一次编译,到处运行)
- BPF CO-RE reference guide
- BPF的可移植性和CO-RE (Compile Once – Run Everywhere)
- BPF CO-RE (Compile Once – Run Everywhere)
- BPF Type Format (BTF)
- BPF BTF 详解
- btfgen-internals
- BTF deduplication and Linux kernel BTF
- BPF BTF 详细介绍
- eBPF BTF GENERATOR: The road to truly portable CO-RE eBPF programs
pahole
- Tools that generate BTF information
- http://arthurchiao.art/blog/cilium-bpf-xdp-reference-guide-zh/#24-bpftool
- pahole安装及使用
- https://github.com/aquasecurity/btfhub/blob/main/docs/how-to-use-pahole.md
- pahole(1) - Linux man page
- https://wiki.bwhpc.de/e/Pahole
- https://git.kernel.org/pub/scm/devel/pahole/pahole.git
- https://git.kernel.org/pub/scm/devel/pahole/pahole.git/tree/README.btf
- https://github.com/acmel/dwarves
- https://git.kernel.org/pub/scm/devel/pahole/pahole.git/
Tail Call
MAP
bpftool
- 上手 bpftool
- eBPF中bpftool的常见用法
- Features of bpftool: the thread of tips and examples to work with eBPF objects
调试
- BPF drgn tools
- BPF 进阶笔记(四):调试 BPF 程序
- BPF tips & tricks: the guide to bpf_trace_printk() and bpf_printk()
网络
XDP
- XDP (eXpress Data Path):在操作系统内核中实现快速、可编程包处理
- 实现一个基于XDP_eBPF的学习型网桥
- Cilium:BPF 和 XDP 参考指南(2021)
- 深入理解 Cilium 的 eBPF 收发包路径
Cilium
eCapture
内核子系统中的eBPF
性能优化
开销
代码分析
- BPF 内核实现详解
- Ring Buffer
- 迭代器
- Linux Bpf+Bcc (目录)
- How eBPF program connects with tracepoint
- Linux bpf 1.1、BPF内核实现
- eBPF内核实现之TRACING
- Linux eBPF内核源码sample/bpf全网最细解析(一)
- BPF 进阶笔记(一):BPF 程序(BPF Prog)类型详解:使用场景、函数签名、执行位置及程序示例
- BPF 进阶笔记(二):BPF Map 类型详解:使用场景、程序示例
- BPF 进阶笔记(三):BPF Map 内核实现
- eBPF程序注入到内核中的流程,现在就带你研究(上)
- eBPF程序注入到内核中的流程,现在就带你研究(下)
本文来自博客园,作者:摩斯电码,未经同意,禁止转载