今,吾所构 Kubernetes 集群之一工作节点,140 eBPF 程序运行于 Linux 内核之中 — 路由每包数据,控制设备之访问,采集指标。无人重编译内核。无人载入模块.
此言即吾撰 eBPF 从头学起 之全由:一自由系列,凡二十二章,引君入门。"何谓eBPF虚拟机"乃至自撰自载eBPF之程式"——以C言配libbpf与CO-RE,或以Go言配cilium/ebpf.
👉 无费得读(英文): https://kkloudtarus.net/en/blog/series/ebpf-from-scratch
💻 源码: https://github.com/nghiadaulau/ebpf-from-scratch
何以为异
- 凡物皆试于实器 — Kubernetes之群,运核六十七与Cilium一十九(无kube-proxy,BPF之程数百存焉)为吾之研所。无虚绘之图;吾剖其实运之程。
- 本诸官书 — ebpf.io,kernel.org,libbpf,cilium。证言核实,非感而发。
- 深究,非浅尝。 — 我们探至寄存器,验证者之安全证明,JIT,映射,及程序历经之确切生命周期。
- 亦全为双语(英语加越南语)。
速尝之味 — 每一eBPF之概念,皆可察之。于实节点:
sudo bpftool prog show id 2871
2871: sched_cls name tail_no_service_ipv4 tag fe7bcb57c001d434 gpl
xlated 4920B jited 2778B memlock 8192B map_ids 171,631
btf_id 758
xlated者,验者允之後之码也。jited者,土機之码也。map_ids者,其存状之法也。此乃eBPF,非幻灯——运行中耳。
君将学(七部,廿二章)
卷一—基礎
- 虛擬機:寄存器、指令集與機碼
- 驗證者:為何eBPF不致崩潰核心
- 映射:記憶與通往使用者空間之橋
- 程序類型與鉤子:所附之處、所見之境
- BTF與CO-RE:一編多用,遍行各核心
卷二—追蹤
- 由单行指令至映射、计数与直方图
- uprobe、USDT,及自主机检视容器
第三部——撰实器
- libbpf + CO-RE:自撰eBPF器(C)
- cilium/ebpf:自Go载入eBPF
第四部——网络
- XDP:于最早节点处理数据包——撰防火墙
- tc/sched_cls 並剖析活絡之 Cilium 資料路徑
- 親撰 tc 程式:
__sk_buff並及 tcx 鏈
第五部 — 安全校驗
- LSM BPF:於核心內執行安全權限
- seccomp-bpf:過濾每個容器之系統呼叫
- 四邊形之道:由觀察至執行,藉
bpf_send_signal
第六部 — 可觀察性
- 以 perf_event 进行 CPU 分析(火焰图之基石)
- CPU 之外与调度延迟
- 探 Hubble 之堂:自 eBPF 事件至全域网络流
第七章 — 总合之术
- 案例研究:一包经由 Cilium eBPF 数据路径之数据
- 终章:撰
connmon,一节点 TCP 连接之监察器
为谁而设
后端/平台/SRE/安全之辈,常闻"cilium以eBPF为之"而欲实解——且为之。汝当娴熟于Linux之命令行;其他皆自零起建。
若君得读一二,吾诚愿闻其评——何者明晰,何者不明。倘有益焉,则于其上标一⭐。代码仓库甚助之。
自此始→ https://kkloudtarus.net/en/blog/series/ebpf-from-scratch












