From: jean-pascal billaud <billaud@vmware.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi>
Cc: Netdev <netdev@vger.kernel.org>
Subject: Re: delayed ack timer, slow start and LRO
Date: Wed, 23 Jul 2008 10:58:28 -0700 [thread overview]
Message-ID: <48877144.3090006@vmware.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0807231439390.13775@wrl-59.cs.helsinki.fi>
> On Tue, 22 Jul 2008, jean-pascal billaud wrote:
>
> Some corrections to assumptions below...
>
>
>> I have a question related to the interaction between the delayed ack
>> timer, slow start and LRO.
>>
>> If the sender is doing a slow start, it is going to send one packet. The
>> receiver's delayed ack timer is going to
>> kick in and when it expires it will send a ack.
>>
>> Then the sender is going to send 2 packets now. LRO will aggregates them
>> and the receiver's delayed ack timer is going
>> to kick in, hoping another packet will arrives which is not going to be
>> the case. When the timer expires it is going to
>> send a ack.
>>
>
> What makes you think so? ...please see conditions in
> __tcp_ack_snd_check(). ...and like somebody else mentioned, there are
> quickacks in the picture as well (aka. Delayed ACK After Slow-Start,
> DAASS).
>
Ok. I found the quickack mode bound by TCP_MAX_QUICKACKS, so by knowing that my assumptions
are not correct anymore. I am going to check if BSD has the same behavior.
>
>> The sender is now going to send 4 packets. LRO will aggregate them and
>> the receiver's delayed ack timer is going to
>> kick in, hoping another packet will arrives which is not going to be the
>> case. When the timer expires it is going to
>> send a ack.
>>
>
> Likewise, though in here tcp_max_burst would prevent as large growth as
> without lro (in other slow-starts than the initial one).
>
>
>> The sender is now going to send ... So I am under the impression that
>> due to the fact that LRO is aggregating packets,
>> the delayed ack timer will kick in every single time.
>>
>> So how is this fixed in linux ? I believe that ABC implementation will
>> fix this issue even if I am not completely sure
>> about that ?
>>
>
> ABC is nowadays disable by default because it was found to annoy small
> segment sending folks enough for them to periodically to come up
> complaining with that "discovery" on netdev... :-) ...ABC is not
> that necessary in Linux anyway because Linux' segment based counting is
> not vulnerable to same kind of problems that byte-based approach would
> be. Faster window growth during slow-start could be done without ABC
> though nobody has yet stepped in to do that (though I just got an idea
> while writing how to do that cleanly :-)).
>
>
>> Also as LRO adds some latency, it seems possible to me that the sender
>> retransmission timer will expires before the
>> delayed ack timer expires.
>>
>
> In theory yes, but in reality that shouldn't happen since RTT is
> calculated so that it would include the delayed ACK delays.
>
>
>> In this case, how is this gonna work ? Is it
>> possible that the sender will stay stuck in
>> its slow start trying to retransmit endlessly the same n packets ?
>>
>
> It wouldn't anyway, because receiver would ACK out-of-order (a duplicate
> below window) segments immediately. ...And we would resort FRTO in between
> too and RTO would be declared spurious and TCP would continue sending
> new data.
>
>
> --
> i.
>
thanks for your help,
--jp
next prev parent reply other threads:[~2008-07-23 18:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-22 22:05 delayed ack timer, slow start and LRO jean-pascal billaud
2008-07-23 10:41 ` Hagen Paul Pfeifer
2008-07-23 17:38 ` jean-pascal billaud
2008-07-23 12:01 ` Ilpo Järvinen
2008-07-23 17:58 ` jean-pascal billaud [this message]
-- strict thread matches above, loose matches on Subject: below --
2008-07-22 21:58 jean-pascal billaud
2008-07-22 21:44 jean-pascal billaud
2008-07-22 22:11 ` Evgeniy Polyakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48877144.3090006@vmware.com \
--to=billaud@vmware.com \
--cc=ilpo.jarvinen@helsinki.fi \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.