最近读了篇 eBPF 技术的文章( Simple and Precise Static Analysis of Untrusted Linux Kernel Extensions PLDI'19 ),还在几个不错的公众号上都看到了关于 eBPF 的文章。
碰巧还看到 陈莉君老师(昵称是,不知道是否是本人)的高评价留言(大概意思,找不到具体文章了) “对于用户态内核态,eBPF 填平了沟壑,对于微内核宏内核,eBPF 减少了差异”。
然而对比之前的 systemtap,hook,kprobe,除了 JTT in-kernel 虚拟机和静态分析 verifier 增强安全性之外,我似乎并没有发现 eBPF 在功能、性能上非常特别或者突出的地方,相反 systemtap 脚本的可能更强大。
因此我想听听大家对 eBPF 技术发展的看法,这技术到底牛在哪里能够得到这么高的评价。
lwn.net 参考文章
A thorough introduction to eBPF
A JIT for packet filters
BPF: the universal in-kernel virtual machine
看到几个在用的是在做包过滤相关一些的东西,systemtap 还可以做包过滤的么...
mark, 我关注 ebpf 主要是 cloud native 这个方向 ,原因是这段时间比较火的 cni cilium
陈莉君老师的公众号是:Linux 内核之旅,上面有很多讲 eBPF 的文章,可以去看看。
ebpf eat the world
包过滤这个太强了,不过这个是 classic BPF,我主要的困惑是 eBPF extend 出来的那些功能
是这些吗?学到了,感谢。
https://blog.cloudflare.com/cloudflare-architecture-and-how-bpf-eats-the-world/
http://vger.kernel.org/~acme/perf/bpf-is-eating-the-world-dont-you-see-lpc-lisbon-2019
好处很多,但是如果谈及影响可以看看 https://lwn.net/Articles/808503/
最大的问题在于 ebpf 技术导致的内核可编程,这就导致一个本来应该稳定的线上机器一下子就引入了不确定性,非常可能导致内核恐慌,这个比起用户态上的问题更是灾难级别的,所以国内对于 ebpf 上的态度基本都是可以用,但是不能泛用,基本是浅尝辄止吧。