Netmap Checksum Offloading

Dominik Schoeffmann schoeffm at in.tum.de
Tue Jun 14 15:14:57 UTC 2016


Dear Netmap Developers,

during the course of my bachelor's thesis, I modified a packet generator
called MoonGen [1] in order to utilize netmap.
One key component was to flexibly offload checksums for different kinds
of packets (IPv4, UDP, TCP).
The ixgbe netmap patch was modified [2] in order to construct context
descriptors and suitable data descriptors. This is implemented in less
than 250 LoC (including pseudo-header calculations).
The man page states, that checksum offloading is available via ethtool,
although a solution inside the netmap API might be a cleaner way for
applications to actually use these features.
Attached is a graph showing the performance implication of using
offloading in the current implementation.
As can be seen, offloading has only a minor impact.
When regarding this data (and comparing it to other frameworks), please
keep in mind, that internally a lot of per-packet effort is needed due
to the software architecture of the packet generator.

The question being:
Would it not make sense to include checksum offloading inside of netmap
in order to accomodate applications operating on layer 3 and above?
As these programs need to calculate the checksums in software, it would
be just as fast to move these calculations to the kernel for NICs
without checksum offloading support (and the kernel would act as a library).
The problem which currently is imposed by the fact, that netmap exports
the complete ring, is that context descriptors disrupt the data
descriptors, which is unpleasant for the application.
But you may find the data interesting nevertheless.


Best Regards,
Dominik Schoeffmann



[1] https://github.com/dschoeffm/MoonGen/tree/netmap
[2] https://github.com/dschoeffm/netmap/tree/mg-chksum-offloading

-------------- next part --------------
A non-text attachment was scrubbed...
Name: netmap-offloading.pdf
Type: application/pdf
Size: 11521 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20160614/d2e1f7c4/attachment.pdf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20160614/d2e1f7c4/attachment.sig>


More information about the freebsd-net mailing list