tcp_delack_min 的含义

Phi*_*Phi 5 linux tcp linux-kernel

当前的 Linux 内核(例如 2.6.36)使用延迟确认 (delack)。

/include/net/tcp.h它说:

定义 TCP_DELACK_MIN ((无符号)(HZ/25))

因此,对于使用 HZ 值为 1000 的内核,ACK 应至少延迟 40 毫秒。

然而,RFC 2581 说 TCP 实现应该确认每一个完整大小的段,而不会进一步延迟。

有没有人知道 Linux 内核是否遵循“应该”,或者 TCP_DELACK_MIN 值是否意味着即使在接收到完整大小的段之后,ACK 也会继续延迟直到 40 毫秒过去?

Phi*_*Phi 1

我研究了源代码。如果我没看错的话,Linux 应该遵循 RFC 2581。

相关代码包含在 tcp_input.c 中的函数__tcp_ack_snd_check()中。