netmap custom RSS and custom packet info
Luigi Rizzo
rizzo at iet.unipi.it
Mon Jun 29 16:05:44 UTC 2015
On Mon, Jun 29, 2015 at 5:17 PM, Slawa Olhovchenkov <slw at zxy.spb.ru> wrote:
> Working with netmap and modern hardware I am lacking some features:
>
> a) some spare space before packet (64/128/192/256 bytes) for
> application data. For example: application do some pre-analysig
> packet, filled structure in this space and routed packet (via NETMAP
> pipe) to other thread. Received thread got packet and linked
> inforamtion about this packet for processing w/o additional overhead.
>
spare space in front of the packet is something we have
been considering for a different purpose, namely better
support for encapsulation/decapsulation and things like
vhost-net header.
Note though that the annotation is transferred for free
only in the case of pipes or ports sharing the same memory
region; vale ports would have to explicitly copy the
extra bytes which is (moderately) expensive.
A quick and dirty way to support what you want is the following:
- in the kernel code, modify NMB(), PNMB() and the offset between
the netmap_ring and the first buffer to add the extra space
you want in front of the packet. You can possibly make this
offset a sysctl-controlled value
- in netmap_vale.c, make a small change to the code that copies
buffers so that it includes also the space before the actual packet.
That should be all.
> b) custom RSS. Modern NIC have RSS poorly interoperable with packet
> analysing: packets from same flow, but different direction placed in
> different queue, PPPoE encapsulated packets placed in queue 0,
> different tunneling don't recognised and etc. May be NETMAP can be
> used custom RSS hashing from loadable kernel module, provideng by
> user? Function frm this module can be packet analysing, tunnel
> removing, custom RSS hashnig with direction-independly maner, filled
> some structure prepended to buffer (see above) and pass this
> information to application.
>
RSS is completely orthogonal to
netmap and I strongly
suggest to keep it this way, using either use the NIC-specific
tools to control RSS or some generic mechanism
(on linux there is ethtool, and we should implement something
similar also on freebsd).
cheers
luigi
> This is possible? This is useful not only to me?
>
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
>
--
-----------------------------------------+-------------------------------
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