Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Jul 2000 23:22:26 -0600
From:      "Kenneth D. Merry" <ken@kdm.org>
To:        net@FreeBSD.ORG
Subject:   new zero copy sockets and NFS patches
Message-ID:  <20000708232226.A12332@panzer.kdm.org>

next in thread | raw e-mail | index | archive | help
[ -arch and -current BCC'ed for wider coverage, please direct followups to
-net and/or me ]

I have put a new copy of the zero copy sockets and NFS patches, against
-current as of early July 8th, 2000, here:

http://people.FreeBSD.ORG/~ken/zero_copy/

Feedback would be very welcome, we haven't gotten much response on this
yet.

Besides being generated against a newer version of -current, the following
things have changed in the new patches posted above:

 - There was a potential panic caused by a bug in the driver side of the
   header splitting code.  The bug only popped up with non-split packets
   that were long enough to fill up a mbuf.

   This generally meant IP fragments with a non-zero fragment offset,
   usually generated by NFS reads.  Essentially the length of the initial
   receive buffer in the mbuf chain was overstated by two bytes, which
   caused the next mbuf pointer in the next contiguous mbuf to get partially
   overwritten.  That could cause a panic in some situations.  Thanks to
   Drew Gallatin for tracking this one down.

 - We now do header splitting on IP fragments with a fragment offset greater
   than 0.  Thanks to Justin Gibbs for the idea.

 - The Tigon driver now loads and unloads cleanly.  Thanks to Drew Gallatin
   for getting this working.

 - Outgoing IP fragments are now generated in page-multiple chunks if the
   outgoing interface's MTU is greater than a page in size.  This helps
   receive-side bandwidth NFS significantly, since page flipping techniques
   can be used.  Thanks to Drew Gallatin for this performance enhancement.

Also, there are some new benchmark results in the benchmarks section of the
web page -- Drew Gallatin has achieved 986Mbps TCP throughput with netperf,
and 100MB/sec throughput over NFS.  See the web page for a more detailed
explanation of the hardware, conditions, etc.

For those of you who missed the first message about this code (that went
out to -net, -arch and -current), here's a quick list of what is included
in the code:

 - Two sets of zero copy send code, written by Drew Gallatin
   <gallatin@FreeBSD.ORG> and Robert Picco <picco@wevinc.com>.

 - Zero copy receive code, written by Drew Gallatin.

 - Zero copy NFS code, written by Drew Gallatin.

 - Header splitting firmware for Alteon's Tigon II boards (written by me),
   based on version 12.4.11 of their firmware.  This is used in combination
   with the zero copy receive code to guarantee that the payload of TCP or
   UDP packet is placed into a page-aligned buffer.

 - Alteon firmware debugging ioctls and supporting routines for the Tigon
   driver (also written by me).  This will help anyone who is doing
   firmware development under FreeBSD for the Tigon boards.

Ken
-- 
Kenneth Merry
ken@kdm.org


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




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