ebpf 标签归档

共 44 篇文章 · 返回首页

【零信任安全架构】微分段深度拆解:从 VLAN 到 eBPF 的访问控制演化

微分段是零信任在网络层的核心机制——从传统 VLAN 的广播域隔离,到 Kubernetes NetworkPolicy 的 IP 级别过滤,再到 Cilium 基于身份的 eBPF 执行和 Istio 的 L7 策略。本文拆解四层微分段技术的实现原理、性能差异和适用场景,以及从'全通'到'全白名单'的策略制定流程。

【eBPF 内核实现深度拆解】验证器核心算法:抽象解释、状态跟踪与路径裁剪

深入 verifier 的静态分析引擎——寄存器状态 reg_state 的类型/值域表示、栈状态 stack_state 的初始化标记、explore_state 的 DFS 搜索、states_equal 的等价判定、precision tracking——这是整个系列最难也最核心的一篇。

【eBPF 内核实现深度拆解】libbpf 加载器工程:skeleton、auto-attach、map pinning 与 ring buffer 消费者

深入 libbpf 的加载生命周期:bpf_object__open() 的 ELF 解析、bpf_object__load() 的程序批量加载与 map 创建、map pinning 与跨进程复用、skeleton 自动生成器、SEC() 注解解析、auto-attach 的链路跟踪、ring_buffer__new() 的 mmap 消费者模式。

【eBPF 内核实现深度拆解】CO-RE 重定位引擎:libbpf 的运行时指令修补

从 clang 内置函数 __builtin_preserve_access_index 出发,追踪 BPF_CORE_READ 等宏如何生成 BTF.ext CO-RE 重定位记录,再到 libbpf 加载时 bpf_core_apply_relo() 根据目标内核 BTF 计算正确字段偏移量并修补 BPF 指令——可移植 BPF 的核心引擎。

【eBPF 内核实现深度拆解】BPF 程序调试与测试:verifier log、bpftool、test runner 与内核自测

从 verifier log 的级别控制(log_level 1/2/自选寄存器)出发,覆盖 bpftool prog dump xlated/jited 的反汇编、bpftool map dump 运行时检查、bpftool btf 类型查阅、BPF selftests 结构与编写,以及生产环境下的 BPF 排障方法论。

【eBPF 内核实现深度拆解】蹦床(Trampoline)与 fentry / fexit:零开销内核追踪

fentry/fexit 通过 BPF 蹦床机制在目标函数的 nop 位置直接替换为 call 指令进入 BPF,避免了 kprobe 的 int3 中断开销。本文拆解 bpf_trampoline 内核实现、arch_prepare_bpf_trampoline 的架构相关栈帧构造、struct_ops 与蹦床的协作——以及蹦床在什么条件下开销并不为零。

【eBPF 内核实现深度拆解】BPF 并发模型:spinlock、RCU 与 per-CPU 模式

BPF 程序在内核上下文中并发执行——同一程序可能在多个 CPU 同时运行。本文讲清 BPF 环境下的内存模型(BPF_ATOMIC 指令的语义)、bpf_spin_lock 的实现限制、RCU 保护的 map 读取、per-CPU map 的免锁读写,以及中断上下文与进程上下文的执行语义差异。

【eBPF 内核实现深度拆解】eBPF 安全模型:capabilities、非特权 BPF 与 Spectre 缓解

BPF 程序在内核态执行——安全不只是 verifier 的事。本文讲清 CAP_BPF 与 CAP_SYS_ADMIN 的权限梯度、unprivileged BPF 的历史沿革与现状、Spectre v2 的 bpf_jit_harden 缓解(常数盲化与 retpoline)、Spectre v4 的 speculation_barrier、以及 BPF_LSM 的安全策略可编程性。

【eBPF 内核实现深度拆解】sched_ext 深度:用 BPF 写内核调度器

从 struct sched_ext_ops 的 10+ 回调语义出发,拆解 select_cpu/enqueue/dispatch/tick 等核心回调、scx_bpf_dispatch/scx_bpf_kick_cpu 等 kfunc 的内核实现、ext 调度类与 CFS/EEVDF 的共存策略(SCX_OPS_SWITCH_PARTIAL),以及 scx_layered 和 scx_rustland 的用户态调度器参考实现。

【eBPF 内核实现深度拆解】实战:构建微型 eBPF 可观测 Agent

把 01--17 的知识串成一条实践线——从 libbpf skeleton 写第一个 BPF 程序、加载到内核、用 ring buffer 回传事件、用 CO-RE 实现跨内核版本兼容、map pinning 实现热升级、配上半自动化的 verifier 错误排障流程——构建一个麻雀虽小五脏俱全的 eBPF 可观测 Agent。

【eBPF 内核实现深度拆解】从验证器到 JIT,从 BTF 到调度器

eBPF 内核虚拟机内部实现系统讲解:BPF 指令集与寄存器机器、验证器的抽象解释与状态裁剪、JIT 编译器后端、Map 各类型的并发与内存模型、helper 函数注册与类型检查、BTF 格式规范与 CO-RE 重定位引擎、libbpf 加载器工程、fentry/fexit 蹦床机制、sched_ext 调度器内核接口。面向想读懂 eBPF 内核源码、写生产级 BPF 程序的系统工程师。

【可观测性工程】网络可观测性:Cilium Hubble、Pixie、DeepFlow、Tetragon

从 L3/L4/L7 三层观测视角出发,讲 eBPF socket filter / tc / XDP 数据采集与 Cilium Hubble 流日志、Tetragon 安全可观测、Pixie 协议自动解析、DeepFlow 架构;展开 bpftrace + kfree_skb_reason 的内核丢包定位、TLS 解密、HTTP/2 解析与服务拓扑自动发现。

持续性能分析(Continuous Profiling):Parca、Pyroscope、Grafana Beyla

深入剖析持续性能分析(Continuous Profiling)的原理、架构与落地实践,覆盖 Parca、Pyroscope、Grafana Beyla 三大主流方案,包含 eBPF 采样、符号解析、火焰图、差异分析以及字节跳动、美团的生产案例与工程坑点。

【可观测性工程】持续性能分析(Profiling):pprof、Pyroscope、Parca、async-profiler、JFR

从 CPU/heap/goroutine/lock/off-CPU 等 Profiling 种类出发,比较采样与插桩两类 profiler 的工作原理,深入 Go pprof、Java async-profiler/JFR、Python py-spy、Pyroscope、Parca eBPF Profiling,以及 OpenTelemetry Profiles 的最新进展,给出国内字节美团的真实落地经验与工程坑点。

【可观测性工程】eBPF 可观测性全景:bcc、bpftrace、libbpf 的工程路径

eBPF 如何实现零侵入、内核级、低开销的可观测性:从 kprobe/uprobe/tracepoint/fentry 钩子机制,到 bcc 工具集、bpftrace 脚本语言、libbpf+CO-RE 可移植编程,再到 Pixie、DeepFlow、Grafana Beyla 等商业化工具,结合内核版本兼容性与生产部署实战。

【网络工程】eBPF 可编程网络:从包过滤到流量工程

eBPF 正在重新定义网络工程——从传统的 iptables/netfilter 规则堆砌,到可编程、可观测、高性能的网络数据平面。本文系统讲解 eBPF 网络程序类型(XDP/TC/Socket)、Map 数据结构、Cilium 的 eBPF 数据平面实现,以及 eBPF 在负载均衡、可观测性和网络安全中的工程实践。