Subject: [tcpm] Increasing Initial CWND and CWND setting after fast recovery

From: <[email-masked]>
Date: Tue, 5 Mar 2013 15:19:14 +0200

Hi,

RFC5681 following RFC3390 increased the initial window of TCP to 4MTU/MSS, but left the loss window after Fast Recovery
by bounded only by 2MTU from below, by formula (4) of RFC5681. I.e., ssthress = MAX (flightsize/2, 2MSS)

SCTP, from RFC2960 to RFC4960, however led the increase of the IW from 2 MTU to 4 MTU by RFC3390 impact also the loss window after Fast Recovery,
by setting ssthresh= MAX(cwnd/2, 4MTU).
(This increase may have been partly unfounded (?), nevertheless it was done with this motivation, e.g. see RFC4460)

draft-ietf-tcmp-initcwnd-08.txt mentions that the increase of the IW does NOT apply to the loss window after retransmit timeout, but
it is otherwise silent about the window after Fast Recovery. For the sake of TCP alone, but also in light of the different paths taken by TCP and SCTP
after RFC3390, then I wonder if it would not be beneficiary to clarify that the proposed increase also does NOT apply for the loss window after Fast Recovery.

If, on the contrary, the proposed increase of the windows MAY apply also to the loss window after Fast Recovery, presumably with the
disclaimer that it must not increase the CWND as it is said for the restart window, then I would very much appreciate such clarification.

I hope that you can help clarify the issue.
Thanks.

BR, Karen Nielsen

---

From: Mark Allman <[email-masked]>
Date: Tue, 05 Mar 2013 08:50:21 -0500

You are conflating the "loss window" and the ssthresh setting.  I.e.:

> RFC5681 following RFC3390 increased the initial window of TCP to
> 4MTU/MSS, but left the loss window after Fast Recovery 

this is incorrect.  This is setting **ssthresh** not the **loss
window**.  At this point the congestion window (called the "loss window"
at this instant) is set to 1 MSS.

The loss window (i.e., what the cwnd is set to after an RTO) almost has
to be 1 MSS.  At least we need some way to get down to a minimum
congestion window---which would be 1 MSS (I guess we could get all the
way down to 1 byte if we wanted, but that seems like splitting hairs).
That is the reason the loss window remains at 1 MSS while 3390 allows
the initial congestion window (IW) and the restart congestion window
(RW) to be larger than 1 MSS.  The behavior of ssthresh is independent
of cwnd and is not altered in 3390.

allman

---

From: <[email-masked]>
Date: Tue, 5 Mar 2013 15:59:21 +0200

Hi,

Thanks.
I am sorry for using the term loss window in connection with fast retransmission as this seems to cause confusion.

I am not speaking about the CWND setting after RTO retransmission. I agree that the loss window after an RTO is 1 MTU.

I am speaking about the resulting CWND after a fast recovery process where packet loss is repaired using fast retransmission. 
The CWND after loss recovery is governed by the set of ssthresh by formula (4) of RFC5681 to MAX (flightsize/2, 2MSS) as 
 CWND=ssthresh is performed as part for the recovery process.

Or where did I go wrong ?

BR, Karen

-----Original Message-----
From: [email-masked] [mailto:[email-masked]] 
Sent: 5. marts 2013 14:50
To: Nielsen Karen
Cc: [email-masked]; [email-masked]
Subject: Re: [tcpm] Increasing Initial CWND and CWND setting after fast recovery 

You are conflating the "loss window" and the ssthresh setting.  I.e.:

> 4MTU/MSS, but left the loss window after Fast Recovery by bounded only 
> by 2MTU from below, by formula (4) of RFC5681. I.e., ssthress = MAX 
> (flightsize/2, 2MSS)

this is incorrect.  This is setting **ssthresh** not the **loss window**.  At this point the congestion window (called the "loss window"
at this instant) is set to 1 MSS.

The loss window (i.e., what the cwnd is set to after an RTO) almost has to be 1 MSS.  At least we need some way to get down to a minimum congestion window---which would be 1 MSS (I guess we could get all the way down to 1 byte if we wanted, but that seems like splitting hairs).
That is the reason the loss window remains at 1 MSS while 3390 allows the initial congestion window (IW) and the restart congestion window
(RW) to be larger than 1 MSS.  The behavior of ssthresh is independent of cwnd and is not altered in 3390.

allman

---

From: <[email-masked]>
Date: Wed, 6 Mar 2013 10:56:23 +0200

Hi,

>The behavior of ssthresh is independent of cwnd and is not altered in 3390.

The behavior of CWND after Fast Recovery RFC5681 is not independent of ssthresh or at least both are controlled by the formula
(4) ssthresh = max (FlightSize / 2, 2*SMSS)

I wonder if one, as for the restart window, would say that an implementation when Loss Recovery completes MAY set:

CWND = max (prior FlightSize / 2, 10*SMSS) if this does not increase the CWND compared to what is was when the loss was detected.

BUT if one should NOT do anything of the sort, then I think that it would beneficiary for this to be clarified.

BR, Karen