Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

the current Linux Kernel (e.g. 2.6.36) uses Delayed Acknowledgments (delack).

In /include/net/tcp.h it says:

define TCP_DELACK_MIN ((unsigned)(HZ/25))

So, for a Kernel using a HZ value of 1000, an ACK should be delayed by a minimum of 40 ms.

However, RFC 2581 says a TCP implementation should acknowledge every second full sized segment without further delay.

Does anybody know whether the Linux Kernel follows that 'should' or whether the TCP_DELACK_MIN value means that even after a full sized segment was received, the ACK continues to be delayed until 40 ms have passed?

share|improve this question
up vote 1 down vote accepted

I researched in the source code. If I read it correctly, Linux follows the SHOULD of RFC 2581.

The relevant piece of code is contained in the function __tcp_ack_snd_check() in tcp_input.c.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.