About TCP ACKing mechanism

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux