[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Notes on draft-crocker-mast-analysis-01.txt



On 31 okt 2003, at 4:38, Spencer Dawkins wrote:

If I send a segment that arrives out of order at the recipient, the
recipient decides that the "hole" may be a lost packet and begins
sending duplicate ACKs every time it receives a segment, until the
hole is filled in. When the sender receives the third duplicate ACK,
it says "oops, must be a lost packet", performs Fast Retransmit, and
then cuts its congestion window in half (Fast Recovery).

Yes, this is all in RFC 2001. Note that in the case of two identical pipes being used side by side, you're not going to see that that many successive duplicate acks because generally only one packet will pass another. Obviously with gigabit ethernet alongside with GPRS things are going to be somewhat different.


My point is that there are no fundamental properties that make it impossible for TCP to perform well in the presence of reordering. For instance, if additional memcopies would be required, that would be a big problem. But the design of the TCP/IP family of protocols and the way our kernels work is such that there must always be a copy cycle anyway, so no problems there.

In my experience, the measures taken to avoid reordering have been much more harmful than reordering itself ever was to begin with.

Implementations just need to change a bit to avoid unnecessary fast retransmits if they want to support using parallel links. I don't think this is a huge deal.

One thing that bothers me about TCP and that also doesn't do us any favors here is that it sends packet trains back-to-back all the time. This can at times be very harmful as it unnecessarily increases burstiness. Especially cheap switches that must convert between different ethernet speeds don't have the buffering to handle this properly.