From: Eric Dumazet <eric.dumazet@gmail.com>
To: Joris van Rantwijk <joris@jorisvr.nl>
Cc: netdev@vger.kernel.org
Subject: Re: Question about LRO/GRO and TCP acknowledgements
Date: Sun, 12 Jun 2011 12:48:18 +0200 [thread overview]
Message-ID: <1307875698.2872.130.camel@edumazet-laptop> (raw)
In-Reply-To: <20110612113004.79f48f40@konijn>
Le dimanche 12 juin 2011 à 11:30 +0200, Joris van Rantwijk a écrit :
> On 2011-06-12, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > > As far as I can see, current code will send just one ACK per
> > > coalesced GRO bundle, while the sender expects one ACK per two
> > > segments.
>
> > One ACK carries an implicit ack for _all_ previous segments. If sender
> > only 'counts' ACKs, it is a bit dumb...
>
> It may be dumb, but it's what the RFCs recommend and it's what Linux
> implements.
>
> RFC 5681:
> "During slow start, a TCP increments cwnd by at most SMSS bytes for
> each ACK received that cumulatively acknowledges new data."
>
Note also RFC says:
The RECOMMENDED way to increase cwnd during congestion avoidance is
to count the number of bytes that have been acknowledged by ACKs for
new data.
So your concern is more a Sender side implementation missing this
recommendation, not GRO per se...
GRO kicks when receiver receives a train of consecutive frames in his
NAPI run. In order to really reduce number of ACKS, you need to receive
3 frames in a very short time.
This leads to the RTT rule : "Note that during congestion avoidance,
cwnd MUST NOT be increased by more than SMSS bytes per RTT"
So GRO, lowering number of ACKS, can help sender to not waste its time
on extra ACKS.
next prev parent reply other threads:[~2011-06-12 10:48 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-11 19:59 Question about LRO/GRO and TCP acknowledgements Joris van Rantwijk
2011-06-12 3:43 ` Ben Hutchings
2011-06-12 7:51 ` Joris van Rantwijk
2011-06-12 9:07 ` Eric Dumazet
2011-06-12 9:30 ` Joris van Rantwijk
2011-06-12 10:48 ` Eric Dumazet [this message]
2011-06-12 11:24 ` Joris van Rantwijk
2011-06-12 12:01 ` Alexander Zimmermann
2011-06-12 14:57 ` Eric Dumazet
2011-06-12 19:37 ` Joris van Rantwijk
2011-06-14 10:53 ` Ilpo Järvinen
2011-06-14 19:37 ` Joris van Rantwijk
2011-06-13 17:55 ` Rick Jones
2011-06-13 17:34 ` Rick Jones
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=1307875698.2872.130.camel@edumazet-laptop \
--to=eric.dumazet@gmail.com \
--cc=joris@jorisvr.nl \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox