
Linux kernel
文章平均质量分 59
already_skb
协议设计 — 用最简单的逻辑,最大化可实现的软件功能。
展开
-
Generic XDP Hook
上一篇文章讲过bpf_prog_run_xdp是XDP 程序的最终调用函数,想要跟踪Generic XDP的代码可以从该函数入手。很显然你不应该从driver/,而是已改在net/目录下检索。jensonqiu@Bing$ grep -rn "bpf_prog_run_xdp" netnet/core/dev.c:4349: act = bpf_prog_run_xdp(xdp_prog, xdp);稍微过滤一下真相就呼之欲出了,函数的调用关系如下:bpf_prog_run_xdpnet原创 2022-02-23 15:29:32 · 750 阅读 · 0 评论 -
xdp 程序如何挂载
xdp 功能程序挂载分析。原创 2022-02-22 21:22:18 · 1254 阅读 · 0 评论 -
Native xdp hook 点
看到xdp功能的时候,你可能已经猜到了xdp一定有在内核中有hook,你也可能猜到了xdp的hook应该在程序中,但是你可能不知道xdp hook 具体在网卡驱动的那个流程中,今天走读了一遍xdp的代码逻辑,简单记录内容如下。bpf_prog_run_xdpbpf_prog_run_xdp函数是xdp的框架函数,你注册的xdp程序将会在这个函数中别逐一调用。xdp的hook是在内核驱动中 ? 你可以过滤一下这个函数,大概应该和我的差不多:jensonqiu@Bing$ grep原创 2022-02-22 18:15:38 · 1977 阅读 · 0 评论 -
ebpf tracepoint 功能分析
1. 查看系统支持的所有tracepointfind /sys/kernel/debug/tracing/events -type d可以查看到当前系统支持的所有tracepoint函数点,大家在利用tracepoint功能的时候最好先看看对应的子系统在那些地方有hook点,评估是否能满足功能。比如说你想内视TCP协议栈,那么你可以先tcp trace 支持那些功能:[root@xxx tcp]# ls /sys/kernel/debug/tracing/events/tcpenable t..原创 2022-02-19 22:08:02 · 1757 阅读 · 0 评论 -
ebpf sockops 代码解读
2032 static inline int tcp_call_bpf(struct sock *sk, int op, u32 nargs, u32 *args)2033 {2034 struct bpf_sock_ops_kern sock_ops;2035 int ret;20362037 memset(&sock_ops, 0, offsetof(struct bpf_sock_ops_kern, temp));2038 .原创 2022-02-19 18:08:54 · 1761 阅读 · 0 评论 -
ebpf sockops 功能分析
ebpf sockops 实现原理大家肯定好奇为什么通过ebpf sockops可以提取我们想要的数据 ?正常来说实现方式有两种,第一种是关键路径上埋钩子函数;第二种是kprobe的粘贴插入。 ebpf sockops 是通过第一种实现的,在关键路径上埋钩子函数了,所以想要扩展功能难哦,一般在内核版本升级时可以提前规划埋好钩子函数。ebpf sockops 支持那些功能ebpf sockops支持那些功能(关键看在什么路径上埋了钩子函数),看 下面代码吧...原创 2022-02-18 11:34:39 · 1932 阅读 · 3 评论