TCP impl facts

Stefan Savage (savage@cs.washington.edu)
Thu, 7 Jan 1999 00:00:23 -0800

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