新增六大功能解析!eBPF 技术实践白皮书第二版正式发布(附下载链接)

125 阅读4分钟

自去年龙蜥社区发布 eBPF 技术实践白皮书以来,得到了广大读者的高度评价。这一年,eBPF 技术发展也取得了重要进展,不管是 Linux 内核社区关于 eBPF 调度器的讨论,还是 Elastic 发布其多语言 Continues Profiling 的统一方案,eBPF 的应用也越来越广泛了。龙蜥社区也根据这一年的实际 eBPF 项目开发经验进行了总结,历经数月完成了白皮书第二版的整理工作,并于 2024 云栖大会操作系统开源专场发布了 《eBPF 技术实践白皮书(第二版)》 ,该白皮书梳理了 eBPF 的架构和重要技术原理,接着分析了 eBPF 在多种典型应用场景的使用方案,并进一步对 eBPF 技术的发展趋势做了探讨。

图片

eBPF 技术实践白皮书是由龙蜥社区组织编写,阿里云、浪潮信息、浪潮数据、东南大学等多位老师、专家共同参与贡献的。2023 年发布的《eBPF 技术实践白皮书》内容主要包括 eBPF 指令架构和开发流程、基于 eBPF 的系统诊断实践、IO 和网络的性能优化等内容。本次云栖大会发布的第二版,新增了六大内容,包括基于 eBPF 的软件网络功能库、TCP 网络监控、持续剖析(Continues Profiling)能力,以及容器安全、网络流量镜像、网络访问控制。下面我们来分别介绍一下这六大功能:

  • 软件网络功能库是基于 eBPF 的 kfunc 和 kptr 技术实现的,通过抽象并实现性能受限的/无法实现的公共功能到 eNetSTL 中,实现在不修改 eBPF 基础架构(例如指令集)的前提下,对常见的交换机、路由器、负载均衡、防火墙等功能通过 eBPF 的接口调用进行加速。目前从无到有实现了基于跳表的 K-V 存储功能,在 sketch 和 switch 场景下使用 SIMD 加速,使得性能提升从 27.4% 到 47.9% 不等。

图片

  • TCP 网络监控功能,传统的做法一般是通过系统工具获取网络接口流量、连接状态信息,无法分析一个链接的请求与响应过程及传输时间。TCP-RT 通过在内核 TCP 协议栈中相应的位置设置 eBPF 的 hook 点,可以在单个连接上只有一个并发请求与响应的场景下识别出请求与响应,例如:HTTP/1.1 协议的 Web服务、MySQL 数据库服务、Redis 服务等,进而获取请求在协议栈中接收的时间及服务进程处理过程中的耗时等数据信息。TCP-RT 还支持在内核系统中做统计分析,定期输出指定连接的统计信息。

图片

  • Continues Profiling 持续剖析是近几年云原生可观测性很重要的技术,通过 eBPF 技术能做到持续的非侵入方式进行数据的采集,支持对 Java、python、Luajit 等高级语言进行符号解析,也支持对 C、C++、Golang、Rust 等 Native 语言的应用进行推栈,由于它可以动态进行安装和卸载程序,持续对当前运行的 CPU 热点进行采样分析,不需要重启进程或事先编译埋点,相比传统的 APM 插桩方式带来显著的易用性、安全性,因此它极有可能成为继可观测性的 Trace、Log、Metric 之后的第四大支柱。持续剖析功能基于eBPF 可以分析用户态和内核态的栈,对不同语言的应用统一采用一套架构进行采样和分析,通过火焰图、调用图表的方式进行热点的展现。

图片

  • 基于 eBPF 的容器安全技术聚焦于容器运行时安全检测与防御。将 eBPF 程序挂载至宿主机内核,监控所有容器进程、文件、网络行为,结合容器入侵、逃逸等恶意行为特征,识别并拦截异常操作。

图片

  • 基于 eBPF 实现流量镜像,在内核态实现原始数据的复制并转发至指定网卡实现实时流量安全审计、风险检测、业务分析等,相较于传统实现方式具有成本更低、灵活性高、安全性高等优势。

图片

  • 基于 eBPF 实现网络访问控制,在 XDP 和 TC 挂载点加载特定程序,使访问控制规则在整个网络链路中比较靠前的位置生效,缩短了网络包处理路径,整体性能可提升 20% 以上。

图片

欢迎大家加入钉钉交流群,与我们沟通交流:

白皮书下载链接openanolis.cn/assets/stat…

—— 完 ——