eBPF 的全称是 extended Berkeley Packet Filter,它被称之为 “革命性” 的内核技术,可以在 Linux 内核中运行沙盒程序,而无需更改内核源代码或加载内核模块。它提供了一种通用执行引擎,可以基于系统或程序事件高效安全地执行特定代码,就像在实时 (JIT) 编译器和验证引擎的帮助下进行本机编译一样。如今,eBPF 被广泛用于各种场景:在现代数据中心和云原生环境中提供高性能网络和负载平衡,以低成本提取细粒度的安全可观测性数据,帮助应用程序开发人员跟踪应用程序,为性能故障排除、预防性应用程序和容器运行时安全实施提供见解等等。一些项目如 Facebook 公司的高性能 4 层负载均衡器 Katran,IO Visor 项目开源的 BCC、 BPFTrace 和 Kubectl-Trace,以及 CloudFlare 公司开源的 eBPF Exporter 和 bpf-tools 都使用了该技术。
eBPF 为何备受追捧?
用云杉网络 VP 向阳的话来说:“ eBPF 最重要(没有之一)的特点是安全性” 。他表示,以往必须编写内核模块才能做到的工作现在基本都能做到。但关键性的区别在于,eBPF 代码会经过 Verifier 严格的验证,杜绝了死循环、内存泄露等问题。它会确保内核运行的安全,使得企业愿意在运行关键业务的生产系统中开启此能力,从而释放前所未有的内核可编程性。
eBPF 对可观测性技术的影响更是革命性的,一方面这个场景下 eBPF 的「安全性」体现的更加淋漓尽致,它甚至不会对数据进行任何的修改; 另一方面 eBPF 的「零侵扰」特性使得云原生应用实现全景、全栈的可观测性成为现实。随着云基础设施的迭代和发展、微服务的拆分,业务中的编程语言构成越来越复杂、服务间通信路径涉及到的团队越来越多。与此同时,现有的可观测性方案往往要求打桩插码,为开发者带来了巨大的工作量,因此如何为所有业务支撑团队呈现一个全景、全栈的可观测性视图成为急需解决的一个问题。
eBPF 采集的数据能覆盖系统、网络、应用等多个层面,能回答基础设施的性能瓶颈位置,也能回答应用程序中的代码函数热点,在这方面表现出了得天独厚的优势。云杉网络开源的云原生可观测性平台 DeepFlow 就充分利用了 eBPF 技术。借助 eBPF 的零侵扰性和安全性优势,开发者无需修改任何一行代码、无需改变任何一个运行参数、甚至无需重启任何一个进程,即可实现全景、全栈的分布式追踪、全景应用拓扑、全栈性能指标能力,覆盖各类语言的应用、各类云原生基础设施,为云原生环境下的可观测性带来了革命性的创新。
很多人都在关注 eBPF 介入后,应用程序性能会有所损耗。向阳认为,由于 eBPF 程序会 Hook 至内核函数中执行,它带来的性能开销与应用程序本身的资源消耗相关。如果应用本身逻辑非常简单,例如时延不到 1ms,此时 eBPF 介入带来的耗时占比会比较明显。但对于大量的业务 —— 通常会有复杂的计算逻辑、更长的耗时,在生产环境上的经验是大多只会引入 1%~5% 的性能影响。
另一方面,DeepFlow 也希望通过自身的开源来推进 eBPF 应用的繁荣,这样也能更加促进 eBPF 技术自身的性能优化。而 DeepFlow 自身的持续测试机制也会在每次代码合入之后进行自动化的性能影响评估,让用户清晰的知道影响到底有多大。eBPF 技术还在不断发展,还有什么可能性有待挖掘?2023 年 5 月 28 日, GOTC 2023 eBPF 分论坛将于上海举行,将一览无余地展现 eBPF 技术,并分享如何将其结合到实际工作中。
与此同时,GOTC 2023 很荣幸邀请到向阳成为该分论坛的联合出品人。早在清华大学攻读计算机系博士学位期间,向阳就实现了世界上第一个全球 BGP 路由劫持实时监测系统,获得了网络测量领域国际顶级会议 IMC 颁发的社区贡献奖,这也是该奖项首次颁发给中国大陆科研人员。
毕业后,向阳即加入了云杉网络,如今作为云杉网络的研发 VP,负责 DeepFlow 产品。正是在他的带领下,云杉网络将 eBPF 技术深度应用于 DeepFlow 之中。全球开源技术峰会(Global Open-source Technology Conference),简称 GOTC,是由开放原子开源基金会、 Linux 基金会亚太区、上海浦东软件园和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。5 月 27 日至 28 日,GOTC 2023 将于上海举办为期 2 天的开源行业盛会。大会将以行业展览、主题发言、特别论坛、分论坛的形式展现,与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及开源社区、AIGC、汽车软件、开源商业化、开源教育培训、云原生等热门话题,探讨开源未来,助力开源发展。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !