> On Oct 22, 2022, at 6:14 PM, Hans Petter Selasky <h...@selasky.org> wrote:
> 
> Hi,
> 
> Some thoughts about this topic.

Sorry for late response.

> 
> Delaying ACKs means loss of performance when using Gigabit TCP connections in 
> data centers. There it is important to ACK the data as quick as possible, to 
> avoid running out of TCP window space. Thinking about TCP connections at 30 
> GBit/s and above!

In data centers, the bandwidth is much more and the latency is extremely low 
(compared to WAN), sub-milliseconds .
The TCP window space is bandwidth multiply RTT. For a 30 GBit/s network it is 
about 750KiB . I think that is trivial for a
datacenter server.

4.2.3.2 in RFC 1122 states:
> in a stream of full-sized segments there SHOULD be an ACK for at least every 
> second segment 
Even if the ACK every tenth segment, the impact of delayed ACKs on TCP window 
is not significant ( at most
 ten segments not ACKed in TCP send window ).

Anyway, for datacenter usage the bandwidth is symmetric and the reverse path ( 
TX path of receiver ) is sufficient.
Servers can even ACK every segment (no delaying ACK).

> 
> I think the implementation should be exactly like it is.
> 
> There is a software LRO in FreeBSD to coalesce the ACKs before they hit the 
> network stack, so there are no real problems there.

I'm OK with the current implementation.

I think upper layers (or application) have (business) information to indicate 
whether delaying ACKs should be employed.
After googling I found there's a draft [1].

[1] Sender Control of Delayed Acknowledgments in TCP: 
https://www.ietf.org/archive/id/draft-gomez-tcpm-delack-suppr-reqs-01.xml

> 
> --HPS
> 
> 

Best regards,
Zhenlei

Reply via email to