Netmap Checksum Offloading

2016-06-14 Thread Dominik Schoeffmann
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



netmap-offloading.pdf
Description: Adobe PDF document


signature.asc
Description: OpenPGP digital signature


Re: Netmap Checksum Offloading

2016-06-15 Thread Dominik Schoeffmann
Is the checksum offloading patch for the igb(4) driver available online?
(I could not find it)
I would really like to take a look at it, espacially the context
descriptor part of it.

Best regards,
Dominik

On 16.06.2016 02:04, Jim Thompson wrote:
> 
> Luiz Otavio O Souza (loos@) developed these for igb(4) and, by extension, 
> em(4) for use in netmap-fwd.
> 
> He’s just gone back to Brazil with 82599 ixgb(4) hardware.  I’m sure he’ll 
> develop similar patches for ixgb(4) in the near future.
> 
> Chelsio is also “on the list”, but I figured I’d speak to np@ about it first. 
>  ;-)  
> We might do ixl(4) as well.  
> 
> Before Luiz retired to Brazil, we discussed upstreaming these to FreeBSD.  
> We’re committed to make it happen, but I doubt they make 11.
> 
> Jim
> 
>> On Jun 15, 2016, at 6:50 PM, Navdeep Parhar  wrote:
>>
>> On 06/15/2016 16:15, Andrey Yakovlev wrote:
>>> ive heard on bsdcan this year that some patches exist to add hwcsum 
>>> offloading to netmap, hope to see it chelsio at least
>>
>> cxgbe/cxl is a bit sneaky and will let you override netmap (on tx only).
>> The ncxl interfaces declare themselves capable of checksumming but all
>> such capabilities are disabled by default.  Just enable txcsum on the
>> interface and the hardware will do checksum insertion on tx.  No way to
>> solve the rx part entirely within the driver -- netmap has to be willing
>> to accept checksum related flags from the driver.
>>
>> Regards,
>> Navdeep
>>
>>>
>>> -- 
>>> ./andy
>>>
>>>
>>> 14.06.2016, 12:15, "Dominik Schoeffmann" :
>>>> 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
>>> ___
>>> freebsd-net@freebsd.org mailing list
>>> https://lists.freebsd.org/mailman/listinfo/freebsd-net
>>> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
>>>
>>
>> ___
>> freebsd-net@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-net
>> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
> 



signature.asc
Description: OpenPGP digital signature