Seemingly infinite congestion window growth with TCP

373 views
Skip to first unread message

ns3us...@gmail.com

unread,
Sep 5, 2018, 4:15:21 PM9/5/18
to ns-3-users
Hi there,

I have a simple script generating a variable number of TCP flows (e.g. H-TCP). For each flow, I track the congestion window over time. For low data rates (e.g. 10Mbps), the results seem quite reasonable. However, for larger link capacity, say 1Gbps, cwnd grows without any bound. I have attached an example output here.  Here, there is only one flow; the cwnd grows (for some reason linearly) until the simulation ends. In the file (htcp-cwnd0.log), the left column is time in seconds and the right column is cwnd in bytes. I've also attached the script, which is a modification of pie-example.cc. Although this is using PIE, I don't think it's related to the issue, since I've tried with other AQM policies and still encounter this problem.

Any ideas what could be causing this weird output? I've tried with ns-3.29, 3.28, and 3.27 and get more or less the same behavior. I've also tried with other congestion control variants (like CUBIC) and still see this problem. Also tried playing around with as many parameters as I could think of (adjusting receiver and sender buffer sizes, PIE link queue size, application data rate, etc.).

Any help is greatly appreciated.
Thanks,
-NS3 user
htcp-cwnd0.log
pie-htcp.cc

ns3us...@gmail.com

unread,
Sep 7, 2018, 10:51:27 AM9/7/18
to ns-3-users
Hello all,

I have recreated this problem with another script: I took examples/tcp/tcp-variants-comparison.cc and made a few minor changes:

1. Increased the bandwidth to 100Mbps
2. Delay is now ~20ms instead of ~45ms
3. mtu_bytes increased to 1000 bytes (it was quite low before, only 400 bytes)
4. TCP variant tested is H-TCP (because I am very familiar with the dynamics and know what the cwnd should look like)
5. Changed the queue size to a constant 1500 bytes (in the original script, it's a function of bandwidth and delay)
6. And finally, and this is what caused the cwnd to grow without bound again (I know this because I made each change one by one): I uncommented the lines that specify the buffer sizes, as follows:

//Config::SetDefault ("ns3::TcpSocket::RcvBufSize", UintegerValue (1 << 21));

//Config::SetDefault ("ns3::TcpSocket::SndBufSize", UintegerValue (1 << 21));


I left everything else untouched. I am attaching the script and its cwnd output file here. I also plotted the cwnd file, in cwnd_output.pdf. Observe the bizarre growth of cwnd over the 100 secs: it grows linearly with no upper bound, no losses, all the way up to about 1.25Gbits by simulation's end. This looks like a (serious) bug to me, i.e. this sort of cwnd growth should not be observed under any circumstances, even if you don't specify the buffer sizes. After doing some searching, I saw that there is an old bug that for some reason caused buffer sizes to be infinite in some cases. It was fixed a few years ago, but perhaps it's somehow made a comeback?

Anyone have thoughts on this?

Thanks,
-NS3 user
TcpVariantsComparison-cwnd.data
tcp-variants-comparison.cc
cwnd_output.pdf

Nat P

unread,
Sep 20, 2018, 10:17:23 AM9/20/18
to ns-3-users
You have, somewhere, and infinite (or very large) buffer. No drops, and the cWnd grows like a young whale in the first 6 months of life.

Nat

Ali Fattaholmanan

unread,
Dec 9, 2019, 4:39:04 PM12/9/19
to ns-3-users
Hi,

Did you eventually figure out what was the problem?

Derar Khader

unread,
Dec 9, 2019, 5:08:37 PM12/9/19
to ns-3-...@googlegroups.com
Hi,

In the gnuplot shell, set xrange higher than 1, like:

Set xrange [5:1000]


And then execute the ./waf command to run the file tcpvariantscomparison


Good luck
👍 

--
Posting to this group should follow these guidelines https://www.nsnam.org/wiki/Ns-3-users-guidelines-for-posting
---
You received this message because you are subscribed to the Google Groups "ns-3-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ns-3-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ns-3-users/7a99a344-11eb-403b-80ef-4d407492453d%40googlegroups.com.

Shiva Gantha

unread,
Mar 25, 2021, 6:19:53 AM3/25/21
to ns-3-users
I face the same issue. Did anyone find out what was the problem?

Any help is greatly appreciated.

Jing Li

unread,
Nov 23, 2021, 2:27:54 AM11/23/21
to ns-3-users
Now, I am facing the same problem as yours, have you worked out it ?

Shiva Gantha

unread,
Nov 23, 2021, 2:42:12 AM11/23/21
to ns-3-users
What Nat mentioned above is a possible case.

Following are the possibilities when the cwnd is growing indefinitely:
1. There is an infinite or a very large buffer in the path
2. The sending rate is limited by the receive buffer size (rwnd)
3. The sending rate is limited by the application transmission rate.

Try to figure out which of the above is your case.

Thanks,
Shiva

Jing Li

unread,
Nov 23, 2021, 3:19:17 AM11/23/21
to ns-3-users
Thanks for your reply, I will try to figure out which case that the problem I have met belongs to.
Reply all
Reply to author
Forward
0 new messages