Subject: Re: PFCP support in kernel

From: Harald Welte <[email-masked]>
Date: Thu, 10 Mar 2022 18:48:47 +0100

Hi Wojciech,

On Thu, Mar 10, 2022 at 03:24:07PM +0000, Drewek, Wojciech wrote:

> > I'm sorry, I have very limited insight into geneve/vxlan.  It may
> > be of interest to you that within Osmocom we are currently implementing
> > a UPF that uses nftables as the backend.  The UPF runs in userspace,
> > handles a minimal subset of PFCP (no qos/shaping, for example), and then
> > installs rules into nftables to perform packet matching and
> > manipulation.  Contrary to the old kernel GTP driver, this approach is
> > more flexible as it can also cover the TEID mapping case which you find
> > at SGSN/S-GW or in roaming hubs.  We currently are just about to
> > complete a prof-of-concept of that.
> 
> That's interesting, I have two questions:
> - is it going to be possible to math packets based on SEID?

I'm sorry, I'm not following you.  The SEID I know (TS 29.244 Section 5.6.2)
has only significance on the PFCP session between control and user plane.

The PFCP peers (e.g. SMF and UPF in a PGW use case) use the SEID to
differentiate between different PFCP sessions.

IMHO this has nothing to do with matching of user plane packets in the
actual UFP?

> - any options for offloading this nftables  filters to the hardware?

You would have to talk to the netfilter project if there are any related
approaches for nftables hardware offload, I am no longer involved in
netfilter development for more than a decade by now.

In the context of the "osmo-upf" proof-of-concept we're working on at
sysmocom, the task is explicitly to avoid any type of hardware
acceleration and to see what kind of performance we can reach with a
current mainline kernel in pure software.

-- 
- Harald Welte <[email-masked]>           http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
                                                  (ETSI EN 300 175-7 Ch. A6)