Subject: Re: perhaps time to check our TCP against spec?
To: Jonathan Stone <jonathan@DSG.Stanford.EDU>
From: Kevin M. Lahey <kml@nas.nasa.gov>
List: tech-net
Date: 04/07/1998 13:53:20
In message <199804070615.XAA06239@Kowhai.Stanford.EDU>Jonathan Stone writes
>>In any case, the fix Kevin "just committed" really only affects you if
>>you're a sender, and are using a source route to reach the peer.
>
>That's npot what Kevin says.
>
>>Somewhat
>>before that, Kevin fixed a bug where, on retransmit, we'd end up sending
>>a large segment followed by a very small one, because the size of the TCP
>>options weren't properly accounted for (this was documented in known-problems
>)
>
>That's a much longer-standing bug.

Just to clear it up, I fixed three separate bugs:

1.  Segment size didn't take TCP options into account.  This resulted
    in bogus retransmissions of two packets instead of one, and
    in stretch ACKs before Jason's ACK every other fix.  This has
    been around, and documented, for long before I started looking
    at the stack.

2.  TCP connections could timeout in 12 seconds in some cases.
    This was a result of a mis-application of the Brakmo-Peterson
    retranmission timeout determination code.  I've never seen it
    documented (until I sent it in to tcp-impl), and it affects 
    at least FreeBSD, too, and probably OpenBSD as well.

3.  Segment size didn't take IP options into account.  This could
    result in either every segment going out in a pair of fragments,
    or a complete lossage if you have pmtu on.  This was not documented,
    and existed in lots of different OSes.

I sent a pullup request for fixes 1 & 2 so I hope it made it into 1.3.1
(although I sent it in pretty late), and I hope that fix 3 makes it 
into 1.3.2;  it needs a little work before it is ready for prime time.

Cheers,

Kevin