problem with cubic

134 views
Skip to first unread message

Jing Li

unread,
Dec 5, 2021, 9:16:28 PM12/5/21
to ns-3-users
Hi. I have a question about cubic. In case of timeout, CUBIC follows standard TCP to reduce cwnd. It enters into slow start algorithm, and increase its window from 1 segment. After it exits slow start, in theory, cubic should switch to congestion avoidance and increase its window size using cubic function. But, what I get from my experiments is a phase of linear increment. I don't know which principle it uses to increase its window size during this process. And how to calculate the time it wastes since it exits slow start? Can anyone help me here? Thanks.

win.png

Tom Henderson

unread,
Dec 7, 2021, 10:24:36 PM12/7/21
to ns-3-...@googlegroups.com
How did you simulate this?  What was the bottleneck link rate, base RTT,
and how was the timeout forced or encountered?

I tested both ns-3 and Linux Cubic (via DCE) on a couple of RTT values,
and observed similar behavior after timeout-- there is a slow start
again back up to the value of (beta*cwnd) after which there is a linear
growth up to the maximum cwnd again.  It looks like your plot is doing
something similar.

- Tom

Jing Li

unread,
Dec 12, 2021, 9:38:02 PM12/12/21
to ns-3-users
In fact, this result is got by using ns-2. So the bottleneck link rate is 15Mbps, the RTT value is 120ms. 
And the timeout was forced by sending UDP flow to attack TCP flow in a simple network topology, in which
there is only one bottleneck link.
Actually, I also implemented it using ns-3 on small bottleneck link rate or small BDP, but it's not very accuracy. And 
I can't observed the right cwnd behavior of cubic when I increase the bottleneck link rate. So could you tell me the 
version of ns-3 which you use and if possible, share me how did you implement it? 
Thank you!

Tom Henderson

unread,
Dec 13, 2021, 4:49:56 PM12/13/21
to ns-3-...@googlegroups.com
On 12/12/21 6:38 PM, 'Jing Li' via ns-3-users wrote:
> In fact, this result is got by using ns-2. So the bottleneck link rate
> is 15Mbps, the RTT value is 120ms.
> And the timeout was forced by sending UDP flow to attack TCP flow in a
> simple network topology, in which
> there is only one bottleneck link.
> Actually, I also implemented it using ns-3 on small bottleneck link
> rate or small BDP, but it's not very accuracy. And
> I can't observed the right cwnd behavior of cubic when I increase
> the bottleneck link rate. So could you tell me the
> version of ns-3 which you use and if possible, share me how did you
> implement it?

I used the ns-3.35 cubic.  To produce plots, I was running some
experiment scripts used in earlier validation work in my GitHub repo,
'cubic-test' branch:
https://github.com/tomhenderson/ns-3-dce/tree/cubic-test.  I took the
'example/tcp-validation.cc' program and created a new 'TimeErrorModel'
to hook into the link to force drops on all segments within a specified
time range (to force a timeout).

Attached is what I observed for a 15Mbps, 120ms RTT configuration,
forcing all packets to be dropped between time 30s and 33s.

- Tom
tcp-cwnd-15Mbps-120ms.pdf

Jing Li

unread,
Dec 23, 2021, 3:46:53 AM12/23/21
to ns-3-users
Is it hybrid slow start?
Reply all
Reply to author
Forward
0 new messages