云原生时代的eBPF,以软件定义内核

举报
创原会 发表于 2023/09/11 15:32:41 2023/09/11
【摘要】 eBPF(Extended Berkeley Packet Filter)是一项应用场景广泛的Linux内核技术,凭借其强大的可编程性以及高速发展的活跃社区,逐渐成为“软件定义内核”的代名词。在现代数据中心和云原生环境中提供高性能网络和负载均衡,以非侵入式以及低性能要求的方式提取安全与可观察性数据,帮助开发人员跟踪应用性能表现,为故障排除提供数据支持


作者简介康博士  金沙江创业投资副总裁

1. eBPF,革命性内核技术

eBPFExtended Berkeley Packet Filter)是一项应用场景广泛Linux内核技术,凭借其强大的可编程性以及高速发展的活跃社区,逐渐成为“软件定义内核”的代名词。在现代数据中心和云原生环境中提供高性能网络和负载均衡,以非侵入式以及低性能要求的方式提取安全与可观察性数据,帮助开发人员跟踪应用性能表现,为故障排除提供数据支持。eBPFDevOps中重要的“眼”与“耳”,在云原生的可观测性,安全以及网络三个百亿美金市场规模的领域发挥着越来越重要的价值,成为初创企业去挑战巨头的重要武器。

eBPF起源于Linux内核,可以在操作系统内核环境下运行沙盒程序,从而让应用开发工程师与内核的协作更为敏捷高效。内核具有监督和控制整个系统的特权能力,一直是可观察性、安全和网络功能的理想场所。但内核的迭代依托于社区的共识,需要对需求的共性进行很好的抽象与长期的讨论,迭代周期往往以年为单位,而eBPF可以在不改变内核源代码或加载内核模块的基础上,安全有效地扩展内核的功能。2014年在Linux内核3.18版本中,Alexei Starovoitov第一次实现了eBPF,距今不过短短10年的时间,已经发展成为Linux活跃且迭代速度最快的项目之一。20218月,由微软、谷歌、Meta等公司联合成立了eBPF基金会,大力发展eBPF技术,在国内也得到了广泛关注,很多大公司以及可观测性、安全公司也开始关注并采用eBPF技术。

截屏2023-09-11 11.10.36.png

1.1 eBPF的历史与优势

eBPF的前身是伯克利数据包过滤器(Berkeley Packet Filter, BPF),一个用在虚拟机中来编写包过滤器的工具,常用于做tcpdump格式的报文过滤,在eBPF技术出现后,传统的BPF又被成为cBPFeBPF相比BPF通过map映射让内核空间与用户空间可以互相交互数据,同时改进了性能,极大地拓展了指令集的数量,进而拓展了更多的应用场景。同时相比Linux内核模块,eBPF能更好地保障内核安全,提供了更为丰富的数据结构,也降低了应用开发工程师调用的门槛。

1.2 eBPF的运行机制

在大多数场景中,eBPF需要通过类似于Ciliumbcc或者是bpftrace这些程序来进行一层抽象,从而将eBPF技术应用在某个特定的领域。这是由于Linux内核要求eBPF程序以字节码的形式来进行加载,而直接写字节码几乎是不可能的,因此需要依赖某个编译方案例如LLVM将高级代码编译为字节码。

同时与传统的cBPF一样,eBPF也是事件驱动的,需要钩子(Hooks)来进行触发,并通过运行辅助函数(Helper Function)来进行任务处理,通过上述对eBPF技术的分析,

我们可以归纳eBPF的工作流程如下:

» 编译通过LLVM等工具将eBPF程序编译为字节码

» 挂载:将程序挂在到内核特定事件触发的钩子上

» 验证:在被事件和钩子触发前,在虚拟机里头验证程序的安全性

» 运行时编译:Runtime的时候进行编译从而获得最大的效率

» 辅助函数:当事件触发的时候,调用辅助函数来对数据进行处理与修改

» 同步:使用eBPF map在用户空间以及内核空间共享数据,并保持状态一致性

截屏2023-09-11 11.12.01.png

2. eBPF丰富的开源生态

eBPF生态的标志性事件之一是2021812日,在Linux基金会之下,由FacebookGoogleMicrosoft三家巨头以及NetflflixIsovalent共同发起了eBPF基金会,将eBPF的开源工作推向了一个新的高度。

