Thread (20 messages) 20 messages, 7 authors, 2020-08-07

Re: [RFC PATCH bpf-next 3/3] samples/bpf: Add a simple bridge example accelerated with XDP

From: Yoshiki Komachi <hidden>
Date: 2020-08-04 10:35:22
Also in: bpf, bridge

2020/08/01 2:48、Andrii Nakryiko [off-list ref]のメール:

On Thu, Jul 30, 2020 at 9:45 PM Yoshiki Komachi
[off-list ref] wrote:
quoted
This patch adds a simple example of XDP-based bridge with the new
bpf_fdb_lookup helper. This program simply forwards packets based
on the destination port given by FDB in the kernel. Note that both
vlan filtering and learning features are currently unsupported in
this example.

There is another plan to recreate a userspace application
(xdp_bridge_user.c) as a daemon process, which helps to automate
not only detection of status changes in bridge port but also
handling vlan protocol updates.

Note: David Ahern suggested a new bpf helper [1] to get master
vlan/bonding devices in XDP programs attached to their slaves
when the master vlan/bonding devices are bridge ports. If this
idea is accepted and the helper is introduced in the future, we
can handle interfaces slaved to vlan/bonding devices in this
sample by calling the suggested bpf helper (I guess it can get
vlan/bonding ifindex from their slave ifindex). Notice that we
don't need to change bpf_fdb_lookup() API to use such a feature,
but we just need to modify bpf programs like this sample.

[1]: http://vger.kernel.org/lpc-networking2018.html#session-1

Signed-off-by: Yoshiki Komachi <redacted>
---
Have you tried using a BPF skeleton for this? It could have saved a
bunch of mechanical code for your example. Also libbpf supports map
pinning out of the box now, I wonder if it would just work in your
case. Also it would be nice if you tried using BPF link-based approach
for this example, to show how it can be used. Thanks!
It is still under consideration, but these features seems to be useful for
this example.

I would try to apply them in the next version.

Thank you for giving me good advice.

Best regards,
quoted
samples/bpf/Makefile          |   3 +
samples/bpf/xdp_bridge_kern.c | 129 ++++++++++++++++++
samples/bpf/xdp_bridge_user.c | 239 ++++++++++++++++++++++++++++++++++
3 files changed, 371 insertions(+)
create mode 100644 samples/bpf/xdp_bridge_kern.c
create mode 100644 samples/bpf/xdp_bridge_user.c
[...]
—
Yoshiki Komachi
komachi.yoshiki@gmail.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help