问题标签 [xdp-bpf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
77 浏览

c - 如何在ebpf(XDP)内核程序中将字符串中的值分配给struct in6_addr?

我正在尝试从我的 XDP 程序内部为 struct in6_addr 赋值。从用户空间可以使用

但似乎 inet_pton 在 eBPF 中不可用。有没有可用的 BPF 助手?

谢谢你。

0 投票
1 回答
42 浏览

module - XDP 套接字附加到的事件是什么?

我正在开发一个向接收处理程序注册的内核模块,如下所示:

但是,当我尝试将这个内核模块程序与 XDP-tutorial 1中的 XDP 程序一起使用时,内核模块根本没有涉及,即使我尝试只在 XDP 内核程序中传递数据包 ( return XDP_PASS)。所以我的问题是,XDP 内核程序是如何附加到内核上的,它的优先级是否比注册为 a 的内核模块更高rx_handler

0 投票
1 回答
154 浏览

linux - 带有 AF_XDP 的 DPDK:无法创建 xsk 套接字

我正在尝试运行 AF_XDP 轮询模式驱动程序。内核版本为 5.4(CONFIG_XDP_SOCKETS=y)。当我运行 DPDK 网站提供的示例时,发生了错误。

似乎 XSK 套接字调用 bind() 失败,因此 eth_rx_queue_setup() 失败。

如何正确配置 EAL 参数以使用 vdev=af_net_xdp0 运行 dpdk-testpmd?任何帮助是极大的赞赏。

0 投票
1 回答
125 浏览

linux-kernel - bpf_prog_test_run() 导致意外的数据包数据


我尝试为 XDP BPF 程序执行测试运行。BPF 程序使用bpf_xdp_adjust_meta()助手来调整元数据。

我试过了:

  1. 跑步bpf_prog_test_run()
  2. 跑步bpf_prog_test_run_xattr()

1.bpf_prog_test_run()
(第一次尝试我的bpf程序的调试信息告诉我调整data_meta字段失败。)现在它可以调整data_meta,但是该iph.ihl字段显然没有设置为5。

2.bpf_prog_test_xattr()
这总是返回-1,所以有些事情失败了。

编码

包:

测试属性:

测试执行:
bpf_prog_test_run(main_prog_fd, 1, &pkt_v4, sizeof(pkt_v4), &data_out, &size, &retval, &duration) ->iph.ihl字段为 0。

bpf_prog_test_run_xattr(&test_attr)-> 返回 -1。

笔记

该程序已成功连接到真实网络接口的挂钩点并按预期运行。我只是用上面的代码替换了将程序附加到挂钩点的代码进行测试。

0 投票
0 回答
60 浏览

ipv6 - 在 eBPF 中将 IPv4 转换为 IPv6 时,“bpf_l4_csum_replace”的校验和计算问题

我正在使用 eBPF API 将 IPv4 (UDP) 数据包转换为 IPv6 数据包。当我在 tcpdump 上捕获数据包时,我看到数据包的校验和错误。我没有修改数据包的 UDP 标头,只是将 IPv4 转换为 IPv6。问题是我不确定在调用中“oldsum”和“newsum”的值是多少bpf_l4_csum_replace

代码:

TCPDUMP:

请帮助我如何将“oldsum”和“newsum”的正确值告知 bpf_l4_csum_replace。谢谢

0 投票
0 回答
85 浏览

dpdk - libbpf:无法获取下一个链接:参数无效

我尝试在 DPDK 中使用 net_af_xdp vdev 但遇到了这样的错误打印:

这是我的环境:

有没有人和我遇到同样的问题?google 没找到解决办法。。。

0 投票
1 回答
94 浏览

c - eBPF:如何使用 `bpf_map_update_elem` 从内核空间发送数据?

我正在尝试通过运行以下 BPF 程序将数据(IP 地址)从内核空间发送到用户空间:

生成文件:

但是我不断收到以下错误:

谁能帮我理解这个错误?另外我在哪里可以看到bpf_printk消息?

我怀疑 make 生成的文件不包含EVENTS地图。但我不确定如何修复它 - 如果我SEC("maps")在地图上方添加一个,内核验证程序确实无法找到该部分。

0 投票
1 回答
42 浏览

c - XDP 替代 bpf_get_current_pid

如何在 xdp 中获取当前进程 ID

我的程序:

是否有任何替代函数可以在 xdp 中获取当前 pid,我正在参考这个https://github.com/iovisor/bcc/blob/master/docs/kernel-versions.md#program-types

0 投票
1 回答
64 浏览

ebpf - bpf 如何使用 BPF_MAP_TYPE_CPUMAP 数组重定向?

我有一个关于 bpf 重定向工作 BPF_MAP_TYPE_CPUMAP 数组究竟是如何工作的问题,我看到它是xdp-project repo 上的一个新功能,并且读取正在增加在 XDP 数据包被重定向到的远程 CPU 上运行另一个(第二个)XDP-prog 的能力,我阅读了用户空间代码,我很困惑,因为我看到重定向接口是必需的,所以在这种情况下,这个新功能使接口 A 上的 xdp 能够在接口 B 上执行另一个 xdp,它接收来自接口 A 的“重定向”数据包, 正确的?如果我不对,请提前感谢您让图片清晰。

0 投票
1 回答
40 浏览

ebpf - 在函数之间共享信息(BPF/XDP)

Objective: If process id/name = xxx then drop the packet 所以,我有点困惑。到目前为止,我知道您无法从 XDP 中提取进程信息,但 bpf trace 允许您对其进行跟踪。这是我可能的解决方案,使用 bpf 哈希映射在两个函数之间共享信息。如果进程名称 == xx 那么 XDP_DROP。(这可能是错误的,但我正在尝试)

但我对如何使用 BPF_HASHMAPS 感到困惑,我阅读了关于 bcc 的文档..

示例:通过这个 hello 函数,我可以跟踪事件

XDP 功能丢弃打包机

现在我如何获取 pid 值并在 XDP 函数中使用它,而且该解决方案是否有意义。感谢您的帮助,非常感谢。