IT袋

当前位置:主页 > 经验教程 > 系统教程 >

什么是eBPF技术

什么是eBPF技术 它何以改变Linux?

时间:2023-09-23 12:11:46 来源:IT袋 作者:苏晓敏
导读:什么是eBPF技术,全面的为您讲解什么是eBPF技术方面的介绍,接下来分享详细内容。 eBPF 毫⽆疑问是当下最⽕的技术之⼀。2014 年,eBPF 首次出现在 Linux 内核中。经过社区不断迭代,目前,

什么是eBPF技术

全面的为您讲解什么是eBPF技术方面的介绍,接下来分享详细内容。

eBPF 毫⽆疑问是当下最⽕的技术之⼀。2014 年,eBPF 首次出现在 Linux 内核中。经过社区不断迭代,目前,eBPF 在技术上已经成熟,并在故障诊断、⽹络优化、安全控制、性能监控等领域获得⼤量应⽤,项⽬数量呈爆炸式增⻓。在此前的采访中,有不少受访专家对 InfoQ 表示,eBPF 的发展前景广阔,属于 eBPF 的时代已经来临。

那么,eBPF 技术到底为 Linux 带来了哪些改变?为什么近几年突然爆火?国内外发展和落地情况如何?如何预防和处理 eBPF 带来的安全问题?近期,InfoQ 采访了⻄安邮电⼤学教授、⻰蜥社区 eBPF 技术探索 SIG Owner 陈莉君教授,以期进一步了解 eBPF 技术特性以及应⽤实践。

什么是eBPF技术

从 BPF 到 eBPF 

InfoQ:eBPF 是从 BPF 技术扩展⽽来的,您能简要介绍下它的发展历程吗?

陈莉君教授:最早可以追溯到 1992 年。在 1992 年 USENIX 会议上,论文“The BSD Packet Filter: A New Architecture for User-level Packet Capture”提出了革命性的包过滤机制 BSD Packet Filter(简称为 BPF),这比当时最先进的数据包过滤技术还快 20 倍。这主要得益于 BPF 的两大设计:第一,内核态引入一个新的虚拟机,所有指令都在内核虚拟机中运行;第二,用户态使用 BPF 字节码来定义过滤表达式,然后传递给内核,由内核虚拟机解释执行。

在 Linux 2.1.75 中,首次引入了 BPF 技术。在 Linux 3.0 中,增加了 BPF 即时编译器,它替换掉了原本性能更差的解释器,进一步优化了 BPF 指令运行的效率。

2014 年,Alexei Starovoitov 将 BPF 扩展为一个通用的虚拟机,也就是 eBPF。eBPF 不仅扩展了寄存器的数量,引入了全新的 BPF 映射存储,还在 4.x 内核中将原本单一的数据包过滤事件逐步扩展到了内核态函数、用户态函数、跟踪点、性能事件(perf_events)以及安全控制等。

eBPF 的诞生是 BPF 技术的一个转折点,使得 BPF 不再仅限于网络栈,而是成为内核的一个顶级子系统。

具体来看,eBPF 有以下几个重要特性:

• 性能优化:eBPF 允许在内核空间运行用户空间代码,它可以实现很多低级别的操作,而且执行速度非常快。

• 安全:它可以限制程序执行的内存和 CPU 资源,防止恶意程序占用系统资源或对系统造成危害。

• 功能丰富:支持网络数据包过滤、路由、负载均衡、跟踪、性能分析等,这使得它能够在很多领域得到应用。

• 开源社区的力量:随着 eBPF 功能的不断扩展,开源社区的开发者和用户也在不断增加,这为 eBPF 的发展创造了很多机会。 

相关阅读