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