Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 May 2021 11:08:18 +0000
From:      Francois ten Krooden <ftk@Nanoteq.com>
To:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Vector Packet Processing (VPP) portability on FreeBSD 
Message-ID:  <AB9BB4D903F59549B2E27CC033B964D6C4F8BECE@NTQ-EXC.nanoteq.co.za>

next in thread | raw e-mail | index | archive | help
Greetings

We have a vested interest in high-speed IPsec VPN on FreeBSD. We have start=
ed with the porting of VPP (https://fd.io/) to FreeBSD.

Currently we have VPP compiled and running with netmap. The speeds we measu=
re 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 "L=
inuxisms" that need porting to FreeBSD, but this is going reasonably well. =
We are working in a public Github repository and have started listing our i=
ssues 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 F=
reeBSD 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 integrati=
on 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 s=
ysfs 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.

Regards

Francois ten Krooden


Important Notice:

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





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AB9BB4D903F59549B2E27CC033B964D6C4F8BECE>