[Ns-developers] Add-in module with Compound TCP control congestion algorithm
Dmitry Sinelnikov
geos_rf at mail.ru
Sat Jun 14 12:13:11 PDT 2008
Hello to all ns-3 developers,
I am a representative of Nizhniy Novgorod State University, Russia
(Radiophysical faculty, "Information Systems and Technologies (in
radiophysics and telecommunications)" occupation). I had a chance to
use Ns-2 (v 2.33) in my Masters Degree work which is related to
developing of a Loss Discrimination Algorithm (LDA) to improve TCP
performance over wireless networks. It was decided to implement and
integrate this algorithm as an additional feature of Compound TCP
congestion control algorithm which is the latest protocol announced
in Windows OS.
So implementation of Compound TCP in Ns-2 was the first task during
the work. I know that there was a special Linux patch for NS 2.31
(backward compatible with versions 2.30 & 2.29) which then became a
permanent part of Ns 2.32 and finally Ns 2.33 (this patch web page is
the following:
http://netlab.caltech.edu/projects/ns2tcplinux/ns2linux/index.html (*)).
It contains implementation of numerous Linux TCP congestion control
algorithms. Compound TCP is one of them.
But simple simulations showed that this algorithm result didn't
legitimate our expectations (basically according to the CTCP official
design document; event notes at (*) state that this is an experimental
implementation). Thus it was decided to make our own CTCP model. It was
implemented according to the latest documentation regarding CTCP and
works as expected.
The following files contain all necessary changes
\ns-2.33\tcp\tcp.cc # core of the algorithm
\ns-2.33\tcp\tcp.h # several new declarations
\ns-2.33\tcp\tcp-reno.cc #minor changes in window() function
\ns-2.33\tcl\lib\ns-default.tcl #setting default values to several new variables
\ns-2.33\queue\drop-tail.cc #minor change correcting queue bug (which
was not corrected even after submitting a "bug report" about half of a year ago)
This congestion control algorithm is a building-up above TCP Reno or
Newreno algorithm. It can be turned on just by switching "wnd_option_"
to a specified value in the tcl script. So it does not require huge code
review and risky changes.
So the general question is if our implementation could become a part of
ongoing NS-3 development process? We understand that NS is proprietary
software and it is closed for new add-in / patches implementation for
non-ns-developers so to say. But we suggest a freeware implementation of a
standard algorithm which could be a part of future NS releases and
available for all ns-users in their research.
Any comment / answer concerning this theme will be appreciated. If future
discussion takes place I will prepare all code changes and make them
available for downloading.
Best regards,
Dmitry Sinelnikov,
Mera Co., Russia
More information about the Ns-developers
mailing list