eBPF Talk: 在 arm64 fentry 里手动做 backtrace 2024-12-16 eBPF eBPF Talk 约 927 字 预计阅读 2 分钟 对于 fentry 程序而言,在 arm64 上做 backtrace 不像 x86 上那么简单;第一步找到可用的 frame pointer 就很费劲了。 毕竟,找到 frame pointer 之后,就可以通过 frame pointer 逐级回溯,找到调用者的 IP 和 FP 阅读更多
eBPF Talk: 在 bpf 里将 fd 和 sock 关联起来 2024-12-09 eBPF eBPF Talk 约 1509 字 预计阅读 4 分钟 对于 socket 编程,在用户态看到的只能是 fd;而在内核态,大部分时候看到的是 sock。 fd 和 sock 之间的关系,是在内核态的 syscall 里建立的;所以,在 connect 和 accept 等 syscall 里 阅读更多
eBPF Talk: tailcall 问题知多少 2024-12-01 eBPF eBPF Talk 约 1004 字 预计阅读 3 分钟 tailcall 是 v4.2 内核便已引入的一个特性,它允许一个 BPF 程序调用另一个程序,而无需返回原程序。 bpf: allow bpf programs to tail-call other bpf programs 然而,在 BPF 子系统不断地引入新特性的同时,t 阅读更多
eBPF Talk: 使用 fentry 调试 tailcall BUG 2024-11-24 eBPF eBPF Talk 约 3949 字 预计阅读 8 分钟 最近,在上线 XDP 网关新版本的时候,触发了 v5.15 内核的一个 tailcall BUG,导致了一个很奇怪的问题:在一个 XDP 程序的 subprog 里,调用了 bpf_tail_call() 阅读更多
eBPF Talk: 谁动了我的 bpf map? 2024-11-17 eBPF eBPF Talk 约 1135 字 预计阅读 3 分钟 使用 bpf 跟踪 bpf map 的更新、删除函数,以此确认是谁动了 bpf map。 TL;DR 已实现对 bpf map 的更新、删除函数的跟踪,未实现批量操作 bpf map 函数的跟踪;源代码:git 阅读更多
eBPF Talk: 修复了 bpftool 中存在了 7 年的 BUG 2024-11-03 eBPF eBPF Talk 约 1625 字 预计阅读 4 分钟 在 eBPF Talk: 自制查看 bpf prog 反汇编的工具 里提到的 bpftool BUG Wrong callq address displayed,花了两三天时间将它给修了。 TL;DR [PATCH bpf v3] bpf, bpftool: Fix incorrect disasm pc 已合入 bpf 仓库。 BUG 复现 使用 bpftool 阅读更多
eBPF Talk: 自制查看 bpf prog 反汇编的工具 2024-10-27 eBPF eBPF Talk 约 1613 字 预计阅读 4 分钟 目前,我知道的查看 bpf prog 反汇编的办法有: 使用 bpftool prog dump jited; 使用 gdb -q -c /proc/kcore -ex 'disas/r 0xffffffffc00a6188,+0x143' -ex 'quit'; 使用 drgn contrib/bpf_inspec.p 阅读更多
eBPF Talk: 我禁用了 freplace tailcall freplace 2024-10-20 eBPF eBPF Talk 约 1130 字 预计阅读 3 分钟 在修复一个由 freplace 引起的 tailcall 无限循环的问题时,接纳社区的建议:禁止将 freplace prog 更新到 prog_array map 中。 使用场景 在项目中,freplace prog 当作 tail-callee 的用法如下: 在 dispatcher prog 阅读更多
eBPF Talk: guard spinlock 2024-10-13 eBPF eBPF Talk 约 885 字 预计阅读 2 分钟 守护 spinlock。 eBPF Talk: spinlock 详解 当使用 spinlock 进行统计时 eBPF Talk: 正确地进行统计,必须要使用 bpf_spin_lock() 和 bpf_spin_unlock() 来保护 spinlock 变量: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 struct xdp_stat_item { 阅读更多
eBPF Talk: 改进 XDP 解析 TCP options 2024-09-08 eBPF eBPF Talk 约 1439 字 预计阅读 3 分钟 在 eBPF Talk: XDP 解析所有 TCP options 里,已经做到了使用 XDP 解析所有 TCP options 的功能。 不过,其中使用了 percpu map 在 XDP 和 freplace 之间传递 offset;那么,是否有办法将该 percpu map 优化掉 阅读更多