eBPF Talk: pwru 自己挖坑自己填 2024-03-31 eBPF eBPF Talk 约 852 字 预计阅读 2 分钟 当遇上 cilium/pwru 时,我便放弃维护自己的 skbtracer 了。 挖坑 之前,学习了 eBPF Talk: 全局变量实战指南,就打算在开源项目 GitHub cilium/pwru 上一展身手: PR bpf: make config as a constant 2023 年 2 月 4 日提了 PR 阅读更多
eBPF Talk: 实战经验之 bpf FD 泄漏分析 2024-03-31 eBPF eBPF Talk 约 1736 字 预计阅读 4 分钟 不经意间,基于 XDP 的网关已写了 1w 行 Go 代码;特别是其中 ACL 模块较为复杂。 因而,担心因复杂性而带来的一些资源管理隐患,特别是不好管理的 FD 资源,专门打 阅读更多
eBPF Talk: iptables-trace 2024-03-31 eBPF eBPF Talk 约 1114 字 预计阅读 3 分钟 填坑 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: 在内核模块里运行 bpf 程序 2024-03-31 eBPF eBPF Talk 约 668 字 预计阅读 2 分钟 在 Linux 内核模块里把玩 bpf map P.S. 旧文一篇,请笑纳。 参考 iptables-bpf 的源代码实现,尝试在自定义的内核模块里运行指定的 bpf 程序。 使用的 bpf 程序源代码: iptables-bpf 内核模块源代码 阅读更多
eBPF Talk: kprobe 获取第 n 个参数 2024-03-29 eBPF eBPF Talk 约 1234 字 预计阅读 3 分钟 此次来填 eBPF Talk: skbtracer-iptables 中的坑了:在开发一个基于 eBPF 的 iptables TRACE 的替代工具。 不过,遇到的第一个纸老虎是 kprobe 中获取 nf_log_trace() 的诸多参数。 nf_log_trace() 且看下函数声明: 1 2 3 4 5 6 7 8 阅读更多
eBPF Talk: syscalldist 与 bpfsyscalldist 2024-03-29 eBPF eBPF Talk 约 1005 字 预计阅读 3 分钟 因为 XDP ACL 需要不断操作数据面的 XDP,担心 Go 代码逻辑会导致一些性能问题,所以参考 syscalldist 开发了一个专门针对 BPF 系统调用的 bpfsyscalldist。 阅读更多
eBPF Talk: kprobe, frace 与 trampoline 2024-03-29 eBPF eBPF Talk 约 493 字 预计阅读 1 分钟 听闻 ftrace 也是基于 trampoline 实现的。而且,最近打算使用 kprobe 开发个工具,所以就将快速翻看了一下 ftrace 和 kprobe 的底层源代码。 P.S. 不介绍 ftrace 的使用,使用文档请看 ftrace - Function Tra 阅读更多
eBPF Talk: skbtracer-iptables 2024-03-29 eBPF eBPF Talk 约 501 字 预计阅读 1 分钟 可还曾记得 skbtracer 内核网络包跟踪工具? skbtracer: Linux 内核网络包路径追踪利器,Go 语言版本 这是我刚学习 eBPF 不久就开发的工具,不过更多时候是向 skbtracer 和 pwru 这两个网络包跟 阅读更多
eBPF Talk: 共享的 tailcall PROG_ARRAY bpf map 2023-08-22 eBPF eBPF Talk 约 841 字 预计阅读 2 分钟 在研究 eBPF Talk: trace tailcall 程序?NO! 时,产生了疑惑: 静态 tailcall 使用的 PROG_ARRAY bpf map 能在多个进程之间共享吗? TL;DR 能。且在更新 PROG_ARRAY bpf map 时,会更新静态 tailcall 的所有 bpf prog。 eBPF 阅读更多
eBPF Talk: 更新 tailcall PROG_ARRAY bpf map 2023-08-22 eBPF eBPF Talk 约 1113 字 预计阅读 3 分钟 在上一集 eBPF Talk: 动态或静态 tailcall 中,我们知道了 tailcall 有动态和静态之分。 对于动态 tailcall 而言,更新 PROG_ARRAY bpf map 时就比较简单,只需要更新一下 array->ptrs 数组即可。 但对于静态 tailcall 而言 阅读更多