这些创始成员大多在自己的生产环境已经进行了大量的探索与验证,或者是开源社区的重要贡献者,例如Facebook源了一个基于eBPF技术的负载均衡器Katran,并且在其IDC中服务多年,近期还讨论了更多基于eBPF的可扩展加密技术;Google则是将eBPF以及Cilium应用于GoogleK8S引擎上;Isovalent则是eBPF里最活跃的开源社区Cilium的商业化公司,同时也是eBPF社区中最重要的贡献者与维护者。

2.1 围绕eBPF技术的开源项目

eBPF的开源基金会中,收录很多eBPF技术的开源社区,涵盖了网络,安全以及可观测性等主要领域,并且也包含一些常用的开发工具:

2.2 Cilium:高速成长的eBPF开源社区

如果我们展开eBPF开源项目的star数的增长历史,最早的开源项目起源于2016年前后,而其中bcc以及cilium是最受关注的两个项目,其中bcc作为开发工具最早开源于2015年中,通C语言编译eBPF程序降低了开发的门槛,也是其被更广大开发者使用的重要推动力,而Cilium则是应用与影响力最广泛的eBPF应用类项目。

目前Cilium是云原生CNCF基金会的孵化项目,从功能上,它为应用负载提供稳定,透明且安全的网络连接性以及负载均衡能力。常被集成在K8S中,功能简介如下:

» API保护的可编程性:这来自于Cilium在第7层的核心能力。借助eBPF的可编程能力,Cilium则为每一个独立的应用协议例如REST/HTTP, gRPC以及Kafka提供了独立管理的能力。例如可以仅对所有的HTTP访问中使用了特定method及特定路径的进行放行。

» Cilium为共享相同安全策略的应用容器组分配了一个统一的安全身份,该身份会与应用容器的网络数据包关联,从而进行身份验证。此外也兼容了传统的基于CIDR的出入口安全策略,可以对来自外部的访问进行安全管理。

截屏2023-09-11 11.13.43.png

截屏2023-09-11 11.17.01.png

截屏2023-09-11 11.17.21.png

» 在网络层面,Cilium提供了一种简单的第3层网络模型,能够跨越多个集群来链接所有的应用容器,同时基于eBPF进行动态智能化的负载均衡以及EDT-based (Earliest Departure Time)带宽管理。

» 可观测性上,Cilium基于社区内的另外一个开源项目hubble来进行支持,提供服务之间的依赖性的监测,运营监控以及告警,同时提供基于流量日志的应用安全可见性管理。

» Cilium的架构如下:

在社区运营层面,Cilium也相当成功,自20168月开源以来,已经收获了11.5kstar,同时接近400位开发者为Cilium项目贡献过代码,其中有60多位在最近一个月保持活跃,Githubissues讨论也非常热情,接近6000issue被处理

截屏2023-09-11 11.18.19.png

3 eBPF广阔的商业化空间

除去Cilium主要关注的网络之外,eBPF的另外两大核心场景可观测性,安全也有着极大的市场空间,这也是为什么这项技术在近些年来获得了资本市场的广泛关注。

3.1极具想象力的市场空间

可观测性市场中已经出现了Datadog这样400亿美金的巨头,2021年的收入高达10.3亿美金并且仍然维持70%以上的增速。Gartner预估整个IT运营管理的市场规模在2023年将达到370亿美金,而Datadog也在其S1招股说明书自下而上地预测他们的TAMTotal Addressable Market)约为350亿美金。Datadog也在持续丰富和拓展产品矩阵,在2022年推出的云工作负载安全(Workload Security)中,也开始使用eBPF技术来提供内核级别的数据获取能力。除去Datadog外,150亿美金市值的Splunk88亿美金市值的Dynatrace30多亿美金的New Relic都是可观测性市场的重要玩家。

截屏2023-09-11 11.36.31.png

网络安全市场同样有着巨大的市场空间,根据Gartner的预估,整个安全市场的规模在2021年达到了1500亿美金,并且仍然维持12.4%的高增速,这个市场也诞生了市值接近500亿美金的CrowdStrike以及市值300多亿美金的Zscaler等公司。

这其中eBPF有很大的潜力将在云安全的市场中发挥价值,尽管目前云安全的市场规模在众多细分赛道中仍然是最小的,但同时也是增速最快的市场,如果维持40%的增速,那么将2026年达到47亿美元的规模,这种增速也催生了云安全公司的快速发展。比如Sysdig就在20214月和12月连续完成了两轮融资,累积融资额也达到了7.3亿美金,他的竞争对Aqua Security也不甘示弱,在20213月和11月分别完成了两轮融资,目前已经披露的融资额已经达到2.7亿美金。

