eBPF Talk: iptables-trace

填坑 eBPF Talk: skbtracer-iptables 中的 One more thing. 源代码:GitHub iptables-trace 前置知识: eBPF Talk: skbtracer-iptables eBPF Talk: 在内核模块里运行 bpf 程序 kprobes in kernel module 因为 eBPF 不支持修改 skb->nf_trace 字段和 struct pt_regs(出于安

eBPF Talk: kprobe 获取第 n 个参数

此次来填 eBPF Talk: skbtracer-iptables 中的坑了:在开发一个基于 eBPF 的 iptables TRACE 的替代工具。 不过,遇到的第一个纸老虎是 kprobe 中获取 nf_log_trace() 的诸多参数。 nf_log_trace() 且看下函数声明: 1 2 3 4 5 6 7 8

eBPF Talk: kprobe, frace 与 trampoline

听闻 ftrace 也是基于 trampoline 实现的。而且,最近打算使用 kprobe 开发个工具,所以就将快速翻看了一下 ftrace 和 kprobe 的底层源代码。 P.S. 不介绍 ftrace 的使用,使用文档请看 ftrace - Function Tra

eBPF Talk: skbtracer-iptables

可还曾记得 skbtracer 内核网络包跟踪工具? skbtracer: Linux 内核网络包路径追踪利器,Go 语言版本 这是我刚学习 eBPF 不久就开发的工具,不过更多时候是向 skbtracer 和 pwru 这两个网络包跟

eBPF Talk: 更新 tailcall PROG_ARRAY bpf map

在上一集 eBPF Talk: 动态或静态 tailcall 中,我们知道了 tailcall 有动态和静态之分。 对于动态 tailcall 而言,更新 PROG_ARRAY bpf map 时就比较简单,只需要更新一下 array->ptrs 数组即可。 但对于静态 tailcall 而言

eBPF Talk: 动态或静态 tailcall

动态 tailcall?静态 tailcall?为什么 tailcall 会有动静之分呢? 其实,就是看在使用 bpf_taill_call() 时,传入的 index 参数是常量还是变量。 动态 tailcall 在使用 bpf_tail_call() 时,传