Vector Packet Processing (VPP) portability on FreeBSD

Francois ten Krooden ftk at Nanoteq.com
Tue May 11 06:25:34 UTC 2021


On Monday, 10 May 2021 15:41 Jacques Fourie <jacques.fourie at gmail.com>
wrote:


> On Mon, May 10, 2021 at 8:42 AM Rainer Duffner <rainer at ultra-secure.de>
> wrote:
>
>
> > Am 10.05.2021 um 13:08 schrieb Francois ten Krooden
> <ftk at Nanoteq.com>:
> >
> > Greetings
> >
> > We have a vested interest in high-speed IPsec VPN on FreeBSD. We have
> started with the porting of VPP (https://fd.io/) to FreeBSD.
> >
> > Currently we have VPP compiled and running with netmap. The speeds we
> measure are nowhere near the performance of a 10Gbps link, at around
> 350kpps for 1500 byte IPv4 packets. We suspect the biggest issue is related
> to how VPP implements huge pages (Linux) and our modifications to support
> super pages on FreeBSD.
> >
> > Apart from the above, there are remaining issues we need to sort out and
> "Linuxisms" that need porting to FreeBSD, but this is going reasonably well.
> We are working in a public Github repository and have started listing our
> issues there alongside the code. Our main working branch is "freebsd"
> (https://github.com/ftk-ntq/vpp/tree/freebsd).
> >
> > Our aim with this mail is to get the discussion started on porting VPP to
> FreeBSD and to invite interested parties to help with the effort. We intend
> to upstream the work hoping that the original authors will adopt our ported
> code and continue maintaining future compatibility with FreeBSD.
> >
> > Some of our questions or comments to start the conversation:
> > 1. netmap vs. DPDK (VPP relies on DPDK by default with the netmap
> integration deprecated). Which will be the best to choose?
> > 2. How to correctly implement using super pages / huge pages in FreeBSD
> in order to allow VPP to allocate contiguous memory blocks for packet
> buffers to process packets from the packet handling framework
> (netmap/DPDK)?
> > 3. What are suitable alternatives for reading information from procfs and
> sysfs on FreeBSD?
> > 4. Functionality relying on Linux epoll is currently supported using epoll-
> shim. Is this the correct approach?
> >
> > Any help and input to aid in the effort will be greatly appreciated.
>
>
>
>
> IIRC, somebody from Netgate (pfSense) had porting this and/or DPDK as a
> „spare time project“.
>
> Not sure how far that actually proceeded. Maybe somebody else knows
> more?
>
>
> Thanks for your efforts, in any case.
> DPDK is already supported on FreeBSD :
> https://doc.dpdk.org/guides/freebsd_gsg/install_from_ports.html. It has
> been a long time since I tried using DPDK on FreeBSD but the basics should
> work.
I did have a look at the port of DPDK and you are correct the basics does work.
On FreeBSD however it seems to require the use of the contigmem driver to allocate memory.  Which is not a problem when DPDK is used on it's own.
However VPP has a lot of memory management code as well and I suspect there might be some issues with how VPP and DPDK handles their own memory.

>
>
>
>
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"


Important Notice:

This e-mail and its contents are subject to the Nanoteq (Pty) Ltd e-mail legal notice available at:
http://www.nanoteq.com/AboutUs/EmailDisclaimer.aspx


More information about the freebsd-net mailing list