Subject: Congestion window problem

From: Zoran Kostic <[email-masked]>
Date: Thu, 21 Oct 1999 10:37:41 -0400

Is the following scenario a legitimate problem:

* Receive window is fully open
* Congestion window is 5 wide, all five segments (1,2,3,4,5) got
transmitted,
   waiting for ACQs
* Segment 2 is being timed
* Channel is poor
* Timeout happens
* Congestion window collapses to 1
* Segment 1 which is the first unacked segment gets transmitted
* Segment 1 is timed
* Segments1,2,3 get acqs but 4 and 5 are not ACQed
* Retransmit timer has stopped since 1 was acked
* Congestion window became of size 2, but no new segments can be
accepted
   into the window since 4 and 5 occupy the space in the window
* Channel is still poor, no Acqs are comming and Nothing is being timed
now so
   the timeout can not occur -> therefore no segment will get
retransmitted,
   the window can not grow .... we are stuck

If this is not a problem, could you comment on where the error in
thinking is,
or which mechanism pulls us out of trouble.

Zoran Kostic, AT&T

---

From: Jamshid Mahdavi <[email-masked]>
Date: 21 Oct 1999 09:50:54 -0700

> or which mechanism pulls us out of trouble.

I see two problems with this.  First, the retiming of segment 1 would
not occur in a real implementation, because Karn's algorithm says you
can't time a segment which has been transmitted twice.

The real problem is that the timeout clock is independent of the
segment timing clock.  The timeout clock should always be running,
unless there is no unacknowledged data.  This will result in a timeout
independent of whether you successfully time segment 2 (or 1).

--J

---

From: PAN Jianping <[email-masked]>
Date: Thu, 21 Oct 1999 16:55:33 -0400

>* Segment 2 is being timed

after timeout, tcp goes slow-start

>* Segments1,2,3 get acqs but 4 and 5 are not ACQed

cwnd grows, segments go out, new timer armed

>* Congestion window became of size 2, but no new segments can be

cwnd depends on current ssthresh and number of acks

>   the timeout can not occur -> therefore no segment will get

tcp always has timer armed. ;-)

>or which mechanism pulls us out of trouble.

i think you missed tcp's ack-clocking.

>Zoran Kostic, AT&T

--------------------------------------------------------------------------
  PAN Jianping                                    [email-masked]
==========================================================================