Subject: Re: Skipping TCP / UDP / IP checksums on loopback traffic
To: Jason Thorpe <thorpej@shagadelic.org>
From: Jonathan Stone <jonathan@dsg.stanford.edu>
List: tech-net
Date: 10/25/2004 09:26:08
In message <B34B18F5-251A-11D9-B62B-000A957650EC@shagadelic.org>,
Jason Thorpe writes:


>There's no need to compute or check checksums for traffic over the 
>loopback interface.  The following patch makes it optional, and 
>defaults to "off".  Linux also skips checksums in this case, which 
>results in poor results for NetBSD compared to Linux in some 
>benchmarks.

>Comments?

Please let's not do this. I was present at a couple of dicssusions,
circa 1994/1995, between Linus Torvalds and varis people who had been
asking for better Internet checksum performance.  The Linux kernel
feature (not summing over loopback) got it *completely* wrong: the
requestors wanted better real-case numbers, not better benchmarking.

My take is, the benchmarks you allude to are deficient benchmarks.
The answer to *that* is better benchmarks (e.g., netperf, or lmbench's
network benchmark run over a point-to-point link between two hosts).

There were once benchmarks that measaured "syscall" overhead by
calling getpid() repeatedly. So certain OS vendors reworked their
userspace getpid(), to cache process-id in userspace and clear it on
(library) fork().  Eliding checksums on loopback, on the grounds that
``Linux does it'', strikes me as no different.

And (in case its not obvious): yes, I *do* have some interest in
network-throughput benchmarks over local-loopback. Personally, I'm
much less interested in those benchmarks if they elide checksumming.