截屏2023-09-11 11.37.28.png

3.2 融资与并购热潮

正是由于eBPF技术的快速迭代,发展展现出来的潜力,以及在大的市场中逐渐扮演越来越重要的角色,也出现了一批eBPF作为公司核心技术与核心理念的公司,在2020年底,eBPF-centric的公司迎来了投融资热潮:

» 202010月,基于eBPF的可观测性开源项目Pixie LabsBenchmark 915万美金的融资

» 202011月,Splunk收购了网络可观测性的公司Flowmill

» 202011月,Cilium背后的公司Isovalent获得了来自a16z以及GoogleCisco2900万美金的融资

» 202012月,Pixie LabsNew Relic收购,成为New Relic的产品线

这其中不乏来自上市可观测性公司SplunkNew Relic的并购,以及GoogleCisco等科技巨头的参与,也能看到benchmarka16z等投资机构的身影,在2020年底,整个eBPF的生态在DevOps赛道可以说是风头无二。

3.3等待爆发的eBPF技术

2021年开始,eBPF-centric的公司需要逐渐在商业上去交出答卷,而eBPF技术的最佳代表,当数Cilium社区与背后的Isovalent公司,他们也同样是eBPF基金会,以及每一年的eBPF技术峰会的组织方。

Cilium项目的创始人Thomas Graf是一名瑞士人,他最长的一段职业经历自2005年到2014年一直在Red hat担任内核研发的工程师,在red hat的最后2年,他也参与了Open vSwitch项目的贡献,这也是“软件定义网络”的重要开源社区,这也让他发现了下一代网络基础设施的重要技术:eBPF,并在2016年初发起了Cilium。公司的CEO Dan Wendlandt则是卡内基梅隆大学的网络方向的博士,毕业后先加入了Nicira,负Open vSwitch项目的开发并且于2012年因为收购加入VMware,负责云原生,网络方向的基础设施,也持续在Open vSwitch的项目中积极贡献, 2016年底,看到Cilium的高速发展,他与Thomas共同发起了Isovalent这家公司,在Stealth模式下运行到202011月,直到宣布获得了a16z的融资。

Cilium开源社区的基础上,Isovalent提供了更多企业级的支持,包括基于eBPF将网络和runtime行为与K8S身份认证相结合,为SIEM以及SOC平台提供云原生的审计、合规检测;将零信任与网络结合起来,基于eBPF的网络实现安全且可以高效拓展的网络连接,在保障节点数增长的同时保障不同节点间的透明性与负载均衡;同时,基于eBPF技术,Isovalent还提供应用的故障排查,帮助用户更高效地收集多租户的metric数据,管理网络策略,自动化网络的监管行为等等。

4 eBPF引领“软件定义内核”

尽管在融资上陷入短暂的沉寂,在Linux内核的开源社区里,eBPF仍然是最热与迭代最快的主题与社群,每一代的Linux内核都逐渐支持更丰富的feature:自3.16版本支持x86_64架构之后逐渐支持了ARMMIPS直到最近5.x的版本支持RISC-V的架构,eBPF已经逐渐覆盖了主流的计算平台;支持的辅助函数的数量也从3.x的仅仅3个,拓展到4.x90个,而到了5.x的版本已经支持接近200个辅助函数;而指令数也从4096拓展到了百万量级,这些进步都极大地拓展了eBPF价值深度与广度。eBPF 2021年的峰会上,Isovalent的创始人也对eBPF技术提出了下一代的展望:

1.软件定义网络的新代名词:eBPF会凭借其对于多云,混合云的多层网络的支持,成为云原生时代的SDN(软件定义网络)基础设施,从而更好地链接云--端的架构

2.下一代的服务网格:eBPF通过降低边车(sidecar)的复杂性,将成为服务网格(Service mesh)的制胜关键,同时Cilium也推出了其服务网格的Beta测试

3.智能化的可观测性:eBPF通过提供云原生场景下不同层的语义与信息,从而提供更完整与全面的安全 ,从而让可观测性无处不在且更加智能化

新的技术会有需要逐渐被接受,到广泛应用发挥能量的过程,正如同JavaScript对浏览器的影响一样,相信随着易用性,可编程性的逐渐完善,eBPF技术将成为引领并且代言“软件定义内核”的关键技术。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。