Cisco Support Community

TCP CWND reaction with Packet loss

Hi All,

While studying for CCIE R&S i found these 2 paragraphs which are misleading as each of them states a different reaction for TCP Packet loss:

Cisco Press IP Telephony Self-study Cisco QoS Exam Certification Guide

"Therefore, when a TCP sender fails to receive an acknowledgment, it reduces the CWND to a very low value (one segment size of window). This process is sometimes called slamming the window or slamming the window shut."

Cisco Press - CCIE Routing and Switching Official Exam Certification Guide

"For each lost segment, CWND is halved."

Any comments ?

Thanks in advance,



Re: TCP CWND reaction with Packet loss

Hi, in a TCP connection you have the transmision windows and a congestion window used in a congestion avoidance mechanism. When the sender has a timeout for an ACK or has a duplicate ACK (congestion at the network) then it sets its transmission window to one half of the current window size (this is not the CWND).

Depending on the reason of the congestion, you can have another parallel process. If the congestion is caused by a timeout you'll have the Slow Start,this mechanism use the congestion window (cwnd) and it sets it to one segment.


Hope this helps, if so pls rate post

Re: TCP CWND reaction with Packet loss


Thanks alot, but i've a couple of comments here:

The Cisco Press CCIE R&S book states that the CWND is halved at segment loss not the transmission window. Do you confirm that its a wrong phrase ?

I thought that losing a segment is the same as not ACK it, is there a difference ?

Thanks alot,



Re: TCP CWND reaction with Packet loss

Hi, I can't confirm or deny it because it the TCP congestion mechanism it can be very ambiguous depending on how are you explaining it, sometimes people try to simplified it and use the same name for some windows or variables. I think it's better to read carefully the RFC ( to have no doubt.

Yes, not ACK the segment it's the way of telling the sender that the receiver hasn't this segment. But if you receive a out-of-order segment you can return a duplicate ack to say to the sender that you have loss an intermediate segment.


Re: TCP CWND reaction with Packet loss


As Isabel said, the best reference is RFC 2581 - but it's not an easy read and is a long way from plain english - you need to be very careful about terminology.

If we take the statement "cwnd is halved at segment loss" then strictly speaking that statement is meaningless because we don't know what mode of operation we're talking about. For example, slow start will set the cwnd to 1 segment (probably) whereas fast retransmit will set the cwnd to half (plus 3 segments).

Losing a segment isn't quite the same thing as not acking it - there are two basic mechanisms for detecting lost segments, the first is where you hear nothing and your timer expires and the second is where you get a duplicate ack which may indicate either a lost segment or an out-of-order segment - the gory details are all in the RFC's.

Finally, I'd be very wary of anything you read in the ccie book - I was shocked at the number of mistakes in it.



Re: TCP CWND reaction with Packet loss

Just to consolidate the issue, after reading your replies and with more investigations i found the following in the TCP/IP Illustrated, Volume 1 Book:

"There are two indications of packet loss: a timeout occurring and the receipt of duplicate ACKs."

"When congestion occurs (indicated by a timeout or the reception of duplicate ACKs), one-half of the current window size (the minimum of cwnd and the receiver's advertised window, but at least two segments) is saved in ssthresh. Additionally, if the congestion is indicated by a timeout, cwnd is set to one segment (i.e., slow start).

The last parapgraph is justified with the next paragraph from the Cisco Press CCIE study Guide:

"Because multiple segments were lost, the TCP sender halved CWND multiple times, and in this case, CWND was lowered to its minimum value?a single MSS. Before lowering CWND, the sender calculated a variable called Slow Start Threshold (SSThresh), which is half of the original CWND before segments were lost."

Conclusion --> If the packet loss was due to timeout --> The CWND will be haved multiple times, till reaching the minimum value (single MSS, it can't go under this value, and it should go further in a slow start), other wise it will be just haved (mainly when receiving a duplicate ACK)

Just to confirm --> Does timeout = ACK for a segment is not recieved in a well defined time ?

The sliding window algorithm states that TCP uses the minimum of CWND and Receiver Window --> I think that the CWND is always considered as i think that it will always be the least, am i correct ?

Thank you very much Isabel and Andrew for helping me out here, and waiting for your comments and feedback.



CreatePlease to create content