Vector Packet Processing (VPP) portability on FreeBSD

Luigi Rizzo rizzo at iet.unipi.it
Thu May 13 12:57:24 UTC 2021


On Thu, May 13, 2021 at 1:27 PM Francois ten Krooden <ftk at nanoteq.com> wrote:
>
>
> On Thursday, 13 May 2021 13:05 Luigi Rizzo wrote:
> >
> > On Thu, May 13, 2021 at 10:42 AM Francois ten Krooden
> > <ftk at nanoteq.com> wrote:
> > >
> > > Hi
> > >
> > > Just for info I ran a test using TREX (https://trex-tgn.cisco.com/)
> > > Where I just sent traffic in one direction through the box running  FreeBSD
> > with VPP using the netmap interfaces.
> > > These were the results we found before significant packet loss started
> > occuring.
> > > +-------------+------------------+
> > > | Packet Size | Throughput (pps) |
> > > +-------------+------------------+
> > > |   64 bytes  |   1.008 Mpps     |
> > > |  128 bytes  |   920.311 kpps   |
> > > |  256 bytes  |   797.789 kpps   |
> > > |  512 bytes  |   706.338 kpps   |
> > > | 1024 bytes  |   621.963 kpps   |
> > > | 1280 bytes  |   569.140 kpps   |
> > > | 1440 bytes  |   547.139 kpps   |
> > > | 1518 bytes  |   524.864 kpps   |
> > > +-------------+------------------+
> >
> > Those numbers are way too low for netmap.
> >
> > I believe you are either using the emulated mode, or issuing a system call on
> > every single packet.
> >
> > I am not up to date (Vincenzo may know better) but there used to be a sysctl
> > variable to control the operating mode:
> >
> > https://www.freebsd.org/cgi/man.cgi?query=netmap&sektion=4
> >
> > SYSCTL VARIABLES AND MODULE PARAMETERS
> >      Some aspects of the operation of netmap and VALE are controlled
> > through
> >      sysctl variables on FreeBSD (dev.netmap.*) and module parameters on
> > Linux
> >      (/sys/module/netmap/parameters/*):
> >
> >      dev.netmap.admode: 0
> >      Controls the use of native or emulated adapter mode.
> >
> >      0 uses the best available option;
> >
> >      1 forces native mode and fails if not available;
> >
> >      2 forces emulated hence never fails.
> >
> > If it still exists, try set it to 1. If the program fails, then you should figure out
> > why native netmap support is not compiled in.
>
> Thank you.  I did set this to 1 specifically now and it still works.  So then it should be running in native mode.
>
> I will dig a bit into the function that processes the incoming packets.
> The code I currently use was added to VPP in somewhere before 2016, so it might be that there is a bug in that code.

Then try to instrument the code and see how many packets
you are getting on every RXSYNC system call.

If the value is mostly/always 0-1 then there is some bug
with the (user) code that frees slots in the queue.

cheers
luigi

>
> Will try and see if I can find anything interesting there.
>
> >
> > cheers
> > luigi
> >
>
>
>
> 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



-- 
-----------------------------------------+-------------------------------
 Prof. Luigi RIZZO, rizzo at iet.unipi.it  . Dip. di Ing. dell'Informazione
 http://www.iet.unipi.it/~luigi/        . Universita` di Pisa
 TEL      +39-050-2217533               . via Diotisalvi 2
 Mobile   +39-338-6809875               . 56122 PISA (Italy)
-----------------------------------------+-------------------------------


More information about the freebsd-net mailing list