1、独立于操作系统的eBPF组件架构(eBPFCA)第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安分享人:胡庆伟时间:2024年4月 eBPFCA概述第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安eBPF:eBPF是Linux内核一种革命性的技术,起源于Linux内核,可以在内核中运行沙盒程序。由于内核具有监控和控制整个系统的特权,它通常是实现可观测性、安全性和网络功能的理想场所。第 二 届 e B P F 开 发 者 大 会 eBPFCA概述第 二 届 e B P F 开 发 者 大
2、会 eBPFCA概述eBPF优势:安全、高性能、扩展性应用程序可移植性强、工具链完善eBPF应用:探测、追踪、与内核合作提高效率第 二 届 e B P F 开 发 者 大 会 eBPFCA概述1.探测、可观测行往往在系统成熟后会考虑;2.eBPF的可移植性不只体现在不同Linux版本的适配;3.不同操作系统更方便的支持eBPF独立于操作系统的eBPF组件架构(eBPFCA)第 二 届 e B P F 开 发 者 大 会 eBPFCA概述eBPFCA实现内核中eBPF的通用部分,向上为用户提供类似或相同于eBPF的接口。其中包括eBPF程序load、attach、字节码翻译等操作。为了eBPFC
3、A能够方便的与操作系统结合,eBPFCA将所有依赖操作系统的操作集中在操作系统服务层(OS Server Layer,简称OSL)。第 二 届 e B P F 开 发 者 大 会 eBPFCA概述1.提供基本eBPF服务的操作系统独立层(OS-independent);2.提供eBPFCA与特定操作系统的操作系统服务层(OSL)。操作系统OS-independent eBPFCAOS Services LayereBPFCA eBPFCA分析第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安第 二 届 e B P F 开 发 者 大 会 eB
4、PFCA分析Linux中eBPF的cmd:BPF_MAP_CREATE BPF_MAP_LOOKUP_ELEM BPF_PROG_LOAD BPF_OBJ_GET BPF_PROG_ATTACH.为用户提供与Linux中eBPF相同的使用方法。处理过程与linux现有eBPF的处理过程相同。第 二 届 e B P F 开 发 者 大 会 eBPFCA分析 eBPF的使用和处理过程中大多是和操作系统其他机制无关的。使用方法和处理过程的特点:分析操作系统其他机制有关的部分,仅有附加操作需要与操作系统进行配合。eBPF通用部分(eBPF General)第 二 届 e B P F 开 发 者 大 会
5、 eBPFCA分析1.注册kprobe:获得探测点的地址,将探测点地址处的指令替换为break指令;准备一片可执行的内存,将原指令和一个SS单步调试指令写入;记录探测点地址的下一个指令地址。2.触发break异常:当系统运行到第1步替换的break指令时,会产生一个break异常,随后系统跳转到异常处理程序中进行break异常处理。在break异常处理中,修改异常返回地址为第1步准备的保存有原指令和一个SS单步调试指令的地址处。这样做的目的是为了让原指令得到运行。3.触发SS单步异常:当第2步的break异常处理完成后,由于修改了break异常的返回地址为保存有原指令和一个SS单步调试指令的地
6、址处,所以break异常返回后,跳转到该处运行,执行完原指令后会触发一个SS单步调试指令,在单步调试指令中修改返回地址为探测点的下一条指令地址。SS单步调试异常返回后,就回到了正常的执行流中。kprobe附加操作分析,kprobe主要流程:第 二 届 e B P F 开 发 者 大 会 eBPFCA分析kprobe附加操作分析,kprobe主要流程:ORIregister_kprobe.textBRK#.text.textORISSbreak handleSShandleaddr;symbol_name;opcode;ainsn insn;restore