Closed glazychev-art closed 1 year ago
Artem Glazychev @.***> writes:
Does anyone have any ideas how to solve this problem?
Just install the XDP program on both component interfaces of the bond. That's what the bonding driver does anyway (it just passed through the load action). And since for AF_XDP you have to bind to a particular RXQ, this won't work at all with the bonding driver.
In general, the bonding driver XDP support is weird and hard to reason about, so I'd suggest just avoiding it...
@tohojo Thanks for the answer!
If I understand correctly, the problem is somewhere here? https://github.com/torvalds/linux/tree/v5.15/drivers/net/bonding
What do you think, is it possible to fix it?
Artem Glazychev @.***> writes:
@tohojo Thanks for the answer!
If I understand correctly, the problem is somewhere here? https://github.com/torvalds/linux/tree/v5.15/drivers/net/bonding
What do you think, is it possible to fix it?
Probably not, it's by design...
The XDP bonding support was added solely for being able to be able to transparently load XDP BPF programs onto a bonding device without special handling in user-space. AF_XDP support for bonding is likely not feasible.
Thanks for the info!
Description
Hi, I'm trying to use af_xdp with bond host interface, but it seems it doesn't work.
Judging by the kernel repository, XDP support was added some time ago.
Steps to reproduce
advanced03-AF_XDP example was taken as a basis. I changed
testenv.sh setup
function to create bond interface like this (git apply 0001-Change-host-veth-to-bond.txt):Run:
Additional info
According to my observations, data transfer
bond0(xdp) ----> veth0(ns:veth-adv03)
works fine. The problem occurs on receiving data on thebond0
interface. I guess there is a problem with different RX queues forbond0
(master) - where we attached the xdp program, andveth-adv03
(slave) - where the data actually comes.Context
Does anyone have any ideas how to solve this problem?
Thanks in advance