FreeBSD 4.x and OS-X tcp performance

Daniel Hartmeier daniel at benzedrine.cx
Mon Mar 7 01:08:09 PST 2005


On Sun, Mar 06, 2005 at 04:45:30PM -0500, Charles Sprickman wrote:

> For fun I'm going to post a full tcpdump of an ftp session from one box to 
> the other, maybe someone can spot something there?  It's attached and 
> bzip'd.  It's a tcpdump of both hosts transferring a 1MB tarfile.

I can only find an FTP control connection and _one_ data connection in
that dump. Client 192.168.0.40 is uploading one file of about 1.6MB to
server home.manymonkeys.com.

There's a pattern in the dump, looks like a TCP problem. The client
pushes data to the server. Every now and then, packets are lost. Mostly,
the client retransmits normally. But ten times, it seems to ignore the
server ACKing below a lost segment. It quickly gets several ACKs but
only retransmits the lost segment after a full 1.4 seconds. This
accounts for a total of 14.5 seconds of stalling the upload. The entire
transfer is 15.02 seconds, so the 1.6MB are actually uploaded in 0.5
seconds, and the stalling entirely accounts for the slow throughput.

Looks like the client is at fault. There's window scaling, but with
scale factors 0. No SACK. I think the client should retransmit earlier.

Which OS is running on which of those hosts? Which host did you tcpdump
on (or was it on a third machine, in between)? Could you get a tcpdump
from both server and client simultanously for the same connection, so we
can see where packets are lost, and get both peers' point of view?

Would be interesting to see a tcpdump of a connection from the same
client (same OS) to a different server OS, which works fine.

Daniel


More information about the freebsd-net mailing list