Subject: [lisp] IPv6 UDP Checksum Offload Hardware and Software

From: Margaret Wasserman <[email-masked]>
Date: Wed, 12 Aug 2009 12:57:21 -0400

I have been doing some web searches to determine what the  
implementation and deployment state is for IPv6 UDP checksum offload  
hardware and software, and I thought I would share my early findings  
as data for our discussions.  Unfortunately (for our purposes), IPv6  
UDP checksum offload seems to be very widely implemented and deployed.

Based on my web surfing, IPv6 UDP checksum offload is supported in the  
following operating systems (not an exhaustive list):

Windows XP and Vista with NDIS 6.x and higher (maybe in NDIS 5.x,  
sources are ambiguous)
Mac OS X and higher
Free BSD 4.5 and higher
Linux (I was not able to determine when this was added, and to which  
distributions)

There is some indication that Solaris 10 may support IPv6 UDP checksum  
offload, not confirmed by anything on the Sun site, though.

There are also many NICs that support UDP checksum offload for IPv6.   
It is not possible to tell, from their web sites, how they handle  
inbound zero checksums in IPv6, but it is very likely that at least  
some of them are implemented to correctly flag those packets as having  
a bad UDP checksum.

On some of these systems, it only seems to be possible to separately  
configure rx and tx chekcsum offloading.  On many of these systems, it  
is possible to separately control whether checksum offloading is  
enabled for:  IPv4 header rx checksum, IPv4 header tx checksum, UDP rx  
checksum, UDP tx checksum, TCP rx checksum, TCP tx checksum.  On some  
of these systems, it appears that you can separate control UDP and TCP  
checksum offloading for IPv4 and IPv6. In none of these systems is it  
possible to control UDP tx or rx checksum offloading for a single UDP  
protocol.

Margaret