SuperAPI AI 工具集

ebpf

部署与运维

查看项目

更新于 10-16 06:49

技能介绍

用途:指导编写、加载和调试 eBPF 程序,覆盖内核追踪、网络数据包处理与跨内核版本可移植性。

主要能力:

  • 工具选择:一次性内核追踪用 bpftrace;带用户态的生产程序用 libbpf(C)或 aya(Rust);查看已加载程序与 map 用 bpftool;高性能包处理用 XDP + libbpf。
  • bpftrace 快速追踪,例如:bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s %s\n", comm, str(args->filename)); }';可用 bpftrace -l 'tracepoint:syscalls:*' 列出可用探针。
  • libbpf 骨架流程:内核侧 .bpf.c 定义 map 与 SEC 程序,用户态用 counter_bpf__open/load/attach/destroy。构建命令:clang -g -O2 -target bpf -D__TARGET_ARCH_x86 -I/usr/include/bpf -c counter.bpf.c -o counter.bpf.o;bpftool gen skeleton counter.bpf.o > counter.skel.h;gcc -o counter counter.c -lbpf -lelf -lz。
  • map 类型:HASH、ARRAY、PERCPU_HASH、RINGBUF、PERF_EVENT_ARRAY、LRU_HASH、PROG_ARRAY、XSKMAP。新代码建议用 RINGBUF 替代 PERF_EVENT_ARRAY。
  • 验证器报错排查:如 invalid mem access、R0 !read_ok、back-edge detected 等,可用 bpftool prog load 查看详细日志,bpftool prog list / dump xlated 检查程序。
  • XDP:SEC("xdp") 程序返回 XDP_PASS/DROP/TX/REDIRECT;挂载 ip link set dev eth0 xdp obj xdp_drop_icmp.bpf.o sec xdp,卸载 ip link set dev eth0 xdp off,native 模式加 mode native。
  • CO-RE:用 vmlinux.h 与 BPF_CORE_READ 在加载时重定位字段偏移;bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h。
  • 还涉及 ring buffer 与 perf buffer 对比、BPF 迭代器、BPF 原子操作。

适用场景:系统调用追踪、内核事件观测、进程/连接统计、XDP 包过滤与高性能网络处理。

限制:部分特性依赖内核版本(如 bpf_loop 需 ≥5.17,原子操作需 ≥5.12);需 BTF 支持;具体平台与收费信息暂未提供。