Design Discussion: Implementing LEDBAT++ in ns-3 (Extension vs. Modification)

33 views
Skip to first unread message

Ayush Nigam .

unread,
Oct 11, 2025, 7:11:18 PMOct 11
to ns-developers
Hello ns-3 developers,

We are a group of students who are currently working on implementation of LEDBAT++ (as defined in the Internet-Draft “LEDBAT++: Congestion Control for Background Traffic ”,9 September 2025) as part of our course project for computer networks in ns-3.
The existing LEDBAT implementation in ns-3 (src/internet/model/tcp-ledbat.cc) is based on RFC 6817.

LEDBAT++ introduces additional mechanisms such as:

1. Modified slow start using a dynamic GAIN parameter

2. Dynamic GAIN parameter is dependent on base delay and target delay.

3. Multiplicative decrease for improved inter-LEDBAT fairness.

4. Initial and periodic slowdowns to avoid latency drift.

5. Use of RTT-based delay estimation instead of one-way delay.

Now, we are considering two possible approaches for the implementation:

Approach 1 : Create a new class TcpLedbatPlusPlus, derived from TcpLedbat, and override only the modified algorithms.

Approach 2 : Extend the existing TcpLedbat class by introducing an attribute flag (e.g., EnableLedbatPlusPlus) and conditionally enabling LEDBAT++ behavior(if EnableLedbatPlusPlus is set to true then LEDBAT++ behaviour will be enabled otherwise if it is set to false then LEDBAT behaviour will be followed).

I would appreciate your guidance on which design is more consistent with ns-3 development practices — i.e., whether it’s preferable to create a subclass for LEDBAT++ and extend, or to enhance the existing TcpLedbat class with EnableLedbatPlusPlus configuration attribute.

Thanks and Regards,
Ayush Nigam

Tom Henderson

unread,
Oct 12, 2025, 11:43:23 AMOct 12
to ns-dev...@googlegroups.com

Hello Ayush, my opinion is that either approach may be suitable, and it depends on the amount of code reuse.  My guess in this case is that, because ns-3 TcpLedbat is defined as a TcpCongestionOps class (and not a full TCP implementation) and because there are several changes to those congestion control operations, it may be cleaner to implement it as a separate class because you may not have a lot of code reuse, and because you probably have different attributes that only pertain to one or the other variant.  I might suggest to try to implement it as TcpLedbatPlusPlus and then, once you are finished, consider whether there is a significant code reuse potential.

- Tom

Ayush Nigam --
You received this message because you are subscribed to the Google Groups "ns-developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ns-developer...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/ns-developers/5127f70c-a6d5-46f2-8130-0c732f9f1828n%40googlegroups.com.

Ayush Nigam .

unread,
Oct 28, 2025, 6:24:28 AM (8 days ago) Oct 28
to ns-developers

Hello Tom,

Thank you for your guidance. I will proceed with implementing it as TcpLedbatPlusPlus and evaluate code reuse potential after completion.

Thanks & Regards,
Ayush

Reply all
Reply to author
Forward
0 new messages