赞
踩
eBPF技术正以令人难以置信的速度发展,作为一项新兴技术,它具备改变容器网络、安全、可观测性生态的潜力。eBPF作为更加现代化的内核技术,相较于内核模块,它的编写难度已经有了较大的降低,但是不可否认对于普通开发者还是有一定门槛。因此,很多云原生软件会在eBPF系统调用(函数)和libbpf之上封装一层更加简单易用的api,比如falco的libs、bcc的libbcc、cilium的cilium-ebpf。笔者将这些依赖库称之为eBPF的基础设施。Kindling专注于云可观测性领域,致力于排查各种复杂故障,包括但不限于网络、文件、内存、on-off cpu堆栈,解决上述问题是Kindling的第一优先级目标,本着不重复造轮子的原则,Kindling无意于再创造一个eBPF的基础设施。
当下有很多库可以供开发者选择,比如libbcc、dropbox的goebpf、cilium的ebpf库、calico的底层库、falco的lib库。这些库主要协助完成以下功能:
将eBPF程序加载到内核中并且重定位
将map载入初始化,提供fd供用户态和内核态交互
更友好的开发使用体验
基于此,我们分别选择了2个基于c和go的基础设施库来对比:
Libbcc |
Gobpf |
Falco-libs |
Cilium-ebpf |
|
开发语言 |
c或cgo |
go |
c |
c通过bpf2go转换成go |
是否支持CO-RE |
支持 |
支持 |
不支持(正在支持) |
支持 |
api完善度 |
较好 |
较好 |
较好 |
很好 |
初始化流程完善程度 |
好 |
好 |
好 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。