Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Sep 2001 12:31:12 -0400
From:      "Louis A. Mamakos" <louie@TransSys.COM>
To:        Andrew Gallatin <gallatin@cs.duke.edu>
Cc:        Ronald G Minnich <rminnich@lanl.gov>, hackers@FreeBSD.ORG
Subject:   Re: TCP&IP cksum offload on FreeBSD 4.2 
Message-ID:  <200109271631.f8RGVCZ65964@whizzo.transsys.com>
In-Reply-To: Your message of "Thu, 27 Sep 2001 10:35:36 EDT." <15283.14648.430630.163513@grasshopper.cs.duke.edu> 
References:  <Pine.LNX.4.33.0109270728220.26552-100000@snaresland.acl.lanl.gov> <200109271416.f8REGaZ64624@whizzo.transsys.com> <15283.14648.430630.163513@grasshopper.cs.duke.edu> 

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> Louis A. Mamakos writes:
>  > The other type of failure you might not catch are software errors; that
>  > is, where a packet is produced by the network stack and then is
>  > subsequently stomped on by a random store from some other code.  Or
>  > a mis-programmed I/O card with scatter/gather capability doesn't pick 
>  > up what was intended, etc.  The Internet checksum is useful for
>  > detecting this class of error.
>  > 
> 
> No, you're missing the point almost entirely.  The checksum is not
> skipped.  It is calculated by the DMA engine based on the data that's
> transferred across the I/O bus on the receiver (and / or the sender).
> If the data is incorrect as seen by the receiving nic, the checksum
> will be wrong and the packet will be dropped.

I was referring to the case on the transmit side where the wrong
data get's gathered up by the DMA engine because of software related
errors.  You get a valid checksum, but for the wrong data.  You might
have the wrong data because a drive screwed up setting the DMA descriptors,
or some other I/O transfer splatted over the buffer waiting in a 
transmit queue.

> If the packet lands in the wrong place, you have much worse problems. 

Sure you do; a software checksum at least gives you an opportunity to 
detect these failures.

While these are improbable failures, I know that I've experienced the
class I described in my years of hacking on network platforms, and
Ron has experienced the one he described.  These are not impossible
occurances; it's a matter of weighing the additional cost of the
software checksum vs. the likelyhood (and cost/impact) of undetected
corruption of the data. 

If you're running IPSEC or SSL up above all this, there's another 
mechanism to detect these types of failures. 

I just think back 10 or 15 years at the impact of Sun's decision to
not compute UDP checksums on their NFS traffic, because the network
adapter had a much stronger Ethernet CRC.  It was a trade-off not
worth making even then, with CPUs in the single-digit MIPS performance.
We ought to at least consider the previous experience.

louie


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200109271631.f8RGVCZ65964>