TGTGInsighttelegram intelligenceLIVE / telegram public index
← Welcome to the Black Parade
Welcome to the Black Parade avatar

TGINSIGHT POST

Post #402

@TheB1ackParade

Welcome to the Black Parade

Views2,180Post view count
PostedSep 2509/25/2023, 08:12 AM
Post content

Post content

前两周 ray 问我有什么入门 bpf 的推荐方法,我结合最近的实践给出以下几个练手项目: 1. 内核态观测:实现 pwru 简化版。本质来说就是扫描 btf,attach kprobe on all kfuncs with skb param,搜集 skb 数据,传回用户态。非常简单,我昨天亲自试了一下,半天就写完了。 2. 网络观测:tc/xdp-dump 是很简单的项目,相比上一个小项目,这个可以学会在 bpf 里解析网络流量,做一些基本的过滤,也比较简单。 3. 网络编程:我还是推荐 xdp-tutorial 项目,不过我们的要求要更高一点,要 from scratch 而不是填充式编程,而且要用 xdp 和 tc 分别实现。其实 lizrice 的 lb-from-scratch 也是一个不错的入门小项目,已经有 cilium standalone lb 的风味了。 4. 用户态观测:C 语言和 CPython 的 ftrace!由于他们的栈都是平铺直叙毫无幺蛾子,所以非常简单,前者用 uprobe + uretprobe,后者用 USDT。如果想进一步的话就去解析参数,C 的参数要解 dwarf,CPython 去解析 frame object,都是很好的 ELF 实践。 不走弯路,我推荐直接 cilium/ebpf 作为用户态 lib,虽然不如 libbpf 啥都支持,但是实现上述功能绰绰有余。