eBPF 核心技术与实战
倪朋飞
资深 Linux 专家,Kubernetes 项目维护者
10452 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 26 讲/共 37 讲
eBPF 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

01|技术概览:eBPF的发展历程及工作原理

你好,我是倪朋飞。
在正式介绍 eBPF 的使用方法和具体应用之前,我会用两讲的内容,带你了解 eBPF 的技术脉络和学习路线,为你后面的学习做好准备。
在开篇词里,我带你一起了解了这门课的设计思路和主要内容,也简单介绍了 eBPF 的主要应用场景,包括故障诊断、网络优化、安全控制、性能监控等。那你可能就要问了:为什么 eBPF 可以应用到这么广泛的领域呢?
eBPF 广泛的应用场景和强大的功能,跟它的发展历程、基本原理密切相关。那么,eBPF 的发展历程是什么样的?它又是如何在确保安全的前提下,允许非内核开发者去扩展内核的功能的呢?今天,我就带你一起来看看这些问题。

eBPF 的发展历程是什么样的?

在开篇词中,我曾经提到,eBPF 是从 BPF (Berkeley Packet Filter) 技术扩展而来的。而说起 BPF,它的历史就更悠长了。
早在 1992 年的 USENIX 会议上,Steven McCanne 和 Van Jacobson 发布的论文“The BSD Packet Filter: A New Architecture for User-level Packet Capture” 就为 BSD 操作系统带来了革命性的包过滤机制 BSD Packet Filter(简称为 BPF),这比当时最先进的数据包过滤技术还快 20 倍。为什么性能这么好呢?这主要得益于 BPF 的两大设计:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

eBPF技术的发展历程及工作原理是本文的主要内容。文章首先介绍了eBPF的发展历程,从BPF技术的诞生到eBPF的扩展,以及其在内核发展和生态繁荣方面的影响。随后,文章详细解释了eBPF的工作原理,包括eBPF程序的事件触发、安全性和稳定性保障,以及eBPF程序的编写、验证和执行过程。最后,文章提到了eBPF的局限性和使用建议,以及对内核版本的要求。 eBPF技术的发展历程展现了其强大功能和广泛应用场景,从包过滤扩展到内核函数、用户函数、跟踪点、性能事件、安全控制等全新领域。eBPF的诞生催生了基于eBPF构建的网络和安全解决方案,形成了繁荣的eBPF生态。eBPF程序以内核事件触发的方式运行,其运行过程包括编译、加载、验证和内核态执行。为了保护内核的安全和稳定,验证阶段会拒绝包含不安全操作的BPF程序的执行。然而,读者需要注意eBPF程序的限制和建议。 总的来说,本文通过介绍eBPF的发展历程和工作原理,提供了清晰的概览和技术特点的总结。对于想要快速了解eBPF技术的读者来说,这篇文章展示了eBPF技术的强大功能和广泛应用场景,同时也提醒了读者在使用eBPF时需要注意的限制和建议。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《eBPF 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • 大卫李
    非常高兴看到eBPF技术能在极客时间开学习专栏了,算是中文圈的一个里程碑!本人也在一直学习bpf技术(也简单写了发展史:https://davidlovezoe.club/bpf ),希望跟倪老师及大家共勉。

    作者回复: 欢迎在留言区跟同学们分享学习中的问题和经验。

    2022-01-17
    3
    24
  • 余生
    极客上特别喜欢的几位大咖老师,倪朋飞、陶辉、刘超、彭东!

    作者回复: 谢谢对专栏的支持,我们一起加油!

    2022-01-18
    9
  • Unknown element
    老师我看您在评论区说ebpf程序是在加载到内核之前验证,那文中的执行顺序是不是不太准确?应该是 编译 验证 加载 内核执行?

    作者回复: 这儿可能有一点说的不是特别清楚,“加载”可能对应两个操作: 1)第一个是用户态程序通过BPF系统调用加载字节码; 2)第二个是内核态收到这个系统调用后,再执行验证+加载的过程。 所以,对内核来说,“验证+加载”是在用户态程序调用“加载”操作之后的执行步骤。

    2022-02-09
    8
  • Unknown
    bcc tools 工具都很好用,比如Diffie-Hellman密钥交换算法使得就算有key都无法解密,不过如果通过bcc tools中的sslsniff能直接查看了,对调试来说挺方便的

    作者回复: 嗯嗯,是的,谢谢分享。欢迎在学习过程中分享更多的实践经验!

    2022-01-17
    2
    7
  • Damoncui
    好激动!目前正在看翻译版的《bpf之巅》,配合食用简直快乐到不行~英文版吃起来太痛苦…… 选对课程、教程基本节约了一半时间! 希望和各类牛人一起加油进步! ebpf一定会越来越火🔥~

    作者回复: 嗯嗯,这本书也不错,我们一起加油!

    2022-01-18
    6
  • 我要收购腾讯
    用过 bcc profile + crd 的方式给公司内部的k8s控制台开发过一键生成火焰图的功能, (全套的可观测性部署不太适合开发测试用集群)

    作者回复: 谢谢分享!欢迎在学习过程中分享更多的学习和实践经验!

    2022-01-21
    5
  • Sports
    刚来到极客时间买的早期课程就有倪老师的Linux优化实战,看过多遍,大神必出精品!

    作者回复: 感谢对专栏的支持,我们一起加油!

    2022-01-19
    2
  • dovefi
    使用过bcc-tools 中的filetop cachetop等工具分析过缓存占用的问题,第一次接触到ebpf工具,同事的大佬也有使用systemtap解决过很多问题

    作者回复: 谢谢分享实践经验👍

    2022-01-28
    1
  • 倪老师好,我是做嵌入式开发,需要自己配置内核,在搭建bpf的使用环境的时候可以也提一下需要开启内核哪些配置吗?

    作者回复: 嗯嗯,我们第03讲会详细介绍开发环境的搭建的

    2022-01-18
    2
    1
  • Geek_07f1e3
    曾利用bcc解决过容器DNS请求监控的问题场景,但是正如倪老师文末所提及的eBPF与内核版本之间的限制关系,导致方案最后没被通过,但也算是一次不错的实践体验。

    作者回复: 谢谢分享,欢迎在后续的学习过程中分享更多的经验!

    2023-01-28归属地:江苏
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部