TCP-FACK and CWND

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

 



Hi there,
A question related to TCP-FACK, which is a default in Linux:

In FACK, the holes between SACK blocks are considered as loss. To a
sender, when SACK comes in, loss_out would be non-zero. According to
linux-2.6.17.7/net/ipv4/tcp_input.c, function tcp_time_to_recover(),
this non-zero
loss_out will send the sender into "Recovery" state, in which, CWND could
be reduced. In one word, it seems that, FACK would allow SACK holes to
reduce CWND.

However, in the paper "Congestion Control in Linux TCP", Section 3,
subsection Recovery, it says that
Recovery state is triggered by "sufficient amount of successive duplicate
ACK", to my understand, that means 3-dup. And in Section 3, subsection
Disorder, it is also mentioned, SACK cause the sender move into this state.
Therefore, I suppose it means SACK holes won't reduce CWND, they merely
trigger fast_retrans and fast_recover. Even in the net/ipv4/tcp_input.c file, in
the large block of comment right above the function tcp_time_to_recover(),
it is also mentioned, CWND should only changed by "claasic VJ rules", which
again means, CWND should only changes to 3-dup (or timeout).

So, which is correct? The implementation, or the document? Or most probabally,
am I wrong somewhere?

Thank you guys!

malin
-
: 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