您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[龙蜥社区&浪潮信息]:龙蜥社区&浪潮信息:2024年eBPF技术实践白皮书(第二版) - 发现报告

龙蜥社区&浪潮信息:2024年eBPF技术实践白皮书(第二版)

AI智能总结
查看更多
龙蜥社区&浪潮信息:2024年eBPF技术实践白皮书(第二版)

编写说明 编写单位:浪潮电子信息产业股份有限公司、济南浪潮数据技术有限公司、阿里云计算有限公司、东南大学 参编组织:龙蜥社区 贡献专家: 苏志远浪潮电子信息产业股份有限公司吴栋济南浪潮数据技术有限公司方浩济南浪潮数据技术有限公司甄鹏浪潮电子信息产业股份有限公司王传国浪潮电子信息产业股份有限公司梁媛浪潮电子信息产业股份有限公司黄吉旺济南浪潮数据技术有限公司彭彬彬济南浪潮数据技术有限公司毛文安阿里云计算有限公司程书意阿里云计算有限公司廖肇燕阿里云计算有限公司李光水阿里云计算有限公司 冯富秋阿里云计算有限公司卢烈阿里云计算有限公司沈典东南大学杨彬东南大学 前言 eBPF的诞生是BPF技术的一个转折点,使得BPF不再仅限于网络栈,而是成为内核的一个顶级子系统。在内核发展的同时,eBPF繁荣的生态也进一步促进了eBPF技术的蓬勃发展。随着内核的复杂性不断增加,eBPF以安全、稳定、零侵入、方便的内核可编程性等特点成为实现内核定制与功能多样性的最佳选择,为内核提供了应对未来挑战的基础。 本白皮书重点介绍eBPF技术的概念、技术实践以及发展趋势。本书首先梳理了eBPF的架构和重要技术原理,然后分析了eBPF在多种典型应用场景的使用方案,并进一步对eBPF技术的发展趋势做了探讨。 目录 eBPF技术介绍.........................................................................................................9 2.1eBPF架构......................................................................................................9 2.1.1eBPF加载过程................................................................................10 2.1.2JIT编译.............................................................................................11 2.1.3挂载与执行......................................................................................12 2.2eBPF常见的开发框架................................................................................19 2.2.1BCC...................................................................................................19 2.2.2bpfTrace..........................................................................................20 2.2.3libbpf................................................................................................20 2.2.4libbpf-bootstrap...........................................................................21 2.2.6Coolbpf............................................................................................21 基于eBPF的技术创新与应用实践......................................................................25 3.1基于eBPF的系统诊断...............................................................................25 3.1.1系统诊断面临挑战..........................................................................25 3.1.2基于eBPF的系统诊断方案...........................................................303.1.3基于eBPF的Profiling..................................................................36 3.2基于eBPF的虚拟化IO全链路时延监测................................................44 3.2.1虚拟化IO全路径分析主要面临的挑战........................................443.2.2基于bpftrace虚拟化IO路径追踪解决方案..............................45 3.3基于eBPF的TCP监控.........................................................................50 3.3.1TCP监控面临的挑战.......................................................................503.3.2基于eBPF的TCP监控方案.........................................................52 3.4基于eBPF的网络性能优化.......................................................................55 3.4.1Linux网络性能优化面临的挑战....................................................553.4.2基于eBPF的Linux内核网络性能优化解决方案.......................58 3.5基于eBPF的流量镜像...............................................................................67 3.5.1传统流量镜像面临的挑战..............................................................67 3.5.2基于eBPF的流量镜像解决方案...................................................67 3.5.3应用实践..........................................................................................69 3.6网络访问控制..............................................................................................70 3.6.1传统网络访问控制面临的挑战......................................................70 3.6.2基于eBPF的网络访问控制解决方案...........................................71 3.6.3应用实践..........................................................................................72 3.7优化基于eBPF的软件网络功能...............................................................73 3.7.1基于eBPF实现网络功能的优势...................................................733.7.2eBPF实现网络功能面临的技术挑战............................................743.7.3基于标准库的优化eBPF网络功能技术方案...............................76 3.8基于eBPF的安全实践...............................................................................83 3.8.1传统解决方案面临挑战..................................................................83 3.8.2基于eBPF的新一代安全解决方案...............................................84 挑战与展望.............................................................................................................98 eBPF简介 eBPF是一项起源于Linux内核的革命性技术,可以在特权上下文中(如操作系统内核)运行沙盒程序。它可以安全有效地扩展内核的功能,并且不需要更改内核源代码或加载内核模块。 内核因具有监督和控制整个系统的特权,一直是实现可观察性、安全性和网络功能的理想场所。同时,由于对稳定性和安全性的高要求,内核发展相对缓慢,与内核之外实现的功能相比,创新速度较慢。 eBPF从根本上改变了上述情况,它允许在内核中运行沙箱程序,即通过运行eBPF程序向正在运行中的操作系统添加额外的功能,并通过验证引擎和即时编译器保证安全性和执行效率,由此衍生出了一系列的产品和项目,涉及下一代网络、可观察性和安全技术。 如今,eBPF在多种应用场景中起到重要作用:在现代数据中心和云原生环境中提供高性能网络和负载均衡,以低开销提取细粒度的安全可观察性数据,帮助应用程序开发人员跟踪应用程序的运行状态,高效进行性能故障定位,保证应用程序和容器运行时安全等。 eBPF引领的创新才刚刚开始,一切皆有可能。 eBPF技术介绍 2.1eBPF架构 eBPF包括用户空间程序和内核程序两部分,用户空间程序负责加载BPF字节码至内核,内核中的BPF程序负责在内核中执行特定事件,用户空间程序与内核BPF程序可以使用map结构实现双向通信,这为内核中运行的BPF程序提供了更加灵活的控制。eBPF的工作逻辑如下: 1、eBPF Program通过LLVM/Clang编译成eBPF定义的字节码; 2、通过系统调用bpf()将字节码指令传入内核中; 3、由Verifier检验字节码的安全性、合规性; 4、在确认字节码程序的安全性后,JITCompiler会将其转换成可以在当前系统运行的机器码; 5、根据程序类型的不同,把可运行机器码挂载到内核不同的位置/H