RE: TCP impl facts

Stefan Savage (savage@cs.washington.edu)
Thu, 7 Jan 1999 16:01:26 -0800

With Neal's masterful assistance, this now works fine with Linux. It
turns out to be an error on my part (my ack numbers were off... linux is
just fussier than other systems).

- Stefan

-----Original Message-----
From: Stefan Savage [mailto:savage@cs.washington.edu]
Sent: Thursday, January 07, 1999 12:00 AM
To: syn
Cc: Alec Wolman
Subject: TCP impl facts

To make the burst stuff work in sting I relied on the fact that TCP
implementations are supposed to respond immediately to out-of-order data
packets. That's the theory. Here's the reality:

The good
------------
FreeBSD: works fine
Digital Unix: works fine
IRIX: works fine
Solaris: works fine
SunOS (>4.1.2): works fine
HP Laserjet printers: works fine
AIX (3.2.5): works fine
Windows NT: works fine
SPIN: works fine (go mef!)

The bad (well, not that bad actually)
--------------------------------------------
Cisco/IOS: pretty much works... extra ack from receiver initiated close
on port 79
NetBSD: extra ack bug (sends extra ack after last data packet)

The ugly
----------
SunOS (< 4.1.3): no eager acking
Kodak printers: no eager acking
Phaser printers: acks too few packets, then crashes (oops)
Linux: has the extra ack bug like netbsd. However, also has a serious
other bug. Sometimes linux doesn't ack out-of-order data at all!!!!

The extra acks problems are dealable. However, the problem where linux
doesn't ack OO data could be quite a pain in the rear. I take some
comfort in the fact that the big web servers I checked (microsoft.com,
amazon.com, excite.com, cnn.com, sun.com, sgi.com, ibm.com) all work the
correct way (presumably they're not running linux). If the linux bug
can't be addressed, I'll have to resort to non-burst timeout mode for
linux endpoints.

- Stefan