文章

eBPF 知识总览

eBPF 知识总览(应用型)

一句话定位

eBPF(extended Berkeley Packet Filter)是 Linux 内核提供的沙箱化字节码执行机制——无需改内核源码、无需加载内核模块,就能在特权上下文(系统调用、网络栈、调度器)里安全地运行用户编写的小程序。

eBPF 是现代云原生基础设施的”统一原语”。本 vault 里 Cilium 的零开销数据面、cgroup v2 移除的 net_cls/devices 控制器、网络调优里 iptables/conntrack 的替代方案,底层全是它。

为什么值得学(结合你的 vault)

你的笔记eBPF 的关系
../cgroup v2 详解v2 把 net_cls/devices 控制器踢给 eBPF
../网络内核参数调优Cilium KPR(eBPF)替代 iptables/conntrack,降连接表压力
../Linux 内核调优总览eBPF 是内核可观测性与策略执行的统一手段
../../k8s/特性详解/CNI 网络插件对比与排障Cilium 完全基于 eBPF 数据面
../../k8s/特性详解/nftables kube-proxy 详解Calico eBPF / Cilium KPR 替代 iptables kube-proxy
../../k8s/特性详解/K8s 安全加固实战CiliumNetworkPolicy L7 策略基于 eBPF

学习路线(本目录覆盖应用型第 1 档)

graph LR
    A[核心机制与安全] --> B[性能模型]
    A --> C[工具链实战]
    C --> D[与 Cilium K8s 实战]
    C --> E[排障实战]
    D --> E
  • 第 1 档(应用型,本目录):看懂角色、会用 Cilium/bpftrace/bpftool 排障、理解 KPR 减负原理。目标读者就是你。
  • 第 2 档(开发型):自己写 C 的 BPF 程序、libbpf 引导、CO-RE、XDP 自建 DDoS 防护——按需再学,不在本目录。

核心概念速查

概念一句话
Verifier加载前静态校验字节码,拒绝越界/无限循环,保证”要么拒绝要么安全”
JIT校验后编译成本地机器码,性能接近原生 C
BPF Map内核态↔用户态唯一数据通道(KV 存储),程序本身无状态
Hook 点kprobe/tracepoint/XDP/TC/cgroup/socket/LSM,程序挂载处
XDP网卡驱动最早收包点,可做 LB/丢包/过滤,不过协议栈
TC网络栈 ingress/egress,容器网络策略主战场
socket LB在 socket 层做 DNAT 重定向,Cilium KPR 核心
KPRkube-proxy replacement,eBPF 替代 iptables 做 Service 转发
HubbleCilium 基于 eBPF 的可观测性组件
bpftool内核自带,审计已加载的 eBPF 程序/map/挂载
bpftrace一行式 tracing 语言,排障神器

本目录笔记地图

07-Knowledge/linux/ebpf/
├── eBPF 知识总览.md          ← 你在这里(MOC 索引)
├── eBPF 核心机制与安全.md     原理:verifier/JIT/Map/Hook 点全景
├── eBPF 性能模型.md           为什么快 / 与传统方案对比
├── eBPF 工具链实战.md         bpftool + bpftrace 脚本库 + BCC
├── eBPF 与 Cilium K8s 实战.md  Cilium 数据面 / KPR / NetworkPolicy / Hubble
└── eBPF 排障实战.md           审计流程 / Walkthrough / 生产反模式

工具链总览

工具角色应用型用法
bpftool内核自带多功能 CLI审计程序/map/挂载
bpftrace一行式 tracing临时排障脚本
Cilium / cilium-cliCNI,eBPF 数据面cilium status/bpf lb list
BCCPython 封装 eBPF 工具集execsnoop/biosnoop/tcplife
libbpfC 生产级加载框架开发型才用

参考资源

学习时间

阶段时间备注
拆分重构2026-07-16单篇(350行)拆分为 6 篇,每篇加深