
计算虚拟化
文章平均质量分 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 · 1257 阅读 · 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 · 1979 阅读 · 0 评论 -
BPF_PROG_TYPE_SOCKET_FILTER 功能实现
BPF_PROG_TYPE_SOCKET_FILTER,从宏字面意思比较容易想到实现的是socket filter功能,它区别于sockops和tracepoint等功能,需要额外借助setsockopt能力将功能函数和socket绑定,功能才能真正生效。如何定该类型在内核态功能函数中定义SEC("socketxxxx"),则会被解析为BPF_PROG_TYPE_SOCKET_FILTER类型功能。比如内核中实现的三个example程序:samples/bpf/sockex1_kern.c -原创 2022-02-20 14:07:02 · 2041 阅读 · 0 评论 -
ebpf xdp 挂载点分析
1. 查看支持xdp功能的网卡drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c:218: case XDP_SETUP_PROG:drivers/net/ethernet/cavium/thunder/nicvf_main.c:1848: case XDP_SETUP_PROG:drivers/net/ethernet/intel/i40e/i40e_main.c:11845: case XDP_SETUP_PROG:drivers/net/ethern原创 2022-02-19 22:00:41 · 1421 阅读 · 0 评论