0

这是关于让多个进程打开绑定到不同队列的 XDP 套接字的方法。刚刚开始阅读和研究多进程解决方案。

(excerpt from https://marc.info/?l=xdp-newbies&m=158399973616672&w=2)
hw_q0,    hw_q1,    hw_q2,
xsk_q0_0, xsk_q1_0, xsk_q2_0,

我创建了一个具有 16 个队列并使用 tcpreplay 抽取数据包的伪 netdev。流程如下。

tcprelay -> lo -> 驱动程序(rx_handler) -> ps-dev[XDP] -> XDP_REDIRECT -> APP。

APP创建了一个XDP套接字并将其附加到队列1。XDP正在接收ctx->rx_queue_index为0的数据包。调用 bpf_redirect_map(&xsks_map, 1, XDP_ABORTED);没有错误,因为xsks_map中有一个索引为1的套接字。但我没有看到APP上的任何数据。

如果 APP 打开 XDP 套接字并绑定到队列 0,同样可以正常工作。

假设我很清楚,问题是:

  • 队列上的 XDP 套接字绑定是否与伪 netdev 一起使用?

  • 我们如何让数据包发送到绑定在队列 1 上的 XDP 套接字?

编辑 01

perf 显示以下内容:我想知道为什么xdp_redirect_map没有看到。

tcpreplay 257463 [000] 109262.955907:         xdp:xdp_redirect: prog_id=547 action=REDIRECT ifindex=19 to_ifindex=0 err=0 map_id=382 map_index=0
tcpreplay 257463 [000] 109263.206600:         xdp:xdp_redirect: prog_id=547 action=REDIRECT ifindex=19 to_ifindex=0 err=0 map_id=382 map_index=0
tcpreplay 257463 [001] 109263.457411:     xdp:xdp_redirect_err: prog_id=547 action=REDIRECT ifindex=19 to_ifindex=0 err=-22 map_id=382 map_index=1
tcpreplay 257463 [001] 109263.706151:     xdp:xdp_redirect_err: prog_id=547 action=REDIRECT ifindex=19 to_ifindex=0 err=-22 map_id=382 map_index=1
4

0 回答 0