Subject: [tcpm] Congestion Window Validation simulations

From: Martin Winbjörk <[email-masked]>
Date: Tue, 18 Feb 2014 12:38:46 +0000

Hi
I have implemented and done some simulations with congestion window validation (CWV). In my implementation I've changed the conditions for the different phase changes as following in order to avoid too frequent phase changes:

·         Validated phase: pipeACK >= (snd_cwnd *0.6)

·         Non-validated phase: pipeACK < (snd_cwnd *0.4)

·         Don't change phase: pipeACK < snd_cwnd*0.6 && pipeACK >= snd_cwnd*0.4
I have been simulating a 60 second scenario where objects with a size between 200 kB - 300kB are sent through FTP from a server to a single client every 0.5 second after previous object has been received. The bandwidth is 10 Mbps except at the interval 20-40 seconds where it has been limited to different values ranging from 0.2 Mbps to 5 Mbps. The simulations have been run with both TCP Reno and TCP CUBIC. The simulations have also been run with both head drop and tail drop AQM. Each simulation has been run with both CWV enabled and disabled in order to see the difference CWV makes.
All simulations with TCP CUBIC showed no difference with or without CWV except that cwnd ended up higher on the simulations with TCP CUBIC with tail drop AQM.
The simulations with TCP Reno with head drop AQM showed similar results with and without CWV with some minor differences in how much data was received by the client at the end of the simulation (a fluctuation around +-3%). A specific case when the bandwidth at the rate-limited interval was 1.5 Mbps showed a RTO for the version without CWV while CWV enabled did not get a RTO. The CWV version also had a more even throughput during the rate-limited interval for this case.
The simulations with TCP Reno with tail drop AQM showed no difference with or without CWV except that cwnd ended up higher on the simulations without CWV.
I would appreciate any feedback or suggestions for future simulations.

Regards

Martin Winbjörk

---

From: Arjuna Sathiaseelan <[email-masked]>
Date: Wed, 19 Feb 2014 08:24:36 +0000

It may be good to see a graph on how the app rate varies over time and
also how the cwnd/ssthresh varies over time to see what the issues
are..

On 18 February 2014 12:38, Martin Winbjörk <[email-masked]> wrote:
> Hi
>
> I have implemented and done some simulations with congestion window
> validation (CWV). In my implementation I've changed the conditions for the
> different phase changes as following in order to avoid too frequent phase
> changes:
>
> I have been simulating a 60 second scenario where objects with a size
> between 200 kB - 300kB are sent through FTP from a server to a single client
> every 0.5 second after previous object has been received. The bandwidth is
> 10 Mbps except at the interval 20-40 seconds where it has been limited to
> different values ranging from 0.2 Mbps to 5 Mbps. The simulations have been
> run with both TCP Reno and TCP CUBIC. The simulations have also been run
> with both head drop and tail drop AQM. Each simulation has been run with
> both CWV enabled and disabled in order to see the difference CWV makes.
>
> All simulations with TCP CUBIC showed no difference with or without CWV
> except that cwnd ended up higher on the simulations with TCP CUBIC with tail
> drop AQM.
>
> The simulations with TCP Reno with head drop AQM showed similar results with
> and without CWV with some minor differences in how much data was received by
> the client at the end of the simulation (a fluctuation around +-3%). A
> specific case when the bandwidth at the rate-limited interval was 1.5 Mbps
> showed a RTO for the version without CWV while CWV enabled did not get a
> RTO. The CWV version also had a more even throughput during the rate-limited
> interval for this case.
>
> The simulations with TCP Reno with tail drop AQM showed no difference with
> or without CWV except that cwnd ended up higher on the simulations without
> CWV.
>