1、首届中国首届中国eBPFeBPF研讨会研讨会Coolbpf 在各内核版本的应用实践毛文安 龙蜥社区 eBPF技术探索 SIG Maintainer龙蜥社区 系统运维 SIG Owner酷玩BPF首届中国首届中国eBPFeBPF研讨会研讨会Coolbpf 原理01酷玩BPF背景背景首届中国首届中国eBPFeBPF研讨会研讨会01我们有大量的3.10内核难!还得安装依赖库烦!每次启动都得编译,CPU/内存消耗伤!需要包含kernel-devel 头文件累!酷玩BPFBPF开发常用方案对比原生libbpf,无CO-RE(内核samples/bpf示例)优势:资源占用量低缺点:1、需要搭建代码工程、开
2、发效率低;2、不同内核版本兼容性差;BCC(bpf compile collection)优势:开发效率高,可移植性好,支持动态修改内核部分代码缺点:1、部署依赖的Clang/LLVM;2、每次运行都要执行Clang/LLVM编译,争抢内存CPU内存等资源;3、依赖目标环境头文件;BPF CO-RE(自己编写的bpf_core_read代码)优势:不依赖在环境中部署Clang/LLVM,资源占用少缺点:1、仍需要搭建编译编译工程;2、部分代码相对固定,无法动态配置;3、用户态开发支持信息较少,缺乏高级语言对接;酷玩BPF上述方案,不能很好适配生产环境中,多内核并存、快速批量部署等需求Coolb
3、pfCoolbpf 设计与实现设计与实现首届中国首届中国eBPFeBPF研讨会研讨会02酷玩BPF当前特点:1.一次编译,到处使用;一键安装,快速开发2.低版本内核支持3.BTF下载和高级语言封装既定计划既定计划首届中国首届中国eBPFeBPF研讨会研讨会03酷玩BPF未来主要功能点:1.基础框架,效率提升2.优秀工具,诊断和跟踪3.特性开发,内核功能eBPF化。重点关注:1.Verifier智能定位2.轻量编译器3.eBPF LSM4.Perf增强远程编译原理远程编译原理首届中国首届中国eBPFeBPF研讨会研讨会03酷玩BPFCoolbpf一站式eBPF开发编译平台主要功能点:1、标准化b
4、pf编译服务,具备弹性能力2、服务已支持2000+公开发行版内核3、输出的so支持CORE,结合BTF可以做到处处运行;4、客户端Coolbpf中间层提供便捷化的libbpf支持api,加速内核数据流处理酷玩BPF低版本内核实现低版本内核实现首届中国首届中国eBPFeBPF研讨会研讨会04酷玩BPF背景和框架1.目前基于eBPF编写的程序只能在高版本内核(支持eBPF的内核)上运行,无法在不支持eBPF功能的内核上运行;2.线上有很多Alios或者centos低版本内核需要维护3.存量BPF工具或项目代码,希望不做修改能跨内核运行为此我们提出了一种在低版本内核运行eBPF程序的方法,使得二进制
5、程序无需任何修改即可在不支持eBPF功能的内核版本上运行酷玩BPFeBPF驱动1.map、helper、verifier 和 jit 和原生的 eBPF 保持一致2.prog:eBPF 驱动中 prog 的 attach 和原生的 eBPF 略有差异lkprobe:perf 框架-kprobe 框架ltracepoint:perf 框架-tracepoint 框架lperf event:均基于 perf 框架酷玩BPF全量内核版本运行全量内核版本运行首届中国首届中国eBPFeBPF研讨会研讨会05酷玩BPF总结低版本内核:从无到有移植eBPF功能中版本内核:4.x 使能vmlinux-btf和
6、libbpf CO-RE,高级eBPF特性移植高版本内核:5.x 可配置的btf路径,自动化CO-RE代码生成框架,容器化编译环境,本地和远程编译注:典型内核版本:3.10/4.19/5.10酷玩BPF首届中国首届中国eBPFeBPF研讨会研讨会Coolbpf的应用02酷玩BPF基于基于eBPFeBPF的网络的网络抖动三剑客抖动三剑客首届中国首届中国eBPFeBPF研讨会研讨会01酷玩BPF认识网络抖动主机内部可能产生延迟的几个阶段:中断/软中断处理,唤醒进程/调度,qdisc排队等酷玩BPF业务抖动网络抖动的界定current抖动解决方案rtrace当