一、bpf架构
如上图所示,bpf由六部分构成,以下为其在bpf中的作用:
bpf工具:该部分涉及bpf用户态程序、bpf的编译工具,通过bpf编译工具如Clang、LLVM将bpf用户态程序编译成bpf字节码;
加载器:可以简单理解为bpf系统调用,将bpf字节码加载到内核;
验证器:对bpf程序的合法性进行检查;
bpf虚拟机:实现将bpf字节码转化成机器码并运行,使用内核解释器的话需要根据字节码执行对应的机器码,使用JIT可以直接将字节码编码生成机器码;
静态跟踪:为内核为bpf程序提供的事件跟踪点,在bpf程序中需要指明触发bpf程序运行的内核事件,bpf程序只能基于内核提供的事件跟踪点进行bpf程序的编写,如:
#incl