edited by
23,615 views
61 votes
61 votes

Suppose that the maximum transmit window size for a TCP connection is $12000$ $\text{bytes}$. Each packet consists of $2000$ $\text{bytes}$. At some point in time, the connection is in slow-start phase with a current transmit window of $4000$ $\text{bytes}$. Subsequently, the transmitter receives two acknowledgments. Assume that no packets are lost and there are no time-outs. What is the maximum possible value of the current transmit window?

  1. $4000$ $\text{bytes}$
  2. $8000$ $\text{bytes}$
  3. $10000$ $\text{bytes}$
  4. $12000$ $\text{bytes}$
edited by

10 Answers

7 votes
7 votes

We know that In slow-start phase, for each ACK, the sender increases the current transmit window exponentially.

We are given that maximum transmit window size for a TCP Conn = 12000 B.

Now as per question due to congestion, the TCP Conn would come to slow-start phase which is:

 

TCP THRESHOLD WINDOW SIZE NEW = TCP CURRENT WINDOW SIZE / 2 

 =>   12000/2 = 6000 Bytes.

 

The current window size has been incremented to 4000 B which is <  TCP THRESHOLD WINDOW SIZE ( 6000 B )

 

Now we are given a scenario after these actions have been performed.

 

We send two packets and then we receive ACK of them one by one.

As per question before any ACK came out of these two packets TCP CURRENT WINDOW SIZE = 4000 B.

On

 

RECEIVING 1st ACK = 2 * TCP CURRENT WINDOW SIZE

                                   = 2 * 4000 B

                                   = 8000 B  but it should be <= TCP THRESHOLD WINDOW SIZE acc to congestion algorithm therefore 

                                   TCP CURRENT WINDOW SIZE = 6000 Byte

Now the TCP CURRENT WINDOW SIZE = TCP THRESHOLD WINDOW SIZE, therefore, TCP CURRENT WINDOW SIZE now will increase linearly as the algorithm is in congestion avoidance phase therefore on 

 

RECEIVING 2nd ACK:

                                       TCP CURRENT WINDOW SIZE = TCP CURRENT WINDOW SIZE + 1 MSS

                                                                                            = 6000B + 2000B

                                                                                            = 8000 Bytes                                 

 

 

 

 

edited by
3 votes
3 votes

Here,

RWND = 12000 B

ssthresh = RWND (initially; Given there has been no timeout / packet loss )

Current CWND = 4000 B

1 MSS = 2000 B

If   cwnd <= ssthresh then
       // Each time an Ack is received:
        cwnd = cwnd + 1 MSS
else  cwnd >  ssthresh
      //Each time an Ack is received:
        cwnd = cwnd + MSS * [ MSS / cwnd ]
endif

Two ACKs received, thus

CWND = 4000 + 2000 = 6000 (after first ACK )

CWND = 6000 + 2000 = 8000 (after second ACK)

ssthresh is not 6000 B but 12000 B, because no packets has yet been lost / timeout, thus ssthresh is unchanged.

REF:

edited by
0 votes
0 votes

I read all the answer but none is exactly correct :

note 3 important things :

1) if cwnd<ssthresh the congestion avoidance phase will continue with each ack window size will be increased by1.

2) even if cwnd=sthresh congestion avoidance phase will continue with a ack window size will be increased by1.

3)if cwnd>ssthresh ccongestion avoidance phase will start i.e cwnd=cwnd+1/(floor(cwnd)) wth each ack.

now read arjun's answer.

http://www.ece.virginia.edu/~mv/edu/ee136/.../congestion.../tcp-congestion-control.pdf

 

edited by
Answer:

Related questions

30 votes
30 votes
5 answers
2
24 votes
24 votes
6 answers
4
Ishrat Jahan asked Nov 2, 2014
6,144 views
In the TCP/IP protocol suite, which one of the following is NOT part of the IP header?Fragment OffsetSource IP addressDestination IP addressDestination port number