[e2e] Are we doing sliding window in the Internet?

Joe Touch touch at ISI.EDU
Wed Jan 3 14:08:32 PST 2007



Wesley Eddy wrote:
> On Tue, Jan 02, 2007 at 10:07:48PM -0800, Joe Touch wrote:
>>
>> Lachlan Andrew wrote:
>>> Greetings,
>>>
>>> This is probably not related to the original thread (on what happens
>>> in real networks, as distinct from what *should* happen), but the word
>>> "bug" bugged me...
>>>
>>> On 02/01/07, Joe Touch <touch at isi.edu> wrote:
>> ...
>>>>> delayed ACKs (as Linux receivers don't when the window is small),
>>>> Delayed ACKs are strongly encouraged.
>>>> Both good reasons to fix these bugs in Linux.
>>> I don't follow the logic of that at all.
>> Please review RFC2581.
> 
> The exact wording in RFC 2581 says that ACKs should be sent "at least" for
> every 2 packets, which allows for an ACK to be sent for every packet, as
> Linux does when it assumes the other side is in slow start.  I believe the
> Linux behavior is perfectly allowable under the letter of RFC 2581.  I do
> not consider this behavior buggy whatsoever.

The exact wording from 2581:

   The delayed ACK algorithm specified in [Bra89] SHOULD be used by a
   TCP receiver.  When used, a TCP receiver MUST NOT excessively delay
   acknowledgments.  Specifically, an ACK SHOULD be generated for at
   least every second full-sized segment, and MUST be generated within
   500 ms of the arrival of the first unacknowledged packet.

The first sentence regards the use of delayed ACKs, which Bra89 defines as:
            A host that is receiving a stream of TCP data segments can
            increase efficiency in both the Internet and the hosts by
            sending fewer than one ACK (acknowledgment) segment per data
            segment received; this is known as a "delayed ACK" [TCP:5].

I.e., "delayed ACK" *means* sending fewer than one ACK per received
segment.

The second sentence from 2581 says not to excessively delay ACKs just do
do delays; the subsequent sentences refer situations that arise due to
holding back on ACKs.

The paragraph in its entirety means that
	- when there are no losses or substantial delays, TCP SHOULD
	ACK *exactly* every other packet

	- when there are losses or delays, more ACKs can be sent to
	avoid withholding feedback

Granted, 'every two' is a SHOULD not a MUST, but that's the only place
for Linux's behavior to be considered compliant. I don't see sufficient
reason in "well, it makes *us* go faster" to warrant overriding SHOULD.

> One separate thing to note with regards to ABC is that the RFC2581bis
> document in TCPM right now RECOMMENDS to increase CWND by the number of
> bytes ACKed during slow-start - i.e. ABC is RECOMMENDED by that document
> intended as an update to RFC 2581.

*When* that doc comes out, then the status of ABC may need to be
updated. Until then, widespread default use of ABC is not appropriate.

Joe

-- 
----------------------------------------
Joe Touch
Sr. Network Engineer, USAF TSAT Space Segment

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 250 bytes
Desc: OpenPGP digital signature
Url : http://mailman.postel.org/pipermail/end2end-interest/attachments/20070103/2a55e617/signature-0001.bin


More information about the end2end-interest mailing list