About TCP ACKing mechanism
From: Rafael Barbosa
Date: Fri May 22 2009 - 11:18:11 EST
Hello all,
I am interested in the implementation of the TCP on the linux kernel.
I am running kernel 2.6.28-11, but I think the part of the code I am
looking in had not big changes for some time. I am interested in
discover situations that trigger an ACK. More specifically when data
is download from a server and pure acks (no user data) are upload in
reply. I am analyzing a number of TCP connections of this type and is
important for me to be sure what situations trigger an ACK.
I see that upon the receipt of an data, the client decides if an ACK
should be sent using tcp_input.c/__tcp_ack_snd_
check .
If am not mistaken, a delayed ack is triggered unless:
- data received is out of order
- tcp is in quick mode
- more than MSS of data is received
This last option (more than MSS of data is received), which probably
refers to the part of RFC that states that every second data segment
should be ACKnowlodge. I have 3 questions:
1) What the part of the code "__tcp_select_window(sk) >= tp->rcv_wnd"
exactly does?
This is part of the first condition of __tcp_ack_snd_check
2) What can cause an ACK being sent in reply to more than 2 data packets?
On my traces I see one ACK being sent in reply to 3,4,5,6 packets in
interval much smaller (<1ms) than TCP_ATO_MIN.
3) Is there another situations that one ACK is sent before the delayed
ACK timer expires?
Thanks,
Rafael Barbosa
--
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html