Subject: Re: [PATCH bpf-next 0/5] Extend libbpf to support shared umems and Rx|Tx-only sockets

From: William Tu <[email-masked]>
Date: Fri, 8 Nov 2019 06:57:38 -0800

On Thu, Nov 07, 2019 at 06:47:35PM +0100, Magnus Karlsson wrote:
> This patch set extends libbpf and the xdpsock sample program to
> demonstrate the shared umem mode (XDP_SHARED_UMEM) as well as Rx-only
> and Tx-only sockets. This in order for users to have an example to use
> as a blue print and also so that these modes will be exercised more
> frequently.
> 
> Note that the user needs to supply an XDP program with the
> XDP_SHARED_UMEM mode that distributes the packets over the sockets
> according to some policy. There is an example supplied with the
> xdpsock program, but there is no default one in libbpf similarly to
> when XDP_SHARED_UMEM is not used. The reason for this is that I felt
> that supplying one that would work for all users in this mode is
> futile. There are just tons of ways to distribute packets, so whatever
> I come up with and build into libbpf would be wrong in most cases.
> 
Hi Magnus,

Thanks for the patch.
I look at the sample code and it's sharing a umem among multiple queues in
the same netdev. Is it possible to shared one umem across multiple netdevs?

For example in OVS, one might create multiple tap/veth devices (using skb-mode
or native-mode). And I want to save memory by having just one shared umem for
these devices.

Thanks
--William

> This patch has been applied against commit 30ee348c1267 ("Merge branch 'bpf-libbpf-fixes'")
> 
> Structure of the patch set:
> 
> Patch 1: Adds shared umem support to libbpf
> Patch 2: Shared umem support and example XPD program added to xdpsock sample
> Patch 3: Adds Rx-only and Tx-only support to libbpf
> Patch 4: Uses Rx-only sockets for rxdrop and Tx-only sockets for txpush in
>          the xdpsock sample
> Patch 5: Add documentation entries for these two features
> 
> Thanks: Magnus
> 
> Magnus Karlsson (5):
>   libbpf: support XDP_SHARED_UMEM with external XDP program
>   samples/bpf: add XDP_SHARED_UMEM support to xdpsock
>   libbpf: allow for creating Rx or Tx only AF_XDP sockets
>   samples/bpf: use Rx-only and Tx-only sockets in xdpsock
>   xsk: extend documentation for Rx|Tx-only sockets and shared umems
> 
>  Documentation/networking/af_xdp.rst |  28 +++++--
>  samples/bpf/Makefile                |   1 +
>  samples/bpf/xdpsock.h               |  11 +++
>  samples/bpf/xdpsock_kern.c          |  24 ++++++
>  samples/bpf/xdpsock_user.c          | 158 ++++++++++++++++++++++++++----------
>  tools/lib/bpf/xsk.c                 |  32 +++++---
>  6 files changed, 195 insertions(+), 59 deletions(-)
>  create mode 100644 samples/bpf/xdpsock.h
>  create mode 100644 samples/bpf/xdpsock_kern.c
> 
> --
> 2.7.4