Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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
add comment

1 Answer

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
add comment

Your Answer

 
discard

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.