I've just some question regarding TCP congestion avoidance algorithm.
- First of all I'm looking for explanation of, why the part of congestion avoidance algorithm is called "fast recovery"? I mean I cannot find any good reason for it, seems like it doesn't really that fast recovery.
- I'm reading the book of Douglas E. Comer "Networking with TCP/IP" and there is statement where said that although TCP SACK and New Reno is about the same, still SACK is preferable, but there is no good reasonable explanation why, so I would be appreciated for helping me figuring it out.
Fast recovery allow the TCP window to be reduce by 2 instead of restarting to its initial value when you're experiencing loss. It's called fast recovery because it avoid to do a slow start. (so it's "faster").
SACK is better when you have lot of loss (many packet from a same TCP window) but New Reno is designed to be use on computer supporting, or not supporting SACK.
Wikipedia and RFC's are good reference regarding Congestion Avoidance and I don't want to copy/paste then or rephrase them less cleary.
You can read : Congestion Avoidance in TCP http://en.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm About FastRecovery/NewReno : rfc3782 and http://en.wikipedia.org/wiki/Slow-start#fast-recovery About SACK : rfc2018 and http://en.wikipedia.org/wiki/Retransmission_(data_networks)#SACK