问题标签 [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.
c - 如何在ebpf(XDP)内核程序中将字符串中的值分配给struct in6_addr?
我正在尝试从我的 XDP 程序内部为 struct in6_addr 赋值。从用户空间可以使用
但似乎 inet_pton 在 eBPF 中不可用。有没有可用的 BPF 助手?
谢谢你。
module - XDP 套接字附加到的事件是什么?
我正在开发一个向接收处理程序注册的内核模块,如下所示:
但是,当我尝试将这个内核模块程序与 XDP-tutorial 1中的 XDP 程序一起使用时,内核模块根本没有涉及,即使我尝试只在 XDP 内核程序中传递数据包 ( return XDP_PASS
)。所以我的问题是,XDP 内核程序是如何附加到内核上的,它的优先级是否比注册为 a 的内核模块更高rx_handler
?
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?任何帮助是极大的赞赏。
linux-kernel - bpf_prog_test_run() 导致意外的数据包数据
我尝试为 XDP BPF 程序执行测试运行。BPF 程序使用bpf_xdp_adjust_meta()
助手来调整元数据。
我试过了:
- 跑步
bpf_prog_test_run()
- 跑步
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。
笔记
该程序已成功连接到真实网络接口的挂钩点并按预期运行。我只是用上面的代码替换了将程序附加到挂钩点的代码进行测试。
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。谢谢
dpdk - libbpf:无法获取下一个链接:参数无效
我尝试在 DPDK 中使用 net_af_xdp vdev 但遇到了这样的错误打印:
这是我的环境:
有没有人和我遇到同样的问题?google 没找到解决办法。。。
c - eBPF:如何使用 `bpf_map_update_elem` 从内核空间发送数据?
我正在尝试通过运行以下 BPF 程序将数据(IP 地址)从内核空间发送到用户空间:
生成文件:
但是我不断收到以下错误:
谁能帮我理解这个错误?另外我在哪里可以看到bpf_printk
消息?
我怀疑 make 生成的文件不包含EVENTS
地图。但我不确定如何修复它 - 如果我SEC("maps")
在地图上方添加一个,内核验证程序确实无法找到该部分。
c - XDP 替代 bpf_get_current_pid
如何在 xdp 中获取当前进程 ID
我的程序:
是否有任何替代函数可以在 xdp 中获取当前 pid,我正在参考这个https://github.com/iovisor/bcc/blob/master/docs/kernel-versions.md#program-types
ebpf - bpf 如何使用 BPF_MAP_TYPE_CPUMAP 数组重定向?
我有一个关于 bpf 重定向工作 BPF_MAP_TYPE_CPUMAP 数组究竟是如何工作的问题,我看到它是xdp-project repo 上的一个新功能,并且读取正在增加在 XDP 数据包被重定向到的远程 CPU 上运行另一个(第二个)XDP-prog 的能力,我阅读了用户空间代码,我很困惑,因为我看到重定向接口是必需的,所以在这种情况下,这个新功能使接口 A 上的 xdp 能够在接口 B 上执行另一个 xdp,它接收来自接口 A 的“重定向”数据包, 正确的?如果我不对,请提前感谢您让图片清晰。
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 函数中使用它,而且该解决方案是否有意义。感谢您的帮助,非常感谢。