CongestionStateSet not called on CA_CWR → CA_OPEN transition

24 views
Skip to first unread message

Maria Eduarda Veras Martins

unread,
Mar 26, 2026, 3:36:46 PM (6 days ago) Mar 26
to ns-3-users
Hi all,

We have been working on an ns-3 implementation of TCP Prague and are currently validating it by running a wider set of bandwidth/delay scenarios beyond what our initial pre-print (https://arxiv.org/abs/2603.20166) covers, using a physical Linux testbed as reference.

The 4 Mbps / 5 ms scenario produced results very different from the testbed. After investigating, we noticed that in `tcp-socket-base.cc`, when the congestion state transitions from `CA_CWR` to `CA_OPEN`, `m_congState` is updated directly but `CongestionStateSet` is never called:

Screenshot from 2026-03-26 15-59-00.png

TCP Prague uses an internal flag `m_inLoss` to block window growth during loss recovery, which is cleared when `CongestionStateSet(CA_OPEN)` is called. Since that callback never fires on this path, the flag stays `true` indefinitely and the congestion window freezes permanently at 2 × MSS.

This is confirmed by our logs: `m_tcb->m_congState` is set to `CA_OPEN` by the socket base, but the congestion control is never notified. Every other state transition in `tcp-socket-base.cc` calls `CongestionStateSet`, this appears to be the only exception.

We are not sure if this is intentional behavior, perhaps congestion controls using HasCongControl() are expected to handle this case differently. When we added the missing CongestionStateSet(CA_OPEN) call, the scenario behaved as expected, so we wanted to check here before considering any changes to TcpSocketBase. 

Thanks!

Tom Henderson

unread,
Mar 26, 2026, 4:14:08 PM (6 days ago) Mar 26
to ns-3-...@googlegroups.com, Maria Eduarda Veras Martins

Maria, thank you for reporting this. I believe that there are two such missing calls, can you please review the patch that I just posted to the tracker?

https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/2800

Thanks,

Tom

--
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 visit https://groups.google.com/d/msgid/ns-3-users/b3d4d3d7-8f37-4e55-8996-b46a21492b92n%40googlegroups.com.

Maria Eduarda Veras Martins

unread,
Mar 26, 2026, 4:21:14 PM (6 days ago) Mar 26
to ns-3-users
Oh, I hadn't even noticed the missing call in EnterCwr.

Now everything seems okay, thank you!
Reply all
Reply to author
Forward
0 new messages