TCP Cubic with Bulk Send Application

229 views
Skip to first unread message

Tushar

unread,
Oct 13, 2016, 6:59:50 PM10/13/16
to ns-3-users
Hello NS3 community,

Currently, I am working on a project that involves simulating TCP Cubic with Bulk Send Application of NS3. 

To my knowledge, NS3 does not have a native TCP Cubic support... but I found this implementation from my google search: http://web.cs.wpi.edu/~claypool/papers/tcp-cubic/

I have added the Cubic support to the NS3 project version 3.24 because that was the recommendation in the ReadMe file of this project. 

For a simple experiment, I am trying to measure throughput of a link w/ TCP Cubic and using the bulk send application. 

To have a reference of the performance of Cubic, I have measured throughput of New Reno (default TCP algo in NS3) by adding flowmonitor to the tcp-bulk-send.cc code. It seems like my Cubic addition to the code is not taking effect and results in a similar behavior as New Reno.

Attached is my version of TCP Cubic with Bulk Send Application.

Has anyone tried to use this TCP Cubic implementation with the Bulk Send Application? If yes, can you please guide me on where am I going wrong... I thought it would be straightforward but I am definitely missing critical points here.

Thanks for any help!

-Tushar
tcp-cubic-bulk-send.cc

Natale Patriciello

unread,
Oct 14, 2016, 6:34:57 AM10/14/16
to ns-3-...@googlegroups.com
On 13/10/16 at 03:59pm, Tushar wrote:
> *Has anyone tried to use this
> <http://web.cs.wpi.edu/~claypool/papers/tcp-cubic/> TCP Cubic
> implementation with the Bulk Send Application? If yes, can you please guide
> me on where am I going wrong... I thought it would be straightforward but I
> am definitely missing critical points here.*

Hi,

there are some problems with that implementation. We have a new one, but
we have some problems as well:

https://github.com/kronat/ns-3-dev-git/tree/tcp-versions-updated

You can find them in some post on the ns-dev mailing list.

Nat

Tushar

unread,
Oct 14, 2016, 12:52:13 PM10/14/16
to ns-3-users
Hi Nat,

Thanks for sharing ur git repo. I am not part of NS dev mailing list (cannot join but can see archives). Is it possible to list the problems here or point me to the right archive?

In simple terms - Does your Cubic implementation support interaction with ns3's bulk send application?

-Tushar

Natale Patriciello

unread,
Oct 17, 2016, 9:01:55 AM10/17/16
to ns-3-...@googlegroups.com
On 14/10/16 at 09:52am, Tushar wrote:
> Hi Nat,
>
> Thanks for sharing ur git repo. I am not part of NS dev mailing list
> (cannot join but can see archives). *Is it possible to list the problems
> here or point me to the right archive?*
>

Search through ns-3-dev mailing list archive.

> In simple terms - *Does your Cubic implementation support interaction with
> ns3's bulk send application?*


Yes; the problem is mainly "does the implemented Cubic reflects the
Linux implementation of Cubic?"

Nat

Tushar

unread,
Oct 18, 2016, 4:10:16 PM10/18/16
to ns-3-users
Thanks, Nat.

What version of NS3 is compatible with your TCP Cubic implementation?

-Tushar

Tushar

unread,
Oct 19, 2016, 11:18:48 AM10/19/16
to ns-3-users
Nat,

I tested the example code - 'tcp-variants-comparison.cc' with NS3.26. To test the Cubic implementation, I enabled tracing to see the cwnd behavior... I see that the cwnd drops to zero frequently. Any idea why this may happen?

Thanks for your help.
-Tushar

Natale Patriciello

unread,
Oct 19, 2016, 11:19:31 AM10/19/16
to ns-3-...@googlegroups.com
On 18/10/16 at 01:10pm, Tushar wrote:
> Thanks, Nat.
>
> What version of NS3 is compatible with your TCP Cubic implementation?
>
> -Tushar

You can use that branch, or you can easily rebase it on top of ns-3-dev.

Nat

Natale Patriciello

unread,
Oct 19, 2016, 12:24:45 PM10/19/16
to ns-3-...@googlegroups.com
On 19/10/16 at 08:18am, Tushar wrote:
> Nat,
>
> I tested the example code - 'tcp-variants-comparison.cc' with NS3.26. To
> test the Cubic implementation, I enabled tracing to see the cwnd
> behavior... I see that the cwnd drops to zero frequently. Any idea why this
> may happen?
>
> Thanks for your help.
> -Tushar

Losses?

Nat

Tushar

unread,
Oct 24, 2016, 12:53:08 AM10/24/16
to ns-3-users
Nat,

The scaling parameter, beta = 0.8 by default in the source code. From the attached simulation code results, plot A is for beta = 0.8 and plot B is for beta = 0.2. In both of them, the drops in cwnd are very high, almost 90%... and does not resemble the cubic function. It appears that at Wmax, the cwnd drops. Why is this the case? the cwnd never seems to stay at Wmax.  cwnd drops to some level and then grows concave...drops...goes to slow growth and repeats.

Thanks for your help.

-Tushar
tcp-cubic-comparison.cc
beta-0.2.png
beta-0.8.png

Tushar

unread,
Oct 27, 2016, 9:54:57 AM10/27/16
to ns-3-users
Hi Nat,

What are your thoughts on this?

Thnx.

Natale Patriciello

unread,
Oct 28, 2016, 5:18:30 AM10/28/16
to ns-3-...@googlegroups.com
On 23/10/16 at 09:53pm, Tushar wrote:
> Nat,
>
> The scaling parameter, beta = 0.8 by default in the source code. From the
> attached simulation code results, plot A is for beta = 0.8 and plot B is
> for beta = 0.2. In both of them, the drops in cwnd are very high, almost
> 90%... and does not resemble the cubic function. It appears that at Wmax,
> the cwnd drops. Why is this the case? the cwnd never seems to stay at Wmax.
> cwnd drops to some level and then grows concave...drops...goes to slow
> growth and repeats.

I have some personal opinion on that, which basically derives from the
fact that after a retransmission timeout the cWnd goes to 1.

Anyway, try to take a look to the Linux source code and the ns-3 ones,
probably in these years there have been some adjustments.

Nat
Reply all
Reply to author
Forward
0 new messages