Skip to Content
学习 eBPF
book

学习 eBPF

by Liz Rice
May 2025
Beginner to intermediate
236 pages
2h 52m
Chinese
O'Reilly Media, Inc.
Content preview from 学习 eBPF

第 1 章. 什么是 eBPF,为什么它很重要?

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

eBPF 是一种革命性的内核技术,它允许开发人员编写可动态加载到内核中的自定义代码,从而改变内核的运行方式。(如果你对内核还不太了解,也不用担心,本章很快就会讲到)。

这使得新一代高性能网络、可观察性和安全工具成为可能。正如你将看到的那样,如果你想用这些基于 eBPF 的工具对应用程序进行检测,你不需要以任何方式修改或重新配置应用程序,这要归功于 eBPF 在内核中的有利位置。

使用 eBPF 可以做的事情包括

  • 对系统的几乎所有方面进行性能跟踪

  • 高性能网络,内置可视性

  • 检测和(有选择地)预防恶意活动

让我们从伯克利数据包过滤器开始,简要回顾一下 eBPF 的历史。

eBPF 的根源:伯克利数据包过滤器

我们今天所说的 "eBPF "起源于 BSD 包过滤器。1劳伦斯伯克利国家实验室的Steven McCanne 和 Van Jacobson 撰写的一篇论文中首次描述。这篇论文讨论了一种可以运行过滤器的伪机器,过滤器是为决定接受还是拒绝网络数据包而编写的程序。这些程序是用 BPF 指令集编写的,BPF 指令集是一套 32 位指令的通用指令集,与汇编语言非常相似。下面是直接摘自该论文的一个例子:

ldh     [12] 
jeq     #ETHERTYPE IP, L1, L2 
L1:     ret     #TRUE 
L2:     ret     #0

这一小段代码可以过滤掉不是互联网协议(IP)数据包的数据包。该过滤器的输入是一个以太网数据包,第一条指令 (ldh) 从数据包的第 12 字节开始加载一个 2 字节的值。在下一条指令 (jeq) 中,该值与代表 IP 数据包的值进行比较。如果匹配,执行将跳转到标有L1 的指令,并通过返回一个非零值(此处标识为#TRUE )来接受数据包。如果不匹配,则该数据包不是 IP 数据包,并通过返回0 而被拒绝。

你可以想象(或者参阅论文中的例子)更复杂的过滤程序,根据数据包的其他方面做出决定。重要的是,过滤器的作者可以编写自己的定制程序在内核中执行,这就是 eBPF 的核心功能。

BPF 是 "Berkeley Packet Filter(伯克利数据包过滤器)"的缩写,于 1997 年首次引入 Linux,内核版本为 2.1.75、2它被用在 tcpdump 工具中,作为捕获要追踪的数据包的有效方法。

转眼到了 2012 年,内核 3.5 版本引入了 seccomp-bpf。这使得 BPF 程序可以决定是否允许或拒绝用户空间应用程序进行系统调用。我们将在第 10 章对此进行更详细的探讨。这是 BPF 从狭义的数据包过滤发展到今天的通用平台的第一步。从这时起,BPF 名称中的 "包过滤 "一词开始变得毫无意义!

从 BPF 到 eBPF

从 2014 年内核 3.18 版开始,BPF 演进为我们所说的 "扩展 BPF "或 "eBPF"。这涉及几个重大变化:

  • BPF 指令集经过全面修改,在 64 位机器上效率更高,解释器也完全重写。

  • eBPF映射是一种数据结构,BPF 程序和用户空间应用程序都可以访问它,从而在它们之间共享信息。你将在第 2 章了解映射。

  • bpf() 系统调用是为了让用户空间程序与内核中的 eBPF 程序交互而添加的。你将在第 4 章中了解到该系统调用。

  • 新增了几个 BPF 辅助函数。您将在第 2 章看到一些示例,在第 6 章看到更多细节。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

LangChain在生命科学与医疗健康领域的应用

LangChain在生命科学与医疗健康领域的应用

Ivan Reznikov
机器学习面试

机器学习面试

Susan Shu Chang
深入淺出代數

深入淺出代數

Tracey Pilone, Dan Pilone
低代码AI

低代码AI

Gwendolyn Stripling, Michael Abel

Publisher Resources

ISBN: 9798341657823