如何系统地学习并掌握eBPF技术?
摘要:目录重要网站eBPF大会编程eBPF 汇编ebpf-librarieslibbpf-bootstraplibbpfBCCbpftracebpftimeubpfrbpf技术专题入门man手册编译器KfuncFentryCO-REpahole
目录重要网站eBPF大会编程eBPF 汇编ebpf-librarieslibbpf-bootstraplibbpfBCCbpftracebpftimeubpfrbpf技术专题入门man手册编译器Kfunc/FentryCO-REpaholeTail CallMAPbpftool调试网络XDPCiliumeCapture内核子系统中的eBPF性能优化开销代码分析
重要网站
帮助手册:https://docs.ebpf.io/
bpf man:https://man7.org/linux/man-pages/man2/bpf.2.html
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.
https://blog.csdn.net/qq_17045267
https://github.com/mannkafai/bpf-inside
https://asphaltt.github.io/post/
https://eunomia.dev/tutorials/
eBPF大会
第三届
第二届
第一届
主会场
分会场一
分会场二
分会场三
编程
不同类型的eBPF程序可以调用内核函数
使用bpftool feature probe可以得到,下面是6.5版本内核的系统中输出的结果
bpftool_feature_6_5.xml
eBPF 汇编
LLVM eBPF 汇编编程
eBPF的汇编指令集、如何将字节码反汇编等
BPF Standardization
eBPF Spec
eBPF assembly with LLVM
内核中实现的ebpf汇编器、反汇编器和调试器
tools/bpf/bpf_asm.c
tools/bpf/bpf_jit_disasm.c
tools/bpf/bpf_dbg.c
ebpf-libraries
https://ebpf.io/infrastructure#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文档
简介
API指南
Sec段的介绍:Program Types and ELF Sections
BCC to libbpf conversion guide
HOWTO: BCC to libbpf conversion
BTF:实践指南,以XDP为例
Linux内核中的参考程序
samples/bpf
tools/testing/selftests/bpf
http://arthurchiao.art/blog/cilium-bpf-xdp-reference-guide-zh/#26-内核测试
BCC中的基于libbpf开发的实用工具
bcc/libbpf-tools/
BCC
bcc参考手册
BCC python前端开发
BCC中基于python开发的实用工具:bcc/tools
使能eBPF需要开启的内核配置
eBPF的不同特性分别是在哪个内核版本引入的
bpftrace
MAN手册
https://bpftrace.org/
bpftrace使用案例学习
bpftime
bpftime: 让 eBPF 从内核扩展到用户空间
ubpf
https://github.com/iovisor/ubpf
rbpf
https://github.com/qmonnet/rbpf
技术专题
入门
What is eBPF?
学习eBPF电子书
https://docs.ebpf.io/
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手册
bpf-helpers(7) — Linux manual page
bpf系统调用
perf_event_open
编译器
clang
Getting Started: Building and Running Clang
github:https://github.com/llvm/llvm-project/tree/main/clang/
gcc
BPFBackEnd
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
eBPF: 从 BPF to BPF Calls 到 Tail Calls
The Cost of BPF Tail Calls
MAP
揭秘 BPF map 前生今世
BPF 进阶笔记(三):BPF 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()
网络
eBPF网络程序新手指南
用Linux内核的瑞士军刀-eBPF实现socket转发offload
XDP
XDP (eXpress Data Path):在操作系统内核中实现快速、可编程包处理
实现一个基于XDP_eBPF的学习型网桥
Cilium:BPF 和 XDP 参考指南(2021)
深入理解 Cilium 的 eBPF 收发包路径
Cilium
https://docs.cilium.io/en/stable/
深入理解 Cilium 的 eBPF 收发包路径
https://youtu.be/Kmm8Hl57WDU?si=wpxJnRRD1KY_6ofz
eCapture
https://github.com/gojue/ecapture
使用ebpf 编写C 语言的网络抓包工具,参考开源项目 eCapture
内核子系统中的eBPF
当 BPF 邂逅 CPU 调度器
PATCH
测试程序
性能优化
eBPF 火焰图演示
开销
The pros and cons of eBPF profiling
Building an eBPF-Based Profiler
代码分析
BPF 内核实现详解
Ring Buffer
BPF 环形缓冲区
BPF ring buffer:使用场景、核心设计及程序示例
PATCH
迭代器
BPF 通用迭代器机制
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程序注入到内核中的流程,现在就带你研究(下)
微信公众